{"version":3,"file":"color.mjs","sources":["../../../../src/_common/js/color-picker/color.ts"],"sourcesContent":["import tinyColor from 'tinycolor2';\nimport { cmykInputToColor, rgb2cmyk } from './cmyk';\nimport { ALPHA_FORMAT_MAP } from './constants';\nimport {\n  GradientColorPoint,\n  GradientColors,\n  isGradientColor,\n  parseGradientString\n} from './gradient';\nimport type { AlphaConvertibleFormat, ColorFormat } from './types';\n\nexport interface ColorObject {\n  alpha: number;\n  css: string;\n  hex: string;\n  hex8: string;\n  hsl: string;\n  hsla: string;\n  hsv: string;\n  hsva: string;\n  rgb: string;\n  rgba: string;\n  saturation: number;\n  value: number;\n  isGradient: boolean;\n  linearGradient?: string;\n}\n\ninterface ColorStates {\n  s: number;\n  v: number;\n  h: number;\n  a: number;\n}\n\ninterface GradientStates {\n  colors: GradientColorPoint[];\n  degree: number;\n  selectedId: string;\n  css?: string;\n}\n\nconst mathRound = Math.round;\nconst hsv2rgba = (states: ColorStates): tinyColor.ColorFormats.RGBA => tinyColor(states).toRgb();\nconst hsv2hsva = (states: ColorStates): tinyColor.ColorFormats.HSVA => tinyColor(states).toHsv();\nconst hsv2hsla = (states: ColorStates): tinyColor.ColorFormats.HSLA => tinyColor(states).toHsl();\n\n/**\n * 将渐变对象转换成字符串\n */\nexport const gradientColors2string = (object: GradientColors): string => {\n  const { points, degree } = object;\n  const colorsStop = points\n    .sort((pA, pB) => pA.left - pB.left)\n    .map((p) => `${p.color} ${Math.round(p.left * 100) / 100}%`);\n\n  return `linear-gradient(${degree}deg,${colorsStop.join(',')})`;\n};\n\n/**\n * 去除颜色的透明度\n */\nexport const getColorWithoutAlpha = (color: string) => tinyColor(color).setAlpha(1).toHexString();\n\n// 生成一个随机ID\nexport const genId = () => (1 + Math.random() * 4294967295).toString(16);\n\n/**\n * 生成一个渐变颜色\n * @param left\n * @param color\n * @returns\n */\nexport const genGradientPoint = (left: number, color: string, id?: string): GradientColorPoint => ({\n  id: id || genId(),\n  left,\n  color,\n});\n\nexport class Color {\n  states: ColorStates = {\n    s: 100,\n    v: 100,\n    h: 100,\n    a: 1,\n  };\n\n  originColor: string;\n\n  isGradient: boolean;\n\n  gradientStates: GradientStates = {\n    colors: [],\n    degree: 0,\n    selectedId: null,\n    css: '',\n  };\n\n  constructor(input: string) {\n    this.update(input);\n  }\n\n  update(input: string) {\n    if (input === this.originColor) return;\n    const gradientColors = parseGradientString(input);\n\n    if (this.isGradient && !gradientColors) {\n      /* case 1: 渐变模式单独修改某个位置点的色值 */\n      const colorHsv = tinyColor(input).toHsv();\n      this.states = colorHsv;\n      this.updateCurrentGradientColor();\n      return;\n    }\n    this.originColor = input;\n    this.isGradient = false;\n    let colorInput = input;\n\n    /* case 2: 修改整个渐变，生成一套新的颜色点 */\n    if (gradientColors) {\n      this.isGradient = true;\n      const object = gradientColors as GradientColors;\n      const points = object.points.map((c, index) => genGradientPoint(c.left, c.color, this.gradientStates.colors[index]?.id));\n      this.gradientStates = {\n        colors: points,\n        degree: object.degree,\n        selectedId: this.gradientStates.selectedId || points[0]?.id || null,\n      };\n      this.gradientStates.css = this.linearGradient;\n      colorInput = this.gradientSelectedPoint?.color;\n    }\n\n    this.updateStates(colorInput);\n  }\n\n  get saturation() {\n    return this.states.s;\n  }\n\n  set saturation(value) {\n    this.states.s = Math.max(0, Math.min(100, value));\n    this.updateCurrentGradientColor();\n  }\n\n  get value() {\n    return this.states.v;\n  }\n\n  set value(value) {\n    this.states.v = Math.max(0, Math.min(100, value));\n    this.updateCurrentGradientColor();\n  }\n\n  get hue() {\n    return this.states.h;\n  }\n\n  set hue(value) {\n    this.states.h = Math.max(0, Math.min(360, value));\n    this.updateCurrentGradientColor();\n  }\n\n  get alpha() {\n    return this.states.a;\n  }\n\n  set alpha(value) {\n    this.states.a = Math.max(0, Math.min(1, Math.round(value * 100) / 100));\n    this.updateCurrentGradientColor();\n  }\n\n  get rgb() {\n    const { r, g, b } = hsv2rgba(this.states);\n    return `rgb(${mathRound(r)}, ${mathRound(g)}, ${mathRound(b)})`;\n  }\n\n  get rgba() {\n    const {\n      r, g, b, a\n    } = hsv2rgba(this.states);\n    return `rgba(${mathRound(r)}, ${mathRound(g)}, ${mathRound(b)}, ${a})`;\n  }\n\n  get hsv() {\n    const { h, s, v } = this.getHsva();\n    return `hsv(${h}, ${s}%, ${v}%)`;\n  }\n\n  get hsva() {\n    const {\n      h, s, v, a\n    } = this.getHsva();\n    return `hsva(${h}, ${s}%, ${v}%, ${a})`;\n  }\n\n  get hsl() {\n    const { h, s, l } = this.getHsla();\n    return `hsl(${h}, ${s}%, ${l}%)`;\n  }\n\n  get hsla() {\n    const {\n      h, s, l, a\n    } = this.getHsla();\n    return `hsla(${h}, ${s}%, ${l}%, ${a})`;\n  }\n\n  get hex() {\n    return tinyColor(this.states).toHexString();\n  }\n\n  get hex8() {\n    return tinyColor(this.states).toHex8String();\n  }\n\n  get cmyk() {\n    const {\n      c, m, y, k\n    } = this.getCmyk();\n    return `cmyk(${c}, ${m}, ${y}, ${k})`;\n  }\n\n  get css() {\n    if (this.isGradient) {\n      return this.linearGradient;\n    }\n    return this.rgba;\n  }\n\n  get linearGradient() {\n    const { gradientColors, gradientDegree } = this;\n    return gradientColors2string({\n      points: gradientColors,\n      degree: gradientDegree,\n    });\n  }\n\n  get gradientColors() {\n    return this.gradientStates.colors;\n  }\n\n  set gradientColors(colors: GradientColorPoint[]) {\n    this.gradientStates.colors = colors;\n    this.gradientStates.css = this.linearGradient;\n  }\n\n  get gradientSelectedId() {\n    return this.gradientStates.selectedId;\n  }\n\n  set gradientSelectedId(id: string) {\n    if (id === this.gradientSelectedId) {\n      return;\n    }\n    this.gradientStates.selectedId = id;\n    this.updateStates(this.gradientSelectedPoint?.color);\n  }\n\n  get gradientDegree() {\n    return this.gradientStates.degree;\n  }\n\n  set gradientDegree(degree: number) {\n    this.gradientStates.degree = Math.max(0, Math.min(360, degree));\n    this.gradientStates.css = this.linearGradient;\n  }\n\n  get gradientSelectedPoint() {\n    const { gradientColors, gradientSelectedId } = this;\n    return gradientColors.find((color) => color.id === gradientSelectedId);\n  }\n\n  getFormatsColorMap() {\n    return {\n      HEX: this.hex,\n      CMYK: this.cmyk,\n      RGB: this.rgb,\n      RGBA: this.rgba,\n      HSL: this.hsl,\n      HSLA: this.hsla,\n      HSV: this.hsv,\n      HSVA: this.hsva,\n      CSS: this.css,\n      HEX8: this.hex8,\n    };\n  }\n\n  getFormattedColor(format: ColorFormat, enableAlpha: boolean) {\n    if (this.isGradient) return this.linearGradient;\n    const finalFormat = (\n      enableAlpha && format in ALPHA_FORMAT_MAP\n        ? ALPHA_FORMAT_MAP[format as AlphaConvertibleFormat]\n        : format\n    ) as keyof ReturnType<Color['getFormatsColorMap']>;\n    return this.getFormatsColorMap()[finalFormat];\n  }\n\n  updateCurrentGradientColor() {\n    const { isGradient, gradientColors, gradientSelectedId } = this;\n    const { length } = gradientColors;\n    const current = this.gradientSelectedPoint;\n    if (!isGradient || length === 0 || !current) {\n      return false;\n    }\n    const index = gradientColors.findIndex((color) => color.id === gradientSelectedId);\n    const newColor = {\n      ...current,\n      color: this.rgba,\n    };\n    gradientColors.splice(index, 1, newColor);\n    this.gradientColors = gradientColors.slice();\n    return this;\n  }\n\n  updateStates(input: string) {\n    const color = tinyColor(cmykInputToColor(input));\n    const hsva = color.toHsv();\n\n    /* case 1: 当颜色在黑/灰/白区域，转换后的色相 (H) 与饱和度（S）不稳定\n       为了避免跳变，强制保持原有的值 */\n    const isTooGray = hsva.s * hsva.v <= 0.04;\n    const isTooDark = hsva.v <= 0.02;\n\n    /* case 2: Hue 是 0–360° 的环形值，0° 和 360° 表示相同的颜色\n       当用户在 Slider 最右端（接近 360°）来回拖拽时，也容易出现跳变 */\n    const diff = Math.abs(hsva.h - this.states.h);\n    if (isTooGray || diff > 355) {\n      hsva.h = this.states.h;\n    }\n\n    if (isTooDark) {\n      hsva.s = this.states.s;\n    }\n\n    this.states = hsva;\n  }\n\n  getRgba() {\n    const {\n      r, g, b, a\n    } = hsv2rgba(this.states);\n    return {\n      r: mathRound(r),\n      g: mathRound(g),\n      b: mathRound(b),\n      a,\n    };\n  }\n\n  getCmyk() {\n    const { r, g, b } = this.getRgba();\n    const [c, m, y, k] = rgb2cmyk(r, g, b);\n    return {\n      c: mathRound(c * 100),\n      m: mathRound(m * 100),\n      y: mathRound(y * 100),\n      k: mathRound(k * 100),\n    };\n  }\n\n  getHsva(): tinyColor.ColorFormats.HSVA {\n    let {\n      h, s, v, a\n    } = hsv2hsva(this.states);\n    h = mathRound(h);\n    s = mathRound(s * 100);\n    v = mathRound(v * 100);\n    a *= 1;\n    return {\n      h,\n      s,\n      v,\n      a,\n    };\n  }\n\n  getHsla(): tinyColor.ColorFormats.HSLA {\n    let {\n      h, s, l, a\n    } = hsv2hsla(this.states);\n    h = mathRound(h);\n    s = mathRound(s * 100);\n    l = mathRound(l * 100);\n    a *= 1;\n    return {\n      h,\n      s,\n      l,\n      a,\n    };\n  }\n\n  /**\n   * 判断输入色是否与当前色相同\n   */\n  equals(color: string): boolean {\n    return tinyColor.equals(this.rgba, color);\n  }\n\n  /**\n   * 校验输入色是否是一个有效颜色\n   * @param color\n   * @returns\n   */\n  static isValid(color: string): boolean {\n    if (parseGradientString(color)) {\n      return true;\n    }\n    return tinyColor(color).isValid();\n  }\n\n  /**\n   * 对象转颜色字符串\n   */\n  static object2color(object: any, format: ColorFormat) {\n    if (format === 'CMYK') {\n      const { c, m, y, k } = object;\n      return `cmyk(${c}, ${m}, ${y}, ${k})`;\n    }\n\n    if (format === 'RGB' || format === 'RGBA') {\n      return tinyColor(object).toRgbString();\n    }\n\n    if (format === 'HSL' || format === 'HSLA') {\n      return tinyColor(object).toHslString();\n    }\n\n    if (format === 'HSV' || format === 'HSVA') {\n      return tinyColor(object).toHsvString();\n    }\n\n    return tinyColor(object).toHexString();\n  }\n\n  /**\n   * 是否是渐变色\n   * @param input\n   * @returns\n   */\n  static isGradientColor = (input: string) => !!isGradientColor(input);\n\n  /**\n   * 比较两个颜色是否相同\n   * @param color1\n   * @param color2\n   * @returns\n   */\n  static compare = (color1: string, color2: string): boolean => {\n    const isGradientColor1 = Color.isGradientColor(color1);\n    const isGradientColor2 = Color.isGradientColor(color2);\n    if (isGradientColor1 && isGradientColor2) {\n      const gradientStr1 = parseGradientString(color1);\n      const gradientStr2 = parseGradientString(color2);\n      if (!gradientStr1 || !gradientStr2) return false;\n\n      const gradientColor1 = gradientColors2string(gradientStr1);\n      const gradientColor2 = gradientColors2string(gradientStr2);\n      return gradientColor1 === gradientColor2;\n    }\n    if (!isGradientColor1 && !isGradientColor2) {\n      return tinyColor.equals(color1, color2);\n    }\n    return false;\n  };\n}\n\nconst COLOR_OBJECT_OUTPUT_KEYS = [\n  'alpha',\n  'css',\n  'hex',\n  'hex8',\n  'hsl',\n  'hsla',\n  'hsv',\n  'hsva',\n  'rgb',\n  'rgba',\n  'saturation',\n  'value',\n  'isGradient',\n];\n\n/**\n * 获取对外输出的color对象\n * @param color\n * @returns\n */\nexport const getColorObject = (color: Color): ColorObject | null => {\n  if (!color) {\n    return null;\n  }\n  const colorObject = Object.create(null);\n  COLOR_OBJECT_OUTPUT_KEYS.forEach((key) => {\n    colorObject[key] = (color as { [key: string]: any })[key];\n  });\n  if (color.isGradient) {\n    colorObject.linearGradient = color.linearGradient;\n  }\n  return colorObject;\n};\n\nexport default Color;\n"],"names":["mathRound","Math","round","hsv2rgba","states","tinyColor","toRgb","hsv2hsva","toHsv","hsv2hsla","toHsl","gradientColors2string","object","points","degree","colorsStop","sort","pA","pB","left","map","p","concat","color","join","getColorWithoutAlpha","setAlpha","toHexString","genId","random","toString","genGradientPoint","id","Color","input","_classCallCheck","_defineProperty","s","v","h","a","colors","selectedId","css","update","_createClass","key","value","_this","originColor","gradientColors","parseGradientString","isGradient","colorHsv","updateCurrentGradientColor","colorInput","_points$","_this$gradientSelecte","c","index","_this$gradientStates$","gradientStates","linearGradient","gradientSelectedPoint","updateStates","get","set","max","min","_hsv2rgba","r","g","b","_hsv2rgba2","_this$getHsva","getHsva","_this$getHsva2","_this$getHsla","getHsla","l","_this$getHsla2","toHex8String","_this$getCmyk","getCmyk","m","y","k","rgba","gradientDegree","_this$gradientSelecte2","gradientSelectedId","find","getFormatsColorMap","HEX","hex","CMYK","cmyk","RGB","rgb","RGBA","HSL","hsl","HSLA","hsla","HSV","hsv","HSVA","hsva","CSS","HEX8","hex8","getFormattedColor","format","enableAlpha","finalFormat","ALPHA_FORMAT_MAP","length","current","findIndex","newColor","_objectSpread","splice","slice","cmykInputToColor","isTooGray","isTooDark","diff","abs","getRgba","_hsv2rgba3","_this$getRgba","_rgb2cmyk","rgb2cmyk","_rgb2cmyk2","_slicedToArray","_hsv2hsva","_hsv2hsla","equals","isValid","object2color","toRgbString","toHslString","toHsvString","_Color","isGradientColor","color1","color2","isGradientColor1","isGradientColor2","gradientStr1","gradientStr2","gradientColor1","gradientColor2","COLOR_OBJECT_OUTPUT_KEYS","getColorObject","colorObject","Object","create","forEach"],"mappings":"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"}