@tamagui/sheet 2.3.2 → 2.3.3-1782462397214

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/cjs/SheetImplementationCustom.cjs +36 -28
  3. package/dist/cjs/SheetImplementationCustom.native.js +40 -32
  4. package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
  5. package/dist/cjs/SheetScrollView.cjs +34 -15
  6. package/dist/cjs/SheetScrollView.native.js +36 -16
  7. package/dist/cjs/SheetScrollView.native.js.map +1 -1
  8. package/dist/cjs/useGestureHandlerPan.cjs +61 -8
  9. package/dist/cjs/useGestureHandlerPan.native.js +64 -8
  10. package/dist/cjs/useGestureHandlerPan.native.js.map +1 -1
  11. package/dist/esm/SheetImplementationCustom.mjs +37 -31
  12. package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
  13. package/dist/esm/SheetImplementationCustom.native.js +41 -35
  14. package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
  15. package/dist/esm/SheetScrollView.mjs +34 -15
  16. package/dist/esm/SheetScrollView.mjs.map +1 -1
  17. package/dist/esm/SheetScrollView.native.js +36 -16
  18. package/dist/esm/SheetScrollView.native.js.map +1 -1
  19. package/dist/esm/useGestureHandlerPan.mjs +62 -9
  20. package/dist/esm/useGestureHandlerPan.mjs.map +1 -1
  21. package/dist/esm/useGestureHandlerPan.native.js +65 -9
  22. package/dist/esm/useGestureHandlerPan.native.js.map +1 -1
  23. package/dist/jsx/SheetImplementationCustom.mjs +37 -31
  24. package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
  25. package/dist/jsx/SheetImplementationCustom.native.js +40 -32
  26. package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
  27. package/dist/jsx/SheetScrollView.mjs +34 -15
  28. package/dist/jsx/SheetScrollView.mjs.map +1 -1
  29. package/dist/jsx/SheetScrollView.native.js +36 -16
  30. package/dist/jsx/SheetScrollView.native.js.map +1 -1
  31. package/dist/jsx/useGestureHandlerPan.mjs +62 -9
  32. package/dist/jsx/useGestureHandlerPan.mjs.map +1 -1
  33. package/dist/jsx/useGestureHandlerPan.native.js +64 -8
  34. package/dist/jsx/useGestureHandlerPan.native.js.map +1 -1
  35. package/package.json +20 -20
  36. package/src/SheetImplementationCustom.tsx +54 -46
  37. package/src/SheetScrollView.tsx +30 -11
  38. package/src/types.tsx +3 -0
  39. package/src/useGestureHandlerPan.tsx +64 -10
  40. package/types/SheetImplementationCustom.d.ts.map +1 -1
  41. package/types/SheetScrollView.d.ts.map +1 -1
  42. package/types/types.d.ts +1 -0
  43. package/types/types.d.ts.map +1 -1
  44. package/types/useGestureHandlerPan.d.ts.map +1 -1
@@ -1,8 +1,9 @@
1
1
  import { isWeb } from "@tamagui/constants";
2
- import { useCallback, useMemo, useRef } from "react";
2
+ import { useCallback, useEffect, useMemo, useRef } from "react";
3
3
  import { getGestureHandlerState, isGestureHandlerEnabled } from "./gestureState.mjs";
4
4
  import { getSheetReleasePosition } from "./keyboardAvoidance.mjs";
5
5
  const AT_TOP_THRESHOLD = 5;
6
+ const SCROLL_HANDOFF_THRESHOLD = 160;
6
7
  function useGestureHandlerPan(config) {
7
8
  const {
8
9
  positions,
@@ -47,15 +48,41 @@ function useGestureHandlerPan(config) {
47
48
  frozenMinY: 0,
48
49
  frozenIsKeyboardVisible: false,
49
50
  // whether pan gesture actually started (vs just a tap in onBegin)
50
- panStarted: false
51
+ panStarted: false,
52
+ startedBelowTop: false,
53
+ upwardDragAfterTop: 0,
54
+ scrollUnlockedAfterTop: false,
55
+ keepScrollLockedAfterEnd: false
51
56
  });
57
+ const unlockScrollTimer = useRef(null);
58
+ useEffect(() => {
59
+ return () => {
60
+ if (unlockScrollTimer.current) {
61
+ clearTimeout(unlockScrollTimer.current);
62
+ unlockScrollTimer.current = null;
63
+ }
64
+ };
65
+ }, []);
52
66
  const onStart = useCallback(() => {
53
67
  stopSpring();
54
68
  }, [stopSpring]);
55
- const onEnd = useCallback((closestPoint, animationOverride) => {
69
+ const onEnd = useCallback((closestPoint, animationOverride, keepScrollLocked = false) => {
70
+ if (unlockScrollTimer.current) {
71
+ clearTimeout(unlockScrollTimer.current);
72
+ unlockScrollTimer.current = null;
73
+ }
56
74
  setIsDragging(false);
57
75
  scrollBridge.setParentDragging(false);
58
- scrollBridge.setScrollEnabled?.(true);
76
+ scrollBridge.lockScrollAtTop = false;
77
+ if (keepScrollLocked) {
78
+ scrollBridge.setScrollEnabled?.(false, 0);
79
+ unlockScrollTimer.current = setTimeout(() => {
80
+ unlockScrollTimer.current = null;
81
+ scrollBridge.setScrollEnabled?.(true);
82
+ }, 160);
83
+ } else {
84
+ scrollBridge.setScrollEnabled?.(true);
85
+ }
59
86
  setPosition(closestPoint);
60
87
  animateTo(closestPoint, animationOverride);
61
88
  }, [setIsDragging, scrollBridge, setPosition, animateTo]);
@@ -87,6 +114,15 @@ function useGestureHandlerPan(config) {
87
114
  gs.frozenPositions = [...positions];
88
115
  gs.frozenMinY = minY;
89
116
  gs.frozenIsKeyboardVisible = releaseConfigRef.current.isKeyboardVisible;
117
+ gs.startedBelowTop = !atTop;
118
+ gs.upwardDragAfterTop = 0;
119
+ gs.scrollUnlockedAfterTop = false;
120
+ gs.keepScrollLockedAfterEnd = false;
121
+ scrollBridge.lockScrollAtTop = false;
122
+ if (unlockScrollTimer.current) {
123
+ clearTimeout(unlockScrollTimer.current);
124
+ unlockScrollTimer.current = null;
125
+ }
90
126
  if (!atTop) {
91
127
  scrollBridge.setScrollEnabled?.(false, 0);
92
128
  }
@@ -128,13 +164,24 @@ function useGestureHandlerPan(config) {
128
164
  }
129
165
  } else {
130
166
  if (hasScrollableContent) {
131
- panHandles = false;
167
+ if (gs.startedBelowTop && !gs.scrollUnlockedAfterTop) {
168
+ gs.upwardDragAfterTop += Math.max(0, -deltaY);
169
+ if (gs.upwardDragAfterTop >= SCROLL_HANDOFF_THRESHOLD) {
170
+ gs.scrollUnlockedAfterTop = true;
171
+ panHandles = false;
172
+ } else {
173
+ panHandles = true;
174
+ }
175
+ } else {
176
+ panHandles = false;
177
+ }
132
178
  } else {
133
179
  panHandles = true;
134
180
  }
135
181
  }
136
182
  }
137
183
  if (panHandles) {
184
+ scrollBridge.lockScrollAtTop = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;
138
185
  const lockTo = isCurrentlyAtTop && isSwipingDown && gs.scrollEngaged ? void 0 : 0;
139
186
  scrollBridge.setScrollEnabled?.(false, lockTo);
140
187
  gs.accumulatedOffset += deltaY;
@@ -143,18 +190,23 @@ function useGestureHandlerPan(config) {
143
190
  setAnimatedPosition(newPosition);
144
191
  scrollBridge.setParentDragging(newPosition > minY);
145
192
  } else {
193
+ scrollBridge.lockScrollAtTop = false;
146
194
  scrollBridge.setScrollEnabled?.(true);
195
+ scrollBridge.setParentDragging(false);
147
196
  }
148
197
  }).onEnd(event => {
149
198
  const {
150
199
  velocityY
151
200
  } = event;
152
201
  const currentPos = gs.startY + gs.accumulatedOffset;
153
- scrollBridge.scrollLockY = void 0;
202
+ const keepScrollLockedAfterEnd = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;
203
+ scrollBridge.lockScrollAtTop = false;
204
+ scrollBridge.scrollLockY = keepScrollLockedAfterEnd ? 0 : void 0;
205
+ gs.keepScrollLockedAfterEnd = keepScrollLockedAfterEnd;
154
206
  const snapPositions = gs.frozenPositions.length > 0 ? gs.frozenPositions : positions;
155
207
  const snapMinY = gs.frozenPositions.length > 0 ? gs.frozenMinY : minY;
156
208
  if (currentPos <= snapMinY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
157
- onEnd(0);
209
+ onEnd(0, void 0, keepScrollLockedAfterEnd);
158
210
  return;
159
211
  }
160
212
  const velocity = velocityY / 1e3;
@@ -170,9 +222,10 @@ function useGestureHandlerPan(config) {
170
222
  isKeyboardVisible: gs.frozenIsKeyboardVisible,
171
223
  isWeb
172
224
  });
173
- onEnd(closestPoint);
225
+ onEnd(closestPoint, void 0, keepScrollLockedAfterEnd);
174
226
  }).onFinalize(() => {
175
- scrollBridge.scrollLockY = void 0;
227
+ scrollBridge.lockScrollAtTop = false;
228
+ scrollBridge.scrollLockY = gs.keepScrollLockedAfterEnd ? 0 : void 0;
176
229
  if (gs.panStarted) {
177
230
  setIsDragging(false);
178
231
  } else {
@@ -1 +1 @@
1
- {"version":3,"names":["isWeb","useCallback","useMemo","useRef","getGestureHandlerState","isGestureHandlerEnabled","getSheetReleasePosition","AT_TOP_THRESHOLD","useGestureHandlerPan","config","positions","frameSize","setPosition","animateTo","stopSpring","scrollBridge","setIsDragging","getCurrentPosition","resisted","disableDrag","isShowingInnerSheet","setAnimatedPosition","scrollGestureRef","gestureHandlerEnabled","panGestureRef","releaseConfigRef","dismissOnSnapToBottom","snapPointsMode","isKeyboardVisible","current","gestureStateRef","startY","lastPanTranslationY","accumulatedOffset","prevTranslationY","scrollEngaged","frozenPositions","frozenMinY","frozenIsKeyboardVisible","panStarted","onStart","onEnd","closestPoint","animationOverride","setParentDragging","setScrollEnabled","panGesture","Gesture","minY","gs","gesture","Pan","withRef","activeOffsetY","failOffsetX","shouldCancelWhenOutside","onBegin","pauseKeyboardHandler","pos","atTop","currentScrollY","y","initialPosition","onChange","event","translationY","isSwipingDown","deltaY","scrollY","currentPos","isCurrentlyAtTop","nodeIsScrolling","panHandles","hasScrollableContent","lockTo","newPosition","paneY","velocityY","scrollLockY","snapPositions","length","snapMinY","velocity","projectedEnd","releaseConfig","currentPosition","onFinalize","runOnJS","simultaneousWithExternalGesture"],"sources":["../../src/useGestureHandlerPan.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isWeb","useCallback","useEffect","useMemo","useRef","getGestureHandlerState","isGestureHandlerEnabled","getSheetReleasePosition","AT_TOP_THRESHOLD","SCROLL_HANDOFF_THRESHOLD","useGestureHandlerPan","config","positions","frameSize","setPosition","animateTo","stopSpring","scrollBridge","setIsDragging","getCurrentPosition","resisted","disableDrag","isShowingInnerSheet","setAnimatedPosition","scrollGestureRef","gestureHandlerEnabled","panGestureRef","releaseConfigRef","dismissOnSnapToBottom","snapPointsMode","isKeyboardVisible","current","gestureStateRef","startY","lastPanTranslationY","accumulatedOffset","prevTranslationY","scrollEngaged","frozenPositions","frozenMinY","frozenIsKeyboardVisible","panStarted","startedBelowTop","upwardDragAfterTop","scrollUnlockedAfterTop","keepScrollLockedAfterEnd","unlockScrollTimer","clearTimeout","onStart","onEnd","closestPoint","animationOverride","keepScrollLocked","setParentDragging","lockScrollAtTop","setScrollEnabled","setTimeout","panGesture","Gesture","minY","gs","gesture","Pan","withRef","activeOffsetY","failOffsetX","shouldCancelWhenOutside","onBegin","pauseKeyboardHandler","pos","atTop","currentScrollY","y","initialPosition","onChange","event","translationY","isSwipingDown","deltaY","scrollY","currentPos","isCurrentlyAtTop","nodeIsScrolling","panHandles","hasScrollableContent","Math","max","lockTo","newPosition","paneY","velocityY","scrollLockY","snapPositions","length","snapMinY","velocity","projectedEnd","releaseConfig","currentPosition","onFinalize","runOnJS","simultaneousWithExternalGesture"],"sources":["../../src/useGestureHandlerPan.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,8 +1,9 @@
1
1
  import { isWeb } from "@tamagui/constants";
2
- import { useCallback, useMemo, useRef } from "react";
2
+ import { useCallback, useEffect, useMemo, useRef } from "react";
3
3
  import { getGestureHandlerState, isGestureHandlerEnabled } from "./gestureState.native.js";
4
4
  import { getSheetReleasePosition } from "./keyboardAvoidance.native.js";
5
5
  var AT_TOP_THRESHOLD = 5;
6
+ var SCROLL_HANDOFF_THRESHOLD = 160;
6
7
  function useGestureHandlerPan(config) {
7
8
  var {
8
9
  positions,
@@ -49,16 +50,45 @@ function useGestureHandlerPan(config) {
49
50
  frozenMinY: 0,
50
51
  frozenIsKeyboardVisible: false,
51
52
  // whether pan gesture actually started (vs just a tap in onBegin)
52
- panStarted: false
53
+ panStarted: false,
54
+ startedBelowTop: false,
55
+ upwardDragAfterTop: 0,
56
+ scrollUnlockedAfterTop: false,
57
+ keepScrollLockedAfterEnd: false
53
58
  });
59
+ var unlockScrollTimer = useRef(null);
60
+ useEffect(function () {
61
+ return function () {
62
+ if (unlockScrollTimer.current) {
63
+ clearTimeout(unlockScrollTimer.current);
64
+ unlockScrollTimer.current = null;
65
+ }
66
+ };
67
+ }, []);
54
68
  var onStart = useCallback(function () {
55
69
  stopSpring();
56
70
  }, [stopSpring]);
57
71
  var onEnd = useCallback(function (closestPoint, animationOverride) {
58
- var _scrollBridge_setScrollEnabled;
72
+ var keepScrollLocked = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
73
+ if (unlockScrollTimer.current) {
74
+ clearTimeout(unlockScrollTimer.current);
75
+ unlockScrollTimer.current = null;
76
+ }
59
77
  setIsDragging(false);
60
78
  scrollBridge.setParentDragging(false);
61
- (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, true);
79
+ scrollBridge.lockScrollAtTop = false;
80
+ if (keepScrollLocked) {
81
+ var _scrollBridge_setScrollEnabled;
82
+ (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, 0);
83
+ unlockScrollTimer.current = setTimeout(function () {
84
+ var _scrollBridge_setScrollEnabled2;
85
+ unlockScrollTimer.current = null;
86
+ (_scrollBridge_setScrollEnabled2 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled2 === void 0 ? void 0 : _scrollBridge_setScrollEnabled2.call(scrollBridge, true);
87
+ }, 160);
88
+ } else {
89
+ var _scrollBridge_setScrollEnabled1;
90
+ (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 ? void 0 : _scrollBridge_setScrollEnabled1.call(scrollBridge, true);
91
+ }
62
92
  setPosition(closestPoint);
63
93
  animateTo(closestPoint, animationOverride);
64
94
  }, [setIsDragging, scrollBridge, setPosition, animateTo]);
@@ -90,6 +120,15 @@ function useGestureHandlerPan(config) {
90
120
  gs.frozenPositions = [...positions];
91
121
  gs.frozenMinY = minY;
92
122
  gs.frozenIsKeyboardVisible = releaseConfigRef.current.isKeyboardVisible;
123
+ gs.startedBelowTop = !atTop;
124
+ gs.upwardDragAfterTop = 0;
125
+ gs.scrollUnlockedAfterTop = false;
126
+ gs.keepScrollLockedAfterEnd = false;
127
+ scrollBridge.lockScrollAtTop = false;
128
+ if (unlockScrollTimer.current) {
129
+ clearTimeout(unlockScrollTimer.current);
130
+ unlockScrollTimer.current = null;
131
+ }
93
132
  if (!atTop) {
94
133
  var _scrollBridge_setScrollEnabled;
95
134
  (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, 0);
@@ -132,7 +171,17 @@ function useGestureHandlerPan(config) {
132
171
  }
133
172
  } else {
134
173
  if (hasScrollableContent) {
135
- panHandles = false;
174
+ if (gs.startedBelowTop && !gs.scrollUnlockedAfterTop) {
175
+ gs.upwardDragAfterTop += Math.max(0, -deltaY);
176
+ if (gs.upwardDragAfterTop >= SCROLL_HANDOFF_THRESHOLD) {
177
+ gs.scrollUnlockedAfterTop = true;
178
+ panHandles = false;
179
+ } else {
180
+ panHandles = true;
181
+ }
182
+ } else {
183
+ panHandles = false;
184
+ }
136
185
  } else {
137
186
  panHandles = true;
138
187
  }
@@ -140,6 +189,7 @@ function useGestureHandlerPan(config) {
140
189
  }
141
190
  if (panHandles) {
142
191
  var _scrollBridge_setScrollEnabled;
192
+ scrollBridge.lockScrollAtTop = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;
143
193
  var lockTo = isCurrentlyAtTop && isSwipingDown && gs.scrollEngaged ? void 0 : 0;
144
194
  (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 ? void 0 : _scrollBridge_setScrollEnabled.call(scrollBridge, false, lockTo);
145
195
  gs.accumulatedOffset += deltaY;
@@ -149,18 +199,23 @@ function useGestureHandlerPan(config) {
149
199
  scrollBridge.setParentDragging(newPosition > minY);
150
200
  } else {
151
201
  var _scrollBridge_setScrollEnabled1;
202
+ scrollBridge.lockScrollAtTop = false;
152
203
  (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 ? void 0 : _scrollBridge_setScrollEnabled1.call(scrollBridge, true);
204
+ scrollBridge.setParentDragging(false);
153
205
  }
154
206
  }).onEnd(function (event) {
155
207
  var {
156
208
  velocityY
157
209
  } = event;
158
210
  var currentPos = gs.startY + gs.accumulatedOffset;
159
- scrollBridge.scrollLockY = void 0;
211
+ var keepScrollLockedAfterEnd = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;
212
+ scrollBridge.lockScrollAtTop = false;
213
+ scrollBridge.scrollLockY = keepScrollLockedAfterEnd ? 0 : void 0;
214
+ gs.keepScrollLockedAfterEnd = keepScrollLockedAfterEnd;
160
215
  var snapPositions = gs.frozenPositions.length > 0 ? gs.frozenPositions : positions;
161
216
  var snapMinY = gs.frozenPositions.length > 0 ? gs.frozenMinY : minY;
162
217
  if (currentPos <= snapMinY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
163
- onEnd(0);
218
+ onEnd(0, void 0, keepScrollLockedAfterEnd);
164
219
  return;
165
220
  }
166
221
  var velocity = velocityY / 1e3;
@@ -176,9 +231,10 @@ function useGestureHandlerPan(config) {
176
231
  isKeyboardVisible: gs.frozenIsKeyboardVisible,
177
232
  isWeb
178
233
  });
179
- onEnd(closestPoint);
234
+ onEnd(closestPoint, void 0, keepScrollLockedAfterEnd);
180
235
  }).onFinalize(function () {
181
- scrollBridge.scrollLockY = void 0;
236
+ scrollBridge.lockScrollAtTop = false;
237
+ scrollBridge.scrollLockY = gs.keepScrollLockedAfterEnd ? 0 : void 0;
182
238
  if (gs.panStarted) {
183
239
  setIsDragging(false);
184
240
  } else {
@@ -1 +1 @@
1
- {"version":3,"names":["isWeb","useCallback","useMemo","useRef","getGestureHandlerState","isGestureHandlerEnabled","getSheetReleasePosition","AT_TOP_THRESHOLD","useGestureHandlerPan","config","positions","frameSize","setPosition","animateTo","stopSpring","scrollBridge","setIsDragging","getCurrentPosition","resisted","disableDrag","isShowingInnerSheet","setAnimatedPosition","scrollGestureRef","gestureHandlerEnabled","panGestureRef","_config_snapPointsMode","releaseConfigRef","dismissOnSnapToBottom","snapPointsMode","isKeyboardVisible","_config_snapPointsMode1","current","gestureStateRef","startY","lastPanTranslationY","accumulatedOffset","prevTranslationY","scrollEngaged","frozenPositions","frozenMinY","frozenIsKeyboardVisible","panStarted","onStart","onEnd","closestPoint","animationOverride","_scrollBridge_setScrollEnabled","setParentDragging","setScrollEnabled","call","panGesture","Gesture","minY","gs","gesture","Pan","withRef","activeOffsetY","failOffsetX","shouldCancelWhenOutside","onBegin","pauseKeyboardHandler","pos","atTop","currentScrollY","y","initialPosition","onChange","event","translationY","isSwipingDown","deltaY","scrollY","currentPos","isCurrentlyAtTop","nodeIsScrolling","panHandles","hasScrollableContent","lockTo","newPosition","paneY","_scrollBridge_setScrollEnabled1","velocityY","scrollLockY","snapPositions","length","snapMinY","velocity","projectedEnd","releaseConfig","currentPosition","onFinalize","runOnJS","simultaneousWithExternalGesture"],"sources":["../../src/useGestureHandlerPan.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isWeb","useCallback","useEffect","useMemo","useRef","getGestureHandlerState","isGestureHandlerEnabled","getSheetReleasePosition","AT_TOP_THRESHOLD","SCROLL_HANDOFF_THRESHOLD","useGestureHandlerPan","config","positions","frameSize","setPosition","animateTo","stopSpring","scrollBridge","setIsDragging","getCurrentPosition","resisted","disableDrag","isShowingInnerSheet","setAnimatedPosition","scrollGestureRef","gestureHandlerEnabled","panGestureRef","_config_snapPointsMode","releaseConfigRef","dismissOnSnapToBottom","snapPointsMode","isKeyboardVisible","_config_snapPointsMode1","current","gestureStateRef","startY","lastPanTranslationY","accumulatedOffset","prevTranslationY","scrollEngaged","frozenPositions","frozenMinY","frozenIsKeyboardVisible","panStarted","startedBelowTop","upwardDragAfterTop","scrollUnlockedAfterTop","keepScrollLockedAfterEnd","unlockScrollTimer","clearTimeout","onStart","onEnd","closestPoint","animationOverride","keepScrollLocked","arguments","length","setParentDragging","lockScrollAtTop","_scrollBridge_setScrollEnabled","setScrollEnabled","call","setTimeout","_scrollBridge_setScrollEnabled2","_scrollBridge_setScrollEnabled1","panGesture","Gesture","minY","gs","gesture","Pan","withRef","activeOffsetY","failOffsetX","shouldCancelWhenOutside","onBegin","pauseKeyboardHandler","pos","atTop","currentScrollY","y","initialPosition","onChange","event","translationY","isSwipingDown","deltaY","scrollY","currentPos","isCurrentlyAtTop","nodeIsScrolling","panHandles","hasScrollableContent","Math","max","lockTo","newPosition","paneY","velocityY","scrollLockY","snapPositions","snapMinY","velocity","projectedEnd","releaseConfig","currentPosition","onFinalize","runOnJS","simultaneousWithExternalGesture"],"sources":["../../src/useGestureHandlerPan.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -74,8 +74,7 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
74
74
  } = state;
75
75
  const openRef = React.useRef(open);
76
76
  openRef.current = open;
77
- const sheetRef = React.useRef(void 0);
78
- const ref = useComposedRefs(forwardedRef, sheetRef, providerProps.contentRef);
77
+ const ref = useComposedRefs(forwardedRef, React.useRef(void 0), providerProps.contentRef);
79
78
  const {
80
79
  animationDriver
81
80
  } = useConfiguration();
@@ -145,8 +144,7 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
145
144
  const keyboardStableFrameHeight = isWebKbSheet && isKeyboardVisible && frameSize > 0 ? frameSize : 0;
146
145
  const {
147
146
  useAnimatedNumber,
148
- useAnimatedNumberStyle,
149
- useAnimatedNumberReaction
147
+ useAnimatedNumberStyle
150
148
  } = animationDriver;
151
149
  const AnimatedView = animationDriver.View ?? View;
152
150
  useIsomorphicLayoutEffect(() => {
@@ -168,30 +166,46 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
168
166
  if (controller?.skipNextAnimation) skipAdaptAnimation.current = true;
169
167
  const hasScrollView = React.useRef(false);
170
168
  const opacityFallbackTimer = React.useRef(null);
171
- useAnimatedNumberReaction({
172
- value: animatedNumber,
173
- hostRef: sheetRef
174
- }, React.useCallback(value => {
169
+ const syncAnimatedPosition = useEvent(value => {
175
170
  at.current = value;
176
171
  scrollBridge.paneY = value;
177
172
  const minY = activePositions[0];
178
173
  const wasAtTop = scrollBridge.isAtTop;
179
174
  const nowAtTop = value <= minY + 5;
180
- if (wasAtTop !== nowAtTop) {
181
- scrollBridge.isAtTop = nowAtTop;
182
- if (nowAtTop) {
175
+ if (wasAtTop === nowAtTop) return;
176
+ scrollBridge.isAtTop = nowAtTop;
177
+ if (nowAtTop) {
178
+ if (scrollBridge.lockScrollAtTop) {
183
179
  if (scrollBridge.y > 0) {
184
180
  scrollBridge.forceScrollTo?.(0);
185
181
  scrollBridge.y = 0;
186
182
  }
187
- scrollBridge.scrollLockY = void 0;
188
- scrollBridge.setScrollEnabled?.(true);
189
- } else {
190
183
  scrollBridge.scrollLockY = 0;
191
- scrollBridge.setScrollEnabled?.(false);
184
+ scrollBridge.setScrollEnabled?.(false, 0);
185
+ return;
186
+ }
187
+ if (scrollBridge.y > 0) {
188
+ scrollBridge.forceScrollTo?.(0);
189
+ scrollBridge.y = 0;
192
190
  }
191
+ scrollBridge.scrollLockY = void 0;
192
+ scrollBridge.setScrollEnabled?.(true);
193
+ } else {
194
+ scrollBridge.scrollLockY = 0;
195
+ scrollBridge.setScrollEnabled?.(false);
193
196
  }
194
- }, [animationDriver, activePositions]));
197
+ });
198
+ const setAnimatedPositionDirect = useEvent(value => {
199
+ syncAnimatedPosition(value);
200
+ animatedNumber.setValue(value, {
201
+ type: "direct"
202
+ });
203
+ });
204
+ const getAnimatedPosition = useEvent(() => {
205
+ const value = animatedNumber.getValue();
206
+ syncAnimatedPosition(value);
207
+ return value;
208
+ });
195
209
  function stopSpring() {
196
210
  animatedNumber.stop();
197
211
  if (scrollBridge.onFinishAnimate) {
@@ -212,6 +226,7 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
212
226
  opacityFallbackTimer.current = null;
213
227
  }
214
228
  const animationCompleteCallback = () => {
229
+ syncAnimatedPosition(toValue);
215
230
  if (opacityFallbackTimer.current) {
216
231
  clearTimeout(opacityFallbackTimer.current);
217
232
  opacityFallbackTimer.current = null;
@@ -248,6 +263,7 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
248
263
  type: "timing",
249
264
  duration: 0
250
265
  }, () => {
266
+ syncAnimatedPosition(screenSize);
251
267
  setTimeout(() => {
252
268
  setDisableAnimation(false);
253
269
  }, 10);
@@ -346,7 +362,7 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
346
362
  const grant = () => {
347
363
  setPanning(true);
348
364
  stopSpring();
349
- startY = at.current;
365
+ startY = getAnimatedPosition();
350
366
  };
351
367
  let isExternalDrag = false;
352
368
  scrollBridge.startPanDrag = () => {
@@ -358,10 +374,7 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
358
374
  isExternalDrag = true;
359
375
  grant();
360
376
  }
361
- const to = dy + startY;
362
- animatedNumber.setValue(resisted(to, minY), {
363
- type: "direct"
364
- });
377
+ setAnimatedPositionDirect(resisted(dy + startY, minY));
365
378
  };
366
379
  scrollBridge.release = release;
367
380
  scrollBridge.snapToPosition = positionIndex => {
@@ -379,9 +392,7 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
379
392
  }) => {
380
393
  const to = resisted(dy + startY, minY);
381
394
  if (to <= minY) scrollBridge.setParentDragging(false);else scrollBridge.setParentDragging(true);
382
- animatedNumber.setValue(to, {
383
- type: "direct"
384
- });
395
+ setAnimatedPositionDirect(to);
385
396
  },
386
397
  onPanResponderEnd: finish,
387
398
  onPanResponderTerminate: finish,
@@ -426,16 +437,11 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
426
437
  stopSpring,
427
438
  scrollBridge,
428
439
  setIsDragging,
429
- getCurrentPosition: () => at.current,
440
+ getCurrentPosition: getAnimatedPosition,
430
441
  resisted,
431
442
  disableDrag,
432
443
  isShowingInnerSheet,
433
- setAnimatedPosition: val => {
434
- at.current = val;
435
- animatedNumber.setValue(val, {
436
- type: "direct"
437
- });
438
- },
444
+ setAnimatedPosition: setAnimatedPositionDirect,
439
445
  dismissOnSnapToBottom,
440
446
  snapPointsMode,
441
447
  isKeyboardVisible,