9defeaba8494f5f937e910d65d96680c.json 21.5 KB
{"ast":null,"code":"import { convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb } from './conversion';\nimport { names } from './css-color-names';\nimport { boundAlpha, convertToPercentage } from './util';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\n\nexport function inputToRGB(color) {\n  var rgb = {\n    r: 0,\n    g: 0,\n    b: 0\n  };\n  var a = 1;\n  var s = null;\n  var v = null;\n  var l = null;\n  var ok = false;\n  var format = false;\n\n  if (typeof color === 'string') {\n    color = stringInputToObject(color);\n  }\n\n  if (typeof color === 'object') {\n    if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n      rgb = rgbToRgb(color.r, color.g, color.b);\n      ok = true;\n      format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n    } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n      s = convertToPercentage(color.s);\n      v = convertToPercentage(color.v);\n      rgb = hsvToRgb(color.h, s, v);\n      ok = true;\n      format = 'hsv';\n    } else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n      s = convertToPercentage(color.s);\n      l = convertToPercentage(color.l);\n      rgb = hslToRgb(color.h, s, l);\n      ok = true;\n      format = 'hsl';\n    }\n\n    if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n      a = color.a;\n    }\n  }\n\n  a = boundAlpha(a);\n  return {\n    ok: ok,\n    format: color.format || format,\n    r: Math.min(255, Math.max(rgb.r, 0)),\n    g: Math.min(255, Math.max(rgb.g, 0)),\n    b: Math.min(255, Math.max(rgb.b, 0)),\n    a: a\n  };\n} // <http://www.w3.org/TR/css3-values/#integers>\n\nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?'; // <http://www.w3.org/TR/css3-values/#number-value>\n\nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?'; // Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\n\nvar CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\"; // Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\n\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\nvar matchers = {\n  CSS_UNIT: new RegExp(CSS_UNIT),\n  rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n  rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n  hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n  hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n  hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n  hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n  hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n  hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n  hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n  hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/\n};\n/**\n * Permissive string parsing.  Take in a number of formats, and output an object\n * based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\n\nexport function stringInputToObject(color) {\n  color = color.trim().toLowerCase();\n\n  if (color.length === 0) {\n    return false;\n  }\n\n  var named = false;\n\n  if (names[color]) {\n    color = names[color];\n    named = true;\n  } else if (color === 'transparent') {\n    return {\n      r: 0,\n      g: 0,\n      b: 0,\n      a: 0,\n      format: 'name'\n    };\n  } // Try to match string input using regular expressions.\n  // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n  // Just return an object and let the conversion functions handle that.\n  // This way the result will be the same whether the tinycolor is initialized with string or object.\n\n\n  var match = matchers.rgb.exec(color);\n\n  if (match) {\n    return {\n      r: match[1],\n      g: match[2],\n      b: match[3]\n    };\n  }\n\n  match = matchers.rgba.exec(color);\n\n  if (match) {\n    return {\n      r: match[1],\n      g: match[2],\n      b: match[3],\n      a: match[4]\n    };\n  }\n\n  match = matchers.hsl.exec(color);\n\n  if (match) {\n    return {\n      h: match[1],\n      s: match[2],\n      l: match[3]\n    };\n  }\n\n  match = matchers.hsla.exec(color);\n\n  if (match) {\n    return {\n      h: match[1],\n      s: match[2],\n      l: match[3],\n      a: match[4]\n    };\n  }\n\n  match = matchers.hsv.exec(color);\n\n  if (match) {\n    return {\n      h: match[1],\n      s: match[2],\n      v: match[3]\n    };\n  }\n\n  match = matchers.hsva.exec(color);\n\n  if (match) {\n    return {\n      h: match[1],\n      s: match[2],\n      v: match[3],\n      a: match[4]\n    };\n  }\n\n  match = matchers.hex8.exec(color);\n\n  if (match) {\n    return {\n      r: parseIntFromHex(match[1]),\n      g: parseIntFromHex(match[2]),\n      b: parseIntFromHex(match[3]),\n      a: convertHexToDecimal(match[4]),\n      format: named ? 'name' : 'hex8'\n    };\n  }\n\n  match = matchers.hex6.exec(color);\n\n  if (match) {\n    return {\n      r: parseIntFromHex(match[1]),\n      g: parseIntFromHex(match[2]),\n      b: parseIntFromHex(match[3]),\n      format: named ? 'name' : 'hex'\n    };\n  }\n\n  match = matchers.hex4.exec(color);\n\n  if (match) {\n    return {\n      r: parseIntFromHex(match[1] + match[1]),\n      g: parseIntFromHex(match[2] + match[2]),\n      b: parseIntFromHex(match[3] + match[3]),\n      a: convertHexToDecimal(match[4] + match[4]),\n      format: named ? 'name' : 'hex8'\n    };\n  }\n\n  match = matchers.hex3.exec(color);\n\n  if (match) {\n    return {\n      r: parseIntFromHex(match[1] + match[1]),\n      g: parseIntFromHex(match[2] + match[2]),\n      b: parseIntFromHex(match[3] + match[3]),\n      format: named ? 'name' : 'hex'\n    };\n  }\n\n  return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\n\nexport function isValidCSSUnit(color) {\n  return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}","map":{"version":3,"sources":["C:/Users/kkwan_000/Desktop/git/2017110269/minsung/node_modules/@ctrl/tinycolor/dist/module/format-input.js"],"names":["convertHexToDecimal","hslToRgb","hsvToRgb","parseIntFromHex","rgbToRgb","names","boundAlpha","convertToPercentage","inputToRGB","color","rgb","r","g","b","a","s","v","l","ok","format","stringInputToObject","isValidCSSUnit","String","substr","h","Object","prototype","hasOwnProperty","call","Math","min","max","CSS_INTEGER","CSS_NUMBER","CSS_UNIT","PERMISSIVE_MATCH3","PERMISSIVE_MATCH4","matchers","RegExp","rgba","hsl","hsla","hsv","hsva","hex3","hex6","hex4","hex8","trim","toLowerCase","length","named","match","exec","Boolean"],"mappings":"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","sourcesContent":["import { convertHexToDecimal, hslToRgb, hsvToRgb, parseIntFromHex, rgbToRgb } from './conversion';\nimport { names } from './css-color-names';\nimport { boundAlpha, convertToPercentage } from './util';\n/**\n * Given a string or object, convert that input to RGB\n *\n * Possible string inputs:\n * ```\n * \"red\"\n * \"#f00\" or \"f00\"\n * \"#ff0000\" or \"ff0000\"\n * \"#ff000000\" or \"ff000000\"\n * \"rgb 255 0 0\" or \"rgb (255, 0, 0)\"\n * \"rgb 1.0 0 0\" or \"rgb (1, 0, 0)\"\n * \"rgba (255, 0, 0, 1)\" or \"rgba 255, 0, 0, 1\"\n * \"rgba (1.0, 0, 0, 1)\" or \"rgba 1.0, 0, 0, 1\"\n * \"hsl(0, 100%, 50%)\" or \"hsl 0 100% 50%\"\n * \"hsla(0, 100%, 50%, 1)\" or \"hsla 0 100% 50%, 1\"\n * \"hsv(0, 100%, 100%)\" or \"hsv 0 100% 100%\"\n * ```\n */\nexport function inputToRGB(color) {\n    var rgb = { r: 0, g: 0, b: 0 };\n    var a = 1;\n    var s = null;\n    var v = null;\n    var l = null;\n    var ok = false;\n    var format = false;\n    if (typeof color === 'string') {\n        color = stringInputToObject(color);\n    }\n    if (typeof color === 'object') {\n        if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {\n            rgb = rgbToRgb(color.r, color.g, color.b);\n            ok = true;\n            format = String(color.r).substr(-1) === '%' ? 'prgb' : 'rgb';\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {\n            s = convertToPercentage(color.s);\n            v = convertToPercentage(color.v);\n            rgb = hsvToRgb(color.h, s, v);\n            ok = true;\n            format = 'hsv';\n        }\n        else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {\n            s = convertToPercentage(color.s);\n            l = convertToPercentage(color.l);\n            rgb = hslToRgb(color.h, s, l);\n            ok = true;\n            format = 'hsl';\n        }\n        if (Object.prototype.hasOwnProperty.call(color, 'a')) {\n            a = color.a;\n        }\n    }\n    a = boundAlpha(a);\n    return {\n        ok: ok,\n        format: color.format || format,\n        r: Math.min(255, Math.max(rgb.r, 0)),\n        g: Math.min(255, Math.max(rgb.g, 0)),\n        b: Math.min(255, Math.max(rgb.b, 0)),\n        a: a,\n    };\n}\n// <http://www.w3.org/TR/css3-values/#integers>\nvar CSS_INTEGER = '[-\\\\+]?\\\\d+%?';\n// <http://www.w3.org/TR/css3-values/#number-value>\nvar CSS_NUMBER = '[-\\\\+]?\\\\d*\\\\.\\\\d+%?';\n// Allow positive/negative integer/number.  Don't capture the either/or, just the entire outcome.\nvar CSS_UNIT = \"(?:\" + CSS_NUMBER + \")|(?:\" + CSS_INTEGER + \")\";\n// Actual matching.\n// Parentheses and commas are optional, but not required.\n// Whitespace can take the place of commas or opening paren\nvar PERMISSIVE_MATCH3 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\nvar PERMISSIVE_MATCH4 = \"[\\\\s|\\\\(]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")[,|\\\\s]+(\" + CSS_UNIT + \")\\\\s*\\\\)?\";\nvar matchers = {\n    CSS_UNIT: new RegExp(CSS_UNIT),\n    rgb: new RegExp('rgb' + PERMISSIVE_MATCH3),\n    rgba: new RegExp('rgba' + PERMISSIVE_MATCH4),\n    hsl: new RegExp('hsl' + PERMISSIVE_MATCH3),\n    hsla: new RegExp('hsla' + PERMISSIVE_MATCH4),\n    hsv: new RegExp('hsv' + PERMISSIVE_MATCH3),\n    hsva: new RegExp('hsva' + PERMISSIVE_MATCH4),\n    hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n    hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,\n    hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,\n};\n/**\n * Permissive string parsing.  Take in a number of formats, and output an object\n * based on detected format.  Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`\n */\nexport function stringInputToObject(color) {\n    color = color.trim().toLowerCase();\n    if (color.length === 0) {\n        return false;\n    }\n    var named = false;\n    if (names[color]) {\n        color = names[color];\n        named = true;\n    }\n    else if (color === 'transparent') {\n        return { r: 0, g: 0, b: 0, a: 0, format: 'name' };\n    }\n    // Try to match string input using regular expressions.\n    // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]\n    // Just return an object and let the conversion functions handle that.\n    // This way the result will be the same whether the tinycolor is initialized with string or object.\n    var match = matchers.rgb.exec(color);\n    if (match) {\n        return { r: match[1], g: match[2], b: match[3] };\n    }\n    match = matchers.rgba.exec(color);\n    if (match) {\n        return { r: match[1], g: match[2], b: match[3], a: match[4] };\n    }\n    match = matchers.hsl.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], l: match[3] };\n    }\n    match = matchers.hsla.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], l: match[3], a: match[4] };\n    }\n    match = matchers.hsv.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], v: match[3] };\n    }\n    match = matchers.hsva.exec(color);\n    if (match) {\n        return { h: match[1], s: match[2], v: match[3], a: match[4] };\n    }\n    match = matchers.hex8.exec(color);\n    if (match) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            a: convertHexToDecimal(match[4]),\n            format: named ? 'name' : 'hex8',\n        };\n    }\n    match = matchers.hex6.exec(color);\n    if (match) {\n        return {\n            r: parseIntFromHex(match[1]),\n            g: parseIntFromHex(match[2]),\n            b: parseIntFromHex(match[3]),\n            format: named ? 'name' : 'hex',\n        };\n    }\n    match = matchers.hex4.exec(color);\n    if (match) {\n        return {\n            r: parseIntFromHex(match[1] + match[1]),\n            g: parseIntFromHex(match[2] + match[2]),\n            b: parseIntFromHex(match[3] + match[3]),\n            a: convertHexToDecimal(match[4] + match[4]),\n            format: named ? 'name' : 'hex8',\n        };\n    }\n    match = matchers.hex3.exec(color);\n    if (match) {\n        return {\n            r: parseIntFromHex(match[1] + match[1]),\n            g: parseIntFromHex(match[2] + match[2]),\n            b: parseIntFromHex(match[3] + match[3]),\n            format: named ? 'name' : 'hex',\n        };\n    }\n    return false;\n}\n/**\n * Check to see if it looks like a CSS unit\n * (see `matchers` above for definition).\n */\nexport function isValidCSSUnit(color) {\n    return Boolean(matchers.CSS_UNIT.exec(String(color)));\n}\n"]},"metadata":{},"sourceType":"module"}