@cloudbase/weda-ui 0.2.11 → 0.2.15

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 (322) hide show
  1. package/CHANGELOG.md +240 -0
  2. package/README.md +7 -2
  3. package/package.json +85 -42
  4. package/src/.DS_Store +0 -0
  5. package/src/configs/.DS_Store +0 -0
  6. package/src/configs/components/button.json +7 -3
  7. package/src/configs/components/form/richText.json +1 -1
  8. package/src/configs/components/form/uploader.json +29 -1
  9. package/src/configs/components/form/uploaderFile.json +158 -0
  10. package/src/configs/components/image.json +16 -3
  11. package/src/configs/components/link.json +3 -3
  12. package/src/configs/components/richtextview.json +2 -2
  13. package/src/configs/components/scrollVeiw.json +5 -5
  14. package/src/configs/components/swiper.json +6 -6
  15. package/src/configs/components/tabs.json +3 -3
  16. package/src/configs/components/text.json +39 -4
  17. package/src/configs/index.js +5 -3
  18. package/src/mp/.gitignore +10 -0
  19. package/src/mp/components/button/index.js +1 -0
  20. package/src/mp/components/button/index.wxss +8 -0
  21. package/src/mp/components/container/index.js +4 -0
  22. package/src/mp/components/form/select/index.js +18 -0
  23. package/src/mp/components/form/uploader/index.js +26 -29
  24. package/src/mp/components/form/uploaderFile/index.js +233 -0
  25. package/src/mp/components/form/uploaderFile/index.json +9 -0
  26. package/src/mp/components/form/uploaderFile/index.wxml +46 -0
  27. package/src/mp/components/form/uploaderFile/index.wxss +105 -0
  28. package/src/mp/components/image/index.js +54 -52
  29. package/src/mp/components/text/index.js +33 -0
  30. package/src/mp/components/text/index.wxml +1 -1
  31. package/src/mp/components/text/index.wxss +18 -0
  32. package/src/mp/index.json +1 -0
  33. package/src/mp/utils/platform.js +20 -0
  34. package/src/mp/utils/tcb.js +11 -0
  35. package/src/web/.DS_Store +0 -0
  36. package/src/web/actions/showModal/{index.jsx → index.tsx} +53 -3
  37. package/src/web/components/auth/index.js +2 -2
  38. package/src/web/components/button/index.css +9 -0
  39. package/src/web/components/button/{index.jsx → index.tsx} +27 -41
  40. package/src/web/components/container/{index.jsx → index.tsx} +6 -10
  41. package/src/web/components/drawer/index.tsx +57 -0
  42. package/src/web/components/form/checkbox/{index.jsx → index.tsx} +24 -48
  43. package/src/web/components/form/enumSelect/{NormalSelect.jsx → NormalSelect.tsx} +2 -9
  44. package/src/web/components/form/form/index.tsx +48 -0
  45. package/src/web/components/form/formcell/{index.jsx → index.tsx} +6 -13
  46. package/src/web/components/form/input/index.css +41 -0
  47. package/src/web/components/form/input/{index.jsx → index.tsx} +34 -67
  48. package/src/web/components/form/radio/{index.jsx → index.tsx} +19 -42
  49. package/src/web/components/form/{renderDecorator.jsx → renderDecorator.tsx} +1 -3
  50. package/src/web/components/form/select/{h5.jsx → h5.tsx} +18 -62
  51. package/src/web/components/form/select/{index.jsx → index.tsx} +51 -94
  52. package/src/web/components/form/select/region/{cities.js → cities.ts} +1 -1
  53. package/src/web/components/form/select/region/{index.js → index.ts} +3 -3
  54. package/src/web/components/form/select/region/{provinces.js → provinces.ts} +1 -1
  55. package/src/web/components/form/select/region/{regions.js → regions.ts} +1 -1
  56. package/src/web/components/form/select/time.jsx +2 -2
  57. package/src/web/components/form/switch/{index.jsx → index.tsx} +30 -47
  58. package/src/web/components/form/textarea/{index.jsx → index.tsx} +22 -55
  59. package/src/web/components/form/tips/{index.jsx → index.tsx} +8 -22
  60. package/src/web/components/form/types.d.ts +12 -0
  61. package/src/web/components/form/uploader/{index.jsx → index.tsx} +16 -14
  62. package/src/web/components/form/uploader/{uploader.h5.jsx → uploader.h5.tsx} +67 -57
  63. package/src/web/components/form/uploader/{uploader.pc.jsx → uploader.pc.tsx} +26 -43
  64. package/src/web/components/form/uploaderFile/fail.svg +12 -0
  65. package/src/web/components/form/uploaderFile/index.css +423 -0
  66. package/src/web/components/form/uploaderFile/index.jsx +30 -0
  67. package/src/web/components/form/uploaderFile/pending.svg +18 -0
  68. package/src/web/components/form/uploaderFile/success.svg +12 -0
  69. package/src/web/components/form/uploaderFile/uploadFile.h5.tsx +578 -0
  70. package/src/web/components/form/uploaderFile/uploadFile.pc.tsx +507 -0
  71. package/src/web/components/image/image.tsx +188 -0
  72. package/src/web/components/image/{index.jsx → index.tsx} +22 -37
  73. package/src/web/components/index.js +37 -2
  74. package/src/web/components/link/{index.jsx → index.tsx} +19 -36
  75. package/src/web/components/modal/{index.jsx → index.tsx} +22 -9
  76. package/src/web/components/picker/{datePicker.jsx → datePicker.tsx} +11 -12
  77. package/src/web/components/picker/{picker.jsx → picker.tsx} +7 -10
  78. package/src/web/components/picker/{timePicker.jsx → timePicker.tsx} +8 -16
  79. package/src/web/components/richText/{const.js → const.ts} +0 -0
  80. package/src/web/components/richText/index.jsx +5 -2
  81. package/src/web/components/richTextView/index.tsx +67 -0
  82. package/src/web/components/scrollView/{index.jsx → index.tsx} +18 -33
  83. package/src/web/components/slot/{index.jsx → index.tsx} +8 -9
  84. package/src/web/components/swiper/index.css +5 -1
  85. package/src/web/components/swiper/{index.jsx → index.tsx} +79 -79
  86. package/src/web/components/tabs/index.tsx +33 -0
  87. package/src/web/components/tabs/{tabs.h5.jsx → tabs.h5.tsx} +4 -33
  88. package/src/web/components/tabs/{tabs.pc.jsx → tabs.pc.tsx} +5 -39
  89. package/src/web/components/text/index.css +18 -0
  90. package/src/web/components/text/index.tsx +69 -0
  91. package/src/web/components/uploaderFileView/index.css +11 -0
  92. package/src/web/components/uploaderFileView/index.jsx +75 -0
  93. package/src/web/components/uploaderView/{index.jsx → index.tsx} +12 -15
  94. package/src/web/types.d.ts +20 -0
  95. package/src/web/utils/constant.js +2 -0
  96. package/src/web/utils/loading-fallback.tsx +2 -0
  97. package/src/web/utils/platform.js +77 -6
  98. package/src/web/utils/useSetState.ts +14 -0
  99. package/src/web/utils/useSyncValue.ts +17 -0
  100. package/src/configs/components/button.svg +0 -18
  101. package/src/web/components/drawer/index.jsx +0 -64
  102. package/src/web/components/form/form/index.jsx +0 -76
  103. package/src/web/components/image/image.jsx +0 -187
  104. package/src/web/components/link/test/__snapshots__/storybook.test.js.snap +0 -754
  105. package/src/web/components/richTextView/index.jsx +0 -89
  106. package/src/web/components/tabs/index.jsx +0 -10
  107. package/src/web/components/text/index.jsx +0 -71
  108. package/src/web/utils/useSyncValue.js +0 -14
  109. package/src/web/wedatheme/.code.yml +0 -16
  110. package/src/web/wedatheme/.editorconfig +0 -9
  111. package/src/web/wedatheme/.eslintrc +0 -20
  112. package/src/web/wedatheme/.orange-ci.yml +0 -55
  113. package/src/web/wedatheme/.vscode/extensions.json +0 -3
  114. package/src/web/wedatheme/.vscode/settings.json +0 -11
  115. package/src/web/wedatheme/README.md +0 -50
  116. package/src/web/wedatheme/i18n/README.md +0 -4
  117. package/src/web/wedatheme/i18n/translation/index.js +0 -10
  118. package/src/web/wedatheme/i18n/translation/zh.js +0 -15
  119. package/src/web/wedatheme/jsconfig.json +0 -15
  120. package/src/web/wedatheme/mock/app.js +0 -42
  121. package/src/web/wedatheme/mock/history-context.js +0 -8
  122. package/src/web/wedatheme/mock/index.js +0 -3
  123. package/src/web/wedatheme/mock/layout/AppLayout.jsx +0 -28
  124. package/src/web/wedatheme/mock/layout/MenuWithRouter.jsx +0 -50
  125. package/src/web/wedatheme/mock/layout/index.js +0 -1
  126. package/src/web/wedatheme/package.json +0 -61
  127. package/src/web/wedatheme/public/index.html +0 -19
  128. package/src/web/wedatheme/src/app.js +0 -22
  129. package/src/web/wedatheme/src/components/README.md +0 -4
  130. package/src/web/wedatheme/src/configs/menu.js +0 -9
  131. package/src/web/wedatheme/src/routes/wedatheme-index/Component.jsx +0 -402
  132. package/src/web/wedatheme/src/routes/wedatheme-index/Form.jsx +0 -729
  133. package/src/web/wedatheme/src/routes/wedatheme-index/FormItem.jsx +0 -18
  134. package/src/web/wedatheme/src/routes/wedatheme-index/WedathemeIndex.jsx +0 -1276
  135. package/src/web/wedatheme/src/routes/wedatheme-index/index.js +0 -1
  136. package/src/web/wedatheme/src/routes/weui2td/WEUI2TD.jsx +0 -3
  137. package/src/web/wedatheme/src/routes/weui2td/index.js +0 -1
  138. package/src/web/wedatheme/src/styles/_btn.scss +0 -24
  139. package/src/web/wedatheme/src/styles/_icon.scss +0 -653
  140. package/src/web/wedatheme/src/styles/_map.scss +0 -12
  141. package/src/web/wedatheme/src/styles/_middle.scss +0 -340
  142. package/src/web/wedatheme/src/styles/_upload.scss +0 -47
  143. package/src/web/wedatheme/src/styles/assets/alert-close.svg +0 -3
  144. package/src/web/wedatheme/src/styles/assets/and.svg +0 -12
  145. package/src/web/wedatheme/src/styles/assets/arrowdown--line.svg +0 -12
  146. package/src/web/wedatheme/src/styles/assets/arrowdown.svg +0 -12
  147. package/src/web/wedatheme/src/styles/assets/arrowleft--line.svg +0 -12
  148. package/src/web/wedatheme/src/styles/assets/arrowleft.svg +0 -12
  149. package/src/web/wedatheme/src/styles/assets/arrowright--line.svg +0 -12
  150. package/src/web/wedatheme/src/styles/assets/arrowright-blue--line.svg +0 -12
  151. package/src/web/wedatheme/src/styles/assets/arrowright.svg +0 -12
  152. package/src/web/wedatheme/src/styles/assets/arrowup--line.svg +0 -12
  153. package/src/web/wedatheme/src/styles/assets/arrowup.svg +0 -12
  154. package/src/web/wedatheme/src/styles/assets/bell-warning.svg +0 -3
  155. package/src/web/wedatheme/src/styles/assets/btnback.svg +0 -12
  156. package/src/web/wedatheme/src/styles/assets/calendar.svg +0 -12
  157. package/src/web/wedatheme/src/styles/assets/chartcolumn-1.svg +0 -12
  158. package/src/web/wedatheme/src/styles/assets/chartcolumn.svg +0 -12
  159. package/src/web/wedatheme/src/styles/assets/chartline-1.svg +0 -9
  160. package/src/web/wedatheme/src/styles/assets/chartline.svg +0 -9
  161. package/src/web/wedatheme/src/styles/assets/chartpie-1.svg +0 -12
  162. package/src/web/wedatheme/src/styles/assets/chartpie.svg +0 -12
  163. package/src/web/wedatheme/src/styles/assets/check-1.svg +0 -8
  164. package/src/web/wedatheme/src/styles/assets/check-2.svg +0 -1
  165. package/src/web/wedatheme/src/styles/assets/check.svg +0 -8
  166. package/src/web/wedatheme/src/styles/assets/close-1.svg +0 -8
  167. package/src/web/wedatheme/src/styles/assets/close.svg +0 -8
  168. package/src/web/wedatheme/src/styles/assets/consult.svg +0 -8
  169. package/src/web/wedatheme/src/styles/assets/convertip--blue.svg +0 -12
  170. package/src/web/wedatheme/src/styles/assets/convertip.svg +0 -12
  171. package/src/web/wedatheme/src/styles/assets/copy.svg +0 -12
  172. package/src/web/wedatheme/src/styles/assets/cur-active.svg +0 -12
  173. package/src/web/wedatheme/src/styles/assets/cur.svg +0 -12
  174. package/src/web/wedatheme/src/styles/assets/daily.svg +0 -13
  175. package/src/web/wedatheme/src/styles/assets/database.svg +0 -12
  176. package/src/web/wedatheme/src/styles/assets/datasheet.svg +0 -12
  177. package/src/web/wedatheme/src/styles/assets/delete-white.svg +0 -8
  178. package/src/web/wedatheme/src/styles/assets/delete.svg +0 -8
  179. package/src/web/wedatheme/src/styles/assets/detail.svg +0 -13
  180. package/src/web/wedatheme/src/styles/assets/dismiss.svg +0 -8
  181. package/src/web/wedatheme/src/styles/assets/download.svg +0 -12
  182. package/src/web/wedatheme/src/styles/assets/drop.svg +0 -15
  183. package/src/web/wedatheme/src/styles/assets/email-error.svg +0 -14
  184. package/src/web/wedatheme/src/styles/assets/email-warning.svg +0 -12
  185. package/src/web/wedatheme/src/styles/assets/email.svg +0 -14
  186. package/src/web/wedatheme/src/styles/assets/emailv.svg +0 -12
  187. package/src/web/wedatheme/src/styles/assets/error-1.svg +0 -8
  188. package/src/web/wedatheme/src/styles/assets/error-filled.svg +0 -3
  189. package/src/web/wedatheme/src/styles/assets/error.svg +0 -8
  190. package/src/web/wedatheme/src/styles/assets/externallink.svg +0 -12
  191. package/src/web/wedatheme/src/styles/assets/favorable.svg +0 -9
  192. package/src/web/wedatheme/src/styles/assets/filter.svg +0 -12
  193. package/src/web/wedatheme/src/styles/assets/firstpage.svg +0 -13
  194. package/src/web/wedatheme/src/styles/assets/folderclose.svg +0 -8
  195. package/src/web/wedatheme/src/styles/assets/folderopen.svg +0 -8
  196. package/src/web/wedatheme/src/styles/assets/fullscreenquit.svg +0 -12
  197. package/src/web/wedatheme/src/styles/assets/fullsreen.svg +0 -12
  198. package/src/web/wedatheme/src/styles/assets/globe-gray.svg +0 -12
  199. package/src/web/wedatheme/src/styles/assets/guide.svg +0 -9
  200. package/src/web/wedatheme/src/styles/assets/help.svg +0 -8
  201. package/src/web/wedatheme/src/styles/assets/hide.svg +0 -8
  202. package/src/web/wedatheme/src/styles/assets/info.svg +0 -8
  203. package/src/web/wedatheme/src/styles/assets/infoblue-1.svg +0 -8
  204. package/src/web/wedatheme/src/styles/assets/infoblue-filled.svg +0 -3
  205. package/src/web/wedatheme/src/styles/assets/infoblue.svg +0 -8
  206. package/src/web/wedatheme/src/styles/assets/jump-black.svg +0 -12
  207. package/src/web/wedatheme/src/styles/assets/jump.svg +0 -12
  208. package/src/web/wedatheme/src/styles/assets/lastpage.svg +0 -13
  209. package/src/web/wedatheme/src/styles/assets/loading.svg +0 -12
  210. package/src/web/wedatheme/src/styles/assets/local.svg +0 -10
  211. package/src/web/wedatheme/src/styles/assets/menu-fold-white.svg +0 -6
  212. package/src/web/wedatheme/src/styles/assets/menu-fold.svg +0 -6
  213. package/src/web/wedatheme/src/styles/assets/minus.svg +0 -12
  214. package/src/web/wedatheme/src/styles/assets/monitor.svg +0 -12
  215. package/src/web/wedatheme/src/styles/assets/more.svg +0 -8
  216. package/src/web/wedatheme/src/styles/assets/multi-line.svg +0 -12
  217. package/src/web/wedatheme/src/styles/assets/news.svg +0 -3
  218. package/src/web/wedatheme/src/styles/assets/not.svg +0 -12
  219. package/src/web/wedatheme/src/styles/assets/notice.svg +0 -8
  220. package/src/web/wedatheme/src/styles/assets/pencil.svg +0 -12
  221. package/src/web/wedatheme/src/styles/assets/pending-1.svg +0 -8
  222. package/src/web/wedatheme/src/styles/assets/pending-gray.svg +0 -8
  223. package/src/web/wedatheme/src/styles/assets/pending.svg +0 -8
  224. package/src/web/wedatheme/src/styles/assets/percent-blue.svg +0 -16
  225. package/src/web/wedatheme/src/styles/assets/percent.svg +0 -16
  226. package/src/web/wedatheme/src/styles/assets/phone-error.svg +0 -11
  227. package/src/web/wedatheme/src/styles/assets/phone-warning.svg +0 -9
  228. package/src/web/wedatheme/src/styles/assets/phone.svg +0 -12
  229. package/src/web/wedatheme/src/styles/assets/phonev.svg +0 -9
  230. package/src/web/wedatheme/src/styles/assets/plus.svg +0 -12
  231. package/src/web/wedatheme/src/styles/assets/qq.svg +0 -11
  232. package/src/web/wedatheme/src/styles/assets/realname.svg +0 -8
  233. package/src/web/wedatheme/src/styles/assets/realnamev.svg +0 -9
  234. package/src/web/wedatheme/src/styles/assets/refresh-blue.svg +0 -12
  235. package/src/web/wedatheme/src/styles/assets/refresh.svg +0 -12
  236. package/src/web/wedatheme/src/styles/assets/relationship-1.svg +0 -12
  237. package/src/web/wedatheme/src/styles/assets/relationship.svg +0 -12
  238. package/src/web/wedatheme/src/styles/assets/remind.svg +0 -8
  239. package/src/web/wedatheme/src/styles/assets/search.svg +0 -8
  240. package/src/web/wedatheme/src/styles/assets/setting.svg +0 -12
  241. package/src/web/wedatheme/src/styles/assets/shopcart.svg +0 -8
  242. package/src/web/wedatheme/src/styles/assets/show.svg +0 -8
  243. package/src/web/wedatheme/src/styles/assets/sort.svg +0 -12
  244. package/src/web/wedatheme/src/styles/assets/sortdown.svg +0 -12
  245. package/src/web/wedatheme/src/styles/assets/sortup.svg +0 -12
  246. package/src/web/wedatheme/src/styles/assets/success-1.svg +0 -8
  247. package/src/web/wedatheme/src/styles/assets/success-filled.svg +0 -3
  248. package/src/web/wedatheme/src/styles/assets/success.svg +0 -8
  249. package/src/web/wedatheme/src/styles/assets/table-1.svg +0 -12
  250. package/src/web/wedatheme/src/styles/assets/table.svg +0 -12
  251. package/src/web/wedatheme/src/styles/assets/tag.svg +0 -12
  252. package/src/web/wedatheme/src/styles/assets/time.svg +0 -12
  253. package/src/web/wedatheme/src/styles/assets/transfer.svg +0 -8
  254. package/src/web/wedatheme/src/styles/assets/trenddown.svg +0 -12
  255. package/src/web/wedatheme/src/styles/assets/trendup.svg +0 -12
  256. package/src/web/wedatheme/src/styles/assets/viewgrid.svg +0 -12
  257. package/src/web/wedatheme/src/styles/assets/viewlist.svg +0 -12
  258. package/src/web/wedatheme/src/styles/assets/warning-1.svg +0 -8
  259. package/src/web/wedatheme/src/styles/assets/warning-filled.svg +0 -3
  260. package/src/web/wedatheme/src/styles/assets/warning.svg +0 -8
  261. package/src/web/wedatheme/src/styles/assets/wechat-error.svg +0 -14
  262. package/src/web/wedatheme/src/styles/assets/wechat-warning.svg +0 -12
  263. package/src/web/wedatheme/src/styles/assets/wechat.svg +0 -12
  264. package/src/web/wedatheme/src/styles/assets/wechatv.svg +0 -12
  265. package/src/web/wedatheme/src/styles/assets/zoom-in-white.svg +0 -4
  266. package/src/web/wedatheme/src/styles/assets/zoom-in.svg +0 -4
  267. package/src/web/wedatheme/src/styles/assets/zoom-out-white.svg +0 -4
  268. package/src/web/wedatheme/src/styles/assets/zoom-out.svg +0 -4
  269. package/src/web/wedatheme/src/styles/index.scss +0 -18
  270. package/src/web/wedatheme/src/styles/main.css +0 -166
  271. package/src/web/wedatheme/src/styles/theme/_alert.scss +0 -73
  272. package/src/web/wedatheme/src/styles/theme/_badge.scss +0 -38
  273. package/src/web/wedatheme/src/styles/theme/_blank-page-v2.scss +0 -7
  274. package/src/web/wedatheme/src/styles/theme/_breadcrumb.scss +0 -8
  275. package/src/web/wedatheme/src/styles/theme/_bubble.scss +0 -24
  276. package/src/web/wedatheme/src/styles/theme/_button.scss +0 -212
  277. package/src/web/wedatheme/src/styles/theme/_card.scss +0 -12
  278. package/src/web/wedatheme/src/styles/theme/_cascader.scss +0 -43
  279. package/src/web/wedatheme/src/styles/theme/_checkbox&radio.scss +0 -83
  280. package/src/web/wedatheme/src/styles/theme/_datepicker.scss +0 -36
  281. package/src/web/wedatheme/src/styles/theme/_dialog.scss +0 -39
  282. package/src/web/wedatheme/src/styles/theme/_divider.scss +0 -1
  283. package/src/web/wedatheme/src/styles/theme/_drawer.scss +0 -15
  284. package/src/web/wedatheme/src/styles/theme/_dropdown.scss +0 -53
  285. package/src/web/wedatheme/src/styles/theme/_form.scss +0 -38
  286. package/src/web/wedatheme/src/styles/theme/_icon.scss +0 -0
  287. package/src/web/wedatheme/src/styles/theme/_input&textarea&select.scss +0 -85
  288. package/src/web/wedatheme/src/styles/theme/_inputnumber.scss +0 -16
  289. package/src/web/wedatheme/src/styles/theme/_link.scss +0 -14
  290. package/src/web/wedatheme/src/styles/theme/_list.scss +0 -41
  291. package/src/web/wedatheme/src/styles/theme/_metrics-board.scss +0 -14
  292. package/src/web/wedatheme/src/styles/theme/_notification.scss +0 -27
  293. package/src/web/wedatheme/src/styles/theme/_pagination.scss +0 -22
  294. package/src/web/wedatheme/src/styles/theme/_popconfirm.scss +0 -4
  295. package/src/web/wedatheme/src/styles/theme/_progress.scss +0 -28
  296. package/src/web/wedatheme/src/styles/theme/_region-select.scss +0 -17
  297. package/src/web/wedatheme/src/styles/theme/_search.scss +0 -18
  298. package/src/web/wedatheme/src/styles/theme/_segment.scss +0 -69
  299. package/src/web/wedatheme/src/styles/theme/_slider.scss +0 -18
  300. package/src/web/wedatheme/src/styles/theme/_status.scss +0 -4
  301. package/src/web/wedatheme/src/styles/theme/_steps.scss +0 -68
  302. package/src/web/wedatheme/src/styles/theme/_switch.scss +0 -11
  303. package/src/web/wedatheme/src/styles/theme/_table.scss +0 -44
  304. package/src/web/wedatheme/src/styles/theme/_tabs.scss +0 -44
  305. package/src/web/wedatheme/src/styles/theme/_tag-search.scss +0 -9
  306. package/src/web/wedatheme/src/styles/theme/_tag.scss +0 -48
  307. package/src/web/wedatheme/src/styles/theme/_timeline.scss +0 -0
  308. package/src/web/wedatheme/src/styles/theme/_toast.scss +0 -3
  309. package/src/web/wedatheme/src/styles/theme/_transfer.scss +0 -9
  310. package/src/web/wedatheme/src/styles/theme/_tree.scss +0 -11
  311. package/src/web/wedatheme/src/styles/theme/_upload.scss +0 -14
  312. package/src/web/wedatheme/src/styles/theme/_variables.scss +0 -140
  313. package/src/web/wedatheme/src/styles/theme/index.scss +0 -91
  314. package/src/web/wedatheme/style-package/README.md +0 -31
  315. package/src/web/wedatheme/style-package/ef6fa527e24e354765d806b826b41391.svg +0 -627
  316. package/src/web/wedatheme/style-package/index.css +0 -3
  317. package/src/web/wedatheme/style-package/package.json +0 -15
  318. package/src/web/wedatheme/tea.config.js +0 -66
  319. package/src/web/wedatheme/webpack/css.config.js +0 -114
  320. package/src/web/wedatheme/webpack/plugins/css-package-plugin.js +0 -23
  321. package/src/web/wedatheme/webpack/plugins/inject-assets-plugin.js +0 -32
  322. package/src/web/wedatheme/webpack/plugins/package-json-plugin.js +0 -66
@@ -0,0 +1,233 @@
1
+ import { getCloudInstance, getTempFileURL } from '../../../utils/tcb';
2
+ import deepEqual from '../../../utils/deepEqual';
3
+ import { transSize } from '../../../utils/platform';
4
+
5
+ Component({
6
+ options: {
7
+ virtualHost: true,
8
+ multipleSlots: true,
9
+ },
10
+ lifetimes: {
11
+ attached() {
12
+ this.setData({
13
+ urls: this.properties.defaultValue,
14
+ files: this.properties.defaultValue.map((url) => ({ url })),
15
+ });
16
+ },
17
+ },
18
+ properties: {
19
+ label: {
20
+ type: String,
21
+ value: '文件上传',
22
+ },
23
+ //是否显示标题
24
+ labelVisible: {
25
+ type: Boolean,
26
+ value: true,
27
+ },
28
+ //单文件上传模式
29
+ single: {
30
+ type: Boolean,
31
+ value: false,
32
+ },
33
+ defaultValue: {
34
+ type: Array,
35
+ value: [],
36
+ },
37
+ maxUploadCount: {
38
+ type: Number,
39
+ value: 9,
40
+ },
41
+ //单个文件最大使用限制
42
+ maxSize: {
43
+ type: Number,
44
+ value: 10,
45
+ },
46
+ layout: {
47
+ type: String,
48
+ value: 'horizontal',
49
+ },
50
+ extClass: {
51
+ type: String,
52
+ value: '',
53
+ },
54
+ tips: {
55
+ type: Boolean,
56
+ value: false,
57
+ },
58
+ status: {
59
+ type: String,
60
+ valve: 'success',
61
+ },
62
+ downloadVisible: {
63
+ type: Boolean,
64
+ value: true,
65
+ },
66
+ },
67
+ data: {
68
+ maxCount: 0,
69
+ files: [],
70
+ urls: [],
71
+ },
72
+ methods: {
73
+ // 批量上传文件前置事件
74
+ handleBefore: function (files = []) {
75
+ if (this.data.files.length + files.length > this.data.maxCount) {
76
+ wx.showToast({
77
+ title: `上传文件总数不能超过${this.data.maxCount}个`,
78
+ icon: 'none',
79
+ duration: 2000,
80
+ });
81
+ return false;
82
+ }
83
+ if (
84
+ this.properties.maxSize &&
85
+ files.some((f) => f.size > this.properties.maxSize * 1024 * 1024)
86
+ ) {
87
+ wx.showToast({
88
+ title: `上传文件大小不能超过${this.properties.maxSize}M`,
89
+ icon: 'none',
90
+ duration: 2000,
91
+ });
92
+ return false;
93
+ }
94
+ if (files.some((f) => f.size > 1024 * 1024 * 1024)) {
95
+ wx.showToast({
96
+ title: `上传文件大小不能超过1024M`,
97
+ icon: 'none',
98
+ duration: 2000,
99
+ });
100
+ return false;
101
+ }
102
+ return true;
103
+ },
104
+ //上传文件过程
105
+ uploadFile: async function () {
106
+ //文件上传的函数,
107
+ wx.chooseMessageFile({
108
+ count: this.data.maxCount,
109
+ type: 'all',
110
+ success: async (files) => {
111
+ this.handleUpload(files);
112
+ },
113
+ fail(e) {
114
+ this.triggerEvent('error', e.detail);
115
+ },
116
+ });
117
+ },
118
+ handleUpload: async function (files) {
119
+ var _this = this;
120
+ if (!this.handleBefore(files?.tempFiles)) return;
121
+ const uploadPath = 'weda-uploader';
122
+ const uploadPromise = files.tempFiles.map(async (tempFile) => {
123
+ const fileType = tempFile.path.split('.')?.[1];
124
+ const cloudPath = `${uploadPath}/uploader-${Date.now()}.${fileType}`;
125
+ tempFile.percent = '0';
126
+ tempFile.cloudPath = null;
127
+ tempFile.filePath = tempFile?.path || null;
128
+ tempFile.size = transSize(tempFile?.size);
129
+ tempFile.status = 'uploading';
130
+ this.data.files.push(tempFile);
131
+ this.setData({
132
+ files: [...this.data.files],
133
+ });
134
+ //初始上传文件状态
135
+ let index = this.data.files.length - 1;
136
+ try {
137
+ const tcb = await getCloudInstance();
138
+ const uploadTask = await tcb.uploadFile({
139
+ cloudPath: cloudPath,
140
+ filePath: tempFile.path,
141
+ success(res) {
142
+ _this.data.files[index].cloudPath = res.fileID;
143
+ _this.data.files[index].percent = 100;
144
+ _this.data.files[index].status = 'success';
145
+ const arr = [];
146
+ arr.push(res.fileID);
147
+ _this.setData({
148
+ files: _this.data.files,
149
+ urls: [..._this.data.urls, ...arr],
150
+ });
151
+ if (_this.properties.single) {
152
+ _this.triggerEvent('success', {
153
+ value: _this.data.urls[0],
154
+ });
155
+ } else {
156
+ _this.triggerEvent('success', {
157
+ value: _this.data.urls,
158
+ });
159
+ }
160
+ },
161
+ fail() {
162
+ this.data.files[index].status = 'fail';
163
+ },
164
+ });
165
+ uploadTask.onProgressUpdate((res) => {
166
+ this.data.files[index].percent = String(res.progress);
167
+ res.progress == 100
168
+ ? (this.data.files[index].status = 'success')
169
+ : (this.data.files[index].status = 'uploading');
170
+ this.data.files[index].uploaded = transSize(res.totalBytesSent);
171
+ this.setData({
172
+ files: this.data.files,
173
+ });
174
+ });
175
+ return { fileID: uploadTask.fileID };
176
+ } catch (e) {
177
+ this.triggerEvent('error', e.detail);
178
+ this.data.files[index].status = 'fail';
179
+ }
180
+ });
181
+ this.setData({
182
+ files: this.data.files,
183
+ });
184
+ return { urls: files.tempFiles };
185
+ },
186
+
187
+ onDelete: function (e) {
188
+ const filelist = this.data.files.filter(
189
+ (item) => e.target.dataset.item?.path != item?.path
190
+ );
191
+ this.setData({
192
+ files: filelist,
193
+ urls: this.data.urls.filter(
194
+ (v, index) => e.target.dataset.item?.cloudPath != v
195
+ ),
196
+ });
197
+ },
198
+ reload: function (e) {
199
+ this.handleUpload(e.target.dataset.item);
200
+ },
201
+ downloadFile: async function (e) {
202
+ const fileSrc = await getTempFileURL(e.target.dataset.item?.cloudPath);
203
+ wx.downloadFile({
204
+ url: fileSrc,
205
+ success(res) {
206
+ // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
207
+ if (res.statusCode === 200) {
208
+ wx.showToast({
209
+ title: `下载成功`,
210
+ icon: 'none',
211
+ duration: 2000,
212
+ });
213
+ }
214
+ },
215
+ });
216
+ },
217
+ },
218
+ observers: {
219
+ 'maxUploadCount, single': function (maxUploadCount, single) {
220
+ const maxCount = single ? 1 : maxUploadCount;
221
+ this.setData({
222
+ maxCount,
223
+ });
224
+ },
225
+ urls: function (urls) {
226
+ let value = urls;
227
+ if (this.properties.single) {
228
+ value = urls[0] ?? '';
229
+ }
230
+ this.triggerEvent('change', { value });
231
+ },
232
+ },
233
+ });
@@ -0,0 +1,9 @@
1
+ {
2
+ "component": true,
3
+ "styleIsolation": "shared",
4
+ "usingComponents": {
5
+ "mp-icon": "weui-miniprogram/icon/icon",
6
+ "mp-cells": "weui-miniprogram/cells/cells",
7
+ "mp-cell": "weui-miniprogram/cell/cell"
8
+ }
9
+ }
@@ -0,0 +1,46 @@
1
+ <view class="weda-uploader-files {{extClass}}">
2
+ <view class="weda-uploader-files__hd">
3
+ <view class="weda-uploader-files__title" wx:if="{{labelVisible}}">{{label}}</view>
4
+ <view>
5
+ <button class="weui-btn weda-uploader-files__btn" bindtap="uploadFile">上传文件</button>
6
+ <view wx:if="{{maxCount!=1}}" class="weda-uploader-files__tips">支持批量上传</view>
7
+ <view wx:else><slot name="tips"></slot></view>
8
+ </view>
9
+ </view>
10
+ <view class="weda-uploader-files__bd">
11
+ <view class="weda-uploader-files__files" wx-if="{{files.length > 0}}">
12
+ <block wx:for="{{files}}" wx:key="index">
13
+ <view class="weda-uploader-files__item">
14
+ <view class="weda-uploader-files__item-left">
15
+ <view class="weda-uploader-files__file-detail">
16
+ <text class="weda-uploader-files__file-name">{{item.name}}</text>
17
+ <view wx:if="{{item.status === 'success' || item.status === 'fail'}}" class="weda-uploader-files__file-status">
18
+ <mp-icon wx:if="{{item.status === 'success' }}" icon="done2" size="{{16}}" color="#00A870" type="field"></mp-icon>
19
+ <mp-icon wx:if="{{item.status === 'fail' }}" icon="close2" size="{{16}}" color="#E34D59" type="field"></mp-icon>
20
+ <text class="weda-uploader-files__file-status--msg">{{item.status === 'success' ? '上传成功' : '上传失败'}}</text>
21
+ </view>
22
+ </view>
23
+ <view class="weda-uploader-files__progress weui-progress" wx-if="{{item.status === 'pending' || item.status === 'uploading'}}">
24
+ <view class="weui-progress__bar">
25
+ <progress percent="{{item.percent}}" stroke-width="3" activeColor="#0052D9" backgroundColor="#E7E7E7" stroke-width="3"/>
26
+ </view>
27
+ </view>
28
+ <view class="weda-uploader-files__file-foot">
29
+ <div>
30
+ <text wx-if="{{item.status === 'uploading' || item.status === 'pending'}}">{{item.status === 'uploading' ? item.uploaded : '0K' }}/</text>
31
+ <text>{{item.size}}</text>
32
+ </div>
33
+ <div wx-if="{{item.status === 'uploading' || item.status === 'pending'}}">{{item.status === 'pending' ? '等待上传' : '上传中'}}</div>
34
+
35
+ </view>
36
+ </view>
37
+ <view class="weda-uploader-files__btn-group">
38
+ <image wx-if="{{item.status === 'success'&&downloadVisible}}" data-item="{{item}}" bindtap="downloadFile" class="weda-uploader-files__icon" src="https://imgcache.qq.com/qcloud/tcloud_dtc/static/static_source_business/4cba5da1-cde4-40c6-a075-86eff22858a4.svg"></image>
39
+ <image wx-if="{{item.status === 'fail'}}" data-item="{{item}}" bindtap="reload" class="weda-uploader-files__icon" src="https://imgcache.qq.com/qcloud/tcloud_dtc/static/static_source_business/af5486eb-65e0-4536-8e51-6c68a17b71ac.svg"></image>
40
+ <image class="weda-uploader-files__icon" data-item="{{item}}" bindtap="onDelete" src="https://imgcache.qq.com/qcloud/tcloud_dtc/static/static_source_business/2372f6a8-2f6a-4f30-92bf-73c62a5c0ae7.svg"></image>
41
+ </view>
42
+ </view>
43
+ </block>
44
+ </view>
45
+ </view>
46
+ </view>
@@ -0,0 +1,105 @@
1
+ @import '../../../style/weda-ui.wxss';
2
+ .weda-uploader-files {
3
+ width: 100%;
4
+ background-color: #f6f6f6;
5
+ }
6
+ .weda-uploader-files__hd {
7
+ width: 100%;
8
+ padding: 24px 20px 8px 20px;
9
+ display: flex;
10
+ background-color: #ffffff;
11
+ }
12
+
13
+ .weda-uploader-files__btn::after {
14
+ border: 1px solid #dcdcdc;
15
+ border-radius: 3px;
16
+ width: 100%;
17
+ height: 100%;
18
+ transform: none;
19
+ }
20
+ .weda-uploader-files__title {
21
+ font-size: 14px;
22
+ line-height: 20px;
23
+ color: #000;
24
+ margin-right: 20px;
25
+ padding-top: 6px;
26
+ }
27
+ .weda-uploader-files__btn {
28
+ margin: 0;
29
+ width: 88px;
30
+ height: 32px;
31
+ padding: 0;
32
+ display: flex;
33
+ align-items: center;
34
+ justify-content: center;
35
+ font-size: 14px;
36
+ line-height: 22px;
37
+ color: #000;
38
+ border: 1px solid #dcdcdc;
39
+ border-radius: 3px;
40
+ font-weight: normal;
41
+ background-color: transparent;
42
+ }
43
+ .weda-uploader-files__tips {
44
+ margin-top: 8px;
45
+ font-size: 12px;
46
+ line-height: 20px;
47
+ color: rgba(0, 0, 0, 0.4);
48
+ }
49
+ .weda-uploader-files__item {
50
+ width: 100%;
51
+ margin-top: 8px;
52
+ padding: 16px;
53
+ background-color: #fff;
54
+ display: flex;
55
+ justify-content: space-between;
56
+ align-items: center;
57
+ }
58
+ .weda-uploader-files__item-left {
59
+ flex: 1;
60
+ margin-right: 16px;
61
+ }
62
+ .weda-uploader-files__file-detail {
63
+ display: flex;
64
+ align-items: center;
65
+ }
66
+ .weda-uploader-files__file-name {
67
+ font-size: 14px;
68
+ line-height: 22px;
69
+ color: rgba(0, 0, 0, 0.9);
70
+ overflow: hidden;
71
+ text-overflow: ellipsis;
72
+ white-space: nowrap;
73
+ max-width: 200px;
74
+ }
75
+ .weda-uploader-files__file-status {
76
+ margin-left: 24px;
77
+ width: 28%;
78
+ }
79
+ .weda-uploader-files__file-status--msg {
80
+ margin-left: 4px;
81
+ font-size: 12px;
82
+ line-height: 20px;
83
+ color: rgba(0, 0, 0, 0.9);
84
+ }
85
+ .weda-uploader-files__file-foot {
86
+ font-size: 12px;
87
+ line-height: 20px;
88
+ color: rgba(0, 0, 0, 0.4);
89
+ margin-top: 8px;
90
+ display: flex;
91
+ justify-content: space-between;
92
+ }
93
+ .weda-uploader-files__btn-group {
94
+ display: flex;
95
+ }
96
+ .weda-uploader-files__icon {
97
+ width: 24px;
98
+ height: 24px;
99
+ }
100
+ .weda-uploader-files__icon + .weda-uploader-files__icon {
101
+ margin-left: 16px;
102
+ }
103
+ .weda-uploader-files__progress {
104
+ margin-top: 4px;
105
+ }
@@ -37,76 +37,78 @@ Component({
37
37
  value: false,
38
38
  },
39
39
  imgPreview: {
40
- type: Boolean,
41
- value: false
40
+ type: Boolean,
41
+ value: false,
42
42
  },
43
43
  maskClosable: {
44
- type: Boolean,
45
- value: true
46
- }
44
+ type: Boolean,
45
+ value: true,
46
+ },
47
47
  },
48
48
  methods: {
49
- load: function(e) {
49
+ load: function (e) {
50
50
  this.triggerEvent('error', e.detail);
51
51
  this.setData({
52
52
  realHeight: e.detail.height,
53
- realWidth: e.detail.width
53
+ realWidth: e.detail.width,
54
54
  });
55
55
  },
56
- error: function(e) {
56
+ error: function (e) {
57
57
  this.setData({
58
58
  isError: true,
59
- clsx: this.properties.className + 'weda-image-error'
59
+ clsx: this.properties.className + 'weda-image-error',
60
60
  });
61
61
  this.triggerEvent('error', e.detail);
62
62
  },
63
- onImgTap: function() {
64
- if(this.properties.imgPreview && !this.data.isError) {
65
- // 计算图片预览展示高度
66
- const {windowWidth, windowHeight} = wx.getSystemInfoSync();
67
- const showHeight = windowWidth / (this.data.realWidth / this.data.realHeight);
68
- const offsetHeight = windowHeight / 2 - (showHeight / 2);
69
- this.setData({
70
- showImg: true,
71
- zoom: 1,
72
- previewTranslateY: 0,
73
- previewTranslateX: 0,
74
- showHeight,
75
- offsetHeight
76
- });
77
- }
63
+ onImgTap: function (e) {
64
+ if (this.properties.imgPreview && !this.data.isError) {
65
+ // 计算图片预览展示高度
66
+ const { windowWidth, windowHeight } = wx.getSystemInfoSync();
67
+ const showHeight =
68
+ windowWidth / (this.data.realWidth / this.data.realHeight);
69
+ const offsetHeight = windowHeight / 2 - showHeight / 2;
70
+ this.setData({
71
+ showImg: true,
72
+ zoom: 1,
73
+ previewTranslateY: 0,
74
+ previewTranslateX: 0,
75
+ showHeight,
76
+ offsetHeight,
77
+ });
78
+ }
79
+ this.triggerEvent('tap', e.detail);
78
80
  },
79
- onPinch: function(ev) {
81
+ onPinch: function (ev) {
80
82
  let zoom = ev.detail.zoom;
81
83
  // zoom = this.data.zoom * zoom;
82
- if(zoom > 5) {
84
+ if (zoom > 5) {
83
85
  zoom = 5;
84
86
  }
85
- if(zoom < 0.6) {
87
+ if (zoom < 0.6) {
86
88
  zoom = 0.6;
87
89
  }
88
90
  this.setData({
89
- zoom
91
+ zoom,
90
92
  });
91
93
  },
92
- onPressMove: function(ev) {
94
+ onPressMove: function (ev) {
93
95
  this.setData({
94
96
  previewTranslateX: this.data.previewTranslateX + ev.detail.deltaX,
95
- previewTranslateY: this.data.previewTranslateY + ev.detail.deltaY
97
+ previewTranslateY: this.data.previewTranslateY + ev.detail.deltaY,
96
98
  });
97
99
  },
98
- onMaskClick: function() {
99
- if(this.properties.maskClosable) {
100
- this.setData({
101
- showImg: false
102
- });
103
- }
104
- },
105
- onCloseClick: function() {
100
+ onMaskClick: function () {
101
+ if (this.properties.maskClosable) {
106
102
  this.setData({
107
- showImg: false
103
+ showImg: false,
108
104
  });
109
- }
105
+ }
106
+ },
107
+ onCloseClick: function () {
108
+ this.setData({
109
+ showImg: false,
110
+ });
111
+ },
110
112
  },
111
113
  data: {
112
114
  showImg: false,
@@ -118,13 +120,13 @@ Component({
118
120
  previewTranslateX: 0,
119
121
  previewTranslateY: 0,
120
122
  realHeight: 0,
121
- realWidth: 0
123
+ realWidth: 0,
122
124
  },
123
125
  observers: {
124
- className: function() {
126
+ className: function () {
125
127
  const className = this.properties.className;
126
128
  this.setData({
127
- clsx: className
129
+ clsx: className,
128
130
  });
129
131
  },
130
132
  src: function () {
@@ -147,35 +149,35 @@ Component({
147
149
  });
148
150
  }
149
151
  },
150
- 'fit, mode': function(fit, mode) {
151
- if(fit) {
152
- switch(fit) {
152
+ 'fit, mode': function (fit, mode) {
153
+ if (fit) {
154
+ switch (fit) {
153
155
  case 'cover':
154
156
  this.setData({
155
- imgMode: 'aspectFill'
157
+ imgMode: 'aspectFill',
156
158
  });
157
159
  break;
158
160
  case 'contain':
159
161
  this.setData({
160
- imgMode: 'aspectFit'
162
+ imgMode: 'aspectFit',
161
163
  });
162
164
  break;
163
165
  case 'fill':
164
166
  this.setData({
165
- imgMode: 'scaleToFill'
167
+ imgMode: 'scaleToFill',
166
168
  });
167
169
  break;
168
170
  default:
169
171
  this.setData({
170
- imgMode: 'scaleToFill'
172
+ imgMode: 'scaleToFill',
171
173
  });
172
174
  break;
173
175
  }
174
176
  } else {
175
177
  this.setData({
176
- imgMode: mode
178
+ imgMode: mode,
177
179
  });
178
180
  }
179
- }
181
+ },
180
182
  },
181
183
  });
@@ -7,6 +7,10 @@ Component({
7
7
  type: String,
8
8
  value: '',
9
9
  },
10
+ level: {
11
+ type: String,
12
+ value: '0',
13
+ },
10
14
  maxLines: {
11
15
  type: Number,
12
16
  value: 2,
@@ -23,10 +27,39 @@ Component({
23
27
  type: String,
24
28
  value: '',
25
29
  },
30
+ textAlign: {
31
+ type: String,
32
+ value: '',
33
+ },
34
+ textColor: {
35
+ type: String,
36
+ value: '',
37
+ },
26
38
  style: {
27
39
  type: String,
28
40
  value: '',
29
41
  },
30
42
  },
31
43
  methods: {},
44
+ observers: {
45
+ level: function (level) {
46
+ const levelName = `level_${level}`;
47
+ if (level !== '0') {
48
+ this.setData({ levelName });
49
+ }
50
+ },
51
+ 'textAlign,textColor': function (textAlign, textColor) {
52
+ let style = this.properties.style;
53
+ // 添加文本颜色属性
54
+ if (textColor !== '') {
55
+ style = `${style};color:${textColor}`;
56
+ }
57
+
58
+ // 添加对齐属性
59
+ if (textAlign !== '') {
60
+ style = `${style};text-align: ${textAlign}`;
61
+ }
62
+ this.setData({ style });
63
+ },
64
+ },
32
65
  });
@@ -1,5 +1,5 @@
1
1
  <text
2
- class="weda-text weda-ui {{className}}"
2
+ class="weda-text weda-ui {{className}} {{levelName}}"
3
3
  id="{{id}}"
4
4
  user-select="{{userSelect}}"
5
5
  style="-webkit-line-clamp:{{maxLines}}; white-space: {{ space ? 'pre-warp' : 'pre-line'}}; {{style}}"
@@ -6,3 +6,21 @@
6
6
  /* -webkit-line-clamp: 1; */
7
7
  /* white-space: pre-line; */
8
8
  }
9
+ .weda-text.level_1 {
10
+ font-size: 64px !important;
11
+ }
12
+ .weda-text.level_2 {
13
+ font-size: 56px !important;
14
+ }
15
+ .weda-text.level_3 {
16
+ font-size: 48px !important;
17
+ }
18
+ .weda-text.level_4 {
19
+ font-size: 40px !important;
20
+ }
21
+ .weda-text.level_5 {
22
+ font-size: 32px !important;
23
+ }
24
+ .weda-text.level_6 {
25
+ font-size: 24px !important;
26
+ }
package/src/mp/index.json CHANGED
@@ -12,6 +12,7 @@
12
12
  "Textarea": "components/form/textarea/index",
13
13
  "Select": "components/form/select/index",
14
14
  "Uploader": "components/form/uploader/index",
15
+ "UploaderFile": "components/form/uploaderFile/index",
15
16
  "Container": "components/container/index",
16
17
  "Slot": {
17
18
  "type": "native",
@@ -0,0 +1,20 @@
1
+ /**
2
+ * 文件字节转换
3
+ */
4
+ export const transSize = (size) => {
5
+ const b = parseInt(size) || 0;
6
+ const getBig = (d) => Math.ceil(d / 1024) || 0;
7
+ if (b < 1024) {
8
+ return `${size}B`;
9
+ }
10
+ const k = getBig(size);
11
+ if (k < 1024) {
12
+ return `${k}K`;
13
+ }
14
+ const m = getBig(k);
15
+ if (m < 1024) {
16
+ return `${m}M`;
17
+ }
18
+ const g = getBig(m);
19
+ return `${g}G`;
20
+ };