{"version":3,"file":"ngxmc-color-picker.mjs","sources":["../../../../projects/color-picker/src/lib/helpers/color-helpers.ts","../../../../projects/color-picker/src/lib/models/color.model.ts","../../../../projects/color-picker/src/lib/components/color-canvas/base-color-canvas.ts","../../../../projects/color-picker/src/lib/components/color-canvas/color-slider/color-slider.component.ts","../../../../projects/color-picker/src/lib/components/color-canvas/color-slider/color-slider.component.html","../../../../projects/color-picker/src/lib/components/color-canvas/color-canvas.component.ts","../../../../projects/color-picker/src/lib/components/color-canvas/color-canvas.component.html","../../../../projects/color-picker/src/lib/components/color-collection/color-collection.component.ts","../../../../projects/color-picker/src/lib/components/color-collection/color-collection.component.html","../../../../projects/color-picker/src/lib/components/color-palette/color-palette.component.ts","../../../../projects/color-picker/src/lib/components/color-palette/color-palette.component.html","../../../../projects/color-picker/src/lib/services/color-adapter.ts","../../../../projects/color-picker/src/lib/services/color-formats.ts","../../../../projects/color-picker/src/lib/components/color-picker/color-picker.component.ts","../../../../projects/color-picker/src/lib/components/color-picker/color-picker-content.component.html","../../../../projects/color-picker/src/lib/components/color-picker/color-input.component.ts","../../../../projects/color-picker/src/lib/components/color-toggle/color-toggle.component.ts","../../../../projects/color-picker/src/lib/components/color-toggle/color-toggle.component.html","../../../../projects/color-picker/src/lib/directives/numeric-color-input.directive.ts","../../../../projects/color-picker/src/public-api.ts","../../../../projects/color-picker/src/ngxmc-color-picker.ts"],"sourcesContent":["const trimLeft = /^\\s+/;\nconst trimRight = /\\s+$/;\nconst tinyCounter = 0;\nconst mathRound = Math.round;\nconst mathMin = Math.min;\nconst mathMax = Math.max;\nconst mathRandom = Math.random;\n\nexport const NUMERIC_REGEX = /[^0-9]/g;\nexport const MAX_RGB = 255;\nexport const MIN_RGB = 0;\n\n/** List basic colors */\nexport const BASIC_COLORS = [\n  '#ffffff',\n  '#ffff00',\n  '#ff00ff',\n  '#ff0000',\n  '#c0c0c0',\n  '#808080',\n  '#808000',\n  '#800080',\n  '#800000',\n  '#00ffff',\n  '#00ff00',\n  '#008080',\n  '#008000',\n  '#0000ff',\n  '#000080',\n  '#000000',\n];\n\n/**\n * Get color at position\n * @param ctx\n * @param x\n * @param y\n */\nexport function getColorAtPosition(\n  ctx: CanvasRenderingContext2D,\n  x: number,\n  y: number,\n): { r: number; g: number; b: number } {\n  const imageData: Uint8ClampedArray = ctx.getImageData(x, y, 1, 1).data;\n  return { r: imageData[0], g: imageData[1], b: imageData[2] };\n}\n\n// `rgbaToHex`\n// Converts an RGBA color plus alpha transparency to hex\n// Assumes r, g, b are contained in the set [0, 255] and\n// a in [0, 1]. Returns a 4 or 8 character rgba hex\nexport function rgbaToHex(\n  r: number,\n  g: number,\n  b: number,\n  a: number,\n  allow4Char?: boolean,\n): string {\n  var hex = [\n    pad2(mathRound(r).toString(16)),\n    pad2(mathRound(g).toString(16)),\n    pad2(mathRound(b).toString(16)),\n    pad2(convertDecimalToHex(a)),\n  ];\n\n  // Return a 4 character hex if possible\n  if (\n    allow4Char &&\n    hex[0].charAt(0) == hex[0].charAt(1) &&\n    hex[1].charAt(0) == hex[1].charAt(1) &&\n    hex[2].charAt(0) == hex[2].charAt(1) &&\n    hex[3].charAt(0) == hex[3].charAt(1)\n  ) {\n    return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);\n  }\n\n  return hex.join('');\n}\n\n// Force a hex value to have 2 characters\nexport function pad2(c): string {\n  return c.length == 1 ? '0' + c : '' + c;\n}\n\n// Converts a decimal to a hex value\nexport function convertDecimalToHex(d) {\n  return Math.round(parseFloat(d) * 255).toString(16);\n}\n\n// Converts a hex value to a decimal\nfunction convertHexToDecimal(h) {\n  return parseIntFromHex(h) / 255;\n}\n\n// Parse a base-16 hex value into a base-10 integer\nfunction parseIntFromHex(val) {\n  return parseInt(val, 16);\n}\n\n// `rgbToHex`\n// Converts an RGB color to hex\n// Assumes r, g, and b are contained in the set [0, 255]\n// Returns a 3 or 6 character hex\nexport function rgbToHex(r: number, g: number, b: number, allow3Char?: boolean) {\n  var hex = [\n    pad2(mathRound(r).toString(16)),\n    pad2(mathRound(g).toString(16)),\n    pad2(mathRound(b).toString(16)),\n  ];\n\n  // Return a 3 character hex if possible\n  if (\n    allow3Char &&\n    hex[0].charAt(0) == hex[0].charAt(1) &&\n    hex[1].charAt(0) == hex[1].charAt(1) &&\n    hex[2].charAt(0) == hex[2].charAt(1)\n  ) {\n    return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);\n  }\n\n  return hex.join('');\n}\n\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening parent\nconst CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\nconst CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\nconst CSS_UNIT = '(?:' + CSS_NUMBER + ')|(?:' + CSS_INTEGER + ')';\nconst PERMISSIVE_MATCH3 =\n  '[\\\\s|\\\\(]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')[,|\\\\s]+(' + CSS_UNIT + ')\\\\s*\\\\)?';\nconst PERMISSIVE_MATCH4 =\n  '[\\\\s|\\\\(]+(' +\n  CSS_UNIT +\n  ')[,|\\\\s]+(' +\n  CSS_UNIT +\n  ')[,|\\\\s]+(' +\n  CSS_UNIT +\n  ')[,|\\\\s]+(' +\n  CSS_UNIT +\n  ')\\\\s*\\\\)?';\n\nexport const matchers = {\n  CSS_UNIT: new RegExp(CSS_UNIT),\n  rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n  rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n  hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n  hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n  hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n  hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n  hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n  hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n  hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n  hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n\n// `stringInputToObject`\n// Permissive string parsing.  Take in a number of formats, and output an object\n// based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\nexport function stringInputToObject(color: string): {\n  r: number;\n  g: number;\n  b: number;\n  a: number;\n} {\n  color = color.replace(trimLeft, '').replace(trimRight, '').toLowerCase();\n\n  // Try to match string input using regular expressions.\n  // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n  // Just return an object and let the conversion functions handle that.\n  // This way the result will be the same whether the tinycolor is initialized with string or object.\n  let match;\n  let obj;\n  if ((match = matchers.rgb.exec(color))) {\n    return { r: match[1], g: match[2], b: match[3], a: 1 };\n  }\n  if ((match = matchers.rgba.exec(color))) {\n    return { r: match[1], g: match[2], b: match[3], a: match[4] };\n  }\n\n  if ((match = matchers.hex8.exec(color))) {\n    return {\n      r: parseIntFromHex(match[1]),\n      g: parseIntFromHex(match[2]),\n      b: parseIntFromHex(match[3]),\n      a: convertHexToDecimal(match[4]),\n    };\n  }\n  if ((match = matchers.hex6.exec(color))) {\n    return {\n      r: parseIntFromHex(match[1]),\n      g: parseIntFromHex(match[2]),\n      b: parseIntFromHex(match[3]),\n      a: 1,\n    };\n  }\n  if ((match = matchers.hex4.exec(color))) {\n    return {\n      r: parseIntFromHex(match[1] + '' + match[1]),\n      g: parseIntFromHex(match[2] + '' + match[2]),\n      b: parseIntFromHex(match[3] + '' + match[3]),\n      a: convertHexToDecimal(match[4] + '' + match[4]),\n    };\n  }\n  if ((match = matchers.hex3.exec(color))) {\n    return {\n      r: parseIntFromHex(match[1] + '' + match[1]),\n      g: parseIntFromHex(match[2] + '' + match[2]),\n      b: parseIntFromHex(match[3] + '' + match[3]),\n      a: 1,\n    };\n  }\n\n  return null;\n}\n\nexport function createMissingDateImplError(provider: string) {\n  return Error(\n    `NgxMatColorPicker: No provider found for ${provider}. You must define MAT_COLOR_FORMATS in your module`,\n  );\n}\n","import { MAX_RGB, rgbaToHex, rgbToHex } from '../helpers';\nimport { ColorInputFormat } from './color-input-format';\n\nexport class Color {\n  public r: number;\n  public g: number;\n  public b: number;\n  public a: number;\n  public roundA: number;\n\n  public hex: string;\n  public rgba: string;\n\n  constructor(_r: number, _g: number, _b: number, _a?: number) {\n    this.r = _r > MAX_RGB ? MAX_RGB : _r;\n    this.g = _g > MAX_RGB ? MAX_RGB : _g;\n    this.b = _b > MAX_RGB ? MAX_RGB : _b;\n    if (_a != null) {\n      this.a = _a > 1 ? 1 : _a;\n    } else {\n      this.a = 1;\n    }\n    this.roundA = Math.round(this.a);\n    this.hex = rgbToHex(this.r, this.g, this.b);\n    this.rgba = this.toRgba();\n  }\n\n  public toHex(allow3Char?: boolean): string {\n    return rgbToHex(this.r, this.g, this.b, allow3Char);\n  }\n\n  public toRgba(): string {\n    return `rgba(${this.r},${this.g},${this.b},${this.a})`;\n  }\n\n  public toHexString(allow3Char?: boolean): string {\n    return '#' + this.toHex(allow3Char);\n  }\n\n  public toRgbString(): string {\n    return this.a === 1\n      ? 'rgb(' + Math.round(this.r) + ', ' + Math.round(this.g) + ', ' + Math.round(this.b) + ')'\n      : 'rgba(' +\n          Math.round(this.r) +\n          ', ' +\n          Math.round(this.g) +\n          ', ' +\n          Math.round(this.b) +\n          ', ' +\n          this.roundA +\n          ')';\n  }\n\n  public toHex8(allow4Char): string {\n    return rgbaToHex(this.r, this.g, this.b, this.a, allow4Char);\n  }\n\n  public toHex8String(allow4Char?: boolean): string {\n    return '#' + this.toHex8(allow4Char);\n  }\n\n  public toString(format: ColorInputFormat): string {\n    let formatSet = !!format;\n\n    let formattedString;\n    let hasAlpha = this.a < 1 && this.a >= 0;\n    let needsAlphaFormat =\n      !formatSet &&\n      hasAlpha &&\n      (format === 'hex' ||\n        format === 'hex6' ||\n        format === 'hex3' ||\n        format === 'hex4' ||\n        format === 'hex8');\n\n    if (needsAlphaFormat) {\n      return this.toRgbString();\n    }\n    if (format === 'rgb') {\n      formattedString = this.toRgbString();\n    }\n    if (format === 'hex' || format === 'hex6') {\n      formattedString = this.toHexString();\n    }\n    if (format === 'hex3') {\n      formattedString = this.toHexString(true);\n    }\n    if (format === 'hex4') {\n      formattedString = this.toHex8String(true);\n    }\n    if (format === 'hex8') {\n      formattedString = this.toHex8String();\n    }\n\n    return formattedString || this.toHexString();\n  }\n}\n","import {\n  AfterViewInit,\n  Directive,\n  Input,\n  input,\n  NgZone,\n  OnDestroy,\n  output,\n  signal,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Subject } from 'rxjs';\nimport { Color } from '../../models';\n\n@Directive()\nexport abstract class NgxMatBaseColorCanvas implements OnDestroy, AfterViewInit {\n  readonly colorChanged = output<Color>();\n  readonly theme = input<ThemePalette>();\n  readonly color = signal<Color>(null);\n\n  @Input({\n    alias: 'color',\n  })\n  set setColor(color: Color) {\n    this.color.set(color);\n  }\n\n  canvas: HTMLCanvasElement;\n\n  elementId: string;\n\n  ctx: CanvasRenderingContext2D;\n  width: number;\n  height: number;\n\n  x: number = 0;\n  y: number = 0;\n\n  drag = false;\n\n  protected _destroyed: Subject<void> = new Subject<void>();\n\n  constructor(\n    protected zone: NgZone,\n    elementId: string,\n  ) {\n    this.elementId = elementId;\n  }\n\n  ngOnDestroy(): void {\n    this._destroyed.next();\n    this._destroyed.complete();\n  }\n\n  ngAfterViewInit(): void {\n    this.canvas = <HTMLCanvasElement>document.getElementById(this.elementId);\n    this.ctx = this.canvas.getContext('2d');\n    this.width = this.canvas.width;\n    this.height = this.canvas.height;\n    this.draw();\n  }\n\n  protected draw() {\n    this.ctx.clearRect(0, 0, this.width, this.height);\n    this.ctx.rect(0, 0, this.width, this.height);\n    this.fillGradient();\n    if (this.y != 0) {\n      this.redrawIndicator(this.x, this.y);\n    }\n  }\n\n  public onMousedown(e: MouseEvent) {\n    this.drag = true;\n    this.changeColor(e);\n\n    this.zone.runOutsideAngular(() => {\n      this.canvas.addEventListener('mousemove', this.onMousemove.bind(this));\n    });\n  }\n\n  public onMousemove(e: MouseEvent) {\n    if (this.drag) {\n      this.zone.run(() => {\n        this.changeColor(e);\n      });\n    }\n  }\n\n  public onMouseup(e: MouseEvent) {\n    this.drag = false;\n    this.canvas.removeEventListener('mousemove', this.onMousemove);\n  }\n\n  public emitChange(color: Color) {\n    this.colorChanged.emit(color);\n  }\n\n  abstract changeColor(e: MouseEvent): void;\n  abstract fillGradient(): void;\n  abstract redrawIndicator(x: number, y: number): void;\n}\n","import { Component, NgZone } from '@angular/core';\nimport { getColorAtPosition } from '../../../helpers';\nimport { Color } from '../../../models';\nimport { NgxMatBaseColorCanvas } from '../base-color-canvas';\n\n@Component({\n  selector: 'ngx-mat-color-slider',\n  templateUrl: './color-slider.component.html',\n  styleUrls: ['./color-slider.component.scss'],\n})\nexport class NgxMatColorSliderComponent extends NgxMatBaseColorCanvas {\n  constructor(protected zone: NgZone) {\n    super(zone, 'color-strip');\n  }\n\n  ngAfterViewInit(): void {\n    super.ngAfterViewInit();\n  }\n\n  public fillGradient() {\n    const grd = this.ctx.createLinearGradient(0, 0, 0, this.height);\n    grd.addColorStop(0, 'rgba(255, 0, 0, 1)');\n    grd.addColorStop(0.17, 'rgba(255, 255, 0, 1)');\n    grd.addColorStop(0.34, 'rgba(0, 255, 0, 1)');\n    grd.addColorStop(0.51, 'rgba(0, 255, 255, 1)');\n    grd.addColorStop(0.68, 'rgba(0, 0, 255, 1)');\n    grd.addColorStop(0.85, 'rgba(255, 0, 255, 1)');\n    grd.addColorStop(1, 'rgba(255, 0, 0, 1)');\n\n    this.ctx.fillStyle = grd;\n    this.ctx.fill();\n  }\n\n  public redrawIndicator(x: number, y: number) {\n    this.ctx.beginPath();\n    this.ctx.strokeStyle = 'white';\n    this.ctx.lineWidth = 2;\n    this.ctx.arc(7.5, y, 7.5, 0, 2 * Math.PI, false);\n    this.ctx.stroke();\n    this.ctx.closePath();\n  }\n\n  public changeColor(e: MouseEvent) {\n    this.x = e.offsetX;\n    this.y = e.offsetY;\n    this.draw();\n    const { r, g, b } = getColorAtPosition(this.ctx, e.offsetX, e.offsetY);\n    this.emitChange(new Color(r, g, b));\n  }\n}\n","<canvas\n  id=\"color-strip\"\n  class=\"zone-strip\"\n  (mousedown)=\"onMousedown($event)\"\n  (mouseup)=\"onMouseup($event)\"\n  width=\"15\"\n  height=\"234\"\n></canvas>\n","import {\n  AfterViewInit,\n  Component,\n  NgZone,\n  OnChanges,\n  OnDestroy,\n  OnInit,\n  SimpleChanges,\n  ViewEncapsulation,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  FormControl,\n  FormGroup,\n  ReactiveFormsModule,\n  Validators,\n} from '@angular/forms';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { merge } from 'rxjs';\nimport { debounceTime, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { getColorAtPosition, matchers, stringInputToObject } from '../../helpers';\nimport { Color } from '../../models';\nimport { NgxMatBaseColorCanvas } from './base-color-canvas';\nimport { NgxMatColorSliderComponent } from './color-slider/color-slider.component';\n\nconst RADIUS_NOB = 5;\n\n@Component({\n  selector: 'ngx-mat-color-canvas',\n  templateUrl: './color-canvas.component.html',\n  styleUrls: ['./color-canvas.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'ngx-mat-color-canvas',\n  },\n  imports: [MatFormFieldModule, MatInputModule, NgxMatColorSliderComponent, ReactiveFormsModule],\n})\nexport class NgxMatColorCanvasComponent\n  extends NgxMatBaseColorCanvas\n  implements OnInit, AfterViewInit, OnChanges, OnDestroy\n{\n  private _baseColor: Color;\n\n  get rCtrl(): AbstractControl {\n    return this.formGroup.get('r');\n  }\n\n  get gCtrl(): AbstractControl {\n    return this.formGroup.get('g');\n  }\n\n  get bCtrl(): AbstractControl {\n    return this.formGroup.get('b');\n  }\n\n  get aCtrl(): AbstractControl {\n    return this.formGroup.get('a');\n  }\n\n  get hexCtrl(): AbstractControl {\n    return this.formGroup.get('hex');\n  }\n\n  _resetBaseColor = true;\n\n  formGroup: FormGroup;\n\n  rgba: string;\n\n  constructor(protected zone: NgZone) {\n    super(zone, 'color-block');\n    this.formGroup = new FormGroup({\n      r: new FormControl(null, [Validators.required]),\n      g: new FormControl(null, [Validators.required]),\n      b: new FormControl(null, [Validators.required]),\n      a: new FormControl(null, [Validators.required]),\n      hex: new FormControl(null, [Validators.required, Validators.pattern(matchers.hex6)]),\n    });\n  }\n\n  ngOnInit() {\n    const rgbaCtrl$ = merge(\n      this.rCtrl.valueChanges,\n      this.gCtrl.valueChanges,\n      this.bCtrl.valueChanges,\n      this.aCtrl.valueChanges,\n    );\n    rgbaCtrl$.pipe(takeUntil(this._destroyed), debounceTime(400)).subscribe((_) => {\n      const color = new Color(\n        Number(this.rCtrl.value),\n        Number(this.gCtrl.value),\n        Number(this.bCtrl.value),\n        Number(this.aCtrl.value),\n      );\n      this.emitChange(color);\n    });\n\n    const hexCtrl$ = this.hexCtrl.valueChanges;\n    hexCtrl$\n      .pipe(takeUntil(this._destroyed), debounceTime(400), distinctUntilChanged())\n      .subscribe((hex) => {\n        const obj = stringInputToObject(hex);\n        if (obj != null) {\n          const color = new Color(obj.r, obj.g, obj.b, obj.a);\n          this.emitChange(color);\n        }\n      });\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    if (changes.color && changes.color.currentValue) {\n      this.updateForm(changes.color.currentValue);\n      if (this._resetBaseColor) {\n        this._baseColor = changes.color.currentValue;\n      }\n\n      this._resetBaseColor = true;\n\n      if (!changes.color.firstChange) {\n        this.draw();\n      }\n    }\n  }\n\n  private updateForm(val: Color): void {\n    const config = { emitEvent: false };\n    this.rCtrl.setValue(val.r, config);\n    this.gCtrl.setValue(val.g, config);\n    this.bCtrl.setValue(val.b, config);\n    this.aCtrl.setValue(val.a, config);\n    this.hexCtrl.setValue(val.hex, config);\n  }\n\n  public redrawIndicator(x: number, y: number) {\n    this.ctx.beginPath();\n    this.ctx.strokeStyle = 'white';\n    this.ctx.arc(x, y, RADIUS_NOB, 0, 2 * Math.PI, false);\n    this.ctx.stroke();\n    this.ctx.closePath();\n  }\n\n  public fillGradient() {\n    this.ctx.fillStyle = this._baseColor ? this._baseColor.rgba : 'rgba(255,255,255,1)';\n    this.ctx.fillRect(0, 0, this.width, this.height);\n\n    const grdWhite = this.ctx.createLinearGradient(0, 0, this.width, 0);\n    grdWhite.addColorStop(0, 'rgba(255,255,255,1)');\n    grdWhite.addColorStop(1, 'rgba(255,255,255,0)');\n    this.ctx.fillStyle = grdWhite;\n    this.ctx.fillRect(0, 0, this.width, this.height);\n\n    const grdBlack = this.ctx.createLinearGradient(0, 0, 0, this.height);\n    grdBlack.addColorStop(0, 'rgba(0,0,0,0)');\n    grdBlack.addColorStop(1, 'rgba(0,0,0,1)');\n    this.ctx.fillStyle = grdBlack;\n    this.ctx.fillRect(0, 0, this.width, this.height);\n  }\n\n  public onSliderColorChanged(c: Color) {\n    this._baseColor = c;\n    this.color.set(c);\n    this.fillGradient();\n    this.emitChange(c);\n  }\n\n  public changeColor(e: MouseEvent): void {\n    this.x = e.offsetX;\n    this.y = e.offsetY;\n    this._resetBaseColor = false;\n    this.draw();\n    const { r, g, b } = getColorAtPosition(this.ctx, e.offsetX, e.offsetY);\n    this.emitChange(new Color(r, g, b));\n  }\n}\n","<form [formGroup]=\"formGroup\">\n  <div class=\"color-canvas-row\">\n    <div class=\"zone-canvas\">\n      <canvas\n        id=\"color-block\"\n        class=\"zone-block\"\n        (mousedown)=\"onMousedown($event)\"\n        (mouseup)=\"onMouseup($event)\"\n        width=\"200\"\n        height=\"235\"\n      ></canvas>\n      <ngx-mat-color-slider (colorChanged)=\"onSliderColorChanged($event)\" />\n    </div>\n\n    <div class=\"zone-inputs\">\n      <mat-form-field [color]=\"theme\">\n        <mat-label>R</mat-label>\n        <input\n          matInput\n          formControlName=\"r\"\n          ngxMatNumericColorInput\n          autocomplete=\"off\"\n        />\n      </mat-form-field>\n\n      <mat-form-field [color]=\"theme\">\n        <mat-label>G</mat-label>\n        <input\n          matInput\n          formControlName=\"g\"\n          ngxMatNumericColorInput\n          autocomplete=\"off\"\n        />\n      </mat-form-field>\n\n      <mat-form-field [color]=\"theme\">\n        <mat-label>B</mat-label>\n        <input\n          matInput\n          formControlName=\"b\"\n          ngxMatNumericColorInput\n          autocomplete=\"off\"\n        />\n      </mat-form-field>\n    </div>\n  </div>\n\n  <div class=\"color-canvas-row\">\n    <button\n      mat-mini-fab\n      [style.background-color]=\"color()?.rgba || 'transparent'\"\n      class=\"preview\"\n    ></button>\n    <mat-form-field [color]=\"theme\">\n      <mat-label>HEX6</mat-label>\n      <mat-label matPrefix class=\"symbol\">#&nbsp;</mat-label>\n      <input matInput formControlName=\"hex\" autocomplete=\"off\" />\n    </mat-form-field>\n    <mat-form-field class=\"input-opacity\" [color]=\"theme\">\n      <mat-label>A</mat-label>\n      <input\n        matInput\n        formControlName=\"a\"\n        type=\"number\"\n        min=\"0\"\n        max=\"1\"\n        step=\"0.1\"\n        autocomplete=\"off\"\n      />\n    </mat-form-field>\n  </div>\n</form>\n","import { NgClass } from '@angular/common';\nimport { Component, Input, output, signal, ViewEncapsulation } from '@angular/core';\nimport { MatButtonModule } from '@angular/material/button';\nimport { BASIC_COLORS, stringInputToObject } from '../../helpers';\nimport { Color } from '../../models';\n\n@Component({\n  selector: 'ngx-mat-color-collection',\n  templateUrl: './color-collection.component.html',\n  styleUrls: ['./color-collection.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'ngx-mat-color-collection',\n  },\n  imports: [MatButtonModule, NgClass],\n})\nexport class NgxMatColorCollectionComponent {\n  readonly colorChanged = output<Color>();\n\n  @Input()\n  set color(c: Color) {\n    if (c) {\n      this.selectedColor.set(c.toHexString());\n    }\n  }\n\n  readonly selectedColor = signal<string>('');\n\n  colors1: string[] = BASIC_COLORS.slice(0, 8);\n  colors2: string[] = BASIC_COLORS.slice(8, 16);\n\n  select(hex: string) {\n    this.selectedColor.set(hex);\n    const { r, g, b, a } = stringInputToObject(hex);\n    this.colorChanged.emit(new Color(r, g, b, a));\n  }\n}\n","<div class=\"color-collection-row\">\n  @for (c of colors1; track c) {\n    <button\n      mat-mini-fab\n      [style.background-color]=\"c\"\n      class=\"btn-color\"\n      (click)=\"select(c)\"\n      [ngClass]=\"{ active: selectedColor() === c }\"\n      [disableRipple]=\"true\"></button>\n  }\n</div>\n<div class=\"color-collection-row\">\n  @for (c of colors2; track c) {\n    <button\n      mat-mini-fab\n      [style.background-color]=\"c\"\n      class=\"btn-color\"\n      (click)=\"select(c)\"\n      [ngClass]=\"{ active: selectedColor() === c }\"\n      [disableRipple]=\"true\"></button>\n  }\n</div>\n","import { Component, ViewEncapsulation, input, output } from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { Color } from '../../models';\nimport { NgxMatColorCanvasComponent } from '../color-canvas/color-canvas.component';\nimport { NgxMatColorCollectionComponent } from '../color-collection/color-collection.component';\n\n@Component({\n  selector: 'ngx-mat-color-palette',\n  templateUrl: 'color-palette.component.html',\n  styleUrls: ['color-palette.component.scss'],\n  encapsulation: ViewEncapsulation.None,\n  host: {\n    class: 'ngx-mat-color-palette',\n  },\n  imports: [NgxMatColorCollectionComponent, NgxMatColorCanvasComponent],\n})\nexport class NgxMatColorPaletteComponent {\n  readonly colorChanged = output<Color>();\n\n  readonly color = input<Color>();\n  readonly theme = input<ThemePalette>();\n\n  public handleColorChanged(color: Color) {\n    this.colorChanged.emit(color);\n  }\n}\n","<ngx-mat-color-canvas\n  (colorChanged)=\"handleColorChanged($event)\"\n  [color]=\"color()\"\n  [theme]=\"theme()\"\n/>\n\n<ngx-mat-color-collection\n  (colorChanged)=\"handleColorChanged($event)\"\n  [color]=\"color()\"\n/>\n","import { Injectable } from '@angular/core';\nimport { stringInputToObject } from '../helpers';\nimport { Color, ColorInputFormat } from '../models';\n\n@Injectable()\nexport class ColorAdapter {\n  sameColor(a: Color, b: Color) {\n    if (a == null && b == null) return true;\n    if (a != null && b != null) return a.rgba === b.rgba;\n    return false;\n  }\n\n  format(c: Color, format: ColorInputFormat): string {\n    return c.toString(format);\n  }\n\n  parse(value: string): Color | null {\n    const obj = stringInputToObject(value);\n    if (obj) {\n      return new Color(obj.r, obj.g, obj.b, obj.a);\n    }\n    return null;\n  }\n}\n","import { InjectionToken } from '@angular/core';\nimport { ColorInputFormat } from '../models';\n\nexport type MatColorFormats = {\n  display: {\n    colorInput: ColorInputFormat;\n  };\n};\n\nexport const NGX_MAT_COLOR_FORMATS: MatColorFormats = {\n  display: {\n    colorInput: 'hex',\n  },\n};\n\nexport const MAT_COLOR_FORMATS = new InjectionToken<MatColorFormats>('mat-color-formats');\n","import { Directionality } from '@angular/cdk/bidi';\nimport { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { ESCAPE, UP_ARROW } from '@angular/cdk/keycodes';\nimport {\n  Overlay,\n  OverlayConfig,\n  OverlayRef,\n  PositionStrategy,\n  ScrollStrategy,\n} from '@angular/cdk/overlay';\nimport { ComponentPortal } from '@angular/cdk/portal';\nimport { DOCUMENT } from '@angular/common';\nimport {\n  ChangeDetectionStrategy,\n  Component,\n  ComponentRef,\n  EventEmitter,\n  HostBinding,\n  Inject,\n  InjectionToken,\n  Input,\n  NgZone,\n  OnDestroy,\n  Optional,\n  Output,\n  ViewContainerRef,\n  ViewEncapsulation,\n  viewChild,\n} from '@angular/core';\nimport { ThemePalette } from '@angular/material/core';\nimport { matDatepickerAnimations } from '@angular/material/datepicker';\nimport { MatDialog, MatDialogRef } from '@angular/material/dialog';\nimport { Subject, Subscription, merge } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { Color } from '../../models';\nimport { ColorAdapter } from '../../services';\nimport { NgxMatColorPaletteComponent } from '../color-palette/color-palette.component';\nimport { NgxMatColorPickerInput } from './color-input.component';\n\n/** Injection token that determines the scroll handling while the calendar is open. */\nexport const NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY = new InjectionToken<() => ScrollStrategy>(\n  'ngx-mat-colorpicker-scroll-strategy',\n);\n\nexport function NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY(\n  overlay: Overlay,\n): () => ScrollStrategy {\n  return () => overlay.scrollStrategies.reposition();\n}\n\nexport const NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER = {\n  provide: NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY,\n  deps: [Overlay],\n  useFactory: NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY,\n};\n\n@Component({\n  selector: 'ngx-mat-color-picker-content',\n  templateUrl: './color-picker-content.component.html',\n  styleUrls: ['color-picker-content.component.scss'],\n  host: {\n    class: 'ngx-mat-colorpicker-content',\n    '[@transformPanel]': '\"enter\"',\n    '[class.ngx-mat-colorpicker-content-touch]': 'picker.touchUi',\n  },\n  animations: [matDatepickerAnimations.transformPanel, matDatepickerAnimations.fadeInCalendar],\n  exportAs: 'ngxMatColorPickerContent',\n  encapsulation: ViewEncapsulation.None,\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  inputs: ['color'],\n  imports: [NgxMatColorPaletteComponent],\n})\nexport class NgxMatColorPickerContentComponent {\n  /** Reference to the internal calendar component. */\n  _palette = viewChild(NgxMatColorPaletteComponent);\n\n  picker: NgxMatColorPickerComponent;\n  _isAbove: boolean;\n  color: ThemePalette;\n\n  constructor() {}\n}\n\n@Component({\n  selector: 'ngx-mat-color-picker',\n  template: '',\n  exportAs: 'ngxMatColorPicker',\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  encapsulation: ViewEncapsulation.None,\n  providers: [ColorAdapter, NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY_FACTORY_PROVIDER],\n})\nexport class NgxMatColorPickerComponent implements OnDestroy {\n  private _scrollStrategy: () => ScrollStrategy;\n\n  /** Emits when the datepicker has been opened. */\n  @Output('opened') openedStream: EventEmitter<void> = new EventEmitter<void>();\n\n  /** Emits when the datepicker has been closed. */\n  @Output('closed') closedStream: EventEmitter<void> = new EventEmitter<void>();\n\n  @Input() get disabled() {\n    return this._disabled === undefined && this._pickerInput\n      ? this._pickerInput.disabled\n      : !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    const newValue = coerceBooleanProperty(value);\n\n    if (newValue !== this._disabled) {\n      this._disabled = newValue;\n      this._disabledChange.next(newValue);\n    }\n  }\n  private _disabled: boolean;\n\n  @Input()\n  get touchUi(): boolean {\n    return this._touchUi;\n  }\n  set touchUi(value: boolean) {\n    this._touchUi = coerceBooleanProperty(value);\n  }\n  private _touchUi = false;\n\n  /** Whether the calendar is open. */\n  @Input()\n  get opened(): boolean {\n    return this._opened;\n  }\n  set opened(value: boolean) {\n    value ? this.open() : this.close();\n  }\n  private _opened = false;\n\n  /** Default Color palette to use on the datepicker's calendar. */\n  @Input()\n  get defaultColor(): ThemePalette {\n    return this._defaultColor;\n  }\n  set defaultColor(value: ThemePalette) {\n    this._defaultColor = value;\n  }\n  _defaultColor: ThemePalette = 'primary';\n\n  /** Color palette to use on the datepicker's calendar. */\n  @Input()\n  get color(): ThemePalette {\n    return this._color || (this._pickerInput ? this._pickerInput.getThemePalette() : undefined);\n  }\n  set color(value: ThemePalette) {\n    this._color = value;\n  }\n  _color: ThemePalette;\n\n  @HostBinding('class.mat-primary') get isPrimary() {\n    return this.color === 'primary';\n  }\n  @HostBinding('class.mat-accent') get isAccent() {\n    return this.color === 'accent';\n  }\n  @HostBinding('class.mat-warn') get isWarn() {\n    return this.color === 'warn';\n  }\n\n  /** The currently selected date. */\n  get _selected(): Color {\n    return this._validSelected;\n  }\n  set _selected(value: Color) {\n    this._validSelected = value;\n  }\n  private _validSelected: Color = null;\n\n  _pickerInput: NgxMatColorPickerInput;\n  /** A reference to the overlay when the picker is opened as a popup. */\n  _popupRef: OverlayRef;\n\n  /** A reference to the dialog when the picker is opened as a dialog. */\n  private _dialogRef: MatDialogRef<NgxMatColorPickerContentComponent> | null;\n  /** Reference to the component instantiated in popup mode. */\n  private _popupComponentRef: ComponentRef<NgxMatColorPickerContentComponent> | null;\n  /** A portal containing the content for this picker. */\n  private _portal: ComponentPortal<NgxMatColorPickerContentComponent>;\n\n  /** Emits when the datepicker is disabled. */\n  readonly _disabledChange = new EventEmitter<boolean>();\n\n  /** The element that was focused before the datepicker was opened. */\n  private _focusedElementBeforeOpen: HTMLElement | null = null;\n\n  /** Subscription to value changes in the associated input element. */\n  private _inputSubscription = Subscription.EMPTY;\n\n  /** Emits new selected date when selected date changes. */\n  readonly _selectedChanged = new Subject<Color>();\n\n  constructor(\n    private _dialog: MatDialog,\n    private _overlay: Overlay,\n    private _zone: NgZone,\n    private _adapter: ColorAdapter,\n    @Optional() private _dir: Directionality,\n    @Inject(NGX_MAT_COLOR_PICKER_SCROLL_STRATEGY) scrollStrategy: any,\n    @Optional() @Inject(DOCUMENT) private _document: any,\n    private _viewContainerRef: ViewContainerRef,\n  ) {\n    this._scrollStrategy = scrollStrategy;\n  }\n\n  ngOnDestroy() {\n    this.close();\n    this._inputSubscription.unsubscribe();\n    this._disabledChange.complete();\n\n    if (this._popupRef) {\n      this._popupRef.dispose();\n      this._popupComponentRef = null;\n    }\n  }\n\n  /** Selects the given date */\n  select(nextVal: Color): void {\n    let oldValue = this._selected;\n    this._selected = nextVal;\n    if (!this._adapter.sameColor(oldValue, this._selected)) {\n      this._selectedChanged.next(nextVal);\n    }\n  }\n\n  /**\n   * Register an input with this datepicker.\n   * @param input The datepicker input to register with this datepicker.\n   */\n  registerInput(input: NgxMatColorPickerInput): void {\n    if (this._pickerInput) {\n      throw Error('A ColorPicker can only be associated with a single input.');\n    }\n    this._pickerInput = input;\n    this._inputSubscription = this._pickerInput._valueChange.subscribe(\n      (value: Color) => (this._selected = value),\n    );\n  }\n\n  public open(): void {\n    if (this._opened || this.disabled) {\n      return;\n    }\n    if (!this._pickerInput) {\n      throw Error('Attempted to open an ColorPicker with no associated input.');\n    }\n\n    if (this._document) {\n      this._focusedElementBeforeOpen = this._document.activeElement;\n    }\n\n    this.touchUi ? this._openAsDialog() : this._openAsPopup();\n    this._opened = true;\n    this.openedStream.emit();\n  }\n\n  /** Open the calendar as a dialog. */\n  private _openAsDialog(): void {\n    if (this._dialogRef) {\n      this._dialogRef.close();\n    }\n\n    this._dialogRef = this._dialog.open<NgxMatColorPickerContentComponent>(\n      NgxMatColorPickerContentComponent,\n      {\n        direction: this._dir ? this._dir.value : 'ltr',\n        viewContainerRef: this._viewContainerRef,\n        panelClass: 'ngx-mat-colorpicker-dialog',\n      },\n    );\n\n    this._dialogRef.afterClosed().subscribe(() => this.close());\n    this._dialogRef.componentInstance.picker = this;\n    this._setColor();\n  }\n\n  /** Open the calendar as a popup. */\n  private _openAsPopup(): void {\n    if (!this._portal) {\n      this._portal = new ComponentPortal<NgxMatColorPickerContentComponent>(\n        NgxMatColorPickerContentComponent,\n        this._viewContainerRef,\n      );\n    }\n\n    if (!this._popupRef) {\n      this._createPopup();\n    }\n\n    if (!this._popupRef.hasAttached()) {\n      this._popupComponentRef = this._popupRef.attach(this._portal);\n      this._popupComponentRef.instance.picker = this;\n      this._setColor();\n\n      // Update the position once the calendar has rendered.\n      this._zone.onStable\n        .asObservable()\n        .pipe(take(1))\n        .subscribe(() => {\n          this._popupRef.updatePosition();\n        });\n    }\n  }\n\n  /** Create the popup. */\n  private _createPopup(): void {\n    const overlayConfig = new OverlayConfig({\n      positionStrategy: this._createPopupPositionStrategy(),\n      hasBackdrop: true,\n      backdropClass: 'mat-overlay-transparent-backdrop',\n      direction: this._dir,\n      scrollStrategy: this._scrollStrategy(),\n      panelClass: 'mat-colorpicker-popup',\n    });\n\n    this._popupRef = this._overlay.create(overlayConfig);\n    this._popupRef.overlayElement.setAttribute('role', 'dialog');\n\n    merge(\n      this._popupRef.backdropClick(),\n      this._popupRef.detachments(),\n      this._popupRef.keydownEvents().pipe(\n        filter((event) => {\n          // Closing on alt + up is only valid when there's an input associated with the datepicker.\n          return (\n            event.keyCode === ESCAPE ||\n            (this._pickerInput && event.altKey && event.keyCode === UP_ARROW)\n          );\n        }),\n      ),\n    ).subscribe((event) => {\n      if (event) {\n        event.preventDefault();\n      }\n\n      this.close();\n    });\n  }\n\n  close(): void {\n    if (!this._opened) {\n      return;\n    }\n    if (this._popupRef && this._popupRef.hasAttached()) {\n      this._popupRef.detach();\n    }\n    if (this._dialogRef) {\n      this._dialogRef.close();\n      this._dialogRef = null;\n    }\n    if (this._portal && this._portal.isAttached) {\n      this._portal.detach();\n    }\n\n    const completeClose = () => {\n      // The `_opened` could've been reset already if\n      // we got two events in quick succession.\n      if (this._opened) {\n        this._opened = false;\n        this.closedStream.emit();\n        this._focusedElementBeforeOpen = null;\n      }\n    };\n\n    if (\n      this._focusedElementBeforeOpen &&\n      typeof this._focusedElementBeforeOpen.focus === 'function'\n    ) {\n      // Because IE moves focus asynchronously, we can't count on it being restored before we've\n      // marked the datepicker as closed. If the event fires out of sequence and the element that\n      // we're refocusing opens the datepicker on focus, the user could be stuck with not being\n      // able to close the calendar at all. We work around it by making the logic, that marks\n      // the datepicker as closed, async as well.\n      this._focusedElementBeforeOpen.focus();\n      setTimeout(completeClose);\n    } else {\n      completeClose();\n    }\n  }\n\n  /** Passes the current theme color along to the calendar overlay. */\n  private _setColor(): void {\n    const color = this.color;\n    if (this._popupComponentRef) {\n      this._popupComponentRef.instance.color = color;\n    }\n    if (this._dialogRef) {\n      this._dialogRef.componentInstance.color = color;\n    }\n  }\n\n  /** Create the popup PositionStrategy. */\n  private _createPopupPositionStrategy(): PositionStrategy {\n    return this._overlay\n      .position()\n      .flexibleConnectedTo(this._pickerInput.getConnectedOverlayOrigin())\n      .withTransformOriginOn('.ngx-mat-colorpicker-content')\n      .withFlexibleDimensions(false)\n      .withViewportMargin(8)\n      .withLockedPosition()\n      .withPositions([\n        {\n          originX: 'start',\n          originY: 'bottom',\n          overlayX: 'start',\n          overlayY: 'top',\n        },\n        {\n          originX: 'start',\n          originY: 'top',\n          overlayX: 'start',\n          overlayY: 'bottom',\n        },\n        {\n          originX: 'end',\n          originY: 'bottom',\n          overlayX: 'end',\n          overlayY: 'top',\n        },\n        {\n          originX: 'end',\n          originY: 'top',\n          overlayX: 'end',\n          overlayY: 'bottom',\n        },\n      ]);\n  }\n}\n","<ngx-mat-color-palette\n  (colorChanged)=\"picker.select($event)\"\n  [color]=\"picker._selected\"\n  [theme]=\"color\"></ngx-mat-color-palette>\n","import { coerceBooleanProperty } from '@angular/cdk/coercion';\nimport { DOWN_ARROW } from '@angular/cdk/keycodes';\nimport {\n  Directive,\n  ElementRef,\n  EventEmitter,\n  forwardRef,\n  Inject,\n  Input,\n  OnDestroy,\n  OnInit,\n  Optional,\n  output,\n} from '@angular/core';\nimport {\n  AbstractControl,\n  ControlValueAccessor,\n  NG_VALIDATORS,\n  NG_VALUE_ACCESSOR,\n  ValidationErrors,\n  Validator,\n  ValidatorFn,\n  Validators,\n} from '@angular/forms';\nimport { ThemePalette } from '@angular/material/core';\nimport { MatFormField } from '@angular/material/form-field';\nimport { MAT_INPUT_VALUE_ACCESSOR } from '@angular/material/input';\nimport { Subscription } from 'rxjs';\nimport { createMissingDateImplError } from '../../helpers';\nimport { Color } from '../../models';\nimport { ColorAdapter, MAT_COLOR_FORMATS, MatColorFormats } from '../../services';\nimport { NgxMatColorPickerComponent } from './color-picker.component';\n\nexport class NgxMatColorPickerInputEvent {\n  /** The new value for the target colorpicker input. */\n  value: Color | null;\n\n  constructor(\n    /** Reference to the colorpicker input component that emitted the event. */\n    public target: NgxMatColorPickerInput,\n    /** Reference to the native input element associated with the colorpicker input. */\n    public targetElement: HTMLElement,\n  ) {\n    this.value = this.target.value;\n  }\n}\n\nexport const MAT_COLORPICKER_VALUE_ACCESSOR: any = {\n  provide: NG_VALUE_ACCESSOR,\n  useExisting: forwardRef(() => NgxMatColorPickerInput),\n  multi: true,\n};\n\nexport const MAT_COLORPICKER_VALIDATORS: any = {\n  provide: NG_VALIDATORS,\n  useExisting: forwardRef(() => NgxMatColorPickerInput),\n  multi: true,\n};\n\n@Directive({\n  selector: 'input[ngxMatColorPicker]',\n  providers: [\n    { provide: MAT_INPUT_VALUE_ACCESSOR, useExisting: NgxMatColorPickerInput },\n    ColorAdapter,\n    MAT_COLORPICKER_VALIDATORS,\n    MAT_COLORPICKER_VALUE_ACCESSOR,\n  ],\n  host: {\n    '[attr.aria-haspopup]': '_picker ? \"dialog\" : null',\n    '[attr.aria-owns]': '(_picker?.opened && _picker.id) || null',\n    '[disabled]': 'disabled',\n    '(input)': '_onInput($event.target.value)',\n    '(change)': '_onChange()',\n    '(blur)': '_onBlur()',\n    '(keydown)': '_onKeydown($event)',\n  },\n  exportAs: 'ngxMatColorPickerInput',\n})\nexport class NgxMatColorPickerInput implements ControlValueAccessor, OnInit, OnDestroy, Validator {\n  @Input()\n  set ngxMatColorPicker(value: NgxMatColorPickerComponent) {\n    if (!value) {\n      return;\n    }\n\n    this._picker = value;\n    this._picker.registerInput(this);\n    this._pickerSubscription.unsubscribe();\n\n    this._pickerSubscription = this._picker._selectedChanged.subscribe((selected: Color) => {\n      this.value = selected;\n      this._cvaOnChange(selected);\n      this._onTouched();\n      this.colorInput.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\n      this.colorChange.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\n    });\n  }\n  _picker: NgxMatColorPickerComponent;\n\n  /** Whether the colorpicker-input is disabled. */\n  @Input()\n  get disabled(): boolean {\n    return !!this._disabled;\n  }\n  set disabled(value: boolean) {\n    const newValue = coerceBooleanProperty(value);\n    const element = this._elementRef.nativeElement;\n\n    if (this._disabled !== newValue) {\n      this._disabled = newValue;\n      this._disabledChange.emit(newValue);\n    }\n\n    // We need to null check the `blur` method, because it's undefined during SSR.\n    if (newValue && element.blur) {\n      // Normally, native input elements automatically blur if they turn disabled. This behavior\n      // is problematic, because it would mean that it triggers another change detection cycle,\n      // which then causes a changed after checked error if the input element was focused before.\n      element.blur();\n    }\n  }\n  private _disabled: boolean;\n\n  /** The value of the input. */\n  @Input()\n  get value(): Color | null {\n    return this._value;\n  }\n  set value(value: Color | null) {\n    const oldValue = this.value;\n    this._value = value;\n    this._formatValue(value);\n\n    if (!this._adapter.sameColor(oldValue, value)) {\n      this._valueChange.emit(value);\n    }\n  }\n  private _value: Color | null;\n\n  /** Emits when a `change` event is fired on this `<input>`. */\n  readonly colorChange = output<NgxMatColorPickerInputEvent>();\n\n  /** Emits when an `input` event is fired on this `<input>`. */\n  readonly colorInput = output<NgxMatColorPickerInputEvent>();\n\n  /** Emits when the disabled state has changed */\n  _disabledChange = new EventEmitter<boolean>();\n\n  /** Emits when the value changes (either due to user input or programmatic change). */\n  _valueChange = new EventEmitter<Color>();\n\n  _onTouched = () => {};\n\n  private _cvaOnChange: (value: any) => void = () => {};\n\n  private _validatorOnChange = () => {};\n\n  private _pickerSubscription = Subscription.EMPTY;\n\n  /** The combined form control validator for this input. */\n  private _validator: ValidatorFn | null = Validators.compose([]);\n\n  /** Whether the last value set on the input was valid. */\n  private _lastValueValid = false;\n\n  constructor(\n    private _elementRef: ElementRef<HTMLInputElement>,\n    @Optional() private _formField: MatFormField,\n    @Optional()\n    @Inject(MAT_COLOR_FORMATS)\n    private _colorFormats: MatColorFormats,\n    private _adapter: ColorAdapter,\n  ) {\n    if (!this._colorFormats) {\n      throw createMissingDateImplError('MAT_COLOR_FORMATS');\n    }\n  }\n\n  /** Returns the palette used by the input's form field, if any. */\n  public getThemePalette(): ThemePalette {\n    return this._formField ? this._formField.color : undefined;\n  }\n\n  registerOnValidatorChange(fn: () => void): void {\n    this._validatorOnChange = fn;\n  }\n\n  validate(c: AbstractControl): ValidationErrors | null {\n    return this._validator ? this._validator(c) : null;\n  }\n\n  /**\n   * @deprecated\n   * @breaking-change 8.0.0 Use `getConnectedOverlayOrigin` instead\n   */\n  getPopupConnectionElementRef(): ElementRef {\n    return this.getConnectedOverlayOrigin();\n  }\n\n  /**\n   * Gets the element that the colorpicker popup should be connected to.\n   * @return The element to connect the popup to.\n   */\n  getConnectedOverlayOrigin(): ElementRef {\n    return this._formField ? this._formField.getConnectedOverlayOrigin() : this._elementRef;\n  }\n\n  ngOnInit() {}\n\n  ngOnDestroy(): void {\n    this._pickerSubscription.unsubscribe();\n    this._valueChange.complete();\n    this._disabledChange.complete();\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  writeValue(value: Color): void {\n    this.value = value;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnChange(fn: (value: any) => void): void {\n    this._cvaOnChange = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  registerOnTouched(fn: () => void): void {\n    this._onTouched = fn;\n  }\n\n  // Implemented as part of ControlValueAccessor.\n  setDisabledState(isDisabled: boolean): void {\n    this.disabled = isDisabled;\n  }\n\n  _onChange() {\n    this.colorChange.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\n  }\n\n  _onKeydown(event: KeyboardEvent) {\n    const isAltDownArrow = event.altKey && event.keyCode === DOWN_ARROW;\n\n    if (this._picker && isAltDownArrow && !this._elementRef.nativeElement.readOnly) {\n      this._picker.open();\n      event.preventDefault();\n    }\n  }\n\n  /** Handles blur events on the input. */\n  _onBlur() {\n    // Reformat the input only if we have a valid value.\n    if (this.value) {\n      this._formatValue(this.value);\n    }\n\n    this._onTouched();\n  }\n\n  /** Formats a value and sets it on the input element. */\n  private _formatValue(value: Color | null) {\n    this._elementRef.nativeElement.value = value\n      ? this._adapter.format(value, this._colorFormats.display.colorInput)\n      : '';\n  }\n\n  _onInput(value: string) {\n    const lastValueWasValid = this._lastValueValid;\n    const nextValue = this._adapter.parse(value);\n\n    if (!this._adapter.sameColor(nextValue, this._value)) {\n      this._value = nextValue;\n      this._cvaOnChange(nextValue);\n      this._valueChange.emit(nextValue);\n      this.colorInput.emit(new NgxMatColorPickerInputEvent(this, this._elementRef.nativeElement));\n    } else if (lastValueWasValid !== this._lastValueValid) {\n      this._validatorOnChange();\n    }\n  }\n}\n","import {\n  AfterContentInit,\n  ChangeDetectorRef,\n  Component,\n  Directive,\n  EventEmitter,\n  Input,\n  OnDestroy,\n  ViewEncapsulation,\n  effect,\n  input,\n  untracked,\n  viewChild,\n} from '@angular/core';\nimport { MatButton, MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { Subscription, merge, of } from 'rxjs';\nimport { NgxMatColorPickerComponent } from '../color-picker/color-picker.component';\n\n@Directive({\n  selector: '[ngxMatColorpickerToggleIcon]',\n})\nexport class NgxMatColorpickerToggleIcon {}\n\n@Component({\n  selector: 'ngx-mat-color-toggle',\n  templateUrl: './color-toggle.component.html',\n  styleUrls: ['./color-toggle.component.scss'],\n  host: {\n    class: 'ngx-mat-color-toggle',\n    // Always set the tabindex to -1 so that it doesn't overlap with any custom tabindex the\n    // consumer may have provided, while still being able to receive focus.\n    '[attr.tabindex]': '-1',\n    '[class.ngx-mat-color-toggle-active]': 'picker && picker.opened',\n    '[class.mat-accent]': 'picker && picker.color === \"accent\"',\n    '[class.mat-warn]': 'picker && picker.color === \"warn\"',\n    '(focus)': '_button.focus()',\n  },\n  exportAs: 'ngxMatColorPickerToggle',\n  encapsulation: ViewEncapsulation.None,\n  imports: [MatButtonModule, MatIconModule],\n})\nexport class NgxMatColorToggleComponent implements AfterContentInit, OnDestroy {\n  private _stateChanges = Subscription.EMPTY;\n\n  picker = input<NgxMatColorPickerComponent>(undefined, { alias: 'for' });\n  tabIndex = input<number>();\n\n  @Input() get disabled(): boolean {\n    if (this._disabled == null && this.picker()) {\n      return this.picker().disabled;\n    }\n  }\n  set disabled(value: boolean) {\n    this._disabled = value;\n  }\n  private _disabled: boolean;\n\n  /** Whether ripples on the toggle should be disabled. */\n  disableRipple = input<boolean>();\n\n  _button = viewChild<MatButton>('button');\n\n  constructor(private _cd: ChangeDetectorRef) {\n    effect(() => {\n      this.picker();\n\n      untracked(() => this._watchStateChanges());\n    });\n  }\n\n  ngOnDestroy() {\n    this._stateChanges.unsubscribe();\n  }\n\n  ngAfterContentInit() {\n    this._watchStateChanges();\n  }\n\n  public open(event: Event): void {\n    if (this.picker() && !this.disabled) {\n      this.picker().open();\n      event.stopPropagation();\n    }\n  }\n\n  private _watchStateChanges() {\n    const disabled$ = this.picker()?._disabledChange ?? new EventEmitter();\n    const inputDisabled$ = this.picker()?._pickerInput?._disabledChange ?? new EventEmitter();\n\n    const pickerToggled$ = this.picker()\n      ? merge(this.picker()!.openedStream, this.picker()!.closedStream)\n      : of();\n    this._stateChanges.unsubscribe();\n\n    this._stateChanges = merge(disabled$, inputDisabled$, pickerToggled$).subscribe(() =>\n      this._cd.markForCheck(),\n    );\n  }\n}\n","<button\n  #button\n  mat-icon-button\n  type=\"button\"\n  [attr.aria-haspopup]=\"picker() ? 'dialog' : null\"\n  [attr.tabindex]=\"disabled ? -1 : tabIndex()\"\n  [disabled]=\"disabled\"\n  (click)=\"open($event)\"\n  [disableRipple]=\"disableRipple()\"\n>\n  <ng-content select=\"[ngxMatColorpickerToggleIcon]\">\n    <mat-icon [style.color]=\"picker()?._selected?.rgba\">palette</mat-icon>\n  </ng-content>\n</button>\n","import { Directive, HostListener } from '@angular/core';\nimport { NUMERIC_REGEX } from '../helpers';\n\n@Directive({\n  selector: '[ngxMatNumericColorInput]',\n})\nexport class NumericColorInputDirective {\n  @HostListener('input', ['$event'])\n  onInput($event: any) {\n    this._formatInput($event.target);\n  }\n\n  /**\n   * Format input\n   * @param input\n   */\n  private _formatInput(input: any) {\n    let val = Number(input.value.replace(NUMERIC_REGEX, ''));\n    val = isNaN(val) ? 0 : val;\n    input.value = val;\n  }\n}\n","/*\n * Public API Surface of color-picker\n */\nexport * from './lib/components';\nexport * from './lib/directives';\nexport * from './lib/helpers';\nexport * from './lib/models';\nexport * from './lib/services';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2","i3.ColorAdapter","i2.ColorAdapter"],"mappings":"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"}