Proyectos de Subversion Moodle

Rev

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        // Convertions 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":"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"}