{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-markus/src/external/color-hash.js"],"names":["ColorHash","isArray","BKDRHash","str","seed","seed2","hash","MAX_SAFE_INTEGER","parseInt","i","length","charCodeAt","RGB2HEX","RGBArray","hex","forEach","value","toString","HSL2RGB","H","S","L","q","p","map","color","Math","round","o","Object","prototype","call","options","LS","lightness","saturation","param","concat","hue","min","max","hueRanges","range","hsl","hueResolution","rgb","apply"],"mappings":"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","file":"color-hash.js","sourcesContent":["\n/**\n * BKDR Hash (modified version)\n *\n * @param {String} str string to hash\n * @returns {Number}\n */\nvar BKDRHash = function(str) {\n    var seed = 131;\n    var seed2 = 137;\n    var hash = 0;\n    // make hash more sensitive for short string like 'a', 'b', 'c'\n    str += 'x';\n    // Note: Number.MAX_SAFE_INTEGER equals 9007199254740991\n    var MAX_SAFE_INTEGER = parseInt(9007199254740991 / seed2);\n    for(var i = 0; i < str.length; i++) {\n        if(hash > MAX_SAFE_INTEGER) {\n            hash = parseInt(hash / seed2);\n        }\n        hash = hash * seed + str.charCodeAt(i);\n    }\n    return hash;\n};\n\n\n/**\n * Convert RGB Array to HEX\n *\n * @param {Array} RGBArray - [R, G, B]\n * @returns {String} 6 digits hex starting with #\n */\nvar RGB2HEX = function(RGBArray) {\n    var hex = '#';\n    RGBArray.forEach(function(value) {\n        if (value < 16) {\n            hex += 0;\n        }\n        hex += value.toString(16);\n    });\n    return hex;\n};\n\n/**\n * Convert HSL to RGB\n *\n * @see {@link http://zh.wikipedia.org/wiki/HSL和HSV色彩空间} for further information.\n * @param {Number} H Hue ∈ [0, 360)\n * @param {Number} S Saturation ∈ [0, 1]\n * @param {Number} L Lightness ∈ [0, 1]\n * @returns {Array} R, G, B ∈ [0, 255]\n */\nvar HSL2RGB = function(H, S, L) {\n    H /= 360;\n\n    var q = L < 0.5 ? L * (1 + S) : L + S - L * S;\n    var p = 2 * L - q;\n\n    return [H + 1/3, H, H - 1/3].map(function(color) {\n        if(color < 0) {\n            color++;\n        }\n        if(color > 1) {\n            color--;\n        }\n        if(color < 1/6) {\n            color = p + (q - p) * 6 * color;\n        } else if(color < 0.5) {\n            color = q;\n        } else if(color < 2/3) {\n            color = p + (q - p) * 6 * (2/3 - color);\n        } else {\n            color = p;\n        }\n        return Math.round(color * 255);\n    });\n};\n\nfunction isArray(o) {\n    return Object.prototype.toString.call(o) === '[object Array]';\n}\n\n/**\n * Color Hash Class\n *\n * @class\n */\nexport default function ColorHash(options) {\n    options = options || {};\n\n    var LS = [options.lightness, options.saturation].map(function(param) {\n        param = param || [0.35, 0.5, 0.65]; // note that 3 is a prime\n        return isArray(param) ? param.concat() : [param];\n    });\n\n    this.L = LS[0];\n    this.S = LS[1];\n\n    if (typeof options.hue === 'number') {\n        options.hue = {min: options.hue, max: options.hue};\n    }\n    if (typeof options.hue === 'object' && !isArray(options.hue)) {\n        options.hue = [options.hue];\n    }\n    if (typeof options.hue === 'undefined') {\n        options.hue = [];\n    }\n    this.hueRanges = options.hue.map(function (range) {\n        return {\n            min: typeof range.min === 'undefined' ? 0 : range.min,\n            max: typeof range.max === 'undefined' ? 360: range.max\n        };\n    });\n\n    this.hash = options.hash || BKDRHash;\n};\n\n/**\n * Returns the hash in [h, s, l].\n * Note that H ∈ [0, 360); S ∈ [0, 1]; L ∈ [0, 1];\n *\n * @param {String} str string to hash\n * @returns {Array} [h, s, l]\n */\nColorHash.prototype.hsl = function(str) {\n    var H, S, L;\n    var hash = this.hash(str);\n\n    if (this.hueRanges.length) {\n        var range = this.hueRanges[hash % this.hueRanges.length];\n        var hueResolution = 727; // note that 727 is a prime\n        H = ((hash / this.hueRanges.length) % hueResolution) * (range.max - range.min) / hueResolution + range.min;\n    } else {\n        H = hash % 359; // note that 359 is a prime\n    }\n    hash = parseInt(hash / 360);\n    S = this.S[hash % this.S.length];\n    hash = parseInt(hash / this.S.length);\n    L = this.L[hash % this.L.length];\n\n    return [H, S, L];\n};\n\n/**\n * Returns the hash in [r, g, b].\n * Note that R, G, B ∈ [0, 255]\n *\n * @param {String} str string to hash\n * @returns {Array} [r, g, b]\n */\nColorHash.prototype.rgb = function(str) {\n    var hsl = this.hsl(str);\n    return HSL2RGB.apply(this, hsl);\n};\n\n/**\n * Returns the hash in hex\n *\n * @param {String} str string to hash\n * @returns {String} hex with #\n */\nColorHash.prototype.hex = function(str) {\n    var rgb = this.rgb(str);\n    return RGB2HEX(rgb);\n};\n"]}