/* * MIT License * * Copyright (c) 2022- Minteck * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. * */ /** * 0 = black * 1 = white * 2 = gray * 3 = red * 4 = orange * 5 = yellow * 6 = green * 7 = blue * 8 = purple * 9 = pink * 10 = brown */ const Color = require('color'); module.exports = (hex, debug) => { const color = Color(hex); const h = color.hsl().color[0]; const s = color.hsl().color[1]; const l = color.hsl().color[2]; if (s < 20) { // Consider it's grayscale if (l >= 75) { return debug ? "white" : 1; // white } else if (l >= 15) { return debug ? "gray" : 2; // gray } else { return debug ? "black" : 0; // black } } else { // Consider it's a color if (h <= 10 || h > 340) { return debug ? "red" : 3; // red } else if (h > 10 && h <= 40) { if (l > 65) { return debug ? "orange" : 4; // orange } else { return debug ? "brown" : 10; // brown } } else if (h > 40 && h <= 67) { return debug ? "yellow" : 5; // yellow } else if (h > 67 && h <= 158) { return debug ? "green" : 6; // green } else if (h > 158 && h <= 253) { return debug ? "blue" : 7; // blue } else if (h > 253 && h <= 289) { return debug ? "purple" : 8; // purple } else if (h > 289 && h <= 340) { return debug ? "pink" : 9; // pink } } }