{"version":3,"file":"ngx-prime-color-picker.mjs","sources":["../../../projects/ngx-prime-color-picker/src/lib/ngx-prime-color-picker.service.ts","../../../projects/ngx-prime-color-picker/src/lib/ngx-prime-color-picker.component.ts","../../../projects/ngx-prime-color-picker/src/lib/ngx-prime-color-picker.html","../../../projects/ngx-prime-color-picker/src/public-api.ts","../../../projects/ngx-prime-color-picker/src/ngx-prime-color-picker.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class NgxPrimeColorPickerService {\n\n  constructor() { }\n}\n","\nimport { NgxColorConverterService } from 'ngx-color-converter';\n\nimport { AfterViewInit, ChangeDetectorRef, Component, EventEmitter, inject, Input, Output, ViewEncapsulation } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { NgStyle } from '@angular/common';\nimport { COLOROBJECT } from '../public-api';\n\n\n@Component({\n  selector: 'ngx-prime-color-picker',\n  standalone: true,\n  imports: [FormsModule, ReactiveFormsModule, NgStyle],\n  encapsulation: ViewEncapsulation.None,\n  templateUrl: './ngx-prime-color-picker.html',\n  styleUrls: ['./ngx-prime-color-picker.scss']\n})\nexport class NgxPrimeColorPickerComponent implements AfterViewInit {\n  @Output() getCurrentColorObject = new EventEmitter();\n  @Input() showConversionTable: boolean = true;\n  @Input() showSaturation: boolean = true;\n  @Input() showLightness: boolean = true;\n  @Input() showColorPalette: boolean = true;\n  @Input() showGradient: boolean = true;\n  @Input() color: string = '#ff0000';\n\n  public isFocused: boolean = false;\n\n  public isFreshColor: boolean = true;\n\n  public gradintPickerId: string = 'color-canvas-' + (Math.random() + 1).toString(36).substring(7);\n  public position: {\n    offsetX: number,\n    offsetY: number\n  } = {\n      offsetX: 270 - 15,\n      offsetY: 15\n    };\n  public degrees: number[] = [];\n  public primeColors: number[] = [];\n\n  public saturationGradientString = ``;\n\n  public lightnessGradientString = ``\n\n  public hslObject: { h: number, s: number, l: number } = { h: 360, s: 100, l: 50 };\n  public canvas: HTMLCanvasElement;\n  public context: CanvasRenderingContext2D;\n  public pointer: HTMLDivElement;\n\n  protected colors = inject(NgxColorConverterService);\n  public objectColors: COLOROBJECT;\n\n  constructor(private cdref: ChangeDetectorRef) { }\n\n  ngAfterViewInit(): void {\n    this.degrees = Array.from(Array(360).keys());\n    this.primeColors = Array.from(Array(13).keys());\n\n    this.objectColors = this.colors.toColorObject(this.color);\n\n    this.hslObject.h = this.objectColors.hue;\n    this.hslObject.s = this.objectColors.sat * 100;\n    this.hslObject.l = this.objectColors.lightness * 100;\n\n    this.objectColors['hex'] = this.colors.toHexString(this.objectColors.red, this.objectColors.green, this.objectColors.blue);\n    this.color = this.colors.toHexString(this.objectColors.red, this.objectColors.green, this.objectColors.blue);\n\n    this.canvas = document.getElementById(this.gradintPickerId) as HTMLCanvasElement;\n    let width: number = 270;\n    this.canvas.style.width = width + \"px\";\n    this.canvas.style.height = ((width / 16) * 9) + \"px\";\n\n    this.context = this.canvas.getContext(\"2d\", { willReadFrequently: true }) as CanvasRenderingContext2D;\n\n    if (this.context && this.canvas) {\n      this.createRGBGradient();\n      this.canvas.addEventListener('click', (event) => {\n        this.isFreshColor = false;\n        this.position.offsetX = event.offsetX;\n        this.position.offsetY = event.offsetY;\n        this.color = this.bufferToHex(this.context.getImageData(this.position.offsetX, this.position.offsetY, 1, 1).data);\n        this.colorObject();\n      });\n\n      this.pointer = document.getElementById('picker-gradient-pointer') as HTMLDivElement;\n\n      this.canvas.addEventListener('dragover', (event) => {\n        this.isFreshColor = false;\n        this.position.offsetX = event.offsetX;\n        this.position.offsetY = event.offsetY;\n        this.color = this.bufferToHex(this.context.getImageData(this.position.offsetX, this.position.offsetY, 1, 1).data);\n        this.colorObject();\n      });\n    }\n\n    this.cdref.detectChanges();\n  }\n\n  public colorObject() {\n    this.objectColors = this.colors.toColorObject(this.color);\n    this.objectColors['hex'] = this.colors.toHexString(this.objectColors.red, this.objectColors.green, this.objectColors.blue);\n    this.color = this.colors.toHexString(this.objectColors.red, this.objectColors.green, this.objectColors.blue);\n    this.getCurrentColorObject.emit(this.objectColors);\n  }\n\n  public bufferToHex(buffer: Uint8ClampedArray) {\n    return '#' + [...new Uint8Array(buffer)].map(x => x.toString(16).padStart(2, '0')).join('');\n  }\n\n  public createRGBGradient() {\n    this.saturationGradientString = `\n      -webkit-linear-gradient(left,\n        hsla(${this.hslObject.h}, 0%, 50%, 1),\n        hsla(${this.hslObject.h}, 20%, 50%, 1),\n        hsla(${this.hslObject.h}, 40%, 50%, 1),\n        hsla(${this.hslObject.h}, 60%, 50%, 1),\n        hsla(${this.hslObject.h}, 80%, 50%, 1),\n        hsla(${this.hslObject.h}, 100%, 50%, 1))`;\n\n    this.lightnessGradientString = `\n        -webkit-linear-gradient(left,\n          hsla(${this.hslObject.h}, 100%, 0%, 1),\n          hsla(${this.hslObject.h}, 100%, 20%, 1),\n          hsla(${this.hslObject.h}, 100%, 40%, 1),\n          hsla(${this.hslObject.h}, 100%, 60%, 1),\n          hsla(${this.hslObject.h}, 100%, 80%, 1),\n          hsla(${this.hslObject.h}, 100%, 100%, 1))`;\n\n    this.fillGradient();\n  }\n\n  public createFromPalette() {\n    this.position.offsetX = 270 - 15;\n    this.position.offsetY = 15;\n\n    this.fillGradient();\n  }\n\n  public fillGradient() {\n    const rgb = this.hsl2rgb();\n\n    const rgbString = `rgb(${rgb.r}, ${rgb.g}, ${rgb.b})`;\n    // Create linear gradient\n    const coreGradient = this.context.createLinearGradient(0, this.canvas.width / 2, this.canvas.width, this.canvas.width / 2);\n    coreGradient.addColorStop(0, \"rgb(255, 255, 255)\");\n    coreGradient.addColorStop(1, rgbString);\n\n    // Fill rectangle with gradient\n    this.context.fillStyle = coreGradient;\n    this.context.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\n\n    // Create linear gradient\n    const blackGradient = this.context.createLinearGradient(this.canvas.width / 2, 0, this.canvas.width / 2, this.canvas.width / 2);\n    blackGradient.addColorStop(0, \"transparent\");\n    blackGradient.addColorStop(1, \"rgb(0, 0, 0)\");\n\n    // Fill rectangle with gradient\n    this.context.fillStyle = blackGradient;\n    this.context.fillRect(0, 0, this.canvas.width, this.canvas.height);\n    if (!this.isFreshColor) {\n      this.color = this.bufferToHex(this.context.getImageData(this.position.offsetX, this.position.offsetY, 1, 1).data);\n      this.colorObject();\n    }\n  }\n\n  public hsl2rgb() {\n    let { h, s, l } = this.hslObject;\n\n    // IMPORTANT if s and l between 0,1 remove the next two lines:\n    s /= 100\n    l /= 100\n\n    const k = (n: number) => (n + h / 30) % 12\n    const a = s * Math.min(l, 1 - l)\n    const f = (n: number) =>\n      l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)))\n    return {\n      r: Math.round(255 * f(0)),\n      g: Math.round(255 * f(8)),\n      b: Math.round(255 * f(4)),\n    }\n  }\n}\n","<div class=\"crimson-picker-container\" [class.crimson-picker-container-host]=\"isFocused\">\n  <div class=\"crimson-picker-input-container\">\n    <input type=\"text\" [(ngModel)]=\"color\" (focus)=\"isFocused = true;\" (blur)=\"isFocused = false;\" readonly\n      class=\"crimson-colorpicker-input\">\n    <div class=\"crimson-color-circle\" (click)=\"isFocused = true;\" [style.background]=\"color\"></div>\n  </div>\n\n  <div class=\"crimson-picker\" id=\"crimson-picker\">\n    <div class=\"crimson-picker-gradient\" [hidden]=\"!showGradient\">\n      <span class=\"crimson-picker-gradient-pointer\" draggable=\"true\" id=\"picker-gradient-pointer\"\n        [style.left.px]=\"position.offsetX\" [style.top.px]=\"position.offsetY\">\n      </span>\n      <canvas [attr.id]=\"gradintPickerId\"></canvas>\n    </div>\n    <div class=\"crimson-picker-color-grid\">\n      @for(color of degrees; let i = $index;track i) {\n      <div class=\"crimson-color-picker-point\" [style.background]=\"'hsl('+i+', 100%, 50%)'\"></div>\n      }\n      <div class=\"crimson-color-picker-range-container\">\n        <input class=\"crimson-color-picker-range-bar\" (input)=\"createRGBGradient()\" [(ngModel)]=\"hslObject['h']\"\n          type=\"range\" min=\"0\" max=\"359\" />\n      </div>\n    </div>\n    @if(objectColors){\n    <div class=\"crimson-color-picker-input-data\">\n      <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['hex']\" readonly />\n      <small class=\"crimson-color-picker-text\">HEX</small>\n    </div>\n    }\n    <!-- primeColors -->\n    <div class=\"crimson-picker-prime-color-grid\" [hidden]=\"!showColorPalette\">\n      @for(color of primeColors; let i = $index;track i) {\n      <div class=\"crimson-prime-color-picker-point\" (click)=\"hslObject.h = i * 30;createFromPalette();\"\n        [style.background]=\"'hsl('+i * 30+', 100%, 50%)'\"></div>\n      }\n    </div>\n    @if(objectColors){\n    <div [hidden]=\"!showConversionTable\">\n      <div class=\"crimson-color-picker-input-data\">\n        <div class=\"crimson-color-picker-input-grid\">\n          <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['red']\" readonly />\n          <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['green']\" readonly />\n          <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['blue']\" readonly />\n        </div>\n        <small class=\"crimson-color-picker-text\">RGB</small>\n      </div>\n      <div class=\"crimson-color-picker-input-data\">\n        <div class=\"crimson-color-picker-input-grid\">\n          <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['hue']\" readonly />\n          <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['sat']\" readonly />\n          <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['lightness']\" readonly />\n        </div>\n        <small class=\"crimson-color-picker-text\">HSL</small>\n      </div>\n      <div class=\"crimson-color-picker-input-data\">\n        <div class=\"crimson-color-picker-input-grid\">\n          <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['hue']\" readonly />\n          <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['whiteness']\" readonly />\n          <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['blackness']\" readonly />\n        </div>\n        <small class=\"crimson-color-picker-text\">HWB</small>\n      </div>\n      <div class=\"crimson-color-picker-input-data\">\n        <div class=\"crimson-color-picker-input-grid\">\n          <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['cyan']\" readonly />\n          <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['magenta']\" readonly />\n          <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['yellow']\" readonly />\n          <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['black']\" readonly />\n        </div>\n        <small class=\"crimson-color-picker-text\">CMYK</small>\n      </div>\n      <div class=\"crimson-color-picker-input-data\">\n        <input type=\"text\" class=\"crimson-color-picker-input\" [value]=\"objectColors['ncol']\" readonly />\n        <small class=\"crimson-color-picker-text\">NCOL</small>\n      </div>\n    </div>\n    }\n\n    <!-- saturationGradientString -->\n    <div class=\"crimson-picker-color-saturation-container\" [hidden]=\"!showSaturation\">\n      <div class=\"crimson-picker-color-saturation-gradient\" [style.background]=\"saturationGradientString\">\n        <input class=\"crimson-color-picker-range-bar\" (input)=\"createRGBGradient()\" [(ngModel)]=\"hslObject['s']\"\n          type=\"range\" min=\"0\" max=\"100\" />\n      </div>\n    </div>\n    <!-- lightnessGradientString -->\n    <div class=\"crimson-picker-color-saturation-container\" [hidden]=\"!showLightness\">\n      <div class=\"crimson-picker-color-saturation-gradient\" [style.background]=\"lightnessGradientString\">\n        <input class=\"crimson-color-picker-range-bar\" (input)=\"createRGBGradient()\" [(ngModel)]=\"hslObject['l']\"\n          type=\"range\" min=\"0\" max=\"100\" />\n      </div>\n    </div>\n  </div>\n</div>","/*\n * Public API Surface of ngx-prime-color-picker\n */\n\nexport * from './lib/ngx-prime-color-picker.service';\nexport * from './lib/ngx-prime-color-picker.component';\nexport interface COLOROBJECT {\n  red: number;\n  green: number;\n  blue: number;\n  hue: number;\n  sat: number;\n  lightness: number;\n  whiteness: number;\n  blackness: number;\n  cyan: number;\n  magenta: number;\n  yellow: number;\n  black: number;\n  ncol: string;\n  opacity: number;\n  valid: boolean;\n  hex: string;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}