UNPKG

rsuite-theme

Version:
76 lines (67 loc) 2.21 kB
'use strict'; function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } /** * Created by Godfery on 2016/8/10 0010. */ var less = require('less'); var Color = less.tree.Color; /** * * @param {Sting} baseColor - 基色 * @returns {Array} */ module.exports.computeColors = function (baseColor) { var levels = [0.9, 0.7, 0.5, 0.333, 0.166, 0, -0.125, -0.25, -0.375, -0.5]; return levels.map(function (level) { return shadeColor(baseColor, level); }); }; /** * less颜色转换 * @param baseColor * @returns {Array} */ module.exports.lessComputeColors = function (baseColor) { var levels = [5, 10, 17]; return levels.map(function (level) { return darkenColor(baseColor, level); }); }; /** * 计算色阶 * @param baseColor - 基色 * @returns {*[]} */ module.exports.calcColors = function (baseColor) { return [].concat(_toConsumableArray(module.exports.computeColors(baseColor)), _toConsumableArray(module.exports.lessComputeColors(baseColor))); }; /* * Color utility functions * Source: http://stackoverflow.com/questions/5560248/programmatically-lighten-or-darken-a-hex-color-or-rgb-and-blend-colors * Github: https://github.com/mbitson/mcg */ function shadeColor(color, percent) { var f = parseInt(color.slice(1), 16), t = percent < 0 ? 0 : 255, p = percent < 0 ? percent * -1 : percent, R = f >> 16, G = f >> 8 & 0x00FF, B = f & 0x0000FF; return "#" + (0x1000000 + (Math.round((t - R) * p) + R) * 0x10000 + (Math.round((t - G) * p) + G) * 0x100 + (Math.round((t - B) * p) + B)).toString(16).slice(1); } /*** * 获取less的function * @param name * @returns {*} */ function lessFunc(name) { return less.functions.functionRegistry.get(name); } function darkenColor(baseColor, amount) { baseColor = baseColor.split('#').join(''); baseColor = new Color(baseColor); var darken = lessFunc('darken'); var hsla = lessFunc('hsla'); baseColor = '#' + darken(baseColor, { value: amount }).toARGB().substr(3, 9); return baseColor; }