@frybynite/image-cloud 0.9.0 → 0.9.2
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 +402 -425
- package/dist/image-cloud-auto-init.js.map +1 -1
- package/dist/image-cloud.js +10 -32
- 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 +9 -14
- package/dist/react.d.ts +9 -14
- package/dist/react.js +9 -32
- package/dist/react.js.map +1 -1
- package/dist/vue.d.ts +9 -14
- package/dist/vue.js +9 -32
- package/dist/vue.js.map +1 -1
- package/dist/web-component.d.ts +9 -14
- package/dist/web-component.js +45 -68
- package/dist/web-component.js.map +1 -1
- package/package.json +1 -1
package/dist/web-component.d.ts
CHANGED
|
@@ -11,7 +11,6 @@ export declare interface AnimationConfig {
|
|
|
11
11
|
duration: number;
|
|
12
12
|
easing: AnimationEasingConfig;
|
|
13
13
|
queue: AnimationQueueConfig;
|
|
14
|
-
performance?: AnimationPerformanceConfig;
|
|
15
14
|
entry?: EntryAnimationConfig;
|
|
16
15
|
idle?: IdleAnimationConfig;
|
|
17
16
|
}
|
|
@@ -123,15 +122,9 @@ declare interface AnimationParams {
|
|
|
123
122
|
easing: string;
|
|
124
123
|
}
|
|
125
124
|
|
|
126
|
-
declare interface AnimationPerformanceConfig {
|
|
127
|
-
useGPU?: boolean;
|
|
128
|
-
reduceMotion?: boolean;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
125
|
declare interface AnimationQueueConfig {
|
|
132
126
|
enabled: boolean;
|
|
133
127
|
interval: number;
|
|
134
|
-
maxConcurrent?: number;
|
|
135
128
|
}
|
|
136
129
|
|
|
137
130
|
/**
|
|
@@ -563,11 +556,6 @@ export declare const FUNCTIONAL_CSS = "\n.fbn-ic-gallery {\n position: relative
|
|
|
563
556
|
|
|
564
557
|
export declare type GalleryConfig = ImageCloudConfig;
|
|
565
558
|
|
|
566
|
-
declare interface GestureInteractionConfig {
|
|
567
|
-
pinchToZoom?: boolean;
|
|
568
|
-
doubleTapToFocus?: boolean;
|
|
569
|
-
}
|
|
570
|
-
|
|
571
559
|
export declare interface GoogleDriveFilesSource {
|
|
572
560
|
files: string[];
|
|
573
561
|
}
|
|
@@ -722,6 +710,14 @@ declare interface HoneycombAlgorithmConfig {
|
|
|
722
710
|
spacing?: number;
|
|
723
711
|
}
|
|
724
712
|
|
|
713
|
+
export declare class HoneycombPlacementLayout implements PlacementLayout {
|
|
714
|
+
private config;
|
|
715
|
+
constructor(config: LayoutConfig, _imageConfig?: ImageConfig);
|
|
716
|
+
generate(imageCount: number, containerBounds: ContainerBounds, options?: Partial<LayoutConfig> & {
|
|
717
|
+
fixedHeight?: number;
|
|
718
|
+
}): ImageLayout[];
|
|
719
|
+
}
|
|
720
|
+
|
|
725
721
|
declare interface IdleAnimationConfig {
|
|
726
722
|
type: IdleAnimationType;
|
|
727
723
|
wiggle?: IdleWiggleConfig;
|
|
@@ -1057,7 +1053,7 @@ export declare function injectFunctionalStyles(): void;
|
|
|
1057
1053
|
declare interface InteractionConfig {
|
|
1058
1054
|
focus: FocusInteractionConfig;
|
|
1059
1055
|
navigation?: NavigationInteractionConfig;
|
|
1060
|
-
|
|
1056
|
+
dragging?: boolean;
|
|
1061
1057
|
}
|
|
1062
1058
|
|
|
1063
1059
|
export declare type LayoutAlgorithm = 'random' | 'radial' | 'grid' | 'spiral' | 'cluster' | 'wave' | 'honeycomb';
|
|
@@ -1153,7 +1149,6 @@ declare interface LayoutEngineConfig {
|
|
|
1153
1149
|
|
|
1154
1150
|
declare interface LayoutSpacingConfig {
|
|
1155
1151
|
padding: number;
|
|
1156
|
-
minGap: number;
|
|
1157
1152
|
}
|
|
1158
1153
|
|
|
1159
1154
|
export declare type LoaderEntry = StaticLoaderEntry | GoogleDriveLoaderEntry;
|
package/dist/web-component.js
CHANGED
|
@@ -4,11 +4,11 @@ const mt = Object.freeze({
|
|
|
4
4
|
md: "0 4px 16px rgba(0,0,0,0.4)",
|
|
5
5
|
lg: "0 8px 32px rgba(0,0,0,0.5)",
|
|
6
6
|
glow: "0 0 30px rgba(255,255,255,0.6)"
|
|
7
|
-
}),
|
|
7
|
+
}), At = Object.freeze({
|
|
8
8
|
energetic: Object.freeze({ overshoot: 0.25, bounces: 2, decayRatio: 0.5 }),
|
|
9
9
|
playful: Object.freeze({ overshoot: 0.15, bounces: 1, decayRatio: 0.5 }),
|
|
10
10
|
subtle: Object.freeze({ overshoot: 0.08, bounces: 1, decayRatio: 0.5 })
|
|
11
|
-
}),
|
|
11
|
+
}), Tt = Object.freeze({
|
|
12
12
|
gentle: Object.freeze({ stiffness: 150, damping: 30, mass: 1, oscillations: 2 }),
|
|
13
13
|
bouncy: Object.freeze({ stiffness: 300, damping: 15, mass: 1, oscillations: 4 }),
|
|
14
14
|
wobbly: Object.freeze({ stiffness: 180, damping: 12, mass: 1.5, oscillations: 5 }),
|
|
@@ -115,10 +115,8 @@ const mt = Object.freeze({
|
|
|
115
115
|
densityFactor: 1,
|
|
116
116
|
// Default density
|
|
117
117
|
spacing: Object.freeze({
|
|
118
|
-
padding: 50
|
|
118
|
+
padding: 50
|
|
119
119
|
// padding from viewport edges
|
|
120
|
-
minGap: 20
|
|
121
|
-
// minimum spacing between images
|
|
122
120
|
})
|
|
123
121
|
}),
|
|
124
122
|
// Pattern-based animation configuration
|
|
@@ -136,16 +134,8 @@ const mt = Object.freeze({
|
|
|
136
134
|
queue: Object.freeze({
|
|
137
135
|
enabled: !0,
|
|
138
136
|
// When false, all images display simultaneously
|
|
139
|
-
interval: 150
|
|
137
|
+
interval: 150
|
|
140
138
|
// ms between processing queue items (when enabled)
|
|
141
|
-
maxConcurrent: void 0
|
|
142
|
-
// STUB: Not implemented yet
|
|
143
|
-
}),
|
|
144
|
-
performance: Object.freeze({
|
|
145
|
-
useGPU: void 0,
|
|
146
|
-
// STUB: Not implemented yet
|
|
147
|
-
reduceMotion: void 0
|
|
148
|
-
// STUB: Not implemented yet
|
|
149
139
|
}),
|
|
150
140
|
entry: Object.freeze({
|
|
151
141
|
start: Object.freeze({
|
|
@@ -181,19 +171,12 @@ const mt = Object.freeze({
|
|
|
181
171
|
// Use default animation duration
|
|
182
172
|
}),
|
|
183
173
|
navigation: Object.freeze({
|
|
184
|
-
keyboard:
|
|
185
|
-
|
|
186
|
-
swipe: void 0,
|
|
187
|
-
// STUB: Not implemented yet
|
|
174
|
+
keyboard: !0,
|
|
175
|
+
swipe: !0,
|
|
188
176
|
mouseWheel: void 0
|
|
189
177
|
// STUB: Not implemented yet
|
|
190
178
|
}),
|
|
191
|
-
|
|
192
|
-
pinchToZoom: void 0,
|
|
193
|
-
// STUB: Not implemented yet
|
|
194
|
-
doubleTapToFocus: void 0
|
|
195
|
-
// STUB: Not implemented yet
|
|
196
|
-
})
|
|
179
|
+
dragging: !0
|
|
197
180
|
}),
|
|
198
181
|
// Pattern-based rendering configuration
|
|
199
182
|
rendering: Object.freeze({
|
|
@@ -327,9 +310,6 @@ function te(o = {}) {
|
|
|
327
310
|
}), o.animation.queue && (s.animation.queue = {
|
|
328
311
|
...x.animation.queue,
|
|
329
312
|
...o.animation.queue
|
|
330
|
-
}), o.animation.performance && (s.animation.performance = {
|
|
331
|
-
...x.animation.performance,
|
|
332
|
-
...o.animation.performance
|
|
333
313
|
}), o.animation.entry && (s.animation.entry = {
|
|
334
314
|
...x.animation.entry,
|
|
335
315
|
...o.animation.entry,
|
|
@@ -354,9 +334,6 @@ function te(o = {}) {
|
|
|
354
334
|
}), o.interaction.navigation && (s.interaction.navigation = {
|
|
355
335
|
...x.interaction.navigation,
|
|
356
336
|
...o.interaction.navigation
|
|
357
|
-
}), o.interaction.gestures && (s.interaction.gestures = {
|
|
358
|
-
...x.interaction.gestures,
|
|
359
|
-
...o.interaction.gestures
|
|
360
337
|
})), o.rendering && (s.rendering = {
|
|
361
338
|
...x.rendering,
|
|
362
339
|
...o.rendering
|
|
@@ -383,10 +360,10 @@ function te(o = {}) {
|
|
|
383
360
|
return s;
|
|
384
361
|
}
|
|
385
362
|
function ee(o, t) {
|
|
386
|
-
return { ...o ?
|
|
363
|
+
return { ...o ? At[o] : At.playful, ...t };
|
|
387
364
|
}
|
|
388
365
|
function ie(o, t) {
|
|
389
|
-
return { ...o ?
|
|
366
|
+
return { ...o ? Tt[o] : Tt.gentle, ...t };
|
|
390
367
|
}
|
|
391
368
|
function ne(o, t) {
|
|
392
369
|
return { ...o ? Ct[o] : Ct.gentle, ...t };
|
|
@@ -657,7 +634,7 @@ function ue(o) {
|
|
|
657
634
|
}
|
|
658
635
|
const O = performance.now(), L = -r / 2, P = -s / 2;
|
|
659
636
|
function z(H) {
|
|
660
|
-
const k = H - O,
|
|
637
|
+
const k = H - O, A = Math.min(k / a, 1);
|
|
661
638
|
let D;
|
|
662
639
|
switch (p) {
|
|
663
640
|
case "bounce": {
|
|
@@ -665,7 +642,7 @@ function ue(o) {
|
|
|
665
642
|
n.bouncePreset,
|
|
666
643
|
n.bounce
|
|
667
644
|
);
|
|
668
|
-
D = se(
|
|
645
|
+
D = se(A, i, e, N);
|
|
669
646
|
break;
|
|
670
647
|
}
|
|
671
648
|
case "elastic": {
|
|
@@ -673,7 +650,7 @@ function ue(o) {
|
|
|
673
650
|
n.elasticPreset,
|
|
674
651
|
n.elastic
|
|
675
652
|
);
|
|
676
|
-
D = re(
|
|
653
|
+
D = re(A, i, e, N);
|
|
677
654
|
break;
|
|
678
655
|
}
|
|
679
656
|
case "wave": {
|
|
@@ -681,20 +658,20 @@ function ue(o) {
|
|
|
681
658
|
n.wavePreset,
|
|
682
659
|
n.wave
|
|
683
660
|
);
|
|
684
|
-
D = ce(
|
|
661
|
+
D = ce(A, i, e, N);
|
|
685
662
|
break;
|
|
686
663
|
}
|
|
687
664
|
default:
|
|
688
665
|
D = {
|
|
689
|
-
x: V(i.x, e.x,
|
|
690
|
-
y: V(i.y, e.y,
|
|
666
|
+
x: V(i.x, e.x, A),
|
|
667
|
+
y: V(i.y, e.y, A)
|
|
691
668
|
};
|
|
692
669
|
}
|
|
693
670
|
const G = D.x - e.x, U = D.y - e.y;
|
|
694
671
|
let M;
|
|
695
|
-
m ? M = he(
|
|
696
|
-
let
|
|
697
|
-
I ?
|
|
672
|
+
m ? M = he(A, c, y) : g ? M = V(d, c, A) : M = c;
|
|
673
|
+
let T;
|
|
674
|
+
I ? T = de(A, l, E) : v ? T = V(b, l, A) : T = l, t.style.transform = `translate(${L}px, ${P}px) translate(${G}px, ${U}px) rotate(${M}deg) scale(${T})`, A < 1 ? requestAnimationFrame(z) : (t.style.transform = `translate(${L}px, ${P}px) rotate(${c}deg) scale(${l})`, u && u());
|
|
698
675
|
}
|
|
699
676
|
requestAnimationFrame(z);
|
|
700
677
|
}
|
|
@@ -1311,15 +1288,15 @@ class ye {
|
|
|
1311
1288
|
}
|
|
1312
1289
|
let E = 1, R = 1;
|
|
1313
1290
|
for (; E < t; ) {
|
|
1314
|
-
const O = R / w, L = b > 0 ? 1 - O * b * 0.5 : 1, P = Math.max(g * 0.8, I / w * 1.5 / p.tightness), z = R * P, H = z * 1.5, k = Math.PI * (3 * (H + z) - Math.sqrt((3 * H + z) * (H + 3 * z))),
|
|
1291
|
+
const O = R / w, L = b > 0 ? 1 - O * b * 0.5 : 1, P = Math.max(g * 0.8, I / w * 1.5 / p.tightness), z = R * P, H = z * 1.5, k = Math.PI * (3 * (H + z) - Math.sqrt((3 * H + z) * (H + 3 * z))), A = this.estimateWidth(g), D = Math.floor(k / (A * 0.7));
|
|
1315
1292
|
if (D === 0) {
|
|
1316
1293
|
R++;
|
|
1317
1294
|
continue;
|
|
1318
1295
|
}
|
|
1319
1296
|
const G = 2 * Math.PI / D, U = R * (20 * Math.PI / 180);
|
|
1320
1297
|
for (let M = 0; M < D && E < t; M++) {
|
|
1321
|
-
const
|
|
1322
|
-
let _ = m + Math.cos(
|
|
1298
|
+
const T = M * G + U, N = f ? this.random(h, d) : 1, B = L * N, C = g * B;
|
|
1299
|
+
let _ = m + Math.cos(T) * H, F = y + Math.sin(T) * z;
|
|
1323
1300
|
const $ = C * 1.5 / 2, j = C / 2;
|
|
1324
1301
|
_ - $ < v ? _ = v + $ : _ + $ > a - v && (_ = a - v - $), F - j < v ? F = v + j : F + j > r - v && (F = r - v - j);
|
|
1325
1302
|
const Y = c === "random" ? this.random(l, u) : 0;
|
|
@@ -1403,7 +1380,7 @@ class we {
|
|
|
1403
1380
|
p,
|
|
1404
1381
|
l,
|
|
1405
1382
|
s
|
|
1406
|
-
), y = s.stagger === "row", w = s.stagger === "column", v = y ? g + 0.5 : g, I = w ? m + 0.5 : m, E = (b - s.gap * (g - 1)) / v, R = (p - s.gap * (m - 1)) / I, O = y ? E / 2 : 0, L = w ? R / 2 : 0, P = 1 + s.overlap, z = Math.min(E, R) * P, H = e.fixedHeight ? Math.min(e.fixedHeight, z) : z, k = g * E + (g - 1) * s.gap + O,
|
|
1383
|
+
), y = s.stagger === "row", w = s.stagger === "column", v = y ? g + 0.5 : g, I = w ? m + 0.5 : m, E = (b - s.gap * (g - 1)) / v, R = (p - s.gap * (m - 1)) / I, O = y ? E / 2 : 0, L = w ? R / 2 : 0, P = 1 + s.overlap, z = Math.min(E, R) * P, H = e.fixedHeight ? Math.min(e.fixedHeight, z) : z, k = g * E + (g - 1) * s.gap + O, A = m * R + (m - 1) * s.gap + L, D = c + (b - k) / 2, G = c + (p - A) / 2, U = g * m, M = s.columns !== "auto" && s.rows !== "auto", T = M && t > U;
|
|
1407
1384
|
typeof window < "u" && (window.__gridOverflowDebug = {
|
|
1408
1385
|
gridConfigColumns: s.columns,
|
|
1409
1386
|
gridConfigRows: s.rows,
|
|
@@ -1412,12 +1389,12 @@ class we {
|
|
|
1412
1389
|
cellCount: U,
|
|
1413
1390
|
hasFixedGrid: M,
|
|
1414
1391
|
imageCount: t,
|
|
1415
|
-
isOverflowMode:
|
|
1392
|
+
isOverflowMode: T
|
|
1416
1393
|
});
|
|
1417
|
-
const N =
|
|
1394
|
+
const N = T ? new Array(U).fill(0) : [], B = Math.min(E, R) * s.overflowOffset;
|
|
1418
1395
|
for (let C = 0; C < t; C++) {
|
|
1419
1396
|
let _, F, X = 0;
|
|
1420
|
-
if (
|
|
1397
|
+
if (T && C >= U) {
|
|
1421
1398
|
const q = C - U, W = q % U;
|
|
1422
1399
|
X = Math.floor(q / U) + 1, N[W]++, s.fillDirection === "row" ? (_ = W % g, F = Math.floor(W / g)) : (F = W % m, _ = Math.floor(W / m));
|
|
1423
1400
|
} else
|
|
@@ -1432,7 +1409,7 @@ class we {
|
|
|
1432
1409
|
$ += this.random(-q, q), j += this.random(-W, W);
|
|
1433
1410
|
}
|
|
1434
1411
|
let Y = $, J = j;
|
|
1435
|
-
if (!
|
|
1412
|
+
if (!T && s.fillDirection === "row") {
|
|
1436
1413
|
const q = t % g || g;
|
|
1437
1414
|
if (F === Math.floor((t - 1) / g) && q < g) {
|
|
1438
1415
|
const Rt = q * E + (q - 1) * s.gap;
|
|
@@ -1448,7 +1425,7 @@ class we {
|
|
|
1448
1425
|
s.jitter > 0 ? dt = this.random(q * s.jitter, W * s.jitter) : dt = this.random(q, W);
|
|
1449
1426
|
}
|
|
1450
1427
|
let ut;
|
|
1451
|
-
|
|
1428
|
+
T && X > 0 ? ut = 50 - X : ut = T ? 100 + C : C + 1, n.push({
|
|
1452
1429
|
id: C,
|
|
1453
1430
|
x: Y,
|
|
1454
1431
|
y: J,
|
|
@@ -1519,7 +1496,7 @@ class Se {
|
|
|
1519
1496
|
const $ = I * 0.3 * s.tightness;
|
|
1520
1497
|
E = $ * v + s.startAngle, R = this.calculateLogarithmicRadius($, t, w, s.tightness);
|
|
1521
1498
|
}
|
|
1522
|
-
const O = m + Math.cos(E) * R, L = y + Math.sin(E) * R, P = R / w, z = g > 0 ? 1 - P * g * 0.5 : 1, H = p ? this.random(f, b) : 1, k = z * H,
|
|
1499
|
+
const O = m + Math.cos(E) * R, L = y + Math.sin(E) * R, P = R / w, z = g > 0 ? 1 - P * g * 0.5 : 1, H = p ? this.random(f, b) : 1, k = z * H, A = l * k, G = A * 1.5 / 2, U = A / 2, M = c + G, T = a - c - G, N = c + U, B = r - c - U, C = Math.max(M, Math.min(O, T)), _ = Math.max(N, Math.min(L, B));
|
|
1523
1500
|
let F = 0;
|
|
1524
1501
|
if (u === "random") {
|
|
1525
1502
|
const $ = E * 180 / Math.PI % 360, j = this.random(h, d);
|
|
@@ -1532,7 +1509,7 @@ class Se {
|
|
|
1532
1509
|
y: _,
|
|
1533
1510
|
rotation: F,
|
|
1534
1511
|
scale: k,
|
|
1535
|
-
baseSize:
|
|
1512
|
+
baseSize: A,
|
|
1536
1513
|
zIndex: X
|
|
1537
1514
|
});
|
|
1538
1515
|
}
|
|
@@ -1634,10 +1611,10 @@ class Re {
|
|
|
1634
1611
|
}
|
|
1635
1612
|
const P = 1 + s.overlap * 0.5, z = 1 + s.overlap * 0.3;
|
|
1636
1613
|
O /= P, L /= P;
|
|
1637
|
-
const H = p ? this.random(f, b) : 1, k = z * H,
|
|
1614
|
+
const H = p ? this.random(f, b) : 1, k = z * H, A = l * k;
|
|
1638
1615
|
let D = I.x + O, G = I.y + L;
|
|
1639
|
-
const M =
|
|
1640
|
-
D = Math.max(c + M, Math.min(D, a - c - M)), G = Math.max(c +
|
|
1616
|
+
const M = A * 1.5 / 2, T = A / 2;
|
|
1617
|
+
D = Math.max(c + M, Math.min(D, a - c - M)), G = Math.max(c + T, Math.min(G, r - c - T));
|
|
1641
1618
|
const N = u === "random" ? this.random(h, d) : 0, C = Math.sqrt(O * O + L * L) / I.spread, _ = Math.round((1 - C) * 50) + 1;
|
|
1642
1619
|
n.push({
|
|
1643
1620
|
id: w,
|
|
@@ -1645,7 +1622,7 @@ class Re {
|
|
|
1645
1622
|
y: G,
|
|
1646
1623
|
rotation: N,
|
|
1647
1624
|
scale: k,
|
|
1648
|
-
baseSize:
|
|
1625
|
+
baseSize: A,
|
|
1649
1626
|
zIndex: _
|
|
1650
1627
|
}), w++;
|
|
1651
1628
|
}
|
|
@@ -1712,7 +1689,7 @@ class Re {
|
|
|
1712
1689
|
return Math.random() * (i - t) + t;
|
|
1713
1690
|
}
|
|
1714
1691
|
}
|
|
1715
|
-
class
|
|
1692
|
+
class Ae {
|
|
1716
1693
|
constructor(t, i = {}) {
|
|
1717
1694
|
this.config = t, this.imageConfig = i;
|
|
1718
1695
|
}
|
|
@@ -1727,12 +1704,12 @@ class Te {
|
|
|
1727
1704
|
const n = [], { width: a, height: r } = i, s = e.fixedHeight ?? 200, c = this.config.spacing.padding ?? 50, l = this.imageConfig.rotation?.mode ?? "none", u = this.imageConfig.rotation?.range?.min ?? -15, h = 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 = e.fixedHeight ?? s, g = {
|
|
1728
1705
|
...Nt,
|
|
1729
1706
|
...this.config.wave
|
|
1730
|
-
}, { rows: m, amplitude: y, frequency: w, phaseShift: v, synchronization: I } = g, E = Math.ceil(t / m), L = p * 1.5 / 2, P = c + L, z = a - c - L, H = z - P, k = E > 1 ? H / (E - 1) : 0,
|
|
1707
|
+
}, { rows: m, amplitude: y, frequency: w, phaseShift: v, synchronization: I } = g, E = Math.ceil(t / m), L = p * 1.5 / 2, P = c + L, z = a - c - L, H = z - P, k = E > 1 ? H / (E - 1) : 0, A = c + y + p / 2, D = r - c - y - p / 2, G = D - A, U = m > 1 ? G / (m - 1) : 0;
|
|
1731
1708
|
let M = 0;
|
|
1732
|
-
for (let
|
|
1733
|
-
const N = m === 1 ? (
|
|
1709
|
+
for (let T = 0; T < m && M < t; T++) {
|
|
1710
|
+
const N = m === 1 ? (A + D) / 2 : A + T * U;
|
|
1734
1711
|
let B = 0;
|
|
1735
|
-
I === "offset" ? B =
|
|
1712
|
+
I === "offset" ? B = T * v : I === "alternating" && (B = T * Math.PI);
|
|
1736
1713
|
for (let C = 0; C < E && M < t; C++) {
|
|
1737
1714
|
const _ = E === 1 ? (P + z) / 2 : P + C * k, F = this.calculateWaveY(_, a, y, w, B), X = _, $ = N + F, j = b ? this.random(d, f) : 1, Y = p * j;
|
|
1738
1715
|
let J = 0;
|
|
@@ -1802,10 +1779,10 @@ const xt = 100, Q = 100 / Math.sqrt(3), St = [
|
|
|
1802
1779
|
// lower-left
|
|
1803
1780
|
[0, 50]
|
|
1804
1781
|
// left
|
|
1805
|
-
],
|
|
1782
|
+
], Te = St[1][0] / xt, Ce = St[2][1] / xt;
|
|
1806
1783
|
function Le(o) {
|
|
1807
1784
|
return {
|
|
1808
|
-
colStep:
|
|
1785
|
+
colStep: Te * o,
|
|
1809
1786
|
rowOffset: Ce * o
|
|
1810
1787
|
};
|
|
1811
1788
|
}
|
|
@@ -1885,7 +1862,7 @@ class De {
|
|
|
1885
1862
|
case "cluster":
|
|
1886
1863
|
return new Re(this.config, this.imageConfig);
|
|
1887
1864
|
case "wave":
|
|
1888
|
-
return new
|
|
1865
|
+
return new Ae(this.config, this.imageConfig);
|
|
1889
1866
|
case "honeycomb":
|
|
1890
1867
|
return new ze(this.config, this.imageConfig);
|
|
1891
1868
|
default:
|
|
@@ -3329,14 +3306,14 @@ class ei {
|
|
|
3329
3306
|
this.containerEl = this.containerRef;
|
|
3330
3307
|
else if (this.containerEl = document.getElementById(this.containerId), !this.containerEl)
|
|
3331
3308
|
throw new Error(`Container #${this.containerId} not found`);
|
|
3332
|
-
this.containerEl.classList.add("fbn-ic-gallery"), this.swipeEngine = new bt(this.containerEl, {
|
|
3309
|
+
this.containerEl.classList.add("fbn-ic-gallery"), this.containerEl.setAttribute("tabindex", "0"), this.fullConfig.interaction.navigation?.swipe !== !1 && (this.swipeEngine = new bt(this.containerEl, {
|
|
3333
3310
|
onNext: () => this.navigateToNextImage(),
|
|
3334
3311
|
onPrev: () => this.navigateToPreviousImage(),
|
|
3335
3312
|
onDragOffset: (t) => this.zoomEngine.setDragOffset(t),
|
|
3336
3313
|
onDragEnd: (t) => {
|
|
3337
3314
|
t ? this.zoomEngine.clearDragOffset(!1) : this.zoomEngine.clearDragOffset(!0, Xe);
|
|
3338
3315
|
}
|
|
3339
|
-
}), this.setupUI(), this.setupEventListeners(), this.logDebug("ImageCloud initialized"), await this.loadImages();
|
|
3316
|
+
})), this.setupUI(), this.setupEventListeners(), this.logDebug("ImageCloud initialized"), await this.loadImages();
|
|
3340
3317
|
} catch (t) {
|
|
3341
3318
|
console.error("Gallery initialization failed:", t), this.errorEl && t instanceof Error && this.showError("Gallery failed to initialize: " + t.message);
|
|
3342
3319
|
}
|
|
@@ -3365,7 +3342,7 @@ class ei {
|
|
|
3365
3342
|
return t.className = "fbn-ic-counter fbn-ic-hidden", this.containerEl.appendChild(t), t;
|
|
3366
3343
|
}
|
|
3367
3344
|
setupEventListeners() {
|
|
3368
|
-
|
|
3345
|
+
this.fullConfig.interaction.navigation?.keyboard !== !1 && this.containerEl.addEventListener("keydown", (t) => {
|
|
3369
3346
|
t.key === "Escape" ? (this.zoomEngine.unfocusImage(), this.currentFocusIndex = null, this.swipeEngine?.disable(), this.hideCounter()) : t.key === "ArrowRight" ? this.navigateToNextImage() : t.key === "ArrowLeft" ? this.navigateToPreviousImage() : (t.key === "Enter" || t.key === " ") && this.hoveredImage && (this.handleImageClick(this.hoveredImage.element, this.hoveredImage.layout), t.preventDefault());
|
|
3370
3347
|
}), document.addEventListener("click", (t) => {
|
|
3371
3348
|
this.swipeEngine?.hadRecentTouch() || t.target.closest(".fbn-ic-image") || (this.zoomEngine.unfocusImage(), this.currentFocusIndex = null, this.swipeEngine?.disable(), this.hideCounter());
|
|
@@ -3539,7 +3516,7 @@ class ei {
|
|
|
3539
3516
|
h.style.left = `${d - 6}px`, h.style.top = `${f - 6}px`, h.title = `Image ${u}: center (${Math.round(d)}, ${Math.round(f)})`, this.containerEl.appendChild(h);
|
|
3540
3517
|
})), t.forEach((l, u) => {
|
|
3541
3518
|
const h = document.createElement("img");
|
|
3542
|
-
h.referrerPolicy = "no-referrer", h.classList.add("fbn-ic-image"), h.dataset.imageId = String(u), h.dataset.createdFlag = "true";
|
|
3519
|
+
h.referrerPolicy = "no-referrer", h.classList.add("fbn-ic-image"), this.fullConfig.interaction.dragging === !1 && (h.draggable = !1), h.dataset.imageId = String(u), h.dataset.createdFlag = "true";
|
|
3543
3520
|
const d = a[u];
|
|
3544
3521
|
h.style.position = "absolute", h.style.width = "auto", h.style.height = `${i}px`, h.style.left = `${d.x}px`, h.style.top = `${d.y}px`, d.zIndex && (h.style.zIndex = String(d.zIndex)), st(h, this.defaultClassName), h.addEventListener("mouseenter", () => {
|
|
3545
3522
|
if (this.hoveredImage = { element: h, layout: d }, !this.zoomEngine.isInvolved(h)) {
|