@frybynite/image-cloud 0.7.3 → 0.7.4
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/image-cloud-auto-init.js +177 -158
- package/dist/image-cloud-auto-init.js.map +1 -1
- package/dist/image-cloud.js +237 -218
- package/dist/image-cloud.js.map +1 -1
- package/dist/image-cloud.umd.js +3 -3
- package/dist/image-cloud.umd.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/react.d.ts +3 -0
- package/dist/react.js +222 -203
- package/dist/react.js.map +1 -1
- package/dist/vue.d.ts +3 -0
- package/dist/vue.js +224 -205
- package/dist/vue.js.map +1 -1
- package/dist/web-component.d.ts +3 -0
- package/dist/web-component.js +171 -152
- package/dist/web-component.js.map +1 -1
- package/package.json +17 -1
package/dist/image-cloud.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const
|
|
1
|
+
const ft = Object.freeze({
|
|
2
2
|
none: "none",
|
|
3
3
|
sm: "0 2px 4px rgba(0,0,0,0.1)",
|
|
4
4
|
md: "0 4px 16px rgba(0,0,0,0.4)",
|
|
@@ -24,7 +24,7 @@ const mt = Object.freeze({
|
|
|
24
24
|
mode: "none"
|
|
25
25
|
}), yt = Object.freeze({
|
|
26
26
|
mode: "none"
|
|
27
|
-
}),
|
|
27
|
+
}), Tt = Object.freeze({
|
|
28
28
|
default: Object.freeze({
|
|
29
29
|
border: Object.freeze({
|
|
30
30
|
width: 0,
|
|
@@ -33,6 +33,7 @@ const mt = Object.freeze({
|
|
|
33
33
|
style: "solid"
|
|
34
34
|
}),
|
|
35
35
|
shadow: "none",
|
|
36
|
+
clipPath: void 0,
|
|
36
37
|
filter: Object.freeze({}),
|
|
37
38
|
opacity: 1,
|
|
38
39
|
cursor: "pointer",
|
|
@@ -49,17 +50,17 @@ const mt = Object.freeze({
|
|
|
49
50
|
focused: Object.freeze({
|
|
50
51
|
shadow: "none"
|
|
51
52
|
})
|
|
52
|
-
}),
|
|
53
|
+
}), Ot = Object.freeze({
|
|
53
54
|
rows: 1,
|
|
54
55
|
amplitude: 100,
|
|
55
56
|
frequency: 2,
|
|
56
57
|
phaseShift: 0,
|
|
57
58
|
synchronization: "offset"
|
|
58
59
|
// Note: Image rotation along wave is now controlled via image.rotation.mode = 'tangent'
|
|
59
|
-
}),
|
|
60
|
+
}), $t = Object.freeze({
|
|
60
61
|
mobile: Object.freeze({ maxWidth: 767 }),
|
|
61
62
|
tablet: Object.freeze({ maxWidth: 1199 })
|
|
62
|
-
}),
|
|
63
|
+
}), Pt = Object.freeze({
|
|
63
64
|
mode: "adaptive",
|
|
64
65
|
// Default to adaptive sizing
|
|
65
66
|
minSize: 50,
|
|
@@ -77,15 +78,15 @@ const mt = Object.freeze({
|
|
|
77
78
|
min: -15,
|
|
78
79
|
max: 15
|
|
79
80
|
})
|
|
80
|
-
}), Tt = Object.freeze({
|
|
81
|
-
sizing: $t,
|
|
82
|
-
rotation: Ut
|
|
83
81
|
}), Ct = Object.freeze({
|
|
82
|
+
sizing: Pt,
|
|
83
|
+
rotation: Ut
|
|
84
|
+
}), Rt = Object.freeze({
|
|
84
85
|
validateUrls: !0,
|
|
85
86
|
validationTimeout: 5e3,
|
|
86
87
|
validationMethod: "head",
|
|
87
88
|
allowedExtensions: ["jpg", "jpeg", "png", "gif", "webp", "bmp"]
|
|
88
|
-
}),
|
|
89
|
+
}), Mt = Object.freeze({
|
|
89
90
|
enabled: !1,
|
|
90
91
|
centers: !1,
|
|
91
92
|
loaders: !1
|
|
@@ -94,17 +95,17 @@ const mt = Object.freeze({
|
|
|
94
95
|
loaders: [],
|
|
95
96
|
// Shared loader settings and debug config
|
|
96
97
|
config: Object.freeze({
|
|
97
|
-
loaders:
|
|
98
|
-
debug:
|
|
98
|
+
loaders: Rt,
|
|
99
|
+
debug: Mt
|
|
99
100
|
}),
|
|
100
101
|
// Image sizing and rotation configuration
|
|
101
|
-
image:
|
|
102
|
+
image: Ct,
|
|
102
103
|
// Pattern-based layout configuration
|
|
103
104
|
layout: Object.freeze({
|
|
104
105
|
algorithm: "radial",
|
|
105
106
|
scaleDecay: 0,
|
|
106
107
|
// No decay by default (0-1 for radial/spiral)
|
|
107
|
-
responsive:
|
|
108
|
+
responsive: $t,
|
|
108
109
|
targetCoverage: 0.6,
|
|
109
110
|
// Target 60% of container area
|
|
110
111
|
densityFactor: 1,
|
|
@@ -215,15 +216,15 @@ const mt = Object.freeze({
|
|
|
215
216
|
})
|
|
216
217
|
}),
|
|
217
218
|
// Image styling
|
|
218
|
-
styling:
|
|
219
|
+
styling: Tt
|
|
219
220
|
});
|
|
220
221
|
function Z(n, t) {
|
|
221
222
|
if (!n) return t || {};
|
|
222
223
|
if (!t) return { ...n };
|
|
223
224
|
const e = { ...n };
|
|
224
|
-
return t.border !== void 0 && (e.border = { ...n.border, ...t.border }), t.borderTop !== void 0 && (e.borderTop = { ...n.borderTop, ...t.borderTop }), t.borderRight !== void 0 && (e.borderRight = { ...n.borderRight, ...t.borderRight }), t.borderBottom !== void 0 && (e.borderBottom = { ...n.borderBottom, ...t.borderBottom }), t.borderLeft !== void 0 && (e.borderLeft = { ...n.borderLeft, ...t.borderLeft }), t.filter !== void 0 && (e.filter = { ...n.filter, ...t.filter }), t.outline !== void 0 && (e.outline = { ...n.outline, ...t.outline }), t.shadow !== void 0 && (e.shadow = t.shadow), t.opacity !== void 0 && (e.opacity = t.opacity), t.cursor !== void 0 && (e.cursor = t.cursor), t.className !== void 0 && (e.className = t.className), t.objectFit !== void 0 && (e.objectFit = t.objectFit), t.aspectRatio !== void 0 && (e.aspectRatio = t.aspectRatio), t.borderRadiusTopLeft !== void 0 && (e.borderRadiusTopLeft = t.borderRadiusTopLeft), t.borderRadiusTopRight !== void 0 && (e.borderRadiusTopRight = t.borderRadiusTopRight), t.borderRadiusBottomRight !== void 0 && (e.borderRadiusBottomRight = t.borderRadiusBottomRight), t.borderRadiusBottomLeft !== void 0 && (e.borderRadiusBottomLeft = t.borderRadiusBottomLeft), e;
|
|
225
|
+
return t.border !== void 0 && (e.border = { ...n.border, ...t.border }), t.borderTop !== void 0 && (e.borderTop = { ...n.borderTop, ...t.borderTop }), t.borderRight !== void 0 && (e.borderRight = { ...n.borderRight, ...t.borderRight }), t.borderBottom !== void 0 && (e.borderBottom = { ...n.borderBottom, ...t.borderBottom }), t.borderLeft !== void 0 && (e.borderLeft = { ...n.borderLeft, ...t.borderLeft }), t.filter !== void 0 && (e.filter = { ...n.filter, ...t.filter }), t.outline !== void 0 && (e.outline = { ...n.outline, ...t.outline }), t.shadow !== void 0 && (e.shadow = t.shadow), t.clipPath !== void 0 && (e.clipPath = t.clipPath), t.opacity !== void 0 && (e.opacity = t.opacity), t.cursor !== void 0 && (e.cursor = t.cursor), t.className !== void 0 && (e.className = t.className), t.objectFit !== void 0 && (e.objectFit = t.objectFit), t.aspectRatio !== void 0 && (e.aspectRatio = t.aspectRatio), t.borderRadiusTopLeft !== void 0 && (e.borderRadiusTopLeft = t.borderRadiusTopLeft), t.borderRadiusTopRight !== void 0 && (e.borderRadiusTopRight = t.borderRadiusTopRight), t.borderRadiusBottomRight !== void 0 && (e.borderRadiusBottomRight = t.borderRadiusBottomRight), t.borderRadiusBottomLeft !== void 0 && (e.borderRadiusBottomLeft = t.borderRadiusBottomLeft), e;
|
|
225
226
|
}
|
|
226
|
-
function
|
|
227
|
+
function _t(n, t) {
|
|
227
228
|
if (!t) return { ...n };
|
|
228
229
|
const e = Z(n.default, t.default), i = Z(
|
|
229
230
|
Z(e, n.hover),
|
|
@@ -238,7 +239,7 @@ function Pt(n, t) {
|
|
|
238
239
|
focused: o
|
|
239
240
|
};
|
|
240
241
|
}
|
|
241
|
-
function
|
|
242
|
+
function Ht(n, t) {
|
|
242
243
|
if (!t) return { ...n };
|
|
243
244
|
const e = { ...n };
|
|
244
245
|
if (t.sizing !== void 0 && (e.sizing = {
|
|
@@ -257,7 +258,7 @@ function _t(n, t) {
|
|
|
257
258
|
}
|
|
258
259
|
return e;
|
|
259
260
|
}
|
|
260
|
-
function
|
|
261
|
+
function Nt(n) {
|
|
261
262
|
const t = n.layout?.rotation;
|
|
262
263
|
if (t && "enabled" in t)
|
|
263
264
|
return {
|
|
@@ -267,7 +268,7 @@ function Ht(n) {
|
|
|
267
268
|
}
|
|
268
269
|
};
|
|
269
270
|
}
|
|
270
|
-
function
|
|
271
|
+
function jt(n) {
|
|
271
272
|
const t = n.layout?.sizing?.variance;
|
|
272
273
|
if (t)
|
|
273
274
|
return {
|
|
@@ -278,8 +279,8 @@ function Nt(n) {
|
|
|
278
279
|
}
|
|
279
280
|
};
|
|
280
281
|
}
|
|
281
|
-
function
|
|
282
|
-
const t =
|
|
282
|
+
function kt(n = {}) {
|
|
283
|
+
const t = Nt(n), e = jt(n);
|
|
283
284
|
let i = n.image;
|
|
284
285
|
(t || e) && (i = {
|
|
285
286
|
...e || {},
|
|
@@ -297,18 +298,18 @@ function jt(n = {}) {
|
|
|
297
298
|
});
|
|
298
299
|
const r = {
|
|
299
300
|
loaders: {
|
|
300
|
-
...
|
|
301
|
+
...Rt,
|
|
301
302
|
...n.config?.loaders ?? {}
|
|
302
303
|
}
|
|
303
304
|
}, a = {
|
|
304
305
|
loaders: o,
|
|
305
306
|
config: r,
|
|
306
|
-
image:
|
|
307
|
+
image: Ht(Ct, i),
|
|
307
308
|
layout: { ...y.layout },
|
|
308
309
|
animation: { ...y.animation },
|
|
309
310
|
interaction: { ...y.interaction },
|
|
310
311
|
rendering: { ...y.rendering },
|
|
311
|
-
styling:
|
|
312
|
+
styling: _t(Tt, n.styling)
|
|
312
313
|
};
|
|
313
314
|
return n.layout && (a.layout = {
|
|
314
315
|
...y.layout,
|
|
@@ -371,20 +372,20 @@ function jt(n = {}) {
|
|
|
371
372
|
...y.rendering.performance,
|
|
372
373
|
...n.rendering.performance
|
|
373
374
|
})), a.config.debug = {
|
|
374
|
-
...
|
|
375
|
+
...Mt,
|
|
375
376
|
...n.config?.debug ?? {}
|
|
376
377
|
}, a;
|
|
377
378
|
}
|
|
378
|
-
function
|
|
379
|
+
function Wt(n, t) {
|
|
379
380
|
return { ...n ? wt[n] : wt.playful, ...t };
|
|
380
381
|
}
|
|
381
|
-
function
|
|
382
|
+
function Gt(n, t) {
|
|
382
383
|
return { ...n ? xt[n] : xt.gentle, ...t };
|
|
383
384
|
}
|
|
384
|
-
function
|
|
385
|
+
function qt(n, t) {
|
|
385
386
|
return { ...n ? St[n] : St.gentle, ...t };
|
|
386
387
|
}
|
|
387
|
-
class
|
|
388
|
+
class Yt {
|
|
388
389
|
constructor(t) {
|
|
389
390
|
this.activeAnimations = /* @__PURE__ */ new Map(), this.animationIdCounter = 0, this.config = t;
|
|
390
391
|
}
|
|
@@ -543,31 +544,31 @@ class qt {
|
|
|
543
544
|
function V(n, t, e) {
|
|
544
545
|
return n + (t - n) * e;
|
|
545
546
|
}
|
|
546
|
-
function
|
|
547
|
-
const { overshoot: o, bounces: s, decayRatio: r } = i, a = e.x - t.x, h = e.y - t.y, c =
|
|
548
|
-
let u = 0, l = 0, d = 1,
|
|
547
|
+
function Xt(n, t, e, i) {
|
|
548
|
+
const { overshoot: o, bounces: s, decayRatio: r } = i, a = e.x - t.x, h = e.y - t.y, c = Bt(s, r);
|
|
549
|
+
let u = 0, l = 0, d = 1, f = o, b = !1;
|
|
549
550
|
for (let g = 0; g < c.length; g++)
|
|
550
551
|
if (n <= c[g].time) {
|
|
551
|
-
l = g === 0 ? 0 : c[g - 1].time, d = c[g].time,
|
|
552
|
+
l = g === 0 ? 0 : c[g - 1].time, d = c[g].time, f = c[g].overshoot, b = c[g].isOvershoot;
|
|
552
553
|
break;
|
|
553
554
|
}
|
|
554
555
|
const p = (n - l) / (d - l);
|
|
555
556
|
if (b)
|
|
556
|
-
u = 1 +
|
|
557
|
+
u = 1 + f * ot(p);
|
|
557
558
|
else if (l === 0)
|
|
558
559
|
u = ot(p);
|
|
559
560
|
else {
|
|
560
|
-
const
|
|
561
|
+
const m = 1 + (c.find(
|
|
561
562
|
(S, v) => S.time > l && v > 0 && c[v - 1].isOvershoot
|
|
562
|
-
)?.overshoot ||
|
|
563
|
-
u = V(
|
|
563
|
+
)?.overshoot || f);
|
|
564
|
+
u = V(m, 1, ot(p));
|
|
564
565
|
}
|
|
565
566
|
return {
|
|
566
567
|
x: t.x + a * u,
|
|
567
568
|
y: t.y + h * u
|
|
568
569
|
};
|
|
569
570
|
}
|
|
570
|
-
function
|
|
571
|
+
function Bt(n, t) {
|
|
571
572
|
const e = [];
|
|
572
573
|
let i = 0.6;
|
|
573
574
|
e.push({ time: i, overshoot: 0, isOvershoot: !1 });
|
|
@@ -577,11 +578,11 @@ function Xt(n, t) {
|
|
|
577
578
|
i += r, e.push({ time: i, overshoot: o, isOvershoot: !0 }), i += r, e.push({ time: i, overshoot: o * t, isOvershoot: !1 }), o *= t;
|
|
578
579
|
return e.push({ time: 1, overshoot: 0, isOvershoot: !1 }), e;
|
|
579
580
|
}
|
|
580
|
-
function
|
|
581
|
+
function Jt(n, t, e, i) {
|
|
581
582
|
const { stiffness: o, damping: s, mass: r, oscillations: a } = i, h = e.x - t.x, c = e.y - t.y, u = Math.sqrt(o / r), l = s / (2 * Math.sqrt(o * r));
|
|
582
583
|
let d;
|
|
583
584
|
if (l < 1) {
|
|
584
|
-
const
|
|
585
|
+
const f = u * Math.sqrt(1 - l * l), b = Math.exp(-l * u * n * 3), p = Math.cos(f * n * a * Math.PI);
|
|
585
586
|
d = 1 - b * p;
|
|
586
587
|
} else
|
|
587
588
|
d = 1 - Math.exp(-u * n * 3);
|
|
@@ -590,44 +591,44 @@ function Bt(n, t, e, i) {
|
|
|
590
591
|
y: t.y + c * d
|
|
591
592
|
};
|
|
592
593
|
}
|
|
593
|
-
function
|
|
594
|
-
const { amplitude: o, frequency: s, decay: r, decayRate: a, phase: h } = i, c = e.x - t.x, u = e.y - t.y, l = Math.sqrt(c * c + u * u), d = l > 0 ? -u / l : 0,
|
|
594
|
+
function Vt(n, t, e, i) {
|
|
595
|
+
const { amplitude: o, frequency: s, decay: r, decayRate: a, phase: h } = i, c = e.x - t.x, u = e.y - t.y, l = Math.sqrt(c * c + u * u), d = l > 0 ? -u / l : 0, f = l > 0 ? c / l : 1, b = s * Math.PI * 2 * n + h, p = r ? Math.pow(1 - n, a) : 1, g = o * Math.sin(b) * p, m = Kt(n);
|
|
595
596
|
return {
|
|
596
|
-
x: V(t.x, e.x,
|
|
597
|
-
y: V(t.y, e.y,
|
|
597
|
+
x: V(t.x, e.x, m) + g * d,
|
|
598
|
+
y: V(t.y, e.y, m) + g * f
|
|
598
599
|
};
|
|
599
600
|
}
|
|
600
601
|
function ot(n) {
|
|
601
602
|
return 1 - (1 - n) * (1 - n);
|
|
602
603
|
}
|
|
603
|
-
function
|
|
604
|
+
function Kt(n) {
|
|
604
605
|
return 1 - Math.pow(1 - n, 3);
|
|
605
606
|
}
|
|
606
|
-
function
|
|
607
|
+
function Zt(n, t, e) {
|
|
607
608
|
const { amplitude: i, frequency: o, decay: s } = e, r = Math.sin(n * o * Math.PI * 2), a = s ? Math.pow(1 - n, 2) : 1, h = i * r * a;
|
|
608
609
|
return t + h;
|
|
609
610
|
}
|
|
610
|
-
function
|
|
611
|
+
function Qt(n, t, e) {
|
|
611
612
|
const { overshoot: i, bounces: o } = e, s = [];
|
|
612
613
|
s.push({ time: 0.5, scale: i });
|
|
613
614
|
let r = i;
|
|
614
615
|
const a = 0.5, c = 0.5 / (o * 2);
|
|
615
616
|
let u = 0.5;
|
|
616
617
|
for (let d = 0; d < o; d++) {
|
|
617
|
-
const
|
|
618
|
-
u += c, s.push({ time: u, scale:
|
|
618
|
+
const f = 1 - (r - 1) * a;
|
|
619
|
+
u += c, s.push({ time: u, scale: f }), r = 1 + (r - 1) * a * a, u += c, d < o - 1 && s.push({ time: u, scale: r });
|
|
619
620
|
}
|
|
620
621
|
s.push({ time: 1, scale: 1 });
|
|
621
622
|
let l = 1;
|
|
622
623
|
for (let d = 0; d < s.length; d++)
|
|
623
624
|
if (n <= s[d].time) {
|
|
624
|
-
const
|
|
625
|
+
const f = d === 0 ? 0 : s[d - 1].time, b = d === 0 ? 1 : s[d - 1].scale, p = (n - f) / (s[d].time - f), g = ot(p);
|
|
625
626
|
l = b + (s[d].scale - b) * g;
|
|
626
627
|
break;
|
|
627
628
|
}
|
|
628
629
|
return l * t;
|
|
629
630
|
}
|
|
630
|
-
function
|
|
631
|
+
function te(n) {
|
|
631
632
|
const {
|
|
632
633
|
element: t,
|
|
633
634
|
startPosition: e,
|
|
@@ -641,40 +642,40 @@ function Qt(n) {
|
|
|
641
642
|
onComplete: u,
|
|
642
643
|
rotationConfig: l,
|
|
643
644
|
startRotation: d,
|
|
644
|
-
scaleConfig:
|
|
645
|
+
scaleConfig: f,
|
|
645
646
|
startScale: b
|
|
646
|
-
} = n, p = o.type, g = d !== void 0 && d !== h,
|
|
647
|
+
} = n, p = o.type, g = d !== void 0 && d !== h, m = l?.mode === "wobble", S = l?.wobble || { amplitude: 15, frequency: 3, decay: !0 }, v = g || m, w = b !== void 0 && b !== c, E = f?.mode === "pop", x = f?.pop || { overshoot: 1.2, bounces: 1 };
|
|
647
648
|
if ((p === "linear" || p === "arc") && !v && !(w || E)) {
|
|
648
649
|
u && u();
|
|
649
650
|
return;
|
|
650
651
|
}
|
|
651
|
-
const L = performance.now(), z = -r / 2,
|
|
652
|
+
const L = performance.now(), z = -r / 2, U = -a / 2;
|
|
652
653
|
function _(Y) {
|
|
653
654
|
const N = Y - L, T = Math.min(N / s, 1);
|
|
654
655
|
let D;
|
|
655
656
|
switch (p) {
|
|
656
657
|
case "bounce": {
|
|
657
|
-
const O =
|
|
658
|
+
const O = Wt(
|
|
658
659
|
o.bouncePreset,
|
|
659
660
|
o.bounce
|
|
660
661
|
);
|
|
661
|
-
D =
|
|
662
|
+
D = Xt(T, e, i, O);
|
|
662
663
|
break;
|
|
663
664
|
}
|
|
664
665
|
case "elastic": {
|
|
665
|
-
const O =
|
|
666
|
+
const O = Gt(
|
|
666
667
|
o.elasticPreset,
|
|
667
668
|
o.elastic
|
|
668
669
|
);
|
|
669
|
-
D =
|
|
670
|
+
D = Jt(T, e, i, O);
|
|
670
671
|
break;
|
|
671
672
|
}
|
|
672
673
|
case "wave": {
|
|
673
|
-
const O =
|
|
674
|
+
const O = qt(
|
|
674
675
|
o.wavePreset,
|
|
675
676
|
o.wave
|
|
676
677
|
);
|
|
677
|
-
D =
|
|
678
|
+
D = Vt(T, e, i, O);
|
|
678
679
|
break;
|
|
679
680
|
}
|
|
680
681
|
default:
|
|
@@ -685,16 +686,16 @@ function Qt(n) {
|
|
|
685
686
|
}
|
|
686
687
|
const k = D.x - i.x, H = D.y - i.y;
|
|
687
688
|
let R;
|
|
688
|
-
|
|
689
|
+
m ? R = Zt(T, h, S) : g ? R = V(d, h, T) : R = h;
|
|
689
690
|
let C;
|
|
690
|
-
E ? C =
|
|
691
|
+
E ? C = Qt(T, c, x) : w ? C = V(b, c, T) : C = c, t.style.transform = `translate(${z}px, ${U}px) translate(${k}px, ${H}px) rotate(${R}deg) scale(${C})`, T < 1 ? requestAnimationFrame(_) : (t.style.transform = `translate(${z}px, ${U}px) rotate(${h}deg) scale(${c})`, u && u());
|
|
691
692
|
}
|
|
692
693
|
requestAnimationFrame(_);
|
|
693
694
|
}
|
|
694
|
-
function
|
|
695
|
+
function ee(n) {
|
|
695
696
|
return n === "bounce" || n === "elastic" || n === "wave";
|
|
696
697
|
}
|
|
697
|
-
const
|
|
698
|
+
const ie = {
|
|
698
699
|
radial: "center",
|
|
699
700
|
spiral: "center",
|
|
700
701
|
grid: "top",
|
|
@@ -702,7 +703,7 @@ const ee = {
|
|
|
702
703
|
random: "nearest-edge",
|
|
703
704
|
wave: "left"
|
|
704
705
|
};
|
|
705
|
-
class
|
|
706
|
+
class ne {
|
|
706
707
|
constructor(t, e) {
|
|
707
708
|
this.config = t, this.layoutAlgorithm = e, this.resolvedStartPosition = this.resolveStartPosition(), this.pathConfig = t.path || pt, this.rotationConfig = t.rotation || bt, this.scaleConfig = t.scale || yt;
|
|
708
709
|
}
|
|
@@ -710,7 +711,7 @@ class ie {
|
|
|
710
711
|
* Get the effective start position, considering layout-aware defaults
|
|
711
712
|
*/
|
|
712
713
|
resolveStartPosition() {
|
|
713
|
-
return this.config.start.position ? this.config.start.position :
|
|
714
|
+
return this.config.start.position ? this.config.start.position : ie[this.layoutAlgorithm] || "nearest-edge";
|
|
714
715
|
}
|
|
715
716
|
/**
|
|
716
717
|
* Calculate the starting position for an image's entry animation
|
|
@@ -749,8 +750,8 @@ class ie {
|
|
|
749
750
|
*/
|
|
750
751
|
calculateNearestEdge(t, e, i, o) {
|
|
751
752
|
const s = t.x, r = t.y, a = s, h = i.width - s, c = r, u = i.height - r, l = Math.min(a, h, c, u);
|
|
752
|
-
let d = t.x,
|
|
753
|
-
return l === a ? d = -(e.width + o) : l === h ? d = i.width + o : l === c ?
|
|
753
|
+
let d = t.x, f = t.y;
|
|
754
|
+
return l === a ? d = -(e.width + o) : l === h ? d = i.width + o : l === c ? f = -(e.height + o) : f = i.height + o, { x: d, y: f };
|
|
754
755
|
}
|
|
755
756
|
/**
|
|
756
757
|
* Calculate start position from a specific edge
|
|
@@ -808,8 +809,8 @@ class ie {
|
|
|
808
809
|
h = typeof c == "number" ? c : 500;
|
|
809
810
|
let u;
|
|
810
811
|
a === "even" ? u = o / s * 2 * Math.PI : u = Math.random() * 2 * Math.PI;
|
|
811
|
-
const l = i.width / 2, d = i.height / 2,
|
|
812
|
-
return { x:
|
|
812
|
+
const l = i.width / 2, d = i.height / 2, f = l + Math.cos(u) * h, b = d + Math.sin(u) * h;
|
|
813
|
+
return { x: f, y: b };
|
|
813
814
|
}
|
|
814
815
|
/**
|
|
815
816
|
* Get animation parameters for an image
|
|
@@ -829,7 +830,7 @@ class ie {
|
|
|
829
830
|
* Uses pixel-based centering offset for reliable cross-browser behavior
|
|
830
831
|
*/
|
|
831
832
|
buildStartTransform(t, e, i, o, s, r, a, h) {
|
|
832
|
-
const c = t.x - e.x, u = t.y - e.y, l = a !== void 0 ? a : i, d = h !== void 0 ? h : o,
|
|
833
|
+
const c = t.x - e.x, u = t.y - e.y, l = a !== void 0 ? a : i, d = h !== void 0 ? h : o, f = s !== void 0 ? -s / 2 : 0, b = r !== void 0 ? -r / 2 : 0, p = s !== void 0 ? `translate(${f}px, ${b}px)` : "translate(-50%, -50%)";
|
|
833
834
|
return t.useScale ? `${p} translate(${c}px, ${u}px) rotate(${l}deg) scale(0)` : `${p} translate(${c}px, ${u}px) rotate(${l}deg) scale(${d})`;
|
|
834
835
|
}
|
|
835
836
|
/**
|
|
@@ -855,7 +856,7 @@ class ie {
|
|
|
855
856
|
* Check if the current path type requires JavaScript animation
|
|
856
857
|
*/
|
|
857
858
|
requiresJSAnimation() {
|
|
858
|
-
return
|
|
859
|
+
return ee(this.pathConfig.type);
|
|
859
860
|
}
|
|
860
861
|
/**
|
|
861
862
|
* Get the path configuration
|
|
@@ -1046,7 +1047,7 @@ class ie {
|
|
|
1046
1047
|
return 1 - (1 - t) * (1 - t);
|
|
1047
1048
|
}
|
|
1048
1049
|
}
|
|
1049
|
-
class
|
|
1050
|
+
class oe {
|
|
1050
1051
|
constructor(t, e = {}) {
|
|
1051
1052
|
this.config = t, this.imageConfig = e;
|
|
1052
1053
|
}
|
|
@@ -1058,14 +1059,14 @@ class ne {
|
|
|
1058
1059
|
* @returns Array of layout objects with position, rotation, scale
|
|
1059
1060
|
*/
|
|
1060
1061
|
generate(t, e, i = {}) {
|
|
1061
|
-
const o = [], { width: s, height: r } = e, a = this.config.spacing.padding, h = i.fixedHeight ?? 200, c = this.imageConfig.rotation?.mode ?? "none", u = this.imageConfig.rotation?.range?.min ?? -15, l = this.imageConfig.rotation?.range?.max ?? 15, d = this.imageConfig.sizing?.variance?.min ?? 1,
|
|
1062
|
+
const o = [], { width: s, height: r } = e, a = this.config.spacing.padding, h = i.fixedHeight ?? 200, c = this.imageConfig.rotation?.mode ?? "none", u = this.imageConfig.rotation?.range?.min ?? -15, l = this.imageConfig.rotation?.range?.max ?? 15, d = this.imageConfig.sizing?.variance?.min ?? 1, f = this.imageConfig.sizing?.variance?.max ?? 1, b = d !== 1 || f !== 1, g = h * 1.5 / 2, m = h / 2, S = s - a - g, v = r - a - m, w = a + g, E = a + m;
|
|
1062
1063
|
for (let x = 0; x < t; x++) {
|
|
1063
|
-
const A = this.random(w, S), L = this.random(E, v), z = c === "random" ? this.random(u, l) : 0,
|
|
1064
|
+
const A = this.random(w, S), L = this.random(E, v), z = c === "random" ? this.random(u, l) : 0, U = b ? this.random(d, f) : 1, _ = h * U, Y = {
|
|
1064
1065
|
id: x,
|
|
1065
1066
|
x: A,
|
|
1066
1067
|
y: L,
|
|
1067
1068
|
rotation: z,
|
|
1068
|
-
scale:
|
|
1069
|
+
scale: U,
|
|
1069
1070
|
baseSize: _
|
|
1070
1071
|
};
|
|
1071
1072
|
o.push(Y);
|
|
@@ -1082,7 +1083,7 @@ class ne {
|
|
|
1082
1083
|
return Math.random() * (e - t) + t;
|
|
1083
1084
|
}
|
|
1084
1085
|
}
|
|
1085
|
-
class
|
|
1086
|
+
class se {
|
|
1086
1087
|
constructor(t, e = {}) {
|
|
1087
1088
|
this.config = t, this.imageConfig = e;
|
|
1088
1089
|
}
|
|
@@ -1094,13 +1095,13 @@ class oe {
|
|
|
1094
1095
|
* @returns Array of layout objects with position, rotation, scale
|
|
1095
1096
|
*/
|
|
1096
1097
|
generate(t, e, i = {}) {
|
|
1097
|
-
const o = [], { width: s, height: r } = e, a = i.fixedHeight ?? 200, h = this.imageConfig.rotation?.mode ?? "none", c = this.imageConfig.rotation?.range?.min ?? -15, u = this.imageConfig.rotation?.range?.max ?? 15, l = this.imageConfig.sizing?.variance?.min ?? 1, d = this.imageConfig.sizing?.variance?.max ?? 1,
|
|
1098
|
+
const o = [], { width: s, height: r } = e, a = i.fixedHeight ?? 200, h = this.imageConfig.rotation?.mode ?? "none", c = this.imageConfig.rotation?.range?.min ?? -15, u = this.imageConfig.rotation?.range?.max ?? 15, l = this.imageConfig.sizing?.variance?.min ?? 1, d = this.imageConfig.sizing?.variance?.max ?? 1, f = l !== 1 || d !== 1, b = this.config.scaleDecay ?? 0, p = i.fixedHeight ?? a, g = s / 2, m = r / 2, S = Math.ceil(Math.sqrt(t));
|
|
1098
1099
|
if (t > 0) {
|
|
1099
|
-
const E =
|
|
1100
|
+
const E = f ? this.random(l, d) : 1, x = p * E;
|
|
1100
1101
|
o.push({
|
|
1101
1102
|
id: 0,
|
|
1102
1103
|
x: g,
|
|
1103
|
-
y:
|
|
1104
|
+
y: m,
|
|
1104
1105
|
rotation: h === "random" ? this.random(c * 0.33, u * 0.33) : 0,
|
|
1105
1106
|
// Less rotation for center
|
|
1106
1107
|
scale: E,
|
|
@@ -1111,17 +1112,17 @@ class oe {
|
|
|
1111
1112
|
}
|
|
1112
1113
|
let v = 1, w = 1;
|
|
1113
1114
|
for (; v < t; ) {
|
|
1114
|
-
const E = w / S, x = b > 0 ? 1 - E * b * 0.5 : 1, A = w * (p * 0.8), L = A * 1.5, z = Math.PI * (3 * (L + A) - Math.sqrt((3 * L + A) * (L + 3 * A))),
|
|
1115
|
+
const E = w / S, x = b > 0 ? 1 - E * b * 0.5 : 1, A = w * (p * 0.8), L = A * 1.5, z = Math.PI * (3 * (L + A) - Math.sqrt((3 * L + A) * (L + 3 * A))), U = this.estimateWidth(p), _ = Math.floor(z / (U * 0.7));
|
|
1115
1116
|
if (_ === 0) {
|
|
1116
1117
|
w++;
|
|
1117
1118
|
continue;
|
|
1118
1119
|
}
|
|
1119
1120
|
const Y = 2 * Math.PI / _, N = w * (20 * Math.PI / 180);
|
|
1120
1121
|
for (let T = 0; T < _ && v < t; T++) {
|
|
1121
|
-
const D = T * Y + N, k =
|
|
1122
|
-
let C = g + Math.cos(D) * L, O =
|
|
1123
|
-
const $ = this.config.spacing.padding ?? 50,
|
|
1124
|
-
C -
|
|
1122
|
+
const D = T * Y + N, k = f ? this.random(l, d) : 1, H = x * k, R = p * H;
|
|
1123
|
+
let C = g + Math.cos(D) * L, O = m + Math.sin(D) * A;
|
|
1124
|
+
const $ = this.config.spacing.padding ?? 50, P = R * 1.5 / 2, M = R / 2;
|
|
1125
|
+
C - P < $ ? C = $ + P : C + P > s - $ && (C = s - $ - P), O - M < $ ? O = $ + M : O + M > r - $ && (O = r - $ - M);
|
|
1125
1126
|
const W = h === "random" ? this.random(c, u) : 0;
|
|
1126
1127
|
o.push({
|
|
1127
1128
|
id: v,
|
|
@@ -1157,7 +1158,7 @@ class oe {
|
|
|
1157
1158
|
return Math.random() * (e - t) + t;
|
|
1158
1159
|
}
|
|
1159
1160
|
}
|
|
1160
|
-
const
|
|
1161
|
+
const ae = {
|
|
1161
1162
|
columns: "auto",
|
|
1162
1163
|
rows: "auto",
|
|
1163
1164
|
stagger: "none",
|
|
@@ -1185,7 +1186,7 @@ const se = {
|
|
|
1185
1186
|
{ x: 0, y: 1 }
|
|
1186
1187
|
// down
|
|
1187
1188
|
];
|
|
1188
|
-
class
|
|
1189
|
+
class re {
|
|
1189
1190
|
constructor(t, e = {}) {
|
|
1190
1191
|
this.config = t, this.imageConfig = e;
|
|
1191
1192
|
}
|
|
@@ -1197,18 +1198,18 @@ class ae {
|
|
|
1197
1198
|
* @returns Array of layout objects with position, rotation, scale
|
|
1198
1199
|
*/
|
|
1199
1200
|
generate(t, e, i = {}) {
|
|
1200
|
-
const o = [], { width: s, height: r } = e, a = { ...
|
|
1201
|
+
const o = [], { width: s, height: r } = e, a = { ...ae, ...this.config.grid }, h = this.config.spacing.padding, c = i.fixedHeight ?? 200, u = this.imageConfig.rotation?.mode ?? "none", l = this.imageConfig.sizing?.variance?.min ?? 1, d = this.imageConfig.sizing?.variance?.max ?? 1, f = l !== 1 || d !== 1, b = s - 2 * h, p = r - 2 * h, { columns: g, rows: m } = this.calculateGridDimensions(
|
|
1201
1202
|
t,
|
|
1202
1203
|
b,
|
|
1203
1204
|
p,
|
|
1204
1205
|
c,
|
|
1205
1206
|
a
|
|
1206
|
-
), S = a.stagger === "row", v = a.stagger === "column", w = S ? g + 0.5 : g, E = v ?
|
|
1207
|
+
), S = a.stagger === "row", v = a.stagger === "column", w = S ? g + 0.5 : g, E = v ? m + 0.5 : m, x = (b - a.gap * (g - 1)) / w, A = (p - a.gap * (m - 1)) / E, L = S ? x / 2 : 0, z = v ? A / 2 : 0, U = 1 + a.overlap, _ = Math.min(x, A) * U, Y = i.fixedHeight ? Math.min(i.fixedHeight, _) : _, N = g * x + (g - 1) * a.gap + L, T = m * A + (m - 1) * a.gap + z, D = h + (b - N) / 2, k = h + (p - T) / 2, H = g * m, R = a.columns !== "auto" && a.rows !== "auto", C = R && t > H;
|
|
1207
1208
|
typeof window < "u" && (window.__gridOverflowDebug = {
|
|
1208
1209
|
gridConfigColumns: a.columns,
|
|
1209
1210
|
gridConfigRows: a.rows,
|
|
1210
1211
|
columns: g,
|
|
1211
|
-
rows:
|
|
1212
|
+
rows: m,
|
|
1212
1213
|
cellCount: H,
|
|
1213
1214
|
hasFixedGrid: R,
|
|
1214
1215
|
imageCount: t,
|
|
@@ -1216,14 +1217,14 @@ class ae {
|
|
|
1216
1217
|
});
|
|
1217
1218
|
const O = C ? new Array(H).fill(0) : [], $ = Math.min(x, A) * a.overflowOffset;
|
|
1218
1219
|
for (let F = 0; F < t; F++) {
|
|
1219
|
-
let
|
|
1220
|
+
let P, M, W = 0;
|
|
1220
1221
|
if (C && F >= H) {
|
|
1221
1222
|
const q = F - H, j = q % H;
|
|
1222
|
-
W = Math.floor(q / H) + 1, O[j]++, a.fillDirection === "row" ? (
|
|
1223
|
+
W = Math.floor(q / H) + 1, O[j]++, a.fillDirection === "row" ? (P = j % g, M = Math.floor(j / g)) : (M = j % m, P = Math.floor(j / m));
|
|
1223
1224
|
} else
|
|
1224
|
-
a.fillDirection === "row" ? (
|
|
1225
|
-
let G = D +
|
|
1226
|
-
if (a.stagger === "row" && M % 2 === 1 ? G += x / 2 : a.stagger === "column" &&
|
|
1225
|
+
a.fillDirection === "row" ? (P = F % g, M = Math.floor(F / g)) : (M = F % m, P = Math.floor(F / m));
|
|
1226
|
+
let G = D + P * (x + a.gap) + x / 2, X = k + M * (A + a.gap) + A / 2;
|
|
1227
|
+
if (a.stagger === "row" && M % 2 === 1 ? G += x / 2 : a.stagger === "column" && P % 2 === 1 && (X += A / 2), W > 0) {
|
|
1227
1228
|
const q = (W - 1) % Et.length, j = Et[q];
|
|
1228
1229
|
G += j.x * $, X += j.y * $;
|
|
1229
1230
|
}
|
|
@@ -1240,8 +1241,8 @@ class ae {
|
|
|
1240
1241
|
a.alignment === "center" ? gt = (N - vt) / 2 : a.alignment === "end" && (gt = N - vt), B += gt;
|
|
1241
1242
|
}
|
|
1242
1243
|
}
|
|
1243
|
-
const rt =
|
|
1244
|
-
B = Math.max(lt, Math.min(B, ht)), J = Math.max(
|
|
1244
|
+
const rt = f ? this.random(l, d) : 1, K = Y * rt, it = K * 1.5 / 2, nt = K / 2, lt = h + it, ht = s - h - it, Ft = h + nt, Dt = r - h - nt;
|
|
1245
|
+
B = Math.max(lt, Math.min(B, ht)), J = Math.max(Ft, Math.min(J, Dt));
|
|
1245
1246
|
let dt = 0;
|
|
1246
1247
|
if (u === "random") {
|
|
1247
1248
|
const q = this.imageConfig.rotation?.range?.min ?? -15, j = this.imageConfig.rotation?.range?.max ?? 15;
|
|
@@ -1285,14 +1286,14 @@ class ae {
|
|
|
1285
1286
|
return Math.random() * (e - t) + t;
|
|
1286
1287
|
}
|
|
1287
1288
|
}
|
|
1288
|
-
const
|
|
1289
|
+
const ce = Math.PI * (3 - Math.sqrt(5)), le = {
|
|
1289
1290
|
spiralType: "golden",
|
|
1290
1291
|
direction: "counterclockwise",
|
|
1291
1292
|
tightness: 1,
|
|
1292
1293
|
scaleDecay: 0,
|
|
1293
1294
|
startAngle: 0
|
|
1294
1295
|
};
|
|
1295
|
-
class
|
|
1296
|
+
class he {
|
|
1296
1297
|
constructor(t, e = {}) {
|
|
1297
1298
|
this.config = t, this.imageConfig = e;
|
|
1298
1299
|
}
|
|
@@ -1304,14 +1305,14 @@ class le {
|
|
|
1304
1305
|
* @returns Array of layout objects with position, rotation, scale
|
|
1305
1306
|
*/
|
|
1306
1307
|
generate(t, e, i = {}) {
|
|
1307
|
-
const o = [], { width: s, height: r } = e, a = { ...
|
|
1308
|
-
|
|
1308
|
+
const o = [], { width: s, height: r } = e, a = { ...le, ...this.config.spiral }, h = this.config.spacing.padding, c = i.fixedHeight ?? 200, u = this.imageConfig.rotation?.mode ?? "none", l = this.imageConfig.rotation?.range?.min ?? -15, d = this.imageConfig.rotation?.range?.max ?? 15, f = this.imageConfig.sizing?.variance?.min ?? 1, b = this.imageConfig.sizing?.variance?.max ?? 1, p = f !== 1 || b !== 1, g = this.config.scaleDecay ?? a.scaleDecay, m = s / 2, S = r / 2, v = Math.min(
|
|
1309
|
+
m - h - c / 2,
|
|
1309
1310
|
S - h - c / 2
|
|
1310
1311
|
), w = a.direction === "clockwise" ? -1 : 1;
|
|
1311
1312
|
for (let E = 0; E < t; E++) {
|
|
1312
1313
|
let x, A;
|
|
1313
1314
|
if (a.spiralType === "golden")
|
|
1314
|
-
x = E *
|
|
1315
|
+
x = E * ce * w + a.startAngle, A = this.calculateGoldenRadius(E, t, v, a.tightness);
|
|
1315
1316
|
else if (a.spiralType === "archimedean") {
|
|
1316
1317
|
const G = E * 0.5 * a.tightness;
|
|
1317
1318
|
x = G * w + a.startAngle, A = this.calculateArchimedeanRadius(G, t, v, a.tightness);
|
|
@@ -1319,7 +1320,7 @@ class le {
|
|
|
1319
1320
|
const G = E * 0.3 * a.tightness;
|
|
1320
1321
|
x = G * w + a.startAngle, A = this.calculateLogarithmicRadius(G, t, v, a.tightness);
|
|
1321
1322
|
}
|
|
1322
|
-
const L =
|
|
1323
|
+
const L = m + Math.cos(x) * A, z = S + Math.sin(x) * A, U = A / v, _ = g > 0 ? 1 - U * g * 0.5 : 1, Y = p ? this.random(f, b) : 1, N = _ * Y, T = c * N, k = T * 1.5 / 2, H = T / 2, R = h + k, C = s - h - k, O = h + H, $ = r - h - H, F = Math.max(R, Math.min(L, C)), P = Math.max(O, Math.min(z, $));
|
|
1323
1324
|
let M = 0;
|
|
1324
1325
|
if (u === "random") {
|
|
1325
1326
|
const G = x * 180 / Math.PI % 360, X = this.random(l, d);
|
|
@@ -1329,7 +1330,7 @@ class le {
|
|
|
1329
1330
|
o.push({
|
|
1330
1331
|
id: E,
|
|
1331
1332
|
x: F,
|
|
1332
|
-
y:
|
|
1333
|
+
y: P,
|
|
1333
1334
|
rotation: M,
|
|
1334
1335
|
scale: N,
|
|
1335
1336
|
baseSize: T,
|
|
@@ -1386,7 +1387,7 @@ class le {
|
|
|
1386
1387
|
return Math.random() * (e - t) + t;
|
|
1387
1388
|
}
|
|
1388
1389
|
}
|
|
1389
|
-
const
|
|
1390
|
+
const de = {
|
|
1390
1391
|
clusterCount: "auto",
|
|
1391
1392
|
clusterSpread: 150,
|
|
1392
1393
|
clusterSpacing: 200,
|
|
@@ -1394,7 +1395,7 @@ const he = {
|
|
|
1394
1395
|
overlap: 0.3,
|
|
1395
1396
|
distribution: "gaussian"
|
|
1396
1397
|
};
|
|
1397
|
-
class
|
|
1398
|
+
class ue {
|
|
1398
1399
|
constructor(t, e = {}) {
|
|
1399
1400
|
this.config = t, this.imageConfig = e;
|
|
1400
1401
|
}
|
|
@@ -1406,13 +1407,13 @@ class de {
|
|
|
1406
1407
|
* @returns Array of layout objects with position, rotation, scale
|
|
1407
1408
|
*/
|
|
1408
1409
|
generate(t, e, i = {}) {
|
|
1409
|
-
const o = [], { width: s, height: r } = e, a = { ...
|
|
1410
|
+
const o = [], { width: s, height: r } = e, a = { ...de, ...this.config.cluster }, h = this.config.spacing.padding, c = i.fixedHeight ?? 200, u = this.imageConfig.rotation?.mode ?? "none", l = this.imageConfig.rotation?.range?.min ?? -15, d = this.imageConfig.rotation?.range?.max ?? 15, f = this.imageConfig.sizing?.variance?.min ?? 1, b = this.imageConfig.sizing?.variance?.max ?? 1, p = f !== 1 || b !== 1, g = this.calculateClusterCount(
|
|
1410
1411
|
t,
|
|
1411
1412
|
a.clusterCount,
|
|
1412
1413
|
s,
|
|
1413
1414
|
r,
|
|
1414
1415
|
a.clusterSpacing
|
|
1415
|
-
),
|
|
1416
|
+
), m = this.generateClusterCenters(
|
|
1416
1417
|
g,
|
|
1417
1418
|
s,
|
|
1418
1419
|
r,
|
|
@@ -1423,7 +1424,7 @@ class de {
|
|
|
1423
1424
|
S[w % g]++;
|
|
1424
1425
|
let v = 0;
|
|
1425
1426
|
for (let w = 0; w < g; w++) {
|
|
1426
|
-
const E =
|
|
1427
|
+
const E = m[w], x = S[w];
|
|
1427
1428
|
for (let A = 0; A < x; A++) {
|
|
1428
1429
|
let L, z;
|
|
1429
1430
|
if (a.distribution === "gaussian")
|
|
@@ -1432,13 +1433,13 @@ class de {
|
|
|
1432
1433
|
const M = this.random(0, Math.PI * 2), W = this.random(0, E.spread);
|
|
1433
1434
|
L = Math.cos(M) * W, z = Math.sin(M) * W;
|
|
1434
1435
|
}
|
|
1435
|
-
const
|
|
1436
|
-
L /=
|
|
1437
|
-
const Y = p ? this.random(
|
|
1436
|
+
const U = 1 + a.overlap * 0.5, _ = 1 + a.overlap * 0.3;
|
|
1437
|
+
L /= U, z /= U;
|
|
1438
|
+
const Y = p ? this.random(f, b) : 1, N = _ * Y, T = c * N;
|
|
1438
1439
|
let D = E.x + L, k = E.y + z;
|
|
1439
1440
|
const R = T * 1.5 / 2, C = T / 2;
|
|
1440
1441
|
D = Math.max(h + R, Math.min(D, s - h - R)), k = Math.max(h + C, Math.min(k, r - h - C));
|
|
1441
|
-
const O = u === "random" ? this.random(l, d) : 0, F = Math.sqrt(L * L + z * z) / E.spread,
|
|
1442
|
+
const O = u === "random" ? this.random(l, d) : 0, F = Math.sqrt(L * L + z * z) / E.spread, P = Math.round((1 - F) * 50) + 1;
|
|
1442
1443
|
o.push({
|
|
1443
1444
|
id: v,
|
|
1444
1445
|
x: D,
|
|
@@ -1446,7 +1447,7 @@ class de {
|
|
|
1446
1447
|
rotation: O,
|
|
1447
1448
|
scale: N,
|
|
1448
1449
|
baseSize: T,
|
|
1449
|
-
zIndex:
|
|
1450
|
+
zIndex: P
|
|
1450
1451
|
}), v++;
|
|
1451
1452
|
}
|
|
1452
1453
|
}
|
|
@@ -1469,22 +1470,22 @@ class de {
|
|
|
1469
1470
|
generateClusterCenters(t, e, i, o, s) {
|
|
1470
1471
|
const r = [], h = o + s.clusterSpread, c = e - o - s.clusterSpread, u = o + s.clusterSpread, l = i - o - s.clusterSpread;
|
|
1471
1472
|
for (let d = 0; d < t; d++) {
|
|
1472
|
-
let
|
|
1473
|
+
let f = null, b = -1;
|
|
1473
1474
|
for (let p = 0; p < 100; p++) {
|
|
1474
1475
|
const g = {
|
|
1475
1476
|
x: this.random(h, c),
|
|
1476
1477
|
y: this.random(u, l),
|
|
1477
1478
|
spread: this.calculateClusterSpread(s)
|
|
1478
1479
|
};
|
|
1479
|
-
let
|
|
1480
|
+
let m = 1 / 0;
|
|
1480
1481
|
for (const S of r) {
|
|
1481
1482
|
const v = g.x - S.x, w = g.y - S.y, E = Math.sqrt(v * v + w * w);
|
|
1482
|
-
|
|
1483
|
+
m = Math.min(m, E);
|
|
1483
1484
|
}
|
|
1484
|
-
if ((r.length === 0 ||
|
|
1485
|
+
if ((r.length === 0 || m > b) && (f = g, b = m), m >= s.clusterSpacing)
|
|
1485
1486
|
break;
|
|
1486
1487
|
}
|
|
1487
|
-
|
|
1488
|
+
f && r.push(f);
|
|
1488
1489
|
}
|
|
1489
1490
|
return r;
|
|
1490
1491
|
}
|
|
@@ -1512,7 +1513,7 @@ class de {
|
|
|
1512
1513
|
return Math.random() * (e - t) + t;
|
|
1513
1514
|
}
|
|
1514
1515
|
}
|
|
1515
|
-
class
|
|
1516
|
+
class ge {
|
|
1516
1517
|
constructor(t, e = {}) {
|
|
1517
1518
|
this.config = t, this.imageConfig = e;
|
|
1518
1519
|
}
|
|
@@ -1524,19 +1525,19 @@ class ue {
|
|
|
1524
1525
|
* @returns Array of layout objects with position, rotation, scale
|
|
1525
1526
|
*/
|
|
1526
1527
|
generate(t, e, i = {}) {
|
|
1527
|
-
const o = [], { width: s, height: r } = e, a = i.fixedHeight ?? 200, h = this.config.spacing.padding ?? 50, c = this.imageConfig.rotation?.mode ?? "none", u = this.imageConfig.rotation?.range?.min ?? -15, l = this.imageConfig.rotation?.range?.max ?? 15, d = this.imageConfig.sizing?.variance?.min ?? 1,
|
|
1528
|
-
...
|
|
1528
|
+
const o = [], { width: s, height: r } = e, a = i.fixedHeight ?? 200, h = this.config.spacing.padding ?? 50, c = this.imageConfig.rotation?.mode ?? "none", u = this.imageConfig.rotation?.range?.min ?? -15, l = this.imageConfig.rotation?.range?.max ?? 15, d = this.imageConfig.sizing?.variance?.min ?? 1, f = this.imageConfig.sizing?.variance?.max ?? 1, b = d !== 1 || f !== 1, p = i.fixedHeight ?? a, g = {
|
|
1529
|
+
...Ot,
|
|
1529
1530
|
...this.config.wave
|
|
1530
|
-
}, { rows:
|
|
1531
|
+
}, { rows: m, amplitude: S, frequency: v, phaseShift: w, synchronization: E } = g, x = Math.ceil(t / m), z = p * 1.5 / 2, U = h + z, _ = s - h - z, Y = _ - U, N = x > 1 ? Y / (x - 1) : 0, T = h + S + p / 2, D = r - h - S - p / 2, k = D - T, H = m > 1 ? k / (m - 1) : 0;
|
|
1531
1532
|
let R = 0;
|
|
1532
|
-
for (let C = 0; C <
|
|
1533
|
-
const O =
|
|
1533
|
+
for (let C = 0; C < m && R < t; C++) {
|
|
1534
|
+
const O = m === 1 ? (T + D) / 2 : T + C * H;
|
|
1534
1535
|
let $ = 0;
|
|
1535
1536
|
E === "offset" ? $ = C * w : E === "alternating" && ($ = C * Math.PI);
|
|
1536
1537
|
for (let F = 0; F < x && R < t; F++) {
|
|
1537
|
-
const
|
|
1538
|
+
const P = x === 1 ? (U + _) / 2 : U + F * N, M = this.calculateWaveY(P, s, S, v, $), W = P, G = O + M, X = b ? this.random(d, f) : 1, B = p * X;
|
|
1538
1539
|
let J = 0;
|
|
1539
|
-
c === "tangent" ? J = this.calculateRotation(
|
|
1540
|
+
c === "tangent" ? J = this.calculateRotation(P, s, S, v, $) : c === "random" && (J = this.random(u, l));
|
|
1540
1541
|
const K = B * 1.5 / 2, ct = B / 2, it = h + K, nt = s - h - K, lt = h + ct, ht = r - h - ct;
|
|
1541
1542
|
o.push({
|
|
1542
1543
|
id: R,
|
|
@@ -1589,7 +1590,7 @@ class ue {
|
|
|
1589
1590
|
return Math.random() * (e - t) + t;
|
|
1590
1591
|
}
|
|
1591
1592
|
}
|
|
1592
|
-
class
|
|
1593
|
+
class fe {
|
|
1593
1594
|
constructor(t) {
|
|
1594
1595
|
this.config = t.layout, this.imageConfig = t.image, this.layouts = /* @__PURE__ */ new Map(), this.placementLayout = this.initLayout();
|
|
1595
1596
|
}
|
|
@@ -1600,17 +1601,17 @@ class ge {
|
|
|
1600
1601
|
initLayout() {
|
|
1601
1602
|
switch (this.config.algorithm) {
|
|
1602
1603
|
case "radial":
|
|
1603
|
-
return new
|
|
1604
|
+
return new se(this.config, this.imageConfig);
|
|
1604
1605
|
case "grid":
|
|
1605
|
-
return new
|
|
1606
|
+
return new re(this.config, this.imageConfig);
|
|
1606
1607
|
case "spiral":
|
|
1607
|
-
return new
|
|
1608
|
+
return new he(this.config, this.imageConfig);
|
|
1608
1609
|
case "cluster":
|
|
1609
|
-
return new de(this.config, this.imageConfig);
|
|
1610
|
-
case "wave":
|
|
1611
1610
|
return new ue(this.config, this.imageConfig);
|
|
1611
|
+
case "wave":
|
|
1612
|
+
return new ge(this.config, this.imageConfig);
|
|
1612
1613
|
default:
|
|
1613
|
-
return new
|
|
1614
|
+
return new oe(this.config, this.imageConfig);
|
|
1614
1615
|
}
|
|
1615
1616
|
}
|
|
1616
1617
|
/**
|
|
@@ -1693,12 +1694,12 @@ class ge {
|
|
|
1693
1694
|
if (r !== void 0)
|
|
1694
1695
|
return { height: r };
|
|
1695
1696
|
const a = s?.minSize ?? 50, h = s?.maxSize ?? 400, c = this.config.targetCoverage ?? 0.6, u = this.config.densityFactor ?? 1, { width: l, height: d } = t, p = l * d * c / e;
|
|
1696
|
-
let
|
|
1697
|
-
|
|
1698
|
-
let S = this.clamp(
|
|
1699
|
-
if (S === a &&
|
|
1697
|
+
let m = Math.sqrt(p / 1.4);
|
|
1698
|
+
m *= u, m = Math.min(m, i);
|
|
1699
|
+
let S = this.clamp(m, a, h);
|
|
1700
|
+
if (S === a && m < a) {
|
|
1700
1701
|
const v = Math.max(a * 0.05, 20);
|
|
1701
|
-
S = Math.max(v,
|
|
1702
|
+
S = Math.max(v, m);
|
|
1702
1703
|
}
|
|
1703
1704
|
return { height: S };
|
|
1704
1705
|
}
|
|
@@ -1710,13 +1711,27 @@ class ge {
|
|
|
1710
1711
|
}
|
|
1711
1712
|
}
|
|
1712
1713
|
var I = /* @__PURE__ */ ((n) => (n.IDLE = "idle", n.FOCUSING = "focusing", n.FOCUSED = "focused", n.UNFOCUSING = "unfocusing", n.CROSS_ANIMATING = "cross_animating", n))(I || {});
|
|
1714
|
+
const It = {
|
|
1715
|
+
// Geometric shapes - uses percentages for responsive sizing
|
|
1716
|
+
circle: "circle(50%)",
|
|
1717
|
+
square: "polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%)",
|
|
1718
|
+
triangle: "polygon(50% 0%, 100% 100%, 0% 100%)",
|
|
1719
|
+
pentagon: "polygon(50% 0%, 100% 38%, 82% 100%, 18% 100%, 0% 38%)",
|
|
1720
|
+
hexagon: "polygon(25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%, 0% 50%)",
|
|
1721
|
+
octagon: "polygon(30% 0%, 70% 0%, 100% 30%, 100% 70%, 70% 100%, 30% 100%, 0% 70%, 0% 30%)",
|
|
1722
|
+
diamond: "polygon(50% 0%, 100% 50%, 50% 100%, 0% 50%)"
|
|
1723
|
+
};
|
|
1713
1724
|
function me(n) {
|
|
1714
|
-
|
|
1715
|
-
|
|
1716
|
-
function fe(n) {
|
|
1717
|
-
return n ? me(n) ? mt[n] : n : mt.md;
|
|
1725
|
+
if (n)
|
|
1726
|
+
return n in It ? It[n] : n;
|
|
1718
1727
|
}
|
|
1719
1728
|
function pe(n) {
|
|
1729
|
+
return n in ft;
|
|
1730
|
+
}
|
|
1731
|
+
function be(n) {
|
|
1732
|
+
return n ? pe(n) ? ft[n] : n : ft.md;
|
|
1733
|
+
}
|
|
1734
|
+
function ye(n) {
|
|
1720
1735
|
if (!n) return "";
|
|
1721
1736
|
const t = [];
|
|
1722
1737
|
if (n.grayscale !== void 0 && t.push(`grayscale(${n.grayscale})`), n.blur !== void 0 && t.push(`blur(${n.blur}px)`), n.brightness !== void 0 && t.push(`brightness(${n.brightness})`), n.contrast !== void 0 && t.push(`contrast(${n.contrast})`), n.saturate !== void 0 && t.push(`saturate(${n.saturate})`), n.opacity !== void 0 && t.push(`opacity(${n.opacity})`), n.sepia !== void 0 && t.push(`sepia(${n.sepia})`), n.hueRotate !== void 0 && t.push(`hue-rotate(${n.hueRotate}deg)`), n.invert !== void 0 && t.push(`invert(${n.invert})`), n.dropShadow !== void 0)
|
|
@@ -1745,37 +1760,41 @@ function st(n) {
|
|
|
1745
1760
|
const s = n.border || {}, r = { ...s, ...n.borderTop }, a = { ...s, ...n.borderRight }, h = { ...s, ...n.borderBottom }, c = { ...s, ...n.borderLeft };
|
|
1746
1761
|
t.borderTop = Q(r), t.borderRight = Q(a), t.borderBottom = Q(h), t.borderLeft = Q(c);
|
|
1747
1762
|
} else n.border && (t.border = Q(n.border));
|
|
1748
|
-
n.shadow !== void 0 && (t.boxShadow =
|
|
1749
|
-
const o =
|
|
1763
|
+
n.shadow !== void 0 && (t.boxShadow = be(n.shadow));
|
|
1764
|
+
const o = ye(n.filter);
|
|
1750
1765
|
if (t.filter = o || "none", n.opacity !== void 0 && (t.opacity = String(n.opacity)), n.cursor !== void 0 && (t.cursor = n.cursor), n.outline && n.outline.style !== "none" && (n.outline.width ?? 0) > 0) {
|
|
1751
1766
|
const s = n.outline.width ?? 0, r = n.outline.style ?? "solid", a = n.outline.color ?? "#000000";
|
|
1752
1767
|
t.outline = `${s}px ${r} ${a}`, n.outline.offset !== void 0 && (t.outlineOffset = `${n.outline.offset}px`);
|
|
1753
1768
|
}
|
|
1754
|
-
|
|
1769
|
+
if (n.objectFit !== void 0 && (t.objectFit = n.objectFit), n.aspectRatio !== void 0 && (t.aspectRatio = n.aspectRatio), n.clipPath !== void 0) {
|
|
1770
|
+
const s = me(n.clipPath);
|
|
1771
|
+
s && (s === "none" ? t.clipPath = "unset" : (t.clipPath = s, t.overflow = "hidden"));
|
|
1772
|
+
}
|
|
1773
|
+
return t;
|
|
1755
1774
|
}
|
|
1756
1775
|
function tt(n, t) {
|
|
1757
|
-
t.borderRadius !== void 0 && (n.style.borderRadius = t.borderRadius), t.borderTopLeftRadius !== void 0 && (n.style.borderTopLeftRadius = t.borderTopLeftRadius), t.borderTopRightRadius !== void 0 && (n.style.borderTopRightRadius = t.borderTopRightRadius), t.borderBottomRightRadius !== void 0 && (n.style.borderBottomRightRadius = t.borderBottomRightRadius), t.borderBottomLeftRadius !== void 0 && (n.style.borderBottomLeftRadius = t.borderBottomLeftRadius), t.border !== void 0 && (n.style.border = t.border), t.borderTop !== void 0 && (n.style.borderTop = t.borderTop), t.borderRight !== void 0 && (n.style.borderRight = t.borderRight), t.borderBottom !== void 0 && (n.style.borderBottom = t.borderBottom), t.borderLeft !== void 0 && (n.style.borderLeft = t.borderLeft), t.boxShadow !== void 0 && (n.style.boxShadow = t.boxShadow), t.filter !== void 0 && (n.style.filter = t.filter), t.opacity !== void 0 && (n.style.opacity = t.opacity), t.cursor !== void 0 && (n.style.cursor = t.cursor), t.outline !== void 0 && (n.style.outline = t.outline), t.outlineOffset !== void 0 && (n.style.outlineOffset = t.outlineOffset), t.objectFit !== void 0 && (n.style.objectFit = t.objectFit), t.aspectRatio !== void 0 && (n.style.aspectRatio = t.aspectRatio);
|
|
1776
|
+
t.borderRadius !== void 0 && (n.style.borderRadius = t.borderRadius), t.borderTopLeftRadius !== void 0 && (n.style.borderTopLeftRadius = t.borderTopLeftRadius), t.borderTopRightRadius !== void 0 && (n.style.borderTopRightRadius = t.borderTopRightRadius), t.borderBottomRightRadius !== void 0 && (n.style.borderBottomRightRadius = t.borderBottomRightRadius), t.borderBottomLeftRadius !== void 0 && (n.style.borderBottomLeftRadius = t.borderBottomLeftRadius), t.border !== void 0 && (n.style.border = t.border), t.borderTop !== void 0 && (n.style.borderTop = t.borderTop), t.borderRight !== void 0 && (n.style.borderRight = t.borderRight), t.borderBottom !== void 0 && (n.style.borderBottom = t.borderBottom), t.borderLeft !== void 0 && (n.style.borderLeft = t.borderLeft), t.boxShadow !== void 0 && (n.style.boxShadow = t.boxShadow), t.filter !== void 0 && (n.style.filter = t.filter), t.opacity !== void 0 && (n.style.opacity = t.opacity), t.cursor !== void 0 && (n.style.cursor = t.cursor), t.outline !== void 0 && (n.style.outline = t.outline), t.outlineOffset !== void 0 && (n.style.outlineOffset = t.outlineOffset), t.objectFit !== void 0 && (n.style.objectFit = t.objectFit), t.aspectRatio !== void 0 && (n.style.aspectRatio = t.aspectRatio), t.clipPath !== void 0 && (n.style.clipPath = t.clipPath), t.overflow !== void 0 && (n.style.overflow = t.overflow);
|
|
1758
1777
|
}
|
|
1759
|
-
function
|
|
1778
|
+
function Lt(n) {
|
|
1760
1779
|
return n ? Array.isArray(n) ? n.join(" ") : n : "";
|
|
1761
1780
|
}
|
|
1762
1781
|
function et(n, t) {
|
|
1763
|
-
const e =
|
|
1782
|
+
const e = Lt(t);
|
|
1764
1783
|
e && e.split(" ").forEach((i) => {
|
|
1765
1784
|
i.trim() && n.classList.add(i.trim());
|
|
1766
1785
|
});
|
|
1767
1786
|
}
|
|
1768
|
-
function
|
|
1769
|
-
const e =
|
|
1787
|
+
function zt(n, t) {
|
|
1788
|
+
const e = Lt(t);
|
|
1770
1789
|
e && e.split(" ").forEach((i) => {
|
|
1771
1790
|
i.trim() && n.classList.remove(i.trim());
|
|
1772
1791
|
});
|
|
1773
1792
|
}
|
|
1774
|
-
const
|
|
1793
|
+
const At = {
|
|
1775
1794
|
UNFOCUSING: 999,
|
|
1776
1795
|
FOCUSING: 1e3
|
|
1777
1796
|
};
|
|
1778
|
-
class
|
|
1797
|
+
class ve {
|
|
1779
1798
|
constructor(t, e, i) {
|
|
1780
1799
|
this.state = I.IDLE, this.currentFocus = null, this.focusData = null, this.outgoing = null, this.incoming = null, this.focusGeneration = 0, this.config = t, this.animationEngine = e, this.defaultStyles = st(i?.default), this.focusedStyles = st(i?.focused), this.defaultClassName = i?.default?.className, this.focusedClassName = i?.focused?.className;
|
|
1781
1800
|
}
|
|
@@ -1868,7 +1887,7 @@ class be {
|
|
|
1868
1887
|
* Remove focused styling from an element
|
|
1869
1888
|
*/
|
|
1870
1889
|
removeFocusedStyling(t, e) {
|
|
1871
|
-
t.style.zIndex = e, t.classList.remove("fbn-ic-focused"),
|
|
1890
|
+
t.style.zIndex = e, t.classList.remove("fbn-ic-focused"), zt(t, this.focusedClassName), tt(t, this.defaultStyles), et(t, this.defaultClassName);
|
|
1872
1891
|
}
|
|
1873
1892
|
/**
|
|
1874
1893
|
* Start focus animation for an image using dimension-based zoom
|
|
@@ -1878,19 +1897,19 @@ class be {
|
|
|
1878
1897
|
*/
|
|
1879
1898
|
startFocusAnimation(t, e, i, o, s) {
|
|
1880
1899
|
const r = t.style.zIndex || "", a = t.offsetWidth, h = t.offsetHeight, c = this.calculateFocusDimensions(a, h, e), u = this.calculateFocusTransform(e, i);
|
|
1881
|
-
this.applyFocusedStyling(t,
|
|
1900
|
+
this.applyFocusedStyling(t, At.FOCUSING), this.animationEngine.cancelAllAnimations(t);
|
|
1882
1901
|
const l = o ?? {
|
|
1883
1902
|
x: 0,
|
|
1884
1903
|
y: 0,
|
|
1885
1904
|
rotation: i.rotation,
|
|
1886
1905
|
scale: 1
|
|
1887
1906
|
// No scale - using dimensions
|
|
1888
|
-
}, d = s?.width ?? a,
|
|
1907
|
+
}, d = s?.width ?? a, f = s?.height ?? h, b = this.config.animationDuration ?? 600, p = this.animateWithDimensions(
|
|
1889
1908
|
t,
|
|
1890
1909
|
l,
|
|
1891
1910
|
u,
|
|
1892
1911
|
d,
|
|
1893
|
-
|
|
1912
|
+
f,
|
|
1894
1913
|
c.width,
|
|
1895
1914
|
c.height,
|
|
1896
1915
|
b
|
|
@@ -1927,7 +1946,7 @@ class be {
|
|
|
1927
1946
|
* @param fromDimensions - Optional starting dimensions (for mid-animation reversals)
|
|
1928
1947
|
*/
|
|
1929
1948
|
startUnfocusAnimation(t, e, i, o) {
|
|
1930
|
-
t.style.zIndex = String(
|
|
1949
|
+
t.style.zIndex = String(At.UNFOCUSING), this.animationEngine.cancelAllAnimations(t);
|
|
1931
1950
|
const s = i ?? this.focusData?.focusTransform ?? { x: 0, y: 0, rotation: 0, scale: 1 }, r = o?.width ?? this.focusData?.focusWidth ?? t.offsetWidth, a = o?.height ?? this.focusData?.focusHeight ?? t.offsetHeight, h = {
|
|
1932
1951
|
x: 0,
|
|
1933
1952
|
y: 0,
|
|
@@ -1943,7 +1962,7 @@ class be {
|
|
|
1943
1962
|
c,
|
|
1944
1963
|
u,
|
|
1945
1964
|
l
|
|
1946
|
-
),
|
|
1965
|
+
), f = {
|
|
1947
1966
|
id: `unfocus-${Date.now()}`,
|
|
1948
1967
|
element: t,
|
|
1949
1968
|
animation: d,
|
|
@@ -1955,7 +1974,7 @@ class be {
|
|
|
1955
1974
|
return {
|
|
1956
1975
|
element: t,
|
|
1957
1976
|
originalState: e,
|
|
1958
|
-
animationHandle:
|
|
1977
|
+
animationHandle: f,
|
|
1959
1978
|
direction: "out",
|
|
1960
1979
|
originalWidth: c,
|
|
1961
1980
|
originalHeight: u
|
|
@@ -2215,7 +2234,7 @@ class be {
|
|
|
2215
2234
|
), this.state = I.IDLE, this.currentFocus = null, this.focusData = null, this.outgoing = null, this.incoming = null;
|
|
2216
2235
|
}
|
|
2217
2236
|
}
|
|
2218
|
-
const
|
|
2237
|
+
const we = 50, xe = 0.5, Se = 20, Ee = 0.3, Ie = 150, Ae = 30, at = class at {
|
|
2219
2238
|
constructor(t, e) {
|
|
2220
2239
|
this.enabled = !1, this.touchState = null, this.recentTouchTimestamp = 0, this.container = t, this.callbacks = e, this.boundTouchStart = this.handleTouchStart.bind(this), this.boundTouchMove = this.handleTouchMove.bind(this), this.boundTouchEnd = this.handleTouchEnd.bind(this), this.boundTouchCancel = this.handleTouchCancel.bind(this);
|
|
2221
2240
|
}
|
|
@@ -2262,11 +2281,11 @@ const ye = 50, ve = 0.5, we = 20, xe = 0.3, Se = 150, Ee = 30, at = class at {
|
|
|
2262
2281
|
const e = t.touches[0], i = e.clientX - this.touchState.startX, o = e.clientY - this.touchState.startY;
|
|
2263
2282
|
if (this.touchState.isHorizontalSwipe === null && Math.sqrt(i * i + o * o) > 10) {
|
|
2264
2283
|
const a = Math.atan2(Math.abs(o), Math.abs(i)) * (180 / Math.PI);
|
|
2265
|
-
this.touchState.isHorizontalSwipe = a <=
|
|
2284
|
+
this.touchState.isHorizontalSwipe = a <= Ae;
|
|
2266
2285
|
}
|
|
2267
2286
|
if (this.touchState.isHorizontalSwipe !== !1 && this.touchState.isHorizontalSwipe === !0) {
|
|
2268
2287
|
t.preventDefault(), this.touchState.isDragging = !0, this.touchState.currentX = e.clientX;
|
|
2269
|
-
const s = i *
|
|
2288
|
+
const s = i * Ee;
|
|
2270
2289
|
this.callbacks.onDragOffset(s);
|
|
2271
2290
|
}
|
|
2272
2291
|
}
|
|
@@ -2275,15 +2294,15 @@ const ye = 50, ve = 0.5, we = 20, xe = 0.3, Se = 150, Ee = 30, at = class at {
|
|
|
2275
2294
|
this.recentTouchTimestamp = Date.now();
|
|
2276
2295
|
const e = this.touchState.currentX - this.touchState.startX, i = performance.now() - this.touchState.startTime, o = Math.abs(e) / i, s = Math.abs(e);
|
|
2277
2296
|
let r = !1;
|
|
2278
|
-
this.touchState.isHorizontalSwipe === !0 && this.touchState.isDragging && (s >=
|
|
2297
|
+
this.touchState.isHorizontalSwipe === !0 && this.touchState.isDragging && (s >= we || o >= xe && s >= Se) && (r = !0, e < 0 ? this.callbacks.onNext() : this.callbacks.onPrev()), this.touchState.isDragging && this.callbacks.onDragEnd(r), this.touchState = null;
|
|
2279
2298
|
}
|
|
2280
2299
|
handleTouchCancel(t) {
|
|
2281
2300
|
this.touchState?.isDragging && this.callbacks.onDragEnd(!1), this.touchState = null;
|
|
2282
2301
|
}
|
|
2283
2302
|
};
|
|
2284
2303
|
at.TOUCH_CLICK_DELAY = 300;
|
|
2285
|
-
let
|
|
2286
|
-
class
|
|
2304
|
+
let mt = at;
|
|
2305
|
+
class Te {
|
|
2287
2306
|
constructor(t) {
|
|
2288
2307
|
if (this._prepared = !1, this._discoveredUrls = [], this.apiKey = t.apiKey ?? "", this.apiEndpoint = t.apiEndpoint ?? "https://www.googleapis.com/drive/v3/files", this.debugLogging = t.debugLogging ?? !1, this.sources = t.sources ?? [], !this.sources || this.sources.length === 0)
|
|
2289
2308
|
throw new Error("GoogleDriveLoader requires at least one source to be configured");
|
|
@@ -2504,7 +2523,7 @@ class Ie {
|
|
|
2504
2523
|
this.debugLogging && typeof console < "u" && console.log(...t);
|
|
2505
2524
|
}
|
|
2506
2525
|
}
|
|
2507
|
-
class
|
|
2526
|
+
class Ce {
|
|
2508
2527
|
constructor(t) {
|
|
2509
2528
|
if (this._prepared = !1, this._discoveredUrls = [], this.validateUrls = t.validateUrls !== !1, this.validationTimeout = t.validationTimeout ?? 5e3, this.validationMethod = t.validationMethod ?? "head", this.debugLogging = t.debugLogging ?? !1, this.sources = t.sources ?? [], !this.sources || this.sources.length === 0)
|
|
2510
2529
|
throw new Error("StaticImageLoader requires at least one source to be configured");
|
|
@@ -2684,7 +2703,7 @@ class Ae {
|
|
|
2684
2703
|
this.debugLogging && typeof console < "u" && console.log(...t);
|
|
2685
2704
|
}
|
|
2686
2705
|
}
|
|
2687
|
-
class
|
|
2706
|
+
class Re {
|
|
2688
2707
|
constructor(t) {
|
|
2689
2708
|
if (this._prepared = !1, this._discoveredUrls = [], this.loaders = t.loaders, this.debugLogging = t.debugLogging ?? !1, !this.loaders || this.loaders.length === 0)
|
|
2690
2709
|
throw new Error("CompositeLoader requires at least one loader to be configured");
|
|
@@ -2741,7 +2760,7 @@ class Te {
|
|
|
2741
2760
|
this.debugLogging && typeof console < "u" && console.log("[CompositeLoader]", ...t);
|
|
2742
2761
|
}
|
|
2743
2762
|
}
|
|
2744
|
-
class
|
|
2763
|
+
class Me {
|
|
2745
2764
|
/**
|
|
2746
2765
|
* Create a new ImageFilter
|
|
2747
2766
|
* @param extensions - Array of allowed file extensions (without dots)
|
|
@@ -2778,7 +2797,7 @@ class Ce {
|
|
|
2778
2797
|
// isAllowedDate(date: Date): boolean
|
|
2779
2798
|
// isAllowedDimensions(width: number, height: number): boolean
|
|
2780
2799
|
}
|
|
2781
|
-
const
|
|
2800
|
+
const Le = `
|
|
2782
2801
|
.fbn-ic-gallery {
|
|
2783
2802
|
position: relative;
|
|
2784
2803
|
width: 100%;
|
|
@@ -2828,21 +2847,21 @@ const Re = `
|
|
|
2828
2847
|
display: none !important;
|
|
2829
2848
|
}
|
|
2830
2849
|
`;
|
|
2831
|
-
function
|
|
2850
|
+
function ze() {
|
|
2832
2851
|
if (typeof document > "u") return;
|
|
2833
2852
|
const n = "fbn-ic-functional-styles";
|
|
2834
2853
|
if (document.getElementById(n)) return;
|
|
2835
2854
|
const t = document.createElement("style");
|
|
2836
|
-
t.id = n, t.textContent =
|
|
2855
|
+
t.id = n, t.textContent = Le, document.head.appendChild(t);
|
|
2837
2856
|
}
|
|
2838
|
-
class
|
|
2857
|
+
class Fe {
|
|
2839
2858
|
constructor(t = {}) {
|
|
2840
|
-
this.fullConfig =
|
|
2859
|
+
this.fullConfig = kt(t), t.container instanceof HTMLElement ? (this.containerRef = t.container, this.containerId = null) : (this.containerRef = null, this.containerId = t.container || "imageCloud"), this.imagesLoaded = !1, this.imageElements = [], this.imageLayouts = [], this.currentImageHeight = 225, this.currentFocusIndex = null, this.hoveredImage = null, this.resizeTimeout = null, this.displayQueue = [], this.queueInterval = null, this.loadGeneration = 0, this.loadingElAutoCreated = !1, this.errorElAutoCreated = !1, this.counterEl = null, this.counterElAutoCreated = !1, this.animationEngine = new Yt(this.fullConfig.animation), this.layoutEngine = new fe({
|
|
2841
2860
|
layout: this.fullConfig.layout,
|
|
2842
2861
|
image: this.fullConfig.image
|
|
2843
|
-
}), this.zoomEngine = new
|
|
2862
|
+
}), this.zoomEngine = new ve(this.fullConfig.interaction.focus, this.animationEngine, this.fullConfig.styling), this.defaultStyles = st(this.fullConfig.styling?.default), this.hoverStyles = st(this.fullConfig.styling?.hover), this.defaultClassName = this.fullConfig.styling?.default?.className, this.hoverClassName = this.fullConfig.styling?.hover?.className;
|
|
2844
2863
|
const e = this.fullConfig.animation.entry || y.animation.entry;
|
|
2845
|
-
this.entryAnimationEngine = new
|
|
2864
|
+
this.entryAnimationEngine = new ne(
|
|
2846
2865
|
e,
|
|
2847
2866
|
this.fullConfig.layout.algorithm
|
|
2848
2867
|
), this.swipeEngine = null, this.imageFilter = this.createImageFilter(), this.imageLoader = this.createLoader(), this.containerEl = null, this.loadingEl = null, this.errorEl = null;
|
|
@@ -2852,7 +2871,7 @@ class Le {
|
|
|
2852
2871
|
*/
|
|
2853
2872
|
createImageFilter() {
|
|
2854
2873
|
const t = this.fullConfig.config.loaders?.allowedExtensions;
|
|
2855
|
-
return new
|
|
2874
|
+
return new Me(t);
|
|
2856
2875
|
}
|
|
2857
2876
|
/**
|
|
2858
2877
|
* Create appropriate image loader based on config
|
|
@@ -2863,7 +2882,7 @@ class Le {
|
|
|
2863
2882
|
if (!t || t.length === 0)
|
|
2864
2883
|
throw new Error("No loaders configured. Provide `images`, `loaders`, or both.");
|
|
2865
2884
|
const i = t.map((o) => this.createLoaderFromEntry(o, e));
|
|
2866
|
-
return i.length === 1 ? i[0] : new
|
|
2885
|
+
return i.length === 1 ? i[0] : new Re({
|
|
2867
2886
|
loaders: i,
|
|
2868
2887
|
debugLogging: this.fullConfig.config.debug?.loaders
|
|
2869
2888
|
});
|
|
@@ -2881,14 +2900,14 @@ class Le {
|
|
|
2881
2900
|
allowedExtensions: i.allowedExtensions ?? e.allowedExtensions,
|
|
2882
2901
|
debugLogging: i.debugLogging ?? this.fullConfig.config.debug?.loaders
|
|
2883
2902
|
};
|
|
2884
|
-
return new
|
|
2903
|
+
return new Ce(o);
|
|
2885
2904
|
} else if ("googleDrive" in t) {
|
|
2886
2905
|
const i = t.googleDrive, o = {
|
|
2887
2906
|
...i,
|
|
2888
2907
|
allowedExtensions: i.allowedExtensions ?? e.allowedExtensions,
|
|
2889
2908
|
debugLogging: i.debugLogging ?? this.fullConfig.config.debug?.loaders
|
|
2890
2909
|
};
|
|
2891
|
-
return new
|
|
2910
|
+
return new Te(o);
|
|
2892
2911
|
} else
|
|
2893
2912
|
throw new Error(`Unknown loader entry: ${JSON.stringify(t)}`);
|
|
2894
2913
|
}
|
|
@@ -2897,16 +2916,16 @@ class Le {
|
|
|
2897
2916
|
*/
|
|
2898
2917
|
async init() {
|
|
2899
2918
|
try {
|
|
2900
|
-
if (
|
|
2919
|
+
if (ze(), this.containerRef)
|
|
2901
2920
|
this.containerEl = this.containerRef;
|
|
2902
2921
|
else if (this.containerEl = document.getElementById(this.containerId), !this.containerEl)
|
|
2903
2922
|
throw new Error(`Container #${this.containerId} not found`);
|
|
2904
|
-
this.containerEl.classList.add("fbn-ic-gallery"), this.swipeEngine = new
|
|
2923
|
+
this.containerEl.classList.add("fbn-ic-gallery"), this.swipeEngine = new mt(this.containerEl, {
|
|
2905
2924
|
onNext: () => this.navigateToNextImage(),
|
|
2906
2925
|
onPrev: () => this.navigateToPreviousImage(),
|
|
2907
2926
|
onDragOffset: (t) => this.zoomEngine.setDragOffset(t),
|
|
2908
2927
|
onDragEnd: (t) => {
|
|
2909
|
-
t ? this.zoomEngine.clearDragOffset(!1) : this.zoomEngine.clearDragOffset(!0,
|
|
2928
|
+
t ? this.zoomEngine.clearDragOffset(!1) : this.zoomEngine.clearDragOffset(!0, Ie);
|
|
2910
2929
|
}
|
|
2911
2930
|
}), this.setupUI(), this.setupEventListeners(), this.logDebug("ImageCloud initialized"), await this.loadImages();
|
|
2912
2931
|
} catch (t) {
|
|
@@ -3033,20 +3052,20 @@ class Le {
|
|
|
3033
3052
|
const d = {
|
|
3034
3053
|
x: parseFloat(c.dataset.startX),
|
|
3035
3054
|
y: parseFloat(c.dataset.startY)
|
|
3036
|
-
},
|
|
3055
|
+
}, f = {
|
|
3037
3056
|
x: parseFloat(c.dataset.endX),
|
|
3038
3057
|
y: parseFloat(c.dataset.endY)
|
|
3039
|
-
}, b = parseFloat(c.dataset.imageWidth), p = parseFloat(c.dataset.imageHeight), g = parseFloat(c.dataset.rotation),
|
|
3040
|
-
|
|
3058
|
+
}, b = parseFloat(c.dataset.imageWidth), p = parseFloat(c.dataset.imageHeight), g = parseFloat(c.dataset.rotation), m = parseFloat(c.dataset.scale), S = c.dataset.startRotation ? parseFloat(c.dataset.startRotation) : g, v = c.dataset.startScale ? parseFloat(c.dataset.startScale) : m, w = this.entryAnimationEngine.getTiming();
|
|
3059
|
+
te({
|
|
3041
3060
|
element: c,
|
|
3042
3061
|
startPosition: d,
|
|
3043
|
-
endPosition:
|
|
3062
|
+
endPosition: f,
|
|
3044
3063
|
pathConfig: this.entryAnimationEngine.getPathConfig(),
|
|
3045
3064
|
duration: w.duration,
|
|
3046
3065
|
imageWidth: b,
|
|
3047
3066
|
imageHeight: p,
|
|
3048
3067
|
rotation: g,
|
|
3049
|
-
scale:
|
|
3068
|
+
scale: m,
|
|
3050
3069
|
rotationConfig: this.entryAnimationEngine.getRotationConfig(),
|
|
3051
3070
|
startRotation: S,
|
|
3052
3071
|
scaleConfig: this.entryAnimationEngine.getScaleConfig(),
|
|
@@ -3103,8 +3122,8 @@ class Le {
|
|
|
3103
3122
|
this.fullConfig.config.debug?.centers && this.containerEl && (this.containerEl.querySelectorAll(".fbn-ic-debug-center").forEach((c) => c.remove()), s.forEach((c, u) => {
|
|
3104
3123
|
const l = document.createElement("div");
|
|
3105
3124
|
l.className = "fbn-ic-debug-center", l.style.position = "absolute", l.style.width = "12px", l.style.height = "12px", l.style.borderRadius = "50%", l.style.backgroundColor = "red", l.style.border = "2px solid yellow", l.style.zIndex = "9999", l.style.pointerEvents = "none";
|
|
3106
|
-
const d = c.x,
|
|
3107
|
-
l.style.left = `${d - 6}px`, l.style.top = `${
|
|
3125
|
+
const d = c.x, f = c.y;
|
|
3126
|
+
l.style.left = `${d - 6}px`, l.style.top = `${f - 6}px`, l.title = `Image ${u}: center (${Math.round(d)}, ${Math.round(f)})`, this.containerEl.appendChild(l);
|
|
3108
3127
|
})), t.forEach((c, u) => {
|
|
3109
3128
|
const l = document.createElement("img");
|
|
3110
3129
|
l.referrerPolicy = "no-referrer", l.classList.add("fbn-ic-image"), l.dataset.imageId = String(u);
|
|
@@ -3112,15 +3131,15 @@ class Le {
|
|
|
3112
3131
|
l.style.position = "absolute", l.style.width = "auto", l.style.height = `${e}px`, l.style.left = `${d.x}px`, l.style.top = `${d.y}px`, d.zIndex && (l.style.zIndex = String(d.zIndex)), tt(l, this.defaultStyles), et(l, this.defaultClassName), l.addEventListener("mouseenter", () => {
|
|
3113
3132
|
this.hoveredImage = { element: l, layout: d }, this.zoomEngine.isInvolved(l) || (tt(l, this.hoverStyles), et(l, this.hoverClassName));
|
|
3114
3133
|
}), l.addEventListener("mouseleave", () => {
|
|
3115
|
-
this.hoveredImage = null, this.zoomEngine.isInvolved(l) || (tt(l, this.defaultStyles),
|
|
3116
|
-
}), l.addEventListener("click", (
|
|
3117
|
-
|
|
3134
|
+
this.hoveredImage = null, this.zoomEngine.isInvolved(l) || (tt(l, this.defaultStyles), zt(l, this.hoverClassName), et(l, this.defaultClassName));
|
|
3135
|
+
}), l.addEventListener("click", (f) => {
|
|
3136
|
+
f.stopPropagation(), this.handleImageClick(l, d);
|
|
3118
3137
|
}), l.style.opacity = "0", l.style.transition = this.entryAnimationEngine.getTransitionCSS(), l.onload = () => {
|
|
3119
3138
|
if (o !== this.loadGeneration)
|
|
3120
3139
|
return;
|
|
3121
|
-
const
|
|
3140
|
+
const f = l.naturalWidth / l.naturalHeight, b = e * f;
|
|
3122
3141
|
l.style.width = `${b}px`;
|
|
3123
|
-
const p = { x: d.x, y: d.y }, g = { width: b, height: e },
|
|
3142
|
+
const p = { x: d.x, y: d.y }, g = { width: b, height: e }, m = this.entryAnimationEngine.calculateStartPosition(
|
|
3124
3143
|
p,
|
|
3125
3144
|
g,
|
|
3126
3145
|
i,
|
|
@@ -3132,7 +3151,7 @@ class Le {
|
|
|
3132
3151
|
b,
|
|
3133
3152
|
e
|
|
3134
3153
|
), E = this.entryAnimationEngine.buildStartTransform(
|
|
3135
|
-
|
|
3154
|
+
m,
|
|
3136
3155
|
p,
|
|
3137
3156
|
d.rotation,
|
|
3138
3157
|
d.scale,
|
|
@@ -3149,7 +3168,7 @@ class Le {
|
|
|
3149
3168
|
finalTransform: w,
|
|
3150
3169
|
renderedWidth: b,
|
|
3151
3170
|
renderedHeight: e
|
|
3152
|
-
}), l.style.transform = E, l.dataset.finalTransform = w, (this.entryAnimationEngine.requiresJSAnimation() || this.entryAnimationEngine.requiresJSRotation() || this.entryAnimationEngine.requiresJSScale() || S !== d.rotation || v !== d.scale) && (l.dataset.startX = String(
|
|
3171
|
+
}), l.style.transform = E, l.dataset.finalTransform = w, (this.entryAnimationEngine.requiresJSAnimation() || this.entryAnimationEngine.requiresJSRotation() || this.entryAnimationEngine.requiresJSScale() || S !== d.rotation || v !== d.scale) && (l.dataset.startX = String(m.x), l.dataset.startY = String(m.y), l.dataset.endX = String(p.x), l.dataset.endY = String(p.y), l.dataset.imageWidth = String(b), l.dataset.imageHeight = String(e), l.dataset.rotation = String(d.rotation), l.dataset.scale = String(d.scale), l.dataset.startRotation = String(S), l.dataset.startScale = String(v)), this.displayQueue.push(l);
|
|
3153
3172
|
}, l.onerror = () => r++, l.src = c;
|
|
3154
3173
|
});
|
|
3155
3174
|
}
|
|
@@ -3195,30 +3214,30 @@ class Le {
|
|
|
3195
3214
|
}
|
|
3196
3215
|
}
|
|
3197
3216
|
export {
|
|
3198
|
-
|
|
3217
|
+
Yt as AnimationEngine,
|
|
3199
3218
|
wt as BOUNCE_PRESETS,
|
|
3200
|
-
|
|
3201
|
-
|
|
3219
|
+
ue as ClusterPlacementLayout,
|
|
3220
|
+
Re as CompositeLoader,
|
|
3202
3221
|
y as DEFAULT_CONFIG,
|
|
3203
|
-
|
|
3222
|
+
Rt as DEFAULT_SHARED_LOADER_CONFIG,
|
|
3204
3223
|
xt as ELASTIC_PRESETS,
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
|
|
3208
|
-
|
|
3209
|
-
|
|
3210
|
-
|
|
3211
|
-
|
|
3212
|
-
|
|
3213
|
-
|
|
3214
|
-
|
|
3215
|
-
|
|
3216
|
-
|
|
3224
|
+
ne as EntryAnimationEngine,
|
|
3225
|
+
Le as FUNCTIONAL_CSS,
|
|
3226
|
+
Te as GoogleDriveLoader,
|
|
3227
|
+
re as GridPlacementLayout,
|
|
3228
|
+
Fe as ImageCloud,
|
|
3229
|
+
Me as ImageFilter,
|
|
3230
|
+
Fe as ImageGallery,
|
|
3231
|
+
fe as LayoutEngine,
|
|
3232
|
+
se as RadialPlacementLayout,
|
|
3233
|
+
oe as RandomPlacementLayout,
|
|
3234
|
+
he as SpiralPlacementLayout,
|
|
3235
|
+
Ce as StaticImageLoader,
|
|
3217
3236
|
St as WAVE_PATH_PRESETS,
|
|
3218
|
-
|
|
3219
|
-
|
|
3220
|
-
|
|
3221
|
-
|
|
3222
|
-
|
|
3237
|
+
ge as WavePlacementLayout,
|
|
3238
|
+
ve as ZoomEngine,
|
|
3239
|
+
te as animatePath,
|
|
3240
|
+
ze as injectFunctionalStyles,
|
|
3241
|
+
ee as requiresJSAnimation
|
|
3223
3242
|
};
|
|
3224
3243
|
//# sourceMappingURL=image-cloud.js.map
|