UNPKG

1.52 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3exports.gradient = void 0;
4var rgb2arr_1 = require("./rgb2arr");
5var arr2rgb_1 = require("./arr2rgb");
6var torgb_1 = require("./torgb");
7/**
8 * 获取颜色之间的插值
9 * @param start
10 * @param end
11 * @param percent
12 * @param index
13 * @returns
14 */
15function getValue(start, end, percent, index) {
16 return start[index] + (end[index] - start[index]) * percent;
17}
18/**
19 * 计算颜色
20 * @param points
21 * @param percent
22 * @returns
23 */
24function calColor(points, percent) {
25 var fixedPercent = isNaN(Number(percent)) || percent < 0 ? 0 : percent > 1 ? 1 : Number(percent);
26 var steps = points.length - 1;
27 var step = Math.floor(steps * fixedPercent);
28 var left = steps * fixedPercent - step;
29 var start = points[step];
30 var end = step === steps ? start : points[step + 1];
31 return (0, arr2rgb_1.arr2rgb)([getValue(start, end, left, 0), getValue(start, end, left, 1), getValue(start, end, left, 2)]);
32}
33/**
34 * 获取渐变函数
35 * @param colors 多个颜色
36 * @return 颜色值
37 */
38function gradient(colors) {
39 var colorArray = typeof colors === 'string' ? colors.split('-') : colors;
40 var points = colorArray.map(function (color) {
41 return (0, rgb2arr_1.rgb2arr)(color.indexOf('#') === -1 ? (0, torgb_1.toRGB)(color) : color);
42 });
43 // 返回一个函数
44 return function (percent) {
45 return calColor(points, percent);
46 };
47}
48exports.gradient = gradient;
49//# sourceMappingURL=gradient.js.map
\No newline at end of file