UNPKG

@macrostrat/column-components

Version:

React rendering primitives for stratigraphic columns

31 lines (30 loc) 1.12 kB
"use strict"; require("../../utils/type.cjs"); const unpack = require("../../utils/unpack.cjs"); const multiplyMatrices = require("../../utils/multiply-matrices.cjs"); const rgb2lab = require("../lab/rgb2lab.cjs"); const rgb2oklab = (...args) => { const [r, g, b, ...rest] = unpack(args, "rgb"); const xyz = rgb2lab.rgb2xyz(r, g, b); const oklab = XYZ_to_OKLab(xyz); return [...oklab, ...rest.length > 0 && rest[0] < 1 ? [rest[0]] : []]; }; function XYZ_to_OKLab(XYZ) { const XYZtoLMS = [ [0.819022437996703, 0.3619062600528904, -0.1288737815209879], [0.0329836539323885, 0.9292868615863434, 0.0361446663506424], [0.0481771893596242, 0.2642395317527308, 0.6335478284694309] ]; const LMStoOKLab = [ [0.210454268309314, 0.7936177747023054, -0.0040720430116193], [1.9779985324311684, -2.42859224204858, 0.450593709617411], [0.0259040424655478, 0.7827717124575296, -0.8086757549230774] ]; const LMS = multiplyMatrices(XYZtoLMS, XYZ); return multiplyMatrices( LMStoOKLab, LMS.map((c) => Math.cbrt(c)) ); } module.exports = rgb2oklab; //# sourceMappingURL=rgb2oklab.cjs.map