{"version":3,"file":"dep-b88ce75b.mjs","sources":["../../../common/js/color-picker/cmyk.ts","../../../common/js/color-picker/gradient.ts","../../../common/js/color-picker/color.ts","../../../common/js/color-picker/draggable.ts","../../../common/js/color-picker/format.ts"],"sourcesContent":["/**\n * rgb 转 cmyk\n * @param red\n * @param green\n * @param blue\n * @returns\n */\nexport const rgb2cmyk = (red: number, green: number, blue: number) => {\n  let computedC = 0;\n  let computedM = 0;\n  let computedY = 0;\n  let computedK = 0;\n\n  const r = parseInt(`${red}`.replace(/\\s/g, ''), 10);\n  const g = parseInt(`${green}`.replace(/\\s/g, ''), 10);\n  const b = parseInt(`${blue}`.replace(/\\s/g, ''), 10);\n\n  if (r === 0 && g === 0 && b === 0) {\n    computedK = 1;\n    return [0, 0, 0, 1];\n  }\n\n  computedC = 1 - r / 255;\n  computedM = 1 - g / 255;\n  computedY = 1 - b / 255;\n\n  const minCMY = Math.min(computedC, Math.min(computedM, computedY));\n  computedC = (computedC - minCMY) / (1 - minCMY);\n  computedM = (computedM - minCMY) / (1 - minCMY);\n  computedY = (computedY - minCMY) / (1 - minCMY);\n  computedK = minCMY;\n\n  return [computedC, computedM, computedY, computedK];\n};\n\n/**\n * cmyk 转 rgb\n * @param cyan\n * @param magenta\n * @param yellow\n * @param black\n * @returns\n */\nexport const cmyk2rgb = (cyan: number, magenta: number, yellow: number, black: number) => {\n  let c = cyan / 100;\n  let m = magenta / 100;\n  let y = yellow / 100;\n  const k = black / 100;\n\n  c = c * (1 - k) + k;\n  m = m * (1 - k) + k;\n  y = y * (1 - k) + k;\n\n  let r = 1 - c;\n  let g = 1 - m;\n  let b = 1 - y;\n\n  r = Math.round(255 * r);\n  g = Math.round(255 * g);\n  b = Math.round(255 * b);\n  return {\n    r,\n    g,\n    b,\n  };\n};\n\nconst REG_CMYK_STRING = /cmyk\\((\\d+%?),(\\d+%?),(\\d+%?),(\\d+%?)\\)/;\n\nconst toNumber = (str: string) => Math.max(0, Math.min(255, parseInt(str, 10)));\n\n/**\n * 输入色转rgb\n * @param input\n * @returns\n */\nexport const cmykInputToColor = (input: string) => {\n  if (/cmyk/i.test(input)) {\n    const str = input.replace(/\\s/g, '');\n    const match = str.match(REG_CMYK_STRING);\n    const c = toNumber(match[1]);\n    const m = toNumber(match[2]);\n    const y = toNumber(match[3]);\n    const k = toNumber(match[4]);\n    const { r, g, b } = cmyk2rgb(c, m, y, k);\n    return `rgb(${r}, ${g}, ${b})`;\n  }\n  return input;\n};\n","import { isString, isNull } from 'lodash-es';\n/* eslint-disable no-param-reassign */\n/**\n * 用于反解析渐变字符串为对象\n * https://stackoverflow.com/questions/20215440/parse-css-gradient-rule-with-javascript-regex\n */\nimport tinyColor from 'tinycolor2';\n\n/**\n * Utility combine multiple regular expressions.\n *\n * @param {RegExp[]|string[]} regexpList List of regular expressions or strings.\n * @param {string} flags Normal RegExp flags.\n */\nconst combineRegExp = (regexpList: (string | RegExp)[], flags: string): RegExp => {\n  let source = '';\n  for (let i = 0; i < regexpList.length; i++) {\n    if (isString(regexpList[i])) {\n      source += regexpList[i];\n    } else {\n      source += (regexpList[i] as RegExp).source;\n    }\n  }\n  return new RegExp(source, flags);\n};\n\ninterface RegExpLib {\n  gradientSearch: RegExp;\n  colorStopSearch: RegExp;\n}\n\ninterface ColorStop {\n  color: string;\n  position?: string;\n}\n\ninterface ParseGradientResult {\n  original: string;\n  colorStopList?: ColorStop[];\n  line?: string;\n  angle?: string;\n  sideCorner?: string;\n}\n\n/**\n * Generate the required regular expressions once.\n *\n * Regular Expressions are easier to manage this way and can be well described.\n *\n * @result {object} Object containing regular expressions.\n */\nconst generateRegExp = (): RegExpLib => {\n  // Note any variables with \"Capture\" in name include capturing bracket set(s).\n  const searchFlags = 'gi'; // ignore case for angles, \"rgb\" etc\n  const rAngle = /(?:[+-]?\\d*\\.?\\d+)(?:deg|grad|rad|turn)/; // Angle +ive, -ive and angle types\n  // optional 2nd part\n  const rSideCornerCapture = /to\\s+((?:(?:left|right|top|bottom)(?:\\s+(?:top|bottom|left|right))?))/;\n  const rComma = /\\s*,\\s*/; // Allow space around comma.\n  const rColorHex = /#(?:[a-f0-9]{6}|[a-f0-9]{3})/; // 3 or 6 character form\n  const rDigits3 = /\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*\\)/;\n  const // \"(1, 2, 3)\"\n    rDigits4 = /\\(\\s*(?:\\d{1,3}\\s*,\\s*){2}\\d{1,3}\\s*,\\s*\\d*\\.?\\d+\\)/;\n  const // \"(1, 2, 3, 4)\"\n    rValue = /(?:[+-]?\\d*\\.?\\d+)(?:%|[a-z]+)?/;\n  const // \".9\", \"-5px\", \"100%\".\n    rKeyword = /[_a-z-][_a-z0-9-]*/;\n  const // \"red\", \"transparent\".\n    rColor = combineRegExp(\n      ['(?:', rColorHex, '|', '(?:rgb|hsl)', rDigits3, '|', '(?:rgba|hsla)', rDigits4, '|', rKeyword, ')'],\n      ''\n    );\n  const rColorStop = combineRegExp([rColor, '(?:\\\\s+', rValue, '(?:\\\\s+', rValue, ')?)?'], '');\n  const // Single Color Stop, optional %, optional length.\n    rColorStopList = combineRegExp(['(?:', rColorStop, rComma, ')*', rColorStop], '');\n  const // List of color stops min 1.\n    rLineCapture = combineRegExp(['(?:(', rAngle, ')|', rSideCornerCapture, ')'], '');\n  const // Angle or SideCorner\n    rGradientSearch = combineRegExp(['(?:(', rLineCapture, ')', rComma, ')?(', rColorStopList, ')'], searchFlags);\n  const // Capture 1:\"line\", 2:\"angle\" (optional), 3:\"side corner\" (optional) and 4:\"stop list\".\n    rColorStopSearch = combineRegExp(\n      ['\\\\s*(', rColor, ')', '(?:\\\\s+', '(', rValue, '))?', '(?:', rComma, '\\\\s*)?'],\n      searchFlags\n    ); // Capture 1:\"color\" and 2:\"position\" (optional).\n\n  return {\n    gradientSearch: rGradientSearch,\n    colorStopSearch: rColorStopSearch,\n  };\n};\n\n/**\n * Actually parse the input gradient parameters string into an object for reusability.\n *\n *\n * @note Really this only supports the standard syntax not historical versions, see MDN for details\n *       https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient\n *\n * @param regExpLib\n * @param {string} input\n * @returns {object|undefined}\n */\nconst parseGradient = (regExpLib: RegExpLib, input: string) => {\n  let result: ParseGradientResult;\n  let matchColorStop: any;\n  let stopResult: ColorStop;\n\n  // reset search position, because we reuse regex.\n  regExpLib.gradientSearch.lastIndex = 0;\n\n  const matchGradient = regExpLib.gradientSearch.exec(input);\n  if (!isNull(matchGradient)) {\n    result = {\n      original: matchGradient[0],\n      colorStopList: [],\n    };\n\n    // Line (Angle or Side-Corner).\n    if (matchGradient[1]) {\n      // eslint-disable-next-line prefer-destructuring\n      result.line = matchGradient[1];\n    }\n    // Angle or undefined if side-corner.\n    if (matchGradient[2]) {\n      // eslint-disable-next-line prefer-destructuring\n      result.angle = matchGradient[2];\n    }\n    // Side-corner or undefined if angle.\n    if (matchGradient[3]) {\n      // eslint-disable-next-line prefer-destructuring\n      result.sideCorner = matchGradient[3];\n    }\n\n    // reset search position, because we reuse regex.\n    regExpLib.colorStopSearch.lastIndex = 0;\n\n    // Loop though all the color-stops.\n    matchColorStop = regExpLib.colorStopSearch.exec(matchGradient[4]);\n    while (!isNull(matchColorStop)) {\n      stopResult = {\n        color: matchColorStop[1],\n      };\n\n      // Position (optional).\n      if (matchColorStop[2]) {\n        // eslint-disable-next-line prefer-destructuring\n        stopResult.position = matchColorStop[2];\n      }\n      result.colorStopList.push(stopResult);\n\n      // Continue searching from previous position.\n      matchColorStop = regExpLib.colorStopSearch.exec(matchGradient[4]);\n    }\n  }\n\n  // Can be undefined if match not found.\n  return result;\n};\n\nexport interface GradientColorPoint {\n  id?: string;\n  color?: string;\n  left?: number;\n}\n\nexport interface GradientColors {\n  points: GradientColorPoint[];\n  degree: number;\n}\n\nconst REGEXP_LIB = generateRegExp();\nconst REG_GRADIENT = /.*gradient\\s*\\(((?:\\([^)]*\\)|[^)(]*)*)\\)/gim;\n\n/**\n * 验证是否是渐变字符串\n * @param input\n * @returns\n */\nexport const isGradientColor = (input: string): null | RegExpExecArray => {\n  REG_GRADIENT.lastIndex = 0;\n  return REG_GRADIENT.exec(input);\n};\n\n// 边界字符串和角度关系\nconst sideCornerDegreeMap = {\n  top: 0,\n  right: 90,\n  bottom: 180,\n  left: 270,\n  'top left': 315,\n  'left top': 315,\n  'top right': 45,\n  'right top': 45,\n  'bottom left': 225,\n  'left bottom': 225,\n  'bottom right': 135,\n  'right bottom': 135,\n};\n\n/**\n * 解析渐变字符串为 GradientColors 对象\n * @param input\n * @returns\n */\nexport const parseGradientString = (input: string): GradientColors | false => {\n  const match = isGradientColor(input);\n  if (!match) return false;\n\n  const gradientColors: GradientColors = {\n    points: [],\n    degree: 0,\n  };\n\n  const result: ParseGradientResult = parseGradient(REGEXP_LIB, match[1]);\n  if (result.original.trim() !== match[1].trim()) return false;\n\n  const points: GradientColorPoint[] = result.colorStopList.map(({ color, position }, index, array) => {\n    const point = Object.create(null);\n    point.color = tinyColor(color).toRgbString();\n\n    let left = parseFloat(position);\n    if (Number.isNaN(left)) {\n      left = (index / (array.length - 1)) * 100;\n    }\n\n    point.left = left;\n    return point;\n  });\n  gradientColors.points = points;\n\n  let degree = parseInt(result.angle, 10);\n  if (Number.isNaN(degree)) {\n    /* 如果角度不存在，使用 CSS 渐变的默认逻辑（180 deg）\n       https://developer.mozilla.org/zh-CN/docs/Web/CSS/CSS_images/Using_CSS_gradients */\n    degree = sideCornerDegreeMap[result.sideCorner as keyof typeof sideCornerDegreeMap] || 180;\n  }\n  gradientColors.degree = degree;\n\n  return gradientColors;\n};\n\nexport default parseGradientString;\n","import tinyColor from 'tinycolor2';\nimport { cmykInputToColor, rgb2cmyk } from './cmyk';\nimport { ALPHA_FORMAT_MAP } from './constants';\nimport { GradientColorPoint, GradientColors, isGradientColor, parseGradientString } 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) =>\n        genGradientPoint(c.left, c.color, this.gradientStates.colors[index]?.id)\n      );\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 { r, g, b, a } = 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 { h, s, v, a } = 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 { h, s, l, a } = 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 { c, m, y, k } = 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 ? ALPHA_FORMAT_MAP[format as AlphaConvertibleFormat] : 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    this.states = hsva;\n  }\n\n  getRgba() {\n    const { r, g, b, a } = 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 { h, s, v, a } = 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 { h, s, l, a } = 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","/* eslint-disable no-use-before-define */\nexport interface Coordinate {\n  x: number;\n  y: number;\n}\n\nexport type DraggableEvent = MouseEvent;\n\ninterface DraggableCallback {\n  (coordinate: Coordinate, event?: DraggableEvent): void;\n}\n\nexport interface DraggableProps {\n  start?: DraggableCallback;\n  drag?: DraggableCallback;\n  end?: DraggableCallback;\n}\n\ninterface DraggableHandles {\n  start: (event: DraggableEvent) => void;\n  drag: (event: DraggableEvent) => void;\n  end: (event: DraggableEvent) => void;\n}\n\n// 配置项\nconst defaultsOptions: DraggableProps = {\n  start: (coordinate: Coordinate, event: DraggableEvent) => {},\n  drag: (coordinate: Coordinate, event: DraggableEvent) => {},\n  end: (coordinate: Coordinate, event: DraggableEvent) => {},\n};\n\nexport class Draggable {\n  private dragging = false;\n\n  private $el: HTMLElement;\n\n  private props: DraggableProps;\n\n  private handles: DraggableHandles;\n\n  constructor(el: HTMLElement, options?: DraggableProps) {\n    this.$el = el;\n    this.props = { ...defaultsOptions, ...options };\n    this.handles = {\n      start: this.#dragStart.bind(this),\n      drag: this.#drag.bind(this),\n      end: this.#dragEnd.bind(this),\n    };\n    this.$el.addEventListener('mousedown', this.handles.start, false);\n  }\n\n  #dragStart(event: DraggableEvent) {\n    if (this.dragging) {\n      return;\n    }\n    // event.preventDefault();\n    window.addEventListener('mousemove', this.handles.drag, false);\n    window.addEventListener('mouseup', this.handles.end, false);\n    window.addEventListener('contextmenu', this.handles.end, false);\n    this.dragging = true;\n    this.props.start(this.#getCoordinate(event), event);\n  }\n\n  #drag(event: DraggableEvent) {\n    if (!this.dragging) {\n      return;\n    }\n    this.props.drag(this.#getCoordinate(event), event);\n  }\n\n  #dragEnd(event: DraggableEvent) {\n    setTimeout(() => {\n      this.dragging = false;\n      this.props.end(this.#getCoordinate(event), event);\n    }, 0);\n    window.removeEventListener('mousemove', this.handles.drag, false);\n    window.removeEventListener('mouseup', this.handles.end, false);\n    window.removeEventListener('contextmenu', this.handles.end, false);\n  }\n\n  #getCoordinate(event: DraggableEvent) {\n    const rect = this.$el.getBoundingClientRect();\n    const mouseEvent = event;\n    const left = mouseEvent.clientX - rect.left;\n    const top = mouseEvent.clientY - rect.top;\n    return {\n      y: Math.min(Math.max(0, top), rect.height),\n      x: Math.min(Math.max(0, left), rect.width),\n    };\n  }\n\n  destroy() {\n    this.$el.removeEventListener('mousedown', this.handles.start, false);\n    window.removeEventListener('mousemove', this.handles.drag, false);\n    window.removeEventListener('mouseup', this.handles.end, false);\n    window.removeEventListener('contextmenu', this.handles.end, false);\n  }\n}\n\nexport default Draggable;\n","import Color from './color';\nimport { ALPHA_FORMAT_MAP, COLOR_FORMAT_INPUTS, FORMATS } from './constants';\nimport type { AlphaConvertibleFormat, BasicColorFormat, ColorFormat } from './types';\n\n/**\n * 兜底处理用户传入的格式，例如：\n * - 传入 `RGB`， 但 `enableAlpha` ，则返回 `RGBA`\n */\nexport const initColorFormat = (format: ColorFormat, enableAlpha: boolean) => {\n  if (enableAlpha && format in ALPHA_FORMAT_MAP) {\n    return format in ALPHA_FORMAT_MAP ? ALPHA_FORMAT_MAP[format as AlphaConvertibleFormat] : format;\n  }\n  return format as BasicColorFormat;\n};\n\n/**\n * 获取不同格式的输入输出值\n * - encode：将字符串转换为单独的颜色值，例如 `{r: 255, g: 255, b: 255}`\n * - decode：获取完整的颜色字符串，例如 `rgb(255, 255, 255)`\n */\nexport const getColorFormatMap = (color: Color, type: 'encode' | 'decode') => {\n  if (type === 'encode') {\n    return {\n      HSV: color.getHsva(),\n      HSVA: color.getHsva(),\n      HSL: color.getHsla(),\n      HSLA: color.getHsla(),\n      RGB: color.getRgba(),\n      RGBA: color.getRgba(),\n      CMYK: color.getCmyk(),\n      CSS: {\n        css: color.css,\n      },\n      HEX: {\n        hex: color.hex,\n      },\n      HEX8: {\n        hex: color.hex8, // 为了减少转换 hex8 的 key 也对应 hex\n      },\n    };\n  }\n\n  // decode\n  return color.getFormatsColorMap();\n};\n\n/**\n * 获取下拉框的格式选项\n */\nexport const getColorFormatOptions = (enableAlpha: boolean) =>\n  enableAlpha\n    ? FORMATS.map((item) => (item in ALPHA_FORMAT_MAP ? ALPHA_FORMAT_MAP[item as AlphaConvertibleFormat] : item))\n    : FORMATS;\n\n/**\n * 获取当前格式的输入框配置\n */\nexport const getColorFormatInputs = (format: ColorFormat = 'RGB', enableAlpha: boolean) => {\n  let finalFormat;\n\n  /* 为了减少 `ALPHA_FORMAT_MAP` 中的重复代码\n     `RGBA/HEX8/HSLA/HSVA` 会被转换为 `RGB/HEX/HSL/HSV` 后再匹配\n     但在下一步会 push 一个代表透明度的输入框 */\n  if (enableAlpha) {\n    finalFormat =\n      Object.keys(ALPHA_FORMAT_MAP).find(\n        (key) => key in ALPHA_FORMAT_MAP && ALPHA_FORMAT_MAP[key as AlphaConvertibleFormat] === format\n      ) || format;\n  } else {\n    finalFormat = format;\n  }\n\n  if (!COLOR_FORMAT_INPUTS[finalFormat as BasicColorFormat]) return [];\n\n  const configs = [...COLOR_FORMAT_INPUTS[finalFormat as BasicColorFormat]];\n\n  // CMYK 格式不支持透明度\n  if (enableAlpha && format !== 'CMYK') {\n    configs.push({\n      type: 'inputNumber',\n      key: 'a',\n      min: 0,\n      max: 100,\n      format: (value: number) => `${value}%`,\n      flex: 1.15,\n    });\n  }\n\n  return configs;\n};\n"],"names":["rgb2cmyk","red","green","blue","computedC","computedM","computedY","computedK","r","parseInt","concat","replace","g","b","minCMY","Math","min","cmyk2rgb","cyan","magenta","yellow","black","c","m","y","k","round","REG_CMYK_STRING","toNumber","str","max","cmykInputToColor","input","test","match","_cmyk2rgb","combineRegExp","regexpList","flags","source","i","length","isString","RegExp","generateRegExp","searchFlags","rAngle","rSideCornerCapture","rComma","rColorHex","rDigits3","rDigits4","rValue","rKeyword","rColor","rColorStop","rColorStopList","rLineCapture","rGradientSearch","rColorStopSearch","gradientSearch","colorStopSearch","parseGradient","regExpLib","result","matchColorStop","stopResult","lastIndex","matchGradient","exec","isNull","original","colorStopList","line","angle","sideCorner","color","position","push","REGEXP_LIB","REG_GRADIENT","isGradientColor","sideCornerDegreeMap","top","right","bottom","left","parseGradientString","gradientColors","points","degree","trim","map","_ref","index","array","point","Object","create","tinyColor","toRgbString","parseFloat","Number","isNaN","mathRound","hsv2rgba","states","toRgb","hsv2hsva","toHsv","hsv2hsla","toHsl","gradientColors2string","object","colorsStop","sort","pA","pB","p","join","getColorWithoutAlpha","setAlpha","toHexString","genId","random","toString","genGradientPoint","id","Color","_classCallCheck","_defineProperty","s","v","h","a","colors","selectedId","css","update","_createClass","key","value","_this","originColor","isGradient","colorHsv","updateCurrentGradientColor","colorInput","_points$","_this$gradientSelecte","_this$gradientStates$","gradientStates","linearGradient","gradientSelectedPoint","updateStates","get","set","_hsv2rgba","_hsv2rgba2","_this$getHsva","getHsva","_this$getHsva2","_this$getHsla","getHsla","l","_this$getHsla2","toHex8String","_this$getCmyk","getCmyk","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","current","findIndex","newColor","_objectSpread","splice","slice","getRgba","_hsv2rgba3","_this$getRgba","_rgb2cmyk","_rgb2cmyk2","_slicedToArray","_hsv2hsva","_hsv2hsla","equals","isValid","object2color","toHslString","toHsvString","_Color","color1","color2","isGradientColor1","isGradientColor2","gradientStr1","gradientStr2","gradientColor1","gradientColor2","COLOR_OBJECT_OUTPUT_KEYS","getColorObject","colorObject","forEach","defaultsOptions","start","coordinate","event","drag","end","_Draggable_brand","WeakSet","Draggable","el","options","_classPrivateMethodInitSpec","$el","props","handles","_assertClassBrand","_dragStart","bind","_drag","_dragEnd","addEventListener","destroy","removeEventListener","window","dragging","_getCoordinate","call","setTimeout","rect","getBoundingClientRect","mouseEvent","clientX","clientY","height","x","width","initColorFormat","getColorFormatMap","type","getColorFormatOptions","FORMATS","item","getColorFormatInputs","arguments","undefined","keys","COLOR_FORMAT_INPUTS","configs","_toConsumableArray","flex"],"mappings":"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"}