{"ast":null,"code":"import get from 'lodash.get';\nimport isEmpty from 'lodash.isempty';\nimport Color from 'tinycolor2';\nexport function mode(light, dark) {\n  return function (props) {\n    return props.colorMode === 'dark' ? dark : light;\n  };\n}\nexport var transparentize = function transparentize(color, opacity) {\n  return function (theme) {\n    var raw = getColor(theme, color);\n    return Color(raw).setAlpha(opacity).toRgbString();\n  };\n};\nexport var getColor = function getColor(theme, color, fallback) {\n  var hex = get(theme, \"colors.\".concat(color), color);\n  var isValid = Color(hex).isValid();\n  return isValid ? hex : fallback;\n};\nexport var tone = function tone(color) {\n  return function (theme) {\n    var hex = getColor(theme, color);\n    var isDark = Color(hex).isDark();\n    return isDark ? 'dark' : 'light';\n  };\n};\nexport var isDark = function isDark(color) {\n  return function (theme) {\n    return tone(color)(theme) === 'dark';\n  };\n};\nexport var isLight = function isLight(color) {\n  return function (theme) {\n    return tone(color)(theme) === 'light';\n  };\n};\nexport function randomColor(opts) {\n  var fallback = Color.random().toHexString();\n  if (!opts || isEmpty(opts)) {\n    return fallback;\n  }\n  if (opts.string && opts.colors) {\n    return randomColorFromList(opts.string, opts.colors);\n  }\n  if (opts.string && !opts.colors) {\n    return randomColorFromString(opts.string);\n  }\n  if (opts.colors && !opts.string) {\n    return randomFromList(opts.colors);\n  }\n  return fallback;\n}\nfunction randomFromList(list) {\n  return list[Math.floor(Math.random() * list.length)];\n}\nfunction randomColorFromList(str, list) {\n  var index = 0;\n  if (str.length === 0) return list[0];\n  for (var i = 0; i < str.length; i++) {\n    index = str.charCodeAt(i) + ((index << 5) - index);\n    index = index & index;\n  }\n  index = (index % list.length + list.length) % list.length;\n  return list[index];\n}\nfunction randomColorFromString(str) {\n  var hash = 0;\n  if (str.length === 0) return hash.toString();\n  for (var i = 0; i < str.length; i++) {\n    hash = str.charCodeAt(i) + ((hash << 5) - hash);\n    hash = hash & hash;\n  }\n  var color = '#';\n  for (var j = 0; j < 3; j++) {\n    var value = hash >> j * 8 & 255;\n    color += ('00' + value.toString(16)).substr(-2);\n  }\n  return color;\n}","map":{"version":3,"sources":["colors.ts"],"names":["get","isEmpty","Color","mode","light","dark","props","colorMode","transparentize","color","opacity","theme","raw","getColor","setAlpha","toRgbString","fallback","hex","isValid","tone","isDark","isLight","randomColor","opts","random","toHexString","string","colors","randomColorFromList","randomColorFromString","randomFromList","list","Math","floor","length","str","index","i","charCodeAt","hash","toString","j","value","substr"],"mappings":"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","sourcesContent":["import get from 'lodash.get';\nimport isEmpty from 'lodash.isempty';\nimport Color from 'tinycolor2';\nimport type { Dict } from './utils';\n\nexport function mode(light: any, dark: any) {\n  return (props: any) => (props.colorMode === 'dark' ? dark : light);\n}\n\nexport const transparentize = (color: string, opacity: number) => (\n  theme: Dict\n) => {\n  const raw = getColor(theme, color);\n  return Color(raw).setAlpha(opacity).toRgbString();\n};\n\nexport const getColor = (theme: Dict, color: string, fallback?: string) => {\n  const hex = get(theme, `colors.${color}`, color);\n  const isValid = Color(hex).isValid();\n  return isValid ? hex : fallback;\n};\n\nexport const tone = (color: string) => (theme: Dict) => {\n  const hex = getColor(theme, color);\n  const isDark = Color(hex).isDark();\n  return isDark ? 'dark' : 'light';\n};\n\nexport const isDark = (color: string) => (theme: Dict) =>\n  tone(color)(theme) === 'dark';\n\nexport const isLight = (color: string) => (theme: Dict) =>\n  tone(color)(theme) === 'light';\n\ninterface RandomColorOptions {\n  /**\n   * If passed, string will be used to generate\n   * random color\n   */\n  string?: string;\n  /**\n   * List of colors to pick from at random\n   */\n  colors?: string[];\n}\nexport function randomColor(opts?: RandomColorOptions) {\n  const fallback = Color.random().toHexString();\n\n  if (!opts || isEmpty(opts)) {\n    return fallback;\n  }\n\n  if (opts.string && opts.colors) {\n    return randomColorFromList(opts.string, opts.colors);\n  }\n\n  if (opts.string && !opts.colors) {\n    return randomColorFromString(opts.string);\n  }\n\n  if (opts.colors && !opts.string) {\n    return randomFromList(opts.colors);\n  }\n\n  return fallback;\n}\n\nfunction randomFromList(list: string[]) {\n  return list[Math.floor(Math.random() * list.length)];\n}\n\nfunction randomColorFromList(str: string, list: string[]) {\n  let index = 0;\n  if (str.length === 0) return list[0];\n  for (let i = 0; i < str.length; i++) {\n    index = str.charCodeAt(i) + ((index << 5) - index);\n    index = index & index;\n  }\n  index = ((index % list.length) + list.length) % list.length;\n  return list[index];\n}\n\nfunction randomColorFromString(str: string) {\n  let hash = 0;\n  if (str.length === 0) return hash.toString();\n  for (let i = 0; i < str.length; i++) {\n    hash = str.charCodeAt(i) + ((hash << 5) - hash);\n    hash = hash & hash;\n  }\n  let color = '#';\n  for (let j = 0; j < 3; j++) {\n    const value = (hash >> (j * 8)) & 255;\n    color += ('00' + value.toString(16)).substr(-2);\n  }\n  return color;\n}\n"]},"metadata":{},"sourceType":"module"}