AutorÃa | Ultima modificación | Ver Log |
{"version":3,"file":"colorbase.min.js","sources":["../src/colorbase.js"],"sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see <http://www.gnu.org/licenses/>.\n\n/*\n * @package tiny_accessibilitychecker\n * @copyright 2022, Stevani Andolo <stevani@hotmail.com.au>\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nexport default class {\n\n REGEX_HEX = /
^#?([\\da-fA-F]{2})([\\da-fA-F]{2})([\\da-fA-F]{2})(\\ufffe)?/;\n REGEX_HEX3 = /^#?([\\da-fA-F]{1})([\\da-fA-F]{1})([\\da-fA-F]{1})(\\ufffe)?/;\n REGEX_RGB = /rgba?\\(([\\d]{1,3}), ?([\\d]{1,3}), ?([\\d]{1,3}),? ?([.\\d]*)?\\)/;\n\n TYPES = {\n HEX: 'hex',\n RGB: 'rgb',\n RGBA: 'rgba'\n };\n\n KEYWORDS = {\n black: '000',\n silver: 'c0c0c0',\n gray: '808080',\n white: 'fff',\n maroon: '800000',\n red: 'f00',\n purple: '800080',\n fuchsia: 'f0f',\n green: '008000',\n lime: '0f0',\n olive: '808000',\n yellow: 'ff0',\n navy: '000080',\n blue: '00f',\n teal: '008080',\n aqua: '0ff'\n };\n\n STR_HEX = '#{*}{*}{*}';\n STR_RGB = 'rgb({*}, {*}, {*})';\n STR_RGBA = 'rgba({*}, {*}, {*}, {*})';\n\n toHex = (str) => {\n var clr = this._convertTo(str, 'hex'),\n isTransparent = clr.toLowerCase() === 'transparent';\n\n if (clr.charAt(0) !
== '#' && !isTransparent) {\n clr = '#' + clr;\n }\n\n return isTransparent ? clr.toLowerCase() : clr.toUpperCase();\n };\n\n toRGB = (str) => {\n var clr = this._convertTo(str, 'rgb');\n return clr.toLowerCase();\n };\n\n toRGBA = (str) => {\n var clr = this._convertTo(str, 'rgba');\n return clr.toLowerCase();\n };\n\n toArray = (str) => {\n // Parse with regex and return \"matches\" array.\n var type = this.findType(str).toUpperCase(),\n regex,\n arr,\n length,\n lastItem;\n\n if (type === 'HEX' && str.length < 5) {\n type = 'HEX3';\n }\n\n if (type.charAt(type.length - 1) === 'A') {\n type = type.slice(0, -1);\n }\n\n regex = this._getRightValue('REGEX_' + type);\n\n if (regex) {\n arr = regex.exec(str) || [];\n length = arr.length;\n\n if (length) {\n arr.shift();\n
length--;\n\n if (type === 'HEX3') {\n arr[0] += arr[0];\n arr[1] += arr[1];\n arr[2] += arr[2];\n }\n lastItem = arr[length - 1];\n\n if (!lastItem) {\n arr[length - 1] = 1;\n }\n }\n }\n return arr;\n };\n\n fromArray = (arr, template) => {\n arr = arr.concat();\n\n if (typeof template === 'undefined') {\n return arr.join(', ');\n }\n\n var replace = '{*}';\n template = this._getRightValue('STR_' + template.toUpperCase());\n\n if (arr.length === 3 && template.match(/\\{\\*\\}/g).length === 4) {\n arr.push(1);\n }\n\n while (template.indexOf(replace) >= 0 && arr.length > 0) {\n template = template.replace(replace, arr.shift());\n }\n return template;\n };\n\n findType = (str) => {\n if (this.KEYWORDS[
str]) {\n return 'keyword';\n }\n\n var index = str.indexOf('('),\n key;\n\n if (index > 0) {\n key = str.substr(0, index);\n }\n\n if (key && this.TYPES[key.toUpperCase()]) {\n return this.TYPES[key.toUpperCase()];\n }\n return 'hex';\n };\n\n _getAlpha = (clr) => {\n var alpha,\n arr = this.toArray(clr);\n\n if (arr.length > 3) {\n alpha = arr.pop();\n }\n return +alpha || 1;\n };\n\n _keywordToHex = (clr) => {\n var keyword = this.KEYWORDS[clr];\n\n if (keyword) {\n return keyword;\n }\n return keyword;\n };\n\n _convertTo = (clr, to) => {\n if (clr === 'transparent') {\n return clr;\n }\n\n var from = this.findType(clr),\n originalTo = to,\n needsAlpha,\n alpha,\n method,\n ucTo;\n\n if (from === 'keyword') {\n
clr = this._keywordToHex(clr);\n from = 'hex';\n }\n\n if (from === 'hex' && clr.length < 5) {\n if (clr.charAt(0) === '#') {\n clr = clr.substr(1);\n }\n\n clr = '#' + clr.charAt(0) + clr.charAt(0) +\n clr.charAt(1) + clr.charAt(1) +\n clr.charAt(2) + clr.charAt(2);\n }\n\n if (from === to) {\n return clr;\n }\n\n if (from.charAt(from.length - 1) === 'a') {\n from = from.slice(0, -1);\n }\n\n needsAlpha = (to.charAt(to.length - 1) === 'a');\n if (needsAlpha) {\n to = to.slice(0, -1);\n alpha = this._getAlpha(clr);\n }\n\n ucTo = to.charAt(0).toUpperCase() + to.substr(1).toLowerCase();\n method = window['_' + from + 'To' + ucTo];\n\n // Check to see if need conversion to rgb first.\n // Check to see if there is a direct conversion method.\n // Converti
ons are: hex <-> rgb <-> hsl.\n if (!method) {\n if (from !== 'rgb' && to !== 'rgb') {\n clr = window['_' + from + 'ToRgb'](clr);\n from = 'rgb';\n method = window['_' + from + 'To' + ucTo];\n }\n }\n\n if (method) {\n clr = ((method)(clr, needsAlpha));\n }\n\n // Process clr from arrays to strings after conversions if alpha is needed.\n if (needsAlpha) {\n if (!Array.isArray(clr)) {\n clr = this.toArray(clr);\n }\n clr.push(alpha);\n clr = this.fromArray(clr, originalTo.toUpperCase());\n }\n return clr;\n };\n\n _hexToRgb = (str, array) => {\n var r, g, b;\n\n /* jshint bitwise:false */\n if (str.charAt(0) === '#') {\n str = str.substr(1);\n }\n\n /* eslint no-bitwise: */\n str = parseInt(str, 16);\n r = str >> 16;\n g = str >> 8 & 0xFF;\n
b = str & 0xFF;\n\n if (array) {\n return [r, g, b];\n }\n return 'rgb(' + r + ', ' + g + ', ' + b + ')';\n };\n\n _rgbToHex = (str) => {\n /* jshint bitwise:false */\n var rgb = this.toArray(str),\n hex = rgb[2] | (rgb[1] << 8) | (rgb[0] << 16);\n\n hex = (+hex).toString(16);\n\n while (hex.length < 6) {\n hex = '0' + hex;\n }\n return '#' + hex;\n };\n\n _getRightValue = (string) => {\n let regex = null;\n if (string === 'REGEX_RGB') {\n regex = this.REGEX_RGB;\n } else if (string === 'REGEX_HEX') {\n regex = this.REGEX_HEX;\n } else if (string === 'REGEX_HEX3') {\n regex = this.REGEX_HEX3;\n } else if (string === 'STR_HEX') {\n regex = this.STR_HEX;\n } else if (string === 'STR_RGB') {\n regex = this.STR_RGB;\n } else if (string === 'STR_RGBA') {\n regex = this.STR_RGBA;\n }\n
return regex;\n };\n}\n"],"names":["HEX","RGB","RGBA","black","silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua","str","clr","this","_convertTo","isTransparent","toLowerCase","charAt","toUpperCase","regex","arr","length","type","findType","slice","_getRightValue","exec","shift","template","concat","join","match","push","indexOf","replace","KEYWORDS","key","index","substr","TYPES","alpha","toArray","pop","keyword","to","needsAlpha","method","ucTo","from","originalTo","_keywordToHex","_getAlpha","window","Array","isArray","fromArray","array","r","g","b","parseInt","rgb","hex","toString","string","REGEX_RGB","REGEX_HEX","REGEX_HEX3","STR_HEX","STR_RGB","STR_RGBA"],"mappings":";;;;;kKAuBgB,+FACC,8FACD,8FAEJ,CACJA,IAAK,MACLC,IAAK,MACLC,KAAM,yCAGC,CACPC,MAAO,MACPC,OAAQ,SACRC,KAAM,SACNC,MAAO,MACPC,OAAQ,SACRC,IAAK,MACLC,OAAQ,SACRC,QAAS,MACTC,MAAO,SACPC,KAAM,MACNC,MAAO,SACPC,OAAQ,MACRC,KAAM,SACNC,KAAM,MACNC,KAAM,SACNC,KAAM,uCAGA,6CACA,sDACC,0
DAEFC,UACDC,IAAMC,KAAKC,WAAWH,IAAK,OAC3BI,cAAsC,gBAAtBH,IAAII,oBAEF,MAAlBJ,IAAIK,OAAO,IAAeF,gBAC1BH,IAAM,IAAMA,KAGTG,cAAgBH,IAAII,cAAgBJ,IAAIM,+CAG1CP,KACKE,KAAKC,WAAWH,IAAK,OACpBK,+CAGLL,KACIE,KAAKC,WAAWH,IAAK,QACpBK,gDAGJL,UAGHQ,MACAC,IACAC,OAHAC,KAAOT,KAAKU,SAASZ,KAAKO,oBAMjB,QAATI,MAAkBX,IAAIU,OAAS,IAC/BC,KAAO,QAG0B,MAAjCA,KAAKL,OAAOK,KAAKD,OAAS,KAC1BC,KAAOA,KAAKE,MAAM,GAAI,KAG1BL,MAAQN,KAAKY,eAAe,SAAWH,SAInCD,QADAD,IAAMD,MAAMO,KAAKf,MAAQ,IACZU,UAGTD,IAAIO,QACJN,SAEa,SAATC,OACAF,IAAI,IAAMA,IAAI,GACdA,IAAI,IAAMA,IAAI,GACdA,IAAI,IAAMA,IAAI,IAEPA,IAAIC,OAAS,KAGpBD,IAAIC,OAAS,GAAK,IAIvBD,yCAGC,CAACA,IAAKQ,eACdR,IAAMA,IAAIS,cAEc,IAAbD,gBACAR,IAAIU,KAAK,UAIpBF,SAAWf,KAAKY,eAAe,OAASG,SAASV,eAE9B,IAAfE,IAAIC,QAAqD,IAArCO,SAASG,MAAM,WAAWV,QAC9CD,IAAIY,KAAK,GAGNJ,SAASK,QAPF,QAOsB,GAAKb,IAAIC,OAAS,GAClDO,SAAWA,SAASM,QARV,MAQ2Bd,IAAIO,gBAEtCC,6CAGCjB,SACJE,KAAKsB,SAASxB,WACP,cAIPyB,IADAC,MAAQ1B,IAAIsB,QAAQ,YAGpBI,MAAQ,IACRD,IAAMzB,IAAI2B,OAAO,EAAGD,QAGpBD,KAAOvB,KAAK0B,MAAMH,IAAIlB,eACfL,KAAK0B,MAAMH,IAAIlB,eAEnB,2C
AGEN,UACL4B,MACApB,IAAMP,KAAK4B,QAAQ7B,YAEnBQ,IAAIC,OAAS,IACbmB,MAAQpB,IAAIsB,QAERF,OAAS,2CAGJ5B,UACT+B,QAAU9B,KAAKsB,SAASvB,YAExB+B,SAGGA,8CAGE,CAAC/B,IAAKgC,SACH,gBAARhC,WACOA,QAKPiC,WACAL,MACAM,OACAC,KALAC,KAAOnC,KAAKU,SAASX,KACrBqC,WAAaL,SAMJ,YAATI,OACApC,IAAMC,KAAKqC,cAActC,KACzBoC,KAAO,OAGE,QAATA,MAAkBpC,IAAIS,OAAS,IACT,MAAlBT,IAAIK,OAAO,KACXL,IAAMA,IAAI0B,OAAO,IAGrB1B,IAAM,IAAMA,IAAIK,OAAO,GAAKL,IAAIK,OAAO,GAC3BL,IAAIK,OAAO,GAAKL,IAAIK,OAAO,GAC3BL,IAAIK,OAAO,GAAKL,IAAIK,OAAO,IAGvC+B,OAASJ,KAIwB,MAAjCI,KAAK/B,OAAO+B,KAAK3B,OAAS,KAC1B2B,KAAOA,KAAKxB,MAAM,GAAI,KAG1BqB,WAA2C,MAA7BD,GAAG3B,OAAO2B,GAAGvB,OAAS,MAEhCuB,GAAKA,GAAGpB,MAAM,GAAI,GAClBgB,MAAQ3B,KAAKsC,UAAUvC,MAG3BmC,KAAOH,GAAG3B,OAAO,GAAGC,cAAgB0B,GAAGN,OAAO,GAAGtB,eACjD8B,OAASM,OAAO,IAAMJ,KAAO,KAAOD,QAMnB,QAATC,MAAyB,QAAPJ,KAClBhC,IAAMwC,OAAO,IAAMJ,KAAO,SAASpC,KACnCoC,KAAO,MACPF,OAASM,OAAO,IAAMJ,KAAO,KAAOD,OAIxCD,SACAlC,IAAQkC,OAAQlC,IAAKiC,aAIrBA,aACKQ,MAAMC,QAAQ1C,OACfA,IAAMC,KAAK4B,QAAQ7B,MAEvBA,IAAIoB,KAAKQ,OACT5B,IAAMC,KAAK0C,UAAU3C,IAAKqC,W
AAW/B,iBArC9BN,yCA0CH,CAACD,IAAK6C,aACVC,EAAGC,EAAGC,QAGY,MAAlBhD,IAAIM,OAAO,KACXN,IAAMA,IAAI2B,OAAO,IAKrBmB,GADA9C,IAAMiD,SAASjD,IAAK,MACT,GACX+C,EAAI/C,KAAO,EAAI,IACfgD,EAAU,IAANhD,IAEA6C,MACO,CAACC,EAAGC,EAAGC,GAEX,OAASF,EAAI,KAAOC,EAAI,KAAOC,EAAI,yCAGjChD,UAELkD,IAAMhD,KAAK4B,QAAQ9B,KACnBmD,IAAMD,IAAI,GAAMA,IAAI,IAAM,EAAMA,IAAI,IAAM,OAE9CC,MAAQA,KAAKC,SAAS,IAEfD,IAAIzC,OAAS,GAChByC,IAAM,IAAMA,UAET,IAAMA,8CAGCE,aACV7C,MAAQ,WACG,cAAX6C,OACA7C,MAAQN,KAAKoD,UACK,cAAXD,OACP7C,MAAQN,KAAKqD,UACK,eAAXF,OACP7C,MAAQN,KAAKsD,WACK,YAAXH,OACP7C,MAAQN,KAAKuD,QACK,YAAXJ,OACP7C,MAAQN,KAAKwD,QACK,aAAXL,SACP7C,MAAQN,KAAKyD,UAEVnD"}