@arco-design/mobile-react 2.31.5 → 2.32.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 (866) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.en-US.md +2 -2
  3. package/README.md +2 -2
  4. package/cjs/_helpers/index.d.ts +1 -0
  5. package/cjs/_helpers/index.js +9 -0
  6. package/cjs/_helpers/react-dom.js +18 -10
  7. package/cjs/stepper/style/css/index.css +3 -4
  8. package/cjs/stepper/style/index.less +1 -2
  9. package/dist/index.js +91 -66
  10. package/dist/index.min.js +4 -4
  11. package/dist/style.css +1 -2
  12. package/dist/style.min.css +1 -1
  13. package/esm/_helpers/index.d.ts +1 -0
  14. package/esm/_helpers/index.js +1 -0
  15. package/esm/_helpers/react-dom.js +15 -11
  16. package/esm/stepper/style/css/index.css +3 -4
  17. package/esm/stepper/style/index.less +1 -2
  18. package/esnext/_helpers/hooks.d.ts +290 -0
  19. package/esnext/_helpers/hooks.js +660 -0
  20. package/esnext/_helpers/index.d.ts +93 -0
  21. package/esnext/_helpers/index.js +110 -0
  22. package/esnext/_helpers/react-dom.d.ts +13 -0
  23. package/esnext/_helpers/react-dom.js +51 -0
  24. package/esnext/_helpers/render.d.ts +17 -0
  25. package/esnext/_helpers/render.js +38 -0
  26. package/esnext/_helpers/type.d.ts +30 -0
  27. package/esnext/_helpers/type.js +1 -0
  28. package/esnext/action-sheet/index.d.ts +106 -0
  29. package/esnext/action-sheet/index.js +53 -0
  30. package/esnext/action-sheet/methods.d.ts +10 -0
  31. package/esnext/action-sheet/methods.js +4 -0
  32. package/esnext/action-sheet/style/css/index.css +741 -0
  33. package/esnext/action-sheet/style/css/index.d.ts +3 -0
  34. package/esnext/action-sheet/style/css/index.js +3 -0
  35. package/esnext/action-sheet/style/index.d.ts +3 -0
  36. package/esnext/action-sheet/style/index.js +3 -0
  37. package/esnext/action-sheet/style/index.less +119 -0
  38. package/esnext/avatar/group.d.ts +9 -0
  39. package/esnext/avatar/group.js +35 -0
  40. package/esnext/avatar/index.d.ts +17 -0
  41. package/esnext/avatar/index.js +87 -0
  42. package/esnext/avatar/style/css/index.css +792 -0
  43. package/esnext/avatar/style/css/index.d.ts +3 -0
  44. package/esnext/avatar/style/css/index.js +3 -0
  45. package/esnext/avatar/style/index.d.ts +3 -0
  46. package/esnext/avatar/style/index.js +3 -0
  47. package/esnext/avatar/style/index.less +201 -0
  48. package/esnext/avatar/type.d.ts +126 -0
  49. package/esnext/avatar/type.js +1 -0
  50. package/esnext/badge/index.d.ts +80 -0
  51. package/esnext/badge/index.js +29 -0
  52. package/esnext/badge/style/css/index.css +640 -0
  53. package/esnext/badge/style/css/index.d.ts +2 -0
  54. package/esnext/badge/style/css/index.js +2 -0
  55. package/esnext/badge/style/index.d.ts +2 -0
  56. package/esnext/badge/style/index.js +2 -0
  57. package/esnext/badge/style/index.less +109 -0
  58. package/esnext/button/hooks.d.ts +8 -0
  59. package/esnext/button/hooks.js +45 -0
  60. package/esnext/button/index.d.ts +141 -0
  61. package/esnext/button/index.js +61 -0
  62. package/esnext/button/style/css/index.css +816 -0
  63. package/esnext/button/style/css/index.d.ts +3 -0
  64. package/esnext/button/style/css/index.js +3 -0
  65. package/esnext/button/style/index.d.ts +3 -0
  66. package/esnext/button/style/index.js +3 -0
  67. package/esnext/button/style/index.less +242 -0
  68. package/esnext/carousel/index.d.ts +383 -0
  69. package/esnext/carousel/index.js +840 -0
  70. package/esnext/carousel/style/css/index.css +748 -0
  71. package/esnext/carousel/style/css/index.d.ts +2 -0
  72. package/esnext/carousel/style/css/index.js +2 -0
  73. package/esnext/carousel/style/index.d.ts +2 -0
  74. package/esnext/carousel/style/index.js +2 -0
  75. package/esnext/carousel/style/index.less +263 -0
  76. package/esnext/cell/arrow.d.ts +2 -0
  77. package/esnext/cell/arrow.js +5 -0
  78. package/esnext/cell/cell.d.ts +3 -0
  79. package/esnext/cell/cell.js +24 -0
  80. package/esnext/cell/group.d.ts +7 -0
  81. package/esnext/cell/group.js +26 -0
  82. package/esnext/cell/index.d.ts +14 -0
  83. package/esnext/cell/index.js +16 -0
  84. package/esnext/cell/style/css/index.css +1008 -0
  85. package/esnext/cell/style/css/index.d.ts +2 -0
  86. package/esnext/cell/style/css/index.js +2 -0
  87. package/esnext/cell/style/index.d.ts +2 -0
  88. package/esnext/cell/style/index.js +2 -0
  89. package/esnext/cell/style/index.less +214 -0
  90. package/esnext/cell/type.d.ts +125 -0
  91. package/esnext/cell/type.js +1 -0
  92. package/esnext/checkbox/checkbox.d.ts +3 -0
  93. package/esnext/checkbox/checkbox.js +106 -0
  94. package/esnext/checkbox/group.d.ts +4 -0
  95. package/esnext/checkbox/group.js +54 -0
  96. package/esnext/checkbox/hooks/index.d.ts +1 -0
  97. package/esnext/checkbox/hooks/index.js +1 -0
  98. package/esnext/checkbox/hooks/useMergeProps.d.ts +3 -0
  99. package/esnext/checkbox/hooks/useMergeProps.js +20 -0
  100. package/esnext/checkbox/index.d.ts +19 -0
  101. package/esnext/checkbox/index.js +22 -0
  102. package/esnext/checkbox/style/css/index.css +613 -0
  103. package/esnext/checkbox/style/css/index.d.ts +2 -0
  104. package/esnext/checkbox/style/css/index.js +2 -0
  105. package/esnext/checkbox/style/index.d.ts +2 -0
  106. package/esnext/checkbox/style/index.js +2 -0
  107. package/esnext/checkbox/style/index.less +119 -0
  108. package/esnext/checkbox/type.d.ts +162 -0
  109. package/esnext/checkbox/type.js +27 -0
  110. package/esnext/circle-progress/index.d.ts +141 -0
  111. package/esnext/circle-progress/index.js +75 -0
  112. package/esnext/circle-progress/style/css/index.css +582 -0
  113. package/esnext/circle-progress/style/css/index.d.ts +2 -0
  114. package/esnext/circle-progress/style/css/index.js +2 -0
  115. package/esnext/circle-progress/style/index.d.ts +2 -0
  116. package/esnext/circle-progress/style/index.js +2 -0
  117. package/esnext/circle-progress/style/index.less +101 -0
  118. package/esnext/collapse/collapse.d.ts +3 -0
  119. package/esnext/collapse/collapse.js +111 -0
  120. package/esnext/collapse/group.d.ts +21 -0
  121. package/esnext/collapse/group.js +80 -0
  122. package/esnext/collapse/index.d.ts +23 -0
  123. package/esnext/collapse/index.js +14 -0
  124. package/esnext/collapse/style/css/index.css +662 -0
  125. package/esnext/collapse/style/css/index.d.ts +2 -0
  126. package/esnext/collapse/style/css/index.js +2 -0
  127. package/esnext/collapse/style/index.d.ts +2 -0
  128. package/esnext/collapse/style/index.js +2 -0
  129. package/esnext/collapse/style/index.less +106 -0
  130. package/esnext/collapse/type.d.ts +139 -0
  131. package/esnext/collapse/type.js +1 -0
  132. package/esnext/collapse/utils.d.ts +8 -0
  133. package/esnext/collapse/utils.js +16 -0
  134. package/esnext/context-provider/index.d.ts +74 -0
  135. package/esnext/context-provider/index.js +99 -0
  136. package/esnext/context-provider/style/css/index.css +0 -0
  137. package/esnext/context-provider/style/css/index.d.ts +2 -0
  138. package/esnext/context-provider/style/css/index.js +2 -0
  139. package/esnext/context-provider/style/index.d.ts +2 -0
  140. package/esnext/context-provider/style/index.js +2 -0
  141. package/esnext/context-provider/style/index.less +1 -0
  142. package/esnext/count-down/hooks.d.ts +10 -0
  143. package/esnext/count-down/hooks.js +107 -0
  144. package/esnext/count-down/index.d.ts +13 -0
  145. package/esnext/count-down/index.js +37 -0
  146. package/esnext/count-down/singleton.d.ts +15 -0
  147. package/esnext/count-down/singleton.js +52 -0
  148. package/esnext/count-down/style/css/index.css +534 -0
  149. package/esnext/count-down/style/css/index.d.ts +2 -0
  150. package/esnext/count-down/style/css/index.js +2 -0
  151. package/esnext/count-down/style/index.d.ts +2 -0
  152. package/esnext/count-down/style/index.js +2 -0
  153. package/esnext/count-down/style/index.less +37 -0
  154. package/esnext/count-down/type.d.ts +112 -0
  155. package/esnext/count-down/type.js +1 -0
  156. package/esnext/count-down/util.d.ts +8 -0
  157. package/esnext/count-down/util.js +106 -0
  158. package/esnext/date-picker/helper.d.ts +5 -0
  159. package/esnext/date-picker/helper.js +38 -0
  160. package/esnext/date-picker/index.d.ts +24 -0
  161. package/esnext/date-picker/index.js +217 -0
  162. package/esnext/date-picker/style/css/index.css +526 -0
  163. package/esnext/date-picker/style/css/index.d.ts +3 -0
  164. package/esnext/date-picker/style/css/index.js +3 -0
  165. package/esnext/date-picker/style/index.d.ts +3 -0
  166. package/esnext/date-picker/style/index.js +3 -0
  167. package/esnext/date-picker/style/index.less +30 -0
  168. package/esnext/date-picker/type.d.ts +114 -0
  169. package/esnext/date-picker/type.js +1 -0
  170. package/esnext/dialog/index.d.ts +213 -0
  171. package/esnext/dialog/index.js +87 -0
  172. package/esnext/dialog/methods.d.ts +20 -0
  173. package/esnext/dialog/methods.js +42 -0
  174. package/esnext/dialog/style/css/index.css +1111 -0
  175. package/esnext/dialog/style/css/index.d.ts +3 -0
  176. package/esnext/dialog/style/css/index.js +3 -0
  177. package/esnext/dialog/style/index.d.ts +3 -0
  178. package/esnext/dialog/style/index.js +3 -0
  179. package/esnext/dialog/style/index.less +376 -0
  180. package/esnext/divider/index.d.ts +49 -0
  181. package/esnext/divider/index.js +32 -0
  182. package/esnext/divider/style/css/index.css +609 -0
  183. package/esnext/divider/style/css/index.d.ts +2 -0
  184. package/esnext/divider/style/css/index.js +2 -0
  185. package/esnext/divider/style/index.d.ts +2 -0
  186. package/esnext/divider/style/index.js +2 -0
  187. package/esnext/divider/style/index.less +101 -0
  188. package/esnext/dropdown/dropdown.d.ts +3 -0
  189. package/esnext/dropdown/dropdown.js +196 -0
  190. package/esnext/dropdown/index.d.ts +14 -0
  191. package/esnext/dropdown/index.js +16 -0
  192. package/esnext/dropdown/options.d.ts +4 -0
  193. package/esnext/dropdown/options.js +61 -0
  194. package/esnext/dropdown/style/css/index.css +653 -0
  195. package/esnext/dropdown/style/css/index.d.ts +2 -0
  196. package/esnext/dropdown/style/css/index.js +2 -0
  197. package/esnext/dropdown/style/index.d.ts +2 -0
  198. package/esnext/dropdown/style/index.js +2 -0
  199. package/esnext/dropdown/style/index.less +177 -0
  200. package/esnext/dropdown/type.d.ts +269 -0
  201. package/esnext/dropdown/type.js +1 -0
  202. package/esnext/dropdown-menu/dropdown-menu.d.ts +4 -0
  203. package/esnext/dropdown-menu/dropdown-menu.js +161 -0
  204. package/esnext/dropdown-menu/helper.d.ts +34 -0
  205. package/esnext/dropdown-menu/helper.js +88 -0
  206. package/esnext/dropdown-menu/index.d.ts +12 -0
  207. package/esnext/dropdown-menu/index.js +13 -0
  208. package/esnext/dropdown-menu/style/css/index.css +705 -0
  209. package/esnext/dropdown-menu/style/css/index.d.ts +3 -0
  210. package/esnext/dropdown-menu/style/css/index.js +3 -0
  211. package/esnext/dropdown-menu/style/index.d.ts +3 -0
  212. package/esnext/dropdown-menu/style/index.js +3 -0
  213. package/esnext/dropdown-menu/style/index.less +122 -0
  214. package/esnext/dropdown-menu/type.d.ts +168 -0
  215. package/esnext/dropdown-menu/type.js +1 -0
  216. package/esnext/ellipsis/components/js-ellipsis.d.ts +6 -0
  217. package/esnext/ellipsis/components/js-ellipsis.js +178 -0
  218. package/esnext/ellipsis/components/native-ellipsis.d.ts +5 -0
  219. package/esnext/ellipsis/components/native-ellipsis.js +15 -0
  220. package/esnext/ellipsis/index.d.ts +13 -0
  221. package/esnext/ellipsis/index.js +31 -0
  222. package/esnext/ellipsis/style/css/index.css +556 -0
  223. package/esnext/ellipsis/style/css/index.d.ts +2 -0
  224. package/esnext/ellipsis/style/css/index.js +2 -0
  225. package/esnext/ellipsis/style/index.d.ts +2 -0
  226. package/esnext/ellipsis/style/index.js +2 -0
  227. package/esnext/ellipsis/style/index.less +63 -0
  228. package/esnext/ellipsis/type.d.ts +107 -0
  229. package/esnext/ellipsis/type.js +1 -0
  230. package/esnext/ellipsis/utils/dom.d.ts +2 -0
  231. package/esnext/ellipsis/utils/dom.js +35 -0
  232. package/esnext/ellipsis/utils/is.d.ts +3 -0
  233. package/esnext/ellipsis/utils/is.js +3 -0
  234. package/esnext/form/form-item-context.d.ts +3 -0
  235. package/esnext/form/form-item-context.js +6 -0
  236. package/esnext/form/form-item.d.ts +4 -0
  237. package/esnext/form/form-item.js +218 -0
  238. package/esnext/form/index.d.ts +16 -0
  239. package/esnext/form/index.js +50 -0
  240. package/esnext/form/linked-container.d.ts +8 -0
  241. package/esnext/form/linked-container.js +29 -0
  242. package/esnext/form/style/css/index.css +670 -0
  243. package/esnext/form/style/css/index.d.ts +2 -0
  244. package/esnext/form/style/css/index.js +2 -0
  245. package/esnext/form/style/index.d.ts +2 -0
  246. package/esnext/form/style/index.js +2 -0
  247. package/esnext/form/style/index.less +172 -0
  248. package/esnext/form/type.d.ts +373 -0
  249. package/esnext/form/type.js +26 -0
  250. package/esnext/form/useForm.d.ts +18 -0
  251. package/esnext/form/useForm.js +203 -0
  252. package/esnext/form/utils.d.ts +7 -0
  253. package/esnext/form/utils.js +21 -0
  254. package/esnext/grid/index.d.ts +112 -0
  255. package/esnext/grid/index.js +79 -0
  256. package/esnext/grid/style/css/index.css +661 -0
  257. package/esnext/grid/style/css/index.d.ts +2 -0
  258. package/esnext/grid/style/css/index.js +2 -0
  259. package/esnext/grid/style/index.d.ts +2 -0
  260. package/esnext/grid/style/index.js +2 -0
  261. package/esnext/grid/style/index.less +157 -0
  262. package/esnext/icon/IconAdd/index.d.ts +7 -0
  263. package/esnext/icon/IconAdd/index.js +7 -0
  264. package/esnext/icon/IconArrowBack/index.d.ts +7 -0
  265. package/esnext/icon/IconArrowBack/index.js +7 -0
  266. package/esnext/icon/IconArrowDown/index.d.ts +7 -0
  267. package/esnext/icon/IconArrowDown/index.js +7 -0
  268. package/esnext/icon/IconArrowIn/index.d.ts +7 -0
  269. package/esnext/icon/IconArrowIn/index.js +7 -0
  270. package/esnext/icon/IconArrowUp/index.d.ts +7 -0
  271. package/esnext/icon/IconArrowUp/index.js +7 -0
  272. package/esnext/icon/IconCheck/index.d.ts +7 -0
  273. package/esnext/icon/IconCheck/index.js +7 -0
  274. package/esnext/icon/IconCheckBold/index.d.ts +7 -0
  275. package/esnext/icon/IconCheckBold/index.js +8 -0
  276. package/esnext/icon/IconCircleChecked/index.d.ts +7 -0
  277. package/esnext/icon/IconCircleChecked/index.js +7 -0
  278. package/esnext/icon/IconCircleDisabled/index.d.ts +7 -0
  279. package/esnext/icon/IconCircleDisabled/index.js +7 -0
  280. package/esnext/icon/IconCircleUnchecked/index.d.ts +7 -0
  281. package/esnext/icon/IconCircleUnchecked/index.js +7 -0
  282. package/esnext/icon/IconClear/index.d.ts +7 -0
  283. package/esnext/icon/IconClear/index.js +7 -0
  284. package/esnext/icon/IconClose/index.d.ts +7 -0
  285. package/esnext/icon/IconClose/index.js +7 -0
  286. package/esnext/icon/IconCloseBold/index.d.ts +7 -0
  287. package/esnext/icon/IconCloseBold/index.js +8 -0
  288. package/esnext/icon/IconDelete/index.d.ts +7 -0
  289. package/esnext/icon/IconDelete/index.js +7 -0
  290. package/esnext/icon/IconDownload/index.d.ts +7 -0
  291. package/esnext/icon/IconDownload/index.js +7 -0
  292. package/esnext/icon/IconEdit/index.d.ts +7 -0
  293. package/esnext/icon/IconEdit/index.js +7 -0
  294. package/esnext/icon/IconErrorCircle/index.d.ts +7 -0
  295. package/esnext/icon/IconErrorCircle/index.js +8 -0
  296. package/esnext/icon/IconEyeInvisible/index.d.ts +7 -0
  297. package/esnext/icon/IconEyeInvisible/index.js +7 -0
  298. package/esnext/icon/IconEyeVisible/index.d.ts +7 -0
  299. package/esnext/icon/IconEyeVisible/index.js +7 -0
  300. package/esnext/icon/IconEyelashInvisible/index.d.ts +7 -0
  301. package/esnext/icon/IconEyelashInvisible/index.js +7 -0
  302. package/esnext/icon/IconFile/index.d.ts +7 -0
  303. package/esnext/icon/IconFile/index.js +7 -0
  304. package/esnext/icon/IconGift/index.d.ts +7 -0
  305. package/esnext/icon/IconGift/index.js +8 -0
  306. package/esnext/icon/IconHeart/index.d.ts +7 -0
  307. package/esnext/icon/IconHeart/index.js +8 -0
  308. package/esnext/icon/IconHome/index.d.ts +7 -0
  309. package/esnext/icon/IconHome/index.js +7 -0
  310. package/esnext/icon/IconKeyboard/index.d.ts +7 -0
  311. package/esnext/icon/IconKeyboard/index.js +8 -0
  312. package/esnext/icon/IconKeyboardDelete/index.d.ts +7 -0
  313. package/esnext/icon/IconKeyboardDelete/index.js +8 -0
  314. package/esnext/icon/IconLikeCircle/index.d.ts +7 -0
  315. package/esnext/icon/IconLikeCircle/index.js +7 -0
  316. package/esnext/icon/IconMinus/index.d.ts +7 -0
  317. package/esnext/icon/IconMinus/index.js +8 -0
  318. package/esnext/icon/IconMore/index.d.ts +7 -0
  319. package/esnext/icon/IconMore/index.js +7 -0
  320. package/esnext/icon/IconNotice/index.d.ts +7 -0
  321. package/esnext/icon/IconNotice/index.js +8 -0
  322. package/esnext/icon/IconNoticeOff/index.d.ts +7 -0
  323. package/esnext/icon/IconNoticeOff/index.js +8 -0
  324. package/esnext/icon/IconPicture/index.d.ts +7 -0
  325. package/esnext/icon/IconPicture/index.js +7 -0
  326. package/esnext/icon/IconPlay/index.d.ts +7 -0
  327. package/esnext/icon/IconPlay/index.js +8 -0
  328. package/esnext/icon/IconQuestionCircle/index.d.ts +7 -0
  329. package/esnext/icon/IconQuestionCircle/index.js +7 -0
  330. package/esnext/icon/IconRefresh/index.d.ts +7 -0
  331. package/esnext/icon/IconRefresh/index.js +7 -0
  332. package/esnext/icon/IconSad/index.d.ts +7 -0
  333. package/esnext/icon/IconSad/index.js +7 -0
  334. package/esnext/icon/IconScan/index.d.ts +7 -0
  335. package/esnext/icon/IconScan/index.js +7 -0
  336. package/esnext/icon/IconSearch/index.d.ts +7 -0
  337. package/esnext/icon/IconSearch/index.js +7 -0
  338. package/esnext/icon/IconSetting/index.d.ts +7 -0
  339. package/esnext/icon/IconSetting/index.js +8 -0
  340. package/esnext/icon/IconShop/index.d.ts +7 -0
  341. package/esnext/icon/IconShop/index.js +8 -0
  342. package/esnext/icon/IconShopping/index.d.ts +7 -0
  343. package/esnext/icon/IconShopping/index.js +8 -0
  344. package/esnext/icon/IconSmileFill/index.d.ts +7 -0
  345. package/esnext/icon/IconSmileFill/index.js +7 -0
  346. package/esnext/icon/IconSound/index.d.ts +7 -0
  347. package/esnext/icon/IconSound/index.js +8 -0
  348. package/esnext/icon/IconSquareChecked/index.d.ts +7 -0
  349. package/esnext/icon/IconSquareChecked/index.js +7 -0
  350. package/esnext/icon/IconSquareDisabled/index.d.ts +7 -0
  351. package/esnext/icon/IconSquareDisabled/index.js +7 -0
  352. package/esnext/icon/IconSquareUnchecked/index.d.ts +7 -0
  353. package/esnext/icon/IconSquareUnchecked/index.js +7 -0
  354. package/esnext/icon/IconStar/index.d.ts +7 -0
  355. package/esnext/icon/IconStar/index.js +7 -0
  356. package/esnext/icon/IconStarFill/index.d.ts +7 -0
  357. package/esnext/icon/IconStarFill/index.js +8 -0
  358. package/esnext/icon/IconStarHalf/index.d.ts +7 -0
  359. package/esnext/icon/IconStarHalf/index.js +7 -0
  360. package/esnext/icon/IconSubway/index.d.ts +7 -0
  361. package/esnext/icon/IconSubway/index.js +8 -0
  362. package/esnext/icon/IconSuccessCircle/index.d.ts +7 -0
  363. package/esnext/icon/IconSuccessCircle/index.js +8 -0
  364. package/esnext/icon/IconTriDown/index.d.ts +7 -0
  365. package/esnext/icon/IconTriDown/index.js +8 -0
  366. package/esnext/icon/IconTriUp/index.d.ts +7 -0
  367. package/esnext/icon/IconTriUp/index.js +8 -0
  368. package/esnext/icon/IconUpload/index.d.ts +7 -0
  369. package/esnext/icon/IconUpload/index.js +7 -0
  370. package/esnext/icon/IconUser/index.d.ts +7 -0
  371. package/esnext/icon/IconUser/index.js +7 -0
  372. package/esnext/icon/IconUserFill/index.d.ts +7 -0
  373. package/esnext/icon/IconUserFill/index.js +7 -0
  374. package/esnext/icon/IconWarnCircle/index.d.ts +7 -0
  375. package/esnext/icon/IconWarnCircle/index.js +8 -0
  376. package/esnext/icon/IconWarnCircleFill/index.d.ts +7 -0
  377. package/esnext/icon/IconWarnCircleFill/index.js +8 -0
  378. package/esnext/icon/index.d.ts +59 -0
  379. package/esnext/icon/index.js +59 -0
  380. package/esnext/icon/type.d.ts +10 -0
  381. package/esnext/icon/type.js +1 -0
  382. package/esnext/image/index.d.ts +186 -0
  383. package/esnext/image/index.js +223 -0
  384. package/esnext/image/style/css/index.css +734 -0
  385. package/esnext/image/style/css/index.d.ts +3 -0
  386. package/esnext/image/style/css/index.js +3 -0
  387. package/esnext/image/style/index.d.ts +3 -0
  388. package/esnext/image/style/index.js +3 -0
  389. package/esnext/image/style/index.less +198 -0
  390. package/esnext/image-picker/add-icon.d.ts +2 -0
  391. package/esnext/image-picker/add-icon.js +5 -0
  392. package/esnext/image-picker/index.d.ts +16 -0
  393. package/esnext/image-picker/index.js +77 -0
  394. package/esnext/image-picker/style/css/index.css +688 -0
  395. package/esnext/image-picker/style/css/index.d.ts +4 -0
  396. package/esnext/image-picker/style/css/index.js +4 -0
  397. package/esnext/image-picker/style/index.d.ts +4 -0
  398. package/esnext/image-picker/style/index.js +4 -0
  399. package/esnext/image-picker/style/index.less +170 -0
  400. package/esnext/image-picker/type.d.ts +115 -0
  401. package/esnext/image-picker/type.js +1 -0
  402. package/esnext/image-preview/index.d.ts +296 -0
  403. package/esnext/image-preview/index.js +794 -0
  404. package/esnext/image-preview/methods.d.ts +13 -0
  405. package/esnext/image-preview/methods.js +46 -0
  406. package/esnext/image-preview/style/css/index.css +664 -0
  407. package/esnext/image-preview/style/css/index.d.ts +5 -0
  408. package/esnext/image-preview/style/css/index.js +5 -0
  409. package/esnext/image-preview/style/index.d.ts +5 -0
  410. package/esnext/image-preview/style/index.js +5 -0
  411. package/esnext/image-preview/style/index.less +140 -0
  412. package/esnext/index-bar/context.d.ts +3 -0
  413. package/esnext/index-bar/context.js +6 -0
  414. package/esnext/index-bar/group.d.ts +3 -0
  415. package/esnext/index-bar/group.js +33 -0
  416. package/esnext/index-bar/index.d.ts +15 -0
  417. package/esnext/index-bar/index.js +151 -0
  418. package/esnext/index-bar/side-bar.d.ts +3 -0
  419. package/esnext/index-bar/side-bar.js +44 -0
  420. package/esnext/index-bar/style/css/index.css +767 -0
  421. package/esnext/index-bar/style/css/index.d.ts +3 -0
  422. package/esnext/index-bar/style/css/index.js +3 -0
  423. package/esnext/index-bar/style/index.d.ts +3 -0
  424. package/esnext/index-bar/style/index.js +3 -0
  425. package/esnext/index-bar/style/index.less +189 -0
  426. package/esnext/index-bar/type.d.ts +195 -0
  427. package/esnext/index-bar/type.js +1 -0
  428. package/esnext/index-bar/utils.d.ts +6 -0
  429. package/esnext/index-bar/utils.js +44 -0
  430. package/esnext/index.d.ts +59 -0
  431. package/esnext/index.js +59 -0
  432. package/esnext/input/hooks.d.ts +14 -0
  433. package/esnext/input/hooks.js +174 -0
  434. package/esnext/input/index.d.ts +60 -0
  435. package/esnext/input/index.js +28 -0
  436. package/esnext/input/props.d.ts +182 -0
  437. package/esnext/input/props.js +1 -0
  438. package/esnext/input/style/css/index.css +759 -0
  439. package/esnext/input/style/css/index.d.ts +2 -0
  440. package/esnext/input/style/css/index.js +2 -0
  441. package/esnext/input/style/index.d.ts +2 -0
  442. package/esnext/input/style/index.js +2 -0
  443. package/esnext/input/style/index.less +195 -0
  444. package/esnext/keyboard/index.d.ts +13 -0
  445. package/esnext/keyboard/index.js +159 -0
  446. package/esnext/keyboard/style/css/index.css +633 -0
  447. package/esnext/keyboard/style/css/index.d.ts +3 -0
  448. package/esnext/keyboard/style/css/index.js +3 -0
  449. package/esnext/keyboard/style/index.d.ts +3 -0
  450. package/esnext/keyboard/style/index.js +3 -0
  451. package/esnext/keyboard/style/index.less +131 -0
  452. package/esnext/keyboard/type.d.ts +102 -0
  453. package/esnext/keyboard/type.js +1 -0
  454. package/esnext/load-more/index.d.ts +158 -0
  455. package/esnext/load-more/index.js +150 -0
  456. package/esnext/load-more/style/css/index.css +534 -0
  457. package/esnext/load-more/style/css/index.d.ts +2 -0
  458. package/esnext/load-more/style/css/index.js +2 -0
  459. package/esnext/load-more/style/index.d.ts +2 -0
  460. package/esnext/load-more/style/index.js +2 -0
  461. package/esnext/load-more/style/index.less +37 -0
  462. package/esnext/loading/index.d.ts +76 -0
  463. package/esnext/loading/index.js +123 -0
  464. package/esnext/loading/style/css/index.css +648 -0
  465. package/esnext/loading/style/css/index.d.ts +2 -0
  466. package/esnext/loading/style/css/index.js +2 -0
  467. package/esnext/loading/style/index.d.ts +2 -0
  468. package/esnext/loading/style/index.js +2 -0
  469. package/esnext/loading/style/index.less +147 -0
  470. package/esnext/masking/index.d.ts +225 -0
  471. package/esnext/masking/index.js +114 -0
  472. package/esnext/masking/methods.d.ts +23 -0
  473. package/esnext/masking/methods.js +56 -0
  474. package/esnext/masking/style/css/index.css +552 -0
  475. package/esnext/masking/style/css/index.d.ts +3 -0
  476. package/esnext/masking/style/css/index.js +3 -0
  477. package/esnext/masking/style/index.d.ts +3 -0
  478. package/esnext/masking/style/index.js +3 -0
  479. package/esnext/masking/style/index.less +55 -0
  480. package/esnext/nav-bar/back-icon.d.ts +5 -0
  481. package/esnext/nav-bar/back-icon.js +9 -0
  482. package/esnext/nav-bar/index.d.ts +135 -0
  483. package/esnext/nav-bar/index.js +96 -0
  484. package/esnext/nav-bar/style/css/index.css +706 -0
  485. package/esnext/nav-bar/style/css/index.d.ts +2 -0
  486. package/esnext/nav-bar/style/css/index.js +2 -0
  487. package/esnext/nav-bar/style/index.d.ts +2 -0
  488. package/esnext/nav-bar/style/index.js +2 -0
  489. package/esnext/nav-bar/style/index.less +150 -0
  490. package/esnext/notice-bar/index.d.ts +107 -0
  491. package/esnext/notice-bar/index.js +126 -0
  492. package/esnext/notice-bar/style/css/index.css +685 -0
  493. package/esnext/notice-bar/style/css/index.d.ts +2 -0
  494. package/esnext/notice-bar/style/css/index.js +2 -0
  495. package/esnext/notice-bar/style/index.d.ts +2 -0
  496. package/esnext/notice-bar/style/index.js +2 -0
  497. package/esnext/notice-bar/style/index.less +160 -0
  498. package/esnext/notify/index.d.ts +97 -0
  499. package/esnext/notify/index.js +123 -0
  500. package/esnext/notify/methods.d.ts +14 -0
  501. package/esnext/notify/methods.js +63 -0
  502. package/esnext/notify/style/css/index.css +591 -0
  503. package/esnext/notify/style/css/index.d.ts +2 -0
  504. package/esnext/notify/style/css/index.js +2 -0
  505. package/esnext/notify/style/index.d.ts +2 -0
  506. package/esnext/notify/style/index.js +2 -0
  507. package/esnext/notify/style/index.less +90 -0
  508. package/esnext/notify/type.d.ts +70 -0
  509. package/esnext/notify/type.js +1 -0
  510. package/esnext/pagination/arrow.d.ts +2 -0
  511. package/esnext/pagination/arrow.js +5 -0
  512. package/esnext/pagination/index.d.ts +124 -0
  513. package/esnext/pagination/index.js +104 -0
  514. package/esnext/pagination/style/css/index.css +708 -0
  515. package/esnext/pagination/style/css/index.d.ts +2 -0
  516. package/esnext/pagination/style/css/index.js +2 -0
  517. package/esnext/pagination/style/index.d.ts +2 -0
  518. package/esnext/pagination/style/index.js +2 -0
  519. package/esnext/pagination/style/index.less +176 -0
  520. package/esnext/picker/index.d.ts +50 -0
  521. package/esnext/picker/index.js +93 -0
  522. package/esnext/picker/style/css/index.css +592 -0
  523. package/esnext/picker/style/css/index.d.ts +4 -0
  524. package/esnext/picker/style/css/index.js +4 -0
  525. package/esnext/picker/style/index.d.ts +4 -0
  526. package/esnext/picker/style/index.js +4 -0
  527. package/esnext/picker/style/index.less +95 -0
  528. package/esnext/picker/type.d.ts +131 -0
  529. package/esnext/picker/type.js +1 -0
  530. package/esnext/picker-view/components/cascader.d.ts +25 -0
  531. package/esnext/picker-view/components/cascader.js +54 -0
  532. package/esnext/picker-view/components/multi-picker.d.ts +11 -0
  533. package/esnext/picker-view/components/multi-picker.js +32 -0
  534. package/esnext/picker-view/components/picker-cell.d.ts +28 -0
  535. package/esnext/picker-view/components/picker-cell.js +284 -0
  536. package/esnext/picker-view/index.d.ts +62 -0
  537. package/esnext/picker-view/index.js +135 -0
  538. package/esnext/picker-view/style/css/index.css +750 -0
  539. package/esnext/picker-view/style/css/index.d.ts +2 -0
  540. package/esnext/picker-view/style/css/index.js +2 -0
  541. package/esnext/picker-view/style/index.d.ts +2 -0
  542. package/esnext/picker-view/style/index.js +2 -0
  543. package/esnext/picker-view/style/index.less +125 -0
  544. package/esnext/picker-view/type.d.ts +89 -0
  545. package/esnext/picker-view/type.js +1 -0
  546. package/esnext/popover/hooks/index.d.ts +2 -0
  547. package/esnext/popover/hooks/index.js +2 -0
  548. package/esnext/popover/hooks/useEvent.d.ts +8 -0
  549. package/esnext/popover/hooks/useEvent.js +148 -0
  550. package/esnext/popover/hooks/usePosition.d.ts +18 -0
  551. package/esnext/popover/hooks/usePosition.js +419 -0
  552. package/esnext/popover/index.d.ts +14 -0
  553. package/esnext/popover/index.js +20 -0
  554. package/esnext/popover/menu.d.ts +3 -0
  555. package/esnext/popover/menu.js +80 -0
  556. package/esnext/popover/popover-inner.d.ts +3 -0
  557. package/esnext/popover/popover-inner.js +79 -0
  558. package/esnext/popover/popover.d.ts +3 -0
  559. package/esnext/popover/popover.js +132 -0
  560. package/esnext/popover/style/css/index.css +993 -0
  561. package/esnext/popover/style/css/index.d.ts +3 -0
  562. package/esnext/popover/style/css/index.js +3 -0
  563. package/esnext/popover/style/css/menu.css +673 -0
  564. package/esnext/popover/style/index.d.ts +3 -0
  565. package/esnext/popover/style/index.js +3 -0
  566. package/esnext/popover/style/index.less +353 -0
  567. package/esnext/popover/style/menu.less +163 -0
  568. package/esnext/popover/type.d.ts +447 -0
  569. package/esnext/popover/type.js +1 -0
  570. package/esnext/popup/index.d.ts +86 -0
  571. package/esnext/popup/index.js +39 -0
  572. package/esnext/popup/methods.d.ts +10 -0
  573. package/esnext/popup/methods.js +4 -0
  574. package/esnext/popup/style/css/index.css +638 -0
  575. package/esnext/popup/style/css/index.d.ts +3 -0
  576. package/esnext/popup/style/css/index.js +3 -0
  577. package/esnext/popup/style/index.d.ts +3 -0
  578. package/esnext/popup/style/index.js +3 -0
  579. package/esnext/popup/style/index.less +114 -0
  580. package/esnext/popup-swiper/index.d.ts +93 -0
  581. package/esnext/popup-swiper/index.js +192 -0
  582. package/esnext/popup-swiper/methods.d.ts +10 -0
  583. package/esnext/popup-swiper/methods.js +4 -0
  584. package/esnext/popup-swiper/style/css/index.css +531 -0
  585. package/esnext/popup-swiper/style/css/index.d.ts +3 -0
  586. package/esnext/popup-swiper/style/css/index.js +3 -0
  587. package/esnext/popup-swiper/style/index.d.ts +3 -0
  588. package/esnext/popup-swiper/style/index.js +3 -0
  589. package/esnext/popup-swiper/style/index.less +35 -0
  590. package/esnext/portal/index.d.ts +23 -0
  591. package/esnext/portal/index.js +18 -0
  592. package/esnext/portal/style/css/index.css +0 -0
  593. package/esnext/portal/style/css/index.d.ts +2 -0
  594. package/esnext/portal/style/css/index.js +2 -0
  595. package/esnext/portal/style/index.d.ts +2 -0
  596. package/esnext/portal/style/index.js +2 -0
  597. package/esnext/portal/style/index.less +1 -0
  598. package/esnext/progress/index.d.ts +126 -0
  599. package/esnext/progress/index.js +66 -0
  600. package/esnext/progress/style/css/index.css +692 -0
  601. package/esnext/progress/style/css/index.d.ts +2 -0
  602. package/esnext/progress/style/css/index.js +2 -0
  603. package/esnext/progress/style/index.d.ts +2 -0
  604. package/esnext/progress/style/index.js +2 -0
  605. package/esnext/progress/style/index.less +205 -0
  606. package/esnext/pull-refresh/android-pull-refresh.d.ts +3 -0
  607. package/esnext/pull-refresh/android-pull-refresh.js +168 -0
  608. package/esnext/pull-refresh/hooks.d.ts +30 -0
  609. package/esnext/pull-refresh/hooks.js +73 -0
  610. package/esnext/pull-refresh/index.d.ts +28 -0
  611. package/esnext/pull-refresh/index.js +21 -0
  612. package/esnext/pull-refresh/ios-pull-refresh.d.ts +3 -0
  613. package/esnext/pull-refresh/ios-pull-refresh.js +137 -0
  614. package/esnext/pull-refresh/model.d.ts +111 -0
  615. package/esnext/pull-refresh/model.js +8 -0
  616. package/esnext/pull-refresh/style/css/index.css +650 -0
  617. package/esnext/pull-refresh/style/css/index.d.ts +3 -0
  618. package/esnext/pull-refresh/style/css/index.js +3 -0
  619. package/esnext/pull-refresh/style/index.d.ts +3 -0
  620. package/esnext/pull-refresh/style/index.js +3 -0
  621. package/esnext/pull-refresh/style/index.less +131 -0
  622. package/esnext/radio/group.d.ts +5 -0
  623. package/esnext/radio/group.js +50 -0
  624. package/esnext/radio/index.d.ts +19 -0
  625. package/esnext/radio/index.js +22 -0
  626. package/esnext/radio/radio.d.ts +5 -0
  627. package/esnext/radio/radio.js +13 -0
  628. package/esnext/radio/style/css/index.css +604 -0
  629. package/esnext/radio/style/css/index.d.ts +2 -0
  630. package/esnext/radio/style/css/index.js +2 -0
  631. package/esnext/radio/style/index.d.ts +2 -0
  632. package/esnext/radio/style/index.js +2 -0
  633. package/esnext/radio/style/index.less +114 -0
  634. package/esnext/radio/type.d.ts +31 -0
  635. package/esnext/radio/type.js +1 -0
  636. package/esnext/rate/index.d.ts +109 -0
  637. package/esnext/rate/index.js +87 -0
  638. package/esnext/rate/style/css/index.css +595 -0
  639. package/esnext/rate/style/css/index.d.ts +2 -0
  640. package/esnext/rate/style/css/index.js +2 -0
  641. package/esnext/rate/style/index.d.ts +2 -0
  642. package/esnext/rate/style/index.js +2 -0
  643. package/esnext/rate/style/index.less +106 -0
  644. package/esnext/search-bar/association.d.ts +3 -0
  645. package/esnext/search-bar/association.js +51 -0
  646. package/esnext/search-bar/cancel-button.d.ts +10 -0
  647. package/esnext/search-bar/cancel-button.js +18 -0
  648. package/esnext/search-bar/highlight.d.ts +12 -0
  649. package/esnext/search-bar/highlight.js +46 -0
  650. package/esnext/search-bar/index.d.ts +13 -0
  651. package/esnext/search-bar/index.js +109 -0
  652. package/esnext/search-bar/style/css/index.css +765 -0
  653. package/esnext/search-bar/style/css/index.d.ts +2 -0
  654. package/esnext/search-bar/style/css/index.js +2 -0
  655. package/esnext/search-bar/style/index.d.ts +2 -0
  656. package/esnext/search-bar/style/index.js +2 -0
  657. package/esnext/search-bar/style/index.less +198 -0
  658. package/esnext/search-bar/type.d.ts +163 -0
  659. package/esnext/search-bar/type.js +1 -0
  660. package/esnext/show-monitor/index.d.ts +115 -0
  661. package/esnext/show-monitor/index.js +416 -0
  662. package/esnext/show-monitor/style/css/index.css +0 -0
  663. package/esnext/show-monitor/style/css/index.d.ts +2 -0
  664. package/esnext/show-monitor/style/css/index.js +2 -0
  665. package/esnext/show-monitor/style/index.d.ts +2 -0
  666. package/esnext/show-monitor/style/index.js +2 -0
  667. package/esnext/show-monitor/style/index.less +1 -0
  668. package/esnext/skeleton/elements.d.ts +7 -0
  669. package/esnext/skeleton/elements.js +117 -0
  670. package/esnext/skeleton/index.d.ts +19 -0
  671. package/esnext/skeleton/index.js +50 -0
  672. package/esnext/skeleton/skeleton-context.d.ts +3 -0
  673. package/esnext/skeleton/skeleton-context.js +5 -0
  674. package/esnext/skeleton/style/css/index.css +712 -0
  675. package/esnext/skeleton/style/css/index.d.ts +3 -0
  676. package/esnext/skeleton/style/css/index.js +3 -0
  677. package/esnext/skeleton/style/index.d.ts +3 -0
  678. package/esnext/skeleton/style/index.js +3 -0
  679. package/esnext/skeleton/style/index.less +182 -0
  680. package/esnext/skeleton/type.d.ts +105 -0
  681. package/esnext/skeleton/type.js +1 -0
  682. package/esnext/slider/hooks/index.d.ts +12 -0
  683. package/esnext/slider/hooks/index.js +33 -0
  684. package/esnext/slider/hooks/useSliderEvents.d.ts +17 -0
  685. package/esnext/slider/hooks/useSliderEvents.js +128 -0
  686. package/esnext/slider/hooks/useSliderIcon.d.ts +7 -0
  687. package/esnext/slider/hooks/useSliderIcon.js +41 -0
  688. package/esnext/slider/hooks/useSliderInit.d.ts +14 -0
  689. package/esnext/slider/hooks/useSliderInit.js +146 -0
  690. package/esnext/slider/hooks/useSliderStyle.d.ts +13 -0
  691. package/esnext/slider/hooks/useSliderStyle.js +39 -0
  692. package/esnext/slider/index.d.ts +163 -0
  693. package/esnext/slider/index.js +120 -0
  694. package/esnext/slider/marks.d.ts +11 -0
  695. package/esnext/slider/marks.js +17 -0
  696. package/esnext/slider/popover.d.ts +6 -0
  697. package/esnext/slider/popover.js +13 -0
  698. package/esnext/slider/style/css/index.css +863 -0
  699. package/esnext/slider/style/css/index.d.ts +3 -0
  700. package/esnext/slider/style/css/index.js +3 -0
  701. package/esnext/slider/style/index.d.ts +3 -0
  702. package/esnext/slider/style/index.js +3 -0
  703. package/esnext/slider/style/index.less +366 -0
  704. package/esnext/slider/thumb.d.ts +9 -0
  705. package/esnext/slider/thumb.js +21 -0
  706. package/esnext/stepper/hooks/useButtonClick.d.ts +11 -0
  707. package/esnext/stepper/hooks/useButtonClick.js +46 -0
  708. package/esnext/stepper/hooks/useInputEvent.d.ts +10 -0
  709. package/esnext/stepper/hooks/useInputEvent.js +41 -0
  710. package/esnext/stepper/hooks/useValue.d.ts +7 -0
  711. package/esnext/stepper/hooks/useValue.js +33 -0
  712. package/esnext/stepper/index.d.ts +16 -0
  713. package/esnext/stepper/index.js +81 -0
  714. package/esnext/stepper/style/css/index.css +636 -0
  715. package/esnext/stepper/style/css/index.d.ts +2 -0
  716. package/esnext/stepper/style/css/index.js +2 -0
  717. package/esnext/stepper/style/index.d.ts +2 -0
  718. package/esnext/stepper/style/index.js +2 -0
  719. package/esnext/stepper/style/index.less +161 -0
  720. package/esnext/stepper/type.d.ts +159 -0
  721. package/esnext/stepper/type.js +1 -0
  722. package/esnext/steps/index.d.ts +19 -0
  723. package/esnext/steps/index.js +50 -0
  724. package/esnext/steps/step.d.ts +4 -0
  725. package/esnext/steps/step.js +43 -0
  726. package/esnext/steps/style/css/index.css +877 -0
  727. package/esnext/steps/style/css/index.d.ts +2 -0
  728. package/esnext/steps/style/css/index.js +2 -0
  729. package/esnext/steps/style/index.d.ts +2 -0
  730. package/esnext/steps/style/index.js +2 -0
  731. package/esnext/steps/style/index.less +407 -0
  732. package/esnext/steps/type.d.ts +110 -0
  733. package/esnext/steps/type.js +1 -0
  734. package/esnext/sticky/index.d.ts +141 -0
  735. package/esnext/sticky/index.js +165 -0
  736. package/esnext/sticky/style/css/index.css +526 -0
  737. package/esnext/sticky/style/css/index.d.ts +2 -0
  738. package/esnext/sticky/style/css/index.js +2 -0
  739. package/esnext/sticky/style/index.d.ts +2 -0
  740. package/esnext/sticky/style/index.js +2 -0
  741. package/esnext/sticky/style/index.less +30 -0
  742. package/esnext/style.d.ts +60 -0
  743. package/esnext/style.js +60 -0
  744. package/esnext/swipe-action/index.d.ts +13 -0
  745. package/esnext/swipe-action/index.js +220 -0
  746. package/esnext/swipe-action/item.d.ts +11 -0
  747. package/esnext/swipe-action/item.js +20 -0
  748. package/esnext/swipe-action/style/css/index.css +620 -0
  749. package/esnext/swipe-action/style/css/index.d.ts +2 -0
  750. package/esnext/swipe-action/style/css/index.js +2 -0
  751. package/esnext/swipe-action/style/index.d.ts +2 -0
  752. package/esnext/swipe-action/style/index.js +2 -0
  753. package/esnext/swipe-action/style/index.less +132 -0
  754. package/esnext/swipe-action/type.d.ts +123 -0
  755. package/esnext/swipe-action/type.js +1 -0
  756. package/esnext/swipe-load/index.d.ts +13 -0
  757. package/esnext/swipe-load/index.js +255 -0
  758. package/esnext/swipe-load/style/css/index.css +561 -0
  759. package/esnext/swipe-load/style/css/index.d.ts +2 -0
  760. package/esnext/swipe-load/style/css/index.js +2 -0
  761. package/esnext/swipe-load/style/index.d.ts +2 -0
  762. package/esnext/swipe-load/style/index.js +2 -0
  763. package/esnext/swipe-load/style/index.less +66 -0
  764. package/esnext/swipe-load/type.d.ts +152 -0
  765. package/esnext/swipe-load/type.js +1 -0
  766. package/esnext/switch/index.d.ts +105 -0
  767. package/esnext/switch/index.js +83 -0
  768. package/esnext/switch/style/css/index.css +765 -0
  769. package/esnext/switch/style/css/index.d.ts +2 -0
  770. package/esnext/switch/style/css/index.js +2 -0
  771. package/esnext/switch/style/index.d.ts +2 -0
  772. package/esnext/switch/style/index.js +2 -0
  773. package/esnext/switch/style/index.less +217 -0
  774. package/esnext/tab-bar/index.d.ts +14 -0
  775. package/esnext/tab-bar/index.js +16 -0
  776. package/esnext/tab-bar/item.d.ts +3 -0
  777. package/esnext/tab-bar/item.js +31 -0
  778. package/esnext/tab-bar/style/css/index.css +617 -0
  779. package/esnext/tab-bar/style/css/index.d.ts +2 -0
  780. package/esnext/tab-bar/style/css/index.js +2 -0
  781. package/esnext/tab-bar/style/index.d.ts +2 -0
  782. package/esnext/tab-bar/style/index.js +2 -0
  783. package/esnext/tab-bar/style/index.less +96 -0
  784. package/esnext/tab-bar/tab-bar.d.ts +11 -0
  785. package/esnext/tab-bar/tab-bar.js +40 -0
  786. package/esnext/tab-bar/type.d.ts +95 -0
  787. package/esnext/tab-bar/type.js +1 -0
  788. package/esnext/tabs/index.d.ts +13 -0
  789. package/esnext/tabs/index.js +340 -0
  790. package/esnext/tabs/style/css/index.css +1162 -0
  791. package/esnext/tabs/style/css/index.d.ts +2 -0
  792. package/esnext/tabs/style/css/index.js +2 -0
  793. package/esnext/tabs/style/index.d.ts +2 -0
  794. package/esnext/tabs/style/index.js +2 -0
  795. package/esnext/tabs/style/index.less +559 -0
  796. package/esnext/tabs/tab-cell-underline.d.ts +4 -0
  797. package/esnext/tabs/tab-cell-underline.js +237 -0
  798. package/esnext/tabs/tab-cell.d.ts +4 -0
  799. package/esnext/tabs/tab-cell.js +258 -0
  800. package/esnext/tabs/tab-pane.d.ts +4 -0
  801. package/esnext/tabs/tab-pane.js +241 -0
  802. package/esnext/tabs/type.d.ts +629 -0
  803. package/esnext/tabs/type.js +1 -0
  804. package/esnext/tag/index.d.ts +14 -0
  805. package/esnext/tag/index.js +20 -0
  806. package/esnext/tag/list.d.ts +3 -0
  807. package/esnext/tag/list.js +47 -0
  808. package/esnext/tag/style/css/index.css +738 -0
  809. package/esnext/tag/style/css/index.d.ts +2 -0
  810. package/esnext/tag/style/css/index.js +2 -0
  811. package/esnext/tag/style/index.d.ts +2 -0
  812. package/esnext/tag/style/index.js +2 -0
  813. package/esnext/tag/style/index.less +188 -0
  814. package/esnext/tag/tag.d.ts +3 -0
  815. package/esnext/tag/tag.js +32 -0
  816. package/esnext/tag/type.d.ts +159 -0
  817. package/esnext/tag/type.js +1 -0
  818. package/esnext/textarea/index.d.ts +96 -0
  819. package/esnext/textarea/index.js +88 -0
  820. package/esnext/textarea/style/css/index.css +572 -0
  821. package/esnext/textarea/style/css/index.d.ts +3 -0
  822. package/esnext/textarea/style/css/index.js +3 -0
  823. package/esnext/textarea/style/index.d.ts +3 -0
  824. package/esnext/textarea/style/index.js +3 -0
  825. package/esnext/textarea/style/index.less +84 -0
  826. package/esnext/toast/index.d.ts +257 -0
  827. package/esnext/toast/index.js +142 -0
  828. package/esnext/toast/methods.d.ts +16 -0
  829. package/esnext/toast/methods.js +61 -0
  830. package/esnext/toast/style/css/index.css +658 -0
  831. package/esnext/toast/style/css/index.d.ts +4 -0
  832. package/esnext/toast/style/css/index.js +4 -0
  833. package/esnext/toast/style/index.d.ts +4 -0
  834. package/esnext/toast/style/index.js +4 -0
  835. package/esnext/toast/style/index.less +130 -0
  836. package/esnext/transition/index.d.ts +49 -0
  837. package/esnext/transition/index.js +15 -0
  838. package/esnext/transition/style/css/index.css +549 -0
  839. package/esnext/transition/style/css/index.d.ts +2 -0
  840. package/esnext/transition/style/css/index.js +2 -0
  841. package/esnext/transition/style/index.d.ts +2 -0
  842. package/esnext/transition/style/index.js +2 -0
  843. package/esnext/transition/style/index.less +53 -0
  844. package/esnext/uploader/index.d.ts +16 -0
  845. package/esnext/uploader/index.js +75 -0
  846. package/esnext/uploader/style/css/index.css +666 -0
  847. package/esnext/uploader/style/css/index.d.ts +4 -0
  848. package/esnext/uploader/style/css/index.js +4 -0
  849. package/esnext/uploader/style/index.d.ts +4 -0
  850. package/esnext/uploader/style/index.js +4 -0
  851. package/esnext/uploader/style/index.less +161 -0
  852. package/esnext/uploader/type.d.ts +108 -0
  853. package/esnext/uploader/type.js +1 -0
  854. package/esnext/uploader/upload/index.d.ts +2 -0
  855. package/esnext/uploader/upload/index.js +2 -0
  856. package/esnext/uploader/upload/type.d.ts +107 -0
  857. package/esnext/uploader/upload/type.js +1 -0
  858. package/esnext/uploader/upload/upload.d.ts +20 -0
  859. package/esnext/uploader/upload/upload.js +123 -0
  860. package/esnext-tsconfig.json +23 -0
  861. package/package.json +3 -3
  862. package/umd/_helpers/index.d.ts +1 -0
  863. package/umd/_helpers/index.js +10 -4
  864. package/umd/_helpers/react-dom.js +21 -14
  865. package/umd/stepper/style/css/index.css +3 -4
  866. package/umd/stepper/style/index.less +1 -2
@@ -0,0 +1,660 @@
1
+ /**
2
+ * @type hooks
3
+ * @name GeneralHooks
4
+ * @name_en General Hooks
5
+ */
6
+ import { useState, useRef, useEffect, useCallback, useContext } from 'react';
7
+ import { getSystem, scrollWithAnimation, safeGetComputedStyle } from '@arco-design/mobile-utils';
8
+ import { GlobalContext } from '../context-provider';
9
+ /**
10
+ * 监听页面resize事件的统一封装
11
+ * @desc {en} Unified encapsulation for monitoring page resize events
12
+ * @param resizeHandler resize事件回调
13
+ * @param resizeHandler {en} Resize event callback
14
+ * @param deps 触发事件绑定更新的依赖
15
+ * @param deps {en} Dependencies that trigger event binding updates
16
+ * @param needListen 是否开启事件监听,默认开启
17
+ * @param needListen {en} Whether to enable event monitoring
18
+ * @example
19
+ * ```
20
+ * import { useListenResize } from '@arco-design/mobile-react/esm/_helpers/hooks';
21
+ *
22
+ * useListenResize(setSize, [], listenResize);
23
+ * ```
24
+ */
25
+ export function useListenResize(resizeHandler, deps = [], needListen = true) {
26
+ useEffect(() => {
27
+ if (needListen) {
28
+ window.addEventListener('resize', resizeHandler);
29
+ window.addEventListener('orientationchange', resizeHandler);
30
+ }
31
+ return () => {
32
+ if (needListen) {
33
+ window.removeEventListener('resize', resizeHandler);
34
+ window.removeEventListener('orientationchange', resizeHandler);
35
+ }
36
+ };
37
+ }, [...deps, needListen]);
38
+ }
39
+ /**
40
+ * useState自定义封装,统一处理在组件卸载后还使用setState的行为
41
+ * tips:在unmount后有异步处理未完成的场景使用,不推荐无脑替换useState
42
+ * @desc {en} Custom encapsulation of useState, uniformly handle the behavior of using setState after the component is unloaded
43
+ * @desc {en} Tips: Use in scenarios where asynchronous processing is not completed after unmount. It is not recommended to replace useState without brains
44
+ * @param initialState 初始状态
45
+ * @param initialState {en} Initial State
46
+ * @returns [state, setState],同useState返回值
47
+ * @example
48
+ * ```
49
+ * import { useMountedState } from '@arco-design/mobile-react/esm/_helpers/hooks';
50
+ *
51
+ * const [scrollValue, setScrollValue] = useMountedState(value);
52
+ * ```
53
+ */
54
+ export function useMountedState(initialState) {
55
+ const [state, setState] = useState(initialState);
56
+ const leavingRef = useRef(false);
57
+ const setValidState = useCallback(value => {
58
+ if (leavingRef.current) {
59
+ return;
60
+ }
61
+ setState(value);
62
+ }, []);
63
+ useEffect(() => () => {
64
+ leavingRef.current = true;
65
+ }, []);
66
+ const result = [state, setValidState];
67
+ return result;
68
+ }
69
+ /**
70
+ * 用useState管理状态,且在状态更新之前同步至ref,并返回ref
71
+ * @desc {en} Use useState to manage the state, and synchronize to ref before the state is updated, and return ref
72
+ * @param initialValue 初始状态
73
+ * @param initialValue {en} Initial State
74
+ * @returns [state, stateRef, setState]
75
+ * @example
76
+ * ```
77
+ * import { useSameRefState } from '@arco-design/mobile-react/esm/_helpers/hooks';
78
+ *
79
+ * const [opened, openedRef, setOpened] = useSameRefState(false);
80
+ * ```
81
+ */
82
+ export function useSameRefState(initialValue) {
83
+ const [state, setState] = useState(initialValue);
84
+ const stateRef = useRef(state);
85
+ const setStateProxy = (data) => {
86
+ stateRef.current = data;
87
+ setState(data);
88
+ };
89
+ return [state, stateRef, setStateProxy];
90
+ }
91
+ /**
92
+ * 用useState管理状态,且在状态更新后同步至ref,并返回ref
93
+ * @desc {en} Use useState to manage the state, and synchronize to ref after the state is updated, and return ref
94
+ * @param initialValue 初始状态
95
+ * @param initialValue {en} Initial State
96
+ * @returns [state, stateRef, setState]
97
+ * @example
98
+ * ```
99
+ * import { useRefState } from '@arco-design/mobile-react/esm/_helpers/hooks';
100
+ *
101
+ * const [index, indexRef, setIndex] = useRefState(currentIndex);
102
+ * ```
103
+ */
104
+ export function useRefState(initialValue) {
105
+ const [state, setState] = useState(initialValue);
106
+ const stateRef = useRef(state);
107
+ useEffect(() => {
108
+ stateRef.current = state;
109
+ }, [state]);
110
+ return [state, stateRef, setState];
111
+ }
112
+ /**
113
+ * 用useState管理状态,且在状态更新后同步至ref,并返回ref,统一处理在组件卸载后还使用setState的行为
114
+ * @desc {en} Use useState to manage the state, and synchronize to ref after the state is updated, and return ref, and uniformly handle the behavior of using setState after the component is uninstalled
115
+ * @param initialValue 初始状态
116
+ * @param initialValue {en} Initial State
117
+ * @returns [state, stateRef, setState]
118
+ * @example
119
+ * ```
120
+ * import { useRefMountedState } from '@arco-design/mobile-react/esm/_helpers/hooks';
121
+ *
122
+ * const [active, activeRef, setActive] = useRefMountedState(false);
123
+ * ```
124
+ */
125
+ export function useRefMountedState(initialValue) {
126
+ const [state, setState] = useMountedState(initialValue);
127
+ const stateRef = useRef(state);
128
+ useEffect(() => {
129
+ stateRef.current = state;
130
+ }, [state]);
131
+ return [state, stateRef, setState];
132
+ }
133
+ /**
134
+ * useEffect特殊封装,仅在非首次依赖更新时触发回调
135
+ * @desc {en} Special encapsulation of useEffect, which only triggers the callback when the dependency is not updated for the first time
136
+ * @param effect useEffect回调
137
+ * @param effect {en} useEffect callback
138
+ * @param dependencies useEffect依赖
139
+ * @param dependencies {en} useEffect dependencies
140
+ * @example
141
+ * ```
142
+ * import { useUpdateEffect } from '@arco-design/mobile-react/esm/_helpers/hooks';
143
+ *
144
+ * useUpdateEffect(() => {
145
+ * handleIndexChange(index);
146
+ * }, [index]);
147
+ * ```
148
+ */
149
+ export function useUpdateEffect(effect, dependencies = []) {
150
+ const isInitialMount = useRef(true);
151
+ useEffect(() => {
152
+ if (isInitialMount.current) {
153
+ isInitialMount.current = false;
154
+ }
155
+ else {
156
+ return effect();
157
+ }
158
+ }, dependencies);
159
+ }
160
+ /**
161
+ * 手动触发一次组件的rerender
162
+ * @desc {en} Manually trigger the rerender of the component once
163
+ * @example
164
+ * ```
165
+ * import { useForceUpdate } from '@arco-design/mobile-react/esm/_helpers/hooks';
166
+ *
167
+ * const update = useForceUpdate();
168
+ *
169
+ * function forceUpdate() {
170
+ * update();
171
+ * }
172
+ * ```
173
+ */
174
+ export function useForceUpdate() {
175
+ const [, setTick] = useState(0);
176
+ const update = useCallback(() => {
177
+ setTick(tick => tick + 1);
178
+ }, []);
179
+ return update;
180
+ }
181
+ /**
182
+ * 获取任意变量的最新ref值(用于监听属性、方法等非state变量)
183
+ * @desc {en} Get the latest ref value of any variable (used to monitor non-state variables such as properties and methods)
184
+ * @param variable 待获取最新值的变量
185
+ * @param variable {en} Variable to get latest value
186
+ * @returns variableRef,变量的最新ref值
187
+ * @example
188
+ * ```
189
+ * import { useLatestRef } from '@arco-design/mobile-react/esm/_helpers/hooks';
190
+ *
191
+ * const { wrapSize } = props;
192
+ * const wrapSizeRef = useLatestRef(wrapSize);
193
+ * ```
194
+ */
195
+ export function useLatestRef(variable) {
196
+ const variableRef = useRef(variable);
197
+ useEffect(() => {
198
+ variableRef.current = variable;
199
+ }, [variable]);
200
+ return variableRef;
201
+ }
202
+ /**
203
+ * 从navigator.userAgent中获取当前操作系统,如果无法获取ua,则从ContextProvider传入的system中获取值
204
+ * @desc {en} Get the current operating system from navigator.userAgent, if ua cannot be obtained, get the value from the system passed in by ContextProvider
205
+ * @returns system 操作系统,"" | "pc" | "android" | "ios"
206
+ * @example
207
+ * ```
208
+ * import { useSystem } from '@arco-design/mobile-react/esm/_helpers/hooks';
209
+ *
210
+ * const system = useSystem();
211
+ * ```
212
+ */
213
+ export function useSystem() {
214
+ const { system: currentSystem } = useContext(GlobalContext);
215
+ const [system, setSystem] = useState(() => currentSystem || getSystem());
216
+ useEffect(() => {
217
+ setSystem(currentSystem || getSystem());
218
+ }, [currentSystem]);
219
+ return system;
220
+ }
221
+ /**
222
+ * 获取页面视口宽高大小,并在页面有resize时更新大小
223
+ * @desc {en} Get the width and height of the page viewport, and update the size when the page is resized
224
+ * @param needListen 是否开启resize事件监听
225
+ * @param needListen {en} Whether to enable resize event monitoring
226
+ * @returns 页面宽高,{ windowWidth, windowHeight }
227
+ * @example
228
+ * ```
229
+ * import { useWindowSize } from '@arco-design/mobile-react/esm/_helpers/hooks';
230
+ *
231
+ * const { windowHeight, windowWidth } = useWindowSize();
232
+ * ```
233
+ */
234
+ export function useWindowSize(listenResize) {
235
+ const [windowWidth, setWindowWidth] = useState(typeof window !== 'undefined' ? window.innerWidth : 0);
236
+ const [windowHeight, setWindowHeight] = useState(typeof window !== 'undefined' ? window.innerHeight : 0);
237
+ function setSize() {
238
+ setWindowWidth(window.innerWidth);
239
+ setWindowHeight(window.innerHeight);
240
+ }
241
+ useListenResize(setSize, [], listenResize);
242
+ useEffect(() => {
243
+ setSize();
244
+ }, []);
245
+ return { windowWidth, windowHeight };
246
+ }
247
+ /**
248
+ * 弹窗中滚动统一处理,防止滚动穿透
249
+ * @desc {en} Unified processing of scrolling in pop-up windows to prevent scrolling penetration
250
+ * @param visible 弹窗是否被打开
251
+ * @param visible {en} Whether the popup is opened
252
+ * @param popupDom 弹窗的dom元素
253
+ * @param popupDom {en} DOM element of the popup
254
+ * @param getScrollContainer 弹窗中的滚动容器,可传入多个
255
+ * @param getScrollContainer {en} The scrolling container in the popup, which can pass in multiple
256
+ * @param orientationDirection 弹窗内容朝向,默认为top(从上到下),用于实现模拟横屏
257
+ * @param orientationDirection {en} The content orientation of the popup, the default is top (from top to bottom), which is used to simulate a horizontal screen
258
+ * @param preventCallback 在滚动穿透被阻止(preventDefault被触发)时的回调
259
+ * @param preventCallback {en} Callback when scrolling is blocked (preventDefault is triggered)
260
+ * @param onTouchMove touchmove 自定义事件
261
+ * @param onTouchMove {en} Touchmove custom event
262
+ * @param gestureOutOfControl 是否禁用滚动穿透处理
263
+ * @param gestureOutOfControl {en} Whether to disable scroll through processing
264
+ * @example
265
+ * ```
266
+ * import { usePopupScroll } from '@arco-design/mobile-react/esm/_helpers/hooks';
267
+ *
268
+ * usePopupScroll(visible, domRef.current, getScrollContainer, orientationDirection, onPreventTouchMove, onTouchMove, gestureOutOfControl);
269
+ * ```
270
+ */
271
+ export function usePopupScroll(visible, popupDom, getScrollContainer, orientationDirection = 'top', preventCallback, onTouchMove, gestureOutOfControl) {
272
+ const scrollRef = useRef([]);
273
+ const touchingRef = useRef({ dom: null, inScrollIndexes: [] });
274
+ const touchStartYRef = useRef(0);
275
+ const touchStartXRef = useRef(0);
276
+ const preventCallbackRef = useLatestRef(preventCallback);
277
+ const onTouchMoveRef = useLatestRef(onTouchMove);
278
+ const handleTouchStart = useCallback((e) => {
279
+ if (gestureOutOfControl) {
280
+ return;
281
+ }
282
+ touchStartXRef.current = e.touches && e.touches[0] ? e.touches[0].clientX : 0;
283
+ touchStartYRef.current = e.touches && e.touches[0] ? e.touches[0].clientY : 0;
284
+ const ele = getScrollContainer
285
+ ? getScrollContainer()
286
+ : null;
287
+ if (ele) {
288
+ const actualEle = Array.isArray(ele) ? ele : [ele];
289
+ scrollRef.current = actualEle.reduce((acc, nowEle) => [
290
+ ...acc,
291
+ ...(nowEle && safeGetComputedStyle(nowEle).overflow !== 'hidden'
292
+ ? [
293
+ {
294
+ ele: nowEle,
295
+ maxScrollX: orientationDirection === 'left' ||
296
+ orientationDirection === 'right'
297
+ ? nowEle.scrollHeight - nowEle.clientHeight
298
+ : nowEle.scrollWidth - nowEle.clientWidth,
299
+ maxScrollY: orientationDirection === 'left' ||
300
+ orientationDirection === 'right'
301
+ ? nowEle.scrollWidth - nowEle.clientWidth
302
+ : nowEle.scrollHeight - nowEle.clientHeight,
303
+ },
304
+ ]
305
+ : []),
306
+ ], []);
307
+ }
308
+ else {
309
+ scrollRef.current = [];
310
+ }
311
+ touchingRef.current = { dom: null, inScrollIndexes: [] };
312
+ }, [getScrollContainer, gestureOutOfControl, orientationDirection]);
313
+ function judgeInScroll(originNode, scroll) {
314
+ const inScrollIndexes = [];
315
+ for (let i = 0; i < scroll.length; i += 1) {
316
+ let node = originNode;
317
+ while (node && scroll[i]) {
318
+ if (node === scroll[i].ele) {
319
+ inScrollIndexes.push(i);
320
+ break;
321
+ }
322
+ else {
323
+ node = node.parentElement;
324
+ }
325
+ }
326
+ }
327
+ touchingRef.current = { dom: originNode, inScrollIndexes };
328
+ return inScrollIndexes;
329
+ }
330
+ const handleTouchMove = useCallback((e) => {
331
+ function getScrollTop(scroll) {
332
+ const { ele, maxScrollX, maxScrollY } = scroll;
333
+ switch (orientationDirection) {
334
+ case 'left':
335
+ return maxScrollY - ele.scrollLeft;
336
+ case 'right':
337
+ return ele.scrollLeft;
338
+ case 'bottom':
339
+ return maxScrollX - ele.scrollTop;
340
+ case 'top':
341
+ default:
342
+ return ele.scrollTop;
343
+ }
344
+ }
345
+ function getScrollLeft(scroll) {
346
+ const { ele, maxScrollX, maxScrollY } = scroll;
347
+ switch (orientationDirection) {
348
+ case 'left':
349
+ return ele.scrollTop;
350
+ case 'right':
351
+ return maxScrollX - ele.scrollTop;
352
+ case 'bottom':
353
+ return maxScrollY - ele.scrollLeft;
354
+ case 'top':
355
+ default:
356
+ return ele.scrollLeft;
357
+ }
358
+ }
359
+ const touchMoveX = e.changedTouches && e.changedTouches[0] ? e.changedTouches[0].clientX : 0;
360
+ const touchMoveY = e.changedTouches && e.changedTouches[0] ? e.changedTouches[0].clientY : 0;
361
+ const scroll = scrollRef.current;
362
+ const node = e.target;
363
+ const { dom: touchingDom, inScrollIndexes: touchingIndexes } = touchingRef.current;
364
+ // target一样就取缓存结果,不取dom判断了
365
+ // @en If the target is the same, the cached result is taken, and the dom judgment is not taken.
366
+ const inScrollIndexes = touchingDom === node ? touchingIndexes : judgeInScroll(node, scroll);
367
+ const distanceX = touchMoveX - touchStartXRef.current;
368
+ const distanceY = touchMoveY - touchStartYRef.current;
369
+ const absX = Math.abs(distanceX);
370
+ const absY = Math.abs(distanceY);
371
+ const direc = absY > absX ? 'y' : 'x';
372
+ let prevented = false;
373
+ if (gestureOutOfControl) {
374
+ onTouchMoveRef.current?.(e, prevented, direc);
375
+ return;
376
+ }
377
+ if (scroll.length && inScrollIndexes.length) {
378
+ const needPrevents = [];
379
+ for (let i = 0; i < inScrollIndexes.length; i += 1) {
380
+ const touchingScroll = scroll[inScrollIndexes[i]];
381
+ const scrollTop = getScrollTop(touchingScroll);
382
+ const scrollLeft = getScrollLeft(touchingScroll);
383
+ if ((distanceY > 0 && absY > absX && scrollTop === 0) ||
384
+ (distanceX > 0 && absX > absY && scrollLeft === 0)) {
385
+ needPrevents.push(true);
386
+ continue;
387
+ }
388
+ if ((distanceY < 0 &&
389
+ absY > absX &&
390
+ scrollTop + 1 >= touchingScroll.maxScrollY) ||
391
+ (distanceX < 0 &&
392
+ absX > absY &&
393
+ scrollLeft + 1 >= touchingScroll.maxScrollX)) {
394
+ needPrevents.push(true);
395
+ continue;
396
+ }
397
+ needPrevents.push(false);
398
+ }
399
+ // 满足一个不prevent的条件就停止prevent,否则prevent
400
+ // @en Stop prevent if a non-prevent condition is met, otherwise prevent.
401
+ if (needPrevents.indexOf(false) < 0) {
402
+ preventCallbackRef.current?.(e, direc);
403
+ e.cancelable && e.preventDefault();
404
+ prevented = true;
405
+ }
406
+ }
407
+ else {
408
+ preventCallbackRef.current?.(e, direc);
409
+ e.cancelable && e.preventDefault();
410
+ prevented = true;
411
+ }
412
+ onTouchMoveRef.current?.(e, prevented, direc);
413
+ }, [orientationDirection, gestureOutOfControl]);
414
+ useEffect(() => {
415
+ if (!visible || !popupDom) {
416
+ return () => { };
417
+ }
418
+ popupDom.addEventListener('touchstart', handleTouchStart);
419
+ popupDom.addEventListener('touchmove', handleTouchMove, {
420
+ passive: false,
421
+ });
422
+ return () => {
423
+ popupDom.removeEventListener('touchstart', handleTouchStart);
424
+ popupDom.removeEventListener('touchmove', handleTouchMove);
425
+ };
426
+ }, [visible, popupDom, handleTouchStart, handleTouchMove]);
427
+ }
428
+ /**
429
+ * 在滑动类组件中,如果有内部可滚动区域,则在内部滚动区域滚动时禁用滑动事件
430
+ * @desc {en} In the sliding class component, if there is an inner scrollable area, the sliding event is disabled when the inner scrolling area is scrolled
431
+ * @param getInnerScrollContainer 内部可滚动区域,可传入多个
432
+ * @param getInnerScrollContainer {en} Inner scrollable area, can pass in multiple
433
+ * @example
434
+ * ```
435
+ * import { useSwiperInnerScroll } from '@arco-design/mobile-react/esm/_helpers/hooks';
436
+ *
437
+ * useSwiperInnerScroll(getInnerScrollContainer);
438
+ * ```
439
+ */
440
+ export function useSwiperInnerScroll(getInnerScrollContainer) {
441
+ const stopFunc = useCallback((e) => e.stopPropagation(), []);
442
+ useEffect(() => {
443
+ if (!getInnerScrollContainer) {
444
+ return;
445
+ }
446
+ const containers = getInnerScrollContainer();
447
+ const validContainers = Array.isArray(containers) ? containers : [containers];
448
+ validContainers.forEach(container => {
449
+ if (container) {
450
+ container.addEventListener('touchstart', stopFunc);
451
+ container.addEventListener('touchmove', stopFunc);
452
+ }
453
+ });
454
+ return () => {
455
+ validContainers.forEach(container => {
456
+ if (container) {
457
+ container.removeEventListener('touchstart', stopFunc);
458
+ container.removeEventListener('touchmove', stopFunc);
459
+ }
460
+ });
461
+ };
462
+ }, [getInnerScrollContainer]);
463
+ }
464
+ /**
465
+ * 事件绑定统一封装
466
+ * @desc {en} Unified encapsulation of event binding
467
+ * @param dom 待绑定事件的dom元素
468
+ * @param dom {en} The dom element to be bound to the event
469
+ * @param event 待绑定事件名称
470
+ * @param event {en} The name of the event to be bound
471
+ * @param handler 待绑定事件回调
472
+ * @param handler {en} The callback of the event to be bound
473
+ * @param options 待绑定事件配置,默认为 { capture: true }
474
+ * @param options {en} Event configuration to be bound, the default is { capture: true }
475
+ * @example
476
+ * ```
477
+ * import { useAddListener } from '@arco-design/mobile-react/esm/_helpers/hooks';
478
+ *
479
+ * useAddListener(domRef.current, 'touchstart', onTouchStart);
480
+ * useAddListener(domRef.current, 'touchend', onTouchEnd);
481
+ * ```
482
+ */
483
+ export function useAddListener(dom, event, handler, options = { capture: true }) {
484
+ useEffect(() => {
485
+ if (!dom)
486
+ return;
487
+ if (handler) {
488
+ dom.addEventListener(event, handler, options);
489
+ }
490
+ return () => {
491
+ if (handler) {
492
+ dom.removeEventListener(event, handler, options);
493
+ }
494
+ };
495
+ }, [handler]);
496
+ }
497
+ /**
498
+ * 统计同时出现的全屏组件
499
+ * @en Count simultaneous full-screen components
500
+ */
501
+ let arcoFullScreenCount = 0;
502
+ let arcoFullScreenOriginOverflow = '';
503
+ /**
504
+ * 在全屏组件出现时,将body的overflow设置为hidden,防止滚动穿透
505
+ * @desc {en} When the full screen component appears, set the overflow of the body to hidden to prevent scrolling penetration
506
+ * @param visible 全屏组件是否被打开
507
+ * @param visible {en} Whether the full screen component is opened
508
+ * @param preventBodyScroll 是否启用防滚动穿透,默认启用
509
+ * @param preventBodyScroll {en} Whether to enable anti-scroll penetration, enabled by default
510
+ * @param initialBodyOverflow body在初始状态下的overflow值,在全屏组件全部关闭后会还原
511
+ * @param initialBodyOverflow {en} The overflow value of the body in the initial state, which will be restored after all full-screen components are closed
512
+ * @example
513
+ * ```
514
+ * import { usePreventBodyScroll } from '@arco-design/mobile-react/esm/_helpers/hooks';
515
+ *
516
+ * usePreventBodyScroll(visible, preventBodyScroll, initialBodyOverflow);
517
+ * ```
518
+ */
519
+ export function usePreventBodyScroll(visible, preventBodyScroll = true, initialBodyOverflow) {
520
+ // 新出现一个全屏组件则计数+1,并设置body hidden样式
521
+ // @en When a new full-screen component appears, count + 1 and set the body hidden style
522
+ const addFullScreen = useCallback(() => {
523
+ const count = arcoFullScreenCount;
524
+ // 在当前没有全屏组件出现时,记下body overflow的初始值
525
+ // @en Note the initial value of body overflow when no full-screen components are currently present
526
+ if (!count) {
527
+ arcoFullScreenOriginOverflow =
528
+ initialBodyOverflow !== void 0 ? initialBodyOverflow : document.body.style.overflow;
529
+ }
530
+ arcoFullScreenCount += 1;
531
+ document.body.style.overflow = 'hidden';
532
+ }, []);
533
+ /**
534
+ * 移除一个全屏组件时,根据剩余是否还有全屏组件判断是否需要还原overflow样式
535
+ * @en When removing a full-screen component, determine whether the overflow style needs to be restored according to whether there are any remaining full-screen components.
536
+ */
537
+ const removeFullScreen = useCallback(() => {
538
+ const newCount = arcoFullScreenCount - 1;
539
+ arcoFullScreenCount = newCount;
540
+ if (!newCount) {
541
+ document.body.style.overflow = arcoFullScreenOriginOverflow;
542
+ }
543
+ }, []);
544
+ useEffect(() => {
545
+ if (!preventBodyScroll) {
546
+ return () => { };
547
+ }
548
+ // 如果一开始就是visible=true则加上样式
549
+ // @en If it is visible=true at the beginning, add the style.
550
+ if (visible) {
551
+ addFullScreen();
552
+ }
553
+ return () => {
554
+ // 如果这里visible为true,则说明即将隐藏组件或在展示时卸载组件
555
+ // @en If visible here is true, it means that the component is about to be hidden or unloaded when displayed.
556
+ if (visible) {
557
+ removeFullScreen();
558
+ }
559
+ };
560
+ }, [visible]);
561
+ }
562
+ /**
563
+ * 进度条计算公共逻辑,根据传入的参数计算出当前百分比和过渡效果开关,进度类组件内部使用
564
+ * @desc {en} Progress bar calculation common logic, used internally by the progress class component
565
+ * @returns [当前计算的百分比, 当前是否应有过渡效果]
566
+ * @example
567
+ * ```
568
+ * import { usePreventBodyScroll } from '@arco-design/mobile-react/esm/_helpers/hooks';
569
+ *
570
+ * const [currentPercentage, transitionControl] = useProgress(mountedTransition, percentage, duration, mountedBezier, step);
571
+ * ```
572
+ */
573
+ export function useProgress(mountedTransition, percentage, duration, mountedBezier, step) {
574
+ const [currentPercentage, setCurrentPercentage] = useState(0);
575
+ const [transitionControl, setTransitionControl] = useState(false);
576
+ const [count, setCount] = useState(0);
577
+ const latestPercentage = useRef(percentage);
578
+ useEffect(() => {
579
+ mountedTransition
580
+ ? scrollWithAnimation(0, percentage, progress => {
581
+ const targetProgress = (progress / percentage) * latestPercentage.current;
582
+ setCurrentPercentage(Math.floor(targetProgress));
583
+ }, duration, mountedBezier)
584
+ : setCurrentPercentage(percentage);
585
+ const id = setTimeout(() => {
586
+ setTransitionControl(true);
587
+ }, 30);
588
+ return () => clearTimeout(id);
589
+ }, []);
590
+ useEffect(() => {
591
+ latestPercentage.current = percentage;
592
+ setCount(Math.floor(percentage / step));
593
+ }, [percentage, step]);
594
+ useEffect(() => {
595
+ percentage === 100 ? setCurrentPercentage(100) : setCurrentPercentage(count * step);
596
+ }, [count, percentage, step]);
597
+ return [currentPercentage, transitionControl];
598
+ }
599
+ /**
600
+ * 单击和双击事件统一处理
601
+ * @desc {en} Unified processing of single and double click events
602
+ * @param onClick 单击事件回调
603
+ * @param onClick {en} Callback of single click event
604
+ * @param onDoubleClick 双击事件回调
605
+ * @param onDoubleClick {en} Callback of double click event
606
+ * @param delay 两次点击被判定为双击事件的最大间隔时间
607
+ * @param delay {en} The maximum interval between two clicks is judged as a double-click event
608
+ * @returns clickHandler,统一后的事件处理方法
609
+ * @example
610
+ * ```
611
+ * import { useSingleAndDoubleClick } from '@arco-design/mobile-react/esm/_helpers/hooks';
612
+ *
613
+ * const handleClick = useSingleAndDoubleClick(handleImageClick, handleImageDoubleClick);
614
+ * ```
615
+ */
616
+ export function useSingleAndDoubleClick(onClick, onDoubleClick, delay = 200) {
617
+ const [clickTimes, setClickTimes] = useState(0);
618
+ const eventRef = useRef();
619
+ useEffect(() => {
620
+ const timer = setTimeout(() => {
621
+ if (clickTimes === 1)
622
+ onClick(eventRef.current);
623
+ setClickTimes(0);
624
+ }, delay);
625
+ if (clickTimes === 2)
626
+ onDoubleClick(eventRef.current);
627
+ return () => clearTimeout(timer);
628
+ }, [clickTimes]);
629
+ return (e) => {
630
+ eventRef.current = e;
631
+ setClickTimes(prev => prev + 1);
632
+ };
633
+ }
634
+ let arcoSvgKeyCount = 0;
635
+ /**
636
+ * 自动生成svg <def>标签的唯一标识,用于区分不同svg的<def>内容
637
+ * @desc {en} Automatically generate the unique identifier of the svg <def> tag, which is used to distinguish the <def> content of different svg
638
+ * @param userSetSvgKey 自定义唯一标识,传入则覆盖自动生成的值
639
+ * @param userSetSvgKey {en} Customize the unique identifier, if passed in, it will override the automatically generated value
640
+ * @returns 包含svgKey的对象 生成后的唯一标识
641
+ * @globalVariable
642
+ * ```
643
+ * let arcoSvgKeyCount = 0;
644
+ * ```
645
+ * @example
646
+ * ```
647
+ * import { useGenSvgKey } from '@arco-design/mobile-react/esm/_helpers/hooks';
648
+ *
649
+ * const { svgKey } = useGenSvgKey(userSetSvgKey);
650
+ * ```
651
+ */
652
+ export function useGenSvgKey(userSetSvgKey) {
653
+ const [innerSvgKey, setInnerSvgKey] = useState('');
654
+ const svgKey = userSetSvgKey || innerSvgKey;
655
+ useEffect(() => {
656
+ setInnerSvgKey(`inner-${arcoSvgKeyCount}`);
657
+ arcoSvgKeyCount += 1;
658
+ }, []);
659
+ return { svgKey };
660
+ }