@sarmal/core 0.8.0 → 0.9.1
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.cjs +209 -103
- package/dist/auto-init.cjs.map +1 -1
- package/dist/auto-init.d.cts +1 -0
- package/dist/auto-init.d.ts +1 -0
- package/dist/auto-init.js +209 -103
- package/dist/auto-init.js.map +1 -1
- package/dist/curves/artemis2.cjs +26 -0
- package/dist/curves/artemis2.cjs.map +1 -0
- package/dist/curves/artemis2.d.cts +9 -0
- package/dist/curves/artemis2.d.ts +9 -0
- package/dist/curves/artemis2.js +24 -0
- package/dist/curves/artemis2.js.map +1 -0
- package/dist/curves/astroid.cjs +22 -0
- package/dist/curves/astroid.cjs.map +1 -0
- package/dist/curves/astroid.d.cts +9 -0
- package/dist/curves/astroid.d.ts +9 -0
- package/dist/curves/astroid.js +20 -0
- package/dist/curves/astroid.js.map +1 -0
- package/dist/curves/deltoid.cjs +20 -0
- package/dist/curves/deltoid.cjs.map +1 -0
- package/dist/curves/deltoid.d.cts +9 -0
- package/dist/curves/deltoid.d.ts +9 -0
- package/dist/curves/deltoid.js +18 -0
- package/dist/curves/deltoid.js.map +1 -0
- package/dist/curves/epicycloid3.cjs +20 -0
- package/dist/curves/epicycloid3.cjs.map +1 -0
- package/dist/curves/epicycloid3.d.cts +9 -0
- package/dist/curves/epicycloid3.d.ts +9 -0
- package/dist/curves/epicycloid3.js +18 -0
- package/dist/curves/epicycloid3.js.map +1 -0
- package/dist/curves/epitrochoid7.cjs +29 -0
- package/dist/curves/epitrochoid7.cjs.map +1 -0
- package/dist/curves/epitrochoid7.d.cts +9 -0
- package/dist/curves/epitrochoid7.d.ts +9 -0
- package/dist/curves/epitrochoid7.js +27 -0
- package/dist/curves/epitrochoid7.js.map +1 -0
- package/dist/curves/index.cjs +206 -0
- package/dist/curves/index.cjs.map +1 -0
- package/dist/curves/index.d.cts +19 -0
- package/dist/curves/index.d.ts +19 -0
- package/dist/curves/index.js +206 -0
- package/dist/curves/index.js.map +1 -0
- package/dist/curves/lame.cjs +24 -0
- package/dist/curves/lame.cjs.map +1 -0
- package/dist/curves/lame.d.cts +9 -0
- package/dist/curves/lame.d.ts +9 -0
- package/dist/curves/lame.js +22 -0
- package/dist/curves/lame.js.map +1 -0
- package/dist/curves/lissajous32.cjs +22 -0
- package/dist/curves/lissajous32.cjs.map +1 -0
- package/dist/curves/lissajous32.d.cts +9 -0
- package/dist/curves/lissajous32.d.ts +9 -0
- package/dist/curves/lissajous32.js +20 -0
- package/dist/curves/lissajous32.js.map +1 -0
- package/dist/curves/lissajous43.cjs +22 -0
- package/dist/curves/lissajous43.cjs.map +1 -0
- package/dist/curves/lissajous43.d.cts +9 -0
- package/dist/curves/lissajous43.d.ts +9 -0
- package/dist/curves/lissajous43.js +20 -0
- package/dist/curves/lissajous43.js.map +1 -0
- package/dist/curves/rose3.cjs +21 -0
- package/dist/curves/rose3.cjs.map +1 -0
- package/dist/curves/rose3.d.cts +9 -0
- package/dist/curves/rose3.d.ts +9 -0
- package/dist/curves/rose3.js +19 -0
- package/dist/curves/rose3.js.map +1 -0
- package/dist/curves/rose5.cjs +21 -0
- package/dist/curves/rose5.cjs.map +1 -0
- package/dist/curves/rose5.d.cts +9 -0
- package/dist/curves/rose5.d.ts +9 -0
- package/dist/curves/rose5.js +19 -0
- package/dist/curves/rose5.js.map +1 -0
- package/dist/index.cjs +214 -106
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +105 -0
- package/dist/index.d.ts +105 -0
- package/dist/index.js +222 -107
- package/dist/index.js.map +1 -1
- package/dist/types-DX8VfIVK.d.cts +226 -0
- package/dist/types-DX8VfIVK.d.ts +226 -0
- package/package.json +11 -1
package/dist/auto-init.js
CHANGED
|
@@ -199,6 +199,47 @@ var TRAIL_FADE_CURVE = 1.5;
|
|
|
199
199
|
var TRAIL_MAX_OPACITY = 0.88;
|
|
200
200
|
var TRAIL_MIN_WIDTH = 0.5;
|
|
201
201
|
var TRAIL_MAX_WIDTH = 2.5;
|
|
202
|
+
var GRADIENT = {
|
|
203
|
+
bard: ["#a855f7", "#3b82f6", "#14b8a6", "#ec4899"],
|
|
204
|
+
sunset: ["#f97316", "#dc2626", "#9333ea", "#f472b6"],
|
|
205
|
+
ocean: ["#1e3a8a", "#06b6d4", "#22d3ee", "#e0f2fe"],
|
|
206
|
+
ice: ["#1e3a8a", "#67e8f9"],
|
|
207
|
+
fire: ["#7f1d1d", "#fbbf24"],
|
|
208
|
+
forest: ["#14532d", "#86efac"],
|
|
209
|
+
};
|
|
210
|
+
var PRESETS = {
|
|
211
|
+
bard: GRADIENT.bard,
|
|
212
|
+
sunset: GRADIENT.sunset,
|
|
213
|
+
ocean: GRADIENT.ocean,
|
|
214
|
+
ice: GRADIENT.ice,
|
|
215
|
+
fire: GRADIENT.fire,
|
|
216
|
+
forest: GRADIENT.forest,
|
|
217
|
+
};
|
|
218
|
+
function hexToRgb(hex) {
|
|
219
|
+
const n = parseInt(hex.slice(1), 16);
|
|
220
|
+
return { r: n >> 16, g: (n >> 8) & 255, b: n & 255 };
|
|
221
|
+
}
|
|
222
|
+
var lerpRgb = (a, b, t) => ({
|
|
223
|
+
r: Math.round(a.r + (b.r - a.r) * t),
|
|
224
|
+
g: Math.round(a.g + (b.g - a.g) * t),
|
|
225
|
+
b: Math.round(a.b + (b.b - a.b) * t),
|
|
226
|
+
});
|
|
227
|
+
function getPaletteColor(palette, position, timeOffset = 0) {
|
|
228
|
+
if (palette.length === 0) return { r: 255, g: 255, b: 255 };
|
|
229
|
+
if (palette.length === 1) return hexToRgb(palette[0]);
|
|
230
|
+
const cyclePos = (position + timeOffset) % 1;
|
|
231
|
+
const scaled = cyclePos * palette.length;
|
|
232
|
+
const idx = Math.floor(scaled);
|
|
233
|
+
const t = scaled - idx;
|
|
234
|
+
const c1 = hexToRgb(palette[idx % palette.length]);
|
|
235
|
+
const c2 = hexToRgb(palette[(idx + 1) % palette.length]);
|
|
236
|
+
return lerpRgb(c1, c2, t);
|
|
237
|
+
}
|
|
238
|
+
function resolvePalette(palette, trailStyle) {
|
|
239
|
+
if (Array.isArray(palette)) return palette;
|
|
240
|
+
if (palette && palette in PRESETS) return PRESETS[palette];
|
|
241
|
+
return trailStyle === "gradient-animated" ? GRADIENT.bard : GRADIENT.ice;
|
|
242
|
+
}
|
|
202
243
|
function hexToRgbComponents(hex) {
|
|
203
244
|
const n = parseInt(hex.slice(1), 16);
|
|
204
245
|
return `${n >> 16},${(n >> 8) & 255},${n & 255}`;
|
|
@@ -248,6 +289,8 @@ function createRenderer(options) {
|
|
|
248
289
|
headColor: options.headColor ?? "#ffffff",
|
|
249
290
|
headRadius: options.headRadius ?? DEFAULT_HEAD_RADIUS,
|
|
250
291
|
};
|
|
292
|
+
const trailStyle = options.trailStyle ?? "default";
|
|
293
|
+
const palette = resolvePalette(options.palette, trailStyle);
|
|
251
294
|
const trailRgb = hexToRgbComponents(opts.trailColor);
|
|
252
295
|
const dpr = typeof window !== "undefined" ? window.devicePixelRatio || 1 : 1;
|
|
253
296
|
function setupCanvas() {
|
|
@@ -273,6 +316,7 @@ function createRenderer(options) {
|
|
|
273
316
|
let morphResolve = null;
|
|
274
317
|
let morphDurationMs = DEFAULT_MORPH_DURATION_MS;
|
|
275
318
|
let morphAlpha = 0;
|
|
319
|
+
let gradientAnimTime = 0;
|
|
276
320
|
function computeBoundaries(pts) {
|
|
277
321
|
if (pts.length === 0) return null;
|
|
278
322
|
const first = pts[0];
|
|
@@ -384,7 +428,13 @@ function createRenderer(options) {
|
|
|
384
428
|
const l1y = next.y * scale + offsetY + n1.y * halfW1;
|
|
385
429
|
const r1x = next.x * scale + offsetX - n1.x * halfW1;
|
|
386
430
|
const r1y = next.y * scale + offsetY - n1.y * halfW1;
|
|
387
|
-
|
|
431
|
+
if (trailStyle === "default") {
|
|
432
|
+
ctx.fillStyle = `rgba(${trailRgb},${alpha})`;
|
|
433
|
+
} else {
|
|
434
|
+
const timeOffset = trailStyle === "gradient-animated" ? gradientAnimTime * 5e-4 : 0;
|
|
435
|
+
const color = getPaletteColor(palette, progress, timeOffset);
|
|
436
|
+
ctx.fillStyle = `rgba(${color.r},${color.g},${color.b},${alpha})`;
|
|
437
|
+
}
|
|
388
438
|
ctx.beginPath();
|
|
389
439
|
ctx.moveTo(l0x, l0y);
|
|
390
440
|
ctx.lineTo(l1x, l1y);
|
|
@@ -409,6 +459,9 @@ function createRenderer(options) {
|
|
|
409
459
|
const now = performance.now();
|
|
410
460
|
const deltaTime = Math.min((now - lastTime) / 1e3, 1 / 30);
|
|
411
461
|
lastTime = now;
|
|
462
|
+
if (trailStyle === "gradient-animated") {
|
|
463
|
+
gradientAnimTime += deltaTime * 1e3;
|
|
464
|
+
}
|
|
412
465
|
if (engine.morphAlpha !== null) {
|
|
413
466
|
morphAlpha = Math.min(1, morphAlpha + deltaTime / (morphDurationMs / 1e3));
|
|
414
467
|
engine.setMorphAlpha(morphAlpha);
|
|
@@ -497,9 +550,9 @@ function createRenderer(options) {
|
|
|
497
550
|
};
|
|
498
551
|
}
|
|
499
552
|
|
|
500
|
-
// src/curves.ts
|
|
553
|
+
// src/curves/artemis2.ts
|
|
501
554
|
var TWO_PI2 = Math.PI * 2;
|
|
502
|
-
function
|
|
555
|
+
function artemis2Fn(t, _time, _params) {
|
|
503
556
|
const a = 0.35,
|
|
504
557
|
b = 0.15,
|
|
505
558
|
ox = 0.175;
|
|
@@ -511,21 +564,16 @@ function artemis2(t, _time, _params) {
|
|
|
511
564
|
y: (s * c * (1 + b * c)) / denom,
|
|
512
565
|
};
|
|
513
566
|
}
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
x: 7 * Math.cos(t) - d * Math.cos(7 * t),
|
|
525
|
-
y: 7 * Math.sin(t) - d * Math.sin(7 * t),
|
|
526
|
-
};
|
|
527
|
-
}
|
|
528
|
-
function astroid(t, _time, _params) {
|
|
567
|
+
var artemis2 = {
|
|
568
|
+
name: "Artemis II",
|
|
569
|
+
fn: artemis2Fn,
|
|
570
|
+
period: TWO_PI2,
|
|
571
|
+
speed: 0.7,
|
|
572
|
+
};
|
|
573
|
+
|
|
574
|
+
// src/curves/astroid.ts
|
|
575
|
+
var TWO_PI3 = Math.PI * 2;
|
|
576
|
+
function astroidFn(t, _time, _params) {
|
|
529
577
|
const c = Math.cos(t);
|
|
530
578
|
const s = Math.sin(t);
|
|
531
579
|
return {
|
|
@@ -533,47 +581,104 @@ function astroid(t, _time, _params) {
|
|
|
533
581
|
y: s * s * s,
|
|
534
582
|
};
|
|
535
583
|
}
|
|
536
|
-
|
|
584
|
+
var astroid = {
|
|
585
|
+
name: "Astroid",
|
|
586
|
+
fn: astroidFn,
|
|
587
|
+
period: TWO_PI3,
|
|
588
|
+
speed: 1.1,
|
|
589
|
+
};
|
|
590
|
+
|
|
591
|
+
// src/curves/deltoid.ts
|
|
592
|
+
var TWO_PI4 = Math.PI * 2;
|
|
593
|
+
function deltoidFn(t, _time, _params) {
|
|
537
594
|
return {
|
|
538
595
|
x: 2 * Math.cos(t) + Math.cos(2 * t),
|
|
539
596
|
y: 2 * Math.sin(t) - Math.sin(2 * t),
|
|
540
597
|
};
|
|
541
598
|
}
|
|
542
|
-
|
|
543
|
-
|
|
599
|
+
var deltoid = {
|
|
600
|
+
name: "Deltoid",
|
|
601
|
+
fn: deltoidFn,
|
|
602
|
+
period: TWO_PI4,
|
|
603
|
+
speed: 0.9,
|
|
604
|
+
};
|
|
605
|
+
|
|
606
|
+
// src/curves/epicycloid3.ts
|
|
607
|
+
var TWO_PI5 = Math.PI * 2;
|
|
608
|
+
function epicycloid3Fn(t, _time, _params) {
|
|
544
609
|
return {
|
|
545
|
-
x:
|
|
546
|
-
y:
|
|
610
|
+
x: 4 * Math.cos(t) - Math.cos(4 * t),
|
|
611
|
+
y: 4 * Math.sin(t) - Math.sin(4 * t),
|
|
547
612
|
};
|
|
548
613
|
}
|
|
549
|
-
|
|
550
|
-
|
|
614
|
+
var epicycloid3 = {
|
|
615
|
+
name: "Epicycloid (n=3)",
|
|
616
|
+
fn: epicycloid3Fn,
|
|
617
|
+
period: TWO_PI5,
|
|
618
|
+
speed: 0.75,
|
|
619
|
+
};
|
|
620
|
+
|
|
621
|
+
// src/curves/epitrochoid7.ts
|
|
622
|
+
var TWO_PI6 = Math.PI * 2;
|
|
623
|
+
function epitrochoid7Fn(t, _time, _params) {
|
|
624
|
+
const d = 1 + 0.55 * Math.sin(t * 0.5);
|
|
551
625
|
return {
|
|
552
|
-
x:
|
|
553
|
-
y:
|
|
626
|
+
x: 7 * Math.cos(t) - d * Math.cos(7 * t),
|
|
627
|
+
y: 7 * Math.sin(t) - d * Math.sin(7 * t),
|
|
628
|
+
};
|
|
629
|
+
}
|
|
630
|
+
function epitrochoid7SkeletonFn(t) {
|
|
631
|
+
const d = 1.275;
|
|
632
|
+
return {
|
|
633
|
+
x: 7 * Math.cos(t) - d * Math.cos(7 * t),
|
|
634
|
+
y: 7 * Math.sin(t) - d * Math.sin(7 * t),
|
|
554
635
|
};
|
|
555
636
|
}
|
|
556
|
-
|
|
637
|
+
var epitrochoid7 = {
|
|
638
|
+
name: "Epitrochoid",
|
|
639
|
+
fn: epitrochoid7Fn,
|
|
640
|
+
period: TWO_PI6,
|
|
641
|
+
speed: 1.4,
|
|
642
|
+
skeletonFn: epitrochoid7SkeletonFn,
|
|
643
|
+
};
|
|
644
|
+
|
|
645
|
+
// src/curves/lissajous32.ts
|
|
646
|
+
var TWO_PI7 = Math.PI * 2;
|
|
647
|
+
function lissajous32Fn(t, time, _params) {
|
|
557
648
|
const phi = time * 0.45;
|
|
558
649
|
return {
|
|
559
650
|
x: Math.sin(3 * t + phi),
|
|
560
651
|
y: Math.sin(2 * t),
|
|
561
652
|
};
|
|
562
653
|
}
|
|
563
|
-
|
|
654
|
+
var lissajous32 = {
|
|
655
|
+
name: "Lissajous 3:2",
|
|
656
|
+
fn: lissajous32Fn,
|
|
657
|
+
period: TWO_PI7,
|
|
658
|
+
speed: 2,
|
|
659
|
+
skeleton: "live",
|
|
660
|
+
};
|
|
661
|
+
|
|
662
|
+
// src/curves/lissajous43.ts
|
|
663
|
+
var TWO_PI8 = Math.PI * 2;
|
|
664
|
+
function lissajous43Fn(t, time, _params) {
|
|
564
665
|
const phi = time * 0.38;
|
|
565
666
|
return {
|
|
566
667
|
x: Math.sin(4 * t + phi),
|
|
567
668
|
y: Math.sin(3 * t),
|
|
568
669
|
};
|
|
569
670
|
}
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
671
|
+
var lissajous43 = {
|
|
672
|
+
name: "Lissajous 4:3",
|
|
673
|
+
fn: lissajous43Fn,
|
|
674
|
+
period: TWO_PI8,
|
|
675
|
+
speed: 1.8,
|
|
676
|
+
skeleton: "live",
|
|
677
|
+
};
|
|
678
|
+
|
|
679
|
+
// src/curves/lame.ts
|
|
680
|
+
var TWO_PI9 = Math.PI * 2;
|
|
681
|
+
function lameFn(t, time, _params) {
|
|
577
682
|
const p = 1.75 + 1.25 * Math.sin(time * 0.48);
|
|
578
683
|
const c = Math.cos(t),
|
|
579
684
|
s = Math.sin(t);
|
|
@@ -582,71 +687,58 @@ function lame(t, time, _params) {
|
|
|
582
687
|
y: Math.sign(s) * Math.pow(Math.abs(s), p),
|
|
583
688
|
};
|
|
584
689
|
}
|
|
690
|
+
var lame = {
|
|
691
|
+
name: "Lam\xE9 Curve",
|
|
692
|
+
fn: lameFn,
|
|
693
|
+
period: TWO_PI9,
|
|
694
|
+
speed: 1,
|
|
695
|
+
skeleton: "live",
|
|
696
|
+
};
|
|
697
|
+
|
|
698
|
+
// src/curves/rose3.ts
|
|
699
|
+
var TWO_PI10 = Math.PI * 2;
|
|
700
|
+
function rose3Fn(t, _time, _params) {
|
|
701
|
+
const r = Math.cos(3 * t);
|
|
702
|
+
return {
|
|
703
|
+
x: r * Math.cos(t),
|
|
704
|
+
y: r * Math.sin(t),
|
|
705
|
+
};
|
|
706
|
+
}
|
|
707
|
+
var rose3 = {
|
|
708
|
+
name: "Rose (n=3)",
|
|
709
|
+
fn: rose3Fn,
|
|
710
|
+
period: TWO_PI10,
|
|
711
|
+
speed: 1.15,
|
|
712
|
+
};
|
|
713
|
+
|
|
714
|
+
// src/curves/rose5.ts
|
|
715
|
+
var TWO_PI11 = Math.PI * 2;
|
|
716
|
+
function rose5Fn(t, _time, _params) {
|
|
717
|
+
const r = Math.cos(5 * t);
|
|
718
|
+
return {
|
|
719
|
+
x: r * Math.cos(t),
|
|
720
|
+
y: r * Math.sin(t),
|
|
721
|
+
};
|
|
722
|
+
}
|
|
723
|
+
var rose5 = {
|
|
724
|
+
name: "Rose (n=5)",
|
|
725
|
+
fn: rose5Fn,
|
|
726
|
+
period: TWO_PI11,
|
|
727
|
+
speed: 1,
|
|
728
|
+
};
|
|
729
|
+
|
|
730
|
+
// src/curves/index.ts
|
|
585
731
|
var curves = {
|
|
586
|
-
artemis2
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
speed: 1.4,
|
|
597
|
-
skeletonFn: epitrochoid7Skeleton,
|
|
598
|
-
},
|
|
599
|
-
astroid: {
|
|
600
|
-
name: "Astroid",
|
|
601
|
-
fn: astroid,
|
|
602
|
-
period: TWO_PI2,
|
|
603
|
-
speed: 1.1,
|
|
604
|
-
},
|
|
605
|
-
deltoid: {
|
|
606
|
-
name: "Deltoid",
|
|
607
|
-
fn: deltoid,
|
|
608
|
-
period: TWO_PI2,
|
|
609
|
-
speed: 0.9,
|
|
610
|
-
},
|
|
611
|
-
rose5: {
|
|
612
|
-
name: "Rose (n=5)",
|
|
613
|
-
fn: rose5,
|
|
614
|
-
period: TWO_PI2,
|
|
615
|
-
speed: 1,
|
|
616
|
-
},
|
|
617
|
-
rose3: {
|
|
618
|
-
name: "Rose (n=3)",
|
|
619
|
-
fn: rose3,
|
|
620
|
-
period: TWO_PI2,
|
|
621
|
-
speed: 1.15,
|
|
622
|
-
},
|
|
623
|
-
lissajous32: {
|
|
624
|
-
name: "Lissajous 3:2",
|
|
625
|
-
fn: lissajous32,
|
|
626
|
-
period: TWO_PI2,
|
|
627
|
-
speed: 2,
|
|
628
|
-
skeleton: "live",
|
|
629
|
-
},
|
|
630
|
-
lissajous43: {
|
|
631
|
-
name: "Lissajous 4:3",
|
|
632
|
-
fn: lissajous43,
|
|
633
|
-
period: TWO_PI2,
|
|
634
|
-
speed: 1.8,
|
|
635
|
-
skeleton: "live",
|
|
636
|
-
},
|
|
637
|
-
epicycloid3: {
|
|
638
|
-
name: "Epicycloid (n=3)",
|
|
639
|
-
fn: epicycloid3,
|
|
640
|
-
period: TWO_PI2,
|
|
641
|
-
speed: 0.75,
|
|
642
|
-
},
|
|
643
|
-
lame: {
|
|
644
|
-
name: "Lam\xE9 Curve",
|
|
645
|
-
fn: lame,
|
|
646
|
-
period: TWO_PI2,
|
|
647
|
-
speed: 1,
|
|
648
|
-
skeleton: "live",
|
|
649
|
-
},
|
|
732
|
+
artemis2,
|
|
733
|
+
epitrochoid7,
|
|
734
|
+
astroid,
|
|
735
|
+
deltoid,
|
|
736
|
+
rose5,
|
|
737
|
+
rose3,
|
|
738
|
+
lissajous32,
|
|
739
|
+
lissajous43,
|
|
740
|
+
epicycloid3,
|
|
741
|
+
lame,
|
|
650
742
|
};
|
|
651
743
|
|
|
652
744
|
// src/index.ts
|
|
@@ -657,6 +749,15 @@ function createSarmal(canvas, curveDef, options) {
|
|
|
657
749
|
}
|
|
658
750
|
|
|
659
751
|
// src/auto-init.ts
|
|
752
|
+
function parsePalette(value) {
|
|
753
|
+
try {
|
|
754
|
+
const parsed = JSON.parse(value);
|
|
755
|
+
if (Array.isArray(parsed)) {
|
|
756
|
+
return parsed;
|
|
757
|
+
}
|
|
758
|
+
} catch {}
|
|
759
|
+
return value;
|
|
760
|
+
}
|
|
660
761
|
function init() {
|
|
661
762
|
const canvases = document.querySelectorAll("canvas[data-sarmal]");
|
|
662
763
|
canvases.forEach((canvas) => {
|
|
@@ -673,16 +774,21 @@ function init() {
|
|
|
673
774
|
...(canvas.dataset.skeletonColor && { skeletonColor: canvas.dataset.skeletonColor }),
|
|
674
775
|
...(canvas.dataset.headColor && { headColor: canvas.dataset.headColor }),
|
|
675
776
|
...(canvas.dataset.headRadius && { headRadius: parseFloat(canvas.dataset.headRadius) }),
|
|
676
|
-
...(canvas.dataset.glowSize && { glowSize: parseInt(canvas.dataset.glowSize, 10) }),
|
|
677
777
|
...(canvas.dataset.trailLength && { trailLength: parseInt(canvas.dataset.trailLength, 10) }),
|
|
778
|
+
...(canvas.dataset.trailStyle && {
|
|
779
|
+
trailStyle: canvas.dataset.trailStyle,
|
|
780
|
+
}),
|
|
781
|
+
...(canvas.dataset.palette && { palette: parsePalette(canvas.dataset.palette) }),
|
|
678
782
|
});
|
|
679
783
|
sarmal.start();
|
|
680
784
|
});
|
|
681
785
|
}
|
|
682
786
|
if (document.readyState === "loading") {
|
|
683
|
-
document.addEventListener("DOMContentLoaded",
|
|
787
|
+
document.addEventListener("DOMContentLoaded", () => {
|
|
788
|
+
requestAnimationFrame(init);
|
|
789
|
+
});
|
|
684
790
|
} else {
|
|
685
|
-
init
|
|
791
|
+
requestAnimationFrame(init);
|
|
686
792
|
}
|
|
687
793
|
//# sourceMappingURL=auto-init.js.map
|
|
688
794
|
//# sourceMappingURL=auto-init.js.map
|