ngx-color-picker
Version:
Color picker widget for Angular
1 lines • 131 kB
Source Map (JSON)
{"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(\n public r: number,\n public g: number,\n public b: number,\n public a: number\n ) {}\n}\n\nexport class Hsva {\n constructor(\n public h: number,\n public s: number,\n public v: number,\n public a: number\n ) {}\n}\n\nexport class Hsla {\n constructor(\n public h: number,\n public s: number,\n public l: number,\n public a: number\n ) {}\n}\n\nexport class Cmyk {\n constructor(\n public c: number,\n public m: number,\n public y: number,\n public k: number,\n public a: number = 1\n ) {}\n}\n","import { DOCUMENT } from '@angular/common'\nimport {\n Directive,\n Input,\n Output,\n EventEmitter,\n HostListener,\n ElementRef,\n inject,\n} from '@angular/core'\n\nexport type ColorMode =\n | 'color'\n | 'c'\n | '1'\n | 'grayscale'\n | 'g'\n | '2'\n | 'presets'\n | 'p'\n | '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(\n elBounds: BoundingRectangle,\n triggerElBounds: BoundingRectangle,\n window: Window\n): 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 =\n bottom + height >\n (window.innerHeight || document.documentElement.clientHeight)\n const collisionLeft = left - width < 0\n const collisionRight =\n right + width > (window.innerWidth || document.documentElement.clientWidth)\n const collisionAll =\n 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 // Choose the largest gap available\n if (collisionAll) {\n const postions = ['left', 'right', 'top', 'bottom']\n return postions.reduce((prev, next) =>\n elBounds[prev] > elBounds[next] ? prev : next\n )\n }\n\n if (collisionLeft && collisionRight) {\n if (collisionTop) {\n return 'bottom'\n }\n if (collisionBottom) {\n return 'top'\n }\n return top > bottom ? 'top' : 'bottom'\n }\n\n if (collisionTop && collisionBottom) {\n if (collisionLeft) {\n return 'right'\n }\n if (collisionRight) {\n return 'left'\n }\n return left > right ? 'left' : 'right'\n }\n\n return `${usePositionY}-${usePositionX}`\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 elRef = inject(ElementRef)\n private document = inject<Document>(DOCUMENT)\n\n private readonly listenerMove: (event: Event) => void\n private readonly listenerStop: () => void\n\n @Input() rgX: number\n @Input() rgY: number\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() {\n this.listenerMove = (event: Event) => this.move(event)\n\n this.listenerStop = () => this.stop()\n }\n\n private move(event: Event): void {\n event.preventDefault()\n\n this.setCursor(event)\n }\n\n private start(event: Event): void {\n this.setCursor(event)\n\n event.stopPropagation()\n\n this.document.addEventListener('mouseup', this.listenerStop)\n this.document.addEventListener('touchend', this.listenerStop)\n this.document.addEventListener('mousemove', this.listenerMove)\n this.document.addEventListener('touchmove', this.listenerMove)\n\n this.dragStart.emit()\n }\n\n private stop(): void {\n this.document.removeEventListener('mouseup', this.listenerStop)\n this.document.removeEventListener('touchend', this.listenerStop)\n this.document.removeEventListener('mousemove', this.listenerMove)\n this.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 =\n 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 =\n 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({\n s: x / width,\n v: 1 - y / height,\n rgX: this.rgX,\n rgY: this.rgY,\n })\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(\n public h: number,\n public s: number,\n public v: number,\n public a: number\n ) {}\n}\n\nexport class SliderDimension {\n constructor(\n public h: number,\n public s: number,\n public v: number,\n public a: number\n ) {}\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 (\n this.active &&\n this.active !== active &&\n this.active.cpDialogDisplay !== 'inline'\n ) {\n this.active.closeDialog()\n }\n\n this.active = active\n }\n\n public hsva2hsla(hsva: Hsva): Hsla {\n const h = hsva.h,\n s = hsva.s,\n v = hsva.v,\n 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),\n s = Math.min(hsla.s, 1)\n const l = Math.min(hsla.l, 1),\n 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,\n s = hsva.s,\n v = hsva.v,\n 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),\n g = Math.min(rgba.g, 1)\n const b = Math.min(rgba.b, 1),\n a = Math.min(rgba.a, 1)\n\n const max = Math.max(r, g, b),\n min = Math.min(r, g, b)\n\n const v: number = max,\n 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 =\n '#' +\n ((1 << 24) | (rgba.r << 16) | (rgba.g << 8) | rgba.b)\n .toString(16)\n .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(\n cmyk.c / 100,\n cmyk.m / 100,\n cmyk.y / 100,\n cmyk.k / 100,\n cmyk.a\n )\n }\n\n public denormalizeCMYK(cmyk: Cmyk): Cmyk {\n return new Cmyk(\n Math.floor(cmyk.c * 100),\n Math.floor(cmyk.m * 100),\n Math.floor(cmyk.y * 100),\n Math.floor(cmyk.k * 100),\n cmyk.a\n )\n }\n\n public denormalizeRGBA(rgba: Rgba): Rgba {\n return new Rgba(\n Math.round(rgba.r * 255),\n Math.round(rgba.g * 255),\n Math.round(rgba.b * 255),\n rgba.a\n )\n }\n\n public stringToHsva(\n colorString: string = '',\n allowHex8: boolean = false\n ): 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(\n 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 },\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(\n 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\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(\n 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 })\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(\n parseInt(execResult[1], 16) / 255,\n parseInt(execResult[2], 16) / 255,\n parseInt(execResult[3], 16) / 255,\n 1\n )\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(\n 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\n for (const key in stringParsers) {\n if (stringParsers.hasOwnProperty(key)) {\n const parser = stringParsers[key]\n\n const match = parser.re.exec(colorString),\n 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(\n hsva: Hsva,\n outputFormat: string,\n alphaChannel: string | null\n ): 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(\n Math.round(hsla.h * 360),\n Math.round(hsla.s * 100),\n Math.round(hsla.l * 100),\n Math.round(hsla.a * 100) / 100\n )\n\n if (hsva.a < 1 || alphaChannel === 'always') {\n return (\n 'hsla(' +\n hslaText.h +\n ',' +\n hslaText.s +\n '%,' +\n hslaText.l +\n '%,' +\n hslaText.a +\n ')'\n )\n } else {\n return (\n 'hsl(' + hslaText.h + ',' + hslaText.s + '%,' + hslaText.l + '%)'\n )\n }\n\n case 'rgba':\n const rgba = this.denormalizeRGBA(this.hsvaToRgba(hsva))\n\n if (hsva.a < 1 || alphaChannel === 'always') {\n return (\n 'rgba(' +\n rgba.r +\n ',' +\n rgba.g +\n ',' +\n rgba.b +\n ',' +\n Math.round(rgba.a * 100) / 100 +\n ')'\n )\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(\n this.denormalizeRGBA(this.hsvaToRgba(hsva)),\n allowHex8\n )\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 PLATFORM_ID,\n inject\n} from '@angular/core'\n\nimport {\n DOCUMENT,\n isPlatformBrowser,\n NgForOf,\n NgIf,\n NgTemplateOutlet\n} from '@angular/common'\n\nimport {\n calculateAutoPositioning,\n SliderDirective,\n TextDirective\n} from './helpers'\n\nimport { ColorFormats, Cmyk, Hsla, Hsva, Rgba } from './formats'\nimport {\n AlphaChannel,\n OutputFormat,\n SliderDimension,\n SliderPosition\n} 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: [SliderDirective, TextDirective, NgIf, NgForOf, NgTemplateOutlet]\n})\nexport class ColorPickerComponent implements OnInit, OnDestroy, AfterViewInit {\n private ngZone = inject(NgZone)\n\n private elRef = inject(ElementRef)\n private cdRef = inject(ChangeDetectorRef)\n\n private platformId = inject(PLATFORM_ID)\n\n private service = inject(ColorPickerService)\n\n private document = inject<Document>(DOCUMENT)\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 private readonly window: Window\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(\n event: any\n ): void {\n if (this.show && this.cpDialogDisplay === 'popup') {\n this.onAcceptColor(event)\n }\n }\n\n constructor() {\n this.window = this.document.defaultView\n this.eyeDropperSupported =\n isPlatformBrowser(this.platformId) && 'EyeDropper' in this.window\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(\n hueWidth,\n this.cpWidth,\n 130,\n alphaWidth\n )\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) => {\n this.onMouseDown(event)\n }\n this.listenerResize = () => {\n this.onResize()\n }\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(\n hueWidth,\n this.cpWidth,\n 130,\n alphaWidth\n )\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(\n instance: any,\n elementRef: ElementRef,\n color: any,\n cpWidth: string,\n cpHeight: string,\n cpDialogDisplay: string,\n cpFallbackColor: string,\n cpColorMode: string,\n cpCmykEnabled: boolean,\n cpAlphaChannel: AlphaChannel,\n cpOutputFormat: OutputFormat,\n cpDisableInput: boolean,\n cpIgnoredElements: any,\n cpSaveClickOutside: boolean,\n cpCloseClickOutside: boolean,\n cpUseRootViewContainer: boolean,\n cpPosition: string,\n cpPositionOffset: string,\n cpPositionRelativeToArrow: boolean,\n cpPresetLabel: string,\n cpPresetColors: string[],\n cpPresetColorsClass: string,\n cpMaxPresetColorsLength: number,\n cpPresetEmptyMessage: string,\n cpPresetEmptyMessageClass: string,\n cpOKButton: boolean,\n cpOKButtonClass: string,\n cpOKButtonText: string,\n cpCancelButton: boolean,\n cpCancelButtonClass: string,\n cpCancelButtonText: string,\n cpAddColorButton: boolean,\n cpAddColorButtonClass: string,\n cpAddColorButtonText: string,\n cpRemoveColorButtonClass: string,\n cpEyeDropper: boolean,\n cpTriggerElement: ElementRef,\n cpExtraTemplate: TemplateRef<any>\n ): void {\n this.setInitialColor(color)\n\n this.setColorMode(cpColorMode)\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 (\n cpOutputFormat === 'hex' &&\n cpAlphaChannel !== 'always' &&\n 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(\n cpPresetLabel: string,\n cpPresetColors: string[]\n ): void {\n this.cpPresetLabel = cpPresetLabel\n this.cpPresetColors = cpPresetColors\n }\n\n public setColorFromString(\n value: string,\n emit: boolean = true,\n update: boolean = true\n ): 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({\n slider: slider,\n color: this.outputColor\n })\n }\n\n public onDragStart(slider: string): void {\n this.directiveInstance.sliderDragStart({\n slider: slider,\n color: this.outputColor\n })\n }\n\n public onMouseDown(event: MouseEvent): void {\n if (\n this.show &&\n this.cpDialogDisplay === 'popup' &&\n event.target !== this.directiveElementRef.nativeElement &&\n !this.isDescendant(this.elRef.nativeElement, event.target) &&\n !this.isDescendant(\n this.directiveElementRef.nativeElement,\n event.target\n ) &&\n this.cpIgnoredElements.filter((item: any) => item === event.target)\n .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: { sRGBHex: string }) => {\n this.setColorFromString(eyeDropperResult.sRGBHex, true)\n })\n }\n\n public onFormatToggle(change: number): void {\n const availableFormats =\n this.dialogInputFields.length - (this.cpCmykEnabled ? 0 : 1)\n\n const nextFormat =\n (((this.dialogInputFields.indexOf(this.format) + change) %\n availableFormats) +\n availableFormats) %\n availableFormats\n\n this.format = this.dialogInputFields[nextFormat]\n }\n\n public onColorChange(value: {\n s: number\n v: number\n rgX: number\n rgY: number\n }): 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]{6}$/gi\n\n if (this.cpAlphaChannel === 'always') {\n validHex = /^#([a-f0-9]{6}|[a-f0-9]{8})$/gi\n }\n\n const valid = validHex.test(value)\n\n if (valid) {\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 // 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 this.document.addEventListener('touchstart', this.listenerMouseDown)\n } else {\n this.document.addEventListener('mousedown', this.listenerMouseDown)\n }\n })\n\n this.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 (SUPPORTS_TOUCH) {\n this.document.removeEventListener('touchstart', this.listenerMouseDown)\n } else {\n this.document.removeEventListener('mousedown', this.listenerMouseDown)\n }\n\n this.window.removeEventListener('resize', this.listenerResize)\n\n if (!this.cdRef['destroyed']) {\n this.cdRef.detectChanges()\n }\n }\n }\n\n private updateColorPicker(\n emit: boolean = true,\n update: boolean = true,\n cmykInput: boolean = false\n ): 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(\n this.service.rgbaToCmyk(rgba)\n )\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(\n this.service.hsvaToRgba(new Hsva(this.sliderH || this.hsva.h, 1, 1, 1))\n )\n\n if (update) {\n this.hslaText = new Hsla(\n Math.round(hsla.h * 360),\n Math.round(hsla.s * 100),\n Math.round(hsla.l * 100),\n Math.round(hsla.a * 100) / 100\n )\n\n this.rgbaText = new Rgba(\n rgba.r,\n rgba.g,\n rgba.b,\n Math.round(rgba.a * 100) / 100\n )\n\n if (this.cpCmykEnabled) {\n this.cmykText = new Cmyk(\n this.cmyk.c,\n this.cmyk.m,\n this.cmyk.y,\n this.cmyk.k,\n Math.round(this.cmyk.a * 100) / 100\n )\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 (\n this.format !== ColorFormats.RGBA &&\n this.format !== ColorFormats.CMYK &&\n this.format !== ColorFormats.HSLA\n ) {\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 =\n 'rgb(' + rgba.r + ',' + rgba.g + ',' + rgba.b + ')'\n\n this.outputColor = this.service.outputFormat(\n this.hsva,\n this.cpOutputFormat,\n this.cpAlphaChannel\n )\n this.selectedColor = this.service.outputFormat(this.hsva, 'rgba', null)\n\n if (this.format !== ColorFormats.CMYK) {\n this.cmykColor = ''\n } else {\n if (\n this.cpAlphaChannel === 'always' ||\n 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',\n transform = '',\n style\n\n let parentNode: any = null,\n 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 = this.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(\n this.directiveElementRef.nativeElement,\n position !== 'fixed'\n )\n\n if (\n this.useRootViewContainer ||\n (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 =\n this.dialogElement.nativeElement.getBoundingClientRect()\n if (this.cpPosition === 'auto') {\n const triggerBounds =\n this.cpTriggerElement.nativeElement.getBoundingClientRect()\n usePosition = calculateAutoPositioning(\n dialogBounds,\n triggerBounds,\n this.window\n )\n }\n\n this.arrowTop = usePosition === 'top' ? dialogHeight - 1 : undefined\n this.cpArrowPosition = undefined\n\n switch (usePosition) {\n case 'top':\n this.top -= dialogHeight + this.dialogArrowSize\n this.left +=\n (this.cpPositionOffset / 100) * boxDirective.width -\n this.dialogArrowOffset\n break\n case 'bottom':\n this.top += boxDirective.height + this.dialogArrowSize\n this.left +=\n (this.cpPositionOffset / 100) * boxDirective.width -\n this.dialogArrowOffset\n break\n case 'top-left':\n case 'left-top':\n this.top -=\n dialogHeight -\n boxDirective.height +\n (boxDirective.height * this.cpPositionOffset) / 100\n this.left -=\n this.cpWidth + this.dialogArrowSize - 2 - this.dialogArrowOffset\n break\n case 'top-right':\n case 'right-top':\n this.top -=\n dialogHeight -\n boxDirective.height +\n (boxDirective.height * this.cpPositionOffset) / 100\n this.left +=\n boxDirective.width +\n this.dialogArrowSize -\n 2 -\n this.dialogArrowOffset\n break\n case 'left':\n case 'bottom-left':\n case 'left-bottom':\n this.top +=\n (boxDirective.height * this.cpPositionOffset) / 100 -\n 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 +=\n (boxDirective.height * this.cpPositionOffset) / 100 -\n this.dialogArrowOffset\n this.left += boxDirective.width + this.dialogArrowSize - 2\n break\n }\n\n const windowInnerHeight = this.window.innerHeight\n const windowInnerWidth = this.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 ? this.window.pageYOffset : 0),\n left: left + (offset ? this.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 {\n Directive,\n OnChanges,\n OnDestroy,\n Input,\n Output,\n EventEmitter,\n HostListener,\n ApplicationRef,\n ComponentRef,\n ElementRef,\n ViewContainerRef,\n Injector,\n EmbeddedViewRef,\n TemplateRef,\n isDevMode,\n inject,\n} from '@angular/core'\n\nimport { ColorPickerComponent } from './color-picker.component'\n\nimport { AlphaChannel, ColorMode, OutputFormat } from './helpers'\n\n@Directive({\n selector: '[colorPicker]',\n exportAs: 'ngxColorPicker',\n})\nexport class ColorPickerDirective implements OnChanges, OnDestroy {\n private readonly injector = inject(Injector)\n private readonly appRef = inject(ApplicationRef)\n private readonly vcRef = inject(ViewContainerRef)\n private readonly elRef = inject(ElementRef)\n\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<{\n input: string\n value: number | string\n color: string\n }>(true)\n\n @Output() cpToggleChange = new EventEmitter<boolean>(true)\n\n @Output() cpSliderChange = new EventEmitter<{\n slider: string\n value: string | number\n color: string\n }>(true)\n @Output() cpSliderDragEnd = new EventEmitter<{\n slider: string\n color: string\n }>(true)\n @Output() cpSliderDragStart = new EventEmitter<{\n slider: string\n color: string\n }>(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 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(\n classOfRootComponent,\n Injector.NULL\n )\n\n if (appInstance !== Injector.NULL) {\n vcRef =\n appInstance.vcRef || appInstance.viewContainerRef || this.vcRef\n\n if (isDevMode() && vcRef === this.vcRef) {\n console.warn(\n '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 }\n } else {\n this.viewAttachedToAppRef = true\n }\n }\n\n if (this.viewAttachedToAppRef) {\n this.cmpRef = vcRef.createComponent(ColorPickerComponent, {\n injector: this.injector,\n })\n document.body.appendChild(\n (this.cmpRef.hostView as EmbeddedViewRef<any>)\n .rootNodes[0] as HTMLElement\n )\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, {\n injector,\n index: 0,\n })\n }\n\n this.cmpRef.instance.setupDialog(\n this,\n this.elRef,\n this.colorPicker,\n this.cpWidth,\n this.cpHeight,\n this.cpDialogDisplay,\n this.cpFallbackColor,\n this.cpColorMode,\n this.cpCmykEnabled,\n this.cpAlphaChannel,\n this.cpOutputFormat,\n this.cpDisableInput,\n this.cpIgnoredElements,\n this.cpSaveClickOutside,\n this.cpCloseClickOutside,\n this.cpUseRootViewContainer,\n this.cpPosition,\n this.cpPositionOffset,\n this.cpPositionRelativeToArrow,\n this.cpPresetLabel,\n this.cpPresetColors,\n this.cpPresetColorsClass,\n this.cpMaxPresetColorsLength,\n this.cpPresetEmptyMessage,\n this.cpPresetEmptyMessageClass,\n this.cpOKButton,\n this.cpOKButtonClass,\n this.cpOKButtonText,\n this.cpCancelButton,\n this.cpCancelButtonClass,\n this.cpCancelButtonText,\n this.cpAddColorButton,\n this.cpAddColorButtonClass,\n this.cpAddColorButtonText,\n this.cpRemoveColorButtonClass,\n this.cpEyeDropper,\n this.elRef,\n this.cpExtraTemplate\n )\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(\n (item: any) => item === element\n )\n\n if (!this.cpDisabled && !ignored.length) {\n if (\n typeof document !== 'undefined' &&\n element === document.activeElement\n ) {\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":[],"mappings":"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"}