UNPKG

109 kBSource Map (JSON)View Raw
1{"version":3,"file":"ngx-color-picker.js","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.directive.ts","../../projects/lib/src/lib/color-picker.module.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()\nexport class ColorPickerService {\n private active: ColorPickerComponent | null = null;\n\n constructor() {}\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 /* tslint: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 /* tslint: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 { Component, OnInit, OnDestroy, AfterViewInit,\n ViewChild, HostListener, ViewEncapsulation,\n ElementRef, ChangeDetectorRef } from '@angular/core';\n\nimport { detectIE, calculateAutoPositioning } 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@Component({\n selector: 'color-picker',\n templateUrl: './color-picker.component.html',\n styleUrls: [ './color-picker.component.css' ],\n encapsulation: ViewEncapsulation.None\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: any;\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 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\n public cpTriggerElement: ElementRef;\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(private elRef: ElementRef, private cdRef: ChangeDetectorRef, private service: ColorPickerService) {}\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: any) => { 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, cpTriggerElement: ElementRef): 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.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\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 (this.show &&\n !this.isIE10 && 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 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 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 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 document.addEventListener('mousedown', this.listenerMouseDown);\n document.addEventListener('touchstart', this.listenerMouseDown);\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 document.removeEventListener('mousedown', this.listenerMouseDown);\n document.removeEventListener('touchstart', this.listenerMouseDown);\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) {\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 if (this.cpPosition === 'auto') {\n const dialogBounds = this.dialogElement.nativeElement.getBoundingClientRect();\n const triggerBounds = this.cpTriggerElement.nativeElement.getBoundingClientRect();\n usePosition = calculateAutoPositioning(dialogBounds, triggerBounds);\n }\n\n if (usePosition === 'top') {\n this.arrowTop = dialogHeight - 1;\n\n this.top -= dialogHeight + this.dialogArrowSize;\n this.left += this.cpPositionOffset / 100 * boxDirective.width - this.dialogArrowOffset;\n } else if (usePosition === 'bottom') {\n this.top += boxDirective.height + this.dialogArrowSize;\n this.left += this.cpPositionOffset / 100 * boxDirective.width - this.dialogArrowOffset;\n } else if (usePosition === 'top-left' || usePosition === 'left-top') {\n this.top -= dialogHeight - boxDirective.height + boxDirective.height * this.cpPositionOffset / 100;\n this.left -= this.cpWidth + this.dialogArrowSize - 2 - this.dialogArrowOffset;\n } else if (usePosition === 'top-right' || usePosition === 'right-top') {\n this.top -= dialogHeight - boxDirective.height + boxDirective.height * this.cpPositionOffset / 100;\n this.left += boxDirective.width + this.dialogArrowSize - 2 - this.dialogArrowOffset;\n } else if (usePosition === 'left' || usePosition === 'bottom-left' || usePosition === 'left-bottom') {\n this.top += boxDirective.height * this.cpPositionOffset / 100 - this.dialogArrowOffset;\n this.left -= this.cpWidth + this.dialogArrowSize - 2;\n } else { // usePosition === 'right' || usePosition === 'bottom-right' || usePosition === 'right-bottom'\n this.top += boxDirective.height * this.cpPositionOffset / 100 - this.dialogArrowOffset;\n this.left += boxDirective.width + this.dialogArrowSize - 2;\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 return {\n top: element.getBoundingClientRect().top + (offset ? window.pageYOffset : 0),\n left: element.getBoundingClientRect().left + (offset ? window.pageXOffset : 0),\n width: element.offsetWidth,\n height: element.offsetHeight\n };\n }\n}\n","import { Directive, OnChanges, OnDestroy, Input, Output, EventEmitter,\n HostListener, ApplicationRef, ComponentRef, ElementRef, ViewContainerRef,\n Injector, ReflectiveInjector, ComponentFactoryResolver, EmbeddedViewRef } from '@angular/core';\n\nimport { ColorPickerService } from './color-picker.service';\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 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() 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\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(private injector: Injector, private cfr: ComponentFactoryResolver,\n private appRef: ApplicationRef, private vcRef: ViewContainerRef, private elRef: ElementRef,\n private _service: ColorPickerService) {}\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 (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 const compFactory = this.cfr.resolveComponentFactory(ColorPickerComponent);\n\n if (this.viewAttachedToAppRef) {\n this.cmpRef = compFactory.create(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 = ReflectiveInjector.fromResolvedProviders([], vcRef.parentInjector);\n\n this.cmpRef = vcRef.createComponent(compFactory, 0, injector, []);\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.elRef);\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 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","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\n\nimport { TextDirective, SliderDirective } from './helpers';\n\nimport { ColorPickerService } from './color-picker.service';\nimport { ColorPickerComponent } from './color-picker.component';\nimport { ColorPickerDirective } from './color-picker.directive';\n\n@NgModule({\n imports: [ CommonModule ],\n exports: [ ColorPickerDirective ],\n providers: [ ColorPickerService ],\n declarations: [ ColorPickerComponent, ColorPickerDirective, TextDirective, SliderDirective ],\n entryComponents: [ ColorPickerComponent ]\n})\nexport class ColorPickerModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
\No newline at end of file