{"version":3,"file":"cmyk.mjs","sources":["../../../../src/_common/js/color-picker/cmyk.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"],"names":["computedK","computedC","computedM","computedY","r","g","b"],"mappings":";;;;;;AAOO,sCAAA,IAAA,QAAA,GAAA,SAAA,QAAA,CAAA,GAAA,EAAA,KAAA,EAAA,IAAA,EAAA;;;;;AAMC,EAAA,IAAA,CAAA,GAAA,QAAA,CAAA,EAAA,CAAA,MAAA,CAAA,GAAA,CAAA,CAAA,OAAA,CAAA,KAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA;AACA,EAAA,IAAA,CAAA,GAAA,QAAA,CAAA,EAAA,CAAA,MAAA,CAAA,KAAA,CAAA,CAAA,OAAA,CAAA,KAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA;AACA,EAAA,IAAA,CAAA,GAAA,QAAA,CAAA,EAAA,CAAA,MAAA,CAAA,IAAA,CAAA,CAAA,OAAA,CAAA,KAAA,EAAA,EAAA,CAAA,EAAA,EAAA,CAAA,CAAA;;AAGQA,IAAAA,SAAAA,GAAAA,CAAAA,CAAAA;;AAEd,GAAA;AAEAC,EAAAA,SAAAA,GAAAA,CAAAA,GAAAA,CAAAA,GAAAA,GAAAA,CAAAA;AACAC,EAAAA,SAAAA,GAAAA,CAAAA,GAAAA,CAAAA,GAAAA,GAAAA,CAAAA;AACAC,EAAAA,SAAAA,GAAAA,CAAAA,GAAAA,CAAAA,GAAAA,GAAAA,CAAAA;AAEM,EAAA,IAAA,MAAA,GAAA,IAAA,CAAA,GAAA,CAAA,SAAA,EAAA,IAAA,CAAA,GAAA,CAAA,SAAA,EAAA,SAAA,CAAA,CAAA,CAAA;;;;AAIMH,EAAAA,SAAAA,GAAAA,MAAAA,CAAAA;;AAGd,EAAA;AAUO,IAAA,QAAA,GAAA,SAAA,QAAA,CAAA,IAAA,EAAA,OAAA,EAAA,MAAA,EAAA,KAAA,EAAA;AACL,EAAA,IAAA,CAAA,GAAA,IAAA,GAAA,GAAA,CAAA;AACA,EAAA,IAAA,CAAA,GAAA,OAAA,GAAA,GAAA,CAAA;AACA,EAAA,IAAA,CAAA,GAAA,MAAA,GAAA,GAAA,CAAA;AACA,EAAA,IAAA,CAAA,GAAA,KAAA,GAAA,GAAA,CAAA;;;;AAMA,EAAA,IAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA;AACA,EAAA,IAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA;AACA,EAAA,IAAA,CAAA,GAAA,CAAA,GAAA,CAAA,CAAA;;;;;AAMEI,IAAAA,CAAAA,EAAAA,CAAAA;AACAC,IAAAA,CAAAA,EAAAA,CAAAA;AACAC,IAAAA,CAAAA,EAAAA,CAAAA;;AAEJ,EAAA;AAEA,IAAA,eAAA,GAAA,yCAAA,CAAA;AAEA,IAAA,QAAA,GAAA,SAAA,QAAA,CAAA,GAAA,EAAA;AAAkC,EAAA,OAAA,IAAA,CAAA,GAAA,CAAA,CAAA,EAAA,IAAA,CAAA,GAAA,CAAA,GAAA,EAAA,QAAA,CAAA,GAAA,EAAA,EAAA,CAAA,CAAA,CAAA,CAAA;AAA4C,CAAA,CAAA;AAOvE,IAAA,gBAAA,GAAA,SAAA,gBAAA,CAAA,KAAA,EAAA;AACD,EAAA,IAAA,OAAA,CAAA,IAAA,CAAA,KAAA,CAAA,EAAA;;AAEI,IAAA,IAAA,KAAA,GAAA,GAAA,CAAA,KAAA,CAAA,eAAA,CAAA,CAAA;;;;;;;;;;AAOR,GAAA;AACO,EAAA,OAAA,KAAA,CAAA;AACT;;;;"}