{"version":3,"file":"deepkit-desktop-ui.mjs","sources":["../../src/browser-text.ts","../../src/components/form/form.component.ts","../../src/core/form.ts","../../src/core/utils.ts","../../src/components/document.ts","../../src/components/app/utils.ts","../../src/components/app/menu-electron.ts","../../src/components/window/window-menu.ts","../../src/components/window/window-state.ts","../../src/components/app/drag.ts","../../src/components/splitter/splitter.component.ts","../../src/components/window/window-content.component.ts","../../src/components/icon/icon.component.ts","../../src/components/window/window-header.component.ts","../../src/components/app/app.ts","../../src/components/window/window.component.ts","../../src/components/button/button.component.ts","../../src/components/app/reactivate-change-detection.ts","../../src/components/app/position.ts","../../src/components/button/dropdown.component.ts","../../src/components/adaptive-container/adaptive-container.component.ts","../../src/components/app/pending-tasks.ts","../../src/components/app/dui-responsive.directive.ts","../../src/components/app/menu.ts","../../src/components/app/pipes.ts","../../src/components/app/state.ts","../../src/components/app/style.component.ts","../../src/components/button/tab-button.component.ts","../../src/components/checkbox/checkbox.component.ts","../../src/components/core/render-component.directive.ts","../../src/components/dialog/dialog.component.ts","../../src/components/input/input.component.ts","../../src/components/dialog/dialog.ts","../../src/components/filesystem/api.ts","../../src/components/filesystem/cache.ts","../../src/components/table/table.component.ts","../../src/components/filesystem/utils.ts","../../src/components/indicator/indicator.component.ts","../../src/components/indicator/loading-spinner.component.ts","../../src/components/filesystem/components/file-detail.component.ts","../../src/components/filesystem/components/file-thumbnail.component.ts","../../src/components/filesystem/components/file-quick-look.component.ts","../../src/components/filesystem/filesystem.component.ts","../../src/components/filesystem/components/file-uploader.component.ts","../../src/components/filesystem/components/file-dialog.component.ts","../../src/components/layout/label.component.ts","../../src/components/layout/section-header.component.ts","../../src/components/list/list.component.ts","../../src/components/radio/radio-box.component.ts","../../src/components/select/select-box.component.ts","../../src/components/tabs/tab.component.ts","../../src/components/tabs/tabs.component.ts","../../src/components/slider/slider.component.ts","../../src/components/window/external-window.component.ts","../../src/components/window/external-window.ts","../../src/components/window/window-footer.component.ts","../../src/components/window/window-sidebar.component.ts","../../src/components/window/window-manager.component.ts","../../src/index.ts","../../src/deepkit-desktop-ui.ts"],"sourcesContent":["\nexport class BrowserText {\n    protected canvas = document.createElement('canvas');\n\n    protected context = this.canvas.getContext('2d')!;\n\n    constructor(public fontSize: number = 11, public fontFamily: string = getComputedStyle(document.querySelector('.dui-body') || document.body).fontFamily) {\n        document.body.appendChild(this.canvas);\n        this.canvas.style.display = 'none';\n    }\n\n    destroy() {\n        document.body.removeChild(this.canvas);\n    }\n\n    getDimensions(text: string) {\n        this.context.font = this.fontSize + 'px ' + this.fontFamily;\n        const m = this.context.measureText(text);\n        return {\n            width: m.width,\n            height: m.actualBoundingBoxAscent + m.actualBoundingBoxDescent\n        };\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { booleanAttribute, ChangeDetectorRef, Component, ContentChild, HostListener, input, output, signal, SkipSelf } from '@angular/core';\nimport { FormGroup, FormsModule, NgControl, ReactiveFormsModule } from '@angular/forms';\nimport { KeyValuePipe } from '@angular/common';\n\n@Component({\n    selector: 'dui-form-row',\n    template: `\n      <div class=\"label\" [style.width.px]=\"labelWidth()\">{{ label() }}@if (description()) {\n        <div class=\"description\">{{ description() }}</div>\n      }</div>\n      <div class=\"field\">\n        <ng-content></ng-content>\n\n        @if (ngControl && ngControl.errors && ngControl.touched) {\n          <div class=\"error\">\n            @for (kv of ngControl.errors|keyvalue; track kv) {\n              <div>\n                {{ isString(kv.value) ? '' : kv.key }}{{ isString(kv.value) ? kv.value : '' }}\n              </div>\n            }\n          </div>\n        }\n      </div>`,\n    host: {\n        '[class.left-aligned]': 'left()',\n    },\n    styleUrls: ['./form-row.component.scss'],\n    imports: [KeyValuePipe],\n})\nexport class FormRowComponent {\n    label = input<string>('');\n    description = input<string>('');\n\n    labelWidth = input<number>();\n    left = input(false, { transform: booleanAttribute });\n\n    @ContentChild(NgControl, { static: false }) ngControl?: NgControl;\n\n    isString(v: any) {\n        return 'string' === typeof v;\n    }\n}\n\n@Component({\n    selector: 'dui-form',\n    template: `\n      <form [formGroup]=\"formGroup()\" (submit)=\"$event.preventDefault();submitForm()\">\n        <ng-content></ng-content>\n        @if (errorText(); as text) {\n          <div class=\"error\">{{ text }}</div>\n        }\n      </form>\n    `,\n    styleUrls: ['./form.component.scss'],\n    imports: [FormsModule, ReactiveFormsModule],\n})\nexport class FormComponent {\n    formGroup = input<FormGroup>(new FormGroup({}));\n\n    disabled = input<boolean>(false);\n\n    submit = input<() => Promise<any> | any>();\n\n    success = output();\n    error = output();\n\n    errorText = signal('');\n    submitting = signal(false);\n\n    constructor(\n        protected cd: ChangeDetectorRef,\n        @SkipSelf() protected cdParent: ChangeDetectorRef,\n    ) {\n    }\n\n    @HostListener('keyup', ['$event'])\n    onEnter(event: KeyboardEvent) {\n        if (this.submit() && event.key.toLowerCase() === 'enter'\n            && event.target && (event.target as HTMLElement).tagName.toLowerCase() === 'input') {\n            this.submitForm();\n        }\n    }\n\n    get invalid() {\n        return this.formGroup().invalid;\n    }\n\n    async submitForm() {\n        if (this.disabled()) return;\n        if (this.submitting()) return;\n        const formGroup = this.formGroup();\n        if (formGroup.invalid) return;\n        this.errorText.set('');\n\n        this.submitting.set(true);\n\n        try {\n            const submit = this.submit();\n            if (submit) {\n                try {\n                    await submit();\n                    this.success.emit();\n                } catch (error: any) {\n                    this.error.emit(error);\n\n                    if (error.errors && error.errors[0]) {\n                        //we got a validation-like error object\n                        for (const item of error.errors) {\n                            const control = formGroup.get(item.path);\n                            if (control) {\n                                control.setErrors({\n                                    ...control.errors,\n                                    [item.code]: item.message,\n                                });\n                            }\n                        }\n                    } else {\n                        this.errorText.set(error.message || error);\n                    }\n                }\n            }\n        } finally {\n            this.submitting.set(false);\n        }\n    }\n}\n","import { Directive, forwardRef, HostBinding, inject, Injector, Input, input, model, OnDestroy, Type } from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR, NgControl } from '@angular/forms';\nimport { FormComponent } from '../components/form/form.component';\n\nexport function ngValueAccessor<T>(clazz: Type<T>) {\n    return {\n        provide: NG_VALUE_ACCESSOR,\n        useExisting: forwardRef(() => clazz),\n        multi: true,\n    };\n}\n\n@Directive()\nexport class ValueAccessorBase<T> implements ControlValueAccessor, OnDestroy {\n    private _ngControl?: NgControl;\n    private _ngControlFetched = false;\n\n    value = model<T | undefined>(undefined);\n\n    disabled = model(false);\n\n    @Input() valid?: boolean;\n    @Input() error?: boolean;\n\n    protected formComponent?: FormComponent;\n    protected _changedCallback: ((value: T | undefined) => void)[] = [];\n    protected _touchedCallback: (() => void)[] = [];\n\n    @HostBinding('class.disabled')\n    get isDisabled(): boolean {\n        if (this.formComponent && this.formComponent.disabled()) return true;\n\n        if (this.ngControl) {\n            return !!this.ngControl.disabled;\n        }\n\n        return this.disabled();\n    }\n\n    @HostBinding('class.valid')\n    get isValid() {\n        return this.valid === true;\n    }\n\n    @HostBinding('class.error')\n    get isError() {\n        if (undefined === this.error && this.ngControl) {\n            return (this.ngControl.dirty || this.ngControl.touched) && this.ngControl.invalid;\n        }\n\n        return this.error;\n    }\n\n    @HostBinding('class.required')\n    required = input(false);\n\n    protected injector = inject(Injector);\n\n    get ngControl(): NgControl | undefined {\n        if (!this._ngControlFetched) {\n            try {\n                this._ngControl = this.injector.get(NgControl);\n            } catch (e) {\n            }\n            this._ngControlFetched = true;\n        }\n\n        return this._ngControl;\n    }\n\n    setDisabledState(isDisabled: boolean): void {\n        this.disabled.set(isDisabled);\n    }\n\n    ngOnDestroy(): void {\n    }\n\n    /**\n     * This is called whenever value() needs to update. Either through Angular forms or through setValue().\n     * Do not call this method in UI code, use setValue() instead so that angular forms informed about the change.\n     *\n     * This is a good place to normalize values whenever they change. (like clamping a number to a range)\n     */\n    writeValue(value?: T) {\n        this.value.set(value);\n    }\n\n    /**\n     * Set the value from UI code.\n     */\n    setValue(value: T | undefined) {\n        this.writeValue(value);\n        for (const callback of this._changedCallback) {\n            callback(this.value());\n        }\n    }\n\n    /**\n     * Call this method to signal Angular's form or other users that this widget has been touched.\n     */\n    touch() {\n        for (const callback of this._touchedCallback) {\n            callback();\n        }\n    }\n\n    registerOnChange(fn: (value: T | undefined) => void) {\n        this._changedCallback.push(fn);\n    }\n\n    registerOnTouched(fn: () => void) {\n        this._touchedCallback.push(fn);\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\n/**\n * @reflection never\n */\nimport { Subscription } from 'rxjs';\nimport { ChangeDetectorRef, EventEmitter, Inject, Injectable } from '@angular/core';\nimport { nextTick } from '@deepkit/core';\nimport { DOCUMENT } from '@angular/common';\n\nconst electron = 'undefined' === typeof window ? undefined : (window as any).electron || ((window as any).require ? (window as any).require('electron') : undefined);\n\nexport type ElectronOrBrowserWindow = Window & {\n    setVibrancy?: (vibrancy: string) => void;\n    addListener?: (event: string, listener: (...args: any[]) => void) => void;\n    removeListener?: (event: string, listener: (...args: any[]) => void) => void;\n};\n\n@Injectable({ providedIn: 'root' })\nexport class BrowserWindow {\n    constructor(@Inject(DOCUMENT) private window?: ElectronOrBrowserWindow) {\n    }\n\n    isElectron() {\n        return !!this.window?.setVibrancy;\n    }\n\n    getWindow(): ElectronOrBrowserWindow | undefined {\n        return this.window;\n    }\n\n    setVibrancy(vibrancy: string): void {\n        if (!this.window) return;\n\n        if (this.window.setVibrancy) {\n            this.window.setVibrancy(vibrancy);\n        } else {\n            console.warn('setVibrancy is not supported by this window.');\n        }\n    }\n\n    addListener(event: string, listener: (...args: any[]) => void): void {\n        if (!this.window) return;\n\n        if (this.window.addEventListener) {\n            this.window.addEventListener(event, listener);\n        } else if (this.window.addListener) {\n            this.window.addListener(event, listener);\n        }\n    }\n\n    removeListener(event: string, listener: (...args: any[]) => void): void {\n        if (!this.window) return;\n\n        if (this.window.removeEventListener) {\n            this.window.removeEventListener(event, listener);\n        } else if (this.window.removeListener) {\n            this.window.removeListener(event, listener);\n        }\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class Electron {\n    public static getRemote(): any {\n        if (!electron) {\n            throw new Error('No Electron available.');\n        }\n\n        return electron.remote;\n    }\n\n    public static getIpc(): any {\n        if (!electron) {\n            throw new Error('No Electron available.');\n        }\n\n        return electron.ipcRenderer;\n    }\n\n    public static isAvailable(): any {\n        return !!electron;\n    }\n\n    public static getRemoteOrUndefined(): any {\n        return electron ? electron.remote : undefined;\n    }\n\n    public static getProcess() {\n        return Electron.getRemote().process;\n    }\n}\n\nexport class AsyncEventEmitter<T> extends EventEmitter<T> {\n    emit(value?: T): void {\n        super.emit(value);\n    }\n\n    subscribe(generatorOrNext?: any, error?: any, complete?: any): Subscription {\n        return super.subscribe(generatorOrNext, error, complete);\n    }\n}\n\n\nexport class ExecutionState {\n    public running = false;\n    public error: string = '';\n\n    constructor(\n        protected readonly cd: ChangeDetectorRef,\n        protected readonly func: (...args: any[]) => Promise<any> | any,\n    ) {\n    }\n\n    public async execute(...args: any[]) {\n        if (this.running) {\n            throw new Error('Executor still running');\n        }\n\n        this.running = true;\n        this.error = '';\n        this.cd.detectChanges();\n\n        try {\n            return await this.func(...args);\n        } catch (error: any) {\n            this.error = error.message || error.toString();\n            throw error;\n        } finally {\n            this.running = false;\n            this.cd.detectChanges();\n        }\n\n    }\n}\n\n/**\n * Checks if `target` is children of `parent` or if `target` is `parent`.\n */\nexport function isTargetChildOf(target: HTMLElement | EventTarget | null, parent: HTMLElement): boolean {\n    if (!target) return false;\n\n    if (target === parent) return true;\n\n    return parent.contains(target as Node);\n}\n\nexport function isMacOs() {\n    if ('undefined' === typeof navigator) return false;\n    return navigator.platform.indexOf('Mac') > -1;\n}\n\nexport function isWindows() {\n    if ('undefined' === typeof navigator) return false;\n    return navigator.platform.indexOf('Win') > -1;\n}\n\n/**\n * Checks if `target` is children of `parent` or if `target` is `parent`.\n */\nexport function findParentWithClass(start: HTMLElement, className: string): HTMLElement | undefined {\n    let current: HTMLElement | null = start;\n    do {\n        if (current.classList.contains(className)) return current;\n        current = current.parentElement;\n    } while (current);\n\n    return undefined;\n}\n\nexport function triggerResize() {\n    if ('undefined' === typeof window) return;\n    nextTick(() => {\n        window.dispatchEvent(new Event('resize'));\n    });\n}\n\nexport type FocusWatcherUnsubscribe = () => void;\n\n/**\n * Observes focus changes on target elements and emits when focus is lost.\n *\n * This is used to track multi-element focus changes, such as when a user clicks from a dropdown toggle into the dropdown menu.\n */\nexport function focusWatcher(\n    target: Element, allowedFocuses: Element[] = [],\n    onBlur: (event: FocusEvent) => void,\n    customChecker?: (currentlyFocused: Element | null) => boolean,\n): FocusWatcherUnsubscribe {\n    const doc = target.ownerDocument;\n    if (doc.body.tabIndex === -1) doc.body.tabIndex = 1;\n\n    let currentlyFocused: Element | null = target;\n\n    let subscribed = true;\n\n    function isFocusAllowed() {\n        if (!currentlyFocused) {\n            return false;\n        }\n\n        if (currentlyFocused === target || target.contains(currentlyFocused)) {\n            return true;\n        }\n\n        for (const focus of allowedFocuses) {\n            if (focus && currentlyFocused === focus || focus.contains(currentlyFocused)) {\n                return true;\n            }\n        }\n\n        return customChecker ? customChecker(currentlyFocused) : false;\n    }\n\n    function emitBlurIfNeeded(event: FocusEvent) {\n        if (!currentlyFocused) {\n            // Shouldn't be possible to have no element at all with focus.\n            // This means usually that the item that had previously focus was deleted.\n            currentlyFocused = target;\n        }\n        if (subscribed && !isFocusAllowed()) {\n            onBlur(event);\n            unsubscribe();\n            return true;\n        }\n        return false;\n    }\n\n    function onFocusOut(event: FocusEvent) {\n        currentlyFocused = null;\n        emitBlurIfNeeded(event);\n    }\n\n    function onFocusIn(event: FocusEvent) {\n        currentlyFocused = event.target as any;\n        emitBlurIfNeeded(event);\n    }\n\n    function onMouseDown(event: FocusEvent) {\n        currentlyFocused = event.target as any;\n        if (emitBlurIfNeeded(event)) {\n            event.stopImmediatePropagation();\n            event.preventDefault();\n        }\n    }\n\n    doc.addEventListener('mousedown', onMouseDown, true);\n    doc.addEventListener('focusin', onFocusIn);\n    doc.addEventListener('focusout', onFocusOut);\n\n    function unsubscribe() {\n        if (!subscribed) return;\n        subscribed = false;\n        doc.removeEventListener('mousedown', onMouseDown, true);\n        doc.removeEventListener('focusin', onFocusIn);\n        doc.removeEventListener('focusout', onFocusOut);\n    }\n\n    return unsubscribe;\n}\n\nexport function redirectScrollableParentsToWindowResize(node: Element, passive = true) {\n    const parents = getScrollableParents(node);\n\n    function redirect() {\n        window.dispatchEvent(new Event('resize'));\n    }\n\n    for (const parent of parents) {\n        parent.addEventListener('scroll', redirect, { passive });\n    }\n\n    return () => {\n        for (const parent of parents) {\n            parent.removeEventListener('scroll', redirect);\n        }\n    };\n}\n\nexport function getScrollableParents(node: Element): Element[] {\n    const scrollableParents: Element[] = [];\n    let parent = node.parentNode;\n\n    while (parent) {\n        if (!(parent instanceof Element)) {\n            parent = parent.parentNode;\n            continue;\n        }\n        const computedStyle = window.getComputedStyle(parent);\n        const overflow = computedStyle.getPropertyValue('overflow');\n        if (overflow === 'overlay' || overflow === 'scroll' || overflow === 'auto') {\n            scrollableParents.push(parent);\n        }\n\n        parent = parent.parentNode;\n    }\n\n    return scrollableParents;\n}\n\nexport function trackByIndex(index: number) {\n    return index;\n}\n","import { inject, Injectable, OnDestroy, signal } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\n\n@Injectable({ providedIn: 'root' })\nexport class DuiDocument implements OnDestroy {\n    document = inject(DOCUMENT, { optional: true });\n\n    activeElement = signal<Element | undefined>(undefined);\n\n    onFocus = () => {\n        if (!this.document) return;\n        this.activeElement.set(this.document.activeElement || undefined);\n    };\n\n    constructor() {\n        this.document?.addEventListener('focusin', this.onFocus);\n        this.document?.addEventListener('focusout', this.onFocus);\n    }\n\n    ngOnDestroy() {\n        this.document?.removeEventListener('focusin', this.onFocus);\n        this.document?.removeEventListener('focusout', this.onFocus);\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { Directive, ElementRef, HostListener, inject, Input, input, OnChanges, OnDestroy, OnInit, output } from '@angular/core';\nimport { nextTick } from '@deepkit/core';\nimport { Electron } from '../../core/utils';\nimport { DOCUMENT } from '@angular/common';\n\nexport function injectDocument(): Document | undefined {\n    return inject(DOCUMENT, { optional: true }) || undefined;\n}\n\nexport function injectElementRef(): ElementRef<HTMLElement> {\n    return inject(ElementRef);\n}\n\nexport function clamp(value: number, min: number, max: number): number {\n    return Math.max(min, Math.min(max, value));\n}\n\n@Directive({ selector: '[openExternal], a[href]' })\nexport class OpenExternalDirective implements OnChanges {\n    openExternal = input<string>('');\n    href = input<string>('');\n\n    constructor(private element: ElementRef) {\n        // this.element.nativeElement.href = '#';\n    }\n\n    ngOnChanges(): void {\n        // this.element.nativeElement.href = this.getLink();\n        if (this.element.nativeElement instanceof HTMLAnchorElement) {\n            this.element.nativeElement.setAttribute('href', this.getLink());\n        }\n    }\n\n    getLink() {\n        return this.openExternal() || this.href();\n    }\n\n    @HostListener('click', ['$event'])\n    onClick(event: Event) {\n        event.stopPropagation();\n        event.preventDefault();\n\n        if (Electron.isAvailable()) {\n            event.preventDefault();\n            Electron.getRemote().shell.openExternal(this.getLink());\n        } else {\n            window.open(this.getLink(), '_blank');\n        }\n    }\n}\n\nlet lastScheduleResize: any;\n\nexport function scheduleWindowResizeEvent() {\n    if (lastScheduleResize) cancelAnimationFrame(lastScheduleResize);\n    lastScheduleResize = nextTick(() => {\n        window.dispatchEvent(new Event('resize'));\n        lastScheduleResize = undefined;\n    });\n}\n\n@Directive({ selector: 'ng-template[templateType]' })\nexport class TemplateContextTypeDirective<T> {\n    @Input() protected templateType!: T;\n\n    public static ngTemplateContextGuard<T>(dir: TemplateContextTypeDirective<T>, ctx: unknown,\n    ): ctx is T {\n        return true;\n    }\n}\n\n\n@Directive({ selector: '[onDomCreation]' })\nexport class OnDomCreationDirective implements OnInit, OnDestroy {\n    onDomCreation = output<Element>();\n    onDomCreationDestroy = output<Element>();\n    private element: ElementRef<HTMLElement> = injectElementRef();\n\n    ngOnInit() {\n        this.onDomCreation.emit(this.element.nativeElement);\n    }\n\n    ngOnDestroy() {\n        this.onDomCreationDestroy.emit(this.element.nativeElement);\n    }\n}\n\nexport type RegisterEventListenerRemove = () => void;\n\nexport function registerEventListener<\n    T extends Element | Document | Window,\n    K extends keyof KeyMap,\n    KeyMap extends GlobalEventHandlersEventMap = T extends Document ? DocumentEventMap : T extends Window ? WindowEventMap : HTMLElementEventMap,\n>(\n    element: T,\n    type: K,\n    listener: (ev: KeyMap[K]) => any,\n    options?: AddEventListenerOptions,\n): RegisterEventListenerRemove {\n    element.addEventListener(type as string, listener as EventListenerOrEventListenerObject, options);\n    return () => element.removeEventListener(type as string, listener as EventListenerOrEventListenerObject, options);\n}\n","import type { MenuBase } from './menu';\n\n// Type from electron menu item\nexport type BuiltTemplateItem = { [name: string]: any };\n\n// This is probably broken for current Electron versions, but we keep it for future work\nexport function buildElectronMenuTemplate(menu: MenuBase) {\n    const submenu: any[] = [];\n    for (const item of menu.children()) {\n        if (item === menu) continue;\n        if (!item.validOs()) {\n            continue;\n        }\n        submenu.push(buildElectronMenuTemplate(item));\n    }\n\n    const result: BuiltTemplateItem = {\n        click: () => {\n            menu.active();\n        },\n    };\n\n    const label = menu.label();\n    if (label) result['label'] = label;\n    const sublabel = menu.sublabel();\n    if (sublabel) result['sublabel'] = sublabel;\n\n    if (menu.disabled()) result['enabled'] = false;\n    if (menu.type) result['type'] = menu.type;\n\n    const accelerator = menu.accelerator();\n    if (accelerator) result['accelerator'] = accelerator;\n    const role = menu.role();\n    if (role) result['role'] = role;\n    if (menu.type) result['type'] = menu.type;\n    if (accelerator) result['accelerator'] = accelerator;\n    if (submenu.length) result['submenu'] = submenu;\n\n    menu.buildTemplate?.(result);\n\n    return result;\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { arrayRemoveItem, nextTick } from '@deepkit/core';\nimport { Injectable } from '@angular/core';\nimport { Electron } from '../../core/utils';\nimport type { MenuComponent } from '../app/menu';\nimport { buildElectronMenuTemplate } from '../app/menu-electron';\n\n@Injectable()\nexport class WindowMenuState {\n    menus: MenuComponent[] = [];\n\n    addMenu(menu: MenuComponent) {\n        this.menus.push(menu);\n\n        this.build();\n    }\n\n    removeMenu(menu: MenuComponent) {\n        arrayRemoveItem(this.menus, menu);\n        this.build();\n    }\n\n    build() {\n        nextTick(() => {\n            this._build();\n        });\n    }\n\n    protected _build() {\n        const template: any[] = [];\n\n        //todo, merge menus with same id(), id falls back to role+label\n        // then we can use fileMenu in sub views and add sub menu items as we want\n        for (const menu of this.menus) {\n            if (!menu.forApp()) continue;\n            for (const child of menu.children()) {\n                template.push(buildElectronMenuTemplate(child));\n            }\n        }\n\n        if (!template.length) {\n            template.push(...[\n                { role: 'appMenu' },\n                { role: 'fileMenu' },\n                { role: 'editMenu' },\n                { role: 'viewMenu' },\n                { role: 'windowMenu' },\n            ]);\n        }\n\n        if (Electron.isAvailable()) {\n            const remote: any = Electron.getRemote();\n            if (remote) {\n                try {\n                    const menu = remote.Menu.buildFromTemplate(template);\n                    remote.Menu.setApplicationMenu(menu);\n                } catch (error) {\n                    console.error('Could not buildFromTemplate', template);\n                    console.error(error);\n                }\n            } else {\n                console.warn('Not in electron environment');\n            }\n        }\n    }\n\n    focus() {\n        //set our electron menu\n        //Menu.setApplicationMenu()\n        this.build();\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { Injectable, Signal, signal, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { arrayRemoveItem } from '@deepkit/core';\nimport { WindowMenuState } from './window-menu';\nimport { BrowserWindow } from '../../core/utils';\n\nexport interface WinHeader {\n    getBottomPosition(): number;\n}\n\nexport interface Win {\n    id: number;\n    browserWindow: BrowserWindow;\n\n    getClosestNonDialogWindow(): Win | undefined;\n\n    header: Signal<WinHeader | undefined>;\n    viewContainerRef: ViewContainerRef;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class WindowRegistry {\n    id = 0;\n\n    registry = new Map<Win, {\n        state: WindowState,\n        menu: WindowMenuState,\n        viewContainerRef: ViewContainerRef\n    }>();\n\n    windowHistory: Win[] = [];\n    activeWindow?: Win;\n\n    getAllElectronWindows(): BrowserWindow[] {\n        return [...this.registry.keys()].filter(v => v.browserWindow.isElectron()).map(v => v.browserWindow);\n    }\n\n    register(win: Win, state: WindowState, menu: WindowMenuState, viewContainerRef: ViewContainerRef) {\n        this.id++;\n        win.id = this.id;\n\n        this.registry.set(win, { state, menu, viewContainerRef });\n    }\n\n    /**\n     * Finds the activeWindow and returns its most outer parent.\n     */\n    getOuterActiveWindow(): Win | undefined {\n        if (this.activeWindow) return this.activeWindow.getClosestNonDialogWindow();\n    }\n\n    getCurrentViewContainerRef(): ViewContainerRef {\n        if (this.activeWindow) {\n            return this.activeWindow.viewContainerRef;\n            // const reg = this.registry.get(this.activeWindow);\n            // if (reg) {\n            //     return reg.viewContainerRef;\n            // }\n        }\n\n        throw new Error('No active window');\n    }\n\n    focus(win: Win) {\n        if (this.activeWindow === win) return;\n\n        const reg = this.registry.get(win);\n        if (!reg) throw new Error('Window not registered');\n\n        this.activeWindow = win;\n\n        arrayRemoveItem(this.windowHistory, win);\n        this.windowHistory.push(win);\n\n        reg.state.focus.set(true);\n        reg.menu.focus();\n    }\n\n    blur(win: Win) {\n        const reg = this.registry.get(win);\n        if (reg) {\n            reg.state.focus.set(false);\n        }\n        if (this.activeWindow === win) {\n            this.activeWindow = undefined;\n        }\n    }\n\n    unregister(win: Win) {\n        const reg = this.registry.get(win);\n        if (reg) {\n            reg.state.focus.set(false);\n        }\n\n        this.registry.delete(win);\n        arrayRemoveItem(this.windowHistory, win);\n        if (this.activeWindow === win) {\n            this.activeWindow = undefined;\n        }\n\n        if (this.windowHistory.length) {\n            this.focus(this.windowHistory[this.windowHistory.length - 1]);\n        }\n    }\n}\n\nexport interface AlignedButtonGroup {\n    activateOneTimeAnimation: () => void;\n}\n\n@Injectable()\nexport class WindowState {\n    public buttonGroupAlignedToSidebar = signal<AlignedButtonGroup | undefined>(undefined);\n    public focus = signal(false);\n    public disableInputs = signal(false);\n\n    public toolbars = signal<{ [name: string]: TemplateRef<any>[] }>({});\n\n    public addToolbarContainer(forName: string, template: TemplateRef<any>) {\n        let toolbars = this.toolbars()[forName];\n        if (!toolbars) {\n            toolbars = [];\n        }\n\n        toolbars.push(template);\n        this.toolbars.update(v => ({ ...v, [forName]: toolbars.slice() }));\n    }\n\n    public removeToolbarContainer(forName: string, template: TemplateRef<any>) {\n        const toolbars = this.toolbars()[forName];\n        if (!toolbars) return;\n        arrayRemoveItem(toolbars, template);\n        this.toolbars.update(v => ({ ...v, [forName]: toolbars.slice() }));\n    }\n}\n","import { Directive, input, output } from '@angular/core';\nimport { injectElementRef, registerEventListener, RegisterEventListenerRemove } from './utils';\n\nexport interface DuiDragEvent extends PointerEvent {\n    id: number;\n    deltaX: number;\n    deltaY: number;\n}\n\nexport interface DuiDragStartEvent extends DuiDragEvent {\n    /**\n     * If this is set to false, the drag will not be accepted.\n     */\n    accept: boolean;\n}\n\n/**\n * A directive that catches pointer events and emits drag events.\n *\n * This won't move the element, it just emits events when the user does a drag gesture.\n *\n * ```html\n * <div (duiDrag)=\"onDrag($event)\" [duiDragThreshold]=\"2\"></div>\n * ```\n */\n@Directive({\n    selector: '[duiDrag]',\n})\nexport class DragDirective {\n    protected element = injectElementRef();\n    protected id = 0;\n\n    duiDragThreshold = input(0);\n    duiDragAbortOnEscape = input(true);\n\n    duiDrag = output<DuiDragEvent>();\n    duiDragStart = output<DuiDragStartEvent>();\n    duiDragEnd = output<DuiDragEvent>();\n    duiDragCancel = output<number>();\n\n    protected startX = 0;\n    protected startY = 0;\n    protected dragging = false;\n    protected draggingElement?: DuiDragEvent['target'];\n\n    protected destroy: RegisterEventListenerRemove;\n    protected removePointerMove?: RegisterEventListenerRemove;\n    protected removePointerUp?: RegisterEventListenerRemove;\n    protected removeKeyUp?: RegisterEventListenerRemove;\n\n    constructor() {\n        this.destroy = registerEventListener(this.element.nativeElement, 'pointerdown', (e) => this.onPointerDown(e));\n    }\n\n    protected onPointerDown(e: PointerEvent) {\n        if (e.button !== 0) return;\n        e.stopPropagation();\n\n        this.startX = e.clientX;\n        this.startY = e.clientY;\n        this.dragging = false;\n\n        const el = this.element.nativeElement;\n        el.setPointerCapture(e.pointerId);\n        const id = ++this.id;\n\n        this.dragging = false;\n        const threshold = this.duiDragThreshold() * this.duiDragThreshold();\n        this.draggingElement = e.target;\n\n        const onMove = (event: PointerEvent) => {\n            const dx = event.clientX - this.startX;\n            const dy = event.clientY - this.startY;\n\n            if (!this.dragging) {\n                const start = threshold ? dx * dx + dy * dy >= threshold : true;\n                if (start) {\n                    const startEvent: DuiDragStartEvent = Object.assign(event, {\n                        id,\n                        accept: true,\n                        deltaX: dx,\n                        deltaY: dy,\n                    });\n                    this.duiDragStart.emit(startEvent);\n                    this.dragging = startEvent.accept;\n                    if (!startEvent.accept) {\n                        this.abort(id);\n                        return;\n                    }\n                }\n            }\n\n            if (this.dragging) {\n                const dragEvent: DuiDragEvent = Object.assign(event, {\n                    id,\n                    deltaX: dx,\n                    deltaY: dy,\n                });\n                this.duiDrag.emit(dragEvent);\n            }\n        };\n\n        const onUp = (event: PointerEvent) => {\n            el.releasePointerCapture(event.pointerId);\n            this.release();\n\n            if (this.dragging) {\n                this.dragging = false;\n                event.stopPropagation();\n                const dx = event.clientX - this.startX;\n                const dy = event.clientY - this.startY;\n                const dragEndEvent: DuiDragEvent = Object.assign(event, {\n                    id,\n                    deltaX: dx,\n                    deltaY: dy,\n                });\n                this.duiDragEnd.emit(dragEndEvent);\n                this.element.nativeElement.addEventListener('click', (up) => up.stopPropagation(), { capture: true, once: true });\n            }\n        };\n\n        const onKey = (event: KeyboardEvent) => {\n            if (!this.dragging) return;\n            event.stopPropagation();\n            if (event.key === 'Escape') {\n                el.releasePointerCapture(e.pointerId);\n                this.dragging = false;\n                this.release();\n                this.duiDragCancel.emit(id);\n            }\n        };\n\n        this.removePointerMove = registerEventListener(window, 'pointermove', onMove);\n        this.removePointerUp = registerEventListener(window, 'pointerup', onUp, { once: true });\n        if (this.duiDragAbortOnEscape()) {\n            this.removeKeyUp = registerEventListener(window, 'keydown', onKey);\n        }\n    }\n\n    protected release() {\n        this.removePointerMove?.();\n        this.removePointerUp?.();\n        this.removeKeyUp?.();\n    }\n\n    protected abort(id: number) {\n        this.release();\n        this.draggingElement = undefined;\n        if (this.dragging) {\n            this.duiDragCancel.emit(id);\n        }\n        this.dragging = false;\n    }\n\n    ngOnDestroy() {\n        this.removePointerMove?.();\n        this.removePointerUp?.();\n        this.removeKeyUp?.();\n        this.destroy();\n    }\n}\n","import { booleanAttribute, Component, computed, effect, inject, input, model, Renderer2 } from '@angular/core';\nimport { DragDirective, DuiDragEvent, DuiDragStartEvent } from '../app/drag';\nimport { clamp } from '../app/utils';\n\n/**\n * A splitter component that can be used for layout resizing. With an indicator that shows a handle.\n *\n * This is typically used to resize layouts such as sidebars, panels, or other UI elements.\n *\n * Best used in combination with flex-basis CSS property to allow flexible resizing.\n *\n * ```html\n * <div class=\"layout\">\n *   <div class=\"sidebar\" [style.flex-basis.px]=\"sidebarSize()\">\n *       <dui-splitter position=\"right\" [size]=\"sidebarSize\" (sizeChange)=\"sidebarSize.set($event)\" indicator></dui-splitter>\n *   </div>\n *   <div class=\"content\"></div>\n * </div>\n * ```\n */\n@Component({\n    selector: 'dui-splitter',\n    template: '',\n    styleUrls: ['./splitter.component.scss'],\n    host: {\n        '[class.splitter-right]': 'position() === \"right\"',\n        '[class.splitter-left]': 'position() === \"left\"',\n        '[class.splitter-top]': 'position() === \"top\"',\n        '[class.splitter-bottom]': 'position() === \"bottom\"',\n        '[class.splitter-with-indicator]': 'indicator()',\n        '[class.horizontal]': 'isHorizontal()',\n        '[class.vertical]': '!isHorizontal()',\n        '(duiDragStart)': 'onDuiDragStart($event)',\n        '(duiDrag)': 'onDuiDrag($event)',\n        '(duiDragEnd)': 'onDuiDragEnd($event)',\n        '(duiDragCancel)': 'onDuiDragCancel()',\n    },\n    hostDirectives: [\n        {\n            directive: DragDirective,\n            inputs: ['duiDragThreshold'],\n            outputs: ['duiDragStart', 'duiDrag', 'duiDragEnd', 'duiDragCancel'],\n        },\n    ],\n})\nexport class SplitterComponent {\n    /**\n     * When set, the splitter will show an indicator (handle) to indicate that it can be dragged.\n     */\n    indicator = input(false, { transform: booleanAttribute });\n\n    size = model(0);\n\n    inverted = input(false, { transform: booleanAttribute });\n\n    /**\n     * If set one of these, the splitter will be positioned absolutely in the layout.\n     * Make sure to set a parent element with `position: relative;` to allow absolute positioning.\n     */\n    position = input<'left' | 'right' | 'top' | 'bottom'>();\n\n    orientation = input<'horizontal' | 'vertical'>();\n\n    /**\n     * Per default splitter is vertical (movement left-to-right), meaning vertical line.\n     * If set to true, it will be horizontal (movement top-to-bottom).\n     */\n    horizontal = input(false, { transform: booleanAttribute });\n\n    min = input(0);\n    max = input(Infinity);\n\n    element = input<Element>();\n\n    /**\n     * When element is set, this CSS property will be used to set the size of the splitter.\n     * Default is 'flex-basis', which is typically used in flexbox layouts.\n     */\n    property = input<'flex-basis' | 'width' | string>('flex-basis');\n\n    isHorizontal = computed(() => (this.horizontal() || this.position() === 'top' || this.position() === 'bottom') || this.orientation() === 'horizontal');\n\n    protected startSize = 0;\n    protected renderer = inject(Renderer2);\n\n    constructor() {\n        effect(() => {\n            const property = this.property();\n            const element = this.element();\n            if (!element) return;\n\n            const size = this.size();\n            if (size) {\n                this.renderer.setStyle(element, property, `${size}px`);\n            }\n        });\n    }\n\n    protected onDuiDragStart($event: DuiDragStartEvent) {\n        this.startSize = this.size();\n        const element = this.element();\n        if (!element) return;\n        const rect = element.getBoundingClientRect();\n        if (this.isHorizontal()) {\n            this.startSize = rect.height;\n        } else {\n            this.startSize = rect.width;\n        }\n    }\n\n    protected onDuiDragEnd(event: DuiDragEvent) {\n        const element = this.element();\n        if (!element) return;\n        // it's important to reset this.size() to the final real size after the drag ends.\n        // If for example dragged way too far, the size might be negative or too large.\n        const rect = element.getBoundingClientRect();\n        if (this.isHorizontal()) {\n            this.size.set(rect.height);\n            this.renderer.setStyle(element, this.property(), `${rect.height}px`);\n        } else {\n            this.size.set(rect.width);\n            this.renderer.setStyle(element, this.property(), `${rect.width}px`);\n        }\n    }\n\n    protected onDuiDrag(event: DuiDragEvent) {\n        const delta = this.isHorizontal() ? event.deltaY : event.deltaX;\n        const factor = this.inverted() ? -1 : 1;\n        const value = clamp(this.startSize + (delta * factor), this.min(), this.max());\n        this.size.set(value);\n        const element = this.element();\n        if (element) {\n            this.renderer.setStyle(element, this.property(), `${value}px`);\n        }\n    }\n\n    protected onDuiDragCancel() {\n        this.size.set(this.startSize);\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { booleanAttribute, Component, effect, ElementRef, input, model, signal, TemplateRef, viewChild } from '@angular/core';\nimport { WindowState } from './window-state';\nimport { triggerResize } from '../../core/utils';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { SplitterComponent } from '../splitter/splitter.component';\nimport { clamp } from '../app/utils';\n\nexport interface WinSidebar {\n    template: TemplateRef<any>;\n}\n\n@Component({\n    selector: 'dui-window-content',\n    template: `\n      <div class=\"top-line\"></div>\n\n      <div class=\"content {{class()}}\" #content>\n        <ng-content></ng-content>\n      </div>\n\n      @if (toolbar(); as toolbar) {\n        <div class=\"sidebar\"\n             (transitionend)=\"transitionEnded()\"\n             #sidebar [class.hidden]=\"!sidebarVisible() \" [class.with-animation]=\"withAnimation()\"\n             [style.min-width.px]=\"sidebarVisible() && !withAnimation() ? sidebarMinWidth() : undefined\"\n             [style.max-width.px]=\"sidebarMaxWidth()\"\n             [style.width.px]=\"sidebarWidth()\">\n          <div class=\"sidebar-container overlay-scrollbar-small\" [style.width.px]=\"sidebarWidth()\" #sidebarContainer>\n            <ng-container [ngTemplateOutlet]=\"toolbar.template\" [ngTemplateOutletContext]=\"{}\"></ng-container>\n          </div>\n          @if (sidebarVisible()) {\n            <dui-splitter position=\"right\" [element]=\"sidebar\" property=\"width\" [(size)]=\"sidebarWidth\"></dui-splitter>\n          }\n        </div>\n      }\n    `,\n    host: {\n        '[class.transparent]': 'transparent()',\n    },\n    styleUrls: ['./window-content.component.scss'],\n    imports: [\n        NgTemplateOutlet,\n        SplitterComponent,\n    ],\n})\nexport class WindowContentComponent {\n    transparent = input(false, { transform: booleanAttribute });\n\n    sidebarVisible = input<boolean>(true);\n\n    class = input<string>('');\n\n    sidebarWidth = model(250);\n    sidebarMaxWidth = input(550);\n    sidebarMinWidth = input(100);\n\n    toolbar = signal<WinSidebar | undefined>(undefined);\n\n    sidebar = viewChild('sidebar', { read: ElementRef });\n    sidebarContainer = viewChild('sidebarContainer', { read: ElementRef });\n    content = viewChild('content', { read: ElementRef });\n\n    withAnimation = signal(false);\n\n    constructor(\n        private windowState: WindowState,\n    ) {\n        effect(() => {\n            const normalized = clamp(this.sidebarWidth(), this.sidebarMinWidth(), this.sidebarMaxWidth());\n            this.sidebarWidth.set(normalized);\n        });\n\n        let last = this.sidebarVisible();\n        effect(() => {\n            if (this.sidebar() && this.sidebarContainer()) {\n                if (last === this.sidebarVisible()) return;\n                last = this.sidebarVisible();\n                this.handleSidebarVisibility(true);\n            }\n        });\n    }\n\n    protected transitionEnded() {\n        if (this.withAnimation()) {\n            this.withAnimation.set(false);\n            triggerResize();\n        }\n    }\n\n    unregisterSidebar(sidebar: WinSidebar) {\n        if (this.toolbar() === sidebar) this.toolbar.set(undefined);\n    }\n\n    registerSidebar(sidebar: WinSidebar) {\n        this.toolbar.set(sidebar);\n    }\n\n    protected handleSidebarVisibility(withAnimation = false) {\n        if (withAnimation && this.windowState.buttonGroupAlignedToSidebar()) {\n            this.withAnimation.set(true);\n            this.windowState.buttonGroupAlignedToSidebar()?.activateOneTimeAnimation();\n        }\n    }\n\n    isSidebarVisible(): boolean {\n        return undefined !== this.sidebar() && this.sidebarVisible();\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { booleanAttribute, Component, HostBinding, input, OnChanges, OnInit } from '@angular/core';\n\n@Component({\n    selector: 'dui-icon',\n    template: `{{ name() }}`,\n    host: {\n        '[class.ui-icon]': 'true',\n        '[style.font-size.px]': 'usedSize',\n        '[style.height.px]': 'usedSize',\n        '[style.width.px]': 'usedSize',\n        '[style.color]': 'color()',\n    },\n    styleUrls: ['./icon.component.scss'],\n})\nexport class IconComponent implements OnInit, OnChanges {\n    /**\n     * The icon for this button.\n     */\n    name = input.required<string>();\n\n    /**\n     * The icon size (default 17). Should not be necessary usually.\n     */\n    size = input<number>();\n\n    /**\n     * Enables interactive style for this icon.\n     */\n    clickable = input(false, { transform: booleanAttribute });\n\n    /**\n     * The color of the icon. If not set, it will use `currentColor` by default.\n     */\n    color = input<string>();\n\n    /**\n     * If true, the icon will be disabled and not clickable.\n     */\n    disabled = input<boolean>(false);\n\n    protected usedSize = 17;\n\n    @HostBinding('class.clickable')\n    get isClickable() {\n        return this.clickable();\n    }\n\n    @HostBinding('class.disabled')\n    get isDisabled() {\n        return this.disabled();\n    }\n\n    constructor() {\n    }\n\n    ngOnChanges(): void {\n        const size = this.size();\n        if (size) {\n            this.usedSize = size;\n        }\n\n        const name = this.name();\n        if (!size && name) {\n            const pos = name.indexOf('_');\n            if (pos !== -1) {\n                const potentialNumber = parseInt(name.slice(0, pos), 10);\n                if (potentialNumber) {\n                    this.usedSize = potentialNumber;\n                }\n            }\n        }\n    }\n\n    ngOnInit() {\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { Component, ElementRef, forwardRef, HostBinding, inject, input, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';\nimport { WindowState, WinHeader } from './window-state';\nimport { Electron } from '../../core/utils';\nimport { IconComponent } from '../icon/icon.component';\nimport { NgTemplateOutlet } from '@angular/common';\n\n@Component({\n    selector: 'dui-window-header',\n    template: `\n      <div class=\"title\">\n        <ng-content></ng-content>\n        <div class=\"closer\">\n          <div (click)=\"minimize()\">\n            <dui-icon [size]=\"18\" name=\"gnome_minimize\"></dui-icon>\n          </div>\n          <div (click)=\"maximize()\">\n            <dui-icon [size]=\"18\" name=\"gnome_maximize\"></dui-icon>\n          </div>\n          <div (click)=\"close()\" class=\"highlight\">\n            <dui-icon [size]=\"18\" name=\"gnome_close\"></dui-icon>\n          </div>\n        </div>\n      </div>\n      @if (windowState.toolbars()['default']) {\n        <div class=\"toolbar\">\n          <dui-window-toolbar-container></dui-window-toolbar-container>\n        </div>\n      }\n    `,\n    host: {\n        ngSkipHydration: 'true',\n        '[class.inactive]': '!windowState.focus()',\n        '[class.size-default]': `size() === 'default'`,\n        '[class.size-small]': `size() === 'small'`,\n    },\n    styleUrls: ['./window-header.component.scss'],\n    imports: [IconComponent, forwardRef(() => WindowToolbarContainerComponent)],\n})\nexport class WindowHeaderComponent implements WinHeader {\n    public size = input<'small' | 'default'>('default');\n\n    @HostBinding('class.with-toolbar')\n    protected get withToolbar() {\n        return this.windowState.toolbars()['default']?.length;\n    }\n\n    constructor(\n        public windowState: WindowState,\n        protected element: ElementRef,\n    ) {\n        this.windowState = windowState;\n    }\n\n    getBottomPosition(): number {\n        const rect = this.element.nativeElement.getBoundingClientRect();\n        return rect.y + rect.height;\n    }\n\n    maximize() {\n        const win = Electron.getRemote().BrowserWindow.getFocusedWindow();\n        if (!win.isMaximized()) {\n            Electron.getRemote().BrowserWindow.getFocusedWindow().maximize();\n        } else {\n            Electron.getRemote().BrowserWindow.getFocusedWindow().unmaximize();\n        }\n    }\n\n    minimize() {\n        Electron.getRemote().BrowserWindow.getFocusedWindow().minimize();\n    }\n\n    close() {\n        Electron.getRemote().BrowserWindow.getFocusedWindow().close();\n    }\n}\n\n@Component({\n    selector: 'dui-window-toolbar',\n    template: `\n      <ng-template #templateRef>\n        <ng-content></ng-content>\n      </ng-template>\n    `,\n})\nexport class WindowToolbarComponent implements OnDestroy, OnInit {\n    for = input<string>('default');\n    @ViewChild('templateRef', { static: true }) template?: TemplateRef<any>;\n\n    constructor(protected windowState: WindowState) {\n    }\n\n    ngOnInit() {\n        if (!this.template) return;\n        this.windowState.addToolbarContainer(this.for(), this.template);\n    }\n\n    ngOnDestroy(): void {\n        if (!this.template) return;\n        this.windowState.removeToolbarContainer(this.for(), this.template);\n    }\n}\n\n@Component({\n    selector: 'dui-window-toolbar-container',\n    template: `\n      @if (windowState.toolbars()[name()]; as toolbars) {\n        @for (template of toolbars; track $index) {\n          @if (template) {\n            <ng-container [ngTemplateOutlet]=\"template\" [ngTemplateOutletContext]=\"{}\"></ng-container>\n          }\n        }\n      }\n    `,\n    styles: [`\n      :host {\n        display: flex;\n        flex-direction: row;\n        gap: 6px;\n      }\n    `],\n    imports: [\n        NgTemplateOutlet,\n    ],\n})\nexport class WindowToolbarContainerComponent {\n    name = input<string>('default');\n    windowState = inject(WindowState);\n}\n","import { ApplicationRef, Component, Directive, HostBinding, Inject, Injectable, input, Optional, Renderer2, RendererFactory2, signal } from '@angular/core';\nimport { arrayRemoveItem } from '@deepkit/core';\nimport { DOCUMENT } from '@angular/common';\nimport { WindowRegistry } from '../window/window-state';\nimport { Router } from '@angular/router';\nimport { Electron } from '../../core/utils';\n\nif ('undefined' !== typeof window && 'undefined' === typeof (window as any)['global']) {\n    (window as any).global = window;\n}\n\n@Directive()\nexport class BaseComponent {\n    disabled = input<boolean>();\n\n    @HostBinding('class.disabled')\n    get isDisabled() {\n        return this.disabled() === true;\n    }\n}\n\n@Component({\n    selector: 'ui-component',\n    template: `\n      {{ name() }} disabled={{ isDisabled }}\n    `,\n    styles: [`\n      :host {\n        display: inline-block;\n      }\n\n      :host.disabled {\n        border: 1px solid red;\n      }\n    `],\n    host: {\n        '[class.is-textarea]': 'name() === \"textarea\"',\n    },\n})\nexport class UiComponentComponent extends BaseComponent {\n    name = input<string>('');\n}\n\nexport class OverlayStackItem {\n    constructor(\n        public level: number,\n        public host: HTMLElement,\n        public component: any,\n        public close: () => void,\n        protected stack: OverlayStackItem[],\n        public release: () => void,\n    ) {\n    }\n\n    getAllAfter(): OverlayStackItem[] {\n        const result: OverlayStackItem[] = [];\n\n        let flip = false;\n        for (let i = 0; i < this.stack.length; i++) {\n            if (flip) result.push(this.stack[i]);\n            if (this.stack[i] === this) flip = true;\n        }\n        return result;\n    }\n\n    getPrevious(): OverlayStackItem | undefined {\n        const before = this.getAllBefore();\n        return before.length ? before[before.length - 1] : undefined;\n    }\n\n    isLast(): boolean {\n        return this.getAllAfter().length === 0;\n    }\n\n    getAllBefore(): OverlayStackItem[] {\n        const result: OverlayStackItem[] = [];\n\n        for (let i = 0; i < this.stack.length; i++) {\n            if (this.stack[i] === this) return result;\n            result.push(this.stack[i]);\n        }\n        return result;\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class OverlayStack {\n    public stack: OverlayStackItem[] = [];\n\n    public register(host: HTMLElement, component: any, onClose: () => void): OverlayStackItem {\n        const item = new OverlayStackItem(this.getCurrentLevel(), host, component, onClose, this.stack, () => {\n            const before = item.getPrevious();\n            if (before) before.host.focus();\n            arrayRemoveItem(this.stack, item);\n        });\n        this.stack.push(item);\n        return item;\n    }\n\n    forEach(callback: (item: OverlayStackItem) => void): void {\n        for (const item of this.stack.slice()) {\n            callback(item);\n        }\n    }\n\n    getCurrentLevel() {\n        return this.stack.length;\n    }\n\n    getLevel(item: OverlayStackItem): number {\n        return this.stack.indexOf(item);\n    }\n\n    getForComponent(component: any): OverlayStackItem | undefined {\n        return this.stack.find(item => item.component === component);\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class Storage {\n    getItem(key: string): any {\n        return 'undefined' === typeof localStorage ? undefined : localStorage.getItem(key);\n    }\n\n    setItem(key: string, value: any): void {\n        if ('undefined' === typeof localStorage) return;\n        localStorage.setItem(key, value);\n    }\n\n    removeItem(key: string): void {\n        if ('undefined' === typeof localStorage) return;\n        localStorage.removeItem(key);\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DuiApp {\n    darkMode = signal<boolean | undefined>(undefined);\n    platform = signal<'web' | 'darwin' | 'linux' | 'win32'>('darwin');\n    themeDetection: boolean = true;\n\n    protected render: Renderer2;\n\n    constructor(\n        protected app: ApplicationRef,\n        @Inject(DOCUMENT) protected document: Document,\n        rendererFactory: RendererFactory2,\n        protected storage: Storage,\n        @Optional() protected windowRegistry?: WindowRegistry,\n        @Optional() protected router?: Router,\n    ) {\n        this.render = rendererFactory.createRenderer(null, null);\n        if ('undefined' !== typeof window) {\n            (window as any)['DuiApp'] = this;\n        }\n        this.start();\n        if (document && Electron.isAvailable()) {\n            document.addEventListener('click', (event: MouseEvent) => {\n                if (event.target) {\n                    const target = event.target as HTMLElement;\n                    if (target.tagName.toLowerCase() === 'a') {\n                        event.preventDefault();\n                        event.stopPropagation();\n                        Electron.getRemote().shell.openExternal((target as any).href);\n                    }\n                }\n            });\n        }\n    }\n\n    start() {\n        if (Electron.isAvailable()) {\n            this.render.addClass(this.document.body, 'electron');\n\n            const remote = Electron.getRemote();\n\n            this.setPlatform(remote.process.platform);\n        } else {\n            this.setPlatform('web');\n        }\n\n        if (this.themeDetection) {\n            let overwrittenDarkMode = this.storage.getItem('duiApp/darkMode');\n            if (overwrittenDarkMode) {\n                this.setDarkMode(JSON.parse(overwrittenDarkMode));\n            } else {\n                this.setDarkMode();\n            }\n\n            if ('undefined' !== typeof window) {\n                const mm = window.matchMedia('(prefers-color-scheme: dark)');\n                const setTheme = () => {\n                    if (!this.themeDetection) return;\n                    if (this.storage.getItem('duiApp/darkMode') === null) {\n                        this.setAutoDarkMode();\n                    }\n                };\n                if (mm.addEventListener) {\n                    mm.addEventListener('change', setTheme);\n                } else {\n                    //ios\n                    mm.addListener(setTheme);\n                }\n            }\n        }\n    }\n\n    setPlatform(platform: 'web' | 'darwin' | 'linux' | 'win32') {\n        this.platform.set(platform);\n        //deprecate these\n        this.render.removeClass(this.document.body, 'platform-linux');\n        this.render.removeClass(this.document.body, 'platform-darwin');\n        this.render.removeClass(this.document.body, 'platform-win32');\n        this.render.removeClass(this.document.body, 'platform-native');\n        this.render.removeClass(this.document.body, 'platform-web');\n\n        this.render.removeClass(this.document.body, 'dui-platform-linux');\n        this.render.removeClass(this.document.body, 'dui-platform-darwin');\n        this.render.removeClass(this.document.body, 'dui-platform-win32');\n        this.render.removeClass(this.document.body, 'dui-platform-native');\n        this.render.removeClass(this.document.body, 'dui-platform-web');\n\n        if (this.platform() !== 'web') {\n            this.render.addClass(this.document.body, 'platform-native'); //todo: deprecate\n            this.render.addClass(this.document.body, 'dui-platform-native');\n\n        }\n        this.render.addClass(this.document.body, 'platform-' + platform);//todo: deprecate\n        this.render.addClass(this.document.body, 'dui-platform-' + platform);\n    }\n\n    getPlatform(): string {\n        return this.platform();\n    }\n\n    isDarkMode(): boolean {\n        return this.darkMode() === true;\n    }\n\n    setAutoDarkMode(): void {\n        this.setDarkMode();\n    }\n\n    get theme(): 'auto' | 'light' | 'dark' {\n        if (this.isDarkModeOverwritten()) {\n            return this.isDarkMode() ? 'dark' : 'light';\n        }\n\n        return 'auto';\n    }\n\n    set theme(theme: 'auto' | 'light' | 'dark') {\n        if (theme === 'auto') {\n            this.setAutoDarkMode();\n            return;\n        }\n\n        this.setDarkMode(theme === 'dark');\n    }\n\n    isDarkModeOverwritten(): boolean {\n        return this.storage.getItem('duiApp/darkMode') !== null;\n    }\n\n    setGlobalDarkMode(darkMode: boolean): void {\n        if (Electron.isAvailable()) {\n            const remote = Electron.getRemote();\n            for (const win of remote.BrowserWindow.getAllWindows()) {\n                win.webContents.executeJavaScript(`DuiApp.setDarkMode(${darkMode})`);\n            }\n        }\n    }\n\n    getVibrancy(): 'ultra-dark' | 'light' {\n        return this.darkMode() ? 'ultra-dark' : 'light';\n    }\n\n    disableThemeDetection() {\n        this.render.removeClass(this.document.body, 'dui-theme-dark');\n        this.render.removeClass(this.document.body, 'dui-theme-light');\n        this.themeDetection = false;\n    }\n\n    setDarkMode(darkMode?: boolean) {\n        if (darkMode === undefined) {\n            this.darkMode.set(this.isPreferDarkColorSchema());\n            this.storage.removeItem('duiApp/darkMode');\n        } else {\n            this.storage.setItem('duiApp/darkMode', JSON.stringify(darkMode));\n            this.darkMode.set(darkMode);\n        }\n\n        if (this.windowRegistry) {\n            for (const win of this.windowRegistry.getAllElectronWindows()) {\n                win.setVibrancy(this.getVibrancy());\n            }\n        }\n\n        this.render.removeClass(this.document.body, 'dui-theme-dark');\n        this.render.removeClass(this.document.body, 'dui-theme-light');\n        this.render.addClass(this.document.body, this.darkMode() ? 'dui-theme-dark' : 'dui-theme-light');\n\n        if ('undefined' !== typeof window) window.dispatchEvent(new Event('theme-changed'));\n    }\n\n    protected isPreferDarkColorSchema() {\n        if ('undefined' === typeof window) return true;\n        return window.matchMedia('(prefers-color-scheme: dark)').matches;\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { booleanAttribute, ChangeDetectionStrategy, Component, contentChild, forwardRef, inject, input, OnDestroy, OnInit, ViewContainerRef } from '@angular/core';\nimport { WindowContentComponent } from './window-content.component';\nimport { Win, WindowRegistry, WindowState } from './window-state';\nimport { WindowMenuState } from './window-menu';\nimport { WindowHeaderComponent } from './window-header.component';\nimport { DuiApp } from '../app/app';\nimport { BrowserWindow } from '../../core/utils';\n\n/**\n * This is only for documentation purposes.\n */\n@Component({\n    selector: 'dui-window-frame',\n    template: '<ng-content></ng-content>',\n    styleUrls: ['./window-frame.component.scss'],\n    host: {\n        '[style.height]': `height() ? height() + 'px' : 'auto'`,\n        '[class.dui-normalized]': 'true',\n    },\n})\nexport class WindowFrameComponent {\n    height = input<number>(350);\n}\n\n@Component({\n    selector: 'dui-window',\n    template: '<ng-content></ng-content>@if (windowState.disableInputs()) {<div (mousedown)=\"$event.preventDefault();\" class=\"disable-inputs\"></div>}',\n    styleUrl: './window.component.scss',\n    host: {\n        '[class.in-dialog]': 'dialog()',\n        '[class.dui-theme-light]': '!app.themeDetection',\n        '[class.dui-body]': 'true',\n        '[class.dui-normalized]': 'normalizeStyle()',\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        forwardRef(() => WindowState),\n        forwardRef(() => WindowMenuState),\n    ],\n})\nexport class WindowComponent implements OnInit, OnDestroy, Win {\n    public id = 0;\n\n    content = contentChild(WindowContentComponent);\n    header = contentChild(WindowHeaderComponent);\n\n    closable = input(true);\n    maximizable = input(true);\n    minimizable = input(true);\n    dialog = input(false);\n    normalizeStyle = input(false, { alias: 'normalize-style', transform: booleanAttribute });\n\n    protected onBlur = () => {\n        this.registry.blur(this);\n    };\n\n    protected onFocus = () => {\n        this.registry.focus(this);\n    };\n\n    protected registry = inject(WindowRegistry);\n    protected app = inject(DuiApp);\n    protected parentWindow = inject(WindowComponent, { optional: true, skipSelf: true });\n    protected windowMenuState = inject(WindowMenuState);\n\n    windowState = inject(WindowState);\n    viewContainerRef = inject(ViewContainerRef);\n    browserWindow = inject(BrowserWindow);\n\n    constructor() {\n        this.registry.register(this, this.windowState, this.windowMenuState, this.viewContainerRef);\n        this.registry.focus(this);\n    }\n\n    ngOnInit() {\n        if (this.browserWindow && !this.dialog()) {\n            this.browserWindow.addListener('blur', this.onBlur);\n            this.browserWindow.addListener('focus', this.onFocus);\n            this.browserWindow.setVibrancy(this.app.getVibrancy());\n        }\n    }\n\n    ngOnDestroy() {\n        if (this.browserWindow && !this.dialog()) {\n            this.browserWindow.removeListener('blur', this.onBlur);\n            this.browserWindow.removeListener('focus', this.onFocus);\n        }\n        this.registry.unregister(this);\n    }\n\n    public getClosestNonDialogWindow(): WindowComponent | undefined {\n        if (!this.dialog()) {\n            return this;\n        }\n\n        if (this.parentWindow) {\n            if (this.parentWindow.dialog()) {\n                return this.parentWindow.getClosestNonDialogWindow();\n            }\n            return this.parentWindow;\n        }\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport {\n    AfterViewInit,\n    booleanAttribute,\n    ChangeDetectorRef,\n    Component,\n    computed,\n    Directive,\n    effect,\n    ElementRef,\n    forwardRef,\n    HostBinding,\n    HostListener,\n    inject,\n    Injectable,\n    input,\n    model,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Optional,\n    output,\n    OutputEmitterRef,\n    signal,\n    SkipSelf,\n    WritableSignal,\n} from '@angular/core';\nimport { WindowComponent } from '../window/window.component';\nimport { AlignedButtonGroup, WindowState } from '../window/window-state';\nimport { FormComponent } from '../form/form.component';\nimport { ngValueAccessor, ValueAccessorBase } from '../../core/form';\nimport { isMacOs } from '../../core/utils';\n\nimport { IconComponent } from '../icon/icon.component';\nimport { RouterLinkActive } from '@angular/router';\nimport { injectElementRef, registerEventListener, RegisterEventListenerRemove } from '../app/utils';\nimport { DOCUMENT } from '@angular/common';\n\nexport abstract class ActiveComponent {\n    abstract active: WritableSignal<boolean>;\n    abstract registeredHotkey?: WritableSignal<string>;\n    abstract showHotkey?: WritableSignal<boolean>;\n    abstract destroy: OutputEmitterRef<void>;\n\n    abstract activate(): void;\n}\n\n/**\n * hotkey has format of \"ctrl+shift+alt+key\", e.g \"ctrl+s\" or \"shift+o\"\n * and supports more than one, e.g. \"ctrl+s,ctrl+o\"\n */\nexport type HotKey = string;\n\nfunction hotKeySize(hotkey: HotKey) {\n    const hotkeys = hotkey.split(',');\n    let size = hotkeys.length - 1;\n    const isMac = isMacOs(); //mac uses one char per key, windows uses '⊞ WIN' for meta key, 'CTRL' for ctrl key, 'ALT' for alt key\n    for (const hotkey of hotkeys) {\n        const keys = hotkey.split('+');\n        for (const key of keys) {\n            if (key === 'ctrl') size += isMac ? 1 : 4;\n            if (key === 'meta') size += isMac ? 1 : 4;\n            if (key === 'shift') size += 1;\n            if (key === 'alt') size += isMac ? 1 : 3;\n            if (key !== 'ctrl' && key !== 'meta' && key !== 'alt' && key !== 'shift') size += key.length;\n        }\n    }\n\n    return size;\n}\n\nfunction isHotKeyActive(hotkey: HotKey, event: KeyboardEvent) {\n    const eventKey = event.key.toLowerCase();\n\n    const hotkeys = hotkey.toLowerCase().split(',');\n    for (const hotkey of hotkeys) {\n        const keys = hotkey.split('+');\n        let match = true;\n        for (const key of keys) {\n            if (key === 'ctrl' && !event.ctrlKey) {\n                match = false;\n                break;\n            }\n            if (key === 'meta' && (!event.ctrlKey && !event.metaKey)) {\n                match = false;\n                break;\n            }\n            if (key === 'shift' && !event.shiftKey) {\n                match = false;\n                break;\n            }\n            if (key === 'alt' && !event.altKey) {\n                match = false;\n                break;\n            }\n            if (key !== 'ctrl' && key !== 'meta' && key !== 'alt' && key !== 'shift' && key !== eventKey) {\n                match = false;\n                break;\n            }\n        }\n        if (match) return true;\n    }\n\n    return false;\n}\n\n\n@Component({\n    selector: 'dui-button-hotkey',\n    styles: [`\n      :host {\n        display: inline-flex;\n        flex-direction: row;\n        gap: 3px;\n      }\n\n      span {\n        text-transform: uppercase;\n        color: var(--dui-text-grey);\n      }\n    `],\n    template: `\n      @if (metaKey) {\n        <span>{{ isMac ? '⌘' : 'WIN' }}</span>\n      }\n      @if (ctrlKey) {\n        <span>{{ isMac ? '⌃' : 'CTRL' }}</span>\n      }\n      @if (altKey) {\n        <span>{{ isMac ? '⌥' : 'ALT' }}</span>\n      }\n      @if (shiftKey) {\n        <span>⇧</span>\n      }\n      @if (key) {\n        <span>{{ key }}</span>\n      }\n    `,\n    imports: [],\n})\nexport class ButtonHotkeyComponent implements OnChanges, OnInit {\n    hotkey = input<HotKey>('');\n\n    protected isMac = isMacOs();\n\n    protected metaKey = false;\n    protected ctrlKey = false;\n    protected shiftKey = false;\n    protected altKey = false;\n    protected key = '';\n\n    ngOnInit() {\n        this.parse();\n    }\n\n    ngOnChanges() {\n        this.parse();\n    }\n\n    protected parse() {\n        //reset all\n        this.metaKey = false;\n        this.ctrlKey = false;\n        this.shiftKey = false;\n        this.altKey = false;\n        this.key = '';\n\n        const hotkeyValue = this.hotkey();\n        if (!hotkeyValue) return;\n\n        const hotkeys = hotkeyValue.toLowerCase().trim().split(',');\n        for (const hotkey of hotkeys) {\n            const keys = hotkey.split('+');\n            for (const key of keys) {\n                if (key === 'ctrl') this.ctrlKey = true;\n                if (key === 'meta') this.metaKey = true;\n                if (key === 'shift') this.shiftKey = true;\n                if (key === 'alt') this.altKey = true;\n                if (key !== 'ctrl' && key !== 'shift' && key !== 'alt' && key !== 'meta') this.key = key;\n            }\n        }\n    }\n}\n\n@Component({\n    selector: 'dui-button',\n    template: `\n      @if (!iconRight() && icon(); as icon) {\n        <dui-icon [color]=\"iconColor()\" [name]=\"icon\" [size]=\"iconSize()\"></dui-icon>\n      }\n      <ng-content></ng-content>\n      @if (iconRight() && icon(); as icon) {\n        <dui-icon [color]=\"iconColor()\" [name]=\"icon\" [size]=\"iconSize()\"></dui-icon>\n      }\n      @if (showHotkey() && registeredHotkey(); as hotkey) {\n        <dui-button-hotkey [hotkey]=\"hotkey\"></dui-button-hotkey>\n      }\n    `,\n    host: {\n        '[class.dui-normalized]': 'true',\n        '[attr.tabindex]': '1',\n        '[class.icon]': '!!icon()',\n        '[class.small]': 'small()',\n        '[class.tight]': 'tight()',\n        '[class.highlighted]': 'highlighted()',\n        '[class.primary]': 'primary()',\n        '[class.icon-left]': 'icon() && !iconRight()',\n        '[class.icon-right]': 'iconRight()',\n        '[class.icon-only]': 'iconOnly()',\n        '[class.square]': 'square()',\n        '[class.textured]': 'textured()',\n        '[class.active]': 'isActive()',\n        '[class.disabled]': 'isDisabled()',\n    },\n    styleUrls: ['./button.component.scss'],\n    hostDirectives: [\n        { directive: RouterLinkActive, inputs: ['routerLinkActiveOptions'] },\n    ],\n    providers: [\n        { provide: ActiveComponent, useExisting: forwardRef(() => ButtonComponent) },\n    ],\n    imports: [\n        IconComponent,\n        ButtonHotkeyComponent,\n    ],\n})\nexport class ButtonComponent implements OnInit, ActiveComponent, OnDestroy {\n    hotKeySize = hotKeySize;\n    destroy = output();\n\n    /**\n     * The icon for this button. Either a icon name same as for dui-icon, or an image path.\n     */\n    icon = input<string>();\n\n    /**\n     * Change in the icon size. Should not be necessary usually.\n     */\n    iconSize = input<number>();\n\n    iconRight = input(false, { alias: 'icon-right', transform: booleanAttribute });\n\n    iconColor = input<string>();\n\n    showHotkey = model<boolean>(false);\n    registeredHotkey = signal('');\n\n    /**\n     * Whether the button is active (pressed)\n     */\n    active = model<boolean>(false);\n\n    /**\n     * Whether the button has no padding and smaller font size\n     */\n    small = input(false, { transform: booleanAttribute });\n\n    /**\n     * Whether the button has smaller padding. Better for button with icons.\n     */\n    tight = input(false, { transform: booleanAttribute });\n\n    /**\n     * Whether the button is highlighted.\n     */\n    highlighted = input(false, { transform: booleanAttribute });\n\n    /**\n     * Whether the button is primary.\n     */\n    primary = input(false, { transform: booleanAttribute });\n\n    /**\n     * Whether the button is focused on initial loading.\n     */\n    autoFocus = input(false, { alias: 'auto-focus', transform: booleanAttribute });\n\n    /**\n     * The form to submit when this button is clicked.\n     */\n    submitForm = input<FormComponent>();\n\n    disabled = input(false, { transform: booleanAttribute });\n    square = input(false, { transform: booleanAttribute });\n    textured = input(false, { transform: booleanAttribute });\n\n    iconOnly = computed(() => {\n        if (!this.icon()) return false;\n        for (const child of this.element.nativeElement.childNodes) {\n            if (child.nodeType === Node.TEXT_NODE) {\n                return false;\n            }\n        }\n        return true;\n    });\n\n    protected element = injectElementRef();\n    protected formComponent = inject(FormComponent, { optional: true });\n    protected routerLinkActive = inject(RouterLinkActive);\n\n    isDisabled = computed(() => {\n        if (this.formComponent && this.formComponent.disabled()) return true;\n        const submitForm = this.submitForm();\n        if (submitForm && (submitForm.invalid || submitForm.disabled() || submitForm.submitting())) {\n            return true;\n        }\n\n        return this.disabled();\n    });\n\n    constructor() {\n        this.element.nativeElement.removeAttribute('tabindex');\n    }\n\n    ngOnDestroy() {\n        this.destroy.emit();\n    }\n\n    protected isActive() {\n        return this.routerLinkActive.isActive || this.active();\n    }\n\n    activate() {\n        this.element.nativeElement.click();\n    }\n\n    ngOnInit() {\n        if (this.autoFocus()) {\n            setTimeout(() => {\n                this.element.nativeElement.focus();\n            }, 10);\n        }\n    }\n\n    @HostListener('click')\n    protected async onClick() {\n        if (this.isDisabled()) return;\n\n        const submitForm = this.submitForm();\n        if (submitForm) {\n            void submitForm.submitForm();\n        }\n    }\n}\n\n@Injectable({ providedIn: 'root' })\nexport class HotkeyRegistry implements OnDestroy {\n    active: { key: HotKey, component: ActiveComponent }[] = [];\n\n    protected document = inject(DOCUMENT);\n    protected removeKeyDown?: RegisterEventListenerRemove;\n    protected removeKeyUp?: RegisterEventListenerRemove;\n    protected knownComponents = new Set<ActiveComponent>();\n\n    showHotKeyOn = 'alt';\n\n    constructor() {\n        this.removeKeyDown = registerEventListener(this.document, 'keydown', (event) => {\n            // If only alt is pressed (not other keys, we display the hotkey)\n            if (this.showHotKeyOn && event.key.toLowerCase() === this.showHotKeyOn) {\n                for (const item of this.active) {\n                    item.component.showHotkey?.set(true);\n                }\n                return;\n            }\n\n            for (const item of this.active) {\n                if (isHotKeyActive(item.key, event)) {\n                    this.activate(item.component);\n                    event.preventDefault();\n                    return;\n                }\n            }\n        });\n\n        this.removeKeyUp = registerEventListener(this.document, 'keydown', (event) => {\n            // If only alt is pressed (not other keys, we display the hotkey)\n            if (this.showHotKeyOn && event.key.toLowerCase() === this.showHotKeyOn) {\n                for (const item of this.active) {\n                    item.component.showHotkey?.set(false);\n                }\n                return;\n            }\n        });\n    }\n\n    activate(component: ActiveComponent) {\n        if (component.active()) return;\n        component.activate();\n        component.active.set(true);\n\n        setTimeout(() => {\n            component.active.set(false);\n        }, 200);\n    }\n\n    ngOnDestroy() {\n        this.removeKeyDown?.();\n        this.removeKeyUp?.();\n    }\n\n    unregister(component: ActiveComponent) {\n        const index = this.active.findIndex(v => v.component === component);\n        if (index !== -1) {\n            this.active.splice(index, 1);\n        }\n        this.knownComponents.delete(component);\n    }\n\n    register(key: HotKey, component: ActiveComponent) {\n        this.active = this.active.filter(v => v.component !== component);\n        this.active.unshift({ key, component });\n        if (!this.knownComponents.has(component)) {\n            this.knownComponents.add(component);\n            component.destroy.subscribe(() => {\n                this.unregister(component);\n            });\n        }\n    }\n}\n\n/**\n * Adds a hotkey to a button.\n *\n * ```html\n * <dui-button hotkey=\"escape\">Cancel</dui-button>\n * <dui-button hotkey=\"cmd+s\">Save</dui-button>\n * ```\n */\n@Directive({ selector: '[hotkey]' })\nexport class HotkeyDirective implements OnDestroy {\n    hotkey = input.required<HotKey>();\n    protected oldButtonActive?: boolean;\n    protected hotkeyRegistry = inject(HotkeyRegistry);\n    protected activeComponent = inject(ActiveComponent, { optional: true });\n    protected element = injectElementRef();\n\n    registeredHotkey = signal('');\n\n    active = signal(false);\n    destroy = output();\n\n    ngOnDestroy() {\n        this.destroy.emit();\n    }\n\n    constructor() {\n        const component = this.activeComponent || this;\n        effect(() => {\n            const hotkey = this.hotkey();\n            component.registeredHotkey?.set(hotkey);\n            if (hotkey) {\n                this.hotkeyRegistry.register(hotkey, component);\n            } else {\n                this.hotkeyRegistry.unregister(component);\n            }\n        });\n    }\n\n    activate() {\n        this.element.nativeElement.click();\n    }\n}\n\n/**\n * Used to group buttons together.\n */\n@Component({\n    selector: 'dui-button-group',\n    template: '<ng-content></ng-content>',\n    host: {\n        '[class.float-right]': `float() === 'right'`,\n        '(transitionend)': 'transitionEnded()',\n    },\n    styleUrls: ['./button-group.component.scss'],\n})\nexport class ButtonGroupComponent implements AfterViewInit, OnDestroy, AlignedButtonGroup {\n    /**\n     * How the button should behave.\n     * `sidebar` means it aligns with the sidebar. Is the sidebar open, this button-group has a left margin.\n     * Is it closed, the margin is gone.\n     */\n    float = input<'static' | 'sidebar' | 'float' | 'right'>('static');\n\n    /**\n     * If set to none, buttons inside this group will be tightly packed together without any padding.\n     */\n    padding = input<'normal' | 'none'>('normal');\n\n    @HostBinding('class.padding-none')\n    get isPaddingNone() {\n        return this.padding() === 'none';\n    }\n\n    constructor(\n        private element: ElementRef<HTMLElement>,\n        @SkipSelf() protected cd: ChangeDetectorRef,\n        @Optional() private windowState?: WindowState,\n        @Optional() private windowComponent?: WindowComponent,\n    ) {\n        effect(() => this.updatePaddingLeft());\n    }\n\n    /**\n     * @hidden\n     */\n    activateOneTimeAnimation() {\n        (this.element.nativeElement as HTMLElement).classList.add('with-animation');\n    }\n\n    ngOnDestroy(): void {\n        if (this.windowState && this.windowState.buttonGroupAlignedToSidebar() === this) {\n            this.windowState.buttonGroupAlignedToSidebar.set(undefined);\n        }\n    }\n\n    protected transitionEnded() {\n        (this.element.nativeElement as HTMLElement).classList.remove('with-animation');\n    }\n\n    ngAfterViewInit(): void {\n        if (this.float() === 'sidebar' && this.windowState) {\n            this.windowState.buttonGroupAlignedToSidebar.set(this);\n        }\n    }\n\n    protected updatePaddingLeft() {\n        if (this.float() === 'sidebar' && this.windowComponent) {\n            const content = this.windowComponent.content();\n            if (content && content.isSidebarVisible()) {\n                const newLeft = Math.max(0, content.sidebarWidth() - this.element.nativeElement.offsetLeft) + 'px';\n                if (this.element.nativeElement.style.paddingLeft == newLeft) {\n                    //no transition change, doesn't trigger transitionEnd\n                    (this.element.nativeElement as HTMLElement).classList.remove('with-animation');\n                    return;\n                }\n                this.element.nativeElement.style.paddingLeft = newLeft;\n                return;\n            }\n            this.element.nativeElement.style.paddingLeft = '0px';\n        }\n    }\n}\n\n@Component({\n    selector: 'dui-button-groups',\n    template: `\n      <ng-content></ng-content>\n    `,\n    host: {\n        '[class.align-left]': `align() === 'left'`,\n        '[class.align-center]': `align() === 'center'`,\n        '[class.align-right]': `align() === 'right'`,\n    },\n    styleUrls: ['./button-groups.component.scss'],\n})\nexport class ButtonGroupsComponent {\n    align = input<'left' | 'center' | 'right'>('left');\n}\n\n/**\n * Directive to open the native file chooser dialog.\n * Can be used wth FormsModule (ngModel).\n *\n * ```html\n * <dui-button duiFileChooser duiFileChooserChange=\"open($event)\">Open File</dui-button>\n * ```\n */\n@Directive({\n    selector: '[duiFileChooser]',\n    providers: [ngValueAccessor(FileChooserDirective)],\n})\nexport class FileChooserDirective extends ValueAccessorBase<File[]> implements OnDestroy, OnChanges {\n    duiFileMultiple = input(false, { transform: booleanAttribute });\n    duiFileDirectory = input(false, { transform: booleanAttribute });\n\n    duiFileChooserChange = output<File[]>();\n\n    protected input: HTMLInputElement;\n\n    constructor() {\n        super();\n        const inputElement = document.createElement('input');\n        inputElement.setAttribute('type', 'file');\n        this.input = inputElement;\n        this.input.addEventListener('change', (event: any) => {\n            const files = event.target.files as FileList;\n            if (files.length) {\n                if (this.duiFileMultiple()) {\n                    const result: File[] = [];\n                    for (let i = 0; i < files.length; i++) {\n                        const file = files.item(i);\n                        if (!file) continue;\n                        result.push(file);\n                    }\n                    this.setValue(result);\n                } else {\n                    this.setValue([files.item(0)!]);\n                }\n                this.duiFileChooserChange.emit(this.value() || []);\n            }\n        });\n    }\n\n    ngOnDestroy() {\n    }\n\n    ngOnChanges(): void {\n        (this.input as any).webkitdirectory = this.duiFileDirectory();\n        this.input.multiple = this.duiFileMultiple();\n    }\n\n    @HostListener('click')\n    protected onClick() {\n        this.input.click();\n    }\n}\n\nexport interface FilePickerItem {\n    data: Uint8Array;\n    name: string;\n    mimeType: string;\n}\n\nfunction readFile(file: File): Promise<Uint8Array | undefined> {\n    return new Promise((resolve, reject) => {\n        const reader = new FileReader();\n        reader.onload = () => {\n            if (reader.result) {\n                if (reader.result instanceof ArrayBuffer) {\n                    resolve(new Uint8Array(reader.result));\n                } else {\n                    resolve(undefined);\n                }\n            }\n        };\n        reader.onerror = (error) => {\n            console.log('Error: ', error);\n            reject();\n        };\n\n        reader.readAsArrayBuffer(file);\n    });\n}\n\n/**\n * Directive to open the native file picker dialog and return the selected files as Uint8Array.\n * Can be used wth FormsModule (ngModel).\n *\n * ```html\n * <dui-button duiFilePicker duiFilePickerChange=\"open($event)\">Open File</dui-button>\n * ```\n */\n@Directive({\n    selector: '[duiFilePicker]',\n    providers: [ngValueAccessor(FileChooserDirective)],\n})\nexport class FilePickerDirective extends ValueAccessorBase<FilePickerItem[]> implements OnDestroy, AfterViewInit {\n    duiFileMultiple = input(false, { transform: booleanAttribute });\n    duiFileAutoOpen = input<boolean>(false);\n\n    duiFilePickerChange = output<FilePickerItem[]>();\n\n    protected input: HTMLInputElement;\n\n    constructor() {\n        super();\n        const inputElement = document.createElement('input');\n        inputElement.setAttribute('type', 'file');\n        this.input = inputElement;\n\n        this.input.addEventListener('change', async (event: any) => {\n            const files = event.target.files as FileList;\n            if (files.length) {\n                if (this.duiFileMultiple() !== false) {\n                    const res: FilePickerItem[] = [];\n                    for (let i = 0; i < files.length; i++) {\n                        const file = files.item(i);\n                        if (file) {\n                            const uint8Array = await readFile(file);\n                            if (uint8Array) {\n                                res.push({ data: uint8Array, name: file.name, mimeType: file.type });\n                            }\n                        }\n                    }\n                    this.setValue(res);\n                } else {\n                    const file = files.item(0);\n                    if (file) {\n                        const data = await readFile(file);\n                        if (data) {\n                            this.setValue([{ data, name: file.name, mimeType: file.type }]);\n                        }\n                    }\n                }\n                this.duiFilePickerChange.emit(this.value() || []);\n            }\n        });\n    }\n\n    ngOnDestroy() {\n    }\n\n    ngAfterViewInit() {\n        if (this.duiFileAutoOpen()) this.onClick();\n    }\n\n    @HostListener('click')\n    protected onClick() {\n        this.input.multiple = this.duiFileMultiple();\n        this.input.click();\n    }\n}\n\n/**\n * Directive to allow dropping files into an area.\n * Can be used wth FormsModule (ngModel).\n *\n * ```html\n * <div duiFileDrop (duiFileDropChange)=\"onFilesDropped($event)\">\n *     Drop files here\n * </div>\n * ```\n */\n@Directive({\n    selector: '[duiFileDrop]',\n    host: {\n        '[class.file-drop-hover]': 'i() > 0',\n    },\n    providers: [ngValueAccessor(FileChooserDirective)],\n})\nexport class FileDropDirective extends ValueAccessorBase<FilePickerItem[]> implements OnDestroy {\n    duiFileDropMultiple = input(false, { transform: booleanAttribute });\n    duiFileDropChange = output<FilePickerItem[]>();\n\n    i = signal(0);\n\n    @HostListener('dragenter', ['$event'])\n    protected onDragEnter(ev: any) {\n        // Prevent default behavior (Prevent file from being opened)\n        ev.preventDefault();\n        this.i.update(v => v + 1);\n    }\n\n    @HostListener('dragover', ['$event'])\n    protected onDragOver(ev: any) {\n        // Prevent default behavior (Prevent file from being opened)\n        ev.preventDefault();\n    }\n\n    @HostListener('dragleave', ['$event'])\n    protected onDragLeave(ev: any) {\n        // Prevent default behavior (Prevent file from being opened)\n        ev.preventDefault();\n        this.i.update(v => v - 1);\n    }\n\n    @HostListener('drop', ['$event'])\n    protected async onDrop(ev: any) {\n        // Prevent default behavior (Prevent file from being opened)\n        ev.preventDefault();\n\n        const res: FilePickerItem[] = [];\n        if (ev.dataTransfer.items) {\n            // Use DataTransferItemList interface to access the file(s)\n            for (let i = 0; i < ev.dataTransfer.items.length; i++) {\n                // If dropped items aren't files, reject them\n                if (ev.dataTransfer.items[i].kind === 'file') {\n                    const file = ev.dataTransfer.items[i].getAsFile();\n                    if (file) {\n                        const uint8Array = await readFile(file);\n                        if (uint8Array) {\n                            res.push({ data: uint8Array, name: file.name, mimeType: file.type });\n                        }\n                    }\n                }\n            }\n        } else {\n            // Use DataTransfer interface to access the file(s)\n            for (let i = 0; i < ev.dataTransfer.files.length; i++) {\n                const file = ev.dataTransfer.files.item(i);\n                if (file) {\n                    const uint8Array = await readFile(file);\n                    if (uint8Array) {\n                        res.push({ data: uint8Array, name: file.name, mimeType: file.type });\n                    }\n                }\n            }\n        }\n        if (this.duiFileDropMultiple()) {\n            this.setValue(res);\n        } else {\n            if (res.length) {\n                this.setValue([res[0]]);\n            } else {\n                this.setValue([]);\n            }\n        }\n        this.duiFileDropChange.emit(this.value() || []);\n        this.i.set(0);\n    }\n\n    ngOnDestroy() {\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { OnDestroy, ɵComponentDef as ComponentDef, ɵNG_COMP_DEF as NG_COMP_DEF } from '@angular/core';\nimport { getClassName } from '@deepkit/core';\n\nconst lazyValuesStore = new WeakMap<any, object>();\nconst lazyValuesDestroyed = new WeakMap<any, object>();\n\nfunction lazyInitialize(target: any, map: WeakMap<any, object> = lazyValuesStore): any {\n    let object = map.get(target);\n    if (object) return object;\n    object = {};\n    map.set(target, object);\n    return object;\n}\n\nfunction getRealMethodHookName(value: string): string {\n    return 'ng' + value.substr(0, 1).toUpperCase() + value.substr(1);\n}\n\nfunction addComponentHook<T>(target: T, hookName: 'onDestroy' | 'onChanges' | 'onInit' | 'afterViewInit', fn: (this: T) => void) {\n    const cdef: ComponentDef<any> = ((target as any).constructor as any)[NG_COMP_DEF];\n    if (cdef) {\n        //prod build\n        const ori = (cdef as any)[hookName];\n        ((cdef as any)['onDestroy'] as any) = function (this: any, ...args: any[]) {\n            fn.call(this);\n            ori && (ori as any).apply(this, args);\n        };\n    } else {\n        const ori = (target as any).constructor.prototype[getRealMethodHookName(hookName)];\n        (target as any).constructor.prototype[getRealMethodHookName(hookName)] = function (this: any, ...args: any[]) {\n            fn.call(this);\n            ori && (ori as any).apply(this, args);\n        };\n    }\n}\n\n/**\n * Automatically unsubscribe the value (calling unsubscribe() on the current value)\n * when ngOnDestroy is called or a new value has been set.\n * When the component is already destroyed, newly set values will be unscubribed immediately.\n * This makes sure when a component is destroyed too fast before a async operation is completed\n * that the result is unsubscribed, otherwise it would be a memory leak.\n */\nexport function unsubscribe<T extends OnDestroy>() {\n    return function (target: T, propertyKey: string | symbol) {\n\n        function unsub(value: any) {\n            if (value && value.unsubscribe) {\n                try {\n                    value.unsubscribe();\n                } catch (error) {\n                    console.log('Subscription was already unsubscribed.', getClassName(target), propertyKey);\n                }\n            }\n        }\n\n        Object.defineProperty(target, propertyKey, {\n            enumerable: true,\n            configurable: false, //even with true the prop cant be deleted using `delete this.name`\n            get() {\n                const store = lazyInitialize(this);\n                return store[propertyKey];\n            },\n\n            set(value) {\n                const destroyed = lazyInitialize(this, lazyValuesDestroyed);\n                const store = lazyInitialize(this);\n                unsub(store[propertyKey]);\n                if (destroyed['destroyed']) {\n                    unsub(value);\n                }\n                store[propertyKey] = value;\n            }\n        });\n\n        addComponentHook(target, 'onDestroy', function () {\n            const destroyed = lazyInitialize(this, lazyValuesDestroyed);\n            destroyed['destroyed'] = true;\n            const store = lazyInitialize(this);\n            if (store[propertyKey]) {\n                unsub(store[propertyKey]);\n            }\n        });\n    };\n}\n","import { Directive, OnDestroy, OnInit, output } from '@angular/core';\nimport { injectElementRef } from './utils';\n\nexport type PositionObserverDisconnect = () => void;\n\nexport function observePosition(\n    element: Element,\n    callback: (entry: DOMRectReadOnly) => void,\n    debugPosition = false,\n): PositionObserverDisconnect {\n    if ('undefined' === typeof IntersectionObserver) return () => undefined;\n    let lastObserver: IntersectionObserver | undefined;\n\n    const resizeObserver = new ResizeObserver(() => {\n        setupObserver();\n    });\n    resizeObserver.observe(element);\n    const debug = debugPosition ? document.createElement('div') : undefined;\n    if (debug) {\n        debug.style.position = 'fixed';\n        debug.style.zIndex = '999999';\n        debug.style.backgroundColor = 'rgba(255, 0, 0, 0.5)';\n        debug.style.pointerEvents = 'none';\n        document.body.appendChild(debug);\n    }\n\n    function setupObserver() {\n        const box = element.getBoundingClientRect();\n        if (box.width === 0 || box.height === 0) {\n            return;\n        }\n        const vw = document.body.clientWidth;\n        const vh = window.innerHeight;\n        const top = Math.floor(box.top);\n        const left = Math.floor(box.left);\n        const right = Math.floor(vw - box.right);\n        const bottom = Math.floor(vh - box.bottom);\n\n        const rootMargin = `${-top}px ${-right}px ${-bottom}px ${-left}px`;\n        if (debug) {\n            debug.style.top = `${top}px`;\n            debug.style.left = `${left}px`;\n            debug.style.right = `${right}px`;\n            debug.style.bottom = `${bottom}px`;\n        }\n\n        const size = box.width > box.height ? box.width : box.height;\n        const onePixelInPercent = 1 / size;\n\n        // To not create a new IntersectionObserver every event, we use several thresholds.\n        // To not create too many thresholds (when the element is very big),\n        // we generate 100 items, each the size of one pixel in percent.\n        // In the callback we rebuild a new observer when intersectionRatio is\n        // either bigger than the biggest threshold or smaller than the smallest threshold.\n        const thresholdCount = Math.min(size, 100);\n        const thresholds = Array.from({ length: thresholdCount }, (_, i) => 1 - ((i + 1) * onePixelInPercent));\n        // console.log('rootMargin', rootMargin, box, thresholds);\n        const minRatio = thresholds[thresholds.length - 1];\n\n        if (lastObserver) lastObserver.disconnect();\n        lastObserver = new IntersectionObserver(\n            (entries, observer) => {\n                for (const entry of entries) {\n                    callback(entry.boundingClientRect);\n                }\n                if (entries[0].intersectionRatio <= minRatio) {\n                    observer.disconnect();\n                    setupObserver();\n                }\n            },\n            { root: null, rootMargin, threshold: thresholds },\n        );\n        lastObserver.observe(element);\n    }\n\n    setupObserver();\n\n    return () => {\n        lastObserver?.disconnect();\n        lastObserver = undefined;\n        resizeObserver.disconnect();\n        if (debug) {\n            debug.remove();\n        }\n    };\n}\n\n@Directive({\n    selector: '[duiPositionChange]',\n})\nexport class PositionChangeDirective implements OnInit, OnDestroy {\n    duiPositionChange = output<any>();\n\n    elementRef = injectElementRef();\n    observer = observePosition(this.elementRef.nativeElement, (rect) => {\n        this.duiPositionChange.emit(rect);\n    });\n\n    ngOnInit() {\n    }\n\n    ngOnDestroy() {\n        this.observer();\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport {\n    AfterViewInit,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    Directive,\n    effect,\n    ElementRef,\n    EmbeddedViewRef,\n    forwardRef,\n    HostListener,\n    inject,\n    Injector,\n    input,\n    model,\n    OnChanges,\n    OnDestroy,\n    output,\n    OutputRefSubscription,\n    signal,\n    SimpleChanges,\n    TemplateRef,\n    ViewChild,\n    ViewContainerRef,\n} from '@angular/core';\nimport { TemplatePortal } from '@angular/cdk/portal';\nimport { ConnectedPosition, Overlay, OverlayConfig, OverlayRef, PositionStrategy } from '@angular/cdk/overlay';\nimport { focusWatcher } from '../../core/utils';\nimport { isArray } from '@deepkit/core';\nimport { ActiveComponent } from './button.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\nimport { OverlayStack, OverlayStackItem } from '../app/app';\nimport { unsubscribe } from '../app/reactivate-change-detection';\nimport { WindowComponent } from '../window/window.component';\nimport { injectElementRef } from '../app/utils';\nimport { observePosition, PositionObserverDisconnect } from '../app/position';\n\n/**\n * A dropdown component that can be used to display a list of items or content in a popup.\n *\n * It can be opened and closed programmatically or via user interaction.\n *\n * By monitoring the focused elements, it is possible to add interactive elements inside the dropdown.\n */\n@Component({\n    selector: 'dui-dropdown',\n    template: `\n      <ng-template #dropdownTemplate>\n        <div class=\"dui-body dui-dropdown {{dropdownClass()}}\"\n             [class.dui-normalized]=\"normalizeStyle() || windowComponent?.normalizeStyle()\"\n             tabindex=\"1\" #dropdown>\n          <div class=\"dui-dropdown-content\" [class.overlay-scrollbar-small]=\"scrollbars()\">\n            @if (container(); as container) {\n              <ng-container [ngTemplateOutlet]=\"container\"></ng-container>\n            } @else {\n              <ng-content></ng-content>\n            }\n          </div>\n        </div>\n      </ng-template>\n    `,\n    host: {\n        '[class.overlay]': 'overlay()',\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    styleUrls: ['./dropdown.component.scss'],\n    imports: [NgTemplateOutlet],\n})\nexport class DropdownComponent implements OnChanges, OnDestroy, AfterViewInit {\n    isOpen = signal(false);\n\n    overlayRef?: OverlayRef;\n\n    protected portalViewRef?: EmbeddedViewRef<any>;\n    protected lastFocusWatcher?: ReturnType<typeof focusWatcher>;\n\n    /**\n     * If open() is called without a target, the host element is used as the target.\n     * THe target elements is allowed to have focus without closing the dropdown.\n     */\n    host = input<Element | ElementRef>();\n\n    /**\n     * Additional elements that are allowed to have focus without closing the dropdown.cdk-global-overlay-wrapper\n     */\n    allowedFocus = input<(Element | ElementRef)[] | (Element | ElementRef)>([]);\n\n    normalizeStyle = input(false, { alias: 'normalize-style', transform: booleanAttribute });\n\n    /**\n     * Keeps the dropdown open when it should be closed, ideal for debugging purposes.\n     */\n    keepOpen = input<boolean>();\n\n    height = input<number | string>();\n\n    width = input<number | string>();\n\n    minWidth = input<number | string>();\n\n    minHeight = input<number | string>();\n\n    maxWidth = input<number | string>();\n\n    maxHeight = input<number | string>();\n\n    /**\n     * Whether the dropdown should allow scrollbars.\n     */\n    scrollbars = input<boolean>(true);\n\n    /**\n     * Whether the dropdown aligns to the horizontal center.\n     */\n    center = input<boolean>(false);\n\n    dropdownClass = input('');\n\n    /**\n     * Whether is styled as overlay\n     */\n    overlay = input(false, { transform: booleanAttribute });\n\n    hasBackdrop = input(false, { transform: booleanAttribute });\n\n    show = input<boolean>();\n\n    /**\n     * Additional positions to connect the dropdown to the target element.\n     */\n    connectedPositions = input<ConnectedPosition[]>([]);\n\n    /**\n     * Triggered when the dropdown is opened or closed.\n     */\n    showChange = output<boolean>();\n\n    /**\n     * Triggered when the dropdown is opened.\n     */\n    shown = output();\n\n    /**\n     * Triggered when the dropdown is closed.\n     */\n    hidden = output();\n\n    /**\n     * Triggered when the dropdown loses focus and is about to close.\n     */\n    lostFocus = output<FocusEvent>();\n\n    @ViewChild('dropdownTemplate', {\n        static: false,\n        read: TemplateRef,\n    }) dropdownTemplate?: TemplateRef<any>;\n    @ViewChild('dropdown', { static: false, read: ElementRef }) protected dropdown?: ElementRef<HTMLElement>;\n\n    protected container = signal<TemplateRef<any> | undefined>(undefined);\n\n    protected positionObserver?: PositionObserverDisconnect;\n    protected relativeToInitiator?: HTMLElement;\n\n    protected lastOverlayStackItem?: OverlayStackItem;\n    protected positionStrategy?: PositionStrategy;\n    protected templatePortal?: TemplatePortal;\n    protected openForElement?: Element;\n\n    protected windowComponent = inject(WindowComponent, { optional: true });\n\n    constructor(\n        protected overlayService: Overlay,\n        protected injector: Injector,\n        protected overlayStack: OverlayStack,\n        protected viewContainerRef: ViewContainerRef,\n    ) {\n        effect(() => {\n            const host = this.host();\n            if (this.overlayRef && this.openForElement && this.openForElement !== host) {\n                this.watchOpen(this.overlayRef, host instanceof ElementRef ? host.nativeElement : host);\n            }\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes.show && this.dropdownTemplate) {\n            const show = this.show();\n            if (show === true) this.open();\n            if (show === false) this.close();\n        }\n    }\n\n    ngAfterViewInit() {\n        if (!this.dropdownTemplate) return;\n        this.templatePortal = new TemplatePortal(this.dropdownTemplate, this.viewContainerRef);\n        const show = this.show();\n        if (show === true) this.open();\n        if (show === false) this.close();\n    }\n\n    ngOnDestroy(): void {\n        this.close();\n        this.lastFocusWatcher?.();\n    }\n\n    @HostListener('window:keydown', ['$event'])\n    protected key(event: KeyboardEvent) {\n        if (!this.keepOpen() && this.isOpen() && event.key.toLowerCase() === 'escape' && this.lastOverlayStackItem && this.lastOverlayStackItem.isLast()) {\n            this.close();\n        }\n    }\n\n    /**\n     * Toggles the dropdown open or closed.\n     */\n    toggle(target?: Element | ElementRef | MouseEvent | EventTarget | 'center' | null): boolean {\n        if (this.isOpen()) {\n            this.close();\n            return false;\n        } else {\n            this.open(target);\n            return true;\n        }\n    }\n\n    /**\n     * Sets the container template for the dropdown.\n     */\n    setContainer(container: TemplateRef<any> | undefined) {\n        this.container.set(container);\n    }\n\n    /**\n     * Opens the dropdown at the given target element or mouse position.\n     */\n    open(target?: Element | ElementRef | MouseEvent | EventTarget | 'center' | null, initiator?: HTMLElement | ElementRef | {\n        x: number,\n        y: number,\n        width: number,\n        height: number\n    }) {\n        if (this.isOpen()) return;\n        this.lastFocusWatcher?.();\n        if (this.positionStrategy) {\n            this.positionStrategy.dispose();\n        }\n        if (!this.templatePortal) return;\n\n        if (!target) {\n            target = this.host();\n        }\n\n        target = target instanceof ElementRef ? target.nativeElement : target;\n\n        if (!target) {\n            throw new Error('No target or host specified for dropdown');\n        }\n\n        //this is necessary for multi-window environments, but doesn't work yet.\n        // const document = this.registry.getCurrentViewContainerRef().element.nativeElement.ownerDocument;\n        // const overlayContainer = new OverlayContainer(document);\n        // const overlayContainer = new OverlayContainer(document);\n        // const overlay = new Overlay(\n        //     this.injector.get(ScrollStrategyOptions),\n        //     overlayContainer,\n        //     this.injector.get(ComponentFactoryResolver),\n        //     new OverlayPositionBuilder(this.injector.get(ViewportRuler), document, this.injector.get(Platform), overlayContainer),\n        //     this.injector.get(OverlayKeyboardDispatcher),\n        //     this.injector,\n        //     this.injector.get(NgZone),\n        //     document,\n        //     this.injector.get(Directionality),\n        // );\n\n        if (!this.overlayRef) {\n            this.isOpen.set(true);\n            const options: OverlayConfig = {\n                minWidth: 50,\n                maxWidth: 450,\n                maxHeight: '90%',\n                hasBackdrop: this.hasBackdrop(),\n                scrollStrategy: this.overlayService.scrollStrategies.reposition(),\n            };\n\n            const width = this.width();\n            if (width) options.width = width;\n            const height = this.height();\n            if (height) options.height = height;\n            const minWidth = this.minWidth();\n            if (minWidth) options.minWidth = minWidth;\n            const minHeight = this.minHeight();\n            if (minHeight) options.minHeight = minHeight;\n            const maxWidth = this.maxWidth();\n            if (maxWidth) options.maxWidth = maxWidth;\n            const maxHeight = this.maxHeight();\n            if (maxHeight) options.maxHeight = maxHeight;\n\n            this.overlayRef = this.overlayService.create(options);\n\n            if (this.portalViewRef) this.portalViewRef.destroy();\n            this.portalViewRef = this.overlayRef.attach(this.templatePortal);\n\n            this.overlayRef.updatePosition();\n            this.shown.emit();\n            this.showChange.emit(true);\n            if (!this.overlayRef) {\n                console.log('Dropdown closed in emitting events');\n                return;\n            }\n            // console.log('this.overlayRef', initiator, this.overlayRef.overlayElement);\n            if (initiator) this.setInitiator(initiator);\n            if (this.relativeToInitiator) {\n                const overlayElement = this.overlayRef.overlayElement;\n                const rect = this.getInitiatorRelativeRect();\n                overlayElement.style.transformOrigin = '0 0';\n                overlayElement.style.transform = `translate(${rect.x}px, ${rect.y}px) scale(${rect.width}, ${rect.height})`;\n\n                setTimeout(() => {\n                    overlayElement.style.transition = `transform 0.1s ease-in`;\n                    overlayElement.style.transform = `translate(0, 0) scale(1, 1)`;\n                }, 1);\n            }\n\n            setTimeout(() => {\n                if (this.overlayRef) this.overlayRef.updatePosition();\n            }, 0);\n\n            setTimeout(() => {\n                if (this.overlayRef) this.overlayRef.updatePosition();\n            }, 50);\n\n            if (this.lastOverlayStackItem) this.lastOverlayStackItem.release();\n            this.lastOverlayStackItem = this.overlayStack.register(this.overlayRef.hostElement, this, () => this.close());\n        }\n\n        this.watchOpen(this.overlayRef, target);\n    }\n\n    protected watchOpen(\n        overlayRef: OverlayRef,\n        target: Element | ElementRef | MouseEvent | EventTarget | 'center' | null,\n    ) {\n        if (!overlayRef) {\n            throw new Error('No overlayRef provided to watchOpen');\n        }\n\n        this.lastFocusWatcher?.();\n        if (target instanceof Element) {\n            if (!this.positionObserver) {\n                this.positionObserver = observePosition(target, () => {\n                    overlayRef?.updatePosition();\n                });\n            }\n            this.openForElement = target;\n        }\n\n        const allowedFocusValue = this.allowedFocus();\n        const normalizedAllowedFocus = isArray(allowedFocusValue) ? allowedFocusValue : (allowedFocusValue ? [allowedFocusValue] : []);\n        const allowedFocus = normalizedAllowedFocus.map(v => v instanceof ElementRef ? v.nativeElement : v) as Element[];\n        allowedFocus.push(overlayRef.hostElement);\n\n        if (target instanceof ElementRef) allowedFocus.push(overlayRef.hostElement);\n        if (target instanceof Element) allowedFocus.push(target);\n        if (target instanceof MouseEvent && target.target instanceof Element) allowedFocus.push(target.target);\n\n        if (this.positionStrategy) this.positionStrategy.dispose();\n        this.positionStrategy = this.createPositionStrategy(target);\n        overlayRef.updatePositionStrategy(this.positionStrategy);\n\n        overlayRef.updatePosition();\n        requestAnimationFrame(() => {\n            overlayRef.updatePosition();\n        });\n\n        if (this.show() === undefined) {\n            overlayRef.hostElement.focus();\n            this.lastFocusWatcher = focusWatcher(\n                overlayRef.overlayElement,\n                allowedFocus,\n                (event) => {\n                    if (!this.keepOpen()) {\n                        this.lostFocus.emit(event);\n                        this.close();\n                    }\n                },\n                (element) => {\n                    // If the element is a dialog as well, we don't close\n                    if (!element) return false;\n\n                    if (this.lastOverlayStackItem) {\n                        // When there's an overlay above ours we keep it open\n                        if (!this.lastOverlayStackItem.isLast()) return true;\n                    }\n\n                    return false;\n                });\n        }\n    }\n\n    protected createPositionStrategy(target: Element | ElementRef | MouseEvent | EventTarget | 'center' | null): PositionStrategy {\n        if (target instanceof MouseEvent) {\n            const mousePosition = { x: target.pageX, y: target.pageY };\n            return this.overlayService\n                .position()\n                .flexibleConnectedTo(mousePosition)\n                .withFlexibleDimensions(false)\n                .withViewportMargin(12)\n                .withPush(true)\n                .withDefaultOffsetY(this.overlay() ? 15 : 0)\n                .withPositions([\n                    ...this.connectedPositions(),\n                    {\n                        originX: 'start',\n                        originY: 'bottom',\n                        overlayX: 'start',\n                        overlayY: 'top',\n                    },\n                    {\n                        originX: 'end',\n                        originY: 'bottom',\n                        overlayX: 'end',\n                        overlayY: 'top',\n                    },\n                    {\n                        originX: 'start',\n                        originY: 'top',\n                        overlayX: 'start',\n                        overlayY: 'bottom',\n                    },\n                    {\n                        originX: 'end',\n                        originY: 'top',\n                        overlayX: 'end',\n                        overlayY: 'bottom',\n                    },\n                ]);\n        } else if (target === 'center') {\n            return this.overlayService\n                .position()\n                .global().centerHorizontally().centerVertically();\n        } else {\n            return this.overlayService\n                .position()\n                .flexibleConnectedTo(target as Element)\n                .withFlexibleDimensions(false)\n                .withViewportMargin(12)\n                .withPush(true)\n                .withDefaultOffsetY(this.overlay() ? 15 : 0)\n                .withPositions([\n                    ...this.connectedPositions(),\n                    {\n                        originX: this.center() ? 'center' : 'start',\n                        originY: 'bottom',\n                        overlayX: this.center() ? 'center' : 'start',\n                        overlayY: 'top',\n                    },\n                    {\n                        originX: 'start',\n                        originY: 'bottom',\n                        overlayX: 'start',\n                        overlayY: 'top',\n                    },\n                    {\n                        originX: 'end',\n                        originY: 'bottom',\n                        overlayX: 'end',\n                        overlayY: 'top',\n                    },\n                ]);\n        }\n    }\n\n    setInitiator(initiator?: HTMLElement | ElementRef | { x: number, y: number, width: number, height: number }) {\n        if (!this.overlayRef) return;\n\n        initiator = initiator instanceof ElementRef ? initiator.nativeElement : initiator;\n        initiator = initiator instanceof HTMLElement ? initiator : undefined;\n        this.relativeToInitiator = initiator;\n    }\n\n    protected getInitiatorRelativeRect() {\n        const initiator = this.relativeToInitiator?.getBoundingClientRect();\n        if (!this.overlayRef || !initiator) return { x: 0, y: 0, width: 1, height: 1 };\n        const overlayElement = this.overlayRef.overlayElement;\n        const overlayRect = overlayElement.getBoundingClientRect();\n        return {\n            x: initiator.x - overlayRect.x,\n            y: initiator.y - overlayRect.y,\n            width: initiator.width / overlayRect.width,\n            height: initiator.height / overlayRect.height,\n        };\n    }\n\n    /**\n     * Focuses the dropdown element.\n     */\n    focus() {\n        if (!this.dropdown) return;\n        this.dropdown.nativeElement.focus();\n    }\n\n    /**\n     * Closes the dropdown if it is open.\n     */\n    close() {\n        this.lastFocusWatcher?.();\n        if (!this.isOpen()) return;\n        if (this.lastOverlayStackItem) {\n            this.lastOverlayStackItem.release();\n            this.lastOverlayStackItem = undefined;\n        }\n        if (this.positionObserver) {\n            this.positionObserver();\n            this.positionObserver = undefined;\n        }\n        this.isOpen.set(false);\n        this.openForElement = undefined;\n\n        if (this.relativeToInitiator && this.overlayRef) {\n            const overlayElement = this.overlayRef.overlayElement;\n            const rect = this.getInitiatorRelativeRect();\n            overlayElement.style.transition = `transform 0.1s ease-out`;\n            overlayElement.style.transform = `translate(${rect.x}px, ${rect.y}px) scale(${rect.width}, ${rect.height})`;\n            this.relativeToInitiator = undefined;\n\n            const transitionEnd = () => {\n                this.hidden.emit();\n                this.showChange.emit(false);\n                if (this.overlayRef) {\n                    this.portalViewRef?.detach();\n                    this.portalViewRef?.destroy();\n                    this.overlayRef.detach();\n                    this.overlayRef.dispose();\n                    this.overlayRef = undefined;\n                }\n                if (this.positionStrategy) this.positionStrategy.dispose();\n                overlayElement.removeEventListener('transitionend', transitionEnd);\n            };\n\n            overlayElement.addEventListener('transitionend', transitionEnd, { once: true });\n        } else {\n            this.hidden.emit();\n            this.showChange.emit(false);\n            if (this.overlayRef) {\n                this.portalViewRef?.detach();\n                this.portalViewRef?.destroy();\n                this.overlayRef.detach();\n                this.overlayRef.dispose();\n                this.overlayRef = undefined;\n            }\n            if (this.positionStrategy) this.positionStrategy.dispose();\n        }\n    }\n}\n\n/**\n * A directive to open the given dropdown on regular left click.\n *\n * ```html\n * <dui-dropdown #dropdown>\n * </dui-dropdown>\n * <dui-button [openDropdown]=\"dropdown\">Open dropdown</dui-button>\n * ```\n */\n@Directive({ selector: '[openDropdown]' })\nexport class OpenDropdownDirective implements AfterViewInit, OnDestroy {\n    openDropdown = input<DropdownComponent>();\n\n    openDropdownHover = input(false, { transform: booleanAttribute });\n\n    @unsubscribe()\n    openSub?: OutputRefSubscription;\n\n    @unsubscribe()\n    hiddenSub?: OutputRefSubscription;\n\n    activeComponent = inject(ActiveComponent, { optional: true });\n\n    protected elementRef = injectElementRef();\n\n    ngAfterViewInit() {\n        const openDropdown = this.openDropdown();\n        const button = this.activeComponent;\n        if (button && openDropdown) {\n            this.openSub = openDropdown.shown.subscribe(() => {\n                button.active.set(true);\n            });\n            this.hiddenSub = openDropdown.hidden.subscribe(() => {\n                button.active.set(false);\n            });\n        }\n    }\n\n    ngOnDestroy() {\n    }\n\n    @HostListener('click')\n    protected onClick() {\n        const openDropdown = this.openDropdown();\n        if (!openDropdown) return;\n        openDropdown.toggle(this.elementRef);\n    }\n\n    @HostListener('pointerenter')\n    protected onPointerEnter() {\n        if (!this.openDropdownHover()) return;\n        const openDropdown = this.openDropdown();\n        if (!openDropdown) return;\n        openDropdown.open(this.elementRef);\n    }\n}\n\n/**\n * A directive to open the given dropdown on mouseenter, and closes automatically on mouseleave.\n * Dropdown keeps open when mouse enters the dropdown.\n *\n * ```html\n * <dui-dropdown #dropdown>\n * </dui-dropdown>\n * <dui-button [openDropdownHover]=\"dropdown\">Open on hover</dui-button>\n * ```\n */\n@Directive({ selector: '[openDropdownHover]' })\nexport class OpenDropdownHoverDirective implements OnDestroy {\n    openDropdownHover = input<DropdownComponent>();\n\n    /**\n     * In milliseconds.\n     */\n    openDropdownHoverCloseTimeout = input<number>(80);\n\n    @unsubscribe()\n    protected hiddenSub?: OutputRefSubscription;\n\n    protected lastHide?: ReturnType<typeof setTimeout>;\n\n    protected enter = () => this.onHover();\n    protected leave = () => this.onLeave();\n\n    constructor(\n        protected elementRef: ElementRef,\n    ) {\n    }\n\n    ngOnDestroy() {\n        this.cleanup();\n    }\n\n    protected cleanup() {\n        clearTimeout(this.lastHide);\n        this.lastHide = undefined;\n        this.hiddenSub?.unsubscribe();\n    }\n\n    @HostListener('mouseenter')\n    protected onHover() {\n        this.cleanup();\n\n        const openDropdownHover = this.openDropdownHover();\n        if (openDropdownHover && !openDropdownHover.isOpen()) {\n            openDropdownHover.open(this.elementRef);\n            const overlayRef = openDropdownHover.overlayRef;\n            if (overlayRef) {\n                overlayRef.hostElement.addEventListener('mouseenter', this.enter);\n                overlayRef.hostElement.addEventListener('mouseleave', this.leave);\n                this.hiddenSub = openDropdownHover.hidden.subscribe(() => {\n                    overlayRef.hostElement.removeEventListener('mouseenter', this.enter);\n                    overlayRef.hostElement.removeEventListener('mouseleave', this.leave);\n                });\n            }\n        }\n    }\n\n    @HostListener('mouseleave')\n    protected onLeave() {\n        this.cleanup();\n        this.lastHide = setTimeout(() => {\n            const openDropdownHover = this.openDropdownHover();\n            if (openDropdownHover && this.lastHide) openDropdownHover.close();\n            this.cleanup();\n        }, this.openDropdownHoverCloseTimeout());\n    }\n}\n\n/**\n * A directive to open the given dropdown upon right click / context menu.\n *\n * ```html\n * <dui-dropdown #dropdown>\n * </dui-dropdown>\n *\n * <dui-button [contextDropdown]=\"dropdown\">Open context menu</dui-button>\n * ```\n */\n@Directive({ selector: '[contextDropdown]' })\nexport class ContextDropdownDirective {\n    contextDropdown = input<DropdownComponent>();\n\n    @HostListener('contextmenu', ['$event'])\n    protected onClick($event: MouseEvent) {\n        const contextDropdown = this.contextDropdown();\n        if (contextDropdown && $event.button === 2) {\n            contextDropdown.close();\n            $event.preventDefault();\n            $event.stopPropagation();\n            contextDropdown.open($event);\n        }\n    }\n}\n\n/**\n * A component that acts as a visual separator or splitter inside a dropdown.\n *\n * ```html\n * <dui-dropdown>\n *     <dui-dropdown-item>Item 1</dui-dropdown-item>\n *     <dui-dropdown-separator />\n *     <dui-dropdown-item>Item 2</dui-dropdown-item>\n * </dui-dropdown>\n */\n@Component({\n    selector: 'dui-dropdown-splitter,dui-dropdown-separator',\n    template: `\n      <div></div>\n    `,\n    host: {\n        '[class.dui-normalized]': 'true',\n    },\n    styles: [`\n      :host {\n        display: block;\n        padding: 4px 0;\n        border-radius: 4px;\n      }\n\n      div {\n        border-top: 1px solid var(--dui-line-color-light);\n      }\n    `],\n})\nexport class DropdownSplitterComponent {\n}\n\n/**\n * This directive is necessary if you want to load and render the dialog content\n * only when opening the dialog. Without it, it is immediately rendered, which can cause\n * performance and injection issues.\n *\n * ```typescript\n * <dui-dropdown>\n *     <ng-container *dropdownContainer>\n *         Dynamically created upon dropdown instantiation.\n *     </ng-container>\n * </dui-dropdown>\n *\n * ```\n */\n@Directive({ selector: '[dropdownContainer]' })\nexport class DropdownContainerDirective {\n    constructor(protected dropdown: DropdownComponent, public template: TemplateRef<any>) {\n        this.dropdown.setContainer(this.template);\n    }\n}\n\n/**\n * Interactive item inside a dropdown.\n *\n * ```html\n * <dui-dropdown>\n *     <dui-dropdown-item (click)=\"doSomething()\">Click me</dui-dropdown-item>\n *     <dui-dropdown-item [selected]=\"true\">Selected item</dui-dropdown-item>\n *     <dui-dropdown-item [disabled]=\"true\">Disabled item</dui-dropdown-item>\n * </dui-dropdown>\n * ```\n */\n@Component({\n    selector: 'dui-dropdown-item',\n    template: `\n      @if (selected()) {\n        <dui-icon [size]=\"14\" class=\"selected\" name=\"check\"></dui-icon>\n      } @else if (checkbox()) {\n        <dui-icon [size]=\"14\" class=\"selected\" name=\"\"></dui-icon>\n      }\n      <ng-content></ng-content>\n    `,\n    host: {\n        '[attr.tabindex]': '0',\n        '[class.dui-normalized]': 'true',\n        '[class.selected]': 'selected()',\n        '[class.disabled]': 'disabled()',\n        '[class.checkbox]': 'checkbox()',\n        '[class.active]': 'active()',\n    },\n    styleUrls: ['./dropdown-item.component.scss'],\n    providers: [\n        { provide: ActiveComponent, useExisting: forwardRef(() => DropdownItemComponent) },\n    ],\n    imports: [IconComponent],\n})\nexport class DropdownItemComponent implements ActiveComponent, OnDestroy {\n    selected = input(false);\n    /**\n     * Whether the button is active (pressed)\n     */\n    active = model<boolean>(false);\n    destroy = output();\n\n    disabled = input(false, { transform: booleanAttribute });\n\n    /**\n     * When set to true, the item is optimised to display left-aligned checkboxes next to the text.\n     */\n    checkbox = input(false, { transform: booleanAttribute });\n\n    closeOnClick = input<boolean>(true);\n\n    protected element = injectElementRef();\n    protected dropdown = inject(DropdownComponent, { optional: true });\n\n    activate() {\n        this.element.nativeElement.click();\n    }\n\n    ngOnDestroy() {\n        this.destroy.emit();\n    }\n\n    @HostListener('click')\n    protected onClick() {\n        if (this.closeOnClick()) {\n            this.dropdown?.close();\n        }\n    }\n}\n","import { AfterViewInit, Component, computed, contentChild, Directive, effect, ElementRef, forwardRef, input, OnDestroy, OnInit, output, signal, viewChild } from '@angular/core';\nimport { injectElementRef } from '../app/utils';\nimport { DropdownComponent, DropdownContainerDirective } from '../button/dropdown.component';\n\ntype DuiAdaptivePlaceholder = Comment & { duiElement: DuiAdaptiveElement };\ntype DuiAdaptiveElement = HTMLElement & { duiPlaceholder?: DuiAdaptivePlaceholder };\n\nfunction isAdaptivePlaceholder(node: Node): node is DuiAdaptivePlaceholder {\n    return node instanceof Comment && 'duiElement' in node;\n}\n\n/**\n * The AdaptiveContainerComponent is a flexible container that arranges its child elements\n * in a row or column, depending on the specified direction. It uses flexbox to manage the layout\n * and automatically hides elements that overflow the container's bounds.\n *\n * The container uses flex-wrap: nowrap to detect overflow and hides elements (display: none) that do not fit.\n *\n * Overflowing elements can be moved to a hidden container automatically, which per default is put into a dropdown\n * that can be opened to show the hidden elements.\n *\n * ```html\n * <dui-adaptive-container>\n *     <dui-button>Button 1</dui-button>\n *     <dui-button>Button 2</dui-button>\n *     <dui-button>Button 3</dui-button>\n *     <dui-button>Button 4</dui-button>\n * </dui-adaptive-container>\n * ```\n */\n@Component({\n    selector: 'dui-adaptive-container',\n    host: {\n        ngSkipHydration: 'true',\n        '[class.row]': 'direction() === \"row\"',\n        '[class.column]': 'direction() === \"column\"',\n        '[class.row-reverse]': 'direction() === \"row-reverse\"',\n        '[class.column-reverse]': 'direction() === \"column-reverse\"',\n    },\n    template: `\n      <ng-content></ng-content>\n      @if (!contentDropdownComponent()) {\n        <dui-dropdown class=\"dropdownClass()\" [host]=\"host\">\n          <div class=\"dui-adaptive-container-dropdown-content\" *dropdownContainer duiAdaptiveHiddenContainer></div>\n        </dui-dropdown>\n      }\n    `,\n    styleUrl: './adaptive-container.component.scss',\n    imports: [\n        DropdownComponent,\n        forwardRef(() => AdaptiveHiddenContainer),\n        DropdownContainerDirective,\n    ],\n})\nexport class AdaptiveContainerComponent implements OnInit, AfterViewInit, OnDestroy {\n    protected host = injectElementRef();\n    protected contentDropdownComponent = contentChild(DropdownComponent);\n    protected viewDropdownComponent = viewChild(DropdownComponent);\n\n    dropdown = computed(() => this.viewDropdownComponent() || this.contentDropdownComponent());\n\n    /**\n     * Per default, the dui-adaptive-container will be made adaptive. Pass an Element or ElementRef to\n     * use a different element as the container.\n     */\n    element = input<Element | ElementRef>();\n\n    /**\n     * The class to apply to the dropdown container.\n     */\n    dropdownClass = input('');\n\n    direction = input<'row' | 'column' | 'row-reverse' | 'column-reverse'>('row');\n\n    /**\n     * Triggers for elements that are now hidden.\n     */\n    visibilityChange = output<Element[]>();\n\n    /**\n     * Trigger for elements that were hidden and are now shown again.\n     */\n    showElements = output<Element[]>();\n\n    protected effectiveElement = computed<HTMLElement>(() => {\n        const element = this.element();\n        return element instanceof ElementRef ? element.nativeElement : element || this.host.nativeElement;\n    });\n\n    protected vertical = computed(() => this.direction() === 'column' || this.direction() === 'column-reverse');\n\n    hiddenElements = signal<HTMLElement[]>([]);\n    /**\n     * The elements that are currently hidden, either currently hidden (display: none) or moved to the hidden container.\n     */\n\n    hiddenContainer = signal<HTMLElement | undefined>(undefined);\n\n    registerHiddenContainer(hiddenContainer: HTMLElement) {\n        this.hiddenContainer.set(hiddenContainer);\n        const state = getState(this.effectiveElement());\n        // Move all hidden items to the hidden container\n        for (const node of state.nodes) {\n            if (!isHidden(node, hiddenContainer)) continue;\n            hideElement(node, hiddenContainer);\n        }\n    }\n\n    unregisterHiddenContainer(hiddenContainer: HTMLElement) {\n        if (this.hiddenContainer() === hiddenContainer) {\n            this.hiddenContainer.set(undefined);\n            // Move all items back\n            const visibleContainer = this.effectiveElement();\n            for (let i = hiddenContainer.childNodes.length - 1; i >= 0; i--) {\n                const element = hiddenContainer.childNodes[i];\n                if (element instanceof HTMLElement && 'duiPlaceholder' in element) {\n                    element.style.display = 'none';\n                    visibleContainer.insertBefore(element, element.duiPlaceholder as DuiAdaptivePlaceholder);\n                }\n            }\n        }\n    }\n\n    update() {\n        const visibleContainer = this.effectiveElement();\n        const hiddenContainer = this.hiddenContainer();\n\n        const vertical = this.vertical();\n        const { nodes, fallbacks } = getState(visibleContainer);\n\n        if (isOverflowing(visibleContainer, vertical)) {\n            for (const node of fallbacks) node.style.display = '';\n\n            const nowHidden: HTMLElement[] = [];\n            // Hide one more from the end until no overflow anymore.\n            for (let i = nodes.length - 1; i >= 0; i--) {\n                const node = nodes[i];\n                const element = node instanceof Comment ? node.duiElement : node;\n                if (isHidden(node, hiddenContainer)) {\n                    nowHidden.unshift(element);\n                    continue;\n                }\n                hideElement(node, hiddenContainer);\n                nowHidden.unshift(element);\n\n                if (!isOverflowing(visibleContainer, vertical)) {\n                    // It fits now, so we are done\n                    break;\n                }\n            }\n            this.hiddenElements.set(nowHidden);\n        } else {\n            for (const node of fallbacks) node.style.display = 'none';\n\n            const hiddenNodes = nodes.filter(node => isHidden(node, hiddenContainer));\n            // All visible, so nothing we can do\n            if (!hiddenNodes.length) return;\n            // Check if there is room for more elements\n\n            // 1. Check if all fit without fallbacks\n            for (const node of hiddenNodes) {\n                showElement(node, visibleContainer);\n            }\n\n            if (!isOverflowing(visibleContainer, vertical)) {\n                // Great all fit, keep it like this\n                this.hiddenElements.set([]);\n                return;\n            }\n\n            // Since we have overflow, make sure fallbacks are visible again\n            // and elements are hidden again\n            for (const node of fallbacks) node.style.display = '';\n            for (let i = hiddenNodes.length - 1; i >= 0; i--) {\n                hideElement(hiddenNodes[i], hiddenContainer);\n            }\n\n            // 2. Try to unhide one more until it overflows again\n            let unhidden = 0;\n            for (const node of hiddenNodes) {\n                // Show it\n                showElement(node, visibleContainer);\n\n                if (isOverflowing(visibleContainer, vertical)) {\n                    // It does not fit, so hide it again and stop\n                    hideElement(node, hiddenContainer);\n                    break;\n                }\n                unhidden++;\n            }\n            const nowHidden = hiddenNodes.slice(unhidden).map(v => v instanceof Comment ? v.duiElement : v);\n            this.hiddenElements.set(nowHidden);\n        }\n    }\n\n    protected lastObserver: ResizeObserver | undefined;\n    protected lastMutationObserver: MutationObserver | undefined;\n\n    constructor() {\n        if ('undefined' !== typeof ResizeObserver) {\n            effect(() => {\n                this.lastObserver?.disconnect();\n                this.lastObserver = new ResizeObserver(() => {\n                    this.update();\n                });\n                this.lastObserver.observe(this.effectiveElement());\n            });\n        }\n    }\n\n    ngOnDestroy() {\n        this.lastObserver?.disconnect();\n        this.lastMutationObserver?.disconnect();\n    }\n\n    ngOnInit() {\n        // this.update.update(v => v + 1);\n    }\n\n    ngAfterViewInit() {\n        this.update();\n    }\n}\n\n/**\n * Directive to mark an element as a hidden container for the adaptive container.\n * If defined, adaptive-container uses this element to place hidden elements into it.\n *\n * ```html\n * <dui-adaptive-container>\n *     <dui-button>Button 1</dui-button>\n *     <dui-button>Button 2</dui-button>\n *     <dui-dropdown>\n *       <div *dropdownContainer duiAdaptiveHiddenContainer></ng-container>\n *     </dui-dropdown>\n * </dui-adaptive-container>\n * ```\n */\n@Directive({\n    selector: '[duiAdaptiveHiddenContainer]',\n    standalone: true,\n})\nexport class AdaptiveHiddenContainer implements OnDestroy {\n    constructor(private host: ElementRef, private container: AdaptiveContainerComponent) {\n        container.registerHiddenContainer(host.nativeElement);\n    }\n\n    ngOnDestroy() {\n        this.container.unregisterHiddenContainer(this.host.nativeElement);\n    }\n}\n\nexport function getPadding(rect: DOMRect, direction: 'row' | 'column' | 'row-reverse' | 'column-reverse'): string {\n    switch (direction) {\n        case 'row':\n            return `0 ${rect.width}px 0 0`;\n        case 'column':\n            return `0 0 ${rect.height}px 0`;\n        case 'row-reverse':\n            return `0 0 0 ${rect.width}px`;\n        case 'column-reverse':\n            return `${rect.height}px 0 0 0`;\n    }\n}\n\nfunction isOverflowing(element: HTMLElement, vertical: boolean): boolean {\n    return vertical ? element.scrollHeight > element.clientHeight : element.scrollWidth > element.clientWidth;\n}\n\nfunction isHidden(\n    elementOrPlaceholder: DuiAdaptiveElement | DuiAdaptivePlaceholder,\n    hiddenContainer: HTMLElement | undefined,\n): boolean {\n    const element = elementOrPlaceholder instanceof Comment ? elementOrPlaceholder.duiElement : elementOrPlaceholder;\n    if (element.parentElement === hiddenContainer) return true;\n    return element.style.display === 'none';\n}\n\nfunction hideElement(\n    elementOrPlaceholder: DuiAdaptiveElement | DuiAdaptivePlaceholder,\n    hiddenContainer: HTMLElement | undefined,\n) {\n    const element = elementOrPlaceholder instanceof Comment ? elementOrPlaceholder.duiElement : elementOrPlaceholder;\n    element.style.display = 'none';\n    if (!element.parentElement) return;\n\n    if (!element.duiPlaceholder) {\n        const comment = Object.assign(document.createComment('dui-adaptive-placeholder'), {\n            duiElement: element,\n        }) as DuiAdaptivePlaceholder;\n        element.duiPlaceholder = comment;\n        element.parentElement.insertBefore(comment, element);\n    }\n    if (hiddenContainer && element.parentElement !== hiddenContainer) {\n        hiddenContainer.insertBefore(element, hiddenContainer.firstChild);\n        element.style.display = '';\n    }\n}\n\nfunction showElement(\n    elementOrPlaceholder: DuiAdaptiveElement | DuiAdaptivePlaceholder,\n    visibleContainer: HTMLElement,\n) {\n    const element = elementOrPlaceholder instanceof Comment ? elementOrPlaceholder.duiElement : elementOrPlaceholder;\n    element.style.display = '';\n    if (!element.parentElement) return;\n\n    if (element.duiPlaceholder) {\n        // Move the element back to the visible container, keep the comment for later\n        visibleContainer.insertBefore(element, element.duiPlaceholder);\n    }\n}\n\nfunction getState(visibleContainer: HTMLElement) {\n    const nodes: (DuiAdaptiveElement | DuiAdaptivePlaceholder)[] = [];\n    const fallbacks: HTMLElement[] = [];\n    for (let i = 0; i < visibleContainer.childNodes.length; i++) {\n        const node = visibleContainer.childNodes[i];\n        if (node instanceof HTMLElement) {\n            if (node.classList.contains('dui-adaptive-fallback')) {\n                fallbacks.push(node);\n            } else {\n                nodes.push(node);\n            }\n        } else if (isAdaptivePlaceholder(node)) {\n\n            // Referenced element is already part of visibleContainer, so skip it\n            // so that we don't have it twice.\n            if (node.duiElement.parentElement === visibleContainer) continue;\n\n            // TODO: Check of node.duiElement is still attached to the DOM, if not\n            //  remove the comment as well and ignore it\n            nodes.push(node as DuiAdaptivePlaceholder);\n        }\n    }\n    return { nodes, fallbacks };\n}\n","import { inject, Injectable, PendingTasks } from '@angular/core';\n\n\n@Injectable({ providedIn: 'root' })\nexport class BetterPendingTasks {\n    constructor(private pendingTasks: PendingTasks) {\n    }\n\n    async run<T>(task: () => Promise<T>): Promise<T> {\n        const done = this.pendingTasks.add();\n        try {\n            return await task();\n        } finally {\n            done();\n        }\n    }\n\n    callback<T>(task: () => Promise<T>): () => Promise<T> {\n        return async () => {\n            const done = this.pendingTasks.add();\n            try {\n                return await task();\n            } finally {\n                done();\n            }\n        };\n    }\n\n    patchPrototype<T>(prototype: T, methods: (keyof T)[]) {\n        for (const method of methods) {\n            const original = prototype[method];\n            if (typeof original !== 'function') continue;\n\n            (prototype as any)[method] = (...args: any[]) => {\n                return this.run(() => original.apply(prototype, args));\n            };\n        }\n    }\n}\n\nexport function injectPatchedPendingTasks<T>(prototype: T, methods: (keyof T)[]) {\n    const pendingTasks = inject(BetterPendingTasks);\n    pendingTasks.patchPrototype(prototype, methods);\n}\n\n/**\n * Signals Angular that SSR should wait for this task to complete before rendering.\n */\nexport function pendingTask<T>(task: () => Promise<T>): () => Promise<T> {\n    const pendingTasks = inject(BetterPendingTasks);\n    return pendingTasks.callback(task);\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { Directive, HostListener, input, OnInit } from '@angular/core';\nimport { nextTick } from '@deepkit/core';\nimport { injectElementRef } from './utils';\n\n@Directive({\n    selector: '[duiClassMin]',\n})\nexport class DuiResponsiveDirective implements OnInit {\n    clazz: { [className: string]: boolean } = {};\n    protected lastRequest: any;\n\n    duiClassMin = input<{\n        [className: string]: number;\n    }>({});\n\n    element = injectElementRef();\n\n    ngOnInit() {\n        this.onResize();\n    }\n\n    @HostListener('window:resize')\n    onResize() {\n        if (this.lastRequest) {\n            cancelAnimationFrame(this.lastRequest);\n        }\n\n        this.lastRequest = nextTick(() => {\n            const element: HTMLElement = this.element.nativeElement;\n            for (const [name, number] of Object.entries(this.duiClassMin())) {\n                const valid = element.offsetWidth > number;\n                if (this.clazz[name] !== valid) {\n                    this.clazz[name] = valid;\n                    if (valid) {\n                        element.classList.add(name);\n                    } else {\n                        element.classList.remove(name);\n                    }\n                }\n            }\n        });\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { booleanAttribute, Component, contentChildren, Directive, effect, EmbeddedViewRef, forwardRef, inject, input, OnDestroy, output, Renderer2, signal, TemplateRef, viewChild, ViewContainerRef } from '@angular/core';\nimport { WindowMenuState } from '../window/window-menu';\nimport { Electron } from '../../core/utils';\nimport { injectElementRef, OnDomCreationDirective } from './utils';\nimport { DropdownComponent, DropdownContainerDirective, DropdownItemComponent, DropdownSplitterComponent, OpenDropdownDirective } from '../button/dropdown.component';\nimport { AdaptiveContainerComponent, AdaptiveHiddenContainer } from '../adaptive-container/adaptive-container.component';\nimport { ConnectedPosition } from '@angular/cdk/overlay';\nimport { OverlayStack } from './app';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { ActiveComponent, ButtonHotkeyComponent, HotkeyRegistry } from '../button/button.component';\nimport { IconComponent } from '../icon/icon.component';\nimport type { BuiltTemplateItem } from './menu-electron';\n\n@Directive()\nexport abstract class MenuBase implements ActiveComponent, OnDestroy {\n    destroy = output();\n    label = input<string>();\n    sublabel = input<string>();\n    icon = input<string>();\n    disabled = input<boolean>(false);\n    accelerator = input<string>();\n    role = input<string>();\n    hotkey = input<string>('');\n\n    visible = input<boolean>(true);\n\n    onlyMacOs = input(false, { transform: booleanAttribute });\n    noMacOs = input(false, { transform: booleanAttribute });\n\n    id = input<string>();\n    before = input<string>();\n    after = input<string>();\n    beforeGroupContaining = input<string>();\n    afterGroupContaining = input<string>();\n    template = viewChild('template', { read: TemplateRef<MenuBase> });\n\n    registeredHotkey = signal('');\n    click = output();\n\n    checkboxStyle = false;\n\n    public type = '';\n    level = signal(0);\n\n    children = contentChildren(MenuBase, { descendants: false });\n\n    active = signal(false);\n\n    ngOnDestroy() {\n        this.destroy.emit();\n    }\n\n    buildTemplate(item: BuiltTemplateItem) {\n\n    }\n\n    activate() {\n        this.click.emit();\n    }\n\n    constructor() {\n        effect(() => {\n            for (const child of this.children()) {\n                child.level.set(this.level() + 1);\n            }\n        });\n    }\n\n    public validOs(): boolean {\n        if (Electron.isAvailable()) {\n            if (this.onlyMacOs() && Electron.getProcess().platform !== 'darwin') {\n                return false;\n            }\n\n            if (this.noMacOs() && Electron.getProcess().platform === 'darwin') {\n                return false;\n            }\n        }\n\n        return true;\n    }\n}\n\n@Component({\n    selector: 'dui-menu-item',\n    providers: [{ provide: MenuBase, useExisting: forwardRef(() => MenuItemComponent) }],\n    template: `\n      <ng-template #template>\n        <ng-content />\n      </ng-template>\n    `,\n    styles: `\n      :host {\n        display: none;\n      }\n    `,\n})\nexport class MenuItemComponent extends MenuBase {\n    type = 'input';\n}\n\n@Component({\n    selector: 'dui-menu-div',\n    providers: [{ provide: MenuBase, useExisting: forwardRef(() => MenuDivComponent) }],\n    template: `\n      <ng-template #template>\n        <ng-content />\n      </ng-template>\n    `,\n    styles: `\n      :host {\n        display: none;\n      }\n    `,\n})\nexport class MenuDivComponent extends MenuBase {\n    type = 'div';\n}\n\n@Directive({\n    selector: 'dui-menu-checkbox',\n    providers: [{ provide: MenuBase, useExisting: forwardRef(() => MenuCheckboxDirective) }],\n})\nexport class MenuCheckboxDirective extends MenuBase {\n    checked = input<boolean>(false);\n\n    type = 'checkbox';\n\n    buildTemplate(item: BuiltTemplateItem) {\n        item.checked = this.checked();\n    }\n}\n\n@Directive({\n    selector: 'dui-menu-radio',\n    providers: [{ provide: MenuBase, useExisting: forwardRef(() => MenuRadioComponent) }],\n})\nexport class MenuRadioComponent extends MenuBase {\n    checked = input<boolean>(false);\n\n    type = 'radio';\n\n    buildTemplate(item: BuiltTemplateItem) {\n        item.checked = this.checked();\n    }\n}\n\n@Directive({\n    selector: 'dui-menu-separator',\n    providers: [{ provide: MenuBase, useExisting: forwardRef(() => MenuSeparatorComponent) }],\n})\nexport class MenuSeparatorComponent extends MenuBase {\n    type = 'separator';\n}\n\n@Directive({\n    selector: '[duiMenuRender]',\n})\nexport class MenuRenderDirective implements OnDestroy {\n    duiMenuRender = input.required<readonly MenuBase[]>();\n    template = input.required<TemplateRef<{ $implicit: MenuBase }>>();\n\n    rootAsButton = input(false, { transform: booleanAttribute });\n\n    protected elementRef = injectElementRef();\n    protected viewContainerRef = inject(ViewContainerRef);\n    protected createdViews: EmbeddedViewRef<any>[] = [];\n    protected renderer = inject(Renderer2);\n\n    constructor() {\n        effect(() => {\n            const items = this.duiMenuRender();\n            for (const comp of this.createdViews) {\n                comp.destroy();\n            }\n            this.createdViews = [];\n\n            const needsCheckboxStyle = items.some(item => item.visible() && item instanceof MenuCheckboxDirective || item instanceof MenuRadioComponent);\n\n            for (const item of items) {\n                if (!item.visible()) continue;\n                item.checkboxStyle = needsCheckboxStyle;\n\n                const view = this.viewContainerRef.createEmbeddedView(this.template(), { $implicit: item });\n                this.createdViews.push(view);\n            }\n        });\n    }\n\n    ngOnDestroy() {\n        for (const comp of this.createdViews) {\n            comp.destroy();\n        }\n        this.createdViews = [];\n    }\n}\n\nexport interface TemplateContext {\n    $implicit: MenuBase;\n}\n\n@Directive({\n    selector: '[menuItemTemplate]',\n})\nexport class MenuItemTemplate {\n    static ngTemplateContextGuard(directive: unknown, context: unknown): context is TemplateContext {\n        return true;\n    }\n}\n\n@Component({\n    selector: 'dui-menu',\n    host: {\n        'ngSkipHydration': 'true',\n    },\n    template: `\n      <ng-template #template2 menuItemTemplate let-item>\n        @if (item.type === 'separator') {\n          <dui-dropdown-separator />\n        } @else if (item.type === 'radio') {\n        } @else if (item.type === 'spacer') {\n          @if (item.template(); as itemTemplate) {\n            <div *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></div>\n          }\n        } @else {\n          @if (item.children().length) {\n            <dui-dropdown #dropdown\n                          (shown)=\"dropdownShown(dropdown, item.level())\"\n                          (hidden)=\"dropdownHidden(dropdown, item.level())\"\n                          (lostFocus)=\"lostFocus($event)\"\n                          [connectedPositions]=\"item.level() === 0 ? dropdownPositionsRoot : dropdownPositions\">\n              <ng-container *dropdownContainer [duiMenuRender]=\"item.children()\" [template]=\"template2\" />\n            </dui-dropdown>\n            <dui-dropdown-item [class.first-level]=\"item.level() === 0\"\n                               [active]=\"item.active()\"\n                               [checkbox]=\"item.checkboxStyle\"\n                               [disabled]=\"item.disabled()\"\n                               (onDomCreation)=\"registerDropdownItem($event, item)\"\n                               [openDropdown]=\"dropdown\" [openDropdownHover]=\"active()\">\n              @if (!item.label() && item.template(); as itemTemplate) {\n                <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n              } @else {\n                <span class=\"label\">{{ item.label() }}</span>\n              }\n              @if (item.hotkey(); as hotkey) {\n                <dui-button-hotkey [hotkey]=\"hotkey\"></dui-button-hotkey>\n              }\n              @if (item.level() > 0) {\n                <span class=\"space\"></span>\n                <dui-icon class=\"more\" name=\"arrow_right\" />\n              }\n            </dui-dropdown-item>\n          } @else {\n            <dui-dropdown-item [class.first-level]=\"item.level() === 1\" (click)=\"activate(item)\"\n                               [active]=\"item.active()\"\n                               [checkbox]=\"item.checkboxStyle\"\n                               [selected]=\"selected(item)\"\n                               [disabled]=\"item.disabled()\"\n                               (onDomCreation)=\"registerDropdownItem($event, item)\"\n                               (pointerenter)=\"hideSiblingsAndAbove(item)\">\n              @if (!item.label() && item.template(); as itemTemplate) {\n                <ng-container *ngTemplateOutlet=\"itemTemplate; context: {$implicit: item}\"></ng-container>\n              } @else {\n                <span class=\"label\">{{ item.label() }}</span>\n              }\n              @if (item.hotkey(); as hotkey) {\n                <span class=\"space\"></span>\n                <dui-button-hotkey [hotkey]=\"hotkey\"></dui-button-hotkey>\n              }\n            </dui-dropdown-item>\n          }\n        }\n      </ng-template>\n\n      <dui-adaptive-container #adaptiveContainer>\n        <ng-container [duiMenuRender]=\"children()\" [template]=\"template2\"></ng-container>\n        <dui-dropdown-item class=\"first-level dui-adaptive-fallback\"\n                           [openDropdown]=\"adaptiveContainer.dropdown()\" [openDropdownHover]=\"active()\">\n          {{ moreLabel() }}\n        </dui-dropdown-item>\n        <dui-dropdown #moreDropdown (shown)=\"dropdownShown(moreDropdown, 0)\"\n                      (hidden)=\"dropdownHidden(moreDropdown, 0)\"\n                      (lostFocus)=\"lostFocus($event)\">\n          <div class=\"dui-dropdown-content\" *dropdownContainer duiAdaptiveHiddenContainer></div>\n        </dui-dropdown>\n      </dui-adaptive-container>\n    `,\n    styles: `\n      dui-button-hotkey {\n        justify-self: flex-end;\n        margin-left: auto;\n      }\n\n      .space {\n        width: 8px;\n      }\n\n      dui-icon.more {\n        justify-self: flex-end;\n        margin-left: auto;\n        margin-right: -4px;\n      }\n\n      dui-dropdown-item {\n        flex: 0 0 auto;\n      }\n    `,\n    imports: [\n        forwardRef(() => AdaptiveContainerComponent),\n        forwardRef(() => AdaptiveHiddenContainer),\n        forwardRef(() => DropdownItemComponent),\n        MenuRenderDirective,\n        MenuItemTemplate,\n        DropdownComponent,\n        DropdownContainerDirective,\n        OpenDropdownDirective,\n        DropdownSplitterComponent,\n        NgTemplateOutlet,\n        ButtonHotkeyComponent,\n        IconComponent,\n        OnDomCreationDirective,\n    ],\n})\nexport class MenuComponent implements OnDestroy {\n    /**\n     * If true, this menu is used for the application menu bar (only works in Electron).\n     */\n    forApp = input(false, { transform: booleanAttribute });\n\n    moreLabel = input('More');\n\n    children = contentChildren(MenuBase, { descendants: false });\n    adaptiveContainer = viewChild.required(AdaptiveContainerComponent);\n\n    dropdownPositionsRoot: ConnectedPosition[] = [\n        { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n    ];\n\n    dropdownPositions: ConnectedPosition[] = [\n        { originX: 'end', originY: 'top', overlayX: 'start', overlayY: 'top' },\n        { originX: 'start', originY: 'top', overlayX: 'end', overlayY: 'top' },\n    ];\n\n    protected overlayStack = inject(OverlayStack);\n    protected windowMenuState = inject(WindowMenuState, { optional: true });\n    protected dropdowns = new Map<number, DropdownComponent>();\n    protected hotkeyRegistry = inject(HotkeyRegistry);\n    protected active = signal(false);\n\n    protected dropdownItemsMap = new WeakMap<Element, MenuBase>();\n\n    registerDropdownItem(item: Element, menu: MenuBase) {\n        this.dropdownItemsMap.set(item, menu);\n    }\n\n    selected(item: MenuBase): boolean {\n        if (item instanceof MenuCheckboxDirective) return item.checked();\n        if (item instanceof MenuRadioComponent) return item.checked();\n        return false;\n    }\n\n    constructor() {\n        this.windowMenuState?.addMenu(this);\n        effect(() => {\n            registerHotkey(this.hotkeyRegistry, this.children());\n        });\n\n        function increaseLevelBy(item: MenuBase, increase: number) {\n            item.level.set(item.level() + increase);\n            for (const child of item.children()) {\n                increaseLevelBy(child, increase);\n            }\n        }\n\n        effect(() => {\n            const hidden = this.adaptiveContainer().hiddenElements();\n            for (const item of this.children()) {\n                item.level.set(0);\n            }\n            for (const element of hidden) {\n                const item = this.dropdownItemsMap.get(element);\n                if (!item) continue;\n                item.level.set(1);\n            }\n        });\n    }\n\n    activate(item: MenuBase) {\n        item.activate();\n        this.close();\n    }\n\n    close() {\n        // Close all\n        for (const dropdown of this.dropdowns.values()) {\n            dropdown.close();\n        }\n        this.dropdowns.clear();\n        this.active.set(false);\n    }\n\n    lostFocus(event: FocusEvent) {\n        event.view?.addEventListener('click', e => (e.preventDefault(), e.stopImmediatePropagation()), { once: true, capture: true });\n        this.close();\n    }\n\n    protected hideSiblingsAndAbove(item: MenuBase) {\n        const level = item.level();\n        for (const [otherLevel, otherDropdown] of this.dropdowns.entries()) {\n            if (otherLevel >= level) {\n                otherDropdown.close();\n                this.dropdowns.delete(otherLevel);\n            }\n        }\n        this.active.set(this.dropdowns.size > 0);\n    }\n\n    dropdownHidden(dropdown: DropdownComponent, level: number) {\n        const otherDropdown = this.dropdowns.get(level);\n        if (otherDropdown === dropdown) {\n            this.dropdowns.delete(level);\n        }\n        this.active.set(this.dropdowns.size > 0);\n    }\n\n    dropdownShown(dropdown: DropdownComponent, level: number) {\n        // Close all other dropdowns with greater or same level\n        for (const [otherLevel, otherDropdown] of this.dropdowns.entries()) {\n            if (otherLevel >= level && otherDropdown !== dropdown) {\n                otherDropdown.close();\n                this.dropdowns.delete(otherLevel);\n            }\n        }\n        this.dropdowns.set(level, dropdown);\n        this.active.set(this.dropdowns.size > 0);\n    }\n\n    ngOnDestroy() {\n        this.windowMenuState?.removeMenu(this);\n    }\n}\n\nfunction registerHotkey(registry: HotkeyRegistry, items: readonly MenuBase[]): void {\n    for (const item of items) {\n        if (item.hotkey()) {\n            registry.register(item.hotkey(), item);\n        }\n        registerHotkey(registry, item.children());\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { ChangeDetectorRef, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Observable, Subscription } from 'rxjs';\nimport { DomSanitizer, SafeUrl } from '@angular/platform-browser';\nimport { humanBytes } from '@deepkit/core';\n\n/**\n * Almost the same as |async pipe, but renders directly (detectChanges() instead of marking it only(markForCheck())\n * on ChangeDetectorRef.\n *\n * @deprecated Do not use this pipe anymore, it is not necessary. Use the async pipe instead.\n */\n@Pipe({ name: 'asyncRender', pure: false })\nexport class AsyncRenderPipe implements OnDestroy, PipeTransform {\n    protected subscription?: Subscription;\n    protected lastValue?: any;\n    protected lastReturnedValue?: any;\n\n    constructor(\n        protected cd: ChangeDetectorRef) {\n    }\n\n    ngOnDestroy(): void {\n        if (this.subscription) this.subscription.unsubscribe();\n    }\n\n    transform<T>(value?: Observable<T> | Promise<T>): T | undefined {\n        if (this.lastValue !== value) {\n            if (this.subscription) this.subscription.unsubscribe();\n            this.lastReturnedValue = undefined;\n            this.lastValue = value;\n\n            if (value instanceof Promise) {\n                value.then((v) => {\n                    this.lastReturnedValue = v;\n                    this.cd.detectChanges();\n                });\n            } else if (value) {\n                this.subscription = value.subscribe((next) => {\n                    this.lastReturnedValue = next;\n                    this.cd.detectChanges();\n                });\n            }\n        }\n\n        return this.lastReturnedValue;\n    }\n}\n\n@Pipe({ name: 'objectURL' })\nexport class ObjectURLPipe implements PipeTransform, OnDestroy {\n    protected lastUrl?: string;\n\n    constructor(private sanitizer: DomSanitizer) {\n    }\n\n    ngOnDestroy(): void {\n        if (this.lastUrl) URL.revokeObjectURL(this.lastUrl);\n    }\n\n    transform(buffer?: ArrayBuffer | ArrayBufferView, mimeType?: string): SafeUrl | undefined {\n        if (buffer) {\n            if (this.lastUrl) URL.revokeObjectURL(this.lastUrl);\n            this.lastUrl = URL.createObjectURL(new Blob([buffer], { type: mimeType }));\n            return this.sanitizer.bypassSecurityTrustResourceUrl(this.lastUrl);\n        }\n    }\n}\n\n@Pipe({ name: 'fileSize' })\nexport class HumanFileSizePipe implements PipeTransform {\n    transform(bytes: number, si: boolean = false): string {\n        return humanBytes(bytes, si);\n    }\n}\n","import {\n    deserialize,\n    Excluded,\n    ReflectionClass,\n    ReflectionKind,\n    resolveTypeMembers,\n    serialize,\n    Serializer,\n    Type,\n    typeAnnotation,\n    TypeClass,\n} from '@deepkit/type';\nimport {\n    ClassType,\n    getClassTypeFromInstance,\n    getPathValue,\n    setPathValue,\n    throttleTime,\n    TypeAnnotation,\n} from '@deepkit/core';\nimport { EventToken } from '@deepkit/event';\nimport { ApplicationRef, Injector } from '@angular/core';\nimport { NavigationEnd, ResolveEnd, Router } from '@angular/router';\nimport onChange from 'on-change';\n\n/**\n * If this type decorator is used then the property is not persisted in localStorage,\n * but in the URL instead and recovered from the URL when reloaded.\n *\n * @example\n * ```typescript\n * class State extends EfficientState {\n *    shop: number & PartOfUrl = 0;\n * }\n * ```\n */\nexport type PartOfUrl = TypeAnnotation<'partOfUrl'>;\n\nexport type FilterActions<T> = { [name in keyof T]: T[name] extends (a: infer A extends [...a: any[]], ...args: any[]) => infer R ? (...args: A) => R : never };\n\n/**\n * EfficientState is a base class for all states that are used in the frontend.\n *\n * @example\n * ```typescript\n * //state that won't be persisted is used as `VolatileState & Excluded`\n * class VolatileState {\n *     shops: Shop[] = [];\n *\n *     user?: User;\n * }\n *\n * export class State extends EfficientState {\n *     shop: number & PartOfUrl = 0;\n *     sidebarVisible: boolean = true;\n *     searchQuery: string = '';\n *\n *     volatile: VolatileState & Excluded = new VolatileState();\n *\n *     //normal methods are supported\n *     getShop(): Shop | undefined {\n *         return this.volatile.getShop(this.shop);\n *     }\n *\n *     //actions have access to Angular's DI container\n *     async authenticated([user]: [FrontendUser], client: ControllerClient) {\n *         this.volatile.shops = await client.shop.getShops();\n *         this.volatile.user = user;\n *     }\n * }\n * ```\n */\nexport class EfficientState {\n    call: FilterActions<this> & Excluded;\n\n    constructor(injector?: Injector) {\n        this.call = {} as any;\n        if (!injector) return;\n        const app = injector.get(ApplicationRef);\n\n        for (const method of ReflectionClass.from(this.constructor as any).getMethods()) {\n            if (method.name === 'constructor') continue;\n            const params = method.getParameters().slice(1).map(v => v.type).filter(v => v.kind === ReflectionKind.class) as TypeClass[];\n            (this.call as any)[method.name] = (...args: any[]) => {\n                const deps: any = params.map(v => injector.get(v.classType));\n                const res = (this as any)[method.name](args, ...deps);\n                if (res instanceof Promise) {\n                    return res.finally(() => app.tick());\n                }\n                return res;\n            };\n        }\n    }\n}\n\nexport function findPartsOfUrl(stateClass: ClassType) {\n    const paths: string[] = [];\n    const schema = ReflectionClass.from(stateClass);\n    findPartsOfUrlForType(schema.type, paths);\n    return paths;\n}\n\nexport function getQueryObject(state: EfficientState) {\n    const query: any = {};\n    const paths = findPartsOfUrl(getClassTypeFromInstance(state));\n    for (const path of paths) {\n        const value = getPathValue(state, path);\n        if (value !== undefined) query[path] = value;\n    }\n    return query;\n}\n\nexport function findPartsOfUrlForType(type: Type, paths: string[] = [], prefix: string = '', state: any[] = []) {\n    if (state.includes(type)) return;\n    state.push(type);\n    if (type.kind === ReflectionKind.class || type.kind === ReflectionKind.objectLiteral) {\n        for (const property of resolveTypeMembers(type)) {\n            if (property.kind !== ReflectionKind.property && property.kind !== ReflectionKind.propertySignature) continue;\n            if (property.type.kind === ReflectionKind.class || property.type.kind === ReflectionKind.objectLiteral) {\n                findPartsOfUrlForType(property.type, paths, (prefix ? prefix + '.' : '') + String(property.name), state);\n            } else {\n                const meta = typeAnnotation.getType(property.type, 'partOfUrl');\n                if (meta) {\n                    paths.push((prefix ? prefix + '.' : '') + String(property.name));\n                }\n            }\n        }\n    }\n}\n\nconst stateSerializer: Serializer = new class extends Serializer {\n    protected registerSerializers() {\n        super.registerSerializers();\n\n        this.serializeRegistry.registerClass(EventToken, (type, state) => {\n            state.template = ''; //don't serialize EventToken\n        });\n\n        this.deserializeRegistry.registerClass(EventToken, (type, state) => {\n            state.template = ''; //don't serialize EventToken\n        });\n    }\n};\n\n/**\n * Angular provider factory for the state class.\n *\n * @example\n * ```typescript\n *\n * @Injectable()\n * export class State extends EfficientState {\n *    //events\n *    fileAdded = new EventToken('file.added');\n *\n *    //persisted state\n *    shop: number = 0;\n *    sidebarVisible: boolean = true;\n * }\n *\n * @NgModule({\n *     providers: [\n *         provideState(State),\n *     ]\n * })\n * class AppModule {}\n * ```\n */\nexport function provideState(stateClass: ClassType, localStorageKey: string = 'appState') {\n    const stateType = ReflectionClass.from(stateClass).type;\n\n    return {\n        provide: stateClass, deps: [Router, Injector], useFactory: (router: Router, injector: Injector) => {\n            let state = new stateClass(injector);\n            try {\n                const nextState: any = deserialize(JSON.parse(localStorage.getItem(localStorageKey) || ''), undefined, stateSerializer, undefined, stateType);\n                if (nextState) {\n                    delete nextState.call;\n                    Object.assign(state, nextState);\n                }\n            } catch (error) {\n            }\n\n            function loadFromRoute(query: object) {\n                // console.log('loadFromRoute', query);\n                for (const [path, value] of Object.entries(query)) {\n                    setPathValue(state, path, value);\n                }\n            }\n\n            function updateQueries() {\n                const queryParams = getQueryObject(state);\n                const current = router.routerState.snapshot.root.queryParams;\n                //check if different\n                let different = false;\n                for (const [key, value] of Object.entries(queryParams)) {\n                    if (current[key] !== value) {\n                        different = true;\n                        break;\n                    }\n                }\n                if (different) {\n                    router.navigate([], { queryParams: queryParams, queryParamsHandling: 'merge', replaceUrl: true });\n                }\n            }\n\n            const updateStorage = throttleTime(() => {\n                localStorage.setItem(localStorageKey, JSON.stringify(serialize(state, undefined, stateSerializer, undefined, stateType)));\n                updateQueries();\n            });\n\n            router.events.subscribe((event) => {\n                // console.log('event', event);\n                if (event instanceof ResolveEnd) {\n                    loadFromRoute(event.state.root.queryParams);\n                }\n                if (event instanceof NavigationEnd) {\n                    updateQueries();\n                }\n            });\n\n            return onChange(state, (path: any, value: any, previousValue: any) => {\n                // console.log('State changed', path, value, previousValue);\n                if (value === previousValue) return;\n                updateStorage();\n            }, {\n                ignoreKeys: ['call', 'volatile']\n            });\n        }\n    };\n}\n","import { booleanAttribute, Component, effect, inject, input, ViewEncapsulation } from '@angular/core';\nimport { DuiApp } from './app';\nimport { DOCUMENT } from '@angular/common';\n\n@Component({\n    selector: 'dui-style',\n    template: '',\n    styleUrl: '../../scss/dui.css',\n    encapsulation: ViewEncapsulation.None,\n})\nexport class DuiStyleComponent {\n    // required to call DuiApp.start\n    duiApp = inject(DuiApp);\n    document = inject(DOCUMENT, { optional: true });\n\n    /**\n     * If true, the body applies the 'dui-normalized' class to normalize all elements.\n     */\n    normalizeStyle = input(false, { alias: 'normalize-style', transform: booleanAttribute });\n\n    constructor() {\n        effect(() => {\n            const document = this.document;\n            if (!document) return;\n            if (this.normalizeStyle()) {\n                document.body.classList.add('dui-normalized');\n            } else {\n                document.body.classList.remove('dui-normalized');\n            }\n        });\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { booleanAttribute, Component, HostListener, inject, input } from '@angular/core';\nimport { ngValueAccessor, ValueAccessorBase } from '../../core/form';\nimport { RouterLinkActive } from '@angular/router';\n\n@Component({\n    selector: 'dui-tab-button',\n    template: `\n      <ng-content></ng-content>\n    `,\n    host: {\n        '[attr.tabindex]': '1',\n        '[class.active]': 'isActive()',\n    },\n    styleUrls: ['./tab-button.component.scss'],\n    hostDirectives: [\n        { directive: RouterLinkActive, inputs: ['routerLinkActiveOptions'] },\n    ],\n    providers: [ngValueAccessor(TabButtonComponent)],\n})\nexport class TabButtonComponent extends ValueAccessorBase<any> {\n    /**\n     * Whether the button is active (pressed).\n     *\n     * Use alternatively form API, e.g. <dui-tab-button [(ngModel)]=\"chosen\" value=\"overview\"></dui-tab-button>\n     */\n    active = input(false, { transform: booleanAttribute });\n\n    routerLinkActive = inject(RouterLinkActive);\n\n    @HostListener('click')\n    protected onClick() {\n        const value = this.value();\n        if (value === undefined) return;\n        this.setValue(value);\n    }\n\n    protected isActive() {\n        return this.routerLinkActive.isActive || this.active();\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { ChangeDetectionStrategy, Component, HostBinding, HostListener } from '@angular/core';\nimport { ngValueAccessor, ValueAccessorBase } from '../../core/form';\nimport { IconComponent } from '../icon/icon.component';\n\n/**\n * Checkbox component to toggle boolean values.\n *\n * ```html\n * <dui-checkbox [(ngModel)]=\"myValue\">Check me!</dui-checkbox>\n * ```\n */\n@Component({\n    selector: 'dui-checkbox',\n    template: `\n      <span class=\"box\">\n        <dui-icon [size]=\"12\" name=\"check\"></dui-icon>\n      </span>\n      <ng-content></ng-content>\n    `,\n    styleUrls: ['./checkbox.component.scss'],\n    providers: [ngValueAccessor(CheckboxComponent)],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [IconComponent],\n    host: {\n        '[class.dui-normalized]': 'true',\n    },\n})\nexport class CheckboxComponent extends ValueAccessorBase<boolean> {\n    @HostBinding('tabindex')\n    protected get tabIndex() {\n        return 1;\n    }\n\n    @HostBinding('class.checked')\n    protected get isChecked() {\n        return true === this.value();\n    }\n\n    @HostListener('click')\n    protected onClick() {\n        if (this.isDisabled) return;\n\n        this.setValue(!this.value());\n        this.touch();\n    }\n\n    constructor() {\n        super();\n        this.value.set(false);\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { AfterViewInit, ComponentRef, Directive, input, OnDestroy, ViewContainerRef } from '@angular/core';\n\n@Directive({ selector: '[renderComponent]' })\nexport class RenderComponentDirective implements AfterViewInit, OnDestroy {\n    renderComponent = input<any>();\n    renderComponentInputs = input<{\n        [name: string]: any;\n    }>({});\n\n    public component?: ComponentRef<any>;\n\n    constructor(\n        protected viewContainerRef: ViewContainerRef,\n    ) {\n    }\n\n    ngAfterViewInit(): void {\n        this.component = this.viewContainerRef.createComponent(this.renderComponent());\n\n        for (const [i, v] of Object.entries(this.renderComponentInputs())) {\n            this.component.setInput(i, v);\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (this.component) {\n            this.component.destroy();\n        }\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport {\n    AfterViewInit,\n    ApplicationRef,\n    booleanAttribute,\n    Component,\n    ComponentRef,\n    Directive,\n    ElementRef,\n    EventEmitter,\n    HostListener,\n    inject,\n    Injector,\n    input,\n    model,\n    OnChanges,\n    OnDestroy,\n    Optional,\n    Output,\n    SimpleChanges,\n    TemplateRef,\n    Type,\n    ViewChild,\n    ViewContainerRef,\n} from '@angular/core';\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { WindowRegistry } from '../window/window-state';\nimport { WindowComponent } from '../window/window.component';\nimport { RenderComponentDirective } from '../core/render-component.directive';\nimport { OverlayStack, OverlayStackItem } from '../app/app';\nimport { Subscription } from 'rxjs';\nimport { ButtonComponent } from '../button/button.component';\nimport { WindowContentComponent } from '../window/window-content.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { unsubscribe } from '../app/reactivate-change-detection';\n\n@Component({\n    template: `\n      <dui-window [dialog]=\"true\" [normalize-style]=\"windowComponent?.normalizeStyle()\">\n        <dui-window-content class=\"{{class()}}\" [class.dui-normalized]=\"normalizeStyle()\">\n          @if (component()) {\n            <ng-container\n              #renderComponentDirective\n              [renderComponent]=\"component()\" [renderComponentInputs]=\"componentInputs()\">\n            </ng-container>\n          }\n\n          @if (content(); as content) {\n            <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n          }\n\n          @if (container(); as container) {\n            <ng-container [ngTemplateOutlet]=\"container\"></ng-container>\n          } @else {\n            <ng-content></ng-content>\n          }\n        </dui-window-content>\n\n        @if (actions(); as actions) {\n          <div class=\"dialog-actions\">\n            <ng-container [ngTemplateOutlet]=\"actions\"></ng-container>\n          </div>\n        }\n      </dui-window>\n    `,\n    host: {\n        '[attr.tabindex]': '1',\n    },\n    styleUrls: ['./dialog-wrapper.component.scss'],\n    imports: [WindowComponent, WindowContentComponent, RenderComponentDirective, NgTemplateOutlet],\n})\nexport class DialogWrapperComponent {\n    component = input<Type<any>>();\n    componentInputs = input<{ [name: string]: any; }>({});\n\n    actions = model<TemplateRef<any> | undefined>(undefined);\n    container = model<TemplateRef<any> | undefined>(undefined);\n    content = model<TemplateRef<any> | undefined>(undefined);\n    class = input<string>('');\n    normalizeStyle = input(false, { alias: 'normalize-style', transform: booleanAttribute });\n\n    @ViewChild(RenderComponentDirective, { static: false }) renderComponentDirective?: RenderComponentDirective;\n\n    windowComponent = inject(WindowComponent, { optional: true });\n\n    setActions(actions: TemplateRef<any> | undefined) {\n        this.actions.set(actions);\n    }\n\n    setDialogContainer(container: TemplateRef<any> | undefined) {\n        this.container.set(container);\n    }\n}\n\n/**\n * A dialog component that can be used to display content in a modal dialog.\n *\n * ```html\n * <dui-dialog #dialog [maxWidth]=\"500\">\n *     Hello World!\n *     <dui-button closeDialog>Abort</dui-button>\n *     <dui-button>OK</dui-button>\n * </dui-dialog>\n * <dui-button openDialog=\"dialog\">Open Dialog</dui-button>\n * ```\n */\n@Component({\n    selector: 'dui-dialog',\n    template: `\n      <ng-template #template>\n        <ng-content></ng-content>\n      </ng-template>`,\n    styles: [`:host {\n        display: none;\n    }`],\n})\nexport class DialogComponent implements AfterViewInit, OnDestroy, OnChanges {\n    title = input<string>('');\n\n    visible = model<boolean>(false);\n\n    class = input<string>('');\n\n    noPadding = input(false, { transform: booleanAttribute });\n\n    minWidth = input<number | string>();\n    minHeight = input<number | string>();\n\n    width = input<number | string>();\n    height = input<number | string>();\n\n    maxWidth = input<number | string>();\n    maxHeight = input<number | string>();\n\n    center = input<boolean>(false);\n\n    backDropCloses = input<boolean>(false);\n\n    normalizeStyle = input(false, { alias: 'normalize-style', transform: booleanAttribute });\n\n    component = input<Type<any>>();\n    componentInputs = input<{\n        [name: string]: any;\n    }>({});\n\n    @Output() closed = new EventEmitter<any>();\n    @Output() open = new EventEmitter<any>();\n\n    @ViewChild('template', { static: true }) template?: TemplateRef<any>;\n\n    actions?: TemplateRef<any> | undefined;\n    container?: TemplateRef<any> | undefined;\n\n    overlayRef?: OverlayRef;\n    wrapperComponentRef?: ComponentRef<DialogWrapperComponent>;\n\n    protected lastOverlayStackItem?: OverlayStackItem;\n\n    constructor(\n        protected applicationRef: ApplicationRef,\n        protected overlayStack: OverlayStack,\n        protected viewContainerRef: ViewContainerRef,\n        protected overlay: Overlay,\n        protected injector: Injector,\n        protected registry: WindowRegistry,\n        @Optional() protected window?: WindowComponent,\n    ) {\n    }\n\n    toPromise(): Promise<any> {\n        return new Promise((resolve) => {\n            this.closed.subscribe((v: any) => {\n                resolve(v);\n            });\n        });\n    }\n\n    setDialogContainer(container: TemplateRef<any> | undefined) {\n        this.container = container;\n        if (this.wrapperComponentRef) {\n            this.wrapperComponentRef.instance.setDialogContainer(container);\n        }\n    }\n\n    setActions(actions: TemplateRef<any> | undefined) {\n        this.actions = actions;\n        if (this.wrapperComponentRef) {\n            this.wrapperComponentRef.instance.setActions(actions);\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (this.visible()) {\n            this.show();\n        } else {\n            this.close(undefined);\n        }\n    }\n\n    show() {\n        if (this.overlayRef) {\n            return;\n        }\n\n        const window = this.window ? this.window.getClosestNonDialogWindow() : this.registry.getOuterActiveWindow();\n        const offsetTop = window && window.header()?.getBottomPosition() || 0;\n\n        // const document = this.registry.getCurrentViewContainerRef().element.nativeElement.ownerDocument;\n\n        //this is necessary for multi-window environments, but doesn't work yet.\n        // const overlayContainer = new OverlayContainer(document);\n        //\n        // const overlay = new Overlay(\n        //     this.injector.get(ScrollStrategyOptions),\n        //     overlayContainer,\n        //     this.injector.get(ComponentFactoryResolver),\n        //     new OverlayPositionBuilder(this.injector.get(ViewportRuler), document, this.injector.get(Platform), overlayContainer),\n        //     this.injector.get(OverlayKeyboardDispatcher),\n        //     this.injector,\n        //     this.injector.get(NgZone),\n        //     document,\n        //     this.injector.get(Directionality),\n        // );\n        const overlay = this.overlay;\n\n        let positionStrategy = overlay\n            .position()\n            .global().centerHorizontally().top(offsetTop + 'px');\n\n        const center = this.center();\n        if (center) {\n            positionStrategy = overlay\n                .position()\n                .global().centerHorizontally().centerVertically();\n        }\n\n        this.overlayRef = overlay.create({\n            width: this.width() || undefined,\n            height: this.height() || undefined,\n            minWidth: this.minWidth() || undefined,\n            minHeight: this.minHeight() || undefined,\n            maxWidth: this.maxWidth() || '90%',\n            maxHeight: this.maxHeight() || '90%',\n            hasBackdrop: true,\n            panelClass: [this.class(), (center ? 'dialog-overlay' : 'dialog-overlay-with-animation'), this.noPadding() ? 'dialog-overlay-no-padding' : ''],\n            scrollStrategy: overlay.scrollStrategies.reposition(),\n            positionStrategy: positionStrategy,\n        });\n\n        if (this.backDropCloses()) {\n            this.overlayRef.backdropClick().subscribe(() => {\n                this.close(undefined);\n            });\n        }\n\n        const injector = Injector.create({\n            parent: this.injector,\n            providers: [\n                { provide: DialogComponent, useValue: this },\n                { provide: WindowComponent, useValue: window },\n            ],\n        });\n\n        this.open.emit();\n        const portal = new ComponentPortal(DialogWrapperComponent, this.viewContainerRef, injector);\n\n        this.wrapperComponentRef = this.overlayRef.attach(portal);\n        this.wrapperComponentRef.setInput('component', this.component());\n        this.wrapperComponentRef.setInput('componentInputs', this.componentInputs());\n        this.wrapperComponentRef.setInput('content', this.template);\n        this.wrapperComponentRef.setInput('class', this.class());\n        this.wrapperComponentRef.setInput('normalize-style', this.normalizeStyle());\n\n        if (this.lastOverlayStackItem) this.lastOverlayStackItem.release();\n        this.lastOverlayStackItem = this.overlayStack.register(this.overlayRef.hostElement, this, () => this.close());\n\n        if (this.actions) {\n            this.wrapperComponentRef.instance.setActions(this.actions);\n        }\n\n        if (this.container) {\n            this.wrapperComponentRef.instance.setDialogContainer(this.container);\n        }\n\n        this.overlayRef.updatePosition();\n\n        this.visible.set(true);\n\n        this.wrapperComponentRef.location.nativeElement.focus();\n    }\n\n    protected beforeUnload() {\n        if (this.lastOverlayStackItem) this.lastOverlayStackItem.release();\n\n        this.wrapperComponentRef?.destroy();\n\n        if (this.overlayRef) {\n            this.overlayRef.detach();\n            this.overlayRef.dispose();\n            this.overlayRef = undefined;\n        }\n    }\n\n    ngAfterViewInit() {\n    }\n\n    close(v?: any) {\n        const open = !!this.overlayRef;\n        this.beforeUnload();\n        this.visible.set(false);\n        if (open) {\n            this.closed.emit(v);\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.beforeUnload();\n    }\n}\n\n/**\n * Directive to lazy load a dialog container.\n *\n * ```html\n * <dui-dialog #dialog>\n *   <ng-container *dialogContainer>\n *     Lazy loaded dialog content.\n *   </ng-container>\n * </dui-dialog>\n */\n@Directive({ selector: '[dialogContainer]' })\nexport class DialogDirective {\n    constructor(protected dialog: DialogComponent, public template: TemplateRef<any>) {\n        this.dialog.setDialogContainer(this.template);\n    }\n}\n\n@Component({\n    selector: 'dui-dialog-actions',\n    template: '<ng-template #template><ng-content></ng-content></ng-template>',\n})\nexport class DialogActionsComponent implements AfterViewInit, OnDestroy {\n    @ViewChild('template', { static: true }) template!: TemplateRef<any>;\n\n    constructor(protected dialog: DialogComponent) {\n    }\n\n    ngAfterViewInit(): void {\n        this.dialog.setActions(this.template);\n    }\n\n    ngOnDestroy(): void {\n        if (this.dialog.actions === this.template) {\n            this.dialog.setActions(undefined);\n        }\n    }\n}\n\n@Component({\n    selector: 'dui-dialog-error',\n    template: '<ng-content></ng-content>',\n    styleUrls: ['./dialog-error.component.scss'],\n})\nexport class DialogErrorComponent {\n}\n\n/**\n * A directive to close the dialog on regular left click.\n * Can be used inside a dialog to close it.\n *\n * ```html\n * <dui-button closeDialog>Close</dui-button>\n * ```\n */\n@Directive({ selector: '[closeDialog]' })\nexport class CloseDialogDirective {\n    closeDialog = input<any>();\n\n    constructor(protected dialog: DialogComponent) {\n    }\n\n    @HostListener('click')\n    protected onClick() {\n        this.dialog.close(this.closeDialog());\n    }\n}\n\n/**\n * A directive to open the given dialog on regular left click.\n *\n * ```html\n * <dui-dialog #myDialog>\n *     Hi there!\n * </dui-dialog>\n * <dui-button openDialog=\"myDialog\">Open Dialog</dui-button>\n * ```\n */\n@Directive({ selector: '[openDialog]' })\nexport class OpenDialogDirective implements AfterViewInit, OnChanges, OnDestroy {\n    openDialog = input<DialogComponent>();\n\n    @unsubscribe()\n    openSub?: Subscription;\n\n    @unsubscribe()\n    hiddenSub?: Subscription;\n\n    constructor(\n        protected elementRef: ElementRef,\n        @Optional() protected button?: ButtonComponent,\n    ) {\n    }\n\n    ngOnDestroy() {\n    }\n\n    ngOnChanges() {\n        this.link();\n    }\n\n    ngAfterViewInit() {\n        this.link();\n    }\n\n    protected link() {\n        const openDialog = this.openDialog();\n        if (this.button && openDialog) {\n            this.openSub = openDialog.open.subscribe(() => {\n                if (this.button) this.button.active.set(true);\n            });\n            this.hiddenSub = openDialog.closed.subscribe(() => {\n                if (this.button) this.button.active.set(false);\n            });\n        }\n    }\n\n    @HostListener('click')\n    protected onClick() {\n        const openDialog = this.openDialog();\n        if (openDialog) openDialog.show();\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { AfterViewInit, booleanAttribute, Component, computed, ElementRef, inject, input, output, viewChild } from '@angular/core';\nimport { ngValueAccessor, ValueAccessorBase } from '../../core/form';\nimport { formatDate } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\nimport { FormsModule } from '@angular/forms';\nimport { DuiDocument } from '../document';\n\nconst dateTimeTypes: string[] = ['time', 'date', 'datetime', 'datetime-local'];\n\n@Component({\n    selector: 'dui-input',\n    template: `\n      @if (icon(); as icon) {\n        <dui-icon class=\"icon\" [size]=\"iconSize()\" [name]=\"icon\"></dui-icon>\n      }\n      @if (type() === 'textarea') {\n        <textarea\n          #input\n          [readOnly]=\"readonly()\"\n          [placeholder]=\"placeholder()\" (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\"\n          (focus)=\"focus.emit($event)\" (blur)=\"blur.emit($event)\"\n          [disabled]=\"isDisabled\"\n          [ngModel]=\"normalizeValue()\" (ngModelChange)=\"setValue($event)\"></textarea>\n      } @else {\n        @if (type() !== 'textarea') {\n          <input\n            #input\n            [name]=\"name()\"\n            [step]=\"step()\"\n            [readOnly]=\"readonly()\"\n            [attr.min]=\"min()\"\n            [attr.max]=\"max()\"\n            [attr.minLength]=\"minLength()\"\n            [attr.maxLength]=\"maxLength()\"\n            [type]=\"type()\"\n            (change)=\"handleFileInput($event)\"\n            [placeholder]=\"placeholder()\"\n            (keyup)=\"onKeyUp($event)\" (keydown)=\"onKeyDown($event)\"\n            (focus)=\"focus.emit($event)\" (blur)=\"blur.emit($event)\"\n            [disabled]=\"isDisabled\"\n            [ngModel]=\"type() === 'file' ? undefined : normalizeValue()\"\n            (ngModelChange)=\"setValue($event)\"\n          />\n        }\n      }\n      @if (clearer() && !disabled()) {\n        <dui-icon class=\"clearer\" name=\"clear\" (click)=\"clear()\"></dui-icon>\n      }\n    `,\n    styleUrls: ['./input.component.scss'],\n    host: {\n        '[class.is-textarea]': 'type() === \"textarea\"',\n        '[class.light-focus]': 'lightFocus()',\n        '[class.focus-outline]': '!lightFocus()',\n        '[class.semi-transparent]': 'semiTransparent()',\n        '[class.no-controls]': 'noControls()',\n        '[class.has-clearer]': 'clearer()',\n        '[class.filled]': 'value()',\n        '[class.round]': 'round()',\n        '[class.textured]': 'textured()',\n        '[class.has-icon]': 'icon()',\n        '[class.focused]': 'isFocused()',\n    },\n    providers: [ngValueAccessor(InputComponent)],\n    imports: [IconComponent, FormsModule],\n})\nexport class InputComponent extends ValueAccessorBase<any> implements AfterViewInit {\n    type = input<string>('text');\n\n    step = input<number>(1);\n\n    placeholder = input<string>('');\n\n    name = input<string>('');\n    icon = input<string>('');\n\n    min = input<number>();\n    max = input<number>();\n    maxLength = input<number>();\n    minLength = input<number>();\n\n    iconSize = input<number>(17);\n\n    /**\n     * Focuses this element once created (AfterViewInit).\n     */\n    autoFocus = input(false, { alias: 'auto-focus', transform: booleanAttribute });\n\n    /**\n     * Uses a more decent focus border.\n     */\n    lightFocus = input(false, { transform: booleanAttribute });\n\n    /**\n     * Disables input controls (like for type=number the arrow buttons)\n     */\n    noControls = input(false, { transform: booleanAttribute });\n\n    /**\n     * Appears a little bit transparent. Perfect for blurry background.\n     */\n    semiTransparent = input(false, { transform: booleanAttribute });\n\n    esc = output<KeyboardEvent>();\n    enter = output<KeyboardEvent>();\n    keydown = output<KeyboardEvent>();\n    keyup = output<KeyboardEvent>();\n    blur = output<FocusEvent>();\n    focus = output<FocusEvent>();\n\n    input = viewChild('input', { read: ElementRef });\n\n    textured = input(false, { transform: booleanAttribute });\n\n    readonly = input(false, { transform: booleanAttribute });\n\n    protected duiDocument = inject(DuiDocument);\n\n    isFocused = computed(() => this.duiDocument.activeElement() === this.input()?.nativeElement);\n\n    round = input(false, { transform: booleanAttribute });\n\n    clearer = input(false, { transform: booleanAttribute });\n\n    protected normalizeValue = computed(() => {\n        if (dateTimeTypes.includes(this.type())) {\n            if (this.value() instanceof Date) {\n                if (this.type() === 'date') return formatDate(this.value(), `yyyy-MM-dd`, navigator.language);\n                return formatDate(this.value(), 'yyyy-MM-ddThh:mm:ss.SSS', navigator.language);\n            } else if ('string' === typeof this.value()) {\n                return formatDate(new Date(this.value()), 'yyyy-MM-ddThh:mm:ss.SSS', navigator.language);\n            }\n        }\n        return this.value();\n    });\n\n\n    constructor() {\n        super();\n        this.value.set('');\n    }\n\n    clear() {\n        this.setValue('');\n    }\n\n    setValue(value: any | undefined) {\n        if (this.type() === 'file' && !value && this.input) {\n            //we need to manually reset the field, since writing to it via ngModel is not supported.\n            const input = this.input();\n            if (input) input.nativeElement.value = '';\n        }\n\n        value = value === undefined || value === null ? '' : value;\n\n        if (this.type() === 'file') return;\n        if (this.type() === 'text') {\n\n        } else if (this.type() === 'number') {\n            if (value && 'number' !== typeof value) {\n                value = parseFloat(value);\n            }\n        } else if (dateTimeTypes.includes(this.type())) {\n            if ('string' === typeof value) {\n                value = new Date(value);\n            }\n        }\n        super.setValue(value);\n    }\n\n    protected onKeyDown(event: KeyboardEvent) {\n        this.touch();\n        this.keydown.emit(event);\n    }\n\n    protected onKeyUp(event: KeyboardEvent) {\n        if (event.key.toLowerCase() === 'enter' && this.type() !== 'textarea') {\n            this.enter.emit(event);\n        }\n\n        if (event.key.toLowerCase() === 'esc' || event.key.toLowerCase() === 'escape') {\n            this.esc.emit(event);\n        }\n\n        this.keyup.emit(event);\n    }\n\n    focusInput() {\n        setTimeout(() => {\n            const input = this.input();\n            if (input) input.nativeElement.focus();\n        });\n    }\n\n    ngAfterViewInit() {\n        if (this.autoFocus() && this.input()) {\n            this.focusInput();\n        }\n    }\n\n    protected async handleFileInput(event: any) {\n        const files = event.target.files;\n        this.touch();\n\n        const readFile = (file: File): Promise<ArrayBuffer | undefined> => {\n            return new Promise((resolve, reject) => {\n                const reader = new FileReader();\n                reader.onload = () => {\n                    if (reader.result) {\n                        if (reader.result instanceof ArrayBuffer) {\n                            resolve(reader.result);\n                        } else {\n                            resolve(undefined);\n                        }\n                    }\n                };\n                reader.onerror = (error) => {\n                    console.log('Error: ', error);\n                    reject();\n                };\n\n                reader.readAsArrayBuffer(file);\n            });\n        };\n\n        if (files) {\n            if (files.length > 1) {\n                const value: any[] = [];\n                for (let i = 0; i < files.length; i++) {\n                    const file = files.item(i);\n                    if (file) {\n                        value.push(await readFile(file));\n                    }\n                }\n                this.setValue(value);\n            } else if (files.length === 1) {\n                this.setValue(await readFile(files.item(0)));\n            }\n        }\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { ApplicationRef, Component, ComponentFactoryResolver, ComponentRef, Directive, ElementRef, Inject, Injectable, Injector, input, model, OnDestroy, Signal, Type, ViewContainerRef } from '@angular/core';\nimport { CloseDialogDirective, DialogActionsComponent, DialogComponent } from './dialog.component';\nimport { isTargetChildOf } from '../../core/utils';\nimport { DOCUMENT } from '@angular/common';\nimport { WindowRegistry } from '../window/window-state';\nimport { Overlay } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ButtonComponent, HotkeyDirective } from '../button/button.component';\nimport { InputComponent } from '../input/input.component';\nimport { FormsModule } from '@angular/forms';\n\n\n@Component({\n    template: `\n      <h3>{{ title() || 'No title' }}</h3>\n      @if (content()) {\n        <div>{{ content() }}</div>\n      }\n\n      <dui-dialog-actions>\n        <dui-button hotkey=\"escape\" [closeDialog]=\"false\">Cancel</dui-button>\n        <dui-button auto-focus [closeDialog]=\"true\">OK</dui-button>\n      </dui-dialog-actions>\n    `,\n    imports: [DialogActionsComponent, ButtonComponent, HotkeyDirective, CloseDialogDirective],\n})\nexport class DuiDialogConfirm {\n    title = input<string>('Confirm');\n    content = input<string>('');\n\n    static dialogDefaults = {\n        maxWidth: '700px',\n    };\n}\n\n@Component({\n    template: `\n      <h3>{{ title() || 'No title' }}</h3>\n      @if (content()) {\n        <div class=\"text-selection\" style=\"white-space: pre-line;\">{{ content() }}</div>\n      }\n\n      <dui-dialog-actions>\n        <dui-button auto-focus hotkey=\"escape\" [closeDialog]=\"true\">OK</dui-button>\n      </dui-dialog-actions>\n    `,\n    imports: [DialogActionsComponent, ButtonComponent, HotkeyDirective, CloseDialogDirective],\n})\nexport class DuiDialogAlert {\n    title = input<string>('Alert');\n    content = input<string>('');\n\n    static dialogDefaults = {\n        maxWidth: '700px',\n    };\n}\n\n@Component({\n    template: `\n      <h3>{{ title() || 'No title' }}</h3>\n      @if (content(); as content) {\n        <div class=\"text-selection\" style=\"white-space: pre-line;\">{{ content }}</div>\n      }\n      <div style=\"padding-top: 5px;\">\n        <dui-input style=\"width: 100%\" (enter)=\"dialog.close(value())\" auto-focus [(ngModel)]=\"value\"></dui-input>\n      </div>\n\n      <dui-dialog-actions>\n        <dui-button hotkey=\"escape\" [closeDialog]=\"false\">Cancel</dui-button>\n        <dui-button [closeDialog]=\"value()\">OK</dui-button>\n      </dui-dialog-actions>\n    `,\n    imports: [InputComponent, FormsModule, DialogActionsComponent, ButtonComponent, HotkeyDirective, CloseDialogDirective],\n})\nexport class DuiDialogPrompt {\n    title = input<string>('Alert');\n    content = input<string>('');\n\n    value = model<string>('');\n\n    static dialogDefaults = {\n        maxWidth: '700px',\n    };\n\n    constructor(public dialog: DialogComponent) {\n    }\n}\n\nexport type Inputs<T> = {\n    [P in keyof T]?: T[P] extends Signal<infer V> ? V : T[P];\n}\n\n@Injectable({ providedIn: 'root' })\nexport class DuiDialog {\n    constructor(\n        protected resolver: ComponentFactoryResolver,\n        protected app: ApplicationRef,\n        protected injector: Injector,\n        protected registry: WindowRegistry,\n        protected overlay: Overlay,\n    ) {\n    }\n\n    protected getComponentRef(viewContainerRef: ViewContainerRef | null = null): ComponentRef<DialogComponent> {\n        if (!viewContainerRef && !this.registry.activeWindow) {\n            //create portal\n            const overlayRef = this.overlay.create();\n            const portal = new ComponentPortal(DialogComponent);\n\n            const comp = overlayRef.attach(portal);\n            comp.instance.closed.subscribe((v) => {\n                comp.destroy();\n                overlayRef.detach();\n                overlayRef.dispose();\n            });\n\n            return comp;\n        }\n\n        if (!viewContainerRef) {\n            viewContainerRef = this.registry.getCurrentViewContainerRef();\n        }\n\n        return viewContainerRef.createComponent(DialogComponent);\n    }\n\n    public open<T>(\n        component: Type<T>,\n        inputs: { [name in keyof T]?: any } = {},\n        dialogInputs: Inputs<DialogComponent> = {},\n        viewContainerRef: ViewContainerRef | null = null,\n    ): { dialog: DialogComponent, close: Promise<any>, component: T } {\n        const comp = this.getComponentRef(viewContainerRef);\n        comp.setInput('visible', true);\n        comp.setInput('component', component);\n        comp.setInput('componentInputs', inputs);\n\n        if ((component as any).dialogDefaults) {\n            for (const [i, v] of Object.entries((component as any).dialogDefaults) as Array<[string, any]>) {\n                comp.setInput(i, v);\n            }\n        }\n\n        for (const [i, v] of Object.entries(dialogInputs)) {\n            comp.setInput(i, v);\n        }\n\n        const close = new Promise((resolve) => {\n            comp.instance.closed.subscribe((v) => {\n                comp.destroy();\n                resolve(v);\n            });\n        });\n\n        comp.instance.show();\n\n        return {\n            dialog: comp.instance,\n            close,\n            component: comp.instance.wrapperComponentRef?.instance?.renderComponentDirective?.component?.instance,\n        };\n    }\n\n    public async alert(title: string, content: string = '', inputs: { [name: string]: any } = {}): Promise<boolean> {\n        const { dialog } = this.open(DuiDialogAlert, { title, content }, inputs);\n        return dialog.toPromise();\n    }\n\n    public async confirm(title: string, content: string = '', inputs: { [name: string]: any } = {}): Promise<boolean> {\n        const { dialog } = this.open(DuiDialogConfirm, { title, content }, inputs);\n        return dialog.toPromise();\n    }\n\n    public async prompt(title: string, value: string, content?: string, inputs: { [name: string]: any } = {}): Promise<false | string> {\n        const { dialog } = this.open(DuiDialogPrompt, { title, value, content }, inputs);\n        return dialog.toPromise();\n    }\n}\n\n/**\n * Directive to show a confirmation dialog when the user clicks on the element.\n *\n * ```html\n * <dui-button confirm=\"Really delete?\" (click)=\"delete()\">Delete</dui-button>\n * ```\n */\n@Directive({ selector: '[confirm]' })\nexport class DuiDialogConfirmDirective implements OnDestroy {\n    /**\n     * The confirm message to show when the user clicks on the element.\n     *\n     * Use `Title\\nText` to specify a title and text, separated by a newline.\n     */\n    confirm = input.required<string>();\n\n    protected ignoreNextClick = false;\n\n    protected callback = async (event: MouseEvent) => {\n        if (isTargetChildOf(event.target, this.element.nativeElement)) {\n            if (this.ignoreNextClick) {\n                this.ignoreNextClick = false;\n                return;\n            }\n\n            event.stopPropagation();\n            event.preventDefault();\n            const confirm = this.confirm();\n            const firstNewlineIndex = confirm.indexOf('\\n');\n            let title = '';\n            let text = '';\n            if (firstNewlineIndex !== -1) {\n                title = confirm.substring(0, firstNewlineIndex);\n                text = confirm.substring(firstNewlineIndex + 1);\n            } else {\n                title = confirm;\n                text = '';\n            }\n            const a = await this.dialog.confirm(title, text, {});\n            if (a) {\n                this.ignoreNextClick = true;\n                this.element.nativeElement.dispatchEvent(event);\n            }\n        }\n    };\n\n    constructor(\n        protected element: ElementRef<HTMLElement>,\n        protected dialog: DuiDialog,\n        @Inject(DOCUMENT) protected document: any,\n    ) {\n        this.document.body?.addEventListener('click', this.callback, true);\n    }\n\n    ngOnDestroy() {\n        this.document.body?.removeEventListener('click', this.callback, true);\n    }\n}\n","import { ClientProgress, Progress } from '@deepkit/rpc';\nimport { computed, Injectable, signal } from '@angular/core';\nimport { pathBasename } from '@deepkit/core';\n\nexport interface FileQueueEntry {\n    name: string;\n    dir: string;\n    data: Uint8Array;\n    addFile: (name: string, dir: string, data: Uint8Array) => Promise<void>;\n    progress?: Progress;\n    abort?: () => void;\n    done?: true;\n    errored?: true;\n    aborted?: true;\n}\n\nexport interface FilesystemApiFile {\n    size: number;\n    lastModified?: Date;\n    visibility: string;\n\n    // not available in Filesystem\n    created?: Date;\n    mimeType: string;\n    path: string;\n    type: 'file' | 'directory';\n}\n\nexport function fileDirectory(file: FilesystemApiFile): string {\n    const lastSlash = file.path.lastIndexOf('/');\n    return lastSlash <= 0 ? '/' : file.path.slice(0, lastSlash);\n}\n\nexport function fileName(file: FilesystemApiFile): string {\n    return pathBasename(file.path);\n}\n\nexport function truncateFileName(name: string) {\n    //if file name is too long, cut it in the middle and add ...\n    const maxLength = 25;\n    if (name.length > maxLength) {\n        return name.substr(0, maxLength / 2) + '...' + name.substr(name.length - maxLength / 2, name.length);\n    }\n    return name;\n}\n\nexport interface FilesystemApi {\n    getPublicUrl(path: string): Promise<string>;\n\n    createFolder(path: string): Promise<void>;\n\n    getFile(path: string): Promise<FilesystemApiFile | undefined>;\n\n    getFiles(path: string): Promise<FilesystemApiFile[]>;\n\n    /**\n     * Return the full data of the file.\n     */\n    getData(path: string): Promise<{ data: Uint8Array, mimeType: string } | undefined>;\n\n    // /**\n    //  * Return a small preview of the file, e.g. for images or PDFs.\n    //  * Could be just the full data if the file is not enormous.\n    //  */\n    // getQuickLookData(path: string): Promise<{ data: Uint8Array, mimeType: string } | undefined>;\n\n    /**\n     * Returns an even smaller preview of the file, e.g. for images or PDFs.\n     * Best size is 256x256 pixels.\n     */\n    getThumbnailData(path: string): Promise<{ data: Uint8Array, mimeType: string } | undefined>;\n\n    renameFile(path: string, newName: string): Promise<string>;\n\n    addFile(name: string, dir: string, data: Uint8Array): Promise<void>;\n\n    remove(paths: string[]): Promise<void>;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class FilesystemState {\n    uploadQueue = signal<FileQueueEntry[]>([]);\n    pendingQueue = computed(() => this.uploadQueue().filter(file => !file.done && !file.errored && !file.aborted));\n\n    upload = signal<FileQueueEntry | undefined>(undefined);\n\n    addUpload(file: FileQueueEntry) {\n        this.uploadQueue.update(v => [...v, file]);\n        this.checkNext();\n    }\n\n    protected nextCleanQueueTimeout?: ReturnType<typeof setTimeout>;\n\n    cleanQueue() {\n        if (this.nextCleanQueueTimeout) return;\n        this.nextCleanQueueTimeout = setTimeout(() => {\n            this.nextCleanQueueTimeout = undefined;\n            this.uploadQueue.set(this.pendingQueue());\n        }, 5000);\n    }\n\n    checkNext() {\n        const upload = this.upload();\n        if (upload) return;\n\n        const files = this.pendingQueue();\n        if (!files.length) {\n            this.cleanQueue();\n            return;\n        }\n        const file = files.find(file => !file.done && !file.errored && !file.aborted);\n        if (!file) {\n            this.cleanQueue();\n            return;\n        }\n\n        this.upload.set(file);\n        file.progress = ClientProgress.track();\n        file.abort = () => {\n            file.aborted = true;\n            file.progress?.abort();\n            this.upload.set(undefined);\n            this.uploadQueue.update(v => v.slice());\n            this.checkNext();\n        };\n\n        console.log('uploading', file.name, file.dir, file.data.length, 'bytes');\n        file.addFile(file.name, file.dir, file.data).then(() => {\n            file.done = true;\n            this.upload.set(undefined);\n            this.uploadQueue.update(v => v.slice());\n            this.checkNext();\n        }, error => {\n            file.errored = true;\n            this.upload.set(undefined);\n            this.uploadQueue.update(v => v.slice());\n            this.checkNext();\n        });\n    }\n}\n","import { Injectable, OnDestroy, signal, WritableSignal } from '@angular/core';\nimport { ClientProgress } from '@deepkit/rpc';\nimport { FilesystemApi } from './api';\n\ninterface CacheState {\n    path: string;\n    result: WritableSignal<{ data: Uint8Array, mimeType: string } | undefined>;\n    loaded?: Date;\n    users: number;\n    abort?: () => void;\n    aborted: WritableSignal<boolean>;\n    invalid: WritableSignal<boolean>;\n    progress: WritableSignal<number>;\n    load: () => Promise<{ data: Uint8Array, mimeType: string } | undefined>;\n}\n\nexport interface CacheData {\n    path: string;\n    aborted: WritableSignal<boolean>;\n    invalid: WritableSignal<boolean>;\n    result: WritableSignal<{ data: Uint8Array, mimeType: string } | undefined>;\n    progress: WritableSignal<number>;\n    disconnect: () => void;\n}\n\n@Injectable()\nexport abstract class FilesystemFileCache implements OnDestroy {\n    protected data = new Map<string, CacheState>();\n\n    protected parallel = 5; // how many files to load in parallel\n    protected queue = new Set<CacheState>;\n    protected inFlight = 0;\n\n    // 5 minutes\n    protected maxAge = 5 * 60 * 1000;\n\n    protected interval: ReturnType<typeof setInterval>;\n\n    constructor() {\n        this.interval = setInterval(() => {\n            this.clean();\n        }, 30_000);\n    }\n\n    ngOnDestroy() {\n        clearTimeout(this.interval);\n    }\n\n    clean() {\n        // Remove files older than maxAge\n        const now = new Date;\n        for (const [path, data] of this.data.entries()) {\n            if (!data.loaded) return;\n            if (now.getTime() - data.loaded.getTime() > this.maxAge) {\n                this.data.delete(path);\n            }\n        }\n    }\n\n    nextQueue() {\n        if (this.inFlight >= this.parallel) return;\n\n        for (const queue of this.queue) {\n            if (this.inFlight >= this.parallel) return;\n\n            // If cache is not loaded yet, load it\n            this.inFlight++;\n            const progress = ClientProgress.track();\n            const sub = progress.download.subscribe(v => {\n                queue.progress.set(v.progress);\n            });\n            this.queue.delete(queue);\n            queue.abort = () => {\n                if (queue.loaded) return;\n                if (queue.aborted()) return;\n                queue.invalid.set(true);\n                queue.aborted.set(true);\n                progress.abort();\n                this.queue.delete(queue);\n                this.data.delete(queue.path);\n            };\n            queue.load().then((result) => {\n                this.inFlight--;\n                if (!result) queue.invalid.set(true);\n                queue.result.set(result);\n                queue.loaded = new Date;\n                queue.progress.set(1);\n                sub.unsubscribe();\n                this.nextQueue();\n            });\n        }\n    }\n\n    protected disconnect(path: string) {\n        const existing = this.data.get(path);\n        if (!existing) return;\n        existing.users--;\n        if (existing.users <= 0) {\n            // make sure queued loading is aborted\n            existing.abort?.();\n            this.queue.delete(existing);\n        }\n    }\n\n    connect(api: FilesystemApi, path: string): CacheData {\n        const existing = this.data.get(path);\n        if (existing) {\n            existing.users++;\n            return {\n                path,\n                aborted: existing.aborted,\n                invalid: existing.invalid,\n                result: existing.result,\n                progress: existing.progress,\n                disconnect: () => this.disconnect(path),\n            };\n        }\n\n        const cache: CacheState = {\n            path,\n            result: signal<{ data: Uint8Array, mimeType: string } | undefined>(undefined),\n            users: 1,\n            aborted: signal(false),\n            invalid: signal(false),\n            loaded: new Date,\n            progress: signal(0),\n            load: () => this.fetchData(api, path).catch(() => undefined),\n        };\n        this.queue.add(cache);\n        this.data.set(path, cache);\n        this.nextQueue();\n\n        return {\n            path,\n            aborted: cache.aborted,\n            invalid: cache.invalid,\n            result: cache.result,\n            progress: cache.progress,\n            disconnect: () => this.disconnect(path),\n        };\n    }\n\n    protected async fetchData(api: FilesystemApi, id: string): Promise<{ data: Uint8Array, mimeType: string } | undefined> {\n        throw new Error('Not implemented');\n    }\n}\n\n@Injectable()\nexport class FilesystemFileDataCache extends FilesystemFileCache {\n    protected async fetchData(api: FilesystemApi, path: string) {\n        return await api.getData(path);\n    }\n}\n\n@Injectable()\nexport class FilesystemFileQuickLookCache extends FilesystemFileCache {\n    protected async fetchData(api: FilesystemApi, path: string) {\n        return await api.getData(path);\n    }\n}\n\n@Injectable()\nexport class FilesystemFileThumbnailCache extends FilesystemFileCache {\n    protected async fetchData(api: FilesystemApi, path: string) {\n        return await api.getThumbnailData(path);\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport {\n    AfterViewInit,\n    ApplicationRef,\n    booleanAttribute,\n    ChangeDetectionStrategy,\n    Component,\n    computed,\n    contentChild,\n    contentChildren,\n    Directive,\n    effect,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    inject,\n    input,\n    model,\n    numberAttribute,\n    OnDestroy,\n    OnInit,\n    output,\n    signal,\n    TemplateRef,\n    viewChild,\n    viewChildren,\n} from '@angular/core';\nimport { arrayHasItem, arrayRemoveItem, empty, first, getPathValue, indexOf, nextTick } from '@deepkit/core';\nimport { CdkFixedSizeVirtualScroll, CdkVirtualForOf, CdkVirtualScrollViewport } from '@angular/cdk/scrolling';\nimport { ContextDropdownDirective, DropdownComponent, DropdownComponent as DropdownComponent_1, DropdownContainerDirective, DropdownItemComponent, DropdownSplitterComponent } from '../button/dropdown.component';\nimport { injectElementRef, registerEventListener, RegisterEventListenerRemove } from '../app/utils';\nimport { findParentWithClass } from '../../core/utils';\nimport { formatDate, NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\nimport { SplitterComponent } from '../splitter/splitter.component';\nimport { DragDirective, DuiDragEvent, DuiDragStartEvent } from '../app/drag';\n\n/**\n * Directive to allow dynamic content in a cell.\n *\n * ```html\n * <dui-table-column>\n *     <ng-container *duiTableCell=\"let item\">\n *          {{item.fieldName | date}}\n *     </ng-container>\n * </dui-table-column>\n * ```\n */\n@Directive({ selector: '[duiTableCell]' })\nexport class TableCellDirective {\n    constructor(public template: TemplateRef<any>) {\n    }\n}\n\n/**\n * Can be used to define own dropdown items once the user opens the header context menu.\n *\n * ```html\n * <dui-table>\n *   <dui-dropdown duiTableCustomHeaderContextMenu>\n *       <dui-dropdown-item>Custom Item</dui-dropdown-item>\n *   </dui-dropdown>\n * </dui-table>\n */\n@Directive({ selector: 'dui-dropdown[duiTableCustomHeaderContextMenu]' })\nexport class TableCustomHeaderContextMenuDirective {\n    constructor(public dropdown: DropdownComponent) {\n    }\n}\n\n\n/**\n * Can be used to define own dropdown items once the user opens the row context menu.\n *\n * ```html\n * <dui-table>\n *    <dui-dropdown duiTableCustomRowContextMenu>\n *       <dui-dropdown-item>Custom Item</dui-dropdown-item>\n *    </dui-dropdown>\n * </dui-table>\n * ```\n */\n@Directive({ selector: 'dui-dropdown[duiTableCustomRowContextMenu]' })\nexport class TableCustomRowContextMenuDirective {\n    constructor(public dropdown: DropdownComponent) {\n    }\n}\n\n/**\n * Directive to allow dynamic content in a column header.\n *\n * ```html\n * <dui-table-column name=\"fieldName\">\n *     <ng-container *duiTableHead>\n *          <strong>Header</strong>\n *     </ng-container>\n * </dui-table-column>\n * ```\n */\n@Directive({ selector: '[duiTableHeader]' })\nexport class TableHeaderDirective {\n    constructor(public template: TemplateRef<any>) {\n    }\n}\n\n/**\n * Defines a new column.\n *\n * ```html\n * <dui-table-column name=\"fieldName\" header=\"Field Name\" [width]=\"100\" />\n */\n@Directive({ selector: 'dui-table-column' })\nexport class TableColumnDirective implements OnInit {\n    /**\n     * The name of the column. Needs to be unique. If no renderer (*duiTableCell) is specified, this\n     * name is used to render the content T[name].\n     *\n     * This supports dot notation, so you can use `user.name` to access the `name` property of the `user` object.\n     */\n    name = input<string>('');\n\n    /**\n     * A different header name. Use dui-table-header to render HTML there.\n     */\n    header = input<string>();\n\n    /**\n     * Default width.\n     */\n    width = input(100, { transform: numberAttribute });\n\n    effectiveWidth = model(0);\n\n    /**\n     * Adds additional class to the columns cells.\n     */\n    class = input<string>('');\n\n    /**\n     * Whether this column is start hidden. User can unhide it using the context menu on the header.\n     */\n    hidden = input(false, { transform: booleanAttribute });\n\n    effectiveHidden = model<boolean | undefined>(false);\n\n    sortable = input<boolean>(true);\n\n    hideable = input<boolean>(true);\n\n    /**\n     * At which position this column will be placed.\n     */\n    position = input<number>();\n\n    /**\n     * This is the new position when the user moved it manually.\n     * @hidden\n     */\n    effectivePosition = signal<number | undefined>(undefined);\n\n    cell = contentChild(TableCellDirective, {});\n    headerDirective = contentChild(TableHeaderDirective, {});\n\n    ngOnInit() {\n    }\n\n    getHidden(): boolean {\n        return this.effectiveHidden() ?? this.hidden();\n    }\n\n    toggleHidden() {\n        this.effectiveHidden.update(v => !this.getHidden());\n    }\n\n    /**\n     * @hidden\n     */\n    getWidth(): number {\n        return this.effectiveWidth() || this.width() || 0;\n    }\n\n    /**\n     * @hidden\n     */\n    getPosition() {\n        const overwritten = this.effectivePosition();\n        if (overwritten !== undefined) return overwritten;\n        return this.position();\n    }\n}\n\ninterface THBox {\n    left: number;\n    width: number;\n    element: HTMLElement;\n    directive: TableColumnDirective;\n}\n\n@Component({\n    selector: 'dui-table',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: `\n      <dui-dropdown #headerDropdown>\n        <ng-container *dropdownContainer>\n          @for (column of sortedColumns(); track column.name()) {\n            @if (column.hideable() && column.name()) {\n              <dui-dropdown-item\n                [selected]=\"!column.getHidden()\"\n                (click)=\"column.toggleHidden();headerDropdown.close()\"\n              >\n                @if (column.headerDirective(); as header) {\n                  <ng-container\n                    [ngTemplateOutlet]=\"header.template\"\n                    [ngTemplateOutletContext]=\"{$implicit: column}\"></ng-container>\n                } @else {\n                  {{ column.header() || column.name() }}\n                }\n              </dui-dropdown-item>\n            }\n          }\n          <dui-dropdown-separator></dui-dropdown-separator>\n          <dui-dropdown-item (click)=\"resetAll()\">Reset all</dui-dropdown-item>\n        </ng-container>\n      </dui-dropdown>\n\n      @if (showHeader()) {\n        <div class=\"header\" #header\n             [contextDropdown]=\"customHeaderDropdown()?.dropdown || headerDropdown\">\n          @for (column of sortedFilteredColumns(); track $index; let columnIndex = $index) {\n            <div class=\"th\"\n                 [style.width.px]=\"column.getWidth()\"\n                 (click)=\"sortBy(column.name() || '', $event)\"\n                 [class.freeze]=\"columnIndex < freezeColumns()\"\n                 [style.left.px]=\"columnIndex < freezeColumns() ? freezeLeft(columnIndex) : undefined\"\n                 [attr.name]=\"column.name()\"\n                 (duiDrag)=\"onHeadDrag($event)\"\n                 (duiDragStart)=\"onHeadDragStart($event, $index)\"\n                 (duiDragEnd)=\"onHeadDragEnd($event)\"\n                 #th>\n              @if (column.headerDirective(); as header) {\n                <ng-container\n                  [ngTemplateOutlet]=\"header.template\"\n                  [ngTemplateOutletContext]=\"{$implicit: column}\"></ng-container>\n              } @else {\n                {{ column.header() || column.name() }}\n              }\n              @if (sort()[column.name()]; as direction) {\n                @if (direction === 'desc') {\n                  <dui-icon [size]=\"12\" name=\"arrow_down\"></dui-icon>\n                } @else {\n                  <dui-icon [size]=\"12\" name=\"arrow_up\"></dui-icon>\n                }\n              }\n              <dui-splitter [size]=\"column.getWidth()\" (sizeChange)=\"column.effectiveWidth.set($event)\" indicator position=\"right\"></dui-splitter>\n            </div>\n          }\n        </div>\n      }\n      @let valueFetch = valueFetcher();\n\n      @let selectedSet$ = selectedSet();\n      @let contextDropdown = customRowDropdown()?.dropdown;\n      @let freezeColumns$ = freezeColumns();\n      \n      <div class=\"body\" [class.overlay-scrollbar-small]=\"!virtualScrolling()\" #body (click)=\"clickCell($event)\" (dblclick)=\"dblClickCell($event)\">\n        @if (!virtualScrolling()) {\n          @for (row of filterSorted(); track trackByFn(i, row); let i = $index; let isOdd = $odd) {\n            <div class=\"table-row {{rowClass()(row)}}\"\n                 [contextDropdown]=\"contextDropdown\"\n                 [class.selected]=\"selectedSet$.has(row)\"\n                 [class.odd]=\"isOdd\"\n                 (click)=\"select(row, $event)\"\n                 (contextmenu)=\"select(row, $event)\"\n                 (dblclick)=\"rowDblClick.emit(row)\"\n            >\n              @for (column of sortedFilteredColumns(); track $index; let columnIndex = $index) {\n                <div class=\"table-cell\"\n                     [class]=\"column.class() + ' ' + cellClass()(row, column.name())\"\n                     [attr.row-column]=\"column.name()\"\n                     [class.freeze]=\"columnIndex < freezeColumns$\"\n                     [style.left.px]=\"columnIndex < freezeColumns$ ? freezeLeft(columnIndex) : undefined\"\n                     [class.freeze-last]=\"columnIndex === freezeColumns$ - 1\"\n                     [attr.row-i]=\"i\"\n                     [style.flex-basis.px]=\"column.getWidth()\"\n                >\n                  @if (column.cell(); as cell) {\n                    <ng-container [ngTemplateOutlet]=\"cell.template\"\n                                  [ngTemplateOutletContext]=\"{ $implicit: row }\"></ng-container>\n                  } @else {\n                    {{ valueFetch(row, column.name()) }}\n                  }\n                </div>\n              }\n            </div>\n          }\n        } @else {\n          <cdk-virtual-scroll-viewport #viewportElement\n                                       class=\"overlay-scrollbar-small\"\n                                       [itemSize]=\"itemHeight()\">\n            <ng-container\n              *cdkVirtualFor=\"let row of filterSorted(); trackBy: trackByFn; let i = index; odd as isOdd\">\n              <div class=\"table-row {{rowClass()(row)}}\"\n                   [contextDropdown]=\"contextDropdown\"\n                   [class.selected]=\"selectedSet$.has(row)\"\n                   [class.odd]=\"isOdd\"\n                   [style.height.px]=\"itemHeight()\"\n                   (click)=\"select(row, $event)\"\n                   (contextmenu)=\"select(row, $event)\"\n                   (dblclick)=\"rowDblClick.emit(row)\"\n              >\n                @for (column of sortedFilteredColumns(); track $index; let columnIndex = $index) {\n                  <div class=\"table-cell\"\n                       [class]=\"column.class() + ' ' + cellClass()(row, column.name())\"\n                       [attr.row-column]=\"column.name()\"\n                       [class.freeze]=\"columnIndex < freezeColumns$\"\n                       [style.left.px]=\"columnIndex < freezeColumns$ ? freezeLeft(columnIndex) : undefined\"\n                       [class.freeze-last]=\"columnIndex === freezeColumns$ - 1\"\n                       [attr.row-i]=\"i\"\n                       [style.flex-basis.px]=\"column.getWidth()\"\n                  >\n                    @if (column.cell(); as cell) {\n                      <ng-container [ngTemplateOutlet]=\"cell.template\"\n                                    [ngTemplateOutletContext]=\"{ $implicit: row }\"></ng-container>\n                    } @else {\n                      {{ valueFetch(row, column.name()) }}\n                    }\n                  </div>\n                }\n              </div>\n            </ng-container>\n          </cdk-virtual-scroll-viewport>\n        }\n      </div>\n    `,\n    styleUrls: ['./table.component.scss'],\n    host: {\n        '[class.focus-outline]': '!noFocusOutline()',\n        '[class.borderless]': 'borderless()',\n        '[class.with-hover]': 'hover()',\n        '[class.no-virtual-scrolling]': '!virtualScrolling()',\n        '[class.dui-normalized]': 'true',\n        '[class.text-selection]': 'textSelection()',\n    },\n    imports: [\n        DropdownComponent_1,\n        DropdownContainerDirective,\n        DropdownItemComponent,\n        NgTemplateOutlet,\n        DropdownSplitterComponent,\n        ContextDropdownDirective,\n        IconComponent,\n        SplitterComponent,\n        CdkVirtualScrollViewport,\n        CdkFixedSizeVirtualScroll,\n        CdkVirtualForOf,\n        DragDirective,\n    ],\n})\nexport class TableComponent<T> implements AfterViewInit, OnInit, OnDestroy {\n    protected app = inject(ApplicationRef);\n\n    /**\n     * @hidden\n     */\n    @HostBinding() tabindex = 0;\n\n    borderless = input(false, { transform: booleanAttribute });\n\n    /**\n     * Array of items that should be used for each row.\n     */\n    items = input.required<T[]>();\n\n    /**\n     * Since dui-table has virtual-scroll active per default, it's required to define the itemHeight to\n     * make scrolling actually workable correctly.\n     */\n    itemHeight = input<number>(25);\n\n    /**\n     * Whether the table height just prints all rows, or if virtual scrolling is enabled.\n     * If true, the row height depends on the content.\n     */\n    virtualScrolling = input<boolean>(true);\n\n    /**\n     * Whether the table row should have a hover effect.\n     */\n    hover = input(false, { transform: booleanAttribute });\n\n    /**\n     * Whether the header should be shown.\n     */\n    showHeader = input<boolean>(true);\n\n    /**\n     * How many columns (from the left) are frozen (stay visible even if user scrolls horizontally).\n     */\n    freezeColumns = input<number>(0);\n\n    /**\n     * Default field of T for sorting.\n     */\n    defaultSort = input<string>('');\n\n    /**\n     * Default sorting order.\n     */\n    defaultSortDirection = input<'asc' | 'desc'>('asc');\n\n    /**\n     * Whether rows are selectable.\n     */\n    selectable = input(false, { transform: booleanAttribute });\n\n    /**\n     * Whether multiple rows are selectable at the same time.\n     */\n    multiSelect = input(false, { alias: 'multi-select', transform: booleanAttribute });\n\n    /**\n     * TrackFn for ngFor to improve performance. Default is order by index.\n     */\n    trackFn = input<(index: number, item: T) => any>();\n\n    /**\n     * Filter function.\n     */\n    filter = input<(item: T) => boolean>();\n\n    rowClass = input<(item: T) => string>(() => '');\n\n    cellClass = input<(item: T, column: string) => string>(() => '');\n\n    /**\n     * When the user changes the order or width of the columns, the information is stored\n     * in localStorage using this key, prefixed with `@dui/table/`.\n     */\n    preferenceKey = input<string>('root');\n\n    /**\n     * Filter query.\n     */\n    filterQuery = input<string>();\n\n    /**\n     * Against which fields filterQuery should run.\n     */\n    filterFields = input<string[]>();\n\n    /**\n     * Alternate object value fetcher, important for sorting and filtering.\n     */\n    valueFetcher = input((object: any, path: string): any => {\n        if (!path) return '';\n        const value = getPathValue(object, path);\n        if (value instanceof Date) {\n            return formatDate(value, 'yyyy-MM-dd hh:mm:ss', navigator.language);\n        }\n        return value;\n    });\n\n    /**\n     * A hook to provide custom sorting behavior for certain columns.\n     */\n    sortFunction = input<(sort: {\n        [name: string]: 'asc' | 'desc';\n    }) => (((a: T, b: T) => number) | undefined)>();\n\n    /**\n     * Whether sorting is enabled (clicking headers trigger sort).\n     */\n    sorting = input<boolean>(true);\n\n    noFocusOutline = input(false, { alias: 'no-focus-outline', transform: booleanAttribute });\n\n    /**\n     * Allow text selection in the table.\n     */\n    textSelection = input(false, { alias: 'text-selection', transform: booleanAttribute });\n\n    sort = model<{ [column: string]: 'asc' | 'desc'; }>({});\n\n    sorted = computed(() => {\n        const sortFunction = this.sortFunction();\n        if (sortFunction) {\n            const sorted = this.items().sort(sortFunction(this.sort()));\n            return sorted.slice();\n        }\n\n        const sort = Object.entries(this.sort());\n        sort.reverse(); //we start from bottom\n        let sortRoot = (a: any, b: any) => 0;\n        for (const [name, dir] of sort) {\n            sortRoot = this.createSortFunction(name, dir, sortRoot);\n        }\n        const sorted = this.items().sort(sortRoot);\n        return sorted.slice();\n    });\n\n    protected selectedSet = computed<Set<T>>(() => new Set(this.selected()));\n\n    /**\n     * Elements that are selected, by reference.\n     */\n    selected = model<T[]>([]);\n\n    cellSelect = output<{ item: T, cell: string } | undefined>();\n\n    /**\n     * When a row gets double-clicked.\n     */\n    rowDblClick = output<T>();\n\n    cellClick = output<{ item: T, column: string }>();\n    cellDblClick = output<{ item: T, column: string }>();\n\n    protected header = viewChild('header', { read: ElementRef });\n    protected ths = viewChildren('th', { read: ElementRef });\n\n    columnDefs = contentChildren(TableColumnDirective, { descendants: true });\n\n    protected customHeaderDropdown = contentChild(TableCustomHeaderContextMenuDirective);\n    protected customRowDropdown = contentChild(TableCustomRowContextMenuDirective);\n\n    protected viewport = viewChild(CdkVirtualScrollViewport);\n    protected viewportElement = viewChild('viewportElement', { read: ElementRef<HTMLElement> });\n    protected body = viewChild('body', { read: ElementRef<HTMLElement> });\n\n    sortedColumns = computed(() => {\n        const originalDefs = this.columnDefs();\n        const columns = originalDefs.slice();\n\n        columns.sort((a, b) => {\n            const aPosition = a.getPosition() === undefined ? originalDefs.indexOf(a) : a.getPosition()!;\n            const bPosition = b.getPosition() === undefined ? originalDefs.indexOf(b) : b.getPosition()!;\n\n            if (aPosition > bPosition) return 1;\n            if (aPosition < bPosition) return -1;\n\n            return 0;\n        });\n        return columns;\n    });\n\n    sortedFilteredColumns = computed(() => {\n        const originalDefs = this.sortedColumns();\n        return originalDefs.filter(v => !v.getHidden());\n    });\n\n    protected storedPreferences = computed(() => {\n        if ('undefined' === typeof localStorage) return {};\n        const preferencesJSON = localStorage.getItem('@dui/table/preferences-' + this.preferenceKey());\n        if (!preferencesJSON) return {};\n        try {\n            return JSON.parse(preferencesJSON);\n        } catch (error) {\n            console.error('Error parsing table preferences:', error);\n            return {};\n        }\n    });\n\n    protected columnMap = computed(() => {\n        const map: { [name: string]: TableColumnDirective } = {};\n        for (const column of this.sortedColumns()) {\n            map[column.name()] = column;\n        }\n        return map;\n    });\n\n    protected ignoreThisSort = false;\n\n    element = injectElementRef();\n\n    constructor() {\n        effect(() => this.loadPreference());\n        effect(() => this.storePreference());\n        effect(() => {\n            const items = this.filterSorted();\n            this.viewport()?.checkViewportSize();\n        });\n    }\n\n    ngOnInit() {\n        const defaultSort = this.defaultSort();\n        if (defaultSort) {\n            this.sort()[defaultSort] = this.defaultSortDirection();\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.removeScrollListener?.();\n    }\n\n    protected freezeLeft(untilIndex: number): number {\n        const columns = this.sortedColumns();\n        let left = 0;\n        for (let i = 0; i < untilIndex; i++) {\n            left += columns[i].getWidth();\n        }\n        return left;\n    }\n\n    @HostListener('window:resize')\n    protected onResize() {\n        nextTick(() => {\n            this.viewport()?.checkViewportSize();\n        });\n    }\n\n    protected resetAll() {\n        localStorage.removeItem('@dui/table/preferences-' + this.preferenceKey());\n        for (const column of this.columnDefs()) {\n            column.effectiveWidth.set(0);\n            column.effectiveHidden.set(undefined);\n            column.effectivePosition.set(undefined);\n        }\n    }\n\n    protected preferenceLoaded = signal(false);\n\n    protected storePreference() {\n        if (!this.preferenceLoaded()) return;\n        if ('undefined' === typeof localStorage) return;\n        const preferences: { [name: string]: { hidden: boolean | '', width?: number | string, order?: number } } = {};\n        for (const column of this.columnDefs()) {\n            preferences[column.name()] = {\n                width: column.getWidth(),\n                order: column.getPosition(),\n                hidden: column.getHidden(),\n            };\n        }\n        localStorage.setItem('@dui/table/preferences-' + this.preferenceKey(), JSON.stringify(preferences));\n    }\n\n    protected loadPreference() {\n        if ('undefined' === typeof localStorage) return;\n        if (this.preferenceLoaded()) return;\n        this.preferenceLoaded.set(true);\n        const preferences = this.storedPreferences();\n        if (!preferences) return;\n        const columnMap = this.columnMap();\n        for (const [i, v] of Object.entries(columnMap)) {\n            if (!columnMap[i]) continue;\n            if (!preferences[i]) continue;\n            if (preferences[i].width !== undefined) v.effectiveWidth.set(preferences[i].width);\n            if (preferences[i].order !== undefined) v.effectivePosition.set(preferences[i].order);\n            if (preferences[i].hidden !== undefined) v.effectiveHidden.set(preferences[i].hidden);\n        }\n    }\n\n    protected dblClickCell(event: MouseEvent) {\n        if (!event.target) return;\n        const cell = findParentWithClass(event.target as HTMLElement, 'table-cell');\n        if (!cell) return;\n        const i = parseInt(cell.getAttribute('row-i') || '', 10);\n        const column = cell.getAttribute('row-column') || '';\n\n        this.cellDblClick.emit({ item: this.sorted()[i], column });\n    }\n\n    protected clickCell(event: MouseEvent) {\n        if (!event.target) return;\n        const cell = findParentWithClass(event.target as HTMLElement, 'table-cell');\n        if (!cell) return;\n        const i = parseInt(cell.getAttribute('row-i') || '', 10);\n        const column = cell.getAttribute('row-column') || '';\n\n        this.cellClick.emit({ item: this.sorted()[i], column });\n    }\n\n    /**\n     * Toggles the sort by the given column name.\n     */\n    protected sortBy(name: string, $event?: MouseEvent) {\n        if (!this.sorting()) return;\n\n        if (this.ignoreThisSort) {\n            this.ignoreThisSort = false;\n            return;\n        }\n\n        const column = this.columnMap()[name];\n        if (!column?.sortable()) {\n            return;\n        }\n\n        const sort = this.sort();\n\n        //only when shift is pressed do we activate multi-column sort\n        if (!$event || !$event.shiftKey) {\n            for (const member in this.sort()) if (member !== name) delete sort[member];\n        }\n\n        if (!sort[name]) {\n            sort[name] = 'asc';\n        } else {\n            if (sort[name] === 'asc') sort[name] = 'desc';\n            else if (sort[name] === 'desc') delete sort[name];\n        }\n\n        this.sort.set({ ...sort });\n    }\n\n    filterSorted = computed(() => {\n        if (this.filter() || (this.filterQuery() && this.filterFields())) {\n            return this.sorted().filter((v) => this.filterFn(v));\n        }\n\n        return this.sorted();\n    });\n\n    /**\n     * @hidden\n     */\n    protected trackByFn = (index: number, item: any) => {\n        const trackFn = this.trackFn();\n        return trackFn ? trackFn(index, item) : index;\n    };\n\n    protected headMoveThBoxes: THBox[] = [];\n    protected removeScrollListener?: RegisterEventListenerRemove;\n\n    protected headMove: {\n        element?: HTMLElement;\n        foundBox?: THBox;\n        originalPosition: number;\n        startOffsetLeft: number;\n        offsetLeft: number;\n        startOffsetWidth: number;\n        elementCells: HTMLElement[];\n        rowCells: HTMLElement[][];\n    } = {\n        foundBox: undefined,\n        element: undefined,\n        originalPosition: -1,\n        startOffsetLeft: 0,\n        offsetLeft: 0,\n        startOffsetWidth: 0,\n        elementCells: [],\n        rowCells: [],\n    };\n\n    onHeadDragStart(event: DuiDragStartEvent, index: number) {\n        const ths = this.ths();\n        const element = this.headMove.element = ths[index]?.nativeElement;\n        if (!this.headMove.element) {\n            event.accept = false;\n            return;\n        }\n\n        // element = event.target as HTMLElement;\n        element.style.zIndex = '1000000';\n        element.style.opacity = '0.8';\n\n        this.headMove.startOffsetLeft = element.offsetLeft;\n        this.headMove.offsetLeft = element.offsetLeft;\n        this.headMove.startOffsetWidth = element.offsetWidth;\n\n        this.headMoveThBoxes.length = 0;\n        this.headMove.rowCells.length = 0;\n\n        const sortedColumns = this.sortedColumns();\n        for (const th of this.ths()) {\n            const attributeName = th.nativeElement.getAttribute('name') || '';\n            const directive = sortedColumns.find((v) => v.name() === attributeName);\n            if (!directive) continue;\n            const cells = [...this.element.nativeElement.querySelectorAll('div[row-column=\"' + directive.name() + '\"]')] as any as HTMLElement[];\n\n            if (th.nativeElement === element) {\n                this.headMove.originalPosition = sortedColumns.indexOf(directive);\n                this.headMove.elementCells = cells;\n                for (const cell of cells) {\n                    cell.classList.add('active-drop');\n                }\n            } else {\n                for (const cell of cells) {\n                    cell.classList.add('other-cell');\n                }\n                th.nativeElement.classList.add('other-cell');\n            }\n\n            this.headMoveThBoxes.push({\n                left: th.nativeElement.offsetLeft,\n                width: th.nativeElement.offsetWidth,\n                element: th.nativeElement,\n                directive: directive,\n            });\n\n            this.headMove.rowCells.push(cells);\n        }\n    }\n\n    onHeadDrag(event: DuiDragEvent) {\n        const element = this.headMove.element;\n        if (!element) return;\n        const THsBoxes = this.headMoveThBoxes;\n        const rowCells = this.headMove.rowCells;\n        const startOffsetLeft = this.headMove.startOffsetLeft;\n        const startOffsetWidth = this.headMove.startOffsetWidth;\n        const elementCells = this.headMove.elementCells;\n\n        element.style.left = (event.deltaX) + 'px';\n        const offsetLeft = startOffsetLeft + event.deltaX;\n\n        for (const cell of elementCells) {\n            cell.style.left = (event.deltaX) + 'px';\n        }\n        let afterElement = false;\n\n        let foundBox = undefined;\n        for (let i = 0; i < THsBoxes.length; i++) {\n            const box = THsBoxes[i];\n            if (box.element === element) {\n                afterElement = true;\n                continue;\n            }\n\n            box.element.style.left = '0px';\n            for (const cell of rowCells[i]) {\n                cell.style.left = '0px';\n            }\n\n            if (!afterElement && box.left + (box.width / 2) > offsetLeft) {\n                //the dragged element is before the current\n                box.element.style.left = startOffsetWidth + 'px';\n\n                for (const cell of rowCells[i]) {\n                    cell.style.left = startOffsetWidth + 'px';\n                }\n\n                if (foundBox && box.left > foundBox.left) {\n                    //we found already a box that fits and that is more left\n                    continue;\n                }\n\n                foundBox = box;\n            } else if (afterElement && box.left + (box.width / 2) < offsetLeft + startOffsetWidth) {\n                //the dragged element is after the current\n                box.element.style.left = -startOffsetWidth + 'px';\n                for (const cell of rowCells[i]) {\n                    cell.style.left = -startOffsetWidth + 'px';\n                }\n                foundBox = box;\n            }\n        }\n        this.headMove.foundBox = foundBox;\n    }\n\n    onHeadDragEnd(event: DuiDragEvent) {\n        const element = this.headMove.element;\n        if (!element) return;\n        const THsBoxes = this.headMoveThBoxes;\n        const rowCells = this.headMove.rowCells;\n        const foundBox = this.headMove.foundBox;\n        const originalPosition = this.headMove.originalPosition;\n\n        element.style.left = '';\n        element.style.zIndex = '';\n        element.style.opacity = '';\n\n        for (const t of rowCells) {\n            for (const cell of t) {\n                cell.classList.remove('active-drop');\n                cell.classList.remove('other-cell');\n                cell.style.left = '0px';\n            }\n        }\n\n        this.ignoreThisSort = true;\n\n        for (const box of THsBoxes) {\n            box.element.style.left = '0px';\n            box.element.classList.remove('other-cell');\n        }\n\n        const sortedColumns = this.sortedColumns();\n\n        if (foundBox) {\n            const newPosition = sortedColumns.indexOf(foundBox.directive);\n\n            if (originalPosition !== newPosition) {\n                const directive = sortedColumns[originalPosition];\n                sortedColumns.splice(originalPosition, 1);\n                sortedColumns.splice(newPosition, 0, directive);\n\n                for (let i = 0; i < sortedColumns.length; i++) {\n                    sortedColumns[i].effectivePosition.set(i);\n                }\n            }\n        }\n\n        this.storePreference();\n        this.headMove.element = undefined;\n    }\n\n    ngAfterViewInit(): void {\n        const element = (this.viewportElement() || this.body())?.nativeElement;\n        if (!element) return;\n        this.removeScrollListener = registerEventListener(element, 'scroll', () => {\n            const scrollLeft = element.scrollLeft;\n            const header = this.header();\n            if (!header) return;\n            header.nativeElement.scrollLeft = scrollLeft;\n        });\n    }\n\n    protected filterFn(item: T) {\n        const filter = this.filter();\n        if (filter) {\n            return filter(item);\n        }\n\n        const filterQuery = this.filterQuery();\n        const filterFields = this.filterFields();\n        if (filterQuery && filterFields) {\n            const q = filterQuery!.toLowerCase();\n            for (const field of filterFields) {\n                if (-1 !== String((item as any)[field]).toLowerCase().indexOf(q)) {\n                    return true;\n                }\n            }\n\n            return false;\n        }\n\n        return true;\n    }\n\n    protected createSortFunction(sortField: string, dir: 'asc' | 'desc', next?: (a: any, b: any) => number) {\n        return (a: T, b: T) => {\n            const aV = this.valueFetcher()(a, sortField);\n            const bV = this.valueFetcher()(b, sortField);\n\n            if (aV === undefined && bV === undefined) return next ? next(a, b) : 0;\n            if (aV === undefined && bV !== undefined) return +1;\n            if (aV !== undefined && bV === undefined) return -1;\n\n            if (dir === 'asc') {\n                if (aV > bV) return 1;\n                if (aV < bV) return -1;\n            } else {\n                if (aV > bV) return -1;\n                if (aV < bV) return 1;\n            }\n\n            return next ? next(a, b) : 0;\n        };\n    }\n\n    /**\n     * @hidden\n     */\n    @HostListener('keydown', ['$event'])\n    protected onKeyDown(event: KeyboardEvent) {\n        if (event.key === 'Enter') {\n            const firstSelected = first(this.selected());\n            if (firstSelected) {\n                this.rowDblClick.emit(firstSelected);\n            }\n        }\n\n        if (event.key === 'ArrowUp' || event.key === 'ArrowDown') {\n            event.preventDefault();\n            const firstSelected = first(this.selected());\n            const items = this.filterSorted();\n\n            if (!firstSelected) {\n                this.select(items[0]);\n                return;\n            }\n\n            let index = indexOf(items, firstSelected);\n\n            // if (-1 === index) {\n            //     this.select(this.sorted[0]);\n            //     this.paginator.pageIndex = 0;\n            //     return;\n            // }\n\n            if (event.key === 'ArrowUp') {\n                if (0 === index) {\n                    return;\n                }\n                index--;\n            }\n\n            if (event.key === 'ArrowDown') {\n                if (empty(this.sorted)) {\n                    return;\n                }\n                index++;\n            }\n\n            if (items[index]) {\n                const item = items[index];\n                this.select(item);\n\n                const viewport = this.viewport();\n                if (viewport) {\n                    const scrollTop = viewport.measureScrollOffset();\n                    const viewportSize = viewport.getViewportSize();\n                    const itemTop = this.itemHeight() * index;\n\n                    if (itemTop + this.itemHeight() > viewportSize + scrollTop) {\n                        const diff = (itemTop + this.itemHeight()) - (viewportSize + scrollTop);\n                        viewport.scrollToOffset(scrollTop + diff);\n                    }\n\n                    if (itemTop < scrollTop) {\n                        const diff = (itemTop) - (scrollTop);\n                        viewport.scrollToOffset(scrollTop + diff);\n                    }\n                } else {\n                    const body = this.body();\n                    if (body) {\n                        // const rows = this.ro\n                        const element = body.nativeElement.children.item(index);\n                        if (element) {\n                            element.scrollIntoView({\n                                block: 'nearest',\n                            });\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    select(item: T, $event?: MouseEvent) {\n        if (!this.selectable()) return;\n\n        let cellSelectFired = false;\n        if ($event && $event.target) {\n            const cell = findParentWithClass($event.target as HTMLElement, 'table-cell');\n            if (cell) {\n                const column = cell.getAttribute('row-column') || '';\n                if (column) {\n                    this.cellSelect.emit({ item, cell: column });\n                    cellSelectFired = true;\n                }\n            }\n        }\n\n        if (!cellSelectFired) {\n            this.cellSelect.emit(undefined);\n        }\n        const items = this.filterSorted();\n\n        const selected = this.selected();\n        if (!this.multiSelect()) {\n            this.selected.set([item]);\n        } else {\n            if ($event && $event.shiftKey) {\n                const indexSelected = items.indexOf(item);\n\n                if (selected[0]) {\n                    const firstSelected = items.indexOf(selected[0]);\n\n                    if (firstSelected < indexSelected) {\n                        //we select all from index -> indexSelected, downwards\n                        for (let i = firstSelected; i <= indexSelected; i++) {\n                            selected.push(items[i]);\n                        }\n                    } else {\n                        //we select all from indexSelected -> index, upwards\n                        for (let i = firstSelected; i >= indexSelected; i--) {\n                            selected.push(items[i]);\n                        }\n                    }\n                } else {\n                    //we start at 0 and select all until index\n                    for (let i = 0; i <= indexSelected; i++) {\n                        selected.push(items[i]);\n                    }\n                }\n                this.selected.set([item]);\n            } else if ($event && $event.metaKey) {\n                if (arrayHasItem(selected, item)) {\n                    arrayRemoveItem(selected, item);\n                } else {\n                    selected.push(item);\n                }\n                this.selected.set(selected.slice());\n            } else {\n                const isRightButton = $event && $event.button == 2;\n                const isItemSelected = arrayHasItem(selected, item);\n                const resetSelection = !isItemSelected || !isRightButton;\n                if (resetSelection) {\n                    this.selected.set([item]);\n                }\n            }\n        }\n    }\n}\n","export function imageSize(data: Uint8Array): Promise<{ width: number, height: number } | undefined> {\n    const blob = new Blob([data]);\n    return new Promise((resolve, reject) => {\n        const img = new Image();\n        img.src = URL.createObjectURL(blob);\n        img.onload = function() {\n            resolve({ width: img.naturalWidth, height: img.naturalHeight });\n        };\n        img.onerror = function() {\n            resolve(undefined);\n        };\n    });\n}\n\nexport function mimeTypeToLabel(mimeType?: string) {\n    if (!mimeType) return 'Unknown';\n\n    const map: { [name: string]: string } = {\n        'application/octet-stream': 'Binary',\n        'application/json': 'JSON',\n        'application/xml': 'XML',\n        'application/xhtml+xml': 'XHTML',\n        'application/javascript': 'JavaScript',\n        'application/typescript': 'TypeScript',\n\n        'application/pdf': 'PDF',\n        'application/zip': 'ZIP',\n        'application/x-rar-compressed': 'RAR',\n        'application/x-7z-compressed': '7Z',\n        'application/x-tar': 'TAR',\n        'application/x-gzip': 'GZIP',\n        'application/x-bzip2': 'BZIP2',\n        'application/x-bzip': 'BZIP',\n        'application/x-lzma': 'LZMA',\n        'application/x-xz': 'XZ',\n        'application/x-compress': 'COMPRESS',\n        'application/x-apple-diskimage': 'DMG',\n        'application/x-msdownload': 'EXE',\n        'application/x-ms-dos-executable': 'EXE',\n        'application/x-msi': 'MSI',\n        'application/x-ms-shortcut': 'LNK',\n        'application/x-shockwave-flash': 'SWF',\n        'application/x-sqlite3': 'SQLITE',\n        'application/x-iso9660-image': 'ISO',\n        'application/x-ms-wim': 'WIM',\n        'application/x-ms-xbap': 'XAP',\n\n        'video/x-msvideo': 'AVI',\n        'video/x-ms-wmv': 'WMV',\n        'video/x-ms-asf': 'ASF',\n\n        'video/mp4': 'MP4',\n        'video/mpeg': 'MPEG',\n        'video/quicktime': 'MOV',\n        'audio/x-wav': 'WAV',\n        'audio/x-aiff': 'AIFF',\n        'audio/x-m4a': 'M4A',\n        'audio/x-ms-wma': 'WMA',\n        'audio/x-ms-wax': 'WAX',\n        'audio/x-ms-wpl': 'WPL',\n        'audio/x-mpegurl': 'M3U',\n        'audio/x-scpls': 'PLS',\n        'audio/x-flac': 'FLAC',\n        'audio/x-ogg': 'OGG',\n        'audio/x-matroska': 'MKV',\n\n        'image/jpeg': 'JPEG',\n        'image/png': 'PNG',\n        'image/gif': 'GIF',\n        'image/bmp': 'BMP',\n        'image/tiff': 'TIFF',\n\n        'text/plain': 'TXT',\n        'text/html': 'HTML',\n        'text/javascript': 'JS',\n        'text/json': 'JSON',\n\n        'text/css': 'CSS',\n        'text/csv': 'CSV',\n        'text/calendar': 'ICS',\n        'text/xml': 'XML',\n    };\n    return map[mimeType] || (mimeType.split('/')[1] || 'Unknown').toUpperCase();\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { ChangeDetectorRef, Component, OnChanges, OnDestroy, input } from '@angular/core';\nimport { ProgressTracker } from '@deepkit/core-rxjs';\nimport { Subscription } from 'rxjs';\nimport { DecimalPipe } from '@angular/common';\nimport { DialogActionsComponent } from '../dialog/dialog.component';\nimport { ButtonComponent } from '../button/button.component';\n\n@Component({\n    selector: 'dui-indicator',\n    template: `\n        <div [class.invisible]=\"step() <= 0\" [style.width.%]=\"step() * 100\" class=\"active\"></div>\n    `,\n    styleUrls: ['./indicator.component.scss']\n})\nexport class IndicatorComponent {\n    step = input<number>(0);\n}\n\n\n@Component({\n    selector: 'dui-progress-indicator',\n    styles: [`\n        .indicator {\n            display: inline-flex;\n            align-items: center;\n            opacity: 1;\n            transition: opacity .3s ease-in-out;\n        }\n\n        .indicator.vertical {\n            flex-direction: column;\n            align-items: flex-start;\n        }\n\n        .label {\n            padding-left: 4px;\n        }\n\n        .percentage {\n            display: inline-block;\n            width: 55px;\n            text-align: right;\n        }\n\n        .hide {\n            opacity: 0;\n        }\n    `],\n    template: `\n      @if (progressTracker(); as progressTracker) {\n\n        @if (title()) {\n          <h2>{{ title() }}</h2>\n        }\n\n        @if (description()) {\n          <p>{{ description() }}</p>\n        }\n\n        <ng-content />\n\n        <div class=\"indicator\" [class.vertical]=\"display() === 'vertical'\" [class.hide]=\"progressTracker.ended\">\n          <dui-indicator [step]=\"step\"></dui-indicator>\n          @if (progressTracker.current; as group) {\n            <div class=\"label\">\n              <span class=\"percentage text-light text-tabular\">{{ progressTracker.progress * 100|number:'0.2-2' }}%</span> - {{ group.message }}\n            </div>\n          }\n        </div>\n\n        <dui-dialog-actions>\n          <dui-button textured (click)=\"progressTracker.stop()\">Stop</dui-button>\n        </dui-dialog-actions>\n      }\n    `,\n    imports: [IndicatorComponent, DecimalPipe, DialogActionsComponent, ButtonComponent, DialogActionsComponent, ButtonComponent],\n})\nexport class ProgressIndicatorComponent implements OnChanges, OnDestroy {\n    title = input<string>('Progress');\n    description = input<string>('');\n\n    progressTracker = input<ProgressTracker>();\n    display = input<'horizontal' | 'vertical'>('horizontal');\n\n    step: number = 0;\n    sub?: Subscription;\n\n    constructor(private cd: ChangeDetectorRef) {\n    }\n\n    ngOnChanges(): void {\n        if (this.sub) this.sub.unsubscribe();\n        const progressTracker = this.progressTracker();\n        if (progressTracker) {\n            this.sub = progressTracker.subscribe(v => {\n                this.step = this.progressTracker()!.progress;\n                this.cd.detectChanges();\n            });\n        }\n    }\n\n    ngOnDestroy(): void {\n        if (this.sub) this.sub.unsubscribe();\n    }\n}\n","import { Component } from '@angular/core';\n\n//see https://loading.io/css/\n@Component({\n    selector: 'dui-loading-spinner',\n    styles: [`\n        :host {\n            display: inline-block;\n            position: relative;\n            width: 80px;\n            height: 80px;\n            transform: scale(0.5);\n        }\n\n        div {\n            transform-origin: 40px 40px;\n            animation: lds-spinner 1.2s linear infinite;\n        }\n\n        div:after {\n            content: \" \";\n            display: block;\n            position: absolute;\n            top: 3px;\n            left: 37px;\n            width: 6px;\n            height: 18px;\n            border-radius: 20%;\n            background: #fff;\n        }\n\n        div:nth-child(1) {\n            transform: rotate(0deg);\n            animation-delay: -1.1s;\n        }\n\n        div:nth-child(2) {\n            transform: rotate(30deg);\n            animation-delay: -1s;\n        }\n\n        div:nth-child(3) {\n            transform: rotate(60deg);\n            animation-delay: -0.9s;\n        }\n\n        div:nth-child(4) {\n            transform: rotate(90deg);\n            animation-delay: -0.8s;\n        }\n\n        div:nth-child(5) {\n            transform: rotate(120deg);\n            animation-delay: -0.7s;\n        }\n\n        div:nth-child(6) {\n            transform: rotate(150deg);\n            animation-delay: -0.6s;\n        }\n\n        div:nth-child(7) {\n            transform: rotate(180deg);\n            animation-delay: -0.5s;\n        }\n\n        div:nth-child(8) {\n            transform: rotate(210deg);\n            animation-delay: -0.4s;\n        }\n\n        div:nth-child(9) {\n            transform: rotate(240deg);\n            animation-delay: -0.3s;\n        }\n\n        div:nth-child(10) {\n            transform: rotate(270deg);\n            animation-delay: -0.2s;\n        }\n\n        div:nth-child(11) {\n            transform: rotate(300deg);\n            animation-delay: -0.1s;\n        }\n\n        div:nth-child(12) {\n            transform: rotate(330deg);\n            animation-delay: 0s;\n        }\n\n        @keyframes lds-spinner {\n            0% {\n                opacity: 1;\n            }\n            100% {\n                opacity: 0;\n            }\n        }\n    `],\n    template: `\n        <div></div>\n        <div></div>\n        <div></div>\n        <div></div>\n        <div></div>\n        <div></div>\n        <div></div>\n        <div></div>\n        <div></div>\n        <div></div>\n        <div></div>\n        <div></div>\n    `\n})\nexport class LoadingSpinnerComponent {\n\n}\n","import { Component, effect, inject, input, model, OnDestroy, signal } from '@angular/core';\nimport { ObjectURLPipe } from '../../app/pipes';\nimport { IndicatorComponent } from '../../indicator/indicator.component';\nimport { FilesystemApi, FilesystemApiFile } from '../api';\nimport { LoadingSpinnerComponent } from '../../indicator/loading-spinner.component';\nimport { CacheData, FilesystemFileDataCache } from '../cache';\n\n@Component({\n    selector: 'dui-filesystem-detail',\n    template: `\n      @if (cacheData(); as cacheData) {\n        @if (cacheData.result(); as result) {\n          @if (result.mimeType.startsWith('image/')) {\n            <img class=\"image\" [src]=\"result.data|objectURL:result.mimeType\" alt=\"File preview\" />\n          } @else if (result.mimeType.startsWith('video/')) {\n            <video controls autoplay>\n              <source [src]=\"result.data|objectURL:result.mimeType\" type=\"{{ result.mimeType }}\">\n              Your browser does not support the video tag.\n            </video>\n          } @else {\n            <iframe [src]=\"result.data|objectURL:result.mimeType\" frameborder=\"0\" height=\"100%\" width=\"100%\">\n            </iframe>\n          }\n        } @else if (cacheData.invalid()) {\n          <div class=\"icon unknown-icon\"></div>\n        } @else {\n          <dui-loading-spinner></dui-loading-spinner>\n          <dui-indicator [step]=\"cacheData.progress()\" />\n        }\n      } @else {\n        <div class=\"icon unknown-icon\"></div>\n      }\n    `,\n    styleUrl: './file-detail.component.scss',\n    imports: [\n        ObjectURLPipe,\n        IndicatorComponent,\n        ObjectURLPipe,\n        LoadingSpinnerComponent,\n    ],\n})\nexport class FilesystemFileDetail implements OnDestroy {\n    api = input.required<FilesystemApi>();\n    file = input.required<FilesystemApiFile>();\n    data = model<Uint8Array | undefined>(undefined);\n\n    filesystemFileCache = inject(FilesystemFileDataCache);\n    cacheData = signal<CacheData | undefined>(undefined);\n\n    constructor() {\n        effect(() => {\n            const file = this.file();\n            if (!file) {\n                this.cacheData()?.disconnect();\n                this.cacheData.set(undefined);\n                return;\n            }\n\n            if (this.cacheData()?.path === file.path) return;\n            const cacheData = this.filesystemFileCache.connect(this.api(), file.path);\n            this.cacheData.set(cacheData);\n        });\n    }\n\n    ngOnDestroy() {\n        this.cacheData()?.disconnect();\n    }\n}\n","import { Component, effect, ElementRef, forwardRef, HostListener, Inject, inject, input, Input, OnDestroy, output, signal, ViewChild, viewChild } from '@angular/core';\nimport { LoadingSpinnerComponent } from '../../indicator/loading-spinner.component';\nimport { FormsModule } from '@angular/forms';\nimport { ObjectURLPipe } from '../../app/pipes';\nimport { CacheData, FilesystemFileThumbnailCache } from '../cache';\nimport { fileName, FilesystemApi, FilesystemApiFile, truncateFileName } from '../api';\nimport { FilesystemComponent } from '../filesystem.component';\n\nexport type ElementWithThumbnail = Element & { thumbnail?: FilesystemFileThumbnail };\n\n@Component({\n    selector: 'dui-filesystem-file-thumbnail',\n    template: `\n      @let file = this.file();\n\n      <div class=\"icon-container\">\n        @if (file.type === 'directory') {\n          <div class=\"icon folder-icon\"></div>\n        } @else {\n          @if (cacheData(); as cacheData) {\n            @if (cacheData.result(); as result) {\n              @if (result.mimeType.startsWith('image/')) {\n                <img #image [src]=\"result.data|objectURL:file.mimeType\" />\n              } @else {\n                <div class=\"icon unknown-icon\"></div>\n              }\n            } @else if (cacheData.invalid()) {\n              <div class=\"icon unknown-icon\"></div>\n            } @else {\n              <dui-loading-spinner></dui-loading-spinner>\n            }\n          } @else {\n            <div class=\"icon unknown-icon\"></div>\n          }\n        }\n      </div>\n\n      @if (withTitle()) {\n        <div class=\"title\">\n          @if (rename()) {\n            @if (view === 'icons') {\n              <textarea #input type=\"text\" [ngModel]=\"newName\" (ngModelChange)=\"setNewName($event)\" [ngModelOptions]=\"{standalone: true}\"\n                        (blur)=\"doRename(undefined)\" (keydown.escape)=\"doRename(undefined, $event)\" (keydown.enter)=\"doRename(newName, $event)\"></textarea>\n            } @else {\n              <input #input type=\"text\" [(ngModel)]=\"newName\" [ngModelOptions]=\"{standalone: true}\"\n                     (blur)=\"doRename(undefined)\" (keydown.escape)=\"doRename(undefined)\" (keydown.enter)=\"doRename(newName)\" />\n            }\n          } @else {\n            <span (contextmenu)=\"onContextMenu()\" (click)=\"selectFile()\">\n              @if (view === 'list') {\n                {{ fileName(file) }}\n              } @else {\n                {{ truncateFileName(fileName(file)) }}\n              }\n            </span>\n          }\n        </div>\n      }\n    `,\n    host: {\n        '[class.selected]': 'selected()',\n        '[class.list]': `view === 'list'`,\n    },\n    styleUrl: './file-thumbnail.component.scss',\n    imports: [\n        LoadingSpinnerComponent,\n        FormsModule,\n        ObjectURLPipe,\n    ],\n})\nexport class FilesystemFileThumbnail implements OnDestroy {\n    truncateFileName = truncateFileName;\n    fileName = fileName;\n\n    loading = signal(true);\n    loadingFailed = signal(false);\n    thumbnailCache = inject(FilesystemFileThumbnailCache);\n    cacheData = signal<CacheData | undefined>(undefined);\n\n    newName = '';\n\n    @Input() view: 'icons' | 'list' = 'icons';\n\n    api = input.required<FilesystemApi>();\n\n    file = input.required<FilesystemApiFile>();\n\n    withTitle = input(true);\n    selected = input(false);\n    rename = input(false);\n\n    intersection = signal(false);\n\n    select = output<FilesystemApiFile>();\n    renamed = output<string | undefined>();\n    image = viewChild('image', { read: ElementRef });\n\n    @ViewChild('input') set inputRef(ref: ElementRef) {\n        if (!!ref) {\n            setTimeout(() => {\n                ref.nativeElement.focus();\n                ref.nativeElement.setSelectionRange(0, this.newName.lastIndexOf('.') || this.newName.length);\n            });\n        }\n    }\n\n    elementRef = inject(ElementRef);\n\n    setNewName(name: string) {\n        this.newName = name.replace(/[\\r\\n]+/g, ' ').trim();\n    }\n\n    constructor(\n        @Inject(forwardRef(() => FilesystemComponent)) private filesystemComponent: FilesystemComponent,\n    ) {\n        filesystemComponent.registerThumbnail(this);\n        (this.elementRef.nativeElement as ElementWithThumbnail).thumbnail = this;\n        effect(() => {\n            const file = this.file();\n            this.newName = fileName(file);\n            this.loadingFailed.set(false);\n        });\n\n        effect(() => {\n            const cacheData = this.cacheData();\n            const intersection = this.intersection();\n            const file = this.file();\n            const api = this.api();\n            if (intersection) {\n                if (cacheData) {\n                    if (cacheData.path === file.path) {\n                        // Already connected\n                        return;\n                    } else {\n                        // File has changed\n                        cacheData.disconnect();\n                    }\n                }\n                this.cacheData.set(this.thumbnailCache.connect(api, file.path));\n            } else {\n                if (!cacheData) return;\n                cacheData.disconnect();\n                this.cacheData.set(undefined);\n            }\n        });\n    }\n\n    ngOnDestroy() {\n        this.filesystemComponent.unregisterThumbnail(this);\n        this.cacheData()?.disconnect();\n    }\n\n    loaded(error: boolean = false) {\n        this.loading.set(false);\n        this.loadingFailed.set(error);\n    }\n\n    doRename(name: string | undefined, event?: Event) {\n        this.renamed.emit(name);\n        this.newName = fileName(this.file());\n        if (event) {\n            event.stopPropagation();\n            event.preventDefault();\n        }\n    }\n\n    @HostListener('contextmenu')\n    onContextMenu() {\n        if (!this.selected()) {\n            this.select.emit(this.file());\n        }\n    }\n\n    @HostListener('click')\n    selectFile() {\n        this.select.emit(this.file());\n    }\n\n}\n","import { Component, computed, effect, HostListener, inject, input, OnDestroy, output, signal } from '@angular/core';\nimport { ButtonGroupComponent, ButtonGroupsComponent } from '../../button/button.component';\nimport { IconComponent } from '../../icon/icon.component';\nimport { HumanFileSizePipe, ObjectURLPipe } from '../../app/pipes';\nimport { AsyncPipe, DatePipe } from '@angular/common';\nimport { LoadingSpinnerComponent } from '../../indicator/loading-spinner.component';\nimport { fileName, FilesystemApi, FilesystemApiFile } from '../api';\nimport { CacheData, FilesystemFileQuickLookCache } from '../cache';\nimport { imageSize, mimeTypeToLabel } from '../utils';\nimport { IndicatorComponent } from '../../indicator/indicator.component';\n\n@Component({\n    selector: 'dui-filesystem-file-quick-look',\n    template: `\n      @let files = this.files();\n      <dui-button-groups>\n        <dui-button-group>\n          <dui-icon name=\"clear\" (click)=\"close.emit()\" clickable></dui-icon>\n          @if (files.length > 1) {\n            <dui-icon name=\"arrow_left\" (click)=\"prev()\" clickable></dui-icon>\n          }\n          @if (files.length > 1) {\n            <dui-icon name=\"arrow_right\" (click)=\"next()\" clickable></dui-icon>\n          }\n          @if (file(); as file) {\n            <div>\n              {{ fileName(file) }}\n            </div>\n          }\n        </dui-button-group>\n        <!--        <dui-button-group float=\"right\">-->\n        <!--          <dui-icon name=\"share\" clickable></dui-icon>-->\n        <!--        </dui-button-group>-->\n      </dui-button-groups>\n      <div class=\"overlay-scrollbar-small quick-look-content\">\n        @if (file(); as file) {\n          @if (file.type === 'directory') {\n            <div class=\"icon folder-icon\"></div>\n          } @else {\n            @if (cacheData(); as cacheData) {\n              @if (cacheData.result(); as result) {\n                @if (result.mimeType.startsWith('image/')) {\n                  <img class=\"image\" [src]=\"result.data|objectURL:result.mimeType\" alt=\"File preview\" />\n                } @else if (result.mimeType.startsWith('video/')) {\n                  <video controls autoplay>\n                    <source [src]=\"result.data|objectURL:result.mimeType\" type=\"{{ result.mimeType }}\">\n                    Your browser does not support the video tag.\n                  </video>\n                } @else {\n                  <iframe [src]=\"result.data|objectURL:result.mimeType\" frameborder=\"0\" height=\"100%\" width=\"100%\">\n                  </iframe>\n                }\n              } @else if (cacheData.invalid()) {\n                <div class=\"icon unknown-icon\"></div>\n              } @else {\n                <dui-loading-spinner></dui-loading-spinner>\n                <dui-indicator [step]=\"cacheData.progress()\" />\n              }\n            } @else {\n              <div class=\"icon unknown-icon\"></div>\n            }\n          }\n        }\n      </div>\n      @if (file(); as file) {\n        <div class=\"stats text-selection\">\n          <div class=\"stat\">\n            <div class=\"label\">Size</div>\n            <div class=\"value\">\n              <div>{{ file.size | fileSize }}</div>\n              @if (dim()|async; as dim) {\n                <div>{{ dim.width }}x{{ dim.height }}</div>\n              }\n            </div>\n          </div>\n          <div class=\"stat\">\n            <div class=\"label\">Type</div>\n            @if (cacheData()?.result(); as result) {\n              <div class=\"value\">{{ mimeTypeToLabel(result.mimeType) }}</div>\n            } @else {\n              <div class=\"value\">{{ mimeTypeToLabel(file.mimeType) }}</div>\n            }\n          </div>\n          <!--            <div class=\"stat\">-->\n          <!--                <div class=\"label\">Created</div>-->\n          <!--                <div class=\"value\">{{file.created | date:'medium'}}</div>-->\n          <!--            </div>-->\n          <div class=\"stat\">\n            <div class=\"label\">Modified</div>\n            <div class=\"value\">{{ file.lastModified | date:'medium' }}</div>\n          </div>\n        </div>\n      }\n    `,\n    styleUrl: './file-quick-look.component.scss',\n    host: {\n        '[attr.tabindex]': '0',\n    },\n    imports: [\n        ButtonGroupsComponent,\n        ButtonGroupComponent,\n        IconComponent,\n        ObjectURLPipe,\n        DatePipe,\n        LoadingSpinnerComponent,\n        HumanFileSizePipe,\n        LoadingSpinnerComponent,\n        HumanFileSizePipe,\n        AsyncPipe,\n        IndicatorComponent,\n    ],\n})\nexport class FilesystemFileQuickLook implements OnDestroy {\n    fileName = fileName;\n    mimeTypeToLabel = mimeTypeToLabel;\n\n    api = input.required<FilesystemApi>();\n    files = input.required<FilesystemApiFile[]>();\n\n    close = output();\n\n    file = signal<FilesystemApiFile | undefined>(undefined);\n\n    filesystemFileCache = inject(FilesystemFileQuickLookCache);\n    cacheData = signal<CacheData | undefined>(undefined);\n\n    dim = computed(() => {\n        const result = this.cacheData()?.result();\n        if (!result) return;\n        if (!result.mimeType.startsWith('image/')) return;\n        return imageSize(result.data);\n    });\n\n    constructor() {\n        effect(() => {\n            const files = this.files();\n            const file = this.file();\n            if (!file && files.length) {\n                this.file.set(files[0]);\n            }\n        });\n        effect(() => {\n            const file = this.file();\n            if (!file) {\n                this.cacheData()?.disconnect();\n                this.cacheData.set(undefined);\n                return;\n            }\n\n            if (this.cacheData()?.path === file.path) return;\n            const cacheData = this.filesystemFileCache.connect(this.api(), file.path);\n            this.cacheData.set(cacheData);\n        });\n    }\n\n    ngOnDestroy() {\n        this.cacheData()?.disconnect();\n    }\n\n    next() {\n        const files = this.files();\n        const file = this.file();\n        if (!file) return;\n        const index = files.indexOf(file);\n        if (index < files.length - 1) {\n            this.select(files[index + 1]);\n        } else {\n            this.select(files[0]);\n        }\n    }\n\n    prev() {\n        const files = this.files();\n        const file = this.file();\n        if (!file) return;\n        const index = files.indexOf(file);\n        if (index > 0) {\n            this.select(files[index - 1]);\n        } else {\n            this.select(files[files.length - 1]);\n        }\n    }\n\n    @HostListener('keydown', ['$event'])\n    onClose($event: KeyboardEvent) {\n        if ($event.key === 'Escape' || $event.key === ' ') {\n            $event.stopPropagation();\n            this.close.emit();\n        }\n    }\n\n    select(file: FilesystemApiFile) {\n        if (this.file() === file) return;\n        this.file.set(file);\n    }\n}\n","import { Component, computed, effect, ElementRef, forwardRef, HostListener, inject, input, model, OnDestroy, OnInit, output, QueryList, signal, viewChild, ViewChild, ViewChildren } from '@angular/core';\nimport { DatePipe } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { FilesystemApi, FilesystemApiFile, FilesystemState } from './api';\nimport { HumanFileSizePipe } from '../app/pipes';\nimport { ButtonComponent, ButtonGroupComponent, ButtonGroupsComponent, FileDropDirective, FilePickerDirective, FilePickerItem } from '../button/button.component';\nimport { IconComponent } from '../icon/icon.component';\nimport { ContextDropdownDirective, DropdownComponent, DropdownContainerDirective, DropdownItemComponent, DropdownSplitterComponent } from '../button/dropdown.component';\nimport { InputComponent } from '../input/input.component';\nimport { TableCellDirective, TableColumnDirective, TableComponent } from '../table/table.component';\nimport { DuiDialog } from '../dialog/dialog';\nimport { mimeTypeToLabel } from './utils';\nimport { FilesystemFileDataCache, FilesystemFileQuickLookCache, FilesystemFileThumbnailCache } from './cache';\nimport { FilesystemFileDetail } from './components/file-detail.component';\nimport { type ElementWithThumbnail, FilesystemFileThumbnail } from './components/file-thumbnail.component';\nimport { FilesystemFileQuickLook } from './components/file-quick-look.component';\nimport { MenuCheckboxDirective, MenuComponent, MenuItemComponent, MenuSeparatorComponent } from '../app/menu';\n\nfunction sortByName(a: FilesystemApiFile, b: FilesystemApiFile) {\n    return a.path.localeCompare(b.path);\n}\n\nfunction sortByCreated(a: FilesystemApiFile, b: FilesystemApiFile) {\n    const at = a.created?.getTime() || 0;\n    const bt = b.created?.getTime() || 0;\n    return at - bt;\n}\n\nfunction sortByModified(a: FilesystemApiFile, b: FilesystemApiFile) {\n    const at = a.lastModified?.getTime() || 0;\n    const bt = b.lastModified?.getTime() || 0;\n    return at - bt;\n}\n\nfunction sortByMimeType(a: FilesystemApiFile, b: FilesystemApiFile) {\n    return (a.mimeType || '').localeCompare(b.mimeType || '');\n}\n\nfunction sortBySize(a: FilesystemApiFile, b: FilesystemApiFile) {\n    return a.size - b.size;\n}\n\n// folder first\nfunction sortByType(a: FilesystemApiFile, b: FilesystemApiFile) {\n    return a.type === 'directory' ? -1 : 1;\n}\n\n@Component({\n    selector: 'dui-filesystem',\n    template: `\n      @let sort = this.sort();\n\n      <dui-menu>\n        <dui-menu-item label=\"File\">\n          <dui-menu-item label=\"New folder\" (click)=\"createFolder()\" />\n          <dui-menu-item label=\"Upload\" duiFilePicker duiFileMultiple (duiFilePickerChange)=\"upload($event)\" />\n        </dui-menu-item>\n        <dui-menu-item label=\"Edit\">\n          <dui-menu-item label=\"Rename\" (click)=\"renameFile.set(selected()[0])\" [disabled]=\"!selected().length\" />\n          <dui-menu-item label=\"Delete\" (click)=\"deleteSelected()\" [disabled]=\"!selected().length\" />\n          <dui-menu-item label=\"Quick Look\" (click)=\"openQuickLook()\" [disabled]=\"!selected().length\" />\n        </dui-menu-item>\n        <dui-menu-item label=\"View\">\n          <dui-menu-item label=\"Sort By\">\n            <dui-menu-checkbox label=\"Name\" [checked]=\"sort.by === 'name'\" (click)=\"sortBy('name')\" />\n            <dui-menu-checkbox label=\"Created\" [checked]=\"sort.by === 'created'\" (click)=\"sortBy('created')\" />\n            <dui-menu-checkbox label=\"Modified\" [checked]=\"sort.by === 'modified'\" (click)=\"sortBy('modified')\" />\n            <dui-menu-checkbox label=\"Type\" [checked]=\"sort.by === 'type'\" (click)=\"sortBy('type')\" />\n            <dui-menu-checkbox label=\"Size\" [checked]=\"sort.by === 'size'\" (click)=\"sortBy('size')\" />\n            <dui-menu-separator />\n            <dui-menu-checkbox label=\"Ascending\" [checked]=\"sort.direction === 'asc'\" (click)=\"sortDirection('asc')\" />\n            <dui-menu-checkbox label=\"Descending\" [checked]=\"sort.direction === 'desc'\" (click)=\"sortDirection('desc')\" />\n            <dui-menu-separator />\n            <dui-menu-checkbox label=\"Folder first\" [checked]=\"sort.folderFirst\" (click)=\"toggleFolderFirst()\" />\n          </dui-menu-item>\n          <dui-menu-checkbox label=\"Icons\" [checked]=\"view() === 'icons'\" (click)=\"view.set('icons')\" />\n          <dui-menu-checkbox label=\"List\" [checked]=\"view() === 'list'\" (click)=\"view.set('list')\" />\n          \n        </dui-menu-item>\n      </dui-menu>\n\n      <dui-button-groups>\n        <dui-button-group padding=\"none\" style=\"flex: 1;\">\n          <!--                <dui-button textured tight icon=\"arrow_left\"></dui-button>-->\n          <!--                <dui-button textured tight icon=\"arrow_right\"></dui-button>-->\n          <dui-button textured tight icon=\"reload\" (click)=\"load()\"></dui-button>\n          <dui-button textured tight icon=\"arrow_up\" (click)=\"goUp()\"></dui-button>\n          <dui-input style=\"flex: 1;\" round textured [(ngModel)]=\"path\" (enter)=\"load()\"></dui-input>\n        </dui-button-group>\n        <!--        <dui-button-group>-->\n        <!--          <dui-input icon=\"search\" round placeholder=\"Search ...\" textured></dui-input>-->\n        <!--        </dui-button-group>-->\n      </dui-button-groups>\n\n      <dui-dropdown #contextMenu>\n        <dui-dropdown-item [disabled]=\"!selected().length\" (click)=\"open(filesSelected()[0]!.path)\">Open</dui-dropdown-item>\n        <dui-dropdown-item [disabled]=\"!selected().length\" (click)=\"openPublic(filesSelected()[0]!.path)\">Open Public URL</dui-dropdown-item>\n<!--        <dui-dropdown-item [disabled]=\"!selected().length\" (click)=\"openPrivate(filesSelected()[0]!.path)\">Open Private URL</dui-dropdown-item>-->\n        <dui-dropdown-splitter></dui-dropdown-splitter>\n        <dui-dropdown-item [disabled]=\"!selected().length\" (click)=\"deleteSelected()\">Delete</dui-dropdown-item>\n        <dui-dropdown-splitter></dui-dropdown-splitter>\n        <dui-dropdown-item [disabled]=\"!selected().length\" (click)=\"renameFile.set(selected()[0])\">Rename</dui-dropdown-item>\n        <!--            <dui-dropdown-item [disabled]=\"!selected().length\">Duplicate</dui-dropdown-item>-->\n        <dui-dropdown-item [disabled]=\"!selected().length\" (click)=\"openQuickLook()\">Quick Look</dui-dropdown-item>\n        <!--            <dui-dropdown-splitter></dui-dropdown-splitter>-->\n        <!--            <dui-dropdown-item [disabled]=\"!selected().length\">Copy</dui-dropdown-item>-->\n        <!--            <dui-dropdown-item [disabled]=\"!selected().length\">Download</dui-dropdown-item>-->\n        <!--            <dui-dropdown-item [disabled]=\"!selected().length\">Share</dui-dropdown-item>-->\n      </dui-dropdown>\n\n      <dui-dropdown #quickLook [keepOpen]=\"true\" normalize-style>\n        <ng-container *dropdownContainer>\n          @if (filesSelected(); as files) {\n            @if (files.length) {\n              <dui-filesystem-file-quick-look (close)=\"closeQuickLook()\" [files]=\"files\" [api]=\"api()\"></dui-filesystem-file-quick-look>\n            }\n          }\n        </ng-container>\n      </dui-dropdown>\n\n      @let media = this.media();\n\n      <div class=\"content\"\n           [class.list]=\"view() === 'list'\"\n           [class.file]=\"media && media.type === 'file'\"\n           [class.overlay-scrollbar-small]=\"media && media.type === 'directory'\"\n           [class.folder]=\"media && media.type === 'directory'\"\n           (click)=\"selectBackground($event)\" duiFileDrop duiFileDropMultiple (duiFileDropChange)=\"upload($event)\"\n           #container\n           [contextDropdown]=\"contextMenu\">\n        @if (!media && path() !== '/') {\n          <div class=\"error\">\n            <dui-icon name=\"error\" />\n            <div class=\"message\">Path {{ path() }} not found</div>\n          </div>\n        } @else {\n          @if (media && media.type === 'file') {\n            <dui-filesystem-detail [file]=\"media\" [api]=\"api()\"></dui-filesystem-detail>\n          }\n          @if (media && media.type === 'directory') {\n            @if (view() === 'list') {\n              <dui-table selectable (selectedChange)=\"tableSelect($event)\" [items]=\"filesSorted()\" (rowDblClick)=\"open($event.path)\" no-focus-outline>\n                <dui-table-column name=\"name\" [width]=\"350\">\n                  <ng-container *duiTableCell=\"let item\">\n                    <dui-filesystem-file-thumbnail\n                      [file]=\"item\" [api]=\"api()\"\n                      [view]=\"view()\"\n                      (select)=\"select(item)\" (renamed)=\"fileRenamed($event)\" [rename]=\"item.path === renameFile()\"\n                      [selected]=\"selected().includes(item.path)\" />\n                  </ng-container>\n                </dui-table-column>\n                <dui-table-column name=\"modified\">\n                  <ng-container *duiTableCell=\"let item\">\n                    {{ item.modified | date:'medium' }}\n                  </ng-container>\n                </dui-table-column>\n                <dui-table-column name=\"size\">\n                  <ng-container *duiTableCell=\"let item\">\n                    {{ item.size | fileSize }}\n                  </ng-container>\n                </dui-table-column>\n                <dui-table-column name=\"Kind\">\n                  <ng-container *duiTableCell=\"let item\">\n                    {{ item.type === 'directory' ? 'Folder' : mimeTypeToLabel(item.mimeType) }}\n                  </ng-container>\n                </dui-table-column>\n                <!--                        <dui-table-column name=\"created\">-->\n                <!--                            <ng-container *duiTableCell=\"let item\">-->\n                <!--                                {{item.created | date:'medium'}}-->\n                <!--                            </ng-container>-->\n                <!--                        </dui-table-column>-->\n              </dui-table>\n            }\n            @if (view() === 'icons') {\n              @for (file of filesSorted(); track $index) {\n                <dui-filesystem-file-thumbnail\n                  [file]=\"file\" [api]=\"api()\" (select)=\"select(file)\"\n                  (renamed)=\"fileRenamed($event)\" [rename]=\"file.path === renameFile()\"\n                  (dblclick)=\"open(file.path)\"\n                  [selected]=\"selected().includes(file.path)\" />\n              }\n            }\n          }\n        }\n      </div>\n    `,\n    styleUrl: './filesystem.component.scss',\n    host: {\n        '[attr.tabindex]': '0',\n    },\n    providers: [\n        FilesystemFileDataCache,\n        FilesystemFileQuickLookCache,\n        FilesystemFileThumbnailCache,\n    ],\n    imports: [\n        DropdownComponent,\n        DropdownItemComponent,\n        FilePickerDirective,\n        DropdownSplitterComponent,\n        ButtonGroupsComponent,\n        ButtonGroupComponent,\n        ButtonComponent,\n        InputComponent,\n        FormsModule,\n        FilesystemFileQuickLook,\n        FileDropDirective,\n        ContextDropdownDirective,\n        IconComponent,\n        FilesystemFileDetail,\n        TableComponent,\n        TableColumnDirective,\n        TableCellDirective,\n        HumanFileSizePipe,\n        forwardRef(() => FilesystemFileThumbnail),\n        DatePipe,\n        DropdownContainerDirective,\n        MenuComponent,\n        MenuItemComponent,\n        MenuCheckboxDirective,\n        MenuSeparatorComponent,\n    ],\n})\nexport class FilesystemComponent implements OnInit, OnDestroy {\n    mimeTypeToLabel = mimeTypeToLabel;\n\n    api = input.required<FilesystemApi>();\n    dialogMode = input(false);\n    selectMultiple = input(false);\n\n    path = model<string>('/');\n\n    media = signal<FilesystemApiFile | undefined>(undefined);\n    files = signal<FilesystemApiFile[]>([]);\n\n    sort = signal<{ by: string, direction: 'asc' | 'desc', folderFirst: boolean }>({\n        by: 'name',\n        direction: 'asc',\n        folderFirst: true,\n    });\n\n    view = model<'icons' | 'list'>('icons');\n\n    selected = model<string[]>([]);\n\n    renameFile = model<string | undefined>(undefined);\n\n    containerElementRef = viewChild.required('container', { read: ElementRef });\n\n    loading = signal(false);\n\n    filesSelected = computed(() => {\n        const selected = new Set(this.selected());\n        return this.files().filter(file => selected.has(file.path));\n    });\n\n    filesSorted = computed(() => {\n        const sort = this.sort();\n        const files = this.files().slice();\n\n        if (sort.by === 'name') {\n            files.sort(sortByName);\n        } else if (sort.by === 'size') {\n            files.sort(sortBySize);\n        } else if (sort.by === 'created') {\n            files.sort(sortByCreated);\n        } else if (sort.by === 'modified') {\n            files.sort(sortByModified);\n        } else if (sort.by === 'type') {\n            files.sort(sortByMimeType);\n        }\n\n        if (sort.direction === 'desc') files.reverse();\n        if (sort.folderFirst) files.sort(sortByType);\n\n        return files;\n    });\n\n    activeFile = output<FilesystemApiFile>();\n\n    @ViewChild('quickLook', { read: DropdownComponent }) quickLook?: DropdownComponent;\n\n    @ViewChildren(FilesystemFileThumbnail, { read: FilesystemFileThumbnail }) thumbnails?: QueryList<FilesystemFileThumbnail>;\n\n    element = inject(ElementRef);\n    dialog = inject(DuiDialog);\n    state = inject(FilesystemState);\n    intersectionObserver?: IntersectionObserver;\n\n    constructor() {\n        effect(async () => {\n            const path = this.path();\n            if (!path) return;\n            this.loading.set(true);\n            try {\n                const media = await this.api().getFile(path);\n                this.media.set(media);\n                if (media && media.type === 'directory') {\n                    this.files.set(await this.api().getFiles(path));\n                } else {\n                    this.files.set([]);\n                }\n            } catch (error) {\n                this.media.set(undefined);\n                this.files.set([]);\n            } finally {\n                this.loading.set(false);\n            }\n        });\n        effect(() => {\n            const container = this.containerElementRef().nativeElement;\n            if (this.intersectionObserver) {\n                this.intersectionObserver.disconnect();\n            }\n            this.intersectionObserver = new IntersectionObserver(entries => {\n                for (const entry of entries) {\n                    const thumbnail = (entry.target as ElementWithThumbnail).thumbnail as FilesystemFileThumbnail;\n                    if (!thumbnail) continue;\n                    thumbnail.intersection.set(entry.isIntersecting);\n                }\n            }, {\n                root: container,\n                threshold: 0.1,\n            });\n        });\n    }\n\n    registerThumbnail(thumbnail: FilesystemFileThumbnail) {\n        if (!this.intersectionObserver) return;\n        const element = thumbnail.elementRef.nativeElement;\n        this.intersectionObserver.observe(element);\n    }\n\n    unregisterThumbnail(thumbnail: FilesystemFileThumbnail) {\n        if (!this.intersectionObserver) return;\n        const element = thumbnail.elementRef.nativeElement;\n        this.intersectionObserver.unobserve(element);\n    }\n\n    // constructor(\n    //     private element: ElementRef,\n    //     private dialog: DuiDialog,\n    //     public router: Router,\n    //     public activatedRoute: ActivatedRoute,\n    //     public events: EventDispatcher,\n    // ) {\n    //     this.lifecycle.add(this.events.listen(fileAddedEvent, () => this.load()));\n    //     this.lifecycle.add(this.events.listen(fileUploadedEvent, () => this.load()));\n    //     activatedRoute.queryParams.subscribe(params => {\n    //         if (params.path) {\n    //             this.path = params.path;\n    //             this.load();\n    //         }\n    //     });\n    // }\n\n    tableSelect(selected: FilesystemApiFile[]) {\n        this.selected.set(selected.map(v => v.path));\n    }\n\n    sortBy(by: string) {\n        this.sort.update(v => ({ ...v, by }));\n    }\n\n    sortDirection(direction: 'asc' | 'desc') {\n        this.sort.update(v => ({ ...v, direction }));\n    }\n\n    toggleFolderFirst() {\n        this.sort.update(v => ({ ...v, folderFirst: !v.folderFirst }));\n    }\n\n    async fileRenamed(newName?: string) {\n        const file = this.renameFile();\n        if (!file) return;\n        try {\n            if (!newName) return;\n            await this.api().renameFile(file, newName);\n        } finally {\n            this.renameFile.set(undefined);\n            this.element.nativeElement.focus();\n        }\n        await this.loadActiveFolder();\n    }\n\n    @HostListener('keydown', ['$event'])\n    keyDown(event: KeyboardEvent) {\n        if (this.renameFile()) return;\n        const selected = this.selected();\n\n        if (event.key === 'Enter') {\n            this.renameFile.set(selected[0]);\n        }\n\n        if (event.key === 'Delete') {\n            void this.deleteSelected();\n        } else if (event.key === ' ') {\n            if (!this.quickLook) return;\n            if (this.quickLook.isOpen()) {\n                this.quickLook.close();\n            } else {\n                this.openQuickLook();\n            }\n        }\n\n        if (this.thumbnails) {\n            const thumbnails: { element: ElementRef, file: FilesystemApiFile }[] = this.thumbnails.toArray().map(v => ({ element: v.elementRef, file: v.file() }));\n            const found = thumbnails.find(t => t.file.path === selected[selected.length - 1]);\n            if (!found) {\n                //special handling\n                return;\n            }\n            const selectedRect = found?.element.nativeElement.getBoundingClientRect();\n            let index = thumbnails.findIndex(t => t.file.path === selected[selected.length - 1]);\n\n            if (event.key === 'ArrowLeft') {\n                while (index-- > 0) {\n                    const thumbnailRect = thumbnails[index].element.nativeElement.getBoundingClientRect();\n                    if (thumbnailRect.top !== selectedRect.top) break;\n                    if (thumbnailRect.left < selectedRect.left) {\n                        this.select(thumbnails[index].file);\n                        return;\n                    }\n                }\n                if (index > 0) {\n                    this.select(thumbnails[index].file);\n                }\n            } else if (event.key === 'ArrowRight') {\n                while (index++ < thumbnails.length - 1) {\n                    const thumbnailRect = thumbnails[index].element.nativeElement.getBoundingClientRect();\n                    if (thumbnailRect.top !== selectedRect.top) break;\n                    if (thumbnailRect.left > selectedRect.left) {\n                        this.select(thumbnails[index].file);\n                        return;\n                    }\n                }\n                if (index < thumbnails.length - 1) {\n                    this.select(thumbnails[index].file);\n                }\n            } else if (event.key === 'ArrowDown') {\n                while (index++ < thumbnails.length - 1) {\n                    const thumbnailRect = thumbnails[index].element.nativeElement.getBoundingClientRect();\n                    if (thumbnailRect.left !== selectedRect.left) continue;\n                    if (thumbnailRect.top > selectedRect.top) {\n                        this.select(thumbnails[index].file);\n                        return;\n                    }\n                }\n                this.select(thumbnails[thumbnails.length - 1].file);\n            } else if (event.key === 'ArrowUp') {\n                while (index-- > 0) {\n                    const thumbnailRect = thumbnails[index].element.nativeElement.getBoundingClientRect();\n                    if (thumbnailRect.left !== selectedRect.left) continue;\n                    if (thumbnailRect.top < selectedRect.top) {\n                        this.select(thumbnails[index].file);\n                        return;\n                    }\n                }\n                this.select(thumbnails[0].file);\n            }\n        }\n    }\n\n    openQuickLook() {\n        if (!this.quickLook) return;\n        if (!this.selected().length) return;\n        const selected = this.getSelectedFileElementForQuickLook();\n        this.quickLook.open('center', selected);\n    }\n\n    // async openPrivate(path: string) {\n    //     const url = await this.api().getPrivateUrl(path);\n    //     open(url, '_blank');\n    // }\n\n    async openPublic(path: string) {\n        const url = await this.api().getPublicUrl(path);\n        open(url, '_blank');\n    }\n\n    open(path: string, andSelect = false) {\n        this.path.set(path);\n        void this.load(andSelect);\n    }\n\n    goUp() {\n        const path = this.path().split('/').slice(0, -1).join('/') || '/';\n        this.open(path);\n    }\n\n    closeQuickLook() {\n        if (!this.quickLook) return;\n        this.quickLook.close();\n        this.element.nativeElement.focus();\n    }\n\n    async deleteSelected() {\n        const selected = this.selected();\n        if (!selected.length) return;\n        const a = await this.dialog.confirm('Delete', 'Are you sure you want to delete the selected files?');\n        if (!a) return;\n        await this.api().remove(selected);\n        await this.load();\n    }\n\n    selectBackground(event: MouseEvent) {\n        if (this.view() === 'icons') {\n            if (event.target instanceof Element && event.target.closest('dui-filesystem-file-thumbnail')) return;\n            this.selected.set([]);\n            if (this.quickLook) this.quickLook.close();\n        }\n    }\n\n    private getSelectedFileElementForQuickLook(): ElementRef | undefined {\n        const selected = this.selected();\n        const thumbnail = this.thumbnails?.toArray().find(t => t.file().path === selected[selected.length - 1]);\n        if (!thumbnail) return;\n        const image = thumbnail.image();\n        return image?.nativeElement || thumbnail.elementRef.nativeElement;\n    }\n\n    select(file: FilesystemApiFile) {\n        const selected = this.selected();\n        const files = this.filesSorted();\n\n        if (window.event instanceof PointerEvent || window.event instanceof KeyboardEvent) {\n            if (window.event.shiftKey && this.selected().length) {\n                // select all files between first in `files` and `file`\n                const first = files.findIndex(v => v.path === selected[0]);\n                const last = files.indexOf(file);\n                this.selected.set(files.slice(Math.min(first, last), Math.max(first, last) + 1).map(v => v.path));\n                return;\n            }\n\n            if (window.event.ctrlKey || window.event.metaKey) {\n                if (selected.includes(file.path)) {\n                    selected.splice(selected.indexOf(file.path), 1);\n                } else {\n                    selected.push(file.path);\n                }\n            } else {\n                this.selected.set([file.path]);\n            }\n        } else {\n            this.selected.set([file.path]);\n        }\n\n        if (this.quickLook) {\n            this.quickLook.setInitiator(this.getSelectedFileElementForQuickLook());\n        }\n    }\n\n    ngOnDestroy() {\n    }\n\n    upload(files: FilePickerItem[]) {\n        const media = this.media();\n        const dir = media && media.type === 'directory' ? media.path : this.path();\n\n        for (const file of files) {\n            this.state.addUpload({\n                addFile: (...args) => this.api().addFile(...args),\n                dir,\n                name: file.name,\n                data: file.data,\n            });\n        }\n    }\n\n    getFolder() {\n        return this.path() || '/';\n    }\n\n    async createFolder() {\n        const name = await this.dialog.prompt('Folder name', '');\n        if (!name) return;\n        await this.api().createFolder(this.getFolder() + '/' + name);\n        await this.load();\n    }\n\n    ngOnInit() {\n        this.load();\n    }\n\n    async load(andSelect = false) {\n        if (this.loading()) return;\n        const media = this.media();\n        this.loading.set(true);\n        try {\n            const path = this.getFolder();\n            this.media.set(await this.api().getFile(path));\n            if (media) this.activeFile.emit(media);\n            if (media && andSelect) {\n                //for what?\n            }\n            await this.loadActiveFolder();\n        } finally {\n            this.loading.set(false);\n        }\n    }\n\n    async loadActiveFolder() {\n        const media = this.media();\n        if (media && media.type === 'directory') {\n            await this.loadFolder(media.path);\n        }\n    }\n\n    async loadFolder(dir: string) {\n        this.files.set(await this.api().getFiles(dir));\n    }\n}\n","import { Component, computed } from '@angular/core';\nimport { AsyncPipe } from '@angular/common';\nimport { FilesystemState, truncateFileName } from '../api';\nimport { ButtonComponent } from '../../button/button.component';\nimport { IndicatorComponent } from '../../indicator/indicator.component';\n\n@Component({\n    selector: 'dui-filesystem-uploader',\n    standalone: true,\n    template: `\n      @if (filesToUpload().length; as total) {\n        @if (state.upload(); as upload) {\n          Upload {{ currentIndex() }} of {{ total }}: {{ truncateFileName(upload.name) }}\n          @if (upload && upload.progress && upload.progress.upload|async; as progress) {\n            <dui-indicator [step]=\"progress.progress\"/>\n          }\n          <dui-button small (click)=\"cancel()\">Cancel</dui-button>\n        }\n      } @else if (state.uploadQueue().length) {\n        <span>Uploaded ({{state.uploadQueue().length}}) successfully</span>\n      }\n    `,\n    styles: [`\n      :host {\n        display: flex;\n        flex-direction: row;\n        gap: 8px;\n        align-items: center;\n      }\n      \n      span {\n        color: var(--dui-text-grey);\n      }\n    `],\n    imports: [\n        AsyncPipe,\n        ButtonComponent,\n        IndicatorComponent,\n    ],\n})\nexport class FileUploaderComponent {\n    truncateFileName = truncateFileName;\n    filesToUpload = computed(() => this.state.uploadQueue().filter(v => !v.done && !v.errored && !v.aborted));\n\n    currentIndex = computed(() => {\n        const upload = this.state.upload();\n        if (!upload) return 0;\n        return this.state.uploadQueue().indexOf(upload) + 1;\n    });\n\n    constructor(public state: FilesystemState) {\n    }\n\n    cancel() {\n\n    }\n}\n\n","import { Component, inject, input, signal } from '@angular/core';\nimport { FilesystemComponent } from '../filesystem.component';\nimport { FilesystemApi, FilesystemApiFile } from '../api';\nimport { ButtonComponent, ButtonGroupComponent } from '../../button/button.component';\nimport { CloseDialogDirective, DialogComponent } from '../../dialog/dialog.component';\n\n@Component({\n    styles: [`\n      :host {\n        display: flex;\n        flex-direction: column;\n        height: 100%;\n      }\n\n      app-media {\n        flex: 1;\n        overflow: hidden;\n      }\n\n      dui-button-group {\n        justify-content: flex-end;\n        margin-bottom: 10px;\n      }\n    `],\n    imports: [\n        FilesystemComponent,\n        ButtonGroupComponent,\n        ButtonComponent,\n        CloseDialogDirective,\n    ],\n    template: `\n      <dui-filesystem [api]=\"api()\" [dialogMode]=\"true\" (activeFile)=\"activeFile = $event\" [(selected)]=\"selected\" />\n      <dui-button-group>\n        <dui-button closeDialog>Cancel</dui-button>\n        <dui-button (click)=\"choose()\">Choose</dui-button>\n      </dui-button-group>\n    `,\n})\nexport class FilesystemFileDialog {\n    static dialogDefaults = {\n        height: '90%',\n        width: 750,\n    };\n\n    selected = signal<string[]>([]);\n    activeFile?: FilesystemApiFile;\n\n    api = input.required<FilesystemApi>();\n\n    dialog = inject(DialogComponent);\n\n    choose() {\n        const selected = this.activeFile && this.activeFile.type === 'file' ? this.activeFile.path : this.selected()[0];\n        this.dialog.close(selected);\n    }\n}\n","import { Component, input } from '@angular/core';\n\n\n@Component({\n    selector: 'dui-label',\n    template: `\n        <label>{{label()}}</label>\n        <ng-content></ng-content>\n    `,\n    styles: [`\n        :host {\n            user-select: text;\n            margin-bottom: 18px;\n            overflow: hidden;\n            text-overflow: ellipsis;\n            word-break: break-all;\n        }\n\n        label {\n            display: block;\n            color: var(--dui-text-light);\n            margin-bottom: 6px;\n            user-select: none;\n        }\n    `]\n})\nexport class LabelComponent {\n    label = input<string>('');\n}\n\n\n@Component({\n    selector: 'dui-label-grid',\n    template: `\n        <ng-content></ng-content>\n    `,\n    styles: [`\n        :host {\n            display: grid;\n            gap: 15px;\n            grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n        }\n    `],\n    host: {\n        '[style.grid-template-columns]': `templateColumns`\n    }\n})\nexport class LabelGridComponent {\n    labelWidth = input<string | number>('150px');\n    labelMaxWidth = input<string | number>('1fr');\n\n    protected get templateColumns(){\n        return `repeat(auto-fit, minmax(${this.labelWidth()}, ${this.labelMaxWidth()}))`;\n    }\n}\n","/*\n * Copyright (c) Marc J. Schmidt <marc@marcjschmidt.de>\n * This file is part of Deepkit and licensed under GNU GPL v3. See the LICENSE file for more information.\n */\n\nimport { booleanAttribute, Component, input } from '@angular/core';\n\n@Component({\n    selector: 'dui-section-header',\n    template: `\n        <div class=\"title\">\n            <ng-content></ng-content>\n        </div>\n        <div class=\"line\"></div>\n    `,\n    host: {\n        '[class.center]': 'center()'\n    },\n    styleUrls: ['./section-header.component.scss']\n})\nexport class SectionHeaderComponent {\n    center = input(false, { transform: booleanAttribute });\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { booleanAttribute, Component, EventEmitter, HostBinding, HostListener, inject, input, OnDestroy, Output } from '@angular/core';\nimport { Router, RouterLink, RouterLinkActive } from '@angular/router';\nimport { ngValueAccessor, ValueAccessorBase } from '../../core/form';\nimport { arrayRemoveItem } from '@deepkit/core';\nimport { injectElementRef } from '../app/utils';\n\n/**\n * Non-interactive title item for a list.\n *\n * ```html\n * <dui-list>\n *  <dui-list-title>Title</dui-list-title>\n *  <dui-list-item value=\"1\">Item 1</dui-list-item>\n * </list>\n * ```\n */\n@Component({\n    selector: 'dui-list-title',\n    template: `\n      <ng-content></ng-content>`,\n    styleUrls: ['./list-title.component.scss'],\n})\nexport class ListTitleComponent {\n    constructor() {\n    }\n}\n\n@Component({\n    selector: 'dui-list',\n    template: `\n      <ng-content></ng-content>\n    `,\n    styleUrls: ['./list.component.scss'],\n    host: {\n        '[class.white]': 'white()',\n        '[class.overlay-scrollbar-small]': 'true',\n        '[class.focusable]': 'focusable()',\n        '[class.delimiter-line]': 'delimiterLine()',\n    },\n    providers: [ngValueAccessor(ListComponent)],\n})\nexport class ListComponent extends ValueAccessorBase<any> {\n    static ids: number = 0;\n    id = ++ListComponent.ids;\n\n    white = input(false, { transform: booleanAttribute });\n    focusable = input<boolean>(true);\n    delimiterLine = input(false, { transform: booleanAttribute });\n\n    @HostBinding('tabindex') protected tabIndex: number = 1;\n\n    protected items: ListItemComponent[] = [];\n\n    protected itemMap = new Map<string, ListItemComponent>();\n\n    protected element = injectElementRef();\n\n    /**\n     * @hidden\n     */\n    deregister(item: ListItemComponent) {\n        arrayRemoveItem(this.items, item);\n        this.itemMap.delete(item.id + '');\n    }\n\n    /**\n     * @hidden\n     */\n    register(item: ListItemComponent) {\n        this.items.push(item);\n        this.itemMap.set(item.id + '', item);\n    }\n\n    protected getSortedList(): ListItemComponent[] {\n        const list = Array.from(this.element.nativeElement.querySelectorAll(`dui-list-item[list-id=\"${this.id}\"]`));\n        return list.map(v => this.itemMap.get(v.getAttribute('list-item-id')!)!);\n    }\n\n    @HostListener('keydown', ['$event'])\n    protected async onKeyDown(event: KeyboardEvent) {\n        if (event.key === 'ArrowDown') {\n            event.preventDefault();\n            const selectedItem = this.getSelectedItem();\n            if (selectedItem) {\n                const items = this.getSortedList();\n                const position = items.indexOf(selectedItem);\n\n                if (items[position + 1]) {\n                    await items[position + 1].select();\n                }\n            }\n        }\n\n        if (event.key === 'ArrowUp') {\n            event.preventDefault();\n            const selectedItem = this.getSelectedItem();\n            if (selectedItem) {\n                const items = this.getSortedList();\n                const position = items.indexOf(selectedItem);\n\n                if (items[position - 1]) {\n                    await items[position - 1].select();\n                }\n            }\n        }\n    }\n\n    public getSelectedItem(): ListItemComponent | undefined {\n        for (const item of this.items) {\n            if (item.isSelected()) {\n                return item;\n            }\n        }\n\n        return;\n    }\n}\n\n/**\n * Interactive item for a list.\n * Supports router links, selection and more.\n *\n * ```html\n * <dui-list>\n *  <dui-list-item value=\"1\">Item 1</dui-list-item>\n * </list>\n * ```\n */\n@Component({\n    selector: 'dui-list-item',\n    template: `\n      <ng-content></ng-content>\n    `,\n    host: {\n        '[class.selected]': 'isSelected()',\n        '[attr.list-id]': 'list.id',\n        '[attr.list-item-id]': 'id',\n    },\n    styleUrls: ['./list-item.component.scss'],\n    hostDirectives: [\n        { directive: RouterLinkActive, inputs: ['routerLinkActiveOptions'] },\n    ],\n})\nexport class ListItemComponent implements OnDestroy {\n    protected static ids: number = 0;\n    id = ++ListItemComponent.ids;\n    protected activeClass = 'selected';\n\n    value = input<any>();\n    active = input<boolean>();\n\n    /**\n     * When position is dynamic, it might be handy to define the position\n     * explicitly to make arrow-up/arrow-down navigation possible.\n     */\n    position = input<number>(0);\n\n    @Output() onSelect = new EventEmitter<any>();\n\n    protected element = injectElementRef();\n    protected list = inject(ListComponent);\n    protected router = inject(Router, { optional: true });\n    protected routerLink = inject(RouterLink, { optional: true });\n    protected routerLinkActive = inject(RouterLinkActive);\n\n    constructor() {\n        this.element.nativeElement.removeAttribute('tabindex');\n        this.list.register(this);\n    }\n\n    ngOnDestroy(): void {\n        this.list.deregister(this);\n    }\n\n    public async select() {\n        const routerLink = this.routerLink;\n        if (routerLink && this.router) {\n            routerLink.onClick(1, false, false, false, false);\n        } else {\n            this.list.setValue(this.value());\n        }\n        this.onSelect.emit(this.value());\n    }\n\n    public isSelected(): boolean {\n        const active = this.active();\n        if (active !== undefined) return active;\n\n        const value = this.value();\n        if (value !== undefined) {\n            return this.list.value() === value;\n        }\n\n        return this.routerLinkActive.isActive;\n    }\n\n    @HostListener('mousedown')\n    protected onClick() {\n        this.list.setValue(this.value());\n        this.onSelect.emit(this.value());\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { booleanAttribute, Component, HostBinding, HostListener, inject, input } from '@angular/core';\nimport { ngValueAccessor, ValueAccessorBase } from '../../core/form';\n\n/**\n * Radio group component to group multiple radio buttons together.\n */\n@Component({\n    selector: 'dui-radio-group',\n    providers: [ngValueAccessor(RadioGroupComponent)],\n    template: `\n      <ng-content></ng-content>`,\n})\nexport class RadioGroupComponent extends ValueAccessorBase<any> {\n}\n\n/**\n * Radio button component to toggle between multiple options.\n *\n * ```html\n * <dui-radio-group [(ngModel)]=\"myValue\">\n *     <dui-radio-button value=\"a\">Option A</dui-radio-button>\n *     <dui-radio-button value=\"b\">Option B</dui-radio-button>\n * </dui-radio-group>\n */\n@Component({\n    selector: 'dui-radio-button',\n    template: `\n      <span class=\"box\"><div class=\"circle\"></div></span>\n      <ng-content></ng-content>\n    `,\n    host: {\n        '[class.dui-normalized]': 'true',\n        '[class.disabled]': 'disabled()',\n        '[class.checked]': 'isChecked',\n    },\n    styleUrls: ['./radio-box.component.scss'],\n})\nexport class RadioButtonComponent {\n    value = input<any>();\n\n    disabled = input(false, { transform: booleanAttribute });\n\n    group = inject(RadioGroupComponent);\n\n    @HostBinding('tabindex')\n    protected get tabIndex() {\n        return 1;\n    }\n\n    @HostBinding('class.checked')\n    protected get isChecked() {\n        return this.value() === this.group.value();\n    }\n\n    @HostListener('click')\n    protected onClick() {\n        if (this.group.isDisabled) return;\n\n        this.group.setValue(this.value());\n        this.group.touch();\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { booleanAttribute, Component, computed, contentChild, ContentChild, contentChildren, Directive, ElementRef, HostBinding, HostListener, input, OnDestroy, TemplateRef, viewChild } from '@angular/core';\nimport { ngValueAccessor, ValueAccessorBase } from '../../core/form';\nimport { DropdownComponent, DropdownItemComponent, DropdownSplitterComponent, OpenDropdownDirective } from '../button/dropdown.component';\nimport { ButtonComponent, ButtonGroupComponent } from '../button/button.component';\nimport { NgTemplateOutlet } from '@angular/common';\nimport { IconComponent } from '../icon/icon.component';\nimport { injectElementRef } from '../app/utils';\n\n/**\n * Necessary directive to get a dynamic rendered option.\n *\n * ```html\n * <dui-option>\n *     <ng-container *dynamicOption>\n *          {{item.fieldName | date}}\n *     </ng-container>\n * </dui-option>\n * ```\n */\n@Directive({ selector: '[dynamicOption]' })\nexport class DynamicOptionDirective {\n    constructor(\n        public template: TemplateRef<any>,\n    ) {\n    }\n}\n\n/**\n * Directive to create an option in the select dropdown.\n *\n * ```html\n * <dui-select>\n *     <dui-option value=\"1\">Option 1</dui-option>\n * </dui-select>\n */\n@Component({\n    selector: 'dui-option',\n    template: `\n      <ng-content></ng-content>`,\n})\nexport class OptionDirective {\n    value = input<any>();\n\n    disabled = input<boolean>(false);\n\n    @ContentChild(DynamicOptionDirective, { static: false }) dynamic?: DynamicOptionDirective;\n\n    constructor(public element: ElementRef) {\n    }\n}\n\n/**\n * Directive to create a separator in the select dropdown.\n *\n * ```html\n * <dui-select>\n *     <dui-option value=\"1\">Option 1</dui-option>\n *     <dui-option-separator></dui-option-separator>\n *     <dui-option value=\"2\">Option 2</dui-option>\n * </dui-select>\n */\n@Directive({\n    selector: 'dui-option-separator',\n    providers: [{ provide: OptionDirective, useExisting: OptionSeparatorDirective }],\n})\nexport class OptionSeparatorDirective {\n    constructor() {\n    }\n}\n\n@Component({\n    selector: 'dui-select',\n    template: `\n      @if (button()) {\n        <dui-button-group padding=\"none\">\n          <ng-content select=\"dui-button\"></ng-content>\n          <dui-button class=\"split-knob\"\n                      style=\"padding: 0 2px;\"\n                      [openDropdown]=\"dropdown\" tight textured icon=\"arrow_down\"></dui-button>\n        </dui-button-group>\n      } @else {\n        @if (!isSelected) {\n          <div class=\"placeholder\">{{ placeholder() }}</div>\n        }\n        <div class=\"value\">\n          @if (optionsValueMap().get(value()); as option) {\n            @if (option.dynamic) {\n              <ng-container [ngTemplateOutlet]=\"option.dynamic.template\"></ng-container>\n            } @else {\n              <div>\n                <div [innerHTML]=\"option.element.nativeElement.innerHTML\"></div>\n              </div>\n            }\n          }\n        </div>\n        <div class=\"knob\">\n          <dui-icon [size]=\"12\" name=\"arrows\"></dui-icon>\n        </div>\n      }\n\n      <dui-dropdown #dropdown [host]=\"element.nativeElement\">\n        @for (option of options(); track option) {\n          @if (isSeparator(option)) {\n            <dui-dropdown-separator></dui-dropdown-separator>\n          } @else {\n            <dui-dropdown-item checkbox\n              (click)=\"select(option.value())\"\n              [selected]=\"value() === option.value()\">\n              @if (option.dynamic) {\n                <ng-container [ngTemplateOutlet]=\"option.dynamic.template\"></ng-container>\n              } @else {\n                <div>\n                  <div [innerHTML]=\"option.element.nativeElement.innerHTML\"></div>\n                </div>\n              }\n            </dui-dropdown-item>\n          }\n        }\n      </dui-dropdown>\n    `,\n    styleUrls: ['./select-box.component.scss'],\n    host: {\n        '[attr.tabIndex]': '1',\n        '[class.split]': '!!button()',\n        '[class.textured]': 'textured()',\n        '[class.small]': 'small()',\n    },\n    providers: [ngValueAccessor(SelectBoxComponent)],\n    imports: [\n        ButtonGroupComponent,\n        ButtonComponent,\n        OpenDropdownDirective,\n        NgTemplateOutlet,\n        IconComponent,\n        DropdownComponent,\n        DropdownSplitterComponent,\n        DropdownItemComponent,\n    ],\n})\nexport class SelectBoxComponent<T> extends ValueAccessorBase<T> implements OnDestroy {\n    placeholder = input<string>('');\n\n    /**\n     * Different textured styled.\n     */\n    textured = input(false, { transform: booleanAttribute });\n\n    /**\n     * Smaller text and height.\n     */\n    small = input(false, { transform: booleanAttribute });\n\n    button = contentChild(ButtonComponent);\n    options = contentChildren(OptionDirective, { descendants: true });\n    dropdown = viewChild.required('dropdown', { read: DropdownComponent });\n\n    public label: string = '';\n\n    optionsValueMap = computed(() => {\n        const map = new Map<T | undefined, OptionDirective>();\n        for (const option of this.options()) {\n            if (!(option instanceof OptionDirective)) continue;\n            map.set(option.value(), option);\n        }\n        return map;\n    });\n\n    element = injectElementRef();\n\n    constructor() {\n        super();\n    }\n\n    protected isSeparator(item: any): boolean {\n        return item instanceof OptionSeparatorDirective;\n    }\n\n    select(value: T) {\n        this.setValue(value);\n        this.touch();\n        this.dropdown().close();\n    }\n\n    @HostListener('mousedown')\n    protected onClick() {\n        if (this.disabled()) return;\n        if (this.button()) return;\n\n        this.dropdown().toggle();\n    }\n\n    open() {\n        this.dropdown()?.open();\n    }\n\n    @HostBinding('class.selected')\n    protected get isSelected(): boolean {\n        return this.value() !== undefined;\n    }\n}\n","import { Component, input, output } from '@angular/core';\n\nimport { IconComponent } from '../icon/icon.component';\n\n@Component({\n    selector: 'dui-tab',\n    template: `\n      <div class=\"content\">\n        <ng-content></ng-content>\n      </div>\n      @if (removable()) {\n        <dui-icon class=\"closer\" (click)=\"onClose()\" clickable name=\"times\"></dui-icon>\n      }\n    `,\n    host: {\n        '[class.active]': 'active()',\n    },\n    styleUrls: ['./tab.component.scss'],\n    imports: [IconComponent],\n})\nexport class TabComponent {\n    active = input<boolean>(false);\n    removable = input<boolean>(true);\n\n    close = output();\n\n    protected onClose() {\n        this.close.emit();\n    }\n}\n","import { Component } from '@angular/core';\n\n@Component({\n    selector: 'dui-tabs',\n    template: `\n        <ng-content></ng-content>`,\n    styleUrls: ['./tabs.component.scss']\n})\nexport class TabsComponent {\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { booleanAttribute, Component, computed, ElementRef, input, viewChild } from '@angular/core';\nimport { ngValueAccessor, ValueAccessorBase } from '../../core/form';\nimport { clamp, injectElementRef } from '../app/utils';\nimport { DragDirective, DuiDragEvent } from '../app/drag';\n\n/**\n * Slider component allows users to select a value from a range by dragging a knob along a track.\n *\n * ```html\n * <dui-slider [(ngModel)]=\"value\" [min]=\"0\" [max]=\"100\" [steps]=\"1\"></dui-slider>\n * ```\n */\n@Component({\n    selector: 'dui-slider',\n    template: `\n      <div class=\"bg\"></div>\n      <div class=\"knob-container\">\n        <div [style.width.%]=\"knobLeft()\" class=\"active-line\"></div>\n        <div #dragKnob [style.left.%]=\"knobLeft()\" class=\"knob\"></div>\n      </div>\n    `,\n    host: {\n        '[class.mini]': 'mini()',\n        '(duiDrag)': 'onDuiDrag($event)',\n        '(mousedown)': 'valueFromMouse($event)',\n    },\n    hostDirectives: [\n        {\n            directive: DragDirective,\n            inputs: ['duiDragThreshold'],\n            outputs: ['duiDragStart', 'duiDrag', 'duiDragEnd', 'duiDragCancel'],\n        },\n    ],\n    styleUrls: ['./slider.component.scss'],\n    providers: [ngValueAccessor(SliderComponent)],\n})\nexport class SliderComponent extends ValueAccessorBase<number> {\n    /**\n     * The minimum value of the slider.\n     */\n    min = input(0);\n\n    /**\n     * The maximum value of the slider.\n     */\n    max = input(1);\n\n    /**\n     * The step size for the slider. The value will be rounded to the nearest step.\n     */\n    steps = input(0.01);\n\n    /**\n     * How many fractional digits to display.\n     */\n    fractionalDigits = input(2);\n\n    /**\n     * If true, the slider will be displayed in a compact form.\n     */\n    mini = input(false, { transform: booleanAttribute });\n\n    protected dragKnob = viewChild<ElementRef<HTMLElement>>('dragKnob');\n\n    protected normalizedValue = computed(() => this.value() || 0);\n\n    protected element = injectElementRef();\n    protected dragContainer = this.element.nativeElement;\n    protected knobWidth = computed(() => {\n        const knob = this.dragKnob()?.nativeElement;\n        return knob ? knob.clientWidth : 0;\n    });\n\n    protected knobLeft = computed(() => {\n        return (this.normalizedValue() - this.min()) / (this.max() - this.min()) * 100;\n    });\n\n    protected valueFromMouse(event: { clientX: number }) {\n        const x = event.clientX - this.dragContainer.getBoundingClientRect().x;\n        this.updateValueFromX(x);\n    }\n\n    protected onDuiDrag(event: DuiDragEvent) {\n        this.valueFromMouse(event);\n    }\n\n    writeValue(value?: number) {\n        value = clamp(value || 0, this.min(), this.max());\n        super.writeValue(value);\n    }\n\n    protected updateValueFromX(x: number) {\n        const container = this.dragContainer;\n        if (!container) return 0;\n        // Shift x by knobWidth/2, so handle is centered\n        x -= this.knobWidth() / 2;\n        if (x < 0) x = 0;\n        const width = container.clientWidth - this.knobWidth(); // aligned with knob size\n        if (x > width) x = width;\n        const percent = x / width;\n        let value = this.min() + percent * (this.max() - this.min());\n        const shift = (value % this.steps());\n        if (shift > this.steps() / 2) {\n            value += this.steps() - shift; // round up\n        } else {\n            value -= shift; // round down\n        }\n        super.setValue(parseFloat(value.toFixed(this.fractionalDigits())));\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport {\n    AfterViewInit,\n    ApplicationRef,\n    ChangeDetectorRef,\n    Component,\n    ComponentFactoryResolver,\n    ComponentRef,\n    Directive,\n    Injector,\n    input,\n    model,\n    OnChanges,\n    OnDestroy,\n    output,\n    SimpleChanges,\n    TemplateRef,\n    Type,\n    ViewChild,\n    ViewContainerRef,\n} from '@angular/core';\nimport { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\nimport { WindowComponent } from '../window/window.component';\nimport { WindowRegistry } from '../window/window-state';\nimport { RenderComponentDirective } from '../core/render-component.directive';\nimport { Subscription } from 'rxjs';\nimport { DOCUMENT, NgTemplateOutlet } from '@angular/common';\nimport { DuiDialog } from '../dialog/dialog';\nimport { BrowserWindow, Electron } from '../../core/utils';\nimport { nextTick } from '@deepkit/core';\n\nfunction PopupCenter(url: string, title: string, w: number, h: number): Window {\n    let top = window.screenTop + (window.outerHeight / 2) - w / 2;\n    top = top > 0 ? top : 0;\n\n    let left = window.screenLeft + (window.outerWidth / 2) - w / 2;\n    left = left > 0 ? left : 0;\n\n    return window.open(url, title, 'width=' + w + ', height=' + h + ', top=' + top + ', left=' + left)!;\n}\n\n@Component({\n    template: `\n      @if (component()) {\n        <ng-container\n          #renderComponentDirective\n          [renderComponent]=\"component()\" [renderComponentInputs]=\"componentInputs()\"\n        >\n        </ng-container>\n      }\n\n      @if (content) {\n        <ng-container [ngTemplateOutlet]=\"content\"></ng-container>\n      }\n\n      @if (container) {\n        <ng-container [ngTemplateOutlet]=\"container\"></ng-container>\n      }\n\n      @if (!container) {\n        <ng-content></ng-content>\n      }\n    `,\n    host: {\n        '[attr.tabindex]': '1',\n    },\n    imports: [\n        RenderComponentDirective,\n        NgTemplateOutlet,\n    ],\n})\nexport class ExternalDialogWrapperComponent {\n    component = input<Type<any>>();\n    componentInputs = input<{\n        [name: string]: any;\n    }>({});\n\n    actions?: TemplateRef<any> | undefined;\n    container?: TemplateRef<any> | undefined;\n    content?: TemplateRef<any> | undefined;\n\n    @ViewChild(RenderComponentDirective, { static: false }) renderComponentDirective?: RenderComponentDirective;\n\n    constructor(\n        protected cd: ChangeDetectorRef,\n        public injector: Injector,\n    ) {\n    }\n\n    public setDialogContainer(container: TemplateRef<any> | undefined) {\n        this.container = container;\n        this.cd.detectChanges();\n    }\n}\n\n@Component({\n    selector: 'dui-external-dialog',\n    template: `\n      <ng-template #template>\n        <ng-content></ng-content>\n      </ng-template>\n    `,\n})\nexport class ExternalWindowComponent implements AfterViewInit, OnDestroy, OnChanges {\n    private portalHost?: DomPortalOutlet;\n\n    alwaysRaised = input(false);\n\n    visible = model(true);\n\n    closed = output();\n\n    component = input<Type<any>>();\n    componentInputs = input<{\n        [name: string]: any;\n    }>({});\n\n    public wrapperComponentRef?: ComponentRef<ExternalDialogWrapperComponent>;\n\n    @ViewChild('template', { static: false }) template?: TemplateRef<any>;\n\n    externalWindow?: Window;\n    container?: TemplateRef<any> | undefined;\n\n    observerStyles?: MutationObserver;\n    observerClass?: MutationObserver;\n\n    parentFocusSub?: Subscription;\n    electronWindow?: any;\n    parentWindow?: WindowComponent;\n\n    constructor(\n        protected componentFactoryResolver: ComponentFactoryResolver,\n        protected applicationRef: ApplicationRef,\n        protected injector: Injector,\n        protected dialog: DuiDialog,\n        protected registry: WindowRegistry,\n        protected cd: ChangeDetectorRef,\n        protected viewContainerRef: ViewContainerRef,\n    ) {\n\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (this.visible()) {\n            this.show();\n        } else {\n            this.close();\n        }\n    }\n\n    public setDialogContainer(container: TemplateRef<any> | undefined) {\n        this.container = container;\n        if (this.wrapperComponentRef) {\n            this.wrapperComponentRef.instance.setDialogContainer(container);\n        }\n    }\n\n    public show() {\n        if (this.externalWindow) {\n            this.electronWindow.focus();\n            return;\n        }\n\n        this.externalWindow = PopupCenter('', '', 300, 300);\n\n        if (!this.externalWindow) {\n            this.dialog.alert('Error', 'Could not open window.');\n            return;\n        }\n\n        this.externalWindow.onunload = () => {\n            this.close();\n        };\n\n        const cloned = new Map<Node, Node>();\n\n        for (let i = 0; i < window.document.styleSheets.length; i++) {\n            const style = window.document.styleSheets[i];\n            if (!style.ownerNode) continue;\n            const clone: Node = style.ownerNode.cloneNode(true);\n            cloned.set(style.ownerNode, clone);\n            this.externalWindow.document.head.appendChild(clone);\n        }\n\n        const externalWindow = this.externalWindow;\n\n        this.observerStyles = new MutationObserver((mutations: MutationRecord[]) => {\n            for (const mutation of mutations) {\n                for (let i = 0; i < mutation.addedNodes.length; i++) {\n                    const node = mutation.addedNodes[i];\n                    if (!cloned.has(node)) {\n                        const clone: Node = node.cloneNode(true);\n                        cloned.set(node, clone);\n                        externalWindow.document.head.appendChild(clone);\n                    }\n                }\n\n                for (let i = 0; i < mutation.removedNodes.length; i++) {\n                    const node = mutation.removedNodes[i];\n                    if (cloned.has(node)) {\n                        const clone = cloned.get(node)!;\n                        clone.parentNode?.removeChild(clone);\n                        cloned.delete(node);\n                    }\n                }\n            }\n        });\n\n        this.observerStyles.observe(window.document.head!, {\n            childList: true,\n        });\n\n        const copyBodyClass = () => {\n            if (this.externalWindow) {\n                this.externalWindow.document.body.className = window.document.body.className;\n            }\n        };\n\n\n        this.observerClass = new MutationObserver((mutations: MutationRecord[]) => {\n            copyBodyClass();\n        });\n\n        this.observerClass.observe(window.document.body, {\n            attributeFilter: ['class'],\n        });\n        const document = this.externalWindow.document;\n\n        copyBodyClass();\n\n        this.electronWindow = Electron.isAvailable() ? Electron.getRemote().BrowserWindow.getAllWindows()[0] : undefined;\n        this.parentWindow = this.registry.getOuterActiveWindow() as WindowComponent;\n\n        if (this.parentWindow && this.alwaysRaised()) {\n            this.parentWindow.windowState.disableInputs.set(true);\n            if (this.parentWindow.browserWindow) {\n                this.electronWindow.setParentWindow(this.parentWindow.browserWindow);\n            }\n        }\n\n        window.addEventListener('beforeunload', () => {\n            this.beforeUnload();\n        });\n\n        this.portalHost = new DomPortalOutlet(document.body);\n\n        //todo, add beforeclose event and call beforeUnload() to make sure all dialogs are closed when page is reloaded\n\n        const injector = Injector.create({\n            parent: this.injector,\n            providers: [\n                { provide: ExternalWindowComponent, useValue: this },\n                { provide: BrowserWindow, useValue: new BrowserWindow(this.electronWindow) },\n                { provide: DOCUMENT, useValue: this.externalWindow.document },\n            ],\n        });\n\n        const portal = new ComponentPortal(ExternalDialogWrapperComponent, this.viewContainerRef, injector);\n\n        this.wrapperComponentRef = this.portalHost.attach(portal);\n        this.wrapperComponentRef.setInput('component', this.component());\n        this.wrapperComponentRef.setInput('componentInputs', this.componentInputs());\n        this.wrapperComponentRef.setInput('content', this.template);\n\n        if (this.container) {\n            this.wrapperComponentRef.instance.setDialogContainer(this.container);\n        }\n\n        this.visible.set(true);\n\n        this.wrapperComponentRef.changeDetectorRef.detectChanges();\n        this.wrapperComponentRef.location.nativeElement.focus();\n\n        this.cd.detectChanges();\n    }\n\n    beforeUnload() {\n        if (this.externalWindow) {\n            if (this.portalHost) {\n                this.portalHost.detach();\n                this.portalHost.dispose();\n                delete this.portalHost;\n            }\n            this.closed.emit();\n            if (this.parentFocusSub) this.parentFocusSub.unsubscribe();\n\n            if (this.parentWindow && this.alwaysRaised()) {\n                this.parentWindow.windowState.disableInputs.set(false);\n            }\n            if (this.externalWindow) {\n                this.externalWindow.close();\n            }\n\n            delete this.externalWindow;\n            this.observerStyles?.disconnect();\n            this.observerClass?.disconnect();\n        }\n    }\n\n    ngAfterViewInit() {\n    }\n\n    public close() {\n        this.visible.set(false);\n        this.beforeUnload();\n        nextTick(() => {\n            this.applicationRef.tick();\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.beforeUnload();\n    }\n}\n\n\n/**\n * This directive is necessary if you want to load and render the dialog content\n * only when opening the dialog. Without it it is immediately render, which can cause\n * performance and injection issues.\n */\n@Directive({ selector: '[externalDialogContainer]' })\nexport class ExternalDialogDirective {\n    constructor(protected dialog: ExternalWindowComponent, public template: TemplateRef<any>) {\n        this.dialog.setDialogContainer(this.template);\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { ApplicationRef, ComponentFactoryResolver, Injectable, Injector, Type, ViewContainerRef } from '@angular/core';\nimport { ExternalWindowComponent } from './external-window.component';\nimport { ComponentPortal, DomPortalOutlet } from '@angular/cdk/portal';\n\n@Injectable({ providedIn: 'root' })\nexport class DuiExternalWindow {\n    constructor(\n        protected resolver: ComponentFactoryResolver,\n        protected app: ApplicationRef,\n        protected injector: Injector,\n    ) {\n\n    }\n\n    public open<T>(\n        component: Type<T>,\n        inputs: { [name: string]: any } = {},\n        options: {\n            alwaysRaised?: boolean,\n        } = {},\n        viewContainerRef: ViewContainerRef | null = null,\n    ): { window: ExternalWindowComponent, instance: T } {\n        const portalHost = new DomPortalOutlet(document.body);\n\n        //todo, get viewContainerRef from WindowRegistry?\n        const portal = new ComponentPortal(ExternalWindowComponent, viewContainerRef, viewContainerRef ? viewContainerRef.injector : null);\n\n        const comp = portalHost.attach(portal);\n        comp.setInput('component', component);\n        comp.setInput('inputs', inputs);\n\n        if (options && options.alwaysRaised) {\n            comp.setInput('alwaysRaised', true);\n        }\n\n        comp.instance.show();\n        comp.changeDetectorRef.detectChanges();\n\n        comp.instance.closed.subscribe(() => {\n            comp.destroy();\n        });\n\n        return {\n            window: comp.instance,\n            instance: comp.instance.wrapperComponentRef!.instance!.renderComponentDirective!.component!.instance,\n        };\n    }\n\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { Component } from '@angular/core';\n\n@Component({\n    selector: 'dui-window-footer',\n    template: '<ng-content></ng-content>',\n    styleUrls: ['./window-footer.component.scss']\n})\nexport class WindowFooterComponent { }\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nimport { Component, OnDestroy, TemplateRef, ViewChild } from '@angular/core';\nimport { WindowContentComponent } from './window-content.component';\n\n@Component({\n    selector: 'dui-window-sidebar',\n    template: `\n      <ng-template #templateRef>\n        <ng-content></ng-content>\n      </ng-template>\n    `,\n    styleUrls: ['./window-sidebar.component.scss'],\n})\nexport class WindowSidebarComponent implements OnDestroy {\n    @ViewChild('templateRef', { static: true }) template!: TemplateRef<any>;\n\n    constructor(private content: WindowContentComponent) {\n        content.registerSidebar(this);\n    }\n\n    ngOnDestroy() {\n        this.content.unregisterSidebar(this);\n    }\n}\n","import { Component, Directive, ElementRef, TemplateRef } from '@angular/core';\nimport { WindowRegistry } from './window-state';\n\n@Component({\n    selector: 'dui-window-manager',\n    template: `\n    `,\n    styles: [`\n      :host {\n        display: block;\n        position: relative;\n        flex: 1;\n      }\n    `],\n    providers: [\n        WindowRegistry,\n    ],\n})\nexport class WindowManagerComponent {\n    templates = new Map<string, TemplateRef<any>>();\n\n    open(component: any, options: { [key: string]: any } = {}): void {\n\n    }\n}\n\n/**\n * ```html\n * <dui-window-manager>\n *   <window-posts *duiWindowTemplate />\n * </dui-window-manager>\n * ```\n */\n@Directive({\n    selector: '[duiWindowTemplate]',\n    standalone: true,\n})\nexport class WindowTemplateDirective {\n    constructor(\n        private windowManager: WindowManagerComponent,\n        public template: TemplateRef<any>,\n        private element: ElementRef,\n    ) {\n        console.log('WindowTemplateDirective', template, element);\n        // const tagName = element.nativeElement.tagName.toLowerCase();\n        // console.log(tagName, template);\n        //\n        // windowManager.templates.set(tagName, template);\n    }\n}\n","/*\n * Deepkit Framework\n * Copyright (C) 2021 Deepkit UG, Marc J. Schmidt\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the MIT License.\n *\n * You should have received a copy of the MIT License along with this program.\n */\n\nexport * from './browser-text';\n\nexport * from './core/form';\nexport * from './core/utils';\n\nexport * from './components/document';\n\nexport * from './components/adaptive-container/adaptive-container.component';\n\nexport * from './components/app/pending-tasks';\nexport * from './components/app/app';\nexport * from './components/app/drag';\nexport * from './components/app/dui-responsive.directive';\nexport * from './components/app/menu';\nexport * from './components/app/pipes';\nexport * from './components/app/position';\nexport * from './components/app/reactivate-change-detection';\nexport * from './components/app/state';\nexport * from './components/app/style.component';\nexport * from './components/app/utils';\n\nexport * from './components/button/button.component';\nexport * from './components/button/dropdown.component';\nexport * from './components/button/tab-button.component';\n\nexport * from './components/checkbox/checkbox.component';\n\nexport * from './components/core/render-component.directive';\n\nexport * from './components/dialog/dialog';\nexport * from './components/dialog/dialog.component';\n\nexport * from './components/filesystem/api';\nexport * from './components/filesystem/cache';\nexport * from './components/filesystem/filesystem.component';\nexport * from './components/filesystem/components/file-uploader.component';\nexport * from './components/filesystem/components/file-detail.component';\nexport * from './components/filesystem/components/file-quick-look.component';\nexport * from './components/filesystem/components/file-thumbnail.component';\nexport * from './components/filesystem/components/file-dialog.component';\n\nexport * from './components/form/form.component';\n\nexport * from './components/icon/icon.component';\n\nexport * from './components/indicator/indicator.component';\nexport * from './components/indicator/loading-spinner.component';\n\nexport * from './components/input/input.component';\n\nexport * from './components/layout/label.component';\nexport * from './components/layout/section-header.component';\n\nexport * from './components/list/list.component';\n\nexport * from './components/radio/radio-box.component';\n\nexport * from './components/select/select-box.component';\n\nexport * from './components/splitter/splitter.component';\n\nexport * from './components/table/table.component';\n\nexport * from './components/tabs/tab.component';\nexport * from './components/tabs/tabs.component';\n\nexport * from './components/slider/slider.component';\n\n\nexport * from './components/window/external-window.component';\nexport * from './components/window/external-window';\nexport * from './components/window/window.component';\nexport * from './components/window/window-content.component';\nexport * from './components/window/window-footer.component';\nexport * from './components/window/window-header.component';\nexport * from './components/window/window-menu';\nexport * from './components/window/window-sidebar.component';\nexport * from './components/window/window-manager.component';\nexport * from './components/window/window-state';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["__assignType","i1.DragDirective","i1.WindowState","i1.WindowRegistry","i2","i1","i2.WindowState","i3.WindowComponent","NG_COMP_DEF","i2.OverlayStack","__ΩReturnType","__decorate","i1.OverlayStack","i3.WindowRegistry","i4.WindowComponent","i5.ButtonComponent","i1.DialogComponent","i4","i1.DropdownComponent","DropdownComponent_1","i1.FilesystemState","i1.DuiDialog","i2.WindowRegistry","i1.WindowContentComponent"],"mappings":"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"}