@fluentui/react-carousel 9.1.0 → 9.3.0
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/CHANGELOG.md +44 -2
- package/dist/index.d.ts +58 -2
- package/lib/Carousel.js.map +1 -1
- package/lib/CarouselAutoplayButton.js.map +1 -1
- package/lib/CarouselButton.js.map +1 -1
- package/lib/CarouselCard.js.map +1 -1
- package/lib/CarouselContext.js.map +1 -1
- package/lib/CarouselNav.js.map +1 -1
- package/lib/CarouselNavButton.js.map +1 -1
- package/lib/CarouselNavContainer.js.map +1 -1
- package/lib/CarouselNavImageButton.js.map +1 -1
- package/lib/CarouselSlider.js.map +1 -1
- package/lib/CarouselViewport.js +1 -0
- package/lib/CarouselViewport.js.map +1 -0
- package/lib/components/Carousel/Carousel.js +2 -3
- package/lib/components/Carousel/Carousel.js.map +1 -1
- package/lib/components/Carousel/Carousel.types.js.map +1 -1
- package/lib/components/Carousel/index.js.map +1 -1
- package/lib/components/Carousel/renderCarousel.js.map +1 -1
- package/lib/components/Carousel/useCarousel.js +9 -6
- package/lib/components/Carousel/useCarousel.js.map +1 -1
- package/lib/components/Carousel/useCarouselContextValues.js +5 -3
- package/lib/components/Carousel/useCarouselContextValues.js.map +1 -1
- package/lib/components/Carousel/useCarouselStyles.styles.js +3 -10
- package/lib/components/Carousel/useCarouselStyles.styles.js.map +1 -1
- package/lib/components/CarouselAutoplayButton/CarouselAutoplayButton.js +2 -3
- package/lib/components/CarouselAutoplayButton/CarouselAutoplayButton.js.map +1 -1
- package/lib/components/CarouselAutoplayButton/CarouselAutoplayButton.types.js.map +1 -1
- package/lib/components/CarouselAutoplayButton/index.js.map +1 -1
- package/lib/components/CarouselAutoplayButton/renderCarouselAutoplayButton.js +1 -1
- package/lib/components/CarouselAutoplayButton/renderCarouselAutoplayButton.js.map +1 -1
- package/lib/components/CarouselAutoplayButton/useCarouselAutoplayButton.js.map +1 -1
- package/lib/components/CarouselAutoplayButton/useCarouselAutoplayButtonStyles.styles.js +1 -2
- package/lib/components/CarouselButton/CarouselButton.js +2 -3
- package/lib/components/CarouselButton/CarouselButton.js.map +1 -1
- package/lib/components/CarouselButton/CarouselButton.types.js.map +1 -1
- package/lib/components/CarouselButton/index.js.map +1 -1
- package/lib/components/CarouselButton/renderCarouselButton.js +1 -1
- package/lib/components/CarouselButton/renderCarouselButton.js.map +1 -1
- package/lib/components/CarouselButton/useCarouselButton.js.map +1 -1
- package/lib/components/CarouselButton/useCarouselButtonStyles.styles.js +1 -2
- package/lib/components/CarouselCard/CarouselCard.js +2 -3
- package/lib/components/CarouselCard/CarouselCard.js.map +1 -1
- package/lib/components/CarouselCard/CarouselCard.types.js.map +1 -1
- package/lib/components/CarouselCard/index.js.map +1 -1
- package/lib/components/CarouselCard/renderCarouselCard.js.map +1 -1
- package/lib/components/CarouselCard/useCarouselCard.js +17 -10
- package/lib/components/CarouselCard/useCarouselCard.js.map +1 -1
- package/lib/components/CarouselCard/useCarouselCardStyles.styles.js +1 -2
- package/lib/components/CarouselContext.js +2 -1
- package/lib/components/CarouselContext.js.map +1 -1
- package/lib/components/CarouselContext.types.js.map +1 -1
- package/lib/components/CarouselNav/CarouselNav.js +2 -3
- package/lib/components/CarouselNav/CarouselNav.js.map +1 -1
- package/lib/components/CarouselNav/CarouselNav.types.js.map +1 -1
- package/lib/components/CarouselNav/CarouselNavContext.js.map +1 -1
- package/lib/components/CarouselNav/CarouselNavIndexContext.js.map +1 -1
- package/lib/components/CarouselNav/index.js.map +1 -1
- package/lib/components/CarouselNav/renderCarouselNav.js.map +1 -1
- package/lib/components/CarouselNav/useCarouselNav.js.map +1 -1
- package/lib/components/CarouselNav/useCarouselNavStyles.styles.js +1 -2
- package/lib/components/CarouselNavButton/CarouselNavButton.js +2 -3
- package/lib/components/CarouselNavButton/CarouselNavButton.js.map +1 -1
- package/lib/components/CarouselNavButton/CarouselNavButton.types.js.map +1 -1
- package/lib/components/CarouselNavButton/index.js.map +1 -1
- package/lib/components/CarouselNavButton/renderCarouselNavButton.js.map +1 -1
- package/lib/components/CarouselNavButton/useCarouselNavButton.js.map +1 -1
- package/lib/components/CarouselNavButton/useCarouselNavButtonStyles.styles.js +1 -2
- package/lib/components/CarouselNavContainer/CarouselNavContainer.js +2 -8
- package/lib/components/CarouselNavContainer/CarouselNavContainer.js.map +1 -1
- package/lib/components/CarouselNavContainer/CarouselNavContainer.types.js.map +1 -1
- package/lib/components/CarouselNavContainer/index.js.map +1 -1
- package/lib/components/CarouselNavContainer/renderCarouselNavContainer.js.map +1 -1
- package/lib/components/CarouselNavContainer/useCarouselNavContainer.js.map +1 -1
- package/lib/components/CarouselNavContainer/useCarouselNavContainerStyles.styles.js +1 -2
- package/lib/components/CarouselNavImageButton/CarouselNavImageButton.js +2 -3
- package/lib/components/CarouselNavImageButton/CarouselNavImageButton.js.map +1 -1
- package/lib/components/CarouselNavImageButton/CarouselNavImageButton.types.js.map +1 -1
- package/lib/components/CarouselNavImageButton/index.js.map +1 -1
- package/lib/components/CarouselNavImageButton/renderCarouselNavImageButton.js.map +1 -1
- package/lib/components/CarouselNavImageButton/useCarouselNavImageButton.js.map +1 -1
- package/lib/components/CarouselNavImageButton/useCarouselNavImageButtonStyles.styles.js +1 -2
- package/lib/components/CarouselSlider/CarouselSlider.js +2 -3
- package/lib/components/CarouselSlider/CarouselSlider.js.map +1 -1
- package/lib/components/CarouselSlider/CarouselSlider.types.js +3 -1
- package/lib/components/CarouselSlider/CarouselSlider.types.js.map +1 -1
- package/lib/components/CarouselSlider/CarouselSliderContext.js.map +1 -1
- package/lib/components/CarouselSlider/index.js.map +1 -1
- package/lib/components/CarouselSlider/renderCarouselSlider.js.map +1 -1
- package/lib/components/CarouselSlider/useCarouselSlider.js +3 -1
- package/lib/components/CarouselSlider/useCarouselSlider.js.map +1 -1
- package/lib/components/CarouselSlider/useCarouselSliderStyles.styles.js +1 -2
- package/lib/components/CarouselViewport/CarouselViewport.js +16 -0
- package/lib/components/CarouselViewport/CarouselViewport.js.map +1 -0
- package/lib/components/CarouselViewport/CarouselViewport.types.js +3 -0
- package/lib/components/CarouselViewport/CarouselViewport.types.js.map +1 -0
- package/lib/components/CarouselViewport/index.js +5 -0
- package/lib/components/CarouselViewport/index.js.map +1 -0
- package/lib/components/CarouselViewport/renderCarouselViewport.js +12 -0
- package/lib/components/CarouselViewport/renderCarouselViewport.js.map +1 -0
- package/lib/components/CarouselViewport/useCarouselViewport.js +28 -0
- package/lib/components/CarouselViewport/useCarouselViewport.js.map +1 -0
- package/lib/components/CarouselViewport/useCarouselViewportStyles.styles.js +25 -0
- package/lib/components/CarouselViewport/useCarouselViewportStyles.styles.js.map +1 -0
- package/lib/components/pointerEvents.js +58 -0
- package/lib/components/pointerEvents.js.map +1 -0
- package/lib/components/useEmblaCarousel.js +53 -30
- package/lib/components/useEmblaCarousel.js.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib-commonjs/Carousel.js.map +1 -1
- package/lib-commonjs/CarouselAutoplayButton.js.map +1 -1
- package/lib-commonjs/CarouselButton.js.map +1 -1
- package/lib-commonjs/CarouselCard.js.map +1 -1
- package/lib-commonjs/CarouselContext.js.map +1 -1
- package/lib-commonjs/CarouselNav.js.map +1 -1
- package/lib-commonjs/CarouselNavButton.js.map +1 -1
- package/lib-commonjs/CarouselNavContainer.js.map +1 -1
- package/lib-commonjs/CarouselNavImageButton.js.map +1 -1
- package/lib-commonjs/CarouselSlider.js.map +1 -1
- package/lib-commonjs/CarouselViewport.js +6 -0
- package/lib-commonjs/CarouselViewport.js.map +1 -0
- package/lib-commonjs/components/Carousel/Carousel.js +2 -3
- package/lib-commonjs/components/Carousel/Carousel.js.map +1 -1
- package/lib-commonjs/components/Carousel/Carousel.types.js.map +1 -1
- package/lib-commonjs/components/Carousel/index.js.map +1 -1
- package/lib-commonjs/components/Carousel/renderCarousel.js.map +1 -1
- package/lib-commonjs/components/Carousel/useCarousel.js +9 -6
- package/lib-commonjs/components/Carousel/useCarousel.js.map +1 -1
- package/lib-commonjs/components/Carousel/useCarouselContextValues.js +5 -3
- package/lib-commonjs/components/Carousel/useCarouselContextValues.js.map +1 -1
- package/lib-commonjs/components/Carousel/useCarouselStyles.styles.js +3 -12
- package/lib-commonjs/components/Carousel/useCarouselStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CarouselAutoplayButton/CarouselAutoplayButton.js +2 -3
- package/lib-commonjs/components/CarouselAutoplayButton/CarouselAutoplayButton.js.map +1 -1
- package/lib-commonjs/components/CarouselAutoplayButton/CarouselAutoplayButton.types.js.map +1 -1
- package/lib-commonjs/components/CarouselAutoplayButton/index.js.map +1 -1
- package/lib-commonjs/components/CarouselAutoplayButton/renderCarouselAutoplayButton.js.map +1 -1
- package/lib-commonjs/components/CarouselAutoplayButton/useCarouselAutoplayButton.js.map +1 -1
- package/lib-commonjs/components/CarouselAutoplayButton/useCarouselAutoplayButtonStyles.styles.js +1 -1
- package/lib-commonjs/components/CarouselButton/CarouselButton.js +2 -3
- package/lib-commonjs/components/CarouselButton/CarouselButton.js.map +1 -1
- package/lib-commonjs/components/CarouselButton/CarouselButton.types.js.map +1 -1
- package/lib-commonjs/components/CarouselButton/index.js.map +1 -1
- package/lib-commonjs/components/CarouselButton/renderCarouselButton.js.map +1 -1
- package/lib-commonjs/components/CarouselButton/useCarouselButton.js.map +1 -1
- package/lib-commonjs/components/CarouselButton/useCarouselButtonStyles.styles.js +1 -1
- package/lib-commonjs/components/CarouselCard/CarouselCard.js +2 -3
- package/lib-commonjs/components/CarouselCard/CarouselCard.js.map +1 -1
- package/lib-commonjs/components/CarouselCard/CarouselCard.types.js.map +1 -1
- package/lib-commonjs/components/CarouselCard/index.js.map +1 -1
- package/lib-commonjs/components/CarouselCard/renderCarouselCard.js.map +1 -1
- package/lib-commonjs/components/CarouselCard/useCarouselCard.js +16 -10
- package/lib-commonjs/components/CarouselCard/useCarouselCard.js.map +1 -1
- package/lib-commonjs/components/CarouselCard/useCarouselCardStyles.styles.js +1 -1
- package/lib-commonjs/components/CarouselContext.js +2 -1
- package/lib-commonjs/components/CarouselContext.js.map +1 -1
- package/lib-commonjs/components/CarouselContext.types.js.map +1 -1
- package/lib-commonjs/components/CarouselNav/CarouselNav.js +2 -3
- package/lib-commonjs/components/CarouselNav/CarouselNav.js.map +1 -1
- package/lib-commonjs/components/CarouselNav/CarouselNav.types.js.map +1 -1
- package/lib-commonjs/components/CarouselNav/CarouselNavContext.js.map +1 -1
- package/lib-commonjs/components/CarouselNav/CarouselNavIndexContext.js.map +1 -1
- package/lib-commonjs/components/CarouselNav/index.js.map +1 -1
- package/lib-commonjs/components/CarouselNav/renderCarouselNav.js.map +1 -1
- package/lib-commonjs/components/CarouselNav/useCarouselNav.js.map +1 -1
- package/lib-commonjs/components/CarouselNav/useCarouselNavStyles.styles.js +1 -1
- package/lib-commonjs/components/CarouselNavButton/CarouselNavButton.js +2 -3
- package/lib-commonjs/components/CarouselNavButton/CarouselNavButton.js.map +1 -1
- package/lib-commonjs/components/CarouselNavButton/CarouselNavButton.types.js.map +1 -1
- package/lib-commonjs/components/CarouselNavButton/index.js.map +1 -1
- package/lib-commonjs/components/CarouselNavButton/renderCarouselNavButton.js.map +1 -1
- package/lib-commonjs/components/CarouselNavButton/useCarouselNavButton.js.map +1 -1
- package/lib-commonjs/components/CarouselNavButton/useCarouselNavButtonStyles.styles.js +1 -1
- package/lib-commonjs/components/CarouselNavContainer/CarouselNavContainer.js +2 -8
- package/lib-commonjs/components/CarouselNavContainer/CarouselNavContainer.js.map +1 -1
- package/lib-commonjs/components/CarouselNavContainer/CarouselNavContainer.types.js.map +1 -1
- package/lib-commonjs/components/CarouselNavContainer/index.js.map +1 -1
- package/lib-commonjs/components/CarouselNavContainer/renderCarouselNavContainer.js.map +1 -1
- package/lib-commonjs/components/CarouselNavContainer/useCarouselNavContainer.js.map +1 -1
- package/lib-commonjs/components/CarouselNavContainer/useCarouselNavContainerStyles.styles.js +1 -1
- package/lib-commonjs/components/CarouselNavImageButton/CarouselNavImageButton.js +2 -3
- package/lib-commonjs/components/CarouselNavImageButton/CarouselNavImageButton.js.map +1 -1
- package/lib-commonjs/components/CarouselNavImageButton/CarouselNavImageButton.types.js.map +1 -1
- package/lib-commonjs/components/CarouselNavImageButton/index.js.map +1 -1
- package/lib-commonjs/components/CarouselNavImageButton/renderCarouselNavImageButton.js.map +1 -1
- package/lib-commonjs/components/CarouselNavImageButton/useCarouselNavImageButton.js.map +1 -1
- package/lib-commonjs/components/CarouselNavImageButton/useCarouselNavImageButtonStyles.styles.js +1 -1
- package/lib-commonjs/components/CarouselSlider/CarouselSlider.js +2 -3
- package/lib-commonjs/components/CarouselSlider/CarouselSlider.js.map +1 -1
- package/lib-commonjs/components/CarouselSlider/CarouselSlider.types.js +3 -1
- package/lib-commonjs/components/CarouselSlider/CarouselSlider.types.js.map +1 -1
- package/lib-commonjs/components/CarouselSlider/CarouselSliderContext.js.map +1 -1
- package/lib-commonjs/components/CarouselSlider/index.js.map +1 -1
- package/lib-commonjs/components/CarouselSlider/renderCarouselSlider.js.map +1 -1
- package/lib-commonjs/components/CarouselSlider/useCarouselSlider.js +3 -1
- package/lib-commonjs/components/CarouselSlider/useCarouselSlider.js.map +1 -1
- package/lib-commonjs/components/CarouselSlider/useCarouselSliderStyles.styles.js +1 -1
- package/lib-commonjs/components/CarouselViewport/CarouselViewport.js +25 -0
- package/lib-commonjs/components/CarouselViewport/CarouselViewport.js.map +1 -0
- package/lib-commonjs/components/CarouselViewport/CarouselViewport.types.js +6 -0
- package/lib-commonjs/components/CarouselViewport/CarouselViewport.types.js.map +1 -0
- package/lib-commonjs/components/CarouselViewport/index.js +10 -0
- package/lib-commonjs/components/CarouselViewport/index.js.map +1 -0
- package/lib-commonjs/components/CarouselViewport/renderCarouselViewport.js +20 -0
- package/lib-commonjs/components/CarouselViewport/renderCarouselViewport.js.map +1 -0
- package/lib-commonjs/components/CarouselViewport/useCarouselViewport.js +31 -0
- package/lib-commonjs/components/CarouselViewport/useCarouselViewport.js.map +1 -0
- package/lib-commonjs/components/CarouselViewport/useCarouselViewportStyles.styles.js +41 -0
- package/lib-commonjs/components/CarouselViewport/useCarouselViewportStyles.styles.js.map +1 -0
- package/lib-commonjs/components/pointerEvents.js +68 -0
- package/lib-commonjs/components/pointerEvents.js.map +1 -0
- package/lib-commonjs/components/useEmblaCarousel.js +52 -29
- package/lib-commonjs/components/useEmblaCarousel.js.map +1 -1
- package/lib-commonjs/index.js +16 -0
- package/lib-commonjs/index.js.map +1 -1
- package/package.json +12 -22
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "pointerEventPlugin", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return pointerEventPlugin;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _Carousel = require("../Carousel");
|
|
12
|
+
function pointerEventPlugin(options) {
|
|
13
|
+
let emblaApi;
|
|
14
|
+
let pointerEvent;
|
|
15
|
+
function documentDownListener(event) {
|
|
16
|
+
const targetDocument = emblaApi.containerNode().ownerDocument;
|
|
17
|
+
if (event.target) {
|
|
18
|
+
const targetNode = event.target;
|
|
19
|
+
if (targetNode.classList.contains(_Carousel.carouselClassNames.root) || emblaApi.containerNode().contains(targetNode)) {
|
|
20
|
+
pointerEvent = event;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
targetDocument.removeEventListener('mousedown', documentDownListener);
|
|
24
|
+
targetDocument.removeEventListener('pointerdown', documentDownListener);
|
|
25
|
+
}
|
|
26
|
+
function pointerUpListener() {
|
|
27
|
+
const targetDocument = emblaApi.containerNode().ownerDocument;
|
|
28
|
+
targetDocument.addEventListener('mousedown', documentDownListener);
|
|
29
|
+
targetDocument.addEventListener('pointerdown', documentDownListener);
|
|
30
|
+
}
|
|
31
|
+
function clearPointerEvent() {
|
|
32
|
+
pointerEvent = undefined;
|
|
33
|
+
pointerUpListener();
|
|
34
|
+
}
|
|
35
|
+
function selectListener() {
|
|
36
|
+
if (pointerEvent) {
|
|
37
|
+
var _emblaApi_selectedScrollSnap;
|
|
38
|
+
const newIndex = (_emblaApi_selectedScrollSnap = emblaApi.selectedScrollSnap()) !== null && _emblaApi_selectedScrollSnap !== void 0 ? _emblaApi_selectedScrollSnap : 0;
|
|
39
|
+
options.onSelectViaDrag(pointerEvent, newIndex);
|
|
40
|
+
}
|
|
41
|
+
clearPointerEvent();
|
|
42
|
+
}
|
|
43
|
+
function init(emblaApiInstance, optionsHandler) {
|
|
44
|
+
emblaApi = emblaApiInstance;
|
|
45
|
+
// Initialize the listener for first mouse/pointerDown event
|
|
46
|
+
const targetDocument = emblaApi.containerNode().ownerDocument;
|
|
47
|
+
targetDocument.addEventListener('mousedown', documentDownListener);
|
|
48
|
+
targetDocument.addEventListener('pointerdown', documentDownListener);
|
|
49
|
+
emblaApi.on('pointerUp', pointerUpListener);
|
|
50
|
+
emblaApi.on('select', selectListener);
|
|
51
|
+
// Settle is used to clear pointer in cases where active index does not change
|
|
52
|
+
emblaApi.on('settle', clearPointerEvent);
|
|
53
|
+
}
|
|
54
|
+
function destroy() {
|
|
55
|
+
const targetDocument = emblaApi.containerNode().ownerDocument;
|
|
56
|
+
targetDocument.removeEventListener('mousedown', documentDownListener);
|
|
57
|
+
targetDocument.removeEventListener('pointerdown', documentDownListener);
|
|
58
|
+
emblaApi.off('pointerUp', pointerUpListener);
|
|
59
|
+
emblaApi.off('select', selectListener);
|
|
60
|
+
emblaApi.off('settle', clearPointerEvent);
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
name: 'pointerEvent',
|
|
64
|
+
options,
|
|
65
|
+
init,
|
|
66
|
+
destroy
|
|
67
|
+
};
|
|
68
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/components/pointerEvents.ts"],"sourcesContent":["import type { CreatePluginType, EmblaCarouselType, OptionsHandlerType } from 'embla-carousel';\nimport { carouselClassNames } from '../Carousel';\n\nexport type PointerEventPluginOptions = {\n onSelectViaDrag: (event: PointerEvent | MouseEvent, index: number) => void;\n};\n\nexport type PointerEventPlugin = CreatePluginType<{}, PointerEventPluginOptions>;\n\nexport function pointerEventPlugin(options: PointerEventPluginOptions): PointerEventPlugin {\n let emblaApi: EmblaCarouselType;\n let pointerEvent: PointerEvent | MouseEvent | undefined;\n\n function documentDownListener(event: PointerEvent | MouseEvent) {\n const targetDocument = emblaApi.containerNode().ownerDocument;\n\n if (event.target) {\n const targetNode = event.target as Element;\n if (targetNode.classList.contains(carouselClassNames.root) || emblaApi.containerNode().contains(targetNode)) {\n pointerEvent = event;\n }\n }\n\n targetDocument.removeEventListener('mousedown', documentDownListener);\n targetDocument.removeEventListener('pointerdown', documentDownListener);\n }\n\n function pointerUpListener() {\n const targetDocument = emblaApi.containerNode().ownerDocument;\n\n targetDocument.addEventListener('mousedown', documentDownListener);\n targetDocument.addEventListener('pointerdown', documentDownListener);\n }\n\n function clearPointerEvent() {\n pointerEvent = undefined;\n pointerUpListener();\n }\n\n function selectListener() {\n if (pointerEvent) {\n const newIndex = emblaApi.selectedScrollSnap() ?? 0;\n\n options.onSelectViaDrag(pointerEvent, newIndex);\n }\n clearPointerEvent();\n }\n\n function init(emblaApiInstance: EmblaCarouselType, optionsHandler: OptionsHandlerType): void {\n emblaApi = emblaApiInstance;\n\n // Initialize the listener for first mouse/pointerDown event\n const targetDocument = emblaApi.containerNode().ownerDocument;\n targetDocument.addEventListener('mousedown', documentDownListener);\n targetDocument.addEventListener('pointerdown', documentDownListener);\n\n emblaApi.on('pointerUp', pointerUpListener);\n emblaApi.on('select', selectListener);\n // Settle is used to clear pointer in cases where active index does not change\n emblaApi.on('settle', clearPointerEvent);\n }\n\n function destroy(): void {\n const targetDocument = emblaApi.containerNode().ownerDocument;\n targetDocument.removeEventListener('mousedown', documentDownListener);\n targetDocument.removeEventListener('pointerdown', documentDownListener);\n emblaApi.off('pointerUp', pointerUpListener);\n emblaApi.off('select', selectListener);\n emblaApi.off('settle', clearPointerEvent);\n }\n\n return {\n name: 'pointerEvent',\n options,\n init,\n destroy,\n };\n}\n"],"names":["pointerEventPlugin","options","emblaApi","pointerEvent","documentDownListener","event","targetDocument","containerNode","ownerDocument","target","targetNode","classList","contains","carouselClassNames","root","removeEventListener","pointerUpListener","addEventListener","clearPointerEvent","undefined","selectListener","newIndex","selectedScrollSnap","onSelectViaDrag","init","emblaApiInstance","optionsHandler","on","destroy","off","name"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;+BASgBA;;;eAAAA;;;0BARmB;AAQ5B,SAASA,mBAAmBC,OAAkC;IACnE,IAAIC;IACJ,IAAIC;IAEJ,SAASC,qBAAqBC,KAAgC;QAC5D,MAAMC,iBAAiBJ,SAASK,aAAa,GAAGC,aAAa;QAE7D,IAAIH,MAAMI,MAAM,EAAE;YAChB,MAAMC,aAAaL,MAAMI,MAAM;YAC/B,IAAIC,WAAWC,SAAS,CAACC,QAAQ,CAACC,4BAAAA,CAAmBC,IAAI,KAAKZ,SAASK,aAAa,GAAGK,QAAQ,CAACF,aAAa;gBAC3GP,eAAeE;YACjB;QACF;QAEAC,eAAeS,mBAAmB,CAAC,aAAaX;QAChDE,eAAeS,mBAAmB,CAAC,eAAeX;IACpD;IAEA,SAASY;QACP,MAAMV,iBAAiBJ,SAASK,aAAa,GAAGC,aAAa;QAE7DF,eAAeW,gBAAgB,CAAC,aAAab;QAC7CE,eAAeW,gBAAgB,CAAC,eAAeb;IACjD;IAEA,SAASc;QACPf,eAAegB;QACfH;IACF;IAEA,SAASI;QACP,IAAIjB,cAAc;gBACCD;YAAjB,MAAMmB,WAAWnB,CAAAA,+BAAAA,SAASoB,kBAAkB,EAAA,MAAA,QAA3BpB,iCAAAA,KAAAA,IAAAA,+BAAiC;YAElDD,QAAQsB,eAAe,CAACpB,cAAckB;QACxC;QACAH;IACF;IAEA,SAASM,KAAKC,gBAAmC,EAAEC,cAAkC;QACnFxB,WAAWuB;QAEX,4DAA4D;QAC5D,MAAMnB,iBAAiBJ,SAASK,aAAa,GAAGC,aAAa;QAC7DF,eAAeW,gBAAgB,CAAC,aAAab;QAC7CE,eAAeW,gBAAgB,CAAC,eAAeb;QAE/CF,SAASyB,EAAE,CAAC,aAAaX;QACzBd,SAASyB,EAAE,CAAC,UAAUP;QACtB,8EAA8E;QAC9ElB,SAASyB,EAAE,CAAC,UAAUT;IACxB;IAEA,SAASU;QACP,MAAMtB,iBAAiBJ,SAASK,aAAa,GAAGC,aAAa;QAC7DF,eAAeS,mBAAmB,CAAC,aAAaX;QAChDE,eAAeS,mBAAmB,CAAC,eAAeX;QAClDF,SAAS2B,GAAG,CAAC,aAAab;QAC1Bd,SAAS2B,GAAG,CAAC,UAAUT;QACvBlB,SAAS2B,GAAG,CAAC,UAAUX;IACzB;IAEA,OAAO;QACLY,MAAM;QACN7B;QACAuB;QACAI;IACF;AACF"}
|
|
@@ -27,6 +27,8 @@ const _react = /*#__PURE__*/ _interop_require_wildcard._(require("react"));
|
|
|
27
27
|
const _useCarouselCardStylesstyles = require("./CarouselCard/useCarouselCardStyles.styles");
|
|
28
28
|
const _useCarouselSliderStylesstyles = require("./CarouselSlider/useCarouselSliderStyles.styles");
|
|
29
29
|
const _emblacarouselautoplay = /*#__PURE__*/ _interop_require_default._(require("embla-carousel-autoplay"));
|
|
30
|
+
const _emblacarouselfade = /*#__PURE__*/ _interop_require_default._(require("embla-carousel-fade"));
|
|
31
|
+
const _pointerEvents = require("./pointerEvents");
|
|
30
32
|
const sliderClassname = `.${_useCarouselSliderStylesstyles.carouselSliderClassNames.root}`;
|
|
31
33
|
const DEFAULT_EMBLA_OPTIONS = {
|
|
32
34
|
containScroll: 'trimSnaps',
|
|
@@ -49,12 +51,19 @@ function setTabsterDefault(element, isDefault) {
|
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
53
|
function useEmblaCarousel(options) {
|
|
52
|
-
const { align, direction, loop, slidesToScroll, watchDrag, containScroll } = options;
|
|
54
|
+
const { align, direction, loop, slidesToScroll, watchDrag, containScroll, motion, onDragIndexChange } = options;
|
|
53
55
|
const [activeIndex, setActiveIndex] = (0, _reactutilities.useControllableState)({
|
|
54
56
|
defaultState: options.defaultActiveIndex,
|
|
55
57
|
state: options.activeIndex,
|
|
56
58
|
initialState: 0
|
|
57
59
|
});
|
|
60
|
+
const onDragEvent = (0, _reactutilities.useEventCallback)((event, index)=>{
|
|
61
|
+
onDragIndexChange === null || onDragIndexChange === void 0 ? void 0 : onDragIndexChange(event, {
|
|
62
|
+
event,
|
|
63
|
+
type: 'drag',
|
|
64
|
+
index
|
|
65
|
+
});
|
|
66
|
+
});
|
|
58
67
|
const emblaOptions = _react.useRef({
|
|
59
68
|
align,
|
|
60
69
|
direction,
|
|
@@ -84,6 +93,30 @@ function useEmblaCarousel(options) {
|
|
|
84
93
|
}, [
|
|
85
94
|
resetAutoplay
|
|
86
95
|
]);
|
|
96
|
+
const getPlugins = _react.useCallback(()=>{
|
|
97
|
+
const plugins = [
|
|
98
|
+
(0, _emblacarouselautoplay.default)({
|
|
99
|
+
playOnInit: autoplayRef.current,
|
|
100
|
+
stopOnInteraction: !autoplayRef.current,
|
|
101
|
+
stopOnMouseEnter: true,
|
|
102
|
+
stopOnFocusIn: true
|
|
103
|
+
})
|
|
104
|
+
];
|
|
105
|
+
// Optionally add Fade plugin
|
|
106
|
+
if (motion === 'fade') {
|
|
107
|
+
plugins.push((0, _emblacarouselfade.default)());
|
|
108
|
+
}
|
|
109
|
+
if (watchDrag) {
|
|
110
|
+
plugins.push((0, _pointerEvents.pointerEventPlugin)({
|
|
111
|
+
onSelectViaDrag: onDragEvent
|
|
112
|
+
}));
|
|
113
|
+
}
|
|
114
|
+
return plugins;
|
|
115
|
+
}, [
|
|
116
|
+
motion,
|
|
117
|
+
onDragEvent,
|
|
118
|
+
watchDrag
|
|
119
|
+
]);
|
|
87
120
|
// Listeners contains callbacks for UI elements that may require state update based on embla changes
|
|
88
121
|
const listeners = _react.useRef(new Set());
|
|
89
122
|
const subscribeForValues = _react.useCallback((listener)=>{
|
|
@@ -92,6 +125,7 @@ function useEmblaCarousel(options) {
|
|
|
92
125
|
listeners.current.delete(listener);
|
|
93
126
|
};
|
|
94
127
|
}, []);
|
|
128
|
+
const viewportRef = _react.useRef(null);
|
|
95
129
|
const containerRef = _react.useMemo(()=>{
|
|
96
130
|
let currentElement = null;
|
|
97
131
|
const handleIndexChange = ()=>{
|
|
@@ -139,6 +173,7 @@ function useEmblaCarousel(options) {
|
|
|
139
173
|
}));
|
|
140
174
|
});
|
|
141
175
|
};
|
|
176
|
+
const plugins = getPlugins();
|
|
142
177
|
return {
|
|
143
178
|
set current (newElement){
|
|
144
179
|
if (currentElement) {
|
|
@@ -148,24 +183,16 @@ function useEmblaCarousel(options) {
|
|
|
148
183
|
(_emblaApi_current2 = emblaApi.current) === null || _emblaApi_current2 === void 0 ? void 0 : _emblaApi_current2.off('reInit', handleReinit);
|
|
149
184
|
(_emblaApi_current3 = emblaApi.current) === null || _emblaApi_current3 === void 0 ? void 0 : _emblaApi_current3.destroy();
|
|
150
185
|
}
|
|
151
|
-
|
|
186
|
+
var _viewportRef_current;
|
|
187
|
+
// Use direct viewport if available, else fallback to container (includes Carousel controls).
|
|
188
|
+
const wrapperElement = (_viewportRef_current = viewportRef.current) !== null && _viewportRef_current !== void 0 ? _viewportRef_current : newElement;
|
|
189
|
+
if (wrapperElement) {
|
|
152
190
|
var _emblaApi_current4, _emblaApi_current5, _emblaApi_current6;
|
|
153
|
-
currentElement =
|
|
154
|
-
emblaApi.current = (0, _emblacarousel.default)(
|
|
191
|
+
currentElement = wrapperElement;
|
|
192
|
+
emblaApi.current = (0, _emblacarousel.default)(wrapperElement, {
|
|
155
193
|
...DEFAULT_EMBLA_OPTIONS,
|
|
156
194
|
...emblaOptions.current
|
|
157
|
-
},
|
|
158
|
-
(0, _emblacarouselautoplay.default)({
|
|
159
|
-
playOnInit: autoplayRef.current,
|
|
160
|
-
stopOnInteraction: !autoplayRef.current,
|
|
161
|
-
stopOnMouseEnter: true,
|
|
162
|
-
stopOnFocusIn: true,
|
|
163
|
-
rootNode: (emblaRoot)=>{
|
|
164
|
-
var _emblaRoot_querySelector;
|
|
165
|
-
return (_emblaRoot_querySelector = emblaRoot.querySelector(sliderClassname)) !== null && _emblaRoot_querySelector !== void 0 ? _emblaRoot_querySelector : emblaRoot;
|
|
166
|
-
}
|
|
167
|
-
})
|
|
168
|
-
]);
|
|
195
|
+
}, plugins);
|
|
169
196
|
(_emblaApi_current4 = emblaApi.current) === null || _emblaApi_current4 === void 0 ? void 0 : _emblaApi_current4.on('reInit', handleReinit);
|
|
170
197
|
(_emblaApi_current5 = emblaApi.current) === null || _emblaApi_current5 === void 0 ? void 0 : _emblaApi_current5.on('slidesInView', handleVisibilityChange);
|
|
171
198
|
(_emblaApi_current6 = emblaApi.current) === null || _emblaApi_current6 === void 0 ? void 0 : _emblaApi_current6.on('select', handleIndexChange);
|
|
@@ -173,6 +200,7 @@ function useEmblaCarousel(options) {
|
|
|
173
200
|
}
|
|
174
201
|
};
|
|
175
202
|
}, [
|
|
203
|
+
getPlugins,
|
|
176
204
|
setActiveIndex
|
|
177
205
|
]);
|
|
178
206
|
const carouselApi = _react.useMemo(()=>({
|
|
@@ -210,7 +238,9 @@ function useEmblaCarousel(options) {
|
|
|
210
238
|
_react.useEffect(()=>{
|
|
211
239
|
var _emblaApi_current;
|
|
212
240
|
var _emblaApi_current_selectedScrollSnap;
|
|
241
|
+
// Scroll to controlled values on update
|
|
213
242
|
const currentActiveIndex = (_emblaApi_current_selectedScrollSnap = (_emblaApi_current = emblaApi.current) === null || _emblaApi_current === void 0 ? void 0 : _emblaApi_current.selectedScrollSnap()) !== null && _emblaApi_current_selectedScrollSnap !== void 0 ? _emblaApi_current_selectedScrollSnap : 0;
|
|
243
|
+
emblaOptions.current.startIndex = activeIndex;
|
|
214
244
|
if (activeIndex !== currentActiveIndex) {
|
|
215
245
|
var _emblaApi_current1;
|
|
216
246
|
(_emblaApi_current1 = emblaApi.current) === null || _emblaApi_current1 === void 0 ? void 0 : _emblaApi_current1.scrollTo(activeIndex);
|
|
@@ -220,7 +250,9 @@ function useEmblaCarousel(options) {
|
|
|
220
250
|
]);
|
|
221
251
|
_react.useEffect(()=>{
|
|
222
252
|
var _emblaApi_current;
|
|
253
|
+
const plugins = getPlugins();
|
|
223
254
|
emblaOptions.current = {
|
|
255
|
+
startIndex: emblaOptions.current.startIndex,
|
|
224
256
|
align,
|
|
225
257
|
direction,
|
|
226
258
|
loop,
|
|
@@ -231,29 +263,20 @@ function useEmblaCarousel(options) {
|
|
|
231
263
|
(_emblaApi_current = emblaApi.current) === null || _emblaApi_current === void 0 ? void 0 : _emblaApi_current.reInit({
|
|
232
264
|
...DEFAULT_EMBLA_OPTIONS,
|
|
233
265
|
...emblaOptions.current
|
|
234
|
-
},
|
|
235
|
-
(0, _emblacarouselautoplay.default)({
|
|
236
|
-
playOnInit: autoplayRef.current,
|
|
237
|
-
stopOnInteraction: !autoplayRef.current,
|
|
238
|
-
stopOnMouseEnter: true,
|
|
239
|
-
stopOnFocusIn: true,
|
|
240
|
-
rootNode: (emblaRoot)=>{
|
|
241
|
-
var _emblaRoot_querySelector;
|
|
242
|
-
return (_emblaRoot_querySelector = emblaRoot.querySelector(sliderClassname)) !== null && _emblaRoot_querySelector !== void 0 ? _emblaRoot_querySelector : emblaRoot;
|
|
243
|
-
}
|
|
244
|
-
})
|
|
245
|
-
]);
|
|
266
|
+
}, plugins);
|
|
246
267
|
}, [
|
|
247
268
|
align,
|
|
248
269
|
direction,
|
|
249
270
|
loop,
|
|
250
271
|
slidesToScroll,
|
|
251
272
|
watchDrag,
|
|
252
|
-
containScroll
|
|
273
|
+
containScroll,
|
|
274
|
+
getPlugins
|
|
253
275
|
]);
|
|
254
276
|
return {
|
|
255
277
|
activeIndex,
|
|
256
278
|
carouselApi,
|
|
279
|
+
viewportRef,
|
|
257
280
|
containerRef,
|
|
258
281
|
subscribeForValues,
|
|
259
282
|
enableAutoplay,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["useEmblaCarousel.ts"],"sourcesContent":["import { useControllableState } from '@fluentui/react-utilities';\nimport EmblaCarousel, { type EmblaCarouselType, type EmblaOptionsType } from 'embla-carousel';\nimport * as React from 'react';\n\nimport { carouselCardClassNames } from './CarouselCard/useCarouselCardStyles.styles';\nimport { carouselSliderClassNames } from './CarouselSlider/useCarouselSliderStyles.styles';\nimport { CarouselUpdateData, CarouselVisibilityEventDetail } from '../Carousel';\nimport Autoplay from 'embla-carousel-autoplay';\n\nconst sliderClassname = `.${carouselSliderClassNames.root}`;\n\nconst DEFAULT_EMBLA_OPTIONS: EmblaOptionsType = {\n containScroll: 'trimSnaps',\n inViewThreshold: 0.99,\n watchDrag: false,\n skipSnaps: true,\n\n container: sliderClassname,\n slides: `.${carouselCardClassNames.root}`,\n};\n\nexport const EMBLA_VISIBILITY_EVENT = 'embla:visibilitychange';\n\nexport function setTabsterDefault(element: Element, isDefault: boolean) {\n const tabsterAttr = element.getAttribute('data-tabster');\n\n if (tabsterAttr) {\n const tabsterAttributes = JSON.parse(tabsterAttr);\n if (tabsterAttributes.focusable) {\n // If tabster.focusable isn't present, we will ignore.\n tabsterAttributes.focusable.isDefault = isDefault;\n element.setAttribute('data-tabster', JSON.stringify(tabsterAttributes));\n }\n }\n}\n\nexport function useEmblaCarousel(\n options: Pick<EmblaOptionsType, 'align' | 'direction' | 'loop' | 'slidesToScroll' | 'watchDrag' | 'containScroll'> & {\n defaultActiveIndex: number | undefined;\n activeIndex: number | undefined;\n },\n) {\n const { align, direction, loop, slidesToScroll, watchDrag, containScroll } = options;\n const [activeIndex, setActiveIndex] = useControllableState({\n defaultState: options.defaultActiveIndex,\n state: options.activeIndex,\n initialState: 0,\n });\n\n const emblaOptions = React.useRef<EmblaOptionsType>({\n align,\n direction,\n loop,\n slidesToScroll,\n startIndex: activeIndex,\n watchDrag,\n containScroll,\n });\n\n const emblaApi = React.useRef<EmblaCarouselType | null>(null);\n const autoplayRef = React.useRef<boolean>(false);\n\n const resetAutoplay = React.useCallback(() => {\n emblaApi.current?.plugins().autoplay.reset();\n }, []);\n\n /* Our autoplay button, which is required by standards for autoplay to be enabled, will handle controlled state */\n const enableAutoplay = React.useCallback(\n (autoplay: boolean) => {\n autoplayRef.current = autoplay;\n if (autoplay) {\n emblaApi.current?.plugins().autoplay.play();\n // Reset after play to ensure timing and any focus/mouse pause state is reset.\n resetAutoplay();\n } else {\n emblaApi.current?.plugins().autoplay.stop();\n }\n },\n [resetAutoplay],\n );\n\n // Listeners contains callbacks for UI elements that may require state update based on embla changes\n const listeners = React.useRef(new Set<(data: CarouselUpdateData) => void>());\n const subscribeForValues = React.useCallback((listener: (data: CarouselUpdateData) => void) => {\n listeners.current.add(listener);\n\n return () => {\n listeners.current.delete(listener);\n };\n }, []);\n\n const containerRef: React.RefObject<HTMLDivElement> = React.useMemo(() => {\n let currentElement: HTMLDivElement | null = null;\n\n const handleIndexChange = () => {\n const newIndex = emblaApi.current?.selectedScrollSnap() ?? 0;\n const slides = emblaApi.current?.slideNodes();\n const actualIndex = emblaApi.current?.internalEngine().slideRegistry[newIndex][0] ?? 0;\n // We set the active or first index of group on-screen as the selected tabster index\n slides?.forEach((slide, slideIndex) => {\n setTabsterDefault(slide, slideIndex === actualIndex);\n });\n setActiveIndex(newIndex);\n };\n const handleReinit = () => {\n const nodes: HTMLElement[] = emblaApi.current?.slideNodes() ?? [];\n const groupIndexList: number[][] = emblaApi.current?.internalEngine().slideRegistry ?? [];\n const navItemsCount = groupIndexList.length > 0 ? groupIndexList.length : nodes.length;\n\n const data: CarouselUpdateData = {\n navItemsCount,\n activeIndex: emblaApi.current?.selectedScrollSnap() ?? 0,\n groupIndexList,\n slideNodes: nodes,\n };\n\n for (const listener of listeners.current) {\n listener(data);\n }\n };\n const handleVisibilityChange = () => {\n const cardElements = emblaApi.current?.slideNodes();\n const visibleIndexes = emblaApi.current?.slidesInView() ?? [];\n\n cardElements?.forEach((cardElement, index) => {\n cardElement.dispatchEvent(\n new CustomEvent<CarouselVisibilityEventDetail>(EMBLA_VISIBILITY_EVENT, {\n bubbles: false,\n detail: { isVisible: visibleIndexes.includes(index) },\n }),\n );\n });\n };\n\n return {\n set current(newElement: HTMLDivElement | null) {\n if (currentElement) {\n emblaApi.current?.off('slidesInView', handleVisibilityChange);\n emblaApi.current?.off('select', handleIndexChange);\n emblaApi.current?.off('reInit', handleReinit);\n emblaApi.current?.destroy();\n }\n\n if (newElement) {\n currentElement = newElement;\n emblaApi.current = EmblaCarousel(\n newElement,\n {\n ...DEFAULT_EMBLA_OPTIONS,\n ...emblaOptions.current,\n },\n [\n Autoplay({\n playOnInit: autoplayRef.current,\n stopOnInteraction: !autoplayRef.current,\n stopOnMouseEnter: true,\n stopOnFocusIn: true,\n rootNode: (emblaRoot: HTMLElement) => {\n return emblaRoot.querySelector(sliderClassname) ?? emblaRoot;\n },\n }),\n ],\n );\n\n emblaApi.current?.on('reInit', handleReinit);\n emblaApi.current?.on('slidesInView', handleVisibilityChange);\n emblaApi.current?.on('select', handleIndexChange);\n }\n },\n };\n }, [setActiveIndex]);\n\n const carouselApi = React.useMemo(\n () => ({\n scrollToElement: (element: HTMLElement, jump?: boolean) => {\n const cardElements = emblaApi.current?.slideNodes();\n const groupIndexList = emblaApi.current?.internalEngine().slideRegistry ?? [];\n const cardIndex = cardElements?.indexOf(element) ?? 0;\n const groupIndex = groupIndexList.findIndex(group => {\n return group.includes(cardIndex);\n });\n const indexFocus = groupIndex ?? cardIndex;\n emblaApi.current?.scrollTo(indexFocus, jump);\n\n return indexFocus;\n },\n scrollToIndex: (index: number, jump?: boolean) => {\n emblaApi.current?.scrollTo(index, jump);\n },\n scrollInDirection: (dir: 'prev' | 'next') => {\n if (dir === 'prev') {\n emblaApi.current?.scrollPrev();\n } else {\n emblaApi.current?.scrollNext();\n }\n\n return emblaApi.current?.selectedScrollSnap() ?? 0;\n },\n }),\n [],\n );\n\n React.useEffect(() => {\n const currentActiveIndex = emblaApi.current?.selectedScrollSnap() ?? 0;\n\n if (activeIndex !== currentActiveIndex) {\n emblaApi.current?.scrollTo(activeIndex);\n }\n }, [activeIndex]);\n\n React.useEffect(() => {\n emblaOptions.current = { align, direction, loop, slidesToScroll, watchDrag, containScroll };\n emblaApi.current?.reInit(\n {\n ...DEFAULT_EMBLA_OPTIONS,\n ...emblaOptions.current,\n },\n [\n Autoplay({\n playOnInit: autoplayRef.current,\n stopOnInteraction: !autoplayRef.current,\n stopOnMouseEnter: true,\n stopOnFocusIn: true,\n rootNode: (emblaRoot: HTMLElement) => {\n return emblaRoot.querySelector(sliderClassname) ?? emblaRoot;\n },\n }),\n ],\n );\n }, [align, direction, loop, slidesToScroll, watchDrag, containScroll]);\n\n return {\n activeIndex,\n carouselApi,\n containerRef,\n subscribeForValues,\n enableAutoplay,\n resetAutoplay,\n };\n}\n"],"names":["EMBLA_VISIBILITY_EVENT","setTabsterDefault","useEmblaCarousel","sliderClassname","carouselSliderClassNames","root","DEFAULT_EMBLA_OPTIONS","containScroll","inViewThreshold","watchDrag","skipSnaps","container","slides","carouselCardClassNames","element","isDefault","tabsterAttr","getAttribute","tabsterAttributes","JSON","parse","focusable","setAttribute","stringify","options","align","direction","loop","slidesToScroll","activeIndex","setActiveIndex","useControllableState","defaultState","defaultActiveIndex","state","initialState","emblaOptions","React","useRef","startIndex","emblaApi","autoplayRef","resetAutoplay","useCallback","current","plugins","autoplay","reset","enableAutoplay","play","stop","listeners","Set","subscribeForValues","listener","add","delete","containerRef","useMemo","currentElement","handleIndexChange","newIndex","selectedScrollSnap","slideNodes","actualIndex","internalEngine","slideRegistry","forEach","slide","slideIndex","handleReinit","nodes","groupIndexList","navItemsCount","length","data","handleVisibilityChange","cardElements","visibleIndexes","slidesInView","cardElement","index","dispatchEvent","CustomEvent","bubbles","detail","isVisible","includes","newElement","off","destroy","EmblaCarousel","Autoplay","playOnInit","stopOnInteraction","stopOnMouseEnter","stopOnFocusIn","rootNode","emblaRoot","querySelector","on","carouselApi","scrollToElement","jump","cardIndex","indexOf","groupIndex","findIndex","group","indexFocus","scrollTo","scrollToIndex","scrollInDirection","dir","scrollPrev","scrollNext","useEffect","currentActiveIndex","reInit"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../src/components/useEmblaCarousel.ts"],"sourcesContent":["import { type EventHandler, useControllableState, useEventCallback } from '@fluentui/react-utilities';\nimport EmblaCarousel, { EmblaPluginType, type EmblaCarouselType, type EmblaOptionsType } from 'embla-carousel';\nimport * as React from 'react';\n\nimport { carouselCardClassNames } from './CarouselCard/useCarouselCardStyles.styles';\nimport { carouselSliderClassNames } from './CarouselSlider/useCarouselSliderStyles.styles';\nimport { CarouselMotion, CarouselUpdateData, CarouselVisibilityEventDetail } from '../Carousel';\nimport Autoplay from 'embla-carousel-autoplay';\nimport Fade from 'embla-carousel-fade';\nimport { pointerEventPlugin } from './pointerEvents';\nimport type { CarouselIndexChangeData } from './CarouselContext.types';\n\nconst sliderClassname = `.${carouselSliderClassNames.root}`;\n\nconst DEFAULT_EMBLA_OPTIONS: EmblaOptionsType = {\n containScroll: 'trimSnaps',\n inViewThreshold: 0.99,\n watchDrag: false,\n skipSnaps: true,\n\n container: sliderClassname,\n slides: `.${carouselCardClassNames.root}`,\n};\n\nexport const EMBLA_VISIBILITY_EVENT = 'embla:visibilitychange';\n\nexport function setTabsterDefault(element: Element, isDefault: boolean) {\n const tabsterAttr = element.getAttribute('data-tabster');\n\n if (tabsterAttr) {\n const tabsterAttributes = JSON.parse(tabsterAttr);\n if (tabsterAttributes.focusable) {\n // If tabster.focusable isn't present, we will ignore.\n tabsterAttributes.focusable.isDefault = isDefault;\n element.setAttribute('data-tabster', JSON.stringify(tabsterAttributes));\n }\n }\n}\n\nexport function useEmblaCarousel(\n options: Pick<EmblaOptionsType, 'align' | 'direction' | 'loop' | 'slidesToScroll' | 'watchDrag' | 'containScroll'> & {\n defaultActiveIndex: number | undefined;\n activeIndex: number | undefined;\n motion?: CarouselMotion;\n onDragIndexChange?: EventHandler<CarouselIndexChangeData>;\n },\n) {\n const { align, direction, loop, slidesToScroll, watchDrag, containScroll, motion, onDragIndexChange } = options;\n const [activeIndex, setActiveIndex] = useControllableState({\n defaultState: options.defaultActiveIndex,\n state: options.activeIndex,\n initialState: 0,\n });\n\n const onDragEvent = useEventCallback((event: PointerEvent | MouseEvent, index: number) => {\n onDragIndexChange?.(event, { event, type: 'drag', index });\n });\n\n const emblaOptions = React.useRef<EmblaOptionsType>({\n align,\n direction,\n loop,\n slidesToScroll,\n startIndex: activeIndex,\n watchDrag,\n containScroll,\n });\n\n const emblaApi = React.useRef<EmblaCarouselType | null>(null);\n const autoplayRef = React.useRef<boolean>(false);\n\n const resetAutoplay = React.useCallback(() => {\n emblaApi.current?.plugins().autoplay.reset();\n }, []);\n\n /* Our autoplay button, which is required by standards for autoplay to be enabled, will handle controlled state */\n const enableAutoplay = React.useCallback(\n (autoplay: boolean) => {\n autoplayRef.current = autoplay;\n if (autoplay) {\n emblaApi.current?.plugins().autoplay.play();\n // Reset after play to ensure timing and any focus/mouse pause state is reset.\n resetAutoplay();\n } else {\n emblaApi.current?.plugins().autoplay.stop();\n }\n },\n [resetAutoplay],\n );\n\n const getPlugins = React.useCallback(() => {\n const plugins: EmblaPluginType[] = [\n Autoplay({\n playOnInit: autoplayRef.current,\n stopOnInteraction: !autoplayRef.current,\n stopOnMouseEnter: true,\n stopOnFocusIn: true,\n }),\n ];\n\n // Optionally add Fade plugin\n if (motion === 'fade') {\n plugins.push(Fade());\n }\n\n if (watchDrag) {\n plugins.push(\n pointerEventPlugin({\n onSelectViaDrag: onDragEvent,\n }),\n );\n }\n\n return plugins;\n }, [motion, onDragEvent, watchDrag]);\n\n // Listeners contains callbacks for UI elements that may require state update based on embla changes\n const listeners = React.useRef(new Set<(data: CarouselUpdateData) => void>());\n const subscribeForValues = React.useCallback((listener: (data: CarouselUpdateData) => void) => {\n listeners.current.add(listener);\n\n return () => {\n listeners.current.delete(listener);\n };\n }, []);\n\n const viewportRef: React.RefObject<HTMLDivElement> = React.useRef(null);\n const containerRef: React.RefObject<HTMLDivElement> = React.useMemo(() => {\n let currentElement: HTMLDivElement | null = null;\n\n const handleIndexChange = () => {\n const newIndex = emblaApi.current?.selectedScrollSnap() ?? 0;\n const slides = emblaApi.current?.slideNodes();\n const actualIndex = emblaApi.current?.internalEngine().slideRegistry[newIndex][0] ?? 0;\n\n // We set the active or first index of group on-screen as the selected tabster index\n slides?.forEach((slide, slideIndex) => {\n setTabsterDefault(slide, slideIndex === actualIndex);\n });\n setActiveIndex(newIndex);\n };\n const handleReinit = () => {\n const nodes: HTMLElement[] = emblaApi.current?.slideNodes() ?? [];\n const groupIndexList: number[][] = emblaApi.current?.internalEngine().slideRegistry ?? [];\n const navItemsCount = groupIndexList.length > 0 ? groupIndexList.length : nodes.length;\n\n const data: CarouselUpdateData = {\n navItemsCount,\n activeIndex: emblaApi.current?.selectedScrollSnap() ?? 0,\n groupIndexList,\n slideNodes: nodes,\n };\n\n for (const listener of listeners.current) {\n listener(data);\n }\n };\n const handleVisibilityChange = () => {\n const cardElements = emblaApi.current?.slideNodes();\n const visibleIndexes = emblaApi.current?.slidesInView() ?? [];\n\n cardElements?.forEach((cardElement, index) => {\n cardElement.dispatchEvent(\n new CustomEvent<CarouselVisibilityEventDetail>(EMBLA_VISIBILITY_EVENT, {\n bubbles: false,\n detail: { isVisible: visibleIndexes.includes(index) },\n }),\n );\n });\n };\n\n const plugins = getPlugins();\n\n return {\n set current(newElement: HTMLDivElement | null) {\n if (currentElement) {\n emblaApi.current?.off('slidesInView', handleVisibilityChange);\n emblaApi.current?.off('select', handleIndexChange);\n emblaApi.current?.off('reInit', handleReinit);\n emblaApi.current?.destroy();\n }\n\n // Use direct viewport if available, else fallback to container (includes Carousel controls).\n const wrapperElement = viewportRef.current ?? newElement;\n if (wrapperElement) {\n currentElement = wrapperElement;\n emblaApi.current = EmblaCarousel(\n wrapperElement,\n {\n ...DEFAULT_EMBLA_OPTIONS,\n ...emblaOptions.current,\n },\n plugins,\n );\n\n emblaApi.current?.on('reInit', handleReinit);\n emblaApi.current?.on('slidesInView', handleVisibilityChange);\n emblaApi.current?.on('select', handleIndexChange);\n }\n },\n };\n }, [getPlugins, setActiveIndex]);\n\n const carouselApi = React.useMemo(\n () => ({\n scrollToElement: (element: HTMLElement, jump?: boolean) => {\n const cardElements = emblaApi.current?.slideNodes();\n const groupIndexList = emblaApi.current?.internalEngine().slideRegistry ?? [];\n const cardIndex = cardElements?.indexOf(element) ?? 0;\n const groupIndex = groupIndexList.findIndex(group => {\n return group.includes(cardIndex);\n });\n const indexFocus = groupIndex ?? cardIndex;\n emblaApi.current?.scrollTo(indexFocus, jump);\n\n return indexFocus;\n },\n scrollToIndex: (index: number, jump?: boolean) => {\n emblaApi.current?.scrollTo(index, jump);\n },\n scrollInDirection: (dir: 'prev' | 'next') => {\n if (dir === 'prev') {\n emblaApi.current?.scrollPrev();\n } else {\n emblaApi.current?.scrollNext();\n }\n\n return emblaApi.current?.selectedScrollSnap() ?? 0;\n },\n }),\n [],\n );\n\n React.useEffect(() => {\n // Scroll to controlled values on update\n const currentActiveIndex = emblaApi.current?.selectedScrollSnap() ?? 0;\n emblaOptions.current.startIndex = activeIndex;\n if (activeIndex !== currentActiveIndex) {\n emblaApi.current?.scrollTo(activeIndex);\n }\n }, [activeIndex]);\n\n React.useEffect(() => {\n const plugins = getPlugins();\n\n emblaOptions.current = {\n startIndex: emblaOptions.current.startIndex,\n align,\n direction,\n loop,\n slidesToScroll,\n watchDrag,\n containScroll,\n };\n emblaApi.current?.reInit(\n {\n ...DEFAULT_EMBLA_OPTIONS,\n ...emblaOptions.current,\n },\n plugins,\n );\n }, [align, direction, loop, slidesToScroll, watchDrag, containScroll, getPlugins]);\n\n return {\n activeIndex,\n carouselApi,\n viewportRef,\n containerRef,\n subscribeForValues,\n enableAutoplay,\n resetAutoplay,\n };\n}\n"],"names":["EMBLA_VISIBILITY_EVENT","setTabsterDefault","useEmblaCarousel","sliderClassname","carouselSliderClassNames","root","DEFAULT_EMBLA_OPTIONS","containScroll","inViewThreshold","watchDrag","skipSnaps","container","slides","carouselCardClassNames","element","isDefault","tabsterAttr","getAttribute","tabsterAttributes","JSON","parse","focusable","setAttribute","stringify","options","align","direction","loop","slidesToScroll","motion","onDragIndexChange","activeIndex","setActiveIndex","useControllableState","defaultState","defaultActiveIndex","state","initialState","onDragEvent","useEventCallback","event","index","type","emblaOptions","React","useRef","startIndex","emblaApi","autoplayRef","resetAutoplay","useCallback","current","plugins","autoplay","reset","enableAutoplay","play","stop","getPlugins","Autoplay","playOnInit","stopOnInteraction","stopOnMouseEnter","stopOnFocusIn","push","Fade","pointerEventPlugin","onSelectViaDrag","listeners","Set","subscribeForValues","listener","add","delete","viewportRef","containerRef","useMemo","currentElement","handleIndexChange","newIndex","selectedScrollSnap","slideNodes","actualIndex","internalEngine","slideRegistry","forEach","slide","slideIndex","handleReinit","nodes","groupIndexList","navItemsCount","length","data","handleVisibilityChange","cardElements","visibleIndexes","slidesInView","cardElement","dispatchEvent","CustomEvent","bubbles","detail","isVisible","includes","newElement","off","destroy","wrapperElement","EmblaCarousel","on","carouselApi","scrollToElement","jump","cardIndex","indexOf","groupIndex","findIndex","group","indexFocus","scrollTo","scrollToIndex","scrollInDirection","dir","scrollPrev","scrollNext","useEffect","currentActiveIndex","reInit"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
package/lib-commonjs/index.js
CHANGED
|
@@ -39,6 +39,9 @@ _export(exports, {
|
|
|
39
39
|
CarouselSlider: function() {
|
|
40
40
|
return _CarouselSlider.CarouselSlider;
|
|
41
41
|
},
|
|
42
|
+
CarouselViewport: function() {
|
|
43
|
+
return _CarouselViewport.CarouselViewport;
|
|
44
|
+
},
|
|
42
45
|
carouselAutoplayButtonClassNames: function() {
|
|
43
46
|
return _CarouselAutoplayButton.carouselAutoplayButtonClassNames;
|
|
44
47
|
},
|
|
@@ -69,6 +72,9 @@ _export(exports, {
|
|
|
69
72
|
carouselSliderClassNames: function() {
|
|
70
73
|
return _CarouselSlider.carouselSliderClassNames;
|
|
71
74
|
},
|
|
75
|
+
carouselViewportClassNames: function() {
|
|
76
|
+
return _CarouselViewport.carouselViewportClassNames;
|
|
77
|
+
},
|
|
72
78
|
renderCarouselAutoplayButton_unstable: function() {
|
|
73
79
|
return _CarouselAutoplayButton.renderCarouselAutoplayButton_unstable;
|
|
74
80
|
},
|
|
@@ -93,6 +99,9 @@ _export(exports, {
|
|
|
93
99
|
renderCarouselSlider_unstable: function() {
|
|
94
100
|
return _CarouselSlider.renderCarouselSlider_unstable;
|
|
95
101
|
},
|
|
102
|
+
renderCarouselViewport_unstable: function() {
|
|
103
|
+
return _CarouselViewport.renderCarouselViewport_unstable;
|
|
104
|
+
},
|
|
96
105
|
renderCarousel_unstable: function() {
|
|
97
106
|
return _Carousel.renderCarousel_unstable;
|
|
98
107
|
},
|
|
@@ -150,6 +159,12 @@ _export(exports, {
|
|
|
150
159
|
useCarouselStyles_unstable: function() {
|
|
151
160
|
return _Carousel.useCarouselStyles_unstable;
|
|
152
161
|
},
|
|
162
|
+
useCarouselViewportStyles_unstable: function() {
|
|
163
|
+
return _CarouselViewport.useCarouselViewportStyles_unstable;
|
|
164
|
+
},
|
|
165
|
+
useCarouselViewport_unstable: function() {
|
|
166
|
+
return _CarouselViewport.useCarouselViewport_unstable;
|
|
167
|
+
},
|
|
153
168
|
useCarousel_unstable: function() {
|
|
154
169
|
return _Carousel.useCarousel_unstable;
|
|
155
170
|
}
|
|
@@ -164,3 +179,4 @@ const _CarouselNavImageButton = require("./CarouselNavImageButton");
|
|
|
164
179
|
const _CarouselSlider = require("./CarouselSlider");
|
|
165
180
|
const _CarouselNavContainer = require("./CarouselNavContainer");
|
|
166
181
|
const _CarouselContext = require("./CarouselContext");
|
|
182
|
+
const _CarouselViewport = require("./CarouselViewport");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.ts"],"sourcesContent":["export type { CarouselButtonProps, CarouselButtonSlots, CarouselButtonState } from './CarouselButton';\nexport {\n CarouselButton,\n carouselButtonClassNames,\n renderCarouselButton_unstable,\n useCarouselButtonStyles_unstable,\n useCarouselButton_unstable,\n} from './CarouselButton';\nexport type { CarouselNavProps, CarouselNavSlots, CarouselNavState, NavButtonRenderFunction } from './CarouselNav';\nexport {\n CarouselNav,\n carouselNavClassNames,\n renderCarouselNav_unstable,\n useCarouselNavStyles_unstable,\n useCarouselNav_unstable,\n} from './CarouselNav';\nexport type { CarouselNavButtonProps, CarouselNavButtonSlots, CarouselNavButtonState } from './CarouselNavButton';\nexport {\n CarouselNavButton,\n carouselNavButtonClassNames,\n renderCarouselNavButton_unstable,\n useCarouselNavButtonStyles_unstable,\n useCarouselNavButton_unstable,\n} from './CarouselNavButton';\nexport type { CarouselProps, CarouselSlots, CarouselState, CarouselAnnouncerFunction } from './Carousel';\nexport {\n Carousel,\n carouselClassNames,\n renderCarousel_unstable,\n useCarouselStyles_unstable,\n useCarousel_unstable,\n} from './Carousel';\nexport type { CarouselCardProps, CarouselCardSlots, CarouselCardState } from './CarouselCard';\nexport {\n CarouselCard,\n carouselCardClassNames,\n renderCarouselCard_unstable,\n useCarouselCardStyles_unstable,\n useCarouselCard_unstable,\n} from './CarouselCard';\nexport type {\n CarouselAutoplayButtonProps,\n CarouselAutoplayButtonSlots,\n CarouselAutoplayButtonState,\n} from './CarouselAutoplayButton';\nexport {\n CarouselAutoplayButton,\n carouselAutoplayButtonClassNames,\n renderCarouselAutoplayButton_unstable,\n useCarouselAutoplayButtonStyles_unstable,\n useCarouselAutoplayButton_unstable,\n} from './CarouselAutoplayButton';\nexport type {\n CarouselNavImageButtonProps,\n CarouselNavImageButtonSlots,\n CarouselNavImageButtonState,\n} from './CarouselNavImageButton';\nexport {\n CarouselNavImageButton,\n carouselNavImageButtonClassNames,\n renderCarouselNavImageButton_unstable,\n useCarouselNavImageButtonStyles_unstable,\n useCarouselNavImageButton_unstable,\n} from './CarouselNavImageButton';\nexport {\n CarouselSlider,\n carouselSliderClassNames,\n renderCarouselSlider_unstable,\n useCarouselSliderStyles_unstable,\n useCarouselSlider_unstable,\n} from './CarouselSlider';\nexport type { CarouselSliderProps, CarouselSliderSlots, CarouselSliderState } from './CarouselSlider';\nexport type {\n CarouselNavContainerProps,\n CarouselNavContainerSlots,\n CarouselNavContainerState,\n} from './CarouselNavContainer';\nexport {\n CarouselNavContainer,\n carouselNavContainerClassNames,\n renderCarouselNavContainer_unstable,\n useCarouselNavContainerStyles_unstable,\n useCarouselNavContainer_unstable,\n} from './CarouselNavContainer';\nexport { carouselContextDefaultValue, CarouselProvider, useCarouselContext_unstable } from './CarouselContext';\nexport type { CarouselIndexChangeData, CarouselContextValue, CarouselContextValues } from './CarouselContext';\n"],"names":["Carousel","CarouselAutoplayButton","CarouselButton","CarouselCard","CarouselNav","CarouselNavButton","CarouselNavContainer","CarouselNavImageButton","CarouselProvider","CarouselSlider","carouselAutoplayButtonClassNames","carouselButtonClassNames","carouselCardClassNames","carouselClassNames","carouselContextDefaultValue","carouselNavButtonClassNames","carouselNavClassNames","carouselNavContainerClassNames","carouselNavImageButtonClassNames","carouselSliderClassNames","renderCarouselAutoplayButton_unstable","renderCarouselButton_unstable","renderCarouselCard_unstable","renderCarouselNavButton_unstable","renderCarouselNavContainer_unstable","renderCarouselNavImageButton_unstable","renderCarouselNav_unstable","renderCarouselSlider_unstable","renderCarousel_unstable","useCarouselAutoplayButtonStyles_unstable","useCarouselAutoplayButton_unstable","useCarouselButtonStyles_unstable","useCarouselButton_unstable","useCarouselCardStyles_unstable","useCarouselCard_unstable","useCarouselContext_unstable","useCarouselNavButtonStyles_unstable","useCarouselNavButton_unstable","useCarouselNavContainerStyles_unstable","useCarouselNavContainer_unstable","useCarouselNavImageButtonStyles_unstable","useCarouselNavImageButton_unstable","useCarouselNavStyles_unstable","useCarouselNav_unstable","useCarouselSliderStyles_unstable","useCarouselSlider_unstable","useCarouselStyles_unstable","useCarousel_unstable"],"rangeMappings":"
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export type { CarouselButtonProps, CarouselButtonSlots, CarouselButtonState } from './CarouselButton';\nexport {\n CarouselButton,\n carouselButtonClassNames,\n renderCarouselButton_unstable,\n useCarouselButtonStyles_unstable,\n useCarouselButton_unstable,\n} from './CarouselButton';\nexport type { CarouselNavProps, CarouselNavSlots, CarouselNavState, NavButtonRenderFunction } from './CarouselNav';\nexport {\n CarouselNav,\n carouselNavClassNames,\n renderCarouselNav_unstable,\n useCarouselNavStyles_unstable,\n useCarouselNav_unstable,\n} from './CarouselNav';\nexport type { CarouselNavButtonProps, CarouselNavButtonSlots, CarouselNavButtonState } from './CarouselNavButton';\nexport {\n CarouselNavButton,\n carouselNavButtonClassNames,\n renderCarouselNavButton_unstable,\n useCarouselNavButtonStyles_unstable,\n useCarouselNavButton_unstable,\n} from './CarouselNavButton';\nexport type { CarouselProps, CarouselSlots, CarouselState, CarouselAnnouncerFunction } from './Carousel';\nexport {\n Carousel,\n carouselClassNames,\n renderCarousel_unstable,\n useCarouselStyles_unstable,\n useCarousel_unstable,\n} from './Carousel';\nexport type { CarouselCardProps, CarouselCardSlots, CarouselCardState } from './CarouselCard';\nexport {\n CarouselCard,\n carouselCardClassNames,\n renderCarouselCard_unstable,\n useCarouselCardStyles_unstable,\n useCarouselCard_unstable,\n} from './CarouselCard';\nexport type {\n CarouselAutoplayButtonProps,\n CarouselAutoplayButtonSlots,\n CarouselAutoplayButtonState,\n} from './CarouselAutoplayButton';\nexport {\n CarouselAutoplayButton,\n carouselAutoplayButtonClassNames,\n renderCarouselAutoplayButton_unstable,\n useCarouselAutoplayButtonStyles_unstable,\n useCarouselAutoplayButton_unstable,\n} from './CarouselAutoplayButton';\nexport type {\n CarouselNavImageButtonProps,\n CarouselNavImageButtonSlots,\n CarouselNavImageButtonState,\n} from './CarouselNavImageButton';\nexport {\n CarouselNavImageButton,\n carouselNavImageButtonClassNames,\n renderCarouselNavImageButton_unstable,\n useCarouselNavImageButtonStyles_unstable,\n useCarouselNavImageButton_unstable,\n} from './CarouselNavImageButton';\nexport {\n CarouselSlider,\n carouselSliderClassNames,\n renderCarouselSlider_unstable,\n useCarouselSliderStyles_unstable,\n useCarouselSlider_unstable,\n} from './CarouselSlider';\nexport type { CarouselSliderProps, CarouselSliderSlots, CarouselSliderState } from './CarouselSlider';\nexport type {\n CarouselNavContainerProps,\n CarouselNavContainerSlots,\n CarouselNavContainerState,\n} from './CarouselNavContainer';\nexport {\n CarouselNavContainer,\n carouselNavContainerClassNames,\n renderCarouselNavContainer_unstable,\n useCarouselNavContainerStyles_unstable,\n useCarouselNavContainer_unstable,\n} from './CarouselNavContainer';\nexport { carouselContextDefaultValue, CarouselProvider, useCarouselContext_unstable } from './CarouselContext';\nexport type { CarouselIndexChangeData, CarouselContextValue, CarouselContextValues } from './CarouselContext';\nexport type { CarouselViewportProps, CarouselViewportSlots, CarouselViewportState } from './CarouselViewport';\nexport {\n CarouselViewport,\n carouselViewportClassNames,\n renderCarouselViewport_unstable,\n useCarouselViewportStyles_unstable,\n useCarouselViewport_unstable,\n} from './CarouselViewport';\n"],"names":["Carousel","CarouselAutoplayButton","CarouselButton","CarouselCard","CarouselNav","CarouselNavButton","CarouselNavContainer","CarouselNavImageButton","CarouselProvider","CarouselSlider","CarouselViewport","carouselAutoplayButtonClassNames","carouselButtonClassNames","carouselCardClassNames","carouselClassNames","carouselContextDefaultValue","carouselNavButtonClassNames","carouselNavClassNames","carouselNavContainerClassNames","carouselNavImageButtonClassNames","carouselSliderClassNames","carouselViewportClassNames","renderCarouselAutoplayButton_unstable","renderCarouselButton_unstable","renderCarouselCard_unstable","renderCarouselNavButton_unstable","renderCarouselNavContainer_unstable","renderCarouselNavImageButton_unstable","renderCarouselNav_unstable","renderCarouselSlider_unstable","renderCarouselViewport_unstable","renderCarousel_unstable","useCarouselAutoplayButtonStyles_unstable","useCarouselAutoplayButton_unstable","useCarouselButtonStyles_unstable","useCarouselButton_unstable","useCarouselCardStyles_unstable","useCarouselCard_unstable","useCarouselContext_unstable","useCarouselNavButtonStyles_unstable","useCarouselNavButton_unstable","useCarouselNavContainerStyles_unstable","useCarouselNavContainer_unstable","useCarouselNavImageButtonStyles_unstable","useCarouselNavImageButton_unstable","useCarouselNavStyles_unstable","useCarouselNav_unstable","useCarouselSliderStyles_unstable","useCarouselSlider_unstable","useCarouselStyles_unstable","useCarouselViewportStyles_unstable","useCarouselViewport_unstable","useCarousel_unstable"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":";;;;;;;;;;;IA0BEA,QAAQ;eAARA,kBAAQ;;IAoBRC,sBAAsB;eAAtBA,8CAAsB;;IA5CtBC,cAAc;eAAdA,8BAAc;;IAgCdC,YAAY;eAAZA,0BAAY;;IAxBZC,WAAW;eAAXA,wBAAW;;IAQXC,iBAAiB;eAAjBA,oCAAiB;;IA4DjBC,oBAAoB;eAApBA,0CAAoB;;IApBpBC,sBAAsB;eAAtBA,8CAAsB;;IA0BcC,gBAAgB;eAAhBA,iCAAgB;;IAnBpDC,cAAc;eAAdA,8BAAc;;IAuBdC,gBAAgB;eAAhBA,kCAAgB;;IAzChBC,gCAAgC;eAAhCA,wDAAgC;;IA5ChCC,wBAAwB;eAAxBA,wCAAwB;;IAgCxBC,sBAAsB;eAAtBA,oCAAsB;;IARtBC,kBAAkB;eAAlBA,4BAAkB;;IAyDXC,2BAA2B;eAA3BA,4CAA2B;;IAjElCC,2BAA2B;eAA3BA,8CAA2B;;IAR3BC,qBAAqB;eAArBA,kCAAqB;;IAoErBC,8BAA8B;eAA9BA,oDAA8B;;IApB9BC,gCAAgC;eAAhCA,wDAAgC;;IAOhCC,wBAAwB;eAAxBA,wCAAwB;;IAuBxBC,0BAA0B;eAA1BA,4CAA0B;;IAzC1BC,qCAAqC;eAArCA,6DAAqC;;IA5CrCC,6BAA6B;eAA7BA,6CAA6B;;IAgC7BC,2BAA2B;eAA3BA,yCAA2B;;IAhB3BC,gCAAgC;eAAhCA,mDAAgC;;IA4DhCC,mCAAmC;eAAnCA,yDAAmC;;IApBnCC,qCAAqC;eAArCA,6DAAqC;;IAhDrCC,0BAA0B;eAA1BA,uCAA0B;;IAuD1BC,6BAA6B;eAA7BA,6CAA6B;;IAuB7BC,+BAA+B;eAA/BA,iDAA+B;;IA9D/BC,uBAAuB;eAAvBA,iCAAuB;;IAqBvBC,wCAAwC;eAAxCA,gEAAwC;;IACxCC,kCAAkC;eAAlCA,0DAAkC;;IA7ClCC,gCAAgC;eAAhCA,gDAAgC;;IAChCC,0BAA0B;eAA1BA,0CAA0B;;IA+B1BC,8BAA8B;eAA9BA,4CAA8B;;IAC9BC,wBAAwB;eAAxBA,sCAAwB;;IA8C8BC,2BAA2B;eAA3BA,4CAA2B;;IA/DjFC,mCAAmC;eAAnCA,sDAAmC;;IACnCC,6BAA6B;eAA7BA,gDAA6B;;IA2D7BC,sCAAsC;eAAtCA,4DAAsC;;IACtCC,gCAAgC;eAAhCA,sDAAgC;;IArBhCC,wCAAwC;eAAxCA,gEAAwC;;IACxCC,kCAAkC;eAAlCA,0DAAkC;;IAjDlCC,6BAA6B;eAA7BA,0CAA6B;;IAC7BC,uBAAuB;eAAvBA,oCAAuB;;IAsDvBC,gCAAgC;eAAhCA,gDAAgC;;IAChCC,0BAA0B;eAA1BA,0CAA0B;;IAxC1BC,0BAA0B;eAA1BA,oCAA0B;;IA8D1BC,kCAAkC;eAAlCA,oDAAkC;;IAClCC,4BAA4B;eAA5BA,8CAA4B;;IA9D5BC,oBAAoB;eAApBA,8BAAoB;;;gCAvBf;6BAQA;mCAQA;0BAQA;8BAQA;wCAYA;wCAYA;gCAOA;sCAaA;iCACoF;kCASpF"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluentui/react-carousel",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.3.0",
|
|
4
4
|
"description": "A composable carousel component that enables pagination with minimal rerenders",
|
|
5
5
|
"main": "lib-commonjs/index.js",
|
|
6
6
|
"module": "lib/index.js",
|
|
@@ -17,37 +17,27 @@
|
|
|
17
17
|
"url": "https://github.com/microsoft/fluentui"
|
|
18
18
|
},
|
|
19
19
|
"license": "MIT",
|
|
20
|
-
"scripts": {
|
|
21
|
-
"build": "just-scripts build",
|
|
22
|
-
"clean": "just-scripts clean",
|
|
23
|
-
"generate-api": "just-scripts generate-api",
|
|
24
|
-
"lint": "just-scripts lint",
|
|
25
|
-
"start": "yarn storybook",
|
|
26
|
-
"storybook": "yarn --cwd ../stories storybook",
|
|
27
|
-
"test": "jest --passWithNoTests",
|
|
28
|
-
"type-check": "just-scripts type-check"
|
|
29
|
-
},
|
|
30
20
|
"devDependencies": {
|
|
31
21
|
"@fluentui/eslint-plugin": "*",
|
|
32
22
|
"@fluentui/react-conformance": "*",
|
|
33
23
|
"@fluentui/react-conformance-griffel": "*",
|
|
34
|
-
"@fluentui/scripts-api-extractor": "*"
|
|
35
|
-
"@fluentui/scripts-tasks": "*"
|
|
24
|
+
"@fluentui/scripts-api-extractor": "*"
|
|
36
25
|
},
|
|
37
26
|
"dependencies": {
|
|
38
|
-
"@fluentui/react-aria": "^9.13.
|
|
39
|
-
"@fluentui/react-button": "^9.3.
|
|
40
|
-
"@fluentui/react-context-selector": "^9.1.
|
|
27
|
+
"@fluentui/react-aria": "^9.13.9",
|
|
28
|
+
"@fluentui/react-button": "^9.3.95",
|
|
29
|
+
"@fluentui/react-context-selector": "^9.1.69",
|
|
41
30
|
"@fluentui/react-icons": "^2.0.245",
|
|
42
|
-
"@fluentui/react-jsx-runtime": "^9.0.
|
|
43
|
-
"@fluentui/react-shared-contexts": "^9.
|
|
44
|
-
"@fluentui/react-tabster": "^9.
|
|
45
|
-
"@fluentui/react-theme": "^9.1.
|
|
46
|
-
"@fluentui/react-utilities": "^9.18.
|
|
31
|
+
"@fluentui/react-jsx-runtime": "^9.0.46",
|
|
32
|
+
"@fluentui/react-shared-contexts": "^9.21.0",
|
|
33
|
+
"@fluentui/react-tabster": "^9.23.0",
|
|
34
|
+
"@fluentui/react-theme": "^9.1.22",
|
|
35
|
+
"@fluentui/react-utilities": "^9.18.17",
|
|
47
36
|
"@griffel/react": "^1.5.22",
|
|
48
37
|
"@swc/helpers": "^0.5.1",
|
|
49
38
|
"embla-carousel": "^8.3.0",
|
|
50
|
-
"embla-carousel-autoplay": "^8.3.0"
|
|
39
|
+
"embla-carousel-autoplay": "^8.3.0",
|
|
40
|
+
"embla-carousel-fade": "^8.3.0"
|
|
51
41
|
},
|
|
52
42
|
"peerDependencies": {
|
|
53
43
|
"@types/react": ">=16.14.0 <19.0.0",
|