react-spring-carousel 3.0.0-beta090.3 → 3.0.0-beta090.30

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/index.es2.js DELETED
@@ -1,678 +0,0 @@
1
- import { u as De, a as qe, j as P } from "./useThumbsModule-4e4b7969.js";
2
- import { useSpring as Be, config as Q, useIsomorphicLayoutEffect as He } from "@react-spring/web";
3
- import { useDrag as Oe } from "@use-gesture/react";
4
- import { useRef as m, useEffect as N, createContext as ze, useCallback as O, useContext as Xe } from "react";
5
- import Ye from "resize-observer-polyfill";
6
- import $ from "screenfull";
7
- function Je({
8
- mainCarouselWrapperRef: n,
9
- onFullScreenChange: h,
10
- handleResize: W
11
- }) {
12
- const U = m(!1);
13
- N(() => {
14
- function v() {
15
- document.fullscreenElement && (z(!0), h(!0), W && W()), document.fullscreenElement || (z(!1), h(!1), W && W());
16
- }
17
- if ($.isEnabled)
18
- return $.on("change", v), () => {
19
- $.isEnabled && $.off("change", v);
20
- };
21
- }, []);
22
- function z(v) {
23
- U.current = v;
24
- }
25
- function I() {
26
- return U.current;
27
- }
28
- function b(v) {
29
- $.isEnabled && $.request(v || n.current);
30
- }
31
- function u() {
32
- $.isEnabled && $.exit();
33
- }
34
- return {
35
- enterFullscreen: b,
36
- exitFullscreen: u,
37
- getIsFullscreen: I
38
- };
39
- }
40
- function et({
41
- items: n,
42
- init: h = !0,
43
- withThumbs: W,
44
- thumbsSlideAxis: U = "x",
45
- itemsPerSlide: z = 1,
46
- slideType: I = "fixed",
47
- gutter: b = 0,
48
- withLoop: u = !1,
49
- startEndGutter: v = 0,
50
- carouselSlideAxis: o = "x",
51
- disableGestures: de = !1,
52
- draggingSlideTreshold: te,
53
- slideWhenThresholdIsReached: ge = !1,
54
- freeScroll: c,
55
- enableFreeScrollDrag: xe,
56
- initialStartingPosition: Z,
57
- prepareThumbsData: ye,
58
- initialActiveItem: F = 0,
59
- animateWhenActiveItemChange: Ie = !0,
60
- getControllerRef: re
61
- }) {
62
- const M = z > n.length ? n.length : z, X = m(!1), _ = m(te ?? 0), k = m("initial"), ne = m("initial"), ce = m("initial"), p = m(F), f = m(F === 0), l = m(I === "fixed" && F === n.length - 1), a = m(null), x = m(null), ue = m(0), oe = m(0), d = m(0), Te = m(u), be = m(I), Me = m(c), R = m(!1), G = O(() => u ? [
63
- ...n.map((e) => ({
64
- ...e,
65
- id: `prev-repeated-item-${e.id}`
66
- })),
67
- ...n,
68
- ...n.map((e) => ({
69
- ...e,
70
- id: `next-repeated-item-${e.id}`
71
- }))
72
- ] : [...n], [n, u])(), [E, y] = Be(
73
- () => ({
74
- val: 0,
75
- pause: !h,
76
- onChange: ({ value: e }) => {
77
- c && a.current ? (o === "x" ? a.current.scrollLeft = Math.abs(e.val) : a.current.scrollTop = Math.abs(e.val), ee()) : x.current && (o === "x" ? x.current.style.transform = `translate3d(${e.val}px, 0px,0px)` : x.current.style.transform = `translate3d(0px,${e.val}px,0px)`);
78
- }
79
- }),
80
- [c]
81
- ), { emitEvent: L, useListenToCustomEvent: A } = De(), { thumbsFragment: Ce, handleScroll: Fe } = qe({
82
- withThumbs: !!W,
83
- thumbsSlideAxis: U,
84
- prepareThumbsData: ye,
85
- items: n,
86
- renderThumbFnProps: {
87
- getIsActiveItem: fe,
88
- getIsPrevItem: se,
89
- useListenToCustomEvent: A,
90
- getIsNextItem: le
91
- }
92
- }), { enterFullscreen: me, exitFullscreen: ve, getIsFullscreen: he } = Je({
93
- mainCarouselWrapperRef: a,
94
- handleResize: () => S(),
95
- onFullScreenChange: (e) => {
96
- L({
97
- eventName: "onFullscreenChange",
98
- isFullscreen: e
99
- });
100
- }
101
- });
102
- function ke(e) {
103
- return I === "fixed" && !c ? {
104
- marginRight: `${e ? 0 : b}px`,
105
- flex: `1 0 calc(100% / ${M} - ${b * (M - 1) / M}px)`
106
- } : {
107
- marginRight: `${e ? 0 : b}px`
108
- };
109
- }
110
- const s = O(() => {
111
- var r;
112
- const e = (r = a.current) == null ? void 0 : r.querySelector(".use-spring-carousel-item");
113
- if (!e)
114
- throw Error("No carousel items available!");
115
- return e.getBoundingClientRect()[o === "x" ? "width" : "height"] + b;
116
- }, [o, b]);
117
- function j({ from: e, to: r, nextActiveItem: t, immediate: i = !1, slideMode: C }) {
118
- ne.current = C, typeof t == "number" && (c || (p.current = t), L({
119
- eventName: "onSlideStartChange",
120
- slideActionType: k.current,
121
- slideMode: ne.current,
122
- nextItem: {
123
- startReached: f.current,
124
- endReached: l.current,
125
- index: c ? -1 : p.current,
126
- id: c ? "" : n[p.current].id
127
- }
128
- })), d.current = r, y.start({
129
- immediate: i,
130
- from: {
131
- val: e
132
- },
133
- to: {
134
- val: r
135
- },
136
- config: {
137
- ...Q.default,
138
- velocity: E.val.velocity
139
- },
140
- onRest(B) {
141
- !i && B.finished && L({
142
- eventName: "onSlideChange",
143
- slideActionType: k.current,
144
- slideMode: ne.current,
145
- currentItem: {
146
- startReached: f.current,
147
- endReached: l.current,
148
- index: c ? -1 : p.current,
149
- id: c ? "" : n[p.current].id
150
- }
151
- });
152
- }
153
- }), W && !i && Fe(p.current);
154
- }
155
- const g = O(() => {
156
- var e;
157
- return x.current ? u ? s() * n.length : Math.round(
158
- Number(
159
- (e = x.current) == null ? void 0 : e[o === "x" ? "scrollWidth" : "scrollHeight"]
160
- ) - x.current.getBoundingClientRect()[o === "x" ? "width" : "height"] - v * 2
161
- ) : 0;
162
- }, [o, s, n.length, v, u]);
163
- function we() {
164
- const e = `calc(100% - ${v * 2}px)`;
165
- return {
166
- width: o === "x" ? e : "100%",
167
- height: o === "y" ? e : "100%"
168
- };
169
- }
170
- const Y = O(() => {
171
- var r;
172
- const e = (r = x.current) == null ? void 0 : r.querySelector(".use-spring-carousel-item");
173
- if (!e)
174
- throw Error("No carousel items available!");
175
- return e.getBoundingClientRect()[o === "x" ? "width" : "height"] + b;
176
- }, [o, b]), J = O(
177
- (e) => {
178
- const r = o === "x" ? "left" : "top", t = x.current;
179
- t && (u ? (t.style.top = "0px", t.style.left = "0px", t.style[r] = `-${e - v}px`, f.current = !1, l.current = !1) : (t.style.left = "0px", t.style.top = "0px"));
180
- },
181
- [o, v, u]
182
- ), S = O(
183
- (e = !1) => {
184
- if (x.current && e && (x.current.style.transform = "translate3d(0px, 0px,0px)", x.current.style.left = "0", x.current.style.top = "0"), I === "fixed" && J(
185
- Z === "center" ? Y() * n.length - s() * Math.round((M - 1) / 2) : Z === "end" ? Y() * n.length - s() * Math.round(M - 1) : Y() * n.length
186
- ), I === "fluid") {
187
- if (J(Y() * n.length), l.current && g() !== Math.abs(d.current) && !u) {
188
- const r = -g();
189
- d.current = r, y.start({
190
- immediate: !0,
191
- val: d.current
192
- });
193
- return;
194
- }
195
- if (Math.abs(d.current) > 0 && g() !== Math.abs(d.current) && !u && !c && ce.current === "backward") {
196
- const r = ue.current - g(), t = d.current + r;
197
- return y.start({
198
- immediate: !0,
199
- val: t
200
- }), () => {
201
- d.current = t;
202
- };
203
- }
204
- console.log("here");
205
- return;
206
- }
207
- if (!c && I === "fixed") {
208
- const r = -(s() * p.current);
209
- if (Math.abs(r) > g() && !u) {
210
- const t = -g();
211
- l.current = !0, d.current = t, y.start({
212
- immediate: !0,
213
- val: d.current
214
- });
215
- } else
216
- d.current = r, y.start({
217
- immediate: !0,
218
- val: r
219
- });
220
- setTimeout(() => {
221
- X.current = !1;
222
- }, 0);
223
- }
224
- },
225
- [
226
- c,
227
- Y,
228
- s,
229
- g,
230
- Z,
231
- n.length,
232
- M,
233
- J,
234
- y,
235
- I,
236
- u
237
- ]
238
- );
239
- function w() {
240
- return c && a.current ? a.current[o === "x" ? "scrollLeft" : "scrollTop"] : E.val.get();
241
- }
242
- function K(e, r) {
243
- if (c && e === "next") {
244
- const t = d.current + s();
245
- return t > g() ? g() : t;
246
- }
247
- if (c && e === "prev") {
248
- const t = d.current - s();
249
- return t < 0 ? 0 : t;
250
- }
251
- return e === "next" ? typeof r == "number" ? -(r * s()) : d.current - s() : typeof r == "number" ? -(r * s()) : d.current + s();
252
- }
253
- function V({ type: e, index: r, immediate: t }) {
254
- if (!h || R.current || f.current && !u)
255
- return;
256
- l.current && (ce.current = "backward"), k.current = "prev", l.current = !1;
257
- const i = typeof r == "number" ? r : p.current - 1;
258
- if (c && ee(), !u) {
259
- const C = c ? K("prev", r) - s() / 3 < 0 : K("prev", r) + s() / 3 > 0;
260
- if (f.current)
261
- return;
262
- if (C) {
263
- f.current = !0, l.current = !1, j({
264
- slideMode: e,
265
- from: w(),
266
- to: 0,
267
- nextActiveItem: 0,
268
- immediate: t
269
- });
270
- return;
271
- }
272
- }
273
- if (u && (f.current || i < 0)) {
274
- f.current = !1, l.current = !0, j({
275
- slideMode: e,
276
- from: w() - s() * n.length,
277
- to: -(s() * n.length) + s(),
278
- nextActiveItem: n.length - 1,
279
- immediate: t
280
- });
281
- return;
282
- }
283
- i === 0 && (f.current = !0), (i === n.length - 1 || i === -1) && (l.current = !0), j({
284
- slideMode: e,
285
- from: w(),
286
- to: K("prev", r),
287
- nextActiveItem: i,
288
- immediate: t
289
- });
290
- }
291
- function D({ type: e, index: r, immediate: t }) {
292
- if (!h || R.current || l.current && !u)
293
- return;
294
- f.current && (ce.current = "forward"), k.current = "next", f.current = !1;
295
- const i = r || p.current + 1;
296
- if (c && ee(), !u) {
297
- const C = Math.abs(K("next", r)) > g() - s() / 3;
298
- if (l.current)
299
- return;
300
- if (C) {
301
- f.current = !1, l.current = !0, j({
302
- slideMode: e,
303
- from: w(),
304
- to: c ? g() : -g(),
305
- nextActiveItem: i,
306
- immediate: t
307
- });
308
- return;
309
- }
310
- }
311
- if (u && (l.current || i > n.length - 1)) {
312
- l.current = !1, f.current = !0, j({
313
- slideMode: e,
314
- from: w() + s() * n.length,
315
- to: 0,
316
- nextActiveItem: 0,
317
- immediate: t
318
- });
319
- return;
320
- }
321
- i === 0 && (f.current = !0), i === n.length - 1 && (l.current = !0), j({
322
- slideMode: e,
323
- from: w(),
324
- to: K("next", r),
325
- nextActiveItem: i,
326
- immediate: t
327
- });
328
- }
329
- function $e() {
330
- te ? _.current = te : _.current = Math.floor(s() / 2 / 2);
331
- }
332
- function pe() {
333
- x.current && (ue.current = g(), Te.current = u, be.current = I, Me.current = c, oe.current = window.innerWidth, d.current = 0, ie({ id: 0, immediate: !0, shouldReset: !0 }), $e(), S());
334
- }
335
- const Ne = Oe(
336
- (e) => {
337
- const r = e.dragging, t = e.offset[o === "x" ? 0 : 1], i = e.movement[o === "x" ? 0 : 1], C = e.direction[o === "x" ? 0 : 1], B = i > _.current, H = i < -_.current, Ve = g();
338
- if (r) {
339
- if (C > 0 ? k.current = "prev" : k.current = "next", L({
340
- ...e,
341
- eventName: "onDrag",
342
- slideActionType: k.current
343
- }), c) {
344
- if (t > 0) {
345
- y.start({
346
- from: {
347
- val: w()
348
- },
349
- to: {
350
- val: 0
351
- },
352
- config: {
353
- velocity: e.velocity,
354
- friction: 50,
355
- tension: 1e3
356
- }
357
- }), e.cancel();
358
- return;
359
- }
360
- y.start({
361
- from: {
362
- val: w()
363
- },
364
- to: {
365
- val: -t
366
- },
367
- config: {
368
- velocity: e.velocity,
369
- friction: 50,
370
- tension: 1e3
371
- }
372
- });
373
- return;
374
- }
375
- y.start({
376
- val: t,
377
- config: {
378
- velocity: e.velocity,
379
- friction: 50,
380
- tension: 1e3
381
- }
382
- }), ge && H ? (D({ type: "drag" }), e.cancel()) : ge && B && (V({ type: "drag" }), e.cancel()), Ve - Math.abs(t) < -(s() * 2) && e.cancel();
383
- return;
384
- }
385
- if (e.last && c && t > 0) {
386
- y.start({
387
- from: {
388
- val: w()
389
- },
390
- to: {
391
- val: 0
392
- },
393
- config: {
394
- velocity: e.velocity,
395
- friction: 50,
396
- tension: 1e3
397
- }
398
- });
399
- return;
400
- }
401
- e.last && !e.canceled && c && (k.current === "prev" && V({ type: "drag" }), k.current === "next" && D({ type: "drag" })), e.last && !e.canceled && !c && (H ? !u && l.current ? y.start({
402
- val: -g(),
403
- config: {
404
- ...Q.default,
405
- velocity: e.velocity
406
- }
407
- }) : D({ type: "drag" }) : B ? !u && f.current ? y.start({
408
- val: 0,
409
- config: {
410
- ...Q.default,
411
- velocity: e.velocity
412
- }
413
- }) : V({ type: "drag" }) : y.start({
414
- val: d.current,
415
- config: {
416
- ...Q.default,
417
- velocity: e.velocity
418
- }
419
- })), e.last && e.canceled && y.start({
420
- val: d.current,
421
- config: {
422
- ...Q.default,
423
- velocity: e.velocity
424
- }
425
- });
426
- },
427
- {
428
- enabled: h && !de && !c || !!c && !!xe,
429
- axis: o,
430
- from: () => c && a.current ? [
431
- -a.current.scrollLeft,
432
- -a.current.scrollTop
433
- ] : o === "x" ? [E.val.get(), E.val.get()] : [E.val.get(), E.val.get()]
434
- }
435
- );
436
- function We() {
437
- return c ? o === "x" ? {
438
- overflowX: "auto"
439
- } : {
440
- overflowY: "auto"
441
- } : {};
442
- }
443
- function ee() {
444
- a.current && (d.current = a.current[o === "x" ? "scrollLeft" : "scrollTop"], a.current[o === "x" ? "scrollLeft" : "scrollTop"] === 0 && (f.current = !0, l.current = !1), a.current[o === "x" ? "scrollLeft" : "scrollTop"] > 0 && a.current[o === "x" ? "scrollLeft" : "scrollTop"] < g() && (f.current = !1, l.current = !1), a.current[o === "x" ? "scrollLeft" : "scrollTop"] === g() && (f.current = !1, l.current = !0));
445
- }
446
- function Ee() {
447
- return c ? {
448
- onWheel() {
449
- E.val.stop(), ee();
450
- }
451
- } : {};
452
- }
453
- function q(e, r) {
454
- let t = 0;
455
- if (typeof e == "string" ? t = n.findIndex((i) => i.id === e) : t = e, t < 0 || t >= n.length) {
456
- if (r)
457
- throw new Error(r);
458
- console.error(`The item doesn't exist; check that the id provided - ${e} - is correct.`), t = -1;
459
- }
460
- return t;
461
- }
462
- function ie({ id: e, immediate: r, shouldReset: t, type: i }) {
463
- if (!h || R.current)
464
- return;
465
- f.current = !1, l.current = !1;
466
- const C = q(
467
- e,
468
- "The item you want to slide to doesn't exist; check the provided id."
469
- );
470
- if (C === p.current && !t)
471
- return;
472
- const B = q(n[p.current].id), H = q(n[C].id);
473
- H > B ? D({
474
- type: i || t ? "initial" : "click",
475
- index: H,
476
- immediate: r
477
- }) : V({
478
- type: i || t ? "initial" : "click",
479
- index: H,
480
- immediate: r
481
- });
482
- }
483
- function le(e) {
484
- const r = q(e, "The item doesn't exist; check the provided id."), t = p.current;
485
- return u && t === n.length - 1 ? r === 0 : r === t + 1;
486
- }
487
- function se(e) {
488
- const r = q(e, "The item doesn't exist; check the provided id."), t = p.current;
489
- return u && t === 0 ? r === n.length - 1 : r === t - 1;
490
- }
491
- function fe(e) {
492
- return q(e, "The item you want to check doesn't exist; check the provided id.") === p.current;
493
- }
494
- function Pe() {
495
- return de ? "unset" : o === "x" ? "pan-y" : "pan-x";
496
- }
497
- const T = c ? {
498
- useListenToCustomEvent: A,
499
- enterFullscreen: me,
500
- exitFullscreen: ve,
501
- getIsFullscreen: he,
502
- slideToPrevItem: (e = !0) => {
503
- V({
504
- type: "click",
505
- immediate: !e
506
- });
507
- },
508
- slideToNextItem: (e = !0) => {
509
- D({
510
- type: "click",
511
- immediate: !e
512
- });
513
- }
514
- } : {
515
- useListenToCustomEvent: A,
516
- enterFullscreen: me,
517
- exitFullscreen: ve,
518
- getIsFullscreen: he,
519
- slideToPrevItem: (e = !0) => {
520
- V({
521
- type: "click",
522
- immediate: !e
523
- });
524
- },
525
- slideToNextItem: (e = !0) => {
526
- D({
527
- type: "click",
528
- immediate: !e
529
- });
530
- },
531
- slideToItem: (e, r = !0) => {
532
- ie({ id: e, immediate: !r });
533
- },
534
- getIsNextItem: le,
535
- getIsPrevItem: se,
536
- getIsActiveItem: fe
537
- };
538
- He(() => {
539
- x.current && h && (X.current = !0, pe());
540
- }, [h]), N(() => {
541
- p.current !== F && (X.current = !0, ie({
542
- id: F,
543
- immediate: !Ie
544
- }));
545
- }, [F]), N(() => {
546
- if (h) {
547
- if (F > n.length - 1)
548
- throw new Error(
549
- `initialActiveItem (${F}) is greater than the total quantity available items (${n.length}).`
550
- );
551
- M > n.length && console.warn(
552
- `itemsPerSlide (${M}) is greater than the total quantity available items (${n.length}). Fallback to ${n.length})`
553
- );
554
- }
555
- }, [F, n.length, M, h]), N(() => {
556
- oe.current = window.innerWidth;
557
- }, []), N(() => {
558
- h && (X.current = !0, pe());
559
- }, [Z, M, v, b, h, u, I]), N(() => {
560
- if (!h)
561
- return;
562
- function e() {
563
- document.hidden ? R.current = !0 : R.current = !1;
564
- }
565
- return document.addEventListener("visibilitychange", e), () => {
566
- document.removeEventListener("visibilitychange", e);
567
- };
568
- }, [h]), N(() => {
569
- if (a.current) {
570
- let e;
571
- const r = new Ye(() => {
572
- if (!R.current && !X.current) {
573
- oe.current = window.innerWidth;
574
- const t = S();
575
- window.clearTimeout(e), e = setTimeout(() => {
576
- ue.current = g(), typeof t == "function" && t();
577
- }, 100);
578
- }
579
- });
580
- return r.observe(a.current), () => {
581
- r.disconnect();
582
- };
583
- }
584
- }, [S, g]), N(() => {
585
- re && re({
586
- slideToNextItem: T.slideToNextItem,
587
- slideToPrevItem: T.slideToPrevItem,
588
- slideToItem: T == null ? void 0 : T.slideToItem
589
- });
590
- }, [re, T.slideToItem, T.slideToNextItem, T.slideToPrevItem]);
591
- const Re = /* @__PURE__ */ P.jsx(ae.Provider, { value: T, children: Ce }), je = /* @__PURE__ */ P.jsx(ae.Provider, { value: T, children: /* @__PURE__ */ P.jsx(
592
- "div",
593
- {
594
- className: "use-spring-carousel-main-wrapper",
595
- ref: a,
596
- ...Ee(),
597
- style: {
598
- display: "flex",
599
- position: "relative",
600
- width: "100%",
601
- height: "100%",
602
- ...We()
603
- },
604
- children: /* @__PURE__ */ P.jsxs(
605
- "div",
606
- {
607
- className: "use-spring-carousel-track-wrapper",
608
- ref: x,
609
- ...Ne(),
610
- style: {
611
- position: "relative",
612
- display: "flex",
613
- flexDirection: o === "x" ? "row" : "column",
614
- touchAction: Pe(),
615
- ...we()
616
- },
617
- children: [
618
- (c || !u) && v ? /* @__PURE__ */ P.jsx(
619
- "div",
620
- {
621
- style: {
622
- flexShrink: 0,
623
- width: v
624
- }
625
- }
626
- ) : null,
627
- G.map((e, r) => /* @__PURE__ */ P.jsx(
628
- "div",
629
- {
630
- className: "use-spring-carousel-item",
631
- "data-testid": "use-spring-carousel-item-wrapper",
632
- style: {
633
- display: "flex",
634
- position: "relative",
635
- flex: "1",
636
- ...ke(
637
- r === G.findIndex(
638
- (t) => t.id === G[G.length - 1].id
639
- )
640
- )
641
- },
642
- children: typeof e.renderItem == "function" ? e.renderItem({
643
- getIsActiveItem: fe,
644
- getIsNextItem: le,
645
- getIsPrevItem: se,
646
- useListenToCustomEvent: A
647
- }) : e.renderItem
648
- },
649
- `${e.id}-${r}`
650
- )),
651
- (c || !u) && v ? /* @__PURE__ */ P.jsx(
652
- "div",
653
- {
654
- style: {
655
- flexShrink: 0,
656
- width: v
657
- }
658
- }
659
- ) : null
660
- ]
661
- }
662
- )
663
- }
664
- ) });
665
- return { ...T, carouselFragment: je, thumbsFragment: Re };
666
- }
667
- const ae = ze(void 0);
668
- function tt() {
669
- const n = Xe(ae);
670
- if (!n)
671
- throw new Error("useSpringCarouselContext must be used within the carousel.");
672
- return n;
673
- }
674
- export {
675
- et as useSpringCarousel,
676
- tt as useSpringCarouselContext
677
- };
678
- //# sourceMappingURL=index.es2.js.map