Skip to content

Instantly share code, notes, and snippets.

@starlocke
Created November 19, 2021 15:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save starlocke/6d5b234755d85cdf29e05f2c6e9bcd45 to your computer and use it in GitHub Desktop.
Save starlocke/6d5b234755d85cdf29e05f2c6e9bcd45 to your computer and use it in GitHub Desktop.
// ColorHash @ https://github.com/zenozeng/color-hash -- minified
var _block,_blocks,_bytes,_finalized,_first,_h0,_h1,_h2,_h3,_h4,_h5,_h6,_h7,_hashed,_hBytes,_is224,_lastByteIndex,_start,_inner,_is224_1,_oKeyPad,_sharedMemory,__extends=this&&this.__extends||function(){var t=function(e,s){return(t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&(t[s]=e[s])})(e,s)};return function(e,s){if("function"!=typeof s&&null!==s)throw new TypeError("Class extends value "+String(s)+" is not a constructor or null");function i(){this.constructor=e}t(e,s),e.prototype=null===s?Object.create(s):(i.prototype=s.prototype,new i)}}(),__classPrivateFieldSet=this&&this.__classPrivateFieldSet||function(t,e,s){if(!e.has(t))throw new TypeError("attempted to set private field on non-instance");return e.set(t,s),s},__classPrivateFieldGet=this&&this.__classPrivateFieldGet||function(t,e){if(!e.has(t))throw new TypeError("attempted to get private field on non-instance");return e.get(t)};var BKDRHash=function(t){var e=0;t+="x";for(var s=Math.floor(65745979961613.07),i=0;i<t.length;i++)e>s&&(e=Math.floor(e/137)),e=131*e+t.charCodeAt(i);return e},HEX_CHARS="0123456789abcdef".split(""),EXTRA=[-2147483648,8388608,32768,128],SHIFT=[24,16,8,0],K=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],blocks=[],Sha256=function(){function t(t,e){void 0===t&&(t=!1),void 0===e&&(e=!1),_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(t,e)}return t.prototype.init=function(t,e){e?(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)):__classPrivateFieldSet(this,_blocks,[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),t?(__classPrivateFieldSet(this,_h0,3238371032),__classPrivateFieldSet(this,_h1,914150663),__classPrivateFieldSet(this,_h2,812702999),__classPrivateFieldSet(this,_h3,4144912697),__classPrivateFieldSet(this,_h4,4290775857),__classPrivateFieldSet(this,_h5,1750603025),__classPrivateFieldSet(this,_h6,1694076839),__classPrivateFieldSet(this,_h7,3204075428)):(__classPrivateFieldSet(this,_h0,1779033703),__classPrivateFieldSet(this,_h1,3144134277),__classPrivateFieldSet(this,_h2,1013904242),__classPrivateFieldSet(this,_h3,2773480762),__classPrivateFieldSet(this,_h4,1359893119),__classPrivateFieldSet(this,_h5,2600822924),__classPrivateFieldSet(this,_h6,528734635),__classPrivateFieldSet(this,_h7,1541459225)),__classPrivateFieldSet(this,_block,__classPrivateFieldSet(this,_start,__classPrivateFieldSet(this,_bytes,__classPrivateFieldSet(this,_hBytes,0)))),__classPrivateFieldSet(this,_finalized,__classPrivateFieldSet(this,_hashed,!1)),__classPrivateFieldSet(this,_first,!0),__classPrivateFieldSet(this,_is224,t)},t.prototype.update=function(t){if(__classPrivateFieldGet(this,_finalized))return this;for(var e,s=0,i=(e=t instanceof ArrayBuffer?new Uint8Array(t):t).length,_=__classPrivateFieldGet(this,_blocks);s<i;){var a=void 0;if(__classPrivateFieldGet(this,_hashed)&&(__classPrivateFieldSet(this,_hashed,!1),_[0]=__classPrivateFieldGet(this,_block),_[16]=_[1]=_[2]=_[3]=_[4]=_[5]=_[6]=_[7]=_[8]=_[9]=_[10]=_[11]=_[12]=_[13]=_[14]=_[15]=0),"string"!=typeof e)for(a=__classPrivateFieldGet(this,_start);s<i&&a<64;++s)_[a>>2]|=e[s]<<SHIFT[3&a++];else for(a=__classPrivateFieldGet(this,_start);s<i&&a<64;++s){var h=e.charCodeAt(s);h<128?_[a>>2]|=h<<SHIFT[3&a++]:h<2048?(_[a>>2]|=(192|h>>6)<<SHIFT[3&a++],_[a>>2]|=(128|63&h)<<SHIFT[3&a++]):h<55296||h>=57344?(_[a>>2]|=(224|h>>12)<<SHIFT[3&a++],_[a>>2]|=(128|h>>6&63)<<SHIFT[3&a++],_[a>>2]|=(128|63&h)<<SHIFT[3&a++]):(h=65536+((1023&h)<<10|1023&e.charCodeAt(++s)),_[a>>2]|=(240|h>>18)<<SHIFT[3&a++],_[a>>2]|=(128|h>>12&63)<<SHIFT[3&a++],_[a>>2]|=(128|h>>6&63)<<SHIFT[3&a++],_[a>>2]|=(128|63&h)<<SHIFT[3&a++])}__classPrivateFieldSet(this,_lastByteIndex,a),__classPrivateFieldSet(this,_bytes,__classPrivateFieldGet(this,_bytes)+(a-__classPrivateFieldGet(this,_start))),a>=64?(__classPrivateFieldSet(this,_block,_[16]),__classPrivateFieldSet(this,_start,a-64),this.hash(),__classPrivateFieldSet(this,_hashed,!0)):__classPrivateFieldSet(this,_start,a)}return __classPrivateFieldGet(this,_bytes)>4294967295&&(__classPrivateFieldSet(this,_hBytes,__classPrivateFieldGet(this,_hBytes)+(__classPrivateFieldGet(this,_bytes)/4294967296<<0)),__classPrivateFieldSet(this,_bytes,__classPrivateFieldGet(this,_bytes)%4294967296)),this},t.prototype.finalize=function(){if(!__classPrivateFieldGet(this,_finalized)){__classPrivateFieldSet(this,_finalized,!0);var t=__classPrivateFieldGet(this,_blocks),e=__classPrivateFieldGet(this,_lastByteIndex);t[16]=__classPrivateFieldGet(this,_block),t[e>>2]|=EXTRA[3&e],__classPrivateFieldSet(this,_block,t[16]),e>=56&&(__classPrivateFieldGet(this,_hashed)||this.hash(),t[0]=__classPrivateFieldGet(this,_block),t[16]=t[1]=t[2]=t[3]=t[4]=t[5]=t[6]=t[7]=t[8]=t[9]=t[10]=t[11]=t[12]=t[13]=t[14]=t[15]=0),t[14]=__classPrivateFieldGet(this,_hBytes)<<3|__classPrivateFieldGet(this,_bytes)>>>29,t[15]=__classPrivateFieldGet(this,_bytes)<<3,this.hash()}},t.prototype.hash=function(){for(var t,e,s,i,_,a,h,l,r=__classPrivateFieldGet(this,_h0),n=__classPrivateFieldGet(this,_h1),c=__classPrivateFieldGet(this,_h2),o=__classPrivateFieldGet(this,_h3),d=__classPrivateFieldGet(this,_h4),v=__classPrivateFieldGet(this,_h5),H=__classPrivateFieldGet(this,_h6),S=__classPrivateFieldGet(this,_h7),F=__classPrivateFieldGet(this,_blocks),P=16;P<64;++P)t=((i=F[P-15])>>>7|i<<25)^(i>>>18|i<<14)^i>>>3,e=((i=F[P-2])>>>17|i<<15)^(i>>>19|i<<13)^i>>>10,F[P]=F[P-16]+t+F[P-7]+e<<0;l=n&c;for(var u=0;u<64;u+=4)__classPrivateFieldGet(this,_first)?(__classPrivateFieldGet(this,_is224)?(_=300032,S=(i=F[0]-1413257819)-150054599<<0,o=i+24177077<<0):(_=704751109,S=(i=F[0]-210244248)-1521486534<<0,o=i+143694565<<0),__classPrivateFieldSet(this,_first,!1)):(t=(r>>>2|r<<30)^(r>>>13|r<<19)^(r>>>22|r<<10),s=(_=r&n)^r&c^l,S=o+(i=S+(e=(d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&v^~d&H)+K[u]+F[u])<<0,o=i+(t+s)<<0),t=(o>>>2|o<<30)^(o>>>13|o<<19)^(o>>>22|o<<10),s=(a=o&r)^o&n^_,H=c+(i=H+(e=(S>>>6|S<<26)^(S>>>11|S<<21)^(S>>>25|S<<7))+(S&d^~S&v)+K[u+1]+F[u+1])<<0,t=((c=i+(t+s)<<0)>>>2|c<<30)^(c>>>13|c<<19)^(c>>>22|c<<10),s=(h=c&o)^c&r^a,v=n+(i=v+(e=(H>>>6|H<<26)^(H>>>11|H<<21)^(H>>>25|H<<7))+(H&S^~H&d)+K[u+2]+F[u+2])<<0,t=((n=i+(t+s)<<0)>>>2|n<<30)^(n>>>13|n<<19)^(n>>>22|n<<10),s=(l=n&c)^n&o^h,d=r+(i=d+(e=(v>>>6|v<<26)^(v>>>11|v<<21)^(v>>>25|v<<7))+(v&H^~v&S)+K[u+3]+F[u+3])<<0,r=i+(t+s)<<0;__classPrivateFieldSet(this,_h0,__classPrivateFieldGet(this,_h0)+r<<0),__classPrivateFieldSet(this,_h1,__classPrivateFieldGet(this,_h1)+n<<0),__classPrivateFieldSet(this,_h2,__classPrivateFieldGet(this,_h2)+c<<0),__classPrivateFieldSet(this,_h3,__classPrivateFieldGet(this,_h3)+o<<0),__classPrivateFieldSet(this,_h4,__classPrivateFieldGet(this,_h4)+d<<0),__classPrivateFieldSet(this,_h5,__classPrivateFieldGet(this,_h5)+v<<0),__classPrivateFieldSet(this,_h6,__classPrivateFieldGet(this,_h6)+H<<0),__classPrivateFieldSet(this,_h7,__classPrivateFieldGet(this,_h7)+S<<0)},t.prototype.hex=function(){this.finalize();var t=__classPrivateFieldGet(this,_h0),e=__classPrivateFieldGet(this,_h1),s=__classPrivateFieldGet(this,_h2),i=__classPrivateFieldGet(this,_h3),_=__classPrivateFieldGet(this,_h4),a=__classPrivateFieldGet(this,_h5),h=__classPrivateFieldGet(this,_h6),l=__classPrivateFieldGet(this,_h7),r=HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[s>>28&15]+HEX_CHARS[s>>24&15]+HEX_CHARS[s>>20&15]+HEX_CHARS[s>>16&15]+HEX_CHARS[s>>12&15]+HEX_CHARS[s>>8&15]+HEX_CHARS[s>>4&15]+HEX_CHARS[15&s]+HEX_CHARS[i>>28&15]+HEX_CHARS[i>>24&15]+HEX_CHARS[i>>20&15]+HEX_CHARS[i>>16&15]+HEX_CHARS[i>>12&15]+HEX_CHARS[i>>8&15]+HEX_CHARS[i>>4&15]+HEX_CHARS[15&i]+HEX_CHARS[_>>28&15]+HEX_CHARS[_>>24&15]+HEX_CHARS[_>>20&15]+HEX_CHARS[_>>16&15]+HEX_CHARS[_>>12&15]+HEX_CHARS[_>>8&15]+HEX_CHARS[_>>4&15]+HEX_CHARS[15&_]+HEX_CHARS[a>>28&15]+HEX_CHARS[a>>24&15]+HEX_CHARS[a>>20&15]+HEX_CHARS[a>>16&15]+HEX_CHARS[a>>12&15]+HEX_CHARS[a>>8&15]+HEX_CHARS[a>>4&15]+HEX_CHARS[15&a]+HEX_CHARS[h>>28&15]+HEX_CHARS[h>>24&15]+HEX_CHARS[h>>20&15]+HEX_CHARS[h>>16&15]+HEX_CHARS[h>>12&15]+HEX_CHARS[h>>8&15]+HEX_CHARS[h>>4&15]+HEX_CHARS[15&h];return __classPrivateFieldGet(this,_is224)||(r+=HEX_CHARS[l>>28&15]+HEX_CHARS[l>>24&15]+HEX_CHARS[l>>20&15]+HEX_CHARS[l>>16&15]+HEX_CHARS[l>>12&15]+HEX_CHARS[l>>8&15]+HEX_CHARS[l>>4&15]+HEX_CHARS[15&l]),r},t.prototype.toString=function(){return this.hex()},t.prototype.digest=function(){this.finalize();var t=__classPrivateFieldGet(this,_h0),e=__classPrivateFieldGet(this,_h1),s=__classPrivateFieldGet(this,_h2),i=__classPrivateFieldGet(this,_h3),_=__classPrivateFieldGet(this,_h4),a=__classPrivateFieldGet(this,_h5),h=__classPrivateFieldGet(this,_h6),l=__classPrivateFieldGet(this,_h7),r=[t>>24&255,t>>16&255,t>>8&255,255&t,e>>24&255,e>>16&255,e>>8&255,255&e,s>>24&255,s>>16&255,s>>8&255,255&s,i>>24&255,i>>16&255,i>>8&255,255&i,_>>24&255,_>>16&255,_>>8&255,255&_,a>>24&255,a>>16&255,a>>8&255,255&a,h>>24&255,h>>16&255,h>>8&255,255&h];return __classPrivateFieldGet(this,_is224)||r.push(l>>24&255,l>>16&255,l>>8&255,255&l),r},t.prototype.array=function(){return this.digest()},t.prototype.arrayBuffer=function(){this.finalize();var t=new ArrayBuffer(__classPrivateFieldGet(this,_is224)?28:32),e=new DataView(t);return e.setUint32(0,__classPrivateFieldGet(this,_h0)),e.setUint32(4,__classPrivateFieldGet(this,_h1)),e.setUint32(8,__classPrivateFieldGet(this,_h2)),e.setUint32(12,__classPrivateFieldGet(this,_h3)),e.setUint32(16,__classPrivateFieldGet(this,_h4)),e.setUint32(20,__classPrivateFieldGet(this,_h5)),e.setUint32(24,__classPrivateFieldGet(this,_h6)),__classPrivateFieldGet(this,_is224)||e.setUint32(28,__classPrivateFieldGet(this,_h7)),t},t}();_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;var HmacSha256=function(t){function e(e,s,i){void 0===s&&(s=!1),void 0===i&&(i=!1);var _,a=t.call(this,s,i)||this;if(_inner.set(a,void 0),_is224_1.set(a,void 0),_oKeyPad.set(a,void 0),_sharedMemory.set(a,void 0),"string"==typeof e){for(var h=[],l=e.length,r=0,n=0;n<l;++n){var c=e.charCodeAt(n);c<128?h[r++]=c:c<2048?(h[r++]=192|c>>6,h[r++]=128|63&c):c<55296||c>=57344?(h[r++]=224|c>>12,h[r++]=128|c>>6&63,h[r++]=128|63&c):(c=65536+((1023&c)<<10|1023&e.charCodeAt(++n)),h[r++]=240|c>>18,h[r++]=128|c>>12&63,h[r++]=128|c>>6&63,h[r++]=128|63&c)}_=h}else _=e instanceof ArrayBuffer?new Uint8Array(e):e;_.length>64&&(_=new Sha256(s,!0).update(_).array());var o=[],d=[];for(n=0;n<64;++n){var v=_[n]||0;o[n]=92^v,d[n]=54^v}return a.update(d),__classPrivateFieldSet(a,_oKeyPad,o),__classPrivateFieldSet(a,_inner,!0),__classPrivateFieldSet(a,_is224_1,s),__classPrivateFieldSet(a,_sharedMemory,i),a}return __extends(e,t),e.prototype.finalize=function(){if(t.prototype.finalize.call(this),__classPrivateFieldGet(this,_inner)){__classPrivateFieldSet(this,_inner,!1);var e=this.array();t.prototype.init.call(this,__classPrivateFieldGet(this,_is224_1),__classPrivateFieldGet(this,_sharedMemory)),this.update(__classPrivateFieldGet(this,_oKeyPad)),this.update(e),t.prototype.finalize.call(this)}},e}(Sha256);function Sha256ToInt(t){var e=new Sha256;return e.update(t),parseInt(e.hex().substring(0,8),16)}_inner=new WeakMap,_is224_1=new WeakMap,_oKeyPad=new WeakMap,_sharedMemory=new WeakMap;var RGB2HEX=function(t){var e="#";return t.forEach((function(t){t<16&&(e+=0),e+=t.toString(16)})),e},HSL2RGB=function(t,e,s){var i=s<.5?s*(1+e):s+e-s*e,_=2*s-i;return[(t/=360)+1/3,t,t-1/3].map((function(t){return t<0&&t++,t>1&&t--,t=t<1/6?_+6*(i-_)*t:t<.5?i:t<2/3?_+6*(i-_)*(2/3-t):_,Math.round(255*t)}))},ColorHash=function(){function t(t){void 0===t&&(t={});var e=[t.lightness,t.saturation].map((function(t){return t=void 0!==t?t:[.35,.5,.65],Array.isArray(t)?t.concat():[t]})),s=e[0],i=e[1];this.L=s,this.S=i,"number"==typeof t.hue&&(t.hue={min:t.hue,max:t.hue}),"object"!=typeof t.hue||Array.isArray(t.hue)||(t.hue=[t.hue]),void 0===t.hue&&(t.hue=[]),this.hueRanges=t.hue.map((function(t){return{min:void 0===t.min?0:t.min,max:void 0===t.max?360:t.max}})),this.hash=Sha256ToInt,"function"==typeof t.hash&&(this.hash=t.hash),"bkdr"===t.hash&&(this.hash=BKDRHash)}return t.prototype.hsl=function(t){var e,s,i=this.hash(t);if(this.hueRanges.length){var _=this.hueRanges[i%this.hueRanges.length];e=i/this.hueRanges.length%727*(_.max-_.min)/727+_.min}else e=i%359;return i=Math.ceil(i/360),s=this.S[i%this.S.length],i=Math.ceil(i/this.S.length),[e,s,this.L[i%this.L.length]]},t.prototype.rgb=function(t){var e=this.hsl(t);return HSL2RGB.apply(this,e)},t.prototype.hex=function(t){var e=this.rgb(t);return RGB2HEX(e)},t}();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment