UNPKG

rybitten

Version:

A color space conversion library for transforming between RGB and RYB colors.

65 lines (64 loc) 1.5 kB
import { RYB_ITTEN as f } from "./cubes.mjs"; const g = (t) => t * t * (3 - 2 * t), u = (t, n, s) => t + s * (n - t), m = (t, n, s, e, r, o) => u(u(t, n, r), u(s, e, r), o), p = (t, n, s, e, r, o, c, l, b, a, i) => u( m(t, n, s, e, b, a), m(r, o, c, l, b, a), i ); function k(t, { cube: n = f, easingFn: s = g } = {}) { const e = s(t[0]), r = s(t[1]), o = s(t[2]), c = n.map((a) => a[0]), l = n.map((a) => a[1]), b = n.map((a) => a[2]); return [ p(...c, e, r, o), p(...l, e, r, o), p(...b, e, r, o) ]; } function T(t) { return (t % 360 + 360) % 360; } function h(t) { let [n] = t; const [, s, e] = t; n = T(n || 0); const r = e + s * (e < 0.5 ? e : 1 - e), o = r - (r - e) * 2 * Math.abs(n / 60 % 2 - 1); let c; switch (Math.floor(n / 60)) { case 0: c = [r, o, 2 * e - r]; break; case 1: c = [o, r, 2 * e - r]; break; case 2: c = [2 * e - r, r, o]; break; case 3: c = [2 * e - r, o, r]; break; case 4: c = [o, 2 * e - r, r]; break; case 5: c = [r, 2 * e - r, o]; break; default: c = [2 * e - r, 2 * e - r, 2 * e - r]; } return c; } function M(t, { cube: n = f, easingFn: s = g, invertLightness: e = !0 } = {}) { const r = e ? 1 - t[2] : t[2], o = h([t[0], t[1], r]); return k(o, { cube: n, easingFn: s }); } export { m as blerp, g as easingSmoothstep, h as hslToRgb, u as lerp, k as ryb2rgb, M as rybHsl2rgb, p as trilerp };