UNPKG

@bjornlu/colorblind

Version:
2 lines (1 loc) 1.37 kB
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const r=[0,1.05118294,-.05116099,0,1,0,0,0,1],t=[1,0,0,.9513092,0,.04866992,0,0,1],n=[1,0,0,0,1,0,-.86744736,1.86727089,0],e=[.212656,.715158,.072186],o=[.31399022,.63951294,.04649755,.15537241,.75789446,.08670142,.01775239,.10944209,.87256922],u=[5.47221206,-4.6419601,.16963708,-1.1252419,2.29317094,-.1678952,.02980165,-.19318073,1.16364789];function c(r,t){return[r[0]*t[0]+r[1]*t[1]+r[2]*t[2],r[3]*t[0]+r[4]*t[1]+r[5]*t[2],r[6]*t[0]+r[7]*t[1]+r[8]*t[2]]}function i(r){return[r.r/255,r.g/255,r.b/255]}function a(r){return[r.l,r.m,r.s]}function s(r){return{r:255*r[0],g:255*r[1],b:255*r[2]}}function f(r){return{l:r[0],m:r[1],s:r[2]}}function l(r){return{r:p(r.r),g:p(r.g),b:p(r.b)}}function p(r){return Math.round(Math.min(Math.max(r,0),255))}function m(r,t){const n=function(r){const t=i(r);return f(c(o,t))}(l(r));return l(function(r){const t=a(r);return s(c(u,t))}(f(c(t,a(n)))))}function d(r,t){const n=i(l(r)),e=(o=n,u=t,[o[0]*u[0]+o[1]*u[1]+o[2]*u[2]])[0];var o,u;return l(s(Array(3).fill(e)))}exports.simulate=function(o,u){switch(u){case"protanopia":return m(o,r);case"deuteranopia":return m(o,t);case"tritanopia":return m(o,n);case"achromatopsia":return d(o,e);default:throw new Error("Invalid color deficiency provided")}},exports.simulateDichromatic=m,exports.simulateMonochromatic=d;