UNPKG

@macrostrat/column-components

Version:

React rendering primitives for stratigraphic columns

55 lines (54 loc) 1.55 kB
"use strict"; const Color = require("../Color.cjs"); const interpolate_hsx = (col1, col2, f, m) => { let xyz0, xyz1; if (m === "hsl") { xyz0 = col1.hsl(); xyz1 = col2.hsl(); } else if (m === "hsv") { xyz0 = col1.hsv(); xyz1 = col2.hsv(); } else if (m === "hcg") { xyz0 = col1.hcg(); xyz1 = col2.hcg(); } else if (m === "hsi") { xyz0 = col1.hsi(); xyz1 = col2.hsi(); } else if (m === "lch" || m === "hcl") { m = "hcl"; xyz0 = col1.hcl(); xyz1 = col2.hcl(); } else if (m === "oklch") { xyz0 = col1.oklch().reverse(); xyz1 = col2.oklch().reverse(); } let hue0, hue1, sat0, sat1, lbv0, lbv1; if (m.substr(0, 1) === "h" || m === "oklch") { [hue0, sat0, lbv0] = xyz0; [hue1, sat1, lbv1] = xyz1; } let sat, hue, lbv, dh; if (!isNaN(hue0) && !isNaN(hue1)) { if (hue1 > hue0 && hue1 - hue0 > 180) { dh = hue1 - (hue0 + 360); } else if (hue1 < hue0 && hue0 - hue1 > 180) { dh = hue1 + 360 - hue0; } else { dh = hue1 - hue0; } hue = hue0 + f * dh; } else if (!isNaN(hue0)) { hue = hue0; if ((lbv1 == 1 || lbv1 == 0) && m != "hsv") sat = sat0; } else if (!isNaN(hue1)) { hue = hue1; if ((lbv0 == 1 || lbv0 == 0) && m != "hsv") sat = sat1; } else { hue = Number.NaN; } if (sat === void 0) sat = sat0 + f * (sat1 - sat0); lbv = lbv0 + f * (lbv1 - lbv0); return m === "oklch" ? new Color([lbv, sat, hue], m) : new Color([hue, sat, lbv], m); }; module.exports = interpolate_hsx; //# sourceMappingURL=_hsx.cjs.map