{"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/components/tabs/tabs.component.ts","../../../../projects/ikilote/magma/src/lib/components/tabs/tabs.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/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/components/contrib-calendar/contrib-calendar.component.ts","../../../../projects/ikilote/magma/src/lib/components/contrib-calendar/contrib-calendar.component.html","../../../../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/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.component.ts","../../../../projects/ikilote/magma/src/lib/components/input/input.component.html","../../../../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-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/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/components/input/input-select.component.ts","../../../../projects/ikilote/magma/src/lib/components/input/input-select.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.component.ts","../../../../projects/ikilote/magma/src/lib/components/table/table.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-row.component.ts","../../../../projects/ikilote/magma/src/lib/components/table/table-row.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.module.ts","../../../../projects/ikilote/magma/src/lib/components/tabs/tabs.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/click-outside.directive.ts","../../../../projects/ikilote/magma/src/lib/directives/ng-model-change-debounced.directive.ts","../../../../projects/ikilote/magma/src/lib/directives/ngInit.directive.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/stop-propagation.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/repeat-for.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/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/date.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/number.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    styleUrls: ['./block.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class MagmaBlock {}\n","<div><ng-content></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 = '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    styleUrls: ['./tab-content.component.scss'],\n    host: {\n        '[attr.id]': '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></ng-content>\n}\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    styleUrls: ['./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<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\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\"></ng-content>\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\"></ng-content>\n</div>\n<div class=\"visually-hidden-focusable\">\n  <button (click)=\"returnTabs()\">{{ returnTabsLabel() }}</button>\n</div>\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        '[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) {\n        if (!this.disabled) {\n            this.clickEnter.emit(event);\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    styleUrls: ['./tab-title.component.scss'],\n    host: {\n        '[attr.id]': '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 tabs = inject(MagmaTabs, { host: true });\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    constructor() {\n        this.click.clickEnter.subscribe(() => {\n            this.onclick();\n        });\n    }\n\n    @HostListener('keydown.ArrowLeft')\n    focusLeft() {\n        this.tabs.titles()[Math.max(0, this.tabs.titles().indexOf(this) - 1)].element.nativeElement.focus();\n    }\n\n    @HostListener('keydown.ArrowRight')\n    focusRight() {\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    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        if (this.tabs && this.id()) {\n            setTimeout(() => {\n                this.tabs.update(this.id());\n                this.tabs.tabpanel()?.nativeElement.focus();\n            });\n        }\n    }\n}\n","<ng-content></ng-content>\n","import { CdkDrag, CdkDragEnd, Point } from '@angular/cdk/drag-drop';\nimport {\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    ElementRef,\n    OnChanges,\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 { MagmaTabContent } from '../tabs/tab-content.component';\nimport { MagmaTabTitle } from '../tabs/tab-title.component';\nimport { MagmaTabs } from '../tabs/tabs.component';\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    styleUrls: ['./color-picker.component.scss'],\n    imports: [FormsModule, CdkDrag, MagmaTabs, MagmaTabTitle, MagmaTabContent],\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 {\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(() => (this.palette()?.length ? this.palette() : magmaColorPickerPalette));\n\n    protected startDrag = false;\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes['color'] && 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                if (!this.alpha()) {\n                    colorObject.alpha = 1;\n                }\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        this.colorChange.emit(this.hexa);\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                this.cd.detectChanges();\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        } 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;\n        this.rangeLight = 100 - (100 * hls.l) / (100 - hls.s / 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        this.colorChange.emit(this.hexa);\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\">\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\">\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\">\n    <div class=\"color-view\" [style.--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    }\n\n    @HostListener('keydown.space', ['$event'])\n    openKeyboard() {\n        this.open();\n    }\n\n    @HostListener('document:keydown.escape', ['$event'])\n    escape() {\n        this.close();\n    }\n\n    private close() {\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({\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(parseFloat(value as any)) && !isNaN(Number(value)) ? Number(value) : 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 constructor() {}\n\n    push(...list: Subscription[]) {\n        list.forEach(sub => this.listener.add(sub));\n    }\n\n    clear() {\n        this.listener.unsubscribe();\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\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    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', e => {\n                if (e.key === 'Tab') {\n                    const list = listElement.filter(\n                        e =>\n                            getComputedStyle(e).display !== 'none' &&\n                            getComputedStyle(e).visibility !== 'hidden' &&\n                            e.tabIndex !== -1,\n                    );\n                    const firstFocusableElement = list[0];\n                    const lastFocusableElement = list[list.length - 1];\n\n                    if (e.shiftKey) {\n                        if (document.activeElement === firstFocusableElement) {\n                            e.preventDefault();\n                            lastFocusableElement.focus();\n                        }\n                        if (!list.find(e => e === document.activeElement)) {\n                            lastFocusableElement.focus();\n                        }\n                    } else if (document.activeElement === lastFocusableElement) {\n                        e.preventDefault();\n                        firstFocusableElement.focus();\n                    } else if (!list.find(e => e === document.activeElement)) {\n                        firstFocusableElement.focus();\n                    }\n                }\n            });\n\n            this.observer = new MutationObserver(mutationsList => {\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            this.observer.observe(div, { attributes: true, childList: true, subtree: true });\n        }\n    }\n\n    private firstLastFocusableElement(div: HTMLDivElement): HTMLElement[] {\n        const focusableElements = div.querySelectorAll<HTMLElement>(\n            'a[href], button:not(:disabled), input:not(:disabled), textarea:not(:disabled), select:not(:disabled), [tabindex]:not([tabindex=\"-1\"])',\n        );\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    styleUrls: ['./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\n              [ngComponentOutlet]=\"itc.component\"\n              [ngComponentOutletInputs]=\"withContext(itc.inputs)\"\n            ></ng-container\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 { DatePipe } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, input } from '@angular/core';\n\nexport interface ContribCalendarDay<date = string | Date> {\n    date: date;\n    value: number;\n}\n\nexport type ContribCalendar<date = string | Date> = ContribCalendarDay<date>[];\n\n@Component({\n    selector: 'mg-contrib-calendar',\n    templateUrl: './contrib-calendar.component.html',\n    styleUrls: ['./contrib-calendar.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [DatePipe],\n    host: {\n        '[style.--size]': 'size()',\n    },\n})\nexport class MagmaContribCalendar {\n    lang = input<string | undefined>();\n\n    min = input<string | number | Date | undefined>();\n\n    max = input<string | number | Date | undefined>();\n\n    calendar = input.required<ContribCalendar>();\n\n    protected computedDays = computed(() =>\n        Array.from({ length: 7 }, (_, i) => {\n            const date = new Date(2024, 0, i + 1);\n            return date.toLocaleString(this.lang() || 'en', { weekday: 'narrow' });\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();\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    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 firstMonday = this.minDate(map);\n        const day = (firstMonday.getUTCDay() || 7) - 1;\n        if (day) {\n            firstMonday.setUTCDate(firstMonday.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() - firstMonday.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 Monday\n\n        const firstMonday = this.minDate(map);\n        const day = (firstMonday.getUTCDay() || 7) - 1;\n        if (day) {\n            firstMonday.setUTCDate(firstMonday.getUTCDate() - day);\n        }\n\n        // number of weeks\n\n        const diffTime = this.maxDate(map).getTime() - firstMonday.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 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        [class.lvl1]=\"i.value > 0 && i.value <= 5\"\n        [class.lvl2]=\"i.value > 5 && i.value <= 10\"\n        [class.lvl3]=\"i.value > 10 && i.value <= 15\"\n        [class.lvl4]=\"i.value > 15\"\n      ></div>\n    }\n  </div>\n</div>\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    styleUrls: ['./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></ng-content>\n    </div>\n  </div>\n}\n","import { NgComponentOutlet } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    HostBinding,\n    HostListener,\n    inject,\n    input,\n    output,\n} from '@angular/core';\n\nimport { MagmaMessageInfo } from '../../services/messages';\n\ntype ContextMessageInputs = { context?: InfoMessageComponent } & Record<string, any>;\n\n@Component({\n    selector: 'info-message',\n    templateUrl: './info-message.component.html',\n    styleUrls: ['./info-message.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [NgComponentOutlet],\n})\nexport class InfoMessageComponent {\n    // inject\n\n    private 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    @HostBinding('class')\n    get classes() {\n        return [this.message()?.type, this._closeClass ? 'close' : null];\n    }\n\n    @HostBinding('style.--current-pos.px')\n    get currentPos() {\n        return this._pos ?? null;\n    }\n\n    @HostBinding('style.--current-height.px')\n    get currentHeight() {\n        return this._height ?? null;\n    }\n\n    @HostBinding('style.--info-message-progress-time')\n    get progressTime() {\n        return this.message()?.time;\n    }\n\n    private _closeClass = false;\n    private _pos!: number;\n    private _height!: number;\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    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    styleUrls: ['./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)\"></info-message>\n}\n","import { CommonModule } from '@angular/common';\nimport {\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\n    OnChanges,\n    SimpleChanges,\n    booleanAttribute,\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\n@Component({\n    selector: 'mg-input',\n    templateUrl: './input.component.html',\n    styleUrls: ['./input.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CommonModule],\n    host: {\n        '[id]': '_id()',\n    },\n})\nexport class MagmaInput implements OnChanges {\n    readonly cd = inject(ChangeDetectorRef);\n\n    readonly id = input<string>();\n\n    forId: string | undefined;\n\n    /** for checkbox */\n    readonly arrayValue = input(false, { transform: booleanAttribute });\n    /** for checkbox & radio */\n    readonly alignMode = input<'row' | 'column'>('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['arrayValue'] && this.inputs()[0]?.componentName === 'input-checkbox') {\n            this.inputs()[0].onChange(this.inputs()[0].getValue());\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\" [style.--align]=\"alignMode()\">\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","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}\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    protected readonly host = inject(MagmaInput, { optional: false, host: true });\n    protected readonly logger = inject(Logger);\n    readonly cd = inject(ChangeDetectorRef);\n    private 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\n    readonly componentName: string = 'input-common';\n    protected counter = 0;\n    protected readonly uid = computed<string>(() => `${this.componentName}-${this.counter}`);\n\n    _name = computed<string>(() => this.formControlName() || this.name() || this.id() || this.uid());\n    _id = computed<string>(() => this.id() || this.uid());\n\n    get inputElement(): HTMLInputElement | HTMLTextAreaElement | Select2 | undefined {\n        return undefined;\n    }\n\n    protected _value: any = '';\n\n    protected onError = false;\n\n    protected placeholderTimer: undefined | number = undefined;\n\n    placeholderDisplay = signal<string>('');\n\n    ngControl: NgControl | null = null;\n\n    ngOnInit(): void {\n        if (!this.host) {\n            this.onError = true;\n        }\n        this.ngControl = this.injector.get(NgControl, null, { self: true, optional: true });\n        this.host.ngControl ??= this.ngControl;\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() {\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            setTimeout(() => {\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        }\n        return null;\n    }\n\n    protected setHostLabelId() {\n        this.host.forId = `${this._id()}-input`;\n        this.host.cd.detectChanges();\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, separator] = (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        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    AfterContentChecked,\n    ChangeDetectionStrategy,\n    Component,\n    DoCheck,\n    ElementRef,\n    OnInit,\n    SimpleChanges,\n    booleanAttribute,\n    computed,\n    forwardRef,\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    styleUrls: ['./input-checkbox.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputCheckbox },\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MagmaInputCheckbox), multi: true },\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => MagmaInputCheckbox), multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n        '[class.toggle-switch]': \"mode() === 'toggle'\",\n    },\n})\nexport class MagmaInputCheckbox extends MagmaInputCommon implements OnInit, DoCheck, AfterContentChecked {\n    override readonly componentName = 'input-checkbox';\n    protected override counter = counter++;\n    protected override _baseValue = 'checked';\n\n    override readonly value = input();\n    readonly checked = input(false, { transform: booleanAttribute });\n    readonly mode = input<'checkbox' | 'toggle'>();\n\n    protected testChecked: boolean | undefined;\n    override readonly placeholder: any = undefined; // not for checkbox\n    override readonly datalist: any = undefined; // not for checkbox\n\n    override _name = computed<string>(() => 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 ngOnInit(): void {\n        super.ngOnInit();\n    }\n\n    override ngOnChanges(changes: SimpleChanges): void {\n        if (changes['checked']) {\n            this.testChecked = changes['checked'].currentValue;\n        }\n    }\n\n    ngDoCheck() {\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 = undefined;\n            this.host.cd.detectChanges();\n        }\n    }\n\n    ngAfterContentChecked(): void {\n        this.cd.detectChanges();\n    }\n\n    override writeValue(value: any): void {\n        this.testChecked =\n            (this.host.arrayValue() || this.host.inputs().length > 1) && Array.isArray(value)\n                ? value.includes(this.value())\n                : this.value()\n                  ? value === this.value()\n                  : value === true;\n\n        super.writeValue(this.getValue());\n    }\n\n    _change() {\n        this.testChecked = !this.testChecked;\n        const value = this.getValue();\n        this.onChange(value);\n        this.update.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() {\n        if (this.host.arrayValue() || this.host.inputs().length > 1) {\n            const value = this.host\n                .inputs()\n                .filter(item => item.componentName === this.componentName && (item as MagmaInputCheckbox).testChecked)\n                .map(item => item.value());\n            return value;\n        } else {\n            return this.testChecked;\n        }\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()\"\n  /><label #ref [for]=\"_id() + '-input'\" [class.empty]=\"!ref.textContent\"><ng-content></ng-content></label>\n} @else {\n  Error\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    OnInit,\n    booleanAttribute,\n    forwardRef,\n    input,\n    viewChildren,\n} 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    styleUrls: ['./input-color.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [MagmaColorPicker],\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputColor },\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MagmaInputColor), multi: true },\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => MagmaInputColor), multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n    },\n})\nexport class MagmaInputColor extends MagmaInputCommon<string[]> implements OnInit {\n    override readonly componentName = 'input-color';\n    protected override counter = counter++;\n\n    readonly input = viewChildren<ElementRef<HTMLInputElement>>('input');\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 {\n        return this.input()?.[0]?.nativeElement;\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    }\n}\n","@if (!onError) {\n  <input type=\"hidden\" [value]=\"_value ?? ''\" #input />\n  <span\n    [id]=\"_id() + '-input'\"\n    [style.--color]=\"_value\"\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 { ChangeDetectionStrategy, Component, ElementRef, forwardRef, input, viewChildren } from '@angular/core';\nimport { FormsModule, NG_VALIDATORS, NG_VALUE_ACCESSOR, ReactiveFormsModule } from '@angular/forms';\n\nimport { MagmaInputCommon } from './input-common';\n\nlet counter = 0;\n\n@Component({\n    selector: 'mg-input-date',\n    templateUrl: './input-date.component.html',\n    styleUrls: ['./input-date.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ReactiveFormsModule, FormsModule],\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputDate },\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MagmaInputDate), multi: true },\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => MagmaInputDate), multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n    },\n})\nexport class MagmaInputDate extends MagmaInputCommon<(string | { label?: string; value: string })[]> {\n    override readonly componentName: string = 'input-date';\n    protected override counter = counter++;\n\n    readonly type = input<'date' | 'datetime-local' | 'time' | 'month' | 'week'>('date');\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        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    }\n\n    focus(focus: boolean = true) {\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  <input\n    #input\n    [type]=\"type()\"\n    [name]=\"_name()\"\n    [id]=\"_id() + '-input'\"\n    [value]=\"_value ?? ''\"\n    [disabled]=\"disabled()\"\n    [readonly]=\"readonly()\"\n    (change)=\"changeValue($event)\"\n    (input)=\"inputValue($event)\"\n    (focus)=\"focus(true)\"\n    (blur)=\"focus(false)\"\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></ng-content>',\n    styleUrls: ['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 * - `{{ 1000 | numFormat:'#,##0.00' }}`  → ` 1,000.00 `\n */\n@Pipe({\n    name: 'numFormat',\n})\nexport class NumFormatPipe implements PipeTransform {\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(value: number, params?: Intl.NumberFormatOptions | string | undefined, lang?: string): string {\n        const empty = `${value}`;\n        if (empty === '' || empty === 'undefined' || empty === 'null' || empty === 'NaN') {\n            return '';\n        } else if (typeof params === 'string') {\n            return new NumFormatter(value).formatByPattern(params);\n        } else {\n            return new Intl.NumberFormat(\n                lang || NumFormatPipe.lang || 'en',\n                typeof params !== 'string' ? params : {},\n            ).format(value);\n        }\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    OnInit,\n    booleanAttribute,\n    forwardRef,\n    input,\n    viewChildren,\n} 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    styleUrls: ['./input-number.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputNumber },\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MagmaInputNumber), multi: true },\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => 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\n    extends MagmaInputCommon<(number | { label?: string; value: number })[]>\n    implements OnInit\n{\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        this.update.emit(this.inputValue(event));\n    }\n\n    inputValue(event: Event) {\n        const input = this.getInput(event);\n        const value = this.forceValue(input.value !== '' ? +input.value : undefined);\n        this._value = value;\n        this.onChange(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)) {\n                if ((value || 0) < min) {\n                    value = min;\n                }\n            }\n            const max = this.max();\n            if (max !== undefined && !Number.isNaN(max)) {\n                if ((value || 0) > max) {\n                    value = max;\n                }\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 {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    booleanAttribute,\n    forwardRef,\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 { numberAttributeOrUndefined } from '../../utils/coercion';\n\nlet counter = 0;\n\n@Component({\n    selector: 'mg-input-text',\n    templateUrl: './input-text.component.html',\n    styleUrls: ['./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: forwardRef(() => MagmaInputText), multi: true },\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => 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        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    }\n\n    focus(focus: boolean = true) {\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    }\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, forwardRef, 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    styleUrls: ['./input-password.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ReactiveFormsModule],\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputPassword },\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MagmaInputPassword), multi: true },\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => 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=\"icon-{{ show ? 'moon' : 'sun' }}\" (click)=\"toggleShowPassword()\"></span>\n  }\n} @else {\n  Error\n}\n","import {\n    AfterContentChecked,\n    ChangeDetectionStrategy,\n    Component,\n    OnInit,\n    SimpleChanges,\n    booleanAttribute,\n    computed,\n    forwardRef,\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    styleUrls: ['./input-radio.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputRadio },\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MagmaInputRadio), multi: true },\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => MagmaInputRadio), multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n    },\n})\nexport class MagmaInputRadio extends MagmaInputCommon implements OnInit, 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>(() => this.formControlName() || this.name() || this.host._id() || this.uid());\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() {\n        const value = this.value();\n        this.onChange(value);\n        this.onTouched();\n        this.update.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()\"\n  /><label #ref [for]=\"_id() + '-input'\" [class.empty]=\"!ref.textContent\">\n    <ng-content></ng-content>\n  </label>\n} @else {\n  Error\n}\n","import { ChangeDetectionStrategy, Component, forwardRef, 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    styleUrls: ['./input-range.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [ReactiveFormsModule],\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputRange },\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MagmaInputRange), multi: true },\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => 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        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        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    ChangeDetectionStrategy,\n    Component,\n    OnInit,\n    TemplateRef,\n    booleanAttribute,\n    forwardRef,\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    styleUrls: ['./input-select.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    providers: [\n        { provide: MagmaInputCommon, useExisting: MagmaInputSelect },\n        { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => MagmaInputSelect), multi: true },\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => MagmaInputSelect), multi: true },\n    ],\n    host: {\n        '[id]': '_id()',\n    },\n    imports: [Select2],\n})\nexport class MagmaInputSelect extends MagmaInputCommon implements OnInit {\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    /** 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    [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)\"\n    (autoCreateItem)=\"autoCreateItem.emit($event)\"\n    (open)=\"open.emit($event)\"\n    (close)=\"close.emit($event)\"\n    (blur)=\"blur.emit($event)\"\n    (search)=\"search.emit($event)\"\n    (scroll)=\"scroll.emit($event)\"\n    (removeOption)=\"removeOption.emit($event)\"\n  ></ng-select2>\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    ngOnInit() {\n        if (!this.autosizeDisabled()) {\n            setTimeout(() => {\n                if (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        autosize.destroy(this.elementRef.nativeElement);\n    }\n}\n","import {\n    ChangeDetectionStrategy,\n    Component,\n    ElementRef,\n    booleanAttribute,\n    forwardRef,\n    input,\n    viewChildren,\n} 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    styleUrls: ['./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: forwardRef(() => MagmaInputTextarea), multi: true },\n        { provide: NG_VALIDATORS, useExisting: forwardRef(() => 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 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        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    }\n\n    focus(focus: boolean = true) {\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  <ng-content select=\"mg-input-textarea-desc\"></ng-content>\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    styleUrls: ['./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    styleUrls: ['./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    styleUrls: ['./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    styleUrls: ['./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    styleUrls: ['./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\"></ng-content>\n}\n","import { CommonModule } from '@angular/common';\nimport { 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    styleUrls: ['./message-block.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CommonModule],\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 { CommonModule } from '@angular/common';\nimport { 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    styleUrls: ['./message.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [CommonModule],\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    styleUrls: ['./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() ?? 0) / this.size()) : 0;\n\n        if (currentPage < 1) {\n            currentPage = 1;\n        } else if (currentPage > nbPages) {\n            currentPage = nbPages;\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\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    styleUrls: ['./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    styleUrls: ['./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 { ChangeDetectionStrategy, Component, booleanAttribute, input } from '@angular/core';\n\nimport { MagmaTableCell } from './table-cell.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    styleUrls: ['./table.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class.baseline]': 'baseline()',\n    },\n})\nexport class MagmaTable {\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    over(line: number, col: number) {\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);\n                    }\n                    if (this.hover() || (this.hoverCol() && this.hoverRow())) {\n                        cell.cell.hoverLink.set(indexR === line || indexC === col);\n                    } else if (this.hoverRow()) {\n                        cell.cell.hoverLink.set(indexR === line);\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","<ng-content select=\"thead[mg]\"></ng-content>\n<ng-content select=\"tbody[mg]\"></ng-content>\n<ng-content select=\"tfoot[mg]\"></ng-content>\n","import {\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 } 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    styleUrls: ['./table-group.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class.sticky]': 'sticky()',\n        '[class.baseline]': 'baseline()',\n    },\n})\nexport class MagmaTableGroup {\n    readonly host = inject(MagmaTable, { optional: false, host: true });\n    readonly table = this.host;\n    protected readonly el = inject(ElementRef<HTMLTableSectionElement>);\n\n    readonly sticky = input(false, { transform: booleanAttribute });\n    readonly baseline = input(false, { transform: booleanAttribute });\n\n    _data = this.host._data[this.el.nativeElement.tagName.toLowerCase() as 'thead' | 'tbody' | 'tfoot'];\n\n    readonly inputs = contentChildren(MagmaTableRow);\n\n    @HostListener('mouseout')\n    mouseOut() {\n        this.table.clearOver();\n    }\n}\n","<ng-content select=\"tr[mg]\"></ng-content>\n","import {\n    AfterViewChecked,\n    AfterViewInit,\n    ChangeDetectionStrategy,\n    ChangeDetectorRef,\n    Component,\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';\n\n@Component({\n    selector: 'table[mg] > * > tr[mg]',\n    templateUrl: './table-row.component.html',\n    styleUrls: ['./table-row.component.scss'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    host: {\n        '[class.baseline]': 'baseline()',\n    },\n})\nexport class MagmaTableRow implements AfterViewInit, AfterViewChecked {\n    readonly host = inject(MagmaTableGroup, { optional: false, host: true });\n    readonly table = this.host.table;\n    readonly cd = inject(ChangeDetectorRef);\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        this.index = this.host.inputs().indexOf(this);\n        this._data = this.host._data[this.index] = [];\n\n        this.inputs().forEach(e => {\n            e.row = this.index;\n            this.host._data[this.index][e.index] = {\n                cell: e,\n                row: this,\n                textContent: e.el.nativeElement.textContent,\n            };\n            e.cd.detectChanges();\n        });\n        this.cd.detectChanges();\n    }\n\n    ngAfterViewChecked(): void {\n        this.ngAfterViewInit();\n    }\n}\n","<ng-content select=\"td[mg], th[mg]\"></ng-content>\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';\n\n@Component({\n    selector: 'table[mg] > * > * > td[mg], table[mg] > * > * > th[mg]',\n    templateUrl: './table-cell.component.html',\n    styleUrls: ['./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    protected readonly host = inject(MagmaTableRow, { optional: false, host: true });\n    readonly table = this.host.table;\n    readonly cd = inject(ChangeDetectorRef);\n    readonly el = inject(ElementRef<HTMLTableSectionElement>);\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        this.index = this.host.inputs().indexOf(this);\n        this.cd.detectChanges();\n    }\n\n    @HostListener('mouseover')\n    mouseOver() {\n        this.table.over(this.row, this.index);\n    }\n}\n","<ng-content></ng-content>\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 { 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 { 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    styleUrls: ['./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            if (this.clone.style.width !== element.offsetWidth + 'px') {\n                this.clone.style.width = element.offsetWidth + 'px';\n            }\n            if (this.clone.style.margin !== '0px') {\n                this.clone.style.margin = '0px';\n            }\n        }\n    }\n\n    ngOnChanges(changes: SimpleChanges): void {\n        if (changes['position']) {\n            this.testPosition(changes['position'].currentValue.connectionPair);\n        }\n\n        if (changes['element']) {\n            const target = this.elementContent().nativeElement;\n\n            this.portal().start.emit();\n\n            if (this.portal().showElement()) {\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 = this.portal().clickElementOrigin();\n                        if (target && actionOrigin) {\n                            clone.addEventListener('click', () => element.click());\n                        }\n\n                        // click on copy element\n                        const action = this.portal().clickElementActive();\n                        if (action) {\n                            clone.addEventListener('click', () => this.portal().clickElement.emit());\n                        }\n\n                        target.appendChild(clone);\n                    });\n                }\n            } else {\n                target.textContent = '';\n            }\n        }\n    }\n\n    next() {\n        this.portal().clickNext.emit();\n        setTimeout(() => {\n            this.host().changeStep(this.portal().nextStep(), this.portal().group());\n        }, 10);\n    }\n\n    previous() {\n        this.portal().clickPrevious.emit();\n        setTimeout(() => {\n            this.host().changeStep(this.portal().previousStep(), this.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', ['$event'])\n    escape() {\n        if (this.portal().close()) {\n            this.close();\n        } else {\n            if (this.portal().nextStep()) {\n                this.next();\n            }\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 (click)=\"previous()\" (window:keydown.arrowLeft)=\"previous()\">{{ portal().previousButtonName() }}</button>\n    }\n    @if (portal().nextStep()) {\n      <button (click)=\"next()\" (window:keydown.arrowRight)=\"next()\" limitFocusFirst=\"1\">\n        {{ portal().nextButtonName() }}\n      </button>\n    }\n    @if (portal().close()) {\n      <button (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 { 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})\nexport class MagmaWalkthrough {\n    private content: ComponentRef<MagmaWalkthroughContent> | undefined = undefined;\n    private overlayRef: OverlayRef | undefined = undefined;\n    private positionStrategy: FlexibleConnectedPositionStrategy | 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(() => {\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                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.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\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    }\n}\n","import { Directive, ElementRef, HostListener, inject, output } from '@angular/core';\n\n@Directive({\n    selector: '[clickOutside]',\n})\nexport class MagmaClickOutsideDirective {\n    readonly clickOutside = output();\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();\n        }\n    }\n\n    @HostListener('window:dialog-click', ['$event'])\n    dialogClick(event: CustomEvent<Event>) {\n        this.onClick(event.detail);\n    }\n}\n","import { Directive, OnDestroy, inject, input, numberAttribute, output } from '@angular/core';\nimport { NgModel } from '@angular/forms';\n\nimport { debounceTime, distinctUntilChanged, skip } from 'rxjs';\n\nimport { Subscriptions } from '../utils/subscriptions';\n\n@Directive({\n    selector: '[ngModelChangeDebounced]',\n})\nexport class MagmaNgModelChangeDebouncedDirective implements OnDestroy {\n    private readonly ngModel = inject(NgModel);\n    readonly ngModelChangeDebounceTime = input(500, { transform: numberAttribute });\n    readonly ngModelChangeDebounced = output<any>();\n\n    sub = Subscriptions.instance();\n\n    constructor() {\n        this.sub.push(\n            this.ngModel.control.valueChanges\n                .pipe(\n                    skip(1), // skip initial value\n                    distinctUntilChanged(),\n                    debounceTime(this.ngModelChangeDebounceTime()),\n                )\n                .subscribe(value => this.ngModelChangeDebounced.emit(value)),\n        );\n    }\n\n    ngOnDestroy() {\n        this.sub.clear();\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","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 || objB === undefined) {\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                const aCopy = [...a];\n                const bCopy = [...b];\n                if (a.length === b.length) {\n                    aCopy.sort();\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 { 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                        test = (valA as string).localeCompare(valB as string);\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                        test = valA - valB;\n                    } else if (rule.type === 'date') {\n                        test = new Date(valA).getTime() - new Date(valB).getTime();\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} 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 methode */\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            : 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 implements OnInit, OnChanges, OnDestroy {\n    private readonly renderer = inject(Renderer2);\n\n    sortable = input<any[] | undefined>([]);\n\n    sortableFilterInput = input<HTMLInputElement | MagmaInputCommon | undefined>(undefined, {\n        alias: 'sortable-filter-input',\n    });\n\n    sortableFilter = input<((key: string, item: any, index: number) => boolean) | undefined>(undefined, {\n        alias: 'sortable-filter',\n    });\n\n    currentRule?: MagmaSortRules;\n    currentRuleOrder = false;\n\n    private sortableComplete: any[] = [];\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        if (changes['sortable'] && this.sortableFilterInput() && this.sortable()) {\n            this.sortableComplete.splice(0, this.sortable.length);\n            this.sortableComplete.push(...(this.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\n        this.sortLines();\n    }\n\n    sortLines() {\n        sortWithRule(this.sortable(), this.currentRule, this.currentRuleOrder);\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 { 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()) {\n            event.stopPropagation();\n        }\n        if (this.stopClick()) {\n            event.stopPropagation();\n        }\n    }\n}\n","import { Directive, ElementRef, HostListener, OnDestroy, inject, input, numberAttribute } from '@angular/core';\n\n@Directive({\n    selector: '[mgTooltip]',\n})\nexport class MagmaTooltipDirective implements OnDestroy {\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\n    private tooltipElement?: HTMLDivElement;\n    private timer?: NodeJS.Timeout;\n\n    ngOnDestroy(): void {\n        if (this.tooltipElement) {\n            this.tooltipElement.remove();\n        }\n    }\n\n    @HostListener('mouseenter')\n    onMouseEnter() {\n        this.timer = setTimeout(() => {\n            const { x, y } = this.position();\n            this.createTooltip(x, y);\n        }, this.mgTooltipEntryDelay());\n    }\n\n    @HostListener('mouseleave')\n    onMouseLeave() {\n        if (this.timer) {\n            clearTimeout(this.timer);\n        }\n\n        this.ngOnDestroy();\n    }\n\n    private position(): { x: number; y: number } {\n        const element = this.element.nativeElement;\n        const rect = element.getBoundingClientRect();\n        const x = rect.left + element.offsetWidth / 2;\n        const y = rect.top + element.offsetHeight + 6;\n        return { x, y };\n    }\n\n    private createTooltip(x: number, y: number) {\n        if (this.timer) {\n            clearTimeout(this.timer);\n        }\n\n        const tooltipElement = document.createElement('div');\n        tooltipElement.innerHTML = this.mgTooltip();\n        document.body.appendChild(tooltipElement);\n        tooltipElement.setAttribute('class', 'tooltip-container');\n        tooltipElement.style.top = y.toString() + 'px';\n\n        const rect = tooltipElement.getBoundingClientRect();\n        tooltipElement.style.left = Math.max(Math.abs(rect.left) + 5, x).toString() + 'px';\n\n        this.tooltipElement = tooltipElement;\n\n        if (this.mgTooltipDisplayDelay()) {\n            setTimeout(() => {\n                this.ngOnDestroy();\n            }, this.mgTooltipDisplayDelay());\n        }\n    }\n}\n","export function isEmpty(value: any) {\n    if (\n        value === null ||\n        value === undefined ||\n        (Array.isArray(value) && value.length === 0) ||\n        (typeof value === 'string' && value == '') ||\n        (typeof value === 'object' && 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.startsWith('/') && value.endsWith('/')) {\n        value = new RegExp(value.replace(/^\\/(.*)\\/$/, '$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'] | filter: 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+/);\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        return (Math as any)[name](value, ...args);\n    }\n}\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 */\n@Pipe({\n    name: 'repeatFor',\n})\nexport class RepeatForPipe implements PipeTransform {\n    transform(value: number): any[] {\n        return new Array(value);\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 && MagmaCache.cache[id].endDate.getTime() > new Date().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] 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 MagmaCache.cache[id] as T;\n        }\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    FormArray,\n    FormBuilder,\n    FormControl,\n    FormGroup,\n    FormRecord,\n    ValidatorFn,\n    Validators,\n    ɵElement,\n} from '@angular/forms';\n\nimport { MagmaValidators } from '../utils/validators';\n\ndeclare type ɵNullableFormControls<T> = {\n    [K in keyof T]: ɵElement<T[K], null>;\n};\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};\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 = { state?: any } & 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 | string | ((params: any) => string);\n}\n\nexport declare type ParamsMessages<T = any> = {\n    default: T;\n    controlType?: ɵNullableFormControls<T>;\n    options?: {\n        onlySelf?: boolean;\n        emitEvent?: boolean;\n        emitModelToViewChange?: boolean;\n        emitViewToModelChange?: boolean;\n    };\n    control?: ParamsMessagesControl;\n};\n\ndeclare type ControlWithError<T> = {\n    [K in keyof T]: ParamsMessages<T[K]>;\n};\n\ndeclare type FormMapper<Type extends ControlWithError<any>> = {\n    [K in keyof Type]: [\n        Type['ParamsMessages']['controlType'] extends ɵElement<Type['ParamsMessages']['default'], any>\n            ? Type['ParamsMessages']['controlType']\n            : ɵElement<Type['ParamsMessages']['default'], any>,\n    ];\n};\n\n/**\n * For persistence during the session of use.\n *\n * Extension for Angular `FormBuilder`\n */\n@Injectable({\n    providedIn: 'root',\n})\nexport abstract class FormBuilderExtended {\n    fb = inject(FormBuilder);\n\n    /**\n     * create group validation for `mg-input` form\n     * @param controlsWithError control schemas with validators and error messages\n     * @param options validation options\n     * @returns FormGroup\n     */\n    groupWithErrorNonNullable<T extends {}>(\n        controlsWithError: ControlWithError<T>,\n        options?: AbstractControlOptions | null,\n    ) {\n        const controls: any = {};\n\n        Object.entries<ParamsMessages>(controlsWithError).forEach(([key, value]) => {\n            const validators: ValidatorFn[] = [];\n            const paramsData: Record<string, any> = {};\n\n            if (value.control && Object.keys(value.control).length) {\n                Object.entries(value.control).forEach(([subKey, control]) => {\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                    } else if (subKey === 'inlist') {\n                        validators.push(MagmaValidators.inList(control.state));\n                    } else if (subKey === 'custom') {\n                        for (const validator of Array.isArray(control) ? control : [control]) {\n                            if (typeof validator === 'function') {\n                                validators.push(validator(control.state));\n                            }\n                        }\n                    }\n                    if (control.state !== undefined) {\n                        paramsData[subKey] = control.state;\n                    }\n                });\n            }\n\n            if (value.controlType instanceof FormGroup) {\n                controls[key] = new FormGroup(value.default) as any;\n            } else if (value.controlType instanceof FormRecord) {\n                controls[key] = new FormRecord(value.default) as any;\n            } else if (value.controlType instanceof FormArray) {\n                controls[key] = new FormArray(value.default) as any;\n            } else {\n                controls[key] = new FormControl(value.default, {\n                    ...value.options,\n                    ...{ validators, nonNullable: true },\n                }) as any;\n            }\n            controls[key].controlData = value.control;\n            controls[key].controlParamsData = paramsData;\n        });\n\n        return this.fb.group<FormMapper<ControlWithError<T>>>(controls, options);\n    }\n\n    /**\n     * Mark form touched and display errors\n     * @param form form to update error message\n     */\n    validateForm(form: FormGroup | FormArray) {\n        form.markAllAsTouched({ emitEvent: true });\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","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","/**\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(date.getTime() + days * 24 * 60 * 60 * 1000);\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    return element\n        ? getComputedStyle(element).getPropertyValue(params.cssVar).split(regexpSlash(params.colorSeparator))\n        : 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)?.filter(e => e);\n        return this._palette;\n    }\n\n    clear() {\n        this._palette = undefined;\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","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, 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, fileName: string, contentType?: string) {\n    var a = document.createElement('a');\n    if (content.startsWith('data:')) {\n        a.href = content;\n    } else {\n        var file = new Blob([content], contentType ? { type: contentType } : undefined);\n        a.href = URL.createObjectURL(file);\n    }\n    a.download = fileName;\n    a.click();\n}\n\nexport function blobToBase64(blob: Blob): Promise<string> {\n    return new Promise(resolve => {\n        const reader = new FileReader();\n        reader.onloadend = () => resolve(reader.result as string);\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 characters and  `\\:*?\"<>` symbols\n * @param string text with accents, case and symbols\n * @param limit text with accents, case and symbols\n * @returns text without accents, case and symbols\n */\nexport function normalizeFileName(string: string, limit: number = 200) {\n    return string\n        .toLocaleLowerCase()\n        .normalize('NFD')\n        .replace(/[\\p{Diacritic}\\/|\\\\:*?\"<>]/gu, '')\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","export function randomNumber(size: number = 9) {\n    return `${Math.round(Math.random() * Math.pow(10, size))}`.padStart(size, '0');\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","/*\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/dialog/dialog.component';\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';\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-model-change-debounced.directive';\nexport * from './lib/directives/ngInit.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';\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';\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":["connectedPosition","i1.MagmaClickEnterDirective","counter","i1","i1.MagmaLimitFocusDirective"],"mappings":"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"}