@sarmal/core 0.28.0 → 0.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/auto-init.js CHANGED
@@ -375,11 +375,50 @@ function hexToRgb(hex) {
375
375
  const n = parseInt(hex.slice(1), 16);
376
376
  return { r: n >> 16, g: n >> 8 & 255, b: n & 255 };
377
377
  }
378
- var lerpRgb = (a, b, t) => ({
379
- r: Math.round(a.r + (b.r - a.r) * t),
380
- g: Math.round(a.g + (b.g - a.g) * t),
381
- b: Math.round(a.b + (b.b - a.b) * t)
382
- });
378
+ function srgbByteToLinear(c) {
379
+ const n = c / 255;
380
+ return n <= 0.04045 ? n / 12.92 : Math.pow((n + 0.055) / 1.055, 2.4);
381
+ }
382
+ function linearToSrgbByte(c) {
383
+ const v = Math.max(0, Math.min(1, c));
384
+ return Math.round((v <= 31308e-7 ? 12.92 * v : 1.055 * Math.pow(v, 1 / 2.4) - 0.055) * 255);
385
+ }
386
+ function rgbToOklab({ r, g, b }) {
387
+ const rl = srgbByteToLinear(r), gl = srgbByteToLinear(g), bl = srgbByteToLinear(b);
388
+ const l = Math.cbrt(0.4122214708 * rl + 0.5363325363 * gl + 0.0514459929 * bl);
389
+ const m = Math.cbrt(0.2119034982 * rl + 0.6806995451 * gl + 0.1073969566 * bl);
390
+ const s = Math.cbrt(0.0883024619 * rl + 0.2817188376 * gl + 0.6299787005 * bl);
391
+ return {
392
+ L: 0.2104542553 * l + 0.793617785 * m - 0.0040720468 * s,
393
+ a: 1.9779984951 * l - 2.428592205 * m + 0.4505937099 * s,
394
+ b: 0.0259040371 * l + 0.7827717662 * m - 0.808675766 * s
395
+ };
396
+ }
397
+ function oklabToRgb({ L, a, b }) {
398
+ const l_ = L + 0.3963377774 * a + 0.2158037573 * b;
399
+ const m_ = L - 0.1055613458 * a - 0.0638541728 * b;
400
+ const s_ = L - 0.0894841775 * a - 1.29145603 * b;
401
+ const l = l_ * l_ * l_, m = m_ * m_ * m_, s = s_ * s_ * s_;
402
+ return {
403
+ r: linearToSrgbByte(4.0767416621 * l - 3.3077115913 * m + 0.2309699292 * s),
404
+ g: linearToSrgbByte(-1.2684380046 * l + 2.6097574011 * m - 0.3413193965 * s),
405
+ b: linearToSrgbByte(-0.0041960863 * l - 0.7034186147 * m + 1.6076099202 * s)
406
+ };
407
+ }
408
+ var lerpOklab = (a, b, t) => {
409
+ if (t <= 0) {
410
+ return a;
411
+ }
412
+ if (t >= 1) {
413
+ return b;
414
+ }
415
+ const la = rgbToOklab(a), lb = rgbToOklab(b);
416
+ return oklabToRgb({
417
+ L: la.L + (lb.L - la.L) * t,
418
+ a: la.a + (lb.a - la.a) * t,
419
+ b: la.b + (lb.b - la.b) * t
420
+ });
421
+ };
383
422
  function getPaletteColor(palette, position, timeOffset = 0) {
384
423
  if (palette.length === 0) {
385
424
  return { r: 255, g: 255, b: 255 };
@@ -393,7 +432,7 @@ function getPaletteColor(palette, position, timeOffset = 0) {
393
432
  const t = scaled - idx;
394
433
  const c1 = hexToRgb(palette[idx % palette.length]);
395
434
  const c2 = hexToRgb(palette[(idx + 1) % palette.length]);
396
- return lerpRgb(c1, c2, t);
435
+ return lerpOklab(c1, c2, t);
397
436
  }
398
437
  var HEX_COLOR_RE = /^#[0-9a-fA-F]{6}$/;
399
438
  var TRAIL_STYLES = ["default", "gradient-static", "gradient-animated"];