UNPKG

ng-antd-color-picker

Version:

The angular version of the color-picker component based on antd styles.

1 lines 53.1 kB
{"version":3,"file":"ng-antd-color-picker.mjs","sources":["../../../projects/ng-antd-color-picker/src/lib/interfaces/color.ts","../../../projects/ng-antd-color-picker/src/lib/util/util.ts","../../../projects/ng-antd-color-picker/src/lib/components/handler.component.ts","../../../projects/ng-antd-color-picker/src/lib/components/palette.component.ts","../../../projects/ng-antd-color-picker/src/lib/components/picker.component.ts","../../../projects/ng-antd-color-picker/src/lib/components/gradient.component.ts","../../../projects/ng-antd-color-picker/src/lib/components/slider.component.ts","../../../projects/ng-antd-color-picker/src/lib/ng-antd-color-block.component.ts","../../../projects/ng-antd-color-picker/src/lib/ng-antd-color-picker.component.ts","../../../projects/ng-antd-color-picker/src/lib/ng-antd-color-picker.module.ts","../../../projects/ng-antd-color-picker/src/public-api.ts","../../../projects/ng-antd-color-picker/src/ng-antd-color-picker.ts"],"sourcesContent":["import { ColorInput, HSVA, Numberify, TinyColor } from '@ctrl/tinycolor';\n\nimport type { ColorGenInput, HSB, HSBA } from './type';\n\nexport const getRoundNumber = (value: number): number => Math.round(Number(value || 0));\n\nconst convertHsb2Hsv = (color: ColorGenInput): ColorInput => {\n  if (color && typeof color === 'object' && 'h' in color && 'b' in color) {\n    const { b, ...resets } = color as HSB;\n    return {\n      ...resets,\n      v: b\n    };\n  }\n  if (typeof color === 'string' && /hsb/.test(color)) {\n    return color.replace(/hsb/, 'hsv');\n  }\n  return color as ColorInput;\n};\n\nexport class Color extends TinyColor {\n  constructor(color: ColorGenInput) {\n    super(convertHsb2Hsv(color));\n  }\n\n  toHsbString(): string {\n    const hsb = this.toHsb();\n    const saturation = getRoundNumber(hsb.s * 100);\n    const lightness = getRoundNumber(hsb.b * 100);\n    const hue = getRoundNumber(hsb.h);\n    const alpha = hsb.a;\n    const hsbString = `hsb(${hue}, ${saturation}%, ${lightness}%)`;\n    const hsbaString = `hsba(${hue}, ${saturation}%, ${lightness}%, ${alpha.toFixed(alpha === 0 ? 0 : 2)})`;\n    return alpha === 1 ? hsbString : hsbaString;\n  }\n\n  toHsb(): Numberify<HSBA> {\n    let hsv = this.toHsv();\n    if (typeof this.originalInput === 'object' && this.originalInput) {\n      if ('h' in this.originalInput) {\n        hsv = this.originalInput as Numberify<HSVA>;\n      }\n    }\n\n    const { v, ...resets } = hsv;\n    return {\n      ...resets,\n      b: hsv.v\n    };\n  }\n}\n","import { Color } from '../interfaces/color';\nimport type { ColorGenInput, HsbaColorType, TransformOffset } from '../interfaces/type';\n\nexport const generateColor = (color: ColorGenInput): Color => {\n  if (color instanceof Color) {\n    return color;\n  }\n  return new Color(color);\n};\n\nexport const defaultColor = generateColor('#1677ff');\n\nexport function calculateColor(\n  offset: TransformOffset,\n  containerRef: HTMLDivElement,\n  targetRef: HTMLDivElement,\n  color?: Color | null,\n  type?: HsbaColorType\n): Color {\n  const { width, height } = containerRef.getBoundingClientRect();\n  const { width: targetWidth, height: targetHeight } = targetRef.getBoundingClientRect();\n  const centerOffsetX = targetWidth / 2;\n  const centerOffsetY = targetHeight / 2;\n  const saturation = (offset.x + centerOffsetX) / width;\n  const bright = 1 - (offset.y + centerOffsetY) / height;\n  const hsb = color?.toHsb() || { a: 0, h: 0, s: 0, b: 0 };\n  const alphaOffset = saturation;\n  const hueOffset = ((offset.x + centerOffsetX) / width) * 360;\n\n  if (type) {\n    switch (type) {\n      case 'hue':\n        return generateColor({\n          ...hsb,\n          h: hueOffset <= 0 ? 0 : hueOffset\n        });\n      case 'alpha':\n        return generateColor({\n          ...hsb,\n          a: alphaOffset <= 0 ? 0 : alphaOffset\n        });\n    }\n  }\n\n  return generateColor({\n    h: hsb.h,\n    s: saturation <= 0 ? 0 : saturation,\n    b: bright >= 1 ? 1 : bright,\n    a: hsb.a\n  });\n}\n\nexport const calculateOffset = (\n  containerRef: HTMLDivElement,\n  targetRef: HTMLDivElement,\n  color?: Color | null,\n  type?: HsbaColorType\n): TransformOffset | null => {\n  const { width, height } = containerRef.getBoundingClientRect();\n  const { width: targetWidth, height: targetHeight } = targetRef.getBoundingClientRect();\n  const centerOffsetX = targetWidth / 2;\n  const centerOffsetY = targetHeight / 2;\n  const hsb = color?.toHsb() || { a: 0, h: 0, s: 0, b: 0 };\n\n  // Exclusion of boundary cases\n  if ((targetWidth === 0 && targetHeight === 0) || targetWidth !== targetHeight) {\n    return null;\n  }\n\n  if (type) {\n    switch (type) {\n      case 'hue':\n        return {\n          x: (hsb.h / 360) * width - centerOffsetX,\n          y: -centerOffsetY / 3\n        };\n      case 'alpha':\n        return {\n          x: hsb.a * width - centerOffsetX,\n          y: -centerOffsetY / 3\n        };\n    }\n  }\n  return {\n    x: hsb.s * width - centerOffsetX,\n    y: (1 - hsb.b) * height - centerOffsetY\n  };\n};\n","import { Component, Input } from '@angular/core';\n\ntype HandlerSize = 'default' | 'small';\n\n@Component({\n  selector: 'color-handler',\n  standalone: true,\n  template: `\n    <div\n      class=\"ant-color-picker-handler\"\n      [style.background-color]=\"color\"\n      [class.ant-color-picker-handler-sm]=\"size === 'small'\"\n    ></div>\n  `\n})\nexport class HandlerComponent {\n  @Input() color: string | null = null;\n  @Input() size: HandlerSize = 'default';\n}\n","import { Component } from '@angular/core';\n\n@Component({\n  selector: 'color-palette',\n  standalone: true,\n  template: `\n    <div class=\"ant-color-picker-palette\" style=\"position: relative\">\n      <ng-content></ng-content>\n    </div>\n  `\n})\nexport class PaletteComponent {}\n","import { DOCUMENT } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\n\nimport { Color } from '../interfaces/color';\nimport { HsbaColorType, TransformOffset } from '../interfaces/type';\nimport { calculateColor, calculateOffset } from '../util/util';\nimport { HandlerComponent } from './handler.component';\nimport { PaletteComponent } from './palette.component';\n\ntype EventType = MouseEvent | TouchEvent;\n\ntype EventHandle = (e: EventType) => void;\n\nfunction getPosition(e: EventType): { pageX: number; pageY: number } {\n  const obj = 'touches' in e ? e.touches[0] : e;\n  const scrollXOffset = document.documentElement.scrollLeft || document.body.scrollLeft || window.pageXOffset;\n  const scrollYOffset = document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset;\n  return { pageX: obj.pageX - scrollXOffset, pageY: obj.pageY - scrollYOffset };\n}\n\n@Component({\n  selector: 'color-picker',\n  standalone: true,\n  imports: [HandlerComponent, PaletteComponent],\n  template: `\n    <div\n      #slider\n      class=\"ant-color-picker-select\"\n      (mousedown)=\"dragStartHandle($event)\"\n      (touchstart)=\"dragStartHandle($event)\"\n    >\n      <color-palette>\n        <div\n          #transform\n          style=\"position: absolute; z-index: 1;\"\n          [style.left]=\"offsetValue.x + 'px'\"\n          [style.top]=\"offsetValue.y + 'px'\"\n        >\n          <color-handler [color]=\"toRgbString()\" />\n        </div>\n        <div\n          class=\"ant-color-picker-saturation\"\n          style=\"\n        background-image: linear-gradient(0deg, #000, transparent),\n          linear-gradient(90deg, #fff, hsla(0, 0%, 100%, 0));\n      \"\n          [style.background-color]=\"toHsb()\"\n        ></div>\n      </color-palette>\n    </div>\n  `\n})\nexport class PickerComponent implements OnInit, AfterViewInit, OnChanges {\n  @ViewChild('slider', { static: false }) containerRef!: ElementRef<HTMLDivElement>;\n  @ViewChild('transform', { static: false }) transformRef!: ElementRef<HTMLDivElement>;\n\n  @Input() color: Color | null = null;\n  @Output() nzOnChange = new EventEmitter<Color>();\n  @Output() nzOnChangeComplete = new EventEmitter<HsbaColorType>();\n  @Input() disabled: boolean = false;\n\n  offsetValue: TransformOffset = { x: 0, y: 0 };\n  dragRef: boolean = false;\n  mouseMoveRef: (e: MouseEvent | TouchEvent) => void = () => null;\n  mouseUpRef: (e: MouseEvent | TouchEvent) => void = () => null;\n\n  toRgbString(): string {\n    return this.color?.toRgbString() as string;\n  }\n\n  toHsb(): string {\n    return `hsl(${this.color?.toHsb().h},100%, 50%)`;\n  }\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    @Inject(DOCUMENT) private document: Document\n  ) {}\n\n  ngOnInit(): void {\n    this.document.removeEventListener('mousemove', this.mouseMoveRef);\n    this.document.removeEventListener('mouseup', this.mouseUpRef);\n    this.document.removeEventListener('touchmove', this.mouseMoveRef);\n    this.document.removeEventListener('touchend', this.mouseUpRef);\n    this.mouseMoveRef = () => null;\n    this.mouseUpRef = () => null;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { color } = changes;\n\n    if (color) {\n      if (!this.dragRef && this.containerRef && this.transformRef) {\n        const calcOffset = calculateOffset(\n          this.containerRef.nativeElement,\n          this.transformRef.nativeElement,\n          this.color\n        );\n        if (calcOffset) {\n          this.offsetValue = calcOffset;\n          this.cdr.detectChanges();\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (!this.dragRef && this.containerRef && this.transformRef) {\n      const calcOffset = calculateOffset(this.containerRef.nativeElement, this.transformRef.nativeElement, this.color);\n      if (calcOffset) {\n        this.offsetValue = calcOffset;\n        this.cdr.detectChanges();\n      }\n    }\n  }\n\n  dragStartHandle(e: MouseEvent | TouchEvent): void {\n    this.onDragStart(e);\n  }\n\n  updateOffset: EventHandle = (e: EventType, direction: 'x' | 'y' = 'y') => {\n    const { pageX, pageY } = getPosition(e);\n    const {\n      x: rectX,\n      y: rectY,\n      width,\n      height\n    } = this.containerRef?.nativeElement?.getBoundingClientRect() || { x: 0, y: 0, width: 0, height: 0 };\n    const { width: targetWidth, height: targetHeight } = this.transformRef?.nativeElement?.getBoundingClientRect() || {\n      width: 0,\n      height: 0\n    };\n\n    const centerOffsetX = targetWidth / 2;\n    const centerOffsetY = targetHeight / 2;\n\n    const offsetX = Math.max(0, Math.min(pageX - rectX, width)) - centerOffsetX;\n    const offsetY = Math.max(0, Math.min(pageY - rectY, height)) - centerOffsetY;\n\n    const calcOffset = {\n      x: offsetX,\n      y: direction === 'x' ? this.offsetValue.y : offsetY\n    };\n    // Exclusion of boundary cases\n    if ((targetWidth === 0 && targetHeight === 0) || targetWidth !== targetHeight) {\n      return;\n    }\n    this.offsetValue = calcOffset;\n    this.nzOnChange.emit(\n      calculateColor(calcOffset, this.containerRef.nativeElement, this.transformRef.nativeElement, this.color)\n    );\n    this.cdr.detectChanges();\n  };\n\n  onDragMove: EventHandle = (e: EventType) => {\n    e.preventDefault();\n    this.updateOffset(e);\n  };\n\n  onDragStop: EventHandle = (e: EventType) => {\n    e.preventDefault();\n    this.dragRef = false;\n    this.document.removeEventListener('mousemove', this.onDragMove);\n    this.document.removeEventListener('mouseup', this.mouseUpRef);\n    this.document.removeEventListener('touchmove', this.mouseMoveRef);\n    this.document.removeEventListener('touchend', this.mouseUpRef);\n    this.mouseMoveRef = () => null;\n    this.mouseUpRef = () => null;\n    this.nzOnChangeComplete?.emit();\n  };\n\n  onDragStart: EventHandle = (e: EventType) => {\n    if (this.disabled) {\n      return;\n    }\n    this.updateOffset(e);\n    this.dragRef = true;\n    this.document.addEventListener('mousemove', this.onDragMove);\n    this.document.addEventListener('mouseup', this.onDragStop);\n    this.document.addEventListener('touchmove', this.onDragMove);\n    this.document.addEventListener('touchend', this.onDragStop);\n    this.mouseMoveRef = this.onDragMove;\n    this.mouseUpRef = this.onDragStop;\n    this.cdr.markForCheck();\n  };\n}\n","import { Component, Input, OnChanges, OnInit, SimpleChanges } from '@angular/core';\n\nimport { Color } from '../interfaces/color';\nimport { HsbaColorType } from '../interfaces/type';\nimport { generateColor } from '../util/util';\n\n@Component({\n  selector: 'color-gradient',\n  standalone: true,\n  template: `\n    <div\n      class=\"ant-color-picker-gradient\"\n      style=\"position: absolute; inset: 0\"\n      [style.background]=\"'linear-gradient(' + direction + ', ' + gradientColors + ')'\"\n    >\n      <ng-content></ng-content>\n    </div>\n  `\n})\nexport class GradientComponent implements OnInit, OnChanges {\n  @Input() colors: Color[] | string[] = [];\n  @Input() direction: string = 'to right';\n  @Input() type: HsbaColorType = 'hue';\n\n  gradientColors: string = '';\n\n  constructor() {}\n\n  ngOnInit(): void {\n    this.useMemo();\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { colors, type } = changes;\n    if (colors || type) {\n      this.useMemo();\n    }\n  }\n\n  useMemo(): void {\n    this.gradientColors = this.colors\n      .map((color, idx) => {\n        const result = generateColor(color);\n        if (this.type === 'alpha' && idx === this.colors.length - 1) {\n          result.setAlpha(1);\n        }\n        return result.toRgbString();\n      })\n      .join(',');\n  }\n}\n","import { DOCUMENT, NgClass } from '@angular/common';\nimport {\n  AfterViewInit,\n  ChangeDetectorRef,\n  Component,\n  ElementRef,\n  EventEmitter,\n  Inject,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  ViewChild\n} from '@angular/core';\n\nimport { Color } from '../interfaces/color';\nimport { HsbaColorType, TransformOffset } from '../interfaces/type';\nimport { calculateColor, calculateOffset } from '../util/util';\nimport { PaletteComponent } from './palette.component';\nimport { GradientComponent } from './gradient.component';\nimport { HandlerComponent } from './handler.component';\n\ntype EventType = MouseEvent | TouchEvent;\n\ntype EventHandle = (e: EventType) => void;\n\nfunction getPosition(e: EventType): { pageX: number; pageY: number } {\n  const obj = 'touches' in e ? e.touches[0] : e;\n  const scrollXOffset = document.documentElement.scrollLeft || document.body.scrollLeft || window.pageXOffset;\n  const scrollYOffset = document.documentElement.scrollTop || document.body.scrollTop || window.pageYOffset;\n  return { pageX: obj.pageX - scrollXOffset, pageY: obj.pageY - scrollYOffset };\n}\n\n@Component({\n  selector: 'color-slider',\n  standalone: true,\n  imports: [PaletteComponent, GradientComponent, HandlerComponent, NgClass],\n  template: `\n    <div\n      #slider\n      (mousedown)=\"dragStartHandle($event)\"\n      (touchstart)=\"dragStartHandle($event)\"\n      class=\"ant-color-picker-slider\"\n      [ngClass]=\"'ant-color-picker-slider-' + type\"\n    >\n      <color-palette>\n        <div\n          #transform\n          style=\"position: absolute; z-index: 1;\"\n          [style.left]=\"offsetValue.x + 'px'\"\n          [style.top]=\"offsetValue.y + 'px'\"\n        >\n          <color-handler size=\"small\" [color]=\"value\"></color-handler>\n        </div>\n        <color-gradient [colors]=\"gradientColors\" [direction]=\"direction\" [type]=\"type\"></color-gradient>\n      </color-palette>\n    </div>\n  `,\n  styles: [\n    `\n      :host {\n        display: block;\n        width: 100%;\n      }\n    `\n  ]\n})\nexport class SliderComponent implements OnInit, AfterViewInit, OnChanges {\n  @ViewChild('slider', { static: false }) containerRef!: ElementRef<HTMLDivElement>;\n  @ViewChild('transform', { static: false }) transformRef!: ElementRef<HTMLDivElement>;\n\n  @Input() gradientColors: string[] = [];\n  @Input() direction: string = 'to right';\n  @Input() type: HsbaColorType = 'hue';\n  @Input() color: Color | null = null;\n  @Input() value: string | null = null;\n  @Input() disabled: boolean = false;\n  @Output() nzOnChange = new EventEmitter<Color>();\n  @Output() nzOnChangeComplete = new EventEmitter<HsbaColorType>();\n\n  offsetValue: TransformOffset = { x: 0, y: 0 };\n  dragRef: boolean = false;\n  mouseMoveRef: (e: MouseEvent | TouchEvent) => void = () => null;\n  mouseUpRef: (e: MouseEvent | TouchEvent) => void = () => null;\n\n  constructor(\n    private cdr: ChangeDetectorRef,\n    @Inject(DOCUMENT) private document: Document\n  ) {}\n\n  ngOnInit(): void {\n    this.document.removeEventListener('mousemove', this.mouseMoveRef);\n    this.document.removeEventListener('mouseup', this.mouseUpRef);\n    this.document.removeEventListener('touchmove', this.mouseMoveRef);\n    this.document.removeEventListener('touchend', this.mouseUpRef);\n    this.mouseMoveRef = () => null;\n    this.mouseUpRef = () => null;\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { color } = changes;\n\n    if (color) {\n      if (!this.dragRef && this.containerRef && this.transformRef) {\n        const calcOffset = calculateOffset(\n          this.containerRef.nativeElement,\n          this.transformRef.nativeElement,\n          this.color,\n          this.type\n        );\n        if (calcOffset) {\n          this.offsetValue = calcOffset;\n          this.cdr.detectChanges();\n        }\n      }\n    }\n  }\n\n  ngAfterViewInit(): void {\n    if (!this.dragRef && this.containerRef && this.transformRef) {\n      const calcOffset = calculateOffset(\n        this.containerRef.nativeElement,\n        this.transformRef.nativeElement,\n        this.color,\n        this.type\n      );\n      if (calcOffset) {\n        this.offsetValue = calcOffset;\n        this.cdr.detectChanges();\n      }\n    }\n  }\n\n  dragStartHandle(e: MouseEvent | TouchEvent): void {\n    this.onDragStart(e);\n  }\n\n  updateOffset: EventHandle = (e: EventType, direction: 'x' | 'y' = 'x') => {\n    const { pageX, pageY } = getPosition(e);\n    const {\n      x: rectX,\n      y: rectY,\n      width,\n      height\n    } = this.containerRef?.nativeElement?.getBoundingClientRect() || { x: 0, y: 0, width: 0, height: 0 };\n    const { width: targetWidth, height: targetHeight } = this.transformRef?.nativeElement?.getBoundingClientRect() || {\n      width: 0,\n      height: 0\n    };\n\n    const centerOffsetX = targetWidth / 2;\n    const centerOffsetY = targetHeight / 2;\n\n    const offsetX = Math.max(0, Math.min(pageX - rectX, width)) - centerOffsetX;\n    const offsetY = Math.max(0, Math.min(pageY - rectY, height)) - centerOffsetY;\n\n    const calcOffset = {\n      x: offsetX,\n      y: direction === 'x' ? this.offsetValue.y : offsetY\n    };\n\n    // Exclusion of boundary cases\n    if ((targetWidth === 0 && targetHeight === 0) || targetWidth !== targetHeight) {\n      return;\n    }\n\n    this.offsetValue = calcOffset;\n    this.nzOnChange.emit(\n      calculateColor(\n        calcOffset,\n        this.containerRef.nativeElement,\n        this.transformRef.nativeElement,\n        this.color,\n        this.type\n      )\n    );\n    this.cdr.detectChanges();\n  };\n\n  onDragMove: EventHandle = (e: EventType) => {\n    e.preventDefault();\n    this.updateOffset(e);\n  };\n\n  onDragStop: EventHandle = (e: EventType) => {\n    e.preventDefault();\n    this.dragRef = false;\n    this.document.removeEventListener('mousemove', this.onDragMove);\n    this.document.removeEventListener('mouseup', this.mouseUpRef);\n    this.document.removeEventListener('touchmove', this.mouseMoveRef);\n    this.document.removeEventListener('touchend', this.mouseUpRef);\n    this.mouseMoveRef = () => null;\n    this.mouseUpRef = () => null;\n    this.nzOnChangeComplete?.emit(this.type);\n  };\n\n  onDragStart: EventHandle = (e: EventType) => {\n    if (this.disabled) {\n      return;\n    }\n    this.updateOffset(e);\n    this.dragRef = true;\n    this.document.addEventListener('mousemove', this.onDragMove);\n    this.document.addEventListener('mouseup', this.onDragStop);\n    this.document.addEventListener('touchmove', this.onDragMove);\n    this.document.addEventListener('touchend', this.onDragStop);\n    this.mouseMoveRef = this.onDragMove;\n    this.mouseUpRef = this.onDragStop;\n    this.cdr.markForCheck();\n  };\n}\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { defaultColor } from './util/util';\n\n@Component({\n  selector: 'ng-antd-color-block',\n  standalone: true,\n  template: `\n    <div class=\"ant-color-picker-color-block\" (click)=\"nzOnClick.emit(true)\">\n      <div class=\"ant-color-picker-color-block-inner\" [style.background-color]=\"color\"></div>\n    </div>\n  `\n})\nexport class NgAntdColorBlockComponent {\n  @Input() color: string = defaultColor.toHsbString();\n  @Output() readonly nzOnClick = new EventEmitter<boolean>();\n}\n","import {\n  ChangeDetectorRef,\n  Component,\n  EventEmitter,\n  Input,\n  OnChanges,\n  OnInit,\n  Output,\n  SimpleChanges,\n  TemplateRef\n} from '@angular/core';\nimport { ColorGenInput, ColorValue, HsbaColorType } from './interfaces/type';\nimport { Color } from './interfaces/color';\nimport { defaultColor, generateColor } from './util/util';\nimport { NgIf, NgTemplateOutlet } from '@angular/common';\nimport { PickerComponent } from './components/picker.component';\nimport { SliderComponent } from './components/slider.component';\nimport { NgAntdColorBlockComponent } from './ng-antd-color-block.component';\n\n@Component({\n  selector: 'ng-antd-color-picker',\n  standalone: true,\n  imports: [NgIf, PickerComponent, SliderComponent, NgAntdColorBlockComponent, NgTemplateOutlet],\n  template: `\n    <div class=\"ant-color-picker-panel\" [class.ant-color-picker-panel-disabled]=\"disabled\">\n      <ng-container *ngIf=\"panelRenderHeader\">\n        <ng-template [ngTemplateOutlet]=\"panelRenderHeader\"></ng-template>\n      </ng-container>\n      <color-picker\n        [color]=\"colorValue\"\n        (nzOnChange)=\"handleChange($event)\"\n        [disabled]=\"disabled\"\n        (nzOnChangeComplete)=\"nzOnChangeComplete.emit($event)\"\n      ></color-picker>\n      <div class=\"ant-color-picker-slider-container\">\n        <div class=\"ant-color-picker-slider-group\" [class.ant-color-picker-slider-group-disabled-alpha]=\"disabledAlpha\">\n          <color-slider\n            [color]=\"colorValue\"\n            [value]=\"'hsl(' + colorValue?.toHsb()?.h + ',100%, 50%)'\"\n            [gradientColors]=\"hueColor\"\n            (nzOnChange)=\"handleChange($event, 'hue')\"\n            [disabled]=\"disabled\"\n            (nzOnChangeComplete)=\"nzOnChangeComplete.emit($event)\"\n          ></color-slider>\n          <ng-container *ngIf=\"!disabledAlpha\">\n            <color-slider\n              type=\"alpha\"\n              [color]=\"colorValue\"\n              [value]=\"toRgbString\"\n              [gradientColors]=\"gradientColors\"\n              (nzOnChange)=\"handleChange($event, 'alpha')\"\n              [disabled]=\"disabled\"\n              (nzOnChangeComplete)=\"nzOnChangeComplete.emit($event)\"\n            ></color-slider>\n          </ng-container>\n        </div>\n        <ng-antd-color-block [color]=\"toRgbString\"></ng-antd-color-block>\n      </div>\n      <ng-container *ngIf=\"panelRenderFooter\">\n        <ng-template [ngTemplateOutlet]=\"panelRenderFooter\"></ng-template>\n      </ng-container>\n    </div>\n  `\n})\nexport class NgAntdColorPickerComponent implements OnInit, OnChanges {\n  @Input() value: ColorValue;\n  @Input() defaultValue: ColorValue;\n  @Output() nzOnChange = new EventEmitter<{ color: Color; type?: HsbaColorType }>();\n  @Output() nzOnChangeComplete = new EventEmitter<HsbaColorType>();\n  @Input() panelRenderHeader: TemplateRef<void> | null = null;\n  @Input() panelRenderFooter: TemplateRef<void> | null = null;\n  @Input() disabledAlpha: boolean = false;\n  @Input() disabled: boolean = false;\n\n  colorValue: Color | null = null;\n  alphaColor: string = '';\n\n  hueColor: string[] = [\n    'rgb(255, 0, 0) 0%',\n    'rgb(255, 255, 0) 17%',\n    'rgb(0, 255, 0) 33%',\n    'rgb(0, 255, 255) 50%',\n    'rgb(0, 0, 255) 67%',\n    'rgb(255, 0, 255) 83%',\n    'rgb(255, 0, 0) 100%'\n  ];\n\n  gradientColors: string[] = ['rgba(255, 0, 4, 0) 0%', this.alphaColor];\n\n  toRgbString: string = this.colorValue?.toRgbString() || '';\n\n  constructor(private cdr: ChangeDetectorRef) {}\n\n  ngOnInit(): void {\n    this.setColorValue(this.value);\n  }\n\n  ngOnChanges(changes: SimpleChanges): void {\n    const { value, defaultValue } = changes;\n    if (value || defaultValue) {\n      this.setColorValue(this.value);\n    }\n  }\n\n  hasValue(value: ColorValue): boolean {\n    return !!value;\n  }\n\n  setColorValue(color: ColorValue): void {\n    let mergeState;\n    if (this.hasValue(color)) {\n      mergeState = color;\n    } else if (this.hasValue(this.defaultValue)) {\n      mergeState = this.defaultValue;\n    } else {\n      mergeState = defaultColor;\n    }\n    this.colorValue = generateColor(mergeState as ColorGenInput);\n    this.setAlphaColor(this.colorValue);\n    this.toRgbString = this.colorValue?.toRgbString() || '';\n    this.cdr.detectChanges();\n  }\n\n  setAlphaColor(colorValue: Color): void {\n    const rgb = generateColor(colorValue.toRgbString());\n    this.alphaColor = rgb.toRgbString();\n    this.gradientColors = ['rgba(255, 0, 4, 0) 0%', this.alphaColor];\n    this.cdr.markForCheck();\n  }\n\n  handleChange(color: Color, type?: HsbaColorType): void {\n    this.setColorValue(color);\n    this.nzOnChange.emit({ color, type });\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { NgAntdColorPickerComponent } from './ng-antd-color-picker.component';\nimport { NgAntdColorBlockComponent } from './ng-antd-color-block.component';\n\n@NgModule({\n  imports: [NgAntdColorPickerComponent, NgAntdColorBlockComponent],\n  exports: [NgAntdColorPickerComponent, NgAntdColorBlockComponent]\n})\nexport class NgAntdColorPickerModule {}\n","/*\n * Public API Surface of ng-antd-color-picker\n */\n\nexport * from './lib/interfaces/type';\nexport * from './lib/interfaces/color';\nexport * from './lib/util/util';\nexport * from './lib/ng-antd-color-picker.component';\nexport * from './lib/ng-antd-color-block.component';\nexport * from './lib/ng-antd-color-picker.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["getPosition"],"mappings":"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"}