@nutui/nutui-react-taro 1.5.2 → 1.5.3-beta.1

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 (232) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/dist/esm/ActionSheet.js +14 -90
  3. package/dist/esm/Address.js +21 -620
  4. package/dist/esm/Animate.js +7 -53
  5. package/dist/esm/AnimatingNumbers.js +7 -125
  6. package/dist/esm/Audio.js +19 -264
  7. package/dist/esm/Avatar.js +11 -130
  8. package/dist/esm/{AvatarContext-15733596.js → AvatarContext-c96afdcc.js} +3 -1
  9. package/dist/esm/AvatarGroup.js +11 -41
  10. package/dist/esm/BackTop.js +10 -138
  11. package/dist/esm/Badge.js +9 -71
  12. package/dist/esm/Barrage.js +8 -97
  13. package/dist/esm/Button.js +9 -108
  14. package/dist/esm/Calendar.js +20 -128
  15. package/dist/esm/CalendarItem.js +12 -674
  16. package/dist/esm/Card.js +11 -61
  17. package/dist/esm/Cascader.js +16 -671
  18. package/dist/esm/Cell.js +9 -101
  19. package/dist/esm/CellGroup.js +5 -2
  20. package/dist/esm/Checkbox.js +7 -5
  21. package/dist/esm/CheckboxGroup.js +8 -111
  22. package/dist/esm/CircleProgress.js +8 -114
  23. package/dist/esm/Col.js +7 -57
  24. package/dist/esm/Collapse.js +7 -97
  25. package/dist/esm/CollapseItem.js +8 -146
  26. package/dist/esm/ConfigProvider.js +8 -187
  27. package/dist/esm/CountDown.js +9 -247
  28. package/dist/esm/DatePicker.js +25 -309
  29. package/dist/esm/Dialog.js +17 -296
  30. package/dist/esm/Divider.js +7 -34
  31. package/dist/esm/Drag.js +7 -118
  32. package/dist/esm/Elevator.js +8 -234
  33. package/dist/esm/Ellipsis.js +10 -176
  34. package/dist/esm/Empty.js +8 -79
  35. package/dist/esm/FixedNav.js +14 -103
  36. package/dist/esm/Form.js +10 -215
  37. package/dist/esm/FormItem.js +10 -3
  38. package/dist/esm/Grid.js +11 -81
  39. package/dist/esm/GridItem.js +13 -123
  40. package/dist/esm/Icon.js +5 -2
  41. package/dist/esm/Image.js +11 -169
  42. package/dist/esm/ImagePreview.js +19 -225
  43. package/dist/esm/Indicator.js +7 -50
  44. package/dist/esm/Infiniteloading.js +14 -215
  45. package/dist/esm/Input.js +12 -362
  46. package/dist/esm/InputNumber.js +9 -275
  47. package/dist/esm/Layout.js +5 -13
  48. package/dist/esm/Menu.js +10 -153
  49. package/dist/esm/MenuItem.js +15 -175
  50. package/dist/esm/NavBar.js +9 -114
  51. package/dist/esm/NoticeBar.js +10 -568
  52. package/dist/esm/Notify.js +8 -234
  53. package/dist/esm/NumberKeyboard.js +17 -247
  54. package/dist/esm/Overlay.js +6 -2
  55. package/dist/esm/Pagination.js +9 -168
  56. package/dist/esm/Picker.js +22 -494
  57. package/dist/esm/Popover.js +12 -223
  58. package/dist/esm/Popup.js +13 -193
  59. package/dist/esm/Price.js +6 -84
  60. package/dist/esm/Progress.js +9 -122
  61. package/dist/esm/PullToRefresh.js +13 -276
  62. package/dist/esm/Radio.js +8 -4
  63. package/dist/esm/RadioGroup.js +7 -120
  64. package/dist/esm/Range.js +15 -406
  65. package/dist/esm/Rate.js +9 -121
  66. package/dist/esm/Row.js +7 -49
  67. package/dist/esm/SearchBar.js +12 -235
  68. package/dist/esm/ShortPassword.js +17 -191
  69. package/dist/esm/SideNavBar.js +19 -57
  70. package/dist/esm/SideNavBarItem.js +5 -24
  71. package/dist/esm/Signature.js +13 -153
  72. package/dist/esm/Skeleton.js +12 -98
  73. package/dist/esm/Step.js +10 -87
  74. package/dist/esm/Steps.js +8 -38
  75. package/dist/esm/Sticky.js +11 -190
  76. package/dist/esm/SubSideNavBar.js +6 -78
  77. package/dist/esm/Swipe.js +10 -230
  78. package/dist/esm/Swiper.js +9 -490
  79. package/dist/esm/SwiperItem.js +8 -36
  80. package/dist/esm/Switch.js +6 -71
  81. package/dist/esm/TabPane.js +5 -2
  82. package/dist/esm/Tabbar.js +6 -68
  83. package/dist/esm/TabbarItem.js +9 -78
  84. package/dist/esm/Table.js +12 -140
  85. package/dist/esm/Tabs.js +8 -5
  86. package/dist/esm/Tag.js +10 -110
  87. package/dist/esm/TextArea.js +9 -148
  88. package/dist/esm/TimeDetail.js +9 -67
  89. package/dist/esm/TimePannel.js +9 -29
  90. package/dist/esm/TimeSelect.js +19 -171
  91. package/dist/esm/Toast.js +7 -268
  92. package/dist/esm/TrendArrow.js +7 -99
  93. package/dist/esm/Uploader.js +17 -566
  94. package/dist/esm/{UserContext-101ad4a4.js → UserContext-0aac9a82.js} +3 -1
  95. package/dist/esm/{UserContext-2629d479.js → UserContext-e402e1a6.js} +3 -1
  96. package/dist/esm/{UserContext-b33bcf21.js → UserContext-e8176108.js} +3 -1
  97. package/dist/esm/Video.js +7 -90
  98. package/dist/esm/VirtualList.js +9 -313
  99. package/dist/esm/WaterMark.js +11 -111
  100. package/dist/esm/actionsheet.taro-e6a51446.js +53 -0
  101. package/dist/esm/address.taro-3a9b6396.js +461 -0
  102. package/dist/esm/animate.taro-fb7986d6.js +40 -0
  103. package/dist/esm/animatingnumbers.taro-03e5d61d.js +104 -0
  104. package/dist/esm/audio.taro-87ec8bf2.js +161 -0
  105. package/dist/esm/avatar.taro-3676f38f.js +103 -0
  106. package/dist/esm/avatargroup-f3574510.js +34 -0
  107. package/dist/esm/backtop.taro-66394a36.js +48 -0
  108. package/dist/esm/badge.taro-a4e59c11.js +52 -0
  109. package/dist/esm/barrage.taro-0495a1b2.js +94 -0
  110. package/dist/esm/{bem-3b438e61.js → bem-350c1702.js} +3 -6
  111. package/dist/esm/button.taro-9244d065.js +100 -0
  112. package/dist/esm/calendar.taro-670842ea.js +65 -0
  113. package/dist/esm/calendaritem.taro-2a603571.js +787 -0
  114. package/dist/esm/can-use-dom-3eeb5af4.js +6 -0
  115. package/dist/esm/card.taro-e4c76dad.js +33 -0
  116. package/dist/esm/cascader.taro-a5553aa5.js +437 -0
  117. package/dist/esm/cell.taro-a10a74d3.js +64 -0
  118. package/dist/esm/cellgroup.taro-abe501bc.js +25 -0
  119. package/dist/esm/checkbox.taro-6120e3e3.js +171 -0
  120. package/dist/esm/circleprogress.taro-79854448.js +109 -0
  121. package/dist/esm/col.taro-53eed3cc.js +41 -0
  122. package/dist/esm/collapse.taro-1a9e4ba2.js +83 -0
  123. package/dist/esm/collapseitem-4d0bc55d.js +83 -0
  124. package/dist/esm/configprovider-67d19d3a.js +19 -0
  125. package/dist/esm/configprovider.taro-8d71eb49.js +42 -0
  126. package/dist/esm/countdown.taro-5b17c607.js +226 -0
  127. package/dist/esm/datepicker.taro-477ad357.js +275 -0
  128. package/dist/esm/dialog.taro-a3267d29.js +118 -0
  129. package/dist/esm/divider.taro-26d1d8b4.js +35 -0
  130. package/dist/esm/drag.taro-79bb8744.js +110 -0
  131. package/dist/esm/elevator.taro-6019669e.js +178 -0
  132. package/dist/esm/ellipsis.taro-f15f26da.js +241 -0
  133. package/dist/esm/empty.taro-04ae4389.js +62 -0
  134. package/dist/esm/fixednav.taro-1f05acaf.js +53 -0
  135. package/dist/esm/form.taro-0b399b30.js +178 -0
  136. package/dist/esm/formitem.taro-190a3326.js +89 -0
  137. package/dist/esm/get-scroll-parent-b4a07e65.js +25 -0
  138. package/dist/esm/grid.taro-3503b82c.js +61 -0
  139. package/dist/esm/{grid.context-2ee27d95.js → grid.taro.context-c2bbfb4f.js} +4 -2
  140. package/dist/esm/griditem.taro-cdb3f119.js +98 -0
  141. package/dist/esm/icon-296a1bec.js +63 -0
  142. package/dist/esm/icon.taro-296a1bec.js +63 -0
  143. package/dist/esm/image.taro-142cf512.js +64 -0
  144. package/dist/esm/imagepreview.taro-c50bb0a3.js +167 -0
  145. package/dist/esm/index-5bcb0ff8.js +7 -0
  146. package/dist/esm/indicator.taro-cba8b010.js +37 -0
  147. package/dist/esm/infiniteloading.taro-183bccbf.js +144 -0
  148. package/dist/esm/input.taro-97af6c96.js +240 -0
  149. package/dist/esm/inputnumber.taro-91f65d17.js +130 -0
  150. package/dist/esm/layout.taro-9046d093.js +11 -0
  151. package/dist/esm/menu.taro-7e4038a1.js +99 -0
  152. package/dist/esm/menuitem.taro-96cc4f15.js +130 -0
  153. package/dist/esm/navbar.taro-777c4705.js +79 -0
  154. package/dist/esm/noticebar.taro-4a23cdee.js +448 -0
  155. package/dist/esm/notify.taro-e17c6f82.js +75 -0
  156. package/dist/esm/numberkeyboard.taro-1bc24744.js +159 -0
  157. package/dist/esm/nutui-react.es.js +119 -94
  158. package/dist/esm/offsetContext-c2a746fa.js +5 -0
  159. package/dist/esm/overlay.taro-21e87fb1.js +69 -0
  160. package/dist/esm/pagination.taro-715a173b.js +124 -0
  161. package/dist/esm/picker.taro-0073eeaa.js +472 -0
  162. package/dist/esm/popover.taro-ad5e76ea.js +156 -0
  163. package/dist/esm/popup.taro-01676bff.js +137 -0
  164. package/dist/esm/price.taro-776ed16e.js +83 -0
  165. package/dist/esm/progress.taro-f0ce38e9.js +90 -0
  166. package/dist/esm/pulltorefresh.taro-a294f656.js +181 -0
  167. package/dist/esm/radio.taro-a6eff96c.js +168 -0
  168. package/dist/esm/range.taro-d8fc7656.js +332 -0
  169. package/dist/esm/rate.taro-6cdf03bd.js +75 -0
  170. package/dist/esm/row.taro-f64d4a13.js +46 -0
  171. package/dist/esm/searchbar.taro-0c25927b.js +152 -0
  172. package/dist/esm/shortpassword.taro-9ee034f7.js +111 -0
  173. package/dist/esm/sidenavbar.taro-c307b35e.js +35 -0
  174. package/dist/esm/sidenavbaritem.taro-5a7965d0.js +12 -0
  175. package/dist/esm/signature.taro-ec4e713b.js +143 -0
  176. package/dist/esm/skeleton.taro-76faf63f.js +62 -0
  177. package/dist/esm/step.taro-b7903e8c.js +59 -0
  178. package/dist/esm/steps.taro-c82d2252.js +30 -0
  179. package/dist/esm/sticky.taro-218bda37.js +138 -0
  180. package/dist/esm/subsidenavbar.taro-69cb9752.js +63 -0
  181. package/dist/esm/supports-passive-c85ef996.js +18 -0
  182. package/dist/esm/swipe.taro-ea35f07f.js +177 -0
  183. package/dist/esm/swiper.taro-7a94e211.js +451 -0
  184. package/dist/esm/swiperitem-c9e3d0d5.js +29 -0
  185. package/dist/esm/switch.taro-34ca8228.js +50 -0
  186. package/dist/esm/tabbar.taro-9acfc2fa.js +59 -0
  187. package/dist/esm/tabbaritem.taro-bf517487.js +58 -0
  188. package/dist/esm/table.taro-91fc0c01.js +93 -0
  189. package/dist/esm/tabpane.taro-4ca340ef.js +23 -0
  190. package/dist/esm/tabs.taro-6a7524a4.js +140 -0
  191. package/dist/esm/tag.taro-23ba0834.js +92 -0
  192. package/dist/esm/textarea.taro-442e7350.js +94 -0
  193. package/dist/esm/timedetail.taro-5b2f2269.js +44 -0
  194. package/dist/esm/timepannel.taro-d6e40180.js +22 -0
  195. package/dist/esm/timeselect.taro-a07036f4.js +133 -0
  196. package/dist/esm/toast.taro-d6c14811.js +109 -0
  197. package/dist/esm/trendarrow.taro-b8c5ccd9.js +73 -0
  198. package/dist/esm/typings-b9828dba.js +9 -0
  199. package/dist/esm/uploader.taro-587e6bf3.js +492 -0
  200. package/dist/esm/useClientRect-1f8ed1fe.js +18 -0
  201. package/dist/esm/useTouch-db24bb5c.js +69 -0
  202. package/dist/esm/video-f1be8a91.js +67 -0
  203. package/dist/esm/virtuallist.taro-f0b0270d.js +214 -0
  204. package/dist/esm/watermark.taro-9ce2ae37.js +114 -0
  205. package/dist/esm/zh-CN-c779e6c1.js +131 -0
  206. package/dist/locales/base.js +1 -1
  207. package/dist/locales/en-US.js +1 -1
  208. package/dist/locales/id-ID.js +1 -1
  209. package/dist/locales/zh-CN.js +1 -1
  210. package/dist/locales/zh-TW.js +1 -1
  211. package/dist/locales/zh-UG.js +1 -1
  212. package/dist/nutui.react.mjs +13028 -14863
  213. package/dist/nutui.react.umd.js +13027 -14864
  214. package/dist/style.mjs +1 -1
  215. package/dist/types/index.d.ts +176 -183
  216. package/package.json +1 -1
  217. package/dist/esm/cellgroup-fcc72767.js +0 -34
  218. package/dist/esm/checkbox-44e13cd0.js +0 -137
  219. package/dist/esm/date-c7aad4c0.js +0 -97
  220. package/dist/esm/formitem-8a73a5fb.js +0 -157
  221. package/dist/esm/get-scroll-parent-5f85dee8.js +0 -24
  222. package/dist/esm/icon-4ef1581c.js +0 -70
  223. package/dist/esm/index-030b7245.js +0 -11
  224. package/dist/esm/offsetContext-3ab00d40.js +0 -16
  225. package/dist/esm/overlay-de6c79d5.js +0 -83
  226. package/dist/esm/radio-9f141e6b.js +0 -118
  227. package/dist/esm/render-bbebb760.js +0 -79
  228. package/dist/esm/tabpane-01075e6c.js +0 -29
  229. package/dist/esm/tabs-e1b4e4b1.js +0 -181
  230. package/dist/esm/typings-f27b58f4.js +0 -8
  231. package/dist/esm/useClientRect-56bb675b.js +0 -39
  232. package/dist/esm/useTouch-cf73a407.js +0 -99
@@ -0,0 +1,214 @@
1
+ import React__default, { useState, useRef, useEffect, useCallback } from 'react';
2
+ import { ScrollView } from '@tarojs/components';
3
+ import { getSystemInfoSync } from '@tarojs/taro';
4
+ import { u as useConfig } from './configprovider.taro-8d71eb49.js';
5
+
6
+ // 缓存列表初始化信息
7
+ const initPositinoCache = (reaItemSize, length = 0) => {
8
+ let index = 0;
9
+ const positions = Array(length);
10
+ while (index < length) {
11
+ positions[index] = {
12
+ index,
13
+ height: reaItemSize,
14
+ width: reaItemSize,
15
+ top: index * reaItemSize,
16
+ bottom: (index + 1) * reaItemSize,
17
+ left: index * reaItemSize,
18
+ right: (index + 1) * reaItemSize,
19
+ };
20
+ index++;
21
+ }
22
+ return positions;
23
+ };
24
+ // 通过二分法找到 scrollOffset 对应的值
25
+ const binarySearch = (positionsList, value = 0, horizontal) => {
26
+ let start = 0;
27
+ let end = positionsList.length - 1;
28
+ let tempIndex = null;
29
+ const key = horizontal ? 'right' : 'bottom';
30
+ while (start <= end) {
31
+ const midIndex = Math.floor((start + end) / 2);
32
+ const midValue = positionsList[midIndex][key];
33
+ // 相等则直接返回(因为是bottom, 因此startIndex应该是下一个节点)
34
+ if (midValue === value) {
35
+ return midIndex + 1;
36
+ }
37
+ // 中间值 < 传入值,则说明 value对应的节点 大于 start, start往后移动一位
38
+ if (midValue < value) {
39
+ start = midIndex + 1;
40
+ }
41
+ // 中间值 > 传入值,则说明 value 在 中间值之前,end 节点移动到 mid - 1
42
+ else if (midValue > value) {
43
+ // tempIndex存放最靠近值为value的所有
44
+ if (tempIndex === null || tempIndex > midIndex) {
45
+ tempIndex = midIndex;
46
+ }
47
+ end = midIndex - 1;
48
+ }
49
+ }
50
+ tempIndex = tempIndex || 0;
51
+ return tempIndex;
52
+ };
53
+ // 更新Item大小
54
+ const updateItemSize = (positions, items, sizeKey) => {
55
+ const newPos = positions.concat();
56
+ Array.from(items).forEach((item) => {
57
+ const index = Number(item.getAttribute('data-index'));
58
+ const styleVal = item.getAttribute('style');
59
+ if (styleVal && styleVal.includes('none'))
60
+ return;
61
+ const nowSize = item.getBoundingClientRect()[sizeKey];
62
+ const oldSize = positions[index][sizeKey];
63
+ // 存在差值, 更新该节点以后所有的节点
64
+ const dValue = oldSize - nowSize;
65
+ if (dValue) {
66
+ if (sizeKey === 'width') {
67
+ newPos[index].right -= dValue;
68
+ newPos[index][sizeKey] = nowSize;
69
+ for (let k = index + 1; k < positions.length; k++) {
70
+ newPos[k].left = positions[k - 1].right;
71
+ newPos[k].right -= dValue;
72
+ }
73
+ }
74
+ else if (sizeKey === 'height') {
75
+ newPos[index].bottom -= dValue;
76
+ newPos[index][sizeKey] = nowSize;
77
+ for (let k = index + 1; k < positions.length; k++) {
78
+ newPos[k].top = positions[k - 1].bottom;
79
+ newPos[k].bottom -= dValue;
80
+ }
81
+ }
82
+ }
83
+ });
84
+ };
85
+
86
+ const defaultProps = {
87
+ sourceData: [],
88
+ itemSize: 66,
89
+ itemEqualSize: true,
90
+ overscan: 2,
91
+ };
92
+ const clientHeight = getSystemInfoSync().windowHeight - 5 || 667;
93
+ getSystemInfoSync().windowWidth || 375;
94
+ const VirtualList = (props) => {
95
+ const { sourceData = [], ItemRender, itemSize = 66, itemEqualSize = true, overscan = 2, key, onScroll, className, containerSize = clientHeight, ...rest } = props;
96
+ // const sizeKey = horizontal ? 'width' : 'height'
97
+ // const scrollKey = horizontal ? 'scrollLeft' : 'scrollTop'
98
+ // const offsetKey = horizontal ? 'left' : 'top'
99
+ const [startOffset, setStartOffset] = useState(0);
100
+ const [start, setStart] = useState(0);
101
+ const [list, setList] = useState(sourceData.slice());
102
+ useConfig();
103
+ // 虚拟列表容器ref
104
+ const scrollRef = useRef(null);
105
+ // 虚拟列表显示区域ref
106
+ const itemsRef = useRef(null);
107
+ const firstItemRef = useRef(null);
108
+ // 列表位置信息
109
+ const [positions, setPositions] = useState([
110
+ {
111
+ index: 0,
112
+ left: 0,
113
+ top: 0,
114
+ bottom: 0,
115
+ width: 0,
116
+ height: 0,
117
+ right: 0,
118
+ },
119
+ ]);
120
+ const [offSetSize, setOffSetSize] = useState(containerSize || 0);
121
+ const [options, setOptions] = useState({
122
+ startOffset: 0,
123
+ startIndex: 0,
124
+ overStart: 0,
125
+ endIndex: 10, // 可视区域结束索引
126
+ });
127
+ useEffect(() => {
128
+ if (sourceData.length) {
129
+ setList(sourceData.slice());
130
+ }
131
+ }, [sourceData]);
132
+ // 初始计算可视区域展示数量
133
+ useEffect(() => {
134
+ setPositions((options) => {
135
+ return { ...options, endIndex: visibleCount() };
136
+ });
137
+ }, [itemSize, overscan, offSetSize]);
138
+ useEffect(() => {
139
+ if (containerSize)
140
+ return;
141
+ setOffSetSize(getContainerHeight());
142
+ }, [containerSize]);
143
+ useEffect(() => {
144
+ const pos = initPositinoCache(itemSize, sourceData.length);
145
+ setPositions(pos);
146
+ }, [itemSize, sourceData]);
147
+ // 可视区域总高度
148
+ const getContainerHeight = () => {
149
+ // 初始首页列表高度
150
+ const initH = itemSize * sourceData.length;
151
+ // 未设置containerSize高度,判断首页高度小于设备高度时,滚动容器高度为首页数据高度,减5为分页触发的偏移量
152
+ return initH < clientHeight
153
+ ? initH + overscan * itemSize - 5
154
+ : Math.min(containerSize, clientHeight); // Math.min(containerSize, clientHeight)
155
+ };
156
+ // 可视区域条数
157
+ const visibleCount = () => {
158
+ return Math.ceil(getContainerHeight() / itemSize) + overscan;
159
+ };
160
+ const end = () => {
161
+ return start + visibleCount();
162
+ };
163
+ const listHeight = () => {
164
+ return list.length * itemSize;
165
+ };
166
+ const visibleData = () => {
167
+ return list.slice(start, Math.min(end(), list.length));
168
+ };
169
+ const updateTotalSize = useCallback(() => {
170
+ if (!itemsRef.current)
171
+ return;
172
+ const items = itemsRef.current.children;
173
+ if (!items.length)
174
+ return;
175
+ // 更新缓存
176
+ updateItemSize(positions, items, 'height');
177
+ }, [positions]);
178
+ // 滚动监听
179
+ const listScroll = (e) => {
180
+ const scrollTop = e.detail ? e.detail.scrollTop : e.target.scrollTop;
181
+ const scrollSize = Math.floor(scrollTop);
182
+ const startIndex = binarySearch(positions, scrollSize, false);
183
+ const overStart = startIndex - overscan > -1 ? startIndex - overscan : 0;
184
+ const endIndex = end();
185
+ if (!itemEqualSize) {
186
+ updateTotalSize();
187
+ }
188
+ setStart(Math.floor(scrollTop / itemSize));
189
+ setOptions({ startOffset, startIndex, overStart, endIndex });
190
+ if (end() > list.length - 1) {
191
+ onScroll && onScroll();
192
+ }
193
+ setStartOffset(scrollTop - (scrollTop % itemSize));
194
+ };
195
+ return (React__default.createElement("div", { className: className ? `${className} nut-virtualList-box` : 'nut-virtualList-box', ...rest, style: {
196
+ height: containerSize ? `${offSetSize}px` : '',
197
+ } },
198
+ React__default.createElement(ScrollView, { scrollTop: 0, scrollY: true, ref: scrollRef, className: "nut-virtuallist", style: {
199
+ height: `${getContainerHeight()}px`,
200
+ }, onScroll: listScroll },
201
+ React__default.createElement("div", { className: "nut-virtuallist-phantom", style: { height: `${listHeight()}px` } }),
202
+ React__default.createElement("div", { className: "nut-virtuallist-container", ref: itemsRef, style: { transform: `translate3d(0, ${startOffset}px, 0)` } }, visibleData().map((data, index) => {
203
+ const { overStart } = options;
204
+ const dataIndex = overStart + index;
205
+ key && data[key] ? data[key] : dataIndex;
206
+ return (React__default.createElement("div", { ref: dataIndex === 0 ? firstItemRef : null, "data-index": `${dataIndex}`, className: "nut-virtuallist-item", key: `${data}`, style: {
207
+ height: `${itemEqualSize ? `${itemSize}px` : 'auto'}`,
208
+ } }, ItemRender ? (React__default.createElement(ItemRender, { data: data, index: `${index}` })) : (data)));
209
+ })))));
210
+ };
211
+ VirtualList.defaultProps = defaultProps;
212
+ VirtualList.displayName = 'NutVirtualList';
213
+
214
+ export { VirtualList as V };
@@ -0,0 +1,114 @@
1
+ import React__default, { useState, useEffect } from 'react';
2
+ import { getSystemInfo, createOffscreenCanvas } from '@tarojs/taro';
3
+ import classNames from 'classnames';
4
+ import { u as useConfig } from './configprovider-67d19d3a.js';
5
+ import { c as cn } from './bem-350c1702.js';
6
+
7
+ const defaultProps = {
8
+ content: '',
9
+ fullPage: true,
10
+ zIndex: 2000,
11
+ gapX: 24,
12
+ gapY: 48,
13
+ width: 120,
14
+ height: 64,
15
+ image: '',
16
+ imageWidth: 120,
17
+ imageHeight: 64,
18
+ rotate: -22,
19
+ fontColor: 'rgba(0,0,0,.15)',
20
+ fontStyle: 'normal',
21
+ fontFamily: 'PingFang SC',
22
+ fontWeight: 'normal',
23
+ fontSize: 14,
24
+ };
25
+ const WaterMark = (props) => {
26
+ const { locale } = useConfig();
27
+ const { content, fullPage, zIndex, className, gapX, gapY, width, height, image, imageWidth, imageHeight, rotate, fontColor, fontStyle, fontFamily, fontWeight, fontSize, style, children, } = {
28
+ ...defaultProps,
29
+ ...props,
30
+ };
31
+ const [base64Url, setBase64Url] = useState('');
32
+ const b = cn('watermark');
33
+ const classes = classNames({
34
+ [`${b('')}`]: true,
35
+ [`${b('')}-full-page`]: fullPage,
36
+ });
37
+ const cls = classNames(classes, className);
38
+ useEffect(() => {
39
+ init();
40
+ }, []);
41
+ const init = () => {
42
+ let ratio = 1;
43
+ getSystemInfo().then((res) => {
44
+ ratio = res.pixelRatio;
45
+ const canvasWidth = `${(gapX + width) * ratio}px`;
46
+ const canvasHeight = `${(gapY + height) * ratio}px`;
47
+ const markWidth = width * ratio;
48
+ const markHeight = height * ratio;
49
+ let ctx;
50
+ let canvas;
51
+ if (process.env.TARO_ENV === 'h5') {
52
+ canvas = document.createElement('canvas');
53
+ ctx = canvas.getContext('2d');
54
+ canvas.setAttribute('width', canvasWidth);
55
+ canvas.setAttribute('height', canvasHeight);
56
+ }
57
+ else {
58
+ canvas = createOffscreenCanvas({
59
+ type: '2d',
60
+ width: Number(canvasWidth),
61
+ height: Number(canvasHeight),
62
+ });
63
+ ctx = canvas.getContext('2d');
64
+ }
65
+ if (ctx) {
66
+ if (image) {
67
+ ctx.translate(markWidth / 2, markHeight / 2);
68
+ ctx.rotate((Math.PI / 180) * Number(rotate));
69
+ let img;
70
+ if (process.env.TARO_ENV === 'h5') {
71
+ img = new Image();
72
+ }
73
+ else {
74
+ img = canvas.createImage();
75
+ }
76
+ img.crossOrigin = 'anonymous';
77
+ img.referrerPolicy = 'no-referrer';
78
+ img.src = image;
79
+ img.onload = () => {
80
+ ctx.drawImage(img, (-imageWidth * ratio) / 2, (-imageHeight * ratio) / 2, imageWidth * ratio, imageHeight * ratio);
81
+ ctx.restore();
82
+ setBase64Url(canvas.toDataURL());
83
+ };
84
+ }
85
+ else if (content) {
86
+ ctx.textBaseline = 'middle'; // 设置或返回在绘制文本时使用的当前文本基线。(正中)
87
+ ctx.textAlign = 'center'; // 设置或返回文本内容的当前对齐方式。
88
+ // 文字绕中间旋转
89
+ ctx.translate(markWidth / 2, markHeight / 2);
90
+ ctx.rotate((Math.PI / 180) * Number(rotate));
91
+ const markSize = Number(fontSize) * ratio;
92
+ ctx.font = `${fontStyle} normal ${fontWeight} ${markSize}px/${markHeight}px ${fontFamily}`;
93
+ ctx.fillStyle = fontColor;
94
+ ctx.fillText(content, 0, 0); // 在画布上绘制"被填充的"文本。
95
+ ctx.restore(); // 返回之前保存过的路径状态和属性。
96
+ setBase64Url(canvas.toDataURL());
97
+ }
98
+ }
99
+ else {
100
+ throw new Error(locale.watermark.errorCanvasTips);
101
+ }
102
+ });
103
+ };
104
+ return (React__default.createElement("div", { className: cls, style: {
105
+ zIndex,
106
+ backgroundSize: `${gapX + width}px`,
107
+ backgroundImage: `url('${base64Url}')`,
108
+ ...style,
109
+ } }));
110
+ };
111
+ WaterMark.defaultProps = defaultProps;
112
+ WaterMark.displayName = 'NutWaterMark';
113
+
114
+ export { WaterMark as W };
@@ -0,0 +1,131 @@
1
+ const zhCN = {
2
+ save: '保存',
3
+ confirm: '确认',
4
+ cancel: '取消',
5
+ done: '完成',
6
+ noData: '暂无数据',
7
+ placeholder: '请输入内容',
8
+ select: '请选择',
9
+ video: {
10
+ errorTip: '视频加载失败',
11
+ clickRetry: '点击重试',
12
+ },
13
+ fixednav: {
14
+ activeText: '收起导航',
15
+ unActiveText: '快速导航',
16
+ },
17
+ infiniteloading: {
18
+ pullRefreshText: '松开刷新',
19
+ loadText: '加载中……',
20
+ loadMoreText: '哎呀,这里是底部了啦',
21
+ },
22
+ pagination: {
23
+ prev: '上一页',
24
+ next: '下一页',
25
+ },
26
+ range: {
27
+ rangeText: '不在该区间内',
28
+ },
29
+ calendaritem: {
30
+ weekdays: ['日', '一', '二', '三', '四', '五', '六'],
31
+ end: '结束',
32
+ start: '开始',
33
+ confirm: '确认',
34
+ title: '日历选择',
35
+ monthTitle: (year, month) => `${year}年${month}月`,
36
+ today: '今天',
37
+ loadPreviousMonth: '加载上一个月',
38
+ noEarlierMonth: '没有更早月份',
39
+ },
40
+ shortpassword: {
41
+ title: '请输入密码',
42
+ desc: '您使用了虚拟资产,请进行验证',
43
+ tips: '忘记密码',
44
+ },
45
+ uploader: {
46
+ ready: '准备完成',
47
+ readyUpload: '准备上传',
48
+ waitingUpload: '等待上传',
49
+ uploading: '上传中...',
50
+ success: '上传成功',
51
+ error: '上传失败',
52
+ deleteWord: '用户阻止了删除!',
53
+ },
54
+ countdown: {
55
+ day: '天',
56
+ hour: '时',
57
+ minute: '分',
58
+ second: '秒',
59
+ },
60
+ address: {
61
+ selectRegion: '请选择所在地区',
62
+ deliveryTo: '配送至',
63
+ chooseAnotherAddress: '选择其他地址',
64
+ },
65
+ signature: {
66
+ reSign: '重签',
67
+ unSupportTpl: '对不起,当前浏览器不支持Canvas,无法使用本控件!',
68
+ },
69
+ ecard: {
70
+ chooseText: '请选择电子卡面值',
71
+ otherValueText: '其他面值',
72
+ placeholder: '请输入1-5000整数',
73
+ },
74
+ timeselect: {
75
+ pickupTime: '取件时间',
76
+ },
77
+ sku: {
78
+ buyNow: '立即购买',
79
+ buyNumber: '购买数量',
80
+ addToCard: '加入购物车',
81
+ },
82
+ skuheader: {
83
+ skuId: '商品编号',
84
+ },
85
+ addresslist: {
86
+ addAddress: '新建地址',
87
+ },
88
+ comment: {
89
+ complaintsText: '我要投诉',
90
+ additionalReview: (day) => `购买${day}天后追评`,
91
+ additionalImages: (length) => `${length}张追评图片`,
92
+ },
93
+ searchbar: {
94
+ basePlaceholder: '上京东,购好物',
95
+ text: '文本',
96
+ test: '测试',
97
+ title1: '基础用法',
98
+ title2: '搜索框形状及最大长度',
99
+ title3: '搜索框内外背景设置',
100
+ title4: '搜索框文本设置',
101
+ title5: '自定义图标设置',
102
+ title6: '数据改变监听',
103
+ },
104
+ audio: {
105
+ back: '快退',
106
+ forward: '快进',
107
+ pause: '暂停',
108
+ start: '开始',
109
+ mute: '静音',
110
+ tips: 'onPlayEnd事件在loop=false时才会触发',
111
+ },
112
+ datepicker: {
113
+ year: '年',
114
+ month: '月',
115
+ day: '日',
116
+ hour: '时',
117
+ min: '分',
118
+ seconds: '秒',
119
+ },
120
+ pullToRefresh: {
121
+ pullingText: '下拉刷新',
122
+ canReleaseText: '松开刷新',
123
+ refreshingText: '加载中...',
124
+ completeText: '刷新成功',
125
+ },
126
+ watermark: {
127
+ errorCanvasTips: '当前环境不支持Canvas',
128
+ },
129
+ };
130
+
131
+ export { zhCN as z };
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v1.5.2 Wed Apr 26 2023 17:21:48 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui-react-taro v1.5.3-beta.1 Fri Apr 28 2023 10:39:57 GMT+0800 (中国标准时间)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v1.5.2 Wed Apr 26 2023 17:21:48 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui-react-taro v1.5.3-beta.1 Fri Apr 28 2023 10:39:57 GMT+0800 (中国标准时间)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v1.5.2 Wed Apr 26 2023 17:21:48 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui-react-taro v1.5.3-beta.1 Fri Apr 28 2023 10:39:57 GMT+0800 (中国标准时间)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v1.5.2 Wed Apr 26 2023 17:21:48 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui-react-taro v1.5.3-beta.1 Fri Apr 28 2023 10:39:57 GMT+0800 (中国标准时间)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v1.5.2 Wed Apr 26 2023 17:21:48 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui-react-taro v1.5.3-beta.1 Fri Apr 28 2023 10:39:57 GMT+0800 (中国标准时间)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * @nutui/nutui-react-taro v1.5.2 Wed Apr 26 2023 17:21:48 GMT+0800 (中国标准时间)
2
+ * @nutui/nutui-react-taro v1.5.3-beta.1 Fri Apr 28 2023 10:39:57 GMT+0800 (中国标准时间)
3
3
  * (c) 2023 @jdf2e.
4
4
  * Released under the MIT License.
5
5
  */