@tamagui/sheet 2.0.0-1769200478218 → 2.0.0-1769256574467

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 (150) hide show
  1. package/dist/cjs/GestureDetectorWrapper.cjs +48 -0
  2. package/dist/cjs/GestureDetectorWrapper.js +29 -0
  3. package/dist/cjs/GestureDetectorWrapper.js.map +6 -0
  4. package/dist/cjs/GestureDetectorWrapper.native.js +53 -0
  5. package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -0
  6. package/dist/cjs/GestureSheetContext.cjs +52 -0
  7. package/dist/cjs/GestureSheetContext.js +43 -0
  8. package/dist/cjs/GestureSheetContext.js.map +6 -0
  9. package/dist/cjs/GestureSheetContext.native.js +56 -0
  10. package/dist/cjs/GestureSheetContext.native.js.map +1 -0
  11. package/dist/cjs/SheetImplementationCustom.cjs +85 -40
  12. package/dist/cjs/SheetImplementationCustom.js +81 -58
  13. package/dist/cjs/SheetImplementationCustom.js.map +1 -1
  14. package/dist/cjs/SheetImplementationCustom.native.js +105 -50
  15. package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
  16. package/dist/cjs/SheetScrollView.cjs +80 -8
  17. package/dist/cjs/SheetScrollView.js +76 -10
  18. package/dist/cjs/SheetScrollView.js.map +1 -1
  19. package/dist/cjs/SheetScrollView.native.js +94 -10
  20. package/dist/cjs/SheetScrollView.native.js.map +1 -1
  21. package/dist/cjs/gestureState.cjs +31 -0
  22. package/dist/cjs/gestureState.js +24 -0
  23. package/dist/cjs/gestureState.js.map +6 -0
  24. package/dist/cjs/gestureState.native.js +34 -0
  25. package/dist/cjs/gestureState.native.js.map +1 -0
  26. package/dist/cjs/setupGestureHandler.cjs +43 -0
  27. package/dist/cjs/setupGestureHandler.js +35 -0
  28. package/dist/cjs/setupGestureHandler.js.map +6 -0
  29. package/dist/cjs/setupGestureHandler.native.js +47 -0
  30. package/dist/cjs/setupGestureHandler.native.js.map +1 -0
  31. package/dist/cjs/useGestureHandlerPan.cjs +125 -0
  32. package/dist/cjs/useGestureHandlerPan.js +116 -0
  33. package/dist/cjs/useGestureHandlerPan.js.map +6 -0
  34. package/dist/cjs/useGestureHandlerPan.native.js +134 -0
  35. package/dist/cjs/useGestureHandlerPan.native.js.map +1 -0
  36. package/dist/esm/GestureDetectorWrapper.js +15 -0
  37. package/dist/esm/GestureDetectorWrapper.js.map +6 -0
  38. package/dist/esm/GestureDetectorWrapper.mjs +25 -0
  39. package/dist/esm/GestureDetectorWrapper.mjs.map +1 -0
  40. package/dist/esm/GestureDetectorWrapper.native.js +27 -0
  41. package/dist/esm/GestureDetectorWrapper.native.js.map +1 -0
  42. package/dist/esm/GestureSheetContext.js +28 -0
  43. package/dist/esm/GestureSheetContext.js.map +6 -0
  44. package/dist/esm/GestureSheetContext.mjs +28 -0
  45. package/dist/esm/GestureSheetContext.mjs.map +1 -0
  46. package/dist/esm/GestureSheetContext.native.js +29 -0
  47. package/dist/esm/GestureSheetContext.native.js.map +1 -0
  48. package/dist/esm/SheetImplementationCustom.js +83 -57
  49. package/dist/esm/SheetImplementationCustom.js.map +1 -1
  50. package/dist/esm/SheetImplementationCustom.mjs +85 -40
  51. package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
  52. package/dist/esm/SheetImplementationCustom.native.js +105 -50
  53. package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
  54. package/dist/esm/SheetScrollView.js +77 -9
  55. package/dist/esm/SheetScrollView.js.map +1 -1
  56. package/dist/esm/SheetScrollView.mjs +80 -8
  57. package/dist/esm/SheetScrollView.mjs.map +1 -1
  58. package/dist/esm/SheetScrollView.native.js +94 -10
  59. package/dist/esm/SheetScrollView.native.js.map +1 -1
  60. package/dist/esm/gestureState.js +13 -0
  61. package/dist/esm/gestureState.js.map +6 -0
  62. package/dist/esm/gestureState.mjs +5 -0
  63. package/dist/esm/gestureState.mjs.map +1 -0
  64. package/dist/esm/gestureState.native.js +5 -0
  65. package/dist/esm/gestureState.native.js.map +1 -0
  66. package/dist/esm/setupGestureHandler.js +19 -0
  67. package/dist/esm/setupGestureHandler.js.map +6 -0
  68. package/dist/esm/setupGestureHandler.mjs +19 -0
  69. package/dist/esm/setupGestureHandler.mjs.map +1 -0
  70. package/dist/esm/setupGestureHandler.native.js +20 -0
  71. package/dist/esm/setupGestureHandler.native.js.map +1 -0
  72. package/dist/esm/useGestureHandlerPan.js +101 -0
  73. package/dist/esm/useGestureHandlerPan.js.map +6 -0
  74. package/dist/esm/useGestureHandlerPan.mjs +102 -0
  75. package/dist/esm/useGestureHandlerPan.mjs.map +1 -0
  76. package/dist/esm/useGestureHandlerPan.native.js +108 -0
  77. package/dist/esm/useGestureHandlerPan.native.js.map +1 -0
  78. package/dist/jsx/GestureDetectorWrapper.js +15 -0
  79. package/dist/jsx/GestureDetectorWrapper.js.map +6 -0
  80. package/dist/jsx/GestureDetectorWrapper.mjs +25 -0
  81. package/dist/jsx/GestureDetectorWrapper.mjs.map +1 -0
  82. package/dist/jsx/GestureDetectorWrapper.native.js +53 -0
  83. package/dist/jsx/GestureDetectorWrapper.native.js.map +1 -0
  84. package/dist/jsx/GestureSheetContext.js +28 -0
  85. package/dist/jsx/GestureSheetContext.js.map +6 -0
  86. package/dist/jsx/GestureSheetContext.mjs +28 -0
  87. package/dist/jsx/GestureSheetContext.mjs.map +1 -0
  88. package/dist/jsx/GestureSheetContext.native.js +56 -0
  89. package/dist/jsx/GestureSheetContext.native.js.map +1 -0
  90. package/dist/jsx/SheetImplementationCustom.js +83 -57
  91. package/dist/jsx/SheetImplementationCustom.js.map +1 -1
  92. package/dist/jsx/SheetImplementationCustom.mjs +85 -40
  93. package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
  94. package/dist/jsx/SheetImplementationCustom.native.js +105 -50
  95. package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
  96. package/dist/jsx/SheetScrollView.js +77 -9
  97. package/dist/jsx/SheetScrollView.js.map +1 -1
  98. package/dist/jsx/SheetScrollView.mjs +80 -8
  99. package/dist/jsx/SheetScrollView.mjs.map +1 -1
  100. package/dist/jsx/SheetScrollView.native.js +94 -10
  101. package/dist/jsx/SheetScrollView.native.js.map +1 -1
  102. package/dist/jsx/gestureState.js +13 -0
  103. package/dist/jsx/gestureState.js.map +6 -0
  104. package/dist/jsx/gestureState.mjs +5 -0
  105. package/dist/jsx/gestureState.mjs.map +1 -0
  106. package/dist/jsx/gestureState.native.js +34 -0
  107. package/dist/jsx/gestureState.native.js.map +1 -0
  108. package/dist/jsx/setupGestureHandler.js +19 -0
  109. package/dist/jsx/setupGestureHandler.js.map +6 -0
  110. package/dist/jsx/setupGestureHandler.mjs +19 -0
  111. package/dist/jsx/setupGestureHandler.mjs.map +1 -0
  112. package/dist/jsx/setupGestureHandler.native.js +47 -0
  113. package/dist/jsx/setupGestureHandler.native.js.map +1 -0
  114. package/dist/jsx/useGestureHandlerPan.js +101 -0
  115. package/dist/jsx/useGestureHandlerPan.js.map +6 -0
  116. package/dist/jsx/useGestureHandlerPan.mjs +102 -0
  117. package/dist/jsx/useGestureHandlerPan.mjs.map +1 -0
  118. package/dist/jsx/useGestureHandlerPan.native.js +134 -0
  119. package/dist/jsx/useGestureHandlerPan.native.js.map +1 -0
  120. package/package.json +48 -21
  121. package/src/GestureDetectorWrapper.tsx +41 -0
  122. package/src/GestureSheetContext.tsx +62 -0
  123. package/src/SheetImplementationCustom.tsx +124 -57
  124. package/src/SheetScrollView.tsx +157 -8
  125. package/src/gestureState.ts +17 -0
  126. package/src/setupGestureHandler.ts +32 -0
  127. package/src/types.tsx +15 -0
  128. package/src/useGestureHandlerPan.tsx +299 -0
  129. package/types/GestureDetectorWrapper.d.ts +14 -0
  130. package/types/GestureDetectorWrapper.d.ts.map +1 -0
  131. package/types/GestureDetectorWrapper.native.d.ts +14 -0
  132. package/types/GestureDetectorWrapper.native.d.ts.map +1 -0
  133. package/types/GestureSheetContext.d.ts +36 -0
  134. package/types/GestureSheetContext.d.ts.map +1 -0
  135. package/types/SheetImplementationCustom.d.ts.map +1 -1
  136. package/types/SheetScrollView.d.ts.map +1 -1
  137. package/types/gestureState.d.ts +9 -0
  138. package/types/gestureState.d.ts.map +1 -0
  139. package/types/gestureState.native.d.ts +12 -0
  140. package/types/gestureState.native.d.ts.map +1 -0
  141. package/types/setupGestureHandler.d.ts +12 -0
  142. package/types/setupGestureHandler.d.ts.map +1 -0
  143. package/types/setupGestureHandler.native.d.ts +41 -0
  144. package/types/setupGestureHandler.native.d.ts.map +1 -0
  145. package/types/types.d.ts +8 -0
  146. package/types/types.d.ts.map +1 -1
  147. package/types/useGestureHandlerPan.d.ts +43 -0
  148. package/types/useGestureHandlerPan.d.ts.map +1 -0
  149. package/types/useGestureHandlerPan.native.d.ts +33 -0
  150. package/types/useGestureHandlerPan.native.d.ts.map +1 -0
@@ -0,0 +1,19 @@
1
+ import { setGestureHandlerState, isGestureHandlerEnabled } from "@tamagui/native";
2
+ function setupGestureHandler(config) {
3
+ const g = globalThis;
4
+ if (g.__tamagui_sheet_gesture_handler_setup)
5
+ return;
6
+ g.__tamagui_sheet_gesture_handler_setup = !0;
7
+ const { Gesture, GestureDetector, ScrollView } = config;
8
+ Gesture && GestureDetector && setGestureHandlerState({
9
+ enabled: !0,
10
+ Gesture,
11
+ GestureDetector,
12
+ ScrollView: ScrollView || null
13
+ });
14
+ }
15
+ export {
16
+ isGestureHandlerEnabled,
17
+ setupGestureHandler
18
+ };
19
+ //# sourceMappingURL=setupGestureHandler.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/setupGestureHandler.ts"],
4
+ "mappings": "AAIA,SAAS,wBAAwB,+BAA+B;AAUzD,SAAS,oBAAoB,QAAyC;AAC3E,QAAM,IAAI;AACV,MAAI,EAAE;AACJ;AAEF,IAAE,wCAAwC;AAE1C,QAAM,EAAE,SAAS,iBAAiB,WAAW,IAAI;AAEjD,EAAI,WAAW,mBACb,uBAAuB;AAAA,IACrB,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA,YAAY,cAAc;AAAA,EAC5B,CAAC;AAEL;",
5
+ "names": []
6
+ }
@@ -0,0 +1,19 @@
1
+ import { setGestureHandlerState, isGestureHandlerEnabled } from "@tamagui/native";
2
+ function setupGestureHandler(config) {
3
+ const g = globalThis;
4
+ if (g.__tamagui_sheet_gesture_handler_setup) return;
5
+ g.__tamagui_sheet_gesture_handler_setup = !0;
6
+ const {
7
+ Gesture,
8
+ GestureDetector,
9
+ ScrollView
10
+ } = config;
11
+ Gesture && GestureDetector && setGestureHandlerState({
12
+ enabled: !0,
13
+ Gesture,
14
+ GestureDetector,
15
+ ScrollView: ScrollView || null
16
+ });
17
+ }
18
+ export { isGestureHandlerEnabled, setupGestureHandler };
19
+ //# sourceMappingURL=setupGestureHandler.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["setGestureHandlerState","isGestureHandlerEnabled","setupGestureHandler","config","g","globalThis","__tamagui_sheet_gesture_handler_setup","Gesture","GestureDetector","ScrollView","enabled"],"sources":["../../src/setupGestureHandler.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,sBAAA,EAAwBC,uBAAA,QAA+B;AAUzD,SAASC,oBAAoBC,MAAA,EAAyC;EAC3E,MAAMC,CAAA,GAAIC,UAAA;EACV,IAAID,CAAA,CAAEE,qCAAA,EACJ;EAEFF,CAAA,CAAEE,qCAAA,GAAwC;EAE1C,MAAM;IAAEC,OAAA;IAASC,eAAA;IAAiBC;EAAW,IAAIN,MAAA;EAE7CI,OAAA,IAAWC,eAAA,IACbR,sBAAA,CAAuB;IACrBU,OAAA,EAAS;IACTH,OAAA;IACAC,eAAA;IACAC,UAAA,EAAYA,UAAA,IAAc;EAC5B,CAAC;AAEL","ignoreList":[]}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: !0
22
+ }), mod);
23
+ var setupGestureHandler_exports = {};
24
+ __export(setupGestureHandler_exports, {
25
+ isGestureHandlerEnabled: () => import_native.isGestureHandlerEnabled,
26
+ setupGestureHandler: () => setupGestureHandler
27
+ });
28
+ module.exports = __toCommonJS(setupGestureHandler_exports);
29
+ var import_native = require("@tamagui/native");
30
+ function setupGestureHandler(config) {
31
+ var g = globalThis;
32
+ if (!g.__tamagui_sheet_gesture_handler_setup) {
33
+ g.__tamagui_sheet_gesture_handler_setup = !0;
34
+ var {
35
+ Gesture,
36
+ GestureDetector,
37
+ ScrollView
38
+ } = config;
39
+ Gesture && GestureDetector && (0, import_native.setGestureHandlerState)({
40
+ enabled: !0,
41
+ Gesture,
42
+ GestureDetector,
43
+ ScrollView: ScrollView || null
44
+ });
45
+ }
46
+ }
47
+ //# sourceMappingURL=setupGestureHandler.native.js.map
@@ -0,0 +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"],"sources":["../../src/setupGestureHandler.ts"],"sourcesContent":[null],"mappings":"AAIA,YAAS;;AAUF,IAAAA,SAAS,GAAAC,MAAA,CAAAC,cAA6D;AAC3E,IAAAC,gBAAU,GAAAF,MAAA,CAAAG,wBAAA;AACV,IAAAC,iBAAM,GAAAJ,MAAA,CAAAK,mBAAA;AACJ,IAAAC,YAAA,GAAAN,MAAA,CAAAO,SAAA,CAAAC,cAAA;AAEF,IAAEC,QAAA,GAAAA,CAAAC,MAAA,EAAAC,GAAA;IAEF,SAAQC,IAAA,IAASD,GAAA,EAEbZ,SAAW,CAAAW,MAAA,EAAAE,IAAA;MAAAC,GACb,EAAAF,GAAA,CAAAC,IAAA;MAAAE,UAAuB;IAAA;EAAA;EAAAC,WACZ,GAAAA,CAAAC,EAAA,EAAAC,IAAA,EAAAC,MAAA,EAAAC,IAAA;IAAA,IACTF,IAAA,WAAAA,IAAA,uBAAAA,IAAA,gBACA,SAAAG,GAAA,IAAAhB,iBAAA,CAAAa,IAAA,GACA,CAAAX,YAAY,CAAAe,IAAA,CAAAL,EAAA,EAAAI,GAAc,KAAAA,GAAA,KAAAF,MAAA,IAAAnB,SAAA,CAAAiB,EAAA,EAAAI,GAAA;MAAAP,GAAA,EAAAA,CAAA,KAAAI,IAAA,CAAAG,GAAA;MAAAN,UAAA,IAAAK,IAAA,GAAAjB,gBAAA,CAAAe,IAAA,EAAAG,GAAA,MAAAD,IAAA,CAAAL;IAAA;IAC5B,OAACE,EAAA;EAEL","ignoreList":[]}
@@ -0,0 +1,101 @@
1
+ import { useCallback, useMemo, useRef } from "react";
2
+ import { getGestureHandlerState, isGestureHandlerEnabled } from "./gestureState";
3
+ const AT_TOP_THRESHOLD = 5;
4
+ function useGestureHandlerPan(config) {
5
+ const {
6
+ positions,
7
+ frameSize,
8
+ setPosition,
9
+ animateTo,
10
+ stopSpring,
11
+ scrollBridge,
12
+ setIsDragging,
13
+ getCurrentPosition,
14
+ resisted,
15
+ disableDrag,
16
+ isShowingInnerSheet,
17
+ setAnimatedPosition,
18
+ scrollGestureRef
19
+ } = config, gestureHandlerEnabled = isGestureHandlerEnabled(), panGestureRef = useRef(null), gestureStateRef = useRef({
20
+ startY: 0,
21
+ // track last translation when pan was active (for position calculation after handoff)
22
+ lastPanTranslationY: 0,
23
+ // accumulated position offset from all pan movements
24
+ accumulatedOffset: 0,
25
+ // track previous translation for direction detection (like actions-sheet)
26
+ prevTranslationY: 0,
27
+ // track if scroll was engaged (scrollY > 0) at some point
28
+ scrollEngaged: !1
29
+ }), onStart = useCallback(() => {
30
+ stopSpring(), setIsDragging(!0);
31
+ }, [stopSpring, setIsDragging]), onEnd = useCallback(
32
+ (closestPoint) => {
33
+ setIsDragging(!1), scrollBridge.setParentDragging(!1), scrollBridge.setScrollEnabled?.(!0), setPosition(closestPoint), animateTo(closestPoint);
34
+ },
35
+ [setIsDragging, scrollBridge, setPosition, animateTo]
36
+ );
37
+ return {
38
+ panGesture: useMemo(() => {
39
+ if (!gestureHandlerEnabled || disableDrag || isShowingInnerSheet || !frameSize)
40
+ return null;
41
+ const { Gesture } = getGestureHandlerState();
42
+ if (!Gesture)
43
+ return null;
44
+ const minY = positions[0], gs = gestureStateRef.current, gesture = Gesture.Pan().withRef(panGestureRef).failOffsetX([-20, 20]).shouldCancelWhenOutside(!1).onBegin(() => {
45
+ const pos = getCurrentPosition(), atTop = pos <= minY + AT_TOP_THRESHOLD, currentScrollY = scrollBridge.y;
46
+ gs.startY = pos, gs.lastPanTranslationY = 0, gs.accumulatedOffset = 0, gs.prevTranslationY = 0, gs.scrollEngaged = currentScrollY > 0, atTop || scrollBridge.setScrollEnabled?.(!1, 0);
47
+ }).onStart(() => {
48
+ scrollBridge.initialPosition = gs.startY, onStart();
49
+ }).onChange((event) => {
50
+ const { translationY } = event, isSwipingDown = gs.prevTranslationY < translationY, deltaY = translationY - gs.prevTranslationY;
51
+ gs.prevTranslationY = translationY;
52
+ const scrollY = scrollBridge.y;
53
+ scrollY > 0 && (gs.scrollEngaged = !0);
54
+ const isCurrentlyAtTop = gs.startY + gs.accumulatedOffset <= minY + AT_TOP_THRESHOLD, nodeIsScrolling = scrollY > 0;
55
+ let panHandles = !1;
56
+ if (isCurrentlyAtTop ? isSwipingDown ? nodeIsScrolling ? panHandles = !1 : (gs.scrollEngaged, panHandles = !0) : panHandles = !1 : isSwipingDown ? panHandles = !nodeIsScrolling : panHandles = !0, panHandles) {
57
+ const lockTo = isCurrentlyAtTop ? void 0 : 0;
58
+ scrollBridge.setScrollEnabled?.(!1, lockTo), gs.accumulatedOffset += deltaY;
59
+ const newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);
60
+ scrollBridge.paneY = newPosition, setAnimatedPosition(newPosition), scrollBridge.setParentDragging(newPosition > minY);
61
+ } else
62
+ scrollBridge.setScrollEnabled?.(!0);
63
+ }).onEnd((event) => {
64
+ const { velocityY } = event, currentPos = gs.startY + gs.accumulatedOffset;
65
+ if (scrollBridge.scrollLockY = void 0, currentPos <= minY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
66
+ onEnd(0);
67
+ return;
68
+ }
69
+ const velocity = velocityY / 1e3, projectedEnd = currentPos + frameSize * velocity * 0.2;
70
+ let closestPoint = 0, minDist = Number.POSITIVE_INFINITY;
71
+ for (let i = 0; i < positions.length; i++) {
72
+ const pos = positions[i], dist = Math.abs(projectedEnd - pos);
73
+ dist < minDist && (minDist = dist, closestPoint = i);
74
+ }
75
+ onEnd(closestPoint);
76
+ }).onFinalize(() => {
77
+ scrollBridge.scrollLockY = void 0;
78
+ }).runOnJS(!0);
79
+ return scrollGestureRef?.current ? gesture.simultaneousWithExternalGesture(scrollGestureRef.current) : gesture;
80
+ }, [
81
+ gestureHandlerEnabled,
82
+ disableDrag,
83
+ isShowingInnerSheet,
84
+ frameSize,
85
+ positions,
86
+ scrollBridge,
87
+ getCurrentPosition,
88
+ resisted,
89
+ onStart,
90
+ onEnd,
91
+ setIsDragging,
92
+ setAnimatedPosition
93
+ ]),
94
+ panGestureRef,
95
+ gestureHandlerEnabled
96
+ };
97
+ }
98
+ export {
99
+ useGestureHandlerPan
100
+ };
101
+ //# sourceMappingURL=useGestureHandlerPan.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/useGestureHandlerPan.tsx"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -0,0 +1,102 @@
1
+ import { useCallback, useMemo, useRef } from "react";
2
+ import { getGestureHandlerState, isGestureHandlerEnabled } from "./gestureState.mjs";
3
+ const AT_TOP_THRESHOLD = 5;
4
+ function useGestureHandlerPan(config) {
5
+ const {
6
+ positions,
7
+ frameSize,
8
+ setPosition,
9
+ animateTo,
10
+ stopSpring,
11
+ scrollBridge,
12
+ setIsDragging,
13
+ getCurrentPosition,
14
+ resisted,
15
+ disableDrag,
16
+ isShowingInnerSheet,
17
+ setAnimatedPosition,
18
+ scrollGestureRef
19
+ } = config,
20
+ gestureHandlerEnabled = isGestureHandlerEnabled(),
21
+ panGestureRef = useRef(null),
22
+ gestureStateRef = useRef({
23
+ startY: 0,
24
+ // track last translation when pan was active (for position calculation after handoff)
25
+ lastPanTranslationY: 0,
26
+ // accumulated position offset from all pan movements
27
+ accumulatedOffset: 0,
28
+ // track previous translation for direction detection (like actions-sheet)
29
+ prevTranslationY: 0,
30
+ // track if scroll was engaged (scrollY > 0) at some point
31
+ scrollEngaged: !1
32
+ }),
33
+ onStart = useCallback(() => {
34
+ stopSpring(), setIsDragging(!0);
35
+ }, [stopSpring, setIsDragging]),
36
+ onEnd = useCallback(closestPoint => {
37
+ setIsDragging(!1), scrollBridge.setParentDragging(!1), scrollBridge.setScrollEnabled?.(!0), setPosition(closestPoint), animateTo(closestPoint);
38
+ }, [setIsDragging, scrollBridge, setPosition, animateTo]);
39
+ return {
40
+ panGesture: useMemo(() => {
41
+ if (!gestureHandlerEnabled || disableDrag || isShowingInnerSheet || !frameSize) return null;
42
+ const {
43
+ Gesture
44
+ } = getGestureHandlerState();
45
+ if (!Gesture) return null;
46
+ const minY = positions[0],
47
+ gs = gestureStateRef.current,
48
+ gesture = Gesture.Pan().withRef(panGestureRef).failOffsetX([-20, 20]).shouldCancelWhenOutside(!1).onBegin(() => {
49
+ const pos = getCurrentPosition(),
50
+ atTop = pos <= minY + AT_TOP_THRESHOLD,
51
+ currentScrollY = scrollBridge.y;
52
+ gs.startY = pos, gs.lastPanTranslationY = 0, gs.accumulatedOffset = 0, gs.prevTranslationY = 0, gs.scrollEngaged = currentScrollY > 0, atTop || scrollBridge.setScrollEnabled?.(!1, 0);
53
+ }).onStart(() => {
54
+ scrollBridge.initialPosition = gs.startY, onStart();
55
+ }).onChange(event => {
56
+ const {
57
+ translationY
58
+ } = event,
59
+ isSwipingDown = gs.prevTranslationY < translationY,
60
+ deltaY = translationY - gs.prevTranslationY;
61
+ gs.prevTranslationY = translationY;
62
+ const scrollY = scrollBridge.y;
63
+ scrollY > 0 && (gs.scrollEngaged = !0);
64
+ const isCurrentlyAtTop = gs.startY + gs.accumulatedOffset <= minY + AT_TOP_THRESHOLD,
65
+ nodeIsScrolling = scrollY > 0;
66
+ let panHandles = !1;
67
+ if (isCurrentlyAtTop ? isSwipingDown ? nodeIsScrolling ? panHandles = !1 : (gs.scrollEngaged, panHandles = !0) : panHandles = !1 : isSwipingDown ? panHandles = !nodeIsScrolling : panHandles = !0, panHandles) {
68
+ const lockTo = isCurrentlyAtTop ? void 0 : 0;
69
+ scrollBridge.setScrollEnabled?.(!1, lockTo), gs.accumulatedOffset += deltaY;
70
+ const newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);
71
+ scrollBridge.paneY = newPosition, setAnimatedPosition(newPosition), scrollBridge.setParentDragging(newPosition > minY);
72
+ } else scrollBridge.setScrollEnabled?.(!0);
73
+ }).onEnd(event => {
74
+ const {
75
+ velocityY
76
+ } = event,
77
+ currentPos = gs.startY + gs.accumulatedOffset;
78
+ if (scrollBridge.scrollLockY = void 0, currentPos <= minY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
79
+ onEnd(0);
80
+ return;
81
+ }
82
+ const velocity = velocityY / 1e3,
83
+ projectedEnd = currentPos + frameSize * velocity * 0.2;
84
+ let closestPoint = 0,
85
+ minDist = Number.POSITIVE_INFINITY;
86
+ for (let i = 0; i < positions.length; i++) {
87
+ const pos = positions[i],
88
+ dist = Math.abs(projectedEnd - pos);
89
+ dist < minDist && (minDist = dist, closestPoint = i);
90
+ }
91
+ onEnd(closestPoint);
92
+ }).onFinalize(() => {
93
+ scrollBridge.scrollLockY = void 0;
94
+ }).runOnJS(!0);
95
+ return scrollGestureRef?.current ? gesture.simultaneousWithExternalGesture(scrollGestureRef.current) : gesture;
96
+ }, [gestureHandlerEnabled, disableDrag, isShowingInnerSheet, frameSize, positions, scrollBridge, getCurrentPosition, resisted, onStart, onEnd, setIsDragging, setAnimatedPosition]),
97
+ panGestureRef,
98
+ gestureHandlerEnabled
99
+ };
100
+ }
101
+ export { useGestureHandlerPan };
102
+ //# sourceMappingURL=useGestureHandlerPan.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useCallback","useMemo","useRef","getGestureHandlerState","isGestureHandlerEnabled","AT_TOP_THRESHOLD","useGestureHandlerPan","config","positions","frameSize","setPosition","animateTo","stopSpring","scrollBridge","setIsDragging","getCurrentPosition","resisted","disableDrag","isShowingInnerSheet","setAnimatedPosition","scrollGestureRef","gestureHandlerEnabled","panGestureRef","gestureStateRef","startY","lastPanTranslationY","accumulatedOffset","prevTranslationY","scrollEngaged","onStart","onEnd","closestPoint","setParentDragging","setScrollEnabled","panGesture","Gesture","minY","gs","current","gesture","Pan","withRef","failOffsetX","shouldCancelWhenOutside","onBegin","pos","atTop","currentScrollY","y","initialPosition","onChange","event","translationY","isSwipingDown","deltaY","scrollY","isCurrentlyAtTop","nodeIsScrolling","panHandles","lockTo","newPosition","paneY","velocityY","currentPos","scrollLockY","velocity","projectedEnd","minDist","Number","POSITIVE_INFINITY","i","length","dist","Math","abs","onFinalize","runOnJS","simultaneousWithExternalGesture"],"sources":["../../src/useGestureHandlerPan.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __export = (target, all) => {
8
+ for (var name in all) __defProp(target, name, {
9
+ get: all[name],
10
+ enumerable: !0
11
+ });
12
+ },
13
+ __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
15
+ get: () => from[key],
16
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
17
+ });
18
+ return to;
19
+ };
20
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
21
+ value: !0
22
+ }), mod);
23
+ var useGestureHandlerPan_exports = {};
24
+ __export(useGestureHandlerPan_exports, {
25
+ useGestureHandlerPan: () => useGestureHandlerPan
26
+ });
27
+ module.exports = __toCommonJS(useGestureHandlerPan_exports);
28
+ var import_react = require("react"),
29
+ import_gestureState = require("./gestureState.native.js"),
30
+ AT_TOP_THRESHOLD = 5;
31
+ function useGestureHandlerPan(config) {
32
+ var {
33
+ positions,
34
+ frameSize,
35
+ setPosition,
36
+ animateTo,
37
+ stopSpring,
38
+ scrollBridge,
39
+ setIsDragging,
40
+ getCurrentPosition,
41
+ resisted,
42
+ disableDrag,
43
+ isShowingInnerSheet,
44
+ setAnimatedPosition,
45
+ scrollGestureRef
46
+ } = config,
47
+ gestureHandlerEnabled = (0, import_gestureState.isGestureHandlerEnabled)(),
48
+ panGestureRef = (0, import_react.useRef)(null),
49
+ gestureStateRef = (0, import_react.useRef)({
50
+ startY: 0,
51
+ // track last translation when pan was active (for position calculation after handoff)
52
+ lastPanTranslationY: 0,
53
+ // accumulated position offset from all pan movements
54
+ accumulatedOffset: 0,
55
+ // track previous translation for direction detection (like actions-sheet)
56
+ prevTranslationY: 0,
57
+ // track if scroll was engaged (scrollY > 0) at some point
58
+ scrollEngaged: !1
59
+ }),
60
+ onStart = (0, import_react.useCallback)(function () {
61
+ stopSpring(), setIsDragging(!0);
62
+ }, [stopSpring, setIsDragging]),
63
+ onEnd = (0, import_react.useCallback)(function (closestPoint) {
64
+ var _scrollBridge_setScrollEnabled;
65
+ setIsDragging(!1), scrollBridge.setParentDragging(!1), (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !0), setPosition(closestPoint), animateTo(closestPoint);
66
+ }, [setIsDragging, scrollBridge, setPosition, animateTo]),
67
+ panGesture = (0, import_react.useMemo)(function () {
68
+ if (!gestureHandlerEnabled || disableDrag || isShowingInnerSheet || !frameSize) return null;
69
+ var {
70
+ Gesture
71
+ } = (0, import_gestureState.getGestureHandlerState)();
72
+ if (!Gesture) return null;
73
+ var minY = positions[0],
74
+ gs = gestureStateRef.current,
75
+ gesture = Gesture.Pan().withRef(panGestureRef).failOffsetX([-20, 20]).shouldCancelWhenOutside(!1).onBegin(function () {
76
+ var pos = getCurrentPosition(),
77
+ atTop = pos <= minY + AT_TOP_THRESHOLD,
78
+ currentScrollY = scrollBridge.y;
79
+ if (gs.startY = pos, gs.lastPanTranslationY = 0, gs.accumulatedOffset = 0, gs.prevTranslationY = 0, gs.scrollEngaged = currentScrollY > 0, !atTop) {
80
+ var _scrollBridge_setScrollEnabled;
81
+ (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !1, 0);
82
+ }
83
+ }).onStart(function () {
84
+ scrollBridge.initialPosition = gs.startY, onStart();
85
+ }).onChange(function (event) {
86
+ var {
87
+ translationY
88
+ } = event,
89
+ isSwipingDown = gs.prevTranslationY < translationY,
90
+ deltaY = translationY - gs.prevTranslationY;
91
+ gs.prevTranslationY = translationY;
92
+ var scrollY = scrollBridge.y;
93
+ scrollY > 0 && (gs.scrollEngaged = !0);
94
+ var currentPos = gs.startY + gs.accumulatedOffset,
95
+ isCurrentlyAtTop = currentPos <= minY + AT_TOP_THRESHOLD,
96
+ nodeIsScrolling = scrollY > 0,
97
+ panHandles = !1;
98
+ if (isCurrentlyAtTop ? isSwipingDown ? nodeIsScrolling ? panHandles = !1 : (gs.scrollEngaged, panHandles = !0) : panHandles = !1 : isSwipingDown ? panHandles = !nodeIsScrolling : panHandles = !0, panHandles) {
99
+ var _scrollBridge_setScrollEnabled,
100
+ lockTo = isCurrentlyAtTop ? void 0 : 0;
101
+ (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !1, lockTo), gs.accumulatedOffset += deltaY;
102
+ var newPosition = resisted(gs.startY + gs.accumulatedOffset, minY);
103
+ scrollBridge.paneY = newPosition, setAnimatedPosition(newPosition), scrollBridge.setParentDragging(newPosition > minY);
104
+ } else {
105
+ var _scrollBridge_setScrollEnabled1;
106
+ (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, !0);
107
+ }
108
+ }).onEnd(function (event) {
109
+ var {
110
+ velocityY
111
+ } = event,
112
+ currentPos = gs.startY + gs.accumulatedOffset;
113
+ if (scrollBridge.scrollLockY = void 0, currentPos <= minY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
114
+ onEnd(0);
115
+ return;
116
+ }
117
+ for (var velocity = velocityY / 1e3, projectedEnd = currentPos + frameSize * velocity * 0.2, closestPoint = 0, minDist = Number.POSITIVE_INFINITY, i = 0; i < positions.length; i++) {
118
+ var pos = positions[i],
119
+ dist = Math.abs(projectedEnd - pos);
120
+ dist < minDist && (minDist = dist, closestPoint = i);
121
+ }
122
+ onEnd(closestPoint);
123
+ }).onFinalize(function () {
124
+ scrollBridge.scrollLockY = void 0;
125
+ }).runOnJS(!0);
126
+ return scrollGestureRef?.current ? gesture.simultaneousWithExternalGesture(scrollGestureRef.current) : gesture;
127
+ }, [gestureHandlerEnabled, disableDrag, isShowingInnerSheet, frameSize, positions, scrollBridge, getCurrentPosition, resisted, onStart, onEnd, setIsDragging, setAnimatedPosition]);
128
+ return {
129
+ panGesture,
130
+ panGestureRef,
131
+ gestureHandlerEnabled
132
+ };
133
+ }
134
+ //# sourceMappingURL=useGestureHandlerPan.native.js.map
@@ -0,0 +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_react","require","import_gestureState","AT_TOP_THRESHOLD","config","positions","frameSize","setPosition","animateTo","stopSpring","scrollBridge","setIsDragging","getCurrentPosition","resisted","disableDrag","isShowingInnerSheet","setAnimatedPosition","scrollGestureRef","gestureHandlerEnabled","isGestureHandlerEnabled","panGestureRef","useRef","gestureStateRef","startY","lastPanTranslationY","accumulatedOffset","prevTranslationY","scrollEngaged","onStart","useCallback","onEnd","closestPoint","_scrollBridge_setScrollEnabled","setParentDragging","setScrollEnabled","panGesture","useMemo","Gesture","getGestureHandlerState","minY","gs","current","gesture","Pan","withRef","failOffsetX","shouldCancelWhenOutside","onBegin","pos","atTop","currentScrollY","y","initialPosition","onChange","event","translationY","isSwipingDown","deltaY","scrollY","currentPos","isCurrentlyAtTop","nodeIsScrolling","panHandles","lockTo","newPosition","paneY","_scrollBridge_setScrollEnabled1","velocityY","scrollLockY","velocity","projectedEnd","minDist","Number","POSITIVE_INFINITY","i","length","dist","Math","abs","onFinalize","runOnJS","simultaneousWithExternalGesture"],"sources":["../../src/useGestureHandlerPan.tsx"],"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.0.0-1769200478218",
3
+ "version": "2.0.0-1769256574467",
4
4
  "type": "module",
5
5
  "sideEffects": [
6
6
  "*.css"
@@ -25,6 +25,13 @@
25
25
  "lint": "biome check src",
26
26
  "lint:fix": "biome check --write src"
27
27
  },
28
+ "typesVersions": {
29
+ "*": {
30
+ "setup-gesture-handler": [
31
+ "./types/setupGestureHandler.d.ts"
32
+ ]
33
+ }
34
+ },
28
35
  "exports": {
29
36
  "./package.json": "./package.json",
30
37
  ".": {
@@ -50,35 +57,55 @@
50
57
  "import": "./dist/esm/controller.mjs",
51
58
  "require": "./dist/cjs/controller.cjs",
52
59
  "default": "./dist/cjs/controller.native.js"
60
+ },
61
+ "./setup-gesture-handler": {
62
+ "react-native": {
63
+ "types": "./types/setupGestureHandler.d.ts",
64
+ "module": "./dist/esm/setupGestureHandler.native.js",
65
+ "import": "./dist/esm/setupGestureHandler.native.js",
66
+ "require": "./dist/cjs/setupGestureHandler.native.js"
67
+ },
68
+ "types": "./types/setupGestureHandler.d.ts",
69
+ "module": "./dist/esm/setupGestureHandler.mjs",
70
+ "import": "./dist/esm/setupGestureHandler.mjs",
71
+ "require": "./dist/cjs/setupGestureHandler.cjs"
53
72
  }
54
73
  },
55
74
  "dependencies": {
56
- "@tamagui/adapt": "2.0.0-1769200478218",
57
- "@tamagui/animate-presence": "2.0.0-1769200478218",
58
- "@tamagui/animations-react-native": "2.0.0-1769200478218",
59
- "@tamagui/compose-refs": "2.0.0-1769200478218",
60
- "@tamagui/constants": "2.0.0-1769200478218",
61
- "@tamagui/core": "2.0.0-1769200478218",
62
- "@tamagui/create-context": "2.0.0-1769200478218",
63
- "@tamagui/helpers": "2.0.0-1769200478218",
64
- "@tamagui/portal": "2.0.0-1769200478218",
65
- "@tamagui/remove-scroll": "2.0.0-1769200478218",
66
- "@tamagui/scroll-view": "2.0.0-1769200478218",
67
- "@tamagui/stacks": "2.0.0-1769200478218",
68
- "@tamagui/use-constant": "2.0.0-1769200478218",
69
- "@tamagui/use-controllable-state": "2.0.0-1769200478218",
70
- "@tamagui/use-did-finish-ssr": "2.0.0-1769200478218",
71
- "@tamagui/use-keyboard-visible": "2.0.0-1769200478218",
72
- "@tamagui/z-index-stack": "2.0.0-1769200478218"
75
+ "@tamagui/adapt": "2.0.0-1769256574467",
76
+ "@tamagui/animate-presence": "2.0.0-1769256574467",
77
+ "@tamagui/animations-react-native": "2.0.0-1769256574467",
78
+ "@tamagui/compose-refs": "2.0.0-1769256574467",
79
+ "@tamagui/constants": "2.0.0-1769256574467",
80
+ "@tamagui/core": "2.0.0-1769256574467",
81
+ "@tamagui/create-context": "2.0.0-1769256574467",
82
+ "@tamagui/helpers": "2.0.0-1769256574467",
83
+ "@tamagui/native": "2.0.0-1769256574467",
84
+ "@tamagui/portal": "2.0.0-1769256574467",
85
+ "@tamagui/remove-scroll": "2.0.0-1769256574467",
86
+ "@tamagui/scroll-view": "2.0.0-1769256574467",
87
+ "@tamagui/stacks": "2.0.0-1769256574467",
88
+ "@tamagui/use-constant": "2.0.0-1769256574467",
89
+ "@tamagui/use-controllable-state": "2.0.0-1769256574467",
90
+ "@tamagui/use-did-finish-ssr": "2.0.0-1769256574467",
91
+ "@tamagui/use-keyboard-visible": "2.0.0-1769256574467",
92
+ "@tamagui/z-index-stack": "2.0.0-1769256574467"
73
93
  },
74
94
  "peerDependencies": {
75
95
  "react": "*",
76
- "react-native": "*"
96
+ "react-native": "*",
97
+ "react-native-gesture-handler": ">=2.0.0"
98
+ },
99
+ "peerDependenciesMeta": {
100
+ "react-native-gesture-handler": {
101
+ "optional": true
102
+ }
77
103
  },
78
104
  "devDependencies": {
79
- "@tamagui/build": "2.0.0-1769200478218",
105
+ "@tamagui/build": "2.0.0-1769256574467",
80
106
  "react": "*",
81
- "react-native": "0.81.5"
107
+ "react-native": "0.81.5",
108
+ "react-native-gesture-handler": "~2.28.0"
82
109
  },
83
110
  "publishConfig": {
84
111
  "access": "public"
@@ -0,0 +1,41 @@
1
+ import type React from 'react'
2
+ import { View, type ViewStyle } from 'react-native'
3
+ import { getGestureHandlerState, isGestureHandlerEnabled } from './gestureState'
4
+
5
+ interface GestureDetectorWrapperProps {
6
+ gesture: any
7
+ children: React.ReactNode
8
+ style?: ViewStyle
9
+ }
10
+
11
+ /**
12
+ * Conditionally wraps children with GestureDetector when RNGH is available.
13
+ * Uses a plain View wrapper that GestureDetector can attach gesture handlers to.
14
+ */
15
+ export function GestureDetectorWrapper({
16
+ gesture,
17
+ children,
18
+ style,
19
+ }: GestureDetectorWrapperProps) {
20
+ const { GestureDetector } = getGestureHandlerState()
21
+ const enabled = isGestureHandlerEnabled()
22
+
23
+ // console.warn('[RNGH-Wrapper] enabled:', enabled, 'hasDetector:', !!GestureDetector, 'hasGesture:', !!gesture)
24
+
25
+ // only wrap if we have RNGH available AND a gesture to attach
26
+ if (enabled && GestureDetector && gesture) {
27
+ // GestureDetector needs a native View to attach handlers to
28
+ // the View wrapper ensures proper gesture propagation
29
+ // console.warn('[RNGH-Wrapper] WRAPPING')
30
+ return (
31
+ <GestureDetector gesture={gesture}>
32
+ <View style={style} collapsable={false}>
33
+ {children}
34
+ </View>
35
+ </GestureDetector>
36
+ )
37
+ }
38
+
39
+ // pass through children in a consistent View wrapper
40
+ return <View style={style}>{children}</View>
41
+ }