UNPKG

@chayns/colors

Version:

JavaScript utility functions for the calculation of colors for chayns

126 lines (125 loc) 5.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getAvailableColorList = getAvailableColorList; exports.getColorFromPalette = getColorFromPalette; var _lightenDarken = require("./lightenDarken"); var _converter = require("../converter"); var _constants = require("./constants"); var _mix = require("./mix"); var _hexToRgb = _interopRequireDefault(require("../converter/hex/hexToRgb255")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; } function getColorBrightness(color) { var newCalculation = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; var rgb = (0, _hexToRgb["default"])(color); if (!rgb) { return null; } var brightnessRgb = Math.max(rgb.r, rgb.g, rgb.b); var brightness; if (newCalculation) { var max = Math.max(rgb.r, rgb.g, rgb.b); var min = Math.min(rgb.r, rgb.g, rgb.b); brightness = (max + min) / 2 / 255 * 100; } else if (brightnessRgb < 64) { brightness = 40; } else if (brightnessRgb < 128) { brightness = 60; } else if (brightnessRgb < 192) { brightness = 80; } else { brightness = 100; } return brightness; } function getAvailableColorList() { return Object.keys(_constants.colorPalette[0]); } function getColorFromPalette(colorId, _ref) { var _ref$color = _ref.color, color = _ref$color === void 0 ? '#808080' : _ref$color, _ref$colorMode = _ref.colorMode, colorMode = _ref$colorMode === void 0 ? 0 : _ref$colorMode, _ref$secondaryColor = _ref.secondaryColor, secondaryColor = _ref$secondaryColor === void 0 ? null : _ref$secondaryColor; // copy array var originalData = _constants.colorPalette[colorMode][colorId]; var colorData = JSON.parse(JSON.stringify(originalData)); var secondary; if (!secondaryColor) { secondary = color; } else { secondary = secondaryColor; } if (Array.isArray(colorData)) { var colorIndex = colorData.indexOf(_constants.specials.COLOR); if (colorIndex >= 0) { colorData[colorIndex] = color; } var secondaryColorIndex = colorData.indexOf(_constants.specials.SECONDARY_COLOR); if (secondaryColorIndex >= 0) { colorData[secondaryColorIndex] = secondary; } var brightnessIndex = colorData.indexOf(_constants.specials.BRIGHTNESS); if (brightnessIndex >= 0) { colorData[brightnessIndex] = getColorBrightness(color, false); } var newBrightnessIndex = colorData.indexOf(_constants.specials.NEW_BRIGHTNESS); if (newBrightnessIndex >= 0) { colorData[newBrightnessIndex] = getColorBrightness(color, true); } var base400Index = colorData.indexOf(_constants.specials.BASE400); if (base400Index >= 0) { var _hexToHsl$s, _hexToHsl; var brightness = getColorBrightness(color) || 0; if (brightness < 50 && colorMode === 1) { colorData[base400Index] = (0, _lightenDarken.lightenHexColor)(color, (brightness * -1 + 100) * 0.5); } else if (brightness === 100 && ((_hexToHsl$s = (_hexToHsl = (0, _converter.hexToHsl)(color)) === null || _hexToHsl === void 0 ? void 0 : _hexToHsl.s) !== null && _hexToHsl$s !== void 0 ? _hexToHsl$s : 0) < 0.15) { colorData[base400Index] = '#a8a8a8'; } else { colorData[base400Index] = color; } } var accent400Index = colorData.indexOf(_constants.specials.ACCENT400); if (accent400Index >= 0) { var _brightness = getColorBrightness(color) || 0; if (_brightness < 50) { colorData[accent400Index] = (0, _lightenDarken.darkenHexColor)('#2F2F2F', (_brightness * -1 + 100) * 0.1); } else { colorData[accent400Index] = '#2F2F2F'; } } var secondaryBase400Index = colorData.indexOf(_constants.specials.SECONDARY_BASE400); if (secondaryBase400Index >= 0) { var _hexToHsl$s2, _hexToHsl2; var _brightness2 = getColorBrightness(secondary) || 0; if (_brightness2 < 50 && colorMode === 1) { colorData[secondaryBase400Index] = (0, _lightenDarken.lightenHexColor)(secondary, (_brightness2 * -1 + 100) * 0.5); } else if (_brightness2 === 100 && ((_hexToHsl$s2 = (_hexToHsl2 = (0, _converter.hexToHsl)(secondary)) === null || _hexToHsl2 === void 0 ? void 0 : _hexToHsl2.s) !== null && _hexToHsl$s2 !== void 0 ? _hexToHsl$s2 : 0) < 15) { colorData[secondaryBase400Index] = '#a8a8a8'; } else { colorData[secondaryBase400Index] = secondary; } } var secondaryAccent400Index = colorData.indexOf(_constants.specials.SECONDARY_ACCENT400); if (secondaryAccent400Index >= 0) { var _brightness3 = getColorBrightness(secondary) || 0; if (_brightness3 < 50) { colorData[secondaryAccent400Index] = (0, _lightenDarken.darkenHexColor)('#2F2F2F', (_brightness3 * -1 + 100) * 0.1); } else { colorData[secondaryAccent400Index] = '#2F2F2F'; } } } if (Array.isArray(colorData)) { if (colorData.length === 2) { return (0, _mix.mixHex)(color, colorData[0], colorData[1]); } if (colorData.length === 3) { return (0, _mix.mixHex)(colorData[0], colorData[1], colorData[2]); } } return colorData; } //# sourceMappingURL=chaynsColors.js.map