@oxy.so/bloom 4.29.1 → 4.29.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/docs/carousel.mdx +5 -2
- package/lib/commonjs/carousel/Carousel.js +97 -60
- package/lib/commonjs/carousel/Carousel.js.map +1 -1
- package/lib/module/carousel/Carousel.js +97 -60
- package/lib/module/carousel/Carousel.js.map +1 -1
- package/lib/typescript/commonjs/carousel/Carousel.d.ts.map +1 -1
- package/lib/typescript/module/carousel/Carousel.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/carousel/Carousel.tsx +108 -68
package/docs/carousel.mdx
CHANGED
|
@@ -28,7 +28,7 @@ import { Carousel, CarouselItem } from '@oxy.so/bloom/carousel';
|
|
|
28
28
|
| --- | --- | --- |
|
|
29
29
|
| `header` | | Leading content of the arrows row, e.g. a section title. Header at the start, arrows at the end — one row, not two. |
|
|
30
30
|
| `showArrows` | `true` | Prev/next buttons, right-aligned above the track. They disable at each end. |
|
|
31
|
-
| `showDots` | `true` | Position indicator; never shown for a single
|
|
31
|
+
| `showDots` | `true` | Position indicator, one dot per stop (see below); never shown for a single stop. Each dot is a button. |
|
|
32
32
|
| `align` | `'start'` | Where a slide rests when it snaps: `'start'` or `'center'`. |
|
|
33
33
|
| `gap` | `16` | Space between slides, px. |
|
|
34
34
|
| `inset` | `0` | Horizontal padding of the header row, the dots and the track's two ends. Slides scroll under it to the edges, and a start-aligned slide snaps to the inset rather than flush. |
|
|
@@ -49,7 +49,10 @@ The track is a real horizontal `ScrollView` — a native scroller rather than a
|
|
|
49
49
|
|
|
50
50
|
- **Snapping** is CSS `scroll-snap` on web and `snapToOffsets` on native (computed from the measured slides, centre-adjusted for `align="center"`).
|
|
51
51
|
- **Positions are measured** with each slide's `onLayout`, never derived from a width, so mixed-width slides keep working.
|
|
52
|
-
- **
|
|
52
|
+
- **One list of stops drives everything.** A stop is a distinct place the track can rest. Slides narrower than the track share one: every slide that cannot reach the start edge clamps to the same end offset, so the end is ONE stop however many slides it holds. Arrows, dots, snap offsets, the active dot and `onIndexChange` all read that list, so no dot or arrow can scroll nowhere. A shared stop reports its first slide, except the end, which reports the last.
|
|
53
|
+
- **The arrows step from where the track is**, to the nearest stop before or after the scroll offset — never by slide index, which near the end names a slide whose stop the track already rests at.
|
|
54
|
+
- **The active stop is the one nearest the scroll offset**, compared against where each stop RESTS (inset and centring included), not where its slide sits in the content.
|
|
55
|
+
- **The ends are pinned, not measured.** Within 1px of either end the first/last stop is active, so the last dot always lights at the far end.
|
|
53
56
|
- Programmatic scrolls animate unless the user prefers reduced motion.
|
|
54
57
|
|
|
55
58
|
Web CSS (snap, hidden scrollbar, the track's `:focus-visible` ring, dot transitions) is self-injected through `adoptStyleSheet` on `dataSet` hooks — nothing to copy into a consumer stylesheet.
|
|
@@ -232,6 +232,33 @@ function CarouselDot({
|
|
|
232
232
|
// Carousel
|
|
233
233
|
// ---------------------------------------------------------------------------
|
|
234
234
|
|
|
235
|
+
/**
|
|
236
|
+
* A place the track can come to rest, and the slide it stands for. Slides
|
|
237
|
+
* narrower than the track share one: every slide that cannot reach the start
|
|
238
|
+
* edge clamps to the same end offset, so the end is ONE stop however many slides
|
|
239
|
+
* it holds.
|
|
240
|
+
*/
|
|
241
|
+
|
|
242
|
+
/**
|
|
243
|
+
* Collapse per-slide resting offsets (ascending) into distinct stops, 1px of
|
|
244
|
+
* slack for fractional hi-DPI offsets. A shared stop stands for its FIRST slide,
|
|
245
|
+
* except the end, which stands for the LAST — the far end is where the last
|
|
246
|
+
* slide is, and naming anything else would leave it unreachable.
|
|
247
|
+
*/
|
|
248
|
+
function toStops(resting) {
|
|
249
|
+
const stops = [];
|
|
250
|
+
resting.forEach((offset, slide) => {
|
|
251
|
+
const last = stops[stops.length - 1];
|
|
252
|
+
if (last && Math.abs(offset - last.offset) <= 1) return;
|
|
253
|
+
stops.push({
|
|
254
|
+
offset,
|
|
255
|
+
slide
|
|
256
|
+
});
|
|
257
|
+
});
|
|
258
|
+
const end = stops[stops.length - 1];
|
|
259
|
+
if (end) end.slide = resting.length - 1;
|
|
260
|
+
return stops;
|
|
261
|
+
}
|
|
235
262
|
const CarouselComponent = function Carousel({
|
|
236
263
|
children,
|
|
237
264
|
accessibilityLabel,
|
|
@@ -261,13 +288,29 @@ const CarouselComponent = function Carousel({
|
|
|
261
288
|
contentWidth: 0
|
|
262
289
|
});
|
|
263
290
|
const [trackWidth, setTrackWidth] = (0, _react.useState)(0);
|
|
264
|
-
const [
|
|
291
|
+
const [stops, setStops] = (0, _react.useState)([]);
|
|
265
292
|
const [active, setActive] = (0, _react.useState)(0);
|
|
266
293
|
const [atStart, setAtStart] = (0, _react.useState)(true);
|
|
267
294
|
const [atEnd, setAtEnd] = (0, _react.useState)(false);
|
|
268
295
|
const onIndexChangeRef = (0, _react.useRef)(onIndexChange);
|
|
269
296
|
onIndexChangeRef.current = onIndexChange;
|
|
270
|
-
const
|
|
297
|
+
const activeSlideRef = (0, _react.useRef)(0);
|
|
298
|
+
const targetFor = (0, _react.useCallback)(item => {
|
|
299
|
+
const raw = align === 'center' ? item.x - (trackWidth - item.width) / 2 : item.x - inset;
|
|
300
|
+
const max = Math.max(0, scroll.current.contentWidth - trackWidth);
|
|
301
|
+
return Math.min(Math.max(0, raw), max);
|
|
302
|
+
}, [align, inset, trackWidth]);
|
|
303
|
+
|
|
304
|
+
/**
|
|
305
|
+
* The distinct places the track can rest — or `null` until every slide has
|
|
306
|
+
* been measured. Arrows, dots, snapping and the active slide all read this
|
|
307
|
+
* ONE list, so they cannot disagree about where the track can go.
|
|
308
|
+
*/
|
|
309
|
+
const computeStops = (0, _react.useCallback)(() => {
|
|
310
|
+
const all = offsets.current.slice(0, count);
|
|
311
|
+
if (all.length !== count || all.some(o => !o)) return null;
|
|
312
|
+
return toStops(all.map(targetFor));
|
|
313
|
+
}, [count, targetFor]);
|
|
271
314
|
const measure = (0, _react.useCallback)(() => {
|
|
272
315
|
const {
|
|
273
316
|
x,
|
|
@@ -280,19 +323,20 @@ const CarouselComponent = function Carousel({
|
|
|
280
323
|
const end = viewport > 0 && contentWidth > 0 && x >= contentWidth - viewport - 1;
|
|
281
324
|
setAtStart(start);
|
|
282
325
|
setAtEnd(end);
|
|
283
|
-
const all =
|
|
284
|
-
if (all.length === 0) return;
|
|
285
|
-
|
|
326
|
+
const all = computeStops();
|
|
327
|
+
if (!all || all.length === 0) return;
|
|
328
|
+
|
|
329
|
+
// The ends are pinned, not measured: within 1px of either end the first/last
|
|
330
|
+
// stop is active. Between them, the stop nearest the scroll offset — compared
|
|
331
|
+
// against where each stop RESTS (inset and centring included), not where its
|
|
332
|
+
// slide sits in the content.
|
|
333
|
+
let next = 0;
|
|
286
334
|
if (end) {
|
|
287
|
-
next =
|
|
288
|
-
} else if (start) {
|
|
289
|
-
next = 0;
|
|
290
|
-
} else {
|
|
291
|
-
next = 0;
|
|
335
|
+
next = all.length - 1;
|
|
336
|
+
} else if (!start) {
|
|
292
337
|
let shortest = Number.POSITIVE_INFINITY;
|
|
293
|
-
all.forEach((
|
|
294
|
-
|
|
295
|
-
const distance = Math.abs(item.x - x);
|
|
338
|
+
all.forEach((stop, index) => {
|
|
339
|
+
const distance = Math.abs(stop.offset - x);
|
|
296
340
|
if (distance < shortest) {
|
|
297
341
|
shortest = distance;
|
|
298
342
|
next = index;
|
|
@@ -300,60 +344,46 @@ const CarouselComponent = function Carousel({
|
|
|
300
344
|
});
|
|
301
345
|
}
|
|
302
346
|
setActive(next);
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
347
|
+
const slide = all[next]?.slide ?? 0;
|
|
348
|
+
if (slide !== activeSlideRef.current) {
|
|
349
|
+
activeSlideRef.current = slide;
|
|
350
|
+
onIndexChangeRef.current?.(slide);
|
|
306
351
|
}
|
|
307
|
-
}, [
|
|
308
|
-
const
|
|
309
|
-
const
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
}, [align, inset, trackWidth]);
|
|
313
|
-
const recomputeSnaps = (0, _react.useCallback)(() => {
|
|
314
|
-
if (IS_WEB) return; // CSS scroll-snap owns snapping on web.
|
|
315
|
-
const all = offsets.current.slice(0, count);
|
|
316
|
-
if (all.length !== count || all.some(o => !o)) return;
|
|
317
|
-
setSnapOffsets(all.map(targetFor));
|
|
318
|
-
}, [count, targetFor]);
|
|
352
|
+
}, [computeStops, trackWidth]);
|
|
353
|
+
const recomputeStops = (0, _react.useCallback)(() => {
|
|
354
|
+
const next = computeStops();
|
|
355
|
+
if (next) setStops(next);
|
|
356
|
+
}, [computeStops]);
|
|
319
357
|
const reportOffset = (0, _react.useCallback)((index, x, width) => {
|
|
320
358
|
offsets.current[index] = {
|
|
321
359
|
x,
|
|
322
360
|
width
|
|
323
361
|
};
|
|
324
|
-
|
|
362
|
+
recomputeStops();
|
|
325
363
|
measure();
|
|
326
|
-
}, [measure,
|
|
364
|
+
}, [measure, recomputeStops]);
|
|
327
365
|
(0, _react.useEffect)(() => {
|
|
328
|
-
|
|
366
|
+
recomputeStops();
|
|
329
367
|
measure();
|
|
330
|
-
}, [
|
|
331
|
-
const
|
|
332
|
-
|
|
333
|
-
if (!target) return;
|
|
368
|
+
}, [recomputeStops, measure]);
|
|
369
|
+
const scrollToStop = stop => {
|
|
370
|
+
if (!stop) return;
|
|
334
371
|
scrollRef.current?.scrollTo({
|
|
335
|
-
x:
|
|
372
|
+
x: stop.offset,
|
|
336
373
|
animated: !reducedMotion
|
|
337
374
|
});
|
|
338
375
|
};
|
|
339
376
|
|
|
340
377
|
/**
|
|
341
|
-
* The arrows step from where the track IS,
|
|
342
|
-
*
|
|
343
|
-
*
|
|
344
|
-
* one" is often where the track already rests, and an index step would scroll
|
|
345
|
-
* nowhere and stay stuck there. Step to the nearest DISTINCT resting place
|
|
346
|
-
* instead (1px of slack, as in `measure`).
|
|
378
|
+
* The arrows step from where the track IS, to the nearest stop before or after
|
|
379
|
+
* it (1px of slack, as in `measure`) — never by slide index, which near the
|
|
380
|
+
* end names a slide whose stop the track already rests at.
|
|
347
381
|
*/
|
|
348
382
|
const step = direction => {
|
|
383
|
+
const all = computeStops();
|
|
384
|
+
if (!all) return;
|
|
349
385
|
const x = scroll.current.x;
|
|
350
|
-
|
|
351
|
-
const next = direction === 1 ? targets.filter(t => t > x + 1).reduce((a, b) => Math.min(a, b), Number.POSITIVE_INFINITY) : targets.filter(t => t < x - 1).reduce((a, b) => Math.max(a, b), Number.NEGATIVE_INFINITY);
|
|
352
|
-
if (!Number.isFinite(next)) return;
|
|
353
|
-
scrollRef.current?.scrollTo({
|
|
354
|
-
x: next,
|
|
355
|
-
animated: !reducedMotion
|
|
356
|
-
});
|
|
386
|
+
scrollToStop(direction === 1 ? all.find(stop => stop.offset > x + 1) : [...all].reverse().find(stop => stop.offset < x - 1));
|
|
357
387
|
};
|
|
358
388
|
const onScroll = event => {
|
|
359
389
|
const {
|
|
@@ -371,9 +401,10 @@ const CarouselComponent = function Carousel({
|
|
|
371
401
|
...scroll.current,
|
|
372
402
|
contentWidth: width
|
|
373
403
|
};
|
|
374
|
-
|
|
404
|
+
recomputeStops();
|
|
375
405
|
measure();
|
|
376
406
|
};
|
|
407
|
+
const dotCount = stops.length > 0 ? stops.length : count;
|
|
377
408
|
const contextValue = (0, _react.useMemo)(() => ({
|
|
378
409
|
trackWidth,
|
|
379
410
|
count,
|
|
@@ -446,7 +477,7 @@ const CarouselComponent = function Carousel({
|
|
|
446
477
|
onScroll: onScroll,
|
|
447
478
|
onContentSizeChange: onContentSizeChange,
|
|
448
479
|
onLayout: event => setTrackWidth(event.nativeEvent.layout.width),
|
|
449
|
-
snapToOffsets: IS_WEB ? undefined :
|
|
480
|
+
snapToOffsets: IS_WEB ? undefined : stops.map(stop => stop.offset),
|
|
450
481
|
decelerationRate: IS_WEB ? undefined : 'fast',
|
|
451
482
|
disableIntervalMomentum: true,
|
|
452
483
|
style: trackStyle,
|
|
@@ -459,7 +490,7 @@ const CarouselComponent = function Carousel({
|
|
|
459
490
|
children: child
|
|
460
491
|
}, child.key ?? index))
|
|
461
492
|
})
|
|
462
|
-
}), showDots &&
|
|
493
|
+
}), showDots && dotCount > 1 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
463
494
|
style: {
|
|
464
495
|
flexDirection: 'row',
|
|
465
496
|
alignItems: 'center',
|
|
@@ -468,14 +499,20 @@ const CarouselComponent = function Carousel({
|
|
|
468
499
|
paddingHorizontal: inset
|
|
469
500
|
},
|
|
470
501
|
children: Array.from({
|
|
471
|
-
length:
|
|
472
|
-
}, (_, index) =>
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
502
|
+
length: dotCount
|
|
503
|
+
}, (_, index) => {
|
|
504
|
+
// One dot per STOP: slides that share a resting place share a dot,
|
|
505
|
+
// so no dot scrolls nowhere. Until the slides are measured there is
|
|
506
|
+
// one per slide, which is what full-width slides settle on anyway.
|
|
507
|
+
const slide = stops[index]?.slide ?? index;
|
|
508
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(CarouselDot, {
|
|
509
|
+
active: index === active,
|
|
510
|
+
paint: paint,
|
|
511
|
+
label: dotLabel ? dotLabel(slide + 1) : `Go to slide ${slide + 1}`,
|
|
512
|
+
reducedMotion: reducedMotion,
|
|
513
|
+
onPress: () => scrollToStop(stops[index])
|
|
514
|
+
}, index);
|
|
515
|
+
})
|
|
479
516
|
}) : null]
|
|
480
517
|
});
|
|
481
518
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_button","_shared","_RiArrowLeftSLine","_RiArrowRightSLine","_useInteractionState","_interactiveWebCss","_tokens","_webData","_useTheme","_context","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","IS_WEB","Platform","OS","DOT_TRANSITION_MS","DOT_HEIGHT","DOT_WIDTH","DOT_ACTIVE_WIDTH","resolveCarouselPaint","theme","accent","resolveButtonRamps","dotActive","colors","text","dot","backgroundSecondary","dotHover","textSecondary","ring","STYLE_ID","TRACK","DOT","BLOOM_CAROUSEL_CSS","CarouselItemComponent","CarouselItem","children","width","accessibilityLabel","style","testID","ctx","useContext","CarouselContext","index","CarouselItemIndexContext","reportOffset","onLayout","useCallback","event","x","w","nativeEvent","layout","slideWidth","trackWidth","undefined","jsx","View","webDataSet","bloomCarouselItem","role","count","flexShrink","exports","memo","displayName","CarouselDot","active","paint","label","reducedMotion","onPress","state","hovered","onIn","onOut","useInteractionState","useRef","Animated","Value","current","useEffect","to","setValue","timing","toValue","duration","useNativeDriver","start","background","Pressable","bloomCarouselDot","accessibilityRole","onHoverIn","onHoverOut","hitSlop","top","bottom","left","right","height","borderRadius","full","backgroundColor","CarouselComponent","Carousel","header","showArrows","showDots","align","gap","inset","onIndexChange","previousLabel","nextLabel","dotLabel","useTheme","useInteractiveWebCss","useReducedMotion","useMemo","slides","Children","toArray","filter","isValidElement","length","scrollRef","offsets","scroll","contentWidth","setTrackWidth","useState","snapOffsets","setSnapOffsets","setActive","atStart","setAtStart","atEnd","setAtEnd","onIndexChangeRef","activeRef","measure","viewport","end","all","slice","next","shortest","Number","POSITIVE_INFINITY","forEach","item","distance","Math","abs","targetFor","raw","max","min","recomputeSnaps","some","map","scrollToIndex","target","scrollTo","animated","step","direction","targets","Boolean","reduce","a","b","NEGATIVE_INFINITY","isFinite","onScroll","contentOffset","contentSize","onContentSizeChange","contextValue","trackStyle","jsxs","flexDirection","alignItems","paddingHorizontal","flex","minWidth","Fragment","Button","size","icon","RiArrowLeftSLine","disabled","appearance","tone","RiArrowRightSLine","Provider","value","ScrollView","ref","bloomCarouselTrack","tabIndex","horizontal","showsHorizontalScrollIndicator","scrollEventThrottle","snapToOffsets","decelerationRate","disableIntervalMomentum","contentContainerStyle","child","key","justifyContent","Array","from","_"],"sourceRoot":"../../../src","sources":["carousel/Carousel.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeReanimated","_button","_shared","_RiArrowLeftSLine","_RiArrowRightSLine","_useInteractionState","_interactiveWebCss","_tokens","_webData","_useTheme","_context","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","IS_WEB","Platform","OS","DOT_TRANSITION_MS","DOT_HEIGHT","DOT_WIDTH","DOT_ACTIVE_WIDTH","resolveCarouselPaint","theme","accent","resolveButtonRamps","dotActive","colors","text","dot","backgroundSecondary","dotHover","textSecondary","ring","STYLE_ID","TRACK","DOT","BLOOM_CAROUSEL_CSS","CarouselItemComponent","CarouselItem","children","width","accessibilityLabel","style","testID","ctx","useContext","CarouselContext","index","CarouselItemIndexContext","reportOffset","onLayout","useCallback","event","x","w","nativeEvent","layout","slideWidth","trackWidth","undefined","jsx","View","webDataSet","bloomCarouselItem","role","count","flexShrink","exports","memo","displayName","CarouselDot","active","paint","label","reducedMotion","onPress","state","hovered","onIn","onOut","useInteractionState","useRef","Animated","Value","current","useEffect","to","setValue","timing","toValue","duration","useNativeDriver","start","background","Pressable","bloomCarouselDot","accessibilityRole","onHoverIn","onHoverOut","hitSlop","top","bottom","left","right","height","borderRadius","full","backgroundColor","toStops","resting","stops","forEach","offset","slide","last","length","Math","abs","push","end","CarouselComponent","Carousel","header","showArrows","showDots","align","gap","inset","onIndexChange","previousLabel","nextLabel","dotLabel","useTheme","useInteractiveWebCss","useReducedMotion","useMemo","slides","Children","toArray","filter","isValidElement","scrollRef","offsets","scroll","contentWidth","setTrackWidth","useState","setStops","setActive","atStart","setAtStart","atEnd","setAtEnd","onIndexChangeRef","activeSlideRef","targetFor","item","raw","max","min","computeStops","all","slice","some","map","measure","viewport","next","shortest","Number","POSITIVE_INFINITY","stop","distance","recomputeStops","scrollToStop","scrollTo","animated","step","direction","find","reverse","onScroll","contentOffset","contentSize","onContentSizeChange","dotCount","contextValue","trackStyle","jsxs","flexDirection","alignItems","paddingHorizontal","flex","minWidth","Fragment","Button","size","icon","RiArrowLeftSLine","disabled","appearance","tone","RiArrowRightSLine","Provider","value","ScrollView","ref","bloomCarouselTrack","tabIndex","horizontal","showsHorizontalScrollIndicator","scrollEventThrottle","snapToOffsets","decelerationRate","disableIntervalMomentum","contentContainerStyle","child","key","justifyContent","Array","from","_"],"sourceRoot":"../../../src","sources":["carousel/Carousel.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -226,6 +226,33 @@ function CarouselDot({
|
|
|
226
226
|
// Carousel
|
|
227
227
|
// ---------------------------------------------------------------------------
|
|
228
228
|
|
|
229
|
+
/**
|
|
230
|
+
* A place the track can come to rest, and the slide it stands for. Slides
|
|
231
|
+
* narrower than the track share one: every slide that cannot reach the start
|
|
232
|
+
* edge clamps to the same end offset, so the end is ONE stop however many slides
|
|
233
|
+
* it holds.
|
|
234
|
+
*/
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Collapse per-slide resting offsets (ascending) into distinct stops, 1px of
|
|
238
|
+
* slack for fractional hi-DPI offsets. A shared stop stands for its FIRST slide,
|
|
239
|
+
* except the end, which stands for the LAST — the far end is where the last
|
|
240
|
+
* slide is, and naming anything else would leave it unreachable.
|
|
241
|
+
*/
|
|
242
|
+
function toStops(resting) {
|
|
243
|
+
const stops = [];
|
|
244
|
+
resting.forEach((offset, slide) => {
|
|
245
|
+
const last = stops[stops.length - 1];
|
|
246
|
+
if (last && Math.abs(offset - last.offset) <= 1) return;
|
|
247
|
+
stops.push({
|
|
248
|
+
offset,
|
|
249
|
+
slide
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
const end = stops[stops.length - 1];
|
|
253
|
+
if (end) end.slide = resting.length - 1;
|
|
254
|
+
return stops;
|
|
255
|
+
}
|
|
229
256
|
const CarouselComponent = function Carousel({
|
|
230
257
|
children,
|
|
231
258
|
accessibilityLabel,
|
|
@@ -255,13 +282,29 @@ const CarouselComponent = function Carousel({
|
|
|
255
282
|
contentWidth: 0
|
|
256
283
|
});
|
|
257
284
|
const [trackWidth, setTrackWidth] = useState(0);
|
|
258
|
-
const [
|
|
285
|
+
const [stops, setStops] = useState([]);
|
|
259
286
|
const [active, setActive] = useState(0);
|
|
260
287
|
const [atStart, setAtStart] = useState(true);
|
|
261
288
|
const [atEnd, setAtEnd] = useState(false);
|
|
262
289
|
const onIndexChangeRef = useRef(onIndexChange);
|
|
263
290
|
onIndexChangeRef.current = onIndexChange;
|
|
264
|
-
const
|
|
291
|
+
const activeSlideRef = useRef(0);
|
|
292
|
+
const targetFor = useCallback(item => {
|
|
293
|
+
const raw = align === 'center' ? item.x - (trackWidth - item.width) / 2 : item.x - inset;
|
|
294
|
+
const max = Math.max(0, scroll.current.contentWidth - trackWidth);
|
|
295
|
+
return Math.min(Math.max(0, raw), max);
|
|
296
|
+
}, [align, inset, trackWidth]);
|
|
297
|
+
|
|
298
|
+
/**
|
|
299
|
+
* The distinct places the track can rest — or `null` until every slide has
|
|
300
|
+
* been measured. Arrows, dots, snapping and the active slide all read this
|
|
301
|
+
* ONE list, so they cannot disagree about where the track can go.
|
|
302
|
+
*/
|
|
303
|
+
const computeStops = useCallback(() => {
|
|
304
|
+
const all = offsets.current.slice(0, count);
|
|
305
|
+
if (all.length !== count || all.some(o => !o)) return null;
|
|
306
|
+
return toStops(all.map(targetFor));
|
|
307
|
+
}, [count, targetFor]);
|
|
265
308
|
const measure = useCallback(() => {
|
|
266
309
|
const {
|
|
267
310
|
x,
|
|
@@ -274,19 +317,20 @@ const CarouselComponent = function Carousel({
|
|
|
274
317
|
const end = viewport > 0 && contentWidth > 0 && x >= contentWidth - viewport - 1;
|
|
275
318
|
setAtStart(start);
|
|
276
319
|
setAtEnd(end);
|
|
277
|
-
const all =
|
|
278
|
-
if (all.length === 0) return;
|
|
279
|
-
|
|
320
|
+
const all = computeStops();
|
|
321
|
+
if (!all || all.length === 0) return;
|
|
322
|
+
|
|
323
|
+
// The ends are pinned, not measured: within 1px of either end the first/last
|
|
324
|
+
// stop is active. Between them, the stop nearest the scroll offset — compared
|
|
325
|
+
// against where each stop RESTS (inset and centring included), not where its
|
|
326
|
+
// slide sits in the content.
|
|
327
|
+
let next = 0;
|
|
280
328
|
if (end) {
|
|
281
|
-
next =
|
|
282
|
-
} else if (start) {
|
|
283
|
-
next = 0;
|
|
284
|
-
} else {
|
|
285
|
-
next = 0;
|
|
329
|
+
next = all.length - 1;
|
|
330
|
+
} else if (!start) {
|
|
286
331
|
let shortest = Number.POSITIVE_INFINITY;
|
|
287
|
-
all.forEach((
|
|
288
|
-
|
|
289
|
-
const distance = Math.abs(item.x - x);
|
|
332
|
+
all.forEach((stop, index) => {
|
|
333
|
+
const distance = Math.abs(stop.offset - x);
|
|
290
334
|
if (distance < shortest) {
|
|
291
335
|
shortest = distance;
|
|
292
336
|
next = index;
|
|
@@ -294,60 +338,46 @@ const CarouselComponent = function Carousel({
|
|
|
294
338
|
});
|
|
295
339
|
}
|
|
296
340
|
setActive(next);
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
341
|
+
const slide = all[next]?.slide ?? 0;
|
|
342
|
+
if (slide !== activeSlideRef.current) {
|
|
343
|
+
activeSlideRef.current = slide;
|
|
344
|
+
onIndexChangeRef.current?.(slide);
|
|
300
345
|
}
|
|
301
|
-
}, [
|
|
302
|
-
const
|
|
303
|
-
const
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
}, [align, inset, trackWidth]);
|
|
307
|
-
const recomputeSnaps = useCallback(() => {
|
|
308
|
-
if (IS_WEB) return; // CSS scroll-snap owns snapping on web.
|
|
309
|
-
const all = offsets.current.slice(0, count);
|
|
310
|
-
if (all.length !== count || all.some(o => !o)) return;
|
|
311
|
-
setSnapOffsets(all.map(targetFor));
|
|
312
|
-
}, [count, targetFor]);
|
|
346
|
+
}, [computeStops, trackWidth]);
|
|
347
|
+
const recomputeStops = useCallback(() => {
|
|
348
|
+
const next = computeStops();
|
|
349
|
+
if (next) setStops(next);
|
|
350
|
+
}, [computeStops]);
|
|
313
351
|
const reportOffset = useCallback((index, x, width) => {
|
|
314
352
|
offsets.current[index] = {
|
|
315
353
|
x,
|
|
316
354
|
width
|
|
317
355
|
};
|
|
318
|
-
|
|
356
|
+
recomputeStops();
|
|
319
357
|
measure();
|
|
320
|
-
}, [measure,
|
|
358
|
+
}, [measure, recomputeStops]);
|
|
321
359
|
useEffect(() => {
|
|
322
|
-
|
|
360
|
+
recomputeStops();
|
|
323
361
|
measure();
|
|
324
|
-
}, [
|
|
325
|
-
const
|
|
326
|
-
|
|
327
|
-
if (!target) return;
|
|
362
|
+
}, [recomputeStops, measure]);
|
|
363
|
+
const scrollToStop = stop => {
|
|
364
|
+
if (!stop) return;
|
|
328
365
|
scrollRef.current?.scrollTo({
|
|
329
|
-
x:
|
|
366
|
+
x: stop.offset,
|
|
330
367
|
animated: !reducedMotion
|
|
331
368
|
});
|
|
332
369
|
};
|
|
333
370
|
|
|
334
371
|
/**
|
|
335
|
-
* The arrows step from where the track IS,
|
|
336
|
-
*
|
|
337
|
-
*
|
|
338
|
-
* one" is often where the track already rests, and an index step would scroll
|
|
339
|
-
* nowhere and stay stuck there. Step to the nearest DISTINCT resting place
|
|
340
|
-
* instead (1px of slack, as in `measure`).
|
|
372
|
+
* The arrows step from where the track IS, to the nearest stop before or after
|
|
373
|
+
* it (1px of slack, as in `measure`) — never by slide index, which near the
|
|
374
|
+
* end names a slide whose stop the track already rests at.
|
|
341
375
|
*/
|
|
342
376
|
const step = direction => {
|
|
377
|
+
const all = computeStops();
|
|
378
|
+
if (!all) return;
|
|
343
379
|
const x = scroll.current.x;
|
|
344
|
-
|
|
345
|
-
const next = direction === 1 ? targets.filter(t => t > x + 1).reduce((a, b) => Math.min(a, b), Number.POSITIVE_INFINITY) : targets.filter(t => t < x - 1).reduce((a, b) => Math.max(a, b), Number.NEGATIVE_INFINITY);
|
|
346
|
-
if (!Number.isFinite(next)) return;
|
|
347
|
-
scrollRef.current?.scrollTo({
|
|
348
|
-
x: next,
|
|
349
|
-
animated: !reducedMotion
|
|
350
|
-
});
|
|
380
|
+
scrollToStop(direction === 1 ? all.find(stop => stop.offset > x + 1) : [...all].reverse().find(stop => stop.offset < x - 1));
|
|
351
381
|
};
|
|
352
382
|
const onScroll = event => {
|
|
353
383
|
const {
|
|
@@ -365,9 +395,10 @@ const CarouselComponent = function Carousel({
|
|
|
365
395
|
...scroll.current,
|
|
366
396
|
contentWidth: width
|
|
367
397
|
};
|
|
368
|
-
|
|
398
|
+
recomputeStops();
|
|
369
399
|
measure();
|
|
370
400
|
};
|
|
401
|
+
const dotCount = stops.length > 0 ? stops.length : count;
|
|
371
402
|
const contextValue = useMemo(() => ({
|
|
372
403
|
trackWidth,
|
|
373
404
|
count,
|
|
@@ -440,7 +471,7 @@ const CarouselComponent = function Carousel({
|
|
|
440
471
|
onScroll: onScroll,
|
|
441
472
|
onContentSizeChange: onContentSizeChange,
|
|
442
473
|
onLayout: event => setTrackWidth(event.nativeEvent.layout.width),
|
|
443
|
-
snapToOffsets: IS_WEB ? undefined :
|
|
474
|
+
snapToOffsets: IS_WEB ? undefined : stops.map(stop => stop.offset),
|
|
444
475
|
decelerationRate: IS_WEB ? undefined : 'fast',
|
|
445
476
|
disableIntervalMomentum: true,
|
|
446
477
|
style: trackStyle,
|
|
@@ -453,7 +484,7 @@ const CarouselComponent = function Carousel({
|
|
|
453
484
|
children: child
|
|
454
485
|
}, child.key ?? index))
|
|
455
486
|
})
|
|
456
|
-
}), showDots &&
|
|
487
|
+
}), showDots && dotCount > 1 ? /*#__PURE__*/_jsx(View, {
|
|
457
488
|
style: {
|
|
458
489
|
flexDirection: 'row',
|
|
459
490
|
alignItems: 'center',
|
|
@@ -462,14 +493,20 @@ const CarouselComponent = function Carousel({
|
|
|
462
493
|
paddingHorizontal: inset
|
|
463
494
|
},
|
|
464
495
|
children: Array.from({
|
|
465
|
-
length:
|
|
466
|
-
}, (_, index) =>
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
496
|
+
length: dotCount
|
|
497
|
+
}, (_, index) => {
|
|
498
|
+
// One dot per STOP: slides that share a resting place share a dot,
|
|
499
|
+
// so no dot scrolls nowhere. Until the slides are measured there is
|
|
500
|
+
// one per slide, which is what full-width slides settle on anyway.
|
|
501
|
+
const slide = stops[index]?.slide ?? index;
|
|
502
|
+
return /*#__PURE__*/_jsx(CarouselDot, {
|
|
503
|
+
active: index === active,
|
|
504
|
+
paint: paint,
|
|
505
|
+
label: dotLabel ? dotLabel(slide + 1) : `Go to slide ${slide + 1}`,
|
|
506
|
+
reducedMotion: reducedMotion,
|
|
507
|
+
onPress: () => scrollToStop(stops[index])
|
|
508
|
+
}, index);
|
|
509
|
+
})
|
|
473
510
|
}) : null]
|
|
474
511
|
});
|
|
475
512
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Children","isValidElement","memo","useCallback","useContext","useEffect","useMemo","useRef","useState","Animated","Platform","Pressable","ScrollView","View","useReducedMotion","Button","resolveButtonRamps","RiArrowLeftSLine","RiArrowRightSLine","useInteractionState","useInteractiveWebCss","borderRadius","webDataSet","useTheme","CarouselContext","CarouselItemIndexContext","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","IS_WEB","OS","DOT_TRANSITION_MS","DOT_HEIGHT","DOT_WIDTH","DOT_ACTIVE_WIDTH","resolveCarouselPaint","theme","accent","dotActive","colors","text","dot","backgroundSecondary","dotHover","textSecondary","ring","STYLE_ID","TRACK","DOT","BLOOM_CAROUSEL_CSS","CarouselItemComponent","CarouselItem","children","width","accessibilityLabel","style","testID","ctx","index","reportOffset","onLayout","event","x","w","nativeEvent","layout","slideWidth","trackWidth","undefined","bloomCarouselItem","role","count","flexShrink","displayName","CarouselDot","active","paint","label","reducedMotion","onPress","state","hovered","onIn","onOut","Value","current","to","setValue","timing","toValue","duration","useNativeDriver","start","background","bloomCarouselDot","accessibilityRole","onHoverIn","onHoverOut","hitSlop","top","bottom","left","right","height","full","backgroundColor","CarouselComponent","Carousel","header","showArrows","showDots","align","gap","inset","onIndexChange","previousLabel","nextLabel","dotLabel","slides","toArray","filter","length","scrollRef","offsets","scroll","contentWidth","setTrackWidth","snapOffsets","setSnapOffsets","setActive","atStart","setAtStart","atEnd","setAtEnd","onIndexChangeRef","activeRef","measure","viewport","end","all","slice","next","shortest","Number","POSITIVE_INFINITY","forEach","item","distance","Math","abs","targetFor","raw","max","min","recomputeSnaps","some","o","map","scrollToIndex","target","scrollTo","animated","step","direction","targets","Boolean","t","reduce","a","b","NEGATIVE_INFINITY","isFinite","onScroll","contentOffset","contentSize","onContentSizeChange","contextValue","trackStyle","flexDirection","alignItems","paddingHorizontal","flex","minWidth","size","icon","disabled","appearance","tone","Provider","value","ref","bloomCarouselTrack","tabIndex","horizontal","showsHorizontalScrollIndicator","scrollEventThrottle","snapToOffsets","decelerationRate","disableIntervalMomentum","contentContainerStyle","child","key","justifyContent","Array","from","_"],"sourceRoot":"../../../src","sources":["carousel/Carousel.tsx"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","Children","isValidElement","memo","useCallback","useContext","useEffect","useMemo","useRef","useState","Animated","Platform","Pressable","ScrollView","View","useReducedMotion","Button","resolveButtonRamps","RiArrowLeftSLine","RiArrowRightSLine","useInteractionState","useInteractiveWebCss","borderRadius","webDataSet","useTheme","CarouselContext","CarouselItemIndexContext","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","IS_WEB","OS","DOT_TRANSITION_MS","DOT_HEIGHT","DOT_WIDTH","DOT_ACTIVE_WIDTH","resolveCarouselPaint","theme","accent","dotActive","colors","text","dot","backgroundSecondary","dotHover","textSecondary","ring","STYLE_ID","TRACK","DOT","BLOOM_CAROUSEL_CSS","CarouselItemComponent","CarouselItem","children","width","accessibilityLabel","style","testID","ctx","index","reportOffset","onLayout","event","x","w","nativeEvent","layout","slideWidth","trackWidth","undefined","bloomCarouselItem","role","count","flexShrink","displayName","CarouselDot","active","paint","label","reducedMotion","onPress","state","hovered","onIn","onOut","Value","current","to","setValue","timing","toValue","duration","useNativeDriver","start","background","bloomCarouselDot","accessibilityRole","onHoverIn","onHoverOut","hitSlop","top","bottom","left","right","height","full","backgroundColor","toStops","resting","stops","forEach","offset","slide","last","length","Math","abs","push","end","CarouselComponent","Carousel","header","showArrows","showDots","align","gap","inset","onIndexChange","previousLabel","nextLabel","dotLabel","slides","toArray","filter","scrollRef","offsets","scroll","contentWidth","setTrackWidth","setStops","setActive","atStart","setAtStart","atEnd","setAtEnd","onIndexChangeRef","activeSlideRef","targetFor","item","raw","max","min","computeStops","all","slice","some","o","map","measure","viewport","next","shortest","Number","POSITIVE_INFINITY","stop","distance","recomputeStops","scrollToStop","scrollTo","animated","step","direction","find","reverse","onScroll","contentOffset","contentSize","onContentSizeChange","dotCount","contextValue","trackStyle","flexDirection","alignItems","paddingHorizontal","flex","minWidth","size","icon","disabled","appearance","tone","Provider","value","ref","bloomCarouselTrack","tabIndex","horizontal","showsHorizontalScrollIndicator","scrollEventThrottle","snapToOffsets","decelerationRate","disableIntervalMomentum","contentContainerStyle","child","key","justifyContent","Array","from","_"],"sourceRoot":"../../../src","sources":["carousel/Carousel.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../../src/carousel/Carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAUN,MAAM,OAAO,CAAC;AAsBf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAgChE,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAQhE;AA6FD,eAAO,MAAM,YAAY,sFA9BtB,iBAAiB,6CA8BmC,CAAC;
|
|
1
|
+
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../../src/carousel/Carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAUN,MAAM,OAAO,CAAC;AAsBf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAgChE,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAQhE;AA6FD,eAAO,MAAM,YAAY,sFA9BtB,iBAAiB,6CA8BmC,CAAC;AA2VxD,eAAO,MAAM,QAAQ,mLA1NlB,aAAa,6CA0N+B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../../src/carousel/Carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAUN,MAAM,OAAO,CAAC;AAsBf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAgChE,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAQhE;AA6FD,eAAO,MAAM,YAAY,sFA9BtB,iBAAiB,6CA8BmC,CAAC;
|
|
1
|
+
{"version":3,"file":"Carousel.d.ts","sourceRoot":"","sources":["../../../../src/carousel/Carousel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAUN,MAAM,OAAO,CAAC;AAsBf,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAG5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAgChE,UAAU,aAAa;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAQhE;AA6FD,eAAO,MAAM,YAAY,sFA9BtB,iBAAiB,6CA8BmC,CAAC;AA2VxD,eAAO,MAAM,QAAQ,mLA1NlB,aAAa,6CA0N+B,CAAC"}
|
package/package.json
CHANGED
|
@@ -265,6 +265,35 @@ interface SlideOffset {
|
|
|
265
265
|
width: number;
|
|
266
266
|
}
|
|
267
267
|
|
|
268
|
+
/**
|
|
269
|
+
* A place the track can come to rest, and the slide it stands for. Slides
|
|
270
|
+
* narrower than the track share one: every slide that cannot reach the start
|
|
271
|
+
* edge clamps to the same end offset, so the end is ONE stop however many slides
|
|
272
|
+
* it holds.
|
|
273
|
+
*/
|
|
274
|
+
interface Stop {
|
|
275
|
+
offset: number;
|
|
276
|
+
slide: number;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
/**
|
|
280
|
+
* Collapse per-slide resting offsets (ascending) into distinct stops, 1px of
|
|
281
|
+
* slack for fractional hi-DPI offsets. A shared stop stands for its FIRST slide,
|
|
282
|
+
* except the end, which stands for the LAST — the far end is where the last
|
|
283
|
+
* slide is, and naming anything else would leave it unreachable.
|
|
284
|
+
*/
|
|
285
|
+
function toStops(resting: readonly number[]): Stop[] {
|
|
286
|
+
const stops: Stop[] = [];
|
|
287
|
+
resting.forEach((offset, slide) => {
|
|
288
|
+
const last = stops[stops.length - 1];
|
|
289
|
+
if (last && Math.abs(offset - last.offset) <= 1) return;
|
|
290
|
+
stops.push({ offset, slide });
|
|
291
|
+
});
|
|
292
|
+
const end = stops[stops.length - 1];
|
|
293
|
+
if (end) end.slide = resting.length - 1;
|
|
294
|
+
return stops;
|
|
295
|
+
}
|
|
296
|
+
|
|
268
297
|
const CarouselComponent = function Carousel({
|
|
269
298
|
children,
|
|
270
299
|
accessibilityLabel,
|
|
@@ -293,14 +322,34 @@ const CarouselComponent = function Carousel({
|
|
|
293
322
|
const offsets = useRef<SlideOffset[]>([]);
|
|
294
323
|
const scroll = useRef({ x: 0, contentWidth: 0 });
|
|
295
324
|
const [trackWidth, setTrackWidth] = useState(0);
|
|
296
|
-
const [
|
|
325
|
+
const [stops, setStops] = useState<Stop[]>([]);
|
|
297
326
|
const [active, setActive] = useState(0);
|
|
298
327
|
const [atStart, setAtStart] = useState(true);
|
|
299
328
|
const [atEnd, setAtEnd] = useState(false);
|
|
300
329
|
|
|
301
330
|
const onIndexChangeRef = useRef(onIndexChange);
|
|
302
331
|
onIndexChangeRef.current = onIndexChange;
|
|
303
|
-
const
|
|
332
|
+
const activeSlideRef = useRef(0);
|
|
333
|
+
|
|
334
|
+
const targetFor = useCallback(
|
|
335
|
+
(item: SlideOffset) => {
|
|
336
|
+
const raw = align === 'center' ? item.x - (trackWidth - item.width) / 2 : item.x - inset;
|
|
337
|
+
const max = Math.max(0, scroll.current.contentWidth - trackWidth);
|
|
338
|
+
return Math.min(Math.max(0, raw), max);
|
|
339
|
+
},
|
|
340
|
+
[align, inset, trackWidth],
|
|
341
|
+
);
|
|
342
|
+
|
|
343
|
+
/**
|
|
344
|
+
* The distinct places the track can rest — or `null` until every slide has
|
|
345
|
+
* been measured. Arrows, dots, snapping and the active slide all read this
|
|
346
|
+
* ONE list, so they cannot disagree about where the track can go.
|
|
347
|
+
*/
|
|
348
|
+
const computeStops = useCallback((): Stop[] | null => {
|
|
349
|
+
const all = offsets.current.slice(0, count);
|
|
350
|
+
if (all.length !== count || all.some((o) => !o)) return null;
|
|
351
|
+
return toStops(all.map(targetFor));
|
|
352
|
+
}, [count, targetFor]);
|
|
304
353
|
|
|
305
354
|
const measure = useCallback(() => {
|
|
306
355
|
const { x, contentWidth } = scroll.current;
|
|
@@ -312,20 +361,20 @@ const CarouselComponent = function Carousel({
|
|
|
312
361
|
setAtStart(start);
|
|
313
362
|
setAtEnd(end);
|
|
314
363
|
|
|
315
|
-
const all =
|
|
316
|
-
if (all.length === 0) return;
|
|
364
|
+
const all = computeStops();
|
|
365
|
+
if (!all || all.length === 0) return;
|
|
317
366
|
|
|
318
|
-
|
|
367
|
+
// The ends are pinned, not measured: within 1px of either end the first/last
|
|
368
|
+
// stop is active. Between them, the stop nearest the scroll offset — compared
|
|
369
|
+
// against where each stop RESTS (inset and centring included), not where its
|
|
370
|
+
// slide sits in the content.
|
|
371
|
+
let next = 0;
|
|
319
372
|
if (end) {
|
|
320
|
-
next =
|
|
321
|
-
} else if (start) {
|
|
322
|
-
next = 0;
|
|
323
|
-
} else {
|
|
324
|
-
next = 0;
|
|
373
|
+
next = all.length - 1;
|
|
374
|
+
} else if (!start) {
|
|
325
375
|
let shortest = Number.POSITIVE_INFINITY;
|
|
326
|
-
all.forEach((
|
|
327
|
-
|
|
328
|
-
const distance = Math.abs(item.x - x);
|
|
376
|
+
all.forEach((stop, index) => {
|
|
377
|
+
const distance = Math.abs(stop.offset - x);
|
|
329
378
|
if (distance < shortest) {
|
|
330
379
|
shortest = distance;
|
|
331
380
|
next = index;
|
|
@@ -333,68 +382,51 @@ const CarouselComponent = function Carousel({
|
|
|
333
382
|
});
|
|
334
383
|
}
|
|
335
384
|
setActive(next);
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
385
|
+
const slide = all[next]?.slide ?? 0;
|
|
386
|
+
if (slide !== activeSlideRef.current) {
|
|
387
|
+
activeSlideRef.current = slide;
|
|
388
|
+
onIndexChangeRef.current?.(slide);
|
|
339
389
|
}
|
|
340
|
-
}, [
|
|
341
|
-
|
|
342
|
-
const targetFor = useCallback(
|
|
343
|
-
(item: SlideOffset) => {
|
|
344
|
-
const raw = align === 'center' ? item.x - (trackWidth - item.width) / 2 : item.x - inset;
|
|
345
|
-
const max = Math.max(0, scroll.current.contentWidth - trackWidth);
|
|
346
|
-
return Math.min(Math.max(0, raw), max);
|
|
347
|
-
},
|
|
348
|
-
[align, inset, trackWidth],
|
|
349
|
-
);
|
|
390
|
+
}, [computeStops, trackWidth]);
|
|
350
391
|
|
|
351
|
-
const
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
setSnapOffsets(all.map(targetFor));
|
|
356
|
-
}, [count, targetFor]);
|
|
392
|
+
const recomputeStops = useCallback(() => {
|
|
393
|
+
const next = computeStops();
|
|
394
|
+
if (next) setStops(next);
|
|
395
|
+
}, [computeStops]);
|
|
357
396
|
|
|
358
397
|
const reportOffset = useCallback(
|
|
359
398
|
(index: number, x: number, width: number) => {
|
|
360
399
|
offsets.current[index] = { x, width };
|
|
361
|
-
|
|
400
|
+
recomputeStops();
|
|
362
401
|
measure();
|
|
363
402
|
},
|
|
364
|
-
[measure,
|
|
403
|
+
[measure, recomputeStops],
|
|
365
404
|
);
|
|
366
405
|
|
|
367
406
|
useEffect(() => {
|
|
368
|
-
|
|
407
|
+
recomputeStops();
|
|
369
408
|
measure();
|
|
370
|
-
}, [
|
|
409
|
+
}, [recomputeStops, measure]);
|
|
371
410
|
|
|
372
|
-
const
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
scrollRef.current?.scrollTo({ x: targetFor(target), animated: !reducedMotion });
|
|
411
|
+
const scrollToStop = (stop: Stop | undefined) => {
|
|
412
|
+
if (!stop) return;
|
|
413
|
+
scrollRef.current?.scrollTo({ x: stop.offset, animated: !reducedMotion });
|
|
376
414
|
};
|
|
377
415
|
|
|
378
416
|
/**
|
|
379
|
-
* The arrows step from where the track IS,
|
|
380
|
-
*
|
|
381
|
-
*
|
|
382
|
-
* one" is often where the track already rests, and an index step would scroll
|
|
383
|
-
* nowhere and stay stuck there. Step to the nearest DISTINCT resting place
|
|
384
|
-
* instead (1px of slack, as in `measure`).
|
|
417
|
+
* The arrows step from where the track IS, to the nearest stop before or after
|
|
418
|
+
* it (1px of slack, as in `measure`) — never by slide index, which near the
|
|
419
|
+
* end names a slide whose stop the track already rests at.
|
|
385
420
|
*/
|
|
386
421
|
const step = (direction: -1 | 1) => {
|
|
422
|
+
const all = computeStops();
|
|
423
|
+
if (!all) return;
|
|
387
424
|
const x = scroll.current.x;
|
|
388
|
-
|
|
389
|
-
.slice(0, count)
|
|
390
|
-
.filter((item): item is SlideOffset => Boolean(item))
|
|
391
|
-
.map(targetFor);
|
|
392
|
-
const next =
|
|
425
|
+
scrollToStop(
|
|
393
426
|
direction === 1
|
|
394
|
-
?
|
|
395
|
-
:
|
|
396
|
-
|
|
397
|
-
scrollRef.current?.scrollTo({ x: next, animated: !reducedMotion });
|
|
427
|
+
? all.find((stop) => stop.offset > x + 1)
|
|
428
|
+
: [...all].reverse().find((stop) => stop.offset < x - 1),
|
|
429
|
+
);
|
|
398
430
|
};
|
|
399
431
|
|
|
400
432
|
const onScroll = (event: NativeSyntheticEvent<NativeScrollEvent>) => {
|
|
@@ -405,10 +437,12 @@ const CarouselComponent = function Carousel({
|
|
|
405
437
|
|
|
406
438
|
const onContentSizeChange = (width: number) => {
|
|
407
439
|
scroll.current = { ...scroll.current, contentWidth: width };
|
|
408
|
-
|
|
440
|
+
recomputeStops();
|
|
409
441
|
measure();
|
|
410
442
|
};
|
|
411
443
|
|
|
444
|
+
const dotCount = stops.length > 0 ? stops.length : count;
|
|
445
|
+
|
|
412
446
|
const contextValue = useMemo(
|
|
413
447
|
() => ({ trackWidth, count, reportOffset }),
|
|
414
448
|
[trackWidth, count, reportOffset],
|
|
@@ -455,7 +489,7 @@ const CarouselComponent = function Carousel({
|
|
|
455
489
|
onScroll={onScroll}
|
|
456
490
|
onContentSizeChange={onContentSizeChange}
|
|
457
491
|
onLayout={(event) => setTrackWidth(event.nativeEvent.layout.width)}
|
|
458
|
-
snapToOffsets={IS_WEB ? undefined :
|
|
492
|
+
snapToOffsets={IS_WEB ? undefined : stops.map((stop) => stop.offset)}
|
|
459
493
|
decelerationRate={IS_WEB ? undefined : 'fast'}
|
|
460
494
|
disableIntervalMomentum
|
|
461
495
|
style={trackStyle}
|
|
@@ -469,18 +503,24 @@ const CarouselComponent = function Carousel({
|
|
|
469
503
|
</ScrollView>
|
|
470
504
|
</CarouselContext.Provider>
|
|
471
505
|
|
|
472
|
-
{showDots &&
|
|
506
|
+
{showDots && dotCount > 1 ? (
|
|
473
507
|
<View style={{ flexDirection: 'row', alignItems: 'center', justifyContent: 'center', gap: 6, paddingHorizontal: inset }}>
|
|
474
|
-
{Array.from({ length:
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
508
|
+
{Array.from({ length: dotCount }, (_, index) => {
|
|
509
|
+
// One dot per STOP: slides that share a resting place share a dot,
|
|
510
|
+
// so no dot scrolls nowhere. Until the slides are measured there is
|
|
511
|
+
// one per slide, which is what full-width slides settle on anyway.
|
|
512
|
+
const slide = stops[index]?.slide ?? index;
|
|
513
|
+
return (
|
|
514
|
+
<CarouselDot
|
|
515
|
+
key={index}
|
|
516
|
+
active={index === active}
|
|
517
|
+
paint={paint}
|
|
518
|
+
label={dotLabel ? dotLabel(slide + 1) : `Go to slide ${slide + 1}`}
|
|
519
|
+
reducedMotion={reducedMotion}
|
|
520
|
+
onPress={() => scrollToStop(stops[index])}
|
|
521
|
+
/>
|
|
522
|
+
);
|
|
523
|
+
})}
|
|
484
524
|
</View>
|
|
485
525
|
) : null}
|
|
486
526
|
</View>
|