@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.
Files changed (217) hide show
  1. package/CHANGELOG.md +44 -2
  2. package/dist/index.d.ts +58 -2
  3. package/lib/Carousel.js.map +1 -1
  4. package/lib/CarouselAutoplayButton.js.map +1 -1
  5. package/lib/CarouselButton.js.map +1 -1
  6. package/lib/CarouselCard.js.map +1 -1
  7. package/lib/CarouselContext.js.map +1 -1
  8. package/lib/CarouselNav.js.map +1 -1
  9. package/lib/CarouselNavButton.js.map +1 -1
  10. package/lib/CarouselNavContainer.js.map +1 -1
  11. package/lib/CarouselNavImageButton.js.map +1 -1
  12. package/lib/CarouselSlider.js.map +1 -1
  13. package/lib/CarouselViewport.js +1 -0
  14. package/lib/CarouselViewport.js.map +1 -0
  15. package/lib/components/Carousel/Carousel.js +2 -3
  16. package/lib/components/Carousel/Carousel.js.map +1 -1
  17. package/lib/components/Carousel/Carousel.types.js.map +1 -1
  18. package/lib/components/Carousel/index.js.map +1 -1
  19. package/lib/components/Carousel/renderCarousel.js.map +1 -1
  20. package/lib/components/Carousel/useCarousel.js +9 -6
  21. package/lib/components/Carousel/useCarousel.js.map +1 -1
  22. package/lib/components/Carousel/useCarouselContextValues.js +5 -3
  23. package/lib/components/Carousel/useCarouselContextValues.js.map +1 -1
  24. package/lib/components/Carousel/useCarouselStyles.styles.js +3 -10
  25. package/lib/components/Carousel/useCarouselStyles.styles.js.map +1 -1
  26. package/lib/components/CarouselAutoplayButton/CarouselAutoplayButton.js +2 -3
  27. package/lib/components/CarouselAutoplayButton/CarouselAutoplayButton.js.map +1 -1
  28. package/lib/components/CarouselAutoplayButton/CarouselAutoplayButton.types.js.map +1 -1
  29. package/lib/components/CarouselAutoplayButton/index.js.map +1 -1
  30. package/lib/components/CarouselAutoplayButton/renderCarouselAutoplayButton.js +1 -1
  31. package/lib/components/CarouselAutoplayButton/renderCarouselAutoplayButton.js.map +1 -1
  32. package/lib/components/CarouselAutoplayButton/useCarouselAutoplayButton.js.map +1 -1
  33. package/lib/components/CarouselAutoplayButton/useCarouselAutoplayButtonStyles.styles.js +1 -2
  34. package/lib/components/CarouselButton/CarouselButton.js +2 -3
  35. package/lib/components/CarouselButton/CarouselButton.js.map +1 -1
  36. package/lib/components/CarouselButton/CarouselButton.types.js.map +1 -1
  37. package/lib/components/CarouselButton/index.js.map +1 -1
  38. package/lib/components/CarouselButton/renderCarouselButton.js +1 -1
  39. package/lib/components/CarouselButton/renderCarouselButton.js.map +1 -1
  40. package/lib/components/CarouselButton/useCarouselButton.js.map +1 -1
  41. package/lib/components/CarouselButton/useCarouselButtonStyles.styles.js +1 -2
  42. package/lib/components/CarouselCard/CarouselCard.js +2 -3
  43. package/lib/components/CarouselCard/CarouselCard.js.map +1 -1
  44. package/lib/components/CarouselCard/CarouselCard.types.js.map +1 -1
  45. package/lib/components/CarouselCard/index.js.map +1 -1
  46. package/lib/components/CarouselCard/renderCarouselCard.js.map +1 -1
  47. package/lib/components/CarouselCard/useCarouselCard.js +17 -10
  48. package/lib/components/CarouselCard/useCarouselCard.js.map +1 -1
  49. package/lib/components/CarouselCard/useCarouselCardStyles.styles.js +1 -2
  50. package/lib/components/CarouselContext.js +2 -1
  51. package/lib/components/CarouselContext.js.map +1 -1
  52. package/lib/components/CarouselContext.types.js.map +1 -1
  53. package/lib/components/CarouselNav/CarouselNav.js +2 -3
  54. package/lib/components/CarouselNav/CarouselNav.js.map +1 -1
  55. package/lib/components/CarouselNav/CarouselNav.types.js.map +1 -1
  56. package/lib/components/CarouselNav/CarouselNavContext.js.map +1 -1
  57. package/lib/components/CarouselNav/CarouselNavIndexContext.js.map +1 -1
  58. package/lib/components/CarouselNav/index.js.map +1 -1
  59. package/lib/components/CarouselNav/renderCarouselNav.js.map +1 -1
  60. package/lib/components/CarouselNav/useCarouselNav.js.map +1 -1
  61. package/lib/components/CarouselNav/useCarouselNavStyles.styles.js +1 -2
  62. package/lib/components/CarouselNavButton/CarouselNavButton.js +2 -3
  63. package/lib/components/CarouselNavButton/CarouselNavButton.js.map +1 -1
  64. package/lib/components/CarouselNavButton/CarouselNavButton.types.js.map +1 -1
  65. package/lib/components/CarouselNavButton/index.js.map +1 -1
  66. package/lib/components/CarouselNavButton/renderCarouselNavButton.js.map +1 -1
  67. package/lib/components/CarouselNavButton/useCarouselNavButton.js.map +1 -1
  68. package/lib/components/CarouselNavButton/useCarouselNavButtonStyles.styles.js +1 -2
  69. package/lib/components/CarouselNavContainer/CarouselNavContainer.js +2 -8
  70. package/lib/components/CarouselNavContainer/CarouselNavContainer.js.map +1 -1
  71. package/lib/components/CarouselNavContainer/CarouselNavContainer.types.js.map +1 -1
  72. package/lib/components/CarouselNavContainer/index.js.map +1 -1
  73. package/lib/components/CarouselNavContainer/renderCarouselNavContainer.js.map +1 -1
  74. package/lib/components/CarouselNavContainer/useCarouselNavContainer.js.map +1 -1
  75. package/lib/components/CarouselNavContainer/useCarouselNavContainerStyles.styles.js +1 -2
  76. package/lib/components/CarouselNavImageButton/CarouselNavImageButton.js +2 -3
  77. package/lib/components/CarouselNavImageButton/CarouselNavImageButton.js.map +1 -1
  78. package/lib/components/CarouselNavImageButton/CarouselNavImageButton.types.js.map +1 -1
  79. package/lib/components/CarouselNavImageButton/index.js.map +1 -1
  80. package/lib/components/CarouselNavImageButton/renderCarouselNavImageButton.js.map +1 -1
  81. package/lib/components/CarouselNavImageButton/useCarouselNavImageButton.js.map +1 -1
  82. package/lib/components/CarouselNavImageButton/useCarouselNavImageButtonStyles.styles.js +1 -2
  83. package/lib/components/CarouselSlider/CarouselSlider.js +2 -3
  84. package/lib/components/CarouselSlider/CarouselSlider.js.map +1 -1
  85. package/lib/components/CarouselSlider/CarouselSlider.types.js +3 -1
  86. package/lib/components/CarouselSlider/CarouselSlider.types.js.map +1 -1
  87. package/lib/components/CarouselSlider/CarouselSliderContext.js.map +1 -1
  88. package/lib/components/CarouselSlider/index.js.map +1 -1
  89. package/lib/components/CarouselSlider/renderCarouselSlider.js.map +1 -1
  90. package/lib/components/CarouselSlider/useCarouselSlider.js +3 -1
  91. package/lib/components/CarouselSlider/useCarouselSlider.js.map +1 -1
  92. package/lib/components/CarouselSlider/useCarouselSliderStyles.styles.js +1 -2
  93. package/lib/components/CarouselViewport/CarouselViewport.js +16 -0
  94. package/lib/components/CarouselViewport/CarouselViewport.js.map +1 -0
  95. package/lib/components/CarouselViewport/CarouselViewport.types.js +3 -0
  96. package/lib/components/CarouselViewport/CarouselViewport.types.js.map +1 -0
  97. package/lib/components/CarouselViewport/index.js +5 -0
  98. package/lib/components/CarouselViewport/index.js.map +1 -0
  99. package/lib/components/CarouselViewport/renderCarouselViewport.js +12 -0
  100. package/lib/components/CarouselViewport/renderCarouselViewport.js.map +1 -0
  101. package/lib/components/CarouselViewport/useCarouselViewport.js +28 -0
  102. package/lib/components/CarouselViewport/useCarouselViewport.js.map +1 -0
  103. package/lib/components/CarouselViewport/useCarouselViewportStyles.styles.js +25 -0
  104. package/lib/components/CarouselViewport/useCarouselViewportStyles.styles.js.map +1 -0
  105. package/lib/components/pointerEvents.js +58 -0
  106. package/lib/components/pointerEvents.js.map +1 -0
  107. package/lib/components/useEmblaCarousel.js +53 -30
  108. package/lib/components/useEmblaCarousel.js.map +1 -1
  109. package/lib/index.js +1 -0
  110. package/lib/index.js.map +1 -1
  111. package/lib-commonjs/Carousel.js.map +1 -1
  112. package/lib-commonjs/CarouselAutoplayButton.js.map +1 -1
  113. package/lib-commonjs/CarouselButton.js.map +1 -1
  114. package/lib-commonjs/CarouselCard.js.map +1 -1
  115. package/lib-commonjs/CarouselContext.js.map +1 -1
  116. package/lib-commonjs/CarouselNav.js.map +1 -1
  117. package/lib-commonjs/CarouselNavButton.js.map +1 -1
  118. package/lib-commonjs/CarouselNavContainer.js.map +1 -1
  119. package/lib-commonjs/CarouselNavImageButton.js.map +1 -1
  120. package/lib-commonjs/CarouselSlider.js.map +1 -1
  121. package/lib-commonjs/CarouselViewport.js +6 -0
  122. package/lib-commonjs/CarouselViewport.js.map +1 -0
  123. package/lib-commonjs/components/Carousel/Carousel.js +2 -3
  124. package/lib-commonjs/components/Carousel/Carousel.js.map +1 -1
  125. package/lib-commonjs/components/Carousel/Carousel.types.js.map +1 -1
  126. package/lib-commonjs/components/Carousel/index.js.map +1 -1
  127. package/lib-commonjs/components/Carousel/renderCarousel.js.map +1 -1
  128. package/lib-commonjs/components/Carousel/useCarousel.js +9 -6
  129. package/lib-commonjs/components/Carousel/useCarousel.js.map +1 -1
  130. package/lib-commonjs/components/Carousel/useCarouselContextValues.js +5 -3
  131. package/lib-commonjs/components/Carousel/useCarouselContextValues.js.map +1 -1
  132. package/lib-commonjs/components/Carousel/useCarouselStyles.styles.js +3 -12
  133. package/lib-commonjs/components/Carousel/useCarouselStyles.styles.js.map +1 -1
  134. package/lib-commonjs/components/CarouselAutoplayButton/CarouselAutoplayButton.js +2 -3
  135. package/lib-commonjs/components/CarouselAutoplayButton/CarouselAutoplayButton.js.map +1 -1
  136. package/lib-commonjs/components/CarouselAutoplayButton/CarouselAutoplayButton.types.js.map +1 -1
  137. package/lib-commonjs/components/CarouselAutoplayButton/index.js.map +1 -1
  138. package/lib-commonjs/components/CarouselAutoplayButton/renderCarouselAutoplayButton.js.map +1 -1
  139. package/lib-commonjs/components/CarouselAutoplayButton/useCarouselAutoplayButton.js.map +1 -1
  140. package/lib-commonjs/components/CarouselAutoplayButton/useCarouselAutoplayButtonStyles.styles.js +1 -1
  141. package/lib-commonjs/components/CarouselButton/CarouselButton.js +2 -3
  142. package/lib-commonjs/components/CarouselButton/CarouselButton.js.map +1 -1
  143. package/lib-commonjs/components/CarouselButton/CarouselButton.types.js.map +1 -1
  144. package/lib-commonjs/components/CarouselButton/index.js.map +1 -1
  145. package/lib-commonjs/components/CarouselButton/renderCarouselButton.js.map +1 -1
  146. package/lib-commonjs/components/CarouselButton/useCarouselButton.js.map +1 -1
  147. package/lib-commonjs/components/CarouselButton/useCarouselButtonStyles.styles.js +1 -1
  148. package/lib-commonjs/components/CarouselCard/CarouselCard.js +2 -3
  149. package/lib-commonjs/components/CarouselCard/CarouselCard.js.map +1 -1
  150. package/lib-commonjs/components/CarouselCard/CarouselCard.types.js.map +1 -1
  151. package/lib-commonjs/components/CarouselCard/index.js.map +1 -1
  152. package/lib-commonjs/components/CarouselCard/renderCarouselCard.js.map +1 -1
  153. package/lib-commonjs/components/CarouselCard/useCarouselCard.js +16 -10
  154. package/lib-commonjs/components/CarouselCard/useCarouselCard.js.map +1 -1
  155. package/lib-commonjs/components/CarouselCard/useCarouselCardStyles.styles.js +1 -1
  156. package/lib-commonjs/components/CarouselContext.js +2 -1
  157. package/lib-commonjs/components/CarouselContext.js.map +1 -1
  158. package/lib-commonjs/components/CarouselContext.types.js.map +1 -1
  159. package/lib-commonjs/components/CarouselNav/CarouselNav.js +2 -3
  160. package/lib-commonjs/components/CarouselNav/CarouselNav.js.map +1 -1
  161. package/lib-commonjs/components/CarouselNav/CarouselNav.types.js.map +1 -1
  162. package/lib-commonjs/components/CarouselNav/CarouselNavContext.js.map +1 -1
  163. package/lib-commonjs/components/CarouselNav/CarouselNavIndexContext.js.map +1 -1
  164. package/lib-commonjs/components/CarouselNav/index.js.map +1 -1
  165. package/lib-commonjs/components/CarouselNav/renderCarouselNav.js.map +1 -1
  166. package/lib-commonjs/components/CarouselNav/useCarouselNav.js.map +1 -1
  167. package/lib-commonjs/components/CarouselNav/useCarouselNavStyles.styles.js +1 -1
  168. package/lib-commonjs/components/CarouselNavButton/CarouselNavButton.js +2 -3
  169. package/lib-commonjs/components/CarouselNavButton/CarouselNavButton.js.map +1 -1
  170. package/lib-commonjs/components/CarouselNavButton/CarouselNavButton.types.js.map +1 -1
  171. package/lib-commonjs/components/CarouselNavButton/index.js.map +1 -1
  172. package/lib-commonjs/components/CarouselNavButton/renderCarouselNavButton.js.map +1 -1
  173. package/lib-commonjs/components/CarouselNavButton/useCarouselNavButton.js.map +1 -1
  174. package/lib-commonjs/components/CarouselNavButton/useCarouselNavButtonStyles.styles.js +1 -1
  175. package/lib-commonjs/components/CarouselNavContainer/CarouselNavContainer.js +2 -8
  176. package/lib-commonjs/components/CarouselNavContainer/CarouselNavContainer.js.map +1 -1
  177. package/lib-commonjs/components/CarouselNavContainer/CarouselNavContainer.types.js.map +1 -1
  178. package/lib-commonjs/components/CarouselNavContainer/index.js.map +1 -1
  179. package/lib-commonjs/components/CarouselNavContainer/renderCarouselNavContainer.js.map +1 -1
  180. package/lib-commonjs/components/CarouselNavContainer/useCarouselNavContainer.js.map +1 -1
  181. package/lib-commonjs/components/CarouselNavContainer/useCarouselNavContainerStyles.styles.js +1 -1
  182. package/lib-commonjs/components/CarouselNavImageButton/CarouselNavImageButton.js +2 -3
  183. package/lib-commonjs/components/CarouselNavImageButton/CarouselNavImageButton.js.map +1 -1
  184. package/lib-commonjs/components/CarouselNavImageButton/CarouselNavImageButton.types.js.map +1 -1
  185. package/lib-commonjs/components/CarouselNavImageButton/index.js.map +1 -1
  186. package/lib-commonjs/components/CarouselNavImageButton/renderCarouselNavImageButton.js.map +1 -1
  187. package/lib-commonjs/components/CarouselNavImageButton/useCarouselNavImageButton.js.map +1 -1
  188. package/lib-commonjs/components/CarouselNavImageButton/useCarouselNavImageButtonStyles.styles.js +1 -1
  189. package/lib-commonjs/components/CarouselSlider/CarouselSlider.js +2 -3
  190. package/lib-commonjs/components/CarouselSlider/CarouselSlider.js.map +1 -1
  191. package/lib-commonjs/components/CarouselSlider/CarouselSlider.types.js +3 -1
  192. package/lib-commonjs/components/CarouselSlider/CarouselSlider.types.js.map +1 -1
  193. package/lib-commonjs/components/CarouselSlider/CarouselSliderContext.js.map +1 -1
  194. package/lib-commonjs/components/CarouselSlider/index.js.map +1 -1
  195. package/lib-commonjs/components/CarouselSlider/renderCarouselSlider.js.map +1 -1
  196. package/lib-commonjs/components/CarouselSlider/useCarouselSlider.js +3 -1
  197. package/lib-commonjs/components/CarouselSlider/useCarouselSlider.js.map +1 -1
  198. package/lib-commonjs/components/CarouselSlider/useCarouselSliderStyles.styles.js +1 -1
  199. package/lib-commonjs/components/CarouselViewport/CarouselViewport.js +25 -0
  200. package/lib-commonjs/components/CarouselViewport/CarouselViewport.js.map +1 -0
  201. package/lib-commonjs/components/CarouselViewport/CarouselViewport.types.js +6 -0
  202. package/lib-commonjs/components/CarouselViewport/CarouselViewport.types.js.map +1 -0
  203. package/lib-commonjs/components/CarouselViewport/index.js +10 -0
  204. package/lib-commonjs/components/CarouselViewport/index.js.map +1 -0
  205. package/lib-commonjs/components/CarouselViewport/renderCarouselViewport.js +20 -0
  206. package/lib-commonjs/components/CarouselViewport/renderCarouselViewport.js.map +1 -0
  207. package/lib-commonjs/components/CarouselViewport/useCarouselViewport.js +31 -0
  208. package/lib-commonjs/components/CarouselViewport/useCarouselViewport.js.map +1 -0
  209. package/lib-commonjs/components/CarouselViewport/useCarouselViewportStyles.styles.js +41 -0
  210. package/lib-commonjs/components/CarouselViewport/useCarouselViewportStyles.styles.js.map +1 -0
  211. package/lib-commonjs/components/pointerEvents.js +68 -0
  212. package/lib-commonjs/components/pointerEvents.js.map +1 -0
  213. package/lib-commonjs/components/useEmblaCarousel.js +52 -29
  214. package/lib-commonjs/components/useEmblaCarousel.js.map +1 -1
  215. package/lib-commonjs/index.js +16 -0
  216. package/lib-commonjs/index.js.map +1 -1
  217. 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
- if (newElement) {
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 = newElement;
154
- emblaApi.current = (0, _emblacarousel.default)(newElement, {
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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"}
@@ -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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","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;;IAlBdC,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;;IAlBxBC,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;;IAvC7BC,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;;IAC1BC,oBAAoB;eAApBA,8BAAoB;;;gCAvBf;6BAQA;mCAQA;0BAQA;8BAQA;wCAYA;wCAYA;gCAOA;sCAaA;iCACoF"}
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.1.0",
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.7",
39
- "@fluentui/react-button": "^9.3.93",
40
- "@fluentui/react-context-selector": "^9.1.67",
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.44",
43
- "@fluentui/react-shared-contexts": "^9.20.1",
44
- "@fluentui/react-tabster": "^9.22.8",
45
- "@fluentui/react-theme": "^9.1.20",
46
- "@fluentui/react-utilities": "^9.18.15",
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",