react-native-reanimated-carousel 5.0.0-beta.8 → 5.1.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 (402) hide show
  1. package/README.md +31 -29
  2. package/lib/commonjs/components/Carousel.js +1 -1
  3. package/lib/commonjs/components/Carousel.js.map +1 -1
  4. package/lib/commonjs/components/CarouselLayout.js +1 -1
  5. package/lib/commonjs/components/CarouselLayout.js.map +1 -1
  6. package/lib/commonjs/components/ItemLayout.js +1 -1
  7. package/lib/commonjs/components/ItemLayout.js.map +1 -1
  8. package/lib/commonjs/components/ItemRenderer.js +1 -1
  9. package/lib/commonjs/components/ItemRenderer.js.map +1 -1
  10. package/lib/commonjs/components/Pagination/PaginationItem.js +2 -0
  11. package/lib/commonjs/components/Pagination/PaginationItem.js.map +1 -0
  12. package/lib/commonjs/components/Pagination/index.js +1 -1
  13. package/lib/commonjs/components/Pagination/index.js.map +1 -1
  14. package/lib/commonjs/components/ScrollViewGesture.js +1 -1
  15. package/lib/commonjs/components/ScrollViewGesture.js.map +1 -1
  16. package/lib/commonjs/hooks/useAutoPlay.js +1 -1
  17. package/lib/commonjs/hooks/useAutoPlay.js.map +1 -1
  18. package/lib/commonjs/hooks/useCarouselController.js +1 -1
  19. package/lib/commonjs/hooks/useCarouselController.js.map +1 -1
  20. package/lib/commonjs/hooks/useCommonVariables.js +1 -1
  21. package/lib/commonjs/hooks/useCommonVariables.js.map +1 -1
  22. package/lib/commonjs/hooks/useInitProps.js +1 -1
  23. package/lib/commonjs/hooks/useInitProps.js.map +1 -1
  24. package/lib/commonjs/hooks/useLayoutConfig.js +1 -1
  25. package/lib/commonjs/hooks/useLayoutConfig.js.map +1 -1
  26. package/lib/commonjs/hooks/useOffsetX.js.map +1 -1
  27. package/lib/commonjs/hooks/useOnProgressChange.js +1 -1
  28. package/lib/commonjs/hooks/useOnProgressChange.js.map +1 -1
  29. package/lib/commonjs/hooks/usePanGestureProxy.js.map +1 -1
  30. package/lib/commonjs/hooks/usePropsErrorBoundary.js +1 -1
  31. package/lib/commonjs/hooks/usePropsErrorBoundary.js.map +1 -1
  32. package/lib/commonjs/hooks/useUpdateGestureConfig.js.map +1 -1
  33. package/lib/commonjs/hooks/useVisibleRanges.js.map +1 -1
  34. package/lib/commonjs/index.js +1 -1
  35. package/lib/commonjs/index.js.map +1 -1
  36. package/lib/commonjs/layouts/index.js.map +1 -1
  37. package/lib/commonjs/layouts/normal.js +1 -1
  38. package/lib/commonjs/layouts/normal.js.map +1 -1
  39. package/lib/commonjs/layouts/parallax.js +1 -1
  40. package/lib/commonjs/layouts/parallax.js.map +1 -1
  41. package/lib/commonjs/layouts/stack.js +1 -1
  42. package/lib/commonjs/layouts/stack.js.map +1 -1
  43. package/lib/commonjs/public-types.js +2 -0
  44. package/lib/commonjs/public-types.js.map +1 -0
  45. package/lib/commonjs/store/index.js.map +1 -1
  46. package/lib/commonjs/utils/carousel-direction.js +2 -0
  47. package/lib/commonjs/utils/carousel-direction.js.map +1 -0
  48. package/lib/commonjs/utils/carousel-math.js +2 -0
  49. package/lib/commonjs/utils/carousel-math.js.map +1 -0
  50. package/lib/commonjs/utils/computed-with-auto-fill-data.js.map +1 -1
  51. package/lib/commonjs/utils/deal-with-animation.js +1 -1
  52. package/lib/commonjs/utils/deal-with-animation.js.map +1 -1
  53. package/lib/module/components/Carousel.js +1 -1
  54. package/lib/module/components/Carousel.js.map +1 -1
  55. package/lib/module/components/CarouselLayout.js +1 -1
  56. package/lib/module/components/CarouselLayout.js.map +1 -1
  57. package/lib/module/components/ItemLayout.js +1 -1
  58. package/lib/module/components/ItemLayout.js.map +1 -1
  59. package/lib/module/components/ItemRenderer.js +1 -1
  60. package/lib/module/components/ItemRenderer.js.map +1 -1
  61. package/lib/module/components/LazyView.js +1 -1
  62. package/lib/module/components/LazyView.js.map +1 -1
  63. package/lib/module/components/Pagination/PaginationItem.js +2 -0
  64. package/lib/module/components/Pagination/PaginationItem.js.map +1 -0
  65. package/lib/module/components/Pagination/index.js +1 -1
  66. package/lib/module/components/Pagination/index.js.map +1 -1
  67. package/lib/module/components/ScrollViewGesture.js +1 -1
  68. package/lib/module/components/ScrollViewGesture.js.map +1 -1
  69. package/lib/module/constants/index.js +1 -1
  70. package/lib/module/constants/index.js.map +1 -1
  71. package/lib/module/hooks/useAutoPlay.js +1 -1
  72. package/lib/module/hooks/useAutoPlay.js.map +1 -1
  73. package/lib/module/hooks/useCarouselController.js +1 -1
  74. package/lib/module/hooks/useCarouselController.js.map +1 -1
  75. package/lib/module/hooks/useCheckMounted.js +1 -1
  76. package/lib/module/hooks/useCheckMounted.js.map +1 -1
  77. package/lib/module/hooks/useCommonVariables.js +1 -1
  78. package/lib/module/hooks/useCommonVariables.js.map +1 -1
  79. package/lib/module/hooks/useInitProps.js +1 -1
  80. package/lib/module/hooks/useInitProps.js.map +1 -1
  81. package/lib/module/hooks/useLayoutConfig.js +1 -1
  82. package/lib/module/hooks/useLayoutConfig.js.map +1 -1
  83. package/lib/module/hooks/useOffsetX.js +1 -1
  84. package/lib/module/hooks/useOffsetX.js.map +1 -1
  85. package/lib/module/hooks/useOnProgressChange.js +1 -1
  86. package/lib/module/hooks/useOnProgressChange.js.map +1 -1
  87. package/lib/module/hooks/usePanGestureProxy.js +1 -1
  88. package/lib/module/hooks/usePanGestureProxy.js.map +1 -1
  89. package/lib/module/hooks/usePropsErrorBoundary.js +1 -1
  90. package/lib/module/hooks/usePropsErrorBoundary.js.map +1 -1
  91. package/lib/module/hooks/useUpdateGestureConfig.js +1 -1
  92. package/lib/module/hooks/useUpdateGestureConfig.js.map +1 -1
  93. package/lib/module/hooks/useVisibleRanges.js +1 -1
  94. package/lib/module/hooks/useVisibleRanges.js.map +1 -1
  95. package/lib/module/index.js +1 -1
  96. package/lib/module/index.js.map +1 -1
  97. package/lib/module/layouts/index.js +1 -1
  98. package/lib/module/layouts/index.js.map +1 -1
  99. package/lib/module/layouts/normal.js +1 -1
  100. package/lib/module/layouts/normal.js.map +1 -1
  101. package/lib/module/layouts/parallax.js +1 -1
  102. package/lib/module/layouts/parallax.js.map +1 -1
  103. package/lib/module/layouts/stack.js +1 -1
  104. package/lib/module/layouts/stack.js.map +1 -1
  105. package/lib/module/package.json +1 -0
  106. package/lib/module/public-types.js +2 -0
  107. package/lib/module/public-types.js.map +1 -0
  108. package/lib/module/store/index.js +1 -1
  109. package/lib/module/store/index.js.map +1 -1
  110. package/lib/module/types.js +1 -1
  111. package/lib/module/utils/carousel-direction.js +2 -0
  112. package/lib/module/utils/carousel-direction.js.map +1 -0
  113. package/lib/module/utils/carousel-math.js +2 -0
  114. package/lib/module/utils/carousel-math.js.map +1 -0
  115. package/lib/module/utils/compute-gesture-translation.js +1 -1
  116. package/lib/module/utils/compute-gesture-translation.js.map +1 -1
  117. package/lib/module/utils/compute-offset-if-size-changed.js +1 -1
  118. package/lib/module/utils/compute-offset-if-size-changed.js.map +1 -1
  119. package/lib/module/utils/computed-with-auto-fill-data.js +1 -1
  120. package/lib/module/utils/computed-with-auto-fill-data.js.map +1 -1
  121. package/lib/module/utils/deal-with-animation.js +1 -1
  122. package/lib/module/utils/deal-with-animation.js.map +1 -1
  123. package/lib/module/utils/log.js +1 -1
  124. package/lib/module/utils/log.js.map +1 -1
  125. package/lib/module/utils/sanitize-animation-style.js +1 -1
  126. package/lib/module/utils/sanitize-animation-style.js.map +1 -1
  127. package/lib/typescript/commonjs/components/Carousel.d.ts +8 -0
  128. package/lib/typescript/commonjs/components/Carousel.d.ts.map +1 -0
  129. package/lib/typescript/{components → commonjs/components}/CarouselLayout.d.ts +5 -8
  130. package/lib/typescript/commonjs/components/CarouselLayout.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/components/ItemLayout.d.ts +21 -0
  132. package/lib/typescript/commonjs/components/ItemLayout.d.ts.map +1 -0
  133. package/lib/typescript/commonjs/components/ItemRenderer.d.ts +24 -0
  134. package/lib/typescript/commonjs/components/ItemRenderer.d.ts.map +1 -0
  135. package/lib/typescript/commonjs/components/LazyView.d.ts.map +1 -0
  136. package/lib/typescript/commonjs/components/Pagination/PaginationItem.d.ts +14 -0
  137. package/lib/typescript/commonjs/components/Pagination/PaginationItem.d.ts.map +1 -0
  138. package/lib/typescript/commonjs/components/Pagination/index.d.ts +4 -0
  139. package/lib/typescript/commonjs/components/Pagination/index.d.ts.map +1 -0
  140. package/lib/typescript/{components → commonjs/components}/ScrollViewGesture.d.ts +3 -4
  141. package/lib/typescript/commonjs/components/ScrollViewGesture.d.ts.map +1 -0
  142. package/lib/typescript/commonjs/constants/index.d.ts.map +1 -0
  143. package/lib/typescript/commonjs/hooks/useAutoPlay.d.ts +12 -0
  144. package/lib/typescript/commonjs/hooks/useAutoPlay.d.ts.map +1 -0
  145. package/lib/typescript/commonjs/hooks/useCarouselController.d.ts +29 -0
  146. package/lib/typescript/commonjs/hooks/useCarouselController.d.ts.map +1 -0
  147. package/lib/typescript/commonjs/hooks/useCheckMounted.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/hooks/useCommonVariables.d.ts +18 -0
  149. package/lib/typescript/commonjs/hooks/useCommonVariables.d.ts.map +1 -0
  150. package/lib/typescript/commonjs/hooks/useInitProps.d.ts +25 -0
  151. package/lib/typescript/commonjs/hooks/useInitProps.d.ts.map +1 -0
  152. package/lib/typescript/commonjs/hooks/useLayoutConfig.d.ts +8 -0
  153. package/lib/typescript/commonjs/hooks/useLayoutConfig.d.ts.map +1 -0
  154. package/lib/typescript/commonjs/hooks/useOffsetX.d.ts +13 -0
  155. package/lib/typescript/commonjs/hooks/useOffsetX.d.ts.map +1 -0
  156. package/lib/typescript/commonjs/hooks/useOnProgressChange.d.ts +12 -0
  157. package/lib/typescript/commonjs/hooks/useOnProgressChange.d.ts.map +1 -0
  158. package/lib/typescript/{hooks → commonjs/hooks}/usePanGestureProxy.d.ts +4 -3
  159. package/lib/typescript/commonjs/hooks/usePanGestureProxy.d.ts.map +1 -0
  160. package/lib/typescript/commonjs/hooks/usePropsErrorBoundary.d.ts +3 -0
  161. package/lib/typescript/commonjs/hooks/usePropsErrorBoundary.d.ts.map +1 -0
  162. package/lib/typescript/commonjs/hooks/useUpdateGestureConfig.d.ts +9 -0
  163. package/lib/typescript/commonjs/hooks/useUpdateGestureConfig.d.ts.map +1 -0
  164. package/lib/typescript/{hooks → commonjs/hooks}/useVisibleRanges.d.ts +6 -6
  165. package/lib/typescript/commonjs/hooks/useVisibleRanges.d.ts.map +1 -0
  166. package/lib/typescript/commonjs/index.d.ts +4 -0
  167. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  168. package/lib/typescript/{layouts → commonjs/layouts}/index.d.ts +0 -1
  169. package/lib/typescript/commonjs/layouts/index.d.ts.map +1 -0
  170. package/lib/typescript/commonjs/layouts/normal.d.ts +15 -0
  171. package/lib/typescript/commonjs/layouts/normal.d.ts.map +1 -0
  172. package/lib/typescript/commonjs/layouts/parallax.d.ts +27 -0
  173. package/lib/typescript/commonjs/layouts/parallax.d.ts.map +1 -0
  174. package/lib/typescript/commonjs/layouts/stack.d.ts +10 -0
  175. package/lib/typescript/commonjs/layouts/stack.d.ts.map +1 -0
  176. package/lib/typescript/commonjs/package.json +1 -0
  177. package/lib/typescript/commonjs/public-types.d.ts +171 -0
  178. package/lib/typescript/commonjs/public-types.d.ts.map +1 -0
  179. package/lib/typescript/{store → commonjs/store}/index.d.ts +8 -8
  180. package/lib/typescript/commonjs/store/index.d.ts.map +1 -0
  181. package/lib/typescript/commonjs/types.d.ts +15 -0
  182. package/lib/typescript/commonjs/types.d.ts.map +1 -0
  183. package/lib/typescript/commonjs/utils/carousel-direction.d.ts +9 -0
  184. package/lib/typescript/commonjs/utils/carousel-direction.d.ts.map +1 -0
  185. package/lib/typescript/commonjs/utils/carousel-math.d.ts +28 -0
  186. package/lib/typescript/commonjs/utils/carousel-math.d.ts.map +1 -0
  187. package/lib/typescript/commonjs/utils/compute-gesture-translation.d.ts.map +1 -0
  188. package/lib/typescript/commonjs/utils/compute-offset-if-size-changed.d.ts.map +1 -0
  189. package/lib/typescript/commonjs/utils/computed-with-auto-fill-data.d.ts.map +1 -0
  190. package/lib/typescript/commonjs/utils/deal-with-animation.d.ts +3 -0
  191. package/lib/typescript/commonjs/utils/deal-with-animation.d.ts.map +1 -0
  192. package/lib/typescript/commonjs/utils/log.d.ts.map +1 -0
  193. package/lib/typescript/commonjs/utils/sanitize-animation-style.d.ts.map +1 -0
  194. package/lib/typescript/module/components/Carousel.d.ts +8 -0
  195. package/lib/typescript/module/components/Carousel.d.ts.map +1 -0
  196. package/lib/typescript/module/components/CarouselLayout.d.ts +14 -0
  197. package/lib/typescript/module/components/CarouselLayout.d.ts.map +1 -0
  198. package/lib/typescript/module/components/ItemLayout.d.ts +21 -0
  199. package/lib/typescript/module/components/ItemLayout.d.ts.map +1 -0
  200. package/lib/typescript/module/components/ItemRenderer.d.ts +24 -0
  201. package/lib/typescript/module/components/ItemRenderer.d.ts.map +1 -0
  202. package/lib/typescript/module/components/LazyView.d.ts +8 -0
  203. package/lib/typescript/module/components/LazyView.d.ts.map +1 -0
  204. package/lib/typescript/module/components/Pagination/PaginationItem.d.ts +14 -0
  205. package/lib/typescript/module/components/Pagination/PaginationItem.d.ts.map +1 -0
  206. package/lib/typescript/module/components/Pagination/index.d.ts +4 -0
  207. package/lib/typescript/module/components/Pagination/index.d.ts.map +1 -0
  208. package/lib/typescript/module/components/ScrollViewGesture.d.ts +18 -0
  209. package/lib/typescript/module/components/ScrollViewGesture.d.ts.map +1 -0
  210. package/lib/typescript/module/constants/index.d.ts +9 -0
  211. package/lib/typescript/module/constants/index.d.ts.map +1 -0
  212. package/lib/typescript/module/hooks/useAutoPlay.d.ts +12 -0
  213. package/lib/typescript/module/hooks/useAutoPlay.d.ts.map +1 -0
  214. package/lib/typescript/module/hooks/useCarouselController.d.ts +29 -0
  215. package/lib/typescript/module/hooks/useCarouselController.d.ts.map +1 -0
  216. package/lib/typescript/module/hooks/useCheckMounted.d.ts +3 -0
  217. package/lib/typescript/module/hooks/useCheckMounted.d.ts.map +1 -0
  218. package/lib/typescript/module/hooks/useCommonVariables.d.ts +18 -0
  219. package/lib/typescript/module/hooks/useCommonVariables.d.ts.map +1 -0
  220. package/lib/typescript/module/hooks/useInitProps.d.ts +25 -0
  221. package/lib/typescript/module/hooks/useInitProps.d.ts.map +1 -0
  222. package/lib/typescript/module/hooks/useLayoutConfig.d.ts +8 -0
  223. package/lib/typescript/module/hooks/useLayoutConfig.d.ts.map +1 -0
  224. package/lib/typescript/module/hooks/useOffsetX.d.ts +13 -0
  225. package/lib/typescript/module/hooks/useOffsetX.d.ts.map +1 -0
  226. package/lib/typescript/module/hooks/useOnProgressChange.d.ts +12 -0
  227. package/lib/typescript/module/hooks/useOnProgressChange.d.ts.map +1 -0
  228. package/lib/typescript/module/hooks/usePanGestureProxy.d.ts +11 -0
  229. package/lib/typescript/module/hooks/usePanGestureProxy.d.ts.map +1 -0
  230. package/lib/typescript/module/hooks/usePropsErrorBoundary.d.ts +3 -0
  231. package/lib/typescript/module/hooks/usePropsErrorBoundary.d.ts.map +1 -0
  232. package/lib/typescript/module/hooks/useUpdateGestureConfig.d.ts +9 -0
  233. package/lib/typescript/module/hooks/useUpdateGestureConfig.d.ts.map +1 -0
  234. package/lib/typescript/module/hooks/useVisibleRanges.d.ts +22 -0
  235. package/lib/typescript/module/hooks/useVisibleRanges.d.ts.map +1 -0
  236. package/lib/typescript/module/index.d.ts +4 -0
  237. package/lib/typescript/module/index.d.ts.map +1 -0
  238. package/lib/typescript/module/layouts/index.d.ts +10 -0
  239. package/lib/typescript/module/layouts/index.d.ts.map +1 -0
  240. package/lib/typescript/module/layouts/normal.d.ts +15 -0
  241. package/lib/typescript/module/layouts/normal.d.ts.map +1 -0
  242. package/lib/typescript/module/layouts/parallax.d.ts +27 -0
  243. package/lib/typescript/module/layouts/parallax.d.ts.map +1 -0
  244. package/lib/typescript/module/layouts/stack.d.ts +10 -0
  245. package/lib/typescript/module/layouts/stack.d.ts.map +1 -0
  246. package/lib/typescript/module/package.json +1 -0
  247. package/lib/typescript/module/public-types.d.ts +171 -0
  248. package/lib/typescript/module/public-types.d.ts.map +1 -0
  249. package/lib/typescript/module/store/index.d.ts +35 -0
  250. package/lib/typescript/module/store/index.d.ts.map +1 -0
  251. package/lib/typescript/module/types.d.ts +15 -0
  252. package/lib/typescript/module/types.d.ts.map +1 -0
  253. package/lib/typescript/module/utils/carousel-direction.d.ts +9 -0
  254. package/lib/typescript/module/utils/carousel-direction.d.ts.map +1 -0
  255. package/lib/typescript/module/utils/carousel-math.d.ts +28 -0
  256. package/lib/typescript/module/utils/carousel-math.d.ts.map +1 -0
  257. package/lib/typescript/module/utils/compute-gesture-translation.d.ts +9 -0
  258. package/lib/typescript/module/utils/compute-gesture-translation.d.ts.map +1 -0
  259. package/lib/typescript/module/utils/compute-offset-if-size-changed.d.ts +6 -0
  260. package/lib/typescript/module/utils/compute-offset-if-size-changed.d.ts.map +1 -0
  261. package/lib/typescript/module/utils/computed-with-auto-fill-data.d.ts +23 -0
  262. package/lib/typescript/module/utils/computed-with-auto-fill-data.d.ts.map +1 -0
  263. package/lib/typescript/module/utils/deal-with-animation.d.ts +3 -0
  264. package/lib/typescript/module/utils/deal-with-animation.d.ts.map +1 -0
  265. package/lib/typescript/module/utils/log.d.ts +7 -0
  266. package/lib/typescript/module/utils/log.d.ts.map +1 -0
  267. package/lib/typescript/module/utils/sanitize-animation-style.d.ts +3 -0
  268. package/lib/typescript/module/utils/sanitize-animation-style.d.ts.map +1 -0
  269. package/package.json +31 -6
  270. package/scripts/codemods/v5.mjs +502 -0
  271. package/src/components/Carousel.tsx +5 -5
  272. package/src/components/CarouselLayout.tsx +52 -89
  273. package/src/components/ItemLayout.tsx +57 -48
  274. package/src/components/ItemRenderer.tsx +29 -18
  275. package/src/components/Pagination/PaginationItem.tsx +166 -0
  276. package/src/components/Pagination/index.tsx +105 -6
  277. package/src/components/ScrollViewGesture.tsx +92 -177
  278. package/src/hooks/useAutoPlay.ts +23 -18
  279. package/src/hooks/useCarouselController.tsx +196 -342
  280. package/src/hooks/useCommonVariables.ts +159 -71
  281. package/src/hooks/useInitProps.ts +161 -71
  282. package/src/hooks/useLayoutConfig.ts +21 -12
  283. package/src/hooks/useOffsetX.ts +6 -6
  284. package/src/hooks/useOnProgressChange.ts +23 -48
  285. package/src/hooks/usePanGestureProxy.ts +8 -8
  286. package/src/hooks/usePropsErrorBoundary.ts +32 -90
  287. package/src/hooks/useUpdateGestureConfig.ts +6 -3
  288. package/src/hooks/useVisibleRanges.tsx +6 -6
  289. package/src/index.tsx +14 -9
  290. package/src/layouts/index.tsx +0 -2
  291. package/src/layouts/normal.ts +14 -4
  292. package/src/layouts/parallax.ts +32 -59
  293. package/src/layouts/stack.ts +30 -70
  294. package/src/public-types.ts +209 -0
  295. package/src/store/index.tsx +7 -7
  296. package/src/types.ts +30 -322
  297. package/src/utils/carousel-direction.ts +39 -0
  298. package/src/utils/carousel-math.ts +156 -0
  299. package/src/utils/computed-with-auto-fill-data.ts +2 -2
  300. package/src/utils/deal-with-animation.ts +11 -9
  301. package/lib/commonjs/components/Pagination/Basic/PaginationItem.js +0 -2
  302. package/lib/commonjs/components/Pagination/Basic/PaginationItem.js.map +0 -1
  303. package/lib/commonjs/components/Pagination/Basic/index.js +0 -2
  304. package/lib/commonjs/components/Pagination/Basic/index.js.map +0 -1
  305. package/lib/commonjs/components/Pagination/Custom/PaginationItem.js +0 -2
  306. package/lib/commonjs/components/Pagination/Custom/PaginationItem.js.map +0 -1
  307. package/lib/commonjs/components/Pagination/Custom/index.js +0 -2
  308. package/lib/commonjs/components/Pagination/Custom/index.js.map +0 -1
  309. package/lib/commonjs/utils/compute-offset-if-data-changed.js +0 -2
  310. package/lib/commonjs/utils/compute-offset-if-data-changed.js.map +0 -1
  311. package/lib/commonjs/utils/handleroffset-direction.js +0 -2
  312. package/lib/commonjs/utils/handleroffset-direction.js.map +0 -1
  313. package/lib/module/components/Pagination/Basic/PaginationItem.js +0 -2
  314. package/lib/module/components/Pagination/Basic/PaginationItem.js.map +0 -1
  315. package/lib/module/components/Pagination/Basic/index.js +0 -2
  316. package/lib/module/components/Pagination/Basic/index.js.map +0 -1
  317. package/lib/module/components/Pagination/Custom/PaginationItem.js +0 -2
  318. package/lib/module/components/Pagination/Custom/PaginationItem.js.map +0 -1
  319. package/lib/module/components/Pagination/Custom/index.js +0 -2
  320. package/lib/module/components/Pagination/Custom/index.js.map +0 -1
  321. package/lib/module/utils/compute-offset-if-data-changed.js +0 -2
  322. package/lib/module/utils/compute-offset-if-data-changed.js.map +0 -1
  323. package/lib/module/utils/handleroffset-direction.js +0 -2
  324. package/lib/module/utils/handleroffset-direction.js.map +0 -1
  325. package/lib/typescript/components/Carousel.d.ts +0 -8
  326. package/lib/typescript/components/Carousel.d.ts.map +0 -1
  327. package/lib/typescript/components/CarouselLayout.d.ts.map +0 -1
  328. package/lib/typescript/components/ItemLayout.d.ts +0 -20
  329. package/lib/typescript/components/ItemLayout.d.ts.map +0 -1
  330. package/lib/typescript/components/ItemRenderer.d.ts +0 -23
  331. package/lib/typescript/components/ItemRenderer.d.ts.map +0 -1
  332. package/lib/typescript/components/LazyView.d.ts.map +0 -1
  333. package/lib/typescript/components/Pagination/Basic/PaginationItem.d.ts +0 -29
  334. package/lib/typescript/components/Pagination/Basic/PaginationItem.d.ts.map +0 -1
  335. package/lib/typescript/components/Pagination/Basic/index.d.ts +0 -23
  336. package/lib/typescript/components/Pagination/Basic/index.d.ts.map +0 -1
  337. package/lib/typescript/components/Pagination/Custom/PaginationItem.d.ts +0 -35
  338. package/lib/typescript/components/Pagination/Custom/PaginationItem.d.ts.map +0 -1
  339. package/lib/typescript/components/Pagination/Custom/index.d.ts +0 -26
  340. package/lib/typescript/components/Pagination/Custom/index.d.ts.map +0 -1
  341. package/lib/typescript/components/Pagination/index.d.ts +0 -5
  342. package/lib/typescript/components/Pagination/index.d.ts.map +0 -1
  343. package/lib/typescript/components/ScrollViewGesture.d.ts.map +0 -1
  344. package/lib/typescript/constants/index.d.ts.map +0 -1
  345. package/lib/typescript/hooks/useAutoPlay.d.ts +0 -12
  346. package/lib/typescript/hooks/useAutoPlay.d.ts.map +0 -1
  347. package/lib/typescript/hooks/useCarouselController.d.ts +0 -28
  348. package/lib/typescript/hooks/useCarouselController.d.ts.map +0 -1
  349. package/lib/typescript/hooks/useCheckMounted.d.ts.map +0 -1
  350. package/lib/typescript/hooks/useCommonVariables.d.ts +0 -13
  351. package/lib/typescript/hooks/useCommonVariables.d.ts.map +0 -1
  352. package/lib/typescript/hooks/useInitProps.d.ts +0 -10
  353. package/lib/typescript/hooks/useInitProps.d.ts.map +0 -1
  354. package/lib/typescript/hooks/useLayoutConfig.d.ts +0 -8
  355. package/lib/typescript/hooks/useLayoutConfig.d.ts.map +0 -1
  356. package/lib/typescript/hooks/useOffsetX.d.ts +0 -13
  357. package/lib/typescript/hooks/useOffsetX.d.ts.map +0 -1
  358. package/lib/typescript/hooks/useOnProgressChange.d.ts +0 -11
  359. package/lib/typescript/hooks/useOnProgressChange.d.ts.map +0 -1
  360. package/lib/typescript/hooks/usePanGestureProxy.d.ts.map +0 -1
  361. package/lib/typescript/hooks/usePropsErrorBoundary.d.ts +0 -5
  362. package/lib/typescript/hooks/usePropsErrorBoundary.d.ts.map +0 -1
  363. package/lib/typescript/hooks/useUpdateGestureConfig.d.ts +0 -6
  364. package/lib/typescript/hooks/useUpdateGestureConfig.d.ts.map +0 -1
  365. package/lib/typescript/hooks/useVisibleRanges.d.ts.map +0 -1
  366. package/lib/typescript/index.d.ts +0 -7
  367. package/lib/typescript/index.d.ts.map +0 -1
  368. package/lib/typescript/layouts/index.d.ts.map +0 -1
  369. package/lib/typescript/layouts/normal.d.ts +0 -13
  370. package/lib/typescript/layouts/normal.d.ts.map +0 -1
  371. package/lib/typescript/layouts/parallax.d.ts +0 -47
  372. package/lib/typescript/layouts/parallax.d.ts.map +0 -1
  373. package/lib/typescript/layouts/stack.d.ts +0 -38
  374. package/lib/typescript/layouts/stack.d.ts.map +0 -1
  375. package/lib/typescript/store/index.d.ts.map +0 -1
  376. package/lib/typescript/types.d.ts +0 -302
  377. package/lib/typescript/types.d.ts.map +0 -1
  378. package/lib/typescript/utils/compute-gesture-translation.d.ts.map +0 -1
  379. package/lib/typescript/utils/compute-offset-if-data-changed.d.ts +0 -9
  380. package/lib/typescript/utils/compute-offset-if-data-changed.d.ts.map +0 -1
  381. package/lib/typescript/utils/compute-offset-if-size-changed.d.ts.map +0 -1
  382. package/lib/typescript/utils/computed-with-auto-fill-data.d.ts.map +0 -1
  383. package/lib/typescript/utils/deal-with-animation.d.ts +0 -3
  384. package/lib/typescript/utils/deal-with-animation.d.ts.map +0 -1
  385. package/lib/typescript/utils/handleroffset-direction.d.ts +0 -4
  386. package/lib/typescript/utils/handleroffset-direction.d.ts.map +0 -1
  387. package/lib/typescript/utils/log.d.ts.map +0 -1
  388. package/lib/typescript/utils/sanitize-animation-style.d.ts.map +0 -1
  389. package/src/components/Pagination/Basic/PaginationItem.tsx +0 -149
  390. package/src/components/Pagination/Basic/index.tsx +0 -98
  391. package/src/components/Pagination/Custom/PaginationItem.tsx +0 -166
  392. package/src/components/Pagination/Custom/index.tsx +0 -111
  393. package/src/utils/compute-offset-if-data-changed.ts +0 -44
  394. package/src/utils/handleroffset-direction.ts +0 -18
  395. /package/lib/typescript/{components → commonjs/components}/LazyView.d.ts +0 -0
  396. /package/lib/typescript/{constants → commonjs/constants}/index.d.ts +0 -0
  397. /package/lib/typescript/{hooks → commonjs/hooks}/useCheckMounted.d.ts +0 -0
  398. /package/lib/typescript/{utils → commonjs/utils}/compute-gesture-translation.d.ts +0 -0
  399. /package/lib/typescript/{utils → commonjs/utils}/compute-offset-if-size-changed.d.ts +0 -0
  400. /package/lib/typescript/{utils → commonjs/utils}/computed-with-auto-fill-data.d.ts +0 -0
  401. /package/lib/typescript/{utils → commonjs/utils}/log.d.ts +0 -0
  402. /package/lib/typescript/{utils → commonjs/utils}/sanitize-animation-style.d.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  import React from "react";
2
- import { StyleSheet, View, type ViewStyle } from "react-native";
2
+ import { type StyleProp, StyleSheet, View, type ViewStyle } from "react-native";
3
3
  import { useAnimatedReaction, useAnimatedStyle, useDerivedValue } from "react-native-reanimated";
4
4
  import { scheduleOnRN } from "react-native-worklets";
5
5
  import { useAutoPlay } from "../hooks/useAutoPlay";
@@ -7,42 +7,29 @@ import { useCarouselController } from "../hooks/useCarouselController";
7
7
  import { useLayoutConfig } from "../hooks/useLayoutConfig";
8
8
  import { useOnProgressChange } from "../hooks/useOnProgressChange";
9
9
  import { useGlobalState } from "../store";
10
- import { ICarouselInstance } from "../types";
11
- import { computedRealIndexWithAutoFillData } from "../utils/computed-with-auto-fill-data";
10
+ import type { CarouselRef } from "../types";
12
11
  import { ItemRenderer } from "./ItemRenderer";
13
12
  import { ScrollViewGesture } from "./ScrollViewGesture";
14
13
 
15
- export type TAnimationStyle = (value: number) => ViewStyle;
16
-
17
14
  export function resolveCarouselLayoutStyle(params: {
18
15
  flattenedStyle: Partial<ViewStyle>;
19
- vertical: boolean;
16
+ isVertical: boolean;
20
17
  measuredSize: number;
21
18
  sizeExplicit: boolean;
22
- legacyWidth?: number;
23
- legacyHeight?: number;
24
19
  }) {
25
20
  "worklet";
26
21
 
27
- const { flattenedStyle, vertical, measuredSize, sizeExplicit, legacyWidth, legacyHeight } =
28
- params;
22
+ const { flattenedStyle, isVertical, measuredSize, sizeExplicit } = params;
29
23
  const { width, height } = flattenedStyle;
30
- const hasLegacyMainAxisSize = vertical
31
- ? typeof legacyHeight === "number" && legacyHeight > 0
32
- : typeof legacyWidth === "number" && legacyWidth > 0;
33
- const shouldUseMeasuredMainAxisSize = sizeExplicit || hasLegacyMainAxisSize;
34
24
  const resolvedMainAxisSize = measuredSize || "100%";
35
25
 
36
26
  return {
37
- width:
38
- width ?? (vertical ? "100%" : shouldUseMeasuredMainAxisSize ? resolvedMainAxisSize : "100%"),
39
- height:
40
- height ??
41
- (vertical ? (shouldUseMeasuredMainAxisSize ? resolvedMainAxisSize : "100%") : "100%"),
27
+ width: width ?? (isVertical ? "100%" : sizeExplicit ? resolvedMainAxisSize : "100%"),
28
+ height: height ?? (isVertical ? (sizeExplicit ? resolvedMainAxisSize : "100%") : "100%"),
42
29
  };
43
30
  }
44
31
 
45
- export const CarouselLayout = React.forwardRef<ICarouselInstance>((_props, ref) => {
32
+ export const CarouselLayout = React.forwardRef<CarouselRef>((_props, ref) => {
46
33
  const { props, common } = useGlobalState();
47
34
 
48
35
  const {
@@ -51,31 +38,30 @@ export const CarouselLayout = React.forwardRef<ICarouselInstance>((_props, ref)
51
38
  autoFillData,
52
39
  // Fill data with autoFillData
53
40
  data,
41
+ rawData,
54
42
  // Length of fill data
55
43
  dataLength,
56
44
  // Length of raw data
57
45
  rawDataLength,
58
- mode,
46
+ layout,
59
47
  style,
60
48
  contentContainerStyle,
61
- vertical,
62
- autoPlay,
63
- windowSize,
64
- autoPlayReverse,
65
- autoPlayInterval,
66
- scrollAnimationDuration,
67
- withAnimation,
68
- fixedDirection,
49
+ orientation,
50
+ autoplay,
51
+ renderWindowSize,
52
+ autoplayDirection,
53
+ autoplayInterval,
54
+ animation,
69
55
  renderItem,
70
- onScrollEnd,
71
56
  onSnapToItem,
72
57
  onScrollStart,
73
58
  onProgressChange,
74
- customAnimation,
59
+ progress,
60
+ itemAnimation,
75
61
  defaultIndex,
76
- width: legacyWidth,
77
- height: legacyHeight,
62
+ keyExtractor,
78
63
  } = props;
64
+ const isVertical = orientation === "vertical";
79
65
 
80
66
  const { size, handlerOffset, resolvedSize, sizePhase, sizeExplicit } = common;
81
67
  const layoutConfig = useLayoutConfig({ ...props, size });
@@ -100,100 +86,85 @@ export const CarouselLayout = React.forwardRef<ICarouselInstance>((_props, ref)
100
86
  }, [loop, dataLength, handlerOffset, resolvedSize]);
101
87
 
102
88
  useOnProgressChange({
103
- autoFillData,
104
89
  loop,
90
+ offset: handlerOffset,
91
+ progress,
105
92
  size,
106
93
  sizeReady: isSizeReady,
107
- offsetX,
108
94
  rawDataLength,
109
95
  onProgressChange,
110
96
  });
111
97
 
98
+ const _onScrollEnd = React.useCallback(
99
+ (realIndex: number) => {
100
+ if (onSnapToItem) onSnapToItem(realIndex);
101
+ },
102
+ [onSnapToItem]
103
+ );
104
+
112
105
  const carouselController = useCarouselController({
113
106
  ref,
114
107
  loop,
115
108
  size,
116
109
  dataLength,
117
- autoFillData,
110
+ rawDataLength,
118
111
  handlerOffset,
119
- withAnimation,
112
+ animation,
120
113
  defaultIndex,
121
- fixedDirection,
122
- duration: scrollAnimationDuration,
123
- onScrollEnd: () => scheduleOnRN(_onScrollEnd),
124
- onScrollStart: () => !!onScrollStart && scheduleOnRN(onScrollStart),
114
+ onMovementEnd: _onScrollEnd,
115
+ onScrollStart,
125
116
  });
126
117
 
127
- const {
128
- getSharedIndex,
129
- // index, // Animated index. Could be used for dynamic dimension
130
- } = carouselController;
131
-
132
- const _onScrollEnd = React.useCallback(() => {
133
- const _sharedIndex = Math.round(getSharedIndex());
134
-
135
- const realIndex = computedRealIndexWithAutoFillData({
136
- index: _sharedIndex,
137
- dataLength: rawDataLength,
138
- loop,
139
- autoFillData,
140
- });
141
-
142
- if (onSnapToItem) onSnapToItem(realIndex);
143
-
144
- if (onScrollEnd) onScrollEnd(realIndex);
145
- }, [loop, autoFillData, rawDataLength, getSharedIndex, onSnapToItem, onScrollEnd]);
146
-
147
118
  const {
148
119
  start: startAutoPlay,
149
120
  pause: pauseAutoPlay,
150
121
  trigger: triggerAutoPlay,
151
122
  } = useAutoPlay({
152
- autoPlay,
153
- autoPlayInterval,
154
- autoPlayReverse,
123
+ autoplay,
124
+ autoplayDirection,
125
+ autoplayInterval,
155
126
  carouselController,
156
127
  });
157
128
 
158
129
  useAnimatedReaction(
159
130
  () => ({ ready: isSizeReady.value }),
160
131
  (state, previous) => {
161
- if (!autoPlay) return;
132
+ if (!autoplay) return;
162
133
  if (state.ready === previous?.ready) return;
163
134
 
164
135
  if (state.ready) scheduleOnRN(triggerAutoPlay);
165
136
  else scheduleOnRN(pauseAutoPlay);
166
137
  },
167
- [autoPlay]
138
+ [autoplay]
168
139
  );
169
140
 
170
141
  const scrollViewGestureOnScrollStart = React.useCallback(() => {
142
+ carouselController.startMovement();
171
143
  pauseAutoPlay();
172
144
  onScrollStart?.();
173
- }, [onScrollStart, pauseAutoPlay]);
145
+ }, [carouselController, onScrollStart, pauseAutoPlay]);
174
146
 
175
147
  const scrollViewGestureOnScrollEnd = React.useCallback(() => {
148
+ const settledIndex = carouselController.settle();
176
149
  startAutoPlay();
177
- _onScrollEnd();
178
- }, [_onScrollEnd, startAutoPlay]);
150
+ _onScrollEnd(settledIndex);
151
+ }, [_onScrollEnd, carouselController, startAutoPlay]);
179
152
 
180
153
  const scrollViewGestureOnTouchBegin = React.useCallback(pauseAutoPlay, [pauseAutoPlay]);
181
154
 
182
155
  const scrollViewGestureOnTouchEnd = React.useCallback(startAutoPlay, [startAutoPlay]);
183
156
 
184
157
  const { opacity, transform, ...restContentContainerStyle } =
185
- StyleSheet.flatten(contentContainerStyle) || {};
158
+ StyleSheet.flatten(contentContainerStyle as StyleProp<ViewStyle>) || {};
186
159
  const flattenedStyle = StyleSheet.flatten(style) || {};
187
160
 
188
161
  const layoutStyle = useAnimatedStyle(() => {
189
162
  const measuredSize = resolvedSize.value ?? 0;
190
163
  const { width, height } = resolveCarouselLayoutStyle({
191
164
  flattenedStyle,
192
- vertical: !!vertical,
165
+ isVertical,
193
166
  measuredSize,
194
167
  sizeExplicit,
195
- legacyWidth,
196
- legacyHeight,
197
168
  });
198
169
 
199
170
  return {
@@ -201,31 +172,21 @@ export const CarouselLayout = React.forwardRef<ICarouselInstance>((_props, ref)
201
172
  height,
202
173
  opacity: isSizeReady.value ? 1 : 0,
203
174
  };
204
- }, [
205
- flattenedStyle,
206
- isSizeReady,
207
- vertical,
208
- resolvedSize,
209
- sizePhase,
210
- sizeExplicit,
211
- legacyWidth,
212
- legacyHeight,
213
- ]);
175
+ }, [flattenedStyle, isSizeReady, isVertical, resolvedSize, sizePhase, sizeExplicit]);
214
176
 
215
177
  return (
216
- <View testID={testID} style={[styles.layoutContainer, style]}>
178
+ <View testID={testID} style={[styles.layoutContainer, style]} onLayout={props.onLayout}>
217
179
  <ScrollViewGesture
218
180
  size={size}
219
- key={mode}
181
+ key={layout?.type}
220
182
  translation={handlerOffset}
221
183
  style={[
222
184
  styles.contentContainer,
223
185
  layoutStyle,
224
186
  restContentContainerStyle,
225
- vertical ? styles.itemsVertical : styles.itemsHorizontal,
187
+ isVertical ? styles.itemsVertical : styles.itemsHorizontal,
226
188
  ]}
227
189
  testID="carousel-content-container"
228
- onLayout={props.onLayout}
229
190
  onScrollStart={scrollViewGestureOnScrollStart}
230
191
  onScrollEnd={scrollViewGestureOnScrollEnd}
231
192
  onTouchBegin={scrollViewGestureOnTouchBegin}
@@ -233,18 +194,20 @@ export const CarouselLayout = React.forwardRef<ICarouselInstance>((_props, ref)
233
194
  >
234
195
  <ItemRenderer
235
196
  data={data}
197
+ rawData={rawData}
236
198
  dataLength={dataLength}
237
199
  rawDataLength={rawDataLength}
238
200
  loop={loop}
239
201
  size={size}
240
- windowSize={windowSize}
202
+ renderWindowSize={renderWindowSize}
241
203
  defaultIndex={defaultIndex}
242
204
  autoFillData={autoFillData}
243
205
  offsetX={offsetX}
244
206
  handlerOffset={handlerOffset}
245
207
  layoutConfig={layoutConfig}
246
208
  renderItem={renderItem}
247
- customAnimation={customAnimation}
209
+ itemAnimation={itemAnimation}
210
+ keyExtractor={keyExtractor}
248
211
  />
249
212
  </ScrollViewGesture>
250
213
  </View>
@@ -3,25 +3,27 @@ import type { LayoutChangeEvent, ViewStyle } from "react-native";
3
3
  import { StyleSheet } from "react-native";
4
4
  import type { SharedValue } from "react-native-reanimated";
5
5
  import Animated, {
6
+ useAnimatedReaction,
6
7
  useAnimatedStyle,
7
8
  useDerivedValue,
8
9
  useSharedValue,
9
10
  } from "react-native-reanimated";
10
- import { scheduleOnUI } from "react-native-worklets";
11
+ import { scheduleOnRN, scheduleOnUI } from "react-native-worklets";
11
12
 
12
- import type { IOpts } from "../hooks/useOffsetX";
13
+ import type { OffsetOptions } from "../hooks/useOffsetX";
13
14
  import { useOffsetX } from "../hooks/useOffsetX";
14
- import type { IVisibleRanges } from "../hooks/useVisibleRanges";
15
- import type { ILayoutConfig } from "../layouts/stack";
15
+ import type { VisibleRangesValue } from "../hooks/useVisibleRanges";
16
16
  import { useGlobalState } from "../store";
17
- import type { TCarouselProps } from "../types";
17
+ import type { CarouselItemAnimation } from "../types";
18
+ import { getHorizontalStackOffsetType } from "../utils/carousel-direction";
19
+ import { positiveModulo } from "../utils/carousel-math";
18
20
  import { sanitizeAnimationStyle } from "../utils/sanitize-animation-style";
19
21
 
20
- export type TAnimationStyle = NonNullable<TCarouselProps["customAnimation"]>;
22
+ export type ItemAnimationStyle = CarouselItemAnimation;
21
23
 
22
24
  export function resolveItemMainAxisSize(params: {
23
- explicitSize?: number;
24
- effectivePageSize?: number;
25
+ explicitSize?: number | undefined;
26
+ effectivePageSize?: number | undefined;
25
27
  measuredSize: number | null;
26
28
  }) {
27
29
  "worklet";
@@ -35,29 +37,18 @@ export function resolveItemMainAxisSize(params: {
35
37
 
36
38
  export const ItemLayout: React.FC<{
37
39
  index: number;
40
+ rawIndex: number;
38
41
  handlerOffset: SharedValue<number>;
39
- visibleRanges: IVisibleRanges;
40
- animationStyle: TAnimationStyle;
42
+ visibleRanges: VisibleRangesValue;
43
+ animationStyle: ItemAnimationStyle;
41
44
  children: (ctx: {
42
- animationValue: SharedValue<number>;
45
+ relativeProgress: SharedValue<number>;
43
46
  }) => React.ReactElement;
44
47
  }> = (props) => {
45
- const { handlerOffset, index, children, visibleRanges, animationStyle } = props;
48
+ const { handlerOffset, index, rawIndex, children, visibleRanges, animationStyle } = props;
46
49
 
47
50
  const {
48
- props: {
49
- loop,
50
- dataLength,
51
- width,
52
- height,
53
- vertical,
54
- customConfig,
55
- mode,
56
- modeConfig,
57
- style,
58
- itemWidth,
59
- itemHeight,
60
- },
51
+ props: { loop, dataLength, directionSign, orientation, layout, style, itemSize },
61
52
  common,
62
53
  layout: { updateItemDimensions },
63
54
  } = useGlobalState();
@@ -68,24 +59,19 @@ export const ItemLayout: React.FC<{
68
59
  });
69
60
 
70
61
  const fallbackSize = common.size;
71
- // Prefer size from `style` (v5), then fallback to deprecated `width`/`height` for v4 compatibility.
62
+ const isVertical = orientation === "vertical";
72
63
  const { width: styleWidth, height: styleHeight } = StyleSheet.flatten(style) || {};
73
64
  const styleWidthNumber = typeof styleWidth === "number" ? styleWidth : undefined;
74
65
  const styleHeightNumber = typeof styleHeight === "number" ? styleHeight : undefined;
75
66
 
76
- // When itemWidth/itemHeight is provided, use it for item dimensions (not container style)
77
- const explicitItemSize = vertical ? itemHeight : itemWidth;
78
- const explicitAxisSize = vertical ? (styleHeightNumber ?? height) : (styleWidthNumber ?? width);
79
- // Use itemWidth/itemHeight if provided, otherwise fall back to container size
80
- const size = (explicitItemSize ?? explicitAxisSize ?? fallbackSize) || 0;
67
+ const size = (itemSize ?? fallbackSize) || 0;
81
68
  const effectivePageSize = size > 0 ? size : undefined;
82
69
 
83
70
  const dimensionsStyle = useAnimatedStyle<ViewStyle>(() => {
84
- // When itemWidth/itemHeight is provided, use it for item width/height
85
- const widthCandidate = vertical ? width : (explicitItemSize ?? explicitAxisSize);
86
- const heightCandidate = vertical ? (explicitItemSize ?? explicitAxisSize) : height;
71
+ const widthCandidate = isVertical ? styleWidthNumber : itemSize;
72
+ const heightCandidate = isVertical ? itemSize : styleHeightNumber;
87
73
 
88
- const computedWidth = vertical
74
+ const computedWidth = isVertical
89
75
  ? typeof widthCandidate === "number"
90
76
  ? widthCandidate
91
77
  : (measuredSize.value.width ?? "100%")
@@ -95,7 +81,7 @@ export const ItemLayout: React.FC<{
95
81
  measuredSize: measuredSize.value.width,
96
82
  });
97
83
 
98
- const computedHeight = vertical
84
+ const computedHeight = isVertical
99
85
  ? resolveItemMainAxisSize({
100
86
  explicitSize: heightCandidate,
101
87
  effectivePageSize,
@@ -109,40 +95,59 @@ export const ItemLayout: React.FC<{
109
95
  width: computedWidth,
110
96
  height: computedHeight,
111
97
  };
112
- }, [vertical, width, height, explicitAxisSize, explicitItemSize, effectivePageSize]);
98
+ }, [effectivePageSize, isVertical, itemSize, styleHeightNumber, styleWidthNumber]);
113
99
 
114
- let offsetXConfig: IOpts = {
100
+ let offsetXConfig: OffsetOptions = {
115
101
  handlerOffset,
116
102
  index,
117
103
  size,
118
104
  dataLength,
119
105
  loop,
120
- ...(typeof customConfig === "function" ? customConfig() : {}),
121
106
  };
122
107
 
123
- if (mode === "horizontal-stack") {
124
- const { snapDirection, showLength } = modeConfig as ILayoutConfig;
125
-
108
+ if (layout?.type === "horizontal-stack") {
126
109
  offsetXConfig = {
127
110
  handlerOffset,
128
111
  index,
129
112
  size,
130
113
  dataLength,
131
114
  loop,
132
- type: snapDirection === "right" ? "negative" : "positive",
133
- viewCount: showLength,
115
+ type: getHorizontalStackOffsetType(layout.exitDirection ?? "left", directionSign),
116
+ viewCount: layout.visibleCount,
134
117
  };
135
118
  }
136
119
 
137
120
  const x = useOffsetX(offsetXConfig, visibleRanges);
138
- const animationValue = useDerivedValue(() => {
121
+ const isCurrentForAccessibility = React.useCallback(() => {
122
+ "worklet";
123
+
124
+ return (
125
+ size > 0 &&
126
+ dataLength > 0 &&
127
+ positiveModulo(Math.round(-handlerOffset.value / size), dataLength) === index
128
+ );
129
+ }, [dataLength, handlerOffset, index, size]);
130
+ const [isAccessibilityCurrent, setIsAccessibilityCurrent] =
131
+ React.useState(isCurrentForAccessibility);
132
+
133
+ useAnimatedReaction(
134
+ isCurrentForAccessibility,
135
+ (isCurrent, wasCurrent) => {
136
+ if (isCurrent !== wasCurrent) {
137
+ scheduleOnRN(setIsAccessibilityCurrent, isCurrent);
138
+ }
139
+ },
140
+ [isCurrentForAccessibility]
141
+ );
142
+
143
+ const relativeProgress = useDerivedValue(() => {
139
144
  if (!size) return 0;
140
145
  return x.value / size;
141
146
  }, [x, size]);
142
147
  const animatedStyle = useAnimatedStyle<ViewStyle>(() => {
143
148
  const safeSize = size || 1;
144
- return sanitizeAnimationStyle(animationStyle(x.value / safeSize, index));
145
- }, [animationStyle, index, x, size]);
149
+ return sanitizeAnimationStyle(animationStyle(x.value / safeSize, rawIndex));
150
+ }, [animationStyle, rawIndex, x, size]);
146
151
 
147
152
  // TODO: For dynamic dimension in the future
148
153
  // function handleLayout(e: LayoutChangeEvent) {
@@ -150,7 +155,7 @@ export const ItemLayout: React.FC<{
150
155
  // updateItemDimensions(index, { width, height });
151
156
  // }
152
157
 
153
- const child = children({ animationValue });
158
+ const child = children({ relativeProgress });
154
159
 
155
160
  type LayoutableProps = {
156
161
  collapsable?: boolean;
@@ -185,6 +190,10 @@ export const ItemLayout: React.FC<{
185
190
 
186
191
  return (
187
192
  <Animated.View
193
+ accessibilityElementsHidden={!isAccessibilityCurrent}
194
+ accessible={isAccessibilityCurrent ? undefined : false}
195
+ aria-hidden={!isAccessibilityCurrent}
196
+ importantForAccessibility={isAccessibilityCurrent ? "auto" : "no-hide-descendants"}
188
197
  style={[
189
198
  {
190
199
  position: "absolute",
@@ -1,39 +1,41 @@
1
1
  import React from "react";
2
2
  import type { FC } from "react";
3
- import type { ViewStyle } from "react-native";
4
3
  import type { SharedValue } from "react-native-reanimated";
5
4
  import { useAnimatedReaction } from "react-native-reanimated";
6
5
  import { scheduleOnRN } from "react-native-worklets";
7
6
 
8
- import type { TAnimationStyle } from "./ItemLayout";
7
+ import type { ItemAnimationStyle } from "./ItemLayout";
9
8
  import { ItemLayout } from "./ItemLayout";
10
9
 
11
10
  import type { VisibleRanges } from "../hooks/useVisibleRanges";
12
11
  import { computeVisibleRanges, useVisibleRanges } from "../hooks/useVisibleRanges";
13
- import type { CarouselRenderItem } from "../types";
12
+ import type { CarouselItemAnimation, CarouselRenderItem } from "../types";
14
13
  import { computedRealIndexWithAutoFillData } from "../utils/computed-with-auto-fill-data";
15
14
 
16
15
  interface Props {
17
- data: any[];
16
+ data: unknown[];
17
+ rawData: unknown[];
18
18
  dataLength: number;
19
19
  rawDataLength: number;
20
20
  loop: boolean;
21
21
  size: number;
22
- windowSize?: number;
22
+ renderWindowSize?: number | undefined;
23
23
  defaultIndex: number;
24
24
  autoFillData: boolean;
25
25
  offsetX: SharedValue<number>;
26
26
  handlerOffset: SharedValue<number>;
27
- layoutConfig: TAnimationStyle;
28
- renderItem: CarouselRenderItem<any>;
29
- customAnimation?: (value: number, index: number) => ViewStyle;
27
+ layoutConfig: ItemAnimationStyle;
28
+ renderItem: CarouselRenderItem<unknown>;
29
+ itemAnimation?: CarouselItemAnimation | undefined;
30
+ keyExtractor?: ((item: unknown, index: number) => string) | undefined;
30
31
  }
31
32
 
32
33
  export const ItemRenderer: FC<Props> = (props) => {
33
34
  const {
34
35
  data,
36
+ rawData,
35
37
  size,
36
- windowSize,
38
+ renderWindowSize,
37
39
  defaultIndex,
38
40
  handlerOffset,
39
41
  offsetX,
@@ -43,14 +45,15 @@ export const ItemRenderer: FC<Props> = (props) => {
43
45
  autoFillData,
44
46
  layoutConfig,
45
47
  renderItem,
46
- customAnimation,
48
+ itemAnimation,
49
+ keyExtractor,
47
50
  } = props;
48
51
 
49
52
  const visibleRanges = useVisibleRanges({
50
53
  total: dataLength,
51
54
  viewSize: size,
52
55
  translation: handlerOffset,
53
- windowSize,
56
+ windowSize: renderWindowSize,
54
57
  loop,
55
58
  });
56
59
 
@@ -59,11 +62,11 @@ export const ItemRenderer: FC<Props> = (props) => {
59
62
  () =>
60
63
  computeVisibleRanges({
61
64
  total: dataLength,
62
- windowSize,
65
+ windowSize: renderWindowSize,
63
66
  currentIndex: defaultIndex,
64
67
  loop,
65
68
  }),
66
- [dataLength, defaultIndex, loop, windowSize]
69
+ [dataLength, defaultIndex, loop, renderWindowSize]
67
70
  );
68
71
 
69
72
  const [displayedItems, setDisplayedItems] = React.useState<VisibleRanges>(initialRanges);
@@ -92,19 +95,27 @@ export const ItemRenderer: FC<Props> = (props) => {
92
95
 
93
96
  if (!shouldRender) return null;
94
97
 
98
+ const rawItem = rawData[realIndex] ?? item;
99
+ const key = keyExtractor
100
+ ? `${keyExtractor(rawItem, realIndex)}::rnrc-copy-${Math.floor(
101
+ index / Math.max(rawDataLength, 1)
102
+ )}`
103
+ : String(index);
104
+
95
105
  return (
96
106
  <ItemLayout
97
- key={index}
107
+ key={key}
98
108
  index={index}
109
+ rawIndex={realIndex}
99
110
  handlerOffset={offsetX}
100
111
  visibleRanges={visibleRanges}
101
- animationStyle={customAnimation || layoutConfig}
112
+ animationStyle={itemAnimation || layoutConfig}
102
113
  >
103
- {({ animationValue }) =>
114
+ {({ relativeProgress }) =>
104
115
  renderItem({
105
- item,
116
+ item: rawItem,
106
117
  index: realIndex,
107
- animationValue,
118
+ relativeProgress,
108
119
  })
109
120
  }
110
121
  </ItemLayout>