react-native-reorderable-list 0.13.0 → 0.14.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.
- package/README.md +69 -9
- package/lib/commonjs/components/NestedReorderableList.js +2 -0
- package/lib/commonjs/components/NestedReorderableList.js.map +1 -1
- package/lib/commonjs/components/ReorderableList.js +4 -3
- package/lib/commonjs/components/ReorderableList.js.map +1 -1
- package/lib/commonjs/components/{ReorderableListCore/useReorderableListCore.js → ReorderableListCore.js} +187 -96
- package/lib/commonjs/components/ReorderableListCore.js.map +1 -0
- package/lib/commonjs/components/ScrollViewContainer.js +26 -7
- package/lib/commonjs/components/ScrollViewContainer.js.map +1 -1
- package/lib/commonjs/components/{ReorderableListCore/animationDefaults.js → constants.js} +26 -2
- package/lib/commonjs/components/constants.js.map +1 -0
- package/lib/commonjs/contexts/ScrollViewContainerContext.js.map +1 -1
- package/lib/module/components/NestedReorderableList.js +2 -0
- package/lib/module/components/NestedReorderableList.js.map +1 -1
- package/lib/module/components/ReorderableList.js +4 -3
- package/lib/module/components/ReorderableList.js.map +1 -1
- package/lib/module/components/{ReorderableListCore/useReorderableListCore.js → ReorderableListCore.js} +188 -95
- package/lib/module/components/ReorderableListCore.js.map +1 -0
- package/lib/module/components/ScrollViewContainer.js +28 -8
- package/lib/module/components/ScrollViewContainer.js.map +1 -1
- package/lib/module/components/constants.js +52 -0
- package/lib/module/components/constants.js.map +1 -0
- package/lib/module/contexts/ScrollViewContainerContext.js.map +1 -1
- package/lib/typescript/components/NestedReorderableList.d.ts.map +1 -1
- package/lib/typescript/components/ReorderableList.d.ts.map +1 -1
- package/lib/typescript/components/{ReorderableListCore/ReorderableListCore.d.ts → ReorderableListCore.d.ts} +2 -1
- package/lib/typescript/components/ReorderableListCore.d.ts.map +1 -0
- package/lib/typescript/components/ScrollViewContainer.d.ts +2 -1
- package/lib/typescript/components/ScrollViewContainer.d.ts.map +1 -1
- package/lib/typescript/components/{ReorderableListCore/animationDefaults.d.ts → constants.d.ts} +6 -1
- package/lib/typescript/components/constants.d.ts.map +1 -0
- package/lib/typescript/contexts/ScrollViewContainerContext.d.ts +1 -0
- package/lib/typescript/contexts/ScrollViewContainerContext.d.ts.map +1 -1
- package/lib/typescript/types/props.d.ts +9 -0
- package/lib/typescript/types/props.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/NestedReorderableList.tsx +2 -0
- package/src/components/ReorderableList.tsx +3 -2
- package/src/components/{ReorderableListCore/useReorderableListCore.ts → ReorderableListCore.tsx} +321 -184
- package/src/components/ScrollViewContainer.tsx +44 -13
- package/src/components/{ReorderableListCore/animationDefaults.ts → constants.ts} +34 -0
- package/src/contexts/ScrollViewContainerContext.ts +1 -0
- package/src/types/props.ts +9 -0
- package/lib/commonjs/components/ReorderableListCore/ReorderableListCore.js +0 -121
- package/lib/commonjs/components/ReorderableListCore/ReorderableListCore.js.map +0 -1
- package/lib/commonjs/components/ReorderableListCore/animationDefaults.js.map +0 -1
- package/lib/commonjs/components/ReorderableListCore/autoscrollConfig.js +0 -31
- package/lib/commonjs/components/ReorderableListCore/autoscrollConfig.js.map +0 -1
- package/lib/commonjs/components/ReorderableListCore/index.js +0 -17
- package/lib/commonjs/components/ReorderableListCore/index.js.map +0 -1
- package/lib/commonjs/components/ReorderableListCore/useReorderableListCore.js.map +0 -1
- package/lib/module/components/ReorderableListCore/ReorderableListCore.js +0 -114
- package/lib/module/components/ReorderableListCore/ReorderableListCore.js.map +0 -1
- package/lib/module/components/ReorderableListCore/animationDefaults.js +0 -28
- package/lib/module/components/ReorderableListCore/animationDefaults.js.map +0 -1
- package/lib/module/components/ReorderableListCore/autoscrollConfig.js +0 -25
- package/lib/module/components/ReorderableListCore/autoscrollConfig.js.map +0 -1
- package/lib/module/components/ReorderableListCore/index.js +0 -2
- package/lib/module/components/ReorderableListCore/index.js.map +0 -1
- package/lib/module/components/ReorderableListCore/useReorderableListCore.js.map +0 -1
- package/lib/typescript/components/ReorderableListCore/ReorderableListCore.d.ts.map +0 -1
- package/lib/typescript/components/ReorderableListCore/animationDefaults.d.ts.map +0 -1
- package/lib/typescript/components/ReorderableListCore/autoscrollConfig.d.ts +0 -6
- package/lib/typescript/components/ReorderableListCore/autoscrollConfig.d.ts.map +0 -1
- package/lib/typescript/components/ReorderableListCore/index.d.ts +0 -2
- package/lib/typescript/components/ReorderableListCore/index.d.ts.map +0 -1
- package/lib/typescript/components/ReorderableListCore/useReorderableListCore.d.ts +0 -183
- package/lib/typescript/components/ReorderableListCore/useReorderableListCore.d.ts.map +0 -1
- package/src/components/ReorderableListCore/ReorderableListCore.tsx +0 -175
- package/src/components/ReorderableListCore/autoscrollConfig.ts +0 -31
- package/src/components/ReorderableListCore/index.ts +0 -1
|
@@ -3,43 +3,51 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.ReorderableListCore = void 0;
|
|
7
7
|
var _react = _interopRequireWildcard(require("react"));
|
|
8
8
|
var _reactNative = require("react-native");
|
|
9
9
|
var _reactNativeGestureHandler = require("react-native-gesture-handler");
|
|
10
|
-
var _reactNativeReanimated = require("react-native-reanimated");
|
|
11
|
-
var
|
|
12
|
-
var
|
|
13
|
-
var
|
|
10
|
+
var _reactNativeReanimated = _interopRequireWildcard(require("react-native-reanimated"));
|
|
11
|
+
var _contexts = require("../contexts");
|
|
12
|
+
var _types = require("../types");
|
|
13
|
+
var _constants = require("./constants");
|
|
14
|
+
var _ReorderableListCell = require("./ReorderableListCell");
|
|
14
15
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
15
16
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
autoscrollThreshold,
|
|
17
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
18
|
+
const AnimatedFlatList = _reactNativeReanimated.default.createAnimatedComponent(_reactNative.FlatList);
|
|
19
|
+
const ReorderableListCore = ({
|
|
20
|
+
autoscrollThreshold = 0.1,
|
|
21
21
|
autoscrollThresholdOffset,
|
|
22
|
-
autoscrollSpeedScale,
|
|
23
|
-
autoscrollDelay,
|
|
24
|
-
autoscrollActivationDelta,
|
|
25
|
-
animationDuration,
|
|
22
|
+
autoscrollSpeedScale = 1,
|
|
23
|
+
autoscrollDelay = _constants.AUTOSCROLL_CONFIG.delay,
|
|
24
|
+
autoscrollActivationDelta = 5,
|
|
25
|
+
animationDuration = 200,
|
|
26
|
+
onLayout,
|
|
26
27
|
onReorder,
|
|
28
|
+
onScroll,
|
|
27
29
|
onDragStart,
|
|
28
30
|
onDragEnd,
|
|
29
|
-
onLayout,
|
|
30
31
|
onIndexChange,
|
|
31
32
|
scrollViewContainerRef,
|
|
33
|
+
scrollViewPageY,
|
|
32
34
|
scrollViewHeightY,
|
|
33
35
|
scrollViewScrollOffsetY,
|
|
34
36
|
scrollViewScrollEnabled,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
nestedScrollable,
|
|
37
|
+
scrollable,
|
|
38
|
+
outerScrollGesture,
|
|
38
39
|
cellAnimations,
|
|
39
40
|
shouldUpdateActiveItem,
|
|
41
|
+
panGesture,
|
|
42
|
+
panEnabled = true,
|
|
40
43
|
panActivateAfterLongPress,
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
data,
|
|
45
|
+
...rest
|
|
46
|
+
}, ref) => {
|
|
47
|
+
// FlatList will default to true if we pass explicitly undefined,
|
|
48
|
+
// but internally we would treat it as false, so we force true.
|
|
49
|
+
const initialScrollEnabled = typeof rest.scrollEnabled === 'undefined' ? true : rest.scrollEnabled;
|
|
50
|
+
const initialScrollViewScrollEnabled = typeof rest.initialScrollViewScrollEnabled === 'undefined' ? true : rest.initialScrollViewScrollEnabled;
|
|
43
51
|
const flatListRef = (0, _reactNativeReanimated.useAnimatedRef)();
|
|
44
52
|
const [activeIndex, setActiveIndex] = (0, _react.useState)(-1);
|
|
45
53
|
const scrollEnabled = (0, _reactNativeReanimated.useSharedValue)(initialScrollEnabled);
|
|
@@ -50,7 +58,7 @@ const useReorderableListCore = ({
|
|
|
50
58
|
const startItemDragCenterY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
51
59
|
const flatListScrollOffsetY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
52
60
|
const flatListHeightY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
53
|
-
const
|
|
61
|
+
const flatListPageY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
54
62
|
// The scroll y translation of the list since drag start
|
|
55
63
|
const dragScrollTranslationY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
56
64
|
// The initial scroll offset y of the list on drag start
|
|
@@ -62,6 +70,9 @@ const useReorderableListCore = ({
|
|
|
62
70
|
const draggedHeight = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
63
71
|
const itemOffset = (0, _reactNativeReanimated.useSharedValue)([]);
|
|
64
72
|
const itemHeight = (0, _reactNativeReanimated.useSharedValue)([]);
|
|
73
|
+
// We need to track data length since itemOffset and itemHeight might contain more data than we need.
|
|
74
|
+
// e.g. items are removed from the list, in which case layout data for those items is set to 0.
|
|
75
|
+
const itemCount = (0, _reactNativeReanimated.useSharedValue)(data.length);
|
|
65
76
|
const autoscrollTrigger = (0, _reactNativeReanimated.useSharedValue)(-1);
|
|
66
77
|
const lastAutoscrollTrigger = (0, _reactNativeReanimated.useSharedValue)(-1);
|
|
67
78
|
const dragY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
@@ -76,10 +87,30 @@ const useReorderableListCore = ({
|
|
|
76
87
|
const dragDirection = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
77
88
|
const lastDragDirectionPivot = (0, _reactNativeReanimated.useSharedValue)(null);
|
|
78
89
|
const autoscrollDelta = (0, _reactNativeReanimated.useSharedValue)(autoscrollActivationDelta);
|
|
90
|
+
const prevItemCount = (0, _react.useRef)(data.length);
|
|
91
|
+
|
|
92
|
+
// Position of the list relative to the scroll container
|
|
93
|
+
const nestedFlatListPositionY = (0, _reactNativeReanimated.useDerivedValue)(() => flatListPageY.value - ((scrollViewPageY === null || scrollViewPageY === void 0 ? void 0 : scrollViewPageY.value) || 0));
|
|
79
94
|
(0, _react.useEffect)(() => {
|
|
80
95
|
duration.value = animationDuration;
|
|
81
96
|
autoscrollDelta.value = autoscrollActivationDelta;
|
|
82
|
-
}, [duration, animationDuration, autoscrollDelta, autoscrollActivationDelta]);
|
|
97
|
+
}, [duration, animationDuration, autoscrollDelta, autoscrollActivationDelta, itemCount]);
|
|
98
|
+
(0, _react.useEffect)(() => {
|
|
99
|
+
itemCount.value = data.length;
|
|
100
|
+
|
|
101
|
+
// This could be done unmount of the removed cell, however it leads to bugs.
|
|
102
|
+
// Surprisingly the unmount gets sometimes called after the onLayout event
|
|
103
|
+
// setting all layout data to 0 and breaking the list. So we solve it like this.
|
|
104
|
+
if (data.length < prevItemCount.current) {
|
|
105
|
+
for (let i = data.length; i < prevItemCount.current; i++) {
|
|
106
|
+
(0, _reactNativeReanimated.runOnUI)(() => {
|
|
107
|
+
itemHeight.value[i] = 0;
|
|
108
|
+
itemOffset.value[i] = 0;
|
|
109
|
+
})();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
prevItemCount.current = data.length;
|
|
113
|
+
}, [data.length, itemHeight, itemOffset, itemCount]);
|
|
83
114
|
const listContextValue = (0, _react.useMemo)(() => ({
|
|
84
115
|
draggedHeight,
|
|
85
116
|
currentIndex,
|
|
@@ -131,7 +162,9 @@ const useReorderableListCore = ({
|
|
|
131
162
|
currentItemDragCenterY.value = startItemDragCenterY.value + e.translationY;
|
|
132
163
|
}
|
|
133
164
|
}, [currentItemDragCenterY, currentIndex, startItemDragCenterY, itemOffset, itemHeight, flatListScrollOffsetY, scrollViewDragScrollTranslationY]);
|
|
134
|
-
const panGestureHandler = (0, _react.useMemo)(() => _reactNativeGestureHandler.Gesture.Pan().onBegin(e => {
|
|
165
|
+
const panGestureHandler = (0, _react.useMemo)(() => (panGesture || _reactNativeGestureHandler.Gesture.Pan()).onBegin(e => {
|
|
166
|
+
'worklet';
|
|
167
|
+
|
|
135
168
|
// prevent new dragging until item is completely released
|
|
136
169
|
if (state.value === _types.ReorderableListState.IDLE) {
|
|
137
170
|
startY.value = e.y;
|
|
@@ -141,6 +174,8 @@ const useReorderableListCore = ({
|
|
|
141
174
|
gestureState.value = e.state;
|
|
142
175
|
}
|
|
143
176
|
}).onUpdate(e => {
|
|
177
|
+
'worklet';
|
|
178
|
+
|
|
144
179
|
if (state.value === _types.ReorderableListState.DRAGGED) {
|
|
145
180
|
setDragDirection(e);
|
|
146
181
|
}
|
|
@@ -151,8 +186,16 @@ const useReorderableListCore = ({
|
|
|
151
186
|
dragY.value = e.translationY + dragScrollTranslationY.value + scrollViewDragScrollTranslationY.value;
|
|
152
187
|
gestureState.value = e.state;
|
|
153
188
|
}
|
|
154
|
-
}).onEnd(e =>
|
|
155
|
-
|
|
189
|
+
}).onEnd(e => {
|
|
190
|
+
'worklet';
|
|
191
|
+
|
|
192
|
+
gestureState.value = e.state;
|
|
193
|
+
}).onFinalize(e => {
|
|
194
|
+
'worklet';
|
|
195
|
+
|
|
196
|
+
gestureState.value = e.state;
|
|
197
|
+
}), [panGesture, state, startY, currentY, currentTranslationY, dragY, gestureState, dragScrollTranslationY, scrollViewDragScrollTranslationY, setDragDirection, setCurrentItemDragCenterY]);
|
|
198
|
+
const panGestureHandlerWithPropOptions = (0, _react.useMemo)(() => {
|
|
156
199
|
if (typeof panActivateAfterLongPress === 'number') {
|
|
157
200
|
panGestureHandler.activateAfterLongPress(panActivateAfterLongPress);
|
|
158
201
|
}
|
|
@@ -161,7 +204,7 @@ const useReorderableListCore = ({
|
|
|
161
204
|
}
|
|
162
205
|
return panGestureHandler;
|
|
163
206
|
}, [panActivateAfterLongPress, panEnabled, panGestureHandler]);
|
|
164
|
-
const gestureHandler = (0, _react.useMemo)(() => _reactNativeGestureHandler.Gesture.Simultaneous(_reactNativeGestureHandler.Gesture.Native(),
|
|
207
|
+
const gestureHandler = (0, _react.useMemo)(() => _reactNativeGestureHandler.Gesture.Simultaneous(_reactNativeGestureHandler.Gesture.Native(), panGestureHandlerWithPropOptions), [panGestureHandlerWithPropOptions]);
|
|
165
208
|
const setScrollEnabled = (0, _react.useCallback)(enabled => {
|
|
166
209
|
// if scroll is enabled on list props then we can toggle it
|
|
167
210
|
if (initialScrollEnabled) {
|
|
@@ -197,17 +240,10 @@ const useReorderableListCore = ({
|
|
|
197
240
|
const reorder = (fromIndex, toIndex) => {
|
|
198
241
|
(0, _reactNativeReanimated.runOnUI)(resetSharedValues)();
|
|
199
242
|
if (fromIndex !== toIndex) {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
});
|
|
205
|
-
};
|
|
206
|
-
if (!hasAutomaticBatching) {
|
|
207
|
-
(0, _reactNative.unstable_batchedUpdates)(updateState);
|
|
208
|
-
} else {
|
|
209
|
-
updateState();
|
|
210
|
-
}
|
|
243
|
+
onReorder({
|
|
244
|
+
from: fromIndex,
|
|
245
|
+
to: toIndex
|
|
246
|
+
});
|
|
211
247
|
}
|
|
212
248
|
};
|
|
213
249
|
const recomputeLayout = (0, _react.useCallback)((from, to) => {
|
|
@@ -245,7 +281,7 @@ const useReorderableListCore = ({
|
|
|
245
281
|
const currentOffset = itemOffset.value[currentIndex.value];
|
|
246
282
|
const currentHeight = itemHeight.value[currentIndex.value];
|
|
247
283
|
const currentCenter = currentOffset + currentHeight * 0.5;
|
|
248
|
-
const max =
|
|
284
|
+
const max = itemCount.value;
|
|
249
285
|
const possibleIndex = relativeDragCenterY < currentCenter ? Math.max(0, currentIndex.value - 1) : Math.min(max - 1, currentIndex.value + 1);
|
|
250
286
|
if (currentIndex.value !== possibleIndex) {
|
|
251
287
|
let possibleOffset = itemOffset.value[possibleIndex];
|
|
@@ -258,7 +294,7 @@ const useReorderableListCore = ({
|
|
|
258
294
|
return distanceFromCurrent <= distanceFromPossible ? currentIndex.value : possibleIndex;
|
|
259
295
|
}
|
|
260
296
|
return currentIndex.value;
|
|
261
|
-
}, [currentIndex, currentItemDragCenterY, itemOffset, itemHeight, flatListScrollOffsetY, scrollViewDragScrollTranslationY]);
|
|
297
|
+
}, [currentIndex, currentItemDragCenterY, itemCount, itemOffset, itemHeight, flatListScrollOffsetY, scrollViewDragScrollTranslationY]);
|
|
262
298
|
const setCurrentIndex = (0, _react.useCallback)(() => {
|
|
263
299
|
'worklet';
|
|
264
300
|
|
|
@@ -276,13 +312,13 @@ const useReorderableListCore = ({
|
|
|
276
312
|
|
|
277
313
|
// if no custom scale run default
|
|
278
314
|
if (!(cellAnimations && 'transform' in cellAnimations)) {
|
|
279
|
-
const scaleConfig =
|
|
315
|
+
const scaleConfig = _constants.SCALE_ANIMATION_CONFIG_DEFAULT[type];
|
|
280
316
|
scaleDefault.value = (0, _reactNativeReanimated.withTiming)(scaleConfig.toValue, scaleConfig);
|
|
281
317
|
}
|
|
282
318
|
|
|
283
319
|
// if no custom opacity run the default
|
|
284
320
|
if (!(cellAnimations && 'opacity' in cellAnimations)) {
|
|
285
|
-
const opacityConfig =
|
|
321
|
+
const opacityConfig = _constants.OPACITY_ANIMATION_CONFIG_DEFAULT[type];
|
|
286
322
|
opacityDefault.value = (0, _reactNativeReanimated.withTiming)(opacityConfig.toValue, opacityConfig);
|
|
287
323
|
}
|
|
288
324
|
}, [cellAnimations, scaleDefault, opacityDefault]);
|
|
@@ -330,7 +366,7 @@ const useReorderableListCore = ({
|
|
|
330
366
|
}
|
|
331
367
|
}
|
|
332
368
|
});
|
|
333
|
-
const
|
|
369
|
+
const computeHiddenArea = (0, _react.useCallback)(() => {
|
|
334
370
|
'worklet';
|
|
335
371
|
|
|
336
372
|
if (!scrollViewScrollOffsetY || !scrollViewHeightY) {
|
|
@@ -348,9 +384,10 @@ const useReorderableListCore = ({
|
|
|
348
384
|
bottom
|
|
349
385
|
};
|
|
350
386
|
}, [scrollViewScrollOffsetY, scrollViewHeightY, nestedFlatListPositionY, flatListHeightY]);
|
|
351
|
-
const
|
|
387
|
+
const computeThresholdArea = (0, _react.useCallback)(() => {
|
|
352
388
|
'worklet';
|
|
353
389
|
|
|
390
|
+
const hiddenArea = computeHiddenArea();
|
|
354
391
|
const offsetTop = Math.max(0, (autoscrollThresholdOffset === null || autoscrollThresholdOffset === void 0 ? void 0 : autoscrollThresholdOffset.top) || 0);
|
|
355
392
|
const offsetBottom = Math.max(0, (autoscrollThresholdOffset === null || autoscrollThresholdOffset === void 0 ? void 0 : autoscrollThresholdOffset.bottom) || 0);
|
|
356
393
|
const threshold = Math.max(0, Math.min(autoscrollThreshold, 0.4));
|
|
@@ -362,58 +399,73 @@ const useReorderableListCore = ({
|
|
|
362
399
|
top,
|
|
363
400
|
bottom
|
|
364
401
|
};
|
|
365
|
-
}, [autoscrollThreshold, autoscrollThresholdOffset, flatListHeightY]);
|
|
366
|
-
const
|
|
402
|
+
}, [computeHiddenArea, autoscrollThreshold, autoscrollThresholdOffset, flatListHeightY]);
|
|
403
|
+
const computeContainerThresholdArea = (0, _react.useCallback)(() => {
|
|
367
404
|
'worklet';
|
|
368
405
|
|
|
406
|
+
if (!scrollViewHeightY) {
|
|
407
|
+
return {
|
|
408
|
+
top: -Infinity,
|
|
409
|
+
bottom: Infinity
|
|
410
|
+
};
|
|
411
|
+
}
|
|
369
412
|
const offsetTop = Math.max(0, (autoscrollThresholdOffset === null || autoscrollThresholdOffset === void 0 ? void 0 : autoscrollThresholdOffset.top) || 0);
|
|
370
413
|
const offsetBottom = Math.max(0, (autoscrollThresholdOffset === null || autoscrollThresholdOffset === void 0 ? void 0 : autoscrollThresholdOffset.bottom) || 0);
|
|
371
414
|
const threshold = Math.max(0, Math.min(autoscrollThreshold, 0.4));
|
|
372
|
-
const
|
|
415
|
+
const visibleHeight = scrollViewHeightY.value - (offsetTop + offsetBottom);
|
|
416
|
+
const area = visibleHeight * threshold;
|
|
373
417
|
const top = area + offsetTop;
|
|
374
|
-
const bottom =
|
|
375
|
-
|
|
376
|
-
// if the hidden area is 0 then we don't have a threshold area
|
|
377
|
-
// we might have floating errors like 0.0001 which we should ignore
|
|
418
|
+
const bottom = visibleHeight - area - offsetBottom;
|
|
378
419
|
return {
|
|
379
|
-
top
|
|
380
|
-
bottom
|
|
420
|
+
top,
|
|
421
|
+
bottom
|
|
381
422
|
};
|
|
382
|
-
}, [autoscrollThreshold, autoscrollThresholdOffset,
|
|
383
|
-
const
|
|
423
|
+
}, [autoscrollThreshold, autoscrollThresholdOffset, scrollViewHeightY]);
|
|
424
|
+
const shouldScrollContainer = (0, _react.useCallback)(y => {
|
|
384
425
|
'worklet';
|
|
385
426
|
|
|
386
|
-
const
|
|
387
|
-
const
|
|
427
|
+
const containerThresholdArea = computeContainerThresholdArea();
|
|
428
|
+
const nestedListHiddenArea = computeHiddenArea();
|
|
429
|
+
|
|
430
|
+
// We should scroll the container if there's a hidden part of the nested list.
|
|
431
|
+
// We might have floating errors like 0.0001 which we should ignore.
|
|
432
|
+
return nestedListHiddenArea.top > 0.01 && y <= containerThresholdArea.top || nestedListHiddenArea.bottom > 0.01 && y >= containerThresholdArea.bottom;
|
|
433
|
+
}, [computeHiddenArea, computeContainerThresholdArea]);
|
|
434
|
+
const getRelativeContainerY = (0, _react.useCallback)(() => {
|
|
435
|
+
'worklet';
|
|
388
436
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
const scrollDirection = (0, _react.useCallback)(y => {
|
|
437
|
+
return currentY.value + nestedFlatListPositionY.value - scrollViewDragInitialScrollOffsetY.value;
|
|
438
|
+
}, [currentY, nestedFlatListPositionY, scrollViewDragInitialScrollOffsetY]);
|
|
439
|
+
const getRelativeListY = (0, _react.useCallback)(() => {
|
|
393
440
|
'worklet';
|
|
394
441
|
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
442
|
+
return currentY.value + scrollViewDragScrollTranslationY.value;
|
|
443
|
+
}, [currentY, scrollViewDragScrollTranslationY]);
|
|
444
|
+
const scrollDirection = (0, _react.useCallback)(() => {
|
|
445
|
+
'worklet';
|
|
446
|
+
|
|
447
|
+
const relativeContainerY = getRelativeContainerY();
|
|
448
|
+
if (shouldScrollContainer(relativeContainerY)) {
|
|
449
|
+
const containerThresholdArea = computeContainerThresholdArea();
|
|
450
|
+
if (relativeContainerY <= containerThresholdArea.top) {
|
|
399
451
|
return -1;
|
|
400
452
|
}
|
|
401
|
-
if (
|
|
453
|
+
if (relativeContainerY >= containerThresholdArea.bottom) {
|
|
402
454
|
return 1;
|
|
403
455
|
}
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
const thresholdArea =
|
|
407
|
-
if (
|
|
456
|
+
} else if (scrollable) {
|
|
457
|
+
const relativeListY = getRelativeListY();
|
|
458
|
+
const thresholdArea = computeThresholdArea();
|
|
459
|
+
if (relativeListY <= thresholdArea.top) {
|
|
408
460
|
return -1;
|
|
409
461
|
}
|
|
410
|
-
if (
|
|
462
|
+
if (relativeListY >= thresholdArea.bottom) {
|
|
411
463
|
return 1;
|
|
412
464
|
}
|
|
413
465
|
}
|
|
414
466
|
return 0;
|
|
415
|
-
}, [
|
|
416
|
-
(0, _reactNativeReanimated.useAnimatedReaction)(() => currentY.value
|
|
467
|
+
}, [shouldScrollContainer, computeThresholdArea, computeContainerThresholdArea, getRelativeContainerY, getRelativeListY, scrollable]);
|
|
468
|
+
(0, _reactNativeReanimated.useAnimatedReaction)(() => currentY.value, () => {
|
|
417
469
|
if (state.value === _types.ReorderableListState.DRAGGED || state.value === _types.ReorderableListState.AUTOSCROLL) {
|
|
418
470
|
setCurrentIndex();
|
|
419
471
|
|
|
@@ -421,7 +473,7 @@ const useReorderableListCore = ({
|
|
|
421
473
|
// 1. Within the threshold area (top or bottom of list)
|
|
422
474
|
// 2. Have dragged in the same direction as the scroll
|
|
423
475
|
// 3. Not already in autoscroll mode
|
|
424
|
-
if (dragDirection.value === scrollDirection(
|
|
476
|
+
if (dragDirection.value === scrollDirection()) {
|
|
425
477
|
// When the first two conditions are met and it's already in autoscroll mode, we let it continue (no-op)
|
|
426
478
|
if (state.value !== _types.ReorderableListState.AUTOSCROLL) {
|
|
427
479
|
state.value = _types.ReorderableListState.AUTOSCROLL;
|
|
@@ -435,12 +487,15 @@ const useReorderableListCore = ({
|
|
|
435
487
|
});
|
|
436
488
|
(0, _reactNativeReanimated.useAnimatedReaction)(() => autoscrollTrigger.value, () => {
|
|
437
489
|
if (autoscrollTrigger.value !== lastAutoscrollTrigger.value && state.value === _types.ReorderableListState.AUTOSCROLL) {
|
|
438
|
-
|
|
439
|
-
const autoscrollIncrement = scrollDirection(y) * _autoscrollConfig.AUTOSCROLL_CONFIG.increment * autoscrollSpeedScale;
|
|
490
|
+
const autoscrollIncrement = dragDirection.value * _constants.AUTOSCROLL_CONFIG.increment * autoscrollSpeedScale;
|
|
440
491
|
if (autoscrollIncrement !== 0) {
|
|
441
492
|
let scrollOffset = flatListScrollOffsetY.value;
|
|
442
493
|
let listRef = flatListRef;
|
|
443
|
-
|
|
494
|
+
|
|
495
|
+
// Checking on every autoscroll whether to scroll the container,
|
|
496
|
+
// this allows to smoothly pass the scroll from the container to the nested list
|
|
497
|
+
// without any gesture input.
|
|
498
|
+
if (scrollViewScrollOffsetY && shouldScrollContainer(getRelativeContainerY())) {
|
|
444
499
|
scrollOffset = scrollViewScrollOffsetY.value;
|
|
445
500
|
listRef = scrollViewContainerRef;
|
|
446
501
|
}
|
|
@@ -472,7 +527,7 @@ const useReorderableListCore = ({
|
|
|
472
527
|
}
|
|
473
528
|
});
|
|
474
529
|
|
|
475
|
-
//
|
|
530
|
+
// container scroll handler
|
|
476
531
|
(0, _reactNativeReanimated.useAnimatedReaction)(() => scrollViewScrollOffsetY === null || scrollViewScrollOffsetY === void 0 ? void 0 : scrollViewScrollOffsetY.value, value => {
|
|
477
532
|
if (value && scrollViewScrollEnabled) {
|
|
478
533
|
// checking if the list is not scrollable instead of the scrolling state
|
|
@@ -516,31 +571,67 @@ const useReorderableListCore = ({
|
|
|
516
571
|
}
|
|
517
572
|
}, [resetSharedValues, shouldUpdateActiveItem, dragInitialScrollOffsetY, scrollViewScrollOffsetY, scrollViewDragInitialScrollOffsetY, setScrollEnabled, currentIndex, draggedHeight, draggedIndex, state, flatListScrollOffsetY, itemHeight, onDragStart, runDefaultDragAnimations]);
|
|
518
573
|
const handleFlatListLayout = (0, _react.useCallback)(e => {
|
|
519
|
-
nestedFlatListPositionY.value = e.nativeEvent.layout.y;
|
|
520
574
|
flatListHeightY.value = e.nativeEvent.layout.height;
|
|
575
|
+
|
|
576
|
+
// If nested in a scroll container.
|
|
577
|
+
if (scrollViewScrollOffsetY) {
|
|
578
|
+
// Timeout fixes a bug where measure returns height 0.
|
|
579
|
+
setTimeout(() => {
|
|
580
|
+
(0, _reactNativeReanimated.runOnUI)(() => {
|
|
581
|
+
const measurement = (0, _reactNativeReanimated.measure)(flatListRef);
|
|
582
|
+
if (!measurement) {
|
|
583
|
+
return;
|
|
584
|
+
}
|
|
585
|
+
flatListPageY.value = measurement.pageY;
|
|
586
|
+
})();
|
|
587
|
+
}, 100);
|
|
588
|
+
}
|
|
521
589
|
onLayout === null || onLayout === void 0 || onLayout(e);
|
|
522
|
-
}, [
|
|
523
|
-
const handleRef = value => {
|
|
590
|
+
}, [flatListRef, flatListPageY, flatListHeightY, scrollViewScrollOffsetY, onLayout]);
|
|
591
|
+
const handleRef = (0, _react.useCallback)(value => {
|
|
524
592
|
flatListRef(value);
|
|
525
593
|
if (typeof ref === 'function') {
|
|
526
594
|
ref(value);
|
|
527
595
|
} else if (ref) {
|
|
528
596
|
ref.current = value;
|
|
529
597
|
}
|
|
530
|
-
};
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
598
|
+
}, [flatListRef, ref]);
|
|
599
|
+
const combinedGesture = (0, _react.useMemo)(() => {
|
|
600
|
+
// android is able to handle nested scroll view, but not the full height ones like iOS
|
|
601
|
+
if (outerScrollGesture && !(_reactNative.Platform.OS === 'android' && scrollable)) {
|
|
602
|
+
return _reactNativeGestureHandler.Gesture.Simultaneous(outerScrollGesture, gestureHandler);
|
|
603
|
+
}
|
|
604
|
+
return gestureHandler;
|
|
605
|
+
}, [scrollable, outerScrollGesture, gestureHandler]);
|
|
606
|
+
const composedScrollHandler = (0, _reactNativeReanimated.useComposedEventHandler)([handleScroll, onScroll || null]);
|
|
607
|
+
const renderAnimatedCell = (0, _react.useCallback)(({
|
|
608
|
+
cellKey,
|
|
609
|
+
...props
|
|
610
|
+
}) => /*#__PURE__*/_react.default.createElement(_ReorderableListCell.ReorderableListCell, _extends({}, props, {
|
|
611
|
+
// forces remount with key change on reorder
|
|
612
|
+
key: `${cellKey}+${props.index}`,
|
|
613
|
+
itemOffset: itemOffset,
|
|
614
|
+
itemHeight: itemHeight,
|
|
615
|
+
dragY: dragY,
|
|
616
|
+
draggedIndex: draggedIndex,
|
|
617
|
+
animationDuration: duration,
|
|
618
|
+
startDrag: startDrag
|
|
619
|
+
})), [itemOffset, itemHeight, dragY, draggedIndex, duration, startDrag]);
|
|
620
|
+
return /*#__PURE__*/_react.default.createElement(_contexts.ReorderableListContext.Provider, {
|
|
621
|
+
value: listContextValue
|
|
622
|
+
}, /*#__PURE__*/_react.default.createElement(_reactNativeGestureHandler.GestureDetector, {
|
|
623
|
+
gesture: combinedGesture
|
|
624
|
+
}, /*#__PURE__*/_react.default.createElement(AnimatedFlatList, _extends({}, rest, {
|
|
625
|
+
ref: handleRef,
|
|
626
|
+
data: data,
|
|
627
|
+
CellRendererComponent: renderAnimatedCell,
|
|
628
|
+
onLayout: handleFlatListLayout,
|
|
629
|
+
onScroll: composedScrollHandler,
|
|
630
|
+
scrollEventThrottle: 1,
|
|
631
|
+
horizontal: false,
|
|
632
|
+
removeClippedSubviews: false,
|
|
633
|
+
numColumns: 1
|
|
634
|
+
}))));
|
|
544
635
|
};
|
|
545
|
-
exports.
|
|
546
|
-
//# sourceMappingURL=
|
|
636
|
+
const MemoizedReorderableListCore = exports.ReorderableListCore = /*#__PURE__*/_react.default.memo(/*#__PURE__*/_react.default.forwardRef(ReorderableListCore));
|
|
637
|
+
//# sourceMappingURL=ReorderableListCore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeGestureHandler","_reactNativeReanimated","_contexts","_types","_constants","_ReorderableListCell","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","_extends","assign","bind","arguments","length","apply","AnimatedFlatList","Animated","createAnimatedComponent","FlatList","ReorderableListCore","autoscrollThreshold","autoscrollThresholdOffset","autoscrollSpeedScale","autoscrollDelay","AUTOSCROLL_CONFIG","delay","autoscrollActivationDelta","animationDuration","onLayout","onReorder","onScroll","onDragStart","onDragEnd","onIndexChange","scrollViewContainerRef","scrollViewPageY","scrollViewHeightY","scrollViewScrollOffsetY","scrollViewScrollEnabled","scrollable","outerScrollGesture","cellAnimations","shouldUpdateActiveItem","panGesture","panEnabled","panActivateAfterLongPress","data","rest","ref","initialScrollEnabled","scrollEnabled","initialScrollViewScrollEnabled","flatListRef","useAnimatedRef","activeIndex","setActiveIndex","useState","useSharedValue","gestureState","State","UNDETERMINED","currentY","currentTranslationY","currentItemDragCenterY","startItemDragCenterY","flatListScrollOffsetY","flatListHeightY","flatListPageY","dragScrollTranslationY","dragInitialScrollOffsetY","scrollViewDragScrollTranslationY","scrollViewDragInitialScrollOffsetY","draggedHeight","itemOffset","itemHeight","itemCount","autoscrollTrigger","lastAutoscrollTrigger","dragY","currentIndex","draggedIndex","state","ReorderableListState","IDLE","dragEndHandlers","startY","duration","scaleDefault","opacityDefault","dragDirection","lastDragDirectionPivot","autoscrollDelta","prevItemCount","useRef","nestedFlatListPositionY","useDerivedValue","value","useEffect","current","runOnUI","listContextValue","useMemo","transform","scale","opacity","setDragDirection","useCallback","direction","velocityY","absoluteY","Math","abs","setCurrentItemDragCenterY","itemCenter","itemY","translationY","panGestureHandler","Gesture","Pan","onBegin","y","onUpdate","DRAGGED","RELEASED","onEnd","onFinalize","panGestureHandlerWithPropOptions","activateAfterLongPress","enabled","gestureHandler","Simultaneous","Native","setScrollEnabled","_flatListRef$current","setNativeProps","_scrollViewContainerR","resetSharedValues","resetSharedValuesAfterAnimations","setTimeout","reorder","fromIndex","toIndex","from","to","recomputeLayout","itemDirection","index1","index2","newOffset1","newHeight1","newOffset2","newHeight2","computeCurrentIndex","relativeDragCenterY","currentOffset","currentHeight","currentCenter","max","possibleIndex","min","possibleOffset","possibleCenter","distanceFromCurrent","distanceFromPossible","setCurrentIndex","newIndex","index","runDefaultDragAnimations","type","scaleConfig","SCALE_ANIMATION_CONFIG_DEFAULT","withTiming","toValue","opacityConfig","OPACITY_ANIMATION_CONFIG_DEFAULT","useAnimatedReaction","ACTIVE","BEGAN","AUTOSCROLL","runOnJS","handlers","Array","isArray","forEach","fn","currentItemOffset","currentItemHeight","draggedItemOffset","draggedItemHeight","newTopPosition","easing","Easing","out","ease","computeHiddenArea","top","bottom","computeThresholdArea","hiddenArea","offsetTop","offsetBottom","threshold","visibleHeight","area","computeContainerThresholdArea","Infinity","shouldScrollContainer","containerThresholdArea","nestedListHiddenArea","getRelativeContainerY","getRelativeListY","scrollDirection","relativeContainerY","relativeListY","thresholdArea","autoscrollIncrement","increment","scrollOffset","listRef","scrollTo","handleScroll","useAnimatedScrollHandler","contentOffset","withDelay","startDrag","handleFlatListLayout","nativeEvent","layout","height","measurement","measure","pageY","handleRef","combinedGesture","Platform","OS","composedScrollHandler","useComposedEventHandler","renderAnimatedCell","cellKey","props","createElement","ReorderableListCell","key","ReorderableListContext","Provider","GestureDetector","gesture","CellRendererComponent","scrollEventThrottle","horizontal","removeClippedSubviews","numColumns","MemoizedReorderableListCore","exports","React","memo","forwardRef"],"sourceRoot":"../../../src","sources":["components/ReorderableListCore.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -11,16 +11,25 @@ var _ScrollViewContainerContext = require("../contexts/ScrollViewContainerContex
|
|
|
11
11
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
12
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
13
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
14
|
-
const
|
|
14
|
+
const ScrollViewContainerWithRef = ({
|
|
15
15
|
onLayout,
|
|
16
16
|
onScroll,
|
|
17
17
|
scrollEnabled = true,
|
|
18
18
|
...rest
|
|
19
|
-
}) => {
|
|
19
|
+
}, ref) => {
|
|
20
20
|
const scrollViewScrollEnabled = (0, _reactNativeReanimated.useSharedValue)(scrollEnabled);
|
|
21
21
|
const scrollViewContainerRef = (0, _reactNativeReanimated.useAnimatedRef)();
|
|
22
22
|
const scrollViewScrollOffsetY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
23
|
+
const scrollViewPageY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
23
24
|
const scrollViewHeightY = (0, _reactNativeReanimated.useSharedValue)(0);
|
|
25
|
+
const handleRef = (0, _react.useCallback)(value => {
|
|
26
|
+
scrollViewContainerRef(value);
|
|
27
|
+
if (typeof ref === 'function') {
|
|
28
|
+
ref(value);
|
|
29
|
+
} else if (ref) {
|
|
30
|
+
ref.current = value;
|
|
31
|
+
}
|
|
32
|
+
}, [scrollViewContainerRef, ref]);
|
|
24
33
|
const outerScrollGesture = (0, _react.useMemo)(() => _reactNativeGestureHandler.Gesture.Native(), []);
|
|
25
34
|
const handleScroll = (0, _reactNativeReanimated.useAnimatedScrollHandler)(e => {
|
|
26
35
|
scrollViewScrollOffsetY.value = e.contentOffset.y;
|
|
@@ -28,26 +37,36 @@ const ScrollViewContainer = ({
|
|
|
28
37
|
const composedScrollHandler = (0, _reactNativeReanimated.useComposedEventHandler)([handleScroll, onScroll || null]);
|
|
29
38
|
const contextValue = (0, _react.useMemo)(() => ({
|
|
30
39
|
scrollViewContainerRef,
|
|
40
|
+
scrollViewPageY,
|
|
31
41
|
scrollViewHeightY,
|
|
32
42
|
scrollViewScrollOffsetY,
|
|
33
43
|
scrollViewScrollEnabled,
|
|
34
44
|
outerScrollGesture,
|
|
35
45
|
initialScrollViewScrollEnabled: scrollEnabled
|
|
36
|
-
}), [scrollViewContainerRef, scrollViewHeightY, scrollViewScrollOffsetY, scrollViewScrollEnabled, outerScrollGesture, scrollEnabled]);
|
|
37
|
-
const handleLayout = e => {
|
|
46
|
+
}), [scrollViewContainerRef, scrollViewPageY, scrollViewHeightY, scrollViewScrollOffsetY, scrollViewScrollEnabled, outerScrollGesture, scrollEnabled]);
|
|
47
|
+
const handleLayout = (0, _react.useCallback)(e => {
|
|
38
48
|
scrollViewHeightY.value = e.nativeEvent.layout.height;
|
|
49
|
+
|
|
50
|
+
// measuring pageY allows wrapping nested lists in other views
|
|
51
|
+
(0, _reactNativeReanimated.runOnUI)(() => {
|
|
52
|
+
const measurement = (0, _reactNativeReanimated.measure)(scrollViewContainerRef);
|
|
53
|
+
if (!measurement) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
scrollViewPageY.value = measurement.pageY;
|
|
57
|
+
})();
|
|
39
58
|
onLayout === null || onLayout === void 0 || onLayout(e);
|
|
40
|
-
};
|
|
59
|
+
}, [onLayout, scrollViewContainerRef, scrollViewHeightY, scrollViewPageY]);
|
|
41
60
|
return /*#__PURE__*/_react.default.createElement(_ScrollViewContainerContext.ScrollViewContainerContext.Provider, {
|
|
42
61
|
value: contextValue
|
|
43
62
|
}, /*#__PURE__*/_react.default.createElement(_reactNativeGestureHandler.GestureDetector, {
|
|
44
63
|
gesture: outerScrollGesture
|
|
45
64
|
}, /*#__PURE__*/_react.default.createElement(_reactNativeReanimated.default.ScrollView, _extends({}, rest, {
|
|
46
|
-
ref:
|
|
65
|
+
ref: handleRef,
|
|
47
66
|
onScroll: composedScrollHandler,
|
|
48
67
|
onLayout: handleLayout,
|
|
49
68
|
scrollEnabled: scrollEnabled
|
|
50
69
|
}))));
|
|
51
70
|
};
|
|
52
|
-
exports.ScrollViewContainer =
|
|
71
|
+
const ScrollViewContainer = exports.ScrollViewContainer = /*#__PURE__*/(0, _react.forwardRef)(ScrollViewContainerWithRef);
|
|
53
72
|
//# sourceMappingURL=ScrollViewContainer.js.map
|