@chayns/colors
Version:
JavaScript utility functions for the calculation of colors for chayns
162 lines (122 loc) • 5.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getColorFromPalette = getColorFromPalette;
exports.getAvailableColorList = getAvailableColorList;
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(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
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 colorData = JSON.parse(JSON.stringify(_constants.colorPalette[colorMode][colorId]));
var secondary;
if (!secondaryColor) {
secondary = color;
} else {
secondary = secondaryColor;
}
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