{"version":3,"file":"ngx-color-picker.mjs","sources":["../../../projects/lib/src/lib/formats.ts","../../../projects/lib/src/lib/helpers.ts","../../../projects/lib/src/lib/color-picker.service.ts","../../../projects/lib/src/lib/color-picker.component.ts","../../../projects/lib/src/lib/color-picker.component.html","../../../projects/lib/src/lib/color-picker.directive.ts","../../../projects/lib/src/ngx-color-picker.ts"],"sourcesContent":["export enum ColorFormats {\n  HEX,\n  RGBA,\n  HSLA,\n  CMYK\n}\n\nexport class Rgba {\n  constructor(public r: number, public g: number, public b: number, public a: number) {}\n}\n\nexport class Hsva {\n  constructor(public h: number, public s: number, public v: number, public a: number) {}\n}\n\nexport class Hsla {\n  constructor(public h: number, public s: number, public l: number, public a: number) {}\n}\n\nexport class Cmyk {\n  constructor(public c: number, public m: number, public y: number, public k: number, public a: number = 1) {}\n}\n","import { Directive, Input, Output, EventEmitter, HostListener, ElementRef } from '@angular/core';\n\nexport type ColorMode = 'color' | 'c' | '1' |\n  'grayscale' | 'g' | '2' | 'presets' | 'p' | '3';\n\nexport type AlphaChannel = 'enabled' | 'disabled' | 'always' | 'forced';\n\nexport type BoundingRectangle = {\n  top: number;\n  bottom: number;\n  left: number;\n  right: number;\n  height: number;\n  width: number;\n};\n\nexport type OutputFormat = 'auto' | 'hex' | 'rgba' | 'hsla';\n\nexport function calculateAutoPositioning(elBounds: BoundingRectangle, triggerElBounds: BoundingRectangle): string {\n  // Defaults\n  let usePositionX = 'right';\n  let usePositionY = 'bottom';\n  // Calculate collisions\n  const { height, width } = elBounds;\n  const { top, left } = triggerElBounds;\n  const bottom = top + triggerElBounds.height;\n  const right = left + triggerElBounds.width;\n\n  const collisionTop = top - height < 0;\n  const collisionBottom = bottom + height > (window.innerHeight || document.documentElement.clientHeight);\n  const collisionLeft = left - width < 0;\n  const collisionRight = right + width > (window.innerWidth || document.documentElement.clientWidth);\n  const collisionAll = collisionTop && collisionBottom && collisionLeft && collisionRight;\n\n  // Generate X & Y position values\n  if (collisionBottom) {\n    usePositionY = 'top';\n  }\n\n  if (collisionTop) {\n    usePositionY = 'bottom';\n  }\n\n  if (collisionLeft) {\n    usePositionX = 'right';\n  }\n\n  if (collisionRight) {\n    usePositionX = 'left';\n  }\n\n\n  // Choose the largest gap available\n  if (collisionAll) {\n    const postions = ['left', 'right', 'top', 'bottom'];\n    return postions.reduce((prev, next) => elBounds[prev] > elBounds[next] ? prev : next);\n  }\n\n  if ((collisionLeft && collisionRight)) {\n    if (collisionTop) { return 'bottom'; }\n    if (collisionBottom) { return 'top'; }\n    return top > bottom ? 'top' : 'bottom';\n  }\n\n  if ((collisionTop && collisionBottom)) {\n    if (collisionLeft) { return 'right'; }\n    if (collisionRight) { return 'left'; }\n    return left > right ? 'left' : 'right';\n  }\n\n  return `${usePositionY}-${usePositionX}`;\n}\n\nexport function detectIE(): boolean | number {\n  let ua = '';\n\n  if (typeof navigator !== 'undefined') {\n    ua = navigator.userAgent.toLowerCase();\n  }\n\n  const msie = ua.indexOf('msie ');\n\n  if (msie > 0) {\n    // IE 10 or older => return version number\n    return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n  }\n\n  // Other browser\n  return false;\n}\n\n@Directive({\n  selector: '[text]'\n})\nexport class TextDirective {\n  @Input() rg: number;\n  @Input() text: any;\n\n  @Output() newValue = new EventEmitter<any>();\n\n  @HostListener('input', ['$event']) inputChange(event: any): void {\n    const value = event.target.value;\n\n    if (this.rg === undefined) {\n      this.newValue.emit(value);\n    } else {\n      const numeric = parseFloat(value);\n\n      this.newValue.emit({ v: numeric, rg: this.rg });\n    }\n  }\n}\n\n@Directive({\n  selector: '[slider]'\n})\nexport class SliderDirective {\n  private listenerMove: any;\n  private listenerStop: any;\n\n  @Input() rgX: number;\n  @Input() rgY: number;\n\n  @Input() slider: string;\n\n  @Output() dragEnd = new EventEmitter();\n  @Output() dragStart = new EventEmitter();\n\n  @Output() newValue = new EventEmitter<any>();\n\n  @HostListener('mousedown', ['$event']) mouseDown(event: any): void {\n    this.start(event);\n  }\n\n  @HostListener('touchstart', ['$event']) touchStart(event: any): void {\n    this.start(event);\n  }\n\n  constructor(private elRef: ElementRef) {\n    this.listenerMove = (event: any) => this.move(event);\n\n    this.listenerStop = () => this.stop();\n  }\n\n  private move(event: any): void {\n    event.preventDefault();\n\n    this.setCursor(event);\n  }\n\n  private start(event: any): void {\n    this.setCursor(event);\n\n    event.stopPropagation();\n\n    document.addEventListener('mouseup', this.listenerStop);\n    document.addEventListener('touchend', this.listenerStop);\n    document.addEventListener('mousemove', this.listenerMove);\n    document.addEventListener('touchmove', this.listenerMove);\n\n    this.dragStart.emit();\n  }\n\n  private stop(): void {\n    document.removeEventListener('mouseup', this.listenerStop);\n    document.removeEventListener('touchend', this.listenerStop);\n    document.removeEventListener('mousemove', this.listenerMove);\n    document.removeEventListener('touchmove', this.listenerMove);\n\n    this.dragEnd.emit();\n  }\n\n  private getX(event: any): number {\n    const position = this.elRef.nativeElement.getBoundingClientRect();\n\n    const pageX = (event.pageX !== undefined) ? event.pageX : event.touches[0].pageX;\n\n    return pageX - position.left - window.pageXOffset;\n  }\n\n  private getY(event: any): number {\n    const position = this.elRef.nativeElement.getBoundingClientRect();\n\n    const pageY = (event.pageY !== undefined) ? event.pageY : event.touches[0].pageY;\n\n    return pageY - position.top - window.pageYOffset;\n  }\n\n  private setCursor(event: any): void {\n    const width = this.elRef.nativeElement.offsetWidth;\n    const height = this.elRef.nativeElement.offsetHeight;\n\n    const x = Math.max(0, Math.min(this.getX(event), width));\n    const y = Math.max(0, Math.min(this.getY(event), height));\n\n    if (this.rgX !== undefined && this.rgY !== undefined) {\n      this.newValue.emit({ s: x / width, v: (1 - y / height), rgX: this.rgX, rgY: this.rgY });\n    } else if (this.rgX === undefined && this.rgY !== undefined) {\n      this.newValue.emit({ v: y / height, rgY: this.rgY });\n    } else if (this.rgX !== undefined && this.rgY === undefined) {\n      this.newValue.emit({ v: x / width, rgX: this.rgX });\n    }\n  }\n}\n\nexport class SliderPosition {\n  constructor(public h: number, public s: number, public v: number, public a: number) {}\n}\n\nexport class SliderDimension {\n  constructor(public h: number, public s: number, public v: number, public a: number) {}\n}\n","import { Injectable } from '@angular/core';\n\nimport { Cmyk, Rgba, Hsla, Hsva } from './formats';\n\nimport { ColorPickerComponent } from './color-picker.component';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ColorPickerService {\n  private active: ColorPickerComponent | null = null;\n\n  public setActive(active: ColorPickerComponent | null): void {\n    if (this.active && this.active !== active && this.active.cpDialogDisplay !== 'inline') {\n      this.active.closeDialog();\n    }\n\n    this.active = active;\n  }\n\n  public hsva2hsla(hsva: Hsva): Hsla {\n    const h = hsva.h, s = hsva.s, v = hsva.v, a = hsva.a;\n\n    if (v === 0) {\n      return new Hsla(h, 0, 0, a);\n    } else if (s === 0 && v === 1) {\n      return new Hsla(h, 1, 1, a);\n    } else {\n      const l = v * (2 - s) / 2;\n\n      return new Hsla(h, v * s / (1 - Math.abs(2 * l - 1)), l, a);\n    }\n  }\n\n  public hsla2hsva(hsla: Hsla): Hsva {\n    const h = Math.min(hsla.h, 1), s = Math.min(hsla.s, 1);\n    const l = Math.min(hsla.l, 1), a = Math.min(hsla.a, 1);\n\n    if (l === 0) {\n      return new Hsva(h, 0, 0, a);\n    } else {\n      const v = l + s * (1 - Math.abs(2 * l - 1)) / 2;\n\n      return new Hsva(h, 2 * (v - l) / v, v, a);\n    }\n  }\n\n  public hsvaToRgba(hsva: Hsva): Rgba {\n    let r: number, g: number, b: number;\n\n    const h = hsva.h, s = hsva.s, v = hsva.v, a = hsva.a;\n\n    const i = Math.floor(h * 6);\n    const f = h * 6 - i;\n    const p = v * (1 - s);\n    const q = v * (1 - f * s);\n    const t = v * (1 - (1 - f) * s);\n\n    switch (i % 6) {\n      case 0:\n        r = v, g = t, b = p;\n        break;\n      case 1:\n        r = q, g = v, b = p;\n        break;\n      case 2:\n        r = p, g = v, b = t;\n        break;\n      case 3:\n        r = p, g = q, b = v;\n        break;\n      case 4:\n        r = t, g = p, b = v;\n        break;\n      case 5:\n        r = v, g = p, b = q;\n        break;\n      default:\n        r = 0, g = 0, b = 0;\n    }\n\n    return new Rgba(r, g, b, a);\n  }\n\n  public cmykToRgb(cmyk: Cmyk): Rgba {\n    const r = ( 1 - cmyk.c ) * (1 - cmyk.k);\n    const g = ( 1 - cmyk.m ) * (1 - cmyk.k);\n    const b = ( 1 - cmyk.y ) * (1 - cmyk.k);\n\n    return new Rgba(r, g, b, cmyk.a);\n  }\n\n  public rgbaToCmyk(rgba: Rgba): Cmyk {\n    const k: number = 1 - Math.max(rgba.r, rgba.g, rgba.b);\n\n    if (k === 1) {\n      return new Cmyk(0, 0, 0, 1, rgba.a);\n    } else {\n      const c = (1 - rgba.r - k) / (1 - k);\n      const m = (1 - rgba.g - k) / (1 - k);\n      const y = (1 - rgba.b - k) / (1 - k);\n\n      return new Cmyk(c, m, y, k, rgba.a);\n    }\n  }\n\n  public rgbaToHsva(rgba: Rgba): Hsva {\n    let h: number, s: number;\n\n    const r = Math.min(rgba.r, 1), g = Math.min(rgba.g, 1);\n    const b = Math.min(rgba.b, 1), a = Math.min(rgba.a, 1);\n\n    const max = Math.max(r, g, b), min = Math.min(r, g, b);\n\n    const v: number = max, d = max - min;\n\n    s = (max === 0) ? 0 : d / max;\n\n    if (max === min) {\n      h = 0;\n    } else {\n      switch (max) {\n        case r:\n          h = (g - b) / d + (g < b ? 6 : 0);\n          break;\n        case g:\n          h = (b - r) / d + 2;\n          break;\n        case b:\n          h = (r - g) / d + 4;\n          break;\n        default:\n          h = 0;\n      }\n\n      h /= 6;\n    }\n\n    return new Hsva(h, s, v, a);\n  }\n\n  public rgbaToHex(rgba: Rgba, allowHex8?: boolean): string {\n    /* eslint-disable no-bitwise */\n    let hex = '#' + ((1 << 24) | (rgba.r << 16) | (rgba.g << 8) | rgba.b).toString(16).substr(1);\n\n    if (allowHex8) {\n      hex += ((1 << 8) | Math.round(rgba.a * 255)).toString(16).substr(1);\n    }\n    /* eslint-enable no-bitwise */\n\n    return hex;\n  }\n\n  public normalizeCMYK(cmyk: Cmyk): Cmyk {\n    return new Cmyk(cmyk.c / 100, cmyk.m / 100, cmyk.y / 100, cmyk.k / 100, cmyk.a);\n  }\n\n  public denormalizeCMYK(cmyk: Cmyk): Cmyk {\n    return new Cmyk(Math.floor(cmyk.c * 100), Math.floor(cmyk.m * 100), Math.floor(cmyk.y * 100),\n      Math.floor(cmyk.k * 100), cmyk.a);\n  }\n\n  public denormalizeRGBA(rgba: Rgba): Rgba {\n    return new Rgba(Math.round(rgba.r * 255), Math.round(rgba.g * 255), Math.round(rgba.b * 255), rgba.a);\n  }\n\n  public stringToHsva(colorString: string = '', allowHex8: boolean = false): Hsva | null {\n    let hsva: Hsva | null = null;\n\n    colorString = (colorString || '').toLowerCase();\n\n    const stringParsers = [\n      {\n        re: /(rgb)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})\\s*%?,\\s*(\\d{1,3})\\s*%?(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n        parse: function(execResult: any) {\n          return new Rgba(parseInt(execResult[2], 10) / 255,\n            parseInt(execResult[3], 10) / 255,\n            parseInt(execResult[4], 10) / 255,\n            isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]));\n        }\n      }, {\n        re: /(hsl)a?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3})%\\s*,\\s*(\\d{1,3})%\\s*(?:,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)/,\n        parse: function(execResult: any) {\n          return new Hsla(parseInt(execResult[2], 10) / 360,\n            parseInt(execResult[3], 10) / 100,\n            parseInt(execResult[4], 10) / 100,\n            isNaN(parseFloat(execResult[5])) ? 1 : parseFloat(execResult[5]));\n        }\n      }\n    ];\n\n    if (allowHex8) {\n      stringParsers.push({\n        re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})?$/,\n        parse: function(execResult: any) {\n          return new Rgba(parseInt(execResult[1], 16) / 255,\n            parseInt(execResult[2], 16) / 255,\n            parseInt(execResult[3], 16) / 255,\n            parseInt(execResult[4] || 'FF', 16) / 255);\n        }\n      });\n    } else {\n      stringParsers.push({\n        re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})$/,\n        parse: function(execResult: any) {\n          return new Rgba(parseInt(execResult[1], 16) / 255,\n            parseInt(execResult[2], 16) / 255,\n            parseInt(execResult[3], 16) / 255,\n            1);\n        }\n      });\n    }\n\n    stringParsers.push({\n      re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])$/,\n      parse: function(execResult: any) {\n        return new Rgba(parseInt(execResult[1] + execResult[1], 16) / 255,\n          parseInt(execResult[2] + execResult[2], 16) / 255,\n          parseInt(execResult[3] + execResult[3], 16) / 255,\n          1);\n      }\n    });\n\n    for (const key in stringParsers) {\n      if (stringParsers.hasOwnProperty(key)) {\n        const parser = stringParsers[key];\n\n        const match = parser.re.exec(colorString), color: any = match && parser.parse(match);\n\n        if (color) {\n          if (color instanceof Rgba) {\n            hsva = this.rgbaToHsva(color);\n          } else if (color instanceof Hsla) {\n            hsva = this.hsla2hsva(color);\n          }\n\n          return hsva;\n        }\n      }\n    }\n\n    return hsva;\n  }\n\n  public outputFormat(hsva: Hsva, outputFormat: string, alphaChannel: string | null): string {\n    if (outputFormat === 'auto') {\n      outputFormat = hsva.a < 1 ? 'rgba' : 'hex';\n    }\n\n    switch (outputFormat) {\n      case 'hsla':\n        const hsla = this.hsva2hsla(hsva);\n\n        const hslaText = new Hsla(Math.round((hsla.h) * 360), Math.round(hsla.s * 100),\n          Math.round(hsla.l * 100), Math.round(hsla.a * 100) / 100);\n\n        if (hsva.a < 1 || alphaChannel === 'always') {\n          return 'hsla(' + hslaText.h + ',' + hslaText.s + '%,' + hslaText.l + '%,' +\n            hslaText.a + ')';\n        } else {\n          return 'hsl(' + hslaText.h + ',' + hslaText.s + '%,' + hslaText.l + '%)';\n        }\n\n      case 'rgba':\n        const rgba = this.denormalizeRGBA(this.hsvaToRgba(hsva));\n\n        if (hsva.a < 1 || alphaChannel === 'always') {\n          return 'rgba(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ',' +\n            Math.round(rgba.a * 100) / 100 + ')';\n        } else {\n          return 'rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')';\n        }\n\n      default:\n        const allowHex8 = (alphaChannel === 'always' || alphaChannel === 'forced');\n\n        return this.rgbaToHex(this.denormalizeRGBA(this.hsvaToRgba(hsva)), allowHex8);\n    }\n  }\n}\n","import {\n  Component,\n  OnInit,\n  OnDestroy,\n  AfterViewInit,\n  ViewChild,\n  HostListener,\n  ViewEncapsulation,\n  ElementRef,\n  ChangeDetectorRef,\n  TemplateRef,\n  NgZone,\n  Inject,\n  PLATFORM_ID,\n} from '@angular/core';\n\nimport { CommonModule, DOCUMENT, isPlatformBrowser } from '@angular/common';\n\nimport { detectIE, calculateAutoPositioning, SliderDirective, TextDirective } from './helpers';\n\nimport { ColorFormats, Cmyk, Hsla, Hsva, Rgba } from './formats';\nimport { AlphaChannel, OutputFormat, SliderDimension, SliderPosition } from './helpers';\n\nimport { ColorPickerService } from './color-picker.service';\n\n// Do not store that on the class instance since the condition will be run\n// every time the class is created.\nconst SUPPORTS_TOUCH = typeof window !== 'undefined' && 'ontouchstart' in window;\n\n@Component({\n  selector: 'color-picker',\n  templateUrl: './color-picker.component.html',\n  styleUrls: [ './color-picker.component.css' ],\n  encapsulation: ViewEncapsulation.None,\n  imports: [\n    SliderDirective,\n    TextDirective,\n    CommonModule\n  ]\n})\nexport class ColorPickerComponent implements OnInit, OnDestroy, AfterViewInit {\n  private isIE10: boolean = false;\n\n  private cmyk: Cmyk;\n  private hsva: Hsva;\n\n  private width: number;\n  private height: number;\n\n  private cmykColor: string;\n  private outputColor: string;\n  private initialColor: string;\n  private fallbackColor: string;\n\n  private listenerResize: any;\n  private listenerMouseDown: EventListener;\n\n  private directiveInstance: any;\n\n  private sliderH: number;\n  private sliderDimMax: SliderDimension;\n  private directiveElementRef: ElementRef;\n\n  private dialogArrowSize: number = 10;\n  private dialogArrowOffset: number = 15;\n\n  private dialogInputFields: ColorFormats[] = [\n    ColorFormats.HEX,\n    ColorFormats.RGBA,\n    ColorFormats.HSLA,\n    ColorFormats.CMYK\n  ];\n\n  private useRootViewContainer: boolean = false;\n\n  public show: boolean;\n  public hidden: boolean;\n\n  public top: number;\n  public left: number;\n  public position: string;\n\n  public format: ColorFormats;\n  public slider: SliderPosition;\n\n  public hexText: string;\n  public hexAlpha: number;\n\n  public cmykText: Cmyk;\n  public hslaText: Hsla;\n  public rgbaText: Rgba;\n\n  public arrowTop: number;\n\n  public selectedColor: string;\n  public hueSliderColor: string;\n  public alphaSliderColor: string;\n\n  public cpWidth: number;\n  public cpHeight: number;\n\n  public cpColorMode: number;\n\n  public cpCmykEnabled: boolean;\n\n  public cpAlphaChannel: AlphaChannel;\n  public cpOutputFormat: OutputFormat;\n\n  public cpDisableInput: boolean;\n  public cpDialogDisplay: string;\n\n  public cpIgnoredElements: any;\n\n  public cpSaveClickOutside: boolean;\n  public cpCloseClickOutside: boolean;\n\n  public cpPosition: string;\n  public cpUsePosition: string;\n  public cpPositionOffset: number;\n\n  public cpOKButton: boolean;\n  public cpOKButtonText: string;\n  public cpOKButtonClass: string;\n\n  public cpCancelButton: boolean;\n  public cpCancelButtonText: string;\n  public cpCancelButtonClass: string;\n\n  public cpEyeDropper: boolean;\n  public eyeDropperSupported: boolean;\n\n  public cpPresetLabel: string;\n  public cpPresetColors: string[];\n  public cpPresetColorsClass: string;\n  public cpMaxPresetColorsLength: number;\n\n  public cpPresetEmptyMessage: string;\n  public cpPresetEmptyMessageClass: string;\n\n  public cpAddColorButton: boolean;\n  public cpAddColorButtonText: string;\n  public cpAddColorButtonClass: string;\n  public cpRemoveColorButtonClass: string;\n  public cpArrowPosition: number;\n\n  public cpTriggerElement: ElementRef;\n\n  public cpExtraTemplate: TemplateRef<any>;\n\n  @ViewChild('dialogPopup', { static: true }) dialogElement: ElementRef;\n\n  @ViewChild('hueSlider', { static: true }) hueSlider: ElementRef;\n  @ViewChild('alphaSlider', { static: true }) alphaSlider: ElementRef;\n\n  @HostListener('document:keyup.esc', ['$event']) handleEsc(event: any): void {\n    if (this.show && this.cpDialogDisplay === 'popup') {\n      this.onCancelColor(event);\n    }\n  }\n\n  @HostListener('document:keyup.enter', ['$event']) handleEnter(event: any): void {\n    if (this.show && this.cpDialogDisplay === 'popup') {\n      this.onAcceptColor(event);\n    }\n  }\n\n  constructor(\n    private ngZone: NgZone,\n    private elRef: ElementRef,\n    private cdRef: ChangeDetectorRef,\n    @Inject(DOCUMENT) private document: Document,\n    @Inject(PLATFORM_ID) private platformId: string,\n    private service: ColorPickerService\n  ) {\n    this.eyeDropperSupported = isPlatformBrowser(this.platformId) && 'EyeDropper' in this.document.defaultView;\n  }\n\n  ngOnInit(): void {\n    this.slider = new SliderPosition(0, 0, 0, 0);\n\n    const hueWidth = this.hueSlider.nativeElement.offsetWidth || 140;\n    const alphaWidth = this.alphaSlider.nativeElement.offsetWidth || 140;\n\n    this.sliderDimMax = new SliderDimension(hueWidth, this.cpWidth, 130, alphaWidth);\n\n    if (this.cpCmykEnabled) {\n      this.format = ColorFormats.CMYK;\n    } else if (this.cpOutputFormat === 'rgba') {\n      this.format = ColorFormats.RGBA;\n    } else if (this.cpOutputFormat === 'hsla') {\n      this.format = ColorFormats.HSLA;\n    } else {\n      this.format = ColorFormats.HEX;\n    }\n\n    this.listenerMouseDown = (event: MouseEvent) => { this.onMouseDown(event); };\n    this.listenerResize = () => { this.onResize(); };\n\n    this.openDialog(this.initialColor, false);\n  }\n\n  ngOnDestroy(): void {\n    this.closeDialog();\n  }\n\n  ngAfterViewInit(): void {\n    if (this.cpWidth !== 230 || this.cpDialogDisplay === 'inline') {\n      const hueWidth = this.hueSlider.nativeElement.offsetWidth || 140;\n      const alphaWidth = this.alphaSlider.nativeElement.offsetWidth || 140;\n\n      this.sliderDimMax = new SliderDimension(hueWidth, this.cpWidth, 130, alphaWidth);\n\n      this.updateColorPicker(false);\n\n      this.cdRef.detectChanges();\n    }\n  }\n\n  public openDialog(color: any, emit: boolean = true): void {\n    this.service.setActive(this);\n\n    if (!this.width) {\n      this.cpWidth = this.directiveElementRef.nativeElement.offsetWidth;\n    }\n\n    if (!this.height) {\n      this.height = 320;\n    }\n\n    this.setInitialColor(color);\n\n    this.setColorFromString(color, emit);\n\n    this.openColorPicker();\n  }\n\n  public closeDialog(): void {\n    this.closeColorPicker();\n  }\n\n  public setupDialog(instance: any, elementRef: ElementRef, color: any,\n    cpWidth: string, cpHeight: string, cpDialogDisplay: string, cpFallbackColor: string,\n    cpColorMode: string, cpCmykEnabled: boolean, cpAlphaChannel: AlphaChannel,\n    cpOutputFormat: OutputFormat, cpDisableInput: boolean, cpIgnoredElements: any,\n    cpSaveClickOutside: boolean, cpCloseClickOutside: boolean, cpUseRootViewContainer: boolean,\n    cpPosition: string, cpPositionOffset: string, cpPositionRelativeToArrow: boolean,\n    cpPresetLabel: string, cpPresetColors: string[], cpPresetColorsClass: string,\n    cpMaxPresetColorsLength: number, cpPresetEmptyMessage: string,\n    cpPresetEmptyMessageClass: string, cpOKButton: boolean, cpOKButtonClass: string,\n    cpOKButtonText: string, cpCancelButton: boolean, cpCancelButtonClass: string,\n    cpCancelButtonText: string, cpAddColorButton: boolean, cpAddColorButtonClass: string,\n    cpAddColorButtonText: string, cpRemoveColorButtonClass: string, cpEyeDropper: boolean,\n    cpTriggerElement: ElementRef, cpExtraTemplate: TemplateRef<any>): void\n  {\n    this.setInitialColor(color);\n\n    this.setColorMode(cpColorMode);\n\n    this.isIE10 = (detectIE() === 10);\n\n    this.directiveInstance = instance;\n    this.directiveElementRef = elementRef;\n\n    this.cpDisableInput = cpDisableInput;\n\n    this.cpCmykEnabled = cpCmykEnabled;\n    this.cpAlphaChannel = cpAlphaChannel;\n    this.cpOutputFormat = cpOutputFormat;\n\n    this.cpDialogDisplay = cpDialogDisplay;\n\n    this.cpIgnoredElements = cpIgnoredElements;\n\n    this.cpSaveClickOutside = cpSaveClickOutside;\n    this.cpCloseClickOutside = cpCloseClickOutside;\n\n    this.useRootViewContainer = cpUseRootViewContainer;\n\n    this.width = this.cpWidth = parseInt(cpWidth, 10);\n    this.height = this.cpHeight = parseInt(cpHeight, 10);\n\n    this.cpPosition = cpPosition;\n    this.cpPositionOffset = parseInt(cpPositionOffset, 10);\n\n    this.cpOKButton = cpOKButton;\n    this.cpOKButtonText = cpOKButtonText;\n    this.cpOKButtonClass = cpOKButtonClass;\n\n    this.cpCancelButton = cpCancelButton;\n    this.cpCancelButtonText = cpCancelButtonText;\n    this.cpCancelButtonClass = cpCancelButtonClass;\n\n    this.cpEyeDropper = cpEyeDropper;\n\n    this.fallbackColor = cpFallbackColor || '#fff';\n\n    this.setPresetConfig(cpPresetLabel, cpPresetColors);\n\n    this.cpPresetColorsClass = cpPresetColorsClass;\n    this.cpMaxPresetColorsLength = cpMaxPresetColorsLength;\n    this.cpPresetEmptyMessage = cpPresetEmptyMessage;\n    this.cpPresetEmptyMessageClass = cpPresetEmptyMessageClass;\n\n    this.cpAddColorButton = cpAddColorButton;\n    this.cpAddColorButtonText = cpAddColorButtonText;\n    this.cpAddColorButtonClass = cpAddColorButtonClass;\n    this.cpRemoveColorButtonClass = cpRemoveColorButtonClass;\n\n    this.cpTriggerElement = cpTriggerElement;\n    this.cpExtraTemplate = cpExtraTemplate;\n\n    if (!cpPositionRelativeToArrow) {\n      this.dialogArrowOffset = 0;\n    }\n\n    if (cpDialogDisplay === 'inline') {\n      this.dialogArrowSize = 0;\n      this.dialogArrowOffset = 0;\n    }\n\n    if (cpOutputFormat === 'hex' &&\n        cpAlphaChannel !== 'always' && cpAlphaChannel !== 'forced')\n    {\n      this.cpAlphaChannel = 'disabled';\n    }\n  }\n\n  public setColorMode(mode: string): void {\n    switch (mode.toString().toUpperCase()) {\n      case '1':\n      case 'C':\n      case 'COLOR':\n        this.cpColorMode = 1;\n        break;\n      case '2':\n      case 'G':\n      case 'GRAYSCALE':\n        this.cpColorMode = 2;\n        break;\n      case '3':\n      case 'P':\n      case 'PRESETS':\n        this.cpColorMode = 3;\n        break;\n      default:\n        this.cpColorMode = 1;\n    }\n  }\n\n  public setInitialColor(color: any): void {\n    this.initialColor = color;\n  }\n\n  public setPresetConfig(cpPresetLabel: string, cpPresetColors: string[]): void {\n    this.cpPresetLabel = cpPresetLabel;\n    this.cpPresetColors = cpPresetColors;\n  }\n\n  public setColorFromString(value: string, emit: boolean = true, update: boolean = true): void {\n    let hsva: Hsva | null;\n\n    if (this.cpAlphaChannel === 'always' || this.cpAlphaChannel === 'forced') {\n      hsva = this.service.stringToHsva(value, true);\n\n      if (!hsva && !this.hsva) {\n        hsva = this.service.stringToHsva(value, false);\n      }\n    } else {\n      hsva = this.service.stringToHsva(value, false);\n    }\n\n    if (!hsva && !this.hsva) {\n      hsva = this.service.stringToHsva(this.fallbackColor, false);\n    }\n\n    if (hsva) {\n      this.hsva = hsva;\n\n      this.sliderH = this.hsva.h;\n\n      if (this.cpOutputFormat === 'hex' && this.cpAlphaChannel === 'disabled') {\n        this.hsva.a = 1;\n      }\n\n      this.updateColorPicker(emit, update);\n    }\n  }\n\n  public onResize(): void {\n    if (this.position === 'fixed') {\n      this.setDialogPosition();\n    } else if (this.cpDialogDisplay !== 'inline') {\n      this.closeColorPicker();\n    }\n  }\n\n  public onDragEnd(slider: string): void {\n    this.directiveInstance.sliderDragEnd({ slider: slider, color: this.outputColor });\n  }\n\n  public onDragStart(slider: string): void {\n    this.directiveInstance.sliderDragStart({ slider: slider, color: this.outputColor });\n  }\n\n  public onMouseDown(event: MouseEvent): void {\n    if (\n      this.show &&\n      !this.isIE10 &&\n      this.cpDialogDisplay === 'popup' &&\n      event.target !== this.directiveElementRef.nativeElement &&\n      !this.isDescendant(this.elRef.nativeElement, event.target) &&\n      !this.isDescendant(this.directiveElementRef.nativeElement, event.target) &&\n      this.cpIgnoredElements.filter((item: any) => item === event.target).length === 0\n    ) {\n      this.ngZone.run(() => {\n        if (this.cpSaveClickOutside) {\n          this.directiveInstance.colorSelected(this.outputColor);\n        } else {\n          this.hsva = null;\n\n          this.setColorFromString(this.initialColor, false);\n\n          if (this.cpCmykEnabled) {\n            this.directiveInstance.cmykChanged(this.cmykColor);\n          }\n\n          this.directiveInstance.colorChanged(this.initialColor);\n\n          this.directiveInstance.colorCanceled();\n        }\n\n        if (this.cpCloseClickOutside) {\n          this.closeColorPicker();\n        }\n      });\n    }\n  }\n\n  public onAcceptColor(event: Event): void {\n    event.stopPropagation();\n\n    if (this.outputColor) {\n      this.directiveInstance.colorSelected(this.outputColor);\n    }\n\n    if (this.cpDialogDisplay === 'popup') {\n      this.closeColorPicker();\n    }\n  }\n\n  public onCancelColor(event: Event): void {\n    this.hsva = null;\n\n    event.stopPropagation();\n\n    this.directiveInstance.colorCanceled();\n\n    this.setColorFromString(this.initialColor, true);\n\n    if (this.cpDialogDisplay === 'popup') {\n      if (this.cpCmykEnabled) {\n        this.directiveInstance.cmykChanged(this.cmykColor);\n      }\n\n      this.directiveInstance.colorChanged(this.initialColor, true);\n\n      this.closeColorPicker();\n    }\n  }\n\n  public onEyeDropper(): void {\n    if (!this.eyeDropperSupported) return;\n    const eyeDropper = new (window as any).EyeDropper();\n    eyeDropper.open().then((eyeDropperResult: {\n      sRGBHex: string;\n    }) => {\n      this.setColorFromString(eyeDropperResult.sRGBHex, true);\n    });\n  }\n\n  public onFormatToggle(change: number): void {\n    const availableFormats = this.dialogInputFields.length -\n      (this.cpCmykEnabled ? 0 : 1);\n\n    const nextFormat = (((this.dialogInputFields.indexOf(this.format) + change) %\n      availableFormats) + availableFormats) % availableFormats;\n\n    this.format = this.dialogInputFields[nextFormat];\n  }\n\n  public onColorChange(value: { s: number, v: number, rgX: number, rgY: number }): void {\n    this.hsva.s = value.s / value.rgX;\n    this.hsva.v = value.v / value.rgY;\n\n    this.updateColorPicker();\n\n    this.directiveInstance.sliderChanged({\n      slider: 'lightness',\n      value: this.hsva.v,\n      color: this.outputColor\n    });\n\n    this.directiveInstance.sliderChanged({\n      slider: 'saturation',\n      value: this.hsva.s,\n      color: this.outputColor\n    });\n  }\n\n  public onHueChange(value: { v: number, rgX: number }): void {\n    this.hsva.h = value.v / value.rgX;\n    this.sliderH = this.hsva.h;\n\n    this.updateColorPicker();\n\n    this.directiveInstance.sliderChanged({\n      slider: 'hue',\n      value: this.hsva.h,\n      color: this.outputColor\n    });\n  }\n\n  public onValueChange(value: { v: number, rgX: number }): void {\n    this.hsva.v = value.v / value.rgX;\n\n    this.updateColorPicker();\n\n    this.directiveInstance.sliderChanged({\n      slider: 'value',\n      value: this.hsva.v,\n      color: this.outputColor\n    });\n  }\n\n  public onAlphaChange(value: { v: number, rgX: number }): void {\n    this.hsva.a = value.v / value.rgX;\n\n    this.updateColorPicker();\n\n    this.directiveInstance.sliderChanged({\n      slider: 'alpha',\n      value: this.hsva.a,\n      color: this.outputColor\n    });\n  }\n\n  public onHexInput(value: string | null): void {\n    if (value === null) {\n      this.updateColorPicker();\n    } else {\n      if (value && value[0] !== '#') {\n        value = '#' + value;\n      }\n\n      let validHex = /^#([a-f0-9]{3}|[a-f0-9]{6})$/gi;\n\n      if (this.cpAlphaChannel === 'always') {\n        validHex = /^#([a-f0-9]{3}|[a-f0-9]{6}|[a-f0-9]{8})$/gi;\n      }\n\n      const valid = validHex.test(value);\n\n      if (valid) {\n        if (value.length < 5) {\n          value = '#' + value.substring(1)\n            .split('')\n            .map(c => c + c)\n            .join('');\n        }\n\n        if (this.cpAlphaChannel === 'forced') {\n          value += Math.round(this.hsva.a * 255).toString(16);\n        }\n\n        this.setColorFromString(value, true, false);\n      }\n\n      this.directiveInstance.inputChanged({\n        input: 'hex',\n        valid: valid,\n        value: value,\n        color: this.outputColor\n      });\n    }\n  }\n\n  public onRedInput(value: { v: number, rg: number }): void {\n    const rgba = this.service.hsvaToRgba(this.hsva);\n\n    const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n\n    if (valid) {\n      rgba.r = value.v / value.rg;\n\n      this.hsva = this.service.rgbaToHsva(rgba);\n\n      this.sliderH = this.hsva.h;\n\n      this.updateColorPicker();\n    }\n\n    this.directiveInstance.inputChanged({\n      input: 'red',\n      valid: valid,\n      value: rgba.r,\n      color: this.outputColor\n    });\n  }\n\n  public onBlueInput(value: { v: number, rg: number }): void {\n    const rgba = this.service.hsvaToRgba(this.hsva);\n\n    const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n\n    if (valid) {\n      rgba.b = value.v / value.rg;\n\n      this.hsva = this.service.rgbaToHsva(rgba);\n\n      this.sliderH = this.hsva.h;\n\n      this.updateColorPicker();\n    }\n\n    this.directiveInstance.inputChanged({\n      input: 'blue',\n      valid: valid,\n      value: rgba.b,\n      color: this.outputColor\n    });\n  }\n\n  public onGreenInput(value: { v: number, rg: number }): void {\n    const rgba = this.service.hsvaToRgba(this.hsva);\n\n    const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n\n    if (valid) {\n      rgba.g = value.v / value.rg;\n\n      this.hsva = this.service.rgbaToHsva(rgba);\n\n      this.sliderH = this.hsva.h;\n\n      this.updateColorPicker();\n    }\n\n    this.directiveInstance.inputChanged({\n      input: 'green',\n      valid: valid,\n      value: rgba.g,\n      color: this.outputColor\n    });\n  }\n\n  public onHueInput(value: { v: number, rg: number }) {\n    const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n\n    if (valid) {\n      this.hsva.h = value.v / value.rg;\n\n      this.sliderH = this.hsva.h;\n\n      this.updateColorPicker();\n    }\n\n    this.directiveInstance.inputChanged({\n      input: 'hue',\n      valid: valid,\n      value: this.hsva.h,\n      color: this.outputColor\n    });\n  }\n\n  public onValueInput(value: { v: number, rg: number }): void {\n    const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n\n    if (valid) {\n      this.hsva.v = value.v / value.rg;\n\n      this.updateColorPicker();\n    }\n\n    this.directiveInstance.inputChanged({\n      input: 'value',\n      valid: valid,\n      value: this.hsva.v,\n      color: this.outputColor\n    });\n  }\n\n  public onAlphaInput(value: { v: number, rg: number }): void {\n    const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n\n    if (valid) {\n      this.hsva.a = value.v / value.rg;\n\n      this.updateColorPicker();\n    }\n\n    this.directiveInstance.inputChanged({\n      input: 'alpha',\n      valid: valid,\n      value: this.hsva.a,\n      color: this.outputColor\n    });\n  }\n\n  public onLightnessInput(value: { v: number, rg: number }): void {\n    const hsla = this.service.hsva2hsla(this.hsva);\n\n    const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n\n    if (valid) {\n      hsla.l = value.v / value.rg;\n\n      this.hsva = this.service.hsla2hsva(hsla);\n\n      this.sliderH = this.hsva.h;\n\n      this.updateColorPicker();\n    }\n\n    this.directiveInstance.inputChanged({\n      input: 'lightness',\n      valid: valid,\n      value: hsla.l,\n      color: this.outputColor\n    });\n  }\n\n  public onSaturationInput(value: { v: number, rg: number }): void {\n    const hsla = this.service.hsva2hsla(this.hsva);\n\n    const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n\n    if (valid) {\n      hsla.s = value.v / value.rg;\n\n      this.hsva = this.service.hsla2hsva(hsla);\n\n      this.sliderH = this.hsva.h;\n\n      this.updateColorPicker();\n    }\n\n    this.directiveInstance.inputChanged({\n      input: 'saturation',\n      valid: valid,\n      value: hsla.s,\n      color: this.outputColor\n    });\n  }\n\n  public onCyanInput(value: { v: number, rg: number }): void {\n    const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n\n    if (valid) {\n      this.cmyk.c = value.v;\n\n      this.updateColorPicker(false, true, true);\n    }\n\n    this.directiveInstance.inputChanged({\n      input: 'cyan',\n      valid: true,\n      value: this.cmyk.c,\n      color: this.outputColor\n    });\n  }\n\n  public onMagentaInput(value: { v: number, rg: number }): void {\n    const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n\n    if (valid) {\n      this.cmyk.m = value.v;\n\n      this.updateColorPicker(false, true, true);\n    }\n\n    this.directiveInstance.inputChanged({\n      input: 'magenta',\n      valid: true,\n      value: this.cmyk.m,\n      color: this.outputColor\n    });\n  }\n\n  public onYellowInput(value: { v: number, rg: number }): void {\n    const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n\n    if (valid) {\n      this.cmyk.y = value.v;\n\n      this.updateColorPicker(false, true, true);\n    }\n\n     this.directiveInstance.inputChanged({\n      input: 'yellow',\n      valid: true,\n      value: this.cmyk.y,\n      color: this.outputColor\n    });\n  }\n\n  public onBlackInput(value: { v: number, rg: number }): void {\n    const valid = !isNaN(value.v) && value.v >= 0 && value.v <= value.rg;\n\n    if (valid) {\n      this.cmyk.k = value.v;\n\n      this.updateColorPicker(false, true, true);\n    }\n\n    this.directiveInstance.inputChanged({\n      input: 'black',\n      valid: true,\n      value: this.cmyk.k,\n      color: this.outputColor\n    });\n  }\n\n  public onAddPresetColor(event: any, value: string): void {\n    event.stopPropagation();\n\n    if (!this.cpPresetColors.filter((color) => (color === value)).length) {\n      this.cpPresetColors = this.cpPresetColors.concat(value);\n\n      this.directiveInstance.presetColorsChanged(this.cpPresetColors);\n    }\n  }\n\n  public onRemovePresetColor(event: any, value: string): void {\n    event.stopPropagation();\n\n    this.cpPresetColors = this.cpPresetColors.filter((color) => (color !== value));\n\n    this.directiveInstance.presetColorsChanged(this.cpPresetColors);\n  }\n\n  // Private helper functions for the color picker dialog status\n\n  private openColorPicker(): void {\n    if (!this.show) {\n      this.show = true;\n      this.hidden = true;\n\n      setTimeout(() => {\n        this.hidden = false;\n\n        this.setDialogPosition();\n\n        this.cdRef.detectChanges();\n      }, 0);\n\n      this.directiveInstance.stateChanged(true);\n\n      if (!this.isIE10) {\n        // The change detection should be run on `mousedown` event only when the condition\n        // is met within the `onMouseDown` method.\n        this.ngZone.runOutsideAngular(() => {\n          // There's no sense to add both event listeners on touch devices since the `touchstart`\n          // event is handled earlier than `mousedown`, so we'll get 2 change detections and the\n          // second one will be unnecessary.\n          if (SUPPORTS_TOUCH) {\n            document.addEventListener('touchstart', this.listenerMouseDown);\n          } else {\n            document.addEventListener('mousedown', this.listenerMouseDown);\n          }\n        });\n      }\n\n      window.addEventListener('resize', this.listenerResize);\n    }\n  }\n\n  private closeColorPicker(): void {\n    if (this.show) {\n      this.show = false;\n\n      this.directiveInstance.stateChanged(false);\n\n      if (!this.isIE10) {\n        if (SUPPORTS_TOUCH) {\n          document.removeEventListener('touchstart', this.listenerMouseDown);\n        } else {\n          document.removeEventListener('mousedown', this.listenerMouseDown);\n        }\n      }\n\n      window.removeEventListener('resize', this.listenerResize);\n\n      if (!this.cdRef['destroyed']) {\n        this.cdRef.detectChanges();\n      }\n    }\n  }\n\n  private updateColorPicker(emit: boolean = true, update: boolean = true, cmykInput: boolean = false): void {\n    if (this.sliderDimMax) {\n      if (this.cpColorMode === 2) {\n        this.hsva.s = 0;\n      }\n\n      let hue: Rgba, hsla: Hsla, rgba: Rgba;\n\n      const lastOutput = this.outputColor;\n\n      hsla = this.service.hsva2hsla(this.hsva);\n\n      if (!this.cpCmykEnabled) {\n        rgba = this.service.denormalizeRGBA(this.service.hsvaToRgba(this.hsva));\n      } else {\n        if (!cmykInput) {\n          rgba = this.service.hsvaToRgba(this.hsva);\n\n          this.cmyk = this.service.denormalizeCMYK(this.service.rgbaToCmyk(rgba));\n        } else {\n          rgba = this.service.cmykToRgb(this.service.normalizeCMYK(this.cmyk));\n\n          this.hsva = this.service.rgbaToHsva(rgba);\n        }\n\n        rgba = this.service.denormalizeRGBA(rgba);\n\n        this.sliderH = this.hsva.h;\n      }\n\n      hue = this.service.denormalizeRGBA(this.service.hsvaToRgba(new Hsva(this.sliderH || this.hsva.h, 1, 1, 1)));\n\n      if (update) {\n        this.hslaText = new Hsla(Math.round((hsla.h) * 360), Math.round(hsla.s * 100), Math.round(hsla.l * 100),\n          Math.round(hsla.a * 100) / 100);\n\n        this.rgbaText = new Rgba(rgba.r, rgba.g, rgba.b, Math.round(rgba.a * 100) / 100);\n\n        if (this.cpCmykEnabled) {\n          this.cmykText = new Cmyk(this.cmyk.c, this.cmyk.m, this.cmyk.y, this.cmyk.k,\n            Math.round(this.cmyk.a * 100) / 100);\n        }\n\n        const allowHex8 = this.cpAlphaChannel === 'always';\n\n        this.hexText = this.service.rgbaToHex(rgba, allowHex8);\n        this.hexAlpha = this.rgbaText.a;\n      }\n\n      if (this.cpOutputFormat === 'auto') {\n        if (this.format !== ColorFormats.RGBA && this.format !== ColorFormats.CMYK && this.format !== ColorFormats.HSLA) {\n          if (this.hsva.a < 1) {\n            this.format = this.hsva.a < 1 ? ColorFormats.RGBA : ColorFormats.HEX;\n          }\n        }\n      }\n\n      this.hueSliderColor = 'rgb(' + hue.r + ',' + hue.g + ',' + hue.b + ')';\n      this.alphaSliderColor = 'rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')';\n\n      this.outputColor = this.service.outputFormat(this.hsva, this.cpOutputFormat, this.cpAlphaChannel);\n      this.selectedColor = this.service.outputFormat(this.hsva, 'rgba', null);\n\n      if (this.format !== ColorFormats.CMYK) {\n        this.cmykColor = '';\n      } else {\n        if (this.cpAlphaChannel === 'always' || this.cpAlphaChannel === 'enabled' ||\n          this.cpAlphaChannel === 'forced')\n        {\n          const alpha = Math.round(this.cmyk.a * 100) / 100;\n\n          this.cmykColor = `cmyka(${this.cmyk.c},${this.cmyk.m},${this.cmyk.y},${this.cmyk.k},${alpha})`;\n        } else {\n          this.cmykColor = `cmyk(${this.cmyk.c},${this.cmyk.m},${this.cmyk.y},${this.cmyk.k})`;\n        }\n      }\n\n      this.slider = new SliderPosition(\n        (this.sliderH || this.hsva.h) * this.sliderDimMax.h - 8,\n        this.hsva.s * this.sliderDimMax.s - 8,\n        (1 - this.hsva.v) * this.sliderDimMax.v - 8,\n        this.hsva.a * this.sliderDimMax.a - 8\n      );\n\n      if (emit && lastOutput !== this.outputColor) {\n        if (this.cpCmykEnabled) {\n          this.directiveInstance.cmykChanged(this.cmykColor);\n        }\n\n        this.directiveInstance.colorChanged(this.outputColor);\n      }\n    }\n  }\n\n  // Private helper functions for the color picker dialog positioning\n\n  private setDialogPosition(): void {\n    if (this.cpDialogDisplay === 'inline') {\n      this.position = 'relative';\n    } else {\n      let position = 'static', transform = '', style;\n\n      let parentNode: any = null, transformNode: any = null;\n\n      let node = this.directiveElementRef.nativeElement.parentNode;\n\n      const dialogHeight = this.dialogElement.nativeElement.offsetHeight;\n\n      while (node !== null && node.tagName !== 'HTML') {\n        style = window.getComputedStyle(node);\n        position = style.getPropertyValue('position');\n        transform = style.getPropertyValue('transform');\n\n        if (position !== 'static' && parentNode === null) {\n          parentNode = node;\n        }\n\n        if (transform && transform !== 'none' && transformNode === null) {\n          transformNode = node;\n        }\n\n        if (position === 'fixed') {\n          parentNode = transformNode;\n\n          break;\n        }\n\n        node = node.parentNode;\n      }\n\n      const boxDirective = this.createDialogBox(this.directiveElementRef.nativeElement, (position !== 'fixed'));\n\n      if (this.useRootViewContainer || (position === 'fixed' &&\n         (!parentNode || parentNode instanceof HTMLUnknownElement)))\n      {\n        this.top = boxDirective.top;\n        this.left = boxDirective.left;\n      } else {\n        if (parentNode === null) {\n          parentNode = node;\n        }\n\n        const boxParent = this.createDialogBox(parentNode, (position !== 'fixed'));\n\n        this.top = boxDirective.top - boxParent.top;\n        this.left = boxDirective.left - boxParent.left;\n      }\n\n      if (position === 'fixed') {\n        this.position = 'fixed';\n      }\n\n      let usePosition = this.cpPosition;\n\n      const dialogBounds = this.dialogElement.nativeElement.getBoundingClientRect();\n      if (this.cpPosition === 'auto') {\n        const triggerBounds = this.cpTriggerElement.nativeElement.getBoundingClientRect();\n        usePosition = calculateAutoPositioning(dialogBounds, triggerBounds);\n      }\n\n      this.arrowTop = usePosition === 'top'\n        ? dialogHeight - 1\n        : undefined;\n      this.cpArrowPosition = undefined;\n\n      switch (usePosition) {\n        case 'top':\n          this.top -= dialogHeight + this.dialogArrowSize;\n          this.left += this.cpPositionOffset / 100 * boxDirective.width - this.dialogArrowOffset;\n          break;\n        case 'bottom':\n          this.top += boxDirective.height + this.dialogArrowSize;\n          this.left += this.cpPositionOffset / 100 * boxDirective.width - this.dialogArrowOffset;\n          break;\n        case 'top-left':\n        case 'left-top':\n          this.top -= dialogHeight - boxDirective.height + boxDirective.height * this.cpPositionOffset / 100;\n          this.left -= this.cpWidth + this.dialogArrowSize - 2 - this.dialogArrowOffset;\n          break;\n        case 'top-right':\n        case 'right-top':\n          this.top -= dialogHeight - boxDirective.height + boxDirective.height * this.cpPositionOffset / 100;\n          this.left += boxDirective.width + this.dialogArrowSize - 2 - this.dialogArrowOffset;\n          break;\n        case 'left':\n        case 'bottom-left':\n        case 'left-bottom':\n          this.top += boxDirective.height * this.cpPositionOffset / 100 - this.dialogArrowOffset;\n          this.left -= this.cpWidth + this.dialogArrowSize - 2;\n          break;\n        case 'right':\n        case 'bottom-right':\n        case 'right-bottom':\n        default:\n          this.top += boxDirective.height * this.cpPositionOffset / 100 - this.dialogArrowOffset;\n          this.left += boxDirective.width + this.dialogArrowSize - 2;\n          break;\n      }\n\n      const windowInnerHeight = window.innerHeight;\n      const windowInnerWidth = window.innerWidth;\n      const elRefClientRect = this.elRef.nativeElement.getBoundingClientRect();\n      const bottom = this.top + dialogBounds.height;\n      if (bottom > windowInnerHeight) {\n        this.top = windowInnerHeight - dialogBounds.height;\n        this.cpArrowPosition = elRefClientRect.x / 2 - 20;\n      }\n      const right = this.left + dialogBounds.width;\n      if (right > windowInnerWidth) {\n        this.left = windowInnerWidth - dialogBounds.width;\n        this.cpArrowPosition = elRefClientRect.x / 2 - 20;\n      }\n\n      this.cpUsePosition = usePosition;\n    }\n  }\n\n  // Private helper functions for the color picker dialog positioning and opening\n\n  private isDescendant(parent: any, child: any): boolean {\n    let node: any = child.parentNode;\n\n    while (node !== null) {\n      if (node === parent) {\n        return true;\n      }\n\n      node = node.parentNode;\n    }\n\n    return false;\n  }\n\n  private createDialogBox(element: any, offset: boolean): any {\n    const { top, left } = element.getBoundingClientRect();\n    return {\n      top: top + (offset ? window.pageYOffset : 0),\n      left: left + (offset ? window.pageXOffset : 0),\n      width: element.offsetWidth,\n      height: element.offsetHeight\n    };\n  }\n}\n","<div #dialogPopup class=\"color-picker\" [class.open]=\"show\" [style.display]=\"!show ? 'none' : 'block'\" [style.visibility]=\"hidden ? 'hidden' : 'visible'\" [style.top.px]=\"top\" [style.left.px]=\"left\" [style.position]=\"position\" [style.height.px]=\"cpHeight\" [style.width.px]=\"cpWidth\" (click)=\"$event.stopPropagation()\">\n  <div *ngIf=\"cpDialogDisplay === 'popup'\" [style.left]=\"cpArrowPosition\" class=\"arrow arrow-{{cpUsePosition}}\" [style.top.px]=\"arrowTop\"></div>\n\n  <div *ngIf=\"(cpColorMode || 1) === 1\" class=\"saturation-lightness\" [slider] [rgX]=\"1\" [rgY]=\"1\" [style.background-color]=\"hueSliderColor\" (newValue)=\"onColorChange($event)\" (dragStart)=\"onDragStart('saturation-lightness')\" (dragEnd)=\"onDragEnd('saturation-lightness')\">\n    <div class=\"cursor\" [style.top.px]=\"slider?.v\" [style.left.px]=\"slider?.s\"></div>\n  </div>\n\n  <div class=\"hue-alpha box\">\n    <div class=\"left\">\n      <div class=\"selected-color-background\"></div>\n\n      <div class=\"selected-color\" [style.background-color]=\"selectedColor\" [style.cursor]=\"eyeDropperSupported && cpEyeDropper ? 'pointer' : null\" (click)=\"eyeDropperSupported && cpEyeDropper && onEyeDropper()\">\n        <svg *ngIf=\"eyeDropperSupported && cpEyeDropper\" class=\"eyedropper-icon\" xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"#000000\"><path d=\"M0 0h24v24H0V0z\" fill=\"none\"/><path d=\"M17.66 5.41l.92.92-2.69 2.69-.92-.92 2.69-2.69M17.67 3c-.26 0-.51.1-.71.29l-3.12 3.12-1.93-1.91-1.41 1.41 1.42 1.42L3 16.25V21h4.75l8.92-8.92 1.42 1.42 1.41-1.41-1.92-1.92 3.12-3.12c.4-.4.4-1.03.01-1.42l-2.34-2.34c-.2-.19-.45-.29-.7-.29zM6.92 19L5 17.08l8.06-8.06 1.92 1.92L6.92 19z\"/></svg>\n      </div>\n\n      <button *ngIf=\"cpAddColorButton\" type=\"button\" class=\"{{cpAddColorButtonClass}}\" [disabled]=\"cpPresetColors && cpPresetColors.length >= cpMaxPresetColorsLength\" (click)=\"onAddPresetColor($event, selectedColor)\">\n        {{cpAddColorButtonText}}\n      </button>\n    </div>\n\n    <div class=\"right\">\n      <div *ngIf=\"cpAlphaChannel==='disabled'\" style=\"height: 16px;\"></div>\n\n      <div #hueSlider class=\"hue\" [slider] [rgX]=\"1\" [style.display]=\"(cpColorMode || 1) === 1 ? 'block' : 'none'\" (newValue)=\"onHueChange($event)\" (dragStart)=\"onDragStart('hue')\" (dragEnd)=\"onDragEnd('hue')\">\n        <div class=\"cursor\" [style.left.px]=\"slider?.h\"></div>\n      </div>\n\n      <div #valueSlider class=\"value\" [slider] [rgX]=\"1\" [style.display]=\"(cpColorMode || 1) === 2 ? 'block': 'none'\" (newValue)=\"onValueChange($event)\" (dragStart)=\"onDragStart('value')\" (dragEnd)=\"onDragEnd('value')\">\n        <div class=\"cursor\" [style.right.px]=\"slider?.v\"></div>\n      </div>\n\n      <div #alphaSlider class=\"alpha\" [slider] [rgX]=\"1\" [style.display]=\"cpAlphaChannel === 'disabled' ? 'none' : 'block'\" [style.background-color]=\"alphaSliderColor\" (newValue)=\"onAlphaChange($event)\" (dragStart)=\"onDragStart('alpha')\" (dragEnd)=\"onDragEnd('alpha')\">\n        <div class=\"cursor\" [style.left.px]=\"slider?.a\"></div>\n      </div>\n    </div>\n  </div>\n\n  <div *ngIf=\"!cpDisableInput && (cpColorMode || 1) === 1\" class=\"cmyk-text\" [style.display]=\"format !== 3 ? 'none' : 'block'\">\n    <div class=\"box\">\n      <input type=\"number\" pattern=\"[0-9]*\" min=\"0\" max=\"100\" [text] [rg]=\"100\" [value]=\"cmykText?.c\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onCyanInput($event)\" />\n      <input type=\"number\" pattern=\"[0-9]*\" min=\"0\" max=\"100\" [text] [rg]=\"100\" [value]=\"cmykText?.m\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onMagentaInput($event)\" />\n      <input type=\"number\" pattern=\"[0-9]*\" min=\"0\" max=\"100\" [text] [rg]=\"100\" [value]=\"cmykText?.y\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onYellowInput($event)\" />\n      <input type=\"number\" pattern=\"[0-9]*\" min=\"0\" max=\"100\" [text] [rg]=\"100\" [value]=\"cmykText?.k\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onBlackInput($event)\" />\n      <input *ngIf=\"cpAlphaChannel!=='disabled'\" type=\"number\" pattern=\"[0-9]+([\\.,][0-9]{1,2})?\" min=\"0\" max=\"1\" step=\"0.1\" [text] [rg]=\"1\" [value]=\"cmykText?.a\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onAlphaInput($event)\" />\n    </div>\n\n     <div class=\"box\">\n      <div>C</div><div>M</div><div>Y</div><div>K</div><div *ngIf=\"cpAlphaChannel!=='disabled'\" >A</div>\n    </div>\n  </div>\n\n  <div *ngIf=\"!cpDisableInput && (cpColorMode || 1) === 1 \" class=\"hsla-text\" [style.display]=\"format !== 2 ? 'none' : 'block'\">\n    <div class=\"box\">\n      <input type=\"number\" pattern=\"[0-9]*\" min=\"0\" max=\"360\" [text] [rg]=\"360\" [value]=\"hslaText?.h\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onHueInput($event)\" />\n      <input type=\"number\" pattern=\"[0-9]*\" min=\"0\" max=\"100\" [text] [rg]=\"100\" [value]=\"hslaText?.s\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onSaturationInput($event)\" />\n      <input type=\"number\" pattern=\"[0-9]*\" min=\"0\" max=\"100\" [text] [rg]=\"100\" [value]=\"hslaText?.l\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onLightnessInput($event)\" />\n      <input *ngIf=\"cpAlphaChannel!=='disabled'\" type=\"number\" pattern=\"[0-9]+([\\.,][0-9]{1,2})?\" min=\"0\" max=\"1\" step=\"0.1\" [text] [rg]=\"1\" [value]=\"hslaText?.a\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onAlphaInput($event)\" />\n    </div>\n\n    <div class=\"box\">\n      <div>H</div><div>S</div><div>L</div><div *ngIf=\"cpAlphaChannel!=='disabled'\">A</div>\n    </div>\n  </div>\n\n  <div *ngIf=\"!cpDisableInput && (cpColorMode || 1) === 1 \" [style.display]=\"format !== 1 ? 'none' : 'block'\" class=\"rgba-text\">\n    <div class=\"box\">\n      <input type=\"number\" pattern=\"[0-9]*\" min=\"0\" max=\"255\" [text] [rg]=\"255\" [value]=\"rgbaText?.r\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onRedInput($event)\" />\n      <input type=\"number\" pattern=\"[0-9]*\" min=\"0\" max=\"255\" [text] [rg]=\"255\" [value]=\"rgbaText?.g\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onGreenInput($event)\" />\n      <input type=\"number\" pattern=\"[0-9]*\" min=\"0\" max=\"255\" [text] [rg]=\"255\" [value]=\"rgbaText?.b\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onBlueInput($event)\" />\n      <input *ngIf=\"cpAlphaChannel!=='disabled'\" type=\"number\" pattern=\"[0-9]+([\\.,][0-9]{1,2})?\" min=\"0\" max=\"1\" step=\"0.1\" [text] [rg]=\"1\" [value]=\"rgbaText?.a\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onAlphaInput($event)\" />\n    </div>\n\n    <div class=\"box\">\n      <div>R</div><div>G</div><div>B</div><div *ngIf=\"cpAlphaChannel!=='disabled'\" >A</div>\n    </div>\n  </div>\n\n  <div *ngIf=\"!cpDisableInput && (cpColorMode || 1) === 1\" class=\"hex-text\" [class.hex-alpha]=\"cpAlphaChannel==='forced'\"\n    [style.display]=\"format !== 0 ? 'none' : 'block'\">\n    <div class=\"box\">\n      <input [text] [value]=\"hexText\" (blur)=\"onHexInput(null)\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onHexInput($event)\"/>\n      <input *ngIf=\"cpAlphaChannel==='forced'\" type=\"number\" pattern=\"[0-9]+([\\.,][0-9]{1,2})?\" min=\"0\" max=\"1\" step=\"0.1\" [text] [rg]=\"1\" [value]=\"hexAlpha\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onAlphaInput($event)\"/>\n    </div>\n\n    <div class=\"box\">\n      <div>Hex</div>\n      <div *ngIf=\"cpAlphaChannel==='forced'\">A</div>\n    </div>\n  </div>\n\n  <div *ngIf=\"!cpDisableInput && (cpColorMode || 1) === 2\" class=\"value-text\">\n    <div class=\"box\">\n      <input type=\"number\" pattern=\"[0-9]*\" min=\"0\" max=\"100\" [text] [rg]=\"100\" [value]=\"hslaText?.l\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onValueInput($event)\" />\n      <input *ngIf=\"cpAlphaChannel!=='disabled'\" type=\"number\" pattern=\"[0-9]+([\\.,][0-9]{1,2})?\" min=\"0\" max=\"1\" step=\"0.1\"  [text] [rg]=\"1\" [value]=\"hslaText?.a\" (keyup.enter)=\"onAcceptColor($event)\" (newValue)=\"onAlphaInput($event)\" />\n    </div>\n\n    <div class=\"box\">\n      <div>V</div><div>A</div>\n    </div>\n  </div>\n\n  <div *ngIf=\"!cpDisableInput && (cpColorMode || 1) === 1\" class=\"type-policy\">\n    <span class=\"type-policy-arrow\" (click)=\"onFormatToggle(-1)\"></span>\n    <span class=\"type-policy-arrow\" (click)=\"onFormatToggle(1)\"></span>\n  </div>\n\n  <div *ngIf=\"cpPresetColors?.length || cpAddColorButton\" class=\"preset-area\">\n    <hr>\n\n    <div class=\"preset-label\">{{cpPresetLabel}}</div>\n\n    <div *ngIf=\"cpPresetColors?.length\" class=\"{{cpPresetColorsClass}}\">\n      <div *ngFor=\"let color of cpPresetColors\" class=\"preset-color\" [style.backgroundColor]=\"color\" (click)=\"setColorFromString(color)\">\n        <span *ngIf=\"cpAddColorButton\" class=\"{{cpRemoveColorButtonClass}}\" (click)=\"onRemovePresetColor($event, color)\"></span>\n      </div>\n    </div>\n\n    <div *ngIf=\"!cpPresetColors?.length && cpAddColorButton\" class=\"{{cpPresetEmptyMessageClass}}\">{{cpPresetEmptyMessage}}</div>\n  </div>\n\n  <div *ngIf=\"cpOKButton || cpCancelButton\" class=\"button-area\">\n    <button *ngIf=\"cpCancelButton\" type=\"button\" class=\"{{cpCancelButtonClass}}\" (click)=\"onCancelColor($event)\">{{cpCancelButtonText}}</button>\n\n    <button *ngIf=\"cpOKButton\" type=\"button\" class=\"{{cpOKButtonClass}}\" (click)=\"onAcceptColor($event)\">{{cpOKButtonText}}</button>\n  </div>\n\n  <div class=\"extra-template\" *ngIf=\"cpExtraTemplate\">\n    <ng-container *ngTemplateOutlet=\"cpExtraTemplate\"></ng-container>\n  </div>\n</div>\n","import { Directive, OnChanges, OnDestroy, Input, Output, EventEmitter,\n  HostListener, ApplicationRef, ComponentRef, ElementRef, ViewContainerRef,\n  Injector, EmbeddedViewRef, TemplateRef } from '@angular/core';\n\nimport { ColorPickerComponent } from './color-picker.component';\n\nimport { AlphaChannel, ColorMode, OutputFormat } from './helpers';\nimport './ng-dev-mode';\n\n// Caretaker note: we have still left the `typeof` condition in order to avoid\n// creating a breaking change for projects that still use the View Engine.\n// The `ngDevMode` is always available when Ivy is enabled.\n// This will be evaluated during compilation into `const NG_DEV_MODE = false`,\n// thus Terser will be able to tree-shake `console.warn` calls.\nconst NG_DEV_MODE = typeof ngDevMode === 'undefined' || !!ngDevMode;\n\n@Directive({\n  selector: '[colorPicker]',\n  exportAs: 'ngxColorPicker'\n})\nexport class ColorPickerDirective implements OnChanges, OnDestroy {\n  private dialog: any;\n\n  private dialogCreated: boolean = false;\n  private ignoreChanges: boolean = false;\n\n  private cmpRef: ComponentRef<ColorPickerComponent>;\n  private viewAttachedToAppRef: boolean = false;\n\n  @Input() colorPicker: string;\n\n  @Input() cpWidth: string = '230px';\n  @Input() cpHeight: string = 'auto';\n\n  @Input() cpToggle: boolean = false;\n  @Input() cpDisabled: boolean = false;\n\n  @Input() cpIgnoredElements: any = [];\n\n  @Input() cpFallbackColor: string = '';\n\n  @Input() cpColorMode: ColorMode = 'color';\n\n  @Input() cpCmykEnabled: boolean = false;\n\n  @Input() cpOutputFormat: OutputFormat = 'auto';\n  @Input() cpAlphaChannel: AlphaChannel = 'enabled';\n\n  @Input() cpDisableInput: boolean = false;\n\n  @Input() cpDialogDisplay: string = 'popup';\n\n  @Input() cpSaveClickOutside: boolean = true;\n  @Input() cpCloseClickOutside: boolean = true;\n\n  @Input() cpUseRootViewContainer: boolean = false;\n\n  @Input() cpPosition: string = 'auto';\n  @Input() cpPositionOffset: string = '0%';\n  @Input() cpPositionRelativeToArrow: boolean = false;\n\n  @Input() cpOKButton: boolean = false;\n  @Input() cpOKButtonText: string = 'OK';\n  @Input() cpOKButtonClass: string = 'cp-ok-button-class';\n\n  @Input() cpCancelButton: boolean = false;\n  @Input() cpCancelButtonText: string = 'Cancel';\n  @Input() cpCancelButtonClass: string = 'cp-cancel-button-class';\n\n  @Input() cpEyeDropper: boolean = false;\n\n  @Input() cpPresetLabel: string = 'Preset colors';\n  @Input() cpPresetColors: string[];\n  @Input() cpPresetColorsClass: string = 'cp-preset-colors-class';\n  @Input() cpMaxPresetColorsLength: number = 6;\n\n  @Input() cpPresetEmptyMessage: string = 'No colors added';\n  @Input() cpPresetEmptyMessageClass: string = 'preset-empty-message';\n\n  @Input() cpAddColorButton: boolean = false;\n  @Input() cpAddColorButtonText: string = 'Add color';\n  @Input() cpAddColorButtonClass: string = 'cp-add-color-button-class';\n\n  @Input() cpRemoveColorButtonClass: string = 'cp-remove-color-button-class';\n  @Input() cpArrowPosition: number = 0;\n\n  @Input() cpExtraTemplate: TemplateRef<any>;\n\n  @Output() cpInputChange = new EventEmitter<{input: string, value: number | string, color: string}>(true);\n\n  @Output() cpToggleChange = new EventEmitter<boolean>(true);\n\n  @Output() cpSliderChange = new EventEmitter<{slider: string, value: string | number, color: string}>(true);\n  @Output() cpSliderDragEnd = new EventEmitter<{slider: string, color: string}>(true);\n  @Output() cpSliderDragStart = new EventEmitter<{slider: string, color: string}>(true);\n\n  @Output() colorPickerOpen = new EventEmitter<string>(true);\n  @Output() colorPickerClose = new EventEmitter<string>(true);\n\n  @Output() colorPickerCancel = new EventEmitter<string>(true);\n  @Output() colorPickerSelect = new EventEmitter<string>(true);\n  @Output() colorPickerChange = new EventEmitter<string>(false);\n\n  @Output() cpCmykColorChange = new EventEmitter<string>(true);\n\n  @Output() cpPresetColorsChange = new EventEmitter<any>(true);\n\n  @HostListener('click') handleClick(): void {\n    this.inputFocus();\n  }\n\n  @HostListener('focus') handleFocus(): void {\n    this.inputFocus();\n  }\n\n  @HostListener('input', ['$event']) handleInput(event: any): void {\n    this.inputChange(event);\n  }\n\n  constructor(\n    private readonly injector: Injector,\n    private readonly appRef: ApplicationRef,\n    private readonly vcRef: ViewContainerRef,\n    private readonly elRef: ElementRef) {\n  }\n\n  ngOnDestroy(): void {\n    if (this.cmpRef != null) {\n      if (this.viewAttachedToAppRef) {\n        this.appRef.detachView(this.cmpRef.hostView);\n      }\n\n      this.cmpRef.destroy();\n\n      this.cmpRef = null;\n      this.dialog = null;\n    }\n  }\n\n  ngOnChanges(changes: any): void {\n    if (changes.cpToggle && !this.cpDisabled) {\n      if (changes.cpToggle.currentValue) {\n        this.openDialog();\n      } else if (!changes.cpToggle.currentValue) {\n        this.closeDialog();\n      }\n    }\n\n    if (changes.colorPicker) {\n      if (this.dialog && !this.ignoreChanges) {\n        if (this.cpDialogDisplay === 'inline') {\n          this.dialog.setInitialColor(changes.colorPicker.currentValue);\n        }\n\n        this.dialog.setColorFromString(changes.colorPicker.currentValue, false);\n\n        if (this.cpUseRootViewContainer && this.cpDialogDisplay !== 'inline') {\n          this.cmpRef.changeDetectorRef.detectChanges();\n        }\n      }\n\n      this.ignoreChanges = false;\n    }\n\n    if (changes.cpPresetLabel || changes.cpPresetColors) {\n      if (this.dialog) {\n        this.dialog.setPresetConfig(this.cpPresetLabel, this.cpPresetColors);\n      }\n    }\n  }\n\n  public openDialog(): void {\n    if (!this.dialogCreated) {\n      let vcRef = this.vcRef;\n\n      this.dialogCreated = true;\n      this.viewAttachedToAppRef = false;\n\n      if (this.cpUseRootViewContainer && this.cpDialogDisplay !== 'inline') {\n        const classOfRootComponent = this.appRef.componentTypes[0];\n        const appInstance = this.injector.get(classOfRootComponent, Injector.NULL);\n\n        if (appInstance !== Injector.NULL) {\n          vcRef = appInstance.vcRef || appInstance.viewContainerRef || this.vcRef;\n\n          if (NG_DEV_MODE && vcRef === this.vcRef) {\n            console.warn('You are using cpUseRootViewContainer, ' +\n              'but the root component is not exposing viewContainerRef!' +\n              'Please expose it by adding \\'public vcRef: ViewContainerRef\\' to the constructor.');\n          }\n        } else {\n          this.viewAttachedToAppRef = true;\n        }\n      }\n\n      if (this.viewAttachedToAppRef) {\n        this.cmpRef = vcRef.createComponent(ColorPickerComponent, { injector: this.injector});\n        this.appRef.attachView(this.cmpRef.hostView);\n        document.body.appendChild((this.cmpRef.hostView as EmbeddedViewRef<any>).rootNodes[0] as HTMLElement);\n      } else {\n        const injector = Injector.create({\n          providers: [],\n          // We shouldn't use `vcRef.parentInjector` since it's been deprecated long time ago and might be removed\n          // in newer Angular versions: https://github.com/angular/angular/pull/25174.\n          parent: vcRef.injector,\n        });\n\n        this.cmpRef = vcRef.createComponent(ColorPickerComponent, { injector, index: 0 });\n      }\n\n      this.cmpRef.instance.setupDialog(this, this.elRef, this.colorPicker,\n        this.cpWidth, this.cpHeight, this.cpDialogDisplay, this.cpFallbackColor, this.cpColorMode,\n        this.cpCmykEnabled, this.cpAlphaChannel, this.cpOutputFormat, this.cpDisableInput,\n        this.cpIgnoredElements, this.cpSaveClickOutside, this.cpCloseClickOutside,\n        this.cpUseRootViewContainer, this.cpPosition, this.cpPositionOffset,\n        this.cpPositionRelativeToArrow, this.cpPresetLabel, this.cpPresetColors,\n        this.cpPresetColorsClass, this.cpMaxPresetColorsLength, this.cpPresetEmptyMessage,\n        this.cpPresetEmptyMessageClass, this.cpOKButton, this.cpOKButtonClass,\n        this.cpOKButtonText, this.cpCancelButton, this.cpCancelButtonClass,\n        this.cpCancelButtonText, this.cpAddColorButton, this.cpAddColorButtonClass,\n        this.cpAddColorButtonText, this.cpRemoveColorButtonClass, this.cpEyeDropper, this.elRef,\n        this.cpExtraTemplate);\n\n      this.dialog = this.cmpRef.instance;\n\n      if (this.vcRef !== vcRef) {\n        this.cmpRef.changeDetectorRef.detectChanges();\n      }\n    } else if (this.dialog) {\n      // Update properties.\n      this.cmpRef.instance.cpAlphaChannel = this.cpAlphaChannel;\n\n      // Open dialog.\n      this.dialog.openDialog(this.colorPicker);\n    }\n  }\n\n  public closeDialog(): void {\n    if (this.dialog && this.cpDialogDisplay === 'popup') {\n      this.dialog.closeDialog();\n    }\n  }\n\n  public cmykChanged(value: string): void {\n    this.cpCmykColorChange.emit(value);\n  }\n\n  public stateChanged(state: boolean): void {\n    this.cpToggleChange.emit(state);\n\n    if (state) {\n      this.colorPickerOpen.emit(this.colorPicker);\n    } else {\n      this.colorPickerClose.emit(this.colorPicker);\n    }\n  }\n\n  public colorChanged(value: string, ignore: boolean = true): void {\n    this.ignoreChanges = ignore;\n\n    this.colorPickerChange.emit(value);\n  }\n\n  public colorSelected(value: string): void {\n    this.colorPickerSelect.emit(value);\n  }\n\n  public colorCanceled(): void {\n    this.colorPickerCancel.emit();\n  }\n\n  public inputFocus(): void {\n    const element = this.elRef.nativeElement;\n\n    const ignored = this.cpIgnoredElements.filter((item: any) => item === element);\n\n    if (!this.cpDisabled && !ignored.length) {\n      if (typeof document !== 'undefined' && element === document.activeElement) {\n        this.openDialog();\n      } else if (!this.dialog || !this.dialog.show) {\n        this.openDialog();\n      } else {\n        this.closeDialog();\n      }\n    }\n  }\n\n  public inputChange(event: any): void {\n    if (this.dialog) {\n      this.dialog.setColorFromString(event.target.value, true);\n    } else {\n      this.colorPicker = event.target.value;\n\n      this.colorPickerChange.emit(this.colorPicker);\n    }\n  }\n\n  public inputChanged(event: any): void {\n    this.cpInputChange.emit(event);\n  }\n\n  public sliderChanged(event: any): void {\n    this.cpSliderChange.emit(event);\n  }\n\n  public sliderDragEnd(event: { slider: string, color: string }): void {\n    this.cpSliderDragEnd.emit(event);\n  }\n\n  public sliderDragStart(event: { slider: string, color: string }): void {\n    this.cpSliderDragStart.emit(event);\n  }\n\n  public presetColorsChanged(value: any[]): void {\n    this.cpPresetColorsChange.emit(value);\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ColorPickerService"],"mappings":"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"}