feat: 随机颜色js提交

This commit is contained in:
陈劲松
2020-04-21 20:50:51 +08:00
parent f1bc850526
commit e5516b06b5

View File

@@ -1,322 +1,328 @@
export function randomcolor() { function randomcolor() {
var e = null, var e = null,
t = {}; t = {};
r("monochrome", null, [ r("monochrome", null, [
[0, 0], [0, 0],
[100, 0] [100, 0]
]), ]),
r("red", [-26, 18], [ r("red", [-26, 18], [
[20, 100], [20, 100],
[30, 92], [30, 92],
[40, 89], [40, 89],
[50, 85], [50, 85],
[60, 78], [60, 78],
[70, 70], [70, 70],
[80, 60], [80, 60],
[90, 55], [90, 55],
[100, 50] [100, 50]
]), ]),
r("orange", [19, 46], [ r("orange", [19, 46], [
[20, 100], [20, 100],
[30, 93], [30, 93],
[40, 88], [40, 88],
[50, 86], [50, 86],
[60, 85], [60, 85],
[70, 70], [70, 70],
[100, 70] [100, 70]
]), ]),
r("yellow", [47, 62], [ r("yellow", [47, 62], [
[25, 100], [25, 100],
[40, 94], [40, 94],
[50, 89], [50, 89],
[60, 86], [60, 86],
[70, 84], [70, 84],
[80, 82], [80, 82],
[90, 80], [90, 80],
[100, 75] [100, 75]
]), ]),
r("green", [63, 178], [ r("green", [63, 178], [
[30, 100], [30, 100],
[40, 90], [40, 90],
[50, 85], [50, 85],
[60, 81], [60, 81],
[70, 74], [70, 74],
[80, 64], [80, 64],
[90, 50], [90, 50],
[100, 40] [100, 40]
]), ]),
r("blue", [179, 257], [ r("blue", [179, 257], [
[20, 100], [20, 100],
[30, 86], [30, 86],
[40, 80], [40, 80],
[50, 74], [50, 74],
[60, 60], [60, 60],
[70, 52], [70, 52],
[80, 44], [80, 44],
[90, 39], [90, 39],
[100, 35] [100, 35]
]), ]),
r("purple", [258, 282], [ r("purple", [258, 282], [
[20, 100], [20, 100],
[30, 87], [30, 87],
[40, 79], [40, 79],
[50, 70], [50, 70],
[60, 65], [60, 65],
[70, 59], [70, 59],
[80, 52], [80, 52],
[90, 45], [90, 45],
[100, 42] [100, 42]
]), ]),
r("pink", [283, 334], [ r("pink", [283, 334], [
[20, 100], [20, 100],
[30, 90], [30, 90],
[40, 86], [40, 86],
[60, 84], [60, 84],
[80, 80], [80, 80],
[90, 75], [90, 75],
[100, 73] [100, 73]
]); ]);
var n = function(r) { var n = function(r) {
if (void 0 !== (r = r || {}).seed && null !== r.seed && r.seed === parseInt(r.seed, 10)) if (void 0 !== (r = r || {}).seed && null !== r.seed && r.seed === parseInt(r.seed, 10))
e = r.seed; e = r.seed;
else if ("string" == typeof r.seed) else if ("string" == typeof r.seed)
e = function(e) { e = function(e) {
for (var t = 0, n = 0; n !== e.length && !(t >= Number.MAX_SAFE_INTEGER); n++) for (var t = 0, n = 0; n !== e.length && !(t >= Number.MAX_SAFE_INTEGER); n++)
t += e.charCodeAt(n); t += e.charCodeAt(n);
return t return t
}; }
(r.seed); (r.seed);
else { else {
if (void 0 !== r.seed && null !== r.seed) if (void 0 !== r.seed && null !== r.seed)
throw new TypeError("The seed value must be an integer or string"); throw new TypeError("The seed value must be an integer or string");
e = null e = null
} }
var c, var c,
l; l;
if (null !== r.count && void 0 !== r.count) { if (null !== r.count && void 0 !== r.count) {
var u = r.count, var u = r.count,
d = []; d = [];
for (r.count = null; u > d.length;) for (r.count = null; u > d.length;)
e && r.seed && (r.seed += 1), d.push(n(r)); e && r.seed && (r.seed += 1), d.push(n(r));
return r.count = u, return r.count = u,
d d
} }
return function(e, t) { return function(e, t) {
switch (t.format) { switch (t.format) {
case "hsvArray": case "hsvArray":
return e; return e;
case "hslArray": case "hslArray":
return a(e); return a(e);
case "hsl": case "hsl":
var n = a(e); var n = a(e);
return "hsl(" + n[0] + ", " + n[1] + "%, " + n[2] + "%)"; return "hsl(" + n[0] + ", " + n[1] + "%, " + n[2] + "%)";
case "hsla": case "hsla":
var s = a(e), var s = a(e),
o = t.alpha || Math.random(); o = t.alpha || Math.random();
return "hsla(" + s[0] + ", " + s[1] + "%, " + s[2] + "%, " + o + ")"; return "hsla(" + s[0] + ", " + s[1] + "%, " + s[2] + "%, " + o + ")";
case "rgbArray": case "rgbArray":
return i(e); return i(e);
case "rgb": case "rgb":
return "rgb(" + i(e).join(", ") + ")"; return "rgb(" + i(e).join(", ") + ")";
case "rgba": case "rgba":
var r = i(e); var r = i(e);
o = t.alpha || Math.random(); o = t.alpha || Math.random();
return "rgba(" + r.join(", ") + ", " + o + ")"; return "rgba(" + r.join(", ") + ", " + o + ")";
default: default:
return function(e) { return function(e) {
var t = i(e); var t = i(e);
function n(e) { function n(e) {
var t = e.toString(16); var t = e.toString(16);
return 1 == t.length ? "0" + t : t return 1 == t.length ? "0" + t : t
} }
return "#" + n(t[0]) + n(t[1]) + n(t[2]) return "#" + n(t[0]) + n(t[1]) + n(t[2])
}; }
(e) (e)
} }
}; }
([c = function(e) { ([c = function(e) {
var n = o(function(e) { var n = o(function(e) {
if ("number" == typeof parseInt(e)) { if ("number" == typeof parseInt(e)) {
var n = parseInt(e); var n = parseInt(e);
if (n < 360 && n > 0) if (n < 360 && n > 0)
return [n, n] return [n, n]
} }
if ("string" == typeof e) if ("string" == typeof e)
if (t[e]) { if (t[e]) {
var s = t[e]; var s = t[e];
if (s.hueRange) if (s.hueRange)
return s.hueRange return s.hueRange
} else if (e.match(/^#?([0-9A-F]{3}|[0-9A-F]{6})$/i)) { } else if (e.match(/^#?([0-9A-F]{3}|[0-9A-F]{6})$/i)) {
var o = function(e) { var o = function(e) {
e = 3 === (e = e.replace(/^#/, "")).length ? e.replace(/(.)/g, "$1$1") : e; e = 3 === (e = e.replace(/^#/, "")).length ? e.replace(/(.)/g, "$1$1") : e;
var t = parseInt(e.substr(0, 2), 16) / 255, var t = parseInt(e.substr(0, 2), 16) / 255,
n = parseInt(e.substr(2, 2), 16) / 255, n = parseInt(e.substr(2, 2), 16) / 255,
s = parseInt(e.substr(4, 2), 16) / 255, s = parseInt(e.substr(4, 2), 16) / 255,
o = Math.max(t, n, s), o = Math.max(t, n, s),
r = o - Math.min(t, n, s), r = o - Math.min(t, n, s),
i = o ? r / o : 0; i = o ? r / o : 0;
switch (o) { switch (o) {
case t: case t:
return [(n - s) / r % 6 * 60 || 0, i, o]; return [(n - s) / r % 6 * 60 || 0, i, o];
case n: case n:
return [60 * ((s - t) / r + 2) || 0, i, o]; return [60 * ((s - t) / r + 2) || 0, i, o];
case s: case s:
return [60 * ((t - n) / r + 4) || 0, i, o] return [60 * ((t - n) / r + 4) || 0, i, o]
} }
}; }
(e)[0]; (e)[0];
return [o, o] return [o, o]
} }
return [0, 360] return [0, 360]
}; }
(e.hue)); (e.hue));
n < 0 && (n = 360 + n); n < 0 && (n = 360 + n);
return n return n
}; }
(r), l = function(e, t) { (r), l = function(e, t) {
if ("monochrome" === t.hue) if ("monochrome" === t.hue)
return 0; return 0;
if ("random" === t.luminosity) if ("random" === t.luminosity)
return o([0, 100]); return o([0, 100]);
var n = function(e) { var n = function(e) {
return s(e).saturationRange return s(e).saturationRange
}; }
(e), (e),
r = n[0], r = n[0],
i = n[1]; i = n[1];
switch (t.luminosity) { switch (t.luminosity) {
case "bright": case "bright":
r = 55; r = 55;
break; break;
case "dark": case "dark":
r = i - 10; r = i - 10;
break; break;
case "light": case "light":
i = 55 i = 55
} }
return o([r, i]) return o([r, i])
}; }
(c, r), (c, r),
function(e, t, n) { function(e, t, n) {
var r = function(e, t) { var r = function(e, t) {
for (var n = s(e).lowerBounds, o = 0; o < n.length - 1; o++) { for (var n = s(e).lowerBounds, o = 0; o < n.length - 1; o++) {
var r = n[o][0], var r = n[o][0],
i = n[o][1], i = n[o][1],
a = n[o + 1][0], a = n[o + 1][0],
c = n[o + 1][1]; c = n[o + 1][1];
if (t >= r && t <= a) { if (t >= r && t <= a) {
var l = (c - i) / (a - r); var l = (c - i) / (a - r);
return l * t + (i - l * r) return l * t + (i - l * r)
} }
} }
return 0 return 0
}; }
(e, t), (e, t),
i = 100; i = 100;
switch (n.luminosity) { switch (n.luminosity) {
case "dark": case "dark":
i = r + 20; i = r + 20;
break; break;
case "light": case "light":
r = (i + r) / 2; r = (i + r) / 2;
break; break;
case "random": case "random":
r = 0, r = 0,
i = 100 i = 100
} }
return o([r, i]) return o([r, i])
}; }
(c, l, r) (c, l, r)
], r) ], r)
}; };
function s(e) { function s(e) {
for (var n in e >= 334 && e <= 360 && (e -= 360), t) { for (var n in e >= 334 && e <= 360 && (e -= 360), t) {
var s = t[n]; var s = t[n];
if (s.hueRange && e >= s.hueRange[0] && e <= s.hueRange[1]) if (s.hueRange && e >= s.hueRange[0] && e <= s.hueRange[1])
return t[n] return t[n]
} }
return "Color not found" return "Color not found"
} }
function o(t) { function o(t) {
if (null === e) if (null === e)
return Math.floor(t[0] + Math.random() * (t[1] + 1 - t[0])); return Math.floor(t[0] + Math.random() * (t[1] + 1 - t[0]));
var n = t[1] || 1, var n = t[1] || 1,
s = t[0] || 0, s = t[0] || 0,
o = (e = (9301 * e + 49297) % 233280) / 233280; o = (e = (9301 * e + 49297) % 233280) / 233280;
return Math.floor(s + o * (n - s)) return Math.floor(s + o * (n - s))
} }
function r(e, n, s) { function r(e, n, s) {
var o = s[0][0], var o = s[0][0],
r = s[s.length - 1][0], r = s[s.length - 1][0],
i = s[s.length - 1][1], i = s[s.length - 1][1],
a = s[0][1]; a = s[0][1];
t[e] = { t[e] = {
hueRange: n, hueRange: n,
lowerBounds: s, lowerBounds: s,
saturationRange: [o, r], saturationRange: [o, r],
brightnessRange: [i, a] brightnessRange: [i, a]
} }
} }
function i(e) { function i(e) {
var t = e[0]; var t = e[0];
0 === t && (t = 1), 0 === t && (t = 1),
360 === t && (t = 359), 360 === t && (t = 359),
t /= 360; t /= 360;
var n = e[1] / 100, var n = e[1] / 100,
s = e[2] / 100, s = e[2] / 100,
o = Math.floor(6 * t), o = Math.floor(6 * t),
r = 6 * t - o, r = 6 * t - o,
i = s * (1 - n), i = s * (1 - n),
a = s * (1 - r * n), a = s * (1 - r * n),
c = s * (1 - (1 - r) * n), c = s * (1 - (1 - r) * n),
l = 256, l = 256,
u = 256, u = 256,
d = 256; d = 256;
switch (o) { switch (o) {
case 0: case 0:
l = s, l = s,
u = c, u = c,
d = i; d = i;
break; break;
case 1: case 1:
l = a, l = a,
u = s, u = s,
d = i; d = i;
break; break;
case 2: case 2:
l = i, l = i,
u = s, u = s,
d = c; d = c;
break; break;
case 3: case 3:
l = i, l = i,
u = a, u = a,
d = s; d = s;
break; break;
case 4: case 4:
l = c, l = c,
u = i, u = i,
d = s; d = s;
break; break;
case 5: case 5:
l = s, l = s,
u = i, u = i,
d = a d = a
} }
return [Math.floor(255 * l), Math.floor(255 * u), Math.floor(255 * d)] return [Math.floor(255 * l), Math.floor(255 * u), Math.floor(255 * d)]
} }
function a(e) { function a(e) {
var t = e[0], var t = e[0],
n = e[1] / 100, n = e[1] / 100,
s = e[2] / 100, s = e[2] / 100,
o = (2 - n) * s; o = (2 - n) * s;
return [t, Math.round(n * s / (o < 1 ? o : 2 - o) * 1e4) / 100, o / 2 * 100] return [t, Math.round(n * s / (o < 1 ? o : 2 - o) * 1e4) / 100, o / 2 * 100]
} }
return n() return n()
} }
export {
randomcolor
}