{"version":3,"file":"ikilote-magma.mjs","sources":["../../../../projects/ikilote/magma/src/lib/components/block/block.component.ts","../../../../projects/ikilote/magma/src/lib/components/block/block.component.html","../../../../projects/ikilote/magma/src/lib/services/logger.ts","../../../../projects/ikilote/magma/src/lib/components/tabs/tab-content.component.ts","../../../../projects/ikilote/magma/src/lib/components/tabs/tab-content.component.html","../../../../projects/ikilote/magma/src/lib/directives/click-enter.directive.ts","../../../../projects/ikilote/magma/src/lib/components/tabs/tab-title.component.ts","../../../../projects/ikilote/magma/src/lib/components/tabs/tab-title.component.html","../../../../projects/ikilote/magma/src/lib/components/tabs/tabs.component.ts","../../../../projects/ikilote/magma/src/lib/components/tabs/tabs.component.html","../../../../projects/ikilote/magma/src/lib/components/tabs/tabs.module.ts","../../../../projects/ikilote/magma/src/lib/components/color-picker/color-picker.component.ts","../../../../projects/ikilote/magma/src/lib/components/color-picker/color-picker.component.html","../../../../projects/ikilote/magma/src/lib/components/color-picker/color-picker.directive.ts","../../../../projects/ikilote/magma/src/lib/components/context-menu/context-menu.directive.ts","../../../../projects/ikilote/magma/src/lib/utils/coercion.ts","../../../../projects/ikilote/magma/src/lib/utils/subscriptions.ts","../../../../projects/ikilote/magma/src/lib/directives/limit-focus.directive.ts","../../../../projects/ikilote/magma/src/lib/components/context-menu/context-menu.component.ts","../../../../projects/ikilote/magma/src/lib/components/context-menu/context-menu.component.html","../../../../projects/ikilote/magma/src/lib/pipes/repeat-for.pipe.ts","../../../../projects/ikilote/magma/src/lib/components/contrib-calendar/contrib-calendar.component.ts","../../../../projects/ikilote/magma/src/lib/components/contrib-calendar/contrib-calendar.component.html","../../../../projects/ikilote/magma/src/lib/pipes/string.pipe.ts","../../../../projects/ikilote/magma/src/lib/utils/date.ts","../../../../projects/ikilote/magma/src/lib/utils/timing.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-common.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-select.component.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-select.component.html","../../../../projects/ikilote/magma/src/lib/components/input/input.component.ts","../../../../projects/ikilote/magma/src/lib/components/input/input.component.html","../../../../projects/ikilote/magma/src/lib/components/datetime-picker/datetime-picker.component.ts","../../../../projects/ikilote/magma/src/lib/components/datetime-picker/datetime-picker.component.html","../../../../projects/ikilote/magma/src/lib/components/datetime-picker/datetime-picker.directive.ts","../../../../projects/ikilote/magma/src/lib/components/dialog/dialog.component.ts","../../../../projects/ikilote/magma/src/lib/components/dialog/dialog.component.html","../../../../projects/ikilote/magma/src/lib/components/ellipsis-button/ellipsis-item.component.ts","../../../../projects/ikilote/magma/src/lib/components/ellipsis-button/ellipsis-item.component.html","../../../../projects/ikilote/magma/src/lib/components/ellipsis-button/ellipsis-button.component.ts","../../../../projects/ikilote/magma/src/lib/components/ellipsis-button/ellipsis-button.component.html","../../../../projects/ikilote/magma/src/lib/components/ellipsis-button/ellipsis-button.module.ts","../../../../projects/ikilote/magma/src/lib/components/expansion-panel/expansion-panel.component.ts","../../../../projects/ikilote/magma/src/lib/components/expansion-panel/expansion-panel.component.html","../../../../projects/ikilote/magma/src/lib/components/expansion-panel/expansion-panel.module.ts","../../../../projects/ikilote/magma/src/lib/components/info-messages/info-message.component.ts","../../../../projects/ikilote/magma/src/lib/components/info-messages/info-message.component.html","../../../../projects/ikilote/magma/src/lib/services/messages.ts","../../../../projects/ikilote/magma/src/lib/components/info-messages/info-messages.component.ts","../../../../projects/ikilote/magma/src/lib/components/info-messages/info-messages.component.html","../../../../projects/ikilote/magma/src/lib/components/input/input-checkbox.component.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-checkbox.component.html","../../../../projects/ikilote/magma/src/lib/components/input/input-color.component.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-color.component.html","../../../../projects/ikilote/magma/src/lib/directives/stop-propagation.directive.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-date.component.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-date.component.html","../../../../projects/ikilote/magma/src/lib/components/input/input-element.component.ts","../../../../projects/ikilote/magma/src/lib/pipes/num-format.pipe.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-number.component.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-number.component.html","../../../../projects/ikilote/magma/src/lib/components/input/input-text.component.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-text.component.html","../../../../projects/ikilote/magma/src/lib/components/input/input-password.component.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-password.component.html","../../../../projects/ikilote/magma/src/lib/components/input/input-radio.component.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-radio.component.html","../../../../projects/ikilote/magma/src/lib/components/input/input-range.component.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-range.component.html","../../../../projects/ikilote/magma/src/lib/directives/textarea-autosize.directive.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-textarea.component.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-textarea.component.html","../../../../projects/ikilote/magma/src/lib/services/light-dark.ts","../../../../projects/ikilote/magma/src/lib/components/light-dark/light-dark.component.ts","../../../../projects/ikilote/magma/src/lib/components/light-dark/light-dark.component.html","../../../../projects/ikilote/magma/src/lib/components/loader-block/loader-block.component.ts","../../../../projects/ikilote/magma/src/lib/components/loader-block/loader-block.component.html","../../../../projects/ikilote/magma/src/lib/components/loader-block/loader-tile.component.ts","../../../../projects/ikilote/magma/src/lib/components/loader-block/loader-tile.component.html","../../../../projects/ikilote/magma/src/lib/components/loader/loader-message.component.ts","../../../../projects/ikilote/magma/src/lib/components/loader/loader-message.component.html","../../../../projects/ikilote/magma/src/lib/components/loader/loader.component.ts","../../../../projects/ikilote/magma/src/lib/components/loader/loader.component.html","../../../../projects/ikilote/magma/src/lib/components/message/message-block.component.ts","../../../../projects/ikilote/magma/src/lib/components/message/message-block.component.html","../../../../projects/ikilote/magma/src/lib/components/message/message.component.ts","../../../../projects/ikilote/magma/src/lib/components/message/message.component.html","../../../../projects/ikilote/magma/src/lib/components/paginate/paginate.component.ts","../../../../projects/ikilote/magma/src/lib/components/paginate/paginate.component.html","../../../../projects/ikilote/magma/src/lib/pipes/file-size.pipe.ts","../../../../projects/ikilote/magma/src/lib/components/progress/progress.component.ts","../../../../projects/ikilote/magma/src/lib/components/progress/progress.component.html","../../../../projects/ikilote/magma/src/lib/components/spinner/spinner.component.ts","../../../../projects/ikilote/magma/src/lib/components/spinner/spinner.component.html","../../../../projects/ikilote/magma/src/lib/components/table/table-cell.component.ts","../../../../projects/ikilote/magma/src/lib/components/table/table-cell.component.html","../../../../projects/ikilote/magma/src/lib/components/table/table-row.component.ts","../../../../projects/ikilote/magma/src/lib/components/table/table-row.component.html","../../../../projects/ikilote/magma/src/lib/components/table/table-group.component.ts","../../../../projects/ikilote/magma/src/lib/components/table/table-group.component.html","../../../../projects/ikilote/magma/src/lib/components/table/table.component.ts","../../../../projects/ikilote/magma/src/lib/components/table/table.component.html","../../../../projects/ikilote/magma/src/lib/components/table/table.module.ts","../../../../projects/ikilote/magma/src/lib/components/walkthrough/walkthrough-step.directive.ts","../../../../projects/ikilote/magma/src/lib/components/walkthrough/walkthrough-content.component.ts","../../../../projects/ikilote/magma/src/lib/components/walkthrough/walkthrough-content.component.html","../../../../projects/ikilote/magma/src/lib/components/walkthrough/walkthrough.component.ts","../../../../projects/ikilote/magma/src/lib/directives/ng-init.directive.ts","../../../../projects/ikilote/magma/src/lib/directives/resizer.ts","../../../../projects/ikilote/magma/src/lib/directives/resizer.directive.ts","../../../../projects/ikilote/magma/src/lib/components/window/window.component.ts","../../../../projects/ikilote/magma/src/lib/components/window/window.component.html","../../../../projects/ikilote/magma/src/lib/components/window/windows-container.component.ts","../../../../projects/ikilote/magma/src/lib/components/window/windows-container.component.html","../../../../projects/ikilote/magma/src/lib/directives/click-outside.directive.ts","../../../../projects/ikilote/magma/src/lib/directives/ng-model-change-debounced.directive.ts","../../../../projects/ikilote/magma/src/lib/utils/number.ts","../../../../projects/ikilote/magma/src/lib/utils/object.ts","../../../../projects/ikilote/magma/src/lib/utils/array.ts","../../../../projects/ikilote/magma/src/lib/directives/sortable.directive.ts","../../../../projects/ikilote/magma/src/lib/directives/tooltip.directive.ts","../../../../projects/ikilote/magma/src/lib/utils/other.ts","../../../../projects/ikilote/magma/src/lib/pipes/array-filter.pipe.ts","../../../../projects/ikilote/magma/src/lib/pipes/class-list.pipe.ts","../../../../projects/ikilote/magma/src/lib/pipes/math.pipe.ts","../../../../projects/ikilote/magma/src/lib/pipes/str-replace.pipe.ts","../../../../projects/ikilote/magma/src/lib/services/cache.ts","../../../../projects/ikilote/magma/src/lib/utils/validators.ts","../../../../projects/ikilote/magma/src/lib/services/form-builder-extended.ts","../../../../projects/ikilote/magma/src/lib/components/window/windows-zone.component.ts","../../../../projects/ikilote/magma/src/lib/components/window/windows-zone.component.html","../../../../projects/ikilote/magma/src/lib/services/windows.ts","../../../../projects/ikilote/magma/src/lib/utils/clipboard.ts","../../../../projects/ikilote/magma/src/lib/utils/cookies.ts","../../../../projects/ikilote/magma/src/lib/utils/css.ts","../../../../projects/ikilote/magma/src/lib/utils/dom.ts","../../../../projects/ikilote/magma/src/lib/utils/email.ts","../../../../projects/ikilote/magma/src/lib/utils/enum.ts","../../../../projects/ikilote/magma/src/lib/utils/file.ts","../../../../projects/ikilote/magma/src/lib/utils/json.ts","../../../../projects/ikilote/magma/src/lib/utils/text.ts","../../../../projects/ikilote/magma/src/public-api.ts","../../../../projects/ikilote/magma/src/ikilote-magma.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector: 'mg-block',\n    templateUrl: './block.component.html',\n    styleUrl: './block.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MagmaBlock {}\n","<div><ng-content /></div>\n","import { Injectable } from '@angular/core';\n\nexport enum LoggerLevel {\n    log,\n    info,\n    debug,\n    warn,\n    error,\n}\n\n/**\n * For persistence during the session of use\n */\n@Injectable({ providedIn: 'root' })\nexport class Logger {\n    static minLogLevel: keyof typeof LoggerLevel = 'info';\n    static suffix = '';\n\n    log(value: string, level: LoggerLevel = LoggerLevel.log, ...values: any[]) {\n        if (level < (LoggerLevel as any)[Logger.minLogLevel || 'info'] || 0) {\n            return;\n        }\n\n        switch (level) {\n            case LoggerLevel.log:\n                console.log(Logger.suffix + value, ...values);\n                break;\n            case LoggerLevel.info:\n                console.info(Logger.suffix + value, ...values);\n                break;\n            case LoggerLevel.debug:\n                console.debug(Logger.suffix + value, ...values);\n                break;\n            case LoggerLevel.warn:\n                console.warn(Logger.suffix + value, ...values);\n                break;\n            case LoggerLevel.error:\n                console.error(Logger.suffix + value, ...values);\n                break;\n        }\n    }\n\n    error(value: string, ...values: any[]) {\n        this.log(value, LoggerLevel.error, ...values);\n    }\n\n    info(value: string, ...values: any[]) {\n        this.log(value, LoggerLevel.info, ...values);\n    }\n\n    debug(value: string, ...values: any[]) {\n        this.log(value, LoggerLevel.debug, ...values);\n    }\n\n    warn(value: string, ...values: any[]) {\n        this.log(value, LoggerLevel.warn, ...values);\n    }\n}\n","import { ChangeDetectionStrategy, Component, input, model } from '@angular/core';\n\n@Component({\n    selector: 'mg-tab-content',\n    templateUrl: './tab-content.component.html',\n    styleUrl: './tab-content.component.scss',\n    host: {\n        '[attr.id]': '\"tab-content-\" + id()',\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MagmaTabContent {\n    // input\n\n    readonly id = input.required<string>();\n    readonly selected = model<boolean>(false);\n}\n","@if (selected()) {\n  <ng-content />\n}\n","import { Directive, HostListener, Input, booleanAttribute, output } from '@angular/core';\n\n@Directive({\n    selector: '[clickEnter]',\n    host: {\n        '[class.click-enter]': 'true',\n        '[attr.tabindex]': '!disabled ? 0 : null',\n        '[attr.role]': \"!disabled ? 'button' : null\",\n    },\n})\nexport class MagmaClickEnterDirective {\n    // don't change: https://github.com/angular/angular/issues/50510\n    @Input({ transform: booleanAttribute })\n    disabled = false;\n\n    readonly clickEnter = output<KeyboardEvent | MouseEvent>();\n\n    @HostListener('click', ['$event'])\n    @HostListener('keydown.enter', ['$event'])\n    onClick(event: KeyboardEvent | MouseEvent | Event) {\n        if (!this.disabled) {\n            this.clickEnter.emit(event as KeyboardEvent | MouseEvent);\n        }\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    HostListener,\n    OnChanges,\n    OnInit,\n    SimpleChanges,\n    inject,\n    input,\n    model,\n} from '@angular/core';\n\nimport { MagmaTabs } from './tabs.component';\n\nimport { MagmaClickEnterDirective } from '../../directives/click-enter.directive';\n\n@Component({\n    selector: 'mg-tab-title',\n    templateUrl: './tab-title.component.html',\n    styleUrl: './tab-title.component.scss',\n    host: {\n        '[attr.id]': '\"tab-\" + id()',\n        '[class.selected]': 'selected()',\n        tabindex: '0',\n    },\n    hostDirectives: [MagmaClickEnterDirective],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MagmaTabTitle implements OnInit, OnChanges {\n    // inject\n\n    private readonly click = inject(MagmaClickEnterDirective);\n    readonly element = inject(ElementRef<HTMLElement>);\n\n    // input\n\n    readonly id = input.required<string>();\n    readonly selected = model<boolean>(false);\n\n    // host : not use inject(MagmaTabs, { host: true }); to fix circular dependency\n    tabs?: MagmaTabs;\n\n    constructor() {\n        this.click.clickEnter.subscribe(() => {\n            this.onclick();\n        });\n    }\n\n    @HostListener('keydown.ArrowLeft')\n    focusLeft() {\n        if (this.tabs) {\n            this.tabs.titles()[Math.max(0, this.tabs.titles().indexOf(this) - 1)].element.nativeElement.focus();\n        }\n    }\n\n    @HostListener('keydown.ArrowRight')\n    focusRight() {\n        if (this.tabs) {\n            this.tabs\n                .titles()\n                [\n                    Math.min(this.tabs.titles().length - 1, this.tabs.titles().indexOf(this) + 1)\n                ].element.nativeElement.focus();\n        }\n    }\n\n    ngOnInit(): void {\n        if (this.selected()) {\n            this.onclick();\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['selected']?.currentValue) {\n            this.onclick();\n        }\n    }\n\n    onclick() {\n        setTimeout(() => {\n            if (this.tabs && this.id()) {\n                this.tabs.update(this.id());\n                this.tabs.tabpanel()?.nativeElement.focus();\n            }\n        });\n    }\n}\n","<ng-content />\n","import {\n    AfterContentInit,\n    AfterViewChecked,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    contentChildren,\n    input,\n    output,\n    signal,\n    viewChild,\n} from '@angular/core';\n\nimport { MagmaTabContent } from './tab-content.component';\nimport { MagmaTabTitle } from './tab-title.component';\n\n@Component({\n    selector: 'mg-tabs',\n    templateUrl: './tabs.component.html',\n    styleUrl: './tabs.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MagmaTabs implements AfterContentInit, AfterViewChecked {\n    // content/view\n\n    readonly titles = contentChildren(MagmaTabTitle);\n    readonly content = contentChildren(MagmaTabContent);\n    readonly tablist = viewChild.required<ElementRef<HTMLElement>>('tablist');\n    readonly tabpanel = viewChild.required<ElementRef<HTMLDivElement>>('tabpanel');\n\n    // input\n\n    readonly returnTabsLabel = input('Return to tabs');\n\n    // output\n\n    readonly tabChange = output<string>();\n\n    readonly prev = signal(false);\n    readonly next = signal(false);\n\n    updateInterval?: any;\n\n    ngAfterContentInit(): void {\n        if (this.titles()?.length) {\n            const ids: Record<string, boolean> = {};\n            let selected = false;\n            this.titles().forEach(e => {\n                const id = e.id();\n                if (id) {\n                    ids[id] = e.selected();\n                    if (ids[id]) {\n                        selected = true;\n                    }\n                }\n            });\n            if (!selected) {\n                const first = this.titles()[0];\n                first.selected.set(true);\n                ids[first.id()!] = true;\n            }\n\n            this.content()!.forEach(e => {\n                const id = e.id();\n                if (id) {\n                    e.selected.set(ids[id]);\n                }\n            });\n        }\n    }\n\n    ngAfterViewChecked(): void {\n        const div = this.tablist().nativeElement;\n        const clientWidth = div.clientWidth;\n        const scrollWidth = div.scrollWidth;\n        const scrollLeft = div.scrollLeft;\n\n        if (clientWidth < scrollWidth) {\n            if (scrollLeft > 15 && !this.prev()) {\n                this.prev.set(true);\n            } else if (scrollLeft === 0 && this.prev()) {\n                this.prev.set(false);\n            }\n            if (scrollLeft + clientWidth < scrollWidth - 15 && !this.next()) {\n                this.next.set(true);\n            } else if (scrollLeft + clientWidth === scrollWidth && this.next()) {\n                this.next.set(false);\n            }\n        } else {\n            if (this.prev()) {\n                this.prev.set(false);\n            }\n            if (this.next()) {\n                this.next.set(false);\n            }\n        }\n\n        if (this.titles()?.length) {\n            this.titles().forEach(e => {\n                e.tabs ??= this;\n            });\n        }\n    }\n\n    update(id: string, emit: boolean = true) {\n        this.titles()?.forEach(e => {\n            if (e.id()) {\n                e.selected.set(e.id() === id);\n            }\n        });\n        this.ngAfterContentInit();\n        if (emit) {\n            this.tabChange.emit(id);\n        }\n    }\n\n    returnTabs() {\n        this.titles().forEach(e => {\n            if (e.selected()) {\n                e.element.nativeElement.focus();\n            }\n        });\n    }\n\n    moveTabs(update: boolean, dist?: number) {\n        if (update && dist) {\n            this.tablist().nativeElement.scrollLeft += dist;\n            this.updateInterval = setInterval(() => {\n                this.tablist().nativeElement.scrollLeft += dist;\n            }, 50);\n        } else {\n            clearInterval(this.updateInterval);\n            this.updateInterval = undefined;\n        }\n    }\n}\n","<div class=\"tabs\" role=\"tablist\">\n  <div><!-- not remove for align --></div>\n  <button\n    class=\"prev\"\n    [class.show]=\"prev()\"\n    (mousedown)=\"moveTabs(true, -10)\"\n    (mouseup)=\"moveTabs(false)\"\n    (mouseout)=\"moveTabs(false)\"\n  >\n    «\n  </button>\n  <nav #tablist (scroll)=\"ngAfterViewChecked()\">\n    <ng-content select=\"mg-tab-title\" />\n  </nav>\n  <button\n    class=\"next\"\n    [class.show]=\"next()\"\n    (mousedown)=\"moveTabs(true, 10)\"\n    (mouseup)=\"moveTabs(false)\"\n    (mouseout)=\"moveTabs(false)\"\n  >\n    »\n  </button>\n</div>\n<div class=\"content\" role=\"tabpanel\" tabindex=\"-1\" #tabpanel>\n  <ng-content select=\"mg-tab-content\" />\n</div>\n<div class=\"visually-hidden-focusable\">\n  <button (click)=\"returnTabs()\">{{ returnTabsLabel() }}</button>\n</div>\n","import { NgModule } from '@angular/core';\n\nimport { MagmaTabContent } from './tab-content.component';\nimport { MagmaTabTitle } from './tab-title.component';\nimport { MagmaTabs } from './tabs.component';\n\nconst MagmaTabsComponent = [MagmaTabs, MagmaTabTitle, MagmaTabContent];\n\n@NgModule({\n    imports: [MagmaTabsComponent],\n    exports: [MagmaTabsComponent],\n})\nexport class MagmaTabsModule {}\n","import { CdkDrag, CdkDragEnd, Point } from '@angular/cdk/drag-drop';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    OnChanges,\n    OnDestroy,\n    SimpleChanges,\n    booleanAttribute,\n    computed,\n    inject,\n    input,\n    output,\n    viewChild,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport Color from 'colorjs.io';\n\nimport { Logger } from '../../services/logger';\nimport { MagmaTabsModule } from '../tabs/tabs.module';\n\nexport type MagmaColorPickerTexts = { hsl?: string; palette?: string };\n\nexport const magmaColorPickerPalette = [\n    // line 1\n    '#99c1f1',\n    '#8ff0a4',\n    '#f9f06b',\n    '#ffbe6f',\n    '#f66151',\n    '#dc8add',\n    '#cdab8f',\n    '#fff',\n    '#777',\n    // line 2\n    '#62a0ea',\n    '#57e389',\n    '#f8e45c',\n    '#ffa348',\n    '#ed333b',\n    '#c061cb',\n    '#b5835a',\n    '#f6f6f6',\n    '#5e5e5e',\n    // line 3\n    '#3584e4',\n    '#33d17a',\n    '#f6d32d',\n    '#ff7800',\n    '#e01b24',\n    '#9141ac',\n    '#986a44',\n    '#ddd',\n    '#3d3d3d',\n    // line 4\n    '#1c71d8',\n    '#2ec27e',\n    '#f5c211',\n    '#e66100',\n    '#c01c28',\n    '#813d9c',\n    '#865e3c',\n    '#c0c0c0',\n    '#313131',\n    // line 5\n    '#1a5fb4',\n    '#26a269',\n    '#e5a50a',\n    '#c64600',\n    '#a51d2d',\n    '#613583',\n    '#63452c',\n    '#9a9a9a',\n    '#000',\n];\n\n@Component({\n    selector: 'color-picker',\n    templateUrl: './color-picker.component.html',\n    styleUrl: './color-picker.component.scss',\n    imports: [FormsModule, CdkDrag, MagmaTabsModule],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[style.--hue]': 'rangeHue',\n        '[style.--alpha.%]': 'rangeAlpha * 100',\n        '[class.embedded]': 'embedded()',\n        '[class.on-drag]': 'startDrag',\n        '[class.readonly]': 'readonly()',\n    },\n})\nexport class MagmaColorPickerComponent implements OnChanges, AfterViewInit, OnDestroy {\n    readonly logger = inject(Logger);\n    readonly cd = inject(ChangeDetectorRef);\n\n    readonly zone = viewChild.required<ElementRef<HTMLDivElement>>('cursorZone');\n    readonly drag = viewChild.required(CdkDrag);\n\n    readonly color = input<string | undefined>('');\n    readonly embedded = input(false, { transform: booleanAttribute });\n    readonly alpha = input(false, { transform: booleanAttribute });\n    readonly readonly = input(false, { transform: booleanAttribute });\n    readonly clearButton = input(false, { transform: booleanAttribute });\n    readonly texts = input<MagmaColorPickerTexts | undefined>({});\n    readonly palette = input<string[] | undefined>();\n    readonly datalist = input<string[]>();\n\n    readonly colorChange = output<string>();\n\n    protected rangeHue = 0;\n    protected rangeAlpha = 1;\n    protected rangeLight = 0;\n    protected rangeSature = 0;\n\n    protected hsla = '';\n    protected rgba = '';\n    protected hexa = '';\n\n    protected pos: Point = { x: 0, y: 0 };\n    protected _palette = computed(() =>\n        this.palette()?.length\n            ? this.palette()?.map(color =>\n                  new Color(color).toGamut({ space: 'srgb' }).to('srgb').toString({ format: 'hex' }),\n              )\n            : magmaColorPickerPalette,\n    );\n\n    protected startDrag = false;\n    private destroyed = false;\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes['color']?.currentValue) {\n            try {\n                const colorObject = new Color(changes['color'].currentValue);\n                if (!this.alpha()) {\n                    colorObject.alpha = 1;\n                }\n                this.updateWithHLS(colorObject);\n            } catch (e) {\n                this.logger.log('[MagmaColorPickerComponent] Invalid color');\n            }\n        } else if (changes['alpha'] && !changes['alpha'].currentValue && this.rangeAlpha !== 1) {\n            const color = this.hexa || this.color();\n            if (color) {\n                const colorObject = new Color(color);\n                colorObject.alpha = 1;\n                this.updateWithHLS(colorObject);\n            }\n        }\n    }\n\n    ngAfterViewInit(): void {\n        setTimeout(() => {\n            const color = this.color();\n            if (color) {\n                const colorObject = new Color(color);\n                if (!this.alpha()) {\n                    colorObject.alpha = 1;\n                }\n                this.updateWithHLS(colorObject);\n                this.cd.detectChanges();\n            }\n        }, 0);\n    }\n\n    clear() {\n        this.rangeHue = 0;\n        this.rangeAlpha = 1;\n        this.rangeLight = 0;\n        this.rangeSature = 0;\n\n        this.hsla = '';\n        this.rgba = '';\n        this.hexa = '';\n\n        this.pos = { x: 0, y: 0 };\n\n        if (!this.destroyed) {\n            this.colorChange.emit(this.hexa);\n        }\n    }\n\n    protected dragStart() {\n        this.startDrag = true;\n    }\n\n    protected dragEnd(event: CdkDragEnd<any>) {\n        const { x, y } = event.source._dragRef['_activeTransform'];\n        const { clientWidth, clientHeight } = this.zone().nativeElement;\n        this.rangeLight = Math.round((x / (clientWidth - 10)) * 100);\n        this.rangeSature = Math.round((y / (clientHeight - 10)) * 100);\n        this.updateColor();\n        setTimeout(() => {\n            this.startDrag = false;\n        }, 10);\n    }\n\n    tabChange(id: string) {\n        if (id === 'hsl') {\n            setTimeout(() => {\n                this.updateHex(this.hexa);\n            }, 10);\n        }\n    }\n\n    protected updateHex(value: string) {\n        try {\n            const colorObject = new Color(value);\n            if (!this.alpha()) {\n                colorObject.alpha = 1;\n            }\n            this.updateWithHLS(colorObject);\n            this.cd.detectChanges();\n        } catch (e) {\n            this.logger.log('[MagmaColorPickerComponent] Invalid color');\n        }\n    }\n\n    protected click(event: MouseEvent) {\n        if (!this.startDrag && !this.readonly()) {\n            const { layerX, layerY } = event;\n            const { clientWidth, clientHeight } = this.zone().nativeElement;\n            this.rangeLight = Math.round((layerX / (clientWidth - 10)) * 100);\n            this.rangeSature = Math.round((layerY / (clientHeight - 10)) * 100);\n            this.drag().setFreeDragPosition({ x: layerX - 5, y: layerY - 5 });\n            this.updateColor();\n        }\n    }\n\n    private updateWithHLS(color: Color) {\n        const hls = color.toGamut({ space: 'hsl' }).to('hsl');\n\n        // value calculation\n        this.rangeHue = 360 - (hls.h || 0);\n        this.rangeAlpha = hls.alpha;\n        this.rangeSature = 100 - (hls.s ?? 0);\n        this.rangeLight = 100 - (100 * (hls.l ?? 0)) / (100 - (hls.s ?? 0) / 2);\n\n        // position calculation\n        const { clientWidth, clientHeight } = this.zone().nativeElement;\n        this.pos = {\n            x: ((clientWidth - 10) * (this.rangeLight > 0 ? this.rangeLight : 0)) / 100,\n            y:\n                ((clientHeight - 10) * (this.rangeLight > 0 ? this.rangeSature : this.rangeSature - this.rangeLight)) /\n                100,\n        };\n        this.updateColor();\n    }\n\n    protected updateColor() {\n        const color = new Color(\n            'hsl',\n            [\n                360 - this.rangeHue,\n                100 - this.rangeSature,\n                (50 + this.rangeSature / 2) * ((100 - this.rangeLight) / 100),\n            ],\n            this.alpha() ? this.rangeAlpha : 1,\n        );\n\n        this.hexa = color.toGamut({ space: 'srgb' }).to('srgb').toString({ format: 'hex' });\n        this.rgba = color.to('srgb').toString({ precision: 1 });\n        this.hsla = color.to('hsl').toString();\n\n        if (!this.destroyed) {\n            this.colorChange.emit(this.hexa);\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.destroyed = true;\n    }\n}\n","<mg-tabs (tabChange)=\"tabChange($event)\" class=\"compact\">\n  <mg-tab-title id=\"hsl\">{{ texts()?.hsl ?? 'HSL' }}</mg-tab-title>\n  <mg-tab-content id=\"hsl\" class=\"tab-hsl\">\n    <div class=\"value\">\n      <div class=\"gradient\">\n        <div class=\"cursor-zone\" #cursorZone (click)=\"click($event)\">\n          <div\n            class=\"cursor\"\n            cdkDrag\n            cdkDragBoundary=\".cursor-zone\"\n            (cdkDragStarted)=\"dragStart()\"\n            (cdkDragEnded)=\"dragEnd($event)\"\n            [cdkDragFreeDragPosition]=\"pos\"\n            [cdkDragDisabled]=\"readonly()\"\n            (click)=\"$event.stopPropagation()\"\n          ></div>\n        </div>\n      </div>\n    </div>\n    <div class=\"hue\">\n      <input\n        type=\"range\"\n        [(ngModel)]=\"rangeHue\"\n        (ngModelChange)=\"updateColor()\"\n        [disabled]=\"readonly()\"\n        min=\"0\"\n        max=\"360\"\n        orient=\"vertical\"\n      />\n    </div>\n    @if (alpha()) {\n      <div class=\"alpha\">\n        <input\n          type=\"range\"\n          [(ngModel)]=\"rangeAlpha\"\n          (ngModelChange)=\"updateColor()\"\n          [disabled]=\"readonly()\"\n          min=\"0\"\n          max=\"1\"\n          step=\"0.001\"\n          orient=\"vertical\"\n        />\n      </div>\n    }\n  </mg-tab-content>\n  <mg-tab-title id=\"palette\">{{ texts()?.palette ?? 'Palette' }}</mg-tab-title>\n  <mg-tab-content id=\"palette\">\n    <div class=\"palette base\">\n      @for (color of _palette(); track $index) {\n        <button (click)=\"updateHex(color)\" [style.--color]=\"color\" [class.selected]=\"color === hexa\"></button>\n      }\n    </div>\n    @if (datalist()?.length) {\n      <div class=\"palette datalist\">\n        @for (color of datalist(); track $index) {\n          <button (click)=\"updateHex(color)\" [style.--color]=\"color\" [class.selected]=\"color === hexa\"></button>\n        }\n      </div>\n    }\n  </mg-tab-content>\n</mg-tabs>\n@if (hexa) {\n  <div class=\"values\" dir=\"ltr\">\n    <div class=\"color-view\" [style.--color-picker-color-view-background]=\"hsla\"></div>\n    <div class=\"hsla\">\n      {{ hsla }}\n    </div>\n    <div class=\"rgba\">\n      {{ rgba }}\n    </div>\n    <div class=\"input-zone\">\n      <input type=\"text\" [ngModel]=\"hexa\" (ngModelChange)=\"updateHex($event)\" [disabled]=\"readonly()\" />\n      @if (clearButton()) {\n        <button (click)=\"clear()\">×</button>\n      }\n    </div>\n  </div>\n}\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n    ComponentRef,\n    Directive,\n    ElementRef,\n    HostListener,\n    OnChanges,\n    OnDestroy,\n    OutputRefSubscription,\n    SimpleChanges,\n    booleanAttribute,\n    inject,\n    input,\n    output,\n} from '@angular/core';\n\nimport { MagmaColorPickerComponent, MagmaColorPickerTexts } from './color-picker.component';\n\nimport { MagmaClickEnterDirective } from '../../directives/click-enter.directive';\n\nconst connectedPosition: ConnectedPosition[] = [\n    { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n    { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\n    { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n    { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\n];\n\n@Directive({\n    selector: '[colorPicker]',\n    host: {\n        '[class.color-picker]': 'true',\n        '[tabIndex]': 'colorPickerDisabled() ? -1 : 0',\n    },\n    hostDirectives: [MagmaClickEnterDirective],\n})\nexport class MagmaColorPicker implements OnDestroy, OnChanges {\n    private readonly overlay = inject(Overlay);\n    private readonly element = inject(ElementRef<HTMLElement>);\n    private readonly click = inject(MagmaClickEnterDirective);\n\n    readonly colorPicker = input<string>();\n    readonly colorPickerAlpha = input(false, { transform: booleanAttribute });\n    readonly colorPickerDisabled = input(false, { transform: booleanAttribute });\n    readonly colorPickerReadonly = input(false, { transform: booleanAttribute });\n    readonly colorPickerClearButton = input(false, { transform: booleanAttribute });\n    readonly colorPickerTexts = input<MagmaColorPickerTexts>();\n    readonly colorPickerPalette = input<string[] | undefined>();\n    readonly colorPickerDatalist = input<string[] | undefined>();\n\n    static _overlayRef?: OverlayRef;\n    static _component?: ComponentRef<MagmaColorPickerComponent>;\n\n    colorChange = output<string>();\n    colorClose = output<string>();\n\n    private updateEmit?: OutputRefSubscription;\n\n    constructor() {\n        this.click.clickEnter.subscribe(event => {\n            this.open(event);\n        });\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['colorPickerAlpha']) {\n            MagmaColorPicker._component?.setInput('alpha', changes['colorPickerAlpha'].currentValue);\n        }\n    }\n\n    async open(event?: Event) {\n        if (this.colorPickerDisabled()) {\n            return;\n        }\n\n        const overlayRef = this.overlay.create({\n            hasBackdrop: true,\n            backdropClass: 'overlay-backdrop',\n            panelClass: 'overlay-panel',\n            scrollStrategy: this.overlay.scrollStrategies.block(),\n            positionStrategy: this.overlay\n                .position()\n                .flexibleConnectedTo(this.element)\n                .withPositions(connectedPosition),\n        });\n        const userProfilePortal = new ComponentPortal(MagmaColorPickerComponent);\n\n        let color = this.colorPicker();\n        let initColor = color;\n\n        const component = overlayRef.attach(userProfilePortal);\n        component.setInput('color', this.colorPicker());\n        component.setInput('alpha', this.colorPickerAlpha());\n        component.setInput('readonly', this.colorPickerReadonly());\n        component.setInput('clearButton', this.colorPickerClearButton());\n        component.setInput('palette', this.colorPickerPalette());\n        component.setInput('texts', this.colorPickerTexts());\n        component.setInput('datalist', this.colorPickerDatalist());\n        component.setInput('embedded', true);\n\n        this.updateEmit = component.instance.colorChange.subscribe(value => {\n            color = value;\n            this.colorChange.emit(value);\n        });\n\n        overlayRef.backdropClick().subscribe(() => {\n            this.close();\n            if (color !== undefined && color !== initColor) {\n                this.colorClose.emit(color);\n            }\n        });\n\n        MagmaColorPicker._overlayRef = overlayRef;\n        MagmaColorPicker._component = component;\n\n        event?.preventDefault();\n        event?.stopPropagation();\n    }\n\n    ngOnDestroy(): void {\n        this.updateEmit?.unsubscribe();\n        this.updateEmit = undefined;\n        this.close();\n    }\n\n    @HostListener('keydown.space')\n    openKeyboard() {\n        this.open();\n    }\n\n    @HostListener('document:keydown.escape')\n    escape() {\n        this.close();\n    }\n\n    private close() {\n        this.updateEmit?.unsubscribe();\n        this.updateEmit = undefined;\n        MagmaColorPicker._overlayRef?.dispose();\n        MagmaColorPicker._overlayRef = undefined;\n        MagmaColorPicker._component = undefined;\n    }\n}\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Directive, HostListener, booleanAttribute, inject, input } from '@angular/core';\n\nimport { ContextMenuData, ContextMenuMode, MagmaContextMenuComponent } from './context-menu.component';\n\nconst connectedPosition: ConnectedPosition[] = [\n    { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n    { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\n    { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n    { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\n];\n\n@Directive()\nexport abstract class AbstractContextMenuComponent {\n    context = input<MagmaContextMenu<any>>();\n}\n\n@Directive({\n    selector: '[contextMenu]',\n})\nexport class MagmaContextMenu<T> {\n    private readonly overlay = inject(Overlay);\n\n    static _overlayRef?: OverlayRef;\n\n    contextMenu = input<ContextMenuData<T>>();\n    contextMenuMode = input<ContextMenuMode>('default');\n    contextMenuDisabled = input(false, { transform: booleanAttribute });\n\n    @HostListener('contextmenu', ['$event'])\n    async onContextMenu(event: MouseEvent) {\n        if (this.contextMenuDisabled()) {\n            return;\n        }\n\n        const overlayRef = this.overlay.create({\n            hasBackdrop: true,\n            backdropClass: 'overlay-backdrop',\n            panelClass: 'overlay-panel',\n            scrollStrategy: this.overlay.scrollStrategies.block(),\n            positionStrategy: this.overlay\n                .position()\n                .flexibleConnectedTo({ x: event.clientX, y: event.clientY })\n                .withPositions(connectedPosition),\n        });\n        const userProfilePortal = new ComponentPortal(MagmaContextMenuComponent);\n\n        const component = overlayRef.attach(userProfilePortal);\n        component.setInput('items', this.contextMenu());\n        component.setInput('mode', this.contextMenuMode());\n        component.setInput('context', this);\n\n        overlayRef.backdropClick().subscribe(() => {\n            overlayRef.dispose();\n            MagmaContextMenu._overlayRef = undefined;\n        });\n\n        MagmaContextMenu._overlayRef = overlayRef;\n\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    @HostListener('window:contextmenu', ['$event'])\n    onContextMenuContext(event: MouseEvent) {\n        if (MagmaContextMenu._overlayRef) {\n            this.close(event);\n        }\n    }\n\n    @HostListener('window:auxclick', ['$event'])\n    onContextMenuAux(event: MouseEvent) {\n        if (event.button === 1 && MagmaContextMenu._overlayRef) {\n            this.close(event);\n        }\n    }\n\n    close(event?: MouseEvent) {\n        MagmaContextMenu._overlayRef!.dispose();\n        MagmaContextMenu._overlayRef = undefined;\n        if (event) {\n            event.preventDefault();\n            event.stopPropagation();\n        }\n    }\n}\n","export function numberAttributeOrUndefined(value: unknown): number | undefined {\n    return !isNaN(Number(value)) && isFinite(Number(value)) && !isNaN(parseFloat(value as any))\n        ? Number(value)\n        : undefined;\n}\n","import { Subscription } from 'rxjs';\n\nexport class Subscriptions {\n    private listener = new Subscription();\n\n    public static instance() {\n        return new Subscriptions();\n    }\n\n    private size = 0;\n\n    get length() {\n        return this.size;\n    }\n\n    private constructor() {}\n\n    push(...list: Subscription[]) {\n        list.forEach(sub => this.listener.add(sub));\n        this.size += list.length;\n    }\n\n    clear() {\n        this.listener.unsubscribe();\n        this.size = 0;\n    }\n}\n","import { Directive, ElementRef, OnDestroy, OnInit, inject, input } from '@angular/core';\n\nimport { numberAttributeOrUndefined } from '../utils/coercion';\nimport { Subscriptions } from '../utils/subscriptions';\n\nexport const focusRules =\n    'a[href], button:not(:disabled), input:not(:disabled), textarea:not(:disabled), select:not(:disabled), [tabindex]:not([tabindex=\"-1\"])';\n\n@Directive({\n    selector: '[limitFocusFirst]',\n})\nexport class MagmaLimitFocusFirstDirective implements OnInit, OnDestroy {\n    private readonly host = inject(MagmaLimitFocusDirective);\n    readonly focusElement = inject<ElementRef<HTMLDivElement>>(ElementRef);\n\n    readonly limitFocusFirst = input.required({ transform: numberAttributeOrUndefined });\n\n    ngOnInit(): void {\n        this.host.add(this);\n    }\n\n    ngOnDestroy(): void {\n        this.host.remove(this);\n    }\n}\n\n@Directive({\n    selector: '[limitFocus]',\n    host: {\n        tabindex: '-1',\n    },\n    exportAs: 'limitFocus',\n})\nexport class MagmaLimitFocusDirective implements OnDestroy {\n    readonly focusElement = inject<ElementRef<HTMLDivElement>>(ElementRef);\n\n    private items: MagmaLimitFocusFirstDirective[] = [];\n\n    private sub = Subscriptions.instance();\n    private focusOrigin: HTMLElement | null = null;\n    private observer: MutationObserver | undefined;\n\n    focusRules = focusRules;\n\n    constructor() {\n        setTimeout(() => {\n            this.focusOrigin = document.activeElement as HTMLElement | null;\n            this.limitFocus(this.focusElement);\n        });\n    }\n\n    focus() {\n        this.items\n            ?.filter(item => item.limitFocusFirst() !== undefined)\n            ?.reduce(\n                (minItem, item) => (item.limitFocusFirst()! < minItem.limitFocusFirst()! ? item : minItem),\n                this.items[0],\n            )\n            ?.focusElement.nativeElement.focus();\n    }\n\n    ngOnDestroy(): void {\n        this.observer?.disconnect();\n        this.focusOrigin?.focus();\n        this.sub.clear();\n    }\n\n    add(item: MagmaLimitFocusFirstDirective) {\n        this.items.push(item);\n    }\n\n    remove(item: MagmaLimitFocusFirstDirective) {\n        this.items.splice(this.items.indexOf(item), 1);\n    }\n\n    limitFocus(element: ElementRef<HTMLDivElement>) {\n        const div = element?.nativeElement;\n        if (div) {\n            div.focus();\n\n            let listElement = this.firstLastFocusableElement(div);\n\n            div.addEventListener('keydown', event => {\n                this.keydown(event, listElement);\n            });\n\n            this.observer = new MutationObserver(mutationsList => {\n                this.mutations(mutationsList, listElement, div);\n            });\n            this.observer.observe(div, { attributes: true, childList: true, subtree: true });\n        }\n    }\n\n    private keydown(event: KeyboardEvent, listElement: HTMLElement[]) {\n        if (event.key === 'Tab') {\n            const list = listElement.filter(e => this.filter(e));\n            const firstFocusableElement = list[0];\n            const lastFocusableElement = list[list.length - 1];\n\n            if (event.shiftKey) {\n                if (document.activeElement === firstFocusableElement) {\n                    event.preventDefault();\n                    lastFocusableElement.focus();\n                }\n                if (!list.find(e => e === document.activeElement)) {\n                    lastFocusableElement.focus();\n                }\n            } else if (document.activeElement === lastFocusableElement) {\n                event.preventDefault();\n                firstFocusableElement.focus();\n            } else if (!list.find(e => e === document.activeElement)) {\n                firstFocusableElement.focus();\n            }\n            event.stopPropagation();\n        }\n    }\n\n    private filter(e: HTMLElement) {\n        return (\n            getComputedStyle(e).display !== 'none' &&\n            getComputedStyle(e).display !== 'contents' &&\n            getComputedStyle(e).contentVisibility !== 'hidden' &&\n            getComputedStyle(e).visibility !== 'hidden' &&\n            e.checkVisibility() &&\n            e.tabIndex !== -1\n        );\n    }\n\n    private mutations(mutationsList: MutationRecord[], listElement: HTMLElement[], div: HTMLDivElement) {\n        for (const mutation of mutationsList) {\n            if (mutation.type === 'childList' || mutation.type === 'attributes') {\n                listElement = this.firstLastFocusableElement(div);\n                return;\n            }\n        }\n    }\n\n    private firstLastFocusableElement(div: HTMLDivElement): HTMLElement[] {\n        const focusableElements = div.querySelectorAll<HTMLElement>(this.focusRules);\n        return Array.from(focusableElements);\n    }\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, HostListener, Type, input } from '@angular/core';\n\nimport { MagmaContextMenu } from './context-menu.directive';\n\nimport { MagmaClickEnterDirective } from '../../directives/click-enter.directive';\nimport { MagmaLimitFocusDirective } from '../../directives/limit-focus.directive';\n\ntype RequireOnlyOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> &\n    {\n        [K in Keys]-?: Required<Pick<T, K>> & Partial<Record<Exclude<Keys, K>, undefined>>;\n    }[Keys];\n\ntype ContextMenuItemBase<T> = {\n    iconText?: string;\n    icon?: string;\n    label?: string;\n    action: (arg: T) => void;\n};\n\ntype ContextMenuItemInputs<T> = { context?: MagmaContextMenu<T> } & Record<string, any>;\n\ntype ContextMenuItemComponentBase<T> = {\n    component: Type<any>;\n    inputs?: ContextMenuItemInputs<T>;\n};\n\nexport type ContextMenuItem<T> =\n    | RequireOnlyOne<ContextMenuItemBase<T>, 'iconText' | 'icon'>\n    | ContextMenuItemComponentBase<T>;\n\nexport interface ContextMenuData<T> {\n    contextMenu: ContextMenuItem<T>[];\n    data: T;\n}\n\nexport type ContextMenuMode = 'default' | 'bubble' | undefined;\n\n@Component({\n    selector: 'context-menu',\n    templateUrl: './context-menu.component.html',\n    styleUrl: './context-menu.component.scss',\n    host: {\n        '[class.default]': 'mode() === \"default\"',\n        '[class.bubble]': 'mode() === \"bubble\"',\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [NgComponentOutlet, MagmaClickEnterDirective, MagmaLimitFocusDirective],\n})\nexport class MagmaContextMenuComponent<T> {\n    // input\n\n    readonly items = input.required<ContextMenuData<T>>();\n    readonly mode = input<ContextMenuMode>('default');\n    readonly context = input<MagmaContextMenu<T>>();\n\n    active(item: RequireOnlyOne<ContextMenuItemBase<T>, 'iconText' | 'icon'>) {\n        item.action(this.items().data);\n        MagmaContextMenu._overlayRef!.dispose();\n        MagmaContextMenu._overlayRef = undefined;\n    }\n\n    @HostListener('contextmenu', ['$event'])\n    @HostListener('auxclick', ['$event'])\n    onContextMenuContext(event: MouseEvent) {\n        event.preventDefault();\n        event.stopPropagation();\n    }\n\n    protected withContext(inputs?: ContextMenuItemInputs<T>) {\n        return { ...inputs, ...{ context: this.context() } };\n    }\n\n    protected typeItem(context: ContextMenuItem<T>): RequireOnlyOne<ContextMenuItemBase<T>, 'iconText' | 'icon'> {\n        return context as RequireOnlyOne<ContextMenuItemBase<T>, 'iconText' | 'icon'>;\n    }\n\n    protected typeComponent(context: ContextMenuItem<T>): ContextMenuItemComponentBase<T> {\n        return context as ContextMenuItemComponentBase<T>;\n    }\n}\n","@let context = items().contextMenu;\n<menu [style.--total]=\"context.length\" limitFocus>\n  <ul>\n    @for (item of context; track item; let index = $index) {\n      @let itc = typeComponent(item);\n      @let iti = typeItem(item);\n      @if (itc.component) {\n        <li [style.--position]=\"index\" class=\"item-content\">\n          <span class=\"content\">\n            <ng-container [ngComponentOutlet]=\"itc.component\" [ngComponentOutletInputs]=\"withContext(itc.inputs)\"\n          /></span>\n        </li>\n      } @else {\n        <li (clickEnter)=\"active(iti)\" [style.--position]=\"index\" [attr.title]=\"iti.label ? iti.label : null\">\n          @if (iti.iconText) {\n            <span class=\"icon\">{{ iti.iconText }}</span>\n          } @else {\n            <span class=\"icon {{ iti.icon }}\"></span>\n          }\n          @if (iti.label) {\n            <span class=\"label\">{{ iti.label }}</span>\n          }\n        </li>\n      }\n    }\n  </ul>\n</menu>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Replace all string (equivalent of `<string>.replaceAll()`)\n *\n * Usage:\n * - `{{ i of 15 | repeatFor }}`\n *\n * Example:\n * - `@for (i of 10 | repeatFor; track $index) { {{ $index }}  }` → ` 0 1 2 3 4 5 6 7 8 9 `\n * - `@for (i of 10 | repeatFor : true; track $index) { {{ i }}  }` → `1 2 3 4 5 6 7 8 9 10`\n */\n@Pipe({\n    name: 'repeatFor',\n})\nexport class RepeatForPipe implements PipeTransform {\n    transform(value: number, counter = false): number[] {\n        value = Math.trunc(Math.max(Number(value), 0) || 0);\n        if (counter) {\n            return new Array(...new Array(value)).map((i, index) => index + 1);\n        } else {\n            return new Array(value);\n        }\n    }\n}\n","import { DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, Directive, computed, input } from '@angular/core';\n\nimport { RepeatForPipe } from '../../pipes/repeat-for.pipe';\n\nexport interface ContribCalendarDay<date = string | Date> {\n    date: date;\n    value: number;\n}\n\nexport type ContribCalendar<date = string | Date> = ContribCalendarDay<date>[];\nexport type MagmaContribCalendarSteps = { value: number; color: string }[];\n\nexport type MagmaContribCalendarDays = 'Monday' | 'Sunday' | 'Saturday' | undefined;\n\n@Directive({ selector: 'mg-contrib-calendar-desc' })\nexport class MagmaContribCalendarDesc {}\n\n@Component({\n    selector: 'mg-contrib-calendar',\n    templateUrl: './contrib-calendar.component.html',\n    styleUrl: './contrib-calendar.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [DatePipe, RepeatForPipe],\n    host: {\n        '[style.--size]': 'size()',\n    },\n})\nexport class MagmaContribCalendar {\n    readonly lang = input<string | undefined>();\n\n    readonly min = input<string | number | Date | undefined>();\n\n    readonly max = input<string | number | Date | undefined>();\n\n    readonly calendar = input.required<ContribCalendar>();\n\n    readonly steps = input<MagmaContribCalendarSteps>([\n        { value: 1, color: 'var(--contrib-calendar-tile-color-lvl1)' },\n        { value: 6, color: 'var(--contrib-calendar-tile-color-lvl2)' },\n        { value: 11, color: 'var(--contrib-calendar-tile-color-lvl3)' },\n        { value: 16, color: 'var(--contrib-calendar-tile-color-lvl4)' },\n    ]);\n\n    readonly firstDayOfWeek = input<MagmaContribCalendarDays>();\n\n    protected computedDays = computed(() =>\n        Array.from({ length: 7 }, (_, i) => {\n            const date = new Date(2024, 0, this.getFirstGet(this.firstDayOfWeek()) + i + 1);\n            return date.toLocaleString(this.lang() || 'en', { weekday: 'narrow' });\n        }),\n    );\n\n    private getFirstGet(day: MagmaContribCalendarDays) {\n        switch (day) {\n            case 'Sunday':\n                return -1;\n            case 'Saturday':\n                return -2;\n            default:\n                return 0;\n        }\n    }\n\n    protected sortedCalendar = computed(() => {\n        const map = this.calendar()\n            .map(e => {\n                if (typeof e.date === 'string') {\n                    e.date = new Date(e.date);\n                }\n                return e as ContribCalendarDay<Date>;\n            })\n            .filter(e => e.date instanceof Date && typeof e.value === 'number');\n        map.sort((a, b) => a.date.getTime() - b.date.getTime());\n        return map;\n    });\n\n    protected computedCalendar = computed(() => {\n        return this.createListDates(this.sortedCalendar());\n    });\n\n    protected firstPos = computed(() => {\n        let day = (this.minDate(this.sortedCalendar()).getDay() - this.getFirstGet(this.firstDayOfWeek())) % 7;\n        return day === 0 ? 7 : day;\n    });\n\n    protected mouths = computed(() => {\n        return this.listOfMonths(this.sortedCalendar());\n    });\n\n    protected size = computed(() => {\n        return this.numberWeek(this.sortedCalendar());\n    });\n\n    protected getColor(value: number) {\n        const t = this.steps();\n        if (value < t[0].value) {\n            return undefined;\n        }\n        const l = t.length - 1;\n        if (value < t[l].value) {\n            for (let i = 0; i <= l - 1; i++) {\n                if (i < l && value >= t[i].value && value < t[i + 1].value) {\n                    return t[i].color;\n                }\n            }\n        }\n        return t[l].color;\n    }\n\n    private createListDates(map: ContribCalendar<Date>) {\n        const minDate = this.minDate(map);\n        const maxDate = this.maxDate(map);\n\n        const allDates: Date[] = [];\n        for (let d = new Date(minDate); d <= maxDate; d.setUTCDate(d.getUTCDate() + 1)) {\n            allDates.push(new Date(d));\n        }\n\n        const dateValueMap = new Map<number, number>();\n        map.forEach(e => {\n            dateValueMap.set(e.date.getTime(), e.value);\n        });\n\n        return allDates.map(date => {\n            const time = date.getTime();\n            return {\n                date,\n                value: dateValueMap.has(time) ? dateValueMap.get(time)! : 0,\n                odd: (date.getUTCMonth() + 1) % 2,\n            } as ContribCalendarDay<Date> & { odd: number };\n        });\n    }\n\n    private listOfMonths(map: ContribCalendar<Date>) {\n        // first Monday\n\n        const firstDayWeek = this.minDate(map);\n        const day = (firstDayWeek.getUTCDay() || 7) - 1 + this.getFirstGet(this.firstDayOfWeek());\n        if (day) {\n            firstDayWeek.setUTCDate(firstDayWeek.getUTCDate() - day);\n        }\n\n        // first mouth\n\n        const firstDayOfMonth = this.minDate(map);\n        firstDayOfMonth.setUTCDate(1);\n\n        // max date\n\n        const maxDate = this.maxDate(map);\n\n        const months: { name: string; pos: number }[] = [];\n\n        // Generate the months and calculate the number of cumulative weeks since the 1st day of the first month\n        for (let d = firstDayOfMonth; d <= maxDate; d.setUTCMonth(d.getUTCMonth() + 1)) {\n            const year = d.getUTCFullYear();\n            const month = d.getUTCMonth();\n            const firstDayOfCurrentMonth = new Date(Date.UTC(year, month, 1));\n\n            // Calculate the number of weeks between the 1st day of the first month and the 1st day of the current month\n            const diffTime = firstDayOfCurrentMonth.getTime() - firstDayWeek.getTime();\n            const pos = diffTime > 0 ? Math.floor(diffTime / (7 * 24 * 60 * 60 * 1000)) : 0; // + 1 for grid-column\n\n            months.push({\n                name: firstDayOfCurrentMonth.toLocaleString(this.lang() || 'en', { month: 'short' }),\n                pos,\n            });\n        }\n\n        // Deletion of the first month if there is an overlap\n\n        if (months.length > 1 && months[0].pos === months[1].pos) {\n            months.shift();\n        }\n\n        return months;\n    }\n\n    private numberWeek(map: ContribCalendar<Date>) {\n        // first day of the week\n\n        const firstDayWeek = this.minDate(map);\n        const day = (firstDayWeek.getUTCDay() || 7) - 1 + this.getFirstGet(this.firstDayOfWeek());\n        if (day) {\n            firstDayWeek.setUTCDate(firstDayWeek.getUTCDate() - day);\n        }\n\n        // number of weeks\n\n        const diffTime = this.maxDate(map).getTime() - firstDayWeek.getTime();\n        return Math.ceil(diffTime / (7 * 24 * 60 * 60 * 1000));\n    }\n\n    private minDate(map: ContribCalendar<Date>): Date {\n        return (this.min() ? new Date(this.min()!) : null) || new Date(map[0].date);\n    }\n\n    private maxDate(map: ContribCalendar<Date>): Date {\n        return (this.max() ? new Date(this.max()!) : null) || new Date(map[map.length - 1].date);\n    }\n}\n","<div class=\"calendar\">\n  <div>\n    <div class=\"day\">\n      @for (day of computedDays(); track $index) {\n        <div>{{ day }}</div>\n      }\n    </div>\n    <div class=\"month\">\n      @for (month of mouths(); track $index) {\n        <div style=\"--pos: {{ month.pos }}\">{{ month.name }}</div>\n      }\n    </div>\n    <div class=\"tile\" style=\"--first-pos: {{ firstPos() }}\">\n      @for (i of computedCalendar(); track $index) {\n        <div\n          title=\"{{ i.date | date: 'dd/MM/y' }} : {{ i.value }}\"\n          [class.odd]=\"i.odd\"\n          [style.--color]=\"getColor(i.value)\"\n        ></div>\n      }\n    </div>\n  </div>\n</div>\n<div class=\"desc\">\n  <div>\n    <ng-content select=\"mg-contrib-calendar-desc\" />\n  </div>\n  <div class=\"tile-desc\">\n    @let s = steps();\n    @for (i of 4 | repeatFor: true; track $index) {\n      <div\n        [style.--color]=\"s[$index].color\"\n        [title]=\"s[$index + 1] ? s[$index].value + ' - ' + (s[$index + 1].value - 1) : '> ' + (s[$index].value - 1)\"\n      ></div>\n    }\n  </div>\n</div>\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Methods for string (padStart, padEnd, toUpperCase, toUpperCase, toLocaleUpperCase, etc.)\n *\n * Examples of usage:\n * - `{{ '123' | string: 'padStart' : 6 : '456' }}` → `456123`\n */\n@Pipe({\n    name: 'string',\n})\nexport class StringPipe implements PipeTransform {\n    transform(value: any, name: 'length'): number;\n    transform(value: any, name: string, ...args: any[]): string;\n    transform(value: any, name: string, ...args: any[]): string | number {\n        const strValue = String(value);\n\n        if (name === 'length') {\n            return strValue.length;\n        }\n\n        const method = (strValue as any)[name];\n        return typeof method === 'function' ? method.apply(strValue, args) : strValue;\n    }\n}\n","export type WeekDay = 'Monday' | 'Tuesday' | 'Wednesday' | 'Thursday' | 'Friday' | 'Saturday' | 'Sunday';\nconst DAYS: Record<WeekDay, number> = {\n    Sunday: 0,\n    Monday: 1,\n    Tuesday: 2,\n    Wednesday: 3,\n    Thursday: 4,\n    Friday: 5,\n    Saturday: 6,\n};\n\n/**\n * Date to ISO format\n * @param date date in string of Date object\n * @param newDate new date if date is empty\n * @returns return date YYYY-MM-DDTHH:mm:ssZ\n */\nexport function toISODate(date?: string | Date, newDate = false): string | undefined {\n    if (typeof date === 'string' && date.trim()) {\n        return date;\n    }\n    if (date instanceof Date) {\n        return date.toISOString();\n    }\n    return newDate ? new Date().toISOString() : undefined;\n}\n\nexport enum DurationTime {\n    WEEK = 7 * 24 * 60 * 60 * 1000,\n    DAY = 24 * 60 * 60 * 1000,\n    HOUR = 60 * 60 * 1000,\n    MINUTE = 60 * 1000,\n    SECOND = 1000,\n    MILLISECOND = 1,\n}\n\n/**\n * Add time in weeks\n * @param number number\n * @param duration size (default : MINUTE)\n * @param start date (default: now)\n * @returns new Date\n */\nexport function addDuration(\n    number: number,\n    duration: DurationTime = DurationTime.MINUTE,\n    start: number | Date = Date.now(),\n): Date {\n    return new Date((typeof start === 'number' ? start : start.getTime()) + number * duration);\n}\n\n/**\n * Calculate the week number for this date.\n * @param date the date\n * @param param.dowOffset the day of week the week\"starts\" on for your locale - it can be from 0 to 6.\n * If dowOffset is 1 (Monday). Default is Monday (ISO 8601).\n * @param param.firstWeekContainsDay number of days for the first week\n * @return the week returned is the ISO 8601 week number\n */\nexport function getWeek(\n    date: Date,\n    param?: { dowOffset?: 'Monday' | 'Sunday' | 'Saturday'; firstWeekContainsDay?: 1 | 4 },\n) {\n    const DAYS = { Sunday: 0, Monday: 1, Saturday: 6 };\n    // Default to Monday (1) as per ISO 8601\n    const dowOffset = param?.dowOffset ? (DAYS[param.dowOffset] ?? 1) : 1;\n\n    // Create a copy so we don't mutate the original date object\n    const target = new Date(date.valueOf());\n\n    // 1. Adjust the date to the Thursday of the current week\n    // (In ISO 8601, the week number is determined by the Thursday)\n    const dayNr = (date.getDay() - dowOffset + 7) % 7;\n    target.setDate(target.getDate() - dayNr + 3);\n\n    // 2. Find the first Thursday of the year\n    const firstThursday = new Date(target.getFullYear(), 0, 4);\n    const firstThursdayDayNr = (firstThursday.getDay() - dowOffset + 7) % 7;\n    firstThursday.setDate(firstThursday.getDate() - firstThursdayDayNr + 3);\n\n    // 3. Calculate the number of weeks between the target Thursday and the first Thursday\n    const diffInMs = target.getTime() - firstThursday.getTime();\n\n    // 604800000 = 7 days * 24h * 60m * 60s * 1000ms\n    const weekNumber = 1 + Math.round(diffInMs / 604800000);\n\n    return weekNumber;\n}\n\nconst isoRegex = /^\\d{4}-\\d{2}-\\d{2}(T\\d{2}:\\d{2}:\\d{2}(\\.\\d{3})?(Z|(\\+|-)\\d{2}:\\d{2})?)?$/;\n\n/**\n * Validates if a string follows the ISO 8601 format.\n * Matches: YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss or YYYY-MM-DDTHH:mm:ss.sssZ\n * @params value\n */\nexport function isISODate(value: string): boolean {\n    return isoRegex.test(value);\n}\n","export class Timing {\n    private static timers: Record<number, { timer: NodeJS.Timeout; func: () => void }> = {};\n    private static inc = 0;\n    static start(cb: () => void, gap: number): number {\n        let key = Timing.inc++;\n        Timing.timers[key] = { timer: setInterval(cb, gap), func: cb };\n        return key;\n    }\n    static stop(id: number) {\n        if (Timing.timers[id]) {\n            clearInterval(Timing.timers[id].timer);\n            delete Timing.timers[id];\n        }\n    }\n    static change(id: number, delay: number) {\n        if (Timing.timers[id]) {\n            clearInterval(Timing.timers[id].timer);\n            Timing.timers[id].timer = setInterval(Timing.timers[id].func, delay);\n        }\n    }\n    // Add cleanup method for tests\n    static stopAll() {\n        Object.keys(Timing.timers).forEach(key => {\n            Timing.stop(parseInt(key));\n        });\n    }\n}\n\nexport const wait = async (delay: number) =>\n    await new Promise<void>(resolve => {\n        setTimeout(() => {\n            resolve();\n        }, delay);\n    });\n","import {\n    ChangeDetectorRef,\n    Directive,\n    Injector,\n    OnChanges,\n    OnInit,\n    SimpleChanges,\n    booleanAttribute,\n    computed,\n    inject,\n    input,\n    output,\n    signal,\n} from '@angular/core';\nimport { AbstractControl, ControlValueAccessor, NgControl, ValidationErrors } from '@angular/forms';\n\nimport { Select2 } from 'ng-select2-component';\n\nimport { MagmaInput } from './input.component';\n\nimport { ParamsMessagesControlMessage } from '../../services/form-builder-extended';\nimport { Logger } from '../../services/logger';\nimport { Timing } from '../../utils/timing';\n\n@Directive({})\nexport class MagmaInputCommon<T = any[]> implements ControlValueAccessor, OnInit, OnChanges, ControlValueAccessor {\n    host?: MagmaInput;\n    protected readonly logger = inject(Logger);\n    protected readonly cd = inject(ChangeDetectorRef);\n    protected readonly injector = inject(Injector);\n\n    readonly value = input();\n\n    protected _baseValue = 'value';\n\n    readonly formControlName = input<string>();\n    readonly name = input<string>();\n    readonly id = input<string>();\n    readonly placeholder = input<string>();\n    readonly placeholderAnimated = input<string>();\n    readonly datalist = input<T>();\n\n    /** Whether the element is disabled. */\n    readonly disabled = input(false, { transform: booleanAttribute });\n\n    /** Whether the element is readonly. */\n    readonly readonly = input(false, { transform: booleanAttribute });\n\n    readonly update = output<any>();\n    readonly change = output<any>();\n\n    readonly componentName: string = 'input-common';\n    protected counter = 0;\n    protected readonly uid = computed<string>(() => `${this.componentName}-${this.counter}`);\n\n    refreshTrigger = signal<any>(false);\n    index = 0;\n\n    _name = computed<string>(\n        () => this.refreshTrigger() || this.formControlName() || this.name() || this.id() || this.uid(),\n    );\n    _id = computed<string>(() => this.id() || this.uid());\n\n    get inputElement(): HTMLInputElement | HTMLTextAreaElement | Select2 | HTMLElement | undefined {\n        return undefined;\n    }\n\n    protected _value: any = '';\n\n    protected onError = signal(false);\n\n    protected placeholderTimer: undefined | number = undefined;\n\n    placeholderDisplay = signal<string>('');\n\n    ngControl: NgControl | null = null;\n\n    ngOnInit(): void {\n        setTimeout(() => {\n            if (!this.host) {\n                this.onError.set(true);\n            }\n        });\n        this.ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\n        if (this.host) {\n            this.host.ngControl ??= this.ngControl;\n        }\n        this.setHostLabelId();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes[this._baseValue]) {\n            this.writeValue(changes[this._baseValue].currentValue);\n        }\n        if (changes['id']) {\n            this.setHostLabelId();\n        }\n        if (changes['placeholder']) {\n            this.initAnimation();\n        }\n        if (\n            changes['placeholderAnimated'] &&\n            changes['placeholderAnimated'].currentValue !== changes['placeholderAnimated'].previousValue\n        ) {\n            if (changes['placeholderAnimated'].currentValue) {\n                this.initAnimation();\n            } else {\n                const [, , , separator] = this.infoPlaceholderAnimation(this.placeholderAnimated()!);\n                this.stopPlaceholderAnimation(separator);\n            }\n        }\n    }\n\n    getValue(): any {\n        return this._value;\n    }\n\n    onChange: (value: any) => void = () => {};\n    onTouched: () => void = () => {};\n\n    writeValue(value: any): void {\n        this._value = value;\n        this.cd.detectChanges();\n        setTimeout(() => {\n            this.initAnimation();\n        });\n    }\n\n    registerOnChange(fn: any): void {\n        this.onChange = fn;\n    }\n\n    registerOnTouched(fn: any): void {\n        this.onTouched = fn;\n    }\n\n    validate(control: AbstractControl): ValidationErrors | null {\n        if (control.touched) {\n            let errorMessage: string | undefined = undefined;\n            if (control.errors !== null) {\n                const key = Object.keys(control.errors)[0];\n                const data = (control as any).controlData?.[key];\n                const paramsData = (control as any).controlParamsData;\n                const defaultMessage = (control as any).controlData?.message;\n\n                if (data || defaultMessage) {\n                    const message = (data as ParamsMessagesControlMessage<any>)?.message ?? defaultMessage;\n                    errorMessage =\n                        typeof message === 'function'\n                            ? message({\n                                  type: key as any,\n                                  errorData: control.errors[key],\n                                  state: data?.state,\n                                  data: data?.data,\n                                  params: paramsData,\n                              })\n                            : message;\n\n                    if (data && errorMessage?.includes('{')) {\n                        [...errorMessage.matchAll(/\\{([^}]+)\\}/g)].forEach(([tag, keyName]) => {\n                            errorMessage = errorMessage!.replace(\n                                tag,\n                                (control as any)[keyName]?.state ??\n                                    control.errors?.[key]?.[keyName] ??\n                                    paramsData[keyName],\n                            );\n                        });\n                    }\n                }\n            }\n            this.host?._errorMessage.set(errorMessage ?? null);\n        }\n        return null;\n    }\n\n    protected setHostLabelId() {\n        if (this.host) {\n            this.host.forId.set(`${this._id()}-input`);\n            this.host.cd.detectChanges();\n        }\n    }\n\n    protected initAnimation() {\n        const [, , , separator] = this.infoPlaceholderAnimation(this.placeholderAnimated()!);\n        if (this.getValue() === null || this.getValue() === undefined || this.getValue() === '') {\n            this.stopPlaceholderAnimation(separator);\n            if (this.placeholderAnimated()) {\n                this.startPlaceholderAnimation(this.placeholderAnimated()!);\n            }\n        } else {\n            this.stopPlaceholderAnimation(separator);\n        }\n    }\n\n    protected infoPlaceholderAnimation(info: string) {\n        const [baseDelayValue, repeatValue, intervaleValue, separatorVal] = (info ?? '').split(/\\s+/);\n        const baseDelay = Math.max(+baseDelayValue || 30, 1);\n        const repeat = Math.max(+repeatValue || 1, 1);\n        const intervale = Math.max(+intervaleValue || baseDelay, 1);\n        const separator = separatorVal || '|';\n        return [baseDelay, repeat, intervale, separator] as [number, number, number, string];\n    }\n\n    protected startPlaceholderAnimation(info: string) {\n        const [baseDelay, repeat, intervale, separator] = this.infoPlaceholderAnimation(info);\n        this.inPlaceholderAnimation(baseDelay, repeat, intervale, separator);\n    }\n\n    protected inPlaceholderAnimation(baseDelay: number, repeat: number, intervale: number, separator: string = '|') {\n        const text = this.placeholder()!.split('');\n        let i = 0;\n        this.placeholderDisplay.set('');\n        this.placeholderTimer = Timing.start(() => {\n            Timing.change(this.placeholderTimer!, baseDelay);\n            let value = text[i++];\n            if (value === undefined) {\n                if (repeat === 1) {\n                    this.stopPlaceholderAnimation(separator);\n                } else {\n                    Timing.stop(this.placeholderTimer!);\n                    setTimeout(() => {\n                        this.inPlaceholderAnimation(baseDelay, repeat - 1, intervale);\n                    }, intervale);\n                }\n                return;\n            }\n            if (value === separator) {\n                Timing.change(this.placeholderTimer!, intervale);\n                setTimeout(\n                    () => {\n                        this.placeholderDisplay.set('');\n                    },\n                    Math.max(intervale - baseDelay, 0),\n                );\n            } else {\n                this.placeholderDisplay.update(e => e + value);\n\n                while (value === ' ') {\n                    value = text[i++];\n                    this.placeholderDisplay.update(e => e + value);\n                }\n            }\n        }, baseDelay);\n    }\n\n    protected stopPlaceholderAnimation(separator: string = '') {\n        Timing.stop(this.placeholderTimer!);\n        this.placeholderTimer = undefined;\n        this.placeholderDisplay.set(\n            (separator ? this.placeholder?.()?.split(separator).pop() : (this.placeholder?.() ?? '')) ?? '',\n        );\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    TemplateRef,\n    booleanAttribute,\n    input,\n    numberAttribute,\n    output,\n    viewChildren,\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport {\n    Select2,\n    Select2AutoCreateEvent,\n    Select2Data,\n    Select2RemoveEvent,\n    Select2ScrollEvent,\n    Select2SearchEvent,\n    Select2SelectionOverride,\n    Select2Template,\n    Select2UpdateEvent,\n    Select2UpdateValue,\n} from 'ng-select2-component';\n\nimport { MagmaInputCommon } from './input-common';\n\nlet counter = 0;\n\n@Component({\n    selector: 'mg-input-select',\n    templateUrl: './input-select.component.html',\n    styleUrl: './input-select.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputSelect },\n        { provide: NG_VALUE_ACCESSOR, useExisting: MagmaInputSelect, multi: true },\n        { provide: NG_VALIDATORS, useExisting: MagmaInputSelect, multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n    },\n    imports: [Select2],\n})\nexport class MagmaInputSelect extends MagmaInputCommon {\n    override readonly componentName = 'input-select';\n    protected override counter = counter++;\n\n    override readonly datalist: any = undefined; // not for select\n\n    // ----------------------- input\n    readonly data = input.required<Select2Data>();\n\n    /** minimum characters to start filter search */\n    readonly minCharForSearch = input(0, { transform: numberAttribute });\n\n    /** text placeholder */\n    readonly displaySearchStatus = input<'default' | 'hidden' | 'always' | undefined>(undefined);\n\n    /** in multiple: maximum selection element (0 = no limit) */\n    readonly limitSelection = input(0, { transform: numberAttribute });\n\n    /** dropdown position */\n    readonly listPosition = input<'above' | 'below' | 'auto'>('below');\n\n    /** overlay with CDK Angular position */\n    readonly overlay = input(false, { transform: booleanAttribute });\n\n    /** select one or more item */\n    readonly multiple = input(false, { transform: booleanAttribute });\n\n    /** drag'n drop list of items in multiple */\n    readonly multipleDrag = input(false, { transform: booleanAttribute });\n\n    /** use the material style */\n    readonly styleMode = input<'material' | 'noStyle' | 'borderless' | 'default'>('default');\n\n    /** message when no result */\n    readonly noResultMessage = input<string>();\n\n    /** maximum results limit (0 = no limit) */\n    readonly maxResults = input(0, { transform: numberAttribute });\n\n    /** message when maximum results */\n    readonly maxResultsMessage = input('Too many results…');\n\n    /** infinite scroll distance */\n    readonly infiniteScrollDistance = input(1.5, { transform: numberAttribute });\n\n    /** infinite scroll distance */\n    readonly infiniteScrollThrottle = input(150, { transform: numberAttribute });\n\n    /** infinite scroll activated */\n    readonly infiniteScroll = input(false, { transform: booleanAttribute });\n\n    /** auto create if not exist */\n    readonly autoCreate = input(false, { transform: booleanAttribute });\n\n    /** no template for label selection */\n    readonly noLabelTemplate = input(false, { transform: booleanAttribute });\n\n    /** use it for change the pattern of the filter search */\n    readonly editPattern = input<((str: string) => string) | undefined>(undefined);\n\n    /** template(s) for formatting */\n    readonly templates = input<Select2Template>(undefined);\n\n    /** template for formatting selected option */\n    readonly templateSelection = input<TemplateRef<any> | undefined>(undefined);\n\n    /** the max height of the results container when opening the select */\n    readonly resultMaxHeight = input('200px');\n\n    /** Active Search event */\n    readonly customSearchEnabled = input(false, { transform: booleanAttribute });\n\n    /** minimal data of show the search field */\n    readonly minCountForSearch = input(undefined, { transform: numberAttribute });\n\n    /** Whether items are hidden when has. */\n    readonly hideSelectedItems = input(false, { transform: booleanAttribute });\n\n    /** Tab index for the select2 element. */\n    readonly tabIndex = input(0, { transform: numberAttribute });\n\n    /** reset with no selected value */\n    readonly resettable = input(false, { transform: booleanAttribute });\n\n    /** selected value when × is clicked */\n    readonly resetSelectedValue = input<any>(undefined);\n\n    /** highlight search text */\n    readonly highlightText = input(false, { transform: booleanAttribute });\n\n    /** grid: item by line\n     * * 0 = no grid\n     * * number = item by line (4)\n     * * string = minimal size item (100px)\n     */\n    readonly grid = input('');\n\n    /**\n     * Replace selection by a text\n     * * if string: `%size%` = total selected options\n     * * if function: juste show the string\n     */\n    readonly selectionOverride = input<Select2SelectionOverride | undefined>(undefined);\n\n    /** force selection on one line */\n    readonly selectionNoWrap = input(false, { transform: booleanAttribute });\n\n    /** Add an option to select or remove all (if all is selected) */\n    readonly showSelectAll = input(false, { transform: booleanAttribute });\n\n    /** Text for remove all options */\n    readonly removeAllText = input('Remove all');\n\n    /** Text for select all options */\n    readonly selectAllText = input('Select all');\n\n    // -- WAI related inputs ---\n\n    /** title attribute applied to the input */\n    readonly title = input<string>();\n\n    /** aria-labelledby attribute applied to the input, to specify en external label */\n    readonly ariaLabelledby = input<string>();\n\n    /** aria-describedby attribute applied to the input */\n    readonly ariaDescribedby = input<string>();\n\n    /** aria-invalid attribute applied to the input, to force error state */\n    readonly ariaInvalid = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n    /** description of the reset button when using 'resettable'. Default value : 'Reset' */\n    readonly ariaResetButtonDescription = input<string>('Reset');\n\n    /** like native select keyboard navigation (only single mode) */\n    readonly nativeKeyboard = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n    // ----------------------- output\n\n    readonly autoCreateItem = output<Select2AutoCreateEvent<Select2UpdateValue>>();\n    readonly open = output<Select2>();\n    readonly close = output<Select2>();\n    readonly focus = output<Select2>();\n    readonly blur = output<Select2>();\n    readonly search = output<Select2SearchEvent<Select2UpdateValue>>();\n    readonly scroll = output<Select2ScrollEvent>();\n    readonly removeOption = output<Select2RemoveEvent<Select2UpdateValue>>();\n\n    // ----------------------- internal\n\n    readonly input = viewChildren(Select2);\n\n    override get inputElement(): Select2 | undefined {\n        return this.input()?.[0];\n    }\n\n    override writeValue(value: any): void {\n        super.writeValue(value);\n        this.inputElement?.writeValue(value);\n    }\n\n    changeValue(event: Select2UpdateEvent<Select2UpdateValue>) {\n        const value = event.value;\n        this.onChange(value);\n        this.update.emit(value);\n    }\n\n    _focus(value: boolean, event: Select2) {\n        if (!value) {\n            this.blur.emit(event);\n            this.onTouched();\n            if (this.ngControl?.control) {\n                this.validate(this.ngControl.control);\n            }\n        } else {\n            this.focus.emit(event);\n        }\n    }\n}\n","@if (!onError()) {\n  <ng-select2\n    [id]=\"_id() + '-select2'\"\n    [value]=\"_value\"\n    [placeholder]=\"placeholderDisplay()\"\n    [minCharForSearch]=\"minCharForSearch()\"\n    [displaySearchStatus]=\"displaySearchStatus()\"\n    [limitSelection]=\"limitSelection()\"\n    [listPosition]=\"listPosition()\"\n    [overlay]=\"overlay()\"\n    [multiple]=\"multiple()\"\n    [multipleDrag]=\"multipleDrag()\"\n    [styleMode]=\"styleMode()\"\n    [noResultMessage]=\"noResultMessage()\"\n    [maxResults]=\"maxResults()\"\n    [maxResultsMessage]=\"maxResultsMessage()\"\n    [infiniteScrollDistance]=\"infiniteScrollDistance()\"\n    [infiniteScrollThrottle]=\"infiniteScrollThrottle()\"\n    [infiniteScroll]=\"infiniteScroll()\"\n    [autoCreate]=\"autoCreate()\"\n    [noLabelTemplate]=\"noLabelTemplate()\"\n    [editPattern]=\"editPattern()\"\n    [templates]=\"templates()\"\n    [templateSelection]=\"templateSelection()\"\n    [resultMaxHeight]=\"resultMaxHeight()\"\n    [customSearchEnabled]=\"customSearchEnabled()\"\n    [minCountForSearch]=\"minCountForSearch()\"\n    [disabled]=\"disabled()\"\n    [hideSelectedItems]=\"hideSelectedItems()\"\n    [readonly]=\"readonly()\"\n    [tabIndex]=\"tabIndex()\"\n    [resettable]=\"resettable()\"\n    [resetSelectedValue]=\"resetSelectedValue()\"\n    [grid]=\"grid()\"\n    [selectionOverride]=\"selectionOverride()\"\n    [selectionNoWrap]=\"selectionNoWrap()\"\n    [showSelectAll]=\"showSelectAll()\"\n    [removeAllText]=\"removeAllText()\"\n    [selectAllText]=\"selectAllText()\"\n    [title]=\"title()\"\n    [highlightText]=\"highlightText()\"\n    [nativeKeyboard]=\"nativeKeyboard()\"\n    [ariaLabelledby]=\"ariaLabelledby()\"\n    [ariaDescribedby]=\"ariaDescribedby()\"\n    [ariaInvalid]=\"ariaInvalid()\"\n    [ariaResetButtonDescription]=\"ariaResetButtonDescription()\"\n    [data]=\"data()\"\n    (update)=\"changeValue($event)\"\n    (focus)=\"_focus(true, $event)\"\n    (blur)=\"_focus(false, $event); blur.emit($event)\"\n    (autoCreateItem)=\"autoCreateItem.emit($event)\"\n    (open)=\"open.emit($event)\"\n    (close)=\"close.emit($event)\"\n    (search)=\"search.emit($event)\"\n    (scroll)=\"scroll.emit($event)\"\n    (removeOption)=\"removeOption.emit($event)\"\n  />\n} @else {\n  Error\n}\n","import { CommonModule } from '@angular/common';\nimport {\n    AfterContentChecked,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    OnChanges,\n    SimpleChanges,\n    computed,\n    contentChildren,\n    inject,\n    input,\n    signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\nimport { MagmaInputCommon } from './input-common';\n\nlet counter = 0;\n\nexport type MagmaInputTypeValue = 'default' | 'value' | 'array';\nexport type MagmaInputReturnValue = 'default' | 'value' | 'boolean';\nexport type MagmaInputAlignMode = 'row' | 'column';\n\n@Component({\n    selector: 'mg-input',\n    templateUrl: './input.component.html',\n    styleUrl: './input.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CommonModule],\n    host: {\n        '[id]': '_id()',\n    },\n})\nexport class MagmaInput implements OnChanges, AfterContentChecked {\n    readonly cd = inject(ChangeDetectorRef);\n\n    readonly id = input<string>();\n\n    forId = signal<string | undefined>(undefined);\n\n    /** for checkbox */\n    readonly typeValue = input<MagmaInputTypeValue>('default');\n    readonly returnValue = input<MagmaInputReturnValue>('default');\n    /** for checkbox & radio */\n    readonly alignMode = input<MagmaInputAlignMode>('row');\n\n    protected counter = counter++;\n    protected uid = computed<string>(() => `mg-input-${this.counter}`);\n\n    _id = computed<string>(() => this.id() || this.uid());\n\n    ngControl: NgControl | null = null;\n\n    _errorMessage = signal<string | null>(null);\n\n    readonly inputs = contentChildren(MagmaInputCommon);\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if ((changes['typeValue'] || changes['returnValue']) && this.inputs()[0]?.componentName === 'input-checkbox') {\n            this.inputs()[0].onChange(this.inputs()[0].getValue());\n        }\n    }\n\n    ngAfterContentChecked(): void {\n        if (this.inputs()?.length) {\n            this.inputs().forEach((element, index) => {\n                element.host ??= this;\n                element.index = index;\n                // force to update computed name\n                element.refreshTrigger?.set(null);\n            });\n        }\n    }\n}\n","<div class=\"top label\">\n  @if (forId()) {\n    <label [for]=\"forId()\"><ng-container [ngTemplateOutlet]=\"label\"></ng-container></label>\n  } @else {\n    <ng-container [ngTemplateOutlet]=\"label\"></ng-container>\n  }\n</div>\n<div class=\"content {{ alignMode() === 'column' ? 'column' : 'row' }}\">\n  <ng-content select=\"mg-input-before\"></ng-content>\n  <ng-content select=\"mg-input-prefix\"></ng-content>\n  <ng-content\n    select=\"\n      mg-input-checkbox,\n      mg-input-color,\n      mg-input-date,\n      mg-input-number,\n      mg-input-password,\n      mg-input-radio,\n      mg-input-range,\n      mg-input-select,\n      mg-input-text,\n      mg-input-textarea\n    \"\n  ></ng-content>\n  <ng-content select=\"mg-input-suffix\"></ng-content>\n  <ng-content select=\"mg-input-after\"></ng-content>\n</div>\n<div class=\"bottom\">\n  @if (_errorMessage()) {\n    <div class=\"error\" [innerHTML]=\"_errorMessage()\"></div>\n  }\n  <ng-content select=\"mg-input-error\"></ng-content>\n  <ng-content select=\"mg-input-desc\"></ng-content>\n</div>\n\n<ng-template #label>\n  <ng-content select=\"mg-input-label\"></ng-content>\n</ng-template>\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    OnChanges,\n    OnDestroy,\n    SimpleChanges,\n    booleanAttribute,\n    computed,\n    inject,\n    input,\n    output,\n    signal,\n} from '@angular/core';\nimport { FormsModule } from '@angular/forms';\n\nimport { Select2Data, Select2Option, Select2ScrollEvent } from 'ng-select2-component';\n\nimport { MagmaClickEnterDirective } from '../../directives/click-enter.directive';\nimport { RepeatForPipe } from '../../pipes/repeat-for.pipe';\nimport { StringPipe } from '../../pipes/string.pipe';\nimport { Logger } from '../../services/logger';\nimport { DurationTime, WeekDay, addDuration, getWeek, isISODate } from '../../utils/date';\nimport { MagmaInputSelect } from '../input/input-select.component';\nimport { MagmaInput } from '../input/input.component';\n\nexport type DateInfo = {\n    date: Date;\n    day: number;\n    month: number;\n    isCurrentMonth: boolean;\n    isToday: boolean;\n    disabled: boolean;\n    weekend: boolean;\n    weekNumber: number | null;\n};\n\nlet index = 0;\n\nexport type MagmaDatetimePickerDays = 'Monday' | 'Sunday' | 'Saturday' | undefined;\nexport type MagmaDatetimeType = 'date' | 'datetime-local' | 'datetime-seconds' | 'datetime-milli' | 'time' | undefined;\n\nconst WEEK: WeekDay[] = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n\n@Component({\n    selector: 'datetime-picker',\n    templateUrl: './datetime-picker.component.html',\n    styleUrls: ['./datetime-picker.component.scss'],\n    imports: [\n        CommonModule,\n        FormsModule,\n        MagmaInput,\n        MagmaInputSelect,\n        MagmaClickEnterDirective,\n        RepeatForPipe,\n        StringPipe,\n    ],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class.embedded]': 'embedded()',\n        '[class.only-date]': 'type() === \"date\" || !type()',\n        '[class.only-time]': 'type() === \"time\"',\n    },\n})\nexport class MagmaDatetimePickerComponent implements OnChanges, OnDestroy {\n    // inject\n\n    readonly logger = inject(Logger);\n    readonly cd = inject(ChangeDetectorRef);\n    readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    // input\n\n    readonly value = input<string | number | Date | undefined>('');\n    readonly type = input<MagmaDatetimeType | undefined>();\n    readonly lang = input<string | undefined>();\n    readonly min = input<string | number | Date | undefined>();\n    readonly max = input<string | number | Date | undefined>();\n    readonly embedded = input(false, { transform: booleanAttribute });\n    readonly readonly = input(false, { transform: booleanAttribute });\n    readonly firstDayOfWeek = input<MagmaDatetimePickerDays>();\n    readonly weekend = input<WeekDay[]>(['Sunday', 'Saturday']);\n    readonly hideWeekendStyle = input(false, { transform: booleanAttribute });\n    readonly hideWeekNumber = input(false, { transform: booleanAttribute });\n\n    // output\n\n    readonly datetimeChange = output<string>();\n\n    // internal signals\n\n    protected readonly dateValue = signal<Date | null>(null);\n    protected readonly date = computed<Date>(() => this.getDateValue(this.dateValue() ?? this.value()) ?? new Date());\n    protected readonly selected = signal<boolean>(false);\n    protected readonly year = computed<number | undefined>(() => this.getDate().getUTCFullYear());\n    protected readonly month = computed<number | undefined>(() => this.getDate().getUTCMonth() + 1);\n    // note: day is not necessary\n    protected readonly hours = computed<number | undefined>(() => this.getDate()?.getUTCHours());\n    protected readonly minutes = computed<number | undefined>(() => this.getDate()?.getUTCMinutes());\n    protected readonly seconds = computed<number | undefined>(() => this.getDate()?.getUTCSeconds());\n    protected readonly milli = computed<number | undefined>(() => this.getDate()?.getUTCMilliseconds());\n    protected readonly past = signal(10);\n    protected readonly future = signal(10);\n\n    protected readonly uid = `datetime-picker-${index++}`;\n    protected onscroll = false;\n    private destroyed = false;\n\n    protected yearsList = computed<Select2Option[]>(() => {\n        const min = this.minDate()?.getUTCFullYear();\n        const max = this.maxDate()?.getUTCFullYear();\n\n        let year = new Date(this.date()).getUTCFullYear() - this.past();\n        if (min) {\n            year = Math.max(min, year);\n        }\n\n        let end = year + this.past() + this.future();\n        if (max) {\n            end = Math.min(max, end);\n        }\n\n        const yearsList: Select2Option[] = [];\n        for (; year <= end; year++) {\n            yearsList.push({ id: `${this.uid}-${year}`, label: `${year}`, value: year });\n        }\n        return yearsList;\n    });\n\n    protected monthsList = computed<Select2Data>(() => {\n        const currentDate = this.date();\n        const minDate = this.minDate();\n        const maxDate = this.maxDate();\n\n        let minMonth = 1;\n        let maxMonth = 12;\n\n        if (minDate && currentDate.getUTCFullYear() === minDate.getUTCFullYear()) {\n            minMonth = minDate.getUTCMonth() + 1;\n        }\n\n        if (maxDate && currentDate.getUTCFullYear() === maxDate.getUTCFullYear()) {\n            maxMonth = maxDate.getUTCMonth() + 1;\n        }\n\n        return Array.from({ length: 12 }, (_, i) => {\n            const monthValue = i + 1;\n            return {\n                id: `${i}`,\n                value: monthValue,\n                label: new Date(2024, i, 1).toLocaleString(this.lang() || 'en', { month: 'long' }),\n                hide: monthValue < minMonth || monthValue > maxMonth,\n            };\n        }).filter(e => !e.hide);\n    });\n\n    protected prevMonthHide = computed(() => {\n        const currentDate = this.date();\n        const minDate = this.minDate();\n\n        return (\n            (minDate &&\n                currentDate.getUTCFullYear() === minDate.getUTCFullYear() &&\n                minDate.getUTCMonth() === currentDate.getUTCMonth()) ??\n            false\n        );\n    });\n\n    protected nextMonthHide = computed(() => {\n        const currentDate = this.date();\n        const maxDate = this.maxDate();\n\n        return (\n            (maxDate &&\n                currentDate.getUTCFullYear() === maxDate.getUTCFullYear() &&\n                maxDate.getUTCMonth() === currentDate.getUTCMonth()) ??\n            false\n        );\n    });\n\n    protected computedDays = computed(() =>\n        Array.from({ length: 7 }, (_, i) =>\n            new Date(2024, 0, this.getFirstGet(this.firstDayOfWeek()) + i + 1).toLocaleString(this.lang() || 'en', {\n                weekday: 'narrow',\n            }),\n        ),\n    );\n\n    protected computedDaysOfMonth = computed<DateInfo[][]>(() => {\n        const date = this.getDate();\n        const year = date.getUTCFullYear();\n        const month = date.getUTCMonth();\n\n        let startOfWeek = 1;\n        if (this.firstDayOfWeek() === 'Saturday') {\n            startOfWeek = 6;\n        } else if (this.firstDayOfWeek() === 'Sunday') {\n            startOfWeek = 0;\n        }\n\n        const firstDayOfMonth = new Date(Date.UTC(year, month, 1));\n        const lastDayOfMonth = new Date(Date.UTC(year, month + 1, 0));\n\n        const startDay = firstDayOfMonth.getUTCDay();\n\n        const diff = (startDay - startOfWeek + 7) % 7;\n\n        const currentLoopDate = new Date(firstDayOfMonth);\n        currentLoopDate.setUTCDate(firstDayOfMonth.getUTCDate() - diff);\n        const today = new Date();\n\n        const days: DateInfo[] = [];\n\n        const min = this.minDate()?.getTime();\n        const max = this.maxDate()?.getTime();\n\n        while (currentLoopDate <= lastDayOfMonth || currentLoopDate.getUTCDay() !== startOfWeek) {\n            const date = new Date(currentLoopDate);\n            const datetime = date.getTime();\n            days.push({\n                date,\n                day: date.getUTCDate(),\n                month: date.getUTCMonth() + 1,\n                isCurrentMonth: currentLoopDate.getUTCMonth() === month,\n                isToday: today.toDateString() === currentLoopDate.toDateString(),\n                disabled: (min ? datetime < min : false) || (max ? datetime > max : false),\n                weekend: !this.hideWeekendStyle() ? this.weekend().includes(WEEK[date.getUTCDay()]) : false,\n                weekNumber: !this.hideWeekNumber() ? getWeek(date, { dowOffset: this.firstDayOfWeek() }) : null,\n            });\n\n            currentLoopDate.setUTCDate(currentLoopDate.getUTCDate() + 1);\n        }\n\n        return [days];\n    });\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['value']) {\n            this.selected.set(this.getDateValue(changes['value'].currentValue) instanceof Date);\n        }\n    }\n\n    protected scroll(event: Select2ScrollEvent) {\n        if (this.onscroll) {\n            return;\n        }\n\n        this.onscroll = true;\n\n        setTimeout(() => {\n            if (event.way === 'up') {\n                this.past.update(value => value + 10);\n            } else {\n                this.future.update(value => value + 10);\n            }\n            this.onscroll = false;\n        }, 50);\n    }\n\n    protected select(date: DateInfo) {\n        this.selected.set(true);\n\n        const valueDate = this.date();\n\n        if (valueDate && valueDate.getUTCMonth() + 1 !== date.month) {\n            this.updateMonth(date.month, false);\n            this.updateDay(date.day, false);\n            this.updateDate(valueDate);\n        } else {\n            this.updateDay(date.day);\n        }\n\n        setTimeout(() => {\n            this.element.nativeElement.querySelector<HTMLDivElement>('.selected')?.focus();\n        }, 10);\n    }\n\n    protected move(event: KeyboardEvent) {\n        if (this.readonly()) {\n            return;\n        }\n\n        let move = 0;\n        switch (event.key) {\n            case 'ArrowLeft':\n                move = -1;\n                break;\n            case 'ArrowRight':\n                move = +1;\n                break;\n            case 'ArrowDown':\n                move = +7;\n                break;\n            case 'ArrowUp':\n                move = -7;\n                break;\n        }\n\n        if (move) {\n            const list = Array.from(this.element.nativeElement.querySelectorAll<HTMLDivElement>('.day.click-enter'));\n            const index = list.findIndex(e => e.classList.contains('selected'));\n            const pos = index + move;\n            if (list[pos]) {\n                list[pos].click();\n            } else {\n                this.updateDate(addDuration(move, DurationTime.DAY, this.date()));\n            }\n            // block scroll\n            event.preventDefault();\n        }\n    }\n\n    protected updateYear(value: number) {\n        const date = this.date();\n        if (date) {\n            date.setUTCFullYear(value);\n            this.updateDate(date);\n        }\n    }\n\n    protected updateMonth(value: number, update = true) {\n        const date = this.date();\n        if (date) {\n            date.setUTCMonth(value - 1);\n            if (update) {\n                this.updateDate(date);\n            }\n        }\n    }\n\n    protected updateDay(value: number, update = true) {\n        const date = this.date();\n        if (date) {\n            date.setUTCDate(value);\n            if (update) {\n                this.updateDate(date);\n            }\n        }\n    }\n\n    protected updateHours(value: number) {\n        const date = this.date();\n        if (date) {\n            date.setUTCHours(value);\n            this.updateDate(date);\n        }\n    }\n\n    protected updateMinutes(value: number) {\n        const date = this.date();\n        if (date) {\n            date.setUTCMinutes(value);\n            this.updateDate(date);\n        }\n    }\n\n    protected updateSeconds(value: number) {\n        const date = this.date();\n        if (date) {\n            date.setUTCSeconds(value);\n            this.updateDate(date);\n        }\n    }\n\n    protected updateMilli(value: number) {\n        const date = this.date();\n        if (date) {\n            date.setUTCMilliseconds(value);\n            this.updateDate(date);\n        }\n    }\n\n    protected left() {\n        const date = this.date();\n        if (date) {\n            date.setUTCMonth(date.getMonth() - 1);\n            this.updateDate(date);\n        }\n    }\n\n    protected right() {\n        const date = this.date();\n        if (date) {\n            date.setUTCMonth(date.getMonth() + 1);\n            this.updateDate(date);\n        }\n    }\n\n    protected updateDate(date: Date) {\n        this.dateValue.set(new Date(date));\n\n        let value = '';\n        switch (this.type()) {\n            case 'datetime-local':\n                value = date.toISOString().replace(/:..\\..*/, '');\n                break;\n            case 'datetime-seconds':\n                value = date.toISOString().replace(/\\..*/, '');\n                break;\n            case 'datetime-milli':\n                value = date.toISOString();\n                break;\n            case 'time':\n                value = date.toISOString().replace(/.*T/, '').substring(0, 5);\n                break;\n            default:\n                value = date.toISOString().replace(/T.*/, '');\n                break;\n        }\n\n        if (!this.destroyed) {\n            this.datetimeChange.emit(value);\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.destroyed = true;\n    }\n\n    private getFirstGet(day: 'Monday' | 'Sunday' | 'Saturday' | undefined) {\n        switch (day) {\n            case 'Sunday':\n                return -1;\n            case 'Saturday':\n                return -2;\n            default:\n                return 0;\n        }\n    }\n\n    protected getDate() {\n        const minDate = this.minDate();\n        const maxDate = this.maxDate();\n\n        const date = this.date();\n\n        if (minDate && date && date.getTime() < minDate.getTime()) {\n            return minDate;\n        }\n        if (maxDate && date && date.getTime() > maxDate.getTime()) {\n            return maxDate;\n        }\n        return date;\n    }\n\n    private minDate(): Date | null {\n        return this.min() ? new Date(this.min()!) : null;\n    }\n\n    private maxDate(): Date | null {\n        return this.max() ? new Date(this.max()!) : null;\n    }\n\n    private getDateValue(value: string | number | Date | undefined): Date | undefined {\n        if (value) {\n            if (value instanceof Date) {\n                return value;\n            } else if (value === 'number') {\n                return new Date(value);\n            } else if (typeof value === 'string' && isISODate(value)) {\n                return new Date(\n                    Date.UTC(\n                        this.valueDateSubstring(value, 0, 4),\n                        Math.max(this.valueDateSubstring(value, 5, 7) - 1, 0),\n                        this.valueDateSubstring(value, 8, 10),\n                        this.valueDateSubstring(value, 11, 13),\n                        this.valueDateSubstring(value, 14, 16),\n                        this.valueDateSubstring(value, 17, 19),\n                        this.valueDateSubstring(value, 20, 23),\n                    ),\n                );\n            }\n        }\n        return undefined;\n    }\n\n    private valueDateSubstring(value: string, start: number, end: number): number {\n        return +value?.substring(start, end);\n    }\n}\n","@if (type() === 'date' || type() === 'datetime-local' || type() !== 'time') {\n  <div class=\"month-year\">\n    <span (clickEnter)=\"left()\" [disabled]=\"readonly()\" class=\"icon-left\" [class.hide]=\"prevMonthHide()\"></span>\n    <mg-input class=\"mouths-list\">\n      <mg-input-select\n        [data]=\"monthsList()\"\n        [ngModel]=\"month()\"\n        (ngModelChange)=\"updateMonth($event)\"\n        [readonly]=\"readonly()\"\n      />\n    </mg-input>\n    <mg-input class=\"mouths-years\">\n      <mg-input-select\n        [data]=\"yearsList()\"\n        [ngModel]=\"year()\"\n        (ngModelChange)=\"updateYear($event)\"\n        [readonly]=\"readonly()\"\n        infiniteScroll\n        infiniteScrollThrottle=\"5\"\n        (scroll)=\"scroll($event)\"\n      />\n    </mg-input>\n    <span (clickEnter)=\"right()\" [disabled]=\"readonly()\" class=\"icon-right\" [class.hide]=\"nextMonthHide()\"></span>\n  </div>\n  <div class=\"table\" [class.week-number]=\"!hideWeekNumber()\" (keydown)=\"move($event)\">\n    @if (!hideWeekNumber()) {\n      <div class=\"head\"></div>\n    }\n\n    @for (day of computedDays(); track $index) {\n      <div class=\"head\">\n        {{ day }}\n      </div>\n    }\n    @let dateTmpl = date();\n    @for (mouth of computedDaysOfMonth(); track $index) {\n      @for (day of mouth; track $index; let i = $index) {\n        @if (!hideWeekNumber() && day.weekNumber && day.weekNumber !== mouth[i - 1]?.weekNumber) {\n          <div class=\"day week\">\n            {{ day.weekNumber }}\n          </div>\n        }\n\n        <div\n          [id]=\"'date-' + (day.date.toISOString() | string: 'substring' : 0 : 10)\"\n          class=\"day\"\n          [class.today]=\"day.isToday\"\n          [class.current-month]=\"day.isCurrentMonth\"\n          [class.selected]=\"\n            dateTmpl && day.day === dateTmpl.getUTCDate() && day.month - 1 === dateTmpl.getUTCMonth() && selected()\n          \"\n          [class.disabled]=\"day.disabled\"\n          [class.weekend]=\"day.weekend\"\n          (clickEnter)=\"select(day)\"\n          [disabled]=\"readonly() || day.disabled\"\n        >\n          {{ day.day }}\n        </div>\n      }\n    }\n  </div>\n}\n@if (type() === 'time' || type()?.startsWith('datetime')) {\n  <div class=\"time\">\n    <select size=\"9\" [ngModel]=\"hours()\" (ngModelChange)=\"updateHours($event)\">\n      @for (hour of 24 | repeatFor: true; track $index) {\n        <option [value]=\"$index\">{{ $index | string: 'padStart' : 2 : '0' }}</option>\n      }\n    </select>\n    <span>:</span>\n    <select size=\"9\" [ngModel]=\"minutes()\" (ngModelChange)=\"updateMinutes($event)\">\n      @for (minute of 60 | repeatFor: true; track $index) {\n        <option [value]=\"$index\">{{ $index | string: 'padStart' : 2 : '0' }}</option>\n      }\n    </select>\n\n    @if (type() === 'datetime-seconds' || type() === 'datetime-milli') {\n      <span>:</span>\n      <select size=\"9\" [ngModel]=\"seconds()\" (ngModelChange)=\"updateSeconds($event)\">\n        @for (seconds of 60 | repeatFor: true; track $index) {\n          <option [value]=\"$index\">{{ $index | string: 'padStart' : 2 : '0' }}</option>\n        }\n      </select>\n    }\n    @if (type() === 'datetime-milli') {\n      <span>:</span>\n      <input type=\"number\" [ngModel]=\"milli()\" (ngModelChange)=\"updateMilli($event)\" min=\"0\" max=\"999\" />\n    }\n  </div>\n}\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n    ComponentRef,\n    Directive,\n    ElementRef,\n    HostListener,\n    OnDestroy,\n    OutputRefSubscription,\n    booleanAttribute,\n    inject,\n    input,\n    output,\n} from '@angular/core';\n\nimport { MagmaDatetimePickerComponent, MagmaDatetimePickerDays, MagmaDatetimeType } from './datetime-picker.component';\n\nimport { MagmaClickEnterDirective } from '../../directives/click-enter.directive';\nimport { WeekDay } from '../../utils/date';\n\nconst connectedPosition: ConnectedPosition[] = [\n    { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top' },\n    { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom' },\n    { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top' },\n    { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom' },\n];\n\n@Directive({\n    selector: '[datetimePicker]',\n    host: {\n        '[class.datetime-picker]': 'true',\n        '[tabIndex]': 'datetimePickerDisabled() ? -1 : 0',\n    },\n    hostDirectives: [MagmaClickEnterDirective],\n})\nexport class MagmaDatetimePicker implements OnDestroy {\n    private readonly overlay = inject(Overlay);\n    private readonly element = inject(ElementRef<HTMLElement>);\n    private readonly click = inject(MagmaClickEnterDirective);\n\n    readonly datetimePicker = input<string>();\n    readonly datetimePickerType = input<MagmaDatetimeType | undefined>();\n    readonly datetimePickerDisabled = input(false, { transform: booleanAttribute });\n    readonly datetimePickerReadonly = input(false, { transform: booleanAttribute });\n    readonly datetimePickerLang = input<string | undefined>();\n    readonly datetimePickerMin = input<string | number | Date | undefined>();\n    readonly datetimePickerMax = input<string | number | Date | undefined>();\n    readonly datetimePickerFirstDayOfWeek = input<MagmaDatetimePickerDays>();\n    readonly datetimePickerWeekend = input<WeekDay[]>(['Sunday', 'Saturday']);\n    readonly datetimePickerhideWeekendStyle = input(false, { transform: booleanAttribute });\n    readonly datetimePickerHideWeekNumber = input(false, { transform: booleanAttribute });\n\n    static _overlayRef?: OverlayRef;\n    static _component?: ComponentRef<MagmaDatetimePickerComponent>;\n\n    datetimeChange = output<string>();\n    datetimeClose = output<string>();\n\n    private updateEmit?: OutputRefSubscription;\n\n    constructor() {\n        this.click.clickEnter.subscribe(event => {\n            this.open(event);\n        });\n    }\n\n    async open(event?: Event) {\n        if (this.datetimePickerDisabled()) {\n            return;\n        }\n\n        const overlayRef = this.overlay.create({\n            hasBackdrop: true,\n            backdropClass: 'overlay-backdrop',\n            panelClass: 'overlay-panel',\n            scrollStrategy: this.overlay.scrollStrategies.block(),\n            positionStrategy: this.overlay\n                .position()\n                .flexibleConnectedTo(this.element)\n                .withPositions(connectedPosition),\n        });\n        const userProfilePortal = new ComponentPortal(MagmaDatetimePickerComponent);\n\n        let datetime = this.datetimePicker();\n        let initDatetime = datetime;\n\n        const component = overlayRef.attach(userProfilePortal);\n        component.setInput('value', this.datetimePicker());\n        component.setInput('readonly', this.datetimePickerReadonly());\n        component.setInput('type', this.datetimePickerType());\n        component.setInput('lang', this.datetimePickerLang());\n        component.setInput('min', this.datetimePickerMin());\n        component.setInput('max', this.datetimePickerMax());\n        component.setInput('firstDayOfWeek', this.datetimePickerFirstDayOfWeek());\n        component.setInput('weekend', this.datetimePickerWeekend());\n        component.setInput('hideWeekendStyle', this.datetimePickerhideWeekendStyle());\n        component.setInput('hideWeekNumber', this.datetimePickerHideWeekNumber());\n        component.setInput('embedded', true);\n\n        this.updateEmit = component.instance.datetimeChange.subscribe(value => {\n            datetime = value;\n            this.datetimeChange.emit(value);\n        });\n\n        overlayRef.backdropClick().subscribe(() => {\n            this.close();\n            if (datetime !== undefined && datetime !== initDatetime) {\n                this.datetimeClose.emit(datetime);\n            }\n        });\n\n        MagmaDatetimePicker._overlayRef = overlayRef;\n        MagmaDatetimePicker._component = component;\n\n        event?.preventDefault();\n        event?.stopPropagation();\n    }\n\n    ngOnDestroy(): void {\n        this.updateEmit?.unsubscribe();\n        this.updateEmit = undefined;\n        this.close();\n    }\n\n    @HostListener('keydown.space')\n    openKeyboard() {\n        this.open();\n    }\n\n    @HostListener('document:keydown.escape')\n    escape() {\n        this.close();\n    }\n\n    private close() {\n        this.updateEmit?.unsubscribe();\n        this.updateEmit = undefined;\n        MagmaDatetimePicker._overlayRef?.dispose();\n        MagmaDatetimePicker._overlayRef = undefined;\n        MagmaDatetimePicker._component = undefined;\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    HostListener,\n    booleanAttribute,\n    computed,\n    input,\n    output,\n    signal,\n    viewChild,\n} from '@angular/core';\n\nimport { MagmaLimitFocusDirective } from '../../directives/limit-focus.directive';\n\nlet idIndex = 0;\n\n@Component({\n    selector: 'mg-dialog',\n    templateUrl: './dialog.component.html',\n    styleUrl: './dialog.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [MagmaLimitFocusDirective],\n    host: {\n        '[class.open]': 'isOpen()',\n        '[attr.tabindex]': \"isOpen() && closeBackdrop() ? '0' : null\",\n        '[attr.role]': \"isOpen() && closeBackdrop() ? 'button' : null\",\n    },\n})\nexport class MagmaDialog {\n    // input\n\n    readonly closeButton = input(false, { transform: booleanAttribute });\n    readonly closeBackdrop = input(false, { transform: booleanAttribute });\n    readonly closeButtonTitle = input('Close');\n    readonly label = input<string>();\n    readonly title = input<string>();\n    readonly id = input<string>();\n\n    // output\n\n    readonly onClose = output();\n\n    // viewChild\n\n    readonly divFocus = viewChild<ElementRef<HTMLDivElement>>('div');\n\n    // host\n\n    isOpen = signal(false);\n    private index = idIndex++;\n    protected computedId = computed(() => this.id() || `dialog-${this.index}}`);\n\n    @HostListener('click', ['$event'])\n    onClick(event: MouseEvent) {\n        if (this.closeBackdrop()) {\n            this.close();\n        } else {\n            this.divFocus()?.nativeElement.focus();\n            event.stopPropagation();\n        }\n    }\n\n    open() {\n        this.isOpen.set(true);\n    }\n\n    close() {\n        this.isOpen.set(false);\n        this.onClose.emit();\n    }\n\n    protected _propagationStop(event: Event) {\n        event.stopPropagation();\n        window.dispatchEvent(new CustomEvent('dialog-click', { detail: event }));\n    }\n}\n","@if (isOpen()) {\n  <div\n    class=\"content\"\n    role=\"dialog\"\n    [attr.aria-label]=\"label()\"\n    [attr.aria-labelledby]=\"computedId() + '-title'\"\n    (click)=\"_propagationStop($event)\"\n    limitFocus\n    #div\n  >\n    @if (closeButton()) {\n      <button class=\"close\" (click)=\"close()\" (window:keydown.esc)=\"close()\" [title]=\"closeButtonTitle()\">×</button>\n    }\n    <div class=\"main\">\n      @let h1 = title();\n      @if (h1) {\n        <h1 [id]=\"computedId() + '-title'\">{{ h1 }}</h1>\n      }\n      <ng-content />\n    </div>\n  </div>\n}\n","import { ChangeDetectionStrategy, Component, OnDestroy, inject, output } from '@angular/core';\n\nimport { MagmaEllipsisButton } from './ellipsis-button.component';\n\nimport { MagmaClickEnterDirective } from '../../directives/click-enter.directive';\n\n@Component({\n    selector: 'mg-ellipsis-item',\n    templateUrl: './ellipsis-item.component.html',\n    styleUrl: './ellipsis-item.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    hostDirectives: [MagmaClickEnterDirective],\n})\nexport class MagmaEllipsisItemComponent implements OnDestroy {\n    host?: MagmaEllipsisButton;\n\n    protected readonly clickEnter = inject(MagmaClickEnterDirective);\n\n    protected readonly action = output();\n\n    protected readonly sub = this.clickEnter.clickEnter.subscribe(() => {\n        this.action.emit();\n        this.host?.close();\n    });\n\n    ngOnDestroy(): void {\n        this.sub?.unsubscribe();\n    }\n}\n","<ng-content />\n","import { CdkConnectedOverlay, CdkOverlayOrigin } from '@angular/cdk/overlay';\nimport {\n    AfterContentChecked,\n    Component,\n    ElementRef,\n    OnDestroy,\n    contentChildren,\n    signal,\n    viewChild,\n} from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\n\nimport { MagmaEllipsisItemComponent } from './ellipsis-item.component';\n\nimport { MagmaLimitFocusDirective } from '../../directives/limit-focus.directive';\n\n@Component({\n    selector: 'mg-ellipsis-button, [mgEllipsisButton]',\n    templateUrl: './ellipsis-button.component.html',\n    styleUrl: './ellipsis-button.component.scss',\n    host: {},\n    imports: [CdkOverlayOrigin, CdkConnectedOverlay, MagmaLimitFocusDirective],\n})\nexport class MagmaEllipsisButton implements AfterContentChecked, OnDestroy {\n    protected readonly element = viewChild<ElementRef<HTMLDivElement>>('element');\n    protected readonly button = viewChild.required<ElementRef<HTMLButtonElement>>('button');\n\n    readonly inputs = contentChildren(MagmaEllipsisItemComponent);\n\n    protected readonly isOpen = signal(false);\n    protected readonly sub = toObservable(this.element).subscribe(() => {\n        (this.element()?.nativeElement.querySelector('mg-ellipsis-item:not(.disabled)') as HTMLElement)?.focus();\n    });\n\n    open() {\n        this.isOpen.set(true);\n    }\n\n    close() {\n        this.isOpen.set(false);\n        setTimeout(() => {\n            this.button().nativeElement.focus();\n        });\n    }\n\n    ngAfterContentChecked(): void {\n        if (this.inputs()?.length) {\n            this.inputs().forEach(e => {\n                e.host ??= this;\n            });\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.sub.unsubscribe();\n    }\n}\n","<button (click)=\"open()\" cdkOverlayOrigin #button #trigger=\"cdkOverlayOrigin\">\n  <span class=\"ellipsis\"></span>\n  <ng-content select=\"mg-ellipsis-content\" />\n</button>\n\n<ng-template\n  cdkConnectedOverlay\n  [cdkConnectedOverlayHasBackdrop]=\"true\"\n  [cdkConnectedOverlayOrigin]=\"trigger\"\n  [cdkConnectedOverlayOpen]=\"isOpen()\"\n  cdkConnectedOverlayBackdropClass=\"cdk-overlay-ellipsis-backdrop\"\n  cdkConnectedOverlayPanelClass=\"cdk-overlay-button\"\n  (detach)=\"close()\"\n  (backdropClick)=\"close()\"\n>\n  <div class=\"mg-ellipsis-list\" limitFocus #element>\n    <ng-content select=\"mg-ellipsis-item\" />\n  </div>\n</ng-template>\n","import { Directive, NgModule } from '@angular/core';\n\nimport { MagmaEllipsisButton } from './ellipsis-button.component';\nimport { MagmaEllipsisItemComponent } from './ellipsis-item.component';\n\n@Directive({ selector: 'mg-ellipsis-content' })\nexport class MagmaEllipsisContentDirective {}\n\nconst MagmaEllipsisButtonComponent = [MagmaEllipsisButton, MagmaEllipsisContentDirective, MagmaEllipsisItemComponent];\n\n@NgModule({\n    imports: [MagmaEllipsisButtonComponent],\n    exports: [MagmaEllipsisButtonComponent],\n})\nexport class MagmaEllipsisButtonModule {}\n","import { ChangeDetectionStrategy, Component, booleanAttribute, input, output } from '@angular/core';\n\nexport interface MagmaExpansionPanelUpdateEvent {\n    open: boolean;\n    component: MagmaExpansionPanel;\n}\n\n@Component({\n    selector: 'mg-expansion-panel',\n    templateUrl: './expansion-panel.component.html',\n    styleUrl: './expansion-panel.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MagmaExpansionPanel {\n    open = input(false, { transform: booleanAttribute });\n    disabled = input(false, { transform: booleanAttribute });\n\n    update = output<MagmaExpansionPanelUpdateEvent>();\n\n    updateOpen(detail: HTMLDetailsElement) {\n        this.update.emit({\n            open: !detail.open,\n            component: this,\n        });\n    }\n}\n","<details [attr.open]=\"open() ? 'open' : undefined\" #details>\n  <summary\n    [attr.disabled]=\"disabled() ? 'disabled' : undefined\"\n    [tabIndex]=\"disabled() ? -1 : 0\"\n    (click)=\"updateOpen(details)\"\n  >\n    <div class=\"summary-content\">\n      <ng-content select=\"mg-expansion-header\" />\n    </div>\n  </summary>\n  <div class=\"detail-content\">\n    <ng-content select=\"mg-expansion-content\" />\n  </div>\n</details>\n","import { Directive, NgModule } from '@angular/core';\n\nimport { MagmaExpansionPanel } from './expansion-panel.component';\n\n@Directive({ selector: 'mg-expansion-header' })\nexport class MagmaExpansionHeader {}\n\n@Directive({ selector: 'mg-expansion-content' })\nexport class MagmaExpansionContent {}\n\nconst MagmaExpansionComponent = [MagmaExpansionPanel, MagmaExpansionContent, MagmaExpansionHeader];\n\n@NgModule({\n    imports: [MagmaExpansionComponent],\n    exports: [MagmaExpansionComponent],\n})\nexport class MagmaExpansionPanelModule {}\n","import { NgComponentOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, ElementRef, HostListener, inject, input, output } from '@angular/core';\n\nimport { MagmaMessageInfo } from '../../services/messages';\n\nexport type ContextMessageInputs = { context?: InfoMessageComponent } & Record<string, any>;\n\n@Component({\n    selector: 'info-message',\n    templateUrl: './info-message.component.html',\n    styleUrl: './info-message.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [NgComponentOutlet],\n    host: {\n        '[class]': 'classes()',\n        '[style.--current-pos.px]': 'this._pos ?? null',\n        '[style.--current-height.px]': 'this._height ?? null',\n        '[style.--info-message-progress-time]': 'this.message()?.time',\n    },\n})\nexport class InfoMessageComponent {\n    // inject\n\n    protected readonly element = inject(ElementRef);\n\n    // input\n\n    readonly message = input<MagmaMessageInfo>();\n\n    // output\n\n    readonly destruct = output<MagmaMessageInfo>();\n\n    /// host\n\n    protected _closeClass = false;\n    protected _pos!: number;\n    protected _height!: number;\n\n    protected classes() {\n        return [this.message()?.type, this._closeClass ? 'close' : null].filter(e => e);\n    }\n\n    @HostListener('click')\n    click() {\n        this._pos = this.element?.nativeElement.offsetTop;\n        this._height = this.element?.nativeElement.height;\n        this._closeClass = true;\n\n        setTimeout(() => {\n            this.close();\n        }, 700);\n    }\n\n    animationend() {\n        this.click();\n    }\n\n    close() {\n        this.destruct.emit(this.message()!);\n    }\n\n    withContext(inputs?: ContextMessageInputs) {\n        return { ...inputs, ...{ context: this as any } };\n    }\n}\n","<div class=\"message\">\n  @let msg = message()?.message;\n  @if (typeof msg === 'string') {\n    {{ msg }}\n  } @else if (msg) {\n    <ng-container [ngComponentOutlet]=\"msg.component\" [ngComponentOutletInputs]=\"msg.input\" />\n  }\n</div>\n<div class=\"progress\" #progress (animationend)=\"animationend()\"></div>\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { Injectable, Type, inject } from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { InfoMessagesComponent } from '../components/info-messages/info-messages.component';\n\nexport enum MagmaMessageType {\n    info = 'info',\n    success = 'success',\n    warn = 'warn',\n    error = 'error',\n    tip = 'tip',\n}\n\nexport type MagmaMessageContent = string | { component: Type<any>; input?: Record<string, any> };\n\nexport interface MagmaMessageInfo {\n    message: MagmaMessageContent;\n    type: MagmaMessageType;\n    time: string;\n}\n\n@Injectable({ providedIn: 'root' })\nexport class MagmaMessages {\n    private readonly overlay = inject(Overlay);\n\n    private _overlayRef?: OverlayRef;\n\n    readonly messages: MagmaMessageInfo[] = [];\n\n    readonly onAddMessage = new Subject<void>();\n\n    addMessage(message: MagmaMessageContent, options: { type?: MagmaMessageType; time?: string } = {}) {\n        if (!this.messages.length) {\n            this.init();\n        }\n\n        this.messages.push({ message, type: options.type || MagmaMessageType.info, time: options.time || '3s' });\n        this.onAddMessage.next();\n    }\n\n    removeMessage(message: MagmaMessageInfo) {\n        this.messages.splice(this.messages.indexOf(message), 1);\n    }\n\n    clearMessages() {\n        if (this.messages.length) {\n            this.messages.splice(0, this.messages.length);\n        }\n    }\n\n    testDispose() {\n        if (!this.messages.length) {\n            this._overlayRef!.dispose();\n            this._overlayRef = undefined;\n        }\n    }\n\n    private init() {\n        const overlayRef = this.overlay.create({\n            hasBackdrop: false,\n            panelClass: 'overlay-message',\n            scrollStrategy: this.overlay.scrollStrategies.block(),\n            positionStrategy: this.overlay.position().global().right(),\n        });\n        const userProfilePortal = new ComponentPortal(InfoMessagesComponent);\n        const component = overlayRef.attach(userProfilePortal);\n        //  component.setInput('context', this);\n        this._overlayRef = overlayRef;\n    }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject } from '@angular/core';\n\nimport { InfoMessageComponent } from './info-message.component';\n\nimport { MagmaMessageInfo, MagmaMessages } from '../../services/messages';\n\n@Component({\n    selector: 'info-messages',\n    templateUrl: './info-messages.component.html',\n    styleUrl: './info-messages.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [InfoMessageComponent],\n})\nexport class InfoMessagesComponent {\n    // inject\n\n    protected readonly messages = inject(MagmaMessages);\n    private readonly cd = inject(ChangeDetectorRef);\n\n    // template\n\n    constructor() {\n        this.messages.onAddMessage.subscribe(() => {\n            this.cd.detectChanges();\n        });\n    }\n\n    destruct(message: MagmaMessageInfo) {\n        this.messages.removeMessage(message);\n        this.cd.detectChanges();\n        this.messages.testDispose();\n    }\n}\n","@for (message of messages.messages; track message) {\n  <info-message [message]=\"message\" (destruct)=\"destruct(message)\" />\n}\n","import {\n    AfterContentChecked,\n    ChangeDetectionStrategy,\n    Component,\n    DoCheck,\n    ElementRef,\n    SimpleChanges,\n    booleanAttribute,\n    input,\n    output,\n    viewChildren,\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { MagmaInputCommon } from './input-common';\n\nlet counter = 0;\n\n@Component({\n    selector: 'mg-input-checkbox',\n    templateUrl: './input-checkbox.component.html',\n    styleUrl: './input-checkbox.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputCheckbox },\n        { provide: NG_VALUE_ACCESSOR, useExisting: MagmaInputCheckbox, multi: true },\n        { provide: NG_VALIDATORS, useExisting: MagmaInputCheckbox, multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n        '[class.toggle-switch]': \"mode() === 'toggle'\",\n    },\n})\nexport class MagmaInputCheckbox extends MagmaInputCommon implements DoCheck, AfterContentChecked {\n    override readonly componentName = 'input-checkbox';\n    protected override counter = counter++;\n    protected override _baseValue = 'checked';\n\n    override readonly value = input<any>();\n    readonly checked = input(false, { transform: booleanAttribute });\n    readonly mode = input<'checkbox' | 'toggle'>();\n\n    testChecked: boolean | undefined = undefined;\n    override readonly placeholder: any = undefined; // not for checkbox\n    override readonly datalist: any = undefined; // not for checkbox>(() => this.formControlName() || this.name() || this.host?._id() || this.uid());\n\n    readonly label = viewChildren<ElementRef<HTMLLabelElement>>('ref');\n\n    readonly itemUpdate = output<boolean>();\n\n    override ngOnChanges(changes: SimpleChanges): void {\n        if (changes['checked']) {\n            this.testChecked = changes['checked'].currentValue;\n        }\n    }\n\n    ngDoCheck() {\n        if (this.host) {\n            if (\n                this.host.forId() !== `${this._id()}-input` &&\n                this.host.inputs().filter(item => item.componentName === this.componentName).length === 1 &&\n                this.label() &&\n                !this.label()[0]?.nativeElement.innerHTML.trim()\n            ) {\n                // For single checkboxes without label\n                this.setHostLabelId();\n            } else if (\n                (this.host.inputs().filter(item => item.componentName === this.componentName).length > 1 ||\n                    this.label()?.[0]?.nativeElement.innerHTML.trim()) &&\n                this.host.forId()\n            ) {\n                this.host.forId.set(undefined);\n                this.host.cd.detectChanges();\n            }\n        }\n    }\n\n    ngAfterContentChecked(): void {\n        this.cd.detectChanges();\n    }\n\n    override writeValue(value: any): void {\n        // required for host\n        setTimeout(() => {\n            this.testChecke(value);\n            super.writeValue(this.getValue());\n        });\n    }\n\n    testChecke(value: any) {\n        if (this.host) {\n            this.testChecked =\n                (this.host.typeValue() === 'array' || this.host.inputs().length > 1) && Array.isArray(value)\n                    ? // array value\n                      this.host.returnValue() === 'boolean'\n                        ? value[this.index] === true\n                        : value.includes(this.value())\n                    : // mono value\n                      this.host.returnValue() !== 'value' && typeof value === 'boolean'\n                      ? value === true\n                      : value === this.value();\n\n            // update all other checkboxes in the group\n            if (this.host.typeValue() === 'array' || this.host.inputs().length > 1) {\n                this.host\n                    .inputs()\n                    .filter(item => item.componentName === this.componentName && item !== this)\n                    .forEach(item => {\n                        if (item instanceof MagmaInputCheckbox) {\n                            item['_value'] = this._value;\n                            if (this.host?.returnValue() === 'boolean') {\n                                if (item.testChecked && !value[item.index]) {\n                                    item.testChecked = false;\n                                } else if (!item.testChecked && value[item.index]) {\n                                    item.testChecked = true;\n                                }\n                            } else {\n                                if (item.testChecked && Array.isArray(value) && !value?.includes(item.value())) {\n                                    item.testChecked = false;\n                                } else if (!item.testChecked && Array.isArray(value) && value?.includes(item.value())) {\n                                    item.testChecked = true;\n                                }\n                            }\n                        }\n                    });\n            }\n        }\n    }\n\n    _change(event?: Event) {\n        event?.stopPropagation();\n        this.testChecked = !this.testChecked;\n        const value = this.getValue();\n        this.onChange(value);\n        this.update.emit(value);\n        this.change.emit(value);\n        this.itemUpdate.emit(this.testChecked!);\n\n        this.onTouched();\n        if (this.ngControl?.control) {\n            this.validate(this.ngControl.control);\n        }\n    }\n\n    override getValue(): any {\n        if (this.host && (this.host.typeValue() === 'array' || this.host.inputs().length > 1)) {\n            if (this.host?.returnValue() === 'boolean') {\n                this._value = this.host.inputs().map(item => (item as MagmaInputCheckbox).testChecked ?? false);\n            } else {\n                this._value = this.host\n                    .inputs()\n                    .filter(\n                        item => item.componentName === this.componentName && (item as MagmaInputCheckbox).testChecked,\n                    )\n                    .map(item => item.value());\n            }\n        } else {\n            this._value =\n                this.host && this.host.returnValue() === 'value'\n                    ? this.testChecked\n                        ? this.value()\n                        : null\n                    : (this.testChecked ?? false);\n        }\n        return super.getValue();\n    }\n}\n","@if (!onError()) {\n  <input\n    type=\"checkbox\"\n    [name]=\"_name()\"\n    [id]=\"_id() + '-input'\"\n    [attr.value]=\"value()\"\n    [checked]=\"testChecked\"\n    [disabled]=\"disabled()\"\n    [readonly]=\"readonly()\"\n    (change)=\"_change($event)\"\n  /><label #ref [for]=\"_id() + '-input'\" [class.empty]=\"!ref.textContent\"><ng-content /></label>\n} @else {\n  Error\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, booleanAttribute, input, viewChildren } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { MagmaInputCommon } from './input-common';\n\nimport { MagmaColorPickerTexts } from '../color-picker/color-picker.component';\nimport { MagmaColorPicker } from '../color-picker/color-picker.directive';\n\nlet counter = 0;\n\n@Component({\n    selector: 'mg-input-color',\n    templateUrl: './input-color.component.html',\n    styleUrl: './input-color.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [MagmaColorPicker],\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputColor },\n        { provide: NG_VALUE_ACCESSOR, useExisting: MagmaInputColor, multi: true },\n        { provide: NG_VALIDATORS, useExisting: MagmaInputColor, multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n    },\n})\nexport class MagmaInputColor extends MagmaInputCommon<string[]> {\n    override readonly componentName = 'input-color';\n    protected override counter = counter++;\n\n    readonly input = viewChildren<ElementRef<HTMLInputElement>>('input');\n    readonly colorPicker = viewChildren<MagmaColorPicker>(MagmaColorPicker);\n\n    readonly alpha = input(false, { transform: booleanAttribute });\n    readonly clearButton = input(false, { transform: booleanAttribute });\n    readonly texts = input<MagmaColorPickerTexts | undefined>();\n    readonly palette = input<string[] | undefined>();\n\n    override readonly placeholder: any = undefined; // not for color\n\n    override get inputElement(): HTMLInputElement | undefined {\n        return this.input()?.[0]?.nativeElement;\n    }\n\n    get inputDirective(): MagmaColorPicker | undefined {\n        return this.colorPicker()?.[0];\n    }\n\n    colorClose(color: string) {\n        this.onChange(color);\n        this.writeValue(color);\n        this.onTouched();\n        if (this.ngControl?.control) {\n            this.validate(this.ngControl.control);\n        }\n        this.change.emit(color);\n    }\n}\n","@if (!onError()) {\n  <input type=\"hidden\" [value]=\"_value ?? ''\" #input />\n  <span\n    [id]=\"_id() + '-input'\"\n    [style.--color]=\"_value\"\n    class=\"spanPicker\"\n    [class.empty]=\"!_value\"\n    [colorPicker]=\"_value\"\n    [colorPickerAlpha]=\"alpha()\"\n    [colorPickerDisabled]=\"disabled()\"\n    [colorPickerReadonly]=\"readonly()\"\n    [colorPickerClearButton]=\"clearButton()\"\n    [colorPickerTexts]=\"texts()\"\n    [colorPickerPalette]=\"palette()\"\n    [colorPickerDatalist]=\"datalist()\"\n    (colorClose)=\"colorClose($event)\"\n    role=\"color\"\n  ></span>\n} @else {\n  Error\n}\n","import { Directive, HostListener, booleanAttribute, input } from '@angular/core';\n\n@Directive({\n    selector: '[stop-propagation]',\n})\nexport class MagmaStopPropagationDirective {\n    /** stopPropagation for keyboard */\n    readonly stopKeydown = input(false, { transform: booleanAttribute });\n    /** stopPropagation for click */\n    readonly stopClick = input(false, { transform: booleanAttribute });\n\n    @HostListener('keydown', ['$event'])\n    @HostListener('click', ['$event'])\n    block(event: KeyboardEvent | MouseEvent): void {\n        if (this.stopKeydown() && event instanceof KeyboardEvent) {\n            event.stopPropagation();\n        } else if (this.stopClick() && event instanceof MouseEvent) {\n            event.stopPropagation();\n        }\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    OnChanges,\n    SimpleChanges,\n    booleanAttribute,\n    computed,\n    input,\n    viewChildren,\n} from '@angular/core';\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\n\nimport { MagmaInputCommon } from './input-common';\n\nimport { MagmaStopPropagationDirective } from '../../directives/stop-propagation.directive';\nimport { toISODate } from '../../utils/date';\nimport { MagmaDatetimeType } from '../datetime-picker/datetime-picker.component';\nimport { MagmaDatetimePicker } from '../datetime-picker/datetime-picker.directive';\n\ntype PlaceholderInfos = {\n    dd: string;\n    h1: string;\n    h2: string;\n    h3: string;\n    hh: string;\n    min: string;\n    mm: string;\n    mmm: string;\n    s1: string;\n    s2: string;\n    s3: string;\n    sec: string;\n    yyyy: string;\n};\n\ntype TypeData = 'day' | 'month' | 'year' | 'hours' | 'minutes' | 'seconds' | 'milli';\n\nlet counter = 0;\n\nconst languages: Record<string, string | { format: string; type: 'dmy' | 'ymd' | 'mdy' }> = {\n    // --- language without country (more one country) ---\n    fr: 'jj/mm/aaaa hh:mm:ss:sss', // French\n    en: { format: 'mm/dd/yyyy hh:mm:ss:sss', type: 'mdy' }, // English\n    es: 'dd/mm/aaaa hh:mm:ss:sss', // Spanish\n    de: 'tt.mm.jjjj hh:mm:ss:sss', // German\n    pt: 'dd/mm/aaaa hh:mm:ss:sss', // Portuguese\n    zh: { format: 'yyyy/mm/dd hh:mm:ss:sss', type: 'ymd' }, // Chinese\n\n    // --- EUROPE (Nordic & Western) ---\n    'fr-FR': 'jj/mm/aaaa hh:mm:ss:sss', // France\n    'fr-BE': 'jj/mm/aaaa hh:mm:ss:sss', // Belgium\n    'fr-CH': 'jj.mm.aaaa hh:mm:ss:sss', // Switzerland\n    'en-GB': 'dd/mm/yyyy hh:mm:ss:sss', // United Kingdom\n    'en-IE': 'dd/mm/yyyy hh:mm:ss:sss', // Ireland\n    'de-DE': 'tt.mm.jjjj hh:mm:ss:sss', // Germany\n    'de-AT': 'tt.mm.jjjj hh:mm:ss:sss', // Austria\n    'it-IT': 'gg/mm/aaaa oo:mm:ss:sss', // Italy\n    'es-ES': 'dd/mm/aaaa hh:mm:ss:sss', // Spain\n    'pt-PT': 'dd/mm/aaaa hh:mm:ss:sss', // Portugal\n    'nl-NL': 'dd-mm-jjjj uu:mm:ss:sss', // Netherlands\n    'da-DK': 'dd.mm.åååå tt:mm:ss:sss', // Denmark\n    'nb-NO': 'dd.mm.åååå tt:mm:ss:sss', // Norway\n    'sv-SE': 'åååå-mm-dd tt:mm:ss:sss', // Sweden\n    'fi-FI': 'pp.kk.vvvv tt:mm:ss:sss', // Finland\n    'is-IS': 'dd.mm.áááá kk:mm:ss:sss', // Iceland\n\n    // --- EUROPE (Central & Eastern) ---\n    'pl-PL': 'dd.mm.rrrr gg:mm:ss:sss', // Poland\n    'cs-CZ': 'dd.mm.rrrr hh:mm:ss:sss', // Czech Republic\n    'sk-SK': 'dd.mm.rrrr hh:mm:ss:sss', // Slovakia\n    'hu-HU': { format: 'éééé.mm.dd. óó:pp:mm:mmm', type: 'ymd' }, // Hungary\n    'ro-RO': 'zz.ll.aaaa oo:mm:ss:sss', // Romania\n    'bg-BG': 'дд.мм.гггг чч:мм:сс:ссс', // Bulgaria\n    'el-GR': 'ηη/μμ/εεεε ωω:λλ:δδ:χχχ', // Greece\n    'ru-RU': 'дд.мм.гггг чч:мм:сс:ссс', // Russia\n    'uk-UA': 'дд.мм.рррр гг:хх:сс:ммм', // Ukraine\n    'be-BY': 'дд.мм.гггг гг:хх:сс:ммм', // Belarus\n    'et-EE': 'pp.kk.aaaa tt:mm:ss:sss', // Estonia\n    'lv-LV': 'dd.mm.gggg. pp:mm:ss:sss', // Latvia\n    'lt-LT': { format: 'mmmm-mm-dd vv:mm:ss:sss', type: 'ymd' }, // Lithuania\n    'sl-SI': 'dd.mm.llll uu:mm:ss:sss', // Slovenia\n    'hr-HR': 'dd.mm.gggg. ss:mm:ss:sss', // Croatia\n    'sr-RS': 'dd.mm.gggg. čč:mm:ss:sss', // Serbia\n    'tr-TR': 'gg.aa.yyyy ss:dd:ss:mmm', // Turkey\n\n    // --- AMERICAS ---\n    'en-US': { format: 'mm/dd/yyyy hh:mm:ss:sss', type: 'mdy' }, // United States\n    'en-CA': { format: 'yyyy-mm-dd hh:mm:ss:sss', type: 'ymd' }, // Canada (English)\n    'fr-CA': { format: 'aaaa-mm-jj hh:mm:ss:sss', type: 'ymd' }, // Canada (French)\n    'es-MX': 'dd/mm/aaaa hh:mm:ss:sss', // Mexico\n    'es-AR': 'dd/mm/aaaa hh:mm:ss:sss', // Argentina\n    'es-CO': 'dd/mm/aaaa hh:mm:ss:sss', // Colombia\n    'es-CL': 'dd-mm-aaaa hh:mm:ss:sss', // Chile\n    'pt-BR': 'dd/mm/aaaa hh:mm:ss:sss', // Brazil\n\n    // --- ASIA & PACIFIC ---\n    'zh-CN': { format: 'yyyy/mm/dd hh:mm:ss:sss', type: 'ymd' }, // China\n    'zh-TW': { format: 'yyyy/mm/dd hh:mm:ss:sss', type: 'ymd' }, // Taiwan\n    'ja-JP': { format: 'yyyy/mm/dd hh:mm:ss:sss', type: 'ymd' }, // Japan\n    'ko-KR': { format: 'yyyy. mm. dd. hh:mm:ss:sss', type: 'ymd' }, // South Korea\n    'vi-VN': 'dd/mm/aaaa hh:mm:ss:sss', // Vietnam\n    'th-TH': 'วว/ดด/ปปปป ชช:นน:วว:พพพ', // Thailand\n    'id-ID': 'hh/bb/tttt jj:mm:dd:mmm', // Indonesia\n    'hi-IN': 'dd/mm/yyyy hh:mm:ss:sss', // India\n    'en-AU': 'dd/mm/yyyy hh:mm:ss:sss', // Australia\n    'en-NZ': 'dd/mm/yyyy hh:mm:ss:sss', // New Zealand\n\n    // --- AFRICA & MIDDLE EAST ---\n    'ar-SA': { format: 'yyyy/mm/dd hh:mm:ss:sss', type: 'ymd' }, // Saudi Arabia\n    'he-IL': 'dd.mm.yyyy hh:mm:ss:sss', // Israel\n    'af-ZA': { format: 'jjjj-mm-dd hh:mm:ss:sss', type: 'ymd' }, // South Africa\n    'sw-KE': 'dd/mm/aaaa hh:mm:ss:sss', // Kenya\n};\n\nconst types: (MagmaDatetimeType | 'datetime-seconds' | 'datetime-milli' | 'month' | 'week')[] = [\n    'date',\n    'datetime-local',\n    'time',\n    'datetime-seconds',\n    'datetime-milli',\n    'month',\n    'week',\n];\n\nconst dateRegex = {\n    dmy: /(?<dd>\\S{2})(?<s1>[\\/\\-. ]+)(?<mm>\\S{2})(?<s2>[\\/\\-. ]+)(?<yyyy>\\S{4})(?<s3>[\\/\\-. ]+)(?<hh>\\S{2})(?<h1>:)(?<min>\\S{2})(?<h2>:)(?<sec>\\S{2})(?<h3>.)(?<mmm>\\S{3})/,\n    ymd: /(?<yyyy>\\S{4})(?<s2>[\\/\\-. ]+)(?<mm>\\S{2})(?<s1>[\\/\\-. ]+)(?<dd>\\S{2})(?<s3>[\\/\\-. ]+)(?<hh>\\S{2})(?<h1>:)(?<min>\\S{2})(?<h2>:)(?<sec>\\S{2})(?<h3>.)(?<mmm>\\S{3})/,\n    mdy: /(?<mm>\\S{2})(?<s1>[\\/\\-. ]+)(?<dd>\\S{2})(?<s2>[\\/\\-. ]+)(?<yyyy>\\S{4})(?<s3>[\\/\\-. ]+)(?<hh>\\S{2})(?<h1>:)(?<min>\\S{2})(?<h2>:)(?<sec>\\S{2})(?<h3>.)(?<mmm>\\S{3})/,\n};\n\nconst dateFields = ['day', 'month', 'year'];\n\ntype fieldName = 'day' | 'month' | 'year' | 'hours' | 'minutes' | 'seconds' | 'milli';\n\n@Component({\n    selector: 'mg-input-date',\n    templateUrl: './input-date.component.html',\n    styleUrl: './input-date.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ReactiveFormsModule, FormsModule, MagmaDatetimePicker, MagmaStopPropagationDirective],\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputDate },\n        { provide: NG_VALUE_ACCESSOR, useExisting: MagmaInputDate, multi: true },\n        { provide: NG_VALIDATORS, useExisting: MagmaInputDate, multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n    },\n})\nexport class MagmaInputDate\n    extends MagmaInputCommon<(string | { label?: string; value: string })[]>\n    implements OnChanges\n{\n    override readonly componentName: string = 'input-date';\n    protected override counter = counter++;\n\n    readonly type = input<MagmaDatetimeType | 'datetime-seconds' | 'datetime-milli'>();\n    protected readonly _type = computed(() => (types.includes(this.type()) ? this.type() : 'date')!);\n    readonly hideDatePicker = input(false, { transform: booleanAttribute });\n    readonly lang = input<string>();\n\n    readonly input = viewChildren<ElementRef<HTMLInputElement>>('input');\n\n    readonly datePicker = viewChildren(MagmaDatetimePicker);\n\n    override get inputElement(): HTMLElement | undefined {\n        return this.input()?.[0]?.nativeElement;\n    }\n\n    protected readonly _year = computed(\n        () => this.refreshTrigger() || (this._value ? this._value.substring(0, 4) : ''),\n    );\n    protected readonly _month = computed(\n        () => this.refreshTrigger() || (this._value ? this._value.substring(5, 7) : ''),\n    );\n    protected readonly _day = computed(\n        () => this.refreshTrigger() || (this._value ? this._value.substring(8, 10) : ''),\n    );\n    protected readonly _hours = computed(\n        () => this.refreshTrigger() || (this._value ? this._value.substring(11, 13) : ''),\n    );\n    protected readonly _minutes = computed(\n        () => this.refreshTrigger() || (this._value ? this._value.substring(14, 16) : ''),\n    );\n    protected readonly _seconds = computed(\n        () => this.refreshTrigger() || (this._value ? this._value.substring(17, 19) : ''),\n    );\n    protected readonly _milli = computed(\n        () => this.refreshTrigger() || (this._value ? this._value.substring(20, 23) : ''),\n    );\n\n    orderType: 'dmy' | 'ymd' | 'mdy' = 'dmy';\n\n    protected placeholderInfos: PlaceholderInfos | undefined = undefined;\n\n    protected valueCache: Record<TypeData, number> = {\n        year: 0,\n        month: 0,\n        day: 0,\n        hours: 0,\n        minutes: 0,\n        seconds: 0,\n        milli: 0,\n    };\n\n    protected lockFocus = false;\n\n    constructor() {\n        super();\n        this.placeholderCompute(this.lang());\n    }\n\n    override ngOnChanges(changes: SimpleChanges): void {\n        super.ngOnChanges(changes);\n\n        if (changes['lang']) {\n            this.placeholderCompute(changes['lang'].currentValue);\n        }\n        if (changes['value']) {\n            this.updateValueCache(changes['value'].currentValue);\n        }\n    }\n\n    private updateValueCache(value: string) {\n        this.valueCache = {\n            year: this.valueCacheSubstring(value, 0, 4),\n            month: this.valueCacheSubstring(value, 5, 7),\n            day: this.valueCacheSubstring(value, 8, 10),\n            hours: this.valueCacheSubstring(value, 11, 13),\n            minutes: this.valueCacheSubstring(value, 14, 16),\n            seconds: this.valueCacheSubstring(value, 17, 19),\n            milli: this.valueCacheSubstring(value, 20, 23),\n        };\n\n        this.updateValueWithCache(false);\n    }\n\n    private valueCacheSubstring(value: string, a: number, b: number): number {\n        return value ? +value?.substring(a, b) || 0 : 0;\n    }\n\n    override writeValue(value: any): void {\n        this.updateValueCache(value);\n        super.writeValue(value);\n        // force refresh input\n        this.refreshTrigger.set(null);\n        this.refreshTrigger.set(false);\n    }\n\n    placeholderCompute(lang?: string) {\n        const lg = lang || this.lang() || navigator.language || 'en';\n\n        let format = languages[lg];\n        if (!format) {\n            const key = Object.keys(languages).find(e => e.startsWith(lg));\n            if (key) {\n                format = languages[key];\n            }\n        }\n\n        if (typeof format === 'string') {\n            format = { format, type: 'dmy' };\n        } else if (!format) {\n            format = languages['en'] as { format: string; type: 'dmy' | 'ymd' | 'mdy' };\n        }\n\n        this.orderType = format.type;\n\n        // format placeholder texts: default d/m/y\n        let match = dateRegex.dmy;\n        switch (this.orderType) {\n            case 'ymd':\n                match = dateRegex.ymd;\n                break;\n            case 'mdy':\n                match = dateRegex.mdy; // USA only ?\n                break;\n        }\n        this.placeholderInfos = format.format.match(match)!.groups as PlaceholderInfos;\n    }\n\n    focus(event: FocusEvent, focus: boolean, type: fieldName) {\n        if (!focus) {\n            this.onTouched();\n            if (this.ngControl?.control) {\n                this.validate(this.ngControl.control);\n            }\n            const element = event.target as HTMLInputElement;\n            let size = 2;\n            if (type === 'milli') {\n                size = 3;\n            } else if (type === 'year') {\n                size = 4;\n            }\n\n            if (element.value) {\n                if (element?.value.length < size) {\n                    element.value = `${+element.value}`.padStart(size, '0');\n                } else if (element?.value.length > size) {\n                    element.value = `${+element.value}`;\n                }\n            }\n        }\n    }\n\n    datePickerClose(date: string) {\n        this.onChange(date);\n        this.writeValue(date);\n        this.onTouched();\n        if (this.ngControl?.control) {\n            this.validate(this.ngControl.control);\n        }\n    }\n\n    keydown(event: KeyboardEvent) {\n        if (event.key.startsWith('Arrow')) {\n            this.lockFocus = true;\n        }\n        if (event.key === 'ArrowLeft') {\n            this.focusPrev((event.target as HTMLInputElement).id);\n            event.preventDefault();\n        } else if (event.key === 'ArrowRight') {\n            this.focusNext((event.target as HTMLInputElement).id);\n            event.preventDefault();\n        }\n    }\n\n    keyup(event: KeyboardEvent) {\n        if (event.key.includes('Arrow')) {\n            this.lockFocus = false;\n        }\n    }\n\n    changeDate(event: Event, type: fieldName) {\n        this.updateDate(event, type);\n        this.update.emit(this._value);\n    }\n\n    updateDate(event: Event, type: fieldName) {\n        const input = event.target as HTMLInputElement;\n        const value = input?.valueAsNumber;\n        let padStart = 2;\n        const dateType = dateFields.includes(type);\n        if ((dateType && value) || (!dateType && input?.value.match(/\\d+/))) {\n            let next = false;\n            switch (type) {\n                case 'day':\n                    if (value > 3) {\n                        if (value > 31) {\n                            input.valueAsNumber = 31;\n                        }\n                        if (!this.lockFocus) {\n                            next = true;\n                        }\n                    }\n                    padStart = 2;\n                    break;\n                case 'month':\n                    if (value > 1) {\n                        if (value > 12) {\n                            input.valueAsNumber = 12;\n                        }\n                        if (!this.lockFocus) {\n                            next = true;\n                        }\n                    }\n\n                    break;\n                case 'year':\n                    if (value > 9999) {\n                        input.valueAsNumber = 9999;\n                        if (!this.lockFocus) {\n                            next = true;\n                        }\n                    }\n                    padStart = 4;\n\n                    break;\n                case 'hours':\n                    if (value > 3) {\n                        if (value > 23) {\n                            input.valueAsNumber = 23;\n                        }\n                        if (!this.lockFocus) {\n                            next = true;\n                        }\n                    }\n\n                    break;\n                case 'minutes':\n                case 'seconds':\n                    if (value > 5) {\n                        if (value > 59) {\n                            input.valueAsNumber = 59;\n                        }\n                        if (!this.lockFocus) {\n                            next = true;\n                        }\n                    }\n\n                    break;\n                case 'milli':\n                    if (value > 999) {\n                        input.valueAsNumber = 999;\n                    }\n                    padStart = 3;\n                    break;\n            }\n            if (this.lockFocus && input.value) {\n                input.value = input.value.padStart(padStart, '0');\n            }\n            if (next) {\n                this.focusNext(input.id);\n            }\n\n            this.valueCache[type] = input.valueAsNumber;\n\n            this.updateValueWithCache();\n        } else {\n            this.valueCache[type] = 0;\n        }\n    }\n\n    private updateValueWithCache(change = true) {\n        let valueDate =\n            this.valueCache.day || this.valueCache.month || this.valueCache.day\n                ? toISODate(\n                      new Date(\n                          Date.UTC(\n                              this.valueCache.year,\n                              this.valueCache.month - 1,\n                              this.valueCache.day,\n                              this.valueCache.hours,\n                              this.valueCache.minutes,\n                              this.valueCache.seconds,\n                              this.valueCache.milli,\n                          ),\n                      ),\n                  )\n                : undefined;\n\n        switch (this.type()) {\n            case 'datetime-local':\n                valueDate = valueDate?.substring(0, 16);\n                break;\n            case 'time':\n                valueDate = valueDate?.substring(11, 16);\n                break;\n            case 'datetime-seconds':\n                valueDate = valueDate?.substring(0, 19);\n                break;\n            case 'datetime-milli':\n                valueDate = valueDate?.substring(0, 23);\n                break;\n            case 'date':\n            default:\n                valueDate =\n                    this.valueCache.year && this.valueCache.month && this.valueCache.year\n                        ? valueDate?.substring(0, 10)\n                        : undefined;\n                break;\n        }\n\n        super.writeValue(valueDate);\n        if (change) {\n            this.onChange(valueDate);\n            this.update.emit(valueDate);\n            this.change.emit(valueDate);\n        }\n    }\n\n    private focusNext(id: string) {\n        this.selectInput(`#${id} + * + input`);\n    }\n\n    private focusPrev(id: string) {\n        this.selectInput(`input:has(+ * + #${id})`);\n    }\n\n    private selectInput(rule: string) {\n        const element = document.querySelector<HTMLInputElement>(rule);\n        if (element) {\n            element.focus();\n            element.select();\n        }\n    }\n}\n","@if (!onError()) {\n  <div class=\"input date\" #input>\n    @if (_type().startsWith('date')) {\n      @let typeDay = 'day';\n      <input\n        #inputDay\n        type=\"number\"\n        [name]=\"_name() + '-' + typeDay\"\n        [id]=\"_id() + '-' + typeDay + '-input'\"\n        [class]=\"typeDay\"\n        [value]=\"_day()\"\n        min=\"0\"\n        max=\"31\"\n        maxlength=\"2\"\n        [disabled]=\"disabled()\"\n        [readonly]=\"readonly()\"\n        (keyup)=\"keyup($event)\"\n        (keydown)=\"keydown($event)\"\n        (change)=\"changeDate($event, typeDay)\"\n        (input)=\"updateDate($event, typeDay)\"\n        (focus)=\"focus($event, true, typeDay)\"\n        (blur)=\"focus($event, false, typeDay)\"\n        [placeholder]=\"placeholderInfos?.dd\"\n      />\n      <span>{{ placeholderInfos?.s1 }}</span>\n      @let typeMonth = 'month';\n      <input\n        #inputMouth\n        type=\"number\"\n        [name]=\"_name() + '-' + typeMonth\"\n        [id]=\"_id() + '-' + typeMonth + '-input'\"\n        [class]=\"typeMonth\"\n        [value]=\"_month()\"\n        min=\"0\"\n        max=\"12\"\n        maxlength=\"2\"\n        tabindex=\"-1\"\n        [disabled]=\"disabled()\"\n        [readonly]=\"readonly()\"\n        (keyup)=\"keyup($event)\"\n        (keydown)=\"keydown($event)\"\n        (change)=\"changeDate($event, typeMonth)\"\n        (input)=\"updateDate($event, typeMonth)\"\n        (focus)=\"focus($event, true, typeMonth)\"\n        (blur)=\"focus($event, false, typeMonth)\"\n        [placeholder]=\"placeholderInfos?.mm\"\n      />\n      <span>{{ placeholderInfos?.s2 }}</span>\n      @let typeYear = 'year';\n      <input\n        #inputYear\n        type=\"number\"\n        [name]=\"_name() + '-' + typeYear\"\n        [id]=\"_id() + '-' + typeYear + '-input'\"\n        [class]=\"typeYear\"\n        [value]=\"_year()\"\n        min=\"0\"\n        max=\"9999\"\n        maxlength=\"4\"\n        tabindex=\"-1\"\n        [disabled]=\"disabled()\"\n        [readonly]=\"readonly()\"\n        (keyup)=\"keyup($event)\"\n        (keydown)=\"keydown($event)\"\n        (change)=\"changeDate($event, typeYear)\"\n        (input)=\"updateDate($event, typeYear)\"\n        (focus)=\"focus($event, true, typeYear)\"\n        (blur)=\"focus($event, false, typeYear)\"\n        [placeholder]=\"placeholderInfos?.yyyy\"\n      />\n    }\n    <span>{{ placeholderInfos?.s3 }}</span>\n    @if (_type().includes('time')) {\n      @let typeHours = 'hours';\n      <input\n        #inputHours\n        type=\"number\"\n        [name]=\"_name() + '-' + typeHours\"\n        [id]=\"_id() + '-' + typeHours + '-input'\"\n        [class]=\"typeHours\"\n        [value]=\"_hours()\"\n        min=\"0\"\n        max=\"23\"\n        maxlength=\"2\"\n        tabindex=\"-1\"\n        [disabled]=\"disabled()\"\n        [readonly]=\"readonly()\"\n        (keyup)=\"keyup($event)\"\n        (keydown)=\"keydown($event)\"\n        (change)=\"changeDate($event, typeHours)\"\n        (input)=\"updateDate($event, typeHours)\"\n        (focus)=\"focus($event, true, typeHours)\"\n        (blur)=\"focus($event, false, typeHours)\"\n        [placeholder]=\"placeholderInfos?.hh\"\n      />\n      <span>{{ placeholderInfos?.h1 }}</span>\n      @let typeMinutes = 'minutes';\n      <input\n        #inputMinutes\n        type=\"number\"\n        [name]=\"_name() + '-' + typeMinutes\"\n        [id]=\"_id() + '-' + typeMinutes + '-input'\"\n        [class]=\"typeMinutes\"\n        [value]=\"_minutes()\"\n        min=\"0\"\n        max=\"59\"\n        maxlength=\"2\"\n        tabindex=\"-1\"\n        [disabled]=\"disabled()\"\n        [readonly]=\"readonly()\"\n        (keyup)=\"keyup($event)\"\n        (keydown)=\"keydown($event)\"\n        (change)=\"changeDate($event, typeMinutes)\"\n        (input)=\"updateDate($event, typeMinutes)\"\n        (focus)=\"focus($event, true, typeMinutes)\"\n        (blur)=\"focus($event, false, typeMinutes)\"\n        [placeholder]=\"placeholderInfos?.min\"\n      />\n    }\n    @if (_type().includes('seconds') || _type().includes('milli')) {\n      <span>{{ placeholderInfos?.h2 }}</span>\n      @let typeSeconds = 'seconds';\n      <input\n        #inputSeconds\n        type=\"number\"\n        [name]=\"_name() + '-' + typeSeconds\"\n        [id]=\"_id() + '-' + typeSeconds + '-input'\"\n        [class]=\"typeSeconds\"\n        [value]=\"_seconds()\"\n        min=\"0\"\n        max=\"59\"\n        maxlength=\"2\"\n        tabindex=\"-1\"\n        [disabled]=\"disabled()\"\n        [readonly]=\"readonly()\"\n        (keyup)=\"keyup($event)\"\n        (keydown)=\"keydown($event)\"\n        (change)=\"changeDate($event, typeSeconds)\"\n        (input)=\"updateDate($event, typeSeconds)\"\n        (focus)=\"focus($event, true, typeSeconds)\"\n        (blur)=\"focus($event, false, typeSeconds)\"\n        [placeholder]=\"placeholderInfos?.sec\"\n      />\n    }\n    @if (_type().includes('milli')) {\n      <span>{{ placeholderInfos?.h3 }}</span>\n      @let typeMilli = 'milli';\n      <input\n        #inputMilli\n        type=\"number\"\n        [name]=\"_name() + '-' + typeMilli\"\n        [id]=\"_id() + '-' + typeMilli + '-input'\"\n        [class]=\"typeMilli\"\n        [value]=\"_milli()\"\n        min=\"0\"\n        max=\"999\"\n        maxlength=\"3\"\n        tabindex=\"-1\"\n        [disabled]=\"disabled()\"\n        [readonly]=\"readonly()\"\n        (keyup)=\"keyup($event)\"\n        (keydown)=\"keydown($event)\"\n        (change)=\"changeDate($event, typeMilli)\"\n        (input)=\"updateDate($event, typeMilli)\"\n        (focus)=\"focus($event, true, typeMilli)\"\n        (blur)=\"focus($event, false, typeMilli)\"\n        [placeholder]=\"placeholderInfos?.mmm\"\n      />\n    }\n  </div>\n\n  @if (!hideDatePicker()) {\n    <span\n      class=\"picker-icon\"\n      [datetimePicker]=\"_value\"\n      [datetimePickerType]=\"type()\"\n      (datetimeClose)=\"datePickerClose($event)\"\n      stop-propagation\n      stopKeydown\n      >📅</span\n    >\n  } @else {\n    <span class=\"picker-hide\"></span>\n  }\n} @else {\n  Error\n}\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector:\n        'mg-input-label, mg-input-desc, mg-input-error, mg-input-prefix, mg-input-suffix, mg-input-before, ' +\n        'mg-input-after, mg-input-textarea-desc',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    template: '<ng-content />',\n    styleUrl: 'input-element.component.scss',\n})\nexport class MagmaInputElement {}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { NumFormatter } from '@ikilote/num-formatter';\n\n/**\n * Format number to string\n *\n * Usage:\n * - `{{ 1000 | numFormat }}` → ` 1,000 `\n * - `Intl.NumberFormatOptions`\n *   - `{{ 1000 | numFormat:{style: \"currency\", currency: \"USD\"} }}`  → ` $1,000.00 `\n * - `@ikilote/num-formatter`\n *   - `{{ 1000 | numFormat:'#,##0.00' }}`  → ` 1,000.00 `\n *   - `{{ 1000 | numFormat:'#,##0.00':'fr' }}`  → ` 1 000,00 `\n *   - `{{ 1000.555 | numFormat:'#,##0.00:'fr':'default' }}`  → ` 1 000,56`\n *   - `{{ 1000.555 | numFormat:'#,##0.00:'fr':'trunc' }}`  → ` 1 000,55`\n */\n@Pipe({\n    name: 'numFormat',\n})\nexport class NumFormatPipe implements PipeTransform {\n    private static cache: Record<string, { dot: string; separator: string; round?: 'default' | 'trunc' }> = {};\n    static lang = 'en';\n\n    /**\n     * format number to string\n     * @param value\n     * @param params 2 cases:\n     * * params is `string`: use `@ikilote/num-formatter` pattern\n     * * params is `Intl.NumberFormatOptions`: use `Intl.NumberFormat`\n     * @param lang language (default: 'en')\n     * @returns string of the number\n     * @see https://git.ikilote.net/typescript/number-formatter/\n     * @see https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/Intl/NumberFormat\n     */\n    transform(\n        value: number,\n        params?: Intl.NumberFormatOptions | string | undefined,\n        lang?: string,\n        round?: 'default' | 'trunc',\n    ): string {\n        const empty = `${value}`;\n        const lg = lang || NumFormatPipe.lang || 'en';\n        if (empty === '' || empty === 'undefined' || empty === 'null' || empty === 'NaN') {\n            return '';\n        } else if (typeof params === 'string') {\n            if (!NumFormatPipe.cache[lg]) {\n                const [, group, , decimal] = new Intl.NumberFormat(lg).formatToParts(1000.1);\n                NumFormatPipe.cache[lg] = { dot: decimal.value, separator: group.value };\n            }\n            return new NumFormatter(value).formatByPattern(params, { ...NumFormatPipe.cache[lg], round });\n        } else {\n            return new Intl.NumberFormat(lg, typeof params === 'object' ? params : {}).format(value);\n        }\n    }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, booleanAttribute, input, viewChildren } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { MagmaInputCommon } from './input-common';\n\nimport { NumFormatPipe } from '../../pipes/num-format.pipe';\nimport { numberAttributeOrUndefined } from '../../utils/coercion';\n\nlet counter = 0;\n\n@Component({\n    selector: 'mg-input-number',\n    templateUrl: './input-number.component.html',\n    styleUrl: './input-number.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputNumber },\n        { provide: NG_VALUE_ACCESSOR, useExisting: MagmaInputNumber, multi: true },\n        { provide: NG_VALIDATORS, useExisting: MagmaInputNumber, multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n        '[class.show-arrows]': 'showArrows()',\n        '[attr.data-number]': 'numberFormat.transform(_value, formater())',\n    },\n})\nexport class MagmaInputNumber extends MagmaInputCommon<(number | { label?: string; value: number })[]> {\n    override readonly componentName = 'input-number';\n    protected override counter = counter++;\n    protected numberFormat = new NumFormatPipe();\n\n    static readonly acceptKeys = [\n        '0',\n        '1',\n        '2',\n        '3',\n        '4',\n        '5',\n        '6',\n        '7',\n        '8',\n        '9',\n        '-',\n        '.',\n        ',',\n        'ArrowLeft',\n        'ArrowRight',\n        'ArrowDown',\n        'ArrowUp',\n        'Backspace',\n        'Delete',\n        'Tab',\n    ];\n\n    readonly step = input(1, { transform: numberAttributeOrUndefined });\n    readonly min = input(undefined, { transform: numberAttributeOrUndefined });\n    readonly max = input(undefined, { transform: numberAttributeOrUndefined });\n    readonly forceMinMax = input(false, { transform: booleanAttribute });\n    readonly showArrows = input(false, { transform: booleanAttribute });\n    readonly formater = input<string | Intl.NumberFormatOptions>();\n    readonly noDecimal = input(false, { transform: booleanAttribute });\n    readonly noNegative = input(false, { transform: booleanAttribute });\n\n    readonly input = viewChildren<ElementRef<HTMLInputElement>>('input');\n\n    override get inputElement(): HTMLInputElement {\n        return this.input()?.[0]?.nativeElement;\n    }\n\n    override writeValue(value: any): void {\n        super.writeValue(value);\n        this.inputElement!.value = value ?? '';\n    }\n\n    changeValue(event: Event) {\n        event.stopPropagation();\n        const value = this.parseValue(event);\n        this.onChange(value);\n        this.update.emit(value);\n    }\n\n    inputValue(event: Event) {\n        const value = this.parseValue(event);\n        this.onChange(value);\n        this.change.emit(value);\n    }\n\n    private parseValue(event: Event): number | undefined {\n        const input = this.getInput(event);\n        const value = this.forceValue(\n            input.value !== '' && input.value !== null && input.value !== undefined ? +input.value : undefined,\n        );\n        this._value = value;\n        return value;\n    }\n\n    focus(event: Event, focus: boolean) {\n        if (!focus) {\n            const input = this.getInput(event);\n            if (input.value !== this._value) {\n                input.value = this._value;\n            }\n            this.onTouched();\n            if (!focus) {\n                this.onTouched();\n                if (this.ngControl?.control) {\n                    this.validate(this.ngControl.control);\n                }\n            }\n        }\n    }\n\n    keydown(event: KeyboardEvent) {\n        if (MagmaInputNumber.acceptKeys.includes(event.key)) {\n            if (\n                (this.noDecimal() && (event.key === '.' || event.key === ',')) ||\n                (this.noNegative() && event.key === '-')\n            ) {\n                event.preventDefault();\n                return;\n            }\n\n            if (this.inputElement.value.includes('.') && (event.key === '.' || event.key === ',')) {\n                event.preventDefault();\n            } else if (event.key === '-') {\n                if (`${this.inputElement.value}`.includes('-')) {\n                    event.preventDefault();\n                } else {\n                    this.inputElement.value = `-${this.inputElement.value}`;\n                    this.changeValue(event);\n                    event.preventDefault();\n                }\n            }\n        } else {\n            event.preventDefault();\n        }\n    }\n\n    private forceValue(value: number | undefined) {\n        if (this.forceMinMax()) {\n            const min = this.min();\n            if (min !== undefined && !Number.isNaN(min) && (value || 0) < min) {\n                value = min;\n            }\n            const max = this.max();\n            if (max !== undefined && !Number.isNaN(max) && (value || 0) > max) {\n                value = max;\n            }\n        }\n        return value;\n    }\n\n    private getInput(event: Event): HTMLInputElement {\n        return (event as InputEvent).target as HTMLInputElement;\n    }\n}\n","@if (!onError()) {\n  <input\n    #input\n    type=\"number\"\n    spellcheck=\"false\"\n    [attr.placeholder]=\"placeholderDisplay()\"\n    [attr.list]=\"datalist()?.length ? _id() + '-datalist' : undefined\"\n    [attr.step]=\"step()\"\n    [attr.min]=\"min()\"\n    [attr.max]=\"max()\"\n    inputmode=\"decimal\"\n    [name]=\"_name()\"\n    [id]=\"_id() + '-input'\"\n    [value]=\"_value ?? ''\"\n    [disabled]=\"disabled()\"\n    [readonly]=\"readonly()\"\n    (keydown)=\"keydown($event)\"\n    (change)=\"changeValue($event)\"\n    (input)=\"inputValue($event)\"\n    (focus)=\"focus($event, true)\"\n    (blur)=\"focus($event, false)\"\n  />\n  @if (datalist()?.length) {\n    <datalist [id]=\"_id() + '-datalist'\">\n      @for (item of datalist(); track $index) {\n        @if (typeof item === 'object') {\n          <option [value]=\"$any(item).value\">{{ $any(item).label ?? $any(item).value }}</option>\n        } @else {\n          <option [value]=\"item\"></option>\n        }\n      }\n    </datalist>\n  }\n} @else {\n  Error\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, booleanAttribute, input, viewChildren } from '@angular/core';\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\n\nimport { MagmaInputCommon } from './input-common';\n\nimport { numberAttributeOrUndefined } from '../../utils/coercion';\n\nlet counter = 0;\n\n@Component({\n    selector: 'mg-input-text',\n    templateUrl: './input-text.component.html',\n    styleUrl: './input-text.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ReactiveFormsModule, FormsModule],\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputText },\n        { provide: NG_VALUE_ACCESSOR, useExisting: MagmaInputText, multi: true },\n        { provide: NG_VALIDATORS, useExisting: MagmaInputText, multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n    },\n})\nexport class MagmaInputText extends MagmaInputCommon<(string | { label?: string; value: string })[]> {\n    override readonly componentName: string = 'input-text';\n    protected override counter = counter++;\n\n    readonly maxlength = input(undefined, { transform: numberAttributeOrUndefined });\n    readonly clearCross = input(null, { transform: booleanAttribute });\n    readonly type = input<'text' | 'email' | 'url' | 'tel'>('text');\n\n    readonly input = viewChildren<ElementRef<HTMLInputElement>>('input');\n\n    override get inputElement(): HTMLInputElement | undefined {\n        return this.input()?.[0]?.nativeElement;\n    }\n\n    override writeValue(value: any): void {\n        super.writeValue(value);\n        this.inputElement!.value = value ?? '';\n    }\n\n    changeValue(event: Event) {\n        event?.stopPropagation();\n        const value = ((event as InputEvent).target as HTMLInputElement).value;\n        super.writeValue(value);\n        this.onChange(value);\n        this.update.emit(value);\n    }\n\n    inputValue(event: Event) {\n        const value = ((event as InputEvent).target as HTMLInputElement).value;\n        super.writeValue(value);\n        this.onChange(value);\n        this.change.emit(value);\n    }\n\n    focus(focus: boolean) {\n        if (!focus) {\n            this.onTouched();\n            if (this.ngControl?.control) {\n                this.validate(this.ngControl.control);\n            }\n        }\n    }\n\n    clearField() {\n        this.inputElement!.value = '';\n        super.writeValue('');\n        this.onChange('');\n        this.update.emit('');\n        this.change.emit('');\n    }\n}\n","@if (!onError()) {\n  <input\n    #input\n    [type]=\"type()\"\n    [name]=\"_name()\"\n    [id]=\"_id() + '-input'\"\n    [value]=\"_value ?? ''\"\n    [disabled]=\"disabled()\"\n    [readonly]=\"readonly()\"\n    [attr.list]=\"datalist()?.length ? _id() + '-datalist' : undefined\"\n    [attr.placeholder]=\"placeholderDisplay()\"\n    [attr.maxlength]=\"maxlength()\"\n    (change)=\"changeValue($event)\"\n    (input)=\"inputValue($event)\"\n    (focus)=\"focus(true)\"\n    (blur)=\"focus(false)\"\n  />\n  @if (clearCross() && input.value) {\n    <span class=\"icon-remove\" (click)=\"clearField()\"></span>\n  }\n  @if (datalist()?.length) {\n    <datalist [id]=\"_id() + '-datalist'\">\n      @for (item of datalist(); track $index) {\n        @if (typeof item === 'object') {\n          <option [value]=\"$any(item).value\">{{ $any(item).label ?? $any(item).value }}</option>\n        } @else {\n          <option [value]=\"item\"></option>\n        }\n      }\n    </datalist>\n  }\n} @else {\n  Error\n}\n","import { ChangeDetectionStrategy, Component, booleanAttribute, input } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\n\nimport { MagmaInputCommon } from './input-common';\nimport { MagmaInputText } from './input-text.component';\n\nlet counter = 0;\n\n@Component({\n    selector: 'mg-input-password',\n    templateUrl: './input-password.component.html',\n    styleUrl: './input-password.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ReactiveFormsModule],\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputPassword },\n        { provide: NG_VALUE_ACCESSOR, useExisting: MagmaInputPassword, multi: true },\n        { provide: NG_VALIDATORS, useExisting: MagmaInputPassword, multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n    },\n})\nexport class MagmaInputPassword extends MagmaInputText {\n    override readonly componentName = 'input-password';\n    protected override counter = counter++;\n\n    override readonly clearCross: any = undefined; // not for password\n    override readonly datalist: any = undefined; // not for password\n\n    readonly eye = input(null, { transform: booleanAttribute });\n\n    protected show = false;\n\n    toggleShowPassword() {\n        this.show = !this.show;\n    }\n}\n","@if (!onError()) {\n  <input\n    #input\n    spellcheck=\"false\"\n    [type]=\"!show ? 'password' : 'text'\"\n    [attr.placeholder]=\"placeholderDisplay()\"\n    [name]=\"_name()\"\n    [id]=\"_id() + '-input'\"\n    [value]=\"_value ?? ''\"\n    [disabled]=\"disabled()\"\n    [readonly]=\"readonly()\"\n    [attr.maxlength]=\"maxlength()\"\n    (change)=\"changeValue($event)\"\n    (input)=\"inputValue($event)\"\n    (focus)=\"focus(true)\"\n    (blur)=\"focus(false)\"\n  />\n  @if (eye()) {\n    <span class=\"eye icon-{{ show ? 'moon' : 'sun' }}\" (click)=\"toggleShowPassword()\"></span>\n  }\n} @else {\n  Error\n}\n","import {\n    AfterContentChecked,\n    ChangeDetectionStrategy,\n    Component,\n    SimpleChanges,\n    booleanAttribute,\n    computed,\n    input,\n} from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';\n\nimport { MagmaInputCommon } from './input-common';\n\nlet counter = 0;\n\n@Component({\n    selector: 'mg-input-radio',\n    templateUrl: './input-radio.component.html',\n    styleUrl: './input-radio.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputRadio },\n        { provide: NG_VALUE_ACCESSOR, useExisting: MagmaInputRadio, multi: true },\n        { provide: NG_VALIDATORS, useExisting: MagmaInputRadio, multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n    },\n})\nexport class MagmaInputRadio extends MagmaInputCommon implements AfterContentChecked {\n    override readonly componentName = 'input-radio';\n    protected override counter = counter++;\n\n    override readonly value = input.required();\n\n    readonly checked = input(false, { transform: booleanAttribute });\n    override readonly placeholder: any = undefined; // not for radio\n    override readonly datalist: any = undefined; // not for radio\n\n    protected testChecked: boolean | undefined;\n\n    protected override _baseValue = 'checked';\n\n    override _name = computed<string>(\n        () => this.refreshTrigger() || this.formControlName() || this.name() || this.host?._id() || this.uid(),\n    );\n\n    override ngOnChanges(changes: SimpleChanges): void {\n        if (changes['checked']) {\n            this.testChecked = changes['checked'].currentValue;\n        }\n    }\n\n    override writeValue(value: any): void {\n        super.writeValue(value);\n        this.testChecked = value === this.value();\n        this.cd.detectChanges();\n    }\n\n    ngAfterContentChecked(): void {\n        this.cd.detectChanges();\n    }\n\n    _change(event?: Event) {\n        event?.stopPropagation();\n        const value = this.value();\n        this.onChange(value);\n        this.onTouched();\n        this.update.emit(value);\n        this.change.emit(value);\n    }\n}\n","@if (!onError()) {\n  <input\n    type=\"radio\"\n    [name]=\"_name()\"\n    [id]=\"_id() + '-input'\"\n    [value]=\"value()\"\n    [checked]=\"testChecked\"\n    [disabled]=\"disabled() || readonly()\"\n    [readonly]=\"readonly()\"\n    (change)=\"_change($event)\"\n  /><label #ref [for]=\"_id() + '-input'\" [class.empty]=\"!ref.textContent\">\n    <ng-content />\n  </label>\n} @else {\n  Error\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\n\nimport { MagmaInputCommon } from './input-common';\n\nimport { numberAttributeOrUndefined } from '../../utils/coercion';\n\nlet counter = 0;\n\n@Component({\n    selector: 'mg-input-range',\n    templateUrl: './input-range.component.html',\n    styleUrl: './input-range.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ReactiveFormsModule],\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputRange },\n        { provide: NG_VALUE_ACCESSOR, useExisting: MagmaInputRange, multi: true },\n        { provide: NG_VALIDATORS, useExisting: MagmaInputRange, multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n    },\n})\nexport class MagmaInputRange extends MagmaInputCommon<number[]> {\n    override readonly componentName = 'input-range';\n    protected override counter = counter++;\n\n    readonly step = input(undefined, { transform: numberAttributeOrUndefined });\n    readonly min = input(undefined, { transform: numberAttributeOrUndefined });\n    readonly max = input(undefined, { transform: numberAttributeOrUndefined });\n\n    changeValue(event: Event) {\n        event.stopPropagation();\n        this.update.emit(this.inputValue(event));\n    }\n\n    inputValue(event: Event) {\n        const value = +this.getInput(event).value;\n        this._value = value;\n        this.onChange(value);\n        this.change.emit(value);\n        return value;\n    }\n\n    private getInput(event: Event): HTMLInputElement {\n        return (event as InputEvent).target as HTMLInputElement;\n    }\n}\n","@if (!onError()) {\n  <input\n    #input\n    type=\"range\"\n    orient=\"horizontal\"\n    [attr.step]=\"step()\"\n    [attr.min]=\"min()\"\n    [attr.max]=\"max()\"\n    [attr.list]=\"datalist()?.length ? _id() + '-datalist' : undefined\"\n    [name]=\"_name()\"\n    [id]=\"_id() + '-input'\"\n    [value]=\"_value ?? ''\"\n    [disabled]=\"disabled() || readonly()\"\n    (change)=\"changeValue($event)\"\n    (input)=\"inputValue($event)\"\n  />\n  @if (datalist()?.length) {\n    <datalist [id]=\"_id() + '-datalist'\">\n      @for (item of datalist(); track $index) {\n        <option [value]=\"item\"></option>\n      }\n    </datalist>\n  }\n} @else {\n  Error\n}\n","import {\n    Directive,\n    ElementRef,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    SimpleChanges,\n    booleanAttribute,\n    inject,\n    input,\n} from '@angular/core';\n\nimport autosize from 'autosize';\n\n@Directive({\n    selector: 'textarea[autosize]',\n})\nexport class MagmaTextareaAutosizeDirective implements OnInit, OnChanges, OnDestroy {\n    private readonly elementRef = inject<ElementRef<HTMLTextAreaElement>>(ElementRef);\n\n    readonly autosizeDisabled = input(false, { transform: booleanAttribute });\n\n    private destroyed = false;\n    private initTimer?: ReturnType<typeof setTimeout>;\n\n    ngOnInit() {\n        if (!this.autosizeDisabled()) {\n            this.initTimer = setTimeout(() => {\n                if (!this.destroyed && this.elementRef.nativeElement.nodeName === 'TEXTAREA') {\n                    autosize(this.elementRef.nativeElement);\n                }\n            });\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['autosizeDisabled']) {\n            if (\n                changes['autosizeDisabled'].previousValue === true &&\n                changes['autosizeDisabled'].currentValue === false\n            ) {\n                this.ngOnInit();\n            } else if (\n                changes['autosizeDisabled'].previousValue === false &&\n                changes['autosizeDisabled'].currentValue === true\n            ) {\n                this.ngOnDestroy();\n            }\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.destroyed = true;\n        if (this.initTimer) {\n            clearTimeout(this.initTimer);\n            this.initTimer = undefined;\n        }\n        autosize.destroy(this.elementRef.nativeElement);\n    }\n}\n","import { ChangeDetectionStrategy, Component, ElementRef, booleanAttribute, input, viewChildren } from '@angular/core';\nimport { NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\n\nimport { MagmaInputCommon } from './input-common';\n\nimport { MagmaTextareaAutosizeDirective } from '../../directives/textarea-autosize.directive';\nimport { numberAttributeOrUndefined } from '../../utils/coercion';\n\nlet counter = 0;\n\n@Component({\n    selector: 'mg-input-textarea',\n    templateUrl: './input-textarea.component.html',\n    styleUrl: './input-textarea.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ReactiveFormsModule, MagmaTextareaAutosizeDirective],\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputTextarea },\n        { provide: NG_VALUE_ACCESSOR, useExisting: MagmaInputTextarea, multi: true },\n        { provide: NG_VALIDATORS, useExisting: MagmaInputTextarea, multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n        '[style.--min]': 'minHeight()',\n        '[style.--max]': 'maxHeight()',\n        '[style.--default]': 'height()',\n        '[class.monospace]': 'monospace()',\n    },\n})\nexport class MagmaInputTextarea extends MagmaInputCommon {\n    override readonly componentName = 'input-textarea';\n    protected override counter = counter++;\n\n    readonly input = viewChildren<ElementRef<HTMLTextAreaElement>>('input');\n\n    readonly autosize = input(false, { transform: booleanAttribute });\n    readonly monospace = input(false, { transform: booleanAttribute });\n    readonly maxlength = input(undefined, { transform: numberAttributeOrUndefined });\n    readonly displayLimit = input(undefined, { transform: numberAttributeOrUndefined });\n    readonly height = input<string>();\n    readonly maxHeight = input<string>();\n    readonly minHeight = input<string>();\n\n    override readonly datalist: any = undefined; // not for textarea\n\n    override get inputElement(): HTMLTextAreaElement {\n        return this.input()?.[0]?.nativeElement;\n    }\n\n    override writeValue(value: any): void {\n        super.writeValue(value);\n        this.inputElement!.value = value ?? '';\n    }\n\n    changeValue(event: Event) {\n        event.stopPropagation();\n        const value = ((event as InputEvent).target as HTMLTextAreaElement).value;\n        this.onChange(value);\n        this.update.emit(value);\n    }\n\n    inputValue(event: Event) {\n        const value = ((event as InputEvent).target as HTMLTextAreaElement).value;\n        this.onChange(value);\n        this.change.emit(value);\n    }\n\n    focus(focus: boolean) {\n        if (!focus) {\n            this.onTouched();\n            if (this.ngControl?.control) {\n                this.validate(this.ngControl.control);\n            }\n        }\n    }\n}\n","@if (!onError()) {\n  <textarea\n    #input\n    autosize\n    [autosizeDisabled]=\"!autosize()\"\n    [attr.placeholder]=\"placeholderDisplay()\"\n    [name]=\"_name()\"\n    [id]=\"_id() + '-input'\"\n    [value]=\"_value ?? ''\"\n    [disabled]=\"disabled()\"\n    [readonly]=\"readonly()\"\n    [attr.maxlength]=\"maxlength()\"\n    (change)=\"changeValue($event)\"\n    (input)=\"inputValue($event)\"\n    (focus)=\"focus(true)\"\n    (blur)=\"focus(false)\"\n  ></textarea>\n  <div>\n    <ng-content select=\"mg-input-textarea-desc\"></ng-content>\n    @let limit = displayLimit();\n    @if (maxlength() && limit !== undefined && input.value.length >= limit) {\n      <div class=\"limit\" [style.--size]=\"input.value.length\" [style.--total]=\"maxlength()\"></div>\n    }\n  </div>\n} @else {\n  Error\n}\n","import { Injectable, Renderer2, RendererFactory2, inject } from '@angular/core';\n\nexport type PreferenceInterfaceTheme = 'dark' | 'light';\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class LightDark {\n    private browserLightDark: PreferenceInterfaceTheme | undefined;\n    private userLightDark: PreferenceInterfaceTheme | undefined;\n\n    readonly rendererFactory = inject(RendererFactory2);\n    private readonly renderer: Renderer2;\n\n    private first = false;\n\n    constructor() {\n        const rendererFactory = this.rendererFactory;\n\n        // fix `NullInjectorError: No provider for Renderer2!`\n        this.renderer = rendererFactory.createRenderer(null, null);\n    }\n\n    init(value?: PreferenceInterfaceTheme) {\n        if (!this.first) {\n            this.first = true;\n\n            if (value) {\n                this.userLightDark = value;\n            }\n\n            this.browserLightDark = window.matchMedia?.('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\n            this.changeThemeClass();\n\n            window.matchMedia('(prefers-color-scheme: dark)').addEventListener?.('change', event => {\n                this.browserLightDark = event.matches ? 'dark' : 'light';\n                this.changeThemeClass();\n            });\n        }\n    }\n\n    set(value: PreferenceInterfaceTheme) {\n        this.userLightDark = value;\n        this.changeThemeClass();\n    }\n\n    currentTheme(): PreferenceInterfaceTheme {\n        return this.userLightDark ?? this.browserLightDark ?? 'light';\n    }\n\n    changeThemeClass() {\n        this.renderer.addClass(document.body, this.isLight() ? 'light-mode' : 'dark-mode');\n        this.renderer.removeClass(document.body, !this.isLight() ? 'light-mode' : 'dark-mode');\n    }\n\n    toggleTheme() {\n        this.userLightDark = this.isLight() ? 'dark' : 'light';\n    }\n\n    isLight() {\n        return this.currentTheme() === 'light';\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    OnChanges,\n    OnInit,\n    SimpleChanges,\n    booleanAttribute,\n    inject,\n    input,\n    output,\n} from '@angular/core';\n\nimport { MagmaClickEnterDirective } from '../../directives/click-enter.directive';\nimport { LightDark, PreferenceInterfaceTheme } from '../../services/light-dark';\n\n@Component({\n    selector: 'mg-light-dark',\n    templateUrl: './light-dark.component.html',\n    styleUrl: './light-dark.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [MagmaClickEnterDirective],\n    hostDirectives: [MagmaClickEnterDirective],\n    host: {\n        '[class.dark]': '!lightDarkService.isLight()',\n        '[class.light]': 'lightDarkService.isLight()',\n        '[class.compact]': 'compact()',\n    },\n})\nexport class MagmaLightDark implements OnInit, OnChanges {\n    protected readonly lightDarkService = inject(LightDark);\n    protected readonly clickEnter = inject(MagmaClickEnterDirective);\n\n    readonly compact = input(false, { transform: booleanAttribute });\n\n    readonly change = output<PreferenceInterfaceTheme>();\n\n    constructor() {\n        this.clickEnter.clickEnter.subscribe(() => {\n            if (this.compact()) {\n                this.click();\n            }\n        });\n    }\n\n    ngOnInit(): void {\n        this.clickEnter.disabled = !this.compact();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['compact']) {\n            this.clickEnter.disabled = !changes['compact'].currentValue;\n        }\n    }\n\n    click() {\n        this.lightDarkService.toggleTheme();\n        this.lightDarkService.changeThemeClass();\n\n        if (this.lightDarkService.currentTheme()) {\n            this.change.emit(this.lightDarkService.currentTheme());\n        }\n    }\n}\n","<span class=\"light icon-sun\"></span>\n<span class=\"toggle\" (clickEnter)=\"click()\"></span>\n<span class=\"dark icon-moon\"></span>\n","import { Component } from '@angular/core';\n\n@Component({\n    selector: 'mg-loader-block',\n    templateUrl: './loader-block.component.html',\n    styleUrl: './loader-block.component.scss',\n})\nexport class MagmaLoaderBlock {}\n","<ng-content select=\"mg-loader-tile\" />\n","import { Component, computed, input } from '@angular/core';\n\n@Component({\n    selector: 'mg-loader-tile',\n    templateUrl: './loader-tile.component.html',\n    styleUrl: './loader-tile.component.scss',\n    host: {\n        '[style.--width]': 'width()',\n        '[style.--height]': 'height()',\n    },\n})\nexport class MagmaLoaderTile {\n    readonly size = input<string>();\n\n    readonly width = computed(() => {\n        const width = this.size()?.split(/\\s*\\/\\s*/)[0];\n        if (width === 'flex') {\n            return '1 1 0';\n        } else if (width) {\n            return '0 0 ' + width;\n        } else {\n            return null;\n        }\n    });\n\n    readonly height = computed(() => {\n        const size = this.size()?.split(/\\s*\\/\\s*/);\n        const value = size && (size[1] ?? size[0]);\n        if (value === 'flex') {\n            return null;\n        } else if (value) {\n            return value;\n        } else {\n            return null;\n        }\n    });\n}\n","<ng-content />\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\n\n@Component({\n    selector: 'mg-loader-message',\n    templateUrl: './loader-message.component.html',\n    styleUrl: './loader-message.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MagmaLoaderMessage {}\n","<ng-content />\n","import { ChangeDetectionStrategy, Component, model } from '@angular/core';\n\n@Component({\n    selector: 'mg-loader',\n    templateUrl: './loader.component.html',\n    styleUrl: './loader.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    exportAs: 'loader',\n    host: {\n        '[class.loading]': 'loading()',\n    },\n})\nexport class MagmaLoader {\n    readonly loading = model<boolean>(false);\n\n    start() {\n        this.loading.set(true);\n    }\n\n    stop() {\n        this.loading.set(false);\n    }\n}\n","@if (loading()) {\n  <ng-content select=\"mg-spinner, mg-loader-message, mg-progress\" />\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { MagmaMessageType } from '../../services/messages';\n\n@Component({\n    selector: 'mg-message-block',\n    templateUrl: './message-block.component.html',\n    styleUrl: './message-block.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [],\n    host: {\n        '[class.info]': 'type() === \"info\"',\n        '[class.success]': 'type() === \"success\"',\n        '[class.warn]': 'type() === \"warn\"',\n        '[class.error]': 'type() === \"error\"',\n        '[class.tip]': 'type() === \"tip\"',\n    },\n})\nexport class MagmaBlockMessage {\n    type = input<MagmaMessageType | `${MagmaMessageType}`>();\n}\n","<div class=\"block\"><ng-content /></div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { MagmaMessageType } from '../../services/messages';\n\n@Component({\n    selector: 'mg-message',\n    templateUrl: './message.component.html',\n    styleUrl: './message.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [],\n    host: {\n        '[class.info]': 'type() === \"info\"',\n        '[class.success]': 'type() === \"success\"',\n        '[class.warn]': 'type() === \"warn\"',\n        '[class.error]': 'type() === \"error\"',\n        '[class.tip]': 'type() === \"tip\"',\n    },\n})\nexport class MagmaMessage {\n    type = input<MagmaMessageType | `${MagmaMessageType}`>();\n}\n","<div class=\"block\"><ng-content /></div>\n<ng-content select=\"mg-message-block\" />\n","import {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    DoCheck,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    SimpleChanges,\n    booleanAttribute,\n    computed,\n    inject,\n    input,\n    numberAttribute,\n} from '@angular/core';\nimport { RouterLink } from '@angular/router';\n\nimport { Subject } from 'rxjs';\n\nimport { Subscriptions } from '../../utils/subscriptions';\n\ninterface Page {\n    page?: number;\n    view?: string;\n    current?: boolean;\n    separator?: boolean;\n}\nlet counter = 0;\n\n@Component({\n    selector: 'mg-paginate',\n    templateUrl: './paginate.component.html',\n    styleUrl: './paginate.component.scss',\n    imports: [RouterLink],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        role: 'navigation',\n    },\n})\nexport class MagmaPagination implements OnInit, DoCheck, OnChanges, OnDestroy {\n    private static readonly onPageUpdate = new Subject<{\n        id: string;\n        page: number;\n        component: MagmaPagination;\n    }>();\n\n    readonly cd = inject(ChangeDetectorRef);\n\n    // input\n\n    readonly linkId = input<string>();\n    readonly showTotal = input(false, { transform: booleanAttribute });\n    readonly textTotal = input('Total %');\n    readonly textPage = input('Page %p / %t');\n\n    readonly page = input(1, { transform: numberAttribute });\n    readonly total = input(0, { transform: numberAttribute });\n    readonly base = input<string>();\n    readonly size = input(25, { transform: numberAttribute });\n    readonly queryParams = input<{}>({});\n\n    readonly start = input(3, { transform: numberAttribute });\n    readonly middleStart = input(3, { transform: numberAttribute });\n    readonly middleEnd = input(3, { transform: numberAttribute });\n    readonly end = input(3, { transform: numberAttribute });\n\n    // template\n\n    pages: Page[] = [];\n    currentPage = 1;\n\n    private _test = 0;\n\n    protected counter = counter++;\n    protected readonly uid = computed<string>(() => `page-${this.counter}`);\n\n    private readonly subs = Subscriptions.instance();\n\n    constructor() {\n        this.subs.push(\n            MagmaPagination.onPageUpdate.subscribe(page => {\n                if (this.linkId() === page.id && page.component !== this) {\n                    this.update(page.page, false);\n                    this.ngDoCheck();\n                    this.cd.detectChanges();\n                }\n            }),\n        );\n    }\n\n    ngOnInit(): void {\n        this.currentPage = this.page();\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['page']) {\n            this.currentPage = changes['page'].currentValue;\n        }\n    }\n\n    ngDoCheck(): void {\n        const pages = [];\n        let currentPage = +this.currentPage;\n        let test = 0;\n\n        const nbPages = this.size() ? Math.ceil(this.total() / this.size()) : 0;\n\n        if (currentPage < 1) {\n            currentPage = 1;\n            this.currentPage = currentPage;\n        } else if (currentPage > nbPages) {\n            currentPage = nbPages;\n            this.currentPage = currentPage;\n        }\n\n        const addPage = (pageNbr: number) => {\n            const link: Page = {};\n            link.current = currentPage === pageNbr;\n            link.view = `${pageNbr}`;\n            link.page = pageNbr;\n            test += pageNbr;\n            pages.push(link);\n        };\n\n        let i: number;\n        const startPos = this.start();\n        const middleStartPos = currentPage - this.middleStart();\n        const middleEndPos = currentPage + this.middleEnd();\n        const endPos = nbPages - this.end() + 1;\n\n        for (i = 1; i <= Math.min(startPos, nbPages); i++) {\n            addPage(i);\n        }\n        if (startPos + 1 < middleStartPos) {\n            pages.push({ separator: true });\n        }\n        for (i = Math.max(startPos + 1, middleStartPos); i <= Math.min(middleEndPos, nbPages); i++) {\n            addPage(i);\n        }\n        if (middleEndPos + 1 < endPos) {\n            pages.push({ separator: true });\n        }\n        for (let i = Math.max(middleEndPos + 1, endPos); i <= nbPages; i++) {\n            addPage(i);\n        }\n\n        if (this._test != test) {\n            this._test = test;\n            this.pages = pages;\n        }\n    }\n\n    ngOnDestroy(): void {\n        this.subs.clear();\n    }\n\n    update(page: number, event: boolean): void {\n        if (this.currentPage !== page) {\n            this.currentPage = page;\n            this.pages.forEach(e => (e.current = e.page === page));\n            if (event && this.linkId()) {\n                MagmaPagination.onPageUpdate.next({ page, id: this.linkId()!, component: this });\n            }\n        }\n    }\n\n    pageQueryParams(page: number): {} {\n        return { page, ...this.queryParams() };\n    }\n}\n","@if (showTotal()) {\n  <div class=\"total\">\n    {{ textTotal().replace('%', '' + total()) }}\n  </div>\n}\n@for (item of pages; track item.page) {\n  @if (!item.separator) {\n    <a\n      [routerLink]=\"[base()]\"\n      [queryParams]=\"pageQueryParams(item.page!)\"\n      [attr.title]=\"\n        textPage()\n          .replace('%p', item.view!)\n          .replace('%t', pages[pages.length - 1].view!)\n      \"\n      [attr.aria-label]=\"\n        textPage()\n          .replace('%p', item.view!)\n          .replace('%t', pages[pages.length - 1].view!)\n      \"\n      [attr.aria-current]=\"item.current ? 'page' : null\"\n      (click)=\"update(item.page!, true)\"\n    >\n      {{ item.view }}\n    </a>\n  } @else {\n    <div class=\"separator\">…</div>\n  }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nexport interface FileSizePipeParams {\n    format?: 'decimal' | 'binary';\n    language?: string;\n    options?: Intl.NumberFormatOptions | undefined;\n    translate?: {\n        unitTableBinary?: [string, string, string, string, string];\n        unitTableDecimal?: [string, string, string, string, string];\n    };\n}\n\n/**\n * Format file size\n *\n * Examples of usage:\n * - `{{ 566155566400 | fileSize  }}` → `527.3 GiB`\n * - `{{ 566155566400 | fileSize: { format: 'decimal' }}`  → `566.2 GB`\n * - `{{ 566155566400  | fileSize: { language: 'fr', translate: { unitTableBinary: [' o', ' Kio', ' Mio',\n *    ' Gio', ' Tio'] } } }}` → `527,3 Gio`\n */\n@Pipe({\n    name: 'fileSize',\n})\nexport class FileSizePipe implements PipeTransform {\n    static unitTableBinary = [' B', ' KiB', ' MiB', ' GiB', ' TiB'];\n    static unitTableDecimal = [' B', ' kB', ' MB', ' GB', ' TB'];\n\n    /**\n     * @param value\n     * @param params\n     * * format:\n     *   * decimal (SI): by 1000)\n     *   * binary: by 1024 - default\n     * * language - default 'en'\n     * * options : NumberFormatOptions\n     * @returns\n     */\n    transform(value: number, params?: FileSizePipeParams): string {\n        params ??= {};\n        let unit = 0;\n        const format = params?.format === 'decimal' ? 1000 : 1024;\n        while (value / format > 9) {\n            value /= format;\n            unit++;\n        }\n        params.options ??= {};\n        params.options.maximumSignificantDigits ??= 4;\n\n        return (\n            new Intl.NumberFormat(params.language || 'en', params.options).format(value) +\n            (params?.format === 'decimal'\n                ? (params?.translate?.unitTableDecimal ?? FileSizePipe.unitTableDecimal)\n                : (params?.translate?.unitTableBinary ?? FileSizePipe.unitTableBinary))[unit]\n        );\n    }\n}\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { FileSizePipe, FileSizePipeParams } from '../../pipes/file-size.pipe';\nimport { numberAttributeOrUndefined } from '../../utils/coercion';\n\n/**\n * Loader with message and/or progress bar\n */\n@Component({\n    selector: 'mg-progress',\n    templateUrl: './progress.component.html',\n    styleUrl: './progress.component.scss',\n    imports: [FileSizePipe],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MagmaProgress {\n    // input\n\n    readonly loaded = input(undefined, { transform: numberAttributeOrUndefined });\n    readonly total = input(undefined, { transform: numberAttributeOrUndefined });\n    readonly sizeFormat = input<FileSizePipeParams>();\n}\n","@let _loaded = loaded();\n@let _total = total();\n<div>\n  @if (_loaded !== undefined && _total && _total > 0) {\n    <div class=\"progress\" [style.--progress]=\"(_loaded / _total) * 100\"></div>\n  } @else {\n    <div class=\"progress undetermined\"></div>\n  }\n  <div class=\"progress-text\">\n    @if (_loaded !== undefined) {\n      {{ _loaded | fileSize: sizeFormat() }}\n    }\n    @if (_loaded !== undefined && _total && _total > 0) {\n      /\n    }\n    @if (_total && _total > 0) {\n      {{ _total | fileSize: sizeFormat() }}\n    }\n  </div>\n</div>\n","import { ChangeDetectionStrategy, Component, input } from '@angular/core';\n\nimport { numberAttributeOrUndefined } from '../../utils/coercion';\n\n@Component({\n    selector: 'mg-spinner',\n    templateUrl: './spinner.component.html',\n    styleUrl: './spinner.component.scss',\n    host: {\n        '[style.--height.px]': 'size()',\n        '[style.--width.px]': 'tickWidth()',\n        '[style.--radius.px]': 'radius()',\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MagmaSpinner {\n    // input\n\n    readonly size = input(undefined, { transform: numberAttributeOrUndefined });\n    readonly tickWidth = input(undefined, { transform: numberAttributeOrUndefined });\n    readonly radius = input(undefined, { transform: numberAttributeOrUndefined });\n}\n","<div style=\"--index: 0\"></div>\n<div style=\"--index: 1\"></div>\n<div style=\"--index: 2\"></div>\n<div style=\"--index: 3\"></div>\n<div style=\"--index: 4\"></div>\n<div style=\"--index: 5\"></div>\n<div style=\"--index: 6\"></div>\n<div style=\"--index: 7\"></div>\n<div style=\"--index: 8\"></div>\n<div style=\"--index: 9\"></div>\n<div style=\"--index: 10\"></div>\n<div style=\"--index: 11\"></div>\n","import {\n    AfterViewChecked,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    HostListener,\n    booleanAttribute,\n    inject,\n    input,\n    signal,\n} from '@angular/core';\n\nimport { MagmaTableRow } from './table-row.component';\nimport { MagmaTable } from './table.component';\n\n@Component({\n    selector: 'table[mg] > * > * > td[mg], table[mg] > * > * > th[mg]',\n    templateUrl: './table-cell.component.html',\n    styleUrl: './table-cell.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class.baseline]': 'baseline()',\n        '[class.hover]': 'hover()',\n        '[class.hoverLink]': 'hoverLink()',\n    },\n})\nexport class MagmaTableCell implements AfterViewInit, AfterViewChecked {\n    host?: MagmaTableRow;\n    table?: MagmaTable;\n    readonly cd = inject(ChangeDetectorRef);\n    readonly el = inject(ElementRef<HTMLTableCellElement>);\n\n    readonly baseline = input(false, { transform: booleanAttribute });\n\n    hover = signal(false);\n    hoverLink = signal(false);\n\n    row = 0;\n    index = 0;\n\n    ngAfterViewInit(): void {\n        this.ngAfterViewChecked();\n    }\n\n    ngAfterViewChecked(): void {\n        if (this.host) {\n            this.index = this.host.inputs().indexOf(this);\n            this.table = this.host.table;\n        }\n        this.cd.detectChanges();\n    }\n\n    @HostListener('mouseover')\n    mouseOver() {\n        if (this.table) {\n            this.table.over(this.row, this.index, this.el.nativeElement.tagName === 'TD');\n        }\n    }\n}\n","<ng-content />\n","import {\n    AfterViewChecked,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    booleanAttribute,\n    contentChildren,\n    inject,\n    input,\n} from '@angular/core';\n\nimport { MagmaTableCell } from './table-cell.component';\nimport { MagmaTableGroup } from './table-group.component';\nimport { MagmaTable } from './table.component';\n\n@Component({\n    selector: 'table[mg] > * > tr[mg]',\n    templateUrl: './table-row.component.html',\n    styleUrl: './table-row.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class.baseline]': 'baseline()',\n    },\n})\nexport class MagmaTableRow implements AfterViewInit, AfterViewChecked {\n    host?: MagmaTableGroup;\n    table?: MagmaTable;\n    protected readonly cd = inject(ChangeDetectorRef);\n    readonly el = inject(ElementRef<HTMLTableRowElement>);\n\n    readonly baseline = input(false, { transform: booleanAttribute });\n\n    readonly inputs = contentChildren(MagmaTableCell);\n\n    index = 0;\n    _data!: any[];\n\n    ngAfterViewInit(): void {\n        if (this.host) {\n            this.index = this.host.inputs().indexOf(this);\n            this._data = this.host._data![this.index] = [];\n\n            for (const input of this.inputs()) {\n                this.host._data![this.index][input.index] = {\n                    cell: input,\n                    row: this,\n                    textContent: input.el.nativeElement.textContent,\n                };\n                input.cd.detectChanges();\n            }\n        }\n        this.cd.detectChanges();\n    }\n\n    ngAfterViewChecked(): void {\n        if (this.host) {\n            this.index = this.host.inputs().indexOf(this);\n        }\n        if (this.inputs()?.length) {\n            this.inputs().forEach(e => {\n                e.host ??= this;\n                e.table ??= this.table;\n                e.row = this.index;\n            });\n        }\n        this.ngAfterViewInit();\n    }\n}\n","<ng-content select=\"td[mg], th[mg]\" />\n","import {\n    AfterViewChecked,\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    HostListener,\n    booleanAttribute,\n    contentChildren,\n    inject,\n    input,\n} from '@angular/core';\n\nimport { MagmaTableRow } from './table-row.component';\nimport { MagmaTable, MagmaTableData } from './table.component';\n\n@Component({\n    selector: 'table[mg] > thead[mg], table[mg] > tbody[mg],table[mg] > tfoot[mg]',\n    templateUrl: './table-group.component.html',\n    styleUrl: './table-group.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class.sticky]': 'sticky()',\n        '[class.baseline]': 'baseline()',\n    },\n})\nexport class MagmaTableGroup implements AfterViewChecked {\n    host?: MagmaTable;\n    protected readonly el = inject(ElementRef<HTMLTableSectionElement>);\n    protected readonly tag: 'thead' | 'tbody' | 'tfoot' = this.el.nativeElement.tagName.toLowerCase();\n\n    readonly sticky = input(false, { transform: booleanAttribute });\n    readonly baseline = input(false, { transform: booleanAttribute });\n\n    _data?: MagmaTableData[][] = [];\n\n    readonly inputs = contentChildren(MagmaTableRow);\n\n    @HostListener('mouseout')\n    mouseOut() {\n        if (this.host) {\n            this.host.clearOver();\n        }\n    }\n\n    ngAfterViewChecked(): void {\n        if (this.inputs()?.length) {\n            this.inputs().forEach(e => {\n                e.host ??= this;\n                if (this.host) {\n                    e.table ??= this.host;\n                    this._data = this.host._data[this.tag];\n                }\n            });\n        }\n    }\n}\n","<ng-content select=\"tr[mg]\" />\n","import {\n    AfterViewChecked,\n    ChangeDetectionStrategy,\n    Component,\n    booleanAttribute,\n    contentChildren,\n    input,\n} from '@angular/core';\n\nimport { MagmaTableCell } from './table-cell.component';\nimport { MagmaTableGroup } from './table-group.component';\nimport { MagmaTableRow } from './table-row.component';\n\nexport type MagmaTableData = {\n    cell: MagmaTableCell;\n    row: MagmaTableRow;\n    textContent: string;\n};\n\n@Component({\n    selector: 'table[mg]',\n    templateUrl: './table.component.html',\n    styleUrl: './table.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class.baseline]': 'baseline()',\n    },\n})\nexport class MagmaTable implements AfterViewChecked {\n    readonly baseline = input(false, { transform: booleanAttribute });\n    readonly hover = input(false, { transform: booleanAttribute });\n    readonly hoverCol = input(false, { transform: booleanAttribute });\n    readonly hoverRow = input(false, { transform: booleanAttribute });\n    readonly hoverCell = input(false, { transform: booleanAttribute });\n\n    _data: { thead: MagmaTableData[][]; tbody: MagmaTableData[][]; tfoot: MagmaTableData[][] } = {\n        thead: [],\n        tbody: [],\n        tfoot: [],\n    };\n\n    readonly inputs = contentChildren(MagmaTableGroup);\n\n    over(line: number, col: number, isTD: boolean) {\n        if (this.hover() || this.hoverCol()) {\n            this._data.thead.forEach((row, _indexR) => {\n                row.forEach((cell, indexC) => {\n                    cell.cell.hoverLink.set(indexC === col);\n                });\n            });\n            this._data.tfoot.forEach((row, _indexR) => {\n                row.forEach((cell, indexC) => {\n                    cell.cell.hoverLink.set(indexC === col);\n                });\n            });\n        }\n        if (this.hover() || this.hoverCol() || this.hoverRow() || this.hoverCell()) {\n            this._data.tbody.forEach((row, indexR) => {\n                row.forEach((cell, indexC) => {\n                    if (this.hover() || this.hoverCell()) {\n                        cell.cell.hover.set(indexR === line && indexC === col && isTD);\n                    }\n                    if (this.hover() || (this.hoverCol() && this.hoverRow())) {\n                        cell.cell.hoverLink.set((isTD && indexR === line) || indexC === col);\n                    } else if (this.hoverRow()) {\n                        cell.cell.hoverLink.set(indexR === line && isTD);\n                    } else if (this.hoverCol()) {\n                        cell.cell.hoverLink.set(indexC === col);\n                    }\n                });\n            });\n        }\n    }\n\n    clearOver() {\n        [this._data.thead, this._data.tbody, this._data.tfoot].forEach(e =>\n            e.forEach((row, _indexR) =>\n                row.forEach(cell => {\n                    cell.cell.hover.set(false);\n                    cell.cell.hoverLink.set(false);\n                }),\n            ),\n        );\n    }\n\n    ngAfterViewChecked(): void {\n        if (this.inputs()?.length) {\n            this.inputs().forEach(e => {\n                e.host ??= this;\n            });\n        }\n    }\n}\n","<ng-content select=\"thead[mg]\" />\n<ng-content select=\"tbody[mg]\" />\n<ng-content select=\"tfoot[mg]\" />\n","import { NgModule } from '@angular/core';\n\nimport { MagmaTableCell } from './table-cell.component';\nimport { MagmaTableGroup } from './table-group.component';\nimport { MagmaTableRow } from './table-row.component';\nimport { MagmaTable } from './table.component';\n\nconst MagmaTableComponent = [MagmaTable, MagmaTableGroup, MagmaTableRow, MagmaTableCell];\n\n@NgModule({\n    imports: [MagmaTableComponent],\n    exports: [MagmaTableComponent],\n})\nexport class MagmaTableModule {}\n","import { CdkPortal } from '@angular/cdk/portal';\nimport { Directive, booleanAttribute, inject, input, output } from '@angular/core';\n\n@Directive({\n    selector: 'ng-template[mg-walkthrough-step]',\n    providers: [{ provide: CdkPortal }],\n})\nexport class MagmaWalkthroughStep extends CdkPortal {\n    portal = inject(CdkPortal);\n\n    name = input.required<string>();\n    group = input<string>();\n    selector = input.required<string>();\n    previousStep = input<string>();\n    previousButtonName = input<string>('Previous');\n    nextStep = input<string>();\n    nextButtonName = input<string>('Next');\n    close = input(false, { transform: booleanAttribute });\n    closeButtonName = input<string>('Close');\n    showElement = input(false, { transform: booleanAttribute });\n    clickElementOrigin = input(false, { transform: booleanAttribute });\n    clickElementActive = input(false, { transform: booleanAttribute });\n    backdropAction = input<'none' | 'close' | 'next' | 'clickElement'>();\n\n    start = output<void>();\n    clickElement = output<void>();\n    clickNext = output<void>();\n    clickPrevious = output<void>();\n    clickClose = output<void>();\n}\n","import { ConnectedOverlayPositionChange, ConnectionPositionPair } from '@angular/cdk/overlay';\nimport { PortalModule } from '@angular/cdk/portal';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    HostListener,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    SimpleChanges,\n    inject,\n    input,\n    signal,\n    viewChild,\n} from '@angular/core';\n\nimport { debounceTime, fromEvent } from 'rxjs';\n\nimport { MagmaWalkthroughStep } from './walkthrough-step.directive';\nimport { MagmaWalkthrough } from './walkthrough.component';\n\nimport { MagmaLimitFocusDirective, MagmaLimitFocusFirstDirective } from '../../directives/limit-focus.directive';\nimport { Subscriptions } from '../../utils/subscriptions';\n\n@Component({\n    selector: 'mg-walkthrough-content',\n    templateUrl: './walkthrough-content.component.html',\n    styleUrl: './walkthrough-content.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [PortalModule, MagmaLimitFocusFirstDirective],\n    hostDirectives: [MagmaLimitFocusDirective],\n})\nexport class MagmaWalkthroughContent implements OnInit, OnChanges, OnDestroy {\n    private readonly focusElement = inject(MagmaLimitFocusDirective);\n\n    readonly host = input.required<MagmaWalkthrough>();\n    readonly portal = input.required<MagmaWalkthroughStep>();\n    readonly element = input.required<HTMLElement | null>();\n    readonly position = input<ConnectedOverlayPositionChange>();\n\n    private elementContent = viewChild.required<ElementRef<HTMLDialogElement>>('element');\n\n    private subs = Subscriptions.instance();\n    clone: HTMLElement | undefined;\n\n    protected top = signal(false);\n    protected right = signal(false);\n\n    ngOnInit() {\n        this.subs.push(\n            fromEvent(window, 'resize')\n                .pipe(debounceTime(10))\n                .subscribe(() => {\n                    this.resize();\n                }),\n        );\n    }\n\n    resize() {\n        const element = this.element();\n        if (this.clone && element) {\n            const style = this.clone.style;\n            if (style.width !== element.offsetWidth + 'px') {\n                style.width = element.offsetWidth + 'px';\n            }\n            if (style.margin !== '0px') {\n                style.margin = '0px';\n            }\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        const position = changes['position'];\n        if (position) {\n            this.testPosition(position.currentValue.connectionPair);\n        }\n\n        if (changes['element']) {\n            const target = this.elementContent().nativeElement;\n\n            const portal = this.portal();\n            portal.start.emit();\n\n            if (portal.showElement()) {\n                // clean before clone\n                while (target.lastElementChild) {\n                    target.removeChild(target.lastElementChild);\n                }\n                const element = this.element();\n                if (element) {\n                    setTimeout(() => {\n                        const clone = element.cloneNode(true) as HTMLElement;\n                        clone.style.width = element.offsetWidth + 'px';\n                        clone.style.margin = '0px';\n                        this.clone = clone;\n\n                        // click on original element\n                        const actionOrigin = portal.clickElementOrigin();\n                        if (target && actionOrigin) {\n                            clone.addEventListener('click', () => element.click());\n                        }\n\n                        // click on copy element\n                        const action = portal.clickElementActive();\n                        if (action) {\n                            clone.addEventListener('click', () => portal.clickElement.emit());\n                        }\n\n                        target.appendChild(clone);\n                    });\n                }\n            } else {\n                target.textContent = '';\n            }\n        }\n    }\n\n    next() {\n        const portal = this.portal();\n        portal.clickNext.emit();\n        setTimeout(() => {\n            this.host().changeStep(portal.nextStep(), portal.group());\n        }, 10);\n    }\n\n    previous() {\n        const portal = this.portal();\n        portal.clickPrevious.emit();\n        setTimeout(() => {\n            this.host().changeStep(portal.previousStep(), portal.group());\n        }, 10);\n    }\n\n    close() {\n        this.portal().clickClose.emit();\n        setTimeout(() => {\n            this.host().close();\n        }, 10);\n    }\n\n    update() {\n        setTimeout(() => {\n            this.focusElement.focus();\n        });\n    }\n\n    ngOnDestroy(): void {\n        this.subs.clear();\n    }\n\n    testPosition(connectionPair: ConnectionPositionPair) {\n        this.right.set(connectionPair.originX === 'end');\n        this.top.set(connectionPair.originY === 'top');\n    }\n\n    @HostListener('document:keydown.escape')\n    escape() {\n        const portal = this.portal();\n        if (portal.close()) {\n            this.close();\n        } else if (portal.nextStep()) {\n            this.next();\n        }\n    }\n}\n","<div class=\"component\" #element [class.top]=\"top()\" [class.right]=\"right()\"></div>\n<div class=\"content\" role=\"dialog\">\n  <div>\n    <ng-template [cdkPortalOutlet]=\"portal()\" (attached)=\"update()\" />\n  </div>\n\n  <nav class=\"buttons\">\n    @if (portal().previousStep()) {\n      <button class=\"previous\" (click)=\"previous()\" (window:keydown.arrowLeft)=\"previous()\">\n        {{ portal().previousButtonName() }}\n      </button>\n    }\n    @if (portal().nextStep()) {\n      <button class=\"next\" (click)=\"next()\" (window:keydown.arrowRight)=\"next()\" limitFocusFirst=\"1\">\n        {{ portal().nextButtonName() }}\n      </button>\n    }\n    @if (portal().close()) {\n      <button class=\"close\" (click)=\"close()\" limitFocusFirst=\"2\">\n        {{ portal().closeButtonName() }}\n      </button>\n    }\n  </nav>\n</div>\n","import { ConnectedPosition, FlexibleConnectedPositionStrategy, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ChangeDetectionStrategy, Component, ComponentRef, contentChildren, inject } from '@angular/core';\n\nimport { MagmaWalkthroughContent } from './walkthrough-content.component';\nimport { MagmaWalkthroughStep } from './walkthrough-step.directive';\n\nexport const magmaWalkthroughConnectedPosition: ConnectedPosition[] = [\n    { originX: 'start', originY: 'bottom', overlayX: 'start', overlayY: 'top', offsetY: 10 },\n    { originX: 'start', originY: 'top', overlayX: 'start', overlayY: 'bottom', offsetY: -10 },\n    { originX: 'end', originY: 'bottom', overlayX: 'end', overlayY: 'top', offsetY: 10 },\n    { originX: 'end', originY: 'top', overlayX: 'end', overlayY: 'bottom', offsetY: -10 },\n];\n\n@Component({\n    selector: 'mg-walkthrough',\n    template: '',\n    exportAs: 'walkthrough',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MagmaWalkthrough {\n    private content: ComponentRef<MagmaWalkthroughContent> | undefined = undefined;\n    private overlayRef: OverlayRef | undefined = undefined;\n    private positionStrategy: FlexibleConnectedPositionStrategy | undefined = undefined;\n\n    overlayComponent: MagmaWalkthroughContent | undefined = undefined;\n\n    private readonly overlay = inject(Overlay);\n    stepsDirective = contentChildren(MagmaWalkthroughStep);\n\n    private portal: MagmaWalkthroughStep | undefined = undefined;\n\n    start(params?: { group?: string }) {\n        const firstIndex = this.stepsDirective().findIndex(\n            step => step.group() === params?.group && step.name() === 'first',\n        );\n\n        if (firstIndex !== -1) {\n            this.portal = this.stepsDirective()[firstIndex];\n\n            const element = document.querySelector(this.portal.selector());\n            if (element) {\n                element.scrollIntoView({ behavior: 'instant', block: 'center', inline: 'center' });\n                const overlayRef = this.overlay.create({\n                    hasBackdrop: true,\n                    backdropClass: 'walkthrough-backdrop',\n                    panelClass: 'overlay-panel',\n                    scrollStrategy: this.overlay.scrollStrategies.block(),\n                    positionStrategy: this.overlay\n                        .position()\n                        .flexibleConnectedTo(element)\n                        .withPositions(magmaWalkthroughConnectedPosition),\n                });\n                overlayRef.backdropClick().subscribe(this.backdropAction);\n                const userProfilePortal = new ComponentPortal(MagmaWalkthroughContent);\n                const component = overlayRef.attach(userProfilePortal);\n                component.setInput('host', this);\n                component.setInput('portal', this.portal);\n                component.setInput('element', element as HTMLElement);\n\n                this.overlayComponent = component.instance;\n\n                this.positionStrategy = overlayRef.getConfig().positionStrategy as FlexibleConnectedPositionStrategy;\n\n                this.positionStrategy.positionChanges.subscribe(position => {\n                    component.setInput('position', position);\n                });\n\n                this.content = component;\n                this.overlayRef = overlayRef;\n\n                setTimeout(() => {\n                    this.overlayRef?.updatePosition();\n                }, 10);\n            }\n        }\n    }\n    changeStep(stepName?: string, group?: string) {\n        if (!stepName) {\n            this.close();\n            return;\n        }\n\n        const firstIndex = this.stepsDirective().findIndex(step => group === step.group() && stepName === step.name());\n        if (this.content && firstIndex !== -1) {\n            this.portal = this.stepsDirective()[firstIndex];\n            this.content.setInput('portal', this.portal);\n\n            const element = document.querySelector(this.portal.selector());\n            if (element && this.positionStrategy) {\n                element.scrollIntoView({ behavior: 'instant', block: 'center', inline: 'center' });\n                this.positionStrategy.setOrigin(element);\n                this.positionStrategy.apply();\n                this.positionStrategy.reapplyLastPosition();\n            }\n\n            this.content.setInput('element', element as HTMLElement | null);\n\n            setTimeout(() => {\n                this.overlayRef?.updatePosition();\n            }, 10);\n        }\n    }\n\n    close() {\n        this.overlayRef?.dispose();\n        this.content = undefined;\n        this.overlayRef = undefined;\n        this.overlayComponent = undefined;\n    }\n\n    private backdropAction() {\n        switch (this.portal?.backdropAction()) {\n            case 'close':\n                this.close();\n                break;\n            case 'next':\n                if (this.portal.nextStep()) {\n                    this.changeStep(this.portal.nextStep(), this.portal.group());\n                }\n                break;\n            case 'clickElement':\n                if (this.portal.clickElementActive() || this.portal.clickElementOrigin()) {\n                    this.content?.instance.clone?.click();\n                }\n                break;\n            default:\n        }\n    }\n}\n","import { Directive, OnInit, output } from '@angular/core';\n\n@Directive({\n    selector: '[ngInit]',\n})\nexport class MagmaNgInitDirective implements OnInit {\n    ngInit = output<void>();\n\n    ngOnInit() {\n        this.ngInit.emit();\n    }\n}\n","import { MagmaWindow, MagmaWindowInfos } from '../../public-api';\n\nexport type ResizeDirection =\n    | 'left'\n    | 'right'\n    | 'top'\n    | 'bottom'\n    | 'top-left'\n    | 'top-right'\n    | 'bottom-right'\n    | 'bottom-left';\n\nexport class MagmaResizeElement {\n    animation = true;\n    x: [number, number];\n    y: [number, number];\n\n    constructor(params: { x: [number, number]; y: [number, number] }) {\n        this.x = params.x;\n        this.y = params.y;\n    }\n\n    update(_resize: ResizeDirection, _data: [number, number]) {}\n}\n\nexport interface MagmaResizeHostElement {\n    widthElementNumber: number;\n    heightElementNumber: number;\n    elementSize: number; // px\n\n    select(window: MagmaWindowInfos | MagmaWindow): void;\n    remove(window: MagmaWindowInfos | MagmaWindow): void;\n}\n","import { CdkDrag, Point } from '@angular/cdk/drag-drop';\nimport { Directive, ElementRef, HostListener, booleanAttribute, inject, input } from '@angular/core';\n\nimport { MagmaResizeElement, MagmaResizeHostElement, ResizeDirection } from './resizer';\n\n@Directive({\n    selector: '[resizer]',\n    host: {\n        '[class.ew-resize]': \"resize === 'left' || resize === 'right'\",\n        '[class.ns-resize]': \"resize === 'top' || resize === 'bottom'\",\n        '[class.nw-resize]': \"resize === 'top-left' || resize === 'bottom-right'\",\n        '[class.ne-resize]': \"resize === 'top-right' || resize === 'bottom-left'\",\n    },\n})\nexport class MagmaResize {\n    private readonly ref = inject<ElementRef<HTMLElement>>(ElementRef);\n    private readonly cdkDrag = inject(CdkDrag, { optional: true });\n\n    readonly resizer = input.required<MagmaResizeElement>();\n    readonly resizerHost = input<MagmaResizeHostElement>();\n    readonly resizerDisabled = input(false, { transform: booleanAttribute });\n    readonly resizerInit = input<Point>({ x: 0, y: 0 });\n\n    resize?: ResizeDirection;\n    resizeActive?: {\n        mousePosInit: [number, number];\n        itemSource: MagmaResizeElement;\n    };\n\n    private timer: any;\n\n    @HostListener('mousedown', ['$event'])\n    mousedown(event: MouseEvent) {\n        if (this.resize && !this.resizerDisabled()) {\n            this.resizeActive = {\n                mousePosInit: [event.x, event.y],\n                itemSource: new MagmaResizeElement({ x: [...this.resizer().x], y: [...this.resizer().y] }),\n            };\n        }\n    }\n\n    @HostListener('window:mouseup')\n    mouseupWindow() {\n        if (this.resize && this.resizeActive) {\n            this.resizeActive = undefined;\n        }\n    }\n\n    @HostListener('window:mousemove', ['$event'])\n    mouseoverWindow(event: MouseEvent) {\n        if (!this.resizerDisabled()) {\n            const resizeActive = this.resizeActive;\n            const resizes = this.resize?.split('-') as ResizeDirection[];\n            const host = this.resizerHost();\n\n            if (resizes) {\n                for (const resize of resizes) {\n                    if (host && resizeActive && resize) {\n                        const [changeX, changeY] = [\n                            Math.round((resizeActive.mousePosInit[0] - event.x) / host.elementSize),\n                            Math.round((resizeActive.mousePosInit[1] - event.y) / host.elementSize),\n                        ];\n\n                        let data: [number, number] | undefined;\n                        const itemSource = resizeActive.itemSource;\n\n                        if (resize === 'top') {\n                            data = [Math.max(itemSource.y[0] - changeY, this.resizerInit().y), itemSource.y[1]];\n                        }\n                        if (resize === 'bottom') {\n                            data = [\n                                itemSource.y[0],\n                                Math.min(\n                                    itemSource.y[1] - changeY,\n                                    host.heightElementNumber + this.resizerInit().y - itemSource.y[0],\n                                ),\n                            ];\n                        }\n                        if (resize === 'left') {\n                            data = [Math.max(itemSource.x[0] - changeX, this.resizerInit().x), itemSource.x[1]];\n                        }\n                        if (resize === 'right') {\n                            data = [\n                                itemSource.x[0],\n                                Math.min(\n                                    itemSource.x[1] - changeX,\n                                    host.widthElementNumber + this.resizerInit().x - itemSource.x[0],\n                                ),\n                            ];\n                        }\n\n                        if (this.resize) {\n                            clearTimeout(this.timer);\n                        }\n\n                        if (data) {\n                            this.resizer().animation = false;\n                            this.resizer().update(resize, data);\n                            setTimeout(() => {\n                                this.resizer().animation = true;\n                            }, 10);\n                        }\n                    }\n                }\n            }\n        }\n    }\n\n    @HostListener('mousemove', ['$event'])\n    mouseover(event: MouseEvent) {\n        if (!this.resizeActive && !this.resizerDisabled()) {\n            const element = this.ref.nativeElement;\n            const rect = element.getBoundingClientRect();\n\n            const x = event.clientX - rect.left;\n            const y = event.clientY - rect.top;\n\n            if (x < 5) {\n                if (y < 5) {\n                    this.resize = 'top-left';\n                } else if (element.offsetHeight - y < 5) {\n                    this.resize = 'bottom-left';\n                } else {\n                    this.resize = 'left';\n                }\n            } else if (element.offsetWidth - x < 5) {\n                if (y < 5) {\n                    this.resize = 'top-right';\n                } else if (element.offsetHeight - y < 5) {\n                    this.resize = 'bottom-right';\n                } else {\n                    this.resize = 'right';\n                }\n            } else if (y < 5) {\n                this.resize = 'top';\n            } else if (element.offsetHeight - y < 5) {\n                this.resize = 'bottom';\n            } else {\n                this.resize = undefined;\n            }\n\n            if (this.resize) {\n                clearTimeout(this.timer);\n            }\n\n            if (this.cdkDrag) {\n                this.cdkDrag.disabled = this.resize !== undefined;\n            }\n            event.stopPropagation();\n        }\n    }\n\n    @HostListener('mouseout')\n    mouseout() {\n        if (this.resize) {\n            this.timer = setTimeout(() => {\n                this.resize = undefined;\n                this.resizeActive = undefined;\n                if (this.cdkDrag) {\n                    this.cdkDrag.disabled = false;\n                }\n            }, 50);\n        }\n    }\n}\n","import { CdkDrag, CdkDragEnd, CdkDragHandle, Point } from '@angular/cdk/drag-drop';\nimport { OverlayRef } from '@angular/cdk/overlay';\nimport { NgComponentOutlet } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    Directive,\n    ElementRef,\n    HostListener,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    SimpleChanges,\n    Type,\n    booleanAttribute,\n    computed,\n    inject,\n    input,\n    model,\n    output,\n    signal,\n    viewChildren,\n} from '@angular/core';\n\nimport { MagmaLimitFocusDirective } from '../../directives/limit-focus.directive';\nimport { MagmaNgInitDirective } from '../../directives/ng-init.directive';\nimport { MagmaResizeElement, MagmaResizeHostElement, ResizeDirection } from '../../directives/resizer';\nimport { MagmaResize } from '../../directives/resizer.directive';\n\nexport interface MagmaWindowInitParams {\n    inputs?: Record<string, any>;\n    id?: string;\n    position?: 'default' | 'center' | { x: number; y: number };\n    zoneSelector?: string;\n    over?: boolean;\n    fixed?: boolean;\n    bar?: {\n        active?: boolean;\n        title?: string;\n        buttons?: boolean;\n    };\n    size?: {\n        lock?: boolean;\n        width?: { min?: string; init?: string; max?: string };\n        height?: { min?: string; init?: string; max?: string };\n    };\n}\n\nexport interface MagmaWindowInfos extends MagmaWindowInitParams {\n    component: Type<any>;\n    id: string;\n    overlayRef?: OverlayRef;\n    index: number;\n}\n\n@Directive()\nexport abstract class AbstractWindowComponent {\n    parent = input.required<MagmaWindow>();\n\n    close() {\n        this.parent().onClose.emit();\n    }\n}\n\n@Component({\n    selector: 'mg-window',\n    templateUrl: './window.component.html',\n    styleUrl: './window.component.scss',\n    host: {\n        '[style.--index]': '_index()',\n    },\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CdkDrag, CdkDragHandle, MagmaLimitFocusDirective, NgComponentOutlet, MagmaResize, MagmaNgInitDirective],\n})\nexport class MagmaWindow extends MagmaResizeElement implements OnInit, OnChanges, OnDestroy {\n    protected readonly elementRef = inject(ElementRef);\n\n    protected readonly cdkDrag = viewChildren(CdkDrag);\n    protected readonly elementWin = viewChildren<ElementRef<HTMLDivElement>>('element');\n\n    /** for mg-container-zone */\n    readonly component = input<MagmaWindowInfos>();\n\n    /** for mg-container-container */\n    index = 0;\n    readonly zoneSelector = input<string>();\n    readonly position = input<'default' | 'center' | { x: number; y: number }>();\n    readonly bar = input(undefined, { transform: booleanAttribute });\n    readonly barTitle = input<string>(undefined, { alias: 'bar-title' });\n    readonly barButtons = input(undefined, { alias: 'bar-buttons', transform: booleanAttribute });\n    readonly width = input<string>();\n    readonly minWidth = input<string>(undefined, { alias: 'min-width' });\n    readonly maxWidth = input<string>(undefined, { alias: 'max-width' });\n    readonly height = input<string>();\n    readonly minHeight = input<string>(undefined, { alias: 'min-height' });\n    readonly maxHeight = input<string>(undefined, { alias: 'max-height' });\n    readonly fixed = input(undefined, { transform: booleanAttribute });\n    readonly over = input(undefined, { transform: booleanAttribute });\n\n    readonly resizerHost = model<MagmaResizeHostElement>();\n    readonly isOpen = model(false);\n\n    readonly onClose = output();\n\n    protected readonly center = signal(false);\n    protected readonly fullscreen = signal(false);\n\n    protected initPosition: Point = { x: 0, y: 0 };\n    private destroyed = false;\n\n    protected _index = computed(() => {\n        return (\n            (this.component()?.index || this.index || 0) +\n            (this.over() || this.component()?.over ? 1000 : 0) +\n            (this.fullscreen() ? 10000 : 0)\n        );\n    });\n\n    constructor() {\n        super({ x: [0, 0], y: [0, 0] });\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['position']) {\n            this.updatePosition();\n        }\n    }\n\n    ngOnInit(): void {\n        let { x, y } = this.currentPosition();\n        this.initPosition = { x, y };\n        this.updatePosition();\n    }\n\n    currentPosition() {\n        const rectZone = this.getZone()?.getBoundingClientRect();\n        const element = this.elementRef.nativeElement;\n        const rectElem = element.getBoundingClientRect();\n\n        let x = 0;\n        let y = 0;\n\n        if (rectZone) {\n            x = rectZone.left - rectElem.left;\n            y = rectZone.top - rectElem.top;\n        }\n\n        return { x, y };\n    }\n\n    updatePosition() {\n        if (this.destroyed) {\n            return;\n        }\n\n        const element = this.elementRef.nativeElement;\n        const zone = this.getZone();\n        const dragInstance = this.cdkDrag()?.[0];\n\n        const position = this.position() || this.component()?.position;\n\n        let { x, y } = this.initPosition;\n\n        if (position === 'center') {\n            x += ((zone?.offsetWidth ?? window.innerWidth) - element.offsetWidth) / 2;\n            y += ((zone?.offsetHeight ?? window.innerHeight) - element.offsetHeight) / 2;\n            this.x = [x, element.offsetWidth];\n            this.y = [y, element.offsetHeight];\n            dragInstance?.setFreeDragPosition({ x, y });\n        } else if (position && typeof position === 'object' && 'x' in position && 'y' in position) {\n            this.x = [x + position.x, element.offsetWidth];\n            this.y = [y + position.y, element.offsetHeight];\n            dragInstance?.setFreeDragPosition({ x: x + position.x, y: y + position.y });\n        } else {\n            this.x = [0, element.offsetWidth];\n            this.y = [0, element.offsetHeight];\n            dragInstance?.setFreeDragPosition({ x: 0, y: 0 });\n        }\n    }\n\n    drag(drag: CdkDragEnd) {\n        const { x, y } = drag.distance;\n        const element = this.elementWin()?.[0].nativeElement;\n        const zone = this.getZone();\n        this.x = [\n            Math.min(\n                Math.max(this.x[0] + x, this.initPosition.x),\n                (zone?.offsetWidth ?? window.innerWidth) - element.offsetWidth + this.initPosition.x,\n            ),\n            element.offsetWidth,\n        ];\n        this.y = [\n            Math.min(\n                Math.max(this.y[0] + y, this.initPosition.y),\n                (zone?.offsetHeight ?? window.innerHeight) - element.offsetHeight + this.initPosition.y,\n            ),\n            element.offsetHeight,\n        ];\n    }\n\n    open() {\n        this.isOpen.set(true);\n    }\n\n    winInit() {\n        setTimeout(() => {\n            this.updatePosition();\n        });\n    }\n\n    change() {\n        this.fullscreen.set(!this.fullscreen());\n        const element = this.elementWin()[0]?.nativeElement;\n\n        if (this.fullscreen()) {\n            let { x, y } = this.initPosition;\n            this.cdkDrag()[0].setFreeDragPosition({ x, y });\n\n            const zone = this.getZone();\n            element.style.width = (zone?.offsetWidth ?? window.innerWidth) + 'px';\n            element.style.height = (zone?.offsetHeight ?? window.innerHeight) + 'px';\n        } else {\n            this.cdkDrag()[0].setFreeDragPosition({ x: this.x[0], y: this.y[0] });\n            element.style.width = this.x[1] + 'px';\n            element.style.height = this.y[1] + 'px';\n        }\n    }\n\n    close() {\n        this.resizerHost()?.remove(this);\n        this.isOpen.set(false);\n        this.onClose.emit();\n    }\n\n    @HostListener('mousedown')\n    mousedown() {\n        if (!this.component()) {\n            this.resizerHost()?.select(this);\n        }\n    }\n\n    private getZone() {\n        const component = this.component();\n        const zoneSelector = this.zoneSelector() || component?.zoneSelector;\n        return zoneSelector ? document.querySelector<HTMLElement>(zoneSelector) : null;\n    }\n\n    override update(resize: ResizeDirection, data: [number, number]): void {\n        const element = this.elementWin()[0]?.nativeElement;\n\n        switch (resize) {\n            case 'left':\n                if (data[0] > this.initPosition.x && element) {\n                    const size = this.x[0] - data[0] + this.x[1];\n                    element.style.width = size + 'px';\n                    if (size === element.offsetWidth) {\n                        this.x = [data[0], element.offsetWidth];\n                        this.cdkDrag()[0].setFreeDragPosition({ x: data[0], y: this.y[0] });\n                    }\n                }\n                break;\n            case 'right':\n                if (data[1] > this.initPosition.x && element) {\n                    element.style.width = data[1] + 'px';\n                    this.x = [this.x[0], element.offsetWidth];\n                }\n                break;\n            case 'top':\n                const size = this.y[0] - data[0] + this.y[1];\n                element.style.height = size + 'px';\n                if (data[0] > this.initPosition.y && size === element.offsetHeight) {\n                    this.y = [data[0], element.offsetHeight];\n                    this.cdkDrag()[0].setFreeDragPosition({ x: this.x[0], y: data[0] });\n                }\n                break;\n            case 'bottom':\n                if (data[1] > this.initPosition.y && element) {\n                    element.style.height = data[1] + 'px';\n                    this.y = [this.y[0], element.offsetHeight];\n                }\n                break;\n        }\n    }\n\n    protected withContext(inputs?: Record<string, any>): Record<string, any> & { parent: MagmaWindow } {\n        return { ...inputs, ...{ parent: this } };\n    }\n\n    ngOnDestroy(): void {\n        this.destroyed = true;\n    }\n}\n","@if (isOpen()) {\n  @let comp = component();\n  <div\n    #element\n    class=\"content\"\n    role=\"dialog\"\n    limitFocus\n    cdkDrag\n    [cdkDragDisabled]=\"fullscreen() || fixed() || comp?.fixed\"\n    (cdkDragEnded)=\"drag($event)\"\n    [cdkDragBoundary]=\"zoneSelector() || comp?.zoneSelector || 'body'\"\n    [resizer]=\"this\"\n    [resizerInit]=\"initPosition\"\n    [resizerHost]=\"resizerHost()\"\n    [resizerDisabled]=\"comp?.size?.lock || fixed() || comp?.fixed\"\n    [style.width]=\"width() || comp?.size?.width?.init\"\n    [style.min-width]=\"minWidth() || comp?.size?.width?.min\"\n    [style.max-width]=\"maxWidth() || comp?.size?.width?.max\"\n    [style.height]=\"height() || comp?.size?.height?.init\"\n    [style.min-height]=\"minHeight() || comp?.size?.height?.min\"\n    [style.max-height]=\"maxHeight() || comp?.size?.height?.max\"\n    (ngInit)=\"winInit()\"\n  >\n    <div class=\"window-main\">\n      @if (bar() || comp?.bar?.active) {\n        <div class=\"window-title-bar\" cdkDragHandle [cdkDragHandleDisabled]=\"fullscreen() || fixed() || comp?.fixed\">\n          @if (barTitle() || comp?.bar?.title) {\n            <div class=\"window-title-text\">\n              {{ barTitle() || comp?.bar?.title }}\n            </div>\n          }\n          @if (barButtons() || comp?.bar?.buttons) {\n            <div class=\"window-title-buttons\">\n              <button class=\"bar-resize\" (click)=\"change()\">\n                @if (fullscreen()) {\n                  <span class=\"icon-minimize-2\"></span>\n                } @else {\n                  <span class=\"icon-fullscreen\"></span>\n                }\n              </button>\n              <button class=\"bar-close\" (click)=\"close()\"><span class=\"icon-remove\"></span></button>\n            </div>\n          }\n        </div>\n      }\n      <ng-content />\n      @if (comp) {\n        <ng-container [ngComponentOutlet]=\"comp.component\" [ngComponentOutletInputs]=\"withContext(comp.inputs)\" />\n      }\n    </div>\n  </div>\n}\n","import {\n    AfterContentChecked,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    contentChildren,\n    inject,\n} from '@angular/core';\n\nimport { MagmaWindow } from './window.component';\n\nimport { MagmaResizeHostElement } from '../../directives/resizer';\n\n@Component({\n    selector: 'mg-windows-container',\n    templateUrl: './windows-container.component.html',\n    styleUrl: './windows-container.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MagmaWindowsContainer implements MagmaResizeHostElement, AfterContentChecked {\n    protected readonly windows = contentChildren(MagmaWindow, { descendants: true });\n\n    protected readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n    readonly cd = inject(ChangeDetectorRef);\n\n    heightElementNumber = 0;\n    widthElementNumber = 0;\n    elementSize = 1;\n\n    ngAfterContentChecked(): void {\n        this.heightElementNumber = this.element.nativeElement.offsetHeight;\n        this.widthElementNumber = this.element.nativeElement.offsetWidth;\n        const win = this.windows();\n        if (win?.length) {\n            win.forEach((element, index) => {\n                element.resizerHost.set(this);\n                element.index = index;\n            });\n        }\n    }\n\n    select(window: MagmaWindow) {\n        const index = window.index;\n        const win = this.windows();\n        win.forEach(window => {\n            if (window.index > index) {\n                window.index -= 1;\n            }\n        });\n        window.index = win.length - 1;\n    }\n\n    remove(window: MagmaWindow) {\n        const win = this.windows();\n        const index = win.indexOf(window);\n        if (index !== -1) {\n            win.slice(index, 1);\n        }\n    }\n}\n","<ng-content />\n","import { Directive, ElementRef, HostListener, inject, output } from '@angular/core';\n\n@Directive({\n    selector: '[clickOutside]',\n})\nexport class MagmaClickOutsideDirective {\n    readonly clickOutside = output<Event>();\n\n    private readonly elementRef = inject(ElementRef);\n\n    @HostListener('window:click', ['$event'])\n    onClick(event: Event) {\n        const clickedInside = this.elementRef.nativeElement.contains(event.target);\n        if (!clickedInside) {\n            this.clickOutside.emit(event);\n        }\n    }\n\n    @HostListener('window:dialog-click', ['$event'])\n    dialogClick(event: Event) {\n        this.onClick((event as CustomEvent<Event>).detail);\n    }\n}\n","import { Directive, OnDestroy, effect, inject, input, numberAttribute, output } from '@angular/core';\nimport { NgModel } from '@angular/forms';\n\nimport { Subject, Subscription } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, skip } from 'rxjs/operators';\n\n@Directive({\n    selector: '[ngModelChangeDebounced]',\n})\nexport class MagmaNgModelChangeDebouncedDirective implements OnDestroy {\n    /** Inject NgModel to access the control */\n    protected readonly ngModel = inject(NgModel);\n\n    /** Input for the debounce time (default: 500ms) */\n    readonly ngModelChangeDebounceTime = input(500, { transform: numberAttribute });\n    /** Output to emit the debounced value */\n    readonly ngModelChangeDebounced = output<any>();\n\n    // Subject to relay value changes and allow dynamic debounce\n    private valueChanges$ = new Subject<any>();\n    // Subscription to manage the debounced stream\n    private debouncedSubscription!: Subscription;\n\n    constructor() {\n        // Forward valueChanges to our subject\n        this.ngModel.control.valueChanges\n            .pipe(\n                skip(1), // Skip the initial value\n                distinctUntilChanged(), // Only emit when the value has changed\n            )\n            .subscribe(this.valueChanges$);\n\n        // Initialize the debounced subscription\n        this.setupDebouncedSubscription();\n\n        // React to changes in ngModelChangeDebounceTime\n        effect(() => {\n            this.setupDebouncedSubscription();\n        });\n    }\n\n    /**\n     *  Set up the debounced subscription with the current debounce time\n     */\n    private setupDebouncedSubscription() {\n        // Unsubscribe from the previous debounced subscription if it exists\n        if (this.debouncedSubscription) {\n            this.debouncedSubscription.unsubscribe();\n        }\n\n        // Create a new debounced subscription with the current debounce time\n        this.debouncedSubscription = this.valueChanges$\n            .pipe(debounceTime(this.ngModelChangeDebounceTime()))\n            .subscribe(value => {\n                this.ngModelChangeDebounced.emit(value);\n            });\n    }\n\n    /**\n     * Clean up subscriptions to avoid memory leaks\n     */\n    ngOnDestroy() {\n        this.debouncedSubscription.unsubscribe();\n        this.valueChanges$.complete();\n    }\n}\n","/**\n * return a value number string with a fix size\n * @param size value between 1 and 16 (default: 9)\n * @returns a string number\n */\nexport function randomNumber(size: number = 9) {\n    const limit = Math.max(Math.min(size, 16), 1);\n    return `${Math.trunc(Math.random() * Math.pow(10, limit))}`.padStart(limit, '0');\n}\n\n/**\n * test is this not a number\n * @param size value\n * @returns true if is not a number\n */\nexport function notANumber(value: any) {\n    return value === null || value === undefined || isNaN(value);\n}\n","export function objectsAreSame(\n    objA?: Record<string, any>,\n    objB?: Record<string, any>,\n    ignoreKeys: string[] = [],\n): boolean {\n    if (objA === objB) {\n        return true;\n    } else if (objA === undefined || objA === null || objB === undefined || objB === null) {\n        return false;\n    }\n\n    let areTheSame = true;\n\n    const isObject = (a: Record<string, any>, b: Record<string, any>) =>\n        typeof a === 'object' && !Array.isArray(a) && !!a && !!b;\n\n    const compareValues = (a: Record<string, any>, b: Record<string, any>) => {\n        if (Array.isArray(a)) {\n            if (Array.isArray(b)) {\n                let aCopy = [...a];\n                let bCopy = [...b];\n                if (a.length === b.length) {\n                    aCopy = aCopy.map(a => (typeof a === 'number' ? a : `${a}`));\n                    aCopy.sort();\n                    bCopy = bCopy.map(a => (typeof a === 'number' ? a : `${a}`));\n                    bCopy.sort();\n                    aCopy.forEach((ele, idx) => compareValues(ele, bCopy[idx]));\n                } else {\n                    areTheSame = false;\n                }\n            } else {\n                areTheSame = false;\n            }\n        } else if ((!isObject(a, b) && a !== b) || (isObject(a, b) && !objectsAreSame(a, b, ignoreKeys))) {\n            areTheSame = false;\n        }\n    };\n\n    const keysA = Object.entries(objA)\n        .filter(entry => !ignoreKeys.includes(entry[0]) && entry[1] !== undefined)\n        .map(e => e[0]);\n    const keysB = Object.entries(objB)\n        .filter(entry => !ignoreKeys.includes(entry[0]) && entry[1] !== undefined)\n        .map(e => e[0]);\n\n    if (keysA.length !== keysB.length) {\n        return false;\n    }\n\n    for (let key of keysA) {\n        if (!ignoreKeys.includes(key)) {\n            compareValues(objA[key], objB[key]);\n            if (!areTheSame) {\n                return false;\n            }\n        }\n    }\n\n    return areTheSame;\n}\n\nexport function objectNestedValue<T = any>(object: any, path: (string | number)[] | string): any {\n    if (typeof path === 'string') {\n        path = path !== '' ? path.split('.') : [];\n    }\n    return path.reduce((obj, key) => (obj ? obj[key] : undefined), object) as T;\n}\n\nexport function objectAssignNested(target: any, ...sources: any[]) {\n    sources.forEach(source => {\n        Object.keys(source).forEach(key => {\n            const sourceVal = source[key];\n            const targetVal = target[key];\n            target[key] =\n                typeof targetVal === 'object' && typeof sourceVal === 'object'\n                    ? objectAssignNested(targetVal, sourceVal)\n                    : sourceVal;\n        });\n    });\n    return target;\n}\n","import { notANumber } from './number';\nimport { objectNestedValue } from './object';\n\nimport { MagmaSortRule, MagmaSortRules } from '../directives/sortable.directive';\n\nexport type MagmaStringArray = string | MagmaStringArray[];\n\n/**\n * sort an array\n * @param sortable sortable array\n * @param ruleList rules\n * @param currentRuleOrder if false reverse order (default: true)\n */\nexport function sortWithRule<T = any>(\n    sortable: any[] | undefined,\n    ruleList: MagmaSortRules,\n    currentRuleOrder = true,\n): void {\n    if (Array.isArray(sortable) && sortable.length > 1) {\n        const rules =\n            typeof ruleList === 'string'\n                ? sortWithRuleFormater(ruleList)\n                : !Array.isArray(ruleList)\n                  ? [ruleList]\n                  : ruleList;\n\n        sortable.sort((a: T, b: T) => {\n            for (const rule of rules) {\n                if (rule && 'type' in rule && rule.type !== 'none') {\n                    let valA: any = undefined;\n                    let valB: any = undefined;\n                    for (const frag of rule.attr.split(',')) {\n                        valA ??= objectNestedValue(a, frag);\n                        valB ??= objectNestedValue(b, frag);\n                    }\n\n                    let test = 0;\n                    if (rule.type === 'string') {\n                        // Handle null/undefined by placing them at the end\n                        if ((valA === null || valA === undefined) && (valB === null || valB === undefined)) {\n                            test = 0;\n                        } else if (valA === null || valA === undefined) {\n                            return 1; // Always place invalid values at the end\n                        } else if (valB === null || valB === undefined) {\n                            return -1; // Always place invalid values at the end\n                        } else {\n                            test = valA.toString().localeCompare(valB.toString());\n                        }\n                    } else if (rule.type === 'translate') {\n                        test = rule\n                            .translate(rule.translateId.replace('%value%', valA || rule.default))\n                            .localeCompare(rule.translate(rule.translateId.replace('%value%', valB || rule.default)));\n                    } else if (rule.type === 'number') {\n                        // Handle null/undefined/NaN by placing them at the end\n                        if (notANumber(valA) && notANumber(valB)) {\n                            test = 0;\n                        } else if (notANumber(valA)) {\n                            return 1; // Always place invalid values at the end\n                        } else if (notANumber(valB)) {\n                            return -1; // Always place invalid values at the end\n                        } else {\n                            test = valA - valB;\n                        }\n                    } else if (rule.type === 'date') {\n                        const dateA = valA ? new Date(valA).getTime() : 0;\n                        const dateB = valB ? new Date(valB).getTime() : 0;\n                        test = (isNaN(dateA) ? 0 : dateA) - (isNaN(dateB) ? 0 : dateB);\n                    } else {\n                        test = `${valA}`.localeCompare(`${valB}`);\n                    }\n\n                    if (test !== 0) {\n                        return test * (currentRuleOrder ? 1 : -1);\n                    }\n                }\n            }\n            return 0;\n        });\n    }\n}\n\nfunction sortWithRuleFormater(rule: string): MagmaSortRule[] {\n    const rules: MagmaSortRule[] = [];\n    const list = rule.split(',');\n    list.forEach(item => {\n        const [, attr, type, init] = item\n            .replace('::', ':')\n            .match(/([^:]*)(?:\\:(string|number|date))?(?:\\:(asc|desc))?/) as [\n            string,\n            string,\n            ('string' | 'number' | 'date')?,\n            ('asc' | 'desc')?,\n        ];\n\n        rules.push({\n            attr,\n            type: type ?? 'string',\n            init: init ?? 'asc',\n        });\n    });\n    return rules;\n}\n\nexport function flattenedListItems(values: MagmaStringArray, pattern = /\\s*,\\s*/): string[] {\n    if (typeof values === 'string') {\n        values = values.split(pattern);\n    }\n    const list: any[] = [];\n    values?.flat(20).forEach((value: any) => {\n        if (typeof value === 'string' && value) {\n            list.push(...value.split(pattern));\n        }\n    });\n    return list;\n}\n","import {\n    Directive,\n    HostBinding,\n    NgModule,\n    OnChanges,\n    OnDestroy,\n    OnInit,\n    Renderer2,\n    SimpleChanges,\n    inject,\n    input,\n    output,\n} from '@angular/core';\n\nimport { MagmaClickEnterDirective } from './click-enter.directive';\n\nimport { MagmaInputCommon } from '../components/input/input-common';\nimport { sortWithRule } from '../utils/array';\n\n/**\n * * MagmaSortRule : rule object\n * * MagmaSortRule[] : list of rule\n * * string :\n *    * `path.in.object` for string\n *    * `path.in.object:number` with type number (string, number, date → default string)\n *    * `path.in.object:desc` order (asc, desc → default asc)\n *    * `path.in.object:number:desc` with type and order\n *    * `path.in.object.1,path.in.object.2:desc` multiple rules with `,` separator (without space)\n */\nexport type MagmaSortRules = MagmaSortRule | MagmaSortRule[] | string;\n\nexport type MagmaSortRule =\n    | {\n          /** @see MagmaSortRules \"string\" */\n          rules: string;\n          /** order on init (only first) */\n          init?: 'asc' | 'desc';\n      }\n    | {\n          /** type translate */\n          type: 'string' | 'number' | 'date';\n          /** path.in.object */\n          attr: string;\n          /** order on init (only first) */\n          init?: 'asc' | 'desc';\n      }\n    | {\n          /** type translate */\n          type: 'translate';\n          /** path.in.object */\n          attr: string;\n          /** translate method */\n          translate: (text: string) => string;\n          /** translate id */\n          translateId: string;\n          /** order on init (only first) */\n          init?: 'asc' | 'desc';\n          /** default value */\n          default?: string;\n      }\n    | {\n          /** no sort */\n          type: 'none';\n      }\n    | undefined;\n\n@Directive({\n    selector: '[sort-rule]',\n    hostDirectives: [MagmaClickEnterDirective],\n})\nexport class MagmaSortRuleDirective implements OnInit {\n    private sortable = inject(MagmaSortableDirective, { host: true });\n    private click = inject(MagmaClickEnterDirective);\n\n    sortRule = input<MagmaSortRules>(undefined, { alias: 'sort-rule' });\n\n    constructor() {\n        this.click.clickEnter.subscribe(() => {\n            this.onClick();\n        });\n    }\n\n    @HostBinding('class.sort-asc')\n    get classSortAsc() {\n        return this.sortable?.currentRuleOrder === true && this.sortable?.currentRule === this.sortRule();\n    }\n\n    @HostBinding('class.sort-desc')\n    get classSortDesc() {\n        return this.sortable?.currentRuleOrder === false && this.sortable?.currentRule === this.sortRule();\n    }\n\n    @HostBinding('class.sort-cell')\n    get classSortCell() {\n        return this.isNone();\n    }\n\n    sortOrder?: { order: boolean; rule: MagmaSortRule };\n\n    ngOnInit(): void {\n        const sortRule = this.sortRule();\n        if (sortRule && !this.isNone() && this.isInit()) {\n            this.sortable.sortWithRule(sortRule, this.isInit());\n        }\n    }\n\n    onClick() {\n        this.sortable.sortWithRule(this.sortRule());\n    }\n\n    private isNone() {\n        const rule = this.sortRule();\n        return rule && typeof rule !== 'string' && !Array.isArray(rule) && 'type' in rule\n            ? rule?.type === 'none'\n            : Array.isArray(rule) && rule[0] && 'type' in rule[0]\n              ? rule[0].type === 'none'\n              : false;\n    }\n\n    private isInit() {\n        const rule = this.sortRule();\n        return rule && typeof rule !== 'string' && !Array.isArray(rule) && 'type' in rule && rule?.type !== 'none'\n            ? rule.init\n            : Array.isArray(rule) && rule[0] && 'type' in rule[0] && rule[0]?.type !== 'none'\n              ? rule[0].init\n              : undefined;\n    }\n}\n\n@Directive({\n    selector: '[sortable]',\n    standalone: true,\n})\nexport class MagmaSortableDirective<T = any> implements OnInit, OnChanges, OnDestroy {\n    private readonly renderer = inject(Renderer2);\n\n    sortable = input.required<T[]>();\n\n    sortableFilterInput = input<HTMLInputElement | MagmaInputCommon | undefined>(undefined, {\n        alias: 'sortable-filter-input',\n    });\n\n    sortableFilter = input<((key: string, item: T, index: number) => boolean) | undefined>(undefined, {\n        alias: 'sortable-filter',\n    });\n\n    sortableChange = output<T[]>({ alias: 'sortable-change' });\n\n    currentRule?: MagmaSortRules;\n    currentRuleOrder = false;\n\n    private sortableComplete: T[] = [];\n    private inputListener?: () => void;\n    private input = '';\n\n    ngOnInit(): void {\n        const input = this.sortableFilterInput();\n        if (input) {\n            this.inputListener = this.renderer.listen(\n                input instanceof MagmaInputCommon ? input.inputElement : input,\n                'input',\n                (inputEvent: InputEvent) => {\n                    this.filter((inputEvent.target as HTMLInputElement).value);\n                },\n            );\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        const sortable = this.sortable();\n        if (changes['sortable'] && this.sortableFilterInput() && Array.isArray(sortable)) {\n            this.sortableComplete.splice(0, this.sortable.length);\n            this.sortableComplete.push(...sortable);\n            this.update();\n        }\n    }\n\n    update() {\n        const input = this.sortableFilterInput();\n        this.filter(input instanceof MagmaInputCommon ? input.getValue() : input?.value || '');\n    }\n\n    ngOnDestroy(): void {\n        this.inputListener?.();\n    }\n\n    sortWithRule(rule?: MagmaSortRules, order: 'asc' | 'desc' = 'asc') {\n        if (this.currentRule === rule) {\n            this.currentRuleOrder = !this.currentRuleOrder;\n        } else {\n            this.currentRule = rule;\n            this.currentRuleOrder = order === 'asc';\n        }\n        this.sortLines();\n    }\n\n    sortLines() {\n        this.sortLinesFromList(this.sortable());\n    }\n\n    /**\n     * Sort a specific list (useful when the signal input is not yet updated)\n     * @param list The list to sort\n     */\n    sortLinesFromList(list: T[]) {\n        sortWithRule(list, this.currentRule, this.currentRuleOrder);\n        this.sortableChange.emit(list);\n    }\n\n    private filter(input: string) {\n        const sortable = this.sortable();\n        if (this.input !== input && sortable && this.sortableComplete?.length && this.sortableFilter()) {\n            sortable.splice(0, sortable.length);\n            const result = !!input?.trim()\n                ? this.sortableComplete.filter((item, index) => this.sortableFilter()!(input, item, index))\n                : this.sortableComplete;\n            sortable.push(...result);\n            this.sortLines();\n            this.input = input;\n        }\n    }\n}\n\nconst MagmaSortable = [MagmaSortableDirective, MagmaSortRuleDirective];\n\n@NgModule({\n    imports: [MagmaSortable],\n    exports: [MagmaSortable],\n})\nexport class MagmaSortableModule {}\n","import { ConnectedPosition, Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport {\n    Component,\n    ComponentRef,\n    Directive,\n    ElementRef,\n    HostListener,\n    OnDestroy,\n    computed,\n    effect,\n    inject,\n    input,\n    numberAttribute,\n} from '@angular/core';\n\nconst connectedPosition: ConnectedPosition[] = [\n    { originX: 'center', originY: 'bottom', overlayX: 'center', overlayY: 'top' },\n    { originX: 'center', originY: 'top', overlayX: 'center', overlayY: 'bottom' },\n];\n\nlet index = 0;\n\n@Component({\n    template: '<span [id]=\"describedBy()\">{{ text() }}</span>',\n    styles: [\n        `\n            :host {\n                display: block;\n                position: relative;\n            }\n\n            span {\n                display: block;\n                position: relative;\n                top: -15px;\n                opacity: 0;\n                animation: tooltip-slide 0.18s ease-out 0.5s;\n                animation-fill-mode: forwards;\n                box-shadow: 2px 2px 5px var(--tooltip-shadow-color);\n                border: 1px solid var(--tooltip-border-color);\n                background: var(--tooltip-background);\n                padding: 6px;\n                color: var(--tooltip-text-color);\n                white-space: pre-wrap;\n            }\n\n            @keyframes tooltip-slide {\n                0% {\n                    top: -15px;\n                    opacity: 0;\n                    pointer-events: none;\n                }\n\n                100% {\n                    top: 0;\n                    opacity: 1;\n                    pointer-events: none;\n                }\n            }\n        `,\n    ],\n})\nexport class MagmaTooltipComponent {\n    text = input<string>();\n    describedBy = input<string>();\n}\n\n@Directive({\n    selector: '[mgTooltip]',\n    host: {\n        '[aria-describedby]': 'describedBy()',\n        '[class.tooltip]': 'true',\n    },\n})\nexport class MagmaTooltipDirective implements OnDestroy {\n    private readonly overlay = inject(Overlay);\n    private readonly element = inject<ElementRef<HTMLElement>>(ElementRef);\n\n    mgTooltip = input('');\n    mgTooltipEntryDelay = input(200, { transform: numberAttribute });\n    mgTooltipDisplayDelay = input(0, { transform: numberAttribute }); // 0 to infini\n    mgTooltipDescribedBy = input<string>();\n\n    static _overlayRef?: OverlayRef;\n    static _component?: ComponentRef<MagmaTooltipComponent>;\n\n    private timer?: NodeJS.Timeout;\n    private displayTimer?: NodeJS.Timeout;\n    private destroyed = false;\n\n    index = index++;\n\n    ngOnDestroy(): void {\n        this.destroyed = true;\n        if (this.timer) {\n            clearTimeout(this.timer);\n            this.timer = undefined;\n        }\n        if (this.displayTimer) {\n            clearTimeout(this.displayTimer);\n            this.displayTimer = undefined;\n        }\n        MagmaTooltipDirective._overlayRef?.dispose();\n        MagmaTooltipDirective._overlayRef = undefined;\n        MagmaTooltipDirective._component = undefined;\n    }\n\n    @HostListener('mouseenter')\n    onMouseEnter() {\n        this.destroyed = false;\n        this.timer = setTimeout(() => {\n            this.createTooltip();\n        }, this.mgTooltipEntryDelay());\n    }\n\n    @HostListener('mouseleave')\n    onMouseLeave() {\n        if (this.timer) {\n            clearTimeout(this.timer);\n        }\n        this.ngOnDestroy();\n    }\n\n    constructor() {\n        effect(() => {\n            MagmaTooltipDirective._component?.setInput('text', this.mgTooltip());\n            MagmaTooltipDirective._component?.setInput('describedBy', this.describedBy());\n        });\n    }\n\n    protected describedBy = computed(() => this.mgTooltipDescribedBy() || 'tooltip-' + this.index);\n\n    private createTooltip() {\n        if (this.destroyed) {\n            return;\n        }\n        if (this.timer) {\n            clearTimeout(this.timer);\n        }\n        const overlayRef = this.overlay.create({\n            panelClass: 'tooltip-panel',\n            scrollStrategy: this.overlay.scrollStrategies.block(),\n            positionStrategy: this.overlay\n                .position()\n                .flexibleConnectedTo(this.element)\n                .withPositions(connectedPosition)\n                .withPush(true),\n        });\n        const userProfilePortal = new ComponentPortal(MagmaTooltipComponent);\n\n        const component = overlayRef.attach(userProfilePortal);\n        component.setInput('text', this.mgTooltip());\n        component.setInput('describedBy', this.describedBy());\n\n        MagmaTooltipDirective._overlayRef = overlayRef;\n        MagmaTooltipDirective._component = component;\n\n        if (this.mgTooltipDisplayDelay()) {\n            this.displayTimer = setTimeout(() => {\n                if (!this.destroyed) {\n                    this.ngOnDestroy();\n                }\n            }, this.mgTooltipDisplayDelay());\n        }\n    }\n}\n","export function isEmpty(value: any) {\n    if (value instanceof Date) {\n        return false;\n    }\n    if (\n        value === null ||\n        value === undefined ||\n        ((value instanceof Set || value instanceof Map) && value.size === 0) ||\n        (Array.isArray(value) && value.length === 0) ||\n        (typeof value === 'string' && value == '') ||\n        (typeof value === 'object' &&\n            !(value instanceof Set || value instanceof Map) &&\n            Object.keys(value).length === 0)\n    ) {\n        return true;\n    }\n    return false;\n}\n\nexport function regexpSlash(value: string | RegExp) {\n    if (typeof value === 'string' && value.length > 2 && value.match(/^\\/.*\\/[ig]*$/)) {\n        value = new RegExp(value.replace(/^\\/(.*)\\/[ig]*$/, '$1'), 'g');\n    }\n    return value;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { isEmpty } from '../utils/other';\n\n/**\n * Equivalent of `<array>.filter`\n *\n * Examples of usage:\n * - `{{ ['a', 'b', 'c'] | arrayFilter: myFilter  }}` → `['b', 'c']`\\\n *  in component:\\\n *  `myFilter(value => value !== \"a\")`\n */\n@Pipe({\n    name: 'arrayFilter',\n    pure: false,\n})\nexport class ArrayFilterPipe implements PipeTransform {\n    transform(items: any[], callback: (item: any) => boolean): any {\n        return Array.isArray(items) && !isEmpty(items) && typeof callback === 'function'\n            ? items.filter(item => callback(item))\n            : items;\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { MagmaStringArray, flattenedListItems } from '../utils/array';\n\n/**\n * Flatten and create a css class array\n *\n * Examples of usage:\n * - `{{ ['test', ['class-1 class-2'], 'class-a class-b'] | class-list }}`\n *    → `[ \"test\", \"class-1\", \"class-2\", \"class-a\", \"class-b\" ]`\n */\n@Pipe({\n    name: 'classList',\n})\nexport class ClassListPipe implements PipeTransform {\n    transform(values: MagmaStringArray): string[] {\n        return flattenedListItems(values, /\\s+/).filter(e => e);\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\n/**\n * Format number to string (abs, trunc, random, min, max, cos, sin, etc.)\n *\n * Examples of usage:\n * - `{{ -150.5 | math: 'abs' }}` → `150.5`\n * - `{{ -159.5599 | math: 'trunc' }}`  → `-159`\n * - `{{ '' | math: 'random' }}`  → `0.3674915822819971` (changes at each call of the method)\n * - `{{ 150 | math: 'min' : 10 : -5 : 155 }}`  → `-5`\n * - `{{ 150 | math: 'max' : 10 : -5 : 155 }}`  → `155`\n */\n@Pipe({\n    name: 'math',\n})\nexport class MathPipe implements PipeTransform {\n    transform(value: any, name: string, ...args: any[]): any {\n        const fn = (Math as any)[name];\n        return typeof fn === 'function' ? fn(value, ...args) : undefined;\n    }\n}\n","import { Pipe, PipeTransform } from '@angular/core';\n\nimport { regexpSlash } from '../utils/other';\n\n/**\n * Replace all string (equivalent of `<string>.replaceAll()`)\n *\n * Usage:\n * - `{{ value | replace:'source':'target' }}`\n * - `{{ value | replace:'/\\w+/':'target' }}`\n * - `{{ value | replace:regexp:'target' }}`\n *\n * Example:\n * -   `{{ 'Test---Test' | replace:'/-+/':'-' }} ` → `'Test-Test' `\n */\n@Pipe({\n    name: 'strReplace',\n})\nexport class StrReplacePipe implements PipeTransform {\n    transform(value: string, source: string | RegExp, target: string): string {\n        return typeof value === 'string'\n            ? value.replaceAll(typeof source === 'string' ? regexpSlash(source) : source, target)\n            : value;\n    }\n}\n","import { Injectable } from '@angular/core';\n\nimport { Observable, firstValueFrom } from 'rxjs';\n\nimport { flattenedListItems } from '../utils/array';\n\n@Injectable({ providedIn: 'root' })\nexport class MagmaCache {\n    private static cache: Record<\n        string,\n        { id: string; group: string[]; value?: any; wait?: true; observable?: Observable<any>; endDate?: Date }\n    > = {};\n\n    async request<T>(id: string, group: string | string[], observable: Observable<T>, endDate?: Date) {\n        if (MagmaCache.cache[id]?.endDate && new Date().getTime() > MagmaCache.cache[id].endDate.getTime()) {\n            this.clearById(id);\n        }\n\n        group = flattenedListItems(group);\n\n        if (MagmaCache.cache[id] && !('wait' in MagmaCache.cache[id])) {\n            return MagmaCache.cache[id].value as T;\n        } else if (MagmaCache.cache[id] && 'wait' in MagmaCache.cache[id]) {\n            MagmaCache.cache[id] = { id, group, endDate, wait: true, observable };\n            return await firstValueFrom<T>(observable);\n        } else {\n            MagmaCache.cache[id] = { id, group, endDate, wait: true, observable };\n            const value = await firstValueFrom<T>(observable);\n            if (MagmaCache.cache[id].wait) {\n                MagmaCache.cache[id] = { id, group, value };\n            }\n            return value;\n        }\n    }\n\n    clearAll() {\n        MagmaCache.cache = {};\n    }\n\n    clearById(id: string) {\n        if (MagmaCache.cache[id]) {\n            delete MagmaCache.cache[id];\n        }\n    }\n\n    clearByGroupName(groupName: string) {\n        Object.entries(MagmaCache.cache)\n            .filter(([_id, value]) => value.group?.includes(groupName))\n            .map(([id, _value]) => id)\n            .forEach(id => this.clearById(id));\n    }\n}\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\n\nexport class MagmaValidators {\n    /**\n     * test if the element(s) are in a defined list\n     * @param nameRe list of values ​​that must be included\n     * @param strict false = case insensitive\n     * @param local environment's current locale (only for strict = false)\n     * @returns A validation function that returns an error map with the `inList` property\n     * if the validation check fails, otherwise `null`.\n     */\n    static inList(\n        nameRe: (string | number | boolean)[],\n        strict: boolean = true,\n        local?: Intl.LocalesArgument,\n    ): ValidatorFn {\n        return (control: AbstractControl): ValidationErrors | null => {\n            if (!Array.isArray(nameRe)) {\n                return {\n                    inlist: { actualValue: control.value, list: nameRe, strict, error: 'control value is not a array' },\n                };\n            }\n\n            if (Array.isArray(control.value)) {\n                for (const value of control.value) {\n                    if (\n                        (strict && !nameRe.includes(value)) ||\n                        (!strict &&\n                            !nameRe.some(\n                                test => `${test}`.toLocaleLowerCase(local) == `${value}`.toLocaleLowerCase(local),\n                            ))\n                    ) {\n                        return { inlist: { actualValue: control.value, list: nameRe, strict, local } };\n                    }\n                }\n            } else if (\n                (strict && !nameRe.includes(control.value)) ||\n                (!strict &&\n                    !nameRe.some(\n                        test => `${test}`.toLocaleLowerCase(local) == `${control.value}`.toLocaleLowerCase(local),\n                    ))\n            ) {\n                return { inlist: { actualValue: control.value, list: nameRe, strict, local } };\n            }\n            return null;\n        };\n    }\n}\n","import { Injectable, inject } from '@angular/core';\nimport {\n    AbstractControl,\n    AbstractControlOptions,\n    AsyncValidatorFn,\n    FormArray,\n    FormBuilder,\n    FormControl,\n    FormGroup,\n    ValidationErrors,\n    ValidatorFn,\n    Validators,\n} from '@angular/forms';\n\nimport { MagmaValidators } from '../utils/validators';\n\n// --- Base Message Types ---\n\nexport type ParamsMessageRequired = {\n    type: 'required';\n    errorData: boolean;\n    state: boolean;\n    data: any;\n    params: Record<string, any>;\n};\nexport type ParamsMessageMinlength = {\n    type: 'minlength';\n    errorData: { requiredLength: number; actualLength: number };\n    state: number;\n    data: any;\n    params: Record<string, any>;\n};\nexport type ParamsMessageMaxlength = {\n    type: 'maxlength';\n    errorData: { requiredLength: number; actualLength: number };\n    state: number;\n    data: any;\n    params: Record<string, any>;\n};\nexport type ParamsMessageMin = {\n    type: 'min';\n    errorData: { min: number; actual: number | string };\n    state: number;\n    data: any;\n    params: Record<string, any>;\n};\nexport type ParamsMessageMax = {\n    type: 'max';\n    errorData: { max: number; actual: number | string };\n    state: number;\n    data: any;\n    params: Record<string, any>;\n};\nexport type ParamsMessagePattern = {\n    type: 'pattern';\n    errorData: { requiredPattern: string; actualValue: string };\n    state: string | RegExp;\n    data: any;\n    params: Record<string, any>;\n};\nexport type ParamsMessageEmail = {\n    type: 'email';\n    errorData: boolean;\n    state: undefined;\n    data: any;\n    params: Record<string, any>;\n};\nexport type ParamsMessageInList = {\n    type: 'inList';\n    errorData: { list: (string | number | boolean)[]; actualValue: any; strict: boolean };\n    state: (string | number | boolean)[];\n    data: any;\n    params: Record<string, any>;\n};\nexport type ParamsMessageCustom = {\n    type: 'custom';\n    errorData: any;\n    state: any;\n    data: any;\n    params: Record<string, any>;\n};\n\n// --- Control Configuration Types ---\n\nexport type ParamsMessagesControlMessage<T> = {\n    message?: string | ((params: T) => string);\n    data?: any;\n};\n\nexport type ParamsMessagesControlRequired = { state?: boolean } & ParamsMessagesControlMessage<ParamsMessageRequired>;\nexport type ParamsMessagesControlMinLength = { state?: number } & ParamsMessagesControlMessage<ParamsMessageMinlength>;\nexport type ParamsMessagesControlMaxLength = { state?: number } & ParamsMessagesControlMessage<ParamsMessageMaxlength>;\nexport type ParamsMessagesControlMin = { state?: number } & ParamsMessagesControlMessage<ParamsMessageMin>;\nexport type ParamsMessagesControlMax = { state?: number } & ParamsMessagesControlMessage<ParamsMessageMax>;\nexport type ParamsMessagesControlPattern = {\n    state?: string | RegExp;\n} & ParamsMessagesControlMessage<ParamsMessagePattern>;\nexport type ParamsMessagesControlEmail = { state?: boolean } & ParamsMessagesControlMessage<ParamsMessageEmail>;\nexport type ParamsMessagesControlInList = {\n    state?: (string | number | boolean)[];\n} & ParamsMessagesControlMessage<ParamsMessageInList>;\nexport type ParamsMessagesControlCustom = {\n    state?: (value: any) => boolean;\n} & ParamsMessagesControlMessage<ParamsMessageCustom>;\n\nexport interface ParamsMessagesControl {\n    /** required */\n    required?: ParamsMessagesControlRequired;\n    /** min length for string or array */\n    minlength?: ParamsMessagesControlMinLength;\n    /** max length for string or array */\n    maxlength?: ParamsMessagesControlMaxLength;\n    /** min value */\n    min?: ParamsMessagesControlMin;\n    /** max value */\n    max?: ParamsMessagesControlMax;\n    /** test pattern on string */\n    pattern?: ParamsMessagesControlPattern;\n    /** test an email */\n    email?: ParamsMessagesControlEmail;\n    /** test value(s) present in a list */\n    inlist?: ParamsMessagesControlInList;\n    /** custom validator */\n    custom?: ParamsMessagesControlCustom | ParamsMessagesControlCustom[];\n    /** message if not defined in other control */\n    message?: string | ((params: any) => string);\n}\n\nexport type ParamsMessages<T = any> = {\n    default: T;\n    emptyOnInit?: boolean;\n    options?: {\n        onlySelf?: boolean;\n        emitEvent?: boolean;\n        emitModelToViewChange?: boolean;\n        emitViewToModelChange?: boolean;\n    };\n    control?: ParamsMessagesControl;\n};\n\n// --- UTILITY TYPES FOR INFERENCE ---\n\n/**\n * Deduce the control type.\n * If it's ParamsMessages -> it becomes a FormControl.\n * If it's already an AbstractControl -> keep it as is.\n */\nexport type ControlOf<T> =\n    T extends ParamsMessages<infer U> ? FormControl<U> : T extends AbstractControl<infer U> ? T : never;\n\n/**\n * Maps the input object keys to their corresponding Angular Controls\n */\nexport type FormMapperExtended<T extends Record<string, any>> = {\n    [K in keyof T]: ControlOf<T[K]>;\n};\n\n// --- SERVICE ---\n\n@Injectable({\n    providedIn: 'root',\n})\nexport class FormBuilderExtended {\n    private readonly fb = inject(FormBuilder);\n\n    /**\n     * Create a FormGroup with validation messages and non-nullable controls.\n     * Supports mixed input: Config objects (ParamsMessages) or existing FormGroups/Arrays.\n     * @param controlsWithError Control schemas with validators/messages OR existing controls\n     * @param options Validation options for the group\n     * @returns Strongly typed FormGroup\n     */\n    groupWithError<T extends Record<string, any>>(\n        controlsWithError: T,\n        options?: AbstractControlOptions | null,\n    ): FormGroup<FormMapperExtended<T>> {\n        const controls: any = {};\n\n        Object.entries(controlsWithError).forEach(([key, value]: [string, any]) => {\n            const paramsData: Record<string, any> = {};\n\n            // 1. Check if the value is already an Angular Control (Group, Array, Record)\n            if (value instanceof AbstractControl) {\n                controls[key] = value;\n            }\n            // 2. Otherwise, treat it as a configuration object to build a FormControl\n            else {\n                const validators: ValidatorFn[] = [];\n\n                if (value.control && Object.keys(value.control).length) {\n                    Object.entries(value.control).forEach(([subKey, control]: [string, any]) => {\n                        // Standard Validators\n                        if (subKey === 'required' && control.state) {\n                            validators.push(Validators.required);\n                        } else if (subKey === 'minlength' && control.state > 0) {\n                            validators.push(Validators.minLength(control.state));\n                        } else if (subKey === 'maxlength' && control.state > 0) {\n                            validators.push(Validators.maxLength(control.state));\n                        } else if (subKey === 'min') {\n                            validators.push(Validators.min(control.state));\n                        } else if (subKey === 'max') {\n                            validators.push(Validators.max(control.state));\n                        } else if (subKey === 'pattern' && control.state) {\n                            validators.push(Validators.pattern(control.state));\n                        } else if (subKey === 'email') {\n                            validators.push(Validators.email);\n                        }\n                        // Custom Validators\n                        else if (subKey === 'inlist') {\n                            validators.push(MagmaValidators.inList(control.state));\n                        } else if (subKey === 'custom') {\n                            const customValidators = Array.isArray(control) ? control : [control];\n                            for (const validator of customValidators) {\n                                if (typeof validator === 'function') {\n                                    validators.push((control: AbstractControl): ValidationErrors | null =>\n                                        validator(control.value) ? null : { custom: true },\n                                    );\n                                }\n                            }\n                        }\n\n                        if (control.state !== undefined) {\n                            paramsData[subKey] = control.state;\n                        }\n                    });\n                }\n\n                // Create the FormControl with nonNullable: true\n                controls[key] = new FormControl(value.emptyOnInit ? undefined : value.default, {\n                    ...value.options,\n                    validators,\n                    nonNullable: true,\n                });\n\n                // Attach metadata (monkey-patching)\n                // We use 'any' cast here because these properties don't exist on standard AbstractControl\n                (controls[key] as any).controlData = value.control;\n                (controls[key] as any).controlParamsData = paramsData;\n            }\n        });\n\n        // Force cast the return type.\n        // We know the structure matches FormMapperExtended<T> because we just built it.\n        return this.fb.group(controls, options) as unknown as FormGroup<FormMapperExtended<T>>;\n    }\n\n    /**\n     * Mark form as touched and force validation update on all controls recursively.\n     * @param form FormGroup or FormArray to validate\n     */\n    validateForm(form: FormGroup | FormArray) {\n        form.markAllAsTouched();\n        this.recursiveValidateForm(form.controls);\n    }\n\n    private recursiveValidateForm(\n        controls: { [key: string]: AbstractControl<any, any> } | AbstractControl<any, any>[],\n    ) {\n        if (Array.isArray(controls)) {\n            controls.forEach(ctrl => {\n                if (ctrl instanceof FormGroup || ctrl instanceof FormArray) {\n                    this.recursiveValidateForm(ctrl.controls);\n                }\n                ctrl.updateValueAndValidity();\n            });\n        } else {\n            Object.values(controls).forEach(ctrl => {\n                if (ctrl instanceof FormGroup || ctrl instanceof FormArray) {\n                    this.recursiveValidateForm(ctrl.controls);\n                }\n                ctrl.updateValueAndValidity();\n            });\n        }\n    }\n\n    /**\n     * Helper for FormArray creation\n     */\n    array<T extends AbstractControl>(\n        controls: T[],\n        validatorOrOpts?: ValidatorFn | ValidatorFn[] | AbstractControlOptions | null,\n        asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null,\n    ): FormArray<T> {\n        return this.fb.array(controls, validatorOrOpts, asyncValidator) as unknown as FormArray<T>;\n    }\n}\n","import { ChangeDetectionStrategy, ChangeDetectorRef, Component, inject, input } from '@angular/core';\n\nimport { MagmaWindow, MagmaWindowInfos } from './window.component';\n\nimport { MagmaResizeHostElement } from '../../directives/resizer';\nimport { MagmaWindows } from '../../services/windows';\n\n/**\n * This component is necessary for the `Windows` service to function but can hardly be used in another context,\n * so it is not present in `public-api`.\n *\n * Please use: `mg-windows-container`\n */\n@Component({\n    selector: 'mg-windows-zone',\n    templateUrl: './windows-zone.component.html',\n    styleUrl: './windows-zone.component.scss',\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [MagmaWindow],\n})\nexport class MagmaWindowsZone implements MagmaResizeHostElement {\n    readonly cd = inject(ChangeDetectorRef);\n\n    protected readonly windows = input.required<MagmaWindowInfos[]>();\n    protected readonly context = input<MagmaWindows>();\n\n    heightElementNumber = window.innerHeight;\n    widthElementNumber = window.innerWidth;\n    elementSize = 1;\n\n    select(window: MagmaWindowInfos) {\n        const index = window.index;\n        this.windows().forEach(window => {\n            if (window.index > index) {\n                window.index -= 1;\n            }\n        });\n        window.index = this.windows().length - 1;\n    }\n\n    remove(window: MagmaWindowInfos) {\n        const context = this.context();\n        if (context) {\n            context.removeWindow(window);\n        } else {\n            const index = this.windows().findIndex(w => w.id === window.id);\n            if (index !== -1) {\n                this.windows().splice(index, 1);\n            }\n        }\n    }\n}\n","@for (window of windows(); track window) {\n  <mg-window\n    [isOpen]=\"true\"\n    [component]=\"window\"\n    [resizerHost]=\"this\"\n    (mousedown)=\"select(window)\"\n    (onClose)=\"remove(window)\"\n  />\n}\n","import { Overlay, OverlayRef } from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { ComponentRef, Injectable, Type, inject } from '@angular/core';\n\nimport { Subject } from 'rxjs';\n\nimport { MagmaWindowInfos, MagmaWindowInitParams } from '../components/window/window.component';\nimport { MagmaWindowsZone } from '../components/window/windows-zone.component';\n\nlet index = 0;\n\n@Injectable({ providedIn: 'root' })\nexport class MagmaWindows {\n    private readonly overlay = inject(Overlay);\n\n    readonly windows: MagmaWindowInfos[] = [];\n\n    readonly onAddWindow = new Subject<MagmaWindowInfos>();\n\n    component?: ComponentRef<MagmaWindowsZone>;\n    overlayRef?: OverlayRef;\n\n    openWindow(component: Type<any>, params?: MagmaWindowInitParams) {\n        const infos: MagmaWindowInfos = {\n            component,\n            index: 0,\n            // default\n            inputs: {},\n            id: 'window-' + index++,\n            zoneSelector: 'mg-windows-zone',\n            ...params,\n        };\n        infos.index = this.windows.push(infos) - 1;\n\n        if (this.overlayRef === undefined) {\n            this.init();\n        }\n\n        this.onAddWindow.next(infos);\n        this.component?.instance.cd.detectChanges();\n        return infos;\n    }\n\n    removeWindow(window: MagmaWindowInfos) {\n        this.removeWindowById(window.id);\n    }\n\n    removeWindowById(id: String) {\n        const index = this.windows.findIndex(w => w.id === id);\n        if (index !== -1) {\n            this.windows.splice(index, 1);\n            if (this.windows.length === 0) {\n                this.overlayRef?.dispose();\n                this.overlayRef = undefined;\n                this.component = undefined;\n            }\n        }\n    }\n\n    private init() {\n        const overlayRef = this.overlay.create({\n            hasBackdrop: false,\n            panelClass: 'overlay-window',\n            scrollStrategy: this.overlay.scrollStrategies.block(),\n            positionStrategy: this.overlay.position().global(),\n        });\n        const userProfilePortal = new ComponentPortal(MagmaWindowsZone);\n        this.component = overlayRef.attach(userProfilePortal);\n        this.component.setInput('windows', this.windows);\n        this.component.setInput('context', this);\n        this.overlayRef = overlayRef;\n    }\n}\n","export function clipboardWrite(text: string): Promise<void> {\n    return new Promise<void>((resolve, reject) => {\n        navigator.clipboard.writeText(text).then(\n            () => {\n                resolve();\n            },\n            () => {\n                reject();\n            },\n        );\n    });\n}\n","import { DurationTime, addDuration } from './date';\n\n/**\n * get cookie by name\n * @param name cookie name\n * @returns value\n */\nexport function getCookie<T extends string>(name: string): T | undefined {\n    const cookies = document.cookie;\n    const parts = cookies.match(`(?!; )?${name}=([^;]*);?`);\n    return parts ? (parts[1] as T) : undefined;\n}\n\n/**\n * set a cookie by name\n * @param name cookie name\n * @param value value\n * @param days expire in day (default: 7)\n * @param path path for cookie (default: `/`)\n */\nexport function setCookie(name: string, value: string, days: number = 7, path: string = '/') {\n    var date = new Date();\n    date.setTime(addDuration(days, DurationTime.DAY).getTime());\n    document.cookie = `${name}=${value}; path=${path}; expires=${date.toUTCString()}`;\n}\n\n/**\n * Remove cookie by name\n * @param name cookie name\n * @param path path for cookie (default: `/`)\n */\nexport function removeCookie(name: string, path: string = '/') {\n    document.cookie = `${name}=; path=${path}; Max-Age=0`;\n}\n","import { regexpSlash } from './other';\n\nexport interface PaletteParams {\n    /** CSS var name. Default : `Palette.cssVar` (`'--palette'`). */\n    cssVar?: string;\n    /** selector selector to choose the reference element or the target element (root is ignored).\n     * Default : ` Palette.contextSelector` (`'body'`). */\n    selector?: string | HTMLElement;\n    /** root element which serves as a reference for the selector. Default `Palette.root` (`document`).\\\n     * If the element ref is in a ShadowDom MFE :\n     *\n     * ```ts\n     * export class AppShadowDOM{\n     *     private readonly hostElement = inject(ElementRef<HTMLElement>);\n     *     shadowRoot: DocumentFragment;\n     *\n     *     constructor() {\n     *         this.shadowRoot = this.hostElement.nativeElement.getRootNode();\n     *     }\n     *\n     * }\n     * ```\n     *  */\n    root?: Document | HTMLElement | DocumentFragment;\n    /** colorSeparator color cutting rule (default : `/\\s*,\\s*‎/`) */\n    colorSeparator?: string | RegExp;\n}\n\n/**\n * Allows you to slice the values ​​of a CSS variable (--palette) to create a list of colors.\n *\n * Example: `--palette: #FFF, #000, #FF1234` → `['#FFF', '#000', '#FF1234']`\n *\n * @returns an array of string color\n */\nexport function getPaletteList(params?: PaletteParams) {\n    params ??= {};\n    params.cssVar ??= Palette.cssVar;\n    params.selector ??= Palette.contextSelector;\n    params.root ??= Palette.root;\n    params.colorSeparator ??= Palette.colorSeparator;\n\n    const element =\n        params.selector instanceof HTMLElement ? params.selector : params.root.querySelector(params.selector);\n\n    const value = element\n        ? getComputedStyle(element)\n              .getPropertyValue(params.cssVar)\n              .split(regexpSlash(params.colorSeparator))\n              .filter(e => e)\n        : undefined;\n    return value && value?.length > 0 ? value : undefined;\n}\n\nexport class Palette {\n    // STATIC\n\n    static cssVar = '--palette';\n    static contextSelector: string | HTMLElement = 'body';\n    static root: Document | HTMLElement | DocumentFragment = document;\n    static colorSeparator: string | RegExp = /\\s*,\\s*/;\n\n    private static _globalPalette: string[] | undefined;\n\n    static get globalPalette(): string[] | undefined {\n        Palette._globalPalette ??= getPaletteList();\n        return this._globalPalette;\n    }\n\n    static globalClear() {\n        Palette._globalPalette = undefined;\n    }\n\n    // NO STATIC\n\n    private _palette: string[] | undefined = undefined;\n\n    constructor(private params?: PaletteParams) {}\n\n    get palette(): string[] | undefined {\n        this._palette ??= getPaletteList(this.params);\n        return this._palette;\n    }\n\n    clear() {\n        this._palette = undefined;\n    }\n}\n","export function getParentElementByClass(element: HTMLElement, cssClass: string): HTMLElement | undefined {\n    return containClasses(element, cssClass.trim().split(/\\s+/))\n        ? element\n        : element.parentElement\n          ? getParentElementByClass(element.parentElement, cssClass)\n          : undefined;\n}\n\nexport function containClasses(element: HTMLElement | SVGSVGElement, cssClasses: string[]): boolean {\n    if (!element.classList) {\n        return false;\n    }\n    for (const cssClass of cssClasses) {\n        if (!element.classList.contains(cssClass)) {\n            return false;\n        }\n    }\n    return true;\n}\n","const emailTest =\n    /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/;\n\nexport function testEmail(email: string): boolean {\n    return email ? String(email).match(emailTest) !== null : false;\n}\n","/** Enum → Value List */\nexport function enumToValueList(e: any) {\n    return Object.entries<string | number>(e)\n        .filter(([key]) => isNaN(Number(key)))\n        .map<string | number>(([k, v]) => v);\n}\n\n/** Enum → Key List */\nexport function enumToKeyList(e: any) {\n    return Object.keys(e).filter(k => isNaN(Number(k)));\n}\n\n/** Enum → List `{ key, value }[]` */\nexport function enumToKeyValue(e: any) {\n    return Object.entries<string | number>(e)\n        .filter(([k]) => isNaN(Number(k))) // Remove numeric key\n        .map<Record<string, string | number>>(([key, value]) => ({ key, value }));\n}\n\n/** Enum → Object */\nexport function enumToObject(e: any): Record<string, string | number> {\n    return Object.keys(e)\n        .filter(k => isNaN(Number(k))) // Remove numeric key\n        .reduce((acc, k) => ({ ...acc, [k]: e[k as keyof typeof e] }), {});\n}\n\n/** Enum → Map */\nexport function enumToMap(e: any): Map<string, string | number> {\n    return Object.keys(e)\n        .filter(k => isNaN(Number(k))) // Remove numeric key\n        .reduce((acc, k) => acc.set(k, e[k as keyof typeof e]), new Map());\n}\n","export function downloadFile(content: string | Blob, fileName: string, contentType?: string) {\n    const a = document.createElement('a');\n    if (content instanceof Blob) {\n        a.href = URL.createObjectURL(content);\n        a.download = fileName;\n        a.click();\n        URL.revokeObjectURL(a.href);\n    } else if (content.startsWith('data:')) {\n        a.href = content;\n        a.download = fileName;\n        a.click();\n    } else {\n        const file = new Blob([content], contentType ? { type: contentType } : undefined);\n        a.href = URL.createObjectURL(file);\n        a.download = fileName;\n        a.click();\n        URL.revokeObjectURL(a.href);\n    }\n    return a;\n}\n\nexport function blobToBase64(blob: Blob): Promise<string> {\n    return new Promise((resolve, reject) => {\n        const reader = new FileReader();\n        reader.onloadend = () => resolve(reader.result as string);\n        reader.onerror = () => reject(new Error('Failed to read blob as base64'));\n        reader.readAsDataURL(blob);\n    });\n}\n\nexport function ulrToBase64(url: string): Promise<string | ArrayBuffer | null> {\n    return new Promise<string | ArrayBuffer | null>(async (resolve, reject) => {\n        try {\n            const response = await fetch(url, {\n                method: 'GET',\n                credentials: 'omit',\n                mode: 'cors', // Chromium\n                headers: {\n                    'Sec-Fetch-Dest': 'image',\n                    'Sec-Fetch-Mode': 'cors',\n                    'Sec-Fetch-Site': 'same-site',\n                },\n            });\n            if (response.status === 200) {\n                const imageBlob = await response.blob();\n\n                var reader = new FileReader();\n                reader.readAsDataURL(imageBlob);\n                reader.onloadend = function () {\n                    const base64data = reader.result;\n                    if (base64data instanceof ArrayBuffer) {\n                        resolve(base64data);\n                    } else if (base64data) {\n                        // fix typemine\n                        resolve(base64data.replace('data:application/octet-stream;base64,', 'data:image/webp;base64,'));\n                    } else {\n                        reject('Image error');\n                    }\n                    resolve(base64data);\n                };\n                reader.onerror = () => {\n                    reject('Image error');\n                };\n            } else {\n                reject('HTTP-Error: ' + response.status);\n            }\n        } catch (e) {\n            reject('HTTP-Error: CORS');\n        }\n    });\n}\n\n/**\n * remove accents, case and all non-ASCII characters and `\\:*?\"<>` symbols\n *\n * @example 'Café_Été_日本語_Привет_😊' => 'cafe_ete___'\n * @param string source text\n * @param limit max size\n * @returns text formatted\n */\nexport function normalizeFileName(string: string, limit: number = 200) {\n    return string\n        .toLocaleLowerCase()\n        .normalize('NFD') // Decompose accented characters\n        .replace(/[\\p{Diacritic}\\/|\\\\:*?\"<>]/gu, '') // Remove accents\n        .replace(/[\\/|\\\\:*?\"<>]/g, '') // Remove forbidden filename characters\n        .replace(/[^\\x00-\\x7F]/g, '_') // Remove all non-ASCII characters\n        .replace(/_+/g, '_') // Remove multiple underscore\n        .substring(0, limit);\n}\n","import Bowser from 'bowser';\n\nexport function jsonCopy<T>(o: T): T {\n    return JSON.parse(JSON.stringify(o));\n}\n\nexport class ExceptionJsonParse extends Error {\n    override cause: string;\n    constructor(message: string, cause: string) {\n        super(message); // 'Error' breaks prototype chain here\n        Object.setPrototypeOf(this, new.target.prototype); // restore prototype chain\n        this.name = 'ExceptionJsonParse';\n        this.cause = cause;\n    }\n}\n\n/**\n * parse JSON\n * @param value parse string\n * @returns json\n * @throw SyntaxError with position formatted in cause\n */\nexport function jsonParse<T>(value: string): T | undefined {\n    try {\n        return JSON.parse(value);\n    } catch (error) {\n        const message = (error as any).message.match(/[^\\n]+/)[0];\n        let textPosition = '';\n        if (error instanceof SyntaxError) {\n            const browser = Bowser.parse(window.navigator.userAgent);\n            if (browser.engine.name === 'Blink') {\n                if (message.match(/at position/)) {\n                    const position = parseInt(message.match(/at position (\\d+)/)[1], 10);\n                    const lines = value.split(/\\n/);\n                    let l = 1;\n                    for (const line of lines) {\n                        if (line) {\n                            if (l + line.length >= position) {\n                                textPosition = line + '\\n' + ' '.repeat(position - l + 1) + '^';\n                                break;\n                            }\n                            l += line.length + 1;\n                        }\n                    }\n                }\n            } else if (browser.engine.name === 'Gecko') {\n                if (message.match(/at line/)) {\n                    const [, line, column] = message.match(/at line (\\d+) column (\\d+)/);\n                    const lines = value.split(/\\n/);\n                    if (lines[+line - 1]) {\n                        textPosition = lines[+line - 1] + '\\n' + ' '.repeat(+column - 1) + '^';\n                    }\n                }\n            } else if (browser.engine.name === 'WebKit') {\n                const [, pos] = message.match(/.*JSON Parse error: (.*)/);\n                if (pos) {\n                    textPosition = pos;\n                }\n            }\n        }\n        throw new ExceptionJsonParse(message, textPosition);\n    }\n}\n","/**\n * remove accents and case\n * @param string text with accents\n * @returns text without accents\n */\nexport function normalizeString(string: string) {\n    return string\n        .toLocaleLowerCase()\n        .normalize('NFD')\n        .replace(/\\p{Diacritic}/gu, '');\n}\n\nexport function unescapedString(str: string) {\n    return str.replace(/\\\\([nrtvfb\\\\\"'`]|u[0-9a-f]{4}|x[0-9a-f]{2})/gi, (_match, code: string) => {\n        const str = code.toLocaleLowerCase() as 'n' | 'r' | 't' | 'v' | 'f' | 'b';\n        return String.fromCharCode(\n            str.startsWith('u')\n                ? parseInt(str.substring(1), 16)\n                : str.startsWith('x')\n                  ? parseInt(str.substring(1), 16)\n                  : { n: 10, r: 13, t: 9, v: 11, f: 12, b: 8 }[str] || str.charCodeAt(0),\n        );\n    });\n}\n","/*\n * Public API Surface of magma\n */\n\n// components\nexport * from './lib/components/block/block.component';\nexport * from './lib/components/color-picker/color-picker.component';\nexport * from './lib/components/color-picker/color-picker.directive';\nexport * from './lib/components/context-menu/context-menu.component';\nexport * from './lib/components/context-menu/context-menu.directive';\nexport * from './lib/components/contrib-calendar/contrib-calendar.component';\nexport * from './lib/components/datetime-picker/datetime-picker.component';\nexport * from './lib/components/datetime-picker/datetime-picker.directive';\nexport * from './lib/components/dialog/dialog.component';\nexport * from './lib/components/ellipsis-button/ellipsis-button.component';\nexport * from './lib/components/ellipsis-button/ellipsis-button.module';\nexport * from './lib/components/ellipsis-button/ellipsis-item.component';\nexport * from './lib/components/expansion-panel/expansion-panel.component';\nexport * from './lib/components/expansion-panel/expansion-panel.module';\nexport * from './lib/components/info-messages/info-message.component';\nexport * from './lib/components/info-messages/info-messages.component';\nexport * from './lib/components/input/input-checkbox.component';\nexport * from './lib/components/input/input-color.component';\nexport * from './lib/components/input/input-date.component';\nexport * from './lib/components/input/input-element.component';\nexport * from './lib/components/input/input-number.component';\nexport * from './lib/components/input/input-password.component';\nexport * from './lib/components/input/input-radio.component';\nexport * from './lib/components/input/input-range.component';\nexport * from './lib/components/input/input-select.component';\nexport * from './lib/components/input/input-text.component';\nexport * from './lib/components/input/input-textarea.component';\nexport * from './lib/components/input/input.component';\nexport * from './lib/components/light-dark/light-dark.component';\nexport * from './lib/components/loader-block/loader-block.component';\nexport * from './lib/components/loader-block/loader-tile.component';\nexport * from './lib/components/loader/loader-message.component';\nexport * from './lib/components/loader/loader.component';\nexport * from './lib/components/message/message-block.component';\nexport * from './lib/components/message/message.component';\nexport * from './lib/components/paginate/paginate.component';\nexport * from './lib/components/progress/progress.component';\nexport * from './lib/components/spinner/spinner.component';\nexport * from './lib/components/table/table-cell.component';\nexport * from './lib/components/table/table-group.component';\nexport * from './lib/components/table/table-row.component';\nexport * from './lib/components/table/table.component';\nexport * from './lib/components/table/table.module';\nexport * from './lib/components/tabs/tab-content.component';\nexport * from './lib/components/tabs/tab-title.component';\nexport * from './lib/components/tabs/tabs.component';\nexport * from './lib/components/tabs/tabs.module';\nexport * from './lib/components/walkthrough/walkthrough-step.directive';\nexport * from './lib/components/walkthrough/walkthrough.component';\nexport * from './lib/components/window/window.component';\nexport * from './lib/components/window/windows-container.component';\n\n// directives\nexport * from './lib/directives/click-enter.directive';\nexport * from './lib/directives/click-outside.directive';\nexport * from './lib/directives/limit-focus.directive';\nexport * from './lib/directives/ng-init.directive';\nexport * from './lib/directives/ng-model-change-debounced.directive';\nexport * from './lib/directives/resizer.directive';\nexport * from './lib/directives/sortable.directive';\nexport * from './lib/directives/stop-propagation.directive';\nexport * from './lib/directives/textarea-autosize.directive';\nexport * from './lib/directives/tooltip.directive';\n\n// pipes\nexport * from './lib/pipes/array-filter.pipe';\nexport * from './lib/pipes/class-list.pipe';\nexport * from './lib/pipes/file-size.pipe';\nexport * from './lib/pipes/math.pipe';\nexport * from './lib/pipes/num-format.pipe';\nexport * from './lib/pipes/repeat-for.pipe';\nexport * from './lib/pipes/str-replace.pipe';\nexport * from './lib/pipes/string.pipe';\n\n// services\nexport * from './lib/services/cache';\nexport * from './lib/services/form-builder-extended';\nexport * from './lib/services/light-dark';\nexport * from './lib/services/logger';\nexport * from './lib/services/messages';\nexport * from './lib/services/windows';\n\n// utils\nexport * from './lib/utils/array';\nexport * from './lib/utils/clipboard';\nexport * from './lib/utils/coercion';\nexport * from './lib/utils/cookies';\nexport * from './lib/utils/css';\nexport * from './lib/utils/date';\nexport * from './lib/utils/dom';\nexport * from './lib/utils/email';\nexport * from './lib/utils/enum';\nexport * from './lib/utils/file';\nexport * from './lib/utils/json';\nexport * from './lib/utils/number';\nexport * from './lib/utils/object';\nexport * from './lib/utils/other';\nexport * from './lib/utils/subscriptions';\nexport * from './lib/utils/text';\nexport * from './lib/utils/timing';\nexport * from './lib/utils/validators';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.MagmaTabs","i3.MagmaTabTitle","i4.MagmaTabContent","connectedPosition","i1.MagmaClickEnterDirective","counter","i1","index","i1.MagmaLimitFocusDirective","debounceTime"],"mappings":"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"}