react-native-reorderable-list 0.12.0 → 0.13.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.
- package/README.md +0 -1
- 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/ReorderableListCell.js +2 -2
- package/lib/commonjs/components/ReorderableListCell.js.map +1 -1
- package/lib/commonjs/components/ReorderableListCore/ReorderableListCore.js +3 -3
- package/lib/commonjs/components/ReorderableListCore/ReorderableListCore.js.map +1 -1
- package/lib/commonjs/components/ReorderableListCore/useReorderableListCore.js +160 -99
- package/lib/commonjs/components/ReorderableListCore/useReorderableListCore.js.map +1 -1
- package/lib/commonjs/components/ScrollViewContainer.js +14 -3
- package/lib/commonjs/components/ScrollViewContainer.js.map +1 -1
- 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/ReorderableListCell.js +2 -2
- package/lib/module/components/ReorderableListCell.js.map +1 -1
- package/lib/module/components/ReorderableListCore/ReorderableListCore.js +3 -3
- package/lib/module/components/ReorderableListCore/ReorderableListCore.js.map +1 -1
- package/lib/module/components/ReorderableListCore/useReorderableListCore.js +161 -100
- package/lib/module/components/ReorderableListCore/useReorderableListCore.js.map +1 -1
- package/lib/module/components/ScrollViewContainer.js +16 -5
- package/lib/module/components/ScrollViewContainer.js.map +1 -1
- 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 +1 -0
- package/lib/typescript/components/ReorderableListCore/ReorderableListCore.d.ts.map +1 -1
- package/lib/typescript/components/ReorderableListCore/useReorderableListCore.d.ts +4 -5
- package/lib/typescript/components/ReorderableListCore/useReorderableListCore.d.ts.map +1 -1
- package/lib/typescript/components/ScrollViewContainer.d.ts.map +1 -1
- 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 +0 -5
- 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/ReorderableListCell.tsx +3 -3
- package/src/components/ReorderableListCore/ReorderableListCore.tsx +4 -3
- package/src/components/ReorderableListCore/useReorderableListCore.ts +277 -184
- package/src/components/ScrollViewContainer.tsx +23 -5
- package/src/contexts/ScrollViewContainerContext.ts +1 -0
- package/src/types/props.ts +0 -5
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import React, { useCallback, useEffect, useMemo, useState } from 'react';
|
|
2
2
|
import { unstable_batchedUpdates } from 'react-native';
|
|
3
3
|
import { Gesture, State } from 'react-native-gesture-handler';
|
|
4
|
-
import { Easing, runOnJS, runOnUI, scrollTo, useAnimatedReaction, useAnimatedRef, useAnimatedScrollHandler, useSharedValue, withDelay, withTiming } from 'react-native-reanimated';
|
|
4
|
+
import { Easing, measure, runOnJS, runOnUI, scrollTo, useAnimatedReaction, useAnimatedRef, useAnimatedScrollHandler, useDerivedValue, useSharedValue, withDelay, withTiming } from 'react-native-reanimated';
|
|
5
5
|
import { OPACITY_ANIMATION_CONFIG_DEFAULT, SCALE_ANIMATION_CONFIG_DEFAULT } from './animationDefaults';
|
|
6
6
|
import { AUTOSCROLL_CONFIG } from './autoscrollConfig';
|
|
7
7
|
import { ReorderableListState } from '../../types';
|
|
@@ -15,19 +15,19 @@ export const useReorderableListCore = ({
|
|
|
15
15
|
autoscrollDelay,
|
|
16
16
|
autoscrollActivationDelta,
|
|
17
17
|
animationDuration,
|
|
18
|
-
dragReorderThreshold,
|
|
19
18
|
onReorder,
|
|
20
19
|
onDragStart,
|
|
21
20
|
onDragEnd,
|
|
22
21
|
onLayout,
|
|
23
22
|
onIndexChange,
|
|
24
23
|
scrollViewContainerRef,
|
|
24
|
+
scrollViewPageY,
|
|
25
25
|
scrollViewHeightY,
|
|
26
26
|
scrollViewScrollOffsetY,
|
|
27
27
|
scrollViewScrollEnabled,
|
|
28
|
+
scrollable,
|
|
28
29
|
initialScrollEnabled,
|
|
29
30
|
initialScrollViewScrollEnabled,
|
|
30
|
-
nestedScrollable,
|
|
31
31
|
cellAnimations,
|
|
32
32
|
shouldUpdateActiveItem,
|
|
33
33
|
panActivateAfterLongPress,
|
|
@@ -39,22 +39,25 @@ export const useReorderableListCore = ({
|
|
|
39
39
|
const gestureState = useSharedValue(State.UNDETERMINED);
|
|
40
40
|
const currentY = useSharedValue(0);
|
|
41
41
|
const currentTranslationY = useSharedValue(0);
|
|
42
|
+
const currentItemDragCenterY = useSharedValue(null);
|
|
43
|
+
const startItemDragCenterY = useSharedValue(0);
|
|
42
44
|
const flatListScrollOffsetY = useSharedValue(0);
|
|
43
45
|
const flatListHeightY = useSharedValue(0);
|
|
44
|
-
const
|
|
46
|
+
const flatListPageY = useSharedValue(0);
|
|
47
|
+
// The scroll y translation of the list since drag start
|
|
45
48
|
const dragScrollTranslationY = useSharedValue(0);
|
|
49
|
+
// The initial scroll offset y of the list on drag start
|
|
46
50
|
const dragInitialScrollOffsetY = useSharedValue(0);
|
|
51
|
+
// The scroll y translation of the ScrollViewContainer since drag start
|
|
47
52
|
const scrollViewDragScrollTranslationY = useSharedValue(0);
|
|
53
|
+
// The initial scroll offset y of the ScrollViewContainer on drag start
|
|
48
54
|
const scrollViewDragInitialScrollOffsetY = useSharedValue(0);
|
|
49
55
|
const draggedHeight = useSharedValue(0);
|
|
50
56
|
const itemOffset = useSharedValue([]);
|
|
51
57
|
const itemHeight = useSharedValue([]);
|
|
52
58
|
const autoscrollTrigger = useSharedValue(-1);
|
|
53
59
|
const lastAutoscrollTrigger = useSharedValue(-1);
|
|
54
|
-
const previousY = useSharedValue(0);
|
|
55
60
|
const dragY = useSharedValue(0);
|
|
56
|
-
const previousDirection = useSharedValue(0);
|
|
57
|
-
const previousIndex = useSharedValue(-1);
|
|
58
61
|
const currentIndex = useSharedValue(-1);
|
|
59
62
|
const draggedIndex = useSharedValue(-1);
|
|
60
63
|
const state = useSharedValue(ReorderableListState.IDLE);
|
|
@@ -66,6 +69,9 @@ export const useReorderableListCore = ({
|
|
|
66
69
|
const dragDirection = useSharedValue(0);
|
|
67
70
|
const lastDragDirectionPivot = useSharedValue(null);
|
|
68
71
|
const autoscrollDelta = useSharedValue(autoscrollActivationDelta);
|
|
72
|
+
|
|
73
|
+
// Position of the list relative to the scroll container
|
|
74
|
+
const nestedFlatListPositionY = useDerivedValue(() => flatListPageY.value - ((scrollViewPageY === null || scrollViewPageY === void 0 ? void 0 : scrollViewPageY.value) || 0));
|
|
69
75
|
useEffect(() => {
|
|
70
76
|
duration.value = animationDuration;
|
|
71
77
|
autoscrollDelta.value = autoscrollActivationDelta;
|
|
@@ -89,6 +95,8 @@ export const useReorderableListCore = ({
|
|
|
89
95
|
* Decides the intended drag direction of the user.
|
|
90
96
|
* This is used to to determine if the user intends to autoscroll
|
|
91
97
|
* when within the threshold area.
|
|
98
|
+
*
|
|
99
|
+
* @param e - The payload of the pan gesture update event.
|
|
92
100
|
*/
|
|
93
101
|
const setDragDirection = useCallback(e => {
|
|
94
102
|
'worklet';
|
|
@@ -103,6 +111,22 @@ export const useReorderableListCore = ({
|
|
|
103
111
|
}
|
|
104
112
|
}
|
|
105
113
|
}, [dragDirection, lastDragDirectionPivot, autoscrollDelta]);
|
|
114
|
+
const setCurrentItemDragCenterY = useCallback(e => {
|
|
115
|
+
'worklet';
|
|
116
|
+
|
|
117
|
+
if (currentItemDragCenterY.value === null) {
|
|
118
|
+
if (currentIndex.value >= 0) {
|
|
119
|
+
const itemCenter = itemHeight.value[currentIndex.value] * 0.5;
|
|
120
|
+
// the y coordinate of the item relative to the list
|
|
121
|
+
const itemY = itemOffset.value[currentIndex.value] - (flatListScrollOffsetY.value + scrollViewDragScrollTranslationY.value);
|
|
122
|
+
const value = itemY + itemCenter + e.translationY;
|
|
123
|
+
startItemDragCenterY.value = value;
|
|
124
|
+
currentItemDragCenterY.value = value;
|
|
125
|
+
}
|
|
126
|
+
} else {
|
|
127
|
+
currentItemDragCenterY.value = startItemDragCenterY.value + e.translationY;
|
|
128
|
+
}
|
|
129
|
+
}, [currentItemDragCenterY, currentIndex, startItemDragCenterY, itemOffset, itemHeight, flatListScrollOffsetY, scrollViewDragScrollTranslationY]);
|
|
106
130
|
const panGestureHandler = useMemo(() => Gesture.Pan().onBegin(e => {
|
|
107
131
|
// prevent new dragging until item is completely released
|
|
108
132
|
if (state.value === ReorderableListState.IDLE) {
|
|
@@ -117,12 +141,13 @@ export const useReorderableListCore = ({
|
|
|
117
141
|
setDragDirection(e);
|
|
118
142
|
}
|
|
119
143
|
if (state.value !== ReorderableListState.RELEASED) {
|
|
144
|
+
setCurrentItemDragCenterY(e);
|
|
120
145
|
currentY.value = startY.value + e.translationY;
|
|
121
146
|
currentTranslationY.value = e.translationY;
|
|
122
147
|
dragY.value = e.translationY + dragScrollTranslationY.value + scrollViewDragScrollTranslationY.value;
|
|
123
148
|
gestureState.value = e.state;
|
|
124
149
|
}
|
|
125
|
-
}).onEnd(e => gestureState.value = e.state).onFinalize(e => gestureState.value = e.state), [state, startY, currentY, currentTranslationY, dragY, gestureState,
|
|
150
|
+
}).onEnd(e => gestureState.value = e.state).onFinalize(e => gestureState.value = e.state), [state, startY, currentY, currentTranslationY, dragY, gestureState, dragScrollTranslationY, scrollViewDragScrollTranslationY, setDragDirection, setCurrentItemDragCenterY]);
|
|
126
151
|
const panGestureHandlerWithOptions = useMemo(() => {
|
|
127
152
|
if (typeof panActivateAfterLongPress === 'number') {
|
|
128
153
|
panGestureHandler.activateAfterLongPress(panActivateAfterLongPress);
|
|
@@ -160,7 +185,8 @@ export const useReorderableListCore = ({
|
|
|
160
185
|
scrollViewDragScrollTranslationY.value = 0;
|
|
161
186
|
dragDirection.value = 0;
|
|
162
187
|
lastDragDirectionPivot.value = null;
|
|
163
|
-
|
|
188
|
+
currentItemDragCenterY.value = null;
|
|
189
|
+
}, [state, draggedIndex, dragY, dragScrollTranslationY, scrollViewDragScrollTranslationY, dragDirection, lastDragDirectionPivot, currentItemDragCenterY]);
|
|
164
190
|
const resetSharedValuesAfterAnimations = useCallback(() => {
|
|
165
191
|
setTimeout(runOnUI(resetSharedValues), duration.value);
|
|
166
192
|
}, [resetSharedValues, duration]);
|
|
@@ -180,67 +206,72 @@ export const useReorderableListCore = ({
|
|
|
180
206
|
}
|
|
181
207
|
}
|
|
182
208
|
};
|
|
183
|
-
const
|
|
209
|
+
const recomputeLayout = useCallback((from, to) => {
|
|
184
210
|
'worklet';
|
|
185
211
|
|
|
186
|
-
const
|
|
187
|
-
const
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
212
|
+
const itemDirection = to > from;
|
|
213
|
+
const index1 = itemDirection ? from : to;
|
|
214
|
+
const index2 = itemDirection ? to : from;
|
|
215
|
+
const newOffset1 = itemOffset.value[index1];
|
|
216
|
+
const newHeight1 = itemHeight.value[index2];
|
|
217
|
+
const newOffset2 = itemOffset.value[index2] + itemHeight.value[index2] - itemHeight.value[index1];
|
|
218
|
+
const newHeight2 = itemHeight.value[index1];
|
|
219
|
+
itemOffset.value[index1] = newOffset1;
|
|
220
|
+
itemHeight.value[index1] = newHeight1;
|
|
221
|
+
itemOffset.value[index2] = newOffset2;
|
|
222
|
+
itemHeight.value[index2] = newHeight2;
|
|
223
|
+
}, [itemOffset, itemHeight]);
|
|
224
|
+
|
|
225
|
+
/**
|
|
226
|
+
* Computes a potential new drop container for the current dragged item and evaluates
|
|
227
|
+
* whether the dragged item center is nearer to the center of the current container or the new one.
|
|
228
|
+
*
|
|
229
|
+
* @returns The new index if the center of the dragged item is closer to the center of
|
|
230
|
+
* the new drop container or the current index if closer to the current drop container.
|
|
231
|
+
*/
|
|
232
|
+
const computeCurrentIndex = useCallback(() => {
|
|
233
|
+
'worklet';
|
|
234
|
+
|
|
235
|
+
if (currentItemDragCenterY.value === null) {
|
|
236
|
+
return currentIndex.value;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// apply scroll offset and scroll container translation
|
|
240
|
+
const relativeDragCenterY = flatListScrollOffsetY.value + scrollViewDragScrollTranslationY.value + currentItemDragCenterY.value;
|
|
241
|
+
const currentOffset = itemOffset.value[currentIndex.value];
|
|
242
|
+
const currentHeight = itemHeight.value[currentIndex.value];
|
|
243
|
+
const currentCenter = currentOffset + currentHeight * 0.5;
|
|
244
|
+
const max = itemOffset.value.length;
|
|
245
|
+
const possibleIndex = relativeDragCenterY < currentCenter ? Math.max(0, currentIndex.value - 1) : Math.min(max - 1, currentIndex.value + 1);
|
|
246
|
+
if (currentIndex.value !== possibleIndex) {
|
|
247
|
+
let possibleOffset = itemOffset.value[possibleIndex];
|
|
248
|
+
if (possibleIndex > currentIndex.value) {
|
|
249
|
+
possibleOffset += itemHeight.value[possibleIndex] - currentHeight;
|
|
201
250
|
}
|
|
251
|
+
const possibleCenter = possibleOffset + currentHeight * 0.5;
|
|
252
|
+
const distanceFromCurrent = Math.abs(relativeDragCenterY - currentCenter);
|
|
253
|
+
const distanceFromPossible = Math.abs(relativeDragCenterY - possibleCenter);
|
|
254
|
+
return distanceFromCurrent <= distanceFromPossible ? currentIndex.value : possibleIndex;
|
|
202
255
|
}
|
|
203
|
-
return
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
};
|
|
207
|
-
}, [dragReorderThreshold, currentIndex, flatListScrollOffsetY, previousDirection, itemOffset, itemHeight]);
|
|
208
|
-
const setCurrentIndex = useCallback(y => {
|
|
256
|
+
return currentIndex.value;
|
|
257
|
+
}, [currentIndex, currentItemDragCenterY, itemOffset, itemHeight, flatListScrollOffsetY, scrollViewDragScrollTranslationY]);
|
|
258
|
+
const setCurrentIndex = useCallback(() => {
|
|
209
259
|
'worklet';
|
|
210
260
|
|
|
211
|
-
const
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
} = getIndexFromY(y);
|
|
215
|
-
const delta = Math.abs(previousY.value - y);
|
|
216
|
-
if (currentIndex.value !== newIndex && (
|
|
217
|
-
// if the same two items re-swap index check delta and direction to avoid swap flickering
|
|
218
|
-
previousIndex.value !== newIndex || previousDirection.value !== newDirection && delta >= 5)) {
|
|
219
|
-
const itemDirection = newIndex > currentIndex.value;
|
|
220
|
-
const index1 = itemDirection ? currentIndex.value : newIndex;
|
|
221
|
-
const index2 = itemDirection ? newIndex : currentIndex.value;
|
|
222
|
-
const newOffset1 = itemOffset.value[index1];
|
|
223
|
-
const newHeight1 = itemHeight.value[index2];
|
|
224
|
-
const newOffset2 = itemOffset.value[index2] + (itemHeight.value[index2] - itemHeight.value[index1]);
|
|
225
|
-
const newHeight2 = itemHeight.value[index1];
|
|
226
|
-
itemOffset.value[index1] = newOffset1;
|
|
227
|
-
itemHeight.value[index1] = newHeight1;
|
|
228
|
-
itemOffset.value[index2] = newOffset2;
|
|
229
|
-
itemHeight.value[index2] = newHeight2;
|
|
230
|
-
previousY.value = y;
|
|
231
|
-
previousDirection.value = newDirection;
|
|
232
|
-
previousIndex.value = currentIndex.value;
|
|
261
|
+
const newIndex = computeCurrentIndex();
|
|
262
|
+
if (currentIndex.value !== newIndex) {
|
|
263
|
+
recomputeLayout(currentIndex.value, newIndex);
|
|
233
264
|
currentIndex.value = newIndex;
|
|
234
265
|
onIndexChange === null || onIndexChange === void 0 || onIndexChange({
|
|
235
266
|
index: newIndex
|
|
236
267
|
});
|
|
237
268
|
}
|
|
238
|
-
}, [currentIndex,
|
|
269
|
+
}, [currentIndex, computeCurrentIndex, recomputeLayout, onIndexChange]);
|
|
239
270
|
const runDefaultDragAnimations = useCallback(type => {
|
|
240
271
|
'worklet';
|
|
241
272
|
|
|
242
273
|
// if no custom scale run default
|
|
243
|
-
if (!(cellAnimations && '
|
|
274
|
+
if (!(cellAnimations && 'transform' in cellAnimations)) {
|
|
244
275
|
const scaleConfig = SCALE_ANIMATION_CONFIG_DEFAULT[type];
|
|
245
276
|
scaleDefault.value = withTiming(scaleConfig.toValue, scaleConfig);
|
|
246
277
|
}
|
|
@@ -295,7 +326,7 @@ export const useReorderableListCore = ({
|
|
|
295
326
|
}
|
|
296
327
|
}
|
|
297
328
|
});
|
|
298
|
-
const
|
|
329
|
+
const computeHiddenArea = useCallback(() => {
|
|
299
330
|
'worklet';
|
|
300
331
|
|
|
301
332
|
if (!scrollViewScrollOffsetY || !scrollViewHeightY) {
|
|
@@ -313,9 +344,10 @@ export const useReorderableListCore = ({
|
|
|
313
344
|
bottom
|
|
314
345
|
};
|
|
315
346
|
}, [scrollViewScrollOffsetY, scrollViewHeightY, nestedFlatListPositionY, flatListHeightY]);
|
|
316
|
-
const
|
|
347
|
+
const computeThresholdArea = useCallback(() => {
|
|
317
348
|
'worklet';
|
|
318
349
|
|
|
350
|
+
const hiddenArea = computeHiddenArea();
|
|
319
351
|
const offsetTop = Math.max(0, (autoscrollThresholdOffset === null || autoscrollThresholdOffset === void 0 ? void 0 : autoscrollThresholdOffset.top) || 0);
|
|
320
352
|
const offsetBottom = Math.max(0, (autoscrollThresholdOffset === null || autoscrollThresholdOffset === void 0 ? void 0 : autoscrollThresholdOffset.bottom) || 0);
|
|
321
353
|
const threshold = Math.max(0, Math.min(autoscrollThreshold, 0.4));
|
|
@@ -327,66 +359,81 @@ export const useReorderableListCore = ({
|
|
|
327
359
|
top,
|
|
328
360
|
bottom
|
|
329
361
|
};
|
|
330
|
-
}, [autoscrollThreshold, autoscrollThresholdOffset, flatListHeightY]);
|
|
331
|
-
const
|
|
362
|
+
}, [computeHiddenArea, autoscrollThreshold, autoscrollThresholdOffset, flatListHeightY]);
|
|
363
|
+
const computeContainerThresholdArea = useCallback(() => {
|
|
332
364
|
'worklet';
|
|
333
365
|
|
|
366
|
+
if (!scrollViewHeightY) {
|
|
367
|
+
return {
|
|
368
|
+
top: -Infinity,
|
|
369
|
+
bottom: Infinity
|
|
370
|
+
};
|
|
371
|
+
}
|
|
334
372
|
const offsetTop = Math.max(0, (autoscrollThresholdOffset === null || autoscrollThresholdOffset === void 0 ? void 0 : autoscrollThresholdOffset.top) || 0);
|
|
335
373
|
const offsetBottom = Math.max(0, (autoscrollThresholdOffset === null || autoscrollThresholdOffset === void 0 ? void 0 : autoscrollThresholdOffset.bottom) || 0);
|
|
336
374
|
const threshold = Math.max(0, Math.min(autoscrollThreshold, 0.4));
|
|
337
|
-
const
|
|
375
|
+
const visibleHeight = scrollViewHeightY.value - (offsetTop + offsetBottom);
|
|
376
|
+
const area = visibleHeight * threshold;
|
|
338
377
|
const top = area + offsetTop;
|
|
339
|
-
const bottom =
|
|
340
|
-
|
|
341
|
-
// if the hidden area is 0 then we don't have a threshold area
|
|
342
|
-
// we might have floating errors like 0.0001 which we should ignore
|
|
378
|
+
const bottom = visibleHeight - area - offsetBottom;
|
|
343
379
|
return {
|
|
344
|
-
top
|
|
345
|
-
bottom
|
|
380
|
+
top,
|
|
381
|
+
bottom
|
|
346
382
|
};
|
|
347
|
-
}, [autoscrollThreshold, autoscrollThresholdOffset,
|
|
348
|
-
const
|
|
383
|
+
}, [autoscrollThreshold, autoscrollThresholdOffset, scrollViewHeightY]);
|
|
384
|
+
const shouldScrollContainer = useCallback(y => {
|
|
349
385
|
'worklet';
|
|
350
386
|
|
|
351
|
-
const
|
|
352
|
-
const
|
|
387
|
+
const containerThresholdArea = computeContainerThresholdArea();
|
|
388
|
+
const nestedListHiddenArea = computeHiddenArea();
|
|
353
389
|
|
|
354
|
-
//
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
390
|
+
// We should scroll the container if there's a hidden part of the nested list.
|
|
391
|
+
// We might have floating errors like 0.0001 which we should ignore.
|
|
392
|
+
return nestedListHiddenArea.top > 0.01 && y <= containerThresholdArea.top || nestedListHiddenArea.bottom > 0.01 && y >= containerThresholdArea.bottom;
|
|
393
|
+
}, [computeHiddenArea, computeContainerThresholdArea]);
|
|
394
|
+
const getRelativeContainerY = useCallback(() => {
|
|
358
395
|
'worklet';
|
|
359
396
|
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
397
|
+
return currentY.value + nestedFlatListPositionY.value - scrollViewDragInitialScrollOffsetY.value;
|
|
398
|
+
}, [currentY, nestedFlatListPositionY, scrollViewDragInitialScrollOffsetY]);
|
|
399
|
+
const getRelativeListY = useCallback(() => {
|
|
400
|
+
'worklet';
|
|
401
|
+
|
|
402
|
+
return currentY.value + scrollViewDragScrollTranslationY.value;
|
|
403
|
+
}, [currentY, scrollViewDragScrollTranslationY]);
|
|
404
|
+
const scrollDirection = useCallback(() => {
|
|
405
|
+
'worklet';
|
|
406
|
+
|
|
407
|
+
const relativeContainerY = getRelativeContainerY();
|
|
408
|
+
if (shouldScrollContainer(relativeContainerY)) {
|
|
409
|
+
const containerThresholdArea = computeContainerThresholdArea();
|
|
410
|
+
if (relativeContainerY <= containerThresholdArea.top) {
|
|
364
411
|
return -1;
|
|
365
412
|
}
|
|
366
|
-
if (
|
|
413
|
+
if (relativeContainerY >= containerThresholdArea.bottom) {
|
|
367
414
|
return 1;
|
|
368
415
|
}
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
const thresholdArea =
|
|
372
|
-
if (
|
|
416
|
+
} else if (scrollable) {
|
|
417
|
+
const relativeListY = getRelativeListY();
|
|
418
|
+
const thresholdArea = computeThresholdArea();
|
|
419
|
+
if (relativeListY <= thresholdArea.top) {
|
|
373
420
|
return -1;
|
|
374
421
|
}
|
|
375
|
-
if (
|
|
422
|
+
if (relativeListY >= thresholdArea.bottom) {
|
|
376
423
|
return 1;
|
|
377
424
|
}
|
|
378
425
|
}
|
|
379
426
|
return 0;
|
|
380
|
-
}, [
|
|
381
|
-
useAnimatedReaction(() => currentY.value
|
|
427
|
+
}, [shouldScrollContainer, computeThresholdArea, computeContainerThresholdArea, getRelativeContainerY, getRelativeListY, scrollable]);
|
|
428
|
+
useAnimatedReaction(() => currentY.value, () => {
|
|
382
429
|
if (state.value === ReorderableListState.DRAGGED || state.value === ReorderableListState.AUTOSCROLL) {
|
|
383
|
-
setCurrentIndex(
|
|
430
|
+
setCurrentIndex();
|
|
384
431
|
|
|
385
432
|
// Trigger autoscroll when:
|
|
386
433
|
// 1. Within the threshold area (top or bottom of list)
|
|
387
434
|
// 2. Have dragged in the same direction as the scroll
|
|
388
435
|
// 3. Not already in autoscroll mode
|
|
389
|
-
if (dragDirection.value === scrollDirection(
|
|
436
|
+
if (dragDirection.value === scrollDirection()) {
|
|
390
437
|
// When the first two conditions are met and it's already in autoscroll mode, we let it continue (no-op)
|
|
391
438
|
if (state.value !== ReorderableListState.AUTOSCROLL) {
|
|
392
439
|
state.value = ReorderableListState.AUTOSCROLL;
|
|
@@ -400,12 +447,15 @@ export const useReorderableListCore = ({
|
|
|
400
447
|
});
|
|
401
448
|
useAnimatedReaction(() => autoscrollTrigger.value, () => {
|
|
402
449
|
if (autoscrollTrigger.value !== lastAutoscrollTrigger.value && state.value === ReorderableListState.AUTOSCROLL) {
|
|
403
|
-
|
|
404
|
-
const autoscrollIncrement = scrollDirection(y) * AUTOSCROLL_CONFIG.increment * autoscrollSpeedScale;
|
|
450
|
+
const autoscrollIncrement = dragDirection.value * AUTOSCROLL_CONFIG.increment * autoscrollSpeedScale;
|
|
405
451
|
if (autoscrollIncrement !== 0) {
|
|
406
452
|
let scrollOffset = flatListScrollOffsetY.value;
|
|
407
453
|
let listRef = flatListRef;
|
|
408
|
-
|
|
454
|
+
|
|
455
|
+
// Checking on every autoscroll whether to scroll the container,
|
|
456
|
+
// this allows to smoothly pass the scroll from the container to the nested list
|
|
457
|
+
// without any gesture input.
|
|
458
|
+
if (scrollViewScrollOffsetY && shouldScrollContainer(getRelativeContainerY())) {
|
|
409
459
|
scrollOffset = scrollViewScrollOffsetY.value;
|
|
410
460
|
listRef = scrollViewContainerRef;
|
|
411
461
|
}
|
|
@@ -414,7 +464,7 @@ export const useReorderableListCore = ({
|
|
|
414
464
|
|
|
415
465
|
// when autoscrolling user may not be moving his finger so we need
|
|
416
466
|
// to update the current position of the dragged item here
|
|
417
|
-
setCurrentIndex(
|
|
467
|
+
setCurrentIndex();
|
|
418
468
|
}
|
|
419
469
|
});
|
|
420
470
|
|
|
@@ -437,12 +487,11 @@ export const useReorderableListCore = ({
|
|
|
437
487
|
}
|
|
438
488
|
});
|
|
439
489
|
|
|
440
|
-
//
|
|
490
|
+
// container scroll handler
|
|
441
491
|
useAnimatedReaction(() => scrollViewScrollOffsetY === null || scrollViewScrollOffsetY === void 0 ? void 0 : scrollViewScrollOffsetY.value, value => {
|
|
442
492
|
if (value && scrollViewScrollEnabled) {
|
|
443
493
|
// checking if the list is not scrollable instead of the scrolling state
|
|
444
|
-
// fixes a bug on iOS where the item is shifted after autoscrolling and
|
|
445
|
-
// moving await from autoscroll area
|
|
494
|
+
// fixes a bug on iOS where the item is shifted after autoscrolling and moving away from the area
|
|
446
495
|
if (!scrollViewScrollEnabled.value) {
|
|
447
496
|
scrollViewDragScrollTranslationY.value = value - scrollViewDragInitialScrollOffsetY.value;
|
|
448
497
|
}
|
|
@@ -467,10 +516,9 @@ export const useReorderableListCore = ({
|
|
|
467
516
|
runOnJS(setActiveIndex)(index);
|
|
468
517
|
}
|
|
469
518
|
dragInitialScrollOffsetY.value = flatListScrollOffsetY.value;
|
|
470
|
-
scrollViewDragInitialScrollOffsetY.value = scrollViewScrollOffsetY ? scrollViewScrollOffsetY.value
|
|
519
|
+
scrollViewDragInitialScrollOffsetY.value = (scrollViewScrollOffsetY === null || scrollViewScrollOffsetY === void 0 ? void 0 : scrollViewScrollOffsetY.value) || 0;
|
|
471
520
|
draggedHeight.value = itemHeight.value[index];
|
|
472
521
|
draggedIndex.value = index;
|
|
473
|
-
previousIndex.value = -1;
|
|
474
522
|
currentIndex.value = index;
|
|
475
523
|
state.value = ReorderableListState.DRAGGED;
|
|
476
524
|
runOnJS(setScrollEnabled)(false);
|
|
@@ -481,12 +529,25 @@ export const useReorderableListCore = ({
|
|
|
481
529
|
index
|
|
482
530
|
});
|
|
483
531
|
}
|
|
484
|
-
}, [resetSharedValues, shouldUpdateActiveItem, dragInitialScrollOffsetY, scrollViewScrollOffsetY, scrollViewDragInitialScrollOffsetY, setScrollEnabled, currentIndex,
|
|
532
|
+
}, [resetSharedValues, shouldUpdateActiveItem, dragInitialScrollOffsetY, scrollViewScrollOffsetY, scrollViewDragInitialScrollOffsetY, setScrollEnabled, currentIndex, draggedHeight, draggedIndex, state, flatListScrollOffsetY, itemHeight, onDragStart, runDefaultDragAnimations]);
|
|
485
533
|
const handleFlatListLayout = useCallback(e => {
|
|
486
|
-
nestedFlatListPositionY.value = e.nativeEvent.layout.y;
|
|
487
534
|
flatListHeightY.value = e.nativeEvent.layout.height;
|
|
535
|
+
|
|
536
|
+
// If nested in a scroll container.
|
|
537
|
+
if (scrollViewScrollOffsetY) {
|
|
538
|
+
// Timeout fixes a bug where measure returns height 0.
|
|
539
|
+
setTimeout(() => {
|
|
540
|
+
runOnUI(() => {
|
|
541
|
+
const measurement = measure(flatListRef);
|
|
542
|
+
if (!measurement) {
|
|
543
|
+
return;
|
|
544
|
+
}
|
|
545
|
+
flatListPageY.value = measurement.pageY;
|
|
546
|
+
})();
|
|
547
|
+
}, 100);
|
|
548
|
+
}
|
|
488
549
|
onLayout === null || onLayout === void 0 || onLayout(e);
|
|
489
|
-
}, [
|
|
550
|
+
}, [flatListRef, flatListPageY, flatListHeightY, scrollViewScrollOffsetY, onLayout]);
|
|
490
551
|
const handleRef = value => {
|
|
491
552
|
flatListRef(value);
|
|
492
553
|
if (typeof ref === 'function') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","unstable_batchedUpdates","Gesture","State","Easing","runOnJS","runOnUI","scrollTo","useAnimatedReaction","useAnimatedRef","useAnimatedScrollHandler","useSharedValue","withDelay","withTiming","OPACITY_ANIMATION_CONFIG_DEFAULT","SCALE_ANIMATION_CONFIG_DEFAULT","AUTOSCROLL_CONFIG","ReorderableListState","version","split","hasAutomaticBatching","length","parseInt","useReorderableListCore","ref","autoscrollThreshold","autoscrollThresholdOffset","autoscrollSpeedScale","autoscrollDelay","autoscrollActivationDelta","animationDuration","dragReorderThreshold","onReorder","onDragStart","onDragEnd","onLayout","onIndexChange","scrollViewContainerRef","scrollViewHeightY","scrollViewScrollOffsetY","scrollViewScrollEnabled","initialScrollEnabled","initialScrollViewScrollEnabled","nestedScrollable","cellAnimations","shouldUpdateActiveItem","panActivateAfterLongPress","panEnabled","flatListRef","activeIndex","setActiveIndex","scrollEnabled","gestureState","UNDETERMINED","currentY","currentTranslationY","flatListScrollOffsetY","flatListHeightY","nestedFlatListPositionY","dragScrollTranslationY","dragInitialScrollOffsetY","scrollViewDragScrollTranslationY","scrollViewDragInitialScrollOffsetY","draggedHeight","itemOffset","itemHeight","autoscrollTrigger","lastAutoscrollTrigger","previousY","dragY","previousDirection","previousIndex","currentIndex","draggedIndex","state","IDLE","dragEndHandlers","startY","duration","scaleDefault","opacityDefault","dragDirection","lastDragDirectionPivot","autoscrollDelta","value","listContextValue","transform","scale","opacity","setDragDirection","e","direction","velocityY","absoluteY","Math","abs","panGestureHandler","Pan","onBegin","y","translationY","onUpdate","DRAGGED","RELEASED","onEnd","onFinalize","panGestureHandlerWithOptions","activateAfterLongPress","enabled","gestureHandler","Simultaneous","Native","setScrollEnabled","_flatListRef$current","current","setNativeProps","_scrollViewContainerR","resetSharedValues","resetSharedValuesAfterAnimations","setTimeout","reorder","fromIndex","toIndex","updateState","from","to","getIndexFromY","relativeY","count","i","threshold","max","min","height","offset","index","setCurrentIndex","newIndex","newDirection","delta","itemDirection","index1","index2","newOffset1","newHeight1","newOffset2","newHeight2","runDefaultDragAnimations","type","scaleConfig","toValue","opacityConfig","ACTIVE","BEGAN","AUTOSCROLL","handlers","Array","isArray","forEach","fn","currentItemOffset","currentItemHeight","draggedItemOffset","draggedItemHeight","newTopPosition","easing","out","ease","calculateHiddenArea","top","bottom","calculateThresholdArea","hiddenArea","offsetTop","offsetBottom","visibleHeight","area","calculateThresholdAreaParent","shouldScrollParent","thresholdAreaParent","scrollDirection","thresholdArea","autoscrollIncrement","increment","scrollOffset","listRef","handleScroll","contentOffset","startDrag","handleFlatListLayout","nativeEvent","layout","handleRef"],"sourceRoot":"../../../../src","sources":["components/ReorderableListCore/useReorderableListCore.ts"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useMemo","useState","unstable_batchedUpdates","Gesture","State","Easing","measure","runOnJS","runOnUI","scrollTo","useAnimatedReaction","useAnimatedRef","useAnimatedScrollHandler","useDerivedValue","useSharedValue","withDelay","withTiming","OPACITY_ANIMATION_CONFIG_DEFAULT","SCALE_ANIMATION_CONFIG_DEFAULT","AUTOSCROLL_CONFIG","ReorderableListState","version","split","hasAutomaticBatching","length","parseInt","useReorderableListCore","ref","autoscrollThreshold","autoscrollThresholdOffset","autoscrollSpeedScale","autoscrollDelay","autoscrollActivationDelta","animationDuration","onReorder","onDragStart","onDragEnd","onLayout","onIndexChange","scrollViewContainerRef","scrollViewPageY","scrollViewHeightY","scrollViewScrollOffsetY","scrollViewScrollEnabled","scrollable","initialScrollEnabled","initialScrollViewScrollEnabled","cellAnimations","shouldUpdateActiveItem","panActivateAfterLongPress","panEnabled","flatListRef","activeIndex","setActiveIndex","scrollEnabled","gestureState","UNDETERMINED","currentY","currentTranslationY","currentItemDragCenterY","startItemDragCenterY","flatListScrollOffsetY","flatListHeightY","flatListPageY","dragScrollTranslationY","dragInitialScrollOffsetY","scrollViewDragScrollTranslationY","scrollViewDragInitialScrollOffsetY","draggedHeight","itemOffset","itemHeight","autoscrollTrigger","lastAutoscrollTrigger","dragY","currentIndex","draggedIndex","state","IDLE","dragEndHandlers","startY","duration","scaleDefault","opacityDefault","dragDirection","lastDragDirectionPivot","autoscrollDelta","nestedFlatListPositionY","value","listContextValue","transform","scale","opacity","setDragDirection","e","direction","velocityY","absoluteY","Math","abs","setCurrentItemDragCenterY","itemCenter","itemY","translationY","panGestureHandler","Pan","onBegin","y","onUpdate","DRAGGED","RELEASED","onEnd","onFinalize","panGestureHandlerWithOptions","activateAfterLongPress","enabled","gestureHandler","Simultaneous","Native","setScrollEnabled","_flatListRef$current","current","setNativeProps","_scrollViewContainerR","resetSharedValues","resetSharedValuesAfterAnimations","setTimeout","reorder","fromIndex","toIndex","updateState","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","toValue","opacityConfig","ACTIVE","BEGAN","AUTOSCROLL","handlers","Array","isArray","forEach","fn","currentItemOffset","currentItemHeight","draggedItemOffset","draggedItemHeight","newTopPosition","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","handleScroll","contentOffset","startDrag","handleFlatListLayout","nativeEvent","layout","height","measurement","pageY","handleRef"],"sourceRoot":"../../../../src","sources":["components/ReorderableListCore/useReorderableListCore.ts"],"mappings":"AAAA,OAAOA,KAAK,IAAGC,WAAW,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAO,OAAO;AACtE,SAIEC,uBAAuB,QAClB,cAAc;AAErB,SACEC,OAAO,EAGPC,KAAK,QACA,8BAA8B;AACrC,SAEEC,MAAM,EAENC,OAAO,EACPC,OAAO,EACPC,OAAO,EACPC,QAAQ,EACRC,mBAAmB,EACnBC,cAAc,EACdC,wBAAwB,EACxBC,eAAe,EACfC,cAAc,EACdC,SAAS,EACTC,UAAU,QACL,yBAAyB;AAEhC,SACEC,gCAAgC,EAChCC,8BAA8B,QACzB,qBAAqB;AAC5B,SAAQC,iBAAiB,QAAO,oBAAoB;AACpD,SAMEC,oBAAoB,QACf,aAAa;AAEpB,MAAMC,OAAO,GAAGxB,KAAK,CAACwB,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC;AACxC,MAAMC,oBAAoB,GAAGF,OAAO,CAACG,MAAM,GACvCC,QAAQ,CAACJ,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,GAC9B,KAAK;AA6BT,OAAO,MAAMK,sBAAsB,GAAGA,CAAI;EACxCC,GAAG;EACHC,mBAAmB;EACnBC,yBAAyB;EACzBC,oBAAoB;EACpBC,eAAe;EACfC,yBAAyB;EACzBC,iBAAiB;EACjBC,SAAS;EACTC,WAAW;EACXC,SAAS;EACTC,QAAQ;EACRC,aAAa;EACbC,sBAAsB;EACtBC,eAAe;EACfC,iBAAiB;EACjBC,uBAAuB;EACvBC,uBAAuB;EACvBC,UAAU;EACVC,oBAAoB;EACpBC,8BAA8B;EAC9BC,cAAc;EACdC,sBAAsB;EACtBC,yBAAyB;EACzBC;AAC6B,CAAC,KAAK;EACnC,MAAMC,WAAW,GAAGxC,cAAc,CAAW,CAAC;EAC9C,MAAM,CAACyC,WAAW,EAAEC,cAAc,CAAC,GAAGpD,QAAQ,CAAC,CAAC,CAAC,CAAC;EAClD,MAAMqD,aAAa,GAAGxC,cAAc,CAAC+B,oBAAoB,CAAC;EAC1D,MAAMU,YAAY,GAAGzC,cAAc,CAAQV,KAAK,CAACoD,YAAY,CAAC;EAC9D,MAAMC,QAAQ,GAAG3C,cAAc,CAAC,CAAC,CAAC;EAClC,MAAM4C,mBAAmB,GAAG5C,cAAc,CAAC,CAAC,CAAC;EAC7C,MAAM6C,sBAAsB,GAAG7C,cAAc,CAAgB,IAAI,CAAC;EAClE,MAAM8C,oBAAoB,GAAG9C,cAAc,CAAS,CAAC,CAAC;EACtD,MAAM+C,qBAAqB,GAAG/C,cAAc,CAAC,CAAC,CAAC;EAC/C,MAAMgD,eAAe,GAAGhD,cAAc,CAAC,CAAC,CAAC;EACzC,MAAMiD,aAAa,GAAGjD,cAAc,CAAC,CAAC,CAAC;EACvC;EACA,MAAMkD,sBAAsB,GAAGlD,cAAc,CAAC,CAAC,CAAC;EAChD;EACA,MAAMmD,wBAAwB,GAAGnD,cAAc,CAAC,CAAC,CAAC;EAClD;EACA,MAAMoD,gCAAgC,GAAGpD,cAAc,CAAC,CAAC,CAAC;EAC1D;EACA,MAAMqD,kCAAkC,GAAGrD,cAAc,CAAC,CAAC,CAAC;EAC5D,MAAMsD,aAAa,GAAGtD,cAAc,CAAC,CAAC,CAAC;EACvC,MAAMuD,UAAU,GAAGvD,cAAc,CAAW,EAAE,CAAC;EAC/C,MAAMwD,UAAU,GAAGxD,cAAc,CAAW,EAAE,CAAC;EAC/C,MAAMyD,iBAAiB,GAAGzD,cAAc,CAAC,CAAC,CAAC,CAAC;EAC5C,MAAM0D,qBAAqB,GAAG1D,cAAc,CAAC,CAAC,CAAC,CAAC;EAChD,MAAM2D,KAAK,GAAG3D,cAAc,CAAC,CAAC,CAAC;EAC/B,MAAM4D,YAAY,GAAG5D,cAAc,CAAC,CAAC,CAAC,CAAC;EACvC,MAAM6D,YAAY,GAAG7D,cAAc,CAAC,CAAC,CAAC,CAAC;EACvC,MAAM8D,KAAK,GAAG9D,cAAc,CAAuBM,oBAAoB,CAACyD,IAAI,CAAC;EAC7E,MAAMC,eAAe,GAAGhE,cAAc,CAEpC,EAAE,CAAC;EACL,MAAMiE,MAAM,GAAGjE,cAAc,CAAC,CAAC,CAAC;EAChC,MAAMkE,QAAQ,GAAGlE,cAAc,CAACmB,iBAAiB,CAAC;EAClD,MAAMgD,YAAY,GAAGnE,cAAc,CAAC,CAAC,CAAC;EACtC,MAAMoE,cAAc,GAAGpE,cAAc,CAAC,CAAC,CAAC;EACxC,MAAMqE,aAAa,GAAGrE,cAAc,CAAC,CAAC,CAAC;EACvC,MAAMsE,sBAAsB,GAAGtE,cAAc,CAAgB,IAAI,CAAC;EAClE,MAAMuE,eAAe,GAAGvE,cAAc,CAACkB,yBAAyB,CAAC;;EAEjE;EACA,MAAMsD,uBAAuB,GAAGzE,eAAe,CAC7C,MAAMkD,aAAa,CAACwB,KAAK,IAAI,CAAA/C,eAAe,aAAfA,eAAe,uBAAfA,eAAe,CAAE+C,KAAK,KAAI,CAAC,CAC1D,CAAC;EAEDxF,SAAS,CAAC,MAAM;IACdiF,QAAQ,CAACO,KAAK,GAAGtD,iBAAiB;IAClCoD,eAAe,CAACE,KAAK,GAAGvD,yBAAyB;EACnD,CAAC,EAAE,CAACgD,QAAQ,EAAE/C,iBAAiB,EAAEoD,eAAe,EAAErD,yBAAyB,CAAC,CAAC;EAE7E,MAAMwD,gBAAgB,GAAGxF,OAAO,CAC9B,OAAO;IACLoE,aAAa;IACbM,YAAY;IACZC,YAAY;IACZG,eAAe;IACf1B,WAAW;IACXL,cAAc,EAAE;MACd,GAAGA,cAAc;MACjB0C,SAAS,EACP1C,cAAc,IAAI,WAAW,IAAIA,cAAc,GAC3CA,cAAc,CAAC0C,SAAS,GACxB,CAAC;QAACC,KAAK,EAAET;MAAY,CAAC,CAAC;MAC7BU,OAAO,EACL5C,cAAc,IAAI,SAAS,IAAIA,cAAc,GACzCA,cAAc,CAAC4C,OAAO,GACtBT;IACR;EACF,CAAC,CAAC,EACF,CACEd,aAAa,EACbM,YAAY,EACZC,YAAY,EACZG,eAAe,EACf1B,WAAW,EACXL,cAAc,EACdkC,YAAY,EACZC,cAAc,CAElB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAMU,gBAAgB,GAAG9F,WAAW,CACjC+F,CAAoD,IAAK;IACxD,SAAS;;IAET,MAAMC,SAAS,GAAGD,CAAC,CAACE,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAID,SAAS,KAAKX,aAAa,CAACI,KAAK,EAAE;MACrC,IAAIH,sBAAsB,CAACG,KAAK,KAAK,IAAI,EAAE;QACzCH,sBAAsB,CAACG,KAAK,GAAGM,CAAC,CAACG,SAAS;MAC5C,CAAC,MAAM,IACLC,IAAI,CAACC,GAAG,CAACL,CAAC,CAACG,SAAS,GAAGZ,sBAAsB,CAACG,KAAK,CAAC,IACpDF,eAAe,CAACE,KAAK,EACrB;QACAJ,aAAa,CAACI,KAAK,GAAGO,SAAS;QAC/BV,sBAAsB,CAACG,KAAK,GAAGM,CAAC,CAACG,SAAS;MAC5C;IACF;EACF,CAAC,EACD,CAACb,aAAa,EAAEC,sBAAsB,EAAEC,eAAe,CACzD,CAAC;EAED,MAAMc,yBAAyB,GAAGrG,WAAW,CAC1C+F,CAAoD,IAAK;IACxD,SAAS;;IAET,IAAIlC,sBAAsB,CAAC4B,KAAK,KAAK,IAAI,EAAE;MACzC,IAAIb,YAAY,CAACa,KAAK,IAAI,CAAC,EAAE;QAC3B,MAAMa,UAAU,GAAG9B,UAAU,CAACiB,KAAK,CAACb,YAAY,CAACa,KAAK,CAAC,GAAG,GAAG;QAC7D;QACA,MAAMc,KAAK,GACThC,UAAU,CAACkB,KAAK,CAACb,YAAY,CAACa,KAAK,CAAC,IACnC1B,qBAAqB,CAAC0B,KAAK,GAC1BrB,gCAAgC,CAACqB,KAAK,CAAC;QAE3C,MAAMA,KAAK,GAAGc,KAAK,GAAGD,UAAU,GAAGP,CAAC,CAACS,YAAY;QACjD1C,oBAAoB,CAAC2B,KAAK,GAAGA,KAAK;QAClC5B,sBAAsB,CAAC4B,KAAK,GAAGA,KAAK;MACtC;IACF,CAAC,MAAM;MACL5B,sBAAsB,CAAC4B,KAAK,GAC1B3B,oBAAoB,CAAC2B,KAAK,GAAGM,CAAC,CAACS,YAAY;IAC/C;EACF,CAAC,EACD,CACE3C,sBAAsB,EACtBe,YAAY,EACZd,oBAAoB,EACpBS,UAAU,EACVC,UAAU,EACVT,qBAAqB,EACrBK,gCAAgC,CAEpC,CAAC;EAED,MAAMqC,iBAAiB,GAAGvG,OAAO,CAC/B,MACEG,OAAO,CAACqG,GAAG,CAAC,CAAC,CACVC,OAAO,CAACZ,CAAC,IAAI;IACZ;IACA,IAAIjB,KAAK,CAACW,KAAK,KAAKnE,oBAAoB,CAACyD,IAAI,EAAE;MAC7CE,MAAM,CAACQ,KAAK,GAAGM,CAAC,CAACa,CAAC;MAClBjD,QAAQ,CAAC8B,KAAK,GAAGM,CAAC,CAACa,CAAC;MACpBhD,mBAAmB,CAAC6B,KAAK,GAAGM,CAAC,CAACS,YAAY;MAC1C7B,KAAK,CAACc,KAAK,GAAGM,CAAC,CAACS,YAAY;MAC5B/C,YAAY,CAACgC,KAAK,GAAGM,CAAC,CAACjB,KAAK;IAC9B;EACF,CAAC,CAAC,CACD+B,QAAQ,CAACd,CAAC,IAAI;IACb,IAAIjB,KAAK,CAACW,KAAK,KAAKnE,oBAAoB,CAACwF,OAAO,EAAE;MAChDhB,gBAAgB,CAACC,CAAC,CAAC;IACrB;IAEA,IAAIjB,KAAK,CAACW,KAAK,KAAKnE,oBAAoB,CAACyF,QAAQ,EAAE;MACjDV,yBAAyB,CAACN,CAAC,CAAC;MAE5BpC,QAAQ,CAAC8B,KAAK,GAAGR,MAAM,CAACQ,KAAK,GAAGM,CAAC,CAACS,YAAY;MAC9C5C,mBAAmB,CAAC6B,KAAK,GAAGM,CAAC,CAACS,YAAY;MAC1C7B,KAAK,CAACc,KAAK,GACTM,CAAC,CAACS,YAAY,GACdtC,sBAAsB,CAACuB,KAAK,GAC5BrB,gCAAgC,CAACqB,KAAK;MACxChC,YAAY,CAACgC,KAAK,GAAGM,CAAC,CAACjB,KAAK;IAC9B;EACF,CAAC,CAAC,CACDkC,KAAK,CAACjB,CAAC,IAAKtC,YAAY,CAACgC,KAAK,GAAGM,CAAC,CAACjB,KAAM,CAAC,CAC1CmC,UAAU,CAAClB,CAAC,IAAKtC,YAAY,CAACgC,KAAK,GAAGM,CAAC,CAACjB,KAAM,CAAC,EACpD,CACEA,KAAK,EACLG,MAAM,EACNtB,QAAQ,EACRC,mBAAmB,EACnBe,KAAK,EACLlB,YAAY,EACZS,sBAAsB,EACtBE,gCAAgC,EAChC0B,gBAAgB,EAChBO,yBAAyB,CAE7B,CAAC;EAED,MAAMa,4BAA4B,GAAGhH,OAAO,CAAC,MAAM;IACjD,IAAI,OAAOiD,yBAAyB,KAAK,QAAQ,EAAE;MACjDsD,iBAAiB,CAACU,sBAAsB,CAAChE,yBAAyB,CAAC;IACrE;IAEA,IAAI,CAACC,UAAU,EAAE;MACfqD,iBAAiB,CAACW,OAAO,CAAChE,UAAU,CAAC;IACvC;IAEA,OAAOqD,iBAAiB;EAC1B,CAAC,EAAE,CAACtD,yBAAyB,EAAEC,UAAU,EAAEqD,iBAAiB,CAAC,CAAC;EAE9D,MAAMY,cAAc,GAAGnH,OAAO,CAC5B,MAAMG,OAAO,CAACiH,YAAY,CAACjH,OAAO,CAACkH,MAAM,CAAC,CAAC,EAAEL,4BAA4B,CAAC,EAC1E,CAACA,4BAA4B,CAC/B,CAAC;EAED,MAAMM,gBAAgB,GAAGxH,WAAW,CACjCoH,OAAgB,IAAK;IACpB;IACA,IAAIrE,oBAAoB,EAAE;MAAA,IAAA0E,oBAAA;MACxBjE,aAAa,CAACiC,KAAK,GAAG2B,OAAO;MAC7B,CAAAK,oBAAA,GAAApE,WAAW,CAACqE,OAAO,cAAAD,oBAAA,eAAnBA,oBAAA,CAAqBE,cAAc,CAAC;QAACnE,aAAa,EAAE4D;MAAO,CAAC,CAAC;IAC/D;IAEA,IACE3E,sBAAsB,IACtBI,uBAAuB,IACvBG,8BAA8B,EAC9B;MAAA,IAAA4E,qBAAA;MACA/E,uBAAuB,CAAC4C,KAAK,GAAG2B,OAAO;MACvC,CAAAQ,qBAAA,GAAAnF,sBAAsB,CAACiF,OAAO,cAAAE,qBAAA,eAA9BA,qBAAA,CAAgCD,cAAc,CAAC;QAC7CnE,aAAa,EAAE4D;MACjB,CAAC,CAAC;IACJ;EACF,CAAC,EACD,CACErE,oBAAoB,EACpBM,WAAW,EACXG,aAAa,EACbR,8BAA8B,EAC9BP,sBAAsB,EACtBI,uBAAuB,CAE3B,CAAC;EAED,MAAMgF,iBAAiB,GAAG7H,WAAW,CAAC,MAAM;IAC1C,SAAS;;IAET8E,KAAK,CAACW,KAAK,GAAGnE,oBAAoB,CAACyD,IAAI;IACvCF,YAAY,CAACY,KAAK,GAAG,CAAC,CAAC;IACvBd,KAAK,CAACc,KAAK,GAAG,CAAC;IACfvB,sBAAsB,CAACuB,KAAK,GAAG,CAAC;IAChCrB,gCAAgC,CAACqB,KAAK,GAAG,CAAC;IAC1CJ,aAAa,CAACI,KAAK,GAAG,CAAC;IACvBH,sBAAsB,CAACG,KAAK,GAAG,IAAI;IACnC5B,sBAAsB,CAAC4B,KAAK,GAAG,IAAI;EACrC,CAAC,EAAE,CACDX,KAAK,EACLD,YAAY,EACZF,KAAK,EACLT,sBAAsB,EACtBE,gCAAgC,EAChCiB,aAAa,EACbC,sBAAsB,EACtBzB,sBAAsB,CACvB,CAAC;EAEF,MAAMiE,gCAAgC,GAAG9H,WAAW,CAAC,MAAM;IACzD+H,UAAU,CAACrH,OAAO,CAACmH,iBAAiB,CAAC,EAAE3C,QAAQ,CAACO,KAAK,CAAC;EACxD,CAAC,EAAE,CAACoC,iBAAiB,EAAE3C,QAAQ,CAAC,CAAC;EAEjC,MAAM8C,OAAO,GAAGA,CAACC,SAAiB,EAAEC,OAAe,KAAK;IACtDxH,OAAO,CAACmH,iBAAiB,CAAC,CAAC,CAAC;IAE5B,IAAII,SAAS,KAAKC,OAAO,EAAE;MACzB,MAAMC,WAAW,GAAGA,CAAA,KAAM;QACxB/F,SAAS,CAAC;UAACgG,IAAI,EAAEH,SAAS;UAAEI,EAAE,EAAEH;QAAO,CAAC,CAAC;MAC3C,CAAC;MAED,IAAI,CAACzG,oBAAoB,EAAE;QACzBrB,uBAAuB,CAAC+H,WAAW,CAAC;MACtC,CAAC,MAAM;QACLA,WAAW,CAAC,CAAC;MACf;IACF;EACF,CAAC;EAED,MAAMG,eAAe,GAAGtI,WAAW,CACjC,CAACoI,IAAY,EAAEC,EAAU,KAAK;IAC5B,SAAS;;IAET,MAAME,aAAa,GAAGF,EAAE,GAAGD,IAAI;IAC/B,MAAMI,MAAM,GAAGD,aAAa,GAAGH,IAAI,GAAGC,EAAE;IACxC,MAAMI,MAAM,GAAGF,aAAa,GAAGF,EAAE,GAAGD,IAAI;IAExC,MAAMM,UAAU,GAAGnE,UAAU,CAACkB,KAAK,CAAC+C,MAAM,CAAC;IAC3C,MAAMG,UAAU,GAAGnE,UAAU,CAACiB,KAAK,CAACgD,MAAM,CAAC;IAC3C,MAAMG,UAAU,GACdrE,UAAU,CAACkB,KAAK,CAACgD,MAAM,CAAC,GACxBjE,UAAU,CAACiB,KAAK,CAACgD,MAAM,CAAC,GACxBjE,UAAU,CAACiB,KAAK,CAAC+C,MAAM,CAAC;IAC1B,MAAMK,UAAU,GAAGrE,UAAU,CAACiB,KAAK,CAAC+C,MAAM,CAAC;IAE3CjE,UAAU,CAACkB,KAAK,CAAC+C,MAAM,CAAC,GAAGE,UAAU;IACrClE,UAAU,CAACiB,KAAK,CAAC+C,MAAM,CAAC,GAAGG,UAAU;IACrCpE,UAAU,CAACkB,KAAK,CAACgD,MAAM,CAAC,GAAGG,UAAU;IACrCpE,UAAU,CAACiB,KAAK,CAACgD,MAAM,CAAC,GAAGI,UAAU;EACvC,CAAC,EACD,CAACtE,UAAU,EAAEC,UAAU,CACzB,CAAC;;EAED;AACF;AACA;AACA;AACA;AACA;AACA;EACE,MAAMsE,mBAAmB,GAAG9I,WAAW,CAAC,MAAM;IAC5C,SAAS;;IAET,IAAI6D,sBAAsB,CAAC4B,KAAK,KAAK,IAAI,EAAE;MACzC,OAAOb,YAAY,CAACa,KAAK;IAC3B;;IAEA;IACA,MAAMsD,mBAAmB,GACvBhF,qBAAqB,CAAC0B,KAAK,GAC3BrB,gCAAgC,CAACqB,KAAK,GACtC5B,sBAAsB,CAAC4B,KAAK;IAE9B,MAAMuD,aAAa,GAAGzE,UAAU,CAACkB,KAAK,CAACb,YAAY,CAACa,KAAK,CAAC;IAC1D,MAAMwD,aAAa,GAAGzE,UAAU,CAACiB,KAAK,CAACb,YAAY,CAACa,KAAK,CAAC;IAC1D,MAAMyD,aAAa,GAAGF,aAAa,GAAGC,aAAa,GAAG,GAAG;IAEzD,MAAME,GAAG,GAAG5E,UAAU,CAACkB,KAAK,CAAC/D,MAAM;IACnC,MAAM0H,aAAa,GACjBL,mBAAmB,GAAGG,aAAa,GAC/B/C,IAAI,CAACgD,GAAG,CAAC,CAAC,EAAEvE,YAAY,CAACa,KAAK,GAAG,CAAC,CAAC,GACnCU,IAAI,CAACkD,GAAG,CAACF,GAAG,GAAG,CAAC,EAAEvE,YAAY,CAACa,KAAK,GAAG,CAAC,CAAC;IAE/C,IAAIb,YAAY,CAACa,KAAK,KAAK2D,aAAa,EAAE;MACxC,IAAIE,cAAc,GAAG/E,UAAU,CAACkB,KAAK,CAAC2D,aAAa,CAAC;MACpD,IAAIA,aAAa,GAAGxE,YAAY,CAACa,KAAK,EAAE;QACtC6D,cAAc,IAAI9E,UAAU,CAACiB,KAAK,CAAC2D,aAAa,CAAC,GAAGH,aAAa;MACnE;MAEA,MAAMM,cAAc,GAAGD,cAAc,GAAGL,aAAa,GAAG,GAAG;MAC3D,MAAMO,mBAAmB,GAAGrD,IAAI,CAACC,GAAG,CAAC2C,mBAAmB,GAAGG,aAAa,CAAC;MACzE,MAAMO,oBAAoB,GAAGtD,IAAI,CAACC,GAAG,CACnC2C,mBAAmB,GAAGQ,cACxB,CAAC;MAED,OAAOC,mBAAmB,IAAIC,oBAAoB,GAC9C7E,YAAY,CAACa,KAAK,GAClB2D,aAAa;IACnB;IAEA,OAAOxE,YAAY,CAACa,KAAK;EAC3B,CAAC,EAAE,CACDb,YAAY,EACZf,sBAAsB,EACtBU,UAAU,EACVC,UAAU,EACVT,qBAAqB,EACrBK,gCAAgC,CACjC,CAAC;EAEF,MAAMsF,eAAe,GAAG1J,WAAW,CAAC,MAAM;IACxC,SAAS;;IAET,MAAM2J,QAAQ,GAAGb,mBAAmB,CAAC,CAAC;IAEtC,IAAIlE,YAAY,CAACa,KAAK,KAAKkE,QAAQ,EAAE;MACnCrB,eAAe,CAAC1D,YAAY,CAACa,KAAK,EAAEkE,QAAQ,CAAC;MAC7C/E,YAAY,CAACa,KAAK,GAAGkE,QAAQ;MAE7BnH,aAAa,aAAbA,aAAa,eAAbA,aAAa,CAAG;QAACoH,KAAK,EAAED;MAAQ,CAAC,CAAC;IACpC;EACF,CAAC,EAAE,CAAC/E,YAAY,EAAEkE,mBAAmB,EAAER,eAAe,EAAE9F,aAAa,CAAC,CAAC;EAEvE,MAAMqH,wBAAwB,GAAG7J,WAAW,CACzC8J,IAAqB,IAAK;IACzB,SAAS;;IAET;IACA,IAAI,EAAE7G,cAAc,IAAI,WAAW,IAAIA,cAAc,CAAC,EAAE;MACtD,MAAM8G,WAAW,GAAG3I,8BAA8B,CAAC0I,IAAI,CAAC;MACxD3E,YAAY,CAACM,KAAK,GAAGvE,UAAU,CAAC6I,WAAW,CAACC,OAAO,EAAED,WAAW,CAAC;IACnE;;IAEA;IACA,IAAI,EAAE9G,cAAc,IAAI,SAAS,IAAIA,cAAc,CAAC,EAAE;MACpD,MAAMgH,aAAa,GAAG9I,gCAAgC,CAAC2I,IAAI,CAAC;MAC5D1E,cAAc,CAACK,KAAK,GAAGvE,UAAU,CAAC+I,aAAa,CAACD,OAAO,EAAEC,aAAa,CAAC;IACzE;EACF,CAAC,EACD,CAAChH,cAAc,EAAEkC,YAAY,EAAEC,cAAc,CAC/C,CAAC;EAEDxE,mBAAmB,CACjB,MAAM6C,YAAY,CAACgC,KAAK,EACxB,MAAM;IACJ,IACEhC,YAAY,CAACgC,KAAK,KAAKnF,KAAK,CAAC4J,MAAM,IACnCzG,YAAY,CAACgC,KAAK,KAAKnF,KAAK,CAAC6J,KAAK,KACjCrF,KAAK,CAACW,KAAK,KAAKnE,oBAAoB,CAACwF,OAAO,IAC3ChC,KAAK,CAACW,KAAK,KAAKnE,oBAAoB,CAAC8I,UAAU,CAAC,EAClD;MACAtF,KAAK,CAACW,KAAK,GAAGnE,oBAAoB,CAACyF,QAAQ;;MAE3C;MACAtG,OAAO,CAAC+G,gBAAgB,CAAC,CAAC,IAAI,CAAC;MAE/B,IAAItE,sBAAsB,EAAE;QAC1BzC,OAAO,CAAC8C,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;MAC7B;;MAEA;MACA,IAAIwC,CAAC,GAAG;QAACqC,IAAI,EAAEvD,YAAY,CAACY,KAAK;QAAE4C,EAAE,EAAEzD,YAAY,CAACa;MAAK,CAAC;MAC1DnD,SAAS,aAATA,SAAS,eAATA,SAAS,CAAGyD,CAAC,CAAC;MAEd,MAAMsE,QAAQ,GAAGrF,eAAe,CAACS,KAAK,CAACZ,YAAY,CAACY,KAAK,CAAC;MAC1D,IAAI6E,KAAK,CAACC,OAAO,CAACF,QAAQ,CAAC,EAAE;QAC3BA,QAAQ,CAACG,OAAO,CAACC,EAAE,IAAIA,EAAE,CAAC1E,CAAC,CAACqC,IAAI,EAAErC,CAAC,CAACsC,EAAE,CAAC,CAAC;MAC1C;;MAEA;MACA,MAAMqC,iBAAiB,GAAGnG,UAAU,CAACkB,KAAK,CAACZ,YAAY,CAACY,KAAK,CAAC;MAC9D,MAAMkF,iBAAiB,GAAGnG,UAAU,CAACiB,KAAK,CAACZ,YAAY,CAACY,KAAK,CAAC;MAC9D,MAAMmF,iBAAiB,GAAGrG,UAAU,CAACkB,KAAK,CAACb,YAAY,CAACa,KAAK,CAAC;MAC9D,MAAMoF,iBAAiB,GAAGrG,UAAU,CAACiB,KAAK,CAACb,YAAY,CAACa,KAAK,CAAC;MAE9D,MAAMqF,cAAc,GAClBlG,YAAY,CAACa,KAAK,GAAGZ,YAAY,CAACY,KAAK,GACnCmF,iBAAiB,GAAGF,iBAAiB,GACrCE,iBAAiB,GACjBF,iBAAiB,IAChBG,iBAAiB,GAAGF,iBAAiB,CAAC;MAE7Cd,wBAAwB,CAAC,KAAK,CAAC;MAE/B,IAAIlF,KAAK,CAACc,KAAK,KAAKqF,cAAc,EAAE;QAClC;QACAnG,KAAK,CAACc,KAAK,GAAGvE,UAAU,CACtB4J,cAAc,EACd;UACE5F,QAAQ,EAAEA,QAAQ,CAACO,KAAK;UACxBsF,MAAM,EAAExK,MAAM,CAACyK,GAAG,CAACzK,MAAM,CAAC0K,IAAI;QAChC,CAAC,EACD,MAAM;UACJxK,OAAO,CAACuH,OAAO,CAAC,CAACnD,YAAY,CAACY,KAAK,EAAEb,YAAY,CAACa,KAAK,CAAC;QAC1D,CACF,CAAC;MACH,CAAC,MAAM;QACL;QACA;QACA;QACAhF,OAAO,CAACqH,gCAAgC,CAAC,CAAC,CAAC;MAC7C;IACF;EACF,CACF,CAAC;EAED,MAAMoD,iBAAiB,GAAGlL,WAAW,CAAC,MAAM;IAC1C,SAAS;;IACT,IAAI,CAAC4C,uBAAuB,IAAI,CAACD,iBAAiB,EAAE;MAClD,OAAO;QAACwI,GAAG,EAAE,CAAC;QAAEC,MAAM,EAAE;MAAC,CAAC;IAC5B;;IAEA;IACA,MAAMD,GAAG,GAAGhF,IAAI,CAACgD,GAAG,CAClB,CAAC,EACDvG,uBAAuB,CAAC6C,KAAK,GAAGD,uBAAuB,CAACC,KAC1D,CAAC;IACD,MAAM2F,MAAM,GAAGjF,IAAI,CAACgD,GAAG,CACrB,CAAC,EACD3D,uBAAuB,CAACC,KAAK,GAC3BzB,eAAe,CAACyB,KAAK,IACpB7C,uBAAuB,CAAC6C,KAAK,GAAG9C,iBAAiB,CAAC8C,KAAK,CAC5D,CAAC;IAED,OAAO;MAAC0F,GAAG;MAAEC;IAAM,CAAC;EACtB,CAAC,EAAE,CACDxI,uBAAuB,EACvBD,iBAAiB,EACjB6C,uBAAuB,EACvBxB,eAAe,CAChB,CAAC;EAEF,MAAMqH,oBAAoB,GAAGrL,WAAW,CAAC,MAAM;IAC7C,SAAS;;IAET,MAAMsL,UAAU,GAAGJ,iBAAiB,CAAC,CAAC;IAEtC,MAAMK,SAAS,GAAGpF,IAAI,CAACgD,GAAG,CAAC,CAAC,EAAE,CAAApH,yBAAyB,aAAzBA,yBAAyB,uBAAzBA,yBAAyB,CAAEoJ,GAAG,KAAI,CAAC,CAAC;IAClE,MAAMK,YAAY,GAAGrF,IAAI,CAACgD,GAAG,CAAC,CAAC,EAAE,CAAApH,yBAAyB,aAAzBA,yBAAyB,uBAAzBA,yBAAyB,CAAEqJ,MAAM,KAAI,CAAC,CAAC;IACxE,MAAMK,SAAS,GAAGtF,IAAI,CAACgD,GAAG,CAAC,CAAC,EAAEhD,IAAI,CAACkD,GAAG,CAACvH,mBAAmB,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM4J,aAAa,GACjB1H,eAAe,CAACyB,KAAK,IACpB6F,UAAU,CAACH,GAAG,GAAGG,UAAU,CAACF,MAAM,CAAC,IACnCG,SAAS,GAAGC,YAAY,CAAC;IAE5B,MAAMG,IAAI,GAAGD,aAAa,GAAGD,SAAS;IACtC,MAAMN,GAAG,GAAGQ,IAAI,GAAGJ,SAAS;IAC5B,MAAMH,MAAM,GAAGpH,eAAe,CAACyB,KAAK,GAAGkG,IAAI,GAAGH,YAAY;IAE1D,OAAO;MAACL,GAAG;MAAEC;IAAM,CAAC;EACtB,CAAC,EAAE,CACDF,iBAAiB,EACjBpJ,mBAAmB,EACnBC,yBAAyB,EACzBiC,eAAe,CAChB,CAAC;EAEF,MAAM4H,6BAA6B,GAAG5L,WAAW,CAAC,MAAM;IACtD,SAAS;;IACT,IAAI,CAAC2C,iBAAiB,EAAE;MACtB,OAAO;QAACwI,GAAG,EAAE,CAACU,QAAQ;QAAET,MAAM,EAAES;MAAQ,CAAC;IAC3C;IAEA,MAAMN,SAAS,GAAGpF,IAAI,CAACgD,GAAG,CAAC,CAAC,EAAE,CAAApH,yBAAyB,aAAzBA,yBAAyB,uBAAzBA,yBAAyB,CAAEoJ,GAAG,KAAI,CAAC,CAAC;IAClE,MAAMK,YAAY,GAAGrF,IAAI,CAACgD,GAAG,CAAC,CAAC,EAAE,CAAApH,yBAAyB,aAAzBA,yBAAyB,uBAAzBA,yBAAyB,CAAEqJ,MAAM,KAAI,CAAC,CAAC;IACxE,MAAMK,SAAS,GAAGtF,IAAI,CAACgD,GAAG,CAAC,CAAC,EAAEhD,IAAI,CAACkD,GAAG,CAACvH,mBAAmB,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM4J,aAAa,GAAG/I,iBAAiB,CAAC8C,KAAK,IAAI8F,SAAS,GAAGC,YAAY,CAAC;IAE1E,MAAMG,IAAI,GAAGD,aAAa,GAAGD,SAAS;IACtC,MAAMN,GAAG,GAAGQ,IAAI,GAAGJ,SAAS;IAC5B,MAAMH,MAAM,GAAGM,aAAa,GAAGC,IAAI,GAAGH,YAAY;IAElD,OAAO;MAACL,GAAG;MAAEC;IAAM,CAAC;EACtB,CAAC,EAAE,CAACtJ,mBAAmB,EAAEC,yBAAyB,EAAEY,iBAAiB,CAAC,CAAC;EAEvE,MAAMmJ,qBAAqB,GAAG9L,WAAW,CACtC4G,CAAS,IAAK;IACb,SAAS;;IACT,MAAMmF,sBAAsB,GAAGH,6BAA6B,CAAC,CAAC;IAC9D,MAAMI,oBAAoB,GAAGd,iBAAiB,CAAC,CAAC;;IAEhD;IACA;IACA,OACGc,oBAAoB,CAACb,GAAG,GAAG,IAAI,IAAIvE,CAAC,IAAImF,sBAAsB,CAACZ,GAAG,IAClEa,oBAAoB,CAACZ,MAAM,GAAG,IAAI,IACjCxE,CAAC,IAAImF,sBAAsB,CAACX,MAAO;EAEzC,CAAC,EACD,CAACF,iBAAiB,EAAEU,6BAA6B,CACnD,CAAC;EAED,MAAMK,qBAAqB,GAAGjM,WAAW,CAAC,MAAM;IAC9C,SAAS;;IAET,OACE2D,QAAQ,CAAC8B,KAAK,GACdD,uBAAuB,CAACC,KAAK,GAC7BpB,kCAAkC,CAACoB,KAAK;EAE5C,CAAC,EAAE,CAAC9B,QAAQ,EAAE6B,uBAAuB,EAAEnB,kCAAkC,CAAC,CAAC;EAE3E,MAAM6H,gBAAgB,GAAGlM,WAAW,CAAC,MAAM;IACzC,SAAS;;IAET,OAAO2D,QAAQ,CAAC8B,KAAK,GAAGrB,gCAAgC,CAACqB,KAAK;EAChE,CAAC,EAAE,CAAC9B,QAAQ,EAAES,gCAAgC,CAAC,CAAC;EAEhD,MAAM+H,eAAe,GAAGnM,WAAW,CAAC,MAAM;IACxC,SAAS;;IAET,MAAMoM,kBAAkB,GAAGH,qBAAqB,CAAC,CAAC;IAClD,IAAIH,qBAAqB,CAACM,kBAAkB,CAAC,EAAE;MAC7C,MAAML,sBAAsB,GAAGH,6BAA6B,CAAC,CAAC;MAC9D,IAAIQ,kBAAkB,IAAIL,sBAAsB,CAACZ,GAAG,EAAE;QACpD,OAAO,CAAC,CAAC;MACX;MAEA,IAAIiB,kBAAkB,IAAIL,sBAAsB,CAACX,MAAM,EAAE;QACvD,OAAO,CAAC;MACV;IACF,CAAC,MAAM,IAAItI,UAAU,EAAE;MACrB,MAAMuJ,aAAa,GAAGH,gBAAgB,CAAC,CAAC;MACxC,MAAMI,aAAa,GAAGjB,oBAAoB,CAAC,CAAC;MAE5C,IAAIgB,aAAa,IAAIC,aAAa,CAACnB,GAAG,EAAE;QACtC,OAAO,CAAC,CAAC;MACX;MAEA,IAAIkB,aAAa,IAAIC,aAAa,CAAClB,MAAM,EAAE;QACzC,OAAO,CAAC;MACV;IACF;IAEA,OAAO,CAAC;EACV,CAAC,EAAE,CACDU,qBAAqB,EACrBT,oBAAoB,EACpBO,6BAA6B,EAC7BK,qBAAqB,EACrBC,gBAAgB,EAChBpJ,UAAU,CACX,CAAC;EAEFlC,mBAAmB,CACjB,MAAM+C,QAAQ,CAAC8B,KAAK,EACpB,MAAM;IACJ,IACEX,KAAK,CAACW,KAAK,KAAKnE,oBAAoB,CAACwF,OAAO,IAC5ChC,KAAK,CAACW,KAAK,KAAKnE,oBAAoB,CAAC8I,UAAU,EAC/C;MACAV,eAAe,CAAC,CAAC;;MAEjB;MACA;MACA;MACA;MACA,IAAIrE,aAAa,CAACI,KAAK,KAAK0G,eAAe,CAAC,CAAC,EAAE;QAC7C;QACA,IAAIrH,KAAK,CAACW,KAAK,KAAKnE,oBAAoB,CAAC8I,UAAU,EAAE;UACnDtF,KAAK,CAACW,KAAK,GAAGnE,oBAAoB,CAAC8I,UAAU;UAC7C1F,qBAAqB,CAACe,KAAK,GAAGhB,iBAAiB,CAACgB,KAAK;UACrDhB,iBAAiB,CAACgB,KAAK,IAAI,CAAC,CAAC;QAC/B;MACF,CAAC,MAAM,IAAIX,KAAK,CAACW,KAAK,KAAKnE,oBAAoB,CAAC8I,UAAU,EAAE;QAC1DtF,KAAK,CAACW,KAAK,GAAGnE,oBAAoB,CAACwF,OAAO;MAC5C;IACF;EACF,CACF,CAAC;EAEDlG,mBAAmB,CACjB,MAAM6D,iBAAiB,CAACgB,KAAK,EAC7B,MAAM;IACJ,IACEhB,iBAAiB,CAACgB,KAAK,KAAKf,qBAAqB,CAACe,KAAK,IACvDX,KAAK,CAACW,KAAK,KAAKnE,oBAAoB,CAAC8I,UAAU,EAC/C;MACA,MAAMmC,mBAAmB,GACvBlH,aAAa,CAACI,KAAK,GACnBpE,iBAAiB,CAACmL,SAAS,GAC3BxK,oBAAoB;MAEtB,IAAIuK,mBAAmB,KAAK,CAAC,EAAE;QAC7B,IAAIE,YAAY,GAAG1I,qBAAqB,CAAC0B,KAAK;QAC9C,IAAIiH,OAAO,GACTrJ,WAA0D;;QAE5D;QACA;QACA;QACA,IACET,uBAAuB,IACvBkJ,qBAAqB,CAACG,qBAAqB,CAAC,CAAC,CAAC,EAC9C;UACAQ,YAAY,GAAG7J,uBAAuB,CAAC6C,KAAK;UAC5CiH,OAAO,GACLjK,sBAAqE;QACzE;QAEA9B,QAAQ,CAAC+L,OAAO,EAAE,CAAC,EAAED,YAAY,GAAGF,mBAAmB,EAAE,IAAI,CAAC;MAChE;;MAEA;MACA;MACA7C,eAAe,CAAC,CAAC;IACnB;EACF,CACF,CAAC;;EAED;EACA,MAAMiD,YAAY,GAAG7L,wBAAwB,CAACiF,CAAC,IAAI;IACjDhC,qBAAqB,CAAC0B,KAAK,GAAGM,CAAC,CAAC6G,aAAa,CAAChG,CAAC;;IAE/C;IACA;IACA;IACA,IAAI,CAACpD,aAAa,CAACiC,KAAK,EAAE;MACxBvB,sBAAsB,CAACuB,KAAK,GAC1B1B,qBAAqB,CAAC0B,KAAK,GAAGtB,wBAAwB,CAACsB,KAAK;IAChE;IAEA,IAAIX,KAAK,CAACW,KAAK,KAAKnE,oBAAoB,CAAC8I,UAAU,EAAE;MACnDzF,KAAK,CAACc,KAAK,GACT7B,mBAAmB,CAAC6B,KAAK,GACzBvB,sBAAsB,CAACuB,KAAK,GAC5BrB,gCAAgC,CAACqB,KAAK;MAExCf,qBAAqB,CAACe,KAAK,GAAGhB,iBAAiB,CAACgB,KAAK;MACrDhB,iBAAiB,CAACgB,KAAK,GAAGxE,SAAS,CACjCgB,eAAe,EACff,UAAU,CAACuD,iBAAiB,CAACgB,KAAK,GAAG,CAAC,CAAC,EAAE;QAACP,QAAQ,EAAE;MAAC,CAAC,CACxD,CAAC;IACH;EACF,CAAC,CAAC;;EAEF;EACAtE,mBAAmB,CACjB,MAAMgC,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAE6C,KAAK,EACpCA,KAAK,IAAI;IACP,IAAIA,KAAK,IAAI5C,uBAAuB,EAAE;MACpC;MACA;MACA,IAAI,CAACA,uBAAuB,CAAC4C,KAAK,EAAE;QAClCrB,gCAAgC,CAACqB,KAAK,GACpCA,KAAK,GAAGpB,kCAAkC,CAACoB,KAAK;MACpD;MAEA,IAAIX,KAAK,CAACW,KAAK,KAAKnE,oBAAoB,CAAC8I,UAAU,EAAE;QACnDzF,KAAK,CAACc,KAAK,GACT7B,mBAAmB,CAAC6B,KAAK,GAAGrB,gCAAgC,CAACqB,KAAK;QAEpEf,qBAAqB,CAACe,KAAK,GAAGhB,iBAAiB,CAACgB,KAAK;QACrDhB,iBAAiB,CAACgB,KAAK,GAAGxE,SAAS,CACjCgB,eAAe,EACff,UAAU,CAACuD,iBAAiB,CAACgB,KAAK,GAAG,CAAC,CAAC,EAAE;UAACP,QAAQ,EAAE;QAAC,CAAC,CACxD,CAAC;MACH;IACF;EACF,CACF,CAAC;EAED,MAAM2H,SAAS,GAAG7M,WAAW,CAC1B4J,KAAa,IAAK;IACjB,SAAS;;IAET;IACA,IAAI9E,KAAK,CAACW,KAAK,KAAKnE,oBAAoB,CAACyD,IAAI,EAAE;MAC7C;MACA;MACA8C,iBAAiB,CAAC,CAAC;MAEnB,IAAI3E,sBAAsB,EAAE;QAC1BzC,OAAO,CAAC8C,cAAc,CAAC,CAACqG,KAAK,CAAC;MAChC;MAEAzF,wBAAwB,CAACsB,KAAK,GAAG1B,qBAAqB,CAAC0B,KAAK;MAC5DpB,kCAAkC,CAACoB,KAAK,GACtC,CAAA7C,uBAAuB,aAAvBA,uBAAuB,uBAAvBA,uBAAuB,CAAE6C,KAAK,KAAI,CAAC;MAErCnB,aAAa,CAACmB,KAAK,GAAGjB,UAAU,CAACiB,KAAK,CAACmE,KAAK,CAAC;MAC7C/E,YAAY,CAACY,KAAK,GAAGmE,KAAK;MAC1BhF,YAAY,CAACa,KAAK,GAAGmE,KAAK;MAC1B9E,KAAK,CAACW,KAAK,GAAGnE,oBAAoB,CAACwF,OAAO;MAE1CrG,OAAO,CAAC+G,gBAAgB,CAAC,CAAC,KAAK,CAAC;;MAEhC;MACAqC,wBAAwB,CAAC,OAAO,CAAC;MACjCxH,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAG;QAACuH;MAAK,CAAC,CAAC;IACxB;EACF,CAAC,EACD,CACE/B,iBAAiB,EACjB3E,sBAAsB,EACtBiB,wBAAwB,EACxBvB,uBAAuB,EACvByB,kCAAkC,EAClCmD,gBAAgB,EAChB5C,YAAY,EACZN,aAAa,EACbO,YAAY,EACZC,KAAK,EACLf,qBAAqB,EACrBS,UAAU,EACVnC,WAAW,EACXwH,wBAAwB,CAE5B,CAAC;EAED,MAAMiD,oBAAoB,GAAG9M,WAAW,CACrC+F,CAAoB,IAAK;IACxB/B,eAAe,CAACyB,KAAK,GAAGM,CAAC,CAACgH,WAAW,CAACC,MAAM,CAACC,MAAM;;IAEnD;IACA,IAAIrK,uBAAuB,EAAE;MAC3B;MACAmF,UAAU,CAAC,MAAM;QACfrH,OAAO,CAAC,MAAM;UACZ,MAAMwM,WAAW,GAAG1M,OAAO,CAAC6C,WAAW,CAAC;UACxC,IAAI,CAAC6J,WAAW,EAAE;YAChB;UACF;UAEAjJ,aAAa,CAACwB,KAAK,GAAGyH,WAAW,CAACC,KAAK;QACzC,CAAC,CAAC,CAAC,CAAC;MACN,CAAC,EAAE,GAAG,CAAC;IACT;IAEA5K,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAGwD,CAAC,CAAC;EACf,CAAC,EACD,CACE1C,WAAW,EACXY,aAAa,EACbD,eAAe,EACfpB,uBAAuB,EACvBL,QAAQ,CAEZ,CAAC;EAED,MAAM6K,SAAS,GAAI3H,KAAkB,IAAK;IACxCpC,WAAW,CAACoC,KAAK,CAAC;IAElB,IAAI,OAAO5D,GAAG,KAAK,UAAU,EAAE;MAC7BA,GAAG,CAAC4D,KAAK,CAAC;IACZ,CAAC,MAAM,IAAI5D,GAAG,EAAE;MACdA,GAAG,CAAC6F,OAAO,GAAGjC,KAAK;IACrB;EACF,CAAC;EAED,OAAO;IACL4B,cAAc;IACdsF,YAAY;IACZG,oBAAoB;IACpBM,SAAS;IACTP,SAAS;IACTnH,gBAAgB;IAChBnB,UAAU;IACVC,UAAU;IACVK,YAAY;IACZF,KAAK;IACLO;EACF,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
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); }
|
|
2
|
-
import React, { useMemo } from 'react';
|
|
2
|
+
import React, { useCallback, useMemo } from 'react';
|
|
3
3
|
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
4
|
-
import Animated, { useAnimatedRef, useAnimatedScrollHandler, useComposedEventHandler, useSharedValue } from 'react-native-reanimated';
|
|
4
|
+
import Animated, { measure, runOnUI, useAnimatedRef, useAnimatedScrollHandler, useComposedEventHandler, useSharedValue } from 'react-native-reanimated';
|
|
5
5
|
import { ScrollViewContainerContext } from '../contexts/ScrollViewContainerContext';
|
|
6
6
|
export const ScrollViewContainer = ({
|
|
7
7
|
onLayout,
|
|
@@ -12,6 +12,7 @@ export const ScrollViewContainer = ({
|
|
|
12
12
|
const scrollViewScrollEnabled = useSharedValue(scrollEnabled);
|
|
13
13
|
const scrollViewContainerRef = useAnimatedRef();
|
|
14
14
|
const scrollViewScrollOffsetY = useSharedValue(0);
|
|
15
|
+
const scrollViewPageY = useSharedValue(0);
|
|
15
16
|
const scrollViewHeightY = useSharedValue(0);
|
|
16
17
|
const outerScrollGesture = useMemo(() => Gesture.Native(), []);
|
|
17
18
|
const handleScroll = useAnimatedScrollHandler(e => {
|
|
@@ -20,16 +21,26 @@ export const ScrollViewContainer = ({
|
|
|
20
21
|
const composedScrollHandler = useComposedEventHandler([handleScroll, onScroll || null]);
|
|
21
22
|
const contextValue = useMemo(() => ({
|
|
22
23
|
scrollViewContainerRef,
|
|
24
|
+
scrollViewPageY,
|
|
23
25
|
scrollViewHeightY,
|
|
24
26
|
scrollViewScrollOffsetY,
|
|
25
27
|
scrollViewScrollEnabled,
|
|
26
28
|
outerScrollGesture,
|
|
27
29
|
initialScrollViewScrollEnabled: scrollEnabled
|
|
28
|
-
}), [scrollViewContainerRef, scrollViewHeightY, scrollViewScrollOffsetY, scrollViewScrollEnabled, outerScrollGesture, scrollEnabled]);
|
|
29
|
-
const handleLayout = e => {
|
|
30
|
+
}), [scrollViewContainerRef, scrollViewPageY, scrollViewHeightY, scrollViewScrollOffsetY, scrollViewScrollEnabled, outerScrollGesture, scrollEnabled]);
|
|
31
|
+
const handleLayout = useCallback(e => {
|
|
30
32
|
scrollViewHeightY.value = e.nativeEvent.layout.height;
|
|
33
|
+
|
|
34
|
+
// measuring pageY allows wrapping nested lists in other views
|
|
35
|
+
runOnUI(() => {
|
|
36
|
+
const measurement = measure(scrollViewContainerRef);
|
|
37
|
+
if (!measurement) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
scrollViewPageY.value = measurement.pageY;
|
|
41
|
+
})();
|
|
31
42
|
onLayout === null || onLayout === void 0 || onLayout(e);
|
|
32
|
-
};
|
|
43
|
+
}, [onLayout, scrollViewContainerRef, scrollViewHeightY, scrollViewPageY]);
|
|
33
44
|
return /*#__PURE__*/React.createElement(ScrollViewContainerContext.Provider, {
|
|
34
45
|
value: contextValue
|
|
35
46
|
}, /*#__PURE__*/React.createElement(GestureDetector, {
|