@arco-design/mobile-react 2.25.3 → 2.26.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 (816) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.en-US.md +2 -2
  3. package/README.md +2 -2
  4. package/cjs/_helpers/hooks.js +124 -43
  5. package/cjs/_helpers/index.js +13 -2
  6. package/cjs/_helpers/react-dom.js +12 -0
  7. package/cjs/_helpers/render.js +12 -0
  8. package/cjs/action-sheet/index.d.ts +2 -2
  9. package/cjs/action-sheet/index.js +30 -10
  10. package/cjs/action-sheet/methods.js +2 -0
  11. package/cjs/action-sheet/style/css/index.js +2 -0
  12. package/cjs/action-sheet/style/index.js +2 -0
  13. package/cjs/avatar/group.js +24 -12
  14. package/cjs/avatar/index.js +77 -51
  15. package/cjs/avatar/style/css/index.js +2 -0
  16. package/cjs/avatar/style/index.js +2 -0
  17. package/cjs/badge/index.js +29 -18
  18. package/cjs/badge/style/css/index.js +1 -0
  19. package/cjs/badge/style/index.js +1 -0
  20. package/cjs/button/hooks.js +20 -15
  21. package/cjs/button/index.js +67 -46
  22. package/cjs/button/style/css/index.js +2 -0
  23. package/cjs/button/style/index.js +2 -0
  24. package/cjs/carousel/index.d.ts +6 -0
  25. package/cjs/carousel/index.js +342 -184
  26. package/cjs/carousel/style/css/index.css +50 -15
  27. package/cjs/carousel/style/css/index.js +1 -0
  28. package/cjs/carousel/style/index.js +1 -0
  29. package/cjs/carousel/style/index.less +19 -14
  30. package/cjs/cell/arrow.js +3 -0
  31. package/cjs/cell/cell.js +23 -14
  32. package/cjs/cell/demo/style/css/mobile.css +8 -0
  33. package/cjs/cell/demo/style/mobile.less +2 -2
  34. package/cjs/cell/group.js +21 -9
  35. package/cjs/cell/index.js +7 -1
  36. package/cjs/cell/style/css/index.css +16 -0
  37. package/cjs/cell/style/css/index.js +1 -0
  38. package/cjs/cell/style/index.js +1 -0
  39. package/cjs/cell/style/index.less +6 -4
  40. package/cjs/checkbox/checkbox.js +57 -31
  41. package/cjs/checkbox/group.js +38 -24
  42. package/cjs/checkbox/hooks/index.js +2 -0
  43. package/cjs/checkbox/hooks/useMergeProps.js +14 -7
  44. package/cjs/checkbox/index.js +8 -1
  45. package/cjs/checkbox/style/css/index.js +1 -0
  46. package/cjs/checkbox/style/index.js +1 -0
  47. package/cjs/checkbox/type.js +2 -0
  48. package/cjs/circle-progress/index.js +57 -37
  49. package/cjs/circle-progress/style/css/index.js +1 -0
  50. package/cjs/circle-progress/style/index.js +1 -0
  51. package/cjs/collapse/collapse.js +56 -27
  52. package/cjs/collapse/group.js +44 -20
  53. package/cjs/collapse/index.js +9 -0
  54. package/cjs/collapse/style/css/index.js +1 -0
  55. package/cjs/collapse/style/index.js +1 -0
  56. package/cjs/collapse/utils.js +7 -0
  57. package/cjs/context-provider/index.d.ts +6 -0
  58. package/cjs/context-provider/index.js +30 -11
  59. package/cjs/context-provider/style/css/index.js +1 -0
  60. package/cjs/context-provider/style/index.js +1 -0
  61. package/cjs/count-down/hooks.js +43 -24
  62. package/cjs/count-down/index.js +37 -29
  63. package/cjs/count-down/singleton.js +12 -2
  64. package/cjs/count-down/style/css/index.js +1 -0
  65. package/cjs/count-down/style/index.js +1 -0
  66. package/cjs/count-down/util.js +47 -33
  67. package/cjs/date-picker/helper.js +14 -7
  68. package/cjs/date-picker/index.js +106 -42
  69. package/cjs/date-picker/style/css/index.js +2 -0
  70. package/cjs/date-picker/style/index.js +2 -0
  71. package/cjs/dialog/index.d.ts +2 -2
  72. package/cjs/dialog/index.js +54 -28
  73. package/cjs/dialog/methods.js +22 -9
  74. package/cjs/dialog/style/css/index.js +2 -0
  75. package/cjs/dialog/style/index.js +2 -0
  76. package/cjs/divider/demo/style/css/mobile.css +7 -0
  77. package/cjs/divider/demo/style/mobile.less +12 -0
  78. package/cjs/divider/index.d.ts +49 -0
  79. package/cjs/divider/index.js +65 -0
  80. package/cjs/divider/style/css/index.css +69 -0
  81. package/cjs/divider/style/css/index.d.ts +2 -0
  82. package/cjs/divider/style/css/index.js +5 -0
  83. package/cjs/divider/style/index.d.ts +2 -0
  84. package/cjs/divider/style/index.js +5 -0
  85. package/cjs/divider/style/index.less +66 -0
  86. package/cjs/dropdown/dropdown.js +113 -74
  87. package/cjs/dropdown/index.js +8 -1
  88. package/cjs/dropdown/options.js +28 -12
  89. package/cjs/dropdown/style/css/index.js +1 -0
  90. package/cjs/dropdown/style/index.js +1 -0
  91. package/cjs/dropdown-menu/dropdown-menu.js +84 -49
  92. package/cjs/dropdown-menu/helper.js +27 -6
  93. package/cjs/dropdown-menu/index.js +6 -0
  94. package/cjs/dropdown-menu/style/css/index.js +2 -0
  95. package/cjs/dropdown-menu/style/index.js +2 -0
  96. package/cjs/ellipsis/components/js-ellipsis.js +72 -33
  97. package/cjs/ellipsis/components/native-ellipsis.js +15 -9
  98. package/cjs/ellipsis/index.js +32 -19
  99. package/cjs/ellipsis/style/css/index.js +1 -0
  100. package/cjs/ellipsis/style/index.js +1 -0
  101. package/cjs/ellipsis/type.d.ts +3 -3
  102. package/cjs/ellipsis/utils/dom.js +8 -0
  103. package/cjs/ellipsis/utils/is.js +5 -1
  104. package/cjs/form/form-item-context.js +5 -0
  105. package/cjs/form/form-item.js +124 -42
  106. package/cjs/form/index.js +35 -17
  107. package/cjs/form/style/css/index.js +1 -0
  108. package/cjs/form/style/index.js +1 -0
  109. package/cjs/form/type.js +3 -0
  110. package/cjs/form/useForm.js +76 -18
  111. package/cjs/form/utils.js +10 -3
  112. package/cjs/grid/index.js +41 -21
  113. package/cjs/grid/style/css/index.js +1 -0
  114. package/cjs/grid/style/index.js +1 -0
  115. package/cjs/icon/IconAdd/index.js +12 -5
  116. package/cjs/icon/IconArrowBack/index.js +12 -5
  117. package/cjs/icon/IconArrowDown/index.js +12 -5
  118. package/cjs/icon/IconArrowIn/index.js +12 -5
  119. package/cjs/icon/IconArrowUp/index.js +12 -5
  120. package/cjs/icon/IconCheck/index.js +12 -5
  121. package/cjs/icon/IconCheckBold/index.js +12 -5
  122. package/cjs/icon/IconCircleChecked/index.js +12 -5
  123. package/cjs/icon/IconCircleDisabled/index.js +12 -5
  124. package/cjs/icon/IconCircleUnchecked/index.js +12 -5
  125. package/cjs/icon/IconClear/index.js +12 -5
  126. package/cjs/icon/IconClose/index.js +12 -5
  127. package/cjs/icon/IconCloseBold/index.js +12 -5
  128. package/cjs/icon/IconDelete/index.js +12 -5
  129. package/cjs/icon/IconEdit/index.js +12 -5
  130. package/cjs/icon/IconErrorCircle/index.js +12 -5
  131. package/cjs/icon/IconEyeInvisible/index.js +12 -5
  132. package/cjs/icon/IconEyeVisible/index.js +12 -5
  133. package/cjs/icon/IconEyelashInvisible/index.js +12 -5
  134. package/cjs/icon/IconGift/index.js +12 -5
  135. package/cjs/icon/IconHeart/index.js +12 -5
  136. package/cjs/icon/IconHome/index.js +12 -5
  137. package/cjs/icon/IconLikeCircle/index.js +12 -5
  138. package/cjs/icon/IconMinus/index.js +12 -5
  139. package/cjs/icon/IconMore/index.js +12 -5
  140. package/cjs/icon/IconNotice/index.js +12 -5
  141. package/cjs/icon/IconNoticeOff/index.js +12 -5
  142. package/cjs/icon/IconPicture/index.js +12 -5
  143. package/cjs/icon/IconPlay/index.js +12 -5
  144. package/cjs/icon/IconQuestionCircle/index.js +12 -5
  145. package/cjs/icon/IconRefresh/index.js +12 -5
  146. package/cjs/icon/IconSad/index.js +12 -5
  147. package/cjs/icon/IconScan/index.js +12 -5
  148. package/cjs/icon/IconSearch/index.js +12 -5
  149. package/cjs/icon/IconSetting/index.js +12 -5
  150. package/cjs/icon/IconShop/index.js +12 -5
  151. package/cjs/icon/IconShopping/index.js +12 -5
  152. package/cjs/icon/IconSmileFill/index.js +12 -5
  153. package/cjs/icon/IconSound/index.js +12 -5
  154. package/cjs/icon/IconSquareChecked/index.js +12 -5
  155. package/cjs/icon/IconSquareDisabled/index.js +12 -5
  156. package/cjs/icon/IconSquareUnchecked/index.js +12 -5
  157. package/cjs/icon/IconStar/index.js +12 -5
  158. package/cjs/icon/IconStarFill/index.js +12 -5
  159. package/cjs/icon/IconStarHalf/index.js +12 -5
  160. package/cjs/icon/IconSubway/index.js +12 -5
  161. package/cjs/icon/IconSuccessCircle/index.js +12 -5
  162. package/cjs/icon/IconTriDown/index.js +12 -5
  163. package/cjs/icon/IconTriUp/index.js +12 -5
  164. package/cjs/icon/IconUpload/index.js +12 -5
  165. package/cjs/icon/IconUser/index.js +12 -5
  166. package/cjs/icon/IconUserFill/index.js +12 -5
  167. package/cjs/icon/IconWarnCircle/index.js +12 -5
  168. package/cjs/icon/IconWarnCircleFill/index.js +12 -5
  169. package/cjs/icon/index.js +111 -0
  170. package/cjs/image/index.js +92 -56
  171. package/cjs/image/style/css/index.css +1 -0
  172. package/cjs/image/style/css/index.js +2 -0
  173. package/cjs/image/style/index.js +2 -0
  174. package/cjs/image/style/index.less +1 -0
  175. package/cjs/image-picker/add-icon.js +3 -0
  176. package/cjs/image-picker/index.js +96 -52
  177. package/cjs/image-picker/style/css/index.js +2 -0
  178. package/cjs/image-picker/style/index.js +2 -0
  179. package/cjs/image-preview/index.d.ts +2 -2
  180. package/cjs/image-preview/index.js +239 -119
  181. package/cjs/image-preview/methods.js +18 -5
  182. package/cjs/image-preview/style/css/index.js +4 -0
  183. package/cjs/image-preview/style/index.js +4 -0
  184. package/cjs/index.d.ts +10 -9
  185. package/cjs/index.js +132 -19
  186. package/cjs/input/demo/style/css/mobile.css +5 -1
  187. package/cjs/input/demo/style/mobile.less +2 -2
  188. package/cjs/input/hooks.js +104 -42
  189. package/cjs/input/index.js +40 -26
  190. package/cjs/input/props.d.ts +6 -0
  191. package/cjs/input/style/css/index.css +9 -0
  192. package/cjs/input/style/css/index.js +1 -0
  193. package/cjs/input/style/index.js +1 -0
  194. package/cjs/input/style/index.less +2 -2
  195. package/cjs/load-more/index.js +56 -29
  196. package/cjs/load-more/style/css/index.js +1 -0
  197. package/cjs/load-more/style/index.js +1 -0
  198. package/cjs/loading/index.js +48 -19
  199. package/cjs/loading/style/css/index.js +1 -0
  200. package/cjs/loading/style/index.js +1 -0
  201. package/cjs/masking/index.d.ts +2 -2
  202. package/cjs/masking/index.js +79 -46
  203. package/cjs/masking/methods.js +19 -4
  204. package/cjs/masking/style/css/index.js +2 -0
  205. package/cjs/masking/style/index.js +2 -0
  206. package/cjs/nav-bar/back-icon.js +5 -1
  207. package/cjs/nav-bar/index.js +61 -37
  208. package/cjs/nav-bar/style/css/index.js +1 -0
  209. package/cjs/nav-bar/style/index.js +1 -0
  210. package/cjs/notice-bar/index.js +61 -33
  211. package/cjs/notice-bar/style/css/index.css +33 -0
  212. package/cjs/notice-bar/style/css/index.js +1 -0
  213. package/cjs/notice-bar/style/index.js +1 -0
  214. package/cjs/notice-bar/style/index.less +16 -3
  215. package/cjs/notify/index.d.ts +8 -8
  216. package/cjs/notify/index.js +49 -20
  217. package/cjs/notify/methods.js +17 -2
  218. package/cjs/notify/style/css/index.js +1 -0
  219. package/cjs/notify/style/index.js +1 -0
  220. package/cjs/pagination/arrow.js +3 -0
  221. package/cjs/pagination/index.js +58 -27
  222. package/cjs/pagination/style/css/index.js +1 -0
  223. package/cjs/pagination/style/index.js +1 -0
  224. package/cjs/picker/index.js +81 -40
  225. package/cjs/picker/style/css/index.js +3 -0
  226. package/cjs/picker/style/index.js +3 -0
  227. package/cjs/picker-view/components/cascader.js +31 -14
  228. package/cjs/picker-view/components/multi-picker.js +20 -6
  229. package/cjs/picker-view/components/picker-cell.js +97 -45
  230. package/cjs/picker-view/index.js +71 -25
  231. package/cjs/picker-view/style/css/index.js +1 -0
  232. package/cjs/picker-view/style/index.js +1 -0
  233. package/cjs/popover/hooks/index.js +4 -0
  234. package/cjs/popover/hooks/useEvent.js +49 -25
  235. package/cjs/popover/hooks/usePosition.js +151 -94
  236. package/cjs/popover/index.js +8 -1
  237. package/cjs/popover/menu.js +51 -32
  238. package/cjs/popover/popover-inner.js +47 -30
  239. package/cjs/popover/popover.js +101 -69
  240. package/cjs/popover/style/css/index.js +2 -0
  241. package/cjs/popover/style/index.js +2 -0
  242. package/cjs/popup/index.d.ts +2 -2
  243. package/cjs/popup/index.js +39 -22
  244. package/cjs/popup/methods.js +2 -0
  245. package/cjs/popup/style/css/index.js +2 -0
  246. package/cjs/popup/style/index.js +2 -0
  247. package/cjs/popup-swiper/index.d.ts +2 -2
  248. package/cjs/popup-swiper/index.js +80 -38
  249. package/cjs/popup-swiper/methods.js +2 -0
  250. package/cjs/popup-swiper/style/css/index.js +2 -0
  251. package/cjs/popup-swiper/style/index.js +2 -0
  252. package/cjs/portal/index.js +8 -3
  253. package/cjs/portal/style/css/index.js +1 -0
  254. package/cjs/portal/style/index.js +1 -0
  255. package/cjs/progress/index.js +44 -27
  256. package/cjs/progress/style/css/index.js +1 -0
  257. package/cjs/progress/style/index.js +1 -0
  258. package/cjs/pull-refresh/android-pull-refresh.js +100 -58
  259. package/cjs/pull-refresh/hooks.js +32 -11
  260. package/cjs/pull-refresh/index.js +14 -3
  261. package/cjs/pull-refresh/ios-pull-refresh.js +80 -53
  262. package/cjs/pull-refresh/model.js +1 -0
  263. package/cjs/pull-refresh/style/css/index.js +2 -0
  264. package/cjs/pull-refresh/style/index.js +2 -0
  265. package/cjs/radio/group.js +34 -20
  266. package/cjs/radio/index.js +8 -1
  267. package/cjs/radio/radio.js +10 -0
  268. package/cjs/radio/style/css/index.js +1 -0
  269. package/cjs/radio/style/index.js +1 -0
  270. package/cjs/rate/index.js +50 -24
  271. package/cjs/rate/style/css/index.js +1 -0
  272. package/cjs/rate/style/index.js +1 -0
  273. package/cjs/search-bar/association.js +32 -14
  274. package/cjs/search-bar/cancel-button.js +16 -8
  275. package/cjs/search-bar/highlight.js +25 -14
  276. package/cjs/search-bar/index.js +97 -77
  277. package/cjs/search-bar/style/css/index.css +1 -0
  278. package/cjs/search-bar/style/css/index.js +1 -0
  279. package/cjs/search-bar/style/index.js +1 -0
  280. package/cjs/search-bar/style/index.less +1 -0
  281. package/cjs/show-monitor/index.js +93 -34
  282. package/cjs/show-monitor/style/css/index.js +1 -0
  283. package/cjs/show-monitor/style/index.js +1 -0
  284. package/cjs/slider/hooks/index.js +13 -0
  285. package/cjs/slider/hooks/useSliderEvents.js +55 -26
  286. package/cjs/slider/hooks/useSliderIcon.js +20 -6
  287. package/cjs/slider/hooks/useSliderInit.js +52 -32
  288. package/cjs/slider/hooks/useSliderStyle.js +24 -12
  289. package/cjs/slider/index.js +72 -46
  290. package/cjs/slider/marks.js +26 -12
  291. package/cjs/slider/popover.js +13 -4
  292. package/cjs/slider/style/css/index.js +2 -0
  293. package/cjs/slider/style/index.js +2 -0
  294. package/cjs/slider/thumb.js +23 -8
  295. package/cjs/stepper/hooks/useButtonClick.js +28 -19
  296. package/cjs/stepper/hooks/useInputEvent.js +18 -9
  297. package/cjs/stepper/hooks/useValue.js +14 -9
  298. package/cjs/stepper/index.js +96 -82
  299. package/cjs/stepper/style/css/index.js +1 -0
  300. package/cjs/stepper/style/index.js +1 -0
  301. package/cjs/steps/index.js +40 -22
  302. package/cjs/steps/step.js +27 -10
  303. package/cjs/steps/style/css/index.js +1 -0
  304. package/cjs/steps/style/index.js +1 -0
  305. package/cjs/sticky/index.js +65 -36
  306. package/cjs/sticky/style/css/index.js +1 -0
  307. package/cjs/sticky/style/index.js +1 -0
  308. package/cjs/style.d.ts +9 -8
  309. package/cjs/style.js +64 -8
  310. package/cjs/swipe-action/index.js +92 -40
  311. package/cjs/swipe-action/item.js +17 -9
  312. package/cjs/swipe-action/style/css/index.js +1 -0
  313. package/cjs/swipe-action/style/index.js +1 -0
  314. package/cjs/swipe-load/index.js +83 -55
  315. package/cjs/swipe-load/style/css/index.js +1 -0
  316. package/cjs/swipe-load/style/index.js +1 -0
  317. package/cjs/switch/index.js +47 -27
  318. package/cjs/switch/style/css/index.js +1 -0
  319. package/cjs/switch/style/index.js +1 -0
  320. package/cjs/tab-bar/index.js +7 -0
  321. package/cjs/tab-bar/item.js +24 -6
  322. package/cjs/tab-bar/style/css/index.js +1 -0
  323. package/cjs/tab-bar/style/index.js +1 -0
  324. package/cjs/tab-bar/tab-bar.js +31 -15
  325. package/cjs/tabs/index.js +195 -129
  326. package/cjs/tabs/style/css/index.js +1 -0
  327. package/cjs/tabs/style/index.js +1 -0
  328. package/cjs/tabs/tab-cell-underline.js +111 -38
  329. package/cjs/tabs/tab-cell.js +124 -70
  330. package/cjs/tabs/tab-pane.js +94 -49
  331. package/cjs/tabs/type.d.ts +18 -2
  332. package/cjs/tag/index.js +8 -1
  333. package/cjs/tag/list.js +26 -11
  334. package/cjs/tag/style/css/index.js +1 -0
  335. package/cjs/tag/style/index.js +1 -0
  336. package/cjs/tag/tag.js +32 -20
  337. package/cjs/textarea/index.js +56 -35
  338. package/cjs/textarea/style/css/index.js +2 -0
  339. package/cjs/textarea/style/index.js +2 -0
  340. package/cjs/toast/index.d.ts +12 -12
  341. package/cjs/toast/index.js +61 -26
  342. package/cjs/toast/methods.js +16 -2
  343. package/cjs/toast/style/css/index.js +3 -0
  344. package/cjs/toast/style/index.js +3 -0
  345. package/cjs/transition/index.js +18 -10
  346. package/cjs/transition/style/css/index.js +1 -0
  347. package/cjs/transition/style/index.js +1 -0
  348. package/dist/index.js +21588 -19198
  349. package/dist/index.min.js +4 -4
  350. package/dist/style.css +3766 -3629
  351. package/dist/style.min.css +1 -1
  352. package/esm/_helpers/hooks.js +103 -42
  353. package/esm/_helpers/index.js +3 -2
  354. package/esm/_helpers/react-dom.js +10 -0
  355. package/esm/_helpers/render.js +7 -0
  356. package/esm/action-sheet/index.d.ts +2 -2
  357. package/esm/action-sheet/index.js +16 -10
  358. package/esm/avatar/group.js +16 -12
  359. package/esm/avatar/index.js +62 -51
  360. package/esm/badge/index.js +22 -18
  361. package/esm/button/hooks.js +18 -15
  362. package/esm/button/index.js +57 -46
  363. package/esm/carousel/index.d.ts +6 -0
  364. package/esm/carousel/index.js +336 -186
  365. package/esm/carousel/style/css/index.css +50 -15
  366. package/esm/carousel/style/index.less +19 -14
  367. package/esm/cell/cell.js +14 -14
  368. package/esm/cell/demo/style/css/mobile.css +8 -0
  369. package/esm/cell/demo/style/mobile.less +2 -2
  370. package/esm/cell/group.js +11 -9
  371. package/esm/cell/index.js +1 -1
  372. package/esm/cell/style/css/index.css +16 -0
  373. package/esm/cell/style/index.less +6 -4
  374. package/esm/checkbox/checkbox.js +42 -31
  375. package/esm/checkbox/group.js +28 -24
  376. package/esm/checkbox/hooks/useMergeProps.js +9 -7
  377. package/esm/checkbox/index.js +2 -2
  378. package/esm/checkbox/type.js +1 -0
  379. package/esm/circle-progress/index.js +49 -37
  380. package/esm/collapse/collapse.js +46 -27
  381. package/esm/collapse/group.js +34 -20
  382. package/esm/collapse/index.js +1 -1
  383. package/esm/collapse/utils.js +1 -0
  384. package/esm/context-provider/index.d.ts +6 -0
  385. package/esm/context-provider/index.js +20 -11
  386. package/esm/count-down/hooks.js +37 -24
  387. package/esm/count-down/index.js +29 -30
  388. package/esm/count-down/singleton.js +5 -2
  389. package/esm/count-down/util.js +42 -33
  390. package/esm/date-picker/helper.js +9 -7
  391. package/esm/date-picker/index.js +93 -42
  392. package/esm/dialog/index.d.ts +2 -2
  393. package/esm/dialog/index.js +39 -28
  394. package/esm/dialog/methods.js +11 -9
  395. package/esm/divider/demo/style/css/mobile.css +7 -0
  396. package/esm/divider/demo/style/mobile.less +12 -0
  397. package/esm/divider/index.d.ts +49 -0
  398. package/esm/divider/index.js +49 -0
  399. package/esm/divider/style/css/index.css +69 -0
  400. package/esm/divider/style/css/index.d.ts +2 -0
  401. package/esm/divider/style/css/index.js +2 -0
  402. package/esm/divider/style/index.d.ts +2 -0
  403. package/esm/divider/style/index.js +2 -0
  404. package/esm/divider/style/index.less +66 -0
  405. package/esm/dropdown/dropdown.js +102 -74
  406. package/esm/dropdown/index.js +1 -1
  407. package/esm/dropdown/options.js +20 -12
  408. package/esm/dropdown-menu/dropdown-menu.js +74 -49
  409. package/esm/dropdown-menu/helper.js +16 -6
  410. package/esm/dropdown-menu/index.js +1 -1
  411. package/esm/ellipsis/components/js-ellipsis.js +63 -33
  412. package/esm/ellipsis/components/native-ellipsis.js +11 -9
  413. package/esm/ellipsis/index.js +21 -20
  414. package/esm/ellipsis/type.d.ts +3 -3
  415. package/esm/ellipsis/utils/dom.js +7 -0
  416. package/esm/ellipsis/utils/is.js +1 -1
  417. package/esm/form/form-item.js +110 -42
  418. package/esm/form/index.js +20 -17
  419. package/esm/form/type.js +3 -0
  420. package/esm/form/useForm.js +71 -17
  421. package/esm/form/utils.js +6 -3
  422. package/esm/grid/index.js +34 -21
  423. package/esm/icon/IconAdd/index.js +6 -5
  424. package/esm/icon/IconArrowBack/index.js +6 -5
  425. package/esm/icon/IconArrowDown/index.js +6 -5
  426. package/esm/icon/IconArrowIn/index.js +6 -5
  427. package/esm/icon/IconArrowUp/index.js +6 -5
  428. package/esm/icon/IconCheck/index.js +6 -5
  429. package/esm/icon/IconCheckBold/index.js +6 -5
  430. package/esm/icon/IconCircleChecked/index.js +6 -5
  431. package/esm/icon/IconCircleDisabled/index.js +6 -5
  432. package/esm/icon/IconCircleUnchecked/index.js +6 -5
  433. package/esm/icon/IconClear/index.js +6 -5
  434. package/esm/icon/IconClose/index.js +6 -5
  435. package/esm/icon/IconCloseBold/index.js +6 -5
  436. package/esm/icon/IconDelete/index.js +6 -5
  437. package/esm/icon/IconEdit/index.js +6 -5
  438. package/esm/icon/IconErrorCircle/index.js +6 -5
  439. package/esm/icon/IconEyeInvisible/index.js +6 -5
  440. package/esm/icon/IconEyeVisible/index.js +6 -5
  441. package/esm/icon/IconEyelashInvisible/index.js +6 -5
  442. package/esm/icon/IconGift/index.js +6 -5
  443. package/esm/icon/IconHeart/index.js +6 -5
  444. package/esm/icon/IconHome/index.js +6 -5
  445. package/esm/icon/IconLikeCircle/index.js +6 -5
  446. package/esm/icon/IconMinus/index.js +6 -5
  447. package/esm/icon/IconMore/index.js +6 -5
  448. package/esm/icon/IconNotice/index.js +6 -5
  449. package/esm/icon/IconNoticeOff/index.js +6 -5
  450. package/esm/icon/IconPicture/index.js +6 -5
  451. package/esm/icon/IconPlay/index.js +6 -5
  452. package/esm/icon/IconQuestionCircle/index.js +6 -5
  453. package/esm/icon/IconRefresh/index.js +6 -5
  454. package/esm/icon/IconSad/index.js +6 -5
  455. package/esm/icon/IconScan/index.js +6 -5
  456. package/esm/icon/IconSearch/index.js +6 -5
  457. package/esm/icon/IconSetting/index.js +6 -5
  458. package/esm/icon/IconShop/index.js +6 -5
  459. package/esm/icon/IconShopping/index.js +6 -5
  460. package/esm/icon/IconSmileFill/index.js +6 -5
  461. package/esm/icon/IconSound/index.js +6 -5
  462. package/esm/icon/IconSquareChecked/index.js +6 -5
  463. package/esm/icon/IconSquareDisabled/index.js +6 -5
  464. package/esm/icon/IconSquareUnchecked/index.js +6 -5
  465. package/esm/icon/IconStar/index.js +6 -5
  466. package/esm/icon/IconStarFill/index.js +6 -5
  467. package/esm/icon/IconStarHalf/index.js +6 -5
  468. package/esm/icon/IconSubway/index.js +6 -5
  469. package/esm/icon/IconSuccessCircle/index.js +6 -5
  470. package/esm/icon/IconTriDown/index.js +6 -5
  471. package/esm/icon/IconTriUp/index.js +6 -5
  472. package/esm/icon/IconUpload/index.js +6 -5
  473. package/esm/icon/IconUser/index.js +6 -5
  474. package/esm/icon/IconUserFill/index.js +6 -5
  475. package/esm/icon/IconWarnCircle/index.js +6 -5
  476. package/esm/icon/IconWarnCircleFill/index.js +6 -5
  477. package/esm/image/index.js +84 -57
  478. package/esm/image/style/css/index.css +1 -0
  479. package/esm/image/style/index.less +1 -0
  480. package/esm/image-picker/index.js +80 -52
  481. package/esm/image-preview/index.d.ts +2 -2
  482. package/esm/image-preview/index.js +217 -119
  483. package/esm/image-preview/methods.js +14 -4
  484. package/esm/index.d.ts +10 -9
  485. package/esm/index.js +10 -9
  486. package/esm/input/demo/style/css/mobile.css +5 -1
  487. package/esm/input/demo/style/mobile.less +2 -2
  488. package/esm/input/hooks.js +96 -42
  489. package/esm/input/index.js +30 -26
  490. package/esm/input/props.d.ts +6 -0
  491. package/esm/input/style/css/index.css +9 -0
  492. package/esm/input/style/index.less +2 -2
  493. package/esm/load-more/index.js +48 -29
  494. package/esm/loading/index.js +40 -19
  495. package/esm/masking/index.d.ts +2 -2
  496. package/esm/masking/index.js +64 -46
  497. package/esm/masking/methods.js +15 -4
  498. package/esm/nav-bar/back-icon.js +3 -1
  499. package/esm/nav-bar/index.js +52 -37
  500. package/esm/notice-bar/index.js +56 -35
  501. package/esm/notice-bar/style/css/index.css +33 -0
  502. package/esm/notice-bar/style/index.less +16 -3
  503. package/esm/notify/index.d.ts +8 -8
  504. package/esm/notify/index.js +33 -20
  505. package/esm/notify/methods.js +13 -2
  506. package/esm/pagination/index.js +50 -27
  507. package/esm/picker/index.js +66 -40
  508. package/esm/picker-view/components/cascader.js +23 -14
  509. package/esm/picker-view/components/multi-picker.js +16 -6
  510. package/esm/picker-view/components/picker-cell.js +89 -45
  511. package/esm/picker-view/index.js +54 -25
  512. package/esm/popover/hooks/useEvent.js +41 -26
  513. package/esm/popover/hooks/usePosition.js +144 -94
  514. package/esm/popover/index.js +2 -2
  515. package/esm/popover/menu.js +41 -32
  516. package/esm/popover/popover-inner.js +38 -30
  517. package/esm/popover/popover.js +90 -69
  518. package/esm/popup/index.d.ts +2 -2
  519. package/esm/popup/index.js +25 -22
  520. package/esm/popup-swiper/index.d.ts +2 -2
  521. package/esm/popup-swiper/index.js +64 -38
  522. package/esm/portal/index.js +5 -3
  523. package/esm/progress/index.js +36 -27
  524. package/esm/pull-refresh/android-pull-refresh.js +90 -58
  525. package/esm/pull-refresh/hooks.js +23 -11
  526. package/esm/pull-refresh/index.js +5 -3
  527. package/esm/pull-refresh/ios-pull-refresh.js +68 -53
  528. package/esm/pull-refresh/model.js +1 -0
  529. package/esm/radio/group.js +24 -20
  530. package/esm/radio/index.js +2 -2
  531. package/esm/rate/index.js +39 -24
  532. package/esm/search-bar/association.js +27 -14
  533. package/esm/search-bar/cancel-button.js +11 -8
  534. package/esm/search-bar/highlight.js +20 -14
  535. package/esm/search-bar/index.js +86 -77
  536. package/esm/search-bar/style/css/index.css +1 -0
  537. package/esm/search-bar/style/index.less +1 -0
  538. package/esm/show-monitor/index.js +85 -34
  539. package/esm/slider/hooks/useSliderEvents.js +51 -26
  540. package/esm/slider/hooks/useSliderIcon.js +13 -6
  541. package/esm/slider/hooks/useSliderInit.js +46 -32
  542. package/esm/slider/hooks/useSliderStyle.js +20 -12
  543. package/esm/slider/index.js +62 -46
  544. package/esm/slider/marks.js +18 -12
  545. package/esm/slider/popover.js +6 -4
  546. package/esm/slider/thumb.js +15 -8
  547. package/esm/stepper/hooks/useButtonClick.js +27 -19
  548. package/esm/stepper/hooks/useInputEvent.js +16 -9
  549. package/esm/stepper/hooks/useValue.js +12 -9
  550. package/esm/stepper/index.js +82 -82
  551. package/esm/steps/index.js +27 -22
  552. package/esm/steps/step.js +19 -10
  553. package/esm/sticky/index.js +56 -36
  554. package/esm/style.d.ts +9 -8
  555. package/esm/style.js +9 -8
  556. package/esm/swipe-action/index.js +80 -40
  557. package/esm/swipe-action/item.js +12 -9
  558. package/esm/swipe-load/index.js +75 -56
  559. package/esm/switch/index.js +39 -27
  560. package/esm/tab-bar/index.js +1 -0
  561. package/esm/tab-bar/item.js +13 -6
  562. package/esm/tab-bar/tab-bar.js +21 -15
  563. package/esm/tabs/index.js +183 -130
  564. package/esm/tabs/tab-cell-underline.js +103 -38
  565. package/esm/tabs/tab-cell.js +114 -70
  566. package/esm/tabs/tab-pane.js +85 -49
  567. package/esm/tabs/type.d.ts +18 -2
  568. package/esm/tag/index.js +2 -2
  569. package/esm/tag/list.js +16 -11
  570. package/esm/tag/tag.js +22 -20
  571. package/esm/textarea/index.js +46 -35
  572. package/esm/toast/index.d.ts +12 -12
  573. package/esm/toast/index.js +42 -26
  574. package/esm/toast/methods.js +12 -2
  575. package/esm/transition/index.js +12 -10
  576. package/package.json +3 -3
  577. package/tokens/app/arcodesign/default/css-variables.less +22 -0
  578. package/tokens/app/arcodesign/default/index.d.ts +22 -0
  579. package/tokens/app/arcodesign/default/index.js +25 -1
  580. package/tokens/app/arcodesign/default/index.json +262 -0
  581. package/tokens/app/arcodesign/default/index.less +22 -0
  582. package/tokens/mixin/index.less +19 -1
  583. package/umd/_helpers/hooks.js +121 -43
  584. package/umd/_helpers/index.js +6 -2
  585. package/umd/_helpers/react-dom.js +11 -0
  586. package/umd/_helpers/render.js +9 -0
  587. package/umd/action-sheet/index.d.ts +2 -2
  588. package/umd/action-sheet/index.js +22 -10
  589. package/umd/action-sheet/methods.js +1 -0
  590. package/umd/avatar/group.js +20 -12
  591. package/umd/avatar/index.js +68 -51
  592. package/umd/badge/index.js +25 -18
  593. package/umd/button/hooks.js +19 -15
  594. package/umd/button/index.js +60 -46
  595. package/umd/carousel/index.d.ts +6 -0
  596. package/umd/carousel/index.js +337 -184
  597. package/umd/carousel/style/css/index.css +50 -15
  598. package/umd/carousel/style/index.less +19 -14
  599. package/umd/cell/arrow.js +2 -0
  600. package/umd/cell/cell.js +18 -14
  601. package/umd/cell/demo/style/css/mobile.css +8 -0
  602. package/umd/cell/demo/style/mobile.less +2 -2
  603. package/umd/cell/group.js +17 -9
  604. package/umd/cell/index.js +2 -1
  605. package/umd/cell/style/css/index.css +16 -0
  606. package/umd/cell/style/index.less +6 -4
  607. package/umd/checkbox/checkbox.js +45 -31
  608. package/umd/checkbox/group.js +34 -24
  609. package/umd/checkbox/hooks/useMergeProps.js +12 -7
  610. package/umd/checkbox/index.js +3 -1
  611. package/umd/checkbox/type.js +2 -0
  612. package/umd/circle-progress/index.js +52 -37
  613. package/umd/collapse/collapse.js +50 -27
  614. package/umd/collapse/group.js +38 -20
  615. package/umd/collapse/index.js +3 -0
  616. package/umd/collapse/utils.js +5 -0
  617. package/umd/context-provider/index.d.ts +6 -0
  618. package/umd/context-provider/index.js +25 -11
  619. package/umd/count-down/hooks.js +39 -24
  620. package/umd/count-down/index.js +31 -29
  621. package/umd/count-down/singleton.js +10 -2
  622. package/umd/count-down/util.js +47 -33
  623. package/umd/date-picker/helper.js +13 -7
  624. package/umd/date-picker/index.js +97 -42
  625. package/umd/dialog/index.d.ts +2 -2
  626. package/umd/dialog/index.js +44 -28
  627. package/umd/dialog/methods.js +18 -9
  628. package/umd/divider/demo/style/css/mobile.css +7 -0
  629. package/umd/divider/demo/style/mobile.less +12 -0
  630. package/umd/divider/index.d.ts +49 -0
  631. package/umd/divider/index.js +71 -0
  632. package/umd/divider/style/css/index.css +69 -0
  633. package/umd/divider/style/css/index.d.ts +2 -0
  634. package/umd/divider/style/css/index.js +15 -0
  635. package/umd/divider/style/index.d.ts +2 -0
  636. package/umd/divider/style/index.js +15 -0
  637. package/umd/divider/style/index.less +66 -0
  638. package/umd/dropdown/dropdown.js +106 -74
  639. package/umd/dropdown/index.js +3 -1
  640. package/umd/dropdown/options.js +24 -12
  641. package/umd/dropdown-menu/dropdown-menu.js +78 -49
  642. package/umd/dropdown-menu/helper.js +25 -6
  643. package/umd/dropdown-menu/index.js +2 -0
  644. package/umd/ellipsis/components/js-ellipsis.js +69 -33
  645. package/umd/ellipsis/components/native-ellipsis.js +13 -9
  646. package/umd/ellipsis/index.js +24 -19
  647. package/umd/ellipsis/type.d.ts +3 -3
  648. package/umd/ellipsis/utils/dom.js +8 -0
  649. package/umd/ellipsis/utils/is.js +5 -1
  650. package/umd/form/form-item-context.js +3 -0
  651. package/umd/form/form-item.js +114 -42
  652. package/umd/form/index.js +25 -17
  653. package/umd/form/type.js +3 -0
  654. package/umd/form/useForm.js +72 -18
  655. package/umd/form/utils.js +10 -3
  656. package/umd/grid/index.js +37 -21
  657. package/umd/icon/IconAdd/index.js +7 -5
  658. package/umd/icon/IconArrowBack/index.js +7 -5
  659. package/umd/icon/IconArrowDown/index.js +7 -5
  660. package/umd/icon/IconArrowIn/index.js +7 -5
  661. package/umd/icon/IconArrowUp/index.js +7 -5
  662. package/umd/icon/IconCheck/index.js +7 -5
  663. package/umd/icon/IconCheckBold/index.js +7 -5
  664. package/umd/icon/IconCircleChecked/index.js +7 -5
  665. package/umd/icon/IconCircleDisabled/index.js +7 -5
  666. package/umd/icon/IconCircleUnchecked/index.js +7 -5
  667. package/umd/icon/IconClear/index.js +7 -5
  668. package/umd/icon/IconClose/index.js +7 -5
  669. package/umd/icon/IconCloseBold/index.js +7 -5
  670. package/umd/icon/IconDelete/index.js +7 -5
  671. package/umd/icon/IconEdit/index.js +7 -5
  672. package/umd/icon/IconErrorCircle/index.js +7 -5
  673. package/umd/icon/IconEyeInvisible/index.js +7 -5
  674. package/umd/icon/IconEyeVisible/index.js +7 -5
  675. package/umd/icon/IconEyelashInvisible/index.js +7 -5
  676. package/umd/icon/IconGift/index.js +7 -5
  677. package/umd/icon/IconHeart/index.js +7 -5
  678. package/umd/icon/IconHome/index.js +7 -5
  679. package/umd/icon/IconLikeCircle/index.js +7 -5
  680. package/umd/icon/IconMinus/index.js +7 -5
  681. package/umd/icon/IconMore/index.js +7 -5
  682. package/umd/icon/IconNotice/index.js +7 -5
  683. package/umd/icon/IconNoticeOff/index.js +7 -5
  684. package/umd/icon/IconPicture/index.js +7 -5
  685. package/umd/icon/IconPlay/index.js +7 -5
  686. package/umd/icon/IconQuestionCircle/index.js +7 -5
  687. package/umd/icon/IconRefresh/index.js +7 -5
  688. package/umd/icon/IconSad/index.js +7 -5
  689. package/umd/icon/IconScan/index.js +7 -5
  690. package/umd/icon/IconSearch/index.js +7 -5
  691. package/umd/icon/IconSetting/index.js +7 -5
  692. package/umd/icon/IconShop/index.js +7 -5
  693. package/umd/icon/IconShopping/index.js +7 -5
  694. package/umd/icon/IconSmileFill/index.js +7 -5
  695. package/umd/icon/IconSound/index.js +7 -5
  696. package/umd/icon/IconSquareChecked/index.js +7 -5
  697. package/umd/icon/IconSquareDisabled/index.js +7 -5
  698. package/umd/icon/IconSquareUnchecked/index.js +7 -5
  699. package/umd/icon/IconStar/index.js +7 -5
  700. package/umd/icon/IconStarFill/index.js +7 -5
  701. package/umd/icon/IconStarHalf/index.js +7 -5
  702. package/umd/icon/IconSubway/index.js +7 -5
  703. package/umd/icon/IconSuccessCircle/index.js +7 -5
  704. package/umd/icon/IconTriDown/index.js +7 -5
  705. package/umd/icon/IconTriUp/index.js +7 -5
  706. package/umd/icon/IconUpload/index.js +7 -5
  707. package/umd/icon/IconUser/index.js +7 -5
  708. package/umd/icon/IconUserFill/index.js +7 -5
  709. package/umd/icon/IconWarnCircle/index.js +7 -5
  710. package/umd/icon/IconWarnCircleFill/index.js +7 -5
  711. package/umd/icon/index.js +1 -0
  712. package/umd/image/index.js +86 -56
  713. package/umd/image/style/css/index.css +1 -0
  714. package/umd/image/style/index.less +1 -0
  715. package/umd/image-picker/add-icon.js +2 -0
  716. package/umd/image-picker/index.js +85 -52
  717. package/umd/image-preview/index.d.ts +2 -2
  718. package/umd/image-preview/index.js +224 -119
  719. package/umd/image-preview/methods.js +15 -5
  720. package/umd/index.d.ts +10 -9
  721. package/umd/index.js +26 -23
  722. package/umd/input/demo/style/css/mobile.css +5 -1
  723. package/umd/input/demo/style/mobile.less +2 -2
  724. package/umd/input/hooks.js +100 -42
  725. package/umd/input/index.js +35 -26
  726. package/umd/input/props.d.ts +6 -0
  727. package/umd/input/style/css/index.css +9 -0
  728. package/umd/input/style/index.less +2 -2
  729. package/umd/load-more/index.js +51 -29
  730. package/umd/loading/index.js +43 -19
  731. package/umd/masking/index.d.ts +2 -2
  732. package/umd/masking/index.js +71 -46
  733. package/umd/masking/methods.js +16 -4
  734. package/umd/nav-bar/back-icon.js +4 -1
  735. package/umd/nav-bar/index.js +55 -37
  736. package/umd/notice-bar/index.js +57 -33
  737. package/umd/notice-bar/style/css/index.css +33 -0
  738. package/umd/notice-bar/style/index.less +16 -3
  739. package/umd/notify/index.d.ts +8 -8
  740. package/umd/notify/index.js +40 -20
  741. package/umd/notify/methods.js +14 -2
  742. package/umd/pagination/arrow.js +2 -0
  743. package/umd/pagination/index.js +53 -27
  744. package/umd/picker/index.js +70 -40
  745. package/umd/picker-view/components/cascader.js +27 -14
  746. package/umd/picker-view/components/multi-picker.js +19 -6
  747. package/umd/picker-view/components/picker-cell.js +93 -45
  748. package/umd/picker-view/index.js +58 -25
  749. package/umd/popover/hooks/useEvent.js +44 -25
  750. package/umd/popover/hooks/usePosition.js +145 -94
  751. package/umd/popover/index.js +3 -1
  752. package/umd/popover/menu.js +45 -32
  753. package/umd/popover/popover-inner.js +42 -30
  754. package/umd/popover/popover.js +94 -69
  755. package/umd/popup/index.d.ts +2 -2
  756. package/umd/popup/index.js +31 -22
  757. package/umd/popup/methods.js +1 -0
  758. package/umd/popup-swiper/index.d.ts +2 -2
  759. package/umd/popup-swiper/index.js +71 -38
  760. package/umd/popup-swiper/methods.js +1 -0
  761. package/umd/portal/index.js +6 -3
  762. package/umd/progress/index.js +39 -27
  763. package/umd/pull-refresh/android-pull-refresh.js +93 -58
  764. package/umd/pull-refresh/hooks.js +29 -11
  765. package/umd/pull-refresh/index.js +7 -3
  766. package/umd/pull-refresh/ios-pull-refresh.js +72 -53
  767. package/umd/pull-refresh/model.js +1 -0
  768. package/umd/radio/group.js +30 -20
  769. package/umd/radio/index.js +3 -1
  770. package/umd/radio/radio.js +5 -0
  771. package/umd/rate/index.js +44 -24
  772. package/umd/search-bar/association.js +29 -14
  773. package/umd/search-bar/cancel-button.js +14 -8
  774. package/umd/search-bar/highlight.js +21 -14
  775. package/umd/search-bar/index.js +87 -77
  776. package/umd/search-bar/style/css/index.css +1 -0
  777. package/umd/search-bar/style/index.less +1 -0
  778. package/umd/show-monitor/index.js +89 -34
  779. package/umd/slider/hooks/index.js +4 -0
  780. package/umd/slider/hooks/useSliderEvents.js +52 -26
  781. package/umd/slider/hooks/useSliderIcon.js +17 -6
  782. package/umd/slider/hooks/useSliderInit.js +50 -32
  783. package/umd/slider/hooks/useSliderStyle.js +22 -12
  784. package/umd/slider/index.js +65 -46
  785. package/umd/slider/marks.js +21 -12
  786. package/umd/slider/popover.js +10 -4
  787. package/umd/slider/thumb.js +18 -8
  788. package/umd/stepper/hooks/useButtonClick.js +27 -19
  789. package/umd/stepper/hooks/useInputEvent.js +17 -9
  790. package/umd/stepper/hooks/useValue.js +13 -9
  791. package/umd/stepper/index.js +87 -82
  792. package/umd/steps/index.js +32 -22
  793. package/umd/steps/step.js +22 -10
  794. package/umd/sticky/index.js +59 -36
  795. package/umd/style.d.ts +9 -8
  796. package/umd/style.js +4 -4
  797. package/umd/swipe-action/index.js +84 -40
  798. package/umd/swipe-action/item.js +14 -9
  799. package/umd/swipe-load/index.js +77 -55
  800. package/umd/switch/index.js +43 -27
  801. package/umd/tab-bar/index.js +2 -0
  802. package/umd/tab-bar/item.js +19 -6
  803. package/umd/tab-bar/tab-bar.js +26 -15
  804. package/umd/tabs/index.js +186 -129
  805. package/umd/tabs/tab-cell-underline.js +107 -38
  806. package/umd/tabs/tab-cell.js +119 -70
  807. package/umd/tabs/tab-pane.js +89 -49
  808. package/umd/tabs/type.d.ts +18 -2
  809. package/umd/tag/index.js +3 -1
  810. package/umd/tag/list.js +20 -11
  811. package/umd/tag/tag.js +26 -20
  812. package/umd/textarea/index.js +51 -35
  813. package/umd/toast/index.d.ts +12 -12
  814. package/umd/toast/index.js +49 -26
  815. package/umd/toast/methods.js +13 -2
  816. package/umd/transition/index.js +12 -10
@@ -1,8 +1,9 @@
1
1
  import _extends from "@babel/runtime/helpers/extends";
2
- import React, { useRef, useState, useEffect, forwardRef, useImperativeHandle, useCallback, useMemo } from 'react';
2
+ import React, { useRef, useState, useEffect, forwardRef, useImperativeHandle, useCallback, useMemo, useContext } from 'react';
3
3
  import { nextTick, cls } from '@arco-design/mobile-utils';
4
- import { ContextLayout } from '../context-provider';
4
+ import { ContextLayout, GlobalContext } from '../context-provider';
5
5
  import { useRefState, useListenResize, useUpdateEffect, getStyleWithVendor, useSystem, useSwiperInnerScroll, useLatestRef } from '../_helpers';
6
+
6
7
  /**
7
8
  * 轮播组件,支持自定义轮播索引样式及滑块宽度。**需要注意的是,如果正使用`fastclick`,需要为 touchstart 的 target 添加`needsclick`类**(<a href="https://github.com/ftlabs/fastclick#ignore-certain-elements-with-needsclick" target="_blank">详情戳这里</a>),以规避`fastclick`逻辑与组件内部的手势冲突。(如果使用了`list`属性则无需额外添加)
8
9
  * @en Carousel component, supports custom carousel index style and slider width. **Note that if you are using `fastclick`, you need to add a `needsclick` class to the touchstart target ** (<a href="https://github.com/ftlabs/fastclick#ignore-certain-elements- with-needsclick" target="_blank">click here for details</a>) to avoid `fastclick` logic conflicts with gestures inside the component. (no need to add if `list` is set)
@@ -13,90 +14,97 @@ import { useRefState, useListenResize, useUpdateEffect, getStyleWithVendor, useS
13
14
  */
14
15
  var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
15
16
  var className = props.className,
16
- wrapStyle = props.wrapStyle,
17
- style = props.style,
18
- children = props.children,
19
- _props$list = props.list,
20
- list = _props$list === void 0 ? [] : _props$list,
21
- _props$animateDuratio = props.animateDuration,
22
- animateDuration = _props$animateDuratio === void 0 ? 500 : _props$animateDuratio,
23
- _props$animateDuratio2 = props.animateDurationSlide,
24
- animateDurationSlide = _props$animateDuratio2 === void 0 ? 300 : _props$animateDuratio2,
25
- _props$loop = props.loop,
26
- loop = _props$loop === void 0 ? true : _props$loop,
27
- _props$autoPlay = props.autoPlay,
28
- autoPlay = _props$autoPlay === void 0 ? true : _props$autoPlay,
29
- _props$autoPlayDirect = props.autoPlayDirection,
30
- autoPlayDirection = _props$autoPlayDirect === void 0 ? 'normal' : _props$autoPlayDirect,
31
- _props$swipeable = props.swipeable,
32
- swipeable = _props$swipeable === void 0 ? true : _props$swipeable,
33
- _props$stayDuration = props.stayDuration,
34
- stayDuration = _props$stayDuration === void 0 ? 4000 : _props$stayDuration,
35
- boxWidth = props.boxWidth,
36
- boxHeight = props.boxHeight,
37
- baseBoxWidth = props.baseBoxWidth,
38
- baseBoxHeight = props.baseBoxHeight,
39
- _props$width = props.width,
40
- width = _props$width === void 0 ? 0 : _props$width,
41
- height = props.height,
42
- _props$initialIndex = props.initialIndex,
43
- initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,
44
- renderIndicator = props.renderIndicator,
45
- _props$indicatorPos = props.indicatorPos,
46
- indicatorPos = _props$indicatorPos === void 0 ? 'center' : _props$indicatorPos,
47
- _props$indicatorVerti = props.indicatorVerticalPos,
48
- indicatorVerticalPos = _props$indicatorVerti === void 0 ? 'left' : _props$indicatorVerti,
49
- indicatorOutside = props.indicatorOutside,
50
- _props$showIndicator = props.showIndicator,
51
- showIndicator = _props$showIndicator === void 0 ? true : _props$showIndicator,
52
- _props$hideSingleIndi = props.hideSingleIndicator,
53
- hideSingleIndicator = _props$hideSingleIndi === void 0 ? true : _props$hideSingleIndi,
54
- _props$indicatorType = props.indicatorType,
55
- indicatorType = _props$indicatorType === void 0 ? 'square' : _props$indicatorType,
56
- _props$indicatorClass = props.indicatorClass,
57
- indicatorClass = _props$indicatorClass === void 0 ? '' : _props$indicatorClass,
58
- indicatorInverse = props.indicatorInverse,
59
- _props$spaceBetween = props.spaceBetween,
60
- spaceBetween = _props$spaceBetween === void 0 ? 0 : _props$spaceBetween,
61
- _props$offsetBetween = props.offsetBetween,
62
- offsetBetween = _props$offsetBetween === void 0 ? 0 : _props$offsetBetween,
63
- currentIndex = props.currentIndex,
64
- _props$autoHeight = props.autoHeight,
65
- autoHeight = _props$autoHeight === void 0 ? false : _props$autoHeight,
66
- _props$percentToChang = props.percentToChange,
67
- percentToChange = _props$percentToChang === void 0 ? 0.3 : _props$percentToChang,
68
- _props$distanceToChan = props.distanceToChange,
69
- distanceToChange = _props$distanceToChan === void 0 ? 10 : _props$distanceToChan,
70
- _props$speedToChange = props.speedToChange,
71
- speedToChange = _props$speedToChange === void 0 ? 100 : _props$speedToChange,
72
- vertical = props.vertical,
73
- lazyloadCount = props.lazyloadCount,
74
- _props$inactiveScale = props.inactiveScale,
75
- inactiveScale = _props$inactiveScale === void 0 ? 1 : _props$inactiveScale,
76
- _props$stopPropagatio = props.stopPropagation,
77
- stopPropagation = _props$stopPropagatio === void 0 ? true : _props$stopPropagatio,
78
- _props$fakeItem = props.fakeItem,
79
- fakeItem = _props$fakeItem === void 0 ? false : _props$fakeItem,
80
- _props$allowEndBlank = props.allowEndBlank,
81
- allowEndBlank = _props$allowEndBlank === void 0 ? false : _props$allowEndBlank,
82
- _props$bounceWhenNoLo = props.bounceWhenNoLoop,
83
- bounceWhenNoLoop = _props$bounceWhenNoLo === void 0 ? false : _props$bounceWhenNoLo,
84
- _props$bounceDampRate = props.bounceDampRate,
85
- bounceDampRate = _props$bounceDampRate === void 0 ? 3 : _props$bounceDampRate,
86
- distanceProcessor = props.distanceProcessor,
87
- getInnerScrollContainer = props.getInnerScrollContainer,
88
- onChange = props.onChange,
89
- onAfterChange = props.onAfterChange,
90
- onTouchStart = props.onTouchStart,
91
- onTouchMove = props.onTouchMove,
92
- onTouchEnd = props.onTouchEnd,
93
- onTransitionStart = props.onTransitionStart,
94
- onTransitionEnd = props.onTransitionEnd,
95
- onDistanceChange = props.onDistanceChange,
96
- _props$stopTouchThres = props.stopTouchThreshold,
97
- stopTouchThreshold = _props$stopTouchThres === void 0 ? 0 : _props$stopTouchThres,
98
- onTouchStopped = props.onTouchStopped,
99
- onPageVisibleChange = props.onPageVisibleChange;
17
+ wrapStyle = props.wrapStyle,
18
+ style = props.style,
19
+ children = props.children,
20
+ _props$list = props.list,
21
+ list = _props$list === void 0 ? [] : _props$list,
22
+ _props$animateDuratio = props.animateDuration,
23
+ animateDuration = _props$animateDuratio === void 0 ? 500 : _props$animateDuratio,
24
+ _props$animateDuratio2 = props.animateDurationSlide,
25
+ animateDurationSlide = _props$animateDuratio2 === void 0 ? 300 : _props$animateDuratio2,
26
+ _props$loop = props.loop,
27
+ loop = _props$loop === void 0 ? true : _props$loop,
28
+ _props$autoPlay = props.autoPlay,
29
+ autoPlay = _props$autoPlay === void 0 ? true : _props$autoPlay,
30
+ _props$autoPlayDirect = props.autoPlayDirection,
31
+ autoPlayDirection = _props$autoPlayDirect === void 0 ? 'normal' : _props$autoPlayDirect,
32
+ _props$swipeable = props.swipeable,
33
+ swipeable = _props$swipeable === void 0 ? true : _props$swipeable,
34
+ _props$stayDuration = props.stayDuration,
35
+ stayDuration = _props$stayDuration === void 0 ? 4000 : _props$stayDuration,
36
+ boxWidth = props.boxWidth,
37
+ boxHeight = props.boxHeight,
38
+ baseBoxWidth = props.baseBoxWidth,
39
+ baseBoxHeight = props.baseBoxHeight,
40
+ _props$width = props.width,
41
+ width = _props$width === void 0 ? 0 : _props$width,
42
+ height = props.height,
43
+ _props$initialIndex = props.initialIndex,
44
+ initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,
45
+ renderIndicator = props.renderIndicator,
46
+ _props$indicatorPos = props.indicatorPos,
47
+ indicatorPos = _props$indicatorPos === void 0 ? 'center' : _props$indicatorPos,
48
+ _props$indicatorVerti = props.indicatorVerticalPos,
49
+ indicatorVerticalPos = _props$indicatorVerti === void 0 ? 'left' : _props$indicatorVerti,
50
+ indicatorOutside = props.indicatorOutside,
51
+ _props$showIndicator = props.showIndicator,
52
+ showIndicator = _props$showIndicator === void 0 ? true : _props$showIndicator,
53
+ _props$hideSingleIndi = props.hideSingleIndicator,
54
+ hideSingleIndicator = _props$hideSingleIndi === void 0 ? true : _props$hideSingleIndi,
55
+ _props$indicatorType = props.indicatorType,
56
+ indicatorType = _props$indicatorType === void 0 ? 'square' : _props$indicatorType,
57
+ _props$indicatorClass = props.indicatorClass,
58
+ indicatorClass = _props$indicatorClass === void 0 ? '' : _props$indicatorClass,
59
+ indicatorInverse = props.indicatorInverse,
60
+ _props$spaceBetween = props.spaceBetween,
61
+ spaceBetween = _props$spaceBetween === void 0 ? 0 : _props$spaceBetween,
62
+ _props$offsetBetween = props.offsetBetween,
63
+ offsetBetween = _props$offsetBetween === void 0 ? 0 : _props$offsetBetween,
64
+ currentIndex = props.currentIndex,
65
+ _props$autoHeight = props.autoHeight,
66
+ autoHeight = _props$autoHeight === void 0 ? false : _props$autoHeight,
67
+ _props$percentToChang = props.percentToChange,
68
+ percentToChange = _props$percentToChang === void 0 ? 0.3 : _props$percentToChang,
69
+ _props$distanceToChan = props.distanceToChange,
70
+ distanceToChange = _props$distanceToChan === void 0 ? 10 : _props$distanceToChan,
71
+ _props$speedToChange = props.speedToChange,
72
+ speedToChange = _props$speedToChange === void 0 ? 100 : _props$speedToChange,
73
+ vertical = props.vertical,
74
+ lazyloadCount = props.lazyloadCount,
75
+ _props$inactiveScale = props.inactiveScale,
76
+ inactiveScale = _props$inactiveScale === void 0 ? 1 : _props$inactiveScale,
77
+ _props$stopPropagatio = props.stopPropagation,
78
+ stopPropagation = _props$stopPropagatio === void 0 ? true : _props$stopPropagatio,
79
+ _props$fakeItem = props.fakeItem,
80
+ fakeItem = _props$fakeItem === void 0 ? false : _props$fakeItem,
81
+ _props$allowEndBlank = props.allowEndBlank,
82
+ allowEndBlank = _props$allowEndBlank === void 0 ? false : _props$allowEndBlank,
83
+ _props$bounceWhenNoLo = props.bounceWhenNoLoop,
84
+ bounceWhenNoLoop = _props$bounceWhenNoLo === void 0 ? false : _props$bounceWhenNoLo,
85
+ _props$bounceDampRate = props.bounceDampRate,
86
+ bounceDampRate = _props$bounceDampRate === void 0 ? 3 : _props$bounceDampRate,
87
+ _props$iOSVisibleOpti = props.iOSVisibleOptimize,
88
+ iOSVisibleOptimize = _props$iOSVisibleOpti === void 0 ? true : _props$iOSVisibleOpti,
89
+ distanceProcessor = props.distanceProcessor,
90
+ getInnerScrollContainer = props.getInnerScrollContainer,
91
+ onChange = props.onChange,
92
+ onAfterChange = props.onAfterChange,
93
+ onTouchStart = props.onTouchStart,
94
+ onTouchMove = props.onTouchMove,
95
+ onTouchEnd = props.onTouchEnd,
96
+ onTransitionStart = props.onTransitionStart,
97
+ onTransitionEnd = props.onTransitionEnd,
98
+ onDistanceChange = props.onDistanceChange,
99
+ _props$stopTouchThres = props.stopTouchThreshold,
100
+ stopTouchThreshold = _props$stopTouchThres === void 0 ? 0 : _props$stopTouchThres,
101
+ onTouchStopped = props.onTouchStopped,
102
+ onPageVisibleChange = props.onPageVisibleChange;
103
+
104
+ var _useContext = useContext(GlobalContext),
105
+ useRtl = _useContext.useRtl;
106
+
107
+ var horizontalUseRtl = !vertical && useRtl;
100
108
  var domRef = useRef(null);
101
109
  var wrapRef = useRef(null);
102
110
  var innerRef = useRef(null);
@@ -107,57 +115,75 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
107
115
  var touchStartTimeRef = useRef(0);
108
116
  var touchStartedRef = useRef(false);
109
117
  var touchMovedRef = useRef(false);
118
+
110
119
  var _useState = useState(baseBoxWidth || 0),
111
- wrapWidth = _useState[0],
112
- setWrapWidth = _useState[1];
120
+ wrapWidth = _useState[0],
121
+ setWrapWidth = _useState[1];
122
+
113
123
  var _useState2 = useState(baseBoxHeight || 0),
114
- wrapHeight = _useState2[0],
115
- setWrapHeight = _useState2[1];
124
+ wrapHeight = _useState2[0],
125
+ setWrapHeight = _useState2[1];
126
+
116
127
  var touchStartXRef = useRef(0);
117
128
  var touchStartYRef = useRef(0);
118
129
  var scrollingRef = useRef(null);
119
130
  var touchStoppedRef = useRef(false);
120
131
  var bouncingRef = useRef(false);
132
+
121
133
  var _useState3 = useState('auto'),
122
- currentItemHeight = _useState3[0],
123
- setCurrentItemHeight = _useState3[1];
134
+ currentItemHeight = _useState3[0],
135
+ setCurrentItemHeight = _useState3[1];
136
+
124
137
  var _useRefState = useRefState(false),
125
- posAdjusting = _useRefState[0],
126
- posAdjustingRef = _useRefState[1],
127
- setPosAdjusting = _useRefState[2];
138
+ posAdjusting = _useRefState[0],
139
+ posAdjustingRef = _useRefState[1],
140
+ setPosAdjusting = _useRefState[2];
141
+
128
142
  var _useRefState2 = useRefState(0),
129
- distance = _useRefState2[0],
130
- distanceRef = _useRefState2[1],
131
- setDistance = _useRefState2[2];
143
+ distance = _useRefState2[0],
144
+ distanceRef = _useRefState2[1],
145
+ setDistance = _useRefState2[2];
146
+
132
147
  var _useState4 = useState(true),
133
- isAutoJump = _useState4[0],
134
- setIsAutoJump = _useState4[1];
148
+ isAutoJump = _useState4[0],
149
+ setIsAutoJump = _useState4[1];
150
+
135
151
  var _useRefState3 = useRefState(currentIndex !== void 0 ? currentIndex : initialIndex),
136
- index = _useRefState3[0],
137
- indexRef = _useRefState3[1],
138
- setIndex = _useRefState3[2];
152
+ index = _useRefState3[0],
153
+ indexRef = _useRefState3[1],
154
+ setIndex = _useRefState3[2];
155
+
139
156
  var _useRefState4 = useRefState([]),
140
- transforms = _useRefState4[0],
141
- transformsRef = _useRefState4[1],
142
- setTransforms = _useRefState4[2];
143
- var _useRefState5 = useRefState(autoPlayDirection === 'reverse' && autoPlay ? 'right' : 'left'),
144
- direction = _useRefState5[0],
145
- directionRef = _useRefState5[1],
146
- setStateDirection = _useRefState5[2];
157
+ transforms = _useRefState4[0],
158
+ transformsRef = _useRefState4[1],
159
+ setTransforms = _useRefState4[2];
160
+
161
+ var _useRefState5 = useRefState((autoPlayDirection === 'reverse' || horizontalUseRtl) && autoPlay ? 'right' : 'left'),
162
+ direction = _useRefState5[0],
163
+ directionRef = _useRefState5[1],
164
+ setStateDirection = _useRefState5[2];
165
+
147
166
  var lastDirectionRef = useRef('');
148
167
  var lastShownIndexRef = useRef(-1);
168
+
149
169
  var _getAllChildren = getAllChildren(),
150
- allChildren = _getAllChildren.allChildren,
151
- fakeTwoChildren = _getAllChildren.fakeTwoChildren;
170
+ allChildren = _getAllChildren.allChildren,
171
+ fakeTwoChildren = _getAllChildren.fakeTwoChildren;
172
+
152
173
  var total = allChildren.length;
153
174
  var shownTotal = fakeTwoChildren ? 2 : total;
154
175
  var indicatorArr = useMemo(function () {
155
176
  var arr = [];
177
+
156
178
  for (var i = 0; i < shownTotal; i += 1) {
157
179
  arr.push(i);
158
180
  }
181
+
159
182
  return arr;
160
183
  }, [shownTotal]);
184
+ var rtlRatio = horizontalUseRtl ? -1 : 1;
185
+ var leftDirec = horizontalUseRtl ? 'right' : 'left';
186
+ var rightDirec = horizontalUseRtl ? 'left' : 'right';
161
187
  var leftOffset = typeof offsetBetween === 'number' ? offsetBetween : offsetBetween.left || 0;
162
188
  var rightOffset = typeof offsetBetween === 'number' ? offsetBetween : offsetBetween.right || 0;
163
189
  var wrapSize = vertical ? wrapHeight : wrapWidth;
@@ -176,13 +202,15 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
176
202
  var inactiveValidScale = useMemo(function () {
177
203
  return Math.max(0, Math.min(inactiveScale, 1));
178
204
  }, [inactiveScale]);
205
+
179
206
  var _useState5 = useState([]),
180
- fakeIndexes = _useState5[0],
181
- setFakeIndexes = _useState5[1];
182
- var system = useSystem();
183
- // 开启自动循环时iOS会有渲染问题需要强刷dom,但不需要autoPlay的不用强刷,这里判断下
207
+ fakeIndexes = _useState5[0],
208
+ setFakeIndexes = _useState5[1];
209
+
210
+ var system = useSystem(); // 开启自动循环时iOS会有渲染问题需要强刷dom,但不需要autoPlay的不用强刷,这里判断下
184
211
  // @en When the automatic loop is turned on, there will be rendering problems in iOS. Need to brush the dom, but if you don't need autoPlay, don't need to brush.
185
- var needRefreshDom = !noInterval && system === 'ios';
212
+
213
+ var needRefreshDom = !noInterval && system === 'ios' && iOSVisibleOptimize;
186
214
  var setDirection = useCallback(function (newDirec) {
187
215
  setStateDirection(function (direc) {
188
216
  lastDirectionRef.current = direc;
@@ -196,9 +224,11 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
196
224
  if (onTouchStart && onTouchStart(e, shownTotal, getShownIndex(indexRef.current))) {
197
225
  return;
198
226
  }
227
+
199
228
  if (posAdjustingRef.current) {
200
229
  return;
201
230
  }
231
+
202
232
  touchStartedRef.current = true;
203
233
  touchMovedRef.current = false;
204
234
  clear();
@@ -212,20 +242,25 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
212
242
  }, [shownTotal, onTouchStart]);
213
243
  var triggerTouchStopped = useCallback(function (posDis) {
214
244
  var needStop = Math.abs(posDis) > stopTouchThreshold;
245
+
215
246
  if (!touchStoppedRef.current && needStop) {
216
247
  onTouchStopped && onTouchStopped(posDis >= 0 ? -1 : 1);
217
248
  }
249
+
218
250
  touchStoppedRef.current = needStop;
219
251
  }, [stopTouchThreshold, onTouchStopped]);
220
252
  var handleTouchMove = useCallback(function (e) {
221
253
  if (onTouchMove && onTouchMove(e, shownTotal, getShownIndex(indexRef.current))) {
222
254
  return;
223
255
  }
256
+
224
257
  stopPropagation && e.stopPropagation();
258
+
225
259
  if (!touchStartedRef.current || posAdjustingRef.current) {
226
260
  e.cancelable && e.preventDefault();
227
261
  return;
228
262
  }
263
+
229
264
  touchMovedRef.current = true;
230
265
  var evt = e.changedTouches[0];
231
266
  var touchMoveX = Math.max(0, evt.clientX || 0);
@@ -235,32 +270,41 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
235
270
  var absDisX = Math.abs(posDisX);
236
271
  var absDisY = Math.abs(posDisY);
237
272
  var originDis = vertical ? posDisY : posDisX;
273
+
238
274
  var processor = distanceProcessor || function (dis, size, child) {
239
275
  return child * (dis / size);
240
276
  };
277
+
241
278
  var posDis = processor(originDis, wrapSizeRef.current, childSize);
279
+
242
280
  if (total < 2) {
243
281
  triggerTouchStopped(posDis);
244
282
  return;
245
283
  }
284
+
246
285
  if (scrollingRef.current === null) {
247
286
  scrollingRef.current = vertical ? absDisY < absDisX : absDisX < absDisY;
248
- }
249
- // 如果是在滚动页面则禁用轮播图手势
287
+ } // 如果是在滚动页面则禁用轮播图手势
250
288
  // @en Disable carousel gestures if scrolling
289
+
290
+
251
291
  if (scrollingRef.current) {
252
- setDistance(0);
253
- // bugfix: 未触发横滑就不触发touchend逻辑,且这个场景不需要触发onTouchStopped,因此直接设置touchStoppedRef
292
+ setDistance(0); // bugfix: 未触发横滑就不触发touchend逻辑,且这个场景不需要触发onTouchStopped,因此直接设置touchStoppedRef
254
293
  // @en bugfix: The touchend event will not be triggered if the horizontal swipe is not triggered, and this scene does not need to trigger onTouchStopped.
255
- touchStoppedRef.current = true;
256
- // 不会触发jumpTo,但touchstart时clear了,所以要手动设置一次interval
294
+
295
+ touchStoppedRef.current = true; // 不会触发jumpTo,但touchstart时clear了,所以要手动设置一次interval
257
296
  // @en JumpTo will not be triggered, but it is cleared in touchstart event, so need to manually set interval once
297
+
258
298
  setPlayIntervalRef.current();
259
299
  return;
260
300
  }
301
+
261
302
  setDirection(posDis >= 0 ? 'right' : 'left');
262
- if (noLoop && (indexRef.current === 0 && posDis > 0 || indexRef.current === total - 1 && posDis < 0)) {
303
+ var comparedPos = posDis * rtlRatio;
304
+
305
+ if (noLoop && (indexRef.current === 0 && comparedPos > 0 || indexRef.current === total - 1 && comparedPos < 0)) {
263
306
  triggerTouchStopped(posDis);
307
+
264
308
  if (bounceWhenNoLoop && bounceDampRate) {
265
309
  e.cancelable && e.preventDefault();
266
310
  bouncingRef.current = true;
@@ -268,13 +312,15 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
268
312
  } else {
269
313
  setDistance(0);
270
314
  }
315
+
271
316
  return;
272
317
  }
318
+
273
319
  e.cancelable && e.preventDefault();
274
320
  touchStoppedRef.current = false;
275
321
  var maxDis = childSize;
276
322
  setDistance(posDis > 0 ? Math.min(maxDis, posDis) : Math.max(-1 * maxDis, posDis));
277
- }, [shownTotal, noLoop, vertical, childSize, stopPropagation, bounceWhenNoLoop, bounceDampRate, onTouchMove, triggerTouchStopped]);
323
+ }, [shownTotal, noLoop, vertical, childSize, stopPropagation, bounceWhenNoLoop, bounceDampRate, horizontalUseRtl, onTouchMove, triggerTouchStopped]);
278
324
  useImperativeHandle(ref, function () {
279
325
  return {
280
326
  dom: domRef.current,
@@ -289,13 +335,14 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
289
335
  useSwiperInnerScroll(getInnerScrollContainer);
290
336
  var updateWhenVisible = useCallback(function () {
291
337
  fakeWrapRef.current && (fakeWrapRef.current.style.display = 'none');
292
- wrapRef.current && (wrapRef.current.style.display = '');
293
- // 部分情况下页面隐藏后容器宽度变成0,因此页面返回后需重新取一次容器尺寸
338
+ wrapRef.current && (wrapRef.current.style.display = ''); // 部分情况下页面隐藏后容器宽度变成0,因此页面返回后需重新取一次容器尺寸
294
339
  // @en In some cases, the width of the container becomes 0 after the page is invisible, so the container size needs to be resized after the page is visible.
340
+
295
341
  updateDataRef.current();
296
342
  }, []);
297
343
  var updateWhenInvisible = useCallback(function () {
298
344
  clear();
345
+
299
346
  if (wrapRef.current && fakeWrapRef.current) {
300
347
  fakeWrapRef.current.style.height = (wrapRef.current.offsetHeight || 0) + "px";
301
348
  fakeWrapRef.current.style.display = 'block';
@@ -305,9 +352,10 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
305
352
  useEffect(function () {
306
353
  if (onPageVisibleChange) {
307
354
  return onPageVisibleChange(updateWhenVisible, updateWhenInvisible);
308
- }
309
- // ios 在页面隐藏后返回时会有dom结构正确但渲染错乱的情况,因此在页面隐藏时先用占位符,返回后重新渲染一次dom
355
+ } // ios 在页面隐藏后返回时会有dom结构正确但渲染错乱的情况,因此在页面隐藏时先用占位符,返回后重新渲染一次dom
310
356
  // @en In iOS, When the page is invisible, the DOM will be correct but the rendering is disordered. So use a placeholder when the page is invisible, and re-render the DOM after it is visible.
357
+
358
+
311
359
  var update = function update() {
312
360
  if (document.visibilityState === 'visible') {
313
361
  updateWhenVisible();
@@ -315,6 +363,7 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
315
363
  updateWhenInvisible();
316
364
  }
317
365
  };
366
+
318
367
  document.addEventListener('visibilitychange', update);
319
368
  return function () {
320
369
  document.removeEventListener('visibilitychange', update);
@@ -335,6 +384,7 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
335
384
  wrapRef.current.addEventListener('touchstart', handleTouchStart);
336
385
  wrapRef.current.addEventListener('touchmove', handleTouchMove);
337
386
  }
387
+
338
388
  return function () {
339
389
  if (wrapRef.current && needTouchEvent) {
340
390
  wrapRef.current.removeEventListener('touchstart', handleTouchStart);
@@ -377,7 +427,7 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
377
427
  } else {
378
428
  getFakeChild();
379
429
  }
380
- }, [index, direction, childSize, total]);
430
+ }, [index, direction, childSize, total, horizontalUseRtl]);
381
431
  useEffect(function () {
382
432
  nextTick(function () {
383
433
  updateLayoutData();
@@ -397,34 +447,43 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
397
447
  if (!fakeItem || posAdjusting) {
398
448
  return;
399
449
  }
450
+
400
451
  setCurrentFakeIndex();
401
- }, [posAdjusting, index, direction, total, childSize]);
452
+ }, [posAdjusting, index, direction, total, childSize, horizontalUseRtl]);
453
+
402
454
  function getShownIndex(nowIndex) {
403
455
  var validIndex = nowIndex === total ? 0 : nowIndex;
404
456
  var shownInd = nowIndex === -1 ? total - 1 : validIndex;
405
457
  return fakeTwoChildren ? shownInd % 2 : shownInd;
406
458
  }
459
+
407
460
  function getDynamicDuration(autoJump) {
408
461
  return autoJump ? animateDuration : animateDurationSlide;
409
462
  }
463
+
410
464
  function setCurrentHeight() {
411
465
  if (!innerRef.current || !autoHeight || vertical) {
412
466
  return;
413
467
  }
468
+
414
469
  var allItemDom = itemsRef.current;
415
470
  var nowIndex = getShownIndex(indexRef.current);
416
471
  var currentHeight = (allItemDom[nowIndex] || {}).offsetHeight || 'auto';
417
472
  setCurrentItemHeight(currentHeight);
418
473
  }
474
+
419
475
  function getAllChildren() {
420
476
  var allChild = [];
421
477
  var fakeTwo = false;
478
+
422
479
  if (list && list.length) {
423
480
  var actualList = list;
481
+
424
482
  if (list.length === 2 && fakeItem) {
425
483
  fakeTwo = true;
426
484
  actualList = list.concat(list);
427
485
  }
486
+
428
487
  allChild = actualList.map(function (item, i) {
429
488
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("img", {
430
489
  key: i,
@@ -438,6 +497,7 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
438
497
  });
439
498
  } else if (children && Object.prototype.toString.call(children) === '[object Array]') {
440
499
  allChild = children;
500
+
441
501
  if (allChild.length === 2 && fakeItem) {
442
502
  fakeTwo = true;
443
503
  allChild = [].concat(allChild, allChild);
@@ -445,26 +505,39 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
445
505
  } else {
446
506
  allChild = children ? [children] : [];
447
507
  }
508
+
448
509
  return {
449
510
  allChildren: allChild,
450
511
  fakeTwoChildren: fakeTwo
451
512
  };
452
513
  }
514
+
453
515
  function getDefaultDirection() {
454
516
  var nowIndex = indexRef.current;
517
+
455
518
  if (nowIndex === total - 1) {
456
- return 'left';
519
+ return horizontalUseRtl ? 'right' : 'left';
457
520
  }
521
+
458
522
  if (nowIndex === 0) {
459
- return 'right';
523
+ return horizontalUseRtl ? 'left' : 'right';
460
524
  }
525
+
461
526
  return '';
462
527
  }
463
- function changeIndex(newIndex, rightNow, direc) {
528
+
529
+ function changeIndex(newIndex, rightNow, userSetDirec) {
464
530
  if (posAdjustingRef.current) {
465
531
  return;
466
532
  }
467
- if (direc) {
533
+
534
+ if (userSetDirec) {
535
+ // rtl 模式取反
536
+ var direcMap = {
537
+ left: leftDirec,
538
+ right: rightDirec
539
+ };
540
+ var direc = direcMap[userSetDirec];
468
541
  setDirection(direc);
469
542
  nextTick(function () {
470
543
  jumpTo(newIndex, true, rightNow, direc);
@@ -473,21 +546,25 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
473
546
  jumpTo(newIndex, true, rightNow);
474
547
  }
475
548
  }
549
+
476
550
  function jumpTo(newIndex, autoJump, rightNow, direc) {
477
551
  if (autoJump === void 0) {
478
552
  autoJump = true;
479
553
  }
554
+
480
555
  var oldIndex = getShownIndex(indexRef.current);
481
556
  var changedIndex = newIndex !== oldIndex ? getShownIndex(newIndex) : -1;
557
+
482
558
  if (direc) {
483
559
  setDirection(direc);
484
560
  } else if (autoJump) {
485
- setDirection(autoPlayDirection === 'reverse' ? 'right' : 'left');
561
+ setDirection(autoPlayDirection === 'reverse' || horizontalUseRtl ? 'right' : 'left');
486
562
  } else if (newIndex === indexRef.current) {
487
563
  setDirection(distanceRef.current > 0 ? 'right' : 'left');
488
564
  } else {
489
565
  setDirection('');
490
566
  }
567
+
491
568
  setPosAdjusting(true);
492
569
  setIsAutoJump(autoJump);
493
570
  setDistance(0);
@@ -500,6 +577,7 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
500
577
  setDirection(getDefaultDirection());
501
578
  var newTransform = transformsRef.current.slice();
502
579
  var transChanged = false;
580
+
503
581
  if (newIndex === -1 && movedChildRef.current >= 0) {
504
582
  newTransform[movedChildRef.current] = 0;
505
583
  transChanged = true;
@@ -509,12 +587,15 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
509
587
  transChanged = true;
510
588
  setIndex(0);
511
589
  }
590
+
512
591
  transChanged && setTransforms(newTransform);
513
592
  setIsAutoJump(true);
514
593
  onTransitionEnd && onTransitionEnd();
594
+
515
595
  if (changedIndex >= 0) {
516
596
  onAfterChange && onAfterChange(changedIndex, oldIndex);
517
597
  }
598
+
518
599
  nextTick(function () {
519
600
  setPlayIntervalRef.current();
520
601
  });
@@ -522,111 +603,137 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
522
603
  }, rightNow ? 0 : getDynamicDuration(autoJump));
523
604
  autoJump && setDirection('');
524
605
  }
606
+
525
607
  function setPlayInterval() {
526
608
  clear();
609
+
527
610
  if (noInterval) {
528
611
  return;
529
612
  }
613
+
530
614
  timerRef.current = delayTimeout(function () {
531
615
  jumpTo(autoPlayDirection === 'reverse' ? indexRef.current - 1 : indexRef.current + 1);
532
616
  }, stayDuration);
533
617
  }
618
+
534
619
  function updateLayoutData() {
535
620
  if (wrapRef.current) {
536
621
  setWrapWidth(wrapRef.current.offsetWidth);
537
622
  setWrapHeight(wrapRef.current.offsetHeight);
538
623
  }
624
+
539
625
  setCurrentHeight();
540
626
  }
627
+
541
628
  function updateData() {
542
629
  updateLayoutData();
543
630
  setPlayIntervalRef.current();
544
631
  }
632
+
545
633
  function clear() {
546
634
  if (timerRef.current) {
547
635
  clearTimeout(timerRef.current);
548
636
  timerRef.current = null;
549
637
  }
550
638
  }
639
+
551
640
  function getFakeChild() {
552
641
  if (noLoop) {
553
642
  return;
554
643
  }
644
+
555
645
  var nowIndex = indexRef.current;
556
646
  var newTransform = transformsRef.current.slice();
557
647
  var dis = Math.max(0, childSize);
558
648
  allChildren.forEach(function (_, childIndex) {
559
- if (nowIndex === 0 && directionRef.current === 'right' && childIndex === total - 1) {
649
+ if (nowIndex === 0 && directionRef.current === rightDirec && childIndex === total - 1) {
560
650
  movedChildRef.current = childIndex;
561
- newTransform[childIndex] = -1 * total * dis;
562
- } else if (nowIndex === total - 1 && directionRef.current === 'left' && childIndex === 0) {
651
+ newTransform[childIndex] = -1 * total * dis * rtlRatio;
652
+ } else if (nowIndex === total - 1 && directionRef.current === leftDirec && childIndex === 0) {
563
653
  movedChildRef.current = childIndex;
564
- newTransform[childIndex] = total * dis;
654
+ newTransform[childIndex] = total * dis * rtlRatio;
565
655
  } else if (nowIndex >= 0 && nowIndex < total) {
566
656
  newTransform[childIndex] = 0;
567
657
  }
568
658
  });
569
659
  setTransforms(newTransform);
570
660
  }
661
+
571
662
  function delayTimeout(callback, timeout) {
572
663
  return setTimeout(callback, timeout);
573
664
  }
665
+
574
666
  function handleTouchEnd(e) {
575
667
  if (!needTouchEvent) {
576
668
  return;
577
669
  }
670
+
578
671
  if (onTouchEnd && onTouchEnd(e.nativeEvent, shownTotal, getShownIndex(indexRef.current))) {
579
672
  return;
580
673
  }
674
+
581
675
  stopPropagation && e.stopPropagation();
676
+
582
677
  if (bouncingRef.current) {
583
678
  bouncingRef.current = false;
584
679
  jumpTo(index, false);
585
680
  return;
586
681
  }
682
+
587
683
  if (!touchStartedRef.current || !touchMovedRef.current || posAdjustingRef.current || touchStoppedRef.current) {
588
684
  return;
589
685
  }
686
+
590
687
  touchStartedRef.current = false;
591
688
  touchMovedRef.current = false;
592
689
  var touchEndTime = new Date().getTime();
593
- var speed = distance / (touchEndTime - touchStartTimeRef.current) * 1000;
594
- var maxSlice = childSize * percentToChange;
595
690
  var dis = Math.abs(distance);
596
- var needJump = dis > maxSlice && dis > distanceToChange || Math.abs(speed) > speedToChange;
597
- if (distance > 0 && needJump) {
691
+ var speed = dis / (touchEndTime - touchStartTimeRef.current) * 1000;
692
+ var maxSlice = childSize * percentToChange;
693
+ var needJump = dis > maxSlice && dis > distanceToChange || speed > speedToChange;
694
+ var comparedDis = distance * rtlRatio;
695
+
696
+ if (comparedDis > 0 && needJump) {
598
697
  jumpTo(index - 1, false);
599
- } else if (distance < 0 && needJump) {
698
+ } else if (comparedDis < 0 && needJump) {
600
699
  jumpTo(index + 1, false);
601
700
  } else {
602
701
  jumpTo(index, false);
603
702
  }
604
703
  }
704
+
605
705
  function getSlideTransitionStyle() {
606
706
  return {
607
707
  transitionProperty: posAdjusting ? 'transform' : 'none',
608
708
  transitionDuration: posAdjusting ? dynamicAnimateDuration + "ms" : '0ms'
609
709
  };
610
710
  }
711
+
611
712
  function getInnerStyle() {
612
713
  var transitionStyle = getStyleWithVendor(getSlideTransitionStyle());
613
714
  var innerSize = childSize * total;
614
- var dis = index * childSize * -1 + distance + leftOffset;
615
- var minTransform = childSize > 0 ? leftOffset : 0;
616
- var maxTransform = allowEndBlank ? dis : -1 * innerSize + wrapSize - rightOffset;
617
- var noLoopDis = bounceWhenNoLoop && (index === 0 && distance > 0 || index === total - 1 && distance < 0) ? Math.min(minTransform + distance, Math.max(maxTransform + distance, dis)) : Math.min(minTransform, Math.max(maxTransform, dis));
618
- // noLoop时需要在最后也露出spaceBetween的空白,所以当滑到最后一个时transform向左移动相应宽度
715
+ var dis = index * childSize * -1 * rtlRatio + distance + rtlRatio * leftOffset;
716
+ var min = childSize > 0 ? leftOffset : 0;
717
+ var max = allowEndBlank ? dis * rtlRatio : -1 * innerSize + wrapSize - rightOffset;
718
+ var minTransform = horizontalUseRtl ? -1 * max : min;
719
+ var maxTransform = horizontalUseRtl ? -1 * min : max;
720
+ var comparedDis = rtlRatio * distance;
721
+ var noLoopDis = bounceWhenNoLoop && (index === 0 && comparedDis > 0 || index === total - 1 && comparedDis < 0) ? Math.min(minTransform + distance, Math.max(maxTransform + distance, dis)) : Math.min(minTransform, Math.max(maxTransform, dis)); // noLoop时需要在最后也露出spaceBetween的空白,所以当滑到最后一个时transform向左移动相应宽度
619
722
  // @en When noLoop is used, the blank space of spaceBetween needs to be exposed at the end, so when sliding to the last one, the transform value moves to the left by the corresponding width
620
- var translateDis = noLoop ? noLoopDis - (total > 1 && index === total - 1 ? spaceBetween : 0) : dis;
723
+
724
+ var translateDis = noLoop ? noLoopDis - (total > 1 && index === total - 1 ? spaceBetween : 0) * rtlRatio : dis;
621
725
  var transStr = childSize > 0 ? translateDis + "px" : "-" + index * 100 + "%";
726
+
622
727
  if (vertical) {
623
728
  var _translateStyle = getStyleWithVendor({
624
729
  transform: "translateY(" + transStr + ") translateZ(0)"
625
730
  });
731
+
626
732
  return _extends({}, transitionStyle, _translateStyle, {
627
733
  width: '100%'
628
734
  });
629
735
  }
736
+
630
737
  var translateStyle = getStyleWithVendor({
631
738
  transform: "translateX(" + transStr + ") translateZ(0)"
632
739
  });
@@ -635,36 +742,41 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
635
742
  height: height
636
743
  }, transitionStyle, translateStyle);
637
744
  }
745
+
638
746
  function getCarouselStyle() {
639
747
  if (vertical) {
640
748
  return _extends({
641
749
  height: userSetBoxHeight
642
750
  }, style || {});
643
751
  }
752
+
644
753
  var heightStyle = currentItemHeight && currentItemHeight !== 'auto' ? {
645
754
  height: currentItemHeight
646
755
  } : {};
647
756
  return _extends({
648
757
  width: userSetBoxWidth
649
758
  }, heightStyle, style || {});
650
- }
651
-
652
- // 当最前或最后的滑块通过transform手动被放置到最后或最前时,在展示层可以认为是第total个或第-1个模块
759
+ } // 当最前或最后的滑块通过transform手动被放置到最后或最前时,在展示层可以认为是第total个或第-1个模块
653
760
  // @en When the front or last slider is manually placed to the rear or the front through transform, it can be considered as the total or -1 module in the display layer
761
+
762
+
654
763
  function getShownChildIndex(curIndex) {
655
764
  var childIndex = curIndex;
656
- if (transforms[childIndex] > 0) {
765
+
766
+ if (transforms[childIndex] * rtlRatio > 0) {
657
767
  childIndex = total;
658
- } else if (transforms[childIndex] < 0) {
768
+ } else if (transforms[childIndex] * rtlRatio < 0) {
659
769
  childIndex = -1;
660
770
  }
661
- return childIndex;
662
- }
663
771
 
664
- // 当两侧有露出内容时,为了循环衔接上需要fake前后的dom来做视觉填充
772
+ return childIndex;
773
+ } // 当两侧有露出内容时,为了循环衔接上需要fake前后的dom来做视觉填充
665
774
  // @en When there is exposed content on both sides, it is necessary to fake the front and rear dom to make visual filling in order to connect circularly.
775
+
776
+
666
777
  function setCurrentFakeIndex() {
667
778
  var newIndexes = fakeIndexes.slice();
779
+
668
780
  if (childSize <= 0) {
669
781
  if (index === 0) {
670
782
  newIndexes[0] = {
@@ -672,72 +784,88 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
672
784
  side: 'left'
673
785
  };
674
786
  }
787
+
675
788
  if (index === total - 1) {
676
789
  newIndexes[2] = {
677
790
  index: 0,
678
791
  side: 'right'
679
792
  };
680
793
  }
794
+
681
795
  setFakeIndexes(newIndexes);
682
796
  return;
683
797
  }
684
- if (index === 1 && direction === 'right' || index === 0 && direction !== 'right') {
798
+
799
+ if (index === 1 && direction === rightDirec || index === 0 && direction !== rightDirec) {
685
800
  newIndexes[0] = {
686
801
  index: total - 1,
687
802
  side: 'left'
688
803
  };
689
804
  }
690
- if (index === 0 && direction === 'right' || index === -1) {
805
+
806
+ if (index === 0 && direction === rightDirec || index === -1) {
691
807
  newIndexes[1] = {
692
808
  index: total - 2,
693
809
  side: 'left'
694
810
  };
695
811
  }
696
- if (index === total - 2 && direction === 'left' || index === total - 1 && direction !== 'left') {
812
+
813
+ if (index === total - 2 && direction === leftDirec || index === total - 1 && direction !== leftDirec) {
697
814
  newIndexes[2] = {
698
815
  index: 0,
699
816
  side: 'right'
700
817
  };
701
818
  }
702
- if (index === total - 1 && direction === 'left' || index === total) {
819
+
820
+ if (index === total - 1 && direction === leftDirec || index === total) {
703
821
  newIndexes[3] = {
704
822
  index: 1,
705
823
  side: 'right'
706
824
  };
707
825
  }
826
+
708
827
  setFakeIndexes(newIndexes);
709
828
  }
829
+
710
830
  function getItemTranslateStyle(childIndex, ratio) {
711
831
  var dis = index - childIndex;
712
832
  var prefix = dis > 0 ? 1 : -1;
713
833
  var transPercent = 1 - inactiveValidScale;
834
+ var ratioWithRtl = ratio * rtlRatio;
714
835
  var trans = 0;
836
+
715
837
  if (Math.abs(dis) > 1) {
716
- trans = (prefix * (Math.abs(dis) - 1) - ratio) * transPercent;
717
- } else if (dis === -1 && ratio > 0 || dis === 1 && ratio < 0) {
838
+ trans = (prefix * (Math.abs(dis) - 1) - ratioWithRtl) * transPercent * rtlRatio;
839
+ } else if (dis === -1 && ratioWithRtl > 0 || dis === 1 && ratioWithRtl < 0) {
718
840
  trans = -1 * ratio * transPercent;
719
841
  }
842
+
720
843
  return "translate" + (vertical ? 'Y' : 'X') + "(" + trans * 100 + "%)";
721
844
  }
845
+
722
846
  function getItemScaleStyle(childIndex, ratio) {
723
- var originScale = inactiveValidScale;
724
- // active滑块前后两侧的滑块,根据滑动距离等比放大
847
+ var originScale = inactiveValidScale; // active滑块前后两侧的滑块,根据滑动距离等比放大
725
848
  // @en The front and rear sides of the active slider, and zoom in proportionally according to the sliding distance
726
- if (childIndex === index - 1 && direction === 'right' || childIndex === index + 1 && direction === 'left') {
849
+
850
+ if (childIndex === index - 1 && direction === rightDirec || childIndex === index + 1 && direction === leftDirec) {
727
851
  return originScale + (1 - originScale) * Math.abs(ratio);
728
- }
729
- // active的滑块,根据滑动距离等比缩小
852
+ } // active的滑块,根据滑动距离等比缩小
730
853
  // @en The active slider, zoom out proportionally according to the sliding distance
854
+
855
+
731
856
  if (childIndex === index) {
732
857
  return 1 - (1 - originScale) * Math.abs(ratio);
733
- }
734
- // 其他保持inactiveScale即可
858
+ } // 其他保持inactiveScale即可
735
859
  // @en Others remain inactiveScale
860
+
861
+
736
862
  return originScale;
737
863
  }
864
+
738
865
  function getItemOriginStyle(childIndex) {
739
866
  var origin = 0.5;
740
867
  var dis = childIndex - index;
868
+
741
869
  if (dis === 0) {
742
870
  // 当前active的卡片,随滑动方向切换origin
743
871
  // @en The currently active card, switch origin with the sliding direction
@@ -745,25 +873,27 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
745
873
  } else if (dis <= -1) {
746
874
  // 当前active之前的卡片,origin均靠最右
747
875
  // @en The cards in front of the currently active card, the origin is on the far right
748
- origin = 1;
876
+ origin = horizontalUseRtl ? 0 : 1;
749
877
  } else if (dis >= 1) {
750
878
  // 当前active之后的卡片,origin均靠最左
751
879
  // @en The cards after the currently active card, the origin is on the far left
752
- origin = 0;
880
+ origin = horizontalUseRtl ? 1 : 0;
753
881
  }
882
+
754
883
  var originStr = origin * 100 + "%";
755
884
  return vertical ? "center " + originStr : originStr + " center";
756
885
  }
886
+
757
887
  function getItemInnerStyle(curIndex) {
758
888
  var transitionStyle = getSlideTransitionStyle();
759
889
  var childIndex = getShownChildIndex(curIndex);
760
- var ratio = distance / childSize || 0;
761
- // 有放大效果的item,随着distance变化而变化scale和transform-origin
890
+ var ratio = distance / childSize || 0; // 有放大效果的item,随着distance变化而变化scale和transform-origin
762
891
  // @en Item with magnification effect, scale and transform-origin change with distance
763
892
  // transform效果与fake dom时item的transform需隔离,且scale后会影响item的padding展示
764
893
  // @en The transform effect of the item needs to be isolated from the fake dom, and the padding display of the item will be affected after scale.
765
894
  // 因此需要缩放时多包裹一层item-inner,单独处理缩放逻辑
766
895
  // @en Therefore, need to wrap an additional layer of item-inner when scaling, and handle the scaling logic separately
896
+
767
897
  var scale = getItemScaleStyle(childIndex, ratio);
768
898
  var transformStyle = {
769
899
  transform: getItemTranslateStyle(childIndex, ratio) + " scale(" + scale + ")",
@@ -771,45 +901,54 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
771
901
  };
772
902
  return getStyleWithVendor(_extends({}, transitionStyle, transformStyle));
773
903
  }
904
+
774
905
  function getItemFakeStyle(childIndex) {
775
906
  var _extends2, _ref, _ref2;
907
+
776
908
  var styleMap = {
777
- leftDirec: vertical ? 'bottom' : 'right',
778
- rightDirec: vertical ? 'top' : 'left',
909
+ leftDirec: vertical ? 'top' : leftDirec,
910
+ rightDirec: vertical ? 'bottom' : rightDirec,
779
911
  otherDirec: vertical ? 'left' : 'top',
780
912
  trans: vertical ? 'Y' : 'X'
781
913
  };
782
914
  return _extends((_extends2 = {
783
915
  position: 'absolute'
784
- }, _extends2[styleMap.otherDirec] = 0, _extends2), childIndex >= 0 ? (_ref = {}, _ref[styleMap.rightDirec] = childSize > 0 ? '100%' : total * 100 + "%", _ref.transform = "translate" + styleMap.trans + "(" + (childIndex - total) * 100 + "%)", _ref) : (_ref2 = {}, _ref2[styleMap.leftDirec] = '100%', _ref2.transform = "translate" + styleMap.trans + "(" + (childIndex + 1) * 100 + "%)", _ref2));
916
+ }, _extends2[styleMap.otherDirec] = 0, _extends2), childIndex >= 0 ? (_ref = {}, _ref[styleMap.leftDirec] = childSize > 0 ? '100%' : total * 100 + "%", _ref.transform = "translate" + styleMap.trans + "(" + (childIndex - total) * rtlRatio * 100 + "%)", _ref) : (_ref2 = {}, _ref2[styleMap.rightDirec] = '100%', _ref2.transform = "translate" + styleMap.trans + "(" + (childIndex + 1) * rtlRatio * 100 + "%)", _ref2));
785
917
  }
918
+
786
919
  function getItemStyle(childIndex, isFake) {
787
920
  var _ref3, _ref4;
921
+
788
922
  var initialStartSpace = spaceBetween + leftOffset;
789
923
  var initialEndSpace = spaceBetween + rightOffset;
790
924
  var initalSize = vertical ? userSetBoxHeight : '100%';
925
+ var horizontalPaddingStart = horizontalUseRtl ? 'paddingRight' : 'paddingLeft';
926
+ var horizontalPaddingEnd = horizontalUseRtl ? 'paddingLeft' : 'paddingRight';
791
927
  var styleMap = {
792
928
  size: vertical ? 'height' : 'width',
793
- paddingStart: vertical ? 'paddingTop' : 'paddingLeft',
794
- paddingEnd: vertical ? 'paddingBottom' : 'paddingRight',
929
+ paddingStart: vertical ? 'paddingTop' : horizontalPaddingStart,
930
+ paddingEnd: vertical ? 'paddingBottom' : horizontalPaddingEnd,
795
931
  translate: vertical ? 'translateY' : 'translateX'
796
- };
797
- // bugfix: item 为半透明状态下 fakeItem 和普通 item 重叠露馅问题
932
+ }; // bugfix: item 为半透明状态下 fakeItem 和普通 item 重叠露馅问题
798
933
  // @en bugfix: Solve the problem of overlapping fakeItem and the normal item when item is translucent
934
+
799
935
  var transformStyle = isFake ? {
800
936
  visibility: childIndex === total && transforms[0] > 0 || childIndex === -1 && transforms[total - 1] < 0 ? 'hidden' : 'initial'
801
937
  } : {
802
938
  transform: styleMap.translate + "(" + (transforms[childIndex] || 0) + "px)"
803
- };
804
- // childSize <= 0 说明是未全部加载完成的首屏情况 做一下特殊处理
939
+ }; // childSize <= 0 说明是未全部加载完成的首屏情况 做一下特殊处理
805
940
  // @en childSize <= 0 indicates that the first screen is not fully loaded, so do some special treatment
941
+
806
942
  var layoutStyle = childSize > 0 ? (_ref3 = {}, _ref3[styleMap.size] = childSize - spaceBetween, _ref3[styleMap.paddingStart] = spaceBetween, _ref3.boxSizing = 'content-box', _ref3) : (_ref4 = {}, _ref4[styleMap.size] = initalSize, _ref4[styleMap.paddingStart] = initialStartSpace, _ref4[styleMap.paddingEnd] = initialEndSpace, _ref4.boxSizing = 'border-box', _ref4.transform = styleMap.translate + "(" + (childIndex === index ? 0 : (index - childIndex) * (spaceBetween + leftOffset + rightOffset)) + "px)", _ref4);
807
943
  var fakeStyle = isFake ? getItemFakeStyle(childIndex) : {};
944
+
808
945
  if (isFake && childSize < 0) {
809
946
  delete fakeStyle.transform;
810
947
  }
948
+
811
949
  return getStyleWithVendor(_extends({}, transformStyle, layoutStyle, fakeStyle));
812
950
  }
951
+
813
952
  function renderChild(child, childIndex, prefix) {
814
953
  // 兼容线上逻辑,不需要切换放大效果的,不包裹item-inner
815
954
  // @en No need to switch the magnification effect, do not wrap item-inner
@@ -818,26 +957,33 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
818
957
  style: getItemInnerStyle(childIndex)
819
958
  }, child);
820
959
  }
960
+
821
961
  function renderFakeItem(prefix, fakeIndex, side) {
822
962
  if (!fakeItem || fakeIndex === void 0) {
823
963
  return null;
824
964
  }
965
+
825
966
  var posIndex = side === 'left' ? fakeIndex - total : fakeIndex + total;
826
967
  return /*#__PURE__*/React.createElement("div", {
827
968
  key: "" + fakeIndex + posIndex,
969
+ "data-fake-index": fakeIndex,
970
+ "data-index": posIndex,
828
971
  className: cls(prefix + "-item carousel-item fake-item fake-" + side, {
829
972
  vertical: vertical
830
973
  }),
831
974
  style: getItemStyle(posIndex, true)
832
975
  }, renderChild(allChildren[fakeIndex], posIndex, prefix));
833
976
  }
977
+
834
978
  function renderAllFakeItem(prefix) {
835
979
  return fakeIndexes.map(function (fakeIndex) {
836
980
  return renderFakeItem(prefix, fakeIndex.index, fakeIndex.side);
837
981
  });
838
982
  }
983
+
839
984
  function renderCarousel(_ref5) {
840
985
  var _cls;
986
+
841
987
  var prefixCls = _ref5.prefixCls;
842
988
  var prefix = prefixCls + "-carousel";
843
989
  return /*#__PURE__*/React.createElement("div", {
@@ -845,9 +991,11 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
845
991
  style: wrapStyle,
846
992
  ref: domRef
847
993
  }, needRefreshDom ? /*#__PURE__*/React.createElement("div", {
994
+ key: "fake-carousel",
848
995
  className: prefix + " wrap-placeholder",
849
996
  ref: fakeWrapRef
850
997
  }) : null, /*#__PURE__*/React.createElement("div", {
998
+ key: "carousel",
851
999
  className: prefix,
852
1000
  onTouchEnd: handleTouchEnd,
853
1001
  onTouchCancel: handleTouchEnd,
@@ -874,7 +1022,8 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
874
1022
  }
875
1023
  }, inView || transforms[childIndex] ? renderChild(child, childIndex, prefix) : null);
876
1024
  }), renderAllFakeItem(prefix))), showIndicator && (total > 1 || !hideSingleIndicator) ? /*#__PURE__*/React.createElement("div", {
877
- className: cls(prefix + "-indicator pos-" + indicatorPos, (_cls = {}, _cls["vertical ver-pos-" + indicatorVerticalPos] = vertical, _cls), {
1025
+ key: "carousel-indicator",
1026
+ className: cls(prefix + "-indicator pos-" + indicatorPos + " " + prefix + "-indicator-" + (vertical ? 'vertical' : 'horizontal'), (_cls = {}, _cls["vertical ver-pos-" + indicatorVerticalPos] = vertical, _cls), {
878
1027
  inverse: indicatorInverse === void 0 ? indicatorOutside : indicatorInverse
879
1028
  }, {
880
1029
  outside: indicatorOutside
@@ -888,6 +1037,7 @@ var Carousel = /*#__PURE__*/forwardRef(function (props, ref) {
888
1037
  });
889
1038
  })) : null);
890
1039
  }
1040
+
891
1041
  return /*#__PURE__*/React.createElement(ContextLayout, null, renderCarousel);
892
1042
  });
893
1043
  export default Carousel;