@nutui/nutui-react-taro 2.0.0-alpha.5 → 2.0.0-alpha.7

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 (323) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/esm/ActionSheet.js +15 -16
  3. package/dist/esm/Address.js +19 -20
  4. package/dist/esm/Animate.js +7 -8
  5. package/dist/esm/AnimatingNumbers.js +8 -9
  6. package/dist/esm/Audio.js +17 -19
  7. package/dist/esm/Avatar.js +11 -13
  8. package/dist/esm/AvatarGroup.js +8 -9
  9. package/dist/esm/BackTop.js +9 -10
  10. package/dist/esm/Badge.js +7 -8
  11. package/dist/esm/Barrage.js +9 -10
  12. package/dist/esm/Button.js +8 -9
  13. package/dist/esm/Calendar.js +18 -20
  14. package/dist/esm/CalendarItem.js +11 -13
  15. package/dist/esm/Card.js +12 -13
  16. package/dist/esm/Cascader.js +16 -19
  17. package/dist/esm/Cell.js +7 -8
  18. package/dist/esm/CellGroup.js +7 -8
  19. package/dist/esm/Checkbox.js +9 -10
  20. package/dist/esm/CheckboxGroup.js +9 -10
  21. package/dist/esm/CircleProgress.js +8 -9
  22. package/dist/esm/Col.js +8 -9
  23. package/dist/esm/Collapse.js +8 -9
  24. package/dist/esm/CollapseItem.js +7 -8
  25. package/dist/esm/ConfigProvider.js +9 -8
  26. package/dist/esm/CountDown.js +8 -10
  27. package/dist/esm/DatePicker.js +21 -23
  28. package/dist/esm/Dialog.js +13 -15
  29. package/dist/esm/Divider.js +7 -8
  30. package/dist/esm/Drag.js +7 -8
  31. package/dist/esm/Elevator.js +9 -10
  32. package/dist/esm/Ellipsis.js +9 -10
  33. package/dist/esm/Empty.js +7 -9
  34. package/dist/esm/FixedNav.js +11 -13
  35. package/dist/esm/Form.js +10 -11
  36. package/dist/esm/FormItem.js +8 -9
  37. package/dist/esm/Grid.js +8 -10
  38. package/dist/esm/GridItem.js +7 -9
  39. package/dist/esm/Image.js +7 -9
  40. package/dist/esm/ImagePreview.js +19 -20
  41. package/dist/esm/Indicator.js +6 -7
  42. package/dist/esm/Infiniteloading.js +12 -14
  43. package/dist/esm/Input.js +11 -13
  44. package/dist/esm/InputNumber.js +9 -10
  45. package/dist/esm/Layout.js +5 -6
  46. package/dist/esm/Menu.js +8 -9
  47. package/dist/esm/MenuItem.js +13 -14
  48. package/dist/esm/NavBar.js +7 -8
  49. package/dist/esm/NoticeBar.js +11 -12
  50. package/dist/esm/Notify.js +9 -10
  51. package/dist/esm/NumberKeyboard.js +16 -18
  52. package/dist/esm/Overlay.js +8 -9
  53. package/dist/esm/Pagination.js +9 -11
  54. package/dist/esm/Picker.js +20 -22
  55. package/dist/esm/Popover.js +10 -11
  56. package/dist/esm/Popup.js +12 -13
  57. package/dist/esm/Price.js +7 -8
  58. package/dist/esm/Progress.js +7 -8
  59. package/dist/esm/PullToRefresh.js +11 -13
  60. package/dist/esm/Radio.js +9 -10
  61. package/dist/esm/RadioGroup.js +9 -10
  62. package/dist/esm/Range.js +13 -15
  63. package/dist/esm/Rate.js +9 -10
  64. package/dist/esm/Row.js +8 -9
  65. package/dist/esm/SearchBar.js +11 -13
  66. package/dist/esm/ShortPassword.js +16 -18
  67. package/dist/esm/SideNavBar.js +14 -15
  68. package/dist/esm/SideNavBarItem.js +5 -6
  69. package/dist/esm/Signature.js +13 -15
  70. package/dist/esm/Skeleton.js +14 -16
  71. package/dist/esm/Step.js +10 -11
  72. package/dist/esm/Steps.js +9 -10
  73. package/dist/esm/Sticky.js +11 -12
  74. package/dist/esm/SubSideNavBar.js +6 -7
  75. package/dist/esm/Swipe.js +11 -12
  76. package/dist/esm/Swiper.js +10 -11
  77. package/dist/esm/SwiperItem.js +9 -10
  78. package/dist/esm/Switch.js +7 -8
  79. package/dist/esm/TabPane.js +6 -7
  80. package/dist/esm/Tabbar.js +10 -11
  81. package/dist/esm/TabbarItem.js +8 -9
  82. package/dist/esm/Table.js +9 -13
  83. package/dist/esm/Tabs.js +11 -12
  84. package/dist/esm/Tag.js +8 -9
  85. package/dist/esm/TextArea.js +11 -10
  86. package/dist/esm/TimeDetail.js +8 -10
  87. package/dist/esm/TimePannel.js +8 -10
  88. package/dist/esm/TimeSelect.js +18 -20
  89. package/dist/esm/Toast.js +9 -10
  90. package/dist/esm/TrendArrow.js +8 -9
  91. package/dist/esm/Uploader.js +14 -16
  92. package/dist/esm/UserContext-735db09f.js +5 -0
  93. package/dist/esm/UserContext-ab42ba7f.js +5 -0
  94. package/dist/esm/UserContext-fde5badc.js +5 -0
  95. package/dist/esm/Video.js +8 -9
  96. package/dist/esm/VirtualList.js +8 -10
  97. package/dist/esm/WaterMark.js +10 -12
  98. package/dist/esm/actionsheet.taro-d2217152.js +61 -0
  99. package/dist/esm/address.taro-1c534feb.js +470 -0
  100. package/dist/esm/animate.taro-c8b29242.js +44 -0
  101. package/dist/esm/animatingnumbers.taro-c2a52dbd.js +103 -0
  102. package/dist/esm/audio.taro-ec96ef80.js +185 -0
  103. package/dist/esm/avatar.taro-01536aff.js +100 -0
  104. package/dist/esm/avatargroup-ad5ffb46.js +34 -0
  105. package/dist/esm/backtop.taro-7de36464.js +48 -0
  106. package/dist/esm/badge.taro-872605bf.js +48 -0
  107. package/dist/esm/barrage.taro-c8cb9864.js +91 -0
  108. package/dist/esm/bem-cdccae08.js +5 -0
  109. package/dist/esm/button.taro-01eae688.js +72 -0
  110. package/dist/esm/calendar.taro-10a6cb11.js +70 -0
  111. package/dist/esm/calendaritem.taro-3e5f114e.js +732 -0
  112. package/dist/esm/can-use-dom-0e539bd3.js +4 -0
  113. package/dist/esm/card.taro-a46fdf25.js +51 -0
  114. package/dist/esm/cascader.taro-0a2694ed.js +463 -0
  115. package/dist/esm/cell.taro-4e31d1fa.js +48 -0
  116. package/dist/esm/cellgroup.taro-a790d91b.js +28 -0
  117. package/dist/esm/checkbox.taro-016074da.js +177 -0
  118. package/dist/esm/circleprogress.taro-7149e09d.js +104 -0
  119. package/dist/esm/col.taro-d6a46a7d.js +41 -0
  120. package/dist/esm/collapse.taro-3d997680.js +70 -0
  121. package/dist/esm/collapseitem-f4571575.js +76 -0
  122. package/dist/esm/configprovider.taro-25758d9f.js +462 -0
  123. package/dist/esm/context-d0fccf11.js +5 -0
  124. package/dist/esm/countdown.taro-22200811.js +210 -0
  125. package/dist/esm/datepicker.taro-3f718964.js +260 -0
  126. package/dist/esm/dialog.taro-290eb9a6.js +128 -0
  127. package/dist/esm/divider.taro-0cb5f894.js +31 -0
  128. package/dist/esm/drag.taro-48e1ff38.js +111 -0
  129. package/dist/esm/elevator.taro-bc162e4f.js +201 -0
  130. package/dist/esm/ellipsis.taro-f9688dd7.js +242 -0
  131. package/dist/esm/empty.taro-ca792f57.js +59 -0
  132. package/dist/esm/fixednav.taro-28e5f776.js +61 -0
  133. package/dist/esm/form.taro-b06754e8.js +182 -0
  134. package/dist/esm/formitem.taro-b326809d.js +108 -0
  135. package/dist/esm/get-scroll-parent-8da04f2e.js +24 -0
  136. package/dist/esm/grid.taro-fbbd8618.js +52 -0
  137. package/dist/esm/griditem.taro-b0c37077.js +85 -0
  138. package/dist/esm/image.taro-767aa000.js +65 -0
  139. package/dist/esm/imagepreview.taro-8832dc01.js +163 -0
  140. package/dist/esm/index-e3184f19.js +9 -0
  141. package/dist/esm/indicator.taro-f2bd212f.js +30 -0
  142. package/dist/esm/infiniteloading.taro-f8f23ac6.js +143 -0
  143. package/dist/esm/input.taro-27d686c9.js +164 -0
  144. package/dist/esm/inputnumber.taro-877dc947.js +197 -0
  145. package/dist/esm/layout.taro-9659a928.js +11 -0
  146. package/dist/esm/menu.taro-cd0fef41.js +122 -0
  147. package/dist/esm/menuitem.taro-6076bffa.js +142 -0
  148. package/dist/esm/navbar.taro-5e1a0835.js +61 -0
  149. package/dist/esm/noticebar.taro-b3bfd4fe.js +408 -0
  150. package/dist/esm/notify.taro-6b6eb6bf.js +82 -0
  151. package/dist/esm/numberkeyboard.taro-0a0e866a.js +183 -0
  152. package/dist/esm/nutui-react.es.js +211 -116
  153. package/dist/esm/offsetContext-f32a9246.js +5 -0
  154. package/dist/esm/overlay.taro-75012bd3.js +77 -0
  155. package/dist/esm/pagination.taro-63607c3b.js +94 -0
  156. package/dist/esm/picker.taro-a5603921.js +468 -0
  157. package/dist/esm/popover.taro-ad483372.js +162 -0
  158. package/dist/esm/popup.taro-e756f3fc.js +150 -0
  159. package/dist/esm/price.taro-c4f45310.js +80 -0
  160. package/dist/esm/progress.taro-ff63be75.js +49 -0
  161. package/dist/esm/pulltorefresh.taro-c611fd92.js +179 -0
  162. package/dist/esm/radio.taro-3a54f4c8.js +152 -0
  163. package/dist/esm/range.taro-52cda918.js +325 -0
  164. package/dist/esm/rate.taro-78c66969.js +77 -0
  165. package/dist/esm/row.taro-8b7febd4.js +48 -0
  166. package/dist/esm/searchbar.taro-37ade36e.js +159 -0
  167. package/dist/esm/shortpassword.taro-f7292032.js +146 -0
  168. package/dist/esm/sidenavbar.taro-9f210df4.js +51 -0
  169. package/dist/esm/sidenavbaritem.taro-32a45ce6.js +12 -0
  170. package/dist/esm/signature.taro-c57469aa.js +146 -0
  171. package/dist/esm/skeleton.taro-9ff9baf4.js +71 -0
  172. package/dist/esm/step.taro-3bc01c0c.js +66 -0
  173. package/dist/esm/steps.taro-77e301ab.js +30 -0
  174. package/dist/esm/sticky.taro-3c03eb0a.js +134 -0
  175. package/dist/esm/subsidenavbar.taro-abe07673.js +64 -0
  176. package/dist/esm/supports-passive-aaaf0eff.js +17 -0
  177. package/dist/esm/swipe.taro-de80fcd8.js +180 -0
  178. package/dist/esm/swiper.taro-74cf9306.js +430 -0
  179. package/dist/esm/swiperitem-80df464a.js +29 -0
  180. package/dist/esm/switch.taro-f0da73a3.js +44 -0
  181. package/dist/esm/tabbar.taro-18eee41f.js +55 -0
  182. package/dist/esm/tabbaritem.taro-89646ca1.js +47 -0
  183. package/dist/esm/table.taro-15a55c5d.js +100 -0
  184. package/dist/esm/tabpane.taro-f8d92ece.js +21 -0
  185. package/dist/esm/tabs.taro-b75f20ff.js +139 -0
  186. package/dist/esm/tag.taro-1b4134a5.js +92 -0
  187. package/dist/esm/textarea.taro-c110565e.js +102 -0
  188. package/dist/esm/timedetail.taro-8d2acbbf.js +41 -0
  189. package/dist/esm/timepannel.taro-ee4c5dfa.js +22 -0
  190. package/dist/esm/timeselect.taro-069deedd.js +133 -0
  191. package/dist/esm/toast.taro-92c10e1d.js +114 -0
  192. package/dist/esm/trendarrow.taro-0cf43935.js +72 -0
  193. package/dist/esm/typings-11d83a22.js +7 -0
  194. package/dist/esm/uploader.taro-92977813.js +519 -0
  195. package/dist/esm/use-client-rect-f317804e.js +10 -0
  196. package/dist/esm/use-props-value-7ac1b1b5.js +16 -0
  197. package/dist/esm/use-touch-ff43512c.js +69 -0
  198. package/dist/esm/video-5d106e33.js +73 -0
  199. package/dist/esm/virtuallist.taro-99f03769.js +195 -0
  200. package/dist/esm/watermark.taro-cef29c03.js +109 -0
  201. package/dist/locales/base.js +1 -1
  202. package/dist/locales/en-US.js +1 -1
  203. package/dist/locales/id-ID.js +1 -1
  204. package/dist/locales/zh-CN.js +1 -1
  205. package/dist/locales/zh-TW.js +1 -1
  206. package/dist/locales/zh-UG.js +1 -1
  207. package/dist/nutui.react.mjs +507 -447
  208. package/dist/nutui.react.umd.js +506 -446
  209. package/dist/packages/cascader/cascader.scss +0 -26
  210. package/dist/packages/picker/picker.scss +66 -137
  211. package/dist/packages/table/table.scss +0 -56
  212. package/dist/packages/textarea/textarea.scss +5 -12
  213. package/dist/style.css +1 -1
  214. package/dist/style.mjs +1 -1
  215. package/dist/styles/variables-jmapp.scss +1 -4
  216. package/dist/styles/variables.scss +2 -6
  217. package/dist/types/index.d.ts +42 -46
  218. package/package.json +1 -1
  219. package/dist/esm/UserContext-0aac9a82.js +0 -5
  220. package/dist/esm/UserContext-e402e1a6.js +0 -5
  221. package/dist/esm/UserContext-e8176108.js +0 -5
  222. package/dist/esm/actionsheet.taro-12cf5a3e.js +0 -53
  223. package/dist/esm/address.taro-cab0ea22.js +0 -475
  224. package/dist/esm/animate.taro-485331bb.js +0 -41
  225. package/dist/esm/animatingnumbers.taro-f6eaffef.js +0 -104
  226. package/dist/esm/audio.taro-ff280f5e.js +0 -162
  227. package/dist/esm/avatar.taro-6e8f1f5c.js +0 -107
  228. package/dist/esm/avatargroup-f4375806.js +0 -31
  229. package/dist/esm/backtop.taro-8ec80d02.js +0 -52
  230. package/dist/esm/badge.taro-e2169fbe.js +0 -45
  231. package/dist/esm/barrage.taro-aa08da6c.js +0 -94
  232. package/dist/esm/bem-350c1702.js +0 -5
  233. package/dist/esm/button.taro-b50bc217.js +0 -65
  234. package/dist/esm/calendar.taro-2fc9b899.js +0 -65
  235. package/dist/esm/calendaritem.taro-2d4a8c34.js +0 -791
  236. package/dist/esm/can-use-dom-3eeb5af4.js +0 -6
  237. package/dist/esm/card.taro-0e849e94.js +0 -33
  238. package/dist/esm/cascader.taro-467910b2.js +0 -447
  239. package/dist/esm/cell.taro-ea725a95.js +0 -43
  240. package/dist/esm/cellgroup.taro-e05ea802.js +0 -25
  241. package/dist/esm/checkbox.taro-9d02f86c.js +0 -175
  242. package/dist/esm/circleprogress.taro-d4943109.js +0 -103
  243. package/dist/esm/col.taro-4477c9f7.js +0 -43
  244. package/dist/esm/collapse.taro-89bcadf2.js +0 -79
  245. package/dist/esm/collapseitem-0e228cec.js +0 -68
  246. package/dist/esm/configprovider.taro-ce34d482.js +0 -174
  247. package/dist/esm/context-c96afdcc.js +0 -5
  248. package/dist/esm/countdown.taro-3118ba23.js +0 -225
  249. package/dist/esm/datepicker.taro-2e3e955b.js +0 -275
  250. package/dist/esm/dialog.taro-eab19eab.js +0 -107
  251. package/dist/esm/divider.taro-3993d7d5.js +0 -33
  252. package/dist/esm/drag.taro-347dfb84.js +0 -111
  253. package/dist/esm/elevator.taro-1a4e3356.js +0 -193
  254. package/dist/esm/ellipsis.taro-e1ac99a1.js +0 -244
  255. package/dist/esm/empty.taro-26363c66.js +0 -56
  256. package/dist/esm/fixednav.taro-ddb21e87.js +0 -54
  257. package/dist/esm/form.taro-423b0f0a.js +0 -179
  258. package/dist/esm/formitem.taro-b550d29c.js +0 -89
  259. package/dist/esm/get-scroll-parent-b4a07e65.js +0 -25
  260. package/dist/esm/grid.taro-883a9c35.js +0 -49
  261. package/dist/esm/griditem.taro-16c7055b.js +0 -80
  262. package/dist/esm/image.taro-3025e659.js +0 -64
  263. package/dist/esm/imagepreview.taro-d511342c.js +0 -167
  264. package/dist/esm/index-5bcb0ff8.js +0 -7
  265. package/dist/esm/indicator.taro-bfb21d45.js +0 -30
  266. package/dist/esm/infiniteloading.taro-721bca1f.js +0 -141
  267. package/dist/esm/input.taro-06c1e4d5.js +0 -167
  268. package/dist/esm/inputnumber.taro-1f893d42.js +0 -199
  269. package/dist/esm/layout.taro-e4bf83cb.js +0 -11
  270. package/dist/esm/menu.taro-e5c68cb8.js +0 -111
  271. package/dist/esm/menuitem.taro-37c18382.js +0 -129
  272. package/dist/esm/navbar.taro-92bab9c4.js +0 -57
  273. package/dist/esm/noticebar.taro-cbe93c9e.js +0 -427
  274. package/dist/esm/notify.taro-f1079218.js +0 -75
  275. package/dist/esm/numberkeyboard.taro-d9b1721b.js +0 -159
  276. package/dist/esm/offsetContext-c2a746fa.js +0 -5
  277. package/dist/esm/overlay.taro-067b7202.js +0 -73
  278. package/dist/esm/pagination.taro-94f9be5e.js +0 -91
  279. package/dist/esm/picker.taro-e16b4312.js +0 -423
  280. package/dist/esm/popover.taro-84a55ff9.js +0 -153
  281. package/dist/esm/popup.taro-89cc342a.js +0 -139
  282. package/dist/esm/price.taro-959d82f2.js +0 -83
  283. package/dist/esm/progress.taro-1a7ac8a4.js +0 -40
  284. package/dist/esm/pulltorefresh.taro-016d0079.js +0 -181
  285. package/dist/esm/radio.taro-36438449.js +0 -177
  286. package/dist/esm/range.taro-8953e8c3.js +0 -332
  287. package/dist/esm/rate.taro-895bb41c.js +0 -77
  288. package/dist/esm/row.taro-e929ec5c.js +0 -48
  289. package/dist/esm/searchbar.taro-4467040f.js +0 -152
  290. package/dist/esm/shortpassword.taro-433b86a4.js +0 -119
  291. package/dist/esm/sidenavbar.taro-f8ffb7dc.js +0 -33
  292. package/dist/esm/sidenavbaritem.taro-6cb0821e.js +0 -12
  293. package/dist/esm/signature.taro-a4d9b5c9.js +0 -143
  294. package/dist/esm/skeleton.taro-8ec11af9.js +0 -62
  295. package/dist/esm/step.taro-7ea33a76.js +0 -58
  296. package/dist/esm/steps.taro-86753d36.js +0 -30
  297. package/dist/esm/sticky.taro-a142a5f2.js +0 -136
  298. package/dist/esm/subsidenavbar.taro-85c03291.js +0 -63
  299. package/dist/esm/supports-passive-c85ef996.js +0 -18
  300. package/dist/esm/swipe.taro-0b8cc872.js +0 -175
  301. package/dist/esm/swiper.taro-c0e9a56b.js +0 -451
  302. package/dist/esm/swiperitem-abab7606.js +0 -29
  303. package/dist/esm/switch.taro-e82809f6.js +0 -38
  304. package/dist/esm/tabbar.taro-48413fb8.js +0 -51
  305. package/dist/esm/tabbaritem.taro-5afa3562.js +0 -37
  306. package/dist/esm/table.taro-327b4248.js +0 -95
  307. package/dist/esm/tabpane.taro-406cc0d3.js +0 -21
  308. package/dist/esm/tabs.taro-d47ccfc5.js +0 -120
  309. package/dist/esm/tag.taro-846ee805.js +0 -92
  310. package/dist/esm/textarea.taro-add72cf3.js +0 -94
  311. package/dist/esm/timedetail.taro-82a2900b.js +0 -44
  312. package/dist/esm/timepannel.taro-0573bb65.js +0 -22
  313. package/dist/esm/timeselect.taro-29124a34.js +0 -133
  314. package/dist/esm/toast.taro-c509a870.js +0 -108
  315. package/dist/esm/trendarrow.taro-dd83ec94.js +0 -70
  316. package/dist/esm/typings-d8491423.js +0 -6
  317. package/dist/esm/uploader.taro-c70d00de.js +0 -494
  318. package/dist/esm/use-client-rect-1f8ed1fe.js +0 -18
  319. package/dist/esm/use-props-value-ae7ee726.js +0 -15
  320. package/dist/esm/use-touch-db24bb5c.js +0 -69
  321. package/dist/esm/video-1c6405b4.js +0 -67
  322. package/dist/esm/virtuallist.taro-ba8e1f21.js +0 -214
  323. package/dist/esm/watermark.taro-168cdac5.js +0 -114
@@ -1,494 +0,0 @@
1
- import React, { useState, useEffect, useImperativeHandle } from 'react';
2
- import classNames from 'classnames';
3
- import Taro, { uploadFile, getEnv, chooseMedia, chooseImage } from '@tarojs/taro';
4
- import { Failure, Loading, Link, Del, Photograph } from '@nutui/icons-react-taro';
5
- import { Image } from '@tarojs/components';
6
- import { B as Button } from './button.taro-b50bc217.js';
7
- import { P as Progress } from './progress.taro-1a7ac8a4.js';
8
- import { u as useConfig } from './configprovider.taro-ce34d482.js';
9
- import { i as isPromise } from './index-5bcb0ff8.js';
10
- import { C as ComponentDefaults } from './typings-d8491423.js';
11
-
12
- class UploadOptions {
13
- url = '';
14
- name = 'file';
15
- fileType = 'image';
16
- formData;
17
- sourceFile;
18
- method = 'post';
19
- xhrState = 200;
20
- timeout = 30 * 1000;
21
- headers = {};
22
- withCredentials = false;
23
- onStart;
24
- taroFilePath;
25
- onProgress;
26
- onSuccess;
27
- onFailure;
28
- beforeXhrUpload;
29
- }
30
- class Upload {
31
- options;
32
- constructor(options) {
33
- this.options = options;
34
- }
35
- upload() {
36
- const { options } = this;
37
- const xhr = new XMLHttpRequest();
38
- xhr.timeout = options.timeout;
39
- if (xhr.upload) {
40
- xhr.upload.addEventListener('progress', (e) => {
41
- options.onProgress?.(e, options);
42
- }, false);
43
- xhr.onreadystatechange = () => {
44
- if (xhr.readyState === 4) {
45
- if (xhr.status === options.xhrState) {
46
- options.onSuccess?.(xhr.responseText, options);
47
- }
48
- else {
49
- options.onFailure?.(xhr.responseText, options);
50
- }
51
- }
52
- };
53
- xhr.withCredentials = options.withCredentials;
54
- xhr.open(options.method, options.url, true);
55
- // headers
56
- for (const [key, value] of Object.entries(options.headers)) {
57
- xhr.setRequestHeader(key, value);
58
- }
59
- options.onStart?.(options);
60
- if (options.beforeXhrUpload) {
61
- options.beforeXhrUpload(xhr, options);
62
- }
63
- else {
64
- xhr.send(options.formData);
65
- }
66
- }
67
- else {
68
- console.warn('浏览器不支持 XMLHttpRequest');
69
- }
70
- }
71
- }
72
- class UploaderTaro extends Upload {
73
- constructor(options) {
74
- super(options);
75
- }
76
- uploadTaro(uploadFile, env) {
77
- const options = this.options;
78
- if (env === 'WEB') {
79
- this.upload();
80
- }
81
- else {
82
- if (options.beforeXhrUpload) {
83
- options.beforeXhrUpload(uploadFile, options);
84
- }
85
- else {
86
- const uploadTask = uploadFile({
87
- url: options.url,
88
- filePath: options.taroFilePath,
89
- fileType: options.fileType,
90
- header: {
91
- 'Content-Type': 'multipart/form-data',
92
- ...options.headers,
93
- },
94
- formData: options.formData,
95
- name: options.name,
96
- success(response) {
97
- if (options.xhrState == response.statusCode) {
98
- options.onSuccess?.(response, options);
99
- }
100
- else {
101
- options.onFailure?.(response, options);
102
- }
103
- },
104
- fail(e) {
105
- options.onFailure?.(e, options);
106
- },
107
- });
108
- options.onStart?.(options);
109
- uploadTask.progress((res) => {
110
- options.onProgress?.(res, options);
111
- });
112
- }
113
- }
114
- }
115
- }
116
-
117
- const funcInterceptor = (interceptor, { args = [], done, canceled, }) => {
118
- if (interceptor) {
119
- const returnVal = interceptor.apply(null, args);
120
- if (isPromise(returnVal)) {
121
- returnVal
122
- .then((value) => {
123
- if (value) {
124
- done(value);
125
- }
126
- else if (canceled) {
127
- canceled();
128
- }
129
- })
130
- .catch(() => { });
131
- }
132
- else if (returnVal) {
133
- done();
134
- }
135
- else if (canceled) {
136
- canceled();
137
- }
138
- }
139
- else {
140
- done();
141
- }
142
- };
143
-
144
- const defaultProps = {
145
- ...ComponentDefaults,
146
- url: '',
147
- maxCount: 1,
148
- sizeType: ['original', 'compressed'],
149
- sourceType: ['album', 'camera'],
150
- mediaType: ['image', 'video'],
151
- camera: 'back',
152
- uploadIcon: null,
153
- uploadLabel: '',
154
- previewType: 'picture',
155
- imageFit: 'cover',
156
- name: 'file',
157
- accept: '*',
158
- disabled: false,
159
- autoUpload: true,
160
- multiple: false,
161
- maxFileSize: Number.MAX_VALUE,
162
- data: {},
163
- headers: {},
164
- method: 'post',
165
- previewUrl: '',
166
- xhrState: 200,
167
- timeout: 1000 * 30,
168
- preview: true,
169
- deletable: true,
170
- maxDuration: 10,
171
- beforeDelete: (file, files) => {
172
- return true;
173
- },
174
- };
175
- class FileItem {
176
- status = 'ready';
177
- message = '准备中..';
178
- uid = new Date().getTime().toString();
179
- name;
180
- url;
181
- type;
182
- path;
183
- percentage = 0;
184
- formData = {};
185
- }
186
- const InternalUploader = (props, ref) => {
187
- const { locale } = useConfig();
188
- const { children, uploadIcon, uploadLabel, accept, name, camera, defaultValue, value, previewType, imageFit, disabled, multiple, url, previewUrl, headers, timeout, method, xhrState, data, preview, deletable, maxCount, maxFileSize, mediaType, className, autoUpload, sizeType, sourceType, maxDuration, onStart, onDelete, onChange, onFileItemClick, onProgress, onSuccess, onUpdate, onFailure, onOversize, beforeXhrUpload, beforeDelete, ...restProps } = { ...defaultProps, ...props };
189
- const [fileList, setFileList] = useState(defaultValue || []);
190
- const [uploadQueue, setUploadQueue] = useState([]);
191
- useEffect(() => {
192
- if (value) {
193
- setFileList(value);
194
- }
195
- }, [value]);
196
- const classes = classNames(className, 'nut-uploader');
197
- useImperativeHandle(ref, () => ({
198
- submit: () => {
199
- Promise.all(uploadQueue).then((res) => {
200
- res.forEach((i) => i.uploadTaro(uploadFile, getEnv()));
201
- });
202
- },
203
- clear: () => {
204
- clearUploadQueue();
205
- },
206
- }));
207
- const clearUploadQueue = (index = -1) => {
208
- if (index > -1) {
209
- uploadQueue.splice(index, 1);
210
- setUploadQueue(uploadQueue);
211
- }
212
- else {
213
- setUploadQueue([]);
214
- fileList.splice(0, fileList.length);
215
- setFileList([...fileList]);
216
- }
217
- };
218
- const _chooseImage = () => {
219
- if (disabled) {
220
- return;
221
- }
222
- if (Taro.getEnv() === 'WEB') {
223
- const el = document.getElementById('taroChooseImage');
224
- if (el) {
225
- el?.setAttribute('accept', accept);
226
- }
227
- else {
228
- const obj = document.createElement('input');
229
- obj.setAttribute('type', 'file');
230
- obj.setAttribute('id', 'taroChooseImage');
231
- obj.setAttribute('accept', accept);
232
- obj.setAttribute('style', 'position: fixed; top: -4000px; left: -3000px; z-index: -300;');
233
- document.body.appendChild(obj);
234
- }
235
- }
236
- if (getEnv() === 'WEAPP') {
237
- // chooseMedia 目前只支持微信小程序原生,其余端全部使用 chooseImage API
238
- chooseMedia({
239
- /** 最多可以选择的文件个数 */
240
- count: multiple ? maxCount * 1 - fileList.length : 1,
241
- /** 文件类型 */
242
- mediaType: mediaType,
243
- /** 图片和视频选择的来源 */
244
- sourceType,
245
- /** 拍摄视频最长拍摄时间,单位秒。时间范围为 3s 至 30s 之间 */
246
- maxDuration,
247
- /** 仅对 mediaType 为 image 时有效,是否压缩所选文件 */
248
- sizeType: [],
249
- /** 仅在 sourceType 为 camera 时生效,使用前置或后置摄像头 */
250
- camera,
251
- /** 接口调用失败的回调函数 */
252
- fail: (res) => {
253
- onFailure && onFailure(res);
254
- },
255
- /** 接口调用成功的回调函数 */
256
- success: onChangeMedia,
257
- });
258
- }
259
- else {
260
- chooseImage({
261
- // 选择数量
262
- count: multiple ? maxCount * 1 - fileList.length : 1,
263
- // 可以指定是原图还是压缩图,默认二者都有
264
- sizeType,
265
- sourceType,
266
- success: onChangeImage,
267
- fail: (res) => {
268
- onFailure && onFailure(res);
269
- },
270
- });
271
- }
272
- };
273
- const executeUpload = (fileItem, index) => {
274
- const uploadOption = new UploadOptions();
275
- uploadOption.name = name;
276
- uploadOption.url = url;
277
- uploadOption.fileType = fileItem.type;
278
- uploadOption.formData = fileItem.formData;
279
- uploadOption.timeout = timeout * 1;
280
- uploadOption.method = method;
281
- uploadOption.xhrState = xhrState;
282
- uploadOption.headers = headers;
283
- uploadOption.taroFilePath = fileItem.path;
284
- uploadOption.beforeXhrUpload = beforeXhrUpload;
285
- uploadOption.onStart = (option) => {
286
- clearUploadQueue(index);
287
- setFileList((fileList) => {
288
- fileList.map((item) => {
289
- if (item.uid === fileItem.uid) {
290
- item.status = 'ready';
291
- item.message = locale.uploader.readyUpload;
292
- }
293
- });
294
- return [...fileList];
295
- });
296
- onStart && onStart(option);
297
- };
298
- uploadOption.onProgress = (e, option) => {
299
- setFileList((fileList) => {
300
- fileList.map((item) => {
301
- if (item.uid === fileItem.uid) {
302
- item.status = 'uploading';
303
- item.message = locale.uploader.uploading;
304
- item.percentage = e.progress;
305
- onProgress && onProgress({ e, option, percentage: item.percentage });
306
- }
307
- });
308
- return [...fileList];
309
- });
310
- };
311
- uploadOption.onSuccess = (responseText, option) => {
312
- setFileList((fileList) => {
313
- onUpdate && onUpdate(fileList);
314
- fileList.map((item) => {
315
- if (item.uid === fileItem.uid) {
316
- item.status = 'success';
317
- item.message = locale.uploader.success;
318
- }
319
- });
320
- return [...fileList];
321
- });
322
- onSuccess &&
323
- onSuccess({
324
- responseText,
325
- option,
326
- fileList,
327
- });
328
- };
329
- uploadOption.onFailure = (responseText, option) => {
330
- setFileList((fileList) => {
331
- fileList.map((item) => {
332
- if (item.uid === fileItem.uid) {
333
- item.status = 'error';
334
- item.message = locale.uploader.error;
335
- }
336
- });
337
- return [...fileList];
338
- });
339
- onFailure &&
340
- onFailure({
341
- responseText,
342
- option,
343
- fileList,
344
- });
345
- };
346
- const task = new UploaderTaro(uploadOption);
347
- if (props.autoUpload) {
348
- task.uploadTaro(uploadFile, getEnv());
349
- }
350
- else {
351
- uploadQueue.push(new Promise((resolve, reject) => {
352
- resolve(task);
353
- }));
354
- setUploadQueue(uploadQueue);
355
- }
356
- };
357
- const readFile = (files) => {
358
- files.forEach((file, index) => {
359
- let fileType = file.type;
360
- const filepath = (file.tempFilePath || file.path);
361
- const fileItem = new FileItem();
362
- if (file.fileType) {
363
- fileType = file.fileType;
364
- }
365
- else {
366
- const imgReg = /\.(png|jpeg|jpg|webp|gif)$/i;
367
- if (!fileType &&
368
- (imgReg.test(filepath) || filepath.includes('data:image'))) {
369
- fileType = 'image';
370
- }
371
- }
372
- fileItem.path = filepath;
373
- fileItem.name = filepath;
374
- fileItem.status = 'ready';
375
- fileItem.type = fileType;
376
- if (autoUpload) {
377
- fileItem.message = locale.uploader.readyUpload;
378
- }
379
- else {
380
- fileItem.message = locale.uploader.waitingUpload;
381
- }
382
- if (getEnv() === 'WEB') {
383
- const formData = new FormData();
384
- for (const [key, value] of Object.entries(data)) {
385
- formData.append(key, value);
386
- }
387
- formData.append(name, file.originalFileObj);
388
- fileItem.name = file.originalFileObj?.name;
389
- fileItem.type = file.originalFileObj?.type;
390
- fileItem.formData = formData;
391
- }
392
- else {
393
- fileItem.formData = data;
394
- }
395
- if (preview) {
396
- fileItem.url = fileType == 'video' ? file.thumbTempFilePath : filepath;
397
- }
398
- fileList.push(fileItem);
399
- setFileList([...fileList]);
400
- executeUpload(fileItem, index);
401
- });
402
- };
403
- const filterFiles = (files) => {
404
- const maximum = props.maxCount * 1;
405
- const maximize = props.maxFileSize * 1;
406
- const oversizes = new Array();
407
- const filterFile = files.filter((file) => {
408
- if (file.size > maximize) {
409
- oversizes.push(file);
410
- return false;
411
- }
412
- return true;
413
- });
414
- if (oversizes.length) {
415
- onOversize && onOversize(files);
416
- }
417
- const currentFileLength = filterFile.length + fileList.length;
418
- if (currentFileLength > maximum) {
419
- filterFile.splice(filterFile.length - (currentFileLength - maximum));
420
- }
421
- return filterFile;
422
- };
423
- const deleted = (file, index) => {
424
- fileList.splice(index, 1);
425
- onDelete && onDelete(file, fileList);
426
- setFileList([...fileList]);
427
- };
428
- const onDeleteItem = (file, index) => {
429
- clearUploadQueue(index);
430
- funcInterceptor(beforeDelete, {
431
- args: [file, fileList],
432
- done: () => deleted(file, index),
433
- });
434
- };
435
- const onChangeMedia = (res) => {
436
- // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
437
- const { tempFiles } = res;
438
- const _files = filterFiles(tempFiles);
439
- readFile(_files);
440
- onChange && onChange({ fileList });
441
- };
442
- const onChangeImage = (res) => {
443
- // 返回选定照片的本地文件路径列表,tempFilePath可以作为img标签的src属性显示图片
444
- const { tempFiles } = res;
445
- const _files = filterFiles(tempFiles);
446
- readFile(_files);
447
- onChange && onChange({ fileList });
448
- };
449
- const handleItemClick = (file) => {
450
- onFileItemClick && onFileItemClick(file);
451
- };
452
- return (React.createElement("div", { className: classes, ...restProps },
453
- children && (React.createElement("div", { className: "nut-uploader__slot" },
454
- React.createElement(React.Fragment, null,
455
- children,
456
- maxCount > fileList.length && (React.createElement(Button, { className: "nut-uploader__input", onClick: _chooseImage }))))),
457
- fileList.length !== 0 &&
458
- fileList.map((item, index) => {
459
- return (React.createElement("div", { className: `nut-uploader__preview ${previewType}`, key: item.uid },
460
- previewType === 'picture' && !children && (React.createElement("div", { className: "nut-uploader__preview-img" },
461
- deletable && (React.createElement(Failure, { color: "rgba(0,0,0,0.6)", className: "close", onClick: () => onDeleteItem(item, index) })),
462
- item.status === 'ready' ? (React.createElement("div", { className: "nut-uploader__preview__progress" },
463
- React.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message))) : (item.status !== 'success' && (React.createElement("div", { className: "nut-uploader__preview__progress" },
464
- item.failIcon !== ' ' &&
465
- item.loadingIcon !== ' ' &&
466
- (item.status === 'error'
467
- ? item.failIcon || React.createElement(Failure, { color: "#fff" })
468
- : item.loadingIcon || React.createElement(Loading, { color: "#fff" })),
469
- React.createElement("div", { className: "nut-uploader__preview__progress__msg" }, item.message)))),
470
- item.type.includes('image') ? (React.createElement(React.Fragment, null, item.url && (React.createElement(Image, { className: "nut-uploader__preview-img__c", style: { objectFit: imageFit }, mode: "aspectFit", src: item.url, onClick: () => handleItemClick(item) })))) : (React.createElement(React.Fragment, null, previewUrl ? (React.createElement(Image, { className: "nut-uploader__preview-img__c", mode: "aspectFit", src: previewUrl, onClick: () => handleItemClick(item) })) : (React.createElement("div", { className: "nut-uploader__preview-img__file" },
471
- React.createElement("div", { onClick: () => handleItemClick(item), className: "nut-uploader__preview-img__file__name" },
472
- React.createElement(Link, { color: "#808080" }),
473
- "\u00A0",
474
- item.name))))),
475
- item.status === 'success' ? (React.createElement("div", { className: "tips" }, item.name)) : null)),
476
- previewType === 'list' && (React.createElement("div", { className: "nut-uploader__preview-list" },
477
- React.createElement("div", { className: `nut-uploader__preview-img__file__name ${item.status}`, onClick: () => handleItemClick(item) },
478
- React.createElement(Link, null),
479
- "\u00A0",
480
- item.name),
481
- deletable && (React.createElement(Del, { color: "#808080", className: "nut-uploader__preview-img__file__del", onClick: () => onDeleteItem(item, index) })),
482
- item.status === 'uploading' && (React.createElement(Progress, { percent: item.percentage, color: "linear-gradient(270deg, rgba(18,126,255,1) 0%,rgba(32,147,255,1) 32.815625%,rgba(13,242,204,1) 100%)", showText: false }))))));
483
- }),
484
- maxCount > fileList.length && previewType === 'picture' && !children && (React.createElement("div", { className: `nut-uploader__upload ${previewType} ${disabled ? 'nut-uploader__upload-disabled' : ''}` },
485
- React.createElement("div", { className: "nut-uploader__icon" },
486
- uploadIcon || React.createElement(Photograph, { size: "20px", color: "#808080" }),
487
- React.createElement("span", { className: "nut-uploader__icon-tip" }, uploadLabel)),
488
- React.createElement(Button, { className: "nut-uploader__input", onClick: _chooseImage })))));
489
- };
490
- const Uploader = React.forwardRef(InternalUploader);
491
- Uploader.defaultProps = defaultProps;
492
- Uploader.displayName = 'NutUploader';
493
-
494
- export { Uploader as U };
@@ -1,18 +0,0 @@
1
- /**
2
- 获取元素的大小及其相对于视口的位置,等价于 Element.getBoundingClientRect。
3
- width 宽度 number
4
- height 高度 number
5
- top 顶部与视图窗口左上角的距离 number
6
- left 左侧与视图窗口左上角的距离 number
7
- right 右侧与视图窗口左上角的距离 number
8
- bottom 底部与视图窗口左上角的距离 number
9
- */
10
- const getRectByTaro = async (element) => {
11
- if (element) {
12
- const res = await element.getBoundingClientRect();
13
- return res;
14
- }
15
- return Promise.resolve({});
16
- };
17
-
18
- export { getRectByTaro as g };
@@ -1,15 +0,0 @@
1
- import { useState } from 'react';
2
-
3
- function usePropsValue({ value, defaultValue, finalValue, onChange = (value) => { }, }) {
4
- const [uncontrolled, setUncontrolled] = useState(defaultValue !== undefined ? defaultValue : finalValue);
5
- const handleUncontrolledChange = (val) => {
6
- setUncontrolled(val);
7
- onChange?.(val);
8
- };
9
- if (value !== undefined) {
10
- return [value, onChange];
11
- }
12
- return [uncontrolled, handleUncontrolledChange];
13
- }
14
-
15
- export { usePropsValue as u };
@@ -1,69 +0,0 @@
1
- import { useState } from 'react';
2
-
3
- const MIN_DISTANCE = 10;
4
- function getDirection(x, y) {
5
- if (x > y && x > MIN_DISTANCE) {
6
- return 'horizontal';
7
- }
8
- if (y > x && y > MIN_DISTANCE) {
9
- return 'vertical';
10
- }
11
- return '';
12
- }
13
- function useTouch() {
14
- const [startX, SetStartX] = useState(0);
15
- const [startY, SetStartY] = useState(0);
16
- const [moveX, SetMoveX] = useState(0);
17
- const [moveY, SetMoveY] = useState(0);
18
- const [deltaX, SetDeltaX] = useState(0);
19
- const [deltaY, SetDeltaY] = useState(0);
20
- const [offsetX, SetOffsetX] = useState(0);
21
- const [offsetY, SetOffsetY] = useState(0);
22
- const [direction, SetDirection] = useState('');
23
- const isVertical = () => direction === 'vertical';
24
- const isHorizontal = () => direction === 'horizontal';
25
- const reset = () => {
26
- SetDeltaX(0);
27
- SetDeltaY(0);
28
- SetOffsetX(0);
29
- SetOffsetY(0);
30
- SetDirection('');
31
- };
32
- const start = ((event) => {
33
- reset();
34
- SetStartX(event.touches[0].clientX);
35
- SetStartY(event.touches[0].clientY);
36
- });
37
- const move = ((event) => {
38
- const touch = event.touches[0];
39
- const dX = touch.clientX - startX;
40
- const dY = touch.clientY - startY;
41
- SetDeltaX(dX);
42
- SetDeltaY(dY);
43
- SetMoveX(touch.clientX);
44
- SetMoveY(touch.clientY);
45
- SetOffsetX(Math.abs(dX));
46
- SetOffsetY(Math.abs(dY));
47
- if (!direction) {
48
- SetDirection(getDirection(offsetX, offsetY));
49
- }
50
- });
51
- return {
52
- move,
53
- start,
54
- reset,
55
- startX,
56
- startY,
57
- moveX,
58
- moveY,
59
- deltaX,
60
- deltaY,
61
- offsetX,
62
- offsetY,
63
- direction,
64
- isVertical,
65
- isHorizontal,
66
- };
67
- }
68
-
69
- export { useTouch as u };
@@ -1,67 +0,0 @@
1
- import React, { useRef, useEffect } from 'react';
2
- import classNames from 'classnames';
3
- import { c as cn } from './bem-350c1702.js';
4
-
5
- const defaultProps = {
6
- source: {
7
- type: {},
8
- src: '',
9
- },
10
- options: {
11
- controls: true,
12
- muted: false,
13
- autoplay: false,
14
- poster: '',
15
- playsinline: false,
16
- loop: false,
17
- },
18
- };
19
- const Video = (props) => {
20
- const { children, source, options, className, play, pause, playend, onPlay, onPause, onPlayEnd, ...restProps } = {
21
- ...defaultProps,
22
- ...props,
23
- };
24
- const rootRef = useRef(null);
25
- const b = cn('video');
26
- const classes = classNames(className, b(''));
27
- useEffect(() => {
28
- init();
29
- }, []);
30
- const init = () => {
31
- if (rootRef.current) {
32
- const videoRef = rootRef.current;
33
- if (options.autoplay) {
34
- setTimeout(() => {
35
- videoRef.play();
36
- }, 200);
37
- }
38
- if (options.playsinline) {
39
- videoRef.setAttribute('playsinline', String(options.playsinline));
40
- videoRef.setAttribute('webkit-playsinline', String(options.playsinline));
41
- videoRef.setAttribute('x5-video-player-type', 'h5-page');
42
- videoRef.setAttribute('x5-video-player-fullscreen', 'false');
43
- }
44
- videoRef.addEventListener('play', () => {
45
- onPlay && onPlay(videoRef);
46
- play && play(videoRef);
47
- });
48
- videoRef.addEventListener('pause', () => {
49
- onPause && onPause(videoRef);
50
- pause && pause(videoRef);
51
- });
52
- videoRef.addEventListener('ended', () => {
53
- videoRef.currentTime = 0;
54
- onPlayEnd && onPlayEnd(videoRef);
55
- playend && playend(videoRef);
56
- });
57
- }
58
- };
59
- return (React.createElement("div", { className: classes, ...restProps },
60
- React.createElement("video", { className: "nut-video-player", muted: options.muted, autoPlay: options.autoplay, loop: options.loop, poster: options.poster, controls: options.controls, ref: rootRef, src: source.src },
61
- React.createElement("source", { src: source.src, type: source.type }),
62
- React.createElement("track", { kind: "captions" }))));
63
- };
64
- Video.defaultProps = defaultProps;
65
- Video.displayName = 'NutVideo';
66
-
67
- export { Video as V };