{"version":3,"file":"deja-js-component-core-graphics.mjs","sources":["../../../../projects/deja-js/component/core/graphics/position.ts","../../../../projects/deja-js/component/core/graphics/rect.ts","../../../../projects/deja-js/component/core/graphics/circle.ts","../../../../projects/deja-js/component/core/graphics/directions.ts","../../../../projects/deja-js/component/core/graphics/icon.service.ts","../../../../projects/deja-js/component/core/graphics/size.ts","../../../../projects/deja-js/component/core/graphics/unit-value.ts","../../../../projects/deja-js/component/core/graphics/color.ts","../../../../projects/deja-js/component/core/graphics/material-color.ts","../../../../projects/deja-js/component/core/graphics/material-colors.service.ts","../../../../projects/deja-js/component/core/graphics/index.ts","../../../../projects/deja-js/component/core/graphics/deja-js-component-core-graphics.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 */\n\nexport class Position {\n    public left: number;\n    public top: number;\n\n    public constructor(left?: number, top?: number) {\n        this.left = left || 0;\n        this.top = top || 0;\n    }\n\n    public static equals(p1: Position, p2: Position): boolean {\n        return p1.left === p2.left && p1.top === p2.top;\n    }\n\n    public offset(x: number, y: number): Position {\n        return new Position(\n            this.left + x,\n            this.top + y\n        );\n    }\n\n    public clone(): Position {\n        return new Position(this.left, this.top);\n    }\n\n    public constrain(xmin: number, xmax: number, ymin: number, ymax: number): Position {\n        return new Position(Math.min(Math.max(xmin, this.left), xmax), Math.min(Math.max(ymin, this.top), ymax));\n    }\n\n    public around(x: number, y: number, xspan: number, yspan?: number): boolean {\n        return Math.abs(this.left - x) <= xspan && Math.abs(this.top - y) <= (yspan || xspan);\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 { Position } from './position';\n\ninterface IRect {\n    left: number;\n    top: number;\n    right: number;\n    bottom: number;\n    width: number;\n    height: number;\n}\n\nexport interface IRectOverlapInfos {\n    area: number;\n    width: number;\n    height: number;\n    direction: 'horizontal' | 'vertical';\n}\n\nexport class Rect {\n    public left: number;\n    public top: number;\n    public width: number;\n    public height: number;\n\n    public constructor(left?: number | unknown, top?: number, width?: number, height?: number) {\n        if (typeof left === 'number') {\n            this.left = left || 0;\n            this.top = top || 0;\n            this.width = width || 0;\n            this.height = height || 0;\n        } else {\n            const bounds = (left || {}) as IRect;\n            this.left = bounds.left || 0;\n            this.top = bounds.top || 0;\n            this.width = bounds.right !== undefined ? bounds.right - this.left : bounds.width || 0;\n            this.height = bounds.bottom !== undefined ? bounds.bottom - this.top : bounds.height || 0;\n        }\n    }\n\n    public static equals(r1: Rect, r2: Rect): boolean {\n        return r1 && r2 && r1.left === r2.left && r1.top === r2.top && r1.width === r2.width && r1.height === r2.height;\n    }\n\n    public static union(r1: Rect, r2: Rect): Rect {\n        return Rect.fromLTRB(Math.min(r1.left, r2.left), Math.min(r1.top, r2.top), Math.max(r1.left + r1.width, r2.left + r2.width), Math.max(r1.top + r1.height, r2.top + r2.height));\n    }\n\n    public static overlapInfos(rect1: Rect, rect2: Rect): IRectOverlapInfos {\n        const x = Math.max(0, Math.min(rect1.right, rect2.right) - Math.max(rect1.left, rect2.left));\n        const y = Math.max(0, Math.min(rect1.bottom, rect2.bottom) - Math.max(rect1.top, rect2.top));\n        return {\n            area: x * y,\n            width: x,\n            height: y,\n            direction: x > y ? 'horizontal' : 'vertical'\n        };\n    }\n\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    public static fromLTRB(left: number, top: number, right: number, bottom: number): Rect {\n        return new Rect(left, top, right - left, bottom - top);\n    }\n\n    public static fromPoints(p1: Position, p2: Position): Rect {\n        return Rect.fromLTRB(Math.min(p1.left, p2.left), Math.min(p1.top, p2.top), Math.max(p1.left, p2.left), Math.max(p1.top, p2.top));\n    }\n\n    public set right(value: number) {\n        this.width = value - this.left;\n    }\n\n    public get right(): number {\n        return this.left + this.width;\n    }\n\n    public set bottom(value: number) {\n        this.height = value - this.top;\n    }\n\n    public get bottom(): number {\n        return this.top + this.height;\n    }\n\n    public get position(): Position {\n        return new Position(this.left, this.top);\n    }\n\n    public offset(x: number, y: number): Rect {\n        return new Rect(\n            this.left + x,\n            this.top + y,\n            this.width,\n            this.height\n        );\n    }\n\n    public adjacent(bounds: Rect): boolean {\n        return bounds.left <= this.right &&\n            bounds.right >= this.left &&\n            bounds.top <= this.bottom &&\n            bounds.bottom >= this.top;\n    }\n\n    public contains(bounds: Rect): boolean {\n        return bounds.left >= this.left && bounds.right <= this.right && bounds.top >= this.top && bounds.bottom <= this.bottom;\n    }\n\n    public containsPoint(point: Position): boolean {\n        return point.left >= this.left && point.left <= this.right && point.top >= this.top && point.top <= this.bottom;\n    }\n\n    public intersectWith(bounds: Rect): boolean {\n        return bounds.left < this.right &&\n            bounds.right > this.left &&\n            bounds.top < this.bottom &&\n            bounds.bottom > this.top;\n    }\n\n    public isEmpty(): boolean {\n        return !this.width || !this.height;\n    }\n\n    public clone(): Rect {\n        return new Rect(this.left, this.top, this.width, this.height);\n    }\n\n    public toClientRect(): ClientRect {\n        return {\n            left: this.left,\n            top: this.top,\n            bottom: this.bottom,\n            right: this.right,\n            width: this.width,\n            height: this.height\n        } as ClientRect;\n    }\n\n    /**\n     * @deprecated use toClientRect instead\n     */\n    public toRectStruct(): ClientRect {\n        return this.toClientRect();\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 { Position } from './position';\nimport { Rect } from './rect';\n\ninterface IRect {\n    left: number;\n    top: number;\n    width: number;\n    height: number;\n}\n\nexport class Circle {\n    /** Create e new circle instance from the center position and the radius */\n    public constructor(public center: Position, public radius: number) {\n\n    }\n\n    /**\n     * Return a circle from his outer rectangle.\n     *\n     * @param left      The left position of the circle center or a rectangle object.\n     * @param top       The top position of the circle center\n     * @param width     The width of the outer rectangle\n     * @param height    The height of the outer rectangle\n     * @return A circle contained end centered inside the passed ractangle\n     */\n    public static fromOuterRect(left?: number | unknown, top?: number, width?: number, height?: number): Circle {\n        if (typeof left === 'object') {\n            const bounds = left as IRect;\n            left = bounds.left;\n            top = bounds.top;\n            width = bounds.width;\n            height = bounds.height;\n        }\n        const radius = Math.min(width, height) / 2;\n\n        const center = new Position(+left + (width / 2), top + (height / 2));\n        return new Circle(center, radius);\n    }\n\n    /** Return a boolean indicating if the two circle are equals */\n    public static equals(c1: Circle, c2: Circle): boolean {\n        return !c1 === !c2 && Position.equals(c1.center, c2.center) && c1.radius === c2.radius;\n    }\n\n    /** Return the outer rectangle of the circle */\n    public get outerRect(): Rect {\n        return Rect.fromLTRB(this.center.left - this.radius, this.center.top - this.radius, this.center.left + this.radius, this.center.top + this.radius);\n    }\n\n    /** Return a boolean indicate if the circle contains the passed circle */\n    public contains(circle: Circle): boolean {\n        return this.outerRect.contains(circle.outerRect);\n    }\n\n    /** Return a boolean indicate if the passed point is inside the circle */\n    public containsPoint(point: Position): boolean {\n        const dx = Math.abs(point.left - this.center.left);\n        const dy = Math.abs(point.top - this.center.top);\n\n        return dx * dx + dy * dy <= this.radius * this.radius;\n    }\n\n    /** Return a the cloned of the cirlce */\n    public clone(): Circle {\n        return new Circle(this.center, this.radius);\n    }\n\n    /** Inflate the circle radius with the specified value */\n    public inflate(radius: number): Circle {\n        return new Circle(this.center, this.radius + radius);\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\n/* eslint-disable @typescript-eslint/naming-convention */\nexport enum Directions {\n    none = 0x0,\n    left = 0x1,\n    right = 0x2,\n    top = 0x4,\n    bottom = 0x8,\n    horizontal = 0x3,\n    vertical = 0xc,\n    all = 0xf,\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 { Injectable } from '@angular/core';\nimport { MatIconRegistry } from '@angular/material/icon';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class IconService {\n\n    public constructor(private iconRegistry: MatIconRegistry, private sanitizer: DomSanitizer) {\n        const defaultFontSetClasses = iconRegistry.getDefaultFontSetClass();\n        const outlinedFontSetClasses = defaultFontSetClasses.concat(['material-symbols-outlined']);\n        iconRegistry.setDefaultFontSetClass(...outlinedFontSetClasses);\n    }\n\n    /**\n     * register an SVG icon to the MatIconRegistry, so that this icon can be used with the MatIcon component.\n     *\n     * &lt;mat-icon svgIcon='my-svg-icon' &gt;&lt;/mat-icon&gt;\n     *\n     * @param iconName\n     * @param iconUrl\n     */\n    public addSvgIcon(iconName: string, iconUrl: string): void {\n        this.iconRegistry.addSvgIcon(iconName, this.sanitizer.bypassSecurityTrustResourceUrl(iconUrl));\n    }\n\n    public useMaterialIcons(value = true): void {\n        this.iconRegistry.registerFontClassAlias('deja-icons', value ? 'material-icons' : null);\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\nexport class Size {\n    public width: number;\n    public height: number;\n\n    public constructor(width?: number, height?: number) {\n        this.width = width || 0;\n        this.height = height || 0;\n    }\n\n    public static equals(s1: Size, s2: Size): boolean {\n        return s1.width === s2.width && s1.height === s2.height;\n    }\n\n    public clone(): Size {\n        return new Size(this.width, this.height);\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 { NumberInput } from '@angular/cdk/coercion';\n\nexport class UnitValue {\n    public value: number;\n    public unit: string;\n\n    public constructor(value?: NumberInput, unit?: string) {\n        if (typeof value === 'string') {\n            // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec\n            const match = value.match(/([0-9.]+)(.*)/);\n            this.value = match && match.length >= 2 && parseInt(match[1], 10);\n            this.unit = match && match.length >= 3 && match[2];\n        } else {\n            this.value = value;\n            this.unit = unit;\n        }\n    }\n\n    public static equals(s1: UnitValue, s2: UnitValue): boolean {\n        return s1.value === s2.value && s1.unit === s2.unit;\n    }\n\n    public clone(): UnitValue {\n        return new UnitValue(this.value, this.unit);\n    }\n\n    public toString(): string {\n        return String(this.value) + this.unit;\n    }\n\n    public isInvalid(): boolean {\n        return this.value === undefined || this.value === null || isNaN(this.value);\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 */\nexport interface HSL {\n    h: number;\n    s: number;\n    l: number;\n}\n\nexport class Color {\n    private static COLOR_NAMES = {\n        aliceblue: '#f0f8ff',\n        antiquewhite: '#faebd7',\n        aqua: '#00ffff',\n        aquamarine: '#7fffd4',\n        azure: '#f0ffff',\n        beige: '#f5f5dc',\n        bisque: '#ffe4c4',\n        black: '#000000',\n        blanchedalmond: '#ffebcd',\n        blue: '#0000ff',\n        blueviolet: '#8a2be2',\n        brown: '#a52a2a',\n        burlywood: '#deb887',\n        cadetblue: '#5f9ea0',\n        chartreuse: '#7fff00',\n        chocolate: '#d2691e',\n        coral: '#ff7f50',\n        cornflowerblue: '#6495ed',\n        cornsilk: '#fff8dc',\n        crimson: '#dc143c',\n        cyan: '#00ffff',\n        darkblue: '#00008b',\n        darkcyan: '#008b8b',\n        darkgoldenrod: '#b8860b',\n        darkgray: '#a9a9a9',\n        darkgreen: '#006400',\n        darkkhaki: '#bdb76b',\n        darkmagenta: '#8b008b',\n        darkolivegreen: '#556b2f',\n        darkorange: '#ff8c00',\n        darkorchid: '#9932cc',\n        darkred: '#8b0000',\n        darksalmon: '#e9967a',\n        darkseagreen: '#8fbc8f',\n        darkslateblue: '#483d8b',\n        darkslategray: '#2f4f4f',\n        darkturquoise: '#00ced1',\n        darkviolet: '#9400d3',\n        deeppink: '#ff1493',\n        deepskyblue: '#00bfff',\n        dimgray: '#696969',\n        dodgerblue: '#1e90ff',\n        firebrick: '#b22222',\n        floralwhite: '#fffaf0',\n        forestgreen: '#228b22',\n        fuchsia: '#ff00ff',\n        gainsboro: '#dcdcdc',\n        ghostwhite: '#f8f8ff',\n        gold: '#ffd700',\n        goldenrod: '#daa520',\n        gray: '#808080',\n        green: '#008000',\n        greenyellow: '#adff2f',\n        honeydew: '#f0fff0',\n        hotpink: '#ff69b4',\n        indianred: '#cd5c5c',\n        indigo: '#4b0082',\n        ivory: '#fffff0',\n        khaki: '#f0e68c',\n        lavender: '#e6e6fa',\n        lavenderblush: '#fff0f5',\n        lawngreen: '#7cfc00',\n        lemonchiffon: '#fffacd',\n        lightblue: '#add8e6',\n        lightcoral: '#f08080',\n        lightcyan: '#e0ffff',\n        lightgoldenrodyellow: '#fafad2',\n        lightgrey: '#d3d3d3',\n        lightgreen: '#90ee90',\n        lightpink: '#ffb6c1',\n        lightsalmon: '#ffa07a',\n        lightseagreen: '#20b2aa',\n        lightskyblue: '#87cefa',\n        lightslategray: '#778899',\n        lightsteelblue: '#b0c4de',\n        lightyellow: '#ffffe0',\n        lime: '#00ff00',\n        limegreen: '#32cd32',\n        linen: '#faf0e6',\n        magenta: '#ff00ff',\n        maroon: '#800000',\n        mediumaquamarine: '#66cdaa',\n        mediumblue: '#0000cd',\n        mediumorchid: '#ba55d3',\n        mediumpurple: '#9370d8',\n        mediumseagreen: '#3cb371',\n        mediumslateblue: '#7b68ee',\n        mediumspringgreen: '#00fa9a',\n        mediumturquoise: '#48d1cc',\n        mediumvioletred: '#c71585',\n        midnightblue: '#191970',\n        mintcream: '#f5fffa',\n        mistyrose: '#ffe4e1',\n        moccasin: '#ffe4b5',\n        navajowhite: '#ffdead',\n        navy: '#000080',\n        oldlace: '#fdf5e6',\n        olive: '#808000',\n        olivedrab: '#6b8e23',\n        orange: '#ffa500',\n        orangered: '#ff4500',\n        orchid: '#da70d6',\n        palegoldenrod: '#eee8aa',\n        palegreen: '#98fb98',\n        paleturquoise: '#afeeee',\n        palevioletred: '#d87093',\n        papayawhip: '#ffefd5',\n        peachpuff: '#ffdab9',\n        peru: '#cd853f',\n        pink: '#ffc0cb',\n        plum: '#dda0dd',\n        powderblue: '#b0e0e6',\n        purple: '#800080',\n        rebeccapurple: '#663399',\n        red: '#ff0000',\n        rosybrown: '#bc8f8f',\n        royalblue: '#4169e1',\n        saddlebrown: '#8b4513',\n        salmon: '#fa8072',\n        sandybrown: '#f4a460',\n        seagreen: '#2e8b57',\n        seashell: '#fff5ee',\n        sienna: '#a0522d',\n        silver: '#c0c0c0',\n        skyblue: '#87ceeb',\n        slateblue: '#6a5acd',\n        slategray: '#708090',\n        snow: '#fffafa',\n        springgreen: '#00ff7f',\n        steelblue: '#4682b4',\n        tan: '#d2b48c',\n        teal: '#008080',\n        thistle: '#d8bfd8',\n        tomato: '#ff6347',\n        turquoise: '#40e0d0',\n        violet: '#ee82ee',\n        wheat: '#f5deb3',\n        white: '#ffffff',\n        whitesmoke: '#f5f5f5',\n        yellow: '#ffff00',\n        yellowgreen: '#9acd3'\n    } as Record<string, string>;\n\n    private _r: number;\n    private _g: number;\n    private _b: number;\n    private _a: number;\n\n    public constructor(r?: number, g?: number, b?: number, a?: number) {\n        this._r = r;\n        this._g = g;\n        this._b = b;\n        this._a = a;\n    }\n\n    public static equals(c1: Color, c2: Color): boolean {\n        return !c1 === !c2 && !c1.isEmpty() && c1.r === c2.r && c1.g === c2.g && c1.b === c2.b && c1.a === c2.a;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    public static fromHSL(h: number, s: number, l: number): Color {\n        let r: number;\n        let g: number;\n        let b: number;\n\n        if (s === 0) {\n            r = g = b = l; // achromatic\n        } else {\n\n            const hue2rgb = (p: number, q: number, t: number): number => {\n                if (t < 0) {\n                    t += 1;\n                }\n                if (t > 1) {\n                    t -= 1;\n                }\n                if (t < 1 / 6) {\n                    return p + (q - p) * 6 * t;\n                }\n                if (t < 1 / 2) {\n                    return q;\n                }\n                if (t < 2 / 3) {\n                    return p + (q - p) * (2 / 3 - t) * 6;\n                }\n                return p;\n            };\n\n            const qq = l < 0.5 ? l * (1 + s) : l + s - l * s;\n            const pp = 2 * l - qq;\n\n            r = hue2rgb(pp, qq, h + 1 / 3);\n            g = hue2rgb(pp, qq, h);\n            b = hue2rgb(pp, qq, h - 1 / 3);\n        }\n\n        return new Color(Math.round(r * 255), Math.round(g * 255), Math.round(b * 255));\n    }\n\n    /**\n     * @param hex hexadecimal color value, exemple: #127bdc #FFF #127bdc56\n     */\n    public static fromHex(hex: string): Color {\n        if (!hex || hex.length < 3) {\n            return new Color();\n        }\n\n        let r: number;\n        let g: number;\n        let b: number;\n        let a: number;\n        let startIndex = hex.startsWith('#') ? 1 : 0;\n        switch (hex.length - startIndex) {\n            case 3:\n                r = parseInt(hex[startIndex] + hex[startIndex], 16);\n                g = parseInt(hex[++startIndex] + hex[startIndex], 16);\n                b = parseInt(hex[++startIndex] + hex[startIndex], 16);\n                break;\n            case 4:\n                r = parseInt(hex[startIndex] + hex[startIndex], 16);\n                g = parseInt(hex[++startIndex] + hex[startIndex], 16);\n                b = parseInt(hex[++startIndex] + hex[startIndex], 16);\n                a = parseInt(hex[++startIndex] + hex[startIndex], 16);\n                break;\n            case 6:\n                r = parseInt(hex[startIndex] + hex[++startIndex], 16);\n                g = parseInt(hex[++startIndex] + hex[++startIndex], 16);\n                b = parseInt(hex[++startIndex] + hex[++startIndex], 16);\n                break;\n            case 8:\n                r = parseInt(hex[startIndex] + hex[++startIndex], 16);\n                g = parseInt(hex[++startIndex] + hex[++startIndex], 16);\n                b = parseInt(hex[++startIndex] + hex[++startIndex], 16);\n                a = parseInt(hex[++startIndex] + hex[++startIndex], 16);\n                break;\n            default:\n                throw new Error('Invalid color.');\n        }\n\n        return new Color(r, g, b, a);\n    }\n\n    public static parse(color: string): Color {\n        if (!color || color.length === 0) {\n            return new Color();\n        } else if (Color.COLOR_NAMES[color]) {\n            return Color.fromHex(Color.COLOR_NAMES[color]);\n        } else if (color.startsWith('#')) {\n            return Color.fromHex(color);\n        } else {\n            const rgb = /rgb\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3})\\)/.exec(color);\n            if (rgb !== null) {\n                return new Color(+rgb[1], +rgb[2], +rgb[3]);\n            }\n\n            const rgba = /rgba\\((\\d{1,3}), (\\d{1,3}), (\\d{1,3}), ([0-9.]*)\\)/.exec(color);\n            if (rgba !== null) {\n                let a = +rgba[4];\n                if (isNaN(a)) {\n                    a = 1;\n                } else if (a <= 1) {\n                    a = Math.round(a * 255);\n                }\n                return new Color(+rgba[1], +rgba[2], +rgba[3], a);\n            }\n            return undefined;\n        }\n    }\n\n    public get r(): number {\n        return this._r;\n    }\n\n    public get g(): number {\n        return this._g;\n    }\n\n    public get b(): number {\n        return this._b;\n    }\n\n    public get a(): number {\n        return this._a;\n    }\n\n    public get bestTextColor(): Color {\n        if (this.isEmpty()) {\n            return new Color();\n        }\n        const m = 1 - (0.299 * this.r + 0.587 * this.g + 0.114 * this.b) / 255;\n        const d = m < 0.5 ? 0 : 255;\n        return new Color(d, d, d);\n    }\n\n    public get grayScale(): Color {\n        if (this.isEmpty()) {\n            return new Color();\n        }\n        const g = Math.round((this.r + this.g + this.b) / 3);\n        return new Color(g, g, g, this.a);\n    }\n\n    public isEmpty(): boolean {\n        return this.r === undefined || this.g === undefined || this.b === undefined;\n    }\n\n    public clone(): Color {\n        return new Color(this.r, this.g, this.b, this.a);\n    }\n\n    public toHex(): string {\n        const toHex = (d: number): string => {\n            const s = Number(d).toString(16);\n            return `0${s}`.slice(-2).toUpperCase();\n        };\n\n        if (this.isEmpty()) {\n            return undefined;\n        } else if (this.a !== undefined) {\n            return `#${toHex(this.r)}${toHex(this.g)}${toHex(this.b)}${toHex(this.a)}`;\n        } else {\n            return `#${toHex(this.r)}${toHex(this.g)}${toHex(this.b)}`;\n        }\n    }\n\n    // eslint-disable-next-line @typescript-eslint/naming-convention\n    public toHSL(): HSL {\n        const r = this.r / 255;\n        const g = this.g / 255;\n        const b = this.b / 255;\n\n        const max = Math.max(r, g, b);\n        const min = Math.min(r, g, b);\n        let h = (max + min) / 2;\n        let s = h;\n        const l = h;\n\n        if (max === min) {\n            h = s = 0; // achromatic\n        } else {\n            const d = max - min;\n            s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n            if (r > g && r > b) {\n                h = (g - b) / d + (g < b ? 6 : 0);\n            } else if (g > b) {\n                h = (b - r) / d + 2;\n            } else {\n                h = (r - g) / d + 4;\n            }\n\n            h /= 6;\n        }\n\n        return { h: h, s: s, l: l } as HSL;\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 './color';\n\nexport class MaterialColor extends Color {\n    public name: string;\n    public subColors = [] as MaterialColor[];\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/* eslint-disable @typescript-eslint/naming-convention */\n\nimport { Injectable } from '@angular/core';\n\nimport { Color } from './color';\nimport { MaterialColor } from './material-color';\n\n@Injectable({\n    providedIn: 'root'\n})\nexport class MaterialColorService {\n    private _colors: MaterialColor[];\n    private palettes: {\n        [subColorName: string]: Color[];\n    };\n\n    private palet = {\n        'mat-red': {\n            50: '#ffebee',\n            100: '#ffcdd2',\n            200: '#ef9a9a',\n            300: '#e57373',\n            400: '#ef5350',\n            500: '#f44336',\n            600: '#e53935',\n            700: '#d32f2f',\n            800: '#c62828',\n            900: '#b71c1c'\n        },\n        'mat-pink': {\n            50: '#fce4ec',\n            100: '#f8bbd0',\n            200: '#f48fb1',\n            300: '#f06292',\n            400: '#ec407a',\n            500: '#e91e63',\n            600: '#d81b60',\n            700: '#c2185b',\n            800: '#ad1457',\n            900: '#880e4f'\n        },\n        'mat-purple': {\n            50: '#f3e5f5',\n            100: '#e1bee7',\n            200: '#ce93d8',\n            300: '#ba68c8',\n            400: '#ab47bc',\n            500: '#9c27b0',\n            600: '#8e24aa',\n            700: '#7b1fa2',\n            800: '#6a1b9a',\n            900: '#4a148c'\n        },\n        'mat-deep-purple': {\n            50: '#ede7f6',\n            100: '#d1c4e9',\n            200: '#b39ddb',\n            300: '#9575cd',\n            400: '#7e57c2',\n            500: '#673ab7',\n            600: '#5e35b1',\n            700: '#512da8',\n            800: '#4527a0',\n            900: '#311b92'\n        },\n        'mat-indigo': {\n            50: '#e8eaf6',\n            100: '#c5cae9',\n            200: '#9fa8da',\n            300: '#7986cb',\n            400: '#5c6bc0',\n            500: '#3f51b5',\n            600: '#3949ab',\n            700: '#303f9f',\n            800: '#283593',\n            900: '#1a237e'\n        },\n        'mat-blue': {\n            50: '#e3f2fd',\n            100: '#bbdefb',\n            200: '#90caf9',\n            300: '#64b5f6',\n            400: '#42a5f5',\n            500: '#2196f3',\n            600: '#1e88e5',\n            700: '#1976d2',\n            800: '#1565c0',\n            900: '#0d47a1'\n        },\n        'mat-light-blue': {\n            50: '#e1f5fe',\n            100: '#b3e5fc',\n            200: '#81d4fa',\n            300: '#4fc3f7',\n            400: '#29b6f6',\n            500: '#03a9f4',\n            600: '#039be5',\n            700: '#0288d1',\n            800: '#0277bd',\n            900: '#01579b'\n        },\n        'mat-cyan': {\n            50: '#e0f7fa',\n            100: '#b2ebf2',\n            200: '#80deea',\n            300: '#4dd0e1',\n            400: '#26c6da',\n            500: '#00bcd4',\n            600: '#00acc1',\n            700: '#0097a7',\n            800: '#00838f',\n            900: '#006064'\n        },\n        'mat-teal': {\n            50: '#e0f2f1',\n            100: '#b2dfdb',\n            200: '#80cbc4',\n            300: '#4db6ac',\n            400: '#26a69a',\n            500: '#009688',\n            600: '#00897b',\n            700: '#00796b',\n            800: '#00695c',\n            900: '#004d40'\n        },\n        'mat-green': {\n            50: '#e8f5e9',\n            100: '#c8e6c9',\n            200: '#a5d6a7',\n            300: '#81c784',\n            400: '#66bb6a',\n            500: '#4caf50',\n            600: '#43a047',\n            700: '#388e3c',\n            800: '#2e7d32',\n            900: '#1b5e20'\n        },\n        'mat-light-green': {\n            50: '#f1f8e9',\n            100: '#dcedc8',\n            200: '#c5e1a5',\n            300: '#aed581',\n            400: '#9ccc65',\n            500: '#8bc34a',\n            600: '#7cb342',\n            700: '#689f38',\n            800: '#558b2f',\n            900: '#33691e'\n        },\n        'mat-lime': {\n            50: '#f9fbe7',\n            100: '#f0f4c3',\n            200: '#e6ee9c',\n            300: '#dce775',\n            400: '#d4e157',\n            500: '#cddc39',\n            600: '#c0ca33',\n            700: '#afb42b',\n            800: '#9e9d24',\n            900: '#827717'\n        },\n        'mat-yellow': {\n            50: '#fffde7',\n            100: '#fff9c4',\n            200: '#fff59d',\n            300: '#fff176',\n            400: '#ffee58',\n            500: '#ffeb3b',\n            600: '#fdd835',\n            700: '#fbc02d',\n            800: '#f9a825',\n            900: '#f57f17'\n        },\n        'mat-amber': {\n            50: '#fff8e1',\n            100: '#ffecb3',\n            200: '#ffe082',\n            300: '#ffd54f',\n            400: '#ffca28',\n            500: '#ffc107',\n            600: '#ffb300',\n            700: '#ffa000',\n            800: '#ff8f00',\n            900: '#ff6f00'\n        },\n        'mat-orange': {\n            50: '#fff3e0',\n            100: '#ffe0b2',\n            200: '#ffcc80',\n            300: '#ffb74d',\n            400: '#ffa726',\n            500: '#ff9800',\n            600: '#fb8c00',\n            700: '#f57c00',\n            800: '#ef6c00',\n            900: '#e65100'\n        },\n        'mat-deep-orange': {\n            50: '#fbe9e7',\n            100: '#ffccbc',\n            200: '#ffab91',\n            300: '#ff8a65',\n            400: '#ff7043',\n            500: '#ff5722',\n            600: '#f4511e',\n            700: '#e64a19',\n            800: '#d84315',\n            900: '#bf360c'\n        },\n        'mat-brown': {\n            50: '#efebe9',\n            100: '#d7ccc8',\n            200: '#bcaaa4',\n            300: '#a1887f',\n            400: '#8d6e63',\n            500: '#795548',\n            600: '#6d4c41',\n            700: '#5d4037',\n            800: '#4e342e',\n            900: '#3e2723'\n        },\n        'mat-grey': {\n            0: '#ffffff',\n            50: '#fafafa',\n            100: '#f5f5f5',\n            200: '#eeeeee',\n            300: '#e0e0e0',\n            400: '#bdbdbd',\n            500: '#9e9e9e',\n            600: '#757575',\n            700: '#616161',\n            800: '#424242',\n            900: '#212121',\n            1000: '#000000'\n        },\n        'mat-blue-grey': {\n            50: '#eceff1',\n            100: '#cfd8dc',\n            200: '#b0bec5',\n            300: '#90a4ae',\n            400: '#78909c',\n            500: '#607d8b',\n            600: '#546e7a',\n            700: '#455a64',\n            800: '#37474f',\n            900: '#263238'\n        }\n    } as { [color: string]: { [nuance: string]: string }};\n\n    public get colors(): MaterialColor[] {\n        if (!this._colors) {\n            this._colors = [] as MaterialColor[];\n            Object.keys(this.palet).forEach(baseColorName => {\n                const baseColor = MaterialColor.fromHex(this.palet[baseColorName]['500']) as MaterialColor;\n                baseColor.subColors = [];\n                baseColor.name = baseColorName;\n                this._colors.push(baseColor);\n                Object.keys(this.palet[baseColorName]).forEach(subColorName => {\n                    const subColor = MaterialColor.fromHex(this.palet[baseColorName][subColorName]) as MaterialColor;\n                    subColor.name = subColorName;\n                    baseColor.subColors.unshift(subColor);\n                });\n            });\n        }\n        return this._colors;\n    }\n\n    public getColor(name: string): {[nuance: string]: string} {\n        return this.palet[name];\n    }\n\n    public getPalet(subColor: string): Color[] {\n        if (!this.palettes) {\n            this.palettes = {};\n            Object.keys(this.palet).forEach(baseColorName => {\n                const baseColorObj = this.palet[baseColorName];\n                Object.keys(baseColorObj).forEach(subColorName => {\n                    if (!this.palettes[subColorName]) {\n                        this.palettes[subColorName] = [] as MaterialColor[];\n                    }\n                    this.palettes[subColorName].push(Color.fromHex(this.palet[baseColorName][subColorName]));\n                });\n            });\n        }\n        return this.palettes[subColor];\n    }\n\n    public getColorFromText(text: string): MaterialColor {\n        let sum = 0;\n        // eslint-disable-next-line no-loops/no-loops\n        for (let i = 0; i < text.length; i++) {\n            sum += text.charCodeAt(i);\n        }\n        const colors = this.colors;\n        const subColors = (colors[sum % colors.length]).subColors;\n        return subColors[sum % subColors.length];\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\nexport * from './position';\nexport * from './rect';\nexport * from './circle';\nexport * from './directions';\nexport * from './icon.service';\nexport * from './size';\nexport * from './unit-value';\nexport * from './color';\nexport * from './material-color';\nexport * from './material-colors.service';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}