{"version":3,"file":"util.min.mjs","names":[],"sources":["../../../src/color/util.ts"],"sourcesContent":["import type { TRGBAColorSource } from './typedefs';\n\n/**\n * @param {Number} p\n * @param {Number} q\n * @param {Number} t\n * @return {Number}\n */\nexport const hue2rgb = (p: number, q: number, t: number): number => {\n  if (t < 0) {\n    t += 1;\n  }\n  if (t > 1) {\n    t -= 1;\n  }\n  if (t < 1 / 6) {\n    return p + (q - p) * 6 * t;\n  }\n  if (t < 1 / 2) {\n    return q;\n  }\n  if (t < 2 / 3) {\n    return p + (q - p) * (2 / 3 - t) * 6;\n  }\n  return p;\n};\n\n/**\n * Adapted from {@link https://gist.github.com/mjackson/5311256 https://gist.github.com/mjackson}\n * @param {Number} r Red color value\n * @param {Number} g Green color value\n * @param {Number} b Blue color value\n * @param {Number} a Alpha color value pass through\n * @return {TRGBColorSource} Hsl color\n */\nexport const rgb2Hsl = (\n  r: number,\n  g: number,\n  b: number,\n  a: number,\n): TRGBAColorSource => {\n  r /= 255;\n  g /= 255;\n  b /= 255;\n  const maxValue = Math.max(r, g, b),\n    minValue = Math.min(r, g, b);\n\n  let h!: number, s: number;\n  const l = (maxValue + minValue) / 2;\n\n  if (maxValue === minValue) {\n    h = s = 0; // achromatic\n  } else {\n    const d = maxValue - minValue;\n    s = l > 0.5 ? d / (2 - maxValue - minValue) : d / (maxValue + minValue);\n    switch (maxValue) {\n      case r:\n        h = (g - b) / d + (g < b ? 6 : 0);\n        break;\n      case g:\n        h = (b - r) / d + 2;\n        break;\n      case b:\n        h = (r - g) / d + 4;\n        break;\n    }\n    h /= 6;\n  }\n\n  return [Math.round(h * 360), Math.round(s * 100), Math.round(l * 100), a];\n};\n\nexport const fromAlphaToFloat = (value = '1') =>\n  parseFloat(value) / (value.endsWith('%') ? 100 : 1);\n\n/**\n * Convert a value in the inclusive range [0, 255] to hex\n */\nexport const hexify = (value: number) =>\n  Math.min(Math.round(value), 255).toString(16).toUpperCase().padStart(2, '0');\n\n/**\n * Calculate the grey average value for rgb and pass through alpha\n */\nexport const greyAverage = ([\n  r,\n  g,\n  b,\n  a = 1,\n]: TRGBAColorSource): TRGBAColorSource => {\n  const avg = Math.round(r * 0.3 + g * 0.59 + b * 0.11);\n  return [avg, avg, avg, a];\n};\n"],"mappings":"AAQA,MAAa,GAAW,EAAW,EAAW,KACxC,EAAI,IACN,GAAK,GAEH,EAAI,GACN,IAEE,EAAI,EAAI,EACH,EAAc,GAAT,EAAI,GAAS,EAEvB,EAAI,GACC,EAEL,EAAI,EAAI,EACH,GAAK,EAAI,IAAM,EAAI,EAAI,GAAK,EAE9B,GAWI,GACX,EACA,EACA,EACA,IAAA,CAEA,GAAK,IACL,GAAK,IACL,GAAK,IACL,IAAM,EAAW,KAAK,IAAI,EAAG,EAAG,EAAA,CAC9B,EAAW,KAAK,IAAI,EAAG,EAAG,EAAA,CAExB,EAAY,EACV,GAAK,EAAW,GAAY,EAElC,GAAI,IAAa,EACf,EAAI,EAAI,MACH,CACL,IAAM,EAAI,EAAW,EAErB,OADA,EAAI,EAAI,GAAM,GAAK,EAAI,EAAW,GAAY,GAAK,EAAW,GACtD,EAAR,CACE,KAAK,EACH,GAAK,EAAI,GAAK,GAAK,EAAI,EAAI,EAAI,GAC/B,MACF,KAAK,EACH,GAAK,EAAI,GAAK,EAAI,EAClB,MACF,KAAK,EACH,GAAK,EAAI,GAAK,EAAI,EAGtB,GAAK,EAGP,MAAO,CAAC,KAAK,MAAU,IAAJ,EAAA,CAAU,KAAK,MAAU,IAAJ,EAAA,CAAU,KAAK,MAAU,IAAJ,EAAA,CAAU,EAAA,EAG5D,GAAoB,EAAQ,MACvC,WAAW,EAAA,EAAU,EAAM,SAAS,IAAA,CAAO,IAAM,GAKtC,EAAU,GACrB,KAAK,IAAI,KAAK,MAAM,EAAA,CAAQ,IAAA,CAAK,SAAS,GAAA,CAAI,aAAA,CAAc,SAAS,EAAG,IAAA,CAK7D,GAAA,CACX,EACA,EACA,EACA,EAAI,KAAA,CAEJ,IAAM,EAAM,KAAK,MAAU,GAAJ,EAAc,IAAJ,EAAe,IAAJ,EAAA,CAC5C,MAAO,CAAC,EAAK,EAAK,EAAK,EAAA,EAAA,OAAA,KAAA,iBAAA,KAAA,YAAA,KAAA,OAAA,KAAA,QAAA,KAAA"}