@fluentui/react-carousel 9.2.0 → 9.3.1

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 (213) hide show
  1. package/CHANGELOG.md +35 -2
  2. package/dist/index.d.ts +47 -1
  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 +7 -5
  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 +10 -8
  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.map +1 -1
  86. package/lib/components/CarouselSlider/CarouselSliderContext.js.map +1 -1
  87. package/lib/components/CarouselSlider/index.js.map +1 -1
  88. package/lib/components/CarouselSlider/renderCarouselSlider.js.map +1 -1
  89. package/lib/components/CarouselSlider/useCarouselSlider.js.map +1 -1
  90. package/lib/components/CarouselSlider/useCarouselSliderStyles.styles.js +1 -2
  91. package/lib/components/CarouselViewport/CarouselViewport.js +16 -0
  92. package/lib/components/CarouselViewport/CarouselViewport.js.map +1 -0
  93. package/lib/components/CarouselViewport/CarouselViewport.types.js +3 -0
  94. package/lib/components/CarouselViewport/CarouselViewport.types.js.map +1 -0
  95. package/lib/components/CarouselViewport/index.js +5 -0
  96. package/lib/components/CarouselViewport/index.js.map +1 -0
  97. package/lib/components/CarouselViewport/renderCarouselViewport.js +12 -0
  98. package/lib/components/CarouselViewport/renderCarouselViewport.js.map +1 -0
  99. package/lib/components/CarouselViewport/useCarouselViewport.js +28 -0
  100. package/lib/components/CarouselViewport/useCarouselViewport.js.map +1 -0
  101. package/lib/components/CarouselViewport/useCarouselViewportStyles.styles.js +25 -0
  102. package/lib/components/CarouselViewport/useCarouselViewportStyles.styles.js.map +1 -0
  103. package/lib/components/pointerEvents.js +58 -0
  104. package/lib/components/pointerEvents.js.map +1 -0
  105. package/lib/components/useEmblaCarousel.js +58 -34
  106. package/lib/components/useEmblaCarousel.js.map +1 -1
  107. package/lib/index.js +1 -0
  108. package/lib/index.js.map +1 -1
  109. package/lib-commonjs/Carousel.js.map +1 -1
  110. package/lib-commonjs/CarouselAutoplayButton.js.map +1 -1
  111. package/lib-commonjs/CarouselButton.js.map +1 -1
  112. package/lib-commonjs/CarouselCard.js.map +1 -1
  113. package/lib-commonjs/CarouselContext.js.map +1 -1
  114. package/lib-commonjs/CarouselNav.js.map +1 -1
  115. package/lib-commonjs/CarouselNavButton.js.map +1 -1
  116. package/lib-commonjs/CarouselNavContainer.js.map +1 -1
  117. package/lib-commonjs/CarouselNavImageButton.js.map +1 -1
  118. package/lib-commonjs/CarouselSlider.js.map +1 -1
  119. package/lib-commonjs/CarouselViewport.js +6 -0
  120. package/lib-commonjs/CarouselViewport.js.map +1 -0
  121. package/lib-commonjs/components/Carousel/Carousel.js +2 -3
  122. package/lib-commonjs/components/Carousel/Carousel.js.map +1 -1
  123. package/lib-commonjs/components/Carousel/Carousel.types.js.map +1 -1
  124. package/lib-commonjs/components/Carousel/index.js.map +1 -1
  125. package/lib-commonjs/components/Carousel/renderCarousel.js.map +1 -1
  126. package/lib-commonjs/components/Carousel/useCarousel.js +7 -5
  127. package/lib-commonjs/components/Carousel/useCarousel.js.map +1 -1
  128. package/lib-commonjs/components/Carousel/useCarouselContextValues.js +5 -3
  129. package/lib-commonjs/components/Carousel/useCarouselContextValues.js.map +1 -1
  130. package/lib-commonjs/components/Carousel/useCarouselStyles.styles.js +3 -12
  131. package/lib-commonjs/components/Carousel/useCarouselStyles.styles.js.map +1 -1
  132. package/lib-commonjs/components/CarouselAutoplayButton/CarouselAutoplayButton.js +2 -3
  133. package/lib-commonjs/components/CarouselAutoplayButton/CarouselAutoplayButton.js.map +1 -1
  134. package/lib-commonjs/components/CarouselAutoplayButton/CarouselAutoplayButton.types.js.map +1 -1
  135. package/lib-commonjs/components/CarouselAutoplayButton/index.js.map +1 -1
  136. package/lib-commonjs/components/CarouselAutoplayButton/renderCarouselAutoplayButton.js.map +1 -1
  137. package/lib-commonjs/components/CarouselAutoplayButton/useCarouselAutoplayButton.js.map +1 -1
  138. package/lib-commonjs/components/CarouselAutoplayButton/useCarouselAutoplayButtonStyles.styles.js +1 -1
  139. package/lib-commonjs/components/CarouselButton/CarouselButton.js +2 -3
  140. package/lib-commonjs/components/CarouselButton/CarouselButton.js.map +1 -1
  141. package/lib-commonjs/components/CarouselButton/CarouselButton.types.js.map +1 -1
  142. package/lib-commonjs/components/CarouselButton/index.js.map +1 -1
  143. package/lib-commonjs/components/CarouselButton/renderCarouselButton.js.map +1 -1
  144. package/lib-commonjs/components/CarouselButton/useCarouselButton.js.map +1 -1
  145. package/lib-commonjs/components/CarouselButton/useCarouselButtonStyles.styles.js +1 -1
  146. package/lib-commonjs/components/CarouselCard/CarouselCard.js +2 -3
  147. package/lib-commonjs/components/CarouselCard/CarouselCard.js.map +1 -1
  148. package/lib-commonjs/components/CarouselCard/CarouselCard.types.js.map +1 -1
  149. package/lib-commonjs/components/CarouselCard/index.js.map +1 -1
  150. package/lib-commonjs/components/CarouselCard/renderCarouselCard.js.map +1 -1
  151. package/lib-commonjs/components/CarouselCard/useCarouselCard.js +10 -8
  152. package/lib-commonjs/components/CarouselCard/useCarouselCard.js.map +1 -1
  153. package/lib-commonjs/components/CarouselCard/useCarouselCardStyles.styles.js +1 -1
  154. package/lib-commonjs/components/CarouselContext.js +2 -1
  155. package/lib-commonjs/components/CarouselContext.js.map +1 -1
  156. package/lib-commonjs/components/CarouselContext.types.js.map +1 -1
  157. package/lib-commonjs/components/CarouselNav/CarouselNav.js +2 -3
  158. package/lib-commonjs/components/CarouselNav/CarouselNav.js.map +1 -1
  159. package/lib-commonjs/components/CarouselNav/CarouselNav.types.js.map +1 -1
  160. package/lib-commonjs/components/CarouselNav/CarouselNavContext.js.map +1 -1
  161. package/lib-commonjs/components/CarouselNav/CarouselNavIndexContext.js.map +1 -1
  162. package/lib-commonjs/components/CarouselNav/index.js.map +1 -1
  163. package/lib-commonjs/components/CarouselNav/renderCarouselNav.js.map +1 -1
  164. package/lib-commonjs/components/CarouselNav/useCarouselNav.js.map +1 -1
  165. package/lib-commonjs/components/CarouselNav/useCarouselNavStyles.styles.js +1 -1
  166. package/lib-commonjs/components/CarouselNavButton/CarouselNavButton.js +2 -3
  167. package/lib-commonjs/components/CarouselNavButton/CarouselNavButton.js.map +1 -1
  168. package/lib-commonjs/components/CarouselNavButton/CarouselNavButton.types.js.map +1 -1
  169. package/lib-commonjs/components/CarouselNavButton/index.js.map +1 -1
  170. package/lib-commonjs/components/CarouselNavButton/renderCarouselNavButton.js.map +1 -1
  171. package/lib-commonjs/components/CarouselNavButton/useCarouselNavButton.js.map +1 -1
  172. package/lib-commonjs/components/CarouselNavButton/useCarouselNavButtonStyles.styles.js +1 -1
  173. package/lib-commonjs/components/CarouselNavContainer/CarouselNavContainer.js +2 -8
  174. package/lib-commonjs/components/CarouselNavContainer/CarouselNavContainer.js.map +1 -1
  175. package/lib-commonjs/components/CarouselNavContainer/CarouselNavContainer.types.js.map +1 -1
  176. package/lib-commonjs/components/CarouselNavContainer/index.js.map +1 -1
  177. package/lib-commonjs/components/CarouselNavContainer/renderCarouselNavContainer.js.map +1 -1
  178. package/lib-commonjs/components/CarouselNavContainer/useCarouselNavContainer.js.map +1 -1
  179. package/lib-commonjs/components/CarouselNavContainer/useCarouselNavContainerStyles.styles.js +1 -1
  180. package/lib-commonjs/components/CarouselNavImageButton/CarouselNavImageButton.js +2 -3
  181. package/lib-commonjs/components/CarouselNavImageButton/CarouselNavImageButton.js.map +1 -1
  182. package/lib-commonjs/components/CarouselNavImageButton/CarouselNavImageButton.types.js.map +1 -1
  183. package/lib-commonjs/components/CarouselNavImageButton/index.js.map +1 -1
  184. package/lib-commonjs/components/CarouselNavImageButton/renderCarouselNavImageButton.js.map +1 -1
  185. package/lib-commonjs/components/CarouselNavImageButton/useCarouselNavImageButton.js.map +1 -1
  186. package/lib-commonjs/components/CarouselNavImageButton/useCarouselNavImageButtonStyles.styles.js +1 -1
  187. package/lib-commonjs/components/CarouselSlider/CarouselSlider.js +2 -3
  188. package/lib-commonjs/components/CarouselSlider/CarouselSlider.js.map +1 -1
  189. package/lib-commonjs/components/CarouselSlider/CarouselSlider.types.js.map +1 -1
  190. package/lib-commonjs/components/CarouselSlider/CarouselSliderContext.js.map +1 -1
  191. package/lib-commonjs/components/CarouselSlider/index.js.map +1 -1
  192. package/lib-commonjs/components/CarouselSlider/renderCarouselSlider.js.map +1 -1
  193. package/lib-commonjs/components/CarouselSlider/useCarouselSlider.js.map +1 -1
  194. package/lib-commonjs/components/CarouselSlider/useCarouselSliderStyles.styles.js +1 -1
  195. package/lib-commonjs/components/CarouselViewport/CarouselViewport.js +25 -0
  196. package/lib-commonjs/components/CarouselViewport/CarouselViewport.js.map +1 -0
  197. package/lib-commonjs/components/CarouselViewport/CarouselViewport.types.js +6 -0
  198. package/lib-commonjs/components/CarouselViewport/CarouselViewport.types.js.map +1 -0
  199. package/lib-commonjs/components/CarouselViewport/index.js +10 -0
  200. package/lib-commonjs/components/CarouselViewport/index.js.map +1 -0
  201. package/lib-commonjs/components/CarouselViewport/renderCarouselViewport.js +20 -0
  202. package/lib-commonjs/components/CarouselViewport/renderCarouselViewport.js.map +1 -0
  203. package/lib-commonjs/components/CarouselViewport/useCarouselViewport.js +31 -0
  204. package/lib-commonjs/components/CarouselViewport/useCarouselViewport.js.map +1 -0
  205. package/lib-commonjs/components/CarouselViewport/useCarouselViewportStyles.styles.js +41 -0
  206. package/lib-commonjs/components/CarouselViewport/useCarouselViewportStyles.styles.js.map +1 -0
  207. package/lib-commonjs/components/pointerEvents.js +68 -0
  208. package/lib-commonjs/components/pointerEvents.js.map +1 -0
  209. package/lib-commonjs/components/useEmblaCarousel.js +57 -33
  210. package/lib-commonjs/components/useEmblaCarousel.js.map +1 -1
  211. package/lib-commonjs/index.js +16 -0
  212. package/lib-commonjs/index.js.map +1 -1
  213. package/package.json +10 -21
@@ -2,15 +2,14 @@ import * as React from 'react';
2
2
  import { useCarouselNavImageButton_unstable } from './useCarouselNavImageButton';
3
3
  import { renderCarouselNavImageButton_unstable } from './renderCarouselNavImageButton';
4
4
  import { useCarouselNavImageButtonStyles_unstable } from './useCarouselNavImageButtonStyles.styles';
5
+ import { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';
5
6
  /**
6
7
  * A variant child element of CarouselNav, a singular image button that displays a
7
8
  * preview of card content and will set the carousels active value on click.
8
9
  */ export const CarouselNavImageButton = /*#__PURE__*/ React.forwardRef((props, ref)=>{
9
10
  const state = useCarouselNavImageButton_unstable(props, ref);
10
11
  useCarouselNavImageButtonStyles_unstable(state);
11
- // TODO update types in packages/react-components/react-shared-contexts/src/CustomStyleHooksContext/CustomStyleHooksContext.ts
12
- // https://github.com/microsoft/fluentui/blob/master/rfcs/react-components/convergence/custom-styling.md
13
- // useCustomStyleHook_unstable('useCarouselNavImageButtonStyles_unstable')(state);
12
+ useCustomStyleHook_unstable('useCarouselNavImageButtonStyles_unstable')(state);
14
13
  return renderCarouselNavImageButton_unstable(state);
15
14
  });
16
15
  CarouselNavImageButton.displayName = 'CarouselNavImageButton';
@@ -1 +1 @@
1
- {"version":3,"sources":["CarouselNavImageButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useCarouselNavImageButton_unstable } from './useCarouselNavImageButton';\nimport { renderCarouselNavImageButton_unstable } from './renderCarouselNavImageButton';\nimport { useCarouselNavImageButtonStyles_unstable } from './useCarouselNavImageButtonStyles.styles';\nimport type { CarouselNavImageButtonProps } from './CarouselNavImageButton.types';\n\n/**\n * A variant child element of CarouselNav, a singular image button that displays a\n * preview of card content and will set the carousels active value on click.\n */\nexport const CarouselNavImageButton: ForwardRefComponent<CarouselNavImageButtonProps> = React.forwardRef(\n (props, ref) => {\n const state = useCarouselNavImageButton_unstable(props, ref);\n\n useCarouselNavImageButtonStyles_unstable(state);\n // TODO update types in packages/react-components/react-shared-contexts/src/CustomStyleHooksContext/CustomStyleHooksContext.ts\n // https://github.com/microsoft/fluentui/blob/master/rfcs/react-components/convergence/custom-styling.md\n // useCustomStyleHook_unstable('useCarouselNavImageButtonStyles_unstable')(state);\n return renderCarouselNavImageButton_unstable(state);\n },\n);\n\nCarouselNavImageButton.displayName = 'CarouselNavImageButton';\n"],"names":["React","useCarouselNavImageButton_unstable","renderCarouselNavImageButton_unstable","useCarouselNavImageButtonStyles_unstable","CarouselNavImageButton","forwardRef","props","ref","state","displayName"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,kCAAkC,QAAQ,8BAA8B;AACjF,SAASC,qCAAqC,QAAQ,iCAAiC;AACvF,SAASC,wCAAwC,QAAQ,2CAA2C;AAGpG;;;CAGC,GACD,OAAO,MAAMC,uCAA2EJ,MAAMK,UAAU,CACtG,CAACC,OAAOC;IACN,MAAMC,QAAQP,mCAAmCK,OAAOC;IAExDJ,yCAAyCK;IACzC,8HAA8H;IAC9H,wGAAwG;IACxG,kFAAkF;IAClF,OAAON,sCAAsCM;AAC/C,GACA;AAEFJ,uBAAuBK,WAAW,GAAG"}
1
+ {"version":3,"sources":["../src/components/CarouselNavImageButton/CarouselNavImageButton.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useCarouselNavImageButton_unstable } from './useCarouselNavImageButton';\nimport { renderCarouselNavImageButton_unstable } from './renderCarouselNavImageButton';\nimport { useCarouselNavImageButtonStyles_unstable } from './useCarouselNavImageButtonStyles.styles';\nimport type { CarouselNavImageButtonProps } from './CarouselNavImageButton.types';\nimport { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\n\n/**\n * A variant child element of CarouselNav, a singular image button that displays a\n * preview of card content and will set the carousels active value on click.\n */\nexport const CarouselNavImageButton: ForwardRefComponent<CarouselNavImageButtonProps> = React.forwardRef(\n (props, ref) => {\n const state = useCarouselNavImageButton_unstable(props, ref);\n\n useCarouselNavImageButtonStyles_unstable(state);\n useCustomStyleHook_unstable('useCarouselNavImageButtonStyles_unstable')(state);\n\n return renderCarouselNavImageButton_unstable(state);\n },\n);\n\nCarouselNavImageButton.displayName = 'CarouselNavImageButton';\n"],"names":["React","useCarouselNavImageButton_unstable","renderCarouselNavImageButton_unstable","useCarouselNavImageButtonStyles_unstable","useCustomStyleHook_unstable","CarouselNavImageButton","forwardRef","props","ref","state","displayName"],"rangeMappings":";;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,kCAAkC,QAAQ,8BAA8B;AACjF,SAASC,qCAAqC,QAAQ,iCAAiC;AACvF,SAASC,wCAAwC,QAAQ,2CAA2C;AAEpG,SAASC,2BAA2B,QAAQ,kCAAkC;AAE9E;;;CAGC,GACD,OAAO,MAAMC,uCAA2EL,MAAMM,UAAU,CACtG,CAACC,OAAOC;IACN,MAAMC,QAAQR,mCAAmCM,OAAOC;IAExDL,yCAAyCM;IACzCL,4BAA4B,4CAA4CK;IAExE,OAAOP,sCAAsCO;AAC/C,GACA;AAEFJ,uBAAuBK,WAAW,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["CarouselNavImageButton.types.ts"],"sourcesContent":["import { ARIAButtonSlotProps } from '@fluentui/react-aria';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\nexport type CarouselNavImageButtonSlots = {\n /**\n * ARIA compliant nav buttons used to jump to pages\n */\n root: NonNullable<Slot<ARIAButtonSlotProps>>;\n /**\n * Required: The image within the button\n */\n image: NonNullable<Slot<'img'>>;\n};\n\n/**\n * CarouselNavImageButton Props\n */\nexport type CarouselNavImageButtonProps = ComponentProps<CarouselNavImageButtonSlots> & {};\n\n/**\n * State used in rendering CarouselNavImageButton\n */\nexport type CarouselNavImageButtonState = ComponentState<CarouselNavImageButtonSlots> & {\n /**\n * Enables selection state control\n */\n selected?: boolean;\n};\n"],"names":[],"rangeMappings":";;","mappings":"AAmBA;;CAEC,GACD,WAKE"}
1
+ {"version":3,"sources":["../src/components/CarouselNavImageButton/CarouselNavImageButton.types.ts"],"sourcesContent":["import { ARIAButtonSlotProps } from '@fluentui/react-aria';\nimport type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\nexport type CarouselNavImageButtonSlots = {\n /**\n * ARIA compliant nav buttons used to jump to pages\n */\n root: NonNullable<Slot<ARIAButtonSlotProps>>;\n /**\n * Required: The image within the button\n */\n image: NonNullable<Slot<'img'>>;\n};\n\n/**\n * CarouselNavImageButton Props\n */\nexport type CarouselNavImageButtonProps = ComponentProps<CarouselNavImageButtonSlots> & {};\n\n/**\n * State used in rendering CarouselNavImageButton\n */\nexport type CarouselNavImageButtonState = ComponentState<CarouselNavImageButtonSlots> & {\n /**\n * Enables selection state control\n */\n selected?: boolean;\n};\n"],"names":[],"rangeMappings":";;","mappings":"AAmBA;;CAEC,GACD,WAKE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './CarouselNavImageButton';\nexport * from './CarouselNavImageButton.types';\nexport * from './renderCarouselNavImageButton';\nexport * from './useCarouselNavImageButton';\nexport * from './useCarouselNavImageButtonStyles.styles';\n"],"names":[],"rangeMappings":";;;;","mappings":"AAAA,cAAc,2BAA2B;AACzC,cAAc,iCAAiC;AAC/C,cAAc,iCAAiC;AAC/C,cAAc,8BAA8B;AAC5C,cAAc,2CAA2C"}
1
+ {"version":3,"sources":["../src/components/CarouselNavImageButton/index.ts"],"sourcesContent":["export * from './CarouselNavImageButton';\nexport * from './CarouselNavImageButton.types';\nexport * from './renderCarouselNavImageButton';\nexport * from './useCarouselNavImageButton';\nexport * from './useCarouselNavImageButtonStyles.styles';\n"],"names":[],"rangeMappings":";;;;","mappings":"AAAA,cAAc,2BAA2B;AACzC,cAAc,iCAAiC;AAC/C,cAAc,iCAAiC;AAC/C,cAAc,8BAA8B;AAC5C,cAAc,2CAA2C"}
@@ -1 +1 @@
1
- {"version":3,"sources":["renderCarouselNavImageButton.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { CarouselNavImageButtonState, CarouselNavImageButtonSlots } from './CarouselNavImageButton.types';\n\n/**\n * Render the final JSX of CarouselNavImageButton\n */\nexport const renderCarouselNavImageButton_unstable = (state: CarouselNavImageButtonState) => {\n assertSlots<CarouselNavImageButtonSlots>(state);\n\n return (\n <state.root>\n <state.image />\n </state.root>\n );\n};\n"],"names":["assertSlots","renderCarouselNavImageButton_unstable","state","root","image"],"rangeMappings":";;;;;;;;;","mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAGxD;;CAEC,GACD,OAAO,MAAMC,wCAAwC,CAACC;IACpDF,YAAyCE;IAEzC,qBACE,KAACA,MAAMC,IAAI;kBACT,cAAA,KAACD,MAAME,KAAK;;AAGlB,EAAE"}
1
+ {"version":3,"sources":["../src/components/CarouselNavImageButton/renderCarouselNavImageButton.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { CarouselNavImageButtonState, CarouselNavImageButtonSlots } from './CarouselNavImageButton.types';\n\n/**\n * Render the final JSX of CarouselNavImageButton\n */\nexport const renderCarouselNavImageButton_unstable = (state: CarouselNavImageButtonState) => {\n assertSlots<CarouselNavImageButtonSlots>(state);\n\n return (\n <state.root>\n <state.image />\n </state.root>\n );\n};\n"],"names":["assertSlots","renderCarouselNavImageButton_unstable","state","root","image"],"rangeMappings":";;;;;;;;;","mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAGxD;;CAEC,GACD,OAAO,MAAMC,wCAAwC,CAACC;IACpDF,YAAyCE;IAEzC,qBACE,KAACA,MAAMC,IAAI;kBACT,cAAA,KAACD,MAAME,KAAK;;AAGlB,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["useCarouselNavImageButton.ts"],"sourcesContent":["import { type ARIAButtonElement, type ARIAButtonSlotProps, useARIAButtonProps } from '@fluentui/react-aria';\nimport {\n getIntrinsicElementProps,\n isHTMLElement,\n slot,\n useEventCallback,\n useIsomorphicLayoutEffect,\n useMergedRefs,\n} from '@fluentui/react-utilities';\nimport { useTabsterAttributes } from '@fluentui/react-tabster';\nimport * as React from 'react';\n\nimport { useCarouselNavIndexContext } from '../CarouselNav/CarouselNavIndexContext';\nimport { useCarouselContext_unstable as useCarouselContext } from '../CarouselContext';\nimport type { CarouselNavImageButtonProps, CarouselNavImageButtonState } from './CarouselNavImageButton.types';\n\n/**\n * Create the state required to render CarouselNavImageButton.\n *\n * The returned state can be modified with hooks such as useCarouselNavImageButtonStyles_unstable,\n * before being passed to renderCarouselNavImageButton_unstable.\n *\n * @param props - props from this instance of CarouselNavImageButton\n * @param ref - reference to root HTMLButtonElement | HTMLAnchorElement of CarouselNavImageButton\n */\nexport const useCarouselNavImageButton_unstable = (\n props: CarouselNavImageButtonProps,\n ref: React.Ref<ARIAButtonElement>,\n): CarouselNavImageButtonState => {\n const { onClick, as = 'button' } = props;\n\n const index = useCarouselNavIndexContext();\n const selectPageByIndex = useCarouselContext(ctx => ctx.selectPageByIndex);\n const selected = useCarouselContext(ctx => ctx.activeIndex === index);\n const subscribeForValues = useCarouselContext(ctx => ctx.subscribeForValues);\n\n const handleClick: ARIAButtonSlotProps['onClick'] = useEventCallback(event => {\n onClick?.(event);\n\n if (!event.defaultPrevented && isHTMLElement(event.target)) {\n selectPageByIndex(event, index);\n }\n });\n\n const defaultTabProps = useTabsterAttributes({\n focusable: { isDefault: selected },\n });\n\n const buttonRef = React.useRef<HTMLElement>();\n const _carouselButton = slot.always<ARIAButtonSlotProps>(\n getIntrinsicElementProps(as, useARIAButtonProps(props.as, props)),\n {\n elementType: 'button',\n defaultProps: {\n ref: useMergedRefs(ref, buttonRef),\n role: 'tab',\n type: 'button',\n 'aria-selected': selected,\n ...defaultTabProps,\n },\n },\n );\n\n useIsomorphicLayoutEffect(() => {\n return subscribeForValues(data => {\n const controlList = data.groupIndexList[index];\n const _controlledSlideIds = controlList\n .map((slideIndex: number) => {\n return data.slideNodes[slideIndex].id;\n })\n .join(' ');\n if (buttonRef.current) {\n buttonRef.current.setAttribute('aria-controls', _controlledSlideIds);\n }\n });\n }, [subscribeForValues, index]);\n\n // Override onClick\n _carouselButton.onClick = handleClick;\n\n const image = slot.always(\n getIntrinsicElementProps('img', {\n 'aria-hidden': true, // Hidden as button is responsible for navigation description\n alt: '',\n role: 'presentation',\n ...props.image,\n }),\n { elementType: 'img' },\n );\n\n return {\n components: {\n root: 'button',\n image: 'img',\n },\n root: _carouselButton,\n image,\n selected,\n };\n};\n"],"names":["useARIAButtonProps","getIntrinsicElementProps","isHTMLElement","slot","useEventCallback","useIsomorphicLayoutEffect","useMergedRefs","useTabsterAttributes","React","useCarouselNavIndexContext","useCarouselContext_unstable","useCarouselContext","useCarouselNavImageButton_unstable","props","ref","onClick","as","index","selectPageByIndex","ctx","selected","activeIndex","subscribeForValues","handleClick","event","defaultPrevented","target","defaultTabProps","focusable","isDefault","buttonRef","useRef","_carouselButton","always","elementType","defaultProps","role","type","data","controlList","groupIndexList","_controlledSlideIds","map","slideIndex","slideNodes","id","join","current","setAttribute","image","alt","components","root"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAA2DA,kBAAkB,QAAQ,uBAAuB;AAC5G,SACEC,wBAAwB,EACxBC,aAAa,EACbC,IAAI,EACJC,gBAAgB,EAChBC,yBAAyB,EACzBC,aAAa,QACR,4BAA4B;AACnC,SAASC,oBAAoB,QAAQ,0BAA0B;AAC/D,YAAYC,WAAW,QAAQ;AAE/B,SAASC,0BAA0B,QAAQ,yCAAyC;AACpF,SAASC,+BAA+BC,kBAAkB,QAAQ,qBAAqB;AAGvF;;;;;;;;CAQC,GACD,OAAO,MAAMC,qCAAqC,CAChDC,OACAC;IAEA,MAAM,EAAEC,OAAO,EAAEC,KAAK,QAAQ,EAAE,GAAGH;IAEnC,MAAMI,QAAQR;IACd,MAAMS,oBAAoBP,mBAAmBQ,CAAAA,MAAOA,IAAID,iBAAiB;IACzE,MAAME,WAAWT,mBAAmBQ,CAAAA,MAAOA,IAAIE,WAAW,KAAKJ;IAC/D,MAAMK,qBAAqBX,mBAAmBQ,CAAAA,MAAOA,IAAIG,kBAAkB;IAE3E,MAAMC,cAA8CnB,iBAAiBoB,CAAAA;QACnET,oBAAAA,8BAAAA,QAAUS;QAEV,IAAI,CAACA,MAAMC,gBAAgB,IAAIvB,cAAcsB,MAAME,MAAM,GAAG;YAC1DR,kBAAkBM,OAAOP;QAC3B;IACF;IAEA,MAAMU,kBAAkBpB,qBAAqB;QAC3CqB,WAAW;YAAEC,WAAWT;QAAS;IACnC;IAEA,MAAMU,YAAYtB,MAAMuB,MAAM;IAC9B,MAAMC,kBAAkB7B,KAAK8B,MAAM,CACjChC,yBAAyBe,IAAIhB,mBAAmBa,MAAMG,EAAE,EAAEH,SAC1D;QACEqB,aAAa;QACbC,cAAc;YACZrB,KAAKR,cAAcQ,KAAKgB;YACxBM,MAAM;YACNC,MAAM;YACN,iBAAiBjB;YACjB,GAAGO,eAAe;QACpB;IACF;IAGFtB,0BAA0B;QACxB,OAAOiB,mBAAmBgB,CAAAA;YACxB,MAAMC,cAAcD,KAAKE,cAAc,CAACvB,MAAM;YAC9C,MAAMwB,sBAAsBF,YACzBG,GAAG,CAAC,CAACC;gBACJ,OAAOL,KAAKM,UAAU,CAACD,WAAW,CAACE,EAAE;YACvC,GACCC,IAAI,CAAC;YACR,IAAIhB,UAAUiB,OAAO,EAAE;gBACrBjB,UAAUiB,OAAO,CAACC,YAAY,CAAC,iBAAiBP;YAClD;QACF;IACF,GAAG;QAACnB;QAAoBL;KAAM;IAE9B,mBAAmB;IACnBe,gBAAgBjB,OAAO,GAAGQ;IAE1B,MAAM0B,QAAQ9C,KAAK8B,MAAM,CACvBhC,yBAAyB,OAAO;QAC9B,eAAe;QACfiD,KAAK;QACLd,MAAM;QACN,GAAGvB,MAAMoC,KAAK;IAChB,IACA;QAAEf,aAAa;IAAM;IAGvB,OAAO;QACLiB,YAAY;YACVC,MAAM;YACNH,OAAO;QACT;QACAG,MAAMpB;QACNiB;QACA7B;IACF;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/CarouselNavImageButton/useCarouselNavImageButton.ts"],"sourcesContent":["import { type ARIAButtonElement, type ARIAButtonSlotProps, useARIAButtonProps } from '@fluentui/react-aria';\nimport {\n getIntrinsicElementProps,\n isHTMLElement,\n slot,\n useEventCallback,\n useIsomorphicLayoutEffect,\n useMergedRefs,\n} from '@fluentui/react-utilities';\nimport { useTabsterAttributes } from '@fluentui/react-tabster';\nimport * as React from 'react';\n\nimport { useCarouselNavIndexContext } from '../CarouselNav/CarouselNavIndexContext';\nimport { useCarouselContext_unstable as useCarouselContext } from '../CarouselContext';\nimport type { CarouselNavImageButtonProps, CarouselNavImageButtonState } from './CarouselNavImageButton.types';\n\n/**\n * Create the state required to render CarouselNavImageButton.\n *\n * The returned state can be modified with hooks such as useCarouselNavImageButtonStyles_unstable,\n * before being passed to renderCarouselNavImageButton_unstable.\n *\n * @param props - props from this instance of CarouselNavImageButton\n * @param ref - reference to root HTMLButtonElement | HTMLAnchorElement of CarouselNavImageButton\n */\nexport const useCarouselNavImageButton_unstable = (\n props: CarouselNavImageButtonProps,\n ref: React.Ref<ARIAButtonElement>,\n): CarouselNavImageButtonState => {\n const { onClick, as = 'button' } = props;\n\n const index = useCarouselNavIndexContext();\n const selectPageByIndex = useCarouselContext(ctx => ctx.selectPageByIndex);\n const selected = useCarouselContext(ctx => ctx.activeIndex === index);\n const subscribeForValues = useCarouselContext(ctx => ctx.subscribeForValues);\n\n const handleClick: ARIAButtonSlotProps['onClick'] = useEventCallback(event => {\n onClick?.(event);\n\n if (!event.defaultPrevented && isHTMLElement(event.target)) {\n selectPageByIndex(event, index);\n }\n });\n\n const defaultTabProps = useTabsterAttributes({\n focusable: { isDefault: selected },\n });\n\n const buttonRef = React.useRef<HTMLElement>();\n const _carouselButton = slot.always<ARIAButtonSlotProps>(\n getIntrinsicElementProps(as, useARIAButtonProps(props.as, props)),\n {\n elementType: 'button',\n defaultProps: {\n ref: useMergedRefs(ref, buttonRef),\n role: 'tab',\n type: 'button',\n 'aria-selected': selected,\n ...defaultTabProps,\n },\n },\n );\n\n useIsomorphicLayoutEffect(() => {\n return subscribeForValues(data => {\n const controlList = data.groupIndexList[index];\n const _controlledSlideIds = controlList\n .map((slideIndex: number) => {\n return data.slideNodes[slideIndex].id;\n })\n .join(' ');\n if (buttonRef.current) {\n buttonRef.current.setAttribute('aria-controls', _controlledSlideIds);\n }\n });\n }, [subscribeForValues, index]);\n\n // Override onClick\n _carouselButton.onClick = handleClick;\n\n const image = slot.always(\n getIntrinsicElementProps('img', {\n 'aria-hidden': true, // Hidden as button is responsible for navigation description\n alt: '',\n role: 'presentation',\n ...props.image,\n }),\n { elementType: 'img' },\n );\n\n return {\n components: {\n root: 'button',\n image: 'img',\n },\n root: _carouselButton,\n image,\n selected,\n };\n};\n"],"names":["useARIAButtonProps","getIntrinsicElementProps","isHTMLElement","slot","useEventCallback","useIsomorphicLayoutEffect","useMergedRefs","useTabsterAttributes","React","useCarouselNavIndexContext","useCarouselContext_unstable","useCarouselContext","useCarouselNavImageButton_unstable","props","ref","onClick","as","index","selectPageByIndex","ctx","selected","activeIndex","subscribeForValues","handleClick","event","defaultPrevented","target","defaultTabProps","focusable","isDefault","buttonRef","useRef","_carouselButton","always","elementType","defaultProps","role","type","data","controlList","groupIndexList","_controlledSlideIds","map","slideIndex","slideNodes","id","join","current","setAttribute","image","alt","components","root"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAA2DA,kBAAkB,QAAQ,uBAAuB;AAC5G,SACEC,wBAAwB,EACxBC,aAAa,EACbC,IAAI,EACJC,gBAAgB,EAChBC,yBAAyB,EACzBC,aAAa,QACR,4BAA4B;AACnC,SAASC,oBAAoB,QAAQ,0BAA0B;AAC/D,YAAYC,WAAW,QAAQ;AAE/B,SAASC,0BAA0B,QAAQ,yCAAyC;AACpF,SAASC,+BAA+BC,kBAAkB,QAAQ,qBAAqB;AAGvF;;;;;;;;CAQC,GACD,OAAO,MAAMC,qCAAqC,CAChDC,OACAC;IAEA,MAAM,EAAEC,OAAO,EAAEC,KAAK,QAAQ,EAAE,GAAGH;IAEnC,MAAMI,QAAQR;IACd,MAAMS,oBAAoBP,mBAAmBQ,CAAAA,MAAOA,IAAID,iBAAiB;IACzE,MAAME,WAAWT,mBAAmBQ,CAAAA,MAAOA,IAAIE,WAAW,KAAKJ;IAC/D,MAAMK,qBAAqBX,mBAAmBQ,CAAAA,MAAOA,IAAIG,kBAAkB;IAE3E,MAAMC,cAA8CnB,iBAAiBoB,CAAAA;QACnET,oBAAAA,8BAAAA,QAAUS;QAEV,IAAI,CAACA,MAAMC,gBAAgB,IAAIvB,cAAcsB,MAAME,MAAM,GAAG;YAC1DR,kBAAkBM,OAAOP;QAC3B;IACF;IAEA,MAAMU,kBAAkBpB,qBAAqB;QAC3CqB,WAAW;YAAEC,WAAWT;QAAS;IACnC;IAEA,MAAMU,YAAYtB,MAAMuB,MAAM;IAC9B,MAAMC,kBAAkB7B,KAAK8B,MAAM,CACjChC,yBAAyBe,IAAIhB,mBAAmBa,MAAMG,EAAE,EAAEH,SAC1D;QACEqB,aAAa;QACbC,cAAc;YACZrB,KAAKR,cAAcQ,KAAKgB;YACxBM,MAAM;YACNC,MAAM;YACN,iBAAiBjB;YACjB,GAAGO,eAAe;QACpB;IACF;IAGFtB,0BAA0B;QACxB,OAAOiB,mBAAmBgB,CAAAA;YACxB,MAAMC,cAAcD,KAAKE,cAAc,CAACvB,MAAM;YAC9C,MAAMwB,sBAAsBF,YACzBG,GAAG,CAAC,CAACC;gBACJ,OAAOL,KAAKM,UAAU,CAACD,WAAW,CAACE,EAAE;YACvC,GACCC,IAAI,CAAC;YACR,IAAIhB,UAAUiB,OAAO,EAAE;gBACrBjB,UAAUiB,OAAO,CAACC,YAAY,CAAC,iBAAiBP;YAClD;QACF;IACF,GAAG;QAACnB;QAAoBL;KAAM;IAE9B,mBAAmB;IACnBe,gBAAgBjB,OAAO,GAAGQ;IAE1B,MAAM0B,QAAQ9C,KAAK8B,MAAM,CACvBhC,yBAAyB,OAAO;QAC9B,eAAe;QACfiD,KAAK;QACLd,MAAM;QACN,GAAGvB,MAAMoC,KAAK;IAChB,IACA;QAAEf,aAAa;IAAM;IAGvB,OAAO;QACLiB,YAAY;YACVC,MAAM;YACNH,OAAO;QACT;QACAG,MAAMpB;QACNiB;QACA7B;IACF;AACF,EAAE"}
@@ -81,5 +81,4 @@ export const useCarouselNavImageButtonStyles_unstable = state => {
81
81
  state.image.className = mergeClasses(carouselNavImageButtonClassNames.image, styles.image, selected && styles.selected, (_state_image = state.image) === null || _state_image === void 0 ? void 0 : _state_image.className);
82
82
  }
83
83
  return state;
84
- };
85
- //# sourceMappingURL=useCarouselNavImageButtonStyles.styles.js.map
84
+ };
@@ -4,15 +4,14 @@ import { useCarouselSlider_unstable } from './useCarouselSlider';
4
4
  import { renderCarouselSlider_unstable } from './renderCarouselSlider';
5
5
  import { useCarouselSliderStyles_unstable } from './useCarouselSliderStyles.styles';
6
6
  import { useCarouselSliderContextValues_unstable } from './CarouselSliderContext';
7
+ import { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';
7
8
  /**
8
9
  * CarouselSlider component - The viewport window that CarouselCards are contained within.
9
10
  */ export const CarouselSlider = /*#__PURE__*/ React.forwardRef((props, ref)=>{
10
11
  const state = useCarouselSlider_unstable(props, ref);
11
12
  useCarouselSliderStyles_unstable(state);
13
+ useCustomStyleHook_unstable('useCarouselSliderStyles_unstable')(state);
12
14
  const context = useCarouselSliderContextValues_unstable(state);
13
- // TODO update types in packages/react-components/react-shared-contexts/src/CustomStyleHooksContext/CustomStyleHooksContext.ts
14
- // https://github.com/microsoft/fluentui/blob/master/rfcs/react-components/convergence/custom-styling.md
15
- // useCustomStyleHook_unstable('useCarouselSliderStyles_unstable')(state);
16
15
  return renderCarouselSlider_unstable(state, context);
17
16
  });
18
17
  CarouselSlider.displayName = 'CarouselSlider';
@@ -1 +1 @@
1
- {"version":3,"sources":["CarouselSlider.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\n// import { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\nimport { useCarouselSlider_unstable } from './useCarouselSlider';\nimport { renderCarouselSlider_unstable } from './renderCarouselSlider';\nimport { useCarouselSliderStyles_unstable } from './useCarouselSliderStyles.styles';\nimport type { CarouselSliderProps } from './CarouselSlider.types';\nimport { useCarouselSliderContextValues_unstable } from './CarouselSliderContext';\n\n/**\n * CarouselSlider component - The viewport window that CarouselCards are contained within.\n */\nexport const CarouselSlider: ForwardRefComponent<CarouselSliderProps> = React.forwardRef((props, ref) => {\n const state = useCarouselSlider_unstable(props, ref);\n\n useCarouselSliderStyles_unstable(state);\n\n const context = useCarouselSliderContextValues_unstable(state);\n // TODO update types in packages/react-components/react-shared-contexts/src/CustomStyleHooksContext/CustomStyleHooksContext.ts\n // https://github.com/microsoft/fluentui/blob/master/rfcs/react-components/convergence/custom-styling.md\n // useCustomStyleHook_unstable('useCarouselSliderStyles_unstable')(state);\n return renderCarouselSlider_unstable(state, context);\n});\n\nCarouselSlider.displayName = 'CarouselSlider';\n"],"names":["React","useCarouselSlider_unstable","renderCarouselSlider_unstable","useCarouselSliderStyles_unstable","useCarouselSliderContextValues_unstable","CarouselSlider","forwardRef","props","ref","state","context","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,iFAAiF;AACjF,SAASC,0BAA0B,QAAQ,sBAAsB;AACjE,SAASC,6BAA6B,QAAQ,yBAAyB;AACvE,SAASC,gCAAgC,QAAQ,mCAAmC;AAEpF,SAASC,uCAAuC,QAAQ,0BAA0B;AAElF;;CAEC,GACD,OAAO,MAAMC,+BAA2DL,MAAMM,UAAU,CAAC,CAACC,OAAOC;IAC/F,MAAMC,QAAQR,2BAA2BM,OAAOC;IAEhDL,iCAAiCM;IAEjC,MAAMC,UAAUN,wCAAwCK;IACxD,8HAA8H;IAC9H,wGAAwG;IACxG,0EAA0E;IAC1E,OAAOP,8BAA8BO,OAAOC;AAC9C,GAAG;AAEHL,eAAeM,WAAW,GAAG"}
1
+ {"version":3,"sources":["../src/components/CarouselSlider/CarouselSlider.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\n// import { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\nimport { useCarouselSlider_unstable } from './useCarouselSlider';\nimport { renderCarouselSlider_unstable } from './renderCarouselSlider';\nimport { useCarouselSliderStyles_unstable } from './useCarouselSliderStyles.styles';\nimport type { CarouselSliderProps } from './CarouselSlider.types';\nimport { useCarouselSliderContextValues_unstable } from './CarouselSliderContext';\nimport { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\n\n/**\n * CarouselSlider component - The viewport window that CarouselCards are contained within.\n */\nexport const CarouselSlider: ForwardRefComponent<CarouselSliderProps> = React.forwardRef((props, ref) => {\n const state = useCarouselSlider_unstable(props, ref);\n\n useCarouselSliderStyles_unstable(state);\n useCustomStyleHook_unstable('useCarouselSliderStyles_unstable')(state);\n\n const context = useCarouselSliderContextValues_unstable(state);\n return renderCarouselSlider_unstable(state, context);\n});\n\nCarouselSlider.displayName = 'CarouselSlider';\n"],"names":["React","useCarouselSlider_unstable","renderCarouselSlider_unstable","useCarouselSliderStyles_unstable","useCarouselSliderContextValues_unstable","useCustomStyleHook_unstable","CarouselSlider","forwardRef","props","ref","state","context","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,iFAAiF;AACjF,SAASC,0BAA0B,QAAQ,sBAAsB;AACjE,SAASC,6BAA6B,QAAQ,yBAAyB;AACvE,SAASC,gCAAgC,QAAQ,mCAAmC;AAEpF,SAASC,uCAAuC,QAAQ,0BAA0B;AAClF,SAASC,2BAA2B,QAAQ,kCAAkC;AAE9E;;CAEC,GACD,OAAO,MAAMC,+BAA2DN,MAAMO,UAAU,CAAC,CAACC,OAAOC;IAC/F,MAAMC,QAAQT,2BAA2BO,OAAOC;IAEhDN,iCAAiCO;IACjCL,4BAA4B,oCAAoCK;IAEhE,MAAMC,UAAUP,wCAAwCM;IACxD,OAAOR,8BAA8BQ,OAAOC;AAC9C,GAAG;AAEHL,eAAeM,WAAW,GAAG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["CarouselSlider.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\nexport type CarouselSliderSlots = {\n /**\n * The root viewport/window of the carousel\n */\n root: Slot<'div'>;\n};\n\n/**\n * CarouselSlider Props\n */\nexport type CarouselSliderProps = Partial<ComponentProps<CarouselSliderSlots>> & {\n /**\n * cardFocus sets the carousel slider as a focus group,\n * enabling left/right navigation of elements.\n *\n * This will also be passed into CarouselCards via context and set the appropriate focus attributes\n *\n * Defaults: false\n */\n cardFocus?: boolean;\n};\n\nexport type CarouselSliderContextValue = Pick<CarouselSliderProps, 'cardFocus'>;\n/**\n * State used in rendering CarouselSlider\n */\nexport type CarouselSliderState = ComponentState<CarouselSliderSlots> & CarouselSliderContextValue;\n"],"names":[],"rangeMappings":";;","mappings":"AAyBA;;CAEC,GACD,WAAmG"}
1
+ {"version":3,"sources":["../src/components/CarouselSlider/CarouselSlider.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\n\nexport type CarouselSliderSlots = {\n /**\n * The root viewport/window of the carousel\n */\n root: Slot<'div'>;\n};\n\n/**\n * CarouselSlider Props\n */\nexport type CarouselSliderProps = Partial<ComponentProps<CarouselSliderSlots>> & {\n /**\n * cardFocus sets the carousel slider as a focus group,\n * enabling left/right navigation of elements.\n *\n * This will also be passed into CarouselCards via context and set the appropriate focus attributes\n *\n * Defaults: false\n */\n cardFocus?: boolean;\n};\n\nexport type CarouselSliderContextValue = Pick<CarouselSliderProps, 'cardFocus'>;\n/**\n * State used in rendering CarouselSlider\n */\nexport type CarouselSliderState = ComponentState<CarouselSliderSlots> & CarouselSliderContextValue;\n"],"names":[],"rangeMappings":";;","mappings":"AAyBA;;CAEC,GACD,WAAmG"}
@@ -1 +1 @@
1
- {"version":3,"sources":["CarouselSliderContext.ts"],"sourcesContent":["import * as React from 'react';\nimport { CarouselSliderContextValue, CarouselSliderState } from './CarouselSlider.types';\n\nconst carouselSliderContext = React.createContext<CarouselSliderContextValue | undefined>(undefined);\n\nexport const carouselSliderContextDefaultValue: CarouselSliderContextValue = {\n cardFocus: false,\n};\n\nexport const useCarouselSliderContext = () =>\n React.useContext(carouselSliderContext) ?? carouselSliderContextDefaultValue;\n\nexport const CarouselSliderContextProvider = carouselSliderContext.Provider;\n\n/**\n * Context shared between CarouselSlider and its children components\n */\nexport type CarouselSliderContextValues = {\n carouselSlider: CarouselSliderContextValue;\n};\n\nexport function useCarouselSliderContextValues_unstable(state: CarouselSliderState): CarouselSliderContextValues {\n const { cardFocus } = state;\n const carouselSlider = React.useMemo(\n () => ({\n cardFocus,\n }),\n [cardFocus],\n );\n\n return { carouselSlider };\n}\n"],"names":["React","carouselSliderContext","createContext","undefined","carouselSliderContextDefaultValue","cardFocus","useCarouselSliderContext","useContext","CarouselSliderContextProvider","Provider","useCarouselSliderContextValues_unstable","state","carouselSlider","useMemo"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAG/B,MAAMC,wBAAwBD,MAAME,aAAa,CAAyCC;AAE1F,OAAO,MAAMC,oCAAgE;IAC3EC,WAAW;AACb,EAAE;AAEF,OAAO,MAAMC,2BAA2B;QACtCN;WAAAA,CAAAA,oBAAAA,MAAMO,UAAU,CAACN,oCAAjBD,+BAAAA,oBAA2CI;AAAgC,EAAE;AAE/E,OAAO,MAAMI,gCAAgCP,sBAAsBQ,QAAQ,CAAC;AAS5E,OAAO,SAASC,wCAAwCC,KAA0B;IAChF,MAAM,EAAEN,SAAS,EAAE,GAAGM;IACtB,MAAMC,iBAAiBZ,MAAMa,OAAO,CAClC,IAAO,CAAA;YACLR;QACF,CAAA,GACA;QAACA;KAAU;IAGb,OAAO;QAAEO;IAAe;AAC1B"}
1
+ {"version":3,"sources":["../src/components/CarouselSlider/CarouselSliderContext.ts"],"sourcesContent":["import * as React from 'react';\nimport { CarouselSliderContextValue, CarouselSliderState } from './CarouselSlider.types';\n\nconst carouselSliderContext = React.createContext<CarouselSliderContextValue | undefined>(undefined);\n\nexport const carouselSliderContextDefaultValue: CarouselSliderContextValue = {\n cardFocus: false,\n};\n\nexport const useCarouselSliderContext = () =>\n React.useContext(carouselSliderContext) ?? carouselSliderContextDefaultValue;\n\nexport const CarouselSliderContextProvider = carouselSliderContext.Provider;\n\n/**\n * Context shared between CarouselSlider and its children components\n */\nexport type CarouselSliderContextValues = {\n carouselSlider: CarouselSliderContextValue;\n};\n\nexport function useCarouselSliderContextValues_unstable(state: CarouselSliderState): CarouselSliderContextValues {\n const { cardFocus } = state;\n const carouselSlider = React.useMemo(\n () => ({\n cardFocus,\n }),\n [cardFocus],\n );\n\n return { carouselSlider };\n}\n"],"names":["React","carouselSliderContext","createContext","undefined","carouselSliderContextDefaultValue","cardFocus","useCarouselSliderContext","useContext","CarouselSliderContextProvider","Provider","useCarouselSliderContextValues_unstable","state","carouselSlider","useMemo"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAG/B,MAAMC,wBAAwBD,MAAME,aAAa,CAAyCC;AAE1F,OAAO,MAAMC,oCAAgE;IAC3EC,WAAW;AACb,EAAE;AAEF,OAAO,MAAMC,2BAA2B;QACtCN;WAAAA,CAAAA,oBAAAA,MAAMO,UAAU,CAACN,oCAAjBD,+BAAAA,oBAA2CI;AAAgC,EAAE;AAE/E,OAAO,MAAMI,gCAAgCP,sBAAsBQ,QAAQ,CAAC;AAS5E,OAAO,SAASC,wCAAwCC,KAA0B;IAChF,MAAM,EAAEN,SAAS,EAAE,GAAGM;IACtB,MAAMC,iBAAiBZ,MAAMa,OAAO,CAClC,IAAO,CAAA;YACLR;QACF,CAAA,GACA;QAACA;KAAU;IAGb,OAAO;QAAEO;IAAe;AAC1B"}
@@ -1 +1 @@
1
- {"version":3,"sources":["index.ts"],"sourcesContent":["export * from './CarouselSlider';\nexport * from './CarouselSlider.types';\nexport * from './renderCarouselSlider';\nexport * from './useCarouselSlider';\nexport * from './useCarouselSliderStyles.styles';\n"],"names":[],"rangeMappings":";;;;","mappings":"AAAA,cAAc,mBAAmB;AACjC,cAAc,yBAAyB;AACvC,cAAc,yBAAyB;AACvC,cAAc,sBAAsB;AACpC,cAAc,mCAAmC"}
1
+ {"version":3,"sources":["../src/components/CarouselSlider/index.ts"],"sourcesContent":["export * from './CarouselSlider';\nexport * from './CarouselSlider.types';\nexport * from './renderCarouselSlider';\nexport * from './useCarouselSlider';\nexport * from './useCarouselSliderStyles.styles';\n"],"names":[],"rangeMappings":";;;;","mappings":"AAAA,cAAc,mBAAmB;AACjC,cAAc,yBAAyB;AACvC,cAAc,yBAAyB;AACvC,cAAc,sBAAsB;AACpC,cAAc,mCAAmC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["renderCarouselSlider.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { CarouselSliderState, CarouselSliderSlots } from './CarouselSlider.types';\nimport { CarouselSliderContextProvider, CarouselSliderContextValues } from './CarouselSliderContext';\n\n/**\n * Render the final JSX of CarouselSlider\n */\nexport const renderCarouselSlider_unstable = (\n state: CarouselSliderState,\n contextValues: CarouselSliderContextValues,\n) => {\n assertSlots<CarouselSliderSlots>(state);\n\n return (\n <CarouselSliderContextProvider value={contextValues.carouselSlider}>\n <state.root />\n </CarouselSliderContextProvider>\n );\n};\n"],"names":["assertSlots","CarouselSliderContextProvider","renderCarouselSlider_unstable","state","contextValues","value","carouselSlider","root"],"rangeMappings":";;;;;;;;;;;","mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAExD,SAASC,6BAA6B,QAAqC,0BAA0B;AAErG;;CAEC,GACD,OAAO,MAAMC,gCAAgC,CAC3CC,OACAC;IAEAJ,YAAiCG;IAEjC,qBACE,KAACF;QAA8BI,OAAOD,cAAcE,cAAc;kBAChE,cAAA,KAACH,MAAMI,IAAI;;AAGjB,EAAE"}
1
+ {"version":3,"sources":["../src/components/CarouselSlider/renderCarouselSlider.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { CarouselSliderState, CarouselSliderSlots } from './CarouselSlider.types';\nimport { CarouselSliderContextProvider, CarouselSliderContextValues } from './CarouselSliderContext';\n\n/**\n * Render the final JSX of CarouselSlider\n */\nexport const renderCarouselSlider_unstable = (\n state: CarouselSliderState,\n contextValues: CarouselSliderContextValues,\n) => {\n assertSlots<CarouselSliderSlots>(state);\n\n return (\n <CarouselSliderContextProvider value={contextValues.carouselSlider}>\n <state.root />\n </CarouselSliderContextProvider>\n );\n};\n"],"names":["assertSlots","CarouselSliderContextProvider","renderCarouselSlider_unstable","state","contextValues","value","carouselSlider","root"],"rangeMappings":";;;;;;;;;;;","mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAExD,SAASC,6BAA6B,QAAqC,0BAA0B;AAErG;;CAEC,GACD,OAAO,MAAMC,gCAAgC,CAC3CC,OACAC;IAEAJ,YAAiCG;IAEjC,qBACE,KAACF;QAA8BI,OAAOD,cAAcE,cAAc;kBAChE,cAAA,KAACH,MAAMI,IAAI;;AAGjB,EAAE"}
@@ -1 +1 @@
1
- {"version":3,"sources":["useCarouselSlider.ts"],"sourcesContent":["import { getIntrinsicElementProps, slot } from '@fluentui/react-utilities';\nimport * as React from 'react';\n\nimport type { CarouselSliderProps, CarouselSliderState } from './CarouselSlider.types';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { useCarouselContext_unstable as useCarouselContext } from '../CarouselContext';\n\n/**\n * Create the state required to render CarouselSlider.\n *\n * The returned state can be modified with hooks such as useCarouselSliderStyles_unstable,\n * before being passed to renderCarouselSlider_unstable.\n *\n * @param props - props from this instance of CarouselSlider\n * @param ref - reference to root HTMLDivElement of CarouselSlider\n */\nexport const useCarouselSlider_unstable = (\n props: CarouselSliderProps,\n ref: React.Ref<HTMLDivElement>,\n): CarouselSliderState => {\n const { cardFocus = false } = props;\n const circular = useCarouselContext(ctx => ctx.circular);\n const focusableGroupAttr = useArrowNavigationGroup({\n circular,\n axis: 'horizontal',\n memorizeCurrent: false,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_hasDefault: true,\n });\n\n const focusProps = cardFocus ? focusableGroupAttr : {};\n\n return {\n cardFocus,\n components: {\n root: 'div',\n },\n root: slot.always(\n getIntrinsicElementProps('div', {\n ref,\n role: 'group',\n ...props,\n ...focusProps,\n }),\n { elementType: 'div' },\n ),\n };\n};\n"],"names":["getIntrinsicElementProps","slot","React","useArrowNavigationGroup","useCarouselContext_unstable","useCarouselContext","useCarouselSlider_unstable","props","ref","cardFocus","circular","ctx","focusableGroupAttr","axis","memorizeCurrent","unstable_hasDefault","focusProps","components","root","always","role","elementType"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,wBAAwB,EAAEC,IAAI,QAAQ,4BAA4B;AAC3E,YAAYC,WAAW,QAAQ;AAG/B,SAASC,uBAAuB,QAAQ,0BAA0B;AAClE,SAASC,+BAA+BC,kBAAkB,QAAQ,qBAAqB;AAEvF;;;;;;;;CAQC,GACD,OAAO,MAAMC,6BAA6B,CACxCC,OACAC;IAEA,MAAM,EAAEC,YAAY,KAAK,EAAE,GAAGF;IAC9B,MAAMG,WAAWL,mBAAmBM,CAAAA,MAAOA,IAAID,QAAQ;IACvD,MAAME,qBAAqBT,wBAAwB;QACjDO;QACAG,MAAM;QACNC,iBAAiB;QACjB,gEAAgE;QAChEC,qBAAqB;IACvB;IAEA,MAAMC,aAAaP,YAAYG,qBAAqB,CAAC;IAErD,OAAO;QACLH;QACAQ,YAAY;YACVC,MAAM;QACR;QACAA,MAAMjB,KAAKkB,MAAM,CACfnB,yBAAyB,OAAO;YAC9BQ;YACAY,MAAM;YACN,GAAGb,KAAK;YACR,GAAGS,UAAU;QACf,IACA;YAAEK,aAAa;QAAM;IAEzB;AACF,EAAE"}
1
+ {"version":3,"sources":["../src/components/CarouselSlider/useCarouselSlider.ts"],"sourcesContent":["import { getIntrinsicElementProps, slot } from '@fluentui/react-utilities';\nimport * as React from 'react';\n\nimport type { CarouselSliderProps, CarouselSliderState } from './CarouselSlider.types';\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { useCarouselContext_unstable as useCarouselContext } from '../CarouselContext';\n\n/**\n * Create the state required to render CarouselSlider.\n *\n * The returned state can be modified with hooks such as useCarouselSliderStyles_unstable,\n * before being passed to renderCarouselSlider_unstable.\n *\n * @param props - props from this instance of CarouselSlider\n * @param ref - reference to root HTMLDivElement of CarouselSlider\n */\nexport const useCarouselSlider_unstable = (\n props: CarouselSliderProps,\n ref: React.Ref<HTMLDivElement>,\n): CarouselSliderState => {\n const { cardFocus = false } = props;\n const circular = useCarouselContext(ctx => ctx.circular);\n const focusableGroupAttr = useArrowNavigationGroup({\n circular,\n axis: 'horizontal',\n memorizeCurrent: false,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_hasDefault: true,\n });\n\n const focusProps = cardFocus ? focusableGroupAttr : {};\n\n return {\n cardFocus,\n components: {\n root: 'div',\n },\n root: slot.always(\n getIntrinsicElementProps('div', {\n ref,\n role: 'group',\n ...props,\n ...focusProps,\n }),\n { elementType: 'div' },\n ),\n };\n};\n"],"names":["getIntrinsicElementProps","slot","React","useArrowNavigationGroup","useCarouselContext_unstable","useCarouselContext","useCarouselSlider_unstable","props","ref","cardFocus","circular","ctx","focusableGroupAttr","axis","memorizeCurrent","unstable_hasDefault","focusProps","components","root","always","role","elementType"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,SAASA,wBAAwB,EAAEC,IAAI,QAAQ,4BAA4B;AAC3E,YAAYC,WAAW,QAAQ;AAG/B,SAASC,uBAAuB,QAAQ,0BAA0B;AAClE,SAASC,+BAA+BC,kBAAkB,QAAQ,qBAAqB;AAEvF;;;;;;;;CAQC,GACD,OAAO,MAAMC,6BAA6B,CACxCC,OACAC;IAEA,MAAM,EAAEC,YAAY,KAAK,EAAE,GAAGF;IAC9B,MAAMG,WAAWL,mBAAmBM,CAAAA,MAAOA,IAAID,QAAQ;IACvD,MAAME,qBAAqBT,wBAAwB;QACjDO;QACAG,MAAM;QACNC,iBAAiB;QACjB,gEAAgE;QAChEC,qBAAqB;IACvB;IAEA,MAAMC,aAAaP,YAAYG,qBAAqB,CAAC;IAErD,OAAO;QACLH;QACAQ,YAAY;YACVC,MAAM;QACR;QACAA,MAAMjB,KAAKkB,MAAM,CACfnB,yBAAyB,OAAO;YAC9BQ;YACAY,MAAM;YACN,GAAGb,KAAK;YACR,GAAGS,UAAU;QACf,IACA;YAAEK,aAAa;QAAM;IAEzB;AACF,EAAE"}
@@ -22,5 +22,4 @@ export const useCarouselSliderStyles_unstable = state => {
22
22
  const styles = useStyles();
23
23
  state.root.className = mergeClasses(carouselSliderClassNames.root, styles.root, state.root.className);
24
24
  return state;
25
- };
26
- //# sourceMappingURL=useCarouselSliderStyles.styles.js.map
25
+ };
@@ -0,0 +1,16 @@
1
+ import * as React from 'react';
2
+ import { useCarouselViewport_unstable } from './useCarouselViewport';
3
+ import { renderCarouselViewport_unstable } from './renderCarouselViewport';
4
+ import { useCarouselViewportStyles_unstable } from './useCarouselViewportStyles.styles';
5
+ import { useCarouselSliderContextValues_unstable } from '../CarouselSlider/CarouselSliderContext';
6
+ import { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';
7
+ /**
8
+ * CarouselViewport component - TODO: add more docs
9
+ */ export const CarouselViewport = /*#__PURE__*/ React.forwardRef((props, ref)=>{
10
+ const state = useCarouselViewport_unstable(props, ref);
11
+ useCarouselViewportStyles_unstable(state);
12
+ useCustomStyleHook_unstable('useCarouselViewportStyles_unstable')(state);
13
+ const context = useCarouselSliderContextValues_unstable(state);
14
+ return renderCarouselViewport_unstable(state, context);
15
+ });
16
+ CarouselViewport.displayName = 'CarouselViewport';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/CarouselViewport/CarouselViewport.tsx"],"sourcesContent":["import * as React from 'react';\nimport type { ForwardRefComponent } from '@fluentui/react-utilities';\nimport { useCarouselViewport_unstable } from './useCarouselViewport';\nimport { renderCarouselViewport_unstable } from './renderCarouselViewport';\nimport { useCarouselViewportStyles_unstable } from './useCarouselViewportStyles.styles';\nimport type { CarouselViewportProps } from './CarouselViewport.types';\nimport { useCarouselSliderContextValues_unstable } from '../CarouselSlider/CarouselSliderContext';\nimport { useCustomStyleHook_unstable } from '@fluentui/react-shared-contexts';\n\n/**\n * CarouselViewport component - TODO: add more docs\n */\nexport const CarouselViewport: ForwardRefComponent<CarouselViewportProps> = React.forwardRef((props, ref) => {\n const state = useCarouselViewport_unstable(props, ref);\n\n useCarouselViewportStyles_unstable(state);\n useCustomStyleHook_unstable('useCarouselViewportStyles_unstable')(state);\n\n const context = useCarouselSliderContextValues_unstable(state);\n\n return renderCarouselViewport_unstable(state, context);\n});\n\nCarouselViewport.displayName = 'CarouselViewport';\n"],"names":["React","useCarouselViewport_unstable","renderCarouselViewport_unstable","useCarouselViewportStyles_unstable","useCarouselSliderContextValues_unstable","useCustomStyleHook_unstable","CarouselViewport","forwardRef","props","ref","state","context","displayName"],"rangeMappings":";;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAE/B,SAASC,4BAA4B,QAAQ,wBAAwB;AACrE,SAASC,+BAA+B,QAAQ,2BAA2B;AAC3E,SAASC,kCAAkC,QAAQ,qCAAqC;AAExF,SAASC,uCAAuC,QAAQ,0CAA0C;AAClG,SAASC,2BAA2B,QAAQ,kCAAkC;AAE9E;;CAEC,GACD,OAAO,MAAMC,iCAA+DN,MAAMO,UAAU,CAAC,CAACC,OAAOC;IACnG,MAAMC,QAAQT,6BAA6BO,OAAOC;IAElDN,mCAAmCO;IACnCL,4BAA4B,sCAAsCK;IAElE,MAAMC,UAAUP,wCAAwCM;IAExD,OAAOR,gCAAgCQ,OAAOC;AAChD,GAAG;AAEHL,iBAAiBM,WAAW,GAAG"}
@@ -0,0 +1,3 @@
1
+ /**
2
+ * State used in rendering CarouselViewport
3
+ */ export { };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/CarouselViewport/CarouselViewport.types.ts"],"sourcesContent":["import type { ComponentProps, ComponentState, Slot } from '@fluentui/react-utilities';\nimport { CarouselSliderContextValue } from '../CarouselSlider/CarouselSlider.types';\n\nexport type CarouselViewportSlots = {\n /**\n * The viewport outer container, defining the size of the carousels visible and interactable area\n */\n root: Slot<'div'>;\n};\n\n/**\n * CarouselViewport Props\n */\nexport type CarouselViewportProps = ComponentProps<CarouselViewportSlots>;\n\n/**\n * State used in rendering CarouselViewport\n */\nexport type CarouselViewportState = ComponentState<Required<CarouselViewportSlots>> & CarouselSliderContextValue;\n"],"names":[],"rangeMappings":";;","mappings":"AAeA;;CAEC,GACD,WAAiH"}
@@ -0,0 +1,5 @@
1
+ export * from './CarouselViewport';
2
+ export * from './CarouselViewport.types';
3
+ export * from './renderCarouselViewport';
4
+ export * from './useCarouselViewport';
5
+ export * from './useCarouselViewportStyles.styles';
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/CarouselViewport/index.ts"],"sourcesContent":["export * from './CarouselViewport';\nexport * from './CarouselViewport.types';\nexport * from './renderCarouselViewport';\nexport * from './useCarouselViewport';\nexport * from './useCarouselViewportStyles.styles';\n"],"names":[],"rangeMappings":";;;;","mappings":"AAAA,cAAc,qBAAqB;AACnC,cAAc,2BAA2B;AACzC,cAAc,2BAA2B;AACzC,cAAc,wBAAwB;AACtC,cAAc,qCAAqC"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx } from "@fluentui/react-jsx-runtime/jsx-runtime";
2
+ import { assertSlots } from '@fluentui/react-utilities';
3
+ import { CarouselSliderContextProvider } from '../CarouselSlider/CarouselSliderContext';
4
+ /**
5
+ * Render the final JSX of CarouselViewport
6
+ */ export const renderCarouselViewport_unstable = (state, contextValues)=>{
7
+ assertSlots(state);
8
+ return /*#__PURE__*/ _jsx(CarouselSliderContextProvider, {
9
+ value: contextValues.carouselSlider,
10
+ children: /*#__PURE__*/ _jsx(state.root, {})
11
+ });
12
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/CarouselViewport/renderCarouselViewport.tsx"],"sourcesContent":["/** @jsxRuntime automatic */\n/** @jsxImportSource @fluentui/react-jsx-runtime */\n\nimport { assertSlots } from '@fluentui/react-utilities';\nimport type { CarouselViewportState, CarouselViewportSlots } from './CarouselViewport.types';\nimport { CarouselSliderContextValues, CarouselSliderContextProvider } from '../CarouselSlider/CarouselSliderContext';\n\n/**\n * Render the final JSX of CarouselViewport\n */\nexport const renderCarouselViewport_unstable = (\n state: CarouselViewportState,\n contextValues: CarouselSliderContextValues,\n) => {\n assertSlots<CarouselViewportSlots>(state);\n\n return (\n <CarouselSliderContextProvider value={contextValues.carouselSlider}>\n <state.root />\n </CarouselSliderContextProvider>\n );\n};\n"],"names":["assertSlots","CarouselSliderContextProvider","renderCarouselViewport_unstable","state","contextValues","value","carouselSlider","root"],"rangeMappings":";;;;;;;;;;;","mappings":"AAAA,0BAA0B,GAC1B,iDAAiD;AAEjD,SAASA,WAAW,QAAQ,4BAA4B;AAExD,SAAsCC,6BAA6B,QAAQ,0CAA0C;AAErH;;CAEC,GACD,OAAO,MAAMC,kCAAkC,CAC7CC,OACAC;IAEAJ,YAAmCG;IAEnC,qBACE,KAACF;QAA8BI,OAAOD,cAAcE,cAAc;kBAChE,cAAA,KAACH,MAAMI,IAAI;;AAGjB,EAAE"}
@@ -0,0 +1,28 @@
1
+ import * as React from 'react';
2
+ import { getIntrinsicElementProps, slot, useMergedRefs } from '@fluentui/react-utilities';
3
+ import { useCarouselContext_unstable as useCarouselContext } from '../CarouselContext';
4
+ /**
5
+ * Create the state required to render CarouselViewport.
6
+ *
7
+ * The returned state can be modified with hooks such as useCarouselViewportStyles_unstable,
8
+ * before being passed to renderCarouselViewport_unstable.
9
+ *
10
+ * @param props - props from this instance of CarouselViewport
11
+ * @param ref - reference to root HTMLDivElement of CarouselViewport
12
+ */ export const useCarouselViewport_unstable = (props, ref)=>{
13
+ const viewportRef = useCarouselContext((ctx)=>ctx.viewportRef);
14
+ return {
15
+ components: {
16
+ root: 'div'
17
+ },
18
+ root: slot.always(getIntrinsicElementProps('div', {
19
+ ref: useMergedRefs(ref, viewportRef),
20
+ role: 'presentation',
21
+ // Draggable ensures dragging is supported (even if not enabled)
22
+ draggable: true,
23
+ ...props
24
+ }), {
25
+ elementType: 'div'
26
+ })
27
+ };
28
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/CarouselViewport/useCarouselViewport.ts"],"sourcesContent":["import * as React from 'react';\nimport { getIntrinsicElementProps, slot, useMergedRefs } from '@fluentui/react-utilities';\nimport type { CarouselViewportProps, CarouselViewportState } from './CarouselViewport.types';\nimport { useCarouselContext_unstable as useCarouselContext } from '../CarouselContext';\n\n/**\n * Create the state required to render CarouselViewport.\n *\n * The returned state can be modified with hooks such as useCarouselViewportStyles_unstable,\n * before being passed to renderCarouselViewport_unstable.\n *\n * @param props - props from this instance of CarouselViewport\n * @param ref - reference to root HTMLDivElement of CarouselViewport\n */\nexport const useCarouselViewport_unstable = (\n props: CarouselViewportProps,\n ref: React.Ref<HTMLDivElement>,\n): CarouselViewportState => {\n const viewportRef = useCarouselContext(ctx => ctx.viewportRef);\n\n return {\n components: {\n root: 'div',\n },\n root: slot.always(\n getIntrinsicElementProps('div', {\n ref: useMergedRefs(ref, viewportRef),\n role: 'presentation',\n // Draggable ensures dragging is supported (even if not enabled)\n draggable: true,\n ...props,\n }),\n { elementType: 'div' },\n ),\n };\n};\n"],"names":["React","getIntrinsicElementProps","slot","useMergedRefs","useCarouselContext_unstable","useCarouselContext","useCarouselViewport_unstable","props","ref","viewportRef","ctx","components","root","always","role","draggable","elementType"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AAAA,YAAYA,WAAW,QAAQ;AAC/B,SAASC,wBAAwB,EAAEC,IAAI,EAAEC,aAAa,QAAQ,4BAA4B;AAE1F,SAASC,+BAA+BC,kBAAkB,QAAQ,qBAAqB;AAEvF;;;;;;;;CAQC,GACD,OAAO,MAAMC,+BAA+B,CAC1CC,OACAC;IAEA,MAAMC,cAAcJ,mBAAmBK,CAAAA,MAAOA,IAAID,WAAW;IAE7D,OAAO;QACLE,YAAY;YACVC,MAAM;QACR;QACAA,MAAMV,KAAKW,MAAM,CACfZ,yBAAyB,OAAO;YAC9BO,KAAKL,cAAcK,KAAKC;YACxBK,MAAM;YACN,gEAAgE;YAChEC,WAAW;YACX,GAAGR,KAAK;QACV,IACA;YAAES,aAAa;QAAM;IAEzB;AACF,EAAE"}
@@ -0,0 +1,25 @@
1
+ import { __styles, mergeClasses } from '@griffel/react';
2
+ export const carouselViewportClassNames = {
3
+ root: 'fui-CarouselViewport'
4
+ };
5
+ /**
6
+ * Styles for the root slot
7
+ */
8
+ const useStyles = /*#__PURE__*/__styles({
9
+ root: {
10
+ B2u0y6b: "f6dzj5z",
11
+ a9b677: "f14z66ap"
12
+ }
13
+ }, {
14
+ d: [".f6dzj5z{max-width:100%;}", ".f14z66ap{width:auto;}"]
15
+ });
16
+ /**
17
+ * Apply styling to the CarouselViewport slots based on the state
18
+ */
19
+ export const useCarouselViewportStyles_unstable = state => {
20
+ 'use no memo';
21
+
22
+ const styles = useStyles();
23
+ state.root.className = mergeClasses(carouselViewportClassNames.root, styles.root, state.root.className);
24
+ return state;
25
+ };
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__styles","mergeClasses","carouselViewportClassNames","root","useStyles","B2u0y6b","a9b677","d","useCarouselViewportStyles_unstable","state","styles","className"],"sources":["useCarouselViewportStyles.styles.js"],"sourcesContent":["import { makeStyles, mergeClasses } from '@griffel/react';\nexport const carouselViewportClassNames = {\n root: 'fui-CarouselViewport'\n};\n/**\n * Styles for the root slot\n */ const useStyles = makeStyles({\n root: {\n maxWidth: '100%',\n width: 'auto'\n }\n});\n/**\n * Apply styling to the CarouselViewport slots based on the state\n */ export const useCarouselViewportStyles_unstable = (state)=>{\n 'use no memo';\n const styles = useStyles();\n state.root.className = mergeClasses(carouselViewportClassNames.root, styles.root, state.root.className);\n return state;\n};\n"],"mappings":"AAAA,SAAAA,QAAA,EAAqBC,YAAY,QAAQ,gBAAgB;AACzD,OAAO,MAAMC,0BAA0B,GAAG;EACtCC,IAAI,EAAE;AACV,CAAC;AACD;AACA;AACA;AAAI,MAAMC,SAAS,gBAAGJ,QAAA;EAAAG,IAAA;IAAAE,OAAA;IAAAC,MAAA;EAAA;AAAA;EAAAC,CAAA;AAAA,CAKrB,CAAC;AACF;AACA;AACA;AAAI,OAAO,MAAMC,kCAAkC,GAAIC,KAAK,IAAG;EAC3D,aAAa;;EACb,MAAMC,MAAM,GAAGN,SAAS,CAAC,CAAC;EAC1BK,KAAK,CAACN,IAAI,CAACQ,SAAS,GAAGV,YAAY,CAACC,0BAA0B,CAACC,IAAI,EAAEO,MAAM,CAACP,IAAI,EAAEM,KAAK,CAACN,IAAI,CAACQ,SAAS,CAAC;EACvG,OAAOF,KAAK;AAChB,CAAC","ignoreList":[]}
@@ -0,0 +1,58 @@
1
+ import { carouselClassNames } from '../Carousel';
2
+ export function pointerEventPlugin(options) {
3
+ let emblaApi;
4
+ let pointerEvent;
5
+ function documentDownListener(event) {
6
+ const targetDocument = emblaApi.containerNode().ownerDocument;
7
+ if (event.target) {
8
+ const targetNode = event.target;
9
+ if (targetNode.classList.contains(carouselClassNames.root) || emblaApi.containerNode().contains(targetNode)) {
10
+ pointerEvent = event;
11
+ }
12
+ }
13
+ targetDocument.removeEventListener('mousedown', documentDownListener);
14
+ targetDocument.removeEventListener('pointerdown', documentDownListener);
15
+ }
16
+ function pointerUpListener() {
17
+ const targetDocument = emblaApi.containerNode().ownerDocument;
18
+ targetDocument.addEventListener('mousedown', documentDownListener);
19
+ targetDocument.addEventListener('pointerdown', documentDownListener);
20
+ }
21
+ function clearPointerEvent() {
22
+ pointerEvent = undefined;
23
+ pointerUpListener();
24
+ }
25
+ function selectListener() {
26
+ if (pointerEvent) {
27
+ var _emblaApi_selectedScrollSnap;
28
+ const newIndex = (_emblaApi_selectedScrollSnap = emblaApi.selectedScrollSnap()) !== null && _emblaApi_selectedScrollSnap !== void 0 ? _emblaApi_selectedScrollSnap : 0;
29
+ options.onSelectViaDrag(pointerEvent, newIndex);
30
+ }
31
+ clearPointerEvent();
32
+ }
33
+ function init(emblaApiInstance, optionsHandler) {
34
+ emblaApi = emblaApiInstance;
35
+ // Initialize the listener for first mouse/pointerDown event
36
+ const targetDocument = emblaApi.containerNode().ownerDocument;
37
+ targetDocument.addEventListener('mousedown', documentDownListener);
38
+ targetDocument.addEventListener('pointerdown', documentDownListener);
39
+ emblaApi.on('pointerUp', pointerUpListener);
40
+ emblaApi.on('select', selectListener);
41
+ // Settle is used to clear pointer in cases where active index does not change
42
+ emblaApi.on('settle', clearPointerEvent);
43
+ }
44
+ function destroy() {
45
+ const targetDocument = emblaApi.containerNode().ownerDocument;
46
+ targetDocument.removeEventListener('mousedown', documentDownListener);
47
+ targetDocument.removeEventListener('pointerdown', documentDownListener);
48
+ emblaApi.off('pointerUp', pointerUpListener);
49
+ emblaApi.off('select', selectListener);
50
+ emblaApi.off('settle', clearPointerEvent);
51
+ }
52
+ return {
53
+ name: 'pointerEvent',
54
+ options,
55
+ init,
56
+ destroy
57
+ };
58
+ }
@@ -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":["carouselClassNames","pointerEventPlugin","options","emblaApi","pointerEvent","documentDownListener","event","targetDocument","containerNode","ownerDocument","target","targetNode","classList","contains","root","removeEventListener","pointerUpListener","addEventListener","clearPointerEvent","undefined","selectListener","newIndex","selectedScrollSnap","onSelectViaDrag","init","emblaApiInstance","optionsHandler","on","destroy","off","name"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"AACA,SAASA,kBAAkB,QAAQ,cAAc;AAQjD,OAAO,SAASC,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,CAACb,mBAAmBc,IAAI,KAAKX,SAASK,aAAa,GAAGK,QAAQ,CAACF,aAAa;gBAC3GP,eAAeE;YACjB;QACF;QAEAC,eAAeQ,mBAAmB,CAAC,aAAaV;QAChDE,eAAeQ,mBAAmB,CAAC,eAAeV;IACpD;IAEA,SAASW;QACP,MAAMT,iBAAiBJ,SAASK,aAAa,GAAGC,aAAa;QAE7DF,eAAeU,gBAAgB,CAAC,aAAaZ;QAC7CE,eAAeU,gBAAgB,CAAC,eAAeZ;IACjD;IAEA,SAASa;QACPd,eAAee;QACfH;IACF;IAEA,SAASI;QACP,IAAIhB,cAAc;gBACCD;YAAjB,MAAMkB,WAAWlB,CAAAA,+BAAAA,SAASmB,kBAAkB,gBAA3BnB,0CAAAA,+BAAiC;YAElDD,QAAQqB,eAAe,CAACnB,cAAciB;QACxC;QACAH;IACF;IAEA,SAASM,KAAKC,gBAAmC,EAAEC,cAAkC;QACnFvB,WAAWsB;QAEX,4DAA4D;QAC5D,MAAMlB,iBAAiBJ,SAASK,aAAa,GAAGC,aAAa;QAC7DF,eAAeU,gBAAgB,CAAC,aAAaZ;QAC7CE,eAAeU,gBAAgB,CAAC,eAAeZ;QAE/CF,SAASwB,EAAE,CAAC,aAAaX;QACzBb,SAASwB,EAAE,CAAC,UAAUP;QACtB,8EAA8E;QAC9EjB,SAASwB,EAAE,CAAC,UAAUT;IACxB;IAEA,SAASU;QACP,MAAMrB,iBAAiBJ,SAASK,aAAa,GAAGC,aAAa;QAC7DF,eAAeQ,mBAAmB,CAAC,aAAaV;QAChDE,eAAeQ,mBAAmB,CAAC,eAAeV;QAClDF,SAAS0B,GAAG,CAAC,aAAab;QAC1Bb,SAAS0B,GAAG,CAAC,UAAUT;QACvBjB,SAAS0B,GAAG,CAAC,UAAUX;IACzB;IAEA,OAAO;QACLY,MAAM;QACN5B;QACAsB;QACAI;IACF;AACF"}
@@ -1,10 +1,11 @@
1
- import { useControllableState } from '@fluentui/react-utilities';
1
+ import { useControllableState, useEventCallback } from '@fluentui/react-utilities';
2
2
  import EmblaCarousel from 'embla-carousel';
3
3
  import * as React from 'react';
4
4
  import { carouselCardClassNames } from './CarouselCard/useCarouselCardStyles.styles';
5
5
  import { carouselSliderClassNames } from './CarouselSlider/useCarouselSliderStyles.styles';
6
6
  import Autoplay from 'embla-carousel-autoplay';
7
7
  import Fade from 'embla-carousel-fade';
8
+ import { pointerEventPlugin } from './pointerEvents';
8
9
  const sliderClassname = `.${carouselSliderClassNames.root}`;
9
10
  const DEFAULT_EMBLA_OPTIONS = {
10
11
  containScroll: 'trimSnaps',
@@ -27,12 +28,19 @@ export function setTabsterDefault(element, isDefault) {
27
28
  }
28
29
  }
29
30
  export function useEmblaCarousel(options) {
30
- const { align, direction, loop, slidesToScroll, watchDrag, containScroll, motion } = options;
31
+ const { align, direction, loop, slidesToScroll, watchDrag, containScroll, motion, onDragIndexChange } = options;
31
32
  const [activeIndex, setActiveIndex] = useControllableState({
32
33
  defaultState: options.defaultActiveIndex,
33
34
  state: options.activeIndex,
34
35
  initialState: 0
35
36
  });
37
+ const onDragEvent = useEventCallback((event, index)=>{
38
+ onDragIndexChange === null || onDragIndexChange === void 0 ? void 0 : onDragIndexChange(event, {
39
+ event,
40
+ type: 'drag',
41
+ index
42
+ });
43
+ });
36
44
  const emblaOptions = React.useRef({
37
45
  align,
38
46
  direction,
@@ -68,20 +76,23 @@ export function useEmblaCarousel(options) {
68
76
  playOnInit: autoplayRef.current,
69
77
  stopOnInteraction: !autoplayRef.current,
70
78
  stopOnMouseEnter: true,
71
- stopOnFocusIn: true,
72
- rootNode: (emblaRoot)=>{
73
- var _emblaRoot_querySelector;
74
- return (_emblaRoot_querySelector = emblaRoot.querySelector(sliderClassname)) !== null && _emblaRoot_querySelector !== void 0 ? _emblaRoot_querySelector : emblaRoot;
75
- }
79
+ stopOnFocusIn: true
76
80
  })
77
81
  ];
78
82
  // Optionally add Fade plugin
79
83
  if (motion === 'fade') {
80
84
  plugins.push(Fade());
81
85
  }
86
+ if (watchDrag) {
87
+ plugins.push(pointerEventPlugin({
88
+ onSelectViaDrag: onDragEvent
89
+ }));
90
+ }
82
91
  return plugins;
83
92
  }, [
84
- motion
93
+ motion,
94
+ onDragEvent,
95
+ watchDrag
85
96
  ]);
86
97
  // Listeners contains callbacks for UI elements that may require state update based on embla changes
87
98
  const listeners = React.useRef(new Set());
@@ -91,6 +102,26 @@ export function useEmblaCarousel(options) {
91
102
  listeners.current.delete(listener);
92
103
  };
93
104
  }, []);
105
+ const handleReinit = useEventCallback(()=>{
106
+ var _emblaApi_current, _emblaApi_current1, _emblaApi_current2, _emblaApi_current3;
107
+ var _emblaApi_current_slideNodes;
108
+ const nodes = (_emblaApi_current_slideNodes = (_emblaApi_current = emblaApi.current) === null || _emblaApi_current === void 0 ? void 0 : _emblaApi_current.slideNodes()) !== null && _emblaApi_current_slideNodes !== void 0 ? _emblaApi_current_slideNodes : [];
109
+ var _emblaApi_current_internalEngine_slideRegistry;
110
+ const groupIndexList = (_emblaApi_current_internalEngine_slideRegistry = (_emblaApi_current1 = emblaApi.current) === null || _emblaApi_current1 === void 0 ? void 0 : _emblaApi_current1.internalEngine().slideRegistry) !== null && _emblaApi_current_internalEngine_slideRegistry !== void 0 ? _emblaApi_current_internalEngine_slideRegistry : [];
111
+ const navItemsCount = groupIndexList.length > 0 ? groupIndexList.length : nodes.length;
112
+ var _emblaApi_current_selectedScrollSnap;
113
+ const data = {
114
+ navItemsCount,
115
+ activeIndex: (_emblaApi_current_selectedScrollSnap = (_emblaApi_current2 = emblaApi.current) === null || _emblaApi_current2 === void 0 ? void 0 : _emblaApi_current2.selectedScrollSnap()) !== null && _emblaApi_current_selectedScrollSnap !== void 0 ? _emblaApi_current_selectedScrollSnap : 0,
116
+ groupIndexList,
117
+ slideNodes: nodes
118
+ };
119
+ (_emblaApi_current3 = emblaApi.current) === null || _emblaApi_current3 === void 0 ? void 0 : _emblaApi_current3.scrollTo(activeIndex, false);
120
+ for (const listener of listeners.current){
121
+ listener(data);
122
+ }
123
+ });
124
+ const viewportRef = React.useRef(null);
94
125
  const containerRef = React.useMemo(()=>{
95
126
  let currentElement = null;
96
127
  const handleIndexChange = ()=>{
@@ -106,24 +137,6 @@ export function useEmblaCarousel(options) {
106
137
  });
107
138
  setActiveIndex(newIndex);
108
139
  };
109
- const handleReinit = ()=>{
110
- var _emblaApi_current, _emblaApi_current1, _emblaApi_current2;
111
- var _emblaApi_current_slideNodes;
112
- const nodes = (_emblaApi_current_slideNodes = (_emblaApi_current = emblaApi.current) === null || _emblaApi_current === void 0 ? void 0 : _emblaApi_current.slideNodes()) !== null && _emblaApi_current_slideNodes !== void 0 ? _emblaApi_current_slideNodes : [];
113
- var _emblaApi_current_internalEngine_slideRegistry;
114
- const groupIndexList = (_emblaApi_current_internalEngine_slideRegistry = (_emblaApi_current1 = emblaApi.current) === null || _emblaApi_current1 === void 0 ? void 0 : _emblaApi_current1.internalEngine().slideRegistry) !== null && _emblaApi_current_internalEngine_slideRegistry !== void 0 ? _emblaApi_current_internalEngine_slideRegistry : [];
115
- const navItemsCount = groupIndexList.length > 0 ? groupIndexList.length : nodes.length;
116
- var _emblaApi_current_selectedScrollSnap;
117
- const data = {
118
- navItemsCount,
119
- activeIndex: (_emblaApi_current_selectedScrollSnap = (_emblaApi_current2 = emblaApi.current) === null || _emblaApi_current2 === void 0 ? void 0 : _emblaApi_current2.selectedScrollSnap()) !== null && _emblaApi_current_selectedScrollSnap !== void 0 ? _emblaApi_current_selectedScrollSnap : 0,
120
- groupIndexList,
121
- slideNodes: nodes
122
- };
123
- for (const listener of listeners.current){
124
- listener(data);
125
- }
126
- };
127
140
  const handleVisibilityChange = ()=>{
128
141
  var _emblaApi_current, _emblaApi_current1;
129
142
  const cardElements = (_emblaApi_current = emblaApi.current) === null || _emblaApi_current === void 0 ? void 0 : _emblaApi_current.slideNodes();
@@ -148,10 +161,13 @@ export function useEmblaCarousel(options) {
148
161
  (_emblaApi_current2 = emblaApi.current) === null || _emblaApi_current2 === void 0 ? void 0 : _emblaApi_current2.off('reInit', handleReinit);
149
162
  (_emblaApi_current3 = emblaApi.current) === null || _emblaApi_current3 === void 0 ? void 0 : _emblaApi_current3.destroy();
150
163
  }
151
- if (newElement) {
164
+ var _viewportRef_current;
165
+ // Use direct viewport if available, else fallback to container (includes Carousel controls).
166
+ const wrapperElement = (_viewportRef_current = viewportRef.current) !== null && _viewportRef_current !== void 0 ? _viewportRef_current : newElement;
167
+ if (wrapperElement) {
152
168
  var _emblaApi_current4, _emblaApi_current5, _emblaApi_current6;
153
- currentElement = newElement;
154
- emblaApi.current = EmblaCarousel(newElement, {
169
+ currentElement = wrapperElement;
170
+ emblaApi.current = EmblaCarousel(wrapperElement, {
155
171
  ...DEFAULT_EMBLA_OPTIONS,
156
172
  ...emblaOptions.current
157
173
  }, plugins);
@@ -163,7 +179,8 @@ export function useEmblaCarousel(options) {
163
179
  };
164
180
  }, [
165
181
  getPlugins,
166
- setActiveIndex
182
+ setActiveIndex,
183
+ handleReinit
167
184
  ]);
168
185
  const carouselApi = React.useMemo(()=>({
169
186
  scrollToElement: (element, jump)=>{
@@ -198,12 +215,17 @@ export function useEmblaCarousel(options) {
198
215
  }
199
216
  }), []);
200
217
  React.useEffect(()=>{
201
- var _emblaApi_current;
218
+ var _emblaApi_current, _emblaApi_current_slideNodes, _emblaApi_current1;
202
219
  var _emblaApi_current_selectedScrollSnap;
220
+ // Scroll to controlled values on update
221
+ // If active index is out of bounds, re-init will handle instead
203
222
  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;
204
- if (activeIndex !== currentActiveIndex) {
205
- var _emblaApi_current1;
206
- (_emblaApi_current1 = emblaApi.current) === null || _emblaApi_current1 === void 0 ? void 0 : _emblaApi_current1.scrollTo(activeIndex);
223
+ var _emblaApi_current_slideNodes_length;
224
+ const slideLength = (_emblaApi_current_slideNodes_length = (_emblaApi_current1 = emblaApi.current) === null || _emblaApi_current1 === void 0 ? void 0 : (_emblaApi_current_slideNodes = _emblaApi_current1.slideNodes()) === null || _emblaApi_current_slideNodes === void 0 ? void 0 : _emblaApi_current_slideNodes.length) !== null && _emblaApi_current_slideNodes_length !== void 0 ? _emblaApi_current_slideNodes_length : 0;
225
+ emblaOptions.current.startIndex = activeIndex;
226
+ if (activeIndex < slideLength && activeIndex !== currentActiveIndex) {
227
+ var _emblaApi_current2;
228
+ (_emblaApi_current2 = emblaApi.current) === null || _emblaApi_current2 === void 0 ? void 0 : _emblaApi_current2.scrollTo(activeIndex);
207
229
  }
208
230
  }, [
209
231
  activeIndex
@@ -212,6 +234,7 @@ export function useEmblaCarousel(options) {
212
234
  var _emblaApi_current;
213
235
  const plugins = getPlugins();
214
236
  emblaOptions.current = {
237
+ startIndex: emblaOptions.current.startIndex,
215
238
  align,
216
239
  direction,
217
240
  loop,
@@ -235,6 +258,7 @@ export function useEmblaCarousel(options) {
235
258
  return {
236
259
  activeIndex,
237
260
  carouselApi,
261
+ viewportRef,
238
262
  containerRef,
239
263
  subscribeForValues,
240
264
  enableAutoplay,