@tamagui/sheet 2.3.3 → 2.4.0-1783110557100

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 (109) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/cjs/SheetImplementationCustom.cjs +42 -29
  3. package/dist/cjs/SheetImplementationCustom.native.js +46 -33
  4. package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
  5. package/dist/cjs/SheetScrollView.cjs +64 -22
  6. package/dist/cjs/SheetScrollView.native.js +66 -23
  7. package/dist/cjs/SheetScrollView.native.js.map +1 -1
  8. package/dist/cjs/createSheet.cjs +2 -1
  9. package/dist/cjs/createSheet.native.js +2 -1
  10. package/dist/cjs/createSheet.native.js.map +1 -1
  11. package/dist/cjs/gestureState.cjs +13 -2
  12. package/dist/cjs/gestureState.native.js +14 -2
  13. package/dist/cjs/gestureState.native.js.map +1 -1
  14. package/dist/cjs/index.cjs +12 -1
  15. package/dist/cjs/index.native.js +11 -0
  16. package/dist/cjs/index.native.js.map +1 -1
  17. package/dist/cjs/setupGestureHandler.cjs +7 -4
  18. package/dist/cjs/setupGestureHandler.native.js +9 -4
  19. package/dist/cjs/setupGestureHandler.native.js.map +1 -1
  20. package/dist/cjs/useGestureHandlerPan.cjs +61 -8
  21. package/dist/cjs/useGestureHandlerPan.native.js +64 -8
  22. package/dist/cjs/useGestureHandlerPan.native.js.map +1 -1
  23. package/dist/cjs/useSheetScrollViewGestures.cjs +13 -3
  24. package/dist/esm/SheetImplementationCustom.mjs +43 -32
  25. package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
  26. package/dist/esm/SheetImplementationCustom.native.js +47 -36
  27. package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
  28. package/dist/esm/SheetScrollView.mjs +64 -22
  29. package/dist/esm/SheetScrollView.mjs.map +1 -1
  30. package/dist/esm/SheetScrollView.native.js +66 -23
  31. package/dist/esm/SheetScrollView.native.js.map +1 -1
  32. package/dist/esm/createSheet.mjs +2 -1
  33. package/dist/esm/createSheet.mjs.map +1 -1
  34. package/dist/esm/createSheet.native.js +2 -1
  35. package/dist/esm/createSheet.native.js.map +1 -1
  36. package/dist/esm/gestureState.mjs +13 -2
  37. package/dist/esm/gestureState.mjs.map +1 -1
  38. package/dist/esm/gestureState.native.js +14 -2
  39. package/dist/esm/gestureState.native.js.map +1 -1
  40. package/dist/esm/index.js +2 -0
  41. package/dist/esm/index.js.map +1 -1
  42. package/dist/esm/index.mjs +2 -0
  43. package/dist/esm/index.mjs.map +1 -1
  44. package/dist/esm/index.native.js +2 -0
  45. package/dist/esm/index.native.js.map +1 -1
  46. package/dist/esm/setupGestureHandler.mjs +7 -4
  47. package/dist/esm/setupGestureHandler.mjs.map +1 -1
  48. package/dist/esm/setupGestureHandler.native.js +9 -4
  49. package/dist/esm/setupGestureHandler.native.js.map +1 -1
  50. package/dist/esm/useGestureHandlerPan.mjs +62 -9
  51. package/dist/esm/useGestureHandlerPan.mjs.map +1 -1
  52. package/dist/esm/useGestureHandlerPan.native.js +65 -9
  53. package/dist/esm/useGestureHandlerPan.native.js.map +1 -1
  54. package/dist/esm/useSheetScrollViewGestures.mjs +13 -3
  55. package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -1
  56. package/dist/jsx/SheetImplementationCustom.mjs +43 -32
  57. package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
  58. package/dist/jsx/SheetImplementationCustom.native.js +46 -33
  59. package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
  60. package/dist/jsx/SheetScrollView.mjs +64 -22
  61. package/dist/jsx/SheetScrollView.mjs.map +1 -1
  62. package/dist/jsx/SheetScrollView.native.js +66 -23
  63. package/dist/jsx/SheetScrollView.native.js.map +1 -1
  64. package/dist/jsx/createSheet.mjs +2 -1
  65. package/dist/jsx/createSheet.mjs.map +1 -1
  66. package/dist/jsx/createSheet.native.js +2 -1
  67. package/dist/jsx/createSheet.native.js.map +1 -1
  68. package/dist/jsx/gestureState.mjs +13 -2
  69. package/dist/jsx/gestureState.mjs.map +1 -1
  70. package/dist/jsx/gestureState.native.js +14 -2
  71. package/dist/jsx/gestureState.native.js.map +1 -1
  72. package/dist/jsx/index.js +2 -0
  73. package/dist/jsx/index.js.map +1 -1
  74. package/dist/jsx/index.mjs +2 -0
  75. package/dist/jsx/index.mjs.map +1 -1
  76. package/dist/jsx/index.native.js +11 -0
  77. package/dist/jsx/index.native.js.map +1 -1
  78. package/dist/jsx/setupGestureHandler.mjs +7 -4
  79. package/dist/jsx/setupGestureHandler.mjs.map +1 -1
  80. package/dist/jsx/setupGestureHandler.native.js +9 -4
  81. package/dist/jsx/setupGestureHandler.native.js.map +1 -1
  82. package/dist/jsx/useGestureHandlerPan.mjs +62 -9
  83. package/dist/jsx/useGestureHandlerPan.mjs.map +1 -1
  84. package/dist/jsx/useGestureHandlerPan.native.js +64 -8
  85. package/dist/jsx/useGestureHandlerPan.native.js.map +1 -1
  86. package/dist/jsx/useSheetScrollViewGestures.mjs +13 -3
  87. package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -1
  88. package/package.json +20 -20
  89. package/src/SheetImplementationCustom.tsx +79 -47
  90. package/src/SheetScrollView.tsx +61 -13
  91. package/src/createSheet.tsx +2 -1
  92. package/src/gestureState.ts +22 -2
  93. package/src/index.ts +4 -0
  94. package/src/setupGestureHandler.ts +12 -3
  95. package/src/types.tsx +3 -0
  96. package/src/useGestureHandlerPan.tsx +64 -10
  97. package/src/useSheetScrollViewGestures.ts +17 -2
  98. package/types/SheetImplementationCustom.d.ts.map +1 -1
  99. package/types/SheetScrollView.d.ts.map +1 -1
  100. package/types/createSheet.d.ts.map +1 -1
  101. package/types/gestureState.d.ts.map +1 -1
  102. package/types/index.d.ts +1 -0
  103. package/types/index.d.ts.map +1 -1
  104. package/types/setupGestureHandler.d.ts.map +1 -1
  105. package/types/types.d.ts +1 -0
  106. package/types/types.d.ts.map +1 -1
  107. package/types/useGestureHandlerPan.d.ts.map +1 -1
  108. package/types/useSheetScrollViewGestures.d.ts +2 -1
  109. package/types/useSheetScrollViewGestures.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.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":[]}
@@ -2,7 +2,8 @@ import { useEffect, useRef } from "react";
2
2
  function useSheetScrollViewGestures({
3
3
  scrollRef,
4
4
  scrollBridge,
5
- hasScrollableContent
5
+ hasScrollableContent,
6
+ onManualScroll
6
7
  }) {
7
8
  const state = useRef({
8
9
  startY: 0,
@@ -13,6 +14,10 @@ function useSheetScrollViewGestures({
13
14
  dys: [],
14
15
  scrollYAtGestureStart: 0
15
16
  });
17
+ const onManualScrollRef = useRef(onManualScroll);
18
+ useEffect(() => {
19
+ onManualScrollRef.current = onManualScroll;
20
+ }, [onManualScroll]);
16
21
  useEffect(() => {
17
22
  if (!scrollRef.current) return;
18
23
  const controller = new AbortController();
@@ -29,6 +34,11 @@ function useSheetScrollViewGestures({
29
34
  const enableScroll = () => {
30
35
  node.style.overflowY = originalOverflow;
31
36
  };
37
+ const setScrollTop = nextScrollY => {
38
+ if (node.scrollTop === nextScrollY) return;
39
+ node.scrollTop = nextScrollY;
40
+ onManualScrollRef.current?.(node, nextScrollY);
41
+ };
32
42
  const handleTouchStart = e => {
33
43
  const touch = e.touches[0];
34
44
  if (!touch) return;
@@ -57,7 +67,7 @@ function useSheetScrollViewGestures({
57
67
  if (dy === 0) return;
58
68
  const isDraggingDown = dy > 0;
59
69
  const currentScrollY = node.scrollTop;
60
- const isPaneAtTop = scrollBridge.paneY <= scrollBridge.paneMinY + 5;
70
+ const isPaneAtTop = scrollBridge.isAtTop ?? scrollBridge.paneY <= scrollBridge.paneMinY + 5;
61
71
  scrollBridge.y = currentScrollY;
62
72
  let shouldPanOwn = false;
63
73
  if (!isPaneAtTop) {
@@ -97,7 +107,7 @@ function useSheetScrollViewGestures({
97
107
  const maxScrollY = node.scrollHeight - node.clientHeight;
98
108
  const newScrollY = Math.max(0, Math.min(maxScrollY, currentScrollY + scrollDelta));
99
109
  if (newScrollY !== currentScrollY) {
100
- node.scrollTop = newScrollY;
110
+ setScrollTop(newScrollY);
101
111
  scrollBridge.y = newScrollY;
102
112
  if (newScrollY > 0) scrollBridge.scrollStartY = -1;
103
113
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useRef","useSheetScrollViewGestures","scrollRef","scrollBridge","hasScrollableContent","state","startY","lastY","owner","hadPanOwner","panDragOffset","dys","scrollYAtGestureStart","current","controller","AbortController","node","getScrollableNode","style","overscrollBehavior","originalOverflow","disableScroll","overflowY","enableScroll","handleTouchStart","e","touch","touches","currentScrollY","scrollTop","pageY","scrollStartY","scrollNodeTouched","handleTouchMove","s","dy","isDraggingDown","isPaneAtTop","paneY","paneMinY","y","shouldPanOwn","newOwner","startPanDrag","setParentDragging","scrollLock","cancelable","preventDefault","drag","push","length","slice","isTrusted","scrollDelta","maxScrollY","scrollHeight","clientHeight","newScrollY","Math","max","min","handleTouchEnd","vy","recentDys","dist","reduce","a","b","release","dragAt","snapToPosition","addEventListener","signal","passive","abort"],"sources":["../../src/useSheetScrollViewGestures.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useRef","useSheetScrollViewGestures","scrollRef","scrollBridge","hasScrollableContent","onManualScroll","state","startY","lastY","owner","hadPanOwner","panDragOffset","dys","scrollYAtGestureStart","onManualScrollRef","current","controller","AbortController","node","getScrollableNode","style","overscrollBehavior","originalOverflow","disableScroll","overflowY","enableScroll","setScrollTop","nextScrollY","scrollTop","handleTouchStart","e","touch","touches","currentScrollY","pageY","scrollStartY","scrollNodeTouched","handleTouchMove","s","dy","isDraggingDown","isPaneAtTop","isAtTop","paneY","paneMinY","y","shouldPanOwn","newOwner","startPanDrag","setParentDragging","scrollLock","cancelable","preventDefault","drag","push","length","slice","isTrusted","scrollDelta","maxScrollY","scrollHeight","clientHeight","newScrollY","Math","max","min","handleTouchEnd","vy","recentDys","dist","reduce","a","b","release","dragAt","snapToPosition","addEventListener","signal","passive","abort"],"sources":["../../src/useSheetScrollViewGestures.ts"],"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();
@@ -109,6 +108,11 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
109
108
  if (open && frameSize) stableFrameSize.current = frameSize;
110
109
  }, [open, frameSize]);
111
110
  const isWebKbSheet = isWeb && hasFit && moveOnKeyboardChange;
111
+ const isNativeKbFitSheet = !isWeb && hasFit && Boolean(moveOnKeyboardChange);
112
+ const preKeyboardFrameSize = React.useRef(0);
113
+ React.useEffect(() => {
114
+ if (isNativeKbFitSheet && open && !isKeyboardVisible && frameSize > 0) preKeyboardFrameSize.current = frameSize;
115
+ }, [isNativeKbFitSheet, open, isKeyboardVisible, frameSize]);
112
116
  const effScreenSize = isWebKbSheet ? getStableViewportHeight() : screenSize;
113
117
  const effectiveFrameSize = open ? frameSize : stableFrameSize.current || frameSize;
114
118
  const positions = React.useMemo(() => snapPoints.map(point => getYPositions(snapPointsMode, point, effScreenSize, effectiveFrameSize)), [effScreenSize, effectiveFrameSize, snapPoints, snapPointsMode]);
@@ -142,11 +146,10 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
142
146
  screenSize: effScreenSize,
143
147
  sheetY: position >= 0 ? activePositions[position] : void 0
144
148
  });
145
- const keyboardStableFrameHeight = isWebKbSheet && isKeyboardVisible && frameSize > 0 ? frameSize : 0;
149
+ const keyboardStableFrameHeight = isWebKbSheet && isKeyboardVisible && frameSize > 0 ? frameSize : isNativeKbFitSheet && isKeyboardVisible && preKeyboardFrameSize.current > 0 ? preKeyboardFrameSize.current : 0;
146
150
  const {
147
151
  useAnimatedNumber,
148
- useAnimatedNumberStyle,
149
- useAnimatedNumberReaction
152
+ useAnimatedNumberStyle
150
153
  } = animationDriver;
151
154
  const AnimatedView = animationDriver.View ?? View;
152
155
  useIsomorphicLayoutEffect(() => {
@@ -168,30 +171,46 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
168
171
  if (controller?.skipNextAnimation) skipAdaptAnimation.current = true;
169
172
  const hasScrollView = React.useRef(false);
170
173
  const opacityFallbackTimer = React.useRef(null);
171
- useAnimatedNumberReaction({
172
- value: animatedNumber,
173
- hostRef: sheetRef
174
- }, React.useCallback(value => {
174
+ const syncAnimatedPosition = useEvent(value => {
175
175
  at.current = value;
176
176
  scrollBridge.paneY = value;
177
177
  const minY = activePositions[0];
178
178
  const wasAtTop = scrollBridge.isAtTop;
179
179
  const nowAtTop = value <= minY + 5;
180
- if (wasAtTop !== nowAtTop) {
181
- scrollBridge.isAtTop = nowAtTop;
182
- if (nowAtTop) {
180
+ if (wasAtTop === nowAtTop) return;
181
+ scrollBridge.isAtTop = nowAtTop;
182
+ if (nowAtTop) {
183
+ if (scrollBridge.lockScrollAtTop) {
183
184
  if (scrollBridge.y > 0) {
184
185
  scrollBridge.forceScrollTo?.(0);
185
186
  scrollBridge.y = 0;
186
187
  }
187
- scrollBridge.scrollLockY = void 0;
188
- scrollBridge.setScrollEnabled?.(true);
189
- } else {
190
188
  scrollBridge.scrollLockY = 0;
191
- scrollBridge.setScrollEnabled?.(false);
189
+ scrollBridge.setScrollEnabled?.(false, 0);
190
+ return;
191
+ }
192
+ if (scrollBridge.y > 0) {
193
+ scrollBridge.forceScrollTo?.(0);
194
+ scrollBridge.y = 0;
192
195
  }
196
+ scrollBridge.scrollLockY = void 0;
197
+ scrollBridge.setScrollEnabled?.(true);
198
+ } else {
199
+ scrollBridge.scrollLockY = 0;
200
+ scrollBridge.setScrollEnabled?.(false);
193
201
  }
194
- }, [animationDriver, activePositions]));
202
+ });
203
+ const setAnimatedPositionDirect = useEvent(value => {
204
+ syncAnimatedPosition(value);
205
+ animatedNumber.setValue(value, {
206
+ type: "direct"
207
+ });
208
+ });
209
+ const getAnimatedPosition = useEvent(() => {
210
+ const value = animatedNumber.getValue();
211
+ syncAnimatedPosition(value);
212
+ return value;
213
+ });
195
214
  function stopSpring() {
196
215
  animatedNumber.stop();
197
216
  if (scrollBridge.onFinishAnimate) {
@@ -212,6 +231,7 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
212
231
  opacityFallbackTimer.current = null;
213
232
  }
214
233
  const animationCompleteCallback = () => {
234
+ syncAnimatedPosition(toValue);
215
235
  if (opacityFallbackTimer.current) {
216
236
  clearTimeout(opacityFallbackTimer.current);
217
237
  opacityFallbackTimer.current = null;
@@ -248,6 +268,7 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
248
268
  type: "timing",
249
269
  duration: 0
250
270
  }, () => {
271
+ syncAnimatedPosition(screenSize);
251
272
  setTimeout(() => {
252
273
  setDisableAnimation(false);
253
274
  }, 10);
@@ -346,7 +367,7 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
346
367
  const grant = () => {
347
368
  setPanning(true);
348
369
  stopSpring();
349
- startY = at.current;
370
+ startY = getAnimatedPosition();
350
371
  };
351
372
  let isExternalDrag = false;
352
373
  scrollBridge.startPanDrag = () => {
@@ -358,10 +379,7 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
358
379
  isExternalDrag = true;
359
380
  grant();
360
381
  }
361
- const to = dy + startY;
362
- animatedNumber.setValue(resisted(to, minY), {
363
- type: "direct"
364
- });
382
+ setAnimatedPositionDirect(resisted(dy + startY, minY));
365
383
  };
366
384
  scrollBridge.release = release;
367
385
  scrollBridge.snapToPosition = positionIndex => {
@@ -379,9 +397,7 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
379
397
  }) => {
380
398
  const to = resisted(dy + startY, minY);
381
399
  if (to <= minY) scrollBridge.setParentDragging(false);else scrollBridge.setParentDragging(true);
382
- animatedNumber.setValue(to, {
383
- type: "direct"
384
- });
400
+ setAnimatedPositionDirect(to);
385
401
  },
386
402
  onPanResponderEnd: finish,
387
403
  onPanResponderTerminate: finish,
@@ -426,16 +442,11 @@ const SheetImplementationCustom = React.forwardRef(function SheetImplementationC
426
442
  stopSpring,
427
443
  scrollBridge,
428
444
  setIsDragging,
429
- getCurrentPosition: () => at.current,
445
+ getCurrentPosition: getAnimatedPosition,
430
446
  resisted,
431
447
  disableDrag,
432
448
  isShowingInnerSheet,
433
- setAnimatedPosition: val => {
434
- at.current = val;
435
- animatedNumber.setValue(val, {
436
- type: "direct"
437
- });
438
- },
449
+ setAnimatedPosition: setAnimatedPositionDirect,
439
450
  dismissOnSnapToBottom,
440
451
  snapPointsMode,
441
452
  isKeyboardVisible,