color-hash
Version:
Generate color based on the given string (using HSL color space and SHA256).
580 lines (579 loc) • 22.8 kB
JavaScript
"use strict";
// deno-fmt-ignore-file
// deno-lint-ignore-file
// This code was bundled using `deno bundle` and it's not recommended to edit it manually
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, privateMap, value) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
privateMap.set(receiver, value);
return value;
};
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return privateMap.get(receiver);
};
var _block, _blocks, _bytes, _finalized, _first, _h0, _h1, _h2, _h3, _h4, _h5, _h6, _h7, _hashed, _hBytes, _is224, _lastByteIndex, _start;
exports.__esModule = true;
exports["default"] = void 0;
var BKDRHash = function (str) {
var seed = 131;
var seed2 = 137;
var hash = 0;
str += 'x';
var MAX_SAFE_INTEGER = Math.floor(9007199254740991 / seed2);
for (var i = 0; i < str.length; i++) {
if (hash > MAX_SAFE_INTEGER) {
hash = Math.floor(hash / seed2);
}
hash = hash * seed + str.charCodeAt(i);
}
return hash;
};
var HEX_CHARS = "0123456789abcdef".split("");
var EXTRA = [
-2147483648,
8388608,
32768,
128
];
var SHIFT = [
24,
16,
8,
0
];
var K = [
0x428a2f98,
0x71374491,
0xb5c0fbcf,
0xe9b5dba5,
0x3956c25b,
0x59f111f1,
0x923f82a4,
0xab1c5ed5,
0xd807aa98,
0x12835b01,
0x243185be,
0x550c7dc3,
0x72be5d74,
0x80deb1fe,
0x9bdc06a7,
0xc19bf174,
0xe49b69c1,
0xefbe4786,
0x0fc19dc6,
0x240ca1cc,
0x2de92c6f,
0x4a7484aa,
0x5cb0a9dc,
0x76f988da,
0x983e5152,
0xa831c66d,
0xb00327c8,
0xbf597fc7,
0xc6e00bf3,
0xd5a79147,
0x06ca6351,
0x14292967,
0x27b70a85,
0x2e1b2138,
0x4d2c6dfc,
0x53380d13,
0x650a7354,
0x766a0abb,
0x81c2c92e,
0x92722c85,
0xa2bfe8a1,
0xa81a664b,
0xc24b8b70,
0xc76c51a3,
0xd192e819,
0xd6990624,
0xf40e3585,
0x106aa070,
0x19a4c116,
0x1e376c08,
0x2748774c,
0x34b0bcb5,
0x391c0cb3,
0x4ed8aa4a,
0x5b9cca4f,
0x682e6ff3,
0x748f82ee,
0x78a5636f,
0x84c87814,
0x8cc70208,
0x90befffa,
0xa4506ceb,
0xbef9a3f7,
0xc67178f2
];
var blocks = [];
var Sha256 = /** @class */ (function () {
function Sha256(is224, sharedMemory) {
if (is224 === void 0) { is224 = false; }
if (sharedMemory === void 0) { sharedMemory = false; }
_block.set(this, void 0);
_blocks.set(this, void 0);
_bytes.set(this, void 0);
_finalized.set(this, void 0);
_first.set(this, void 0);
_h0.set(this, void 0);
_h1.set(this, void 0);
_h2.set(this, void 0);
_h3.set(this, void 0);
_h4.set(this, void 0);
_h5.set(this, void 0);
_h6.set(this, void 0);
_h7.set(this, void 0);
_hashed.set(this, void 0);
_hBytes.set(this, void 0);
_is224.set(this, void 0);
_lastByteIndex.set(this, 0);
_start.set(this, void 0);
this.init(is224, sharedMemory);
}
Sha256.prototype.init = function (is224, sharedMemory) {
if (sharedMemory) {
blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
__classPrivateFieldSet(this, _blocks, blocks);
}
else {
__classPrivateFieldSet(this, _blocks, [
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]);
}
if (is224) {
__classPrivateFieldSet(this, _h0, 0xc1059ed8);
__classPrivateFieldSet(this, _h1, 0x367cd507);
__classPrivateFieldSet(this, _h2, 0x3070dd17);
__classPrivateFieldSet(this, _h3, 0xf70e5939);
__classPrivateFieldSet(this, _h4, 0xffc00b31);
__classPrivateFieldSet(this, _h5, 0x68581511);
__classPrivateFieldSet(this, _h6, 0x64f98fa7);
__classPrivateFieldSet(this, _h7, 0xbefa4fa4);
}
else {
__classPrivateFieldSet(this, _h0, 0x6a09e667);
__classPrivateFieldSet(this, _h1, 0xbb67ae85);
__classPrivateFieldSet(this, _h2, 0x3c6ef372);
__classPrivateFieldSet(this, _h3, 0xa54ff53a);
__classPrivateFieldSet(this, _h4, 0x510e527f);
__classPrivateFieldSet(this, _h5, 0x9b05688c);
__classPrivateFieldSet(this, _h6, 0x1f83d9ab);
__classPrivateFieldSet(this, _h7, 0x5be0cd19);
}
__classPrivateFieldSet(this, _block, __classPrivateFieldSet(this, _start, __classPrivateFieldSet(this, _bytes, __classPrivateFieldSet(this, _hBytes, 0))));
__classPrivateFieldSet(this, _finalized, __classPrivateFieldSet(this, _hashed, false));
__classPrivateFieldSet(this, _first, true);
__classPrivateFieldSet(this, _is224, is224);
};
Sha256.prototype.update = function (message) {
if (__classPrivateFieldGet(this, _finalized)) {
return this;
}
var msg;
if (message instanceof ArrayBuffer) {
msg = new Uint8Array(message);
}
else {
msg = message;
}
var index = 0;
var length = msg.length;
var blocks = __classPrivateFieldGet(this, _blocks);
while (index < length) {
var i = void 0;
if (__classPrivateFieldGet(this, _hashed)) {
__classPrivateFieldSet(this, _hashed, false);
blocks[0] = __classPrivateFieldGet(this, _block);
blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
}
if (typeof msg !== "string") {
for (i = __classPrivateFieldGet(this, _start); index < length && i < 64; ++index) {
blocks[i >> 2] |= msg[index] << SHIFT[i++ & 3];
}
}
else {
for (i = __classPrivateFieldGet(this, _start); index < length && i < 64; ++index) {
var code = msg.charCodeAt(index);
if (code < 0x80) {
blocks[i >> 2] |= code << SHIFT[i++ & 3];
}
else if (code < 0x800) {
blocks[i >> 2] |= (0xc0 | code >> 6) << SHIFT[i++ & 3];
blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];
}
else if (code < 0xd800 || code >= 0xe000) {
blocks[i >> 2] |= (0xe0 | code >> 12) << SHIFT[i++ & 3];
blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];
blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];
}
else {
code = 0x10000 + ((code & 0x3ff) << 10 | msg.charCodeAt(++index) & 0x3ff);
blocks[i >> 2] |= (0xf0 | code >> 18) << SHIFT[i++ & 3];
blocks[i >> 2] |= (0x80 | code >> 12 & 0x3f) << SHIFT[i++ & 3];
blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];
blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];
}
}
}
__classPrivateFieldSet(this, _lastByteIndex, i);
__classPrivateFieldSet(this, _bytes, __classPrivateFieldGet(this, _bytes) + (i - __classPrivateFieldGet(this, _start)));
if (i >= 64) {
__classPrivateFieldSet(this, _block, blocks[16]);
__classPrivateFieldSet(this, _start, i - 64);
this.hash();
__classPrivateFieldSet(this, _hashed, true);
}
else {
__classPrivateFieldSet(this, _start, i);
}
}
if (__classPrivateFieldGet(this, _bytes) > 4294967295) {
__classPrivateFieldSet(this, _hBytes, __classPrivateFieldGet(this, _hBytes) + (__classPrivateFieldGet(this, _bytes) / 4294967296 << 0));
__classPrivateFieldSet(this, _bytes, __classPrivateFieldGet(this, _bytes) % 4294967296);
}
return this;
};
Sha256.prototype.finalize = function () {
if (__classPrivateFieldGet(this, _finalized)) {
return;
}
__classPrivateFieldSet(this, _finalized, true);
var blocks = __classPrivateFieldGet(this, _blocks);
var i = __classPrivateFieldGet(this, _lastByteIndex);
blocks[16] = __classPrivateFieldGet(this, _block);
blocks[i >> 2] |= EXTRA[i & 3];
__classPrivateFieldSet(this, _block, blocks[16]);
if (i >= 56) {
if (!__classPrivateFieldGet(this, _hashed)) {
this.hash();
}
blocks[0] = __classPrivateFieldGet(this, _block);
blocks[16] = blocks[1] = blocks[2] = blocks[3] = blocks[4] = blocks[5] = blocks[6] = blocks[7] = blocks[8] = blocks[9] = blocks[10] = blocks[11] = blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;
}
blocks[14] = __classPrivateFieldGet(this, _hBytes) << 3 | __classPrivateFieldGet(this, _bytes) >>> 29;
blocks[15] = __classPrivateFieldGet(this, _bytes) << 3;
this.hash();
};
Sha256.prototype.hash = function () {
var a = __classPrivateFieldGet(this, _h0);
var b = __classPrivateFieldGet(this, _h1);
var c = __classPrivateFieldGet(this, _h2);
var d = __classPrivateFieldGet(this, _h3);
var e = __classPrivateFieldGet(this, _h4);
var f = __classPrivateFieldGet(this, _h5);
var g = __classPrivateFieldGet(this, _h6);
var h = __classPrivateFieldGet(this, _h7);
var blocks = __classPrivateFieldGet(this, _blocks);
var s0;
var s1;
var maj;
var t1;
var t2;
var ch;
var ab;
var da;
var cd;
var bc;
for (var j = 16; j < 64; ++j) {
t1 = blocks[j - 15];
s0 = (t1 >>> 7 | t1 << 25) ^ (t1 >>> 18 | t1 << 14) ^ t1 >>> 3;
t1 = blocks[j - 2];
s1 = (t1 >>> 17 | t1 << 15) ^ (t1 >>> 19 | t1 << 13) ^ t1 >>> 10;
blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;
}
bc = b & c;
for (var j1 = 0; j1 < 64; j1 += 4) {
if (__classPrivateFieldGet(this, _first)) {
if (__classPrivateFieldGet(this, _is224)) {
ab = 300032;
t1 = blocks[0] - 1413257819;
h = t1 - 150054599 << 0;
d = t1 + 24177077 << 0;
}
else {
ab = 704751109;
t1 = blocks[0] - 210244248;
h = t1 - 1521486534 << 0;
d = t1 + 143694565 << 0;
}
__classPrivateFieldSet(this, _first, false);
}
else {
s0 = (a >>> 2 | a << 30) ^ (a >>> 13 | a << 19) ^ (a >>> 22 | a << 10);
s1 = (e >>> 6 | e << 26) ^ (e >>> 11 | e << 21) ^ (e >>> 25 | e << 7);
ab = a & b;
maj = ab ^ a & c ^ bc;
ch = e & f ^ ~e & g;
t1 = h + s1 + ch + K[j1] + blocks[j1];
t2 = s0 + maj;
h = d + t1 << 0;
d = t1 + t2 << 0;
}
s0 = (d >>> 2 | d << 30) ^ (d >>> 13 | d << 19) ^ (d >>> 22 | d << 10);
s1 = (h >>> 6 | h << 26) ^ (h >>> 11 | h << 21) ^ (h >>> 25 | h << 7);
da = d & a;
maj = da ^ d & b ^ ab;
ch = h & e ^ ~h & f;
t1 = g + s1 + ch + K[j1 + 1] + blocks[j1 + 1];
t2 = s0 + maj;
g = c + t1 << 0;
c = t1 + t2 << 0;
s0 = (c >>> 2 | c << 30) ^ (c >>> 13 | c << 19) ^ (c >>> 22 | c << 10);
s1 = (g >>> 6 | g << 26) ^ (g >>> 11 | g << 21) ^ (g >>> 25 | g << 7);
cd = c & d;
maj = cd ^ c & a ^ da;
ch = g & h ^ ~g & e;
t1 = f + s1 + ch + K[j1 + 2] + blocks[j1 + 2];
t2 = s0 + maj;
f = b + t1 << 0;
b = t1 + t2 << 0;
s0 = (b >>> 2 | b << 30) ^ (b >>> 13 | b << 19) ^ (b >>> 22 | b << 10);
s1 = (f >>> 6 | f << 26) ^ (f >>> 11 | f << 21) ^ (f >>> 25 | f << 7);
bc = b & c;
maj = bc ^ b & d ^ cd;
ch = f & g ^ ~f & h;
t1 = e + s1 + ch + K[j1 + 3] + blocks[j1 + 3];
t2 = s0 + maj;
e = a + t1 << 0;
a = t1 + t2 << 0;
}
__classPrivateFieldSet(this, _h0, __classPrivateFieldGet(this, _h0) + a << 0);
__classPrivateFieldSet(this, _h1, __classPrivateFieldGet(this, _h1) + b << 0);
__classPrivateFieldSet(this, _h2, __classPrivateFieldGet(this, _h2) + c << 0);
__classPrivateFieldSet(this, _h3, __classPrivateFieldGet(this, _h3) + d << 0);
__classPrivateFieldSet(this, _h4, __classPrivateFieldGet(this, _h4) + e << 0);
__classPrivateFieldSet(this, _h5, __classPrivateFieldGet(this, _h5) + f << 0);
__classPrivateFieldSet(this, _h6, __classPrivateFieldGet(this, _h6) + g << 0);
__classPrivateFieldSet(this, _h7, __classPrivateFieldGet(this, _h7) + h << 0);
};
Sha256.prototype.hex = function () {
this.finalize();
var h0 = __classPrivateFieldGet(this, _h0);
var h1 = __classPrivateFieldGet(this, _h1);
var h2 = __classPrivateFieldGet(this, _h2);
var h3 = __classPrivateFieldGet(this, _h3);
var h4 = __classPrivateFieldGet(this, _h4);
var h5 = __classPrivateFieldGet(this, _h5);
var h6 = __classPrivateFieldGet(this, _h6);
var h7 = __classPrivateFieldGet(this, _h7);
var hex = HEX_CHARS[h0 >> 28 & 0x0f] + HEX_CHARS[h0 >> 24 & 0x0f] + HEX_CHARS[h0 >> 20 & 0x0f] + HEX_CHARS[h0 >> 16 & 0x0f] + HEX_CHARS[h0 >> 12 & 0x0f] + HEX_CHARS[h0 >> 8 & 0x0f] + HEX_CHARS[h0 >> 4 & 0x0f] + HEX_CHARS[h0 & 0x0f] + HEX_CHARS[h1 >> 28 & 0x0f] + HEX_CHARS[h1 >> 24 & 0x0f] + HEX_CHARS[h1 >> 20 & 0x0f] + HEX_CHARS[h1 >> 16 & 0x0f] + HEX_CHARS[h1 >> 12 & 0x0f] + HEX_CHARS[h1 >> 8 & 0x0f] + HEX_CHARS[h1 >> 4 & 0x0f] + HEX_CHARS[h1 & 0x0f] + HEX_CHARS[h2 >> 28 & 0x0f] + HEX_CHARS[h2 >> 24 & 0x0f] + HEX_CHARS[h2 >> 20 & 0x0f] + HEX_CHARS[h2 >> 16 & 0x0f] + HEX_CHARS[h2 >> 12 & 0x0f] + HEX_CHARS[h2 >> 8 & 0x0f] + HEX_CHARS[h2 >> 4 & 0x0f] + HEX_CHARS[h2 & 0x0f] + HEX_CHARS[h3 >> 28 & 0x0f] + HEX_CHARS[h3 >> 24 & 0x0f] + HEX_CHARS[h3 >> 20 & 0x0f] + HEX_CHARS[h3 >> 16 & 0x0f] + HEX_CHARS[h3 >> 12 & 0x0f] + HEX_CHARS[h3 >> 8 & 0x0f] + HEX_CHARS[h3 >> 4 & 0x0f] + HEX_CHARS[h3 & 0x0f] + HEX_CHARS[h4 >> 28 & 0x0f] + HEX_CHARS[h4 >> 24 & 0x0f] + HEX_CHARS[h4 >> 20 & 0x0f] + HEX_CHARS[h4 >> 16 & 0x0f] + HEX_CHARS[h4 >> 12 & 0x0f] + HEX_CHARS[h4 >> 8 & 0x0f] + HEX_CHARS[h4 >> 4 & 0x0f] + HEX_CHARS[h4 & 0x0f] + HEX_CHARS[h5 >> 28 & 0x0f] + HEX_CHARS[h5 >> 24 & 0x0f] + HEX_CHARS[h5 >> 20 & 0x0f] + HEX_CHARS[h5 >> 16 & 0x0f] + HEX_CHARS[h5 >> 12 & 0x0f] + HEX_CHARS[h5 >> 8 & 0x0f] + HEX_CHARS[h5 >> 4 & 0x0f] + HEX_CHARS[h5 & 0x0f] + HEX_CHARS[h6 >> 28 & 0x0f] + HEX_CHARS[h6 >> 24 & 0x0f] + HEX_CHARS[h6 >> 20 & 0x0f] + HEX_CHARS[h6 >> 16 & 0x0f] + HEX_CHARS[h6 >> 12 & 0x0f] + HEX_CHARS[h6 >> 8 & 0x0f] + HEX_CHARS[h6 >> 4 & 0x0f] + HEX_CHARS[h6 & 0x0f];
if (!__classPrivateFieldGet(this, _is224)) {
hex += HEX_CHARS[h7 >> 28 & 0x0f] + HEX_CHARS[h7 >> 24 & 0x0f] + HEX_CHARS[h7 >> 20 & 0x0f] + HEX_CHARS[h7 >> 16 & 0x0f] + HEX_CHARS[h7 >> 12 & 0x0f] + HEX_CHARS[h7 >> 8 & 0x0f] + HEX_CHARS[h7 >> 4 & 0x0f] + HEX_CHARS[h7 & 0x0f];
}
return hex;
};
Sha256.prototype.toString = function () {
return this.hex();
};
Sha256.prototype.digest = function () {
this.finalize();
var h0 = __classPrivateFieldGet(this, _h0);
var h1 = __classPrivateFieldGet(this, _h1);
var h2 = __classPrivateFieldGet(this, _h2);
var h3 = __classPrivateFieldGet(this, _h3);
var h4 = __classPrivateFieldGet(this, _h4);
var h5 = __classPrivateFieldGet(this, _h5);
var h6 = __classPrivateFieldGet(this, _h6);
var h7 = __classPrivateFieldGet(this, _h7);
var arr = [
h0 >> 24 & 0xff,
h0 >> 16 & 0xff,
h0 >> 8 & 0xff,
h0 & 0xff,
h1 >> 24 & 0xff,
h1 >> 16 & 0xff,
h1 >> 8 & 0xff,
h1 & 0xff,
h2 >> 24 & 0xff,
h2 >> 16 & 0xff,
h2 >> 8 & 0xff,
h2 & 0xff,
h3 >> 24 & 0xff,
h3 >> 16 & 0xff,
h3 >> 8 & 0xff,
h3 & 0xff,
h4 >> 24 & 0xff,
h4 >> 16 & 0xff,
h4 >> 8 & 0xff,
h4 & 0xff,
h5 >> 24 & 0xff,
h5 >> 16 & 0xff,
h5 >> 8 & 0xff,
h5 & 0xff,
h6 >> 24 & 0xff,
h6 >> 16 & 0xff,
h6 >> 8 & 0xff,
h6 & 0xff
];
if (!__classPrivateFieldGet(this, _is224)) {
arr.push(h7 >> 24 & 0xff, h7 >> 16 & 0xff, h7 >> 8 & 0xff, h7 & 0xff);
}
return arr;
};
Sha256.prototype.array = function () {
return this.digest();
};
Sha256.prototype.arrayBuffer = function () {
this.finalize();
var buffer = new ArrayBuffer(__classPrivateFieldGet(this, _is224) ? 28 : 32);
var dataView = new DataView(buffer);
dataView.setUint32(0, __classPrivateFieldGet(this, _h0));
dataView.setUint32(4, __classPrivateFieldGet(this, _h1));
dataView.setUint32(8, __classPrivateFieldGet(this, _h2));
dataView.setUint32(12, __classPrivateFieldGet(this, _h3));
dataView.setUint32(16, __classPrivateFieldGet(this, _h4));
dataView.setUint32(20, __classPrivateFieldGet(this, _h5));
dataView.setUint32(24, __classPrivateFieldGet(this, _h6));
if (!__classPrivateFieldGet(this, _is224)) {
dataView.setUint32(28, __classPrivateFieldGet(this, _h7));
}
return buffer;
};
return Sha256;
}());
_block = new WeakMap(), _blocks = new WeakMap(), _bytes = new WeakMap(), _finalized = new WeakMap(), _first = new WeakMap(), _h0 = new WeakMap(), _h1 = new WeakMap(), _h2 = new WeakMap(), _h3 = new WeakMap(), _h4 = new WeakMap(), _h5 = new WeakMap(), _h6 = new WeakMap(), _h7 = new WeakMap(), _hashed = new WeakMap(), _hBytes = new WeakMap(), _is224 = new WeakMap(), _lastByteIndex = new WeakMap(), _start = new WeakMap();
function Sha256ToInt(s) {
var sha256 = new Sha256();
sha256.update(s);
return parseInt(sha256.hex().substring(0, 8), 16);
}
var RGB2HEX = function (RGBArray) {
var hex = '#';
RGBArray.forEach(function (value) {
if (value < 16) {
hex += 0;
}
hex += value.toString(16);
});
return hex;
};
var HSL2RGB = function (H, S, L) {
H /= 360;
var q = L < 0.5 ? L * (1 + S) : L + S - L * S;
var p = 2 * L - q;
return [
H + 1 / 3,
H,
H - 1 / 3
].map(function (color) {
if (color < 0) {
color++;
}
if (color > 1) {
color--;
}
if (color < 1 / 6) {
color = p + (q - p) * 6 * color;
}
else if (color < 0.5) {
color = q;
}
else if (color < 2 / 3) {
color = p + (q - p) * 6 * (2 / 3 - color);
}
else {
color = p;
}
return Math.round(color * 255);
});
};
var ColorHash = /** @class */ (function () {
function ColorHash(options) {
if (options === void 0) { options = {}; }
var _a = [
options.lightness,
options.saturation
].map(function (param) {
param = param !== undefined ? param : [
0.35,
0.5,
0.65
];
return Array.isArray(param) ? param.concat() : [
param
];
}), L = _a[0], S = _a[1];
this.L = L;
this.S = S;
if (typeof options.hue === 'number') {
options.hue = {
min: options.hue,
max: options.hue
};
}
if (typeof options.hue === 'object' && !Array.isArray(options.hue)) {
options.hue = [
options.hue
];
}
if (typeof options.hue === 'undefined') {
options.hue = [];
}
this.hueRanges = options.hue.map(function (range) {
return {
min: typeof range.min === 'undefined' ? 0 : range.min,
max: typeof range.max === 'undefined' ? 360 : range.max
};
});
this.hash = Sha256ToInt;
if (typeof options.hash === 'function') {
this.hash = options.hash;
}
if (options.hash === 'bkdr') {
this.hash = BKDRHash;
}
}
ColorHash.prototype.hsl = function (str) {
var H, S, L;
var hash = this.hash(str);
var hueResolution = 727;
if (this.hueRanges.length) {
var range = this.hueRanges[hash % this.hueRanges.length];
H = hash / this.hueRanges.length % hueResolution * (range.max - range.min) / hueResolution + range.min;
}
else {
H = hash % 359;
}
hash = Math.ceil(hash / 360);
S = this.S[hash % this.S.length];
hash = Math.ceil(hash / this.S.length);
L = this.L[hash % this.L.length];
return [
H,
S,
L
];
};
ColorHash.prototype.rgb = function (str) {
var hsl = this.hsl(str);
return HSL2RGB.apply(this, hsl);
};
ColorHash.prototype.hex = function (str) {
var rgb = this.rgb(str);
return RGB2HEX(rgb);
};
return ColorHash;
}());
exports["default"] = ColorHash;