extract-colors
Version:
Extract color palettes from images
3 lines (2 loc) • 7.74 kB
JavaScript
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a="IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NsYXNzIHR7Y29uc3RydWN0b3IodCxzLGksaD10PDwxNnxzPDw4fGkpe3RoaXMudD0xLHRoaXMuaT0tMSx0aGlzLmg9LTEsdGhpcy5vPS0xLHRoaXMudT0tMSx0aGlzLmw9dCx0aGlzLk09cyx0aGlzLkM9aSx0aGlzLnA9aH1zdGF0aWMgZGlzdGFuY2UodCxzKXtyZXR1cm4oTWF0aC5hYnMocy5sLXQubCkrTWF0aC5hYnMocy5NLXQuTSkrTWF0aC5hYnMocy5DLXQuQykpLzc2NX1jbG9uZSgpe2NvbnN0IHM9bmV3IHQodGhpcy5sLHRoaXMuTSx0aGlzLkMsdGhpcy5wKTtyZXR1cm4gcy50PXRoaXMudCxzfW0oKXtjb25zdCB0PXRoaXMubC8yNTUscz10aGlzLk0vMjU1LGk9dGhpcy5DLzI1NSxoPU1hdGgubWF4KHQscyxpKSxlPU1hdGgubWluKHQscyxpKTtpZih0aGlzLm89KGgrZSkvMixoPT09ZSl0aGlzLmg9MCx0aGlzLmk9MCx0aGlzLnU9MDtlbHNle2NvbnN0IG49aC1lO3N3aXRjaCh0aGlzLmk9dGhpcy5vPi41P24vKDItaC1lKTpuLyhoK2UpLHRoaXMudT10aGlzLmkqKDIqKC41LU1hdGguYWJzKC41LXRoaXMubykpKSxoKXtjYXNlIHQ6dGhpcy5oPSgocy1pKS9uKyhzPGk/NjowKSkvNjticmVhaztjYXNlIHM6dGhpcy5oPSgoaS10KS9uKzIpLzY7YnJlYWs7Y2FzZSBpOnRoaXMuaD0oKHQtcykvbis0KS82fX19Z2V0IHYoKXtyZXR1cm4tMT09PXRoaXMuaCYmdGhpcy5tKCksdGhpcy5ofWdldCBMKCl7cmV0dXJuLTE9PT10aGlzLmkmJnRoaXMubSgpLHRoaXMuaX1nZXQgTygpe3JldHVybi0xPT09dGhpcy5vJiZ0aGlzLm0oKSx0aGlzLm99Z2V0IF8oKXtyZXR1cm4tMT09PXRoaXMudSYmdGhpcy5tKCksdGhpcy51fX1jb25zdCBzPSh0LHMpPT5NYXRoLmFicyh0LXMpO2NsYXNzIGl7Y29uc3RydWN0b3IoKXt0aGlzLmo9W10sdGhpcy4kPW51bGx9ayh0KXt0aGlzLmoucHVzaCh0KSx0aGlzLiQ9bnVsbH1HKHQsaSxoLGUpe2Zvcihjb25zdCBhIG9mIHRoaXMuail7aWYoIShuPWEudixyPXQudixNYXRoLm1pbihzKG4scikscygobisuNSklMSwocisuNSklMSkpPGkmJnMoYS5MLHQuTCk8aCYmcyhhLk8sdC5PKTxlKSlyZXR1cm4hMX12YXIgbixyO3JldHVybiEwfWdldCBJKCl7aWYoIXRoaXMuJCl7Y29uc3R7cjpzLGc6aSxiOmh9PXRoaXMuai5yZWR1Y2UoKCh0LHMpPT4odC5yKz1zLmwsdC5nKz1zLk0sdC5iKz1zLkMsdCkpLHtyOjAsZzowLGI6MH0pLGU9dGhpcy5qLnJlZHVjZSgoKHQscyk9PnQrcy50KSwwKTt0aGlzLiQ9bmV3IHQoTWF0aC5yb3VuZChzL3RoaXMuai5sZW5ndGgpLE1hdGgucm91bmQoaS90aGlzLmoubGVuZ3RoKSxNYXRoLnJvdW5kKGgvdGhpcy5qLmxlbmd0aCkpLHRoaXMuJC50PWV9cmV0dXJuIHRoaXMuJH19Y2xhc3MgaHtjb25zdHJ1Y3Rvcih0LHMsaSl7dGhpcy5TPVtdLHRoaXMudj10LHRoaXMuTD1zLHRoaXMuTz1pfWsodCl7Y29uc3Qgcz10aGlzLlMuZmluZCgocz0+cy5HKHQsdGhpcy52LHRoaXMuTCx0aGlzLk8pKSk7aWYocylzLmsodCk7ZWxzZXtjb25zdCBzPW5ldyBpO3Muayh0KSx0aGlzLlMucHVzaChzKX19Qigpe3JldHVybiB0aGlzLlMubWFwKCh0PT50LkkpKX19Y2xhc3MgZXtjb25zdHJ1Y3Rvcigpe3RoaXMudD0wLHRoaXMuRD17fX1rKHMsaSxoLGUpe3JldHVybiB0aGlzLnQrKyx0aGlzLkRbc10/dGhpcy5EW3NdLnQrKzp0aGlzLkRbc109bmV3IHQoaSxoLGUscyksdGhpcy5EW3NdfUYoKXtyZXR1cm4gT2JqZWN0LmtleXModGhpcy5EKS5tYXAoKHQ9PnRoaXMuRFt0XSkpfUgoKXtjb25zdCB0PXRoaXMuRigpLnJlZHVjZSgoKHQscyk9PnQudD49cy50P3Q6cykpLmNsb25lKCk7cmV0dXJuIHQudD10aGlzLnQsdH19Y2xhc3Mgbntjb25zdHJ1Y3Rvcigpe3RoaXMudD0wLHRoaXMuRD17fX1GKCl7cmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuRCkubWFwKCh0PT50aGlzLkRbdF0pKX1rKHQscyxpKXtjb25zdCBoPXQ8PDE2fHM8PDh8aSxlPSh0Pj40JjE1KTw8OHwocz4+NCYxNSk8PDR8aT4+NCYxNTtyZXR1cm4gdGhpcy50KyssdGhpcy5QKGUpLmsoaCx0LHMsaSl9UCh0KXtyZXR1cm4gdGhpcy5EW3RdfHwodGhpcy5EW3RdPW5ldyBlKSx0aGlzLkRbdF19cShzKXtjb25zdCBpPXRoaXMuRigpLm1hcCgodD0+dC5IKCkpKTtpLnNvcnQoKCh0LHMpPT5zLnQtdC50KSk7Y29uc3QgaD1bXTtmb3IoO2kubGVuZ3RoOyl7Y29uc3QgZT1pLnNoaWZ0KCk7aS5maWx0ZXIoKGk9PnQuZGlzdGFuY2UoZSxpKTxzKSkuZm9yRWFjaCgodD0+e2UudCs9dC50O2NvbnN0IHM9aS5maW5kSW5kZXgoKHM9PnM9PT10KSk7aS5zcGxpY2UocywxKX0pKSxoLnB1c2goZSl9cmV0dXJuIGh9fXZhciByPSh7ZGF0YTp0LHdpZHRoOnMsaGVpZ2h0Oml9LGgsZSxyKT0+e2NvbnN0IGE9bmV3IG4sbz1zJiZpJiZNYXRoLmZsb29yKHMqaS9oKXx8MTtsZXQgYz0wO2ZvcihsZXQgbj0wO248dC5sZW5ndGg7bis9NCpvKXtjb25zdCBzPXRbbl0saT10W24rMV0saD10W24rMl07cihzLGksaCx0W24rM10pP2EuayhzLGksaCk6YysrfXJldHVybntqOmEucShlKSxjb3VudDphLnQrY319O2NvbnN0IGE9KHQscyxpLGUsbik9Pntjb25zdCByPSgodCxzLGksZSxuKT0+e2NvbnN0IHI9bmV3IGgoaSxlLG4pO3QuZm9yRWFjaCgodD0+ci5rKHQpKSk7Y29uc3QgYT1yLkIoKTtyZXR1cm4gYS5zb3J0KCgodCxpKT0+KGkuXysuMSkqKC45LWkudC9zKS0odC5fKy4xKSooLjktdC50L3MpKSksYX0pKHQscyxpLGUsbik7cmV0dXJuIHIubWFwKCh0PT4oKHQscyk9Pih7aGV4OmAjJHsiMCIucmVwZWF0KDYtdC5wLnRvU3RyaW5nKDE2KS5sZW5ndGgpfSR7dC5wLnRvU3RyaW5nKDE2KX1gLHJlZDp0LmwsZ3JlZW46dC5NLGJsdWU6dC5DLGFyZWE6dC50L3MsaHVlOnQudixzYXR1cmF0aW9uOnQuTCxsaWdodG5lc3M6dC5PLGludGVuc2l0eTp0Ll99KSkodCxzKSkpfSxvPWFzeW5jKHQscyk9Pntjb25zdFtpLGgsZSxuLG8sY109cyx1PSgodCxzKT0+e2NvbnN0IGk9dC53aWR0aCp0LmhlaWdodCxoPWk8cz90LndpZHRoOk1hdGgucm91bmQodC53aWR0aCpNYXRoLnNxcnQocy9pKSksZT1pPHM/dC5oZWlnaHQ6TWF0aC5yb3VuZCh0LmhlaWdodCpNYXRoLnNxcnQocy9pKSksbj1uZXcgT2Zmc2NyZWVuQ2FudmFzKGgsZSkuZ2V0Q29udGV4dCgiMmQiKTtyZXR1cm4gbi5kcmF3SW1hZ2UodCwwLDAsdC53aWR0aCx0LmhlaWdodCwwLDAsaCxlKSxuLmdldEltYWdlRGF0YSgwLDAsaCxlKX0pKHQsaSkse2o6bCxjb3VudDpnfT1yKHUsaSxoLGUpO3JldHVybiBhKGwsZyxuLG8sYyl9LGM9YXN5bmModCxzLGkpPT57aWYodCBpbnN0YW5jZW9mIEltYWdlRGF0YXx8dCBpbnN0YW5jZW9mIE9iamVjdCYmdC5kYXRhKXJldHVybiBpKCgodCxzKT0+e2NvbnN0W2ksaCxlLG4sbyxjXT1zLHtqOnUsY291bnQ6bH09cih0LGksaCxlKTtyZXR1cm4gYSh1LGwsbixvLGMpfSkodCxzKSk7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBpKGF3YWl0KGFzeW5jKHQscyk9Pntjb25zdCBpPWF3YWl0IGZldGNoKHQse21vZGU6c1s3XX0pLGg9YXdhaXQgaS5ibG9iKCksZT1hd2FpdCBjcmVhdGVJbWFnZUJpdG1hcChoKSxuPWF3YWl0IG8oZSxzKTtyZXR1cm4gZS5jbG9zZSgpLG59KSh0LHMpKTt0aHJvdyBuZXcgRXJyb3IoIkNhbiBub3QgYW5hbHlzZSBwaWN0dXJlIil9O29ubWVzc2FnZT10PT57Y29uc3RbcyxbaSxoLGUsLi4ubl1dPXQuZGF0YTtjKHMsW2ksaCxGdW5jdGlvbihgcmV0dXJuICR7ZX1gKSgpLC4uLm5dLHBvc3RNZXNzYWdlKX19KCk7Ci8vIyBzb3VyY2VNYXBwaW5nVVJMPXdvcmtlci1CcFdWVnE4bi5qcy5tYXAK",o="undefined"!=typeof self&&self.Blob&&new Blob([(d=a,Uint8Array.from(atob(d),(a=>a.charCodeAt(0))))],{type:"text/javascript;charset=utf-8"});var d;function c(d){let c;try{if(c=o&&(self.URL||self.webkitURL).createObjectURL(o),!c)throw"";const a=new Worker(c,{name:null==d?void 0:d.name});return a.addEventListener("error",(()=>{(self.URL||self.webkitURL).revokeObjectURL(c)})),a}catch(s){return new Worker("data:text/javascript;base64,"+a,{name:null==d?void 0:d.name})}finally{c&&(self.URL||self.webkitURL).revokeObjectURL(c)}}exports.extractColors=(a,o)=>{process.env.NODE_ENV !== "production"&&function({pixels:a=64e3,distance:o=.22,colorValidator:d=(a,o,d,c)=>(c??255)>250,hueDistance:c=.08333333333333333,saturationDistance:s=.2,lightnessDistance:l=.2,crossOrigin:t="",requestMode:n="cors"}={}){const u=(a,o,d=0,c=Number.MAX_VALUE)=>{if(Number(o)!==o)throw new Error(`${a} is not a valid number (${o})`);return o<d&&console.warn(`${a} can not be less than ${d} (it's ${o})`),o>c&&console.warn(`${a} can not be more than ${c} (it's ${o})`),Math.min(Math.max(o,d),c)},L=(a,o,d)=>{d.indexOf(o)<0&&console.warn(`${a} can be one of this values ${d.map((a=>`"${a}"`)).join(", ")} (it's "${o}")`)};((a,o,d=0,c=Number.MAX_SAFE_INTEGER)=>{if(!Number.isInteger(o))throw new Error(`${a} is not a valid number (${o})`);o<d&&console.warn(`${a} can not be less than ${d} (it's ${o})`),o>c&&console.warn(`${a} can not be more than ${c} (it's ${o})`),Math.min(Math.max(o,d),c)})("pixels",a||0,1),u("distance",o,0,1),((a,o)=>{if(!o||"[object Function]"!=={}.toString.call(o))throw new Error(`${a} is not a function (${o})`)})("colorValidator",d),u("hueDistance",c,0,1),u("saturationDistance",s,0,1),u("lightnessDistance",l,0,1),L("crossOrigin",t,["","anonymous","use-credentials"]),L("requestMode",n,["cors","navigate","no-cors","same-origin"])}(o),a instanceof HTMLImageElement&&(process.env.NODE_ENV !== "production"&&console.warn("HTMLImageElement not enable on worker, please send 'src' or image data instead HTMLImageElement"),a=a.src);const[d,s,l,...t]=(({pixels:a=64e3,distance:o=.22,colorValidator:d=(a,o,d,c)=>(c??255)>250,hueDistance:c=.08333333333333333,saturationDistance:s=.2,lightnessDistance:l=.2,crossOrigin:t="",requestMode:n="cors"}={})=>[Math.max(a,1),Math.min(Math.max(o,0),1),d,Math.min(Math.max(c,0),1),Math.min(Math.max(s,0),1),Math.min(Math.max(l,0),1),t,n])(o);return new Promise(((o,n)=>{try{const u=new c;u.postMessage([a,[d,s,l.toString(),...t]]),u.addEventListener("message",(a=>{o(a.data),u.terminate()})),u.addEventListener("error",(a=>{n(a),u.terminate()}))}catch(u){n(u)}}))};
//# sourceMappingURL=worker-wrapper.cjs.map