opendash
Version:
open.DASH data visualization framework
37 lines • 1.15 kB
JavaScript
var DISALLOED_HUE_RANGES = [
// [20, 210],
// [240, 340]
];
var NUMBER_RANGE = 360 -
DISALLOED_HUE_RANGES.reduce(function (previous, _a) {
var start = _a[0], end = _a[1];
return previous + (end - start);
}, 0);
export function stringToColor(str) {
var hash = stringToHash(str);
var color = numberToColor(hash);
return color;
}
function stringToHash(str) {
var hash = 0;
str = btoa(str);
for (var i = 0; i < str.length; i++) {
hash = str.charCodeAt(i) + ((hash << 5) - hash);
}
hash = hash * 9301 + 49297;
return hash;
}
function numberToColor(hash) {
hash = Math.abs(hash);
var saturation = 70;
var lightness = 40;
var hue = DISALLOED_HUE_RANGES.reduce(function (acc, _a) {
var start = _a[0], end = _a[1];
return (acc >= start ? acc + (end - start) : acc);
}, hash % NUMBER_RANGE);
var color = "hsl(" + hue + ", " + saturation + "%, " + lightness + "%)";
return color;
}
// test:
// new Array(1000).fill(0).forEach((_, i) => console.info(numberToColor(i)));
//# sourceMappingURL=stringToColor.js.map