{"version":3,"file":"lautarobock-color-picker.mjs","sources":["../../../../projects/color-picker/src/lib/helpers/color-helpers.ts","../../../../projects/color-picker/src/lib/models/color.model.ts","../../../../projects/color-picker/src/lib/components/color-canvas/base-color-canvas.ts","../../../../projects/color-picker/src/lib/components/color-canvas/color-slider/color-slider.component.ts","../../../../projects/color-picker/src/lib/components/color-canvas/color-slider/color-slider.component.html","../../../../projects/color-picker/src/lib/directives/numeric-color-input.directive.ts","../../../../projects/color-picker/src/lib/components/color-canvas/color-canvas.component.ts","../../../../projects/color-picker/src/lib/components/color-canvas/color-canvas.component.html","../../../../projects/color-picker/src/lib/components/color-collection/color-collection.component.ts","../../../../projects/color-picker/src/lib/components/color-collection/color-collection.component.html","../../../../projects/color-picker/src/lib/components/color-palette/color-palette.component.ts","../../../../projects/color-picker/src/lib/components/color-palette/color-palette.component.html","../../../../projects/color-picker/src/lib/services/color-adapter.ts","../../../../projects/color-picker/src/lib/services/color-formats.ts","../../../../projects/color-picker/src/lib/components/color-picker/color-picker.component.ts","../../../../projects/color-picker/src/lib/components/color-picker/color-picker-content.component.html","../../../../projects/color-picker/src/lib/components/color-picker/color-input.component.ts","../../../../projects/color-picker/src/lib/components/color-toggle/color-toggle.component.ts","../../../../projects/color-picker/src/lib/components/color-toggle/color-toggle.component.html","../../../../projects/color-picker/src/lib/color-picker.module.ts","../../../../projects/color-picker/src/public-api.ts","../../../../projects/color-picker/src/lautarobock-color-picker.ts"],"sourcesContent":["\r\nconst trimLeft = /^\\s+/;\r\nconst trimRight = /\\s+$/;\r\nconst tinyCounter = 0;\r\nconst mathRound = Math.round;\r\nconst mathMin = Math.min;\r\nconst mathMax = Math.max;\r\nconst mathRandom = Math.random;\r\n\r\nexport const NUMERIC_REGEX = /[^0-9]/g;\r\nexport const MAX_RGB = 255;\r\nexport const MIN_RGB = 0;\r\n\r\n\r\n/** List basic colors */\r\nexport const BASIC_COLORS = [\"#ffffff\", \"#ffff00\", \"#ff00ff\", \"#ff0000\",\r\n    \"#c0c0c0\", \"#808080\", \"#808000\", \"#800080\",\r\n    \"#800000\", \"#00ffff\", \"#00ff00\", \"#008080\",\r\n    \"#008000\", \"#0000ff\", \"#000080\", \"#000000\"\r\n];\r\n\r\n/**\r\n * Get color at position\r\n * @param ctx \r\n * @param x \r\n * @param y \r\n */\r\nexport function getColorAtPosition(ctx: CanvasRenderingContext2D, x: number, y: number): { r: number, g: number, b: number } {\r\n    const imageData: Uint8ClampedArray = ctx.getImageData(x, y, 1, 1).data;\r\n    return { r: imageData[0], g: imageData[1], b: imageData[2] };\r\n}\r\n\r\n// `rgbaToHex`\r\n// Converts an RGBA color plus alpha transparency to hex\r\n// Assumes r, g, b are contained in the set [0, 255] and\r\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\r\nexport function rgbaToHex(r: number, g: number, b: number, a: number, allow4Char?: boolean): string {\r\n    var hex = [\r\n        pad2(mathRound(r).toString(16)),\r\n        pad2(mathRound(g).toString(16)),\r\n        pad2(mathRound(b).toString(16)),\r\n        pad2(convertDecimalToHex(a))\r\n    ];\r\n\r\n    // Return a 4 character hex if possible\r\n    if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {\r\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\r\n    }\r\n\r\n    return hex.join(\"\");\r\n}\r\n\r\n// Force a hex value to have 2 characters\r\nexport function pad2(c): string {\r\n    return c.length == 1 ? '0' + c : '' + c;\r\n}\r\n\r\n// Converts a decimal to a hex value\r\nexport function convertDecimalToHex(d) {\r\n    return Math.round(parseFloat(d) * 255).toString(16);\r\n}\r\n\r\n// Converts a hex value to a decimal\r\nfunction convertHexToDecimal(h) {\r\n    return (parseIntFromHex(h) / 255);\r\n}\r\n\r\n// Parse a base-16 hex value into a base-10 integer\r\nfunction parseIntFromHex(val) {\r\n    return parseInt(val, 16);\r\n}\r\n\r\n// `rgbToHex`\r\n// Converts an RGB color to hex\r\n// Assumes r, g, and b are contained in the set [0, 255]\r\n// Returns a 3 or 6 character hex\r\nexport function rgbToHex(r: number, g: number, b: number, allow3Char?: boolean) {\r\n\r\n    var hex = [\r\n        pad2(mathRound(r).toString(16)),\r\n        pad2(mathRound(g).toString(16)),\r\n        pad2(mathRound(b).toString(16))\r\n    ];\r\n\r\n    // Return a 3 character hex if possible\r\n    if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {\r\n        return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\r\n    }\r\n\r\n    return hex.join(\"\");\r\n}\r\n\r\n// Actual matching.\r\n// Parentheses and commas are optional, but not required.\r\n// Whitespace can take the place of commas or opening parent\r\nconst CSS_INTEGER = \"[-\\\\+]?\\\\d+%?\";\r\nconst CSS_NUMBER = \"[-\\\\+]?\\\\d*\\\\.\\\\d+%?\";\r\nconst CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\r\nconst PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\r\nconst PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\r\n\r\nexport const matchers = {\r\n    CSS_UNIT: new RegExp(CSS_UNIT),\r\n    rgb: new RegExp(\"rgb\" + PERMISSIVE_MATCH3),\r\n    rgba: new RegExp(\"rgba\" + PERMISSIVE_MATCH4),\r\n    hsl: new RegExp(\"hsl\" + PERMISSIVE_MATCH3),\r\n    hsla: new RegExp(\"hsla\" + PERMISSIVE_MATCH4),\r\n    hsv: new RegExp(\"hsv\" + PERMISSIVE_MATCH3),\r\n    hsva: new RegExp(\"hsva\" + PERMISSIVE_MATCH4),\r\n    hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\r\n    hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\r\n    hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\r\n    hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\r\n};\r\n\r\n// `stringInputToObject`\r\n// Permissive string parsing.  Take in a number of formats, and output an object\r\n// based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\r\nexport function stringInputToObject(color: string): { r: number, g: number, b: number, a: number } {\r\n\r\n    color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase();\r\n\r\n    // Try to match string input using regular expressions.\r\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\r\n    // Just return an object and let the conversion functions handle that.\r\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\r\n    let match;\r\n    let obj;\r\n    if ((match = matchers.rgb.exec(color))) {\r\n        return { r: match[1], g: match[2], b: match[3], a: 1 };\r\n    }\r\n    if ((match = matchers.rgba.exec(color))) {\r\n        return { r: match[1], g: match[2], b: match[3], a: match[4] };\r\n    }\r\n\r\n    if ((match = matchers.hex8.exec(color))) {\r\n        return {\r\n            r: parseIntFromHex(match[1]),\r\n            g: parseIntFromHex(match[2]),\r\n            b: parseIntFromHex(match[3]),\r\n            a: convertHexToDecimal(match[4]),\r\n        };\r\n    }\r\n    if ((match = matchers.hex6.exec(color))) {\r\n        return {\r\n            r: parseIntFromHex(match[1]),\r\n            g: parseIntFromHex(match[2]),\r\n            b: parseIntFromHex(match[3]),\r\n            a: 1\r\n        };\r\n    }\r\n    if ((match = matchers.hex4.exec(color))) {\r\n        return {\r\n            r: parseIntFromHex(match[1] + '' + match[1]),\r\n            g: parseIntFromHex(match[2] + '' + match[2]),\r\n            b: parseIntFromHex(match[3] + '' + match[3]),\r\n            a: convertHexToDecimal(match[4] + '' + match[4]),\r\n        };\r\n    }\r\n    if ((match = matchers.hex3.exec(color))) {\r\n        return {\r\n            r: parseIntFromHex(match[1] + '' + match[1]),\r\n            g: parseIntFromHex(match[2] + '' + match[2]),\r\n            b: parseIntFromHex(match[3] + '' + match[3]),\r\n            a: 1\r\n        };\r\n    }\r\n\r\n    return null;\r\n}\r\n\r\nexport function createMissingDateImplError(provider: string) {\r\n    return Error(\r\n        `NgxMatColorPicker: No provider found for ${provider}. You must define MAT_COLOR_FORMATS in your module`);\r\n}","import { MAX_RGB, rgbaToHex, rgbToHex } from '../helpers';\r\nimport { ColorInputFormat } from './color-input-format';\r\n\r\nexport class Color {\r\n\r\n    public r: number;\r\n    public g: number;\r\n    public b: number;\r\n    public a: number;\r\n    public roundA: number;\r\n\r\n    public hex: string;\r\n    public rgba: string;\r\n\r\n    constructor(_r: number, _g: number, _b: number, _a?: number) {\r\n        this.r = _r > MAX_RGB ? MAX_RGB : _r;\r\n        this.g = _g > MAX_RGB ? MAX_RGB : _g;\r\n        this.b = _b > MAX_RGB ? MAX_RGB : _b;\r\n        if (_a != null) {\r\n            this.a = _a > 1 ? 1 : _a;\r\n        } else {\r\n            this.a = 1;\r\n        }\r\n        this.roundA = Math.round(this.a);\r\n        this.hex = rgbToHex(this.r, this.g, this.b);\r\n        this.rgba = this.toRgba();\r\n    }\r\n\r\n    public toHex(allow3Char?: boolean, ): string {\r\n        return rgbToHex(this.r, this.g, this.b, allow3Char);\r\n    }\r\n\r\n    public toRgba(): string {\r\n        return `rgba(${this.r},${this.g},${this.b},${this.a})`;\r\n    }\r\n\r\n    public toHexString(allow3Char?: boolean): string {\r\n        return '#' + this.toHex(allow3Char);\r\n    }\r\n\r\n    public toRgbString(): string {\r\n        return (this.a === 1) ?\r\n            \"rgb(\" + Math.round(this.r) + \", \" + Math.round(this.g) + \", \" + Math.round(this.b) + \")\" :\r\n            \"rgba(\" + Math.round(this.r) + \", \" + Math.round(this.g) + \", \" + Math.round(this.b) + \", \" + this.roundA + \")\";\r\n    }\r\n\r\n    public toHex8(allow4Char): string {\r\n        return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);\r\n    }\r\n\r\n    public toHex8String(allow4Char?: boolean): string {\r\n        return '#' + this.toHex8(allow4Char);\r\n    }\r\n\r\n    public toString(format: ColorInputFormat): string {\r\n        let formatSet = !!format;\r\n\r\n        let formattedString;\r\n        let hasAlpha = this.a < 1 && this.a >= 0;\r\n        let needsAlphaFormat = !formatSet && hasAlpha && (format === \"hex\" || format === \"hex6\"\r\n            || format === \"hex3\" || format === \"hex4\" || format === \"hex8\");\r\n\r\n        if (needsAlphaFormat) {\r\n            return this.toRgbString();\r\n        }\r\n        if (format === \"rgb\") {\r\n            formattedString = this.toRgbString();\r\n        }\r\n        if (format === \"hex\" || format === \"hex6\") {\r\n            formattedString = this.toHexString();\r\n        }\r\n        if (format === \"hex3\") {\r\n            formattedString = this.toHexString(true);\r\n        }\r\n        if (format === \"hex4\") {\r\n            formattedString = this.toHex8String(true);\r\n        }\r\n        if (format === \"hex8\") {\r\n            formattedString = this.toHex8String();\r\n        }\r\n\r\n        return formattedString || this.toHexString();\r\n    }\r\n\r\n}","import { AfterViewInit, Directive, EventEmitter, Input, NgZone, OnDestroy, Output } from '@angular/core';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { Subject } from 'rxjs';\r\nimport { Color } from '../../models';\r\n\r\n@Directive({\r\n\r\n})\r\nexport abstract class NgxMatBaseColorCanvas implements OnDestroy, AfterViewInit {\r\n\r\n\t@Output() colorChanged: EventEmitter<Color> = new EventEmitter<Color>();\r\n\t@Input() color: Color;\r\n\t@Input() theme: ThemePalette;\r\n\r\n\tcanvas: HTMLCanvasElement;\r\n\r\n\telementId: string;\r\n\r\n\tctx: CanvasRenderingContext2D;\r\n\twidth: number;\r\n\theight: number;\r\n\r\n\tx: number = 0;\r\n\ty: number = 0;\r\n\r\n\tdrag = false;\r\n\r\n\tprotected _destroyed: Subject<void> = new Subject<void>();\r\n\r\n\tconstructor(protected zone: NgZone, elementId: string) {\r\n\t\tthis.elementId = elementId;\r\n\t}\r\n\r\n\tngOnDestroy(): void {\r\n\t\tthis._destroyed.next();\r\n\t\tthis._destroyed.complete();\r\n\t}\r\n\r\n\tngAfterViewInit(): void {\r\n\t\tthis.canvas = <HTMLCanvasElement>document.getElementById(this.elementId);\r\n\t\tthis.ctx = this.canvas.getContext('2d');\r\n\t\tthis.width = this.canvas.width;\r\n\t\tthis.height = this.canvas.height;\r\n\t\tthis.draw();\r\n\t}\r\n\r\n\tprotected draw() {\r\n\t\tthis.ctx.clearRect(0, 0, this.width, this.height);\r\n\t\tthis.ctx.rect(0, 0, this.width, this.height);\r\n\t\tthis.fillGradient();\r\n\t\tif (this.y != 0) {\r\n\t\t\tthis.redrawIndicator(this.x, this.y);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic onMousedown(e: MouseEvent) {\r\n\t\tthis.drag = true;\r\n\t\tthis.changeColor(e);\r\n\r\n\t\tthis.zone.runOutsideAngular(() => {\r\n\t\t\tthis.canvas.addEventListener('mousemove', this.onMousemove.bind(this));\r\n\t\t})\r\n\t}\r\n\r\n\tpublic onMousemove(e: MouseEvent) {\r\n\t\tif (this.drag) {\r\n\t\t\tthis.zone.run(() => {\r\n\t\t\t\tthis.changeColor(e);\r\n\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tpublic onMouseup(e: MouseEvent) {\r\n\t\tthis.drag = false;\r\n\t\tthis.canvas.removeEventListener('mousemove', this.onMousemove);\r\n\t}\r\n\r\n\tpublic emitChange(color: Color) {\r\n\t\tthis.colorChanged.emit(color);\r\n\t}\r\n\r\n\tabstract changeColor(e: MouseEvent): void;\r\n\tabstract fillGradient(): void;\r\n\tabstract redrawIndicator(x: number, y: number): void;\r\n\r\n}\r\n","import { Component, OnInit, Output, EventEmitter, NgZone } from '@angular/core';\r\nimport { Color } from '../../../models';\r\nimport { getColorAtPosition } from '../../../helpers';\r\nimport { NgxMatBaseColorCanvas } from '../base-color-canvas';\r\n\r\n@Component({\r\n  selector: 'ngx-mat-color-slider',\r\n  templateUrl: './color-slider.component.html',\r\n  styleUrls: ['./color-slider.component.scss']\r\n})\r\nexport class NgxMatColorSliderComponent extends NgxMatBaseColorCanvas implements OnInit {\r\n\r\n  constructor(protected zone: NgZone) {\r\n    super(zone,'color-strip');\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    super.ngAfterViewInit();\r\n  }\r\n\r\n  public fillGradient() {\r\n    const grd = this.ctx.createLinearGradient(0, 0, 0, this.height);\r\n    grd.addColorStop(0, 'rgba(255, 0, 0, 1)');\r\n    grd.addColorStop(0.17, 'rgba(255, 255, 0, 1)');\r\n    grd.addColorStop(0.34, 'rgba(0, 255, 0, 1)');\r\n    grd.addColorStop(0.51, 'rgba(0, 255, 255, 1)');\r\n    grd.addColorStop(0.68, 'rgba(0, 0, 255, 1)');\r\n    grd.addColorStop(0.85, 'rgba(255, 0, 255, 1)');\r\n    grd.addColorStop(1, 'rgba(255, 0, 0, 1)');\r\n\r\n    this.ctx.fillStyle = grd;\r\n    this.ctx.fill();\r\n  }\r\n\r\n  public redrawIndicator(x: number, y: number) {\r\n    this.ctx.beginPath();\r\n    this.ctx.strokeStyle = 'white';\r\n    this.ctx.lineWidth = 2;\r\n    this.ctx.arc(7.5, y, 7.5, 0, 2 * Math.PI, false);\r\n    this.ctx.stroke();\r\n    this.ctx.closePath();\r\n  }\r\n\r\n  public changeColor(e: MouseEvent) {\r\n    this.x = e.offsetX;\r\n    this.y = e.offsetY;\r\n    this.draw();\r\n    const { r, g, b } = getColorAtPosition(this.ctx, e.offsetX, e.offsetY);\r\n    this.emitChange(new Color(r, g, b));\r\n  }\r\n\r\n\r\n}\r\n","<canvas id=\"color-strip\" class=\"zone-strip\" (mousedown)=\"onMousedown($event)\" (mouseup)=\"onMouseup($event)\"\r\n width=\"15\" height=\"234\"></canvas>","import { Directive, HostListener } from '@angular/core';\r\nimport { NUMERIC_REGEX } from '../helpers';\r\n\r\n@Directive({\r\n  selector: '[ngxMatNumericColorInput]'\r\n})\r\nexport class NumericColorInputDirective {\r\n\r\n  constructor() { }\r\n\r\n  @HostListener('input', ['$event'])\r\n  onInput($event: any) {\r\n    this._formatInput($event.target);\r\n  }\r\n\r\n  /**\r\n* Format input\r\n* @param input \r\n*/\r\n  private _formatInput(input: any) {\r\n    let val = Number(input.value.replace(NUMERIC_REGEX, ''));\r\n    val = isNaN(val) ? 0 : val;\r\n    input.value = val;\r\n  }\r\n\r\n}\r\n","import { AfterViewInit, Component, NgZone, OnChanges, OnDestroy, OnInit, SimpleChanges, ViewEncapsulation } from '@angular/core';\r\nimport { AbstractControl, FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { merge } from 'rxjs';\r\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\r\nimport { getColorAtPosition, matchers, stringInputToObject } from '../../helpers';\r\nimport { Color } from '../../models';\r\nimport { NgxMatBaseColorCanvas } from './base-color-canvas';\r\n\r\nconst RADIUS_NOB = 5;\r\n\r\n@Component({\r\n  selector: 'ngx-mat-color-canvas',\r\n  templateUrl: './color-canvas.component.html',\r\n  styleUrls: ['./color-canvas.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  host: {\r\n    'class': 'ngx-mat-color-canvas'\r\n  }\r\n})\r\nexport class NgxMatColorCanvasComponent extends NgxMatBaseColorCanvas\r\n  implements OnInit, AfterViewInit, OnChanges, OnDestroy {\r\n\r\n  private _baseColor: Color;\r\n\r\n  get rCtrl(): AbstractControl {\r\n    return this.formGroup.get('r');\r\n  }\r\n\r\n  get gCtrl(): AbstractControl {\r\n    return this.formGroup.get('g');\r\n  }\r\n\r\n  get bCtrl(): AbstractControl {\r\n    return this.formGroup.get('b');\r\n  }\r\n\r\n  get aCtrl(): AbstractControl {\r\n    return this.formGroup.get('a');\r\n  }\r\n\r\n  get hexCtrl(): AbstractControl {\r\n    return this.formGroup.get('hex');\r\n  }\r\n\r\n  _resetBaseColor = true;\r\n\r\n  formGroup: FormGroup;\r\n\r\n  rgba: string;\r\n\r\n  constructor(protected zone: NgZone) {\r\n    super(zone, 'color-block');\r\n    this.formGroup = new FormGroup({\r\n      r: new FormControl(null, [Validators.required]),\r\n      g: new FormControl(null, [Validators.required]),\r\n      b: new FormControl(null, [Validators.required]),\r\n      a: new FormControl(null, [Validators.required]),\r\n      hex: new FormControl(null, [Validators.required, Validators.pattern(matchers.hex6)]),\r\n    });\r\n  }\r\n\r\n  ngOnInit() {\r\n\r\n    const rgbaCtrl$ = merge(this.rCtrl.valueChanges, this.gCtrl.valueChanges,\r\n      this.bCtrl.valueChanges, this.aCtrl.valueChanges);\r\n    rgbaCtrl$.pipe(takeUntil(this._destroyed), debounceTime(400))\r\n      .subscribe(_ => {\r\n        const color = new Color(Number(this.rCtrl.value),\r\n          Number(this.gCtrl.value), Number(this.bCtrl.value), Number(this.aCtrl.value));\r\n        this.emitChange(color);\r\n      });\r\n\r\n    const hexCtrl$ = this.hexCtrl.valueChanges;\r\n    hexCtrl$.pipe(takeUntil(this._destroyed), debounceTime(400), distinctUntilChanged())\r\n      .subscribe(hex => {\r\n        const obj = stringInputToObject(hex);\r\n        if (obj != null) {\r\n          const color = new Color(obj.r, obj.g, obj.b, obj.a);\r\n          this.emitChange(color);\r\n        }\r\n      })\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes.color && changes.color.currentValue) {\r\n      this.updateForm(changes.color.currentValue);\r\n      if (this._resetBaseColor) {\r\n        this._baseColor = changes.color.currentValue;\r\n      }\r\n\r\n      this._resetBaseColor = true;\r\n\r\n      if (!changes.color.firstChange) {\r\n        this.draw();\r\n      }\r\n    }\r\n  }\r\n\r\n  private updateForm(val: Color): void {\r\n    const config = { emitEvent: false };\r\n    this.rCtrl.setValue(val.r, config);\r\n    this.gCtrl.setValue(val.g, config);\r\n    this.bCtrl.setValue(val.b, config);\r\n    this.aCtrl.setValue(val.a, config);\r\n    this.hexCtrl.setValue(val.hex, config);\r\n  }\r\n\r\n  public redrawIndicator(x: number, y: number) {\r\n    this.ctx.beginPath();\r\n    this.ctx.strokeStyle = 'white';\r\n    this.ctx.arc(x, y, RADIUS_NOB, 0, 2 * Math.PI, false);\r\n    this.ctx.stroke();\r\n    this.ctx.closePath();\r\n  }\r\n\r\n  public fillGradient() {\r\n    this.ctx.fillStyle = this._baseColor ? this._baseColor.rgba : 'rgba(255,255,255,1)';\r\n    this.ctx.fillRect(0, 0, this.width, this.height);\r\n\r\n    const grdWhite = this.ctx.createLinearGradient(0, 0, this.width, 0);\r\n    grdWhite.addColorStop(0, 'rgba(255,255,255,1)');\r\n    grdWhite.addColorStop(1, 'rgba(255,255,255,0)');\r\n    this.ctx.fillStyle = grdWhite;\r\n    this.ctx.fillRect(0, 0, this.width, this.height);\r\n\r\n    const grdBlack = this.ctx.createLinearGradient(0, 0, 0, this.height);\r\n    grdBlack.addColorStop(0, 'rgba(0,0,0,0)');\r\n    grdBlack.addColorStop(1, 'rgba(0,0,0,1)');\r\n    this.ctx.fillStyle = grdBlack;\r\n    this.ctx.fillRect(0, 0, this.width, this.height);\r\n  }\r\n\r\n  public onSliderColorChanged(c: Color) {\r\n    this._baseColor = c;\r\n    this.color = c;\r\n    this.fillGradient();\r\n    this.emitChange(c);\r\n  }\r\n\r\n  public changeColor(e: MouseEvent): void {\r\n    this.x = e.offsetX;\r\n    this.y = e.offsetY;\r\n    this._resetBaseColor = false;\r\n    this.draw();\r\n    const { r, g, b } = getColorAtPosition(this.ctx, e.offsetX, e.offsetY);\r\n    this.emitChange(new Color(r, g, b));\r\n  }\r\n\r\n}\r\n","<form [formGroup]=\"formGroup\">\r\n    <div class=\"color-canvas-row\">\r\n        <div class=\"zone-canvas\">\r\n            <canvas id=\"color-block\" class=\"zone-block\" (mousedown)=\"onMousedown($event)\" (mouseup)=\"onMouseup($event)\"\r\n                width=\"200\" height=\"235\"></canvas>\r\n            <ngx-mat-color-slider (colorChanged)=\"onSliderColorChanged($event)\"></ngx-mat-color-slider>\r\n        </div>\r\n\r\n        <div class=\"zone-inputs\">\r\n            <mat-form-field [color]=\"theme\">\r\n                <mat-label>R</mat-label>\r\n                <input matInput formControlName=\"r\" ngxMatNumericColorInput autocomplete=\"off\">\r\n            </mat-form-field>\r\n\r\n            <mat-form-field [color]=\"theme\">\r\n                <mat-label>G</mat-label>\r\n                <input matInput formControlName=\"g\" ngxMatNumericColorInput autocomplete=\"off\">\r\n            </mat-form-field>\r\n\r\n            <mat-form-field [color]=\"theme\">\r\n                <mat-label>B</mat-label>\r\n                <input matInput formControlName=\"b\" ngxMatNumericColorInput autocomplete=\"off\">\r\n            </mat-form-field>\r\n        </div>\r\n    </div>\r\n\r\n    <div class=\"color-canvas-row\">\r\n        <button mat-mini-fab [style.background-color]=\"color?.rgba || 'transparent'\" class=\"preview\"></button>\r\n        <mat-form-field [color]=\"theme\">\r\n            <mat-label>HEX6</mat-label>\r\n            <mat-label matPrefix class=\"symbol\">#&nbsp;</mat-label>\r\n            <input matInput formControlName=\"hex\" autocomplete=\"off\">\r\n        </mat-form-field>\r\n        <mat-form-field class=\"input-opacity\" [color]=\"theme\">\r\n            <mat-label>A</mat-label>\r\n            <input matInput formControlName=\"a\" type=\"number\" min=\"0\" max=\"1\" step=\"0.1\" autocomplete=\"off\">\r\n        </mat-form-field>\r\n    </div>\r\n</form>","import { Component, EventEmitter, OnInit, Output, ViewEncapsulation, Input } from '@angular/core';\r\nimport { Color } from '../../models';\r\nimport { BASIC_COLORS, stringInputToObject } from '../../helpers';\r\n\r\n@Component({\r\n  selector: 'ngx-mat-color-collection',\r\n  templateUrl: './color-collection.component.html',\r\n  styleUrls: ['./color-collection.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  host: {\r\n    'class': 'ngx-mat-color-collection'\r\n  }\r\n})\r\nexport class NgxMatColorCollectionComponent implements OnInit {\r\n\r\n  @Output() colorChanged: EventEmitter<Color> = new EventEmitter<Color>();\r\n\r\n  @Input()\r\n  set color(c: Color) {\r\n    if (c) {\r\n      this.selectedColor = c.toHexString();\r\n    }\r\n  }\r\n\r\n  selectedColor: string;\r\n\r\n  colors1: string[] = BASIC_COLORS.slice(0, 8);\r\n  colors2: string[] = BASIC_COLORS.slice(8, 16);\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  select(hex: string) {\r\n    this.selectedColor = hex;\r\n    const { r, g, b, a } = stringInputToObject(hex);\r\n    this.colorChanged.emit(new Color(r, g, b, a));\r\n  }\r\n\r\n}\r\n","<div class=\"color-collection-row\">\r\n  <button *ngFor=\"let c of colors1\" mat-mini-fab [style.background-color]=\"c\" class=\"btn-color\"\r\n    (click)=\"select(c)\" [ngClass]=\"{'active': selectedColor === c}\" [disableRipple]=\"true\">\r\n  </button>\r\n</div>\r\n<div class=\"color-collection-row\">\r\n  <button *ngFor=\"let c of colors2\" mat-mini-fab [style.background-color]=\"c\" class=\"btn-color\"\r\n    (click)=\"select(c)\" [ngClass]=\"{'active': selectedColor === c}\" [disableRipple]=\"true\">\r\n  </button>\r\n</div>","import { Component, OnInit, ViewEncapsulation, Output, EventEmitter, Input } from '@angular/core';\r\nimport { Color } from '../../models';\r\nimport { ThemePalette } from '@angular/material/core';\r\n\r\n@Component({\r\n  selector: 'ngx-mat-color-palette',\r\n  templateUrl: 'color-palette.component.html',\r\n  styleUrls: ['color-palette.component.scss'],\r\n  encapsulation: ViewEncapsulation.None,\r\n  host: {\r\n    'class': 'ngx-mat-color-palette'\r\n  }\r\n})\r\nexport class NgxMatColorPaletteComponent implements OnInit {\r\n\r\n  @Output() colorChanged: EventEmitter<Color> = new EventEmitter<Color>();\r\n\r\n  @Input() color: Color;\r\n  @Input() theme: ThemePalette;\r\n\r\n  constructor() { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  public handleColorChanged(color: Color) {\r\n    this.colorChanged.emit(color);\r\n  }\r\n\r\n}\r\n","<ngx-mat-color-canvas (colorChanged)=\"handleColorChanged($event)\" [color]=\"color\"\r\n  [theme]=\"theme\"></ngx-mat-color-canvas>\r\n\r\n<ngx-mat-color-collection (colorChanged)=\"handleColorChanged($event)\" [color]=\"color\">\r\n</ngx-mat-color-collection>","import { Injectable } from '@angular/core';\r\nimport { stringInputToObject } from '../helpers';\r\nimport { Color, ColorInputFormat } from '../models';\r\n\r\n@Injectable()\r\nexport class ColorAdapter {\r\n\r\n  constructor() { }\r\n\r\n  sameColor(a: Color, b: Color) {\r\n    if (a == null && b == null) return true;\r\n    if (a != null && b != null) return a.rgba === b.rgba;\r\n    return false;\r\n  }\r\n\r\n  format(c: Color, format: ColorInputFormat): string {\r\n    return c.toString(format);\r\n  }\r\n\r\n  parse(value: string): Color | null {\r\n    const obj = stringInputToObject(value);\r\n    if (obj) {\r\n      return new Color(obj.r, obj.g, obj.b, obj.a);\r\n    }\r\n    return null;\r\n  }\r\n\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport { ColorInputFormat } from '../models';\r\n\r\nexport type MatColorFormats = {\r\n    display: {\r\n        colorInput: ColorInputFormat;\r\n    }\r\n}\r\n\r\nexport const NGX_MAT_COLOR_FORMATS: MatColorFormats = {\r\n    display: {\r\n        colorInput: 'hex'\r\n    }\r\n}\r\n\r\nexport const MAT_COLOR_FORMATS = new InjectionToken<MatColorFormats>('mat-color-formats');\r\n","import { Directionality } from '@angular/cdk/bidi';\r\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\r\nimport { Overlay, OverlayConfig, OverlayRef, PositionStrategy, ScrollStrategy } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { ChangeDetectionStrategy, Component, ComponentRef, ElementRef, EventEmitter, Inject, InjectionToken, Input, NgZone, OnDestroy, OnInit, Optional, Output, ViewChild, ViewContainerRef, ViewEncapsulation } from '@angular/core';\r\nimport { CanColor, ThemePalette, mixinColor } from '@angular/material/core';\r\nimport { matDatepickerAnimations } from '@angular/material/datepicker';\r\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\r\nimport { Subject, Subscription, merge } from 'rxjs';\r\nimport { filter, take } from 'rxjs/operators';\r\nimport { Color } from '../../models';\r\nimport { ColorAdapter } from '../../services';\r\nimport { NgxMatColorPaletteComponent } from '../color-palette/color-palette.component';\r\nimport { NgxMatColorPickerInput } from './color-input.component';\r\n\r\n/** Injection token that determines the scroll handling while the calendar is open. */\r\nexport const NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY =\r\n  new InjectionToken<() => ScrollStrategy>('ngx-mat-colorpicker-scroll-strategy');\r\n\r\n\r\nexport function NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY(overlay: Overlay): () => ScrollStrategy {\r\n  return () => overlay.scrollStrategies.reposition();\r\n}\r\n\r\n\r\nexport const NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\r\n  provide: NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY,\r\n  deps: [Overlay],\r\n  useFactory: NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY,\r\n};\r\n\r\nconst _MatColorpickerContentBase = mixinColor(\r\n  class {\r\n    constructor(public _elementRef: ElementRef) { }\r\n  },\r\n);\r\n\r\n\r\n@Component({\r\n  selector: 'ngx-mat-color-picker-content',\r\n  templateUrl: './color-picker-content.component.html',\r\n  styleUrls: ['color-picker-content.component.scss'],\r\n  host: {\r\n    'class': 'ngx-mat-colorpicker-content',\r\n    '[@transformPanel]': '\"enter\"',\r\n    '[class.ngx-mat-colorpicker-content-touch]': 'picker.touchUi',\r\n  },\r\n  animations: [\r\n    matDatepickerAnimations.transformPanel,\r\n    matDatepickerAnimations.fadeInCalendar,\r\n  ],\r\n  exportAs: 'ngxMatColorPickerContent',\r\n  encapsulation: ViewEncapsulation.None,\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  inputs: ['color']\r\n})\r\nexport class NgxMatColorPickerContentComponent extends _MatColorpickerContentBase\r\n  implements CanColor {\r\n\r\n  /** Reference to the internal calendar component. */\r\n  @ViewChild(NgxMatColorPaletteComponent) _palette: NgxMatColorPaletteComponent;\r\n\r\n  picker: NgxMatColorPickerComponent;\r\n  _isAbove: boolean;\r\n\r\n  constructor(elementRef: ElementRef) {\r\n    super(elementRef);\r\n  }\r\n\r\n}\r\n\r\n@Component({\r\n  selector: 'ngx-mat-color-picker',\r\n  template: '',\r\n  exportAs: 'ngxMatColorPicker',\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n  encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class NgxMatColorPickerComponent implements OnInit, OnDestroy, CanColor {\r\n\r\n  private _scrollStrategy: () => ScrollStrategy;\r\n\r\n  /** Emits when the datepicker has been opened. */\r\n  @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  /** Emits when the datepicker has been closed. */\r\n  @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\r\n\r\n  @Input() get disabled() {\r\n    return this._disabled === undefined && this._pickerInput ?\r\n      this._pickerInput.disabled : !!this._disabled;\r\n  }\r\n  set disabled(value: boolean) {\r\n    const newValue = coerceBooleanProperty(value);\r\n\r\n    if (newValue !== this._disabled) {\r\n      this._disabled = newValue;\r\n      this._disabledChange.next(newValue);\r\n    }\r\n  }\r\n  private _disabled: boolean;\r\n\r\n  @Input()\r\n  get touchUi(): boolean { return this._touchUi; }\r\n  set touchUi(value: boolean) {\r\n    this._touchUi = coerceBooleanProperty(value);\r\n  }\r\n  private _touchUi = false;\r\n\r\n  /** Whether the calendar is open. */\r\n  @Input()\r\n  get opened(): boolean { return this._opened; }\r\n  set opened(value: boolean) { value ? this.open() : this.close(); }\r\n  private _opened = false;\r\n\r\n  /** Default Color palette to use on the datepicker's calendar. */\r\n  @Input()\r\n  get defaultColor(): ThemePalette {\r\n    return this._defaultColor;\r\n  }\r\n  set defaultColor(value: ThemePalette) {\r\n    this._defaultColor = value;\r\n  }\r\n  _defaultColor: ThemePalette = 'primary';\r\n\r\n  /** Color palette to use on the datepicker's calendar. */\r\n  @Input()\r\n  get color(): ThemePalette {\r\n    return this._color ||\r\n      (this._pickerInput ? this._pickerInput.getThemePalette() : undefined);\r\n  }\r\n  set color(value: ThemePalette) {\r\n    this._color = value;\r\n  }\r\n  _color: ThemePalette;\r\n\r\n\r\n  /** The currently selected date. */\r\n  get _selected(): Color { return this._validSelected; }\r\n  set _selected(value: Color) { this._validSelected = value; }\r\n  private _validSelected: Color = null;\r\n\r\n\r\n  _pickerInput: NgxMatColorPickerInput;\r\n  /** A reference to the overlay when the picker is opened as a popup. */\r\n  _popupRef: OverlayRef;\r\n\r\n  /** A reference to the dialog when the picker is opened as a dialog. */\r\n  private _dialogRef: MatDialogRef<NgxMatColorPickerContentComponent> | null;\r\n  /** Reference to the component instantiated in popup mode. */\r\n  private _popupComponentRef: ComponentRef<NgxMatColorPickerContentComponent> | null;\r\n  /** A portal containing the content for this picker. */\r\n  private _portal: ComponentPortal<NgxMatColorPickerContentComponent>;\r\n\r\n  /** Emits when the datepicker is disabled. */\r\n  readonly _disabledChange = new Subject<boolean>();\r\n\r\n  /** The element that was focused before the datepicker was opened. */\r\n  private _focusedElementBeforeOpen: HTMLElement | null = null;\r\n\r\n  /** Subscription to value changes in the associated input element. */\r\n  private _inputSubscription = Subscription.EMPTY;\r\n\r\n  /** Emits new selected date when selected date changes. */\r\n  readonly _selectedChanged = new Subject<Color>();\r\n\r\n  constructor(private _dialog: MatDialog,\r\n    private _overlay: Overlay,\r\n    private _zone: NgZone,\r\n    private _adapter: ColorAdapter,\r\n    @Optional() private _dir: Directionality,\r\n    @Inject(NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY) scrollStrategy: any,\r\n    @Optional() @Inject(DOCUMENT) private _document: any,\r\n    private _viewContainerRef: ViewContainerRef) {\r\n    this._scrollStrategy = scrollStrategy;\r\n  }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this.close();\r\n    this._inputSubscription.unsubscribe();\r\n    this._disabledChange.complete();\r\n\r\n    if (this._popupRef) {\r\n      this._popupRef.dispose();\r\n      this._popupComponentRef = null;\r\n    }\r\n  }\r\n\r\n\r\n  /** Selects the given date */\r\n  select(nextVal: Color): void {\r\n    let oldValue = this._selected;\r\n    this._selected = nextVal;\r\n    if (!this._adapter.sameColor(oldValue, this._selected)) {\r\n      this._selectedChanged.next(nextVal);\r\n    }\r\n  }\r\n\r\n\r\n  /**\r\n * Register an input with this datepicker.\r\n * @param input The datepicker input to register with this datepicker.\r\n */\r\n  registerInput(input: NgxMatColorPickerInput): void {\r\n    if (this._pickerInput) {\r\n      throw Error('A ColorPicker can only be associated with a single input.');\r\n    }\r\n    this._pickerInput = input;\r\n    this._inputSubscription =\r\n      this._pickerInput._valueChange.subscribe((value: Color) => this._selected = value);\r\n  }\r\n\r\n  public open(): void {\r\n    if (this._opened || this.disabled) {\r\n      return;\r\n    }\r\n    if (!this._pickerInput) {\r\n      throw Error('Attempted to open an ColorPicker with no associated input.');\r\n    }\r\n\r\n    if (this._document) {\r\n      this._focusedElementBeforeOpen = this._document.activeElement;\r\n    }\r\n\r\n    this.touchUi ? this._openAsDialog() : this._openAsPopup();\r\n    this._opened = true;\r\n    this.openedStream.emit();\r\n  }\r\n\r\n  /** Open the calendar as a dialog. */\r\n  private _openAsDialog(): void {\r\n\r\n    if (this._dialogRef) {\r\n      this._dialogRef.close();\r\n    }\r\n\r\n    this._dialogRef = this._dialog.open<NgxMatColorPickerContentComponent>(NgxMatColorPickerContentComponent, {\r\n      direction: this._dir ? this._dir.value : 'ltr',\r\n      viewContainerRef: this._viewContainerRef,\r\n      panelClass: 'ngx-mat-colorpicker-dialog',\r\n    });\r\n\r\n    this._dialogRef.afterClosed().subscribe(() => this.close());\r\n    this._dialogRef.componentInstance.picker = this;\r\n    this._setColor();\r\n  }\r\n\r\n  /** Open the calendar as a popup. */\r\n  private _openAsPopup(): void {\r\n\r\n    if (!this._portal) {\r\n      this._portal = new ComponentPortal<NgxMatColorPickerContentComponent>(NgxMatColorPickerContentComponent,\r\n        this._viewContainerRef);\r\n    }\r\n\r\n    if (!this._popupRef) {\r\n      this._createPopup();\r\n    }\r\n\r\n    if (!this._popupRef.hasAttached()) {\r\n      this._popupComponentRef = this._popupRef.attach(this._portal);\r\n      this._popupComponentRef.instance.picker = this;\r\n      this._setColor();\r\n\r\n      // Update the position once the calendar has rendered.\r\n      this._zone.onStable.asObservable().pipe(take(1)).subscribe(() => {\r\n        this._popupRef.updatePosition();\r\n      });\r\n    }\r\n  }\r\n\r\n  /** Create the popup. */\r\n  private _createPopup(): void {\r\n    const overlayConfig = new OverlayConfig({\r\n      positionStrategy: this._createPopupPositionStrategy(),\r\n      hasBackdrop: true,\r\n      backdropClass: 'mat-overlay-transparent-backdrop',\r\n      direction: this._dir,\r\n      scrollStrategy: this._scrollStrategy(),\r\n      panelClass: 'mat-colorpicker-popup',\r\n    });\r\n\r\n    this._popupRef = this._overlay.create(overlayConfig);\r\n    this._popupRef.overlayElement.setAttribute('role', 'dialog');\r\n\r\n    merge(\r\n      this._popupRef.backdropClick(),\r\n      this._popupRef.detachments(),\r\n      this._popupRef.keydownEvents().pipe(filter(event => {\r\n        // Closing on alt + up is only valid when there's an input associated with the datepicker.\r\n        return event.keyCode === ESCAPE ||\r\n          (this._pickerInput && event.altKey && event.keyCode === UP_ARROW);\r\n      }))\r\n    ).subscribe(event => {\r\n      if (event) {\r\n        event.preventDefault();\r\n      }\r\n\r\n      this.close();\r\n    });\r\n  }\r\n\r\n\r\n  close(): void {\r\n    if (!this._opened) {\r\n      return;\r\n    }\r\n    if (this._popupRef && this._popupRef.hasAttached()) {\r\n      this._popupRef.detach();\r\n    }\r\n    if (this._dialogRef) {\r\n      this._dialogRef.close();\r\n      this._dialogRef = null;\r\n    }\r\n    if (this._portal && this._portal.isAttached) {\r\n      this._portal.detach();\r\n    }\r\n\r\n    const completeClose = () => {\r\n      // The `_opened` could've been reset already if\r\n      // we got two events in quick succession.\r\n      if (this._opened) {\r\n        this._opened = false;\r\n        this.closedStream.emit();\r\n        this._focusedElementBeforeOpen = null;\r\n      }\r\n    };\r\n\r\n    if (this._focusedElementBeforeOpen &&\r\n      typeof this._focusedElementBeforeOpen.focus === 'function') {\r\n      // Because IE moves focus asynchronously, we can't count on it being restored before we've\r\n      // marked the datepicker as closed. If the event fires out of sequence and the element that\r\n      // we're refocusing opens the datepicker on focus, the user could be stuck with not being\r\n      // able to close the calendar at all. We work around it by making the logic, that marks\r\n      // the datepicker as closed, async as well.\r\n      this._focusedElementBeforeOpen.focus();\r\n      setTimeout(completeClose);\r\n    } else {\r\n      completeClose();\r\n    }\r\n  }\r\n\r\n  /** Passes the current theme color along to the calendar overlay. */\r\n  private _setColor(): void {\r\n    const color = this.color;\r\n    if (this._popupComponentRef) {\r\n      this._popupComponentRef.instance.color = color;\r\n    }\r\n    if (this._dialogRef) {\r\n      this._dialogRef.componentInstance.color = color;\r\n    }\r\n  }\r\n\r\n  /** Create the popup PositionStrategy. */\r\n  private _createPopupPositionStrategy(): PositionStrategy {\r\n    return this._overlay.position()\r\n      .flexibleConnectedTo(this._pickerInput.getConnectedOverlayOrigin())\r\n      .withTransformOriginOn('.ngx-mat-colorpicker-content')\r\n      .withFlexibleDimensions(false)\r\n      .withViewportMargin(8)\r\n      .withLockedPosition()\r\n      .withPositions([\r\n        {\r\n          originX: 'start',\r\n          originY: 'bottom',\r\n          overlayX: 'start',\r\n          overlayY: 'top'\r\n        },\r\n        {\r\n          originX: 'start',\r\n          originY: 'top',\r\n          overlayX: 'start',\r\n          overlayY: 'bottom'\r\n        },\r\n        {\r\n          originX: 'end',\r\n          originY: 'bottom',\r\n          overlayX: 'end',\r\n          overlayY: 'top'\r\n        },\r\n        {\r\n          originX: 'end',\r\n          originY: 'top',\r\n          overlayX: 'end',\r\n          overlayY: 'bottom'\r\n        }\r\n      ]);\r\n  }\r\n\r\n\r\n}\r\n","<ngx-mat-color-palette (colorChanged)=\"picker.select($event)\" \r\n[color]=\"picker._selected\"\r\n[theme]=\"color\"></ngx-mat-color-palette>","import { coerceBooleanProperty } from '@angular/cdk/coercion';\r\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\r\nimport { Directive, ElementRef, EventEmitter, forwardRef, Inject, Input, OnDestroy, OnInit, Optional, Output } from '@angular/core';\r\nimport { AbstractControl, ControlValueAccessor, NG_VALIDATORS, NG_VALUE_ACCESSOR, ValidationErrors, Validator, ValidatorFn, Validators } from '@angular/forms';\r\nimport { ThemePalette } from '@angular/material/core';\r\nimport { MatFormField } from '@angular/material/form-field';\r\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\r\nimport { Subscription } from 'rxjs';\r\nimport { createMissingDateImplError } from '../../helpers';\r\nimport { Color } from '../../models';\r\nimport { ColorAdapter, MAT_COLOR_FORMATS, MatColorFormats } from '../../services';\r\nimport { NgxMatColorPickerComponent } from './color-picker.component';\r\n\r\nexport class NgxMatColorPickerInputEvent {\r\n  /** The new value for the target colorpicker input. */\r\n  value: Color | null;\r\n\r\n  constructor(\r\n    /** Reference to the colorpicker input component that emitted the event. */\r\n    public target: NgxMatColorPickerInput,\r\n    /** Reference to the native input element associated with the colorpicker input. */\r\n    public targetElement: HTMLElement) {\r\n    this.value = this.target.value;\r\n  }\r\n}\r\n\r\n\r\nexport const MAT_COLORPICKER_VALUE_ACCESSOR: any = {\r\n  provide: NG_VALUE_ACCESSOR,\r\n  useExisting: forwardRef(() => NgxMatColorPickerInput),\r\n  multi: true\r\n};\r\n\r\n\r\nexport const MAT_COLORPICKER_VALIDATORS: any = {\r\n  provide: NG_VALIDATORS,\r\n  useExisting: forwardRef(() => NgxMatColorPickerInput),\r\n  multi: true\r\n};\r\n\r\n@Directive({\r\n  selector: 'input[ngxMatColorPicker]',\r\n  providers: [\r\n    MAT_COLORPICKER_VALUE_ACCESSOR,\r\n    MAT_COLORPICKER_VALIDATORS,\r\n    { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: NgxMatColorPickerInput },\r\n  ],\r\n  host: {\r\n    '[attr.aria-haspopup]': '_picker ? \"dialog\" : null',\r\n    '[attr.aria-owns]': '(_picker?.opened && _picker.id) || null',\r\n    '[disabled]': 'disabled',\r\n    '(input)': '_onInput($event.target.value)',\r\n    '(change)': '_onChange()',\r\n    '(blur)': '_onBlur()',\r\n    '(keydown)': '_onKeydown($event)',\r\n  },\r\n  exportAs: 'ngxMatColorPickerInput',\r\n})\r\nexport class NgxMatColorPickerInput implements ControlValueAccessor, OnInit, OnDestroy, Validator {\r\n\r\n  @Input()\r\n  set ngxMatColorPicker(value: NgxMatColorPickerComponent) {\r\n    if (!value) {\r\n      return;\r\n    }\r\n\r\n    this._picker = value;\r\n    this._picker.registerInput(this);\r\n    this._pickerSubscription.unsubscribe();\r\n\r\n    this._pickerSubscription = this._picker._selectedChanged.subscribe((selected: Color) => {\r\n      this.value = selected;\r\n      this._cvaOnChange(selected);\r\n      this._onTouched();\r\n      this.colorInput.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\r\n      this.colorChange.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\r\n    });\r\n  }\r\n  _picker: NgxMatColorPickerComponent;\r\n\r\n  /** Whether the colorpicker-input is disabled. */\r\n  @Input()\r\n  get disabled(): boolean { return !!this._disabled; }\r\n  set disabled(value: boolean) {\r\n    const newValue = coerceBooleanProperty(value);\r\n    const element = this._elementRef.nativeElement;\r\n\r\n    if (this._disabled !== newValue) {\r\n      this._disabled = newValue;\r\n      this._disabledChange.emit(newValue);\r\n    }\r\n\r\n    // We need to null check the `blur` method, because it's undefined during SSR.\r\n    if (newValue && element.blur) {\r\n      // Normally, native input elements automatically blur if they turn disabled. This behavior\r\n      // is problematic, because it would mean that it triggers another change detection cycle,\r\n      // which then causes a changed after checked error if the input element was focused before.\r\n      element.blur();\r\n    }\r\n  }\r\n  private _disabled: boolean;\r\n\r\n  /** The value of the input. */\r\n  @Input()\r\n  get value(): Color | null { return this._value; }\r\n  set value(value: Color | null) {\r\n    const oldValue = this.value;\r\n    this._value = value;\r\n    this._formatValue(value);\r\n\r\n    if (!this._adapter.sameColor(oldValue, value)) {\r\n      this._valueChange.emit(value);\r\n    }\r\n\r\n  }\r\n  private _value: Color | null;\r\n\r\n  /** Emits when a `change` event is fired on this `<input>`. */\r\n  @Output() readonly colorChange: EventEmitter<NgxMatColorPickerInputEvent> =\r\n    new EventEmitter<NgxMatColorPickerInputEvent>();\r\n\r\n  /** Emits when an `input` event is fired on this `<input>`. */\r\n  @Output() readonly colorInput: EventEmitter<NgxMatColorPickerInputEvent> =\r\n    new EventEmitter<NgxMatColorPickerInputEvent>();\r\n\r\n  /** Emits when the disabled state has changed */\r\n  _disabledChange = new EventEmitter<boolean>();\r\n\r\n  /** Emits when the value changes (either due to user input or programmatic change). */\r\n  _valueChange = new EventEmitter<Color>();\r\n\r\n  _onTouched = () => { };\r\n\r\n  private _cvaOnChange: (value: any) => void = () => { };\r\n\r\n  private _validatorOnChange = () => { };\r\n\r\n  private _pickerSubscription = Subscription.EMPTY;\r\n\r\n  /** The combined form control validator for this input. */\r\n  private _validator: ValidatorFn | null =\r\n    Validators.compose([]);\r\n\r\n  /** Whether the last value set on the input was valid. */\r\n  private _lastValueValid = false;\r\n\r\n  constructor(private _elementRef: ElementRef<HTMLInputElement>,\r\n    @Optional() private _formField: MatFormField,\r\n    @Optional() @Inject(MAT_COLOR_FORMATS) private _colorFormats: MatColorFormats,\r\n    private _adapter: ColorAdapter) {\r\n    if (!this._colorFormats) {\r\n      throw createMissingDateImplError('MAT_COLOR_FORMATS');\r\n    }\r\n  }\r\n\r\n  /** Returns the palette used by the input's form field, if any. */\r\n  public getThemePalette(): ThemePalette {\r\n    return this._formField ? this._formField.color : undefined;\r\n  }\r\n\r\n\r\n  registerOnValidatorChange(fn: () => void): void {\r\n    this._validatorOnChange = fn;\r\n  }\r\n\r\n\r\n  validate(c: AbstractControl): ValidationErrors | null {\r\n    return this._validator ? this._validator(c) : null;\r\n  }\r\n\r\n  /**\r\n   * @deprecated\r\n   * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\r\n   */\r\n  getPopupConnectionElementRef(): ElementRef {\r\n    return this.getConnectedOverlayOrigin();\r\n  }\r\n\r\n  /**\r\n  * Gets the element that the colorpicker popup should be connected to.\r\n  * @return The element to connect the popup to.\r\n  */\r\n  getConnectedOverlayOrigin(): ElementRef {\r\n    return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\r\n  }\r\n\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    this._pickerSubscription.unsubscribe();\r\n    this._valueChange.complete();\r\n    this._disabledChange.complete();\r\n  }\r\n\r\n  // Implemented as part of ControlValueAccessor.\r\n  writeValue(value: Color): void {\r\n    this.value = value;\r\n  }\r\n\r\n  // Implemented as part of ControlValueAccessor.\r\n  registerOnChange(fn: (value: any) => void): void {\r\n    this._cvaOnChange = fn;\r\n  }\r\n\r\n  // Implemented as part of ControlValueAccessor.\r\n  registerOnTouched(fn: () => void): void {\r\n    this._onTouched = fn;\r\n  }\r\n\r\n  // Implemented as part of ControlValueAccessor.\r\n  setDisabledState(isDisabled: boolean): void {\r\n    this.disabled = isDisabled;\r\n  }\r\n\r\n  _onChange() {\r\n    this.colorChange.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\r\n  }\r\n\r\n  _onKeydown(event: KeyboardEvent) {\r\n    const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\r\n\r\n    if (this._picker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\r\n      this._picker.open();\r\n      event.preventDefault();\r\n    }\r\n  }\r\n\r\n  /** Handles blur events on the input. */\r\n  _onBlur() {\r\n    // Reformat the input only if we have a valid value.\r\n    if (this.value) {\r\n      this._formatValue(this.value);\r\n    }\r\n\r\n    this._onTouched();\r\n  }\r\n\r\n  /** Formats a value and sets it on the input element. */\r\n  private _formatValue(value: Color | null) {\r\n    this._elementRef.nativeElement.value = value ? this._adapter.format(value, this._colorFormats.display.colorInput) : '';\r\n  }\r\n\r\n  _onInput(value: string) {\r\n    const lastValueWasValid = this._lastValueValid;\r\n    const nextValue = this._adapter.parse(value);\r\n\r\n    if (!this._adapter.sameColor(nextValue, this._value)) {\r\n      this._value = nextValue;\r\n      this._cvaOnChange(nextValue);\r\n      this._valueChange.emit(nextValue);\r\n      this.colorInput.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\r\n    } else if (lastValueWasValid !== this._lastValueValid) {\r\n      this._validatorOnChange();\r\n    }\r\n  }\r\n\r\n}\r\n\r\n\r\n","import {\r\n  AfterContentInit, ChangeDetectorRef, Component, ContentChild, Directive, Input, OnChanges, OnDestroy,\r\n  OnInit, SimpleChanges, ViewChild, ViewEncapsulation\r\n} from '@angular/core';\r\nimport { MatButton } from '@angular/material/button';\r\nimport { Subscription, merge, of } from 'rxjs';\r\nimport { NgxMatColorPickerComponent } from '../color-picker/color-picker.component';\r\n\r\n@Directive({\r\n  selector: '[ngxMatColorpickerToggleIcon]',\r\n})\r\nexport class NgxMatColorpickerToggleIcon { }\r\n\r\n@Component({\r\n  selector: 'ngx-mat-color-toggle',\r\n  templateUrl: './color-toggle.component.html',\r\n  styleUrls: ['./color-toggle.component.scss'],\r\n  host: {\r\n    'class': 'ngx-mat-color-toggle',\r\n    // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the\r\n    // consumer may have provided, while still being able to receive focus.\r\n    '[attr.tabindex]': '-1',\r\n    '[class.ngx-mat-color-toggle-active]': 'picker && picker.opened',\r\n    '[class.mat-accent]': 'picker && picker.color === \"accent\"',\r\n    '[class.mat-warn]': 'picker && picker.color === \"warn\"',\r\n    '(focus)': '_button.focus()',\r\n  },\r\n  exportAs: 'ngxMatColorPickerToggle',\r\n  encapsulation: ViewEncapsulation.None\r\n})\r\nexport class NgxMatColorToggleComponent implements OnInit, AfterContentInit, OnChanges, OnDestroy {\r\n\r\n  private _stateChanges = Subscription.EMPTY;\r\n\r\n  @Input('for') picker: NgxMatColorPickerComponent;\r\n  @Input() tabIndex: number;\r\n\r\n  @Input() get disabled(): boolean {\r\n    if (this._disabled == null && this.picker) {\r\n      return this.picker.disabled;\r\n    }\r\n  }\r\n  set disabled(value: boolean) {\r\n    this._disabled = value;\r\n  }\r\n  private _disabled: boolean;\r\n\r\n  /** Whether ripples on the toggle should be disabled. */\r\n  @Input() disableRipple: boolean;\r\n\r\n  /** Custom icon set by the consumer. */\r\n  @ContentChild(NgxMatColorpickerToggleIcon) _customIcon: NgxMatColorpickerToggleIcon;\r\n\r\n  @ViewChild('button') _button: MatButton;\r\n\r\n  constructor(private _cd: ChangeDetectorRef) { }\r\n\r\n  ngOnInit() {\r\n  }\r\n\r\n  ngOnChanges(changes: SimpleChanges): void {\r\n    if (changes['picker']) {\r\n      this._watchStateChanges();\r\n    }\r\n  }\r\n\r\n  ngOnDestroy() {\r\n    this._stateChanges.unsubscribe();\r\n  }\r\n\r\n  ngAfterContentInit() {\r\n    this._watchStateChanges();\r\n  }\r\n\r\n  public open(event: Event): void {\r\n    if (this.picker && !this.disabled) {\r\n      this.picker.open();\r\n      event.stopPropagation();\r\n    }\r\n  }\r\n\r\n  private _watchStateChanges() {\r\n    const disabled$ = this.picker ? this.picker._disabledChange : of();\r\n    const inputDisabled$ = this.picker && this.picker._pickerInput ?\r\n      this.picker._pickerInput._disabledChange : of();\r\n\r\n    const pickerToggled$ = this.picker ?\r\n      merge(this.picker.openedStream, this.picker.closedStream) : of();\r\n    this._stateChanges.unsubscribe();\r\n\r\n    this._stateChanges = merge(disabled$, inputDisabled$, pickerToggled$).subscribe(() => this._cd.markForCheck());\r\n  }\r\n\r\n}\r\n","<button #button mat-icon-button type=\"button\" [attr.aria-haspopup]=\"picker ? 'dialog' : null\"\r\n  [attr.tabindex]=\"disabled ? -1 : tabIndex\" [disabled]=\"disabled\" (click)=\"open($event)\"\r\n  [disableRipple]=\"disableRipple\">\r\n\r\n  <mat-icon *ngIf=\"!_customIcon\" [style.color]=\"picker?._selected?.rgba\">\r\n    palette\r\n  </mat-icon>\r\n\r\n  <ng-content select=\"[ngxMatColorpickerToggleIcon]\"></ng-content>\r\n\r\n</button>","import { PortalModule } from '@angular/cdk/portal';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCardModule } from '@angular/material/card';\r\nimport { MatDialogModule } from '@angular/material/dialog';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatRadioModule } from '@angular/material/radio';\r\nimport {\r\n  NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER,\r\n  NgxMatColorCanvasComponent,\r\n  NgxMatColorCollectionComponent,\r\n  NgxMatColorPaletteComponent,\r\n  NgxMatColorPickerComponent,\r\n  NgxMatColorPickerContentComponent,\r\n  NgxMatColorPickerInput, NgxMatColorSliderComponent,\r\n  NgxMatColorToggleComponent,\r\n  NgxMatColorpickerToggleIcon\r\n} from './components';\r\nimport { NumericColorInputDirective } from './directives';\r\nimport { ColorAdapter } from './services';\r\n\r\n@NgModule({\r\n  declarations: [\r\n    NgxMatColorPaletteComponent,\r\n    NgxMatColorCanvasComponent,\r\n    NgxMatColorCollectionComponent,\r\n    NgxMatColorSliderComponent,\r\n    NumericColorInputDirective,\r\n    NgxMatColorPickerContentComponent,\r\n    NgxMatColorPickerComponent,\r\n    NgxMatColorToggleComponent,\r\n    NgxMatColorpickerToggleIcon,\r\n    NgxMatColorPickerInput\r\n  ],\r\n  imports: [\r\n    CommonModule,\r\n    MatInputModule,\r\n    MatButtonModule,\r\n    MatCardModule,\r\n    MatRadioModule,\r\n    FormsModule,\r\n    ReactiveFormsModule,\r\n    MatDialogModule,\r\n    PortalModule,\r\n    MatIconModule\r\n  ],\r\n  exports: [\r\n    NgxMatColorToggleComponent,\r\n    NgxMatColorPickerInput,\r\n    NgxMatColorPickerComponent,\r\n    NgxMatColorpickerToggleIcon\r\n  ],\r\n  providers: [\r\n    ColorAdapter,\r\n    NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER\r\n  ]\r\n})\r\nexport class NgxMatColorPickerModule { }\r\n","/*\r\n * Public API Surface of color-picker\r\n */\r\n\r\nexport * from './lib/color-picker.module';\r\nexport * from './lib/components';\r\nexport * from './lib/directives';\r\nexport * from './lib/helpers';\r\nexport * from './lib/models';\r\nexport * from './lib/services';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i3","i5.NgxMatColorSliderComponent","i6.NumericColorInputDirective","i1","i2","i1.NgxMatColorCanvasComponent","i2.NgxMatColorCollectionComponent","i1.NgxMatColorPaletteComponent","i4.ColorAdapter","i2.ColorAdapter"],"mappings":"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"}