@nutui/nutui-react-taro 1.4.4 → 1.4.5-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/dist/esm/Address.js +5 -5
  3. package/dist/esm/Audio.js +5 -5
  4. package/dist/esm/AvatarContext-7153ad2b.js +3 -1
  5. package/dist/esm/AvatarGroup.js +4 -4
  6. package/dist/esm/Calendar.js +5 -5
  7. package/dist/esm/CalendarItem.js +4 -4
  8. package/dist/esm/Card.js +4 -3
  9. package/dist/esm/Cell.js +2 -2
  10. package/dist/esm/ConfigProvider.js +3 -3
  11. package/dist/esm/CountDown.js +4 -4
  12. package/dist/esm/DatePicker.js +5 -5
  13. package/dist/esm/Dialog.js +4 -4
  14. package/dist/esm/Ellipsis.js +4 -4
  15. package/dist/esm/Empty.js +4 -4
  16. package/dist/esm/FixedNav.js +4 -4
  17. package/dist/esm/Form.js +4 -4
  18. package/dist/esm/FormItem.js +3 -3
  19. package/dist/esm/Grid.js +4 -4
  20. package/dist/esm/GridItem.js +4 -4
  21. package/dist/esm/Image.js +4 -4
  22. package/dist/esm/Infiniteloading.js +4 -4
  23. package/dist/esm/Input.js +4 -4
  24. package/dist/esm/MenuItem.js +4 -4
  25. package/dist/esm/NoticeBar.js +2 -2
  26. package/dist/esm/NumberKeyboard.js +4 -4
  27. package/dist/esm/Pagination.js +4 -4
  28. package/dist/esm/Picker.js +4 -4
  29. package/dist/esm/PullToRefresh.js +4 -4
  30. package/dist/esm/Range.js +4 -4
  31. package/dist/esm/SearchBar.js +4 -4
  32. package/dist/esm/ShortPassword.js +4 -4
  33. package/dist/esm/SideNavBar.js +4 -4
  34. package/dist/esm/Signature.js +4 -4
  35. package/dist/esm/Sticky.js +4 -4
  36. package/dist/esm/Table.js +4 -4
  37. package/dist/esm/Tag.js +3 -2
  38. package/dist/esm/TextArea.js +4 -4
  39. package/dist/esm/TimeDetail.js +4 -4
  40. package/dist/esm/TimePannel.js +4 -4
  41. package/dist/esm/TimeSelect.js +6 -6
  42. package/dist/esm/Uploader.js +4 -4
  43. package/dist/esm/UserContext-68f62e66.js +3 -1
  44. package/dist/esm/UserContext-b4181162.js +3 -1
  45. package/dist/esm/UserContext-be8097d2.js +3 -1
  46. package/dist/esm/VirtualList.js +6 -4
  47. package/dist/esm/WaterMark.js +4 -4
  48. package/dist/esm/actionsheet.taro-a58d3d12.js +45 -83
  49. package/dist/esm/address.taro-79cc7c96.js +461 -0
  50. package/dist/esm/animate.taro-b0e83dd5.js +32 -46
  51. package/dist/esm/animatingnumbers.taro-6f40a2e9.js +93 -134
  52. package/dist/esm/audio.taro-4fadc583.js +161 -0
  53. package/dist/esm/avatar.taro-85ced995.js +93 -119
  54. package/dist/esm/avatargroup-1d900174.js +34 -0
  55. package/dist/esm/backtop.taro-99107c30.js +39 -62
  56. package/dist/esm/badge.taro-fe9171ec.js +40 -58
  57. package/dist/esm/barrage.taro-0e157b5e.js +61 -91
  58. package/dist/esm/bem-893ad28d.js +3 -6
  59. package/dist/esm/button.taro-4ce133b9.js +87 -98
  60. package/dist/esm/calendar.taro-4ed72058.js +38 -0
  61. package/dist/esm/calendaritem.taro-1ebe428d.js +571 -0
  62. package/dist/esm/card.taro-39055e82.js +32 -0
  63. package/dist/esm/cascader.taro-d8cb1c3e.js +397 -636
  64. package/dist/esm/cell.taro-9a04a92e.js +64 -0
  65. package/dist/esm/cellgroup.taro-e094471c.js +18 -27
  66. package/dist/esm/checkbox.taro-0bda9796.js +160 -232
  67. package/dist/esm/circleprogress.taro-47db537c.js +99 -120
  68. package/dist/esm/col.taro-b61c7cba.js +33 -50
  69. package/dist/esm/collapse.taro-af58206c.js +73 -86
  70. package/dist/esm/collapseitem-ce1849d2.js +75 -139
  71. package/dist/esm/configprovider-5eea4f5d.js +19 -0
  72. package/dist/esm/configprovider.taro-26882dd2.js +42 -0
  73. package/dist/esm/countdown.taro-9e40de9c.js +225 -0
  74. package/dist/esm/datepicker.taro-7220e495.js +270 -0
  75. package/dist/esm/dialog.taro-1c03960e.js +123 -0
  76. package/dist/esm/divider.taro-5236fe6a.js +27 -27
  77. package/dist/esm/drag.taro-82b6b27a.js +99 -138
  78. package/dist/esm/elevator.taro-d7d65470.js +185 -259
  79. package/dist/esm/ellipsis.taro-49b6db0c.js +232 -0
  80. package/dist/esm/empty.taro-7bd813f9.js +62 -0
  81. package/dist/esm/fixednav.taro-5ad15202.js +53 -0
  82. package/dist/esm/form.taro-71d32671.js +179 -0
  83. package/dist/esm/formitem.taro-3089489b.js +89 -0
  84. package/dist/esm/grid.taro-e6decfce.js +58 -0
  85. package/dist/esm/grid.taro.context-39636af9.js +4 -2
  86. package/dist/esm/griditem.taro-4cade72e.js +90 -0
  87. package/dist/esm/icon-8dc4de10.js +43 -51
  88. package/dist/esm/icon.taro-1d0d4fb7.js +43 -51
  89. package/dist/esm/image.taro-e6dc5867.js +64 -0
  90. package/dist/esm/imagepreview.taro-3400ea03.js +158 -205
  91. package/dist/esm/index.taro-a36f96fb.js +149 -210
  92. package/dist/esm/indicator.taro-183ea169.js +29 -43
  93. package/dist/esm/infiniteloading.taro-6c2a2e95.js +142 -0
  94. package/dist/esm/input.taro-fd566407.js +243 -0
  95. package/dist/esm/inputnumber.taro-dc39b853.js +129 -177
  96. package/dist/esm/layout.taro-358f014f.js +6 -9
  97. package/dist/esm/menu.taro-4abed328.js +89 -132
  98. package/dist/esm/menuitem.taro-6e8b27c3.js +130 -0
  99. package/dist/esm/navbar.taro-c931c078.js +69 -105
  100. package/dist/esm/noticebar.taro-69ea7673.js +450 -0
  101. package/dist/esm/notify.taro-308e5892.js +66 -97
  102. package/dist/esm/numberkeyboard.taro-194519e4.js +158 -0
  103. package/dist/esm/nutui-react.es.js +44 -44
  104. package/dist/esm/offsetContext-bfb02c25.js +3 -1
  105. package/dist/esm/overlay.taro-98367bc1.js +59 -74
  106. package/dist/esm/pagination.taro-bb490de9.js +124 -0
  107. package/dist/esm/picker.taro-2a8ded7c.js +420 -0
  108. package/dist/esm/popover.taro-46d813e8.js +132 -222
  109. package/dist/esm/popup.taro-cb777e09.js +125 -178
  110. package/dist/esm/price.taro-8801462e.js +75 -86
  111. package/dist/esm/progress.taro-623bc807.js +84 -118
  112. package/dist/esm/pulltorefresh.taro-cab7b51c.js +221 -0
  113. package/dist/esm/range.taro-5d6ff217.js +332 -0
  114. package/dist/esm/rate.taro-10197384.js +64 -111
  115. package/dist/esm/row.taro-37a895de.js +38 -42
  116. package/dist/esm/searchbar.taro-839dd622.js +148 -0
  117. package/dist/esm/shortpassword.taro-182d46f7.js +111 -0
  118. package/dist/esm/sidenavbar.taro-006cf38b.js +35 -0
  119. package/dist/esm/sidenavbaritem.taro-fee11d26.js +9 -22
  120. package/dist/esm/signature.taro-33632585.js +143 -0
  121. package/dist/esm/skeleton.taro-853ce460.js +51 -88
  122. package/dist/esm/step.taro-1c94e067.js +49 -78
  123. package/dist/esm/steps.taro-acf205a0.js +21 -30
  124. package/dist/esm/sticky.taro-d0553f48.js +13 -0
  125. package/dist/esm/subsidenavbar.taro-f46b4c73.js +58 -75
  126. package/dist/esm/swipe.taro-83bc248f.js +164 -254
  127. package/dist/esm/swiper.taro-852f6615.js +424 -505
  128. package/dist/esm/swiperitem-86a3578a.js +20 -28
  129. package/dist/esm/switch.taro-bae2dca0.js +43 -64
  130. package/dist/esm/tabbar.taro-86cece39.js +47 -57
  131. package/dist/esm/tabbaritem.taro-8dfb8055.js +51 -79
  132. package/dist/esm/table.taro-cb4dd2c3.js +92 -0
  133. package/dist/esm/tabpane.taro-91cd6cf4.js +17 -22
  134. package/dist/esm/tabs.taro-e71875fa.js +121 -165
  135. package/dist/esm/tag.taro-00fe554d.js +89 -0
  136. package/dist/esm/textarea.taro-42600f8c.js +74 -0
  137. package/dist/esm/timedetail.taro-c5f564fd.js +44 -0
  138. package/dist/esm/timepannel.taro-29f9dd86.js +22 -0
  139. package/dist/esm/timeselect.taro-3ecce65d.js +133 -0
  140. package/dist/esm/toast.taro-0804b6b4.js +99 -137
  141. package/dist/esm/trendarrow.taro-5a7153e4.js +63 -90
  142. package/dist/esm/types/src/packages/cell/cell.taro.d.ts +0 -1
  143. package/dist/esm/types/src/packages/noticebar/noticebar.d.ts +5 -4
  144. package/dist/esm/types/src/packages/noticebar/noticebar.taro.d.ts +5 -4
  145. package/dist/esm/types/src/packages/uploader/uploader.d.ts +1 -1
  146. package/dist/esm/types/src/packages/virtuallist/virtuallist.taro.d.ts +13 -2
  147. package/dist/esm/typings-1c5f2628.js +7 -6
  148. package/dist/esm/uploader.taro-f80d76d9.js +392 -0
  149. package/dist/esm/useClientRect-bf69d7b3.js +5 -25
  150. package/dist/esm/useTouch-a2ea68c6.js +63 -93
  151. package/dist/esm/video-8a3518c5.js +59 -83
  152. package/dist/esm/virtuallist.taro-e3345ced.js +215 -0
  153. package/dist/esm/watermark.taro-cd9db98a.js +114 -0
  154. package/dist/esm/zh-CN-dfc384d0.js +128 -133
  155. package/dist/locales/base.js +1 -1
  156. package/dist/locales/en-US.js +1 -1
  157. package/dist/locales/id-ID.js +1 -1
  158. package/dist/locales/zh-CN.js +1 -1
  159. package/dist/locales/zh-TW.js +1 -1
  160. package/dist/locales/zh-UG.js +1 -1
  161. package/dist/nutui.react.es.js +634 -5664
  162. package/dist/nutui.react.umd.js +634 -5664
  163. package/dist/packages/noticebar/noticebar.scss +17 -0
  164. package/dist/packages/radio/radio.scss +3 -1
  165. package/dist/packages/row/row.scss +2 -0
  166. package/dist/packages/searchbar/searchbar.scss +1 -1
  167. package/dist/packages/tag/tag.scss +13 -5
  168. package/dist/packages/virtuallist/virtuallist.scss +24 -0
  169. package/dist/style.css +1 -1
  170. package/dist/style.es.js +1 -1
  171. package/dist/styles/temp.scss +2340 -0
  172. package/dist/styles/theme-dark.scss +7 -0
  173. package/dist/styles/theme-default.scss +11 -0
  174. package/dist/styles/variables.scss +1945 -710
  175. package/dist/types/index.d.ts +16 -23
  176. package/package.json +9 -4
  177. package/dist/esm/address.taro-1e2aea24.js +0 -615
  178. package/dist/esm/audio.taro-fddcdfc0.js +0 -228
  179. package/dist/esm/avatargroup-f7f600ff.js +0 -42
  180. package/dist/esm/calendar.taro-72974415.js +0 -83
  181. package/dist/esm/calendaritem.taro-84e889eb.js +0 -580
  182. package/dist/esm/card.taro-a530dfb3.js +0 -61
  183. package/dist/esm/cell.taro-cf50c4f2.js +0 -109
  184. package/dist/esm/configprovider-c7d60e20.js +0 -18
  185. package/dist/esm/configprovider.taro-8bdb3a28.js +0 -50
  186. package/dist/esm/countdown.taro-d7dc8681.js +0 -246
  187. package/dist/esm/datepicker.taro-7199f521.js +0 -304
  188. package/dist/esm/dialog.taro-f54cfbf0.js +0 -187
  189. package/dist/esm/ellipsis.taro-c0de6ff4.js +0 -309
  190. package/dist/esm/empty.taro-dbc66496.js +0 -81
  191. package/dist/esm/fixednav.taro-9e759320.js +0 -97
  192. package/dist/esm/form.taro-880014b1.js +0 -181
  193. package/dist/esm/formitem.taro-3695f4a7.js +0 -136
  194. package/dist/esm/grid.taro-c2cc12d6.js +0 -81
  195. package/dist/esm/griditem.taro-892153cd.js +0 -122
  196. package/dist/esm/image.taro-c30973d5.js +0 -105
  197. package/dist/esm/infiniteloading.taro-b5ddf3cc.js +0 -188
  198. package/dist/esm/input.taro-104130c1.js +0 -361
  199. package/dist/esm/menuitem.taro-216e9f7d.js +0 -193
  200. package/dist/esm/noticebar.taro-94002898.js +0 -368
  201. package/dist/esm/numberkeyboard.taro-5e8f0ddf.js +0 -245
  202. package/dist/esm/pagination.taro-9925ffab.js +0 -169
  203. package/dist/esm/picker.taro-3b5cc054.js +0 -540
  204. package/dist/esm/pulltorefresh.taro-f26a20dd.js +0 -302
  205. package/dist/esm/range.taro-c41e9b90.js +0 -469
  206. package/dist/esm/searchbar.taro-01ed4ea4.js +0 -236
  207. package/dist/esm/shortpassword.taro-3a3bf412.js +0 -190
  208. package/dist/esm/sidenavbar.taro-06026f31.js +0 -66
  209. package/dist/esm/signature.taro-17648cac.js +0 -192
  210. package/dist/esm/sticky.taro-36013e97.js +0 -16
  211. package/dist/esm/table.taro-adda6622.js +0 -139
  212. package/dist/esm/tag.taro-bd900990.js +0 -104
  213. package/dist/esm/textarea.taro-83d5fe73.js +0 -102
  214. package/dist/esm/timedetail.taro-105f5380.js +0 -68
  215. package/dist/esm/timepannel.taro-c66c63dd.js +0 -30
  216. package/dist/esm/timeselect.taro-fc7ec6ee.js +0 -172
  217. package/dist/esm/uploader.taro-a1edf38f.js +0 -529
  218. package/dist/esm/virtuallist.taro-4add61c3.js +0 -315
  219. package/dist/esm/watermark.taro-323d1cf3.js +0 -132
@@ -1,271 +1,181 @@
1
- import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
- import _regeneratorRuntime from "@babel/runtime/regenerator";
5
- function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
6
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
7
1
  import React__default, { forwardRef, useRef, useState, useMemo, useImperativeHandle, useEffect } from 'react';
8
2
  import { c as cn } from './bem-893ad28d.js';
9
3
  import { u as useTouch } from './useTouch-a2ea68c6.js';
10
4
  import { g as getRectByTaro } from './useClientRect-bf69d7b3.js';
5
+
11
6
  function preventDefault(event, isStopPropagation) {
12
- if (typeof event.cancelable !== 'boolean' || event.cancelable) {
13
- event.preventDefault();
14
- }
15
- if (isStopPropagation) {
16
- event.stopPropagation();
17
- }
18
- }
19
- var defaultProps = {
20
- name: '',
21
- leftWidth: 0,
22
- rightWidth: 0
23
- };
24
- var Swipe = forwardRef(function (props, instanceRef) {
25
- var swipeBem = cn('swipe');
26
- var touch = useTouch();
27
- var _defaultProps$props = _objectSpread(_objectSpread({}, defaultProps), props),
28
- children = _defaultProps$props.children,
29
- className = _defaultProps$props.className,
30
- style = _defaultProps$props.style;
31
- var root = useRef();
32
- var opened = useRef(false);
33
- var lockClick = useRef(false);
34
- var startOffset = useRef(0);
35
- var _useState = useState({
36
- offset: 0,
37
- dragging: false
38
- }),
39
- _useState2 = _slicedToArray(_useState, 2),
40
- state = _useState2[0],
41
- setState = _useState2[1];
42
- var _useState3 = useState({
43
- left: 0,
44
- right: 0
45
- }),
46
- _useState4 = _slicedToArray(_useState3, 2),
47
- actionWidth = _useState4[0],
48
- setActionWidth = _useState4[1];
49
- var wrapperStyle = {
50
- transform: "translate3d(".concat(state.offset, "px, 0, 0)"),
51
- transitionDuration: state.dragging ? '0s' : '.6s'
52
- };
53
- var leftWidth = useMemo(function () {
54
- return props.leftWidth ? props.leftWidth : actionWidth.left;
55
- }, [props.leftWidth, actionWidth.left]);
56
- var rightWidth = useMemo(function () {
57
- return props.rightWidth ? props.rightWidth : actionWidth.right;
58
- }, [props.rightWidth, actionWidth.right]);
59
- var _onTouchStart = /*#__PURE__*/function () {
60
- var _ref = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee(event) {
61
- var leftRect, rightRect;
62
- return _regeneratorRuntime.wrap(function _callee$(_context) {
63
- while (1) {
64
- switch (_context.prev = _context.next) {
65
- case 0:
66
- if (!leftWrapper.current) {
67
- _context.next = 5;
68
- break;
69
- }
70
- _context.next = 3;
71
- return getRectByTaro(leftWrapper.current);
72
- case 3:
73
- leftRect = _context.sent;
74
- setActionWidth(function (v) {
75
- return _objectSpread(_objectSpread({}, v), {}, {
76
- left: leftRect.width
77
- });
78
- });
79
- case 5:
80
- if (!rightWrapper.current) {
81
- _context.next = 10;
82
- break;
83
- }
84
- _context.next = 8;
85
- return getRectByTaro(rightWrapper.current);
86
- case 8:
87
- rightRect = _context.sent;
88
- setActionWidth(function (v) {
89
- return _objectSpread(_objectSpread({}, v), {}, {
90
- right: rightRect.width
91
- });
92
- });
93
- case 10:
94
- if (!props.disabled) {
95
- startOffset.current = state.offset;
96
- touch.start(event);
97
- }
98
- case 11:
99
- case "end":
100
- return _context.stop();
101
- }
102
- }
103
- }, _callee);
104
- }));
105
- return function onTouchStart(_x) {
106
- return _ref.apply(this, arguments);
107
- };
108
- }();
109
- var _onTouchMove = function onTouchMove(event) {
110
- if (props.disabled) {
111
- return;
112
- }
113
- touch.move(event);
114
- if (touch.isHorizontal()) {
115
- lockClick.current = true;
116
- var newState = _objectSpread(_objectSpread({}, state), {}, {
117
- dragging: true
118
- });
119
- var isEdge = !opened || touch.deltaX * startOffset.current < 0;
120
- if (isEdge) {
121
- preventDefault(event, true);
122
- }
123
- newState.offset = rangeCalculation(touch.deltaX + startOffset.current, -rightWidth || 0, leftWidth || 0);
124
- setState(newState);
7
+ if (typeof event.cancelable !== 'boolean' || event.cancelable) {
8
+ event.preventDefault();
125
9
  }
126
- };
127
- var onTouchEnd = function onTouchEnd() {
128
- if (state.dragging) {
129
- setState(function (v) {
130
- return _objectSpread(_objectSpread({}, v), {}, {
131
- dragging: false
132
- });
133
- });
134
- toggle(state.offset > 0 ? 'left' : 'right');
135
- setTimeout(function () {
136
- lockClick.current = false;
137
- }, 0);
10
+ if (isStopPropagation) {
11
+ event.stopPropagation();
138
12
  }
139
- };
140
- var toggle = function toggle(side) {
141
- var offset = Math.abs(state.offset);
142
- var base = 0.3;
143
- var baseNum = opened ? 1 - base : base;
144
- var width = side === 'left' ? leftWidth : rightWidth;
145
- if (width && offset > Number(width) * baseNum) {
146
- open(side);
147
- } else {
148
- _close(side);
149
- }
150
- };
151
- var open = function open(side) {
152
- var _props$onOpen;
153
- opened.current = true;
154
- var offset = side === 'left' ? leftWidth : -rightWidth;
155
- var name = props.name;
156
- (_props$onOpen = props.onOpen) === null || _props$onOpen === void 0 ? void 0 : _props$onOpen.call(props, {
157
- name: name,
158
- position: side
159
- });
160
- setState(function (v) {
161
- return _objectSpread(_objectSpread({}, v), {}, {
162
- offset: Number(offset) || 0
163
- });
13
+ }
14
+ const defaultProps = {
15
+ name: '',
16
+ leftWidth: 0,
17
+ rightWidth: 0,
18
+ };
19
+ const Swipe = forwardRef((props, instanceRef) => {
20
+ const swipeBem = cn('swipe');
21
+ const touch = useTouch();
22
+ const { children, className, style } = { ...defaultProps, ...props };
23
+ const root = useRef();
24
+ const opened = useRef(false);
25
+ const lockClick = useRef(false);
26
+ const startOffset = useRef(0);
27
+ const [state, setState] = useState({
28
+ offset: 0,
29
+ dragging: false,
164
30
  });
165
- };
166
- var _close = function close(position) {
167
- if (opened.current) {
168
- var _props$onClose;
169
- opened.current = false;
170
- (_props$onClose = props.onClose) === null || _props$onClose === void 0 ? void 0 : _props$onClose.call(props, {
171
- name: props.name,
172
- position: position || 'left'
173
- });
174
- }
175
- setState(function (v) {
176
- return _objectSpread(_objectSpread({}, v), {}, {
177
- offset: 0
178
- });
31
+ const [actionWidth, setActionWidth] = useState({
32
+ left: 0,
33
+ right: 0,
179
34
  });
180
- };
181
- var rangeCalculation = function rangeCalculation(num, min, max) {
182
- return Math.min(Math.max(Number(num), Number(min)), Number(max));
183
- };
184
- // const getNodeWidth = (node: Element) => {
185
- // if (node) {
186
- // const ele: any = getRectByTaro(node)
187
- // return ele.width
188
- // }
189
- // return 0
190
- // }
191
- // const leftRef = useCallback(
192
- // (node: Element | null) => {
193
- // if (node !== null) {
194
- // setActionWidth((v) => ({ ...v, left: getNodeWidth(node) }))
195
- // }
196
- // },
197
- // [props.leftAction]
198
- // )
199
- // const rightRef = useCallback(
200
- // (node: Element | null) => {
201
- // if (node !== null) {
202
- // setActionWidth((v) => ({ ...v, right: getNodeWidth(node) }))
203
- // }
204
- // },
205
- // [props.rightAction]
206
- // )
207
- var leftWrapper = useRef(null);
208
- var rightWrapper = useRef(null);
209
- var renderActionContent = function renderActionContent(side) {
210
- if (props["".concat(side, "Action")]) {
211
- return React__default.createElement("div", {
212
- ref: side === 'left' ? leftWrapper : rightWrapper,
213
- className: "".concat(swipeBem(side)),
214
- onClick: function onClick(e) {
215
- return handleOperate(e, side);
35
+ const wrapperStyle = {
36
+ transform: `translate3d(${state.offset}px, 0, 0)`,
37
+ transitionDuration: state.dragging ? '0s' : '.6s',
38
+ };
39
+ const leftWidth = useMemo(() => (props.leftWidth ? props.leftWidth : actionWidth.left), [props.leftWidth, actionWidth.left]);
40
+ const rightWidth = useMemo(() => (props.rightWidth ? props.rightWidth : actionWidth.right), [props.rightWidth, actionWidth.right]);
41
+ const onTouchStart = async (event) => {
42
+ if (leftWrapper.current) {
43
+ const leftRect = await getRectByTaro(leftWrapper.current);
44
+ setActionWidth((v) => ({ ...v, left: leftRect.width }));
45
+ }
46
+ if (rightWrapper.current) {
47
+ const rightRect = await getRectByTaro(rightWrapper.current);
48
+ setActionWidth((v) => ({ ...v, right: rightRect.width }));
49
+ }
50
+ if (!props.disabled) {
51
+ startOffset.current = state.offset;
52
+ touch.start(event);
216
53
  }
217
- }, props["".concat(side, "Action")]);
218
- }
219
- return null;
220
- };
221
- var handleOperate = function handleOperate(event, position) {
222
- event.stopPropagation();
223
- if (props.beforeClose) {
224
- props.beforeClose(position);
225
- } else {
226
- props.onActionClick && props.onActionClick(event, position);
227
- }
228
- };
229
- useImperativeHandle(instanceRef, function () {
230
- return {
231
- open: open,
232
- close: function close() {
233
- return _close();
234
- }
235
54
  };
236
- });
237
- useEffect(function () {
238
- var handler = function handler(event) {
239
- var targets = [root];
240
- if (targets.some(function (targetItem) {
241
- var targetElement = targetItem.current || targetItem;
242
- return !targetElement || (targetElement === null || targetElement === void 0 ? void 0 : targetElement.contains(event.target));
243
- })) {
244
- return;
245
- }
246
- _close();
55
+ const onTouchMove = (event) => {
56
+ if (props.disabled) {
57
+ return;
58
+ }
59
+ touch.move(event);
60
+ if (touch.isHorizontal()) {
61
+ lockClick.current = true;
62
+ const newState = { ...state, dragging: true };
63
+ const isEdge = !opened || touch.deltaX * startOffset.current < 0;
64
+ if (isEdge) {
65
+ preventDefault(event, true);
66
+ }
67
+ newState.offset = rangeCalculation(touch.deltaX + startOffset.current, -rightWidth || 0, leftWidth || 0);
68
+ setState(newState);
69
+ }
70
+ };
71
+ const onTouchEnd = () => {
72
+ if (state.dragging) {
73
+ setState((v) => ({ ...v, dragging: false }));
74
+ toggle(state.offset > 0 ? 'left' : 'right');
75
+ setTimeout(() => {
76
+ lockClick.current = false;
77
+ }, 0);
78
+ }
79
+ };
80
+ const toggle = (side) => {
81
+ const offset = Math.abs(state.offset);
82
+ const base = 0.3;
83
+ const baseNum = opened ? 1 - base : base;
84
+ const width = side === 'left' ? leftWidth : rightWidth;
85
+ if (width && offset > Number(width) * baseNum) {
86
+ open(side);
87
+ }
88
+ else {
89
+ close(side);
90
+ }
91
+ };
92
+ const open = (side) => {
93
+ opened.current = true;
94
+ const offset = side === 'left' ? leftWidth : -rightWidth;
95
+ const name = props.name;
96
+ props.onOpen?.({ name, position: side });
97
+ setState((v) => ({ ...v, offset: Number(offset) || 0 }));
247
98
  };
248
- document.addEventListener('touchstart', handler);
249
- return function () {
250
- document.removeEventListener('touchstart', handler);
99
+ const close = (position) => {
100
+ if (opened.current) {
101
+ opened.current = false;
102
+ props.onClose?.({
103
+ name: props.name,
104
+ position: position || 'left',
105
+ });
106
+ }
107
+ setState((v) => ({ ...v, offset: 0 }));
108
+ };
109
+ const rangeCalculation = (num, min, max) => {
110
+ return Math.min(Math.max(Number(num), Number(min)), Number(max));
111
+ };
112
+ // const getNodeWidth = (node: Element) => {
113
+ // if (node) {
114
+ // const ele: any = getRectByTaro(node)
115
+ // return ele.width
116
+ // }
117
+ // return 0
118
+ // }
119
+ // const leftRef = useCallback(
120
+ // (node: Element | null) => {
121
+ // if (node !== null) {
122
+ // setActionWidth((v) => ({ ...v, left: getNodeWidth(node) }))
123
+ // }
124
+ // },
125
+ // [props.leftAction]
126
+ // )
127
+ // const rightRef = useCallback(
128
+ // (node: Element | null) => {
129
+ // if (node !== null) {
130
+ // setActionWidth((v) => ({ ...v, right: getNodeWidth(node) }))
131
+ // }
132
+ // },
133
+ // [props.rightAction]
134
+ // )
135
+ const leftWrapper = useRef(null);
136
+ const rightWrapper = useRef(null);
137
+ const renderActionContent = (side) => {
138
+ if (props[`${side}Action`]) {
139
+ return (React__default.createElement("div", { ref: side === 'left' ? leftWrapper : rightWrapper, className: `${swipeBem(side)}`, onClick: (e) => handleOperate(e, side) }, props[`${side}Action`]));
140
+ }
141
+ return null;
251
142
  };
252
- }, []);
253
- return React__default.createElement("div", {
254
- ref: root,
255
- className: "".concat(swipeBem(), " ").concat(className),
256
- onTouchStart: function onTouchStart(e) {
257
- return _onTouchStart(e);
258
- },
259
- onTouchMove: function onTouchMove(e) {
260
- return _onTouchMove(e);
261
- },
262
- onTouchEnd: onTouchEnd,
263
- style: style
264
- }, React__default.createElement("div", {
265
- className: "".concat(swipeBem('wrapper')),
266
- style: wrapperStyle
267
- }, renderActionContent('left'), children, renderActionContent('right')));
143
+ const handleOperate = (event, position) => {
144
+ event.stopPropagation();
145
+ if (props.beforeClose) {
146
+ props.beforeClose(position);
147
+ }
148
+ else {
149
+ props.onActionClick && props.onActionClick(event, position);
150
+ }
151
+ };
152
+ useImperativeHandle(instanceRef, () => ({
153
+ open,
154
+ close: () => close(),
155
+ }));
156
+ useEffect(() => {
157
+ const handler = (event) => {
158
+ const targets = [root];
159
+ if (targets.some((targetItem) => {
160
+ const targetElement = targetItem.current || targetItem;
161
+ return !targetElement || targetElement?.contains(event.target);
162
+ })) {
163
+ return;
164
+ }
165
+ close();
166
+ };
167
+ document.addEventListener('touchstart', handler);
168
+ return () => {
169
+ document.removeEventListener('touchstart', handler);
170
+ };
171
+ }, []);
172
+ return (React__default.createElement("div", { ref: root, className: `${swipeBem()} ${className}`, onTouchStart: (e) => onTouchStart(e), onTouchMove: (e) => onTouchMove(e), onTouchEnd: onTouchEnd, style: style },
173
+ React__default.createElement("div", { className: `${swipeBem('wrapper')}`, style: wrapperStyle },
174
+ renderActionContent('left'),
175
+ children,
176
+ renderActionContent('right'))));
268
177
  });
269
178
  Swipe.defaultProps = defaultProps;
270
179
  Swipe.displayName = 'NutSwipe';
180
+
271
181
  export { Swipe as S };