{"version":3,"file":"index.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"],"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': 225,\n  'left top': 225,\n  'top right': 135,\n  'right top': 135,\n  'bottom left': 315,\n  'left bottom': 315,\n  'bottom right': 45,\n  'right bottom': 45,\n};\n\n/**\n * 解析渐变字符串为 GradientColors 对象\n * @param input\n * @returns\n */\nexport const parseGradientString = (input: string): GradientColors | boolean => {\n  const match = isGradientColor(input);\n  if (!match) {\n    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()) {\n    return false;\n  }\n  const points: GradientColorPoint[] = result.colorStopList.map(({ color, position }) => {\n    const point = Object.create(null);\n    point.color = tinyColor(color).toRgbString();\n    point.left = parseFloat(position);\n    return point;\n  });\n  gradientColors.points = points;\n  let degree = parseInt(result.angle, 10);\n  if (Number.isNaN(degree)) {\n    degree = sideCornerDegreeMap[result.sideCorner as keyof typeof sideCornerDegreeMap] || 90;\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 {\n  parseGradientString, GradientColors, GradientColorPoint, isGradientColor\n} from './gradient';\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 * @param object\n * @returns\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 * @param color\n * @returns\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): GradientColorPoint => ({\n  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) {\n      return;\n    }\n    const gradientColors = parseGradientString(input);\n    if (this.isGradient && !gradientColors) {\n      // 处理gradient模式下切换不同格式时的交互问题，输入的不是渐变字符串才使用当前处理\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    if (gradientColors) {\n      this.isGradient = true;\n      const object = gradientColors as GradientColors;\n      const points = object.points.map((c) => genGradientPoint(c.left, c.color));\n      this.gradientStates = {\n        colors: points,\n        degree: object.degree,\n        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  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 {\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   * @param color\n   * @returns\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  static hsva2color(h: number, s: number, v: number, a: number) {\n    return tinyColor({\n      h, s, v, a\n    }).toHsvString();\n  }\n\n  static hsla2color(h: number, s: number, l: number, a: number) {\n    return tinyColor({\n      h, s, l, a\n    }).toHslString();\n  }\n\n  static rgba2color(r: number, g: number, b: number, a: number) {\n    return tinyColor({\n      r, g, b, a\n    }).toHsvString();\n  }\n\n  static hex2color(hex: string, a: number) {\n    const color = tinyColor(hex);\n    color.setAlpha(a);\n    return color.toHexString();\n  }\n\n  /**\n   * 对象转颜色字符串\n   * @param object\n   * @param format\n   * @returns\n   */\n  static object2color(object: any, format: string) {\n    if (format === 'CMYK') {\n      const {\n        c, m, y, k\n      } = object;\n      return `cmyk(${c}, ${m}, ${y}, ${k})`;\n    }\n    const color = tinyColor(object, {\n      format,\n    });\n    return color.toRgbString();\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 gradientColor1 = gradientColors2string(parseGradientString(color1) as GradientColors);\n      const gradientColor2 = gradientColors2string(parseGradientString(color2) as GradientColors);\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: (this: Draggable, event: DraggableEvent) => {};\n  drag: (this: Draggable, event: DraggableEvent) => {};\n  end: (this: Draggable, event: DraggableEvent) => {};\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"],"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","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","originColor","isGradient","colorHsv","updateCurrentGradientColor","colorInput","_points$","_this$gradientSelecte","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","current","index","findIndex","newColor","_objectSpread","splice","slice","getRgba","_hsv2rgba3","_this$getRgba","_rgb2cmyk","_rgb2cmyk2","_slicedToArray","_hsv2hsva","_hsv2hsla","equals","isValid","hsva2color","toHsvString","hsla2color","toHslString","rgba2color","hex2color","object2color","format","_Color","color1","color2","isGradientColor1","isGradientColor2","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","_this","setTimeout","rect","getBoundingClientRect","mouseEvent","clientX","clientY","height","x","width"],"mappings":"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"}