{"version":3,"sources":["Hex.js"],"names":["initHex","window","Hex","isValid","isShort","getLong","getShort","toRGB","isValidRegExp","RegExp","isShortRegExp","val","test","hex","replace","m","r","g","b","shortHex","toLowerCase","split","reduce","a","c","i","length","substring","match","map","parseInt","x"],"mappings":"AAQA,CAAC,QAASA,QAAT,EAAmB,CAClBC,OAAOC,GAAP,CAAa,CACXC,eADW,CAEXC,eAFW,CAGXC,eAHW,CAIXC,iBAJW,CAKXC,WALW,CAAb,CASA,GAAMC,eAAgBC,OAAO,yBAAP,CAAkC,GAAlC,CAAtB,CACA,GAAMC,eAAgBD,OAAO,gBAAP,CAAyB,GAAzB,CAAtB,CASA,QAASN,QAAT,CAAiBQ,GAAjB,CAAsB,CACpB,MAAO,OAAOA,IAAP,GAAe,QAAf,EAA2BH,cAAcI,IAAd,CAAmBD,GAAnB,CAA3B,CACHA,GADG,CAEH,KAFJ,CAGD,CASD,QAASP,QAAT,CAAiBS,GAAjB,CAAsB,CACpB,MAAOH,eAAcE,IAAd,CAAmBC,GAAnB,EAA0BA,GAA1B,CAAgC,KAAvC,CACD,CAQD,QAASR,QAAT,CAAiBQ,GAAjB,CAAsB,CACpB,MAAOA,KAAIC,OAAJ,CACL,kCADK,CAEL,SAACC,CAAD,CAAIC,CAAJ,CAAOC,CAAP,CAAUC,CAAV,aAAoBF,EAAIA,CAAJ,CAAQC,CAAR,CAAYA,CAAZ,CAAgBC,CAAhB,CAAoBA,CAAxC,GAFK,CAAP,CAID,CASD,QAASZ,SAAT,CAAkBO,GAAlB,CAAuB,CAErB,GAAIT,QAAQS,GAAR,CAAJ,CAAkB,CAChB,MAAOA,IAAP,CACD,CAGD,GAAMM,UAAWN,IACdO,WADc,GAEdC,KAFc,CAER,EAFQ,EAGdC,MAHc,CAIb,SAACC,CAAD,CAAIC,CAAJ,CAAOC,CAAP,QACEA,GAAI,CAAJ,EAASA,EAAI,CAAJ,GAAU,CAAnB,EAAwBZ,IAAIY,CAAJ,IAAWZ,IAAIY,EAAI,CAAR,CAAnC,CAAgDF,EAAIC,CAApD,CAAwDD,CAD1D,EAJa,CAMb,GANa,CAAjB,CAUA,MAAOJ,UAASO,MAAT,GAAoB,CAApB,CAAwBP,QAAxB,CAAmC,KAA1C,CACD,CAQD,QAASZ,MAAT,CAAeM,GAAf,CAAoB,CAClB,MAAOR,SAAQQ,GAAR,EACJc,SADI,CACM,CADN,EAEJC,KAFI,CAEE,OAFF,EAGJC,GAHI,CAGA,kBAAKC,UAASC,CAAT,CAAY,EAAZ,CAAL,EAHA,CAAP,CAID,CACF,CAzFD","file":"../Hex.0.5.2.min.js","sourcesContent":["/**\n * Hex.js\n *\n * A library for manipulating hex color strings\n *\n * by Rafi Miller\n * 2018-04-18\n */\n(function initHex() {\n window.Hex = {\n isValid,\n isShort,\n getLong,\n getShort,\n toRGB\n };\n\n // Regular expressions for testing\n const isValidRegExp = RegExp('^#(?:[0-9a-f]{3}){1,2}$', 'i');\n const isShortRegExp = RegExp('^#[0-9a-f]{3}$', 'i');\n\n /**\n * Tests if a value is valid hex color string of 3 or 6 characters.\n * If yes, then returns the original string.\n *\n * @param {*} val - a value to test\n * @return {string|boolean} - the original string if true, false if false\n */\n function isValid(val) {\n return typeof val === 'string' && isValidRegExp.test(val)\n ? val\n : false;\n }\n\n /**\n * Tests if a string is 3-character hex color.\n * If yes, then returns the original string.\n *\n * @param {string} hex - a hex color to test\n * @return {string|boolean} - the original string or false\n */\n function isShort(hex) {\n return isShortRegExp.test(hex) ? hex : false;\n }\n\n /**\n * Returns a 6-character hex color from any hex color.\n *\n * @param {string} hex - any hex color\n * @return {string} - a 6-character hex color\n */\n function getLong(hex) {\n return hex.replace(\n /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i,\n (m, r, g, b) => `#${r + r + g + g + b + b}`\n );\n }\n\n /**\n * Returns a 3-character hex color from any hex color.\n * If there is no equivalent 3-character hex color, returns false.\n *\n * @param {string} hex - any hex color\n * @return {string|boolean} - a 3-character hex color or false\n */\n function getShort(hex) {\n // if it is already 3 characters, just return it\n if (isShort(hex)) {\n return hex;\n }\n\n // build a string with one character for each character that is doubled\n const shortHex = hex\n .toLowerCase()\n .split('')\n .reduce(\n (a, c, i) =>\n i > 0 && i % 2 === 0 && hex[i] === hex[i - 1] ? a + c : a,\n '#'\n );\n\n // the hex was shortenable if and only if the new string has 4 characters\n return shortHex.length === 4 ? shortHex : false;\n }\n\n /**\n * Returns a length-3 array of RGB values from any hex color\n *\n * @param {string} hex - any hex color\n * @return {array} - array of [R, G, B]\n */\n function toRGB(hex) {\n return getLong(hex)\n .substring(1)\n .match(/.{2}/g)\n .map(x => parseInt(x, 16));\n }\n})();\n"]}