{"version":3,"file":"primeng-colorpicker.umd.js","sources":["../../src/app/components/colorpicker/colorpicker.ts","../../src/app/components/colorpicker/primeng-colorpicker.ts"],"sourcesContent":["import { NgModule, Component, ElementRef, Input, Output, OnDestroy, EventEmitter, forwardRef, Renderer2, ViewChild, ChangeDetectorRef, ChangeDetectionStrategy, ViewEncapsulation } from '@angular/core';\nimport { trigger, state, style, transition, animate, AnimationEvent } from '@angular/animations';\nimport { CommonModule } from '@angular/common';\nimport { DomHandler, ConnectedOverlayScrollHandler } from 'primeng/dom';\nimport { NG_VALUE_ACCESSOR, ControlValueAccessor } from '@angular/forms';\n\nexport const COLORPICKER_VALUE_ACCESSOR: any = {\n    provide: NG_VALUE_ACCESSOR,\n    useExisting: forwardRef(() => ColorPicker),\n    multi: true\n};\n\n@Component({\n    selector: 'p-colorPicker',\n    template: `\n        <div #container [ngStyle]=\"style\" [class]=\"styleClass\" [ngClass]=\"{'p-colorpicker p-component':true,'p-colorpicker-overlay':!inline,'p-colorpicker-dragging':colorDragging||hueDragging}\">\n            <input #input type=\"text\" *ngIf=\"!inline\" class=\"p-colorpicker-preview p-inputtext\" readonly=\"readonly\" [ngClass]=\"{'p-disabled': disabled}\"\n                (focus)=\"onInputFocus()\" (click)=\"onInputClick()\" (keydown)=\"onInputKeydown($event)\" [attr.id]=\"inputId\" [attr.tabindex]=\"tabindex\" [disabled]=\"disabled\"\n                [style.backgroundColor]=\"inputBgColor\">\n            <div *ngIf=\"inline || overlayVisible\" [ngClass]=\"{'p-colorpicker-panel': true, 'p-colorpicker-overlay-panel':!inline, 'p-disabled': disabled}\" (click)=\"onPanelClick()\"\n                [@overlayAnimation]=\"{value: 'visible', params: {showTransitionParams: showTransitionOptions, hideTransitionParams: hideTransitionOptions}}\" [@.disabled]=\"inline === true\" \n                    (@overlayAnimation.start)=\"onOverlayAnimationStart($event)\" (@overlayAnimation.done)=\"onOverlayAnimationEnd($event)\">\n                <div class=\"p-colorpicker-content\">\n                    <div #colorSelector class=\"p-colorpicker-color-selector\" (touchstart)=\"onColorTouchStart($event)\" (touchmove)=\"onMove($event)\" (touchend)=\"onDragEnd()\" (mousedown)=\"onColorMousedown($event)\">\n                        <div class=\"p-colorpicker-color\">\n                            <div #colorHandle class=\"p-colorpicker-color-handle\"></div>\n                        </div>\n                    </div>\n                    <div #hue class=\"p-colorpicker-hue\" (mousedown)=\"onHueMousedown($event)\" (touchstart)=\"onHueTouchStart($event)\" (touchmove)=\"onMove($event)\" (touchend)=\"onDragEnd()\">\n                        <div #hueHandle class=\"p-colorpicker-hue-handle\"></div>\n                    </div>\n                </div>\n            </div>\n        </div>\n    `,\n    animations: [\n        trigger('overlayAnimation', [\n            transition(':enter', [\n                style({opacity: 0, transform: 'scaleY(0.8)'}),\n                animate('{{showTransitionParams}}')\n              ]),\n              transition(':leave', [\n                animate('{{hideTransitionParams}}', style({ opacity: 0 }))\n              ])\n        ])\n    ],\n    providers: [COLORPICKER_VALUE_ACCESSOR],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    encapsulation: ViewEncapsulation.None,\n    styleUrls: ['./colorpicker.css']\n})\nexport class ColorPicker implements ControlValueAccessor, OnDestroy {\n\n    @Input() style: any;\n\n    @Input() styleClass: string;\n\n    @Input() inline: boolean;\n\n    @Input() format: string = 'hex';\n\n    @Input() appendTo: any;\n\n    @Input() disabled: boolean;\n\n    @Input() tabindex: string;\n\n    @Input() inputId: string;\n\n    @Input() autoZIndex: boolean = true;\n\n    @Input() baseZIndex: number = 0;\n\n    @Input() showTransitionOptions: string = '.12s cubic-bezier(0, 0, 0.2, 1)';\n\n    @Input() hideTransitionOptions: string = '.1s linear';\n\n    @Output() onChange: EventEmitter<any> = new EventEmitter();\n\n    @Output() onShow: EventEmitter<any> = new EventEmitter();\n\n    @Output() onHide: EventEmitter<any> = new EventEmitter();\n\n\n    @ViewChild('container') containerViewChild: ElementRef;\n\n    @ViewChild('input') inputViewChild: ElementRef;\n\n    value: any = {h:0, s: 100, b: 100};\n\n    inputBgColor: string;\n\n    shown: boolean;\n\n    overlayVisible: boolean;\n\n    defaultColor: string = 'ff0000';\n\n    onModelChange: Function = () => {};\n\n    onModelTouched: Function = () => {};\n\n    documentClickListener: Function;\n\n    documentResizeListener: any;\n\n    documentMousemoveListener: Function;\n\n    documentMouseupListener: Function;\n\n    documentHueMoveListener: Function;\n\n    scrollHandler: any;\n\n    selfClick: boolean;\n\n    colorDragging: boolean;\n\n    hueDragging: boolean;\n\n    overlay: HTMLDivElement;\n\n    colorSelectorViewChild: ElementRef;\n\n    colorHandleViewChild: ElementRef;\n\n    hueViewChild: ElementRef;\n\n    hueHandleViewChild: ElementRef;\n\n    constructor(public el: ElementRef, public renderer: Renderer2, public cd: ChangeDetectorRef) {}\n\n    @ViewChild('colorSelector') set colorSelector(element: ElementRef) {\n        this.colorSelectorViewChild = element;\n    }\n\n    @ViewChild('colorHandle') set colorHandle(element: ElementRef) {\n        this.colorHandleViewChild = element;\n    }\n\n    @ViewChild('hue') set hue(element: ElementRef) {\n        this.hueViewChild = element;\n    }\n\n    @ViewChild('hueHandle') set hueHandle(element: ElementRef) {\n        this.hueHandleViewChild = element;\n    }\n\n    onHueMousedown(event: MouseEvent) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.bindDocumentMousemoveListener();\n        this.bindDocumentMouseupListener();\n\n        this.hueDragging = true;\n        this.pickHue(event);\n    }\n\n    onHueTouchStart(event) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.hueDragging = true;\n        this.pickHue(event);\n    }\n\n    onColorTouchStart(event) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.colorDragging = true;\n        this.pickColor(event);\n    }\n\n    pickHue(event) {\n        let top: number = this.hueViewChild.nativeElement.getBoundingClientRect().top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);\n        this.value = this.validateHSB({\n            h: Math.floor(360 * (150 - Math.max(0, Math.min(150, ((event.pageY || event.changedTouches[0].pageY) - top)))) / 150),\n            s: this.value.s,\n            b: this.value.b\n        });\n\n        this.updateColorSelector();\n        this.updateUI();\n        this.updateModel();\n        this.onChange.emit({originalEvent: event, value: this.getValueToUpdate()});\n    }\n\n    onColorMousedown(event: MouseEvent) {\n        if (this.disabled) {\n            return;\n        }\n\n        this.bindDocumentMousemoveListener();\n        this.bindDocumentMouseupListener();\n\n        this.colorDragging = true;\n        this.pickColor(event);\n    }\n\n    onMove(event) {\n        if (this.colorDragging) {\n            this.pickColor(event);\n            event.preventDefault();\n        }\n\n        if (this.hueDragging) {\n            this.pickHue(event);\n            event.preventDefault();\n        }\n    }\n\n    onDragEnd() {\n        this.colorDragging = false;\n        this.hueDragging = false;\n\n        this.unbindDocumentMousemoveListener();\n        this.unbindDocumentMouseupListener();\n    }\n\n    pickColor(event) {\n        let rect = this.colorSelectorViewChild.nativeElement.getBoundingClientRect();\n        let top = rect.top + (window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0);\n        let left = rect.left + document.body.scrollLeft;\n        let saturation = Math.floor(100 * (Math.max(0, Math.min(150, ((event.pageX || event.changedTouches[0].pageX)- left)))) / 150);\n        let brightness = Math.floor(100 * (150 - Math.max(0, Math.min(150, ((event.pageY || event.changedTouches[0].pageY) - top)))) / 150);\n        this.value = this.validateHSB({\n            h: this.value.h,\n            s: saturation,\n            b: brightness\n        });\n\n        this.updateUI();\n        this.updateModel();\n        this.onChange.emit({originalEvent: event, value: this.getValueToUpdate()});\n    }\n\n    getValueToUpdate() {\n        let val: any;\n        switch(this.format) {\n            case 'hex':\n                val = '#' + this.HSBtoHEX(this.value);\n            break;\n\n            case 'rgb':\n                val = this.HSBtoRGB(this.value);\n            break;\n\n            case 'hsb':\n                val = this.value;\n            break;\n        }\n\n        return val;\n    }\n\n    updateModel(): void {\n        this.onModelChange(this.getValueToUpdate());\n    }\n\n    writeValue(value: any): void {\n        if (value) {\n            switch(this.format) {\n                case 'hex':\n                    this.value = this.HEXtoHSB(value);\n                break;\n\n                case 'rgb':\n                    this.value = this.RGBtoHSB(value);\n                break;\n\n                case 'hsb':\n                    this.value = value;\n                break;\n            }\n        }\n        else {\n            this.value = this.HEXtoHSB(this.defaultColor);\n        }\n\n        this.updateColorSelector();\n        this.updateUI();\n        this.cd.markForCheck();\n    }\n\n    updateColorSelector() {\n        if (this.colorSelectorViewChild) {\n            const hsb: any = {};\n            hsb.s = 100;\n            hsb.b = 100;\n            hsb.h = this.value.h;\n\n            this.colorSelectorViewChild.nativeElement.style.backgroundColor = '#' + this.HSBtoHEX(hsb);\n        }\n    }\n\n    updateUI() {\n        if (this.colorHandleViewChild && this.hueHandleViewChild.nativeElement) {\n            this.colorHandleViewChild.nativeElement.style.left =  Math.floor(150 * this.value.s / 100) + 'px';\n            this.colorHandleViewChild.nativeElement.style.top =  Math.floor(150 * (100 - this.value.b) / 100) + 'px';\n            this.hueHandleViewChild.nativeElement.style.top = Math.floor(150 - (150 * this.value.h / 360)) + 'px';\n\n        }\n\n        this.inputBgColor = '#' + this.HSBtoHEX(this.value);\n    }\n\n    onInputFocus() {\n        this.onModelTouched();\n    }\n\n    show() {\n        this.overlayVisible = true;\n    }\n\n    onOverlayAnimationStart(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                if (!this.inline) {\n                    this.overlay = event.element;\n                    this.appendOverlay();\n                    if (this.autoZIndex) {\n                        this.overlay.style.zIndex = String(this.baseZIndex + (++DomHandler.zindex));\n                    }\n                    this.alignOverlay();\n                    this.bindDocumentClickListener();\n                    this.bindDocumentResizeListener();\n                    this.bindScrollListener();\n\n                    this.updateColorSelector();\n                    this.updateUI();\n                }\n            break;\n\n            case 'void':\n                this.onOverlayHide();\n            break;\n        }\n    }\n\n    onOverlayAnimationEnd(event: AnimationEvent) {\n        switch(event.toState) {\n            case 'visible':\n                if (!this.inline) {\n                    this.onShow.emit({})\n                }\n            break;\n\n            case 'void':\n                this.onHide.emit({})\n            break;\n        }\n    }\n\n    appendOverlay() {\n        if (this.appendTo) {\n            if (this.appendTo === 'body')\n                document.body.appendChild(this.overlay);\n            else\n                DomHandler.appendChild(this.overlay, this.appendTo);\n        }\n    }\n\n    restoreOverlayAppend() {\n        if (this.overlay && this.appendTo) {\n            this.el.nativeElement.appendChild(this.overlay);\n        }\n    }\n\n    alignOverlay() {\n        if (this.appendTo)\n            DomHandler.absolutePosition(this.overlay, this.inputViewChild.nativeElement);\n        else\n            DomHandler.relativePosition(this.overlay, this.inputViewChild.nativeElement);\n    }\n\n    hide() {\n        this.overlayVisible = false;\n        this.cd.markForCheck();\n    }\n\n    onInputClick() {\n        this.selfClick = true;\n        this.togglePanel();\n    }\n\n    togglePanel() {\n        if (!this.overlayVisible)\n            this.show();\n        else\n            this.hide();\n    }\n\n    onInputKeydown(event: KeyboardEvent) {\n        switch(event.which) {\n            //space\n            case 32:\n                this.togglePanel();\n                event.preventDefault();\n            break;\n\n            //escape and tab\n            case 27:\n            case 9:\n                this.hide();\n            break;\n        }\n    }\n\n    onPanelClick() {\n        this.selfClick = true;\n    }\n\n    registerOnChange(fn: Function): void {\n        this.onModelChange = fn;\n    }\n\n    registerOnTouched(fn: Function): void {\n        this.onModelTouched = fn;\n    }\n\n    setDisabledState(val: boolean): void {\n        this.disabled = val;\n        this.cd.markForCheck();\n    }\n\n    bindDocumentClickListener() {\n        if (!this.documentClickListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentClickListener = this.renderer.listen(documentTarget, 'click', () => {\n                if (!this.selfClick) {\n                    this.overlayVisible = false;\n                    this.unbindDocumentClickListener();\n                }\n\n                this.selfClick = false;\n                this.cd.markForCheck();\n            });\n        }\n    }\n\n    unbindDocumentClickListener() {\n        if (this.documentClickListener) {\n            this.documentClickListener();\n            this.documentClickListener = null;\n        }\n    }\n\n    bindDocumentMousemoveListener() {\n        if (!this.documentMousemoveListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentMousemoveListener = this.renderer.listen(documentTarget, 'mousemove', (event: MouseEvent) => {\n                if (this.colorDragging) {\n                    this.pickColor(event);\n                }\n\n                if (this.hueDragging) {\n                    this.pickHue(event);\n                }\n            });\n        }\n    }\n\n    unbindDocumentMousemoveListener() {\n        if (this.documentMousemoveListener) {\n            this.documentMousemoveListener();\n            this.documentMousemoveListener = null;\n        }\n    }\n\n    bindDocumentMouseupListener() {\n        if (!this.documentMouseupListener) {\n            const documentTarget: any = this.el ? this.el.nativeElement.ownerDocument : 'document';\n\n            this.documentMouseupListener = this.renderer.listen(documentTarget, 'mouseup', () => {\n                this.colorDragging = false;\n                this.hueDragging = false;\n                this.unbindDocumentMousemoveListener();\n                this.unbindDocumentMouseupListener();\n            });\n        }\n    }\n\n    unbindDocumentMouseupListener() {\n        if (this.documentMouseupListener) {\n            this.documentMouseupListener();\n            this.documentMouseupListener = null;\n        }\n    }\n\n    bindDocumentResizeListener() {\n        this.documentResizeListener = this.onWindowResize.bind(this);\n        window.addEventListener('resize', this.documentResizeListener);\n    }\n\n    unbindDocumentResizeListener() {\n        if (this.documentResizeListener) {\n            window.removeEventListener('resize', this.documentResizeListener);\n            this.documentResizeListener = null;\n        }\n    }\n\n    onWindowResize() {\n        this.hide();\n    }\n\n    bindScrollListener() {\n        if (!this.scrollHandler) {\n            this.scrollHandler = new ConnectedOverlayScrollHandler(this.containerViewChild.nativeElement, () => {\n                if (this.overlayVisible) {\n                    this.hide();\n                }\n            });\n        }\n\n        this.scrollHandler.bindScrollListener();\n    }\n\n    unbindScrollListener() {\n        if (this.scrollHandler) {\n            this.scrollHandler.unbindScrollListener();\n        }\n    }\n\n    validateHSB(hsb) {\n        return {\n            h: Math.min(360, Math.max(0, hsb.h)),\n            s: Math.min(100, Math.max(0, hsb.s)),\n            b: Math.min(100, Math.max(0, hsb.b))\n        };\n    }\n\n    validateRGB(rgb) {\n        return {\n            r: Math.min(255, Math.max(0, rgb.r)),\n            g: Math.min(255, Math.max(0, rgb.g)),\n            b: Math.min(255, Math.max(0, rgb.b))\n        };\n    }\n\n    validateHEX(hex) {\n        var len = 6 - hex.length;\n        if (len > 0) {\n            var o = [];\n            for (var i=0; i<len; i++) {\n                o.push('0');\n            }\n            o.push(hex);\n            hex = o.join('');\n        }\n        return hex;\n    }\n\n    HEXtoRGB(hex) {\n        let hexValue = parseInt(((hex.indexOf('#') > -1) ? hex.substring(1) : hex), 16);\n        return {r: hexValue >> 16, g: (hexValue & 0x00FF00) >> 8, b: (hexValue & 0x0000FF)};\n    }\n\n    HEXtoHSB(hex) {\n        return this.RGBtoHSB(this.HEXtoRGB(hex));\n    }\n\n    RGBtoHSB(rgb) {\n        var hsb = {\n            h: 0,\n            s: 0,\n            b: 0\n        };\n        var min = Math.min(rgb.r, rgb.g, rgb.b);\n        var max = Math.max(rgb.r, rgb.g, rgb.b);\n        var delta = max - min;\n        hsb.b = max;\n        hsb.s = max != 0 ? 255 * delta / max : 0;\n        if (hsb.s != 0) {\n            if (rgb.r == max) {\n                hsb.h = (rgb.g - rgb.b) / delta;\n            } else if (rgb.g == max) {\n                hsb.h = 2 + (rgb.b - rgb.r) / delta;\n            } else {\n                hsb.h = 4 + (rgb.r - rgb.g) / delta;\n            }\n        } else {\n            hsb.h = -1;\n        }\n        hsb.h *= 60;\n        if (hsb.h < 0) {\n            hsb.h += 360;\n        }\n        hsb.s *= 100/255;\n        hsb.b *= 100/255;\n        return hsb;\n    }\n\n    HSBtoRGB(hsb) {\n        var rgb = {\n            r: null, g: null, b: null\n        };\n        let h: number = hsb.h;\n        let s: number = hsb.s*255/100;\n        let v: number = hsb.b*255/100;\n        if (s == 0) {\n            rgb = {\n                r: v,\n                g: v,\n                b: v\n            }\n        }\n        else {\n            let t1: number = v;\n            let t2: number = (255-s)*v/255;\n            let t3: number = (t1-t2)*(h%60)/60;\n            if (h==360) h = 0;\n            if (h<60) {rgb.r=t1;\trgb.b=t2; rgb.g=t2+t3}\n            else if (h<120) {rgb.g=t1; rgb.b=t2;\trgb.r=t1-t3}\n            else if (h<180) {rgb.g=t1; rgb.r=t2;\trgb.b=t2+t3}\n            else if (h<240) {rgb.b=t1; rgb.r=t2;\trgb.g=t1-t3}\n            else if (h<300) {rgb.b=t1; rgb.g=t2;\trgb.r=t2+t3}\n            else if (h<360) {rgb.r=t1; rgb.g=t2;\trgb.b=t1-t3}\n            else {rgb.r=0; rgb.g=0;\trgb.b=0}\n        }\n        return {r:Math.round(rgb.r), g:Math.round(rgb.g), b:Math.round(rgb.b)};\n    }\n\n    RGBtoHEX(rgb) {\n        var hex = [\n            rgb.r.toString(16),\n            rgb.g.toString(16),\n            rgb.b.toString(16)\n        ];\n\n        for(var key in hex) {\n            if (hex[key].length == 1) {\n                hex[key] = '0' + hex[key];\n            }\n        }\n\n        return hex.join('');\n    }\n\n    HSBtoHEX(hsb) {\n        return this.RGBtoHEX(this.HSBtoRGB(hsb));\n    }\n\n    onOverlayHide() {\n        this.unbindScrollListener();\n        this.unbindDocumentResizeListener();\n        this.unbindDocumentClickListener();\n        this.overlay = null;\n    }\n\n    ngOnDestroy() {\n        if (this.scrollHandler) {\n            this.scrollHandler.destroy();\n            this.scrollHandler = null;\n        }\n\n        this.restoreOverlayAppend();\n        this.onOverlayHide();\n    }\n}\n\n@NgModule({\n    imports: [CommonModule],\n    exports: [ColorPicker],\n    declarations: [ColorPicker]\n})\nexport class ColorPickerModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["NG_VALUE_ACCESSOR","forwardRef","EventEmitter","DomHandler","ConnectedOverlayScrollHandler","trigger","transition","style","animate","Component","ChangeDetectionStrategy","ViewEncapsulation","Input","Output","ViewChild","CommonModule","NgModule"],"mappings":"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"}