{"version":3,"file":"deja-js-component-color-selector.mjs","sources":["../../../../projects/deja-js/component/color-selector/color-fab.component.ts","../../../../projects/deja-js/component/color-selector/color-fab.class.ts","../../../../projects/deja-js/component/color-selector/color-selector.component.ts","../../../../projects/deja-js/component/color-selector/color-selector.component.html","../../../../projects/deja-js/component/color-selector/index.ts","../../../../projects/deja-js/component/color-selector/deja-js-component-color-selector.ts"],"sourcesContent":["/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\nimport { BooleanInput } from '@angular/cdk/coercion';\nimport { Component, ElementRef, Input } from '@angular/core';\nimport { Destroy } from '@deja-js/component/core';\nimport { combineLatestWith, map, takeUntil } from 'rxjs';\n\nimport { DejaColorFab } from './color-fab.class';\n\n@Component({\n    selector: 'deja-color-fab',\n    styleUrls: [\n        './color-fab.component.scss'\n    ],\n    template: '<ng-content></ng-content>'\n})\nexport class DejaColorFabComponent extends Destroy {\n    public element: HTMLElement;\n\n    private _colorFab: DejaColorFab;\n\n    public constructor(el: ElementRef) {\n        super();\n        this.element = el.nativeElement as HTMLElement;\n    }\n\n    @Input()\n    public set color(colorFab: DejaColorFab) {\n        this._colorFab = colorFab;\n\n        if (colorFab) {\n            const toggleAttribute = (attribute: string, value: BooleanInput): void => {\n                if (value) {\n                    this.element.setAttribute(attribute, value.toString());\n                } else {\n                    this.element.removeAttribute(attribute);\n                }\n            };\n\n            colorFab.active$.pipe(\n                takeUntil(this.destroyed$)\n            ).subscribe(value => toggleAttribute('active', value));\n\n            colorFab.color$.pipe(\n                combineLatestWith(colorFab.disabled$),\n                map(([color, disabled]) => color && disabled ? color.grayScale : color),\n                takeUntil(this.destroyed$)\n            ).subscribe(color => this.element.style.backgroundColor = color ? color.toHex() : '');\n        }\n    }\n\n    public get tile(): DejaColorFab {\n        return this._colorFab;\n    }\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { Color } from '@deja-js/component/core/graphics';\nimport { BehaviorSubject, Subject } from 'rxjs';\n\nexport class DejaColorFab {\n    public color$: Subject<Color>;\n    public active$: Subject<boolean>;\n    public disabled$: Subject<boolean>;\n\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    public constructor(private _color: Color, private _disabled = false, private _active = false) {\n        this.color$ = new BehaviorSubject<Color>(_color);\n        this.disabled$ = new BehaviorSubject<boolean>(_disabled);\n        this.active$ = new BehaviorSubject<boolean>(_active);\n    }\n\n    public set color(value: Color) {\n        this.color$.next(this._color = value);\n    }\n\n    public get color(): Color {\n        return this._color;\n    }\n\n    public set disabled(value: boolean) {\n        this.disabled$.next(this._disabled = value);\n    }\n\n    public get disabled(): boolean {\n        return this._disabled;\n    }\n\n    public set active(value: boolean) {\n        this.active$.next(this._active = value);\n    }\n\n    public get active(): boolean {\n        return this._active;\n    }\n}\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { BooleanInput, coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { Component, ElementRef, EventEmitter, Input, OnDestroy, Optional, Output, Self } from '@angular/core';\nimport { ControlValueAccessor, NgControl } from '@angular/forms';\nimport { Color, MaterialColor } from '@deja-js/component/core/graphics';\nimport { BehaviorSubject, combineLatestWith, debounce, debounceTime, delay, distinctUntilChanged, filter, fromEvent, map, mergeWith, Observable, Subject, take, takeUntil, tap, timer } from 'rxjs';\n\nimport { DejaColorFab } from './color-fab.class';\n\n\nexport interface IColorEvent extends CustomEvent {\n    color: Color;\n}\n\n/** Composant de selection d'une couleur. */\n@Component({\n    selector: 'deja-color-selector',\n    styleUrls: [\n        './color-selector.component.scss'\n    ],\n    templateUrl: './color-selector.component.html'\n})\nexport class DejaColorSelectorComponent implements ControlValueAccessor, OnDestroy {\n    private static INDEX_ATTRIBUTE = 'index';\n\n    /** Evénement déclenché lorsqu'une couleur est survolée par la souris. */\n    @Output() public readonly colorhover = new EventEmitter<IColorEvent>();\n\n    public _resetcolor: Color;\n\n    protected destroyed$ = new Subject<void>();\n\n    private _value: Color;\n\n    private _colors$ = new BehaviorSubject<Color[]>([]);\n\n    private _resetcolor$ = new BehaviorSubject<Color>(null);\n\n    private _colorFabs = [] as DejaColorFab[];\n    private _subColorFabs = [] as DejaColorFab[];\n    private _selectedBaseIndex = 0;\n    private _selectedSubIndex: number;\n    private _disabled = false;\n\n    private _colorFabs$: Observable<DejaColorFab[]>;\n    private selectedBaseIndex$ = new BehaviorSubject<number>(0);\n\n    private _subColorFabs$: Observable<DejaColorFab[]>;\n    private selectedSubIndex$ = new BehaviorSubject<number>(0);\n\n    private hilightedBaseIndex: number;\n    private hilightedBaseIndex$ = new Subject<number>();\n\n    private hilightedSubIndex: number;\n    private hilightedSubIndex$ = new Subject<number>();\n\n    public get subColorFabs(): DejaColorFab[] {\n        return this._subColorFabs;\n    }\n\n    public get subColorFabs$(): Observable<DejaColorFab[]> {\n        return this._subColorFabs$;\n    }\n\n    public get colorFabs$(): Observable<DejaColorFab[]> {\n        return this._colorFabs$;\n    }\n\n    @Input() public set resetcolor(value: string | Color) {\n        if (value === '') {\n            value = new Color();\n        }\n        const color = value && (typeof value === 'string' ? Color.parse(value) : value);\n        this._resetcolor$.next(color || null);\n    }\n\n    public constructor(elementRef: ElementRef, @Self() @Optional() public control: NgControl) {\n        const element = elementRef.nativeElement as HTMLElement;\n\n        if (this.control) {\n            this.control.valueAccessor = this;\n        }\n\n        this._colorFabs$ = this._colors$.pipe(\n            map(colors => colors.map((color, index) => new DejaColorFab(color, this._disabled, index === this._selectedBaseIndex))),\n            tap(colorFabs => this._colorFabs = colorFabs));\n\n        this._colors$.pipe(\n            combineLatestWith(this._resetcolor$),\n            takeUntil(this.destroyed$)\n        ).subscribe(([colors, resetcolor]) => {\n            if (!colors || !colors.length || !resetcolor) {\n                this._resetcolor = undefined;\n                return;\n            }\n\n            const allColors = colors.reduce((acc, color) => {\n                const materialColor = color as MaterialColor;\n                if (materialColor.subColors) {\n                    acc = [...acc, ...materialColor.subColors];\n                } else {\n                    acc.push(color);\n                }\n                return acc;\n            }, [] as Color[]);\n\n            let bestColor: Color;\n            allColors.reduce((bestDiff, color) => {\n                // The best formula we found for our eye\n                const diff = 0.3 * Math.abs(color.r - resetcolor.r) + 0.4 * Math.abs(color.g - resetcolor.g) + 0.25 * Math.abs(color.b - resetcolor.b);\n                if (diff < bestDiff) {\n                    bestColor = color;\n                    return diff;\n                }\n                return bestDiff;\n            }, 3 * 255);\n\n            this._resetcolor = bestColor;\n        });\n\n        const hilightedBaseIndex$ = this.hilightedBaseIndex$.pipe(\n            distinctUntilChanged(),\n            debounce(colorIndex => timer(colorIndex !== undefined ? 100 : 1000)),\n            tap(colorIndex => {\n                this.hilightedBaseIndex = colorIndex;\n                const event = new CustomEvent('ColorEvent', {}) as IColorEvent;\n                event.color = colorIndex ? this._colorFabs?.[colorIndex]?.color : this.value;\n                this.colorhover.emit(event);\n            }),\n            map(colorIndex => colorIndex !== undefined ? colorIndex : this._selectedBaseIndex || 0)\n        );\n\n        const selectedBaseIndex$ = this.selectedBaseIndex$.pipe(\n            tap(colorIndex => this._selectedBaseIndex = colorIndex)\n        );\n\n        this._subColorFabs$ = hilightedBaseIndex$.pipe(\n            mergeWith(selectedBaseIndex$),\n            distinctUntilChanged(),\n            tap(colorIndex => {\n                if (this._colorFabs) {\n                    this._colorFabs.forEach((colorFab, index) => colorFab.active = index === colorIndex);\n                }\n            }),\n            debounceTime(100),\n            tap(() => element.setAttribute('sub-tr', '')),\n            map(baseIndex => this._colorFabs?.[baseIndex] && (this._colorFabs[baseIndex].color as MaterialColor).subColors),\n            map(colors => colors?.map((color, index) => new DejaColorFab(color, this._disabled, index === this._selectedSubIndex))),\n            tap(subColorFabs => this._subColorFabs = subColorFabs)\n        );\n\n        this._subColorFabs$.pipe(\n            delay(100),\n            takeUntil(this.destroyed$)\n        ).subscribe(() => element.removeAttribute('sub-tr'));\n\n        const hilightedSubIndex$ = this.hilightedSubIndex$.pipe(\n            distinctUntilChanged(),\n            debounce(subColorIndex => timer(subColorIndex !== undefined ? 200 : 1100)),\n            tap(subColorIndex => {\n                this.hilightedSubIndex = subColorIndex;\n                const event = new CustomEvent('ColorEvent', {}) as IColorEvent;\n                event.color = subColorIndex !== undefined ? this._subColorFabs?.[subColorIndex]?.color : this.value;\n                this.colorhover.emit(event);\n            }),\n            map(subColorIndex => subColorIndex !== undefined ? subColorIndex : this._selectedSubIndex || 0)\n        );\n\n        const selectedSubIndex$ = this.selectedSubIndex$.pipe(\n            distinctUntilChanged(),\n            tap(subColorIndex => this._selectedSubIndex = subColorIndex)\n        );\n\n        hilightedSubIndex$.pipe(\n            mergeWith(selectedSubIndex$),\n            filter(() => !!this._subColorFabs),\n            takeUntil(this.destroyed$)\n        ).subscribe(subColorIndex => this._subColorFabs.forEach((colorFab, index) => colorFab.active = index === subColorIndex));\n\n        fromEvent<MouseEvent>(element, 'mousemove').pipe(\n            filter(() => !this._disabled),\n            takeUntil(this.destroyed$)\n        ).subscribe(event => {\n            const target = event.target as HTMLElement;\n            // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access\n            const targetIndex = (<any>target.attributes)[DejaColorSelectorComponent.INDEX_ATTRIBUTE];\n            if (target.hasAttribute('basecolor')) {\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n                this.hilightedBaseIndex$.next(+targetIndex.value);\n                this.hilightedSubIndex$.next(this.hilightedSubIndex);\n            } else if (target.hasAttribute('subcolor')) {\n                this.hilightedBaseIndex$.next(this.hilightedBaseIndex);\n                // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n                this.hilightedSubIndex$.next(+targetIndex.value);\n            } else {\n                this.hilightedBaseIndex$.next(undefined);\n                this.hilightedSubIndex$.next(undefined);\n            }\n        });\n\n        fromEvent<Event>(element, 'click').pipe(\n            filter(() => !this._disabled),\n            takeUntil(this.destroyed$)\n        ).subscribe(event => {\n            const target = event.target as HTMLElement;\n            if (target.hasAttribute('basecolor') || target.hasAttribute('subcolor')) {\n                this.value = Color.parse(target.style.backgroundColor);\n            }\n        });\n    }\n\n    /** Retourne ou definit si le selecteur est desactivé. */\n    @Input()\n    public set disabled(value: BooleanInput) {\n        const disabled = coerceBooleanProperty(value);\n        if (this._colorFabs) {\n            this._colorFabs.forEach(colorFab => colorFab.disabled = disabled);\n        }\n        if (this._subColorFabs) {\n            this._subColorFabs.forEach(colorFab => colorFab.disabled = disabled);\n        }\n        this._disabled = disabled || null;\n    }\n\n    public get disabled(): BooleanInput {\n        return this._disabled;\n    }\n\n    /**\n     * Retourne la meilleure couleur d'affichage pour une couleur donnée\n     */\n    public getBestTextColor(value: string): string {\n        const backColor = Color.fromHex(value);\n        return backColor.bestTextColor.toHex();\n    }\n\n    public resetDefaultColor(): void {\n        this.value = this._resetcolor;\n    }\n\n    /**\n     * Definit les couleurs selectionables affichées.\n     *\n     * @param colors Structure hierarchique des couleurs selectionablea suivant le modele MaterialColor.\n     */\n    @Input()\n    public set colors(colors: Color[]) {\n        this._colors$.next(colors || []);\n        this.selectedBaseIndex$.next(0);\n    }\n\n    public set selectedColor(color: Color) {\n        const selectSubIndex = (index: number): void => {\n            timer(1).pipe(\n                take(1),\n                takeUntil(this.destroyed$)\n            ).subscribe(() => this.selectedSubIndex$.next(index));\n        };\n\n        if (this._colorFabs) {\n            const find = this._colorFabs.find((colorFab, index) => {\n                const baseColor = colorFab.color as MaterialColor;\n                const subIndex = baseColor.subColors?.findIndex(subColor => Color.equals(subColor, color));\n                if (subIndex !== undefined && subIndex >= 0) {\n                    this.selectedBaseIndex$.next(index);\n                    selectSubIndex(subIndex);\n                    // Break\n                    return true;\n                } else if (Color.equals(baseColor, color)) {\n                    this.selectedBaseIndex$.next(index);\n                    selectSubIndex(0);\n                    // Break\n                    return true;\n                }\n                // Continue\n                return false;\n            });\n\n            if (!find) {\n                this.selectedBaseIndex$.next(0);\n                selectSubIndex(0);\n            }\n        }\n    }\n\n    // ************* ControlValueAccessor Implementation **************\n    // set accessor including call the onchange callback\n    public set value(value: Color) {\n        if (!Color.equals(value, this._value)) {\n            this.writeValue(value);\n            this.onChangeCallback(value);\n        }\n    }\n\n    // get accessor\n    public get value(): Color {\n        return this._value;\n    }\n\n    // From ControlValueAccessor interface\n    public writeValue(value: Color): void {\n        this._value = value;\n        this.selectedColor = value;\n    }\n\n    // From ControlValueAccessor interface\n    public registerOnChange(fn: (_a: unknown) => void): void {\n        this.onChangeCallback = fn;\n    }\n\n    // From ControlValueAccessor interface\n    public registerOnTouched(fn: () => void): void {\n        this.onTouchedCallback = fn;\n    }\n\n    public setDisabledState(isDisabled: boolean): void {\n        this.disabled = isDisabled;\n    }\n    // ************* End of ControlValueAccessor Implementation **************\n\n    // ngModel\n    public onTouchedCallback = (): void => undefined;\n    public onChangeCallback = (_a: unknown): void => undefined;\n\n    public ngOnDestroy(): void {\n        this.destroyed$.next();\n        this.destroyed$.unsubscribe();\n    }\n}\n","<div class=\"colors-wrapper\" id=\"basecolors\">\n\t<deja-color-fab [attr.basecolor]=\"clrfab.color?.toHex() || ''\" small *ngFor=\"let clrfab of colorFabs$ | async; let index=index\" [attr.index]=\"index\" [color]=\"clrfab\"></deja-color-fab>\n</div>\n<div class=\"colors-wrapper\" id=\"subcolors\">\n\t<deja-color-fab [attr.subcolor]=\"clrfab.color?.toHex() || ''\" *ngFor=\"let clrfab of subColorFabs$ | async; let index=index\" [attr.index]=\"index\" [style.transition-duration]=\"(100*index)+'ms'\" [color]=\"clrfab\"></deja-color-fab>\n</div>\n<div id=\"reset\" *ngIf=\"!!_resetcolor\" (click)=\"resetDefaultColor()\" [style.background-color]=\"_resetcolor.toHex()\">\n\t<mat-icon [style.color]=\"getBestTextColor(_resetcolor.toHex())\">undo</mat-icon>\n</div>\n","/*\n *  @license\n *  Copyright Hôpitaux Universitaires de Genève. All Rights Reserved.\n *\n *  Use of this source code is governed by an Apache-2.0 license that can be\n *  found in the LICENSE file at https://github.com/DSI-HUG/dejajs-components/blob/master/LICENSE\n */\n\nimport { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\n\nimport { DejaColorFabComponent } from './color-fab.component';\nimport { DejaColorSelectorComponent } from './color-selector.component';\n\n@NgModule({\n    declarations: [DejaColorFabComponent, DejaColorSelectorComponent],\n    exports: [DejaColorFabComponent, DejaColorSelectorComponent],\n    imports: [\n        CommonModule,\n        FormsModule,\n        MatButtonModule,\n        MatIconModule\n    ]\n})\nexport class DejaColorSelectorModule { }\n\nexport * from './color-fab.class';\nexport * from './color-fab.component';\nexport * from './color-selector.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i4.DejaColorFabComponent"],"mappings":"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"}