@tamagui/sheet 2.3.3 → 2.4.0-1783099846627

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 (96) 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/gestureState.cjs +13 -2
  9. package/dist/cjs/gestureState.native.js +14 -2
  10. package/dist/cjs/gestureState.native.js.map +1 -1
  11. package/dist/cjs/index.cjs +12 -1
  12. package/dist/cjs/index.native.js +11 -0
  13. package/dist/cjs/index.native.js.map +1 -1
  14. package/dist/cjs/setupGestureHandler.cjs +7 -4
  15. package/dist/cjs/setupGestureHandler.native.js +9 -4
  16. package/dist/cjs/setupGestureHandler.native.js.map +1 -1
  17. package/dist/cjs/useGestureHandlerPan.cjs +61 -8
  18. package/dist/cjs/useGestureHandlerPan.native.js +64 -8
  19. package/dist/cjs/useGestureHandlerPan.native.js.map +1 -1
  20. package/dist/cjs/useSheetScrollViewGestures.cjs +13 -3
  21. package/dist/esm/SheetImplementationCustom.mjs +43 -32
  22. package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
  23. package/dist/esm/SheetImplementationCustom.native.js +47 -36
  24. package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
  25. package/dist/esm/SheetScrollView.mjs +64 -22
  26. package/dist/esm/SheetScrollView.mjs.map +1 -1
  27. package/dist/esm/SheetScrollView.native.js +66 -23
  28. package/dist/esm/SheetScrollView.native.js.map +1 -1
  29. package/dist/esm/gestureState.mjs +13 -2
  30. package/dist/esm/gestureState.mjs.map +1 -1
  31. package/dist/esm/gestureState.native.js +14 -2
  32. package/dist/esm/gestureState.native.js.map +1 -1
  33. package/dist/esm/index.js +2 -0
  34. package/dist/esm/index.js.map +1 -1
  35. package/dist/esm/index.mjs +2 -0
  36. package/dist/esm/index.mjs.map +1 -1
  37. package/dist/esm/index.native.js +2 -0
  38. package/dist/esm/index.native.js.map +1 -1
  39. package/dist/esm/setupGestureHandler.mjs +7 -4
  40. package/dist/esm/setupGestureHandler.mjs.map +1 -1
  41. package/dist/esm/setupGestureHandler.native.js +9 -4
  42. package/dist/esm/setupGestureHandler.native.js.map +1 -1
  43. package/dist/esm/useGestureHandlerPan.mjs +62 -9
  44. package/dist/esm/useGestureHandlerPan.mjs.map +1 -1
  45. package/dist/esm/useGestureHandlerPan.native.js +65 -9
  46. package/dist/esm/useGestureHandlerPan.native.js.map +1 -1
  47. package/dist/esm/useSheetScrollViewGestures.mjs +13 -3
  48. package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -1
  49. package/dist/jsx/SheetImplementationCustom.mjs +43 -32
  50. package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
  51. package/dist/jsx/SheetImplementationCustom.native.js +46 -33
  52. package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
  53. package/dist/jsx/SheetScrollView.mjs +64 -22
  54. package/dist/jsx/SheetScrollView.mjs.map +1 -1
  55. package/dist/jsx/SheetScrollView.native.js +66 -23
  56. package/dist/jsx/SheetScrollView.native.js.map +1 -1
  57. package/dist/jsx/gestureState.mjs +13 -2
  58. package/dist/jsx/gestureState.mjs.map +1 -1
  59. package/dist/jsx/gestureState.native.js +14 -2
  60. package/dist/jsx/gestureState.native.js.map +1 -1
  61. package/dist/jsx/index.js +2 -0
  62. package/dist/jsx/index.js.map +1 -1
  63. package/dist/jsx/index.mjs +2 -0
  64. package/dist/jsx/index.mjs.map +1 -1
  65. package/dist/jsx/index.native.js +11 -0
  66. package/dist/jsx/index.native.js.map +1 -1
  67. package/dist/jsx/setupGestureHandler.mjs +7 -4
  68. package/dist/jsx/setupGestureHandler.mjs.map +1 -1
  69. package/dist/jsx/setupGestureHandler.native.js +9 -4
  70. package/dist/jsx/setupGestureHandler.native.js.map +1 -1
  71. package/dist/jsx/useGestureHandlerPan.mjs +62 -9
  72. package/dist/jsx/useGestureHandlerPan.mjs.map +1 -1
  73. package/dist/jsx/useGestureHandlerPan.native.js +64 -8
  74. package/dist/jsx/useGestureHandlerPan.native.js.map +1 -1
  75. package/dist/jsx/useSheetScrollViewGestures.mjs +13 -3
  76. package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -1
  77. package/package.json +20 -20
  78. package/src/SheetImplementationCustom.tsx +79 -47
  79. package/src/SheetScrollView.tsx +61 -13
  80. package/src/gestureState.ts +22 -2
  81. package/src/index.ts +4 -0
  82. package/src/setupGestureHandler.ts +12 -3
  83. package/src/types.tsx +3 -0
  84. package/src/useGestureHandlerPan.tsx +64 -10
  85. package/src/useSheetScrollViewGestures.ts +17 -2
  86. package/types/SheetImplementationCustom.d.ts.map +1 -1
  87. package/types/SheetScrollView.d.ts.map +1 -1
  88. package/types/gestureState.d.ts.map +1 -1
  89. package/types/index.d.ts +1 -0
  90. package/types/index.d.ts.map +1 -1
  91. package/types/setupGestureHandler.d.ts.map +1 -1
  92. package/types/types.d.ts +1 -0
  93. package/types/types.d.ts.map +1 -1
  94. package/types/useGestureHandlerPan.d.ts.map +1 -1
  95. package/types/useSheetScrollViewGestures.d.ts +2 -1
  96. package/types/useSheetScrollViewGestures.d.ts.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useGestureHandlerPan_exports","useGestureHandlerPan","module","exports","import_constants","require","import_react","import_gestureState","import_keyboardAvoidance","AT_TOP_THRESHOLD","config","positions","frameSize","setPosition","animateTo","stopSpring","scrollBridge","setIsDragging","getCurrentPosition","resisted","disableDrag","isShowingInnerSheet","setAnimatedPosition","scrollGestureRef","gestureHandlerEnabled","isGestureHandlerEnabled","panGestureRef","useRef","_config_snapPointsMode","releaseConfigRef","dismissOnSnapToBottom","snapPointsMode","isKeyboardVisible","_config_snapPointsMode1","current","gestureStateRef","startY","lastPanTranslationY","accumulatedOffset","prevTranslationY","scrollEngaged","frozenPositions","frozenMinY","frozenIsKeyboardVisible","panStarted","onStart","useCallback","onEnd","closestPoint","animationOverride","_scrollBridge_setScrollEnabled","setParentDragging","setScrollEnabled","panGesture","useMemo","Gesture","getGestureHandlerState","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","getSheetReleasePosition","currentPosition","isWeb","onFinalize"],"sources":["../../src/useGestureHandlerPan.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__defProp","Object","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toCommonJS","mod","value","useGestureHandlerPan_exports","useGestureHandlerPan","module","exports","import_constants","require","import_react","import_gestureState","import_keyboardAvoidance","AT_TOP_THRESHOLD","SCROLL_HANDOFF_THRESHOLD","config","positions","frameSize","setPosition","animateTo","stopSpring","scrollBridge","setIsDragging","getCurrentPosition","resisted","disableDrag","isShowingInnerSheet","setAnimatedPosition","scrollGestureRef","gestureHandlerEnabled","isGestureHandlerEnabled","panGestureRef","useRef","_config_snapPointsMode","releaseConfigRef","dismissOnSnapToBottom","snapPointsMode","isKeyboardVisible","_config_snapPointsMode1","current","gestureStateRef","startY","lastPanTranslationY","accumulatedOffset","prevTranslationY","scrollEngaged","frozenPositions","frozenMinY","frozenIsKeyboardVisible","panStarted","startedBelowTop","upwardDragAfterTop","scrollUnlockedAfterTop","keepScrollLockedAfterEnd","unlockScrollTimer","useEffect","clearTimeout","onStart","useCallback","onEnd","closestPoint","animationOverride","keepScrollLocked","arguments","length","setParentDragging","lockScrollAtTop","_scrollBridge_setScrollEnabled","setScrollEnabled","setTimeout","_scrollBridge_setScrollEnabled2","_scrollBridge_setScrollEnabled1","panGesture","useMemo","Gesture","getGestureHandlerState","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","getSheetReleasePosition","currentPosition","isWeb","onFinalize"],"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":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tamagui/sheet",
3
- "version": "2.3.3",
3
+ "version": "2.4.0-1783099846627",
4
4
  "license": "MIT",
5
5
  "source": "src/index.ts",
6
6
  "type": "module",
@@ -54,27 +54,27 @@
54
54
  "clean": "tamagui-build clean"
55
55
  },
56
56
  "dependencies": {
57
- "@tamagui/adapt": "2.3.3",
58
- "@tamagui/animate-presence": "2.3.3",
59
- "@tamagui/animations-react-native": "2.3.3",
60
- "@tamagui/compose-refs": "2.3.3",
61
- "@tamagui/constants": "2.3.3",
62
- "@tamagui/core": "2.3.3",
63
- "@tamagui/create-context": "2.3.3",
64
- "@tamagui/helpers": "2.3.3",
65
- "@tamagui/native": "2.3.3",
66
- "@tamagui/portal": "2.3.3",
67
- "@tamagui/remove-scroll": "2.3.3",
68
- "@tamagui/scroll-view": "2.3.3",
69
- "@tamagui/stacks": "2.3.3",
70
- "@tamagui/use-constant": "2.3.3",
71
- "@tamagui/use-controllable-state": "2.3.3",
72
- "@tamagui/use-did-finish-ssr": "2.3.3",
73
- "@tamagui/use-keyboard-visible": "2.3.3",
74
- "@tamagui/z-index-stack": "2.3.3"
57
+ "@tamagui/adapt": "2.4.0-1783099846627",
58
+ "@tamagui/animate-presence": "2.4.0-1783099846627",
59
+ "@tamagui/animations-react-native": "2.4.0-1783099846627",
60
+ "@tamagui/compose-refs": "2.4.0-1783099846627",
61
+ "@tamagui/constants": "2.4.0-1783099846627",
62
+ "@tamagui/core": "2.4.0-1783099846627",
63
+ "@tamagui/create-context": "2.4.0-1783099846627",
64
+ "@tamagui/helpers": "2.4.0-1783099846627",
65
+ "@tamagui/native": "2.4.0-1783099846627",
66
+ "@tamagui/portal": "2.4.0-1783099846627",
67
+ "@tamagui/remove-scroll": "2.4.0-1783099846627",
68
+ "@tamagui/scroll-view": "2.4.0-1783099846627",
69
+ "@tamagui/stacks": "2.4.0-1783099846627",
70
+ "@tamagui/use-constant": "2.4.0-1783099846627",
71
+ "@tamagui/use-controllable-state": "2.4.0-1783099846627",
72
+ "@tamagui/use-did-finish-ssr": "2.4.0-1783099846627",
73
+ "@tamagui/use-keyboard-visible": "2.4.0-1783099846627",
74
+ "@tamagui/z-index-stack": "2.4.0-1783099846627"
75
75
  },
76
76
  "devDependencies": {
77
- "@tamagui/build": "2.3.3",
77
+ "@tamagui/build": "2.4.0-1783099846627",
78
78
  "react": ">=19",
79
79
  "react-native": "0.83.2",
80
80
  "react-native-gesture-handler": "~2.30.0",
@@ -207,6 +207,26 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
207
207
  // height would mismatch).
208
208
  const isWebKbSheet = isWeb && hasFit && moveOnKeyboardChange
209
209
 
210
+ // NATIVE keyboard frame freeze. native fit sheets feed keyboardOccludedHeight
211
+ // into the ScrollView as scrollable tail padding so content can clear the
212
+ // keyboard. but that padding grows the fit content, which grows the frame,
213
+ // which grows the occluded height — a feedback loop that balloons the sheet
214
+ // to the full-screen cap. web breaks the loop by freezing geometry against
215
+ // effScreenSize; native has no such freeze, so we pin the ScrollView to the
216
+ // frame height measured while the keyboard was closed (preKeyboardFrameSize)
217
+ // via keyboardStableFrameHeight below. unlike web, the native keyboard is an
218
+ // overlay that never shrinks the measured screen, so screenSize stays live.
219
+ const isNativeKbFitSheet = !isWeb && hasFit && Boolean(moveOnKeyboardChange)
220
+
221
+ // snapshot the fit frame height while the keyboard is closed, so the pin above
222
+ // holds the pre-keyboard viewport rather than a mid-feedback-loop value.
223
+ const preKeyboardFrameSize = React.useRef(0)
224
+ React.useEffect(() => {
225
+ if (isNativeKbFitSheet && open && !isKeyboardVisible && frameSize > 0) {
226
+ preKeyboardFrameSize.current = frameSize
227
+ }
228
+ }, [isNativeKbFitSheet, open, isKeyboardVisible, frameSize])
229
+
210
230
  // the space the snap positions are built against. WEB: the stable layout
211
231
  // viewport (document.documentElement.clientHeight), which the soft keyboard
212
232
  // never shrinks (unlike the measured screenSize / visualViewport). NATIVE:
@@ -307,10 +327,13 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
307
327
  // smaller; this override keeps it at the full height so the frame translates
308
328
  // with the keyboard but never resizes. 0 = no override (use the consumer maxHeight).
309
329
  const keyboardStableFrameHeight =
310
- isWebKbSheet && isKeyboardVisible && frameSize > 0 ? frameSize : 0
330
+ isWebKbSheet && isKeyboardVisible && frameSize > 0
331
+ ? frameSize
332
+ : isNativeKbFitSheet && isKeyboardVisible && preKeyboardFrameSize.current > 0
333
+ ? preKeyboardFrameSize.current
334
+ : 0
311
335
 
312
- const { useAnimatedNumber, useAnimatedNumberStyle, useAnimatedNumberReaction } =
313
- animationDriver
336
+ const { useAnimatedNumber, useAnimatedNumberStyle } = animationDriver
314
337
  const AnimatedView = (animationDriver.View ?? TamaguiView) as typeof Animated.View
315
338
 
316
339
  useIsomorphicLayoutEffect(() => {
@@ -346,42 +369,52 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
346
369
  // safety fallback timer for sheet close opacity
347
370
  const opacityFallbackTimer = React.useRef<ReturnType<typeof setTimeout> | null>(null)
348
371
 
349
- useAnimatedNumberReaction(
350
- {
351
- value: animatedNumber,
352
- hostRef: sheetRef,
353
- },
354
- React.useCallback(
355
- (value) => {
356
- at.current = value
357
- scrollBridge.paneY = value
358
- // update isAtTop for scroll enable/disable
359
- // activePositions[0] is the top snap point (keyboard-adjusted minY)
360
- const minY = activePositions[0]
361
- const wasAtTop = scrollBridge.isAtTop
362
- const nowAtTop = value <= minY + 5
363
- if (wasAtTop !== nowAtTop) {
364
- scrollBridge.isAtTop = nowAtTop
365
- // when reaching top, enable scroll; when leaving top, disable scroll
366
- // this preemptively sets scroll state before any gestures start
367
- if (nowAtTop) {
368
- // if scroll drifted during drag (e.g. fast swipe from position 1),
369
- // reset it to 0 before enabling free scroll
370
- if (scrollBridge.y > 0) {
371
- scrollBridge.forceScrollTo?.(0)
372
- scrollBridge.y = 0
373
- }
374
- scrollBridge.scrollLockY = undefined
375
- scrollBridge.setScrollEnabled?.(true)
376
- } else {
377
- scrollBridge.scrollLockY = 0
378
- scrollBridge.setScrollEnabled?.(false)
379
- }
372
+ const syncAnimatedPosition = useEvent((value: number) => {
373
+ at.current = value
374
+ scrollBridge.paneY = value
375
+
376
+ // update isAtTop for scroll enable/disable. activePositions[0] is the
377
+ // top snap point (keyboard-adjusted minY).
378
+ const minY = activePositions[0]
379
+ const wasAtTop = scrollBridge.isAtTop
380
+ const nowAtTop = value <= minY + 5
381
+ if (wasAtTop === nowAtTop) return
382
+
383
+ scrollBridge.isAtTop = nowAtTop
384
+ if (nowAtTop) {
385
+ if (scrollBridge.lockScrollAtTop) {
386
+ if (scrollBridge.y > 0) {
387
+ scrollBridge.forceScrollTo?.(0)
388
+ scrollBridge.y = 0
380
389
  }
381
- },
382
- [animationDriver, activePositions]
383
- )
384
- )
390
+ scrollBridge.scrollLockY = 0
391
+ scrollBridge.setScrollEnabled?.(false, 0)
392
+ return
393
+ }
394
+ // if scroll drifted during drag (e.g. fast swipe from position 1),
395
+ // reset it to 0 before enabling free scroll.
396
+ if (scrollBridge.y > 0) {
397
+ scrollBridge.forceScrollTo?.(0)
398
+ scrollBridge.y = 0
399
+ }
400
+ scrollBridge.scrollLockY = undefined
401
+ scrollBridge.setScrollEnabled?.(true)
402
+ } else {
403
+ scrollBridge.scrollLockY = 0
404
+ scrollBridge.setScrollEnabled?.(false)
405
+ }
406
+ })
407
+
408
+ const setAnimatedPositionDirect = useEvent((value: number) => {
409
+ syncAnimatedPosition(value)
410
+ animatedNumber.setValue(value, { type: 'direct' })
411
+ })
412
+
413
+ const getAnimatedPosition = useEvent(() => {
414
+ const value = animatedNumber.getValue()
415
+ syncAnimatedPosition(value)
416
+ return value
417
+ })
385
418
 
386
419
  function stopSpring() {
387
420
  animatedNumber.stop()
@@ -422,6 +455,7 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
422
455
  }
423
456
 
424
457
  const animationCompleteCallback = () => {
458
+ syncAnimatedPosition(toValue)
425
459
  if (opacityFallbackTimer.current) {
426
460
  clearTimeout(opacityFallbackTimer.current)
427
461
  opacityFallbackTimer.current = null
@@ -485,6 +519,7 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
485
519
  duration: 0,
486
520
  },
487
521
  () => {
522
+ syncAnimatedPosition(screenSize)
488
523
  // imperfect but struggling to render properly here
489
524
  setTimeout(() => {
490
525
  setDisableAnimation(false)
@@ -678,7 +713,7 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
678
713
  const grant = () => {
679
714
  setPanning(true)
680
715
  stopSpring()
681
- startY = at.current
716
+ startY = getAnimatedPosition()
682
717
  }
683
718
 
684
719
  let isExternalDrag = false
@@ -700,7 +735,7 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
700
735
  grant()
701
736
  }
702
737
  const to = dy + startY
703
- animatedNumber.setValue(resisted(to, minY), { type: 'direct' })
738
+ setAnimatedPositionDirect(resisted(to, minY))
704
739
  }
705
740
 
706
741
  scrollBridge.release = release
@@ -733,7 +768,7 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
733
768
  scrollBridge.setParentDragging(true)
734
769
  }
735
770
 
736
- animatedNumber.setValue(to, { type: 'direct' })
771
+ setAnimatedPositionDirect(to)
737
772
  },
738
773
  onPanResponderEnd: finish,
739
774
  onPanResponderTerminate: finish,
@@ -799,15 +834,12 @@ export const SheetImplementationCustom = React.forwardRef<View, SheetProps>(
799
834
  stopSpring,
800
835
  scrollBridge,
801
836
  setIsDragging,
802
- getCurrentPosition: () => at.current,
837
+ getCurrentPosition: getAnimatedPosition,
803
838
  resisted,
804
839
  disableDrag,
805
840
  isShowingInnerSheet,
806
- setAnimatedPosition: (val: number) => {
807
- // directly set the animated value for smooth dragging
808
- at.current = val
809
- animatedNumber.setValue(val, { type: 'direct' })
810
- },
841
+ // directly set the animated value for smooth dragging
842
+ setAnimatedPosition: setAnimatedPositionDirect,
811
843
  dismissOnSnapToBottom,
812
844
  snapPointsMode,
813
845
  isKeyboardVisible,
@@ -72,6 +72,7 @@ export const SheetScrollView = React.forwardRef<
72
72
  maxHeight: screenSize || undefined,
73
73
  }
74
74
  : { flex: 1 }
75
+ const contentContainerStyle = hasFit ? undefined : { minHeight: '100%' as const }
75
76
 
76
77
  // when the keyboard is open, pin the scroll view to the sheet's pre-keyboard
77
78
  // frame height (frozenFrameHeight), overriding any consumer maxHeight. on web
@@ -90,16 +91,28 @@ export const SheetScrollView = React.forwardRef<
90
91
 
91
92
  // RNGH scroll locking state
92
93
  const currentScrollOffset = useRef(0)
94
+ const lastEmittedScrollOffset = useRef(0)
93
95
  const lockedScrollY = useRef(0)
94
96
  const focusedInputScrollFrame = useRef(0)
95
97
 
96
98
  const setScrollEnabled = (next: boolean, lockTo?: number) => {
97
99
  if (!next) {
98
- const lockY = lockTo ?? currentScrollOffset.current
100
+ const lockY = lockTo ?? scrollBridge.scrollLockY ?? currentScrollOffset.current
101
+ if (scrollBridge.enabled === false && scrollBridge.scrollLockY === lockY) {
102
+ return
103
+ }
104
+ scrollBridge.enabled = false
99
105
  lockedScrollY.current = lockY
100
106
  scrollBridge.scrollLockY = lockY
101
- scrollRef.current?.scrollTo?.({ x: 0, y: lockY, animated: false })
107
+ if (currentScrollOffset.current !== lockY) {
108
+ scrollRef.current?.scrollTo?.({ x: 0, y: lockY, animated: false })
109
+ currentScrollOffset.current = lockY
110
+ }
102
111
  } else {
112
+ if (scrollBridge.enabled === true && scrollBridge.scrollLockY === undefined) {
113
+ return
114
+ }
115
+ scrollBridge.enabled = true
103
116
  lockedScrollY.current = currentScrollOffset.current
104
117
  scrollBridge.scrollLockY = undefined
105
118
  }
@@ -107,8 +120,36 @@ export const SheetScrollView = React.forwardRef<
107
120
 
108
121
  const forceScrollTo = (y: number) => {
109
122
  scrollRef.current?.scrollTo?.({ x: 0, y, animated: false })
123
+ currentScrollOffset.current = y
110
124
  }
111
125
 
126
+ const emitManualScroll = React.useCallback(
127
+ (node: HTMLElement, y: number) => {
128
+ currentScrollOffset.current = y
129
+ scrollBridge.y = y
130
+ if (y > 0) scrollBridge.scrollStartY = -1
131
+ lastEmittedScrollOffset.current = y
132
+ onScroll?.({
133
+ nativeEvent: {
134
+ contentOffset: {
135
+ x: node.scrollLeft,
136
+ y,
137
+ },
138
+ contentSize: {
139
+ height: node.scrollHeight,
140
+ width: node.scrollWidth,
141
+ },
142
+ layoutMeasurement: {
143
+ height: node.offsetHeight,
144
+ width: node.offsetWidth,
145
+ },
146
+ },
147
+ timeStamp: Date.now(),
148
+ } as any)
149
+ },
150
+ [onScroll, scrollBridge]
151
+ )
152
+
112
153
  const scrollFocusedInputClearOfKeyboard = React.useCallback(() => {
113
154
  if (!isWeb || !hasFit || !isKeyboardVisible || keyboardOccludedHeight <= 0) {
114
155
  return
@@ -206,6 +247,7 @@ export const SheetScrollView = React.forwardRef<
206
247
  hasScrollableContent,
207
248
  scrollEnabled,
208
249
  setScrollEnabled,
250
+ onManualScroll: emitManualScroll,
209
251
  })
210
252
 
211
253
  // content wrapper for measuring height
@@ -259,25 +301,30 @@ export const SheetScrollView = React.forwardRef<
259
301
  animated: false,
260
302
  })
261
303
  }
304
+ currentScrollOffset.current = scrollBridge.scrollLockY
262
305
  scrollBridge.y = scrollBridge.scrollLockY
263
- onScroll?.({
264
- ...e,
265
- nativeEvent: {
266
- ...e.nativeEvent,
267
- contentOffset: {
268
- ...e.nativeEvent.contentOffset,
269
- y: scrollBridge.scrollLockY,
306
+ if (lastEmittedScrollOffset.current !== scrollBridge.scrollLockY) {
307
+ lastEmittedScrollOffset.current = scrollBridge.scrollLockY
308
+ onScroll?.({
309
+ ...e,
310
+ nativeEvent: {
311
+ ...e.nativeEvent,
312
+ contentOffset: {
313
+ ...e.nativeEvent.contentOffset,
314
+ y: scrollBridge.scrollLockY,
315
+ },
270
316
  },
271
- },
272
- })
317
+ })
318
+ }
273
319
  return
274
320
  }
275
321
 
276
322
  scrollBridge.y = y
277
323
  if (y > 0) scrollBridge.scrollStartY = -1
324
+ lastEmittedScrollOffset.current = y
278
325
  onScroll?.(e)
279
326
  }}
280
- contentContainerStyle={{ minHeight: '100%' }}
327
+ contentContainerStyle={contentContainerStyle}
281
328
  bounces={false}
282
329
  keyboardShouldPersistTaps="always"
283
330
  keyboardDismissMode="none"
@@ -306,9 +353,10 @@ export const SheetScrollView = React.forwardRef<
306
353
  currentScrollOffset.current = y
307
354
  scrollBridge.y = y
308
355
  if (y > 0) scrollBridge.scrollStartY = -1
356
+ lastEmittedScrollOffset.current = y
309
357
  onScroll?.(e)
310
358
  }}
311
- contentContainerStyle={{ minHeight: '100%' }}
359
+ contentContainerStyle={contentContainerStyle}
312
360
  {...gestureProps}
313
361
  {...props}
314
362
  {...keyboardFrozenOverride}
@@ -7,16 +7,36 @@ import { getGestureHandler, type GestureState } from '@tamagui/native'
7
7
 
8
8
  export type { GestureState as GestureHandlerState } from '@tamagui/native'
9
9
 
10
+ const SHEET_GESTURE_STATE_KEY = '__tamagui_sheet_gesture_state__'
11
+
12
+ function getSheetGestureHandlerState(): GestureState {
13
+ const g = globalThis as typeof globalThis & {
14
+ [SHEET_GESTURE_STATE_KEY]?: GestureState
15
+ }
16
+
17
+ return g[SHEET_GESTURE_STATE_KEY] ?? getGestureHandler().state
18
+ }
19
+
10
20
  // backward compat helpers
11
21
  export function isGestureHandlerEnabled(): boolean {
12
- return getGestureHandler().isEnabled
22
+ return getSheetGestureHandlerState().enabled
13
23
  }
14
24
 
15
25
  export function getGestureHandlerState(): GestureState {
16
- return getGestureHandler().state
26
+ return getSheetGestureHandlerState()
17
27
  }
18
28
 
19
29
  export function setGestureHandlerState(updates: Partial<GestureState>): void {
30
+ const g = globalThis as typeof globalThis & {
31
+ [SHEET_GESTURE_STATE_KEY]?: GestureState
32
+ }
33
+
34
+ const sheetState = g[SHEET_GESTURE_STATE_KEY]
35
+ if (sheetState) {
36
+ Object.assign(sheetState, updates)
37
+ return
38
+ }
39
+
20
40
  getGestureHandler().set(updates)
21
41
  }
22
42
 
package/src/index.ts CHANGED
@@ -9,3 +9,7 @@ export * from './SheetScrollView'
9
9
  export * from './nativeSheet'
10
10
  export * from './types'
11
11
  export * from './contexts'
12
+ export {
13
+ getGestureHandlerState as unstable_getSheetGestureHandlerState,
14
+ isGestureHandlerEnabled as unstable_isSheetGestureHandlerEnabled,
15
+ } from './gestureState'
@@ -4,8 +4,16 @@
4
4
 
5
5
  import { getGestureHandler } from '@tamagui/native'
6
6
 
7
+ import type { GestureState } from '@tamagui/native'
8
+
9
+ const SHEET_GESTURE_STATE_KEY = '__tamagui_sheet_gesture_state__'
10
+
7
11
  export function isGestureHandlerEnabled(): boolean {
8
- return getGestureHandler().isEnabled
12
+ const g = globalThis as typeof globalThis & {
13
+ [SHEET_GESTURE_STATE_KEY]?: GestureState
14
+ }
15
+
16
+ return g[SHEET_GESTURE_STATE_KEY]?.enabled ?? getGestureHandler().isEnabled
9
17
  }
10
18
 
11
19
  export interface SetupGestureHandlerConfig {
@@ -24,11 +32,12 @@ export function setupGestureHandler(config: SetupGestureHandlerConfig): void {
24
32
  const { Gesture, GestureDetector, ScrollView } = config
25
33
 
26
34
  if (Gesture && GestureDetector) {
27
- getGestureHandler().set({
35
+ g[SHEET_GESTURE_STATE_KEY] = {
28
36
  enabled: true,
29
37
  Gesture,
30
38
  GestureDetector,
31
39
  ScrollView: ScrollView || null,
32
- })
40
+ RootView: null,
41
+ } satisfies GestureState
33
42
  }
34
43
  }
package/src/types.tsx CHANGED
@@ -126,6 +126,9 @@ export type ScrollBridge = {
126
126
  _lastTouchY?: number
127
127
  // scroll lock position for forcing scroll back when pan handles
128
128
  scrollLockY?: number
129
+ // keep scroll locked while a drag that started below the top snap is still
130
+ // deciding whether to hand off into content scrolling.
131
+ lockScrollAtTop?: boolean
129
132
  // force scroll to position (compensates for async setNativeProps)
130
133
  forceScrollTo?: (y: number) => void
131
134
  // whether sheet is at top position (for scroll enable/disable)