@hanzogui/sheet 7.3.1 → 8.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/.turbo/turbo-build.log +2 -0
  2. package/controller/index.cjs +2 -0
  3. package/controller/index.d.ts +5 -0
  4. package/controller/index.js +2 -0
  5. package/controller/index.native.cjs +2 -0
  6. package/controller/index.native.js +2 -0
  7. package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -1
  8. package/dist/cjs/SheetImplementationCustom.cjs +137 -74
  9. package/dist/cjs/SheetImplementationCustom.native.js +162 -83
  10. package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
  11. package/dist/cjs/SheetScrollView.cjs +155 -34
  12. package/dist/cjs/SheetScrollView.native.js +160 -35
  13. package/dist/cjs/SheetScrollView.native.js.map +1 -1
  14. package/dist/cjs/createSheet.cjs +7 -3
  15. package/dist/cjs/createSheet.native.js +7 -3
  16. package/dist/cjs/createSheet.native.js.map +1 -1
  17. package/dist/cjs/gestureState.cjs +13 -2
  18. package/dist/cjs/gestureState.native.js +14 -2
  19. package/dist/cjs/gestureState.native.js.map +1 -1
  20. package/dist/cjs/index.cjs +12 -1
  21. package/dist/cjs/index.native.js +11 -0
  22. package/dist/cjs/index.native.js.map +1 -1
  23. package/dist/cjs/keyboardAvoidance.cjs +93 -0
  24. package/dist/cjs/keyboardAvoidance.native.js +99 -0
  25. package/dist/cjs/keyboardAvoidance.native.js.map +1 -0
  26. package/dist/cjs/nativeSheet.cjs +3 -0
  27. package/dist/cjs/nativeSheet.native.js +3 -0
  28. package/dist/cjs/nativeSheet.native.js.map +1 -1
  29. package/dist/cjs/setupGestureHandler.cjs +9 -6
  30. package/dist/cjs/setupGestureHandler.native.js +11 -6
  31. package/dist/cjs/setupGestureHandler.native.js.map +1 -1
  32. package/dist/cjs/useGestureHandlerPan.cjs +86 -18
  33. package/dist/cjs/useGestureHandlerPan.native.js +91 -18
  34. package/dist/cjs/useGestureHandlerPan.native.js.map +1 -1
  35. package/dist/cjs/useKeyboardControllerSheet.cjs +68 -6
  36. package/dist/cjs/useSafeAreaInsets.cjs +44 -0
  37. package/dist/cjs/useSafeAreaInsets.native.js +48 -0
  38. package/dist/cjs/useSafeAreaInsets.native.js.map +1 -0
  39. package/dist/cjs/useSheetProviderProps.cjs +1 -1
  40. package/dist/cjs/useSheetProviderProps.native.js +1 -1
  41. package/dist/cjs/useSheetProviderProps.native.js.map +1 -1
  42. package/dist/cjs/useSheetScrollViewGestures.cjs +30 -5
  43. package/dist/cjs/useSheetScrollViewGestures.native.js +4 -0
  44. package/dist/cjs/useSheetScrollViewGestures.native.js.map +1 -1
  45. package/dist/cjs/webViewport.cjs +75 -0
  46. package/dist/cjs/webViewport.native.js +81 -0
  47. package/dist/cjs/webViewport.native.js.map +1 -0
  48. package/dist/esm/GestureDetectorWrapper.mjs.map +1 -1
  49. package/dist/esm/GestureDetectorWrapper.native.js.map +1 -1
  50. package/dist/esm/SheetImplementationCustom.mjs +143 -84
  51. package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
  52. package/dist/esm/SheetImplementationCustom.native.js +173 -102
  53. package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
  54. package/dist/esm/SheetScrollView.mjs +157 -36
  55. package/dist/esm/SheetScrollView.mjs.map +1 -1
  56. package/dist/esm/SheetScrollView.native.js +162 -37
  57. package/dist/esm/SheetScrollView.native.js.map +1 -1
  58. package/dist/esm/createSheet.mjs +9 -6
  59. package/dist/esm/createSheet.mjs.map +1 -1
  60. package/dist/esm/createSheet.native.js +19 -15
  61. package/dist/esm/createSheet.native.js.map +1 -1
  62. package/dist/esm/gestureState.mjs +13 -2
  63. package/dist/esm/gestureState.mjs.map +1 -1
  64. package/dist/esm/gestureState.native.js +14 -2
  65. package/dist/esm/gestureState.native.js.map +1 -1
  66. package/dist/esm/index.js +2 -0
  67. package/dist/esm/index.js.map +1 -1
  68. package/dist/esm/index.mjs +2 -0
  69. package/dist/esm/index.mjs.map +1 -1
  70. package/dist/esm/index.native.js +2 -0
  71. package/dist/esm/index.native.js.map +1 -1
  72. package/dist/esm/keyboardAvoidance.mjs +66 -0
  73. package/dist/esm/keyboardAvoidance.mjs.map +1 -0
  74. package/dist/esm/keyboardAvoidance.native.js +69 -0
  75. package/dist/esm/keyboardAvoidance.native.js.map +1 -0
  76. package/dist/esm/nativeSheet.mjs +3 -0
  77. package/dist/esm/nativeSheet.mjs.map +1 -1
  78. package/dist/esm/nativeSheet.native.js +3 -0
  79. package/dist/esm/nativeSheet.native.js.map +1 -1
  80. package/dist/esm/setupGestureHandler.mjs +9 -6
  81. package/dist/esm/setupGestureHandler.mjs.map +1 -1
  82. package/dist/esm/setupGestureHandler.native.js +11 -6
  83. package/dist/esm/setupGestureHandler.native.js.map +1 -1
  84. package/dist/esm/useGestureHandlerPan.mjs +87 -19
  85. package/dist/esm/useGestureHandlerPan.mjs.map +1 -1
  86. package/dist/esm/useGestureHandlerPan.native.js +92 -19
  87. package/dist/esm/useGestureHandlerPan.native.js.map +1 -1
  88. package/dist/esm/useKeyboardControllerSheet.mjs +69 -7
  89. package/dist/esm/useKeyboardControllerSheet.mjs.map +1 -1
  90. package/dist/esm/useSafeAreaInsets.mjs +7 -0
  91. package/dist/esm/useSafeAreaInsets.mjs.map +1 -0
  92. package/dist/esm/useSafeAreaInsets.native.js +8 -0
  93. package/dist/esm/useSafeAreaInsets.native.js.map +1 -0
  94. package/dist/esm/useSheetProviderProps.mjs +1 -1
  95. package/dist/esm/useSheetProviderProps.mjs.map +1 -1
  96. package/dist/esm/useSheetProviderProps.native.js +1 -1
  97. package/dist/esm/useSheetProviderProps.native.js.map +1 -1
  98. package/dist/esm/useSheetScrollViewGestures.mjs +30 -5
  99. package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -1
  100. package/dist/esm/useSheetScrollViewGestures.native.js +4 -0
  101. package/dist/esm/useSheetScrollViewGestures.native.js.map +1 -1
  102. package/dist/esm/webViewport.mjs +43 -0
  103. package/dist/esm/webViewport.mjs.map +1 -0
  104. package/dist/esm/webViewport.native.js +46 -0
  105. package/dist/esm/webViewport.native.js.map +1 -0
  106. package/dist/jsx/GestureDetectorWrapper.mjs.map +1 -1
  107. package/dist/jsx/GestureDetectorWrapper.native.js.map +1 -1
  108. package/dist/jsx/SheetImplementationCustom.mjs +143 -84
  109. package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
  110. package/dist/jsx/SheetImplementationCustom.native.js +162 -83
  111. package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
  112. package/dist/jsx/SheetScrollView.mjs +157 -36
  113. package/dist/jsx/SheetScrollView.mjs.map +1 -1
  114. package/dist/jsx/SheetScrollView.native.js +160 -35
  115. package/dist/jsx/SheetScrollView.native.js.map +1 -1
  116. package/dist/jsx/createSheet.mjs +9 -6
  117. package/dist/jsx/createSheet.mjs.map +1 -1
  118. package/dist/jsx/createSheet.native.js +7 -3
  119. package/dist/jsx/createSheet.native.js.map +1 -1
  120. package/dist/jsx/gestureState.mjs +13 -2
  121. package/dist/jsx/gestureState.mjs.map +1 -1
  122. package/dist/jsx/gestureState.native.js +14 -2
  123. package/dist/jsx/gestureState.native.js.map +1 -1
  124. package/dist/jsx/index.js +2 -0
  125. package/dist/jsx/index.js.map +1 -1
  126. package/dist/jsx/index.mjs +2 -0
  127. package/dist/jsx/index.mjs.map +1 -1
  128. package/dist/jsx/index.native.js +11 -0
  129. package/dist/jsx/index.native.js.map +1 -1
  130. package/dist/jsx/keyboardAvoidance.mjs +66 -0
  131. package/dist/jsx/keyboardAvoidance.mjs.map +1 -0
  132. package/dist/jsx/keyboardAvoidance.native.js +99 -0
  133. package/dist/jsx/keyboardAvoidance.native.js.map +1 -0
  134. package/dist/jsx/nativeSheet.mjs +3 -0
  135. package/dist/jsx/nativeSheet.mjs.map +1 -1
  136. package/dist/jsx/nativeSheet.native.js +3 -0
  137. package/dist/jsx/nativeSheet.native.js.map +1 -1
  138. package/dist/jsx/setupGestureHandler.mjs +9 -6
  139. package/dist/jsx/setupGestureHandler.mjs.map +1 -1
  140. package/dist/jsx/setupGestureHandler.native.js +11 -6
  141. package/dist/jsx/setupGestureHandler.native.js.map +1 -1
  142. package/dist/jsx/useGestureHandlerPan.mjs +87 -19
  143. package/dist/jsx/useGestureHandlerPan.mjs.map +1 -1
  144. package/dist/jsx/useGestureHandlerPan.native.js +91 -18
  145. package/dist/jsx/useGestureHandlerPan.native.js.map +1 -1
  146. package/dist/jsx/useKeyboardControllerSheet.mjs +69 -7
  147. package/dist/jsx/useKeyboardControllerSheet.mjs.map +1 -1
  148. package/dist/jsx/useSafeAreaInsets.mjs +7 -0
  149. package/dist/jsx/useSafeAreaInsets.mjs.map +1 -0
  150. package/dist/jsx/useSafeAreaInsets.native.js +48 -0
  151. package/dist/jsx/useSafeAreaInsets.native.js.map +1 -0
  152. package/dist/jsx/useSheetProviderProps.mjs +1 -1
  153. package/dist/jsx/useSheetProviderProps.mjs.map +1 -1
  154. package/dist/jsx/useSheetProviderProps.native.js +1 -1
  155. package/dist/jsx/useSheetProviderProps.native.js.map +1 -1
  156. package/dist/jsx/useSheetScrollViewGestures.mjs +30 -5
  157. package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -1
  158. package/dist/jsx/useSheetScrollViewGestures.native.js +4 -0
  159. package/dist/jsx/useSheetScrollViewGestures.native.js.map +1 -1
  160. package/dist/jsx/webViewport.mjs +43 -0
  161. package/dist/jsx/webViewport.mjs.map +1 -0
  162. package/dist/jsx/webViewport.native.js +81 -0
  163. package/dist/jsx/webViewport.native.js.map +1 -0
  164. package/next.md +78 -0
  165. package/package.json +30 -52
  166. package/setup-gesture-handler/index.cjs +2 -0
  167. package/setup-gesture-handler/index.js +2 -0
  168. package/setup-gesture-handler/index.native.cjs +2 -0
  169. package/setup-gesture-handler/index.native.js +2 -0
  170. package/src/GestureDetectorWrapper.tsx +0 -3
  171. package/src/SheetImplementationCustom.tsx +387 -127
  172. package/src/SheetScrollView.tsx +195 -22
  173. package/src/createSheet.tsx +20 -7
  174. package/src/gestureState.ts +22 -2
  175. package/src/index.ts +4 -0
  176. package/src/keyboardAvoidance.ts +121 -0
  177. package/src/nativeSheet.tsx +8 -1
  178. package/src/setupGestureHandler.ts +14 -5
  179. package/src/types.tsx +20 -1
  180. package/src/useGestureHandlerPan.tsx +94 -35
  181. package/src/useKeyboardControllerSheet.ts +127 -10
  182. package/src/useSafeAreaInsets.native.ts +29 -0
  183. package/src/useSafeAreaInsets.ts +19 -0
  184. package/src/useSheetProviderProps.tsx +12 -1
  185. package/src/useSheetScrollViewGestures.native.ts +4 -0
  186. package/src/useSheetScrollViewGestures.ts +52 -5
  187. package/src/webViewport.ts +100 -0
  188. package/test/keyboardAvoidance.test.ts +269 -0
  189. package/tsconfig.json +57 -0
  190. package/types/GestureDetectorWrapper.d.ts +1 -1
  191. package/types/GestureDetectorWrapper.d.ts.map +1 -1
  192. package/types/GestureSheetContext.d.ts +1 -1
  193. package/types/GestureSheetContext.d.ts.map +1 -1
  194. package/types/Sheet.d.ts +6 -5
  195. package/types/Sheet.d.ts.map +1 -1
  196. package/types/SheetContext.d.ts +5 -2
  197. package/types/SheetContext.d.ts.map +1 -1
  198. package/types/SheetController.d.ts +1 -2
  199. package/types/SheetController.d.ts.map +1 -1
  200. package/types/SheetImplementationCustom.d.ts +1 -0
  201. package/types/SheetImplementationCustom.d.ts.map +1 -1
  202. package/types/SheetScrollView.d.ts.map +1 -1
  203. package/types/createSheet.d.ts +13 -12
  204. package/types/createSheet.d.ts.map +1 -1
  205. package/types/gestureState.d.ts.map +1 -1
  206. package/types/index.d.ts +1 -0
  207. package/types/index.d.ts.map +1 -1
  208. package/types/keyboardAvoidance.d.ts +26 -0
  209. package/types/keyboardAvoidance.d.ts.map +1 -0
  210. package/types/nativeSheet.d.ts.map +1 -1
  211. package/types/setupGestureHandler.d.ts.map +1 -1
  212. package/types/types.d.ts +10 -1
  213. package/types/types.d.ts.map +1 -1
  214. package/types/useGestureHandlerPan.d.ts +4 -1
  215. package/types/useGestureHandlerPan.d.ts.map +1 -1
  216. package/types/useKeyboardControllerSheet.d.ts +14 -3
  217. package/types/useKeyboardControllerSheet.d.ts.map +1 -1
  218. package/types/useSafeAreaInsets.d.ts +10 -0
  219. package/types/useSafeAreaInsets.d.ts.map +1 -0
  220. package/types/useSafeAreaInsets.native.d.ts +20 -0
  221. package/types/useSafeAreaInsets.native.d.ts.map +1 -0
  222. package/types/useSheetProviderProps.d.ts +3 -0
  223. package/types/useSheetProviderProps.d.ts.map +1 -1
  224. package/types/useSheetScrollViewGestures.d.ts +2 -1
  225. package/types/useSheetScrollViewGestures.d.ts.map +1 -1
  226. package/types/useSheetScrollViewGestures.native.d.ts.map +1 -1
  227. package/types/webViewport.d.ts +36 -0
  228. package/types/webViewport.d.ts.map +1 -0
  229. package/LICENSE +0 -42
@@ -1,11 +1,22 @@
1
1
  import { getGestureHandler } from "@hanzogui/native";
2
+ const SHEET_GESTURE_STATE_KEY = "__hanzogui_sheet_gesture_state__";
3
+ function getSheetGestureHandlerState() {
4
+ const g = globalThis;
5
+ return g[SHEET_GESTURE_STATE_KEY] ?? getGestureHandler().state;
6
+ }
2
7
  function isGestureHandlerEnabled() {
3
- return getGestureHandler().isEnabled;
8
+ return getSheetGestureHandlerState().enabled;
4
9
  }
5
10
  function getGestureHandlerState() {
6
- return getGestureHandler().state;
11
+ return getSheetGestureHandlerState();
7
12
  }
8
13
  function setGestureHandlerState(updates) {
14
+ const g = globalThis;
15
+ const sheetState = g[SHEET_GESTURE_STATE_KEY];
16
+ if (sheetState) {
17
+ Object.assign(sheetState, updates);
18
+ return;
19
+ }
9
20
  getGestureHandler().set(updates);
10
21
  }
11
22
  const setGestureState = setGestureHandlerState;
@@ -1 +1 @@
1
- {"version":3,"names":["getGestureHandler","isGestureHandlerEnabled","isEnabled","getGestureHandlerState","state","setGestureHandlerState","updates","set","setGestureState"],"sources":["../../src/gestureState.ts"],"sourcesContent":[null],"mappings":"AAKA,SAASA,iBAAA,QAA4C;AAK9C,SAASC,wBAAA,EAAmC;EACjD,OAAOD,iBAAA,CAAkB,EAAEE,SAAA;AAC7B;AAEO,SAASC,uBAAA,EAAuC;EACrD,OAAOH,iBAAA,CAAkB,EAAEI,KAAA;AAC7B;AAEO,SAASC,uBAAuBC,OAAA,EAAsC;EAC3EN,iBAAA,CAAkB,EAAEO,GAAA,CAAID,OAAO;AACjC;AAGO,MAAME,eAAA,GAAkBH,sBAAA","ignoreList":[]}
1
+ {"version":3,"names":["getGestureHandler","SHEET_GESTURE_STATE_KEY","getSheetGestureHandlerState","g","globalThis","state","isGestureHandlerEnabled","enabled","getGestureHandlerState","setGestureHandlerState","updates","sheetState","Object","assign","set","setGestureState"],"sources":["../../src/gestureState.ts"],"sourcesContent":[null],"mappings":"AAKA,SAASA,iBAAA,QAA4C;AAIrD,MAAMC,uBAAA,GAA0B;AAEhC,SAASC,4BAAA,EAA4C;EACnD,MAAMC,CAAA,GAAIC,UAAA;EAIV,OAAOD,CAAA,CAAEF,uBAAuB,KAAKD,iBAAA,CAAkB,EAAEK,KAAA;AAC3D;AAGO,SAASC,wBAAA,EAAmC;EACjD,OAAOJ,2BAAA,CAA4B,EAAEK,OAAA;AACvC;AAEO,SAASC,uBAAA,EAAuC;EACrD,OAAON,2BAAA,CAA4B;AACrC;AAEO,SAASO,uBAAuBC,OAAA,EAAsC;EAC3E,MAAMP,CAAA,GAAIC,UAAA;EAIV,MAAMO,UAAA,GAAaR,CAAA,CAAEF,uBAAuB;EAC5C,IAAIU,UAAA,EAAY;IACdC,MAAA,CAAOC,MAAA,CAAOF,UAAA,EAAYD,OAAO;IACjC;EACF;EAEAV,iBAAA,CAAkB,EAAEc,GAAA,CAAIJ,OAAO;AACjC;AAGO,MAAMK,eAAA,GAAkBN,sBAAA","ignoreList":[]}
@@ -1,11 +1,23 @@
1
1
  import { getGestureHandler } from "@hanzogui/native";
2
+ var SHEET_GESTURE_STATE_KEY = "__hanzogui_sheet_gesture_state__";
3
+ function getSheetGestureHandlerState() {
4
+ var g = globalThis;
5
+ var _g_SHEET_GESTURE_STATE_KEY;
6
+ return (_g_SHEET_GESTURE_STATE_KEY = g[SHEET_GESTURE_STATE_KEY]) !== null && _g_SHEET_GESTURE_STATE_KEY !== void 0 ? _g_SHEET_GESTURE_STATE_KEY : getGestureHandler().state;
7
+ }
2
8
  function isGestureHandlerEnabled() {
3
- return getGestureHandler().isEnabled;
9
+ return getSheetGestureHandlerState().enabled;
4
10
  }
5
11
  function getGestureHandlerState() {
6
- return getGestureHandler().state;
12
+ return getSheetGestureHandlerState();
7
13
  }
8
14
  function setGestureHandlerState(updates) {
15
+ var g = globalThis;
16
+ var sheetState = g[SHEET_GESTURE_STATE_KEY];
17
+ if (sheetState) {
18
+ Object.assign(sheetState, updates);
19
+ return;
20
+ }
9
21
  getGestureHandler().set(updates);
10
22
  }
11
23
  var setGestureState = setGestureHandlerState;
@@ -1 +1 @@
1
- {"version":3,"names":["getGestureHandler","isGestureHandlerEnabled","isEnabled","getGestureHandlerState","state","setGestureHandlerState","updates","set","setGestureState"],"sources":["../../src/gestureState.ts"],"sourcesContent":[null],"mappings":"AAKA,SAASA,iBAAA,QAA4C;AAK9C,SAASC,wBAAA,EAAmC;EACjD,OAAOD,iBAAA,CAAkB,EAAEE,SAAA;AAC7B;AAEO,SAASC,uBAAA,EAAuC;EACrD,OAAOH,iBAAA,CAAkB,EAAEI,KAAA;AAC7B;AAEO,SAASC,uBAAuBC,OAAA,EAAsC;EAC3EN,iBAAA,CAAkB,EAAEO,GAAA,CAAID,OAAO;AACjC;AAGO,IAAAE,eAAM,GAAAH,sBAAkB","ignoreList":[]}
1
+ {"version":3,"names":["getGestureHandler","SHEET_GESTURE_STATE_KEY","getSheetGestureHandlerState","g","globalThis","_g_SHEET_GESTURE_STATE_KEY","state","isGestureHandlerEnabled","enabled","getGestureHandlerState","setGestureHandlerState","updates","sheetState","Object","assign","set"],"sources":["../../src/gestureState.ts"],"sourcesContent":[null],"mappings":"AAKA,SAASA,iBAAA,QAA4C;AAIrD,IAAAC,uBAAM,qCAA0B;AAEhC,SAASC,4BAAA,EAA4C;EACnD,IAAAC,CAAA,GAAMC,UAAI;EAIV,IAAAC,0BAAS;EACX,QAAAA,0BAAA,GAAAF,CAAA,CAAAF,uBAAA,eAAAI,0BAAA,cAAAA,0BAAA,GAAAL,iBAAA,GAAAM,KAAA;AAGO;AACL,SAAOC,wBAAA;EACT,OAAAL,2BAAA,GAAAM,OAAA;AAEO;AACL,SAAOC,uBAAA;EACT,OAAAP,2BAAA;AAEO;AACL,SAAMQ,sBAAIA,CAAAC,OAAA;EAIV,IAAAR,CAAA,GAAMC,UAAA;EACN,IAAIQ,UAAA,GAAYT,CAAA,CAAAF,uBAAA;EACd,IAAAW,UAAO,EAAO;IACdC,MAAA,CAAAC,MAAA,CAAAF,UAAA,EAAAD,OAAA;IACF;EAEA;EACFX,iBAAA,GAAAe,GAAA,CAAAJ,OAAA;AAGO","ignoreList":[]}
package/dist/esm/index.js CHANGED
@@ -9,4 +9,6 @@ export * from "./SheetScrollView.mjs";
9
9
  export * from "./nativeSheet.mjs";
10
10
  export * from "./types.mjs";
11
11
  export * from "./contexts.mjs";
12
+ import { getGestureHandlerState, isGestureHandlerEnabled } from "./gestureState.mjs";
13
+ export { getGestureHandlerState as unstable_getSheetGestureHandlerState, isGestureHandlerEnabled as unstable_isSheetGestureHandlerEnabled };
12
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["getGestureHandlerState","isGestureHandlerEnabled"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAC4BA,sBAAA,EACCC,uBAAA,QACtB","ignoreList":[]}
@@ -9,4 +9,6 @@ export * from "./SheetScrollView.mjs";
9
9
  export * from "./nativeSheet.mjs";
10
10
  export * from "./types.mjs";
11
11
  export * from "./contexts.mjs";
12
+ import { getGestureHandlerState, isGestureHandlerEnabled } from "./gestureState.mjs";
13
+ export { getGestureHandlerState as unstable_getSheetGestureHandlerState, isGestureHandlerEnabled as unstable_isSheetGestureHandlerEnabled };
12
14
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["getGestureHandlerState","isGestureHandlerEnabled"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAC4BA,sBAAA,EACCC,uBAAA,QACtB","ignoreList":[]}
@@ -9,4 +9,6 @@ export * from "./SheetScrollView.native.js";
9
9
  export * from "./nativeSheet.native.js";
10
10
  export * from "./types.native.js";
11
11
  export * from "./contexts.native.js";
12
+ import { getGestureHandlerState, isGestureHandlerEnabled } from "./gestureState.native.js";
13
+ export { getGestureHandlerState as unstable_getSheetGestureHandlerState, isGestureHandlerEnabled as unstable_isSheetGestureHandlerEnabled };
12
14
  //# sourceMappingURL=index.native.js.map
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["getGestureHandlerState","isGestureHandlerEnabled","unstable_getSheetGestureHandlerState","unstable_isSheetGestureHandlerEnabled"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAAA,sBAAA,EAAAC,uBAAA;AAAA,SAE6BD,sBAAA,IAAAE,oCAAA,EAAAD,uBACtB,IAAAE,qCAAA","ignoreList":[]}
@@ -0,0 +1,66 @@
1
+ function getKeyboardAdjustedSheetY({
2
+ sheetY,
3
+ screenSize,
4
+ isKeyboardVisible,
5
+ keyboardHeight,
6
+ shouldTranslate,
7
+ safeAreaTop
8
+ }) {
9
+ if (!shouldTranslate || !isKeyboardVisible || keyboardHeight <= 0 || screenSize <= 0 || sheetY >= screenSize) {
10
+ return sheetY;
11
+ }
12
+ return Math.max(safeAreaTop, sheetY - keyboardHeight);
13
+ }
14
+ function getSheetReleasePosition({
15
+ positions,
16
+ projectedEnd,
17
+ currentPosition,
18
+ frameSize,
19
+ dismissOnSnapToBottom,
20
+ snapPointsMode,
21
+ isKeyboardVisible,
22
+ isWeb
23
+ }) {
24
+ let closestPoint = 0;
25
+ let dist = Number.POSITIVE_INFINITY;
26
+ for (let i = 0; i < positions.length; i++) {
27
+ const position = positions[i];
28
+ const curDist = Math.abs(projectedEnd - position);
29
+ if (curDist < dist) {
30
+ dist = curDist;
31
+ closestPoint = i;
32
+ }
33
+ }
34
+ const dismissPoint = positions.length - 1;
35
+ const isKeyboardFitDismiss = isWeb && dismissOnSnapToBottom && isKeyboardVisible && snapPointsMode === "fit" && positions.length === 2 && closestPoint === dismissPoint;
36
+ if (!isKeyboardFitDismiss) {
37
+ return closestPoint;
38
+ }
39
+ const openPosition = positions[0];
40
+ const dismissPosition = positions[dismissPoint];
41
+ const dismissDistance = dismissPosition - openPosition;
42
+ if (dismissDistance <= 0 || frameSize <= 0) {
43
+ return closestPoint;
44
+ }
45
+ const draggedDistance = Math.max(0, currentPosition - openPosition);
46
+ const thresholdBase = Math.min(frameSize, dismissDistance);
47
+ const dismissThreshold = Math.max(120, thresholdBase * 0.35);
48
+ return draggedDistance >= dismissThreshold ? closestPoint : 0;
49
+ }
50
+ function getKeyboardOccludedHeight({
51
+ frameSize,
52
+ isKeyboardVisible,
53
+ keyboardHeight,
54
+ screenSize,
55
+ sheetY
56
+ }) {
57
+ if (!isKeyboardVisible || keyboardHeight <= 0 || screenSize <= 0 || frameSize <= 0 || sheetY === void 0 || sheetY >= screenSize) {
58
+ return 0;
59
+ }
60
+ const keyboardTop = screenSize - keyboardHeight;
61
+ const sheetBottom = sheetY + frameSize;
62
+ const occludedHeight = Math.ceil(sheetBottom - keyboardTop);
63
+ return Math.min(frameSize, Math.max(0, occludedHeight));
64
+ }
65
+ export { getKeyboardAdjustedSheetY, getKeyboardOccludedHeight, getSheetReleasePosition };
66
+ //# sourceMappingURL=keyboardAvoidance.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getKeyboardAdjustedSheetY","sheetY","screenSize","isKeyboardVisible","keyboardHeight","shouldTranslate","safeAreaTop","Math","max","getSheetReleasePosition","positions","projectedEnd","currentPosition","frameSize","dismissOnSnapToBottom","snapPointsMode","isWeb","closestPoint","dist","Number","POSITIVE_INFINITY","i","length","position","curDist","abs","dismissPoint","isKeyboardFitDismiss","openPosition","dismissPosition","dismissDistance","draggedDistance","thresholdBase","min","dismissThreshold","getKeyboardOccludedHeight","keyboardTop","sheetBottom","occludedHeight","ceil"],"sources":["../../src/keyboardAvoidance.ts"],"sourcesContent":[null],"mappings":"AAAO,SAASA,0BAA0B;EACxCC,MAAA;EACAC,UAAA;EACAC,iBAAA;EACAC,cAAA;EACAC,eAAA;EACAC;AACF,GAOG;EACD,IACE,CAACD,eAAA,IACD,CAACF,iBAAA,IACDC,cAAA,IAAkB,KAClBF,UAAA,IAAc,KACdD,MAAA,IAAUC,UAAA,EACV;IACA,OAAOD,MAAA;EACT;EAEA,OAAOM,IAAA,CAAKC,GAAA,CAAIF,WAAA,EAAaL,MAAA,GAASG,cAAc;AACtD;AAEO,SAASK,wBAAwB;EACtCC,SAAA;EACAC,YAAA;EACAC,eAAA;EACAC,SAAA;EACAC,qBAAA;EACAC,cAAA;EACAZ,iBAAA;EACAa;AACF,GASG;EACD,IAAIC,YAAA,GAAe;EACnB,IAAIC,IAAA,GAAOC,MAAA,CAAOC,iBAAA;EAElB,SAASC,CAAA,GAAI,GAAGA,CAAA,GAAIX,SAAA,CAAUY,MAAA,EAAQD,CAAA,IAAK;IACzC,MAAME,QAAA,GAAWb,SAAA,CAAUW,CAAC;IAC5B,MAAMG,OAAA,GAAUjB,IAAA,CAAKkB,GAAA,CAAId,YAAA,GAAeY,QAAQ;IAChD,IAAIC,OAAA,GAAUN,IAAA,EAAM;MAClBA,IAAA,GAAOM,OAAA;MACPP,YAAA,GAAeI,CAAA;IACjB;EACF;EAOA,MAAMK,YAAA,GAAehB,SAAA,CAAUY,MAAA,GAAS;EACxC,MAAMK,oBAAA,GACJX,KAAA,IACAF,qBAAA,IACAX,iBAAA,IACAY,cAAA,KAAmB,SACnBL,SAAA,CAAUY,MAAA,KAAW,KACrBL,YAAA,KAAiBS,YAAA;EAEnB,IAAI,CAACC,oBAAA,EAAsB;IACzB,OAAOV,YAAA;EACT;EAEA,MAAMW,YAAA,GAAelB,SAAA,CAAU,CAAC;EAChC,MAAMmB,eAAA,GAAkBnB,SAAA,CAAUgB,YAAY;EAC9C,MAAMI,eAAA,GAAkBD,eAAA,GAAkBD,YAAA;EAC1C,IAAIE,eAAA,IAAmB,KAAKjB,SAAA,IAAa,GAAG;IAC1C,OAAOI,YAAA;EACT;EAEA,MAAMc,eAAA,GAAkBxB,IAAA,CAAKC,GAAA,CAAI,GAAGI,eAAA,GAAkBgB,YAAY;EAClE,MAAMI,aAAA,GAAgBzB,IAAA,CAAK0B,GAAA,CAAIpB,SAAA,EAAWiB,eAAe;EACzD,MAAMI,gBAAA,GAAmB3B,IAAA,CAAKC,GAAA,CAAI,KAAKwB,aAAA,GAAgB,IAAI;EAE3D,OAAOD,eAAA,IAAmBG,gBAAA,GAAmBjB,YAAA,GAAe;AAC9D;AAEO,SAASkB,0BAA0B;EACxCtB,SAAA;EACAV,iBAAA;EACAC,cAAA;EACAF,UAAA;EACAD;AACF,GAMG;EACD,IACE,CAACE,iBAAA,IACDC,cAAA,IAAkB,KAClBF,UAAA,IAAc,KACdW,SAAA,IAAa,KACbZ,MAAA,KAAW,UACXA,MAAA,IAAUC,UAAA,EACV;IACA,OAAO;EACT;EAEA,MAAMkC,WAAA,GAAclC,UAAA,GAAaE,cAAA;EACjC,MAAMiC,WAAA,GAAcpC,MAAA,GAASY,SAAA;EAC7B,MAAMyB,cAAA,GAAiB/B,IAAA,CAAKgC,IAAA,CAAKF,WAAA,GAAcD,WAAW;EAE1D,OAAO7B,IAAA,CAAK0B,GAAA,CAAIpB,SAAA,EAAWN,IAAA,CAAKC,GAAA,CAAI,GAAG8B,cAAc,CAAC;AACxD","ignoreList":[]}
@@ -0,0 +1,69 @@
1
+ function getKeyboardAdjustedSheetY(param) {
2
+ var {
3
+ sheetY,
4
+ screenSize,
5
+ isKeyboardVisible,
6
+ keyboardHeight,
7
+ shouldTranslate,
8
+ safeAreaTop
9
+ } = param;
10
+ if (!shouldTranslate || !isKeyboardVisible || keyboardHeight <= 0 || screenSize <= 0 || sheetY >= screenSize) {
11
+ return sheetY;
12
+ }
13
+ return Math.max(safeAreaTop, sheetY - keyboardHeight);
14
+ }
15
+ function getSheetReleasePosition(param) {
16
+ var {
17
+ positions,
18
+ projectedEnd,
19
+ currentPosition,
20
+ frameSize,
21
+ dismissOnSnapToBottom,
22
+ snapPointsMode,
23
+ isKeyboardVisible,
24
+ isWeb
25
+ } = param;
26
+ var closestPoint = 0;
27
+ var dist = Number.POSITIVE_INFINITY;
28
+ for (var i = 0; i < positions.length; i++) {
29
+ var position = positions[i];
30
+ var curDist = Math.abs(projectedEnd - position);
31
+ if (curDist < dist) {
32
+ dist = curDist;
33
+ closestPoint = i;
34
+ }
35
+ }
36
+ var dismissPoint = positions.length - 1;
37
+ var isKeyboardFitDismiss = isWeb && dismissOnSnapToBottom && isKeyboardVisible && snapPointsMode === "fit" && positions.length === 2 && closestPoint === dismissPoint;
38
+ if (!isKeyboardFitDismiss) {
39
+ return closestPoint;
40
+ }
41
+ var openPosition = positions[0];
42
+ var dismissPosition = positions[dismissPoint];
43
+ var dismissDistance = dismissPosition - openPosition;
44
+ if (dismissDistance <= 0 || frameSize <= 0) {
45
+ return closestPoint;
46
+ }
47
+ var draggedDistance = Math.max(0, currentPosition - openPosition);
48
+ var thresholdBase = Math.min(frameSize, dismissDistance);
49
+ var dismissThreshold = Math.max(120, thresholdBase * 0.35);
50
+ return draggedDistance >= dismissThreshold ? closestPoint : 0;
51
+ }
52
+ function getKeyboardOccludedHeight(param) {
53
+ var {
54
+ frameSize,
55
+ isKeyboardVisible,
56
+ keyboardHeight,
57
+ screenSize,
58
+ sheetY
59
+ } = param;
60
+ if (!isKeyboardVisible || keyboardHeight <= 0 || screenSize <= 0 || frameSize <= 0 || sheetY === void 0 || sheetY >= screenSize) {
61
+ return 0;
62
+ }
63
+ var keyboardTop = screenSize - keyboardHeight;
64
+ var sheetBottom = sheetY + frameSize;
65
+ var occludedHeight = Math.ceil(sheetBottom - keyboardTop);
66
+ return Math.min(frameSize, Math.max(0, occludedHeight));
67
+ }
68
+ export { getKeyboardAdjustedSheetY, getKeyboardOccludedHeight, getSheetReleasePosition };
69
+ //# sourceMappingURL=keyboardAvoidance.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getKeyboardAdjustedSheetY","param","sheetY","screenSize","isKeyboardVisible","keyboardHeight","shouldTranslate","safeAreaTop","Math","max","getSheetReleasePosition","positions","projectedEnd","currentPosition","frameSize","dismissOnSnapToBottom","snapPointsMode","isWeb","closestPoint","dist","Number","POSITIVE_INFINITY","i","length","position","curDist","abs","dismissPoint","isKeyboardFitDismiss","openPosition","dismissPosition","dismissDistance","draggedDistance","thresholdBase","min","dismissThreshold","getKeyboardOccludedHeight","keyboardTop","sheetBottom","occludedHeight","ceil"],"sources":["../../src/keyboardAvoidance.ts"],"sourcesContent":[null],"mappings":"AAAO,SAASA,0BAA0BC,KAAA;EACxC;IAAAC,MAAA;IAAAC,UAAA;IAAAC,iBAAA;IAAAC,cAAA;IAAAC,eAAA;IAAAC;EAAA,IAAAN,KAAA;EACA,KAAAK,eAAA,KAAAF,iBAAA,IAAAC,cAAA,SAAAF,UAAA,SAAAD,MAAA,IAAAC,UAAA;IACA,OAAAD,MAAA;EACA;EACA,OAAAM,IAAA,CAAAC,GAAA,CAAAF,WAAA,EAAAL,MAAA,GAAAG,cAAA;AAAA;AAEF,SAOGK,wBAAAT,KAAA;EACD,IACE;IAACU,SAAA;IAAAC,YACA;IAAAC,eACD;IAAAC,SAAA;IAAAC,qBACA;IAAAC,cACA;IAAUZ,iBACV;IAAAa;EAAA,IAAAhB,KAAA;EACA,IAAAiB,YAAO;EACT,IAAAC,IAAA,GAAAC,MAAA,CAAAC,iBAAA;EAEA,SAAOC,CAAA,GAAK,GAAIA,CAAA,GAAAX,SAAa,CAAAY,MAAA,EAASD,CAAA;IACxC,IAAAE,QAAA,GAAAb,SAAA,CAAAW,CAAA;IAEO,IAAAG,OAAS,GAAAjB,IAAA,CAAAkB,GAAA,CAAAd,YAAwB,GAAAY,QAAA;IACtC,IAAAC,OAAA,GAAAN,IAAA;MACAA,IAAA,GAAAM,OAAA;MACAP,YAAA,GAAAI,CAAA;IACA;EACA;EACA,IAAAK,YAAA,GAAAhB,SAAA,CAAAY,MAAA;EACA,IAAAK,oBAAA,GAAAX,KAAA,IAAAF,qBAAA,IAAAX,iBAAA,IAAAY,cAAA,cAAAL,SAAA,CAAAY,MAAA,UAAAL,YAAA,KAAAS,YAAA;EACA,KAAAC,oBAAA;IAUC,OAAAV,YAAA;EACD;EACA,IAAIW,YAAO,GAAOlB,SAAA;EAElB,IAAAmB,eAAgB,GAAInB,SAAU,CAAAgB,YAAa;EACzC,IAAAI,eAAiB,GAAAD,eAAW,GAAAD,YAAA;EAC5B,IAAAE,eAAgB,IAAK,KAAIjB,SAAA,KAAe;IACxC,OAAII,YAAU;EACZ;EACA,IAAAc,eAAe,GAAAxB,IAAA,CAAAC,GAAA,IAAAI,eAAA,GAAAgB,YAAA;EAAA,IACjBI,aAAA,GAAAzB,IAAA,CAAA0B,GAAA,CAAApB,SAAA,EAAAiB,eAAA;EACF,IAAAI,gBAAA,GAAA3B,IAAA,CAAAC,GAAA,MAAAwB,aAAA;EAOA,OAAMD,eAAe,IAAAG,gBAAmB,GAAAjB,YAAA;AACxC;AAQA,SAAKkB,yBAAsBA,CAAAnC,KAAA;EACzB;IAAAa,SAAO;IAAAV,iBAAA;IAAAC,cAAA;IAAAF,UAAA;IAAAD;EAAA,IAAAD,KAAA;EACT,KAAAG,iBAAA,IAAAC,cAAA,SAAAF,UAAA,SAAAW,SAAA,SAAAZ,MAAA,eAAAA,MAAA,IAAAC,UAAA;IAEA,OAAM;EACN;EACA,IAAAkC,WAAM,GAAAlC,UAAkB,GAAAE,cAAkB;EAC1C,IAAIiC,WAAA,GAAApC,MAAmB,GAAAY,SAAK;EAC1B,IAAAyB,cAAO,GAAA/B,IAAA,CAAAgC,IAAA,CAAAF,WAAA,GAAAD,WAAA;EACT,OAAA7B,IAAA,CAAA0B,GAAA,CAAApB,SAAA,EAAAN,IAAA,CAAAC,GAAA,IAAA8B,cAAA;AAEA;AACA,SACAvC,yBAAyB,EAEzBoC,yBAAO,EACT1B,uBAAA","ignoreList":[]}
@@ -39,6 +39,9 @@ function setupNativeSheet(platform, RNIOSModal) {
39
39
  return /* @__PURE__ */jsx(Fragment, {
40
40
  children: /* @__PURE__ */jsxs(SheetProvider, {
41
41
  setHasScrollView: emptyFn,
42
+ keyboardOccludedHeight: 0,
43
+ isKeyboardVisible: false,
44
+ keyboardStableFrameHeight: 0,
42
45
  ...providerProps,
43
46
  onlyShowFrame: true,
44
47
  children: [/* @__PURE__ */jsx(ModalSheetView, {
@@ -1 +1 @@
1
- {"version":3,"names":["YStack","useEffect","useRef","View","SheetProvider","useSheetOpenState","useSheetProviderProps","Fragment","jsx","jsxs","nativeSheets","ios","getNativeSheet","platform","setupNativeSheet","RNIOSModal","ModalSheetView","ModalSheetViewMainContent","props","state","providerProps","open","setOpen","ref","current","presentModal","dismissModal","setOpenInternal","next","onOpenChange","children","setHasScrollView","emptyFn","onlyShowFrame","onModalDidDismiss","style","flex","position","opacity","pointerEvents","width","height"],"sources":["../../src/nativeSheet.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAEvB,SAASC,SAAA,EAAWC,MAAA,QAAc;AAClC,SAASC,IAAA,QAAY;AACrB,SAASC,aAAA,QAAqB;AAE9B,SAASC,iBAAA,QAAyB;AAClC,SAASC,qBAAA,QAA6B;AAqD9B,SAAAC,QAAA,EAIQC,GAAA,EAHNC,IAAA,QADF;AA/CR,MAAMC,YAAA,GAAmF;EACvFC,GAAA,EAAK;AACP;AAEO,SAASC,eAAeC,QAAA,EAAgC;EAC7D,OAAOH,YAAA,CAAaG,QAAQ;AAC9B;AAEO,SAASC,iBACdD,QAAA,EACAE,UAAA,EACA;EACA,MAAM;IAAEC,cAAA;IAAgBC;EAA0B,IAAIF,UAAA;EAEtD,IAAIF,QAAA,KAAa,OAAO;IACtBH,YAAA,CAAaG,QAAQ,IAAKK,KAAA,IAAsB;MAC9C,MAAMC,KAAA,GAAQd,iBAAA,CAAkBa,KAAK;MACrC,MAAME,aAAA,GAAgBd,qBAAA,CAAsBY,KAAA,EAAOC,KAAK;MAIxD,MAAM;QAAEE,IAAA;QAAMC;MAAQ,IAAIH,KAAA;MAC1B,MAAMI,GAAA,GAAMrB,MAAA,CAGT,MAAS;MAEZD,SAAA,CAAU,MAAM;QACd,IAAIoB,IAAA,EAAM;UACRE,GAAA,CAAIC,OAAA,EAASC,YAAA,CAAa;QAC5B,OAAO;UACLF,GAAA,CAAIC,OAAA,EAASE,YAAA,CAAa;QAC5B;MACF,GAAG,CAACL,IAAI,CAAC;MAET,SAASM,gBAAgBC,IAAA,EAAe;QACtCV,KAAA,CAAMW,YAAA,GAAeR,IAAI;QACzBC,OAAA,CAAQM,IAAI;MACd;MAQA,OACE,eAAApB,GAAA,CAAAD,QAAA;QACEuB,QAAA,iBAAArB,IAAA,CAACL,aAAA;UAAc2B,gBAAA,EAAkBC,OAAA;UAAU,GAAGZ,aAAA;UAAea,aAAA,EAAa;UACxEH,QAAA,kBAAAtB,GAAA,CAACQ,cAAA;YAAeO,GAAA;YAAUW,iBAAA,EAAmBA,CAAA,KAAMP,eAAA,CAAgB,KAAK;YACtEG,QAAA,iBAAAtB,GAAA,CAACS,yBAAA;cACCa,QAAA,iBAAAtB,GAAA,CAACL,IAAA;gBAAKgC,KAAA,EAAO;kBAAEC,IAAA,EAAM;gBAAE;gBAAIN,QAAA,EAAAZ,KAAA,CAAMY;cAAA,CAAS;YAAA,CAC5C;UAAA,CACF,GAIA,eAAAtB,GAAA,CAACR,MAAA;YACCqC,QAAA,EAAS;YACTC,OAAA,EAAS;YACTC,aAAA,EAAc;YACdC,KAAA,EAAO;YACPC,MAAA,EAAQ;YAEPX,QAAA,EAAAZ,KAAA,CAAMY;UAAA,CACT;QAAA,CACF;MAAA,CACF;IAEJ;EACF;AACF;AAEA,MAAME,OAAA,GAAUA,CAAA,KAAM,CAEtB","ignoreList":[]}
1
+ {"version":3,"names":["YStack","useEffect","useRef","View","SheetProvider","useSheetOpenState","useSheetProviderProps","Fragment","jsx","jsxs","nativeSheets","ios","getNativeSheet","platform","setupNativeSheet","RNIOSModal","ModalSheetView","ModalSheetViewMainContent","props","state","providerProps","open","setOpen","ref","current","presentModal","dismissModal","setOpenInternal","next","onOpenChange","children","setHasScrollView","emptyFn","keyboardOccludedHeight","isKeyboardVisible","keyboardStableFrameHeight","onlyShowFrame","onModalDidDismiss","style","flex","position","opacity","pointerEvents","width","height"],"sources":["../../src/nativeSheet.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAEvB,SAASC,SAAA,EAAWC,MAAA,QAAc;AAClC,SAASC,IAAA,QAAY;AACrB,SAASC,aAAA,QAAqB;AAE9B,SAASC,iBAAA,QAAyB;AAClC,SAASC,qBAAA,QAA6B;AAqD9B,SAAAC,QAAA,EAWQC,GAAA,EAVNC,IAAA,QADF;AA/CR,MAAMC,YAAA,GAAmF;EACvFC,GAAA,EAAK;AACP;AAEO,SAASC,eAAeC,QAAA,EAAgC;EAC7D,OAAOH,YAAA,CAAaG,QAAQ;AAC9B;AAEO,SAASC,iBACdD,QAAA,EACAE,UAAA,EACA;EACA,MAAM;IAAEC,cAAA;IAAgBC;EAA0B,IAAIF,UAAA;EAEtD,IAAIF,QAAA,KAAa,OAAO;IACtBH,YAAA,CAAaG,QAAQ,IAAKK,KAAA,IAAsB;MAC9C,MAAMC,KAAA,GAAQd,iBAAA,CAAkBa,KAAK;MACrC,MAAME,aAAA,GAAgBd,qBAAA,CAAsBY,KAAA,EAAOC,KAAK;MAIxD,MAAM;QAAEE,IAAA;QAAMC;MAAQ,IAAIH,KAAA;MAC1B,MAAMI,GAAA,GAAMrB,MAAA,CAGT,MAAS;MAEZD,SAAA,CAAU,MAAM;QACd,IAAIoB,IAAA,EAAM;UACRE,GAAA,CAAIC,OAAA,EAASC,YAAA,CAAa;QAC5B,OAAO;UACLF,GAAA,CAAIC,OAAA,EAASE,YAAA,CAAa;QAC5B;MACF,GAAG,CAACL,IAAI,CAAC;MAET,SAASM,gBAAgBC,IAAA,EAAe;QACtCV,KAAA,CAAMW,YAAA,GAAeR,IAAI;QACzBC,OAAA,CAAQM,IAAI;MACd;MAQA,OACE,eAAApB,GAAA,CAAAD,QAAA;QACEuB,QAAA,iBAAArB,IAAA,CAACL,aAAA;UACC2B,gBAAA,EAAkBC,OAAA;UAClBC,sBAAA,EAAwB;UACxBC,iBAAA,EAAmB;UACnBC,yBAAA,EAA2B;UAC1B,GAAGf,aAAA;UACJgB,aAAA,EAAa;UAEbN,QAAA,kBAAAtB,GAAA,CAACQ,cAAA;YAAeO,GAAA;YAAUc,iBAAA,EAAmBA,CAAA,KAAMV,eAAA,CAAgB,KAAK;YACtEG,QAAA,iBAAAtB,GAAA,CAACS,yBAAA;cACCa,QAAA,iBAAAtB,GAAA,CAACL,IAAA;gBAAKmC,KAAA,EAAO;kBAAEC,IAAA,EAAM;gBAAE;gBAAIT,QAAA,EAAAZ,KAAA,CAAMY;cAAA,CAAS;YAAA,CAC5C;UAAA,CACF,GAIA,eAAAtB,GAAA,CAACR,MAAA;YACCwC,QAAA,EAAS;YACTC,OAAA,EAAS;YACTC,aAAA,EAAc;YACdC,KAAA,EAAO;YACPC,MAAA,EAAQ;YAEPd,QAAA,EAAAZ,KAAA,CAAMY;UAAA,CACT;QAAA,CACF;MAAA,CACF;IAEJ;EACF;AACF;AAEA,MAAME,OAAA,GAAUA,CAAA,KAAM,CAEtB","ignoreList":[]}
@@ -42,6 +42,9 @@ function setupNativeSheet(platform, RNIOSModal) {
42
42
  return /* @__PURE__ */_jsx(_Fragment, {
43
43
  children: /* @__PURE__ */_jsxs(SheetProvider, {
44
44
  setHasScrollView: emptyFn,
45
+ keyboardOccludedHeight: 0,
46
+ isKeyboardVisible: false,
47
+ keyboardStableFrameHeight: 0,
45
48
  ...providerProps,
46
49
  onlyShowFrame: true,
47
50
  children: [/* @__PURE__ */_jsx(ModalSheetView, {
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","YStack","useEffect","useRef","View","SheetProvider","useSheetOpenState","useSheetProviderProps","nativeSheets","ios","getNativeSheet","platform","setupNativeSheet","RNIOSModal","ModalSheetView","ModalSheetViewMainContent","props","state","providerProps","open","setOpen","ref","_ref_current","current","presentModal","_ref_current1","dismissModal","setOpenInternal","next","_props_onOpenChange","onOpenChange","call","children","setHasScrollView","emptyFn","onlyShowFrame","onModalDidDismiss","style"],"sources":["../../src/nativeSheet.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAA,IAAAC,IAAA,EAAAC,IAAc,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAEvB,SAASC,MAAA,QAAW,kBAAc;AAClC,SAASC,SAAA,EAAAC,MAAY;AACrB,SAASC,IAAA,sBAAqB;AAE9B,SAASC,aAAA,kCAAyB;AAClC,SAASC,iBAAA,uCAA6B;AAqD9B,SAAAC,qBACE,QADF;AA/CR,IAAAC,YAAM;EACJC,GAAA,EAAK;AACP;AAEO,SAASC,eAAeC,QAAA,EAAgC;EAC7D,OAAOH,YAAA,CAAaG,QAAQ;AAC9B;AAEO,SAASC,iBACdD,QAAA,EACAE,UAAA,EACA;EACA;IAAMC,cAAE;IAAAC;EAAgB,IAA0BF,UAAI;EAEtD,IAAIF,QAAA,KAAa,OAAO;IACtBH,YAAA,CAAaG,QAAQ,IAAI,UAACK,KAAsB;MAC9C,IAAAC,KAAM,GAAAX,iBAAQ,CAAAU,KAAkB;MAChC,IAAAE,aAAM,GAAAX,qBAAgB,CAAAS,KAAsB,EAAAC,KAAO;MAInD;QAAME,IAAE;QAAAC;MAAM,IAAQH,KAAI;MAC1B,IAAAI,GAAM,GAAAlB,MAAM,MAGT;MAEHD,SAAA,CAAU,YAAM;QACd,IAAIiB,IAAA,EAAM;UACR,IAAIG,YAAS;UACf,CAAAA,YAAO,GAAAD,GAAA,CAAAE,OAAA,cAAAD,YAAA,uBAAAA,YAAA,CAAAE,YAAA;QACL,OAAI;UACN,IAAAC,aAAA;UACE,CAAAA,aAAK,GAAAJ,GAAA,CAAAE,OAAA,cAAAE,aAAA,uBAAAA,aAAA,CAAAC,YAAA;QAET;MACE,IACAP,IAAA,CACF;MAQA,SACEQ,gBAAAC,IAAA;QAEI,IAAAC,mBAAC;QAQD,CAAAA,mBAAA,GAAAb,KAAA,CAAAc,YAAA,cAAAD,mBAAA,uBAAAA,mBAAA,CAAAE,IAAA,CAAAf,KAAA,EAAAG,IAAA;QAAAC,OAAC,CAAAQ,IAAA;MAAA;MAAA,OACC,eAAShC,IAAA,CAAAI,SAAA;QAAAgC,QACT,iBAASlC,KAAA,CAAAO,aAAA;UAAA4B,gBACT,EAAcC,OAAA;UAAA,GACdhB,aAAO;UAAAiB,aACC;UAAAH,QAEP,GAAM,eAAApC,IAAA,CAAAkB,cAAA;YACTO,GAAA;YAEJe,iBAAA,WAAAA,CAAA;cAEJ,OAAAT,eAAA;YACF;YACFK,QAAA,iBAAApC,IAAA,CAAAmB,yBAAA;cAEgBiB,QAAM,iBAAApC,IAAA,CAAAQ,IAAA;gBAEtBiC,KAAA","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","YStack","useEffect","useRef","View","SheetProvider","useSheetOpenState","useSheetProviderProps","nativeSheets","ios","getNativeSheet","platform","setupNativeSheet","RNIOSModal","ModalSheetView","ModalSheetViewMainContent","props","state","providerProps","open","setOpen","ref","_ref_current","current","presentModal","_ref_current1","dismissModal","setOpenInternal","next","_props_onOpenChange","onOpenChange","call","children","setHasScrollView","emptyFn","keyboardOccludedHeight","isKeyboardVisible","keyboardStableFrameHeight","onlyShowFrame","onModalDidDismiss","style","flex"],"sources":["../../src/nativeSheet.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,GAAA,IAAAC,IAAA,EAAAC,IAAc,IAAAC,KAAA,EAAAC,QAAA,IAAAC,SAAA;AAEvB,SAASC,MAAA,QAAW,kBAAc;AAClC,SAASC,SAAA,EAAAC,MAAY;AACrB,SAASC,IAAA,sBAAqB;AAE9B,SAASC,aAAA,kCAAyB;AAClC,SAASC,iBAAA,uCAA6B;AAqD9B,SAAAC,qBACE,QADF;AA/CR,IAAAC,YAAM;EACJC,GAAA,EAAK;AACP;AAEO,SAASC,eAAeC,QAAA,EAAgC;EAC7D,OAAOH,YAAA,CAAaG,QAAQ;AAC9B;AAEO,SAASC,iBACdD,QAAA,EACAE,UAAA,EACA;EACA;IAAMC,cAAE;IAAAC;EAAgB,IAA0BF,UAAI;EAEtD,IAAIF,QAAA,KAAa,OAAO;IACtBH,YAAA,CAAaG,QAAQ,IAAI,UAACK,KAAsB;MAC9C,IAAAC,KAAM,GAAAX,iBAAQ,CAAAU,KAAkB;MAChC,IAAAE,aAAM,GAAAX,qBAAgB,CAAAS,KAAsB,EAAAC,KAAO;MAInD;QAAME,IAAE;QAAAC;MAAM,IAAQH,KAAI;MAC1B,IAAAI,GAAM,GAAAlB,MAAM,MAGT;MAEHD,SAAA,CAAU,YAAM;QACd,IAAIiB,IAAA,EAAM;UACR,IAAIG,YAAS;UACf,CAAAA,YAAO,GAAAD,GAAA,CAAAE,OAAA,cAAAD,YAAA,uBAAAA,YAAA,CAAAE,YAAA;QACL,OAAI;UACN,IAAAC,aAAA;UACE,CAAAA,aAAK,GAAAJ,GAAA,CAAAE,OAAA,cAAAE,aAAA,uBAAAA,aAAA,CAAAC,YAAA;QAET;MACE,IACAP,IAAA,CACF;MAQA,SACEQ,gBAAAC,IAAA;QACG,IAAAC,mBAAA;QAAA,CAAAA,mBAAA,GAAAb,KAAA,CAAAc,YAAA,cAAAD,mBAAA,uBAAAA,mBAAA,CAAAE,IAAA,CAAAf,KAAA,EAAAG,IAAA;QAAAC,OACC,CAAAQ,IAAA;MAAkB;MACM,OACxB,eAAmBhC,IAAA,CAAAI,SAAA;QAAAgC,QACnB,iBAAAlC,KAA2B,CAAAO,aAAA;UAC1B4B,gBAAG,EAAAC,OAAA;UACJC,sBAAa;UAEbC,iBAAA;UAAAC,yBAAC;UAID,GAIAnB,aAAA;UAAAoB,aAAC;UAAAN,QAAA,kBACUpC,IAAA,CAAAkB,cAAA;YAAAO,GACT;YAASkB,iBACK,WAAAA,CAAA;cACd,OAAOZ,eAAA;YAAA;YACCK,QAEP,iBAAMpC,IAAA,CAAAmB,yBAAA;cAAAiB,QAAA,iBAAApC,IAAA,CAAAQ,IAAA;gBACToC,KAAA;kBAAAC,IAAA;gBAAA;gBAEJT,QAAA,EAAAhB,KAAA,CAAAgB;cAEJ;YACF;UACF,IAEM;UAEN","ignoreList":[]}
@@ -1,25 +1,28 @@
1
1
  import { getGestureHandler } from "@hanzogui/native";
2
+ const SHEET_GESTURE_STATE_KEY = "__hanzogui_sheet_gesture_state__";
2
3
  function isGestureHandlerEnabled() {
3
- return getGestureHandler().isEnabled;
4
+ const g = globalThis;
5
+ return g[SHEET_GESTURE_STATE_KEY]?.enabled ?? getGestureHandler().isEnabled;
4
6
  }
5
7
  function setupGestureHandler(config) {
6
8
  const g = globalThis;
7
- if (g.__gui_sheet_gesture_handler_setup) {
9
+ if (g.__hanzogui_sheet_gesture_handler_setup) {
8
10
  return;
9
11
  }
10
- g.__gui_sheet_gesture_handler_setup = true;
12
+ g.__hanzogui_sheet_gesture_handler_setup = true;
11
13
  const {
12
14
  Gesture,
13
15
  GestureDetector,
14
16
  ScrollView
15
17
  } = config;
16
18
  if (Gesture && GestureDetector) {
17
- getGestureHandler().set({
19
+ g[SHEET_GESTURE_STATE_KEY] = {
18
20
  enabled: true,
19
21
  Gesture,
20
22
  GestureDetector,
21
- ScrollView: ScrollView || null
22
- });
23
+ ScrollView: ScrollView || null,
24
+ RootView: null
25
+ };
23
26
  }
24
27
  }
25
28
  export { isGestureHandlerEnabled, setupGestureHandler };
@@ -1 +1 @@
1
- {"version":3,"names":["getGestureHandler","isGestureHandlerEnabled","isEnabled","setupGestureHandler","config","g","globalThis","__gui_sheet_gesture_handler_setup","Gesture","GestureDetector","ScrollView","set","enabled"],"sources":["../../src/setupGestureHandler.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,iBAAA,QAAyB;AAE3B,SAASC,wBAAA,EAAmC;EACjD,OAAOD,iBAAA,CAAkB,EAAEE,SAAA;AAC7B;AAQO,SAASC,oBAAoBC,MAAA,EAAyC;EAC3E,MAAMC,CAAA,GAAIC,UAAA;EACV,IAAID,CAAA,CAAEE,iCAAA,EAAmC;IACvC;EACF;EACAF,CAAA,CAAEE,iCAAA,GAAoC;EAEtC,MAAM;IAAEC,OAAA;IAASC,eAAA;IAAiBC;EAAW,IAAIN,MAAA;EAEjD,IAAII,OAAA,IAAWC,eAAA,EAAiB;IAC9BT,iBAAA,CAAkB,EAAEW,GAAA,CAAI;MACtBC,OAAA,EAAS;MACTJ,OAAA;MACAC,eAAA;MACAC,UAAA,EAAYA,UAAA,IAAc;IAC5B,CAAC;EACH;AACF","ignoreList":[]}
1
+ {"version":3,"names":["getGestureHandler","SHEET_GESTURE_STATE_KEY","isGestureHandlerEnabled","g","globalThis","enabled","isEnabled","setupGestureHandler","config","__hanzogui_sheet_gesture_handler_setup","Gesture","GestureDetector","ScrollView","RootView"],"sources":["../../src/setupGestureHandler.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,iBAAA,QAAyB;AAIlC,MAAMC,uBAAA,GAA0B;AAEzB,SAASC,wBAAA,EAAmC;EACjD,MAAMC,CAAA,GAAIC,UAAA;EAIV,OAAOD,CAAA,CAAEF,uBAAuB,GAAGI,OAAA,IAAWL,iBAAA,CAAkB,EAAEM,SAAA;AACpE;AAQO,SAASC,oBAAoBC,MAAA,EAAyC;EAC3E,MAAML,CAAA,GAAIC,UAAA;EACV,IAAID,CAAA,CAAEM,sCAAA,EAAwC;IAC5C;EACF;EACAN,CAAA,CAAEM,sCAAA,GAAyC;EAE3C,MAAM;IAAEC,OAAA;IAASC,eAAA;IAAiBC;EAAW,IAAIJ,MAAA;EAEjD,IAAIE,OAAA,IAAWC,eAAA,EAAiB;IAC9BR,CAAA,CAAEF,uBAAuB,IAAI;MAC3BI,OAAA,EAAS;MACTK,OAAA;MACAC,eAAA;MACAC,UAAA,EAAYA,UAAA,IAAc;MAC1BC,QAAA,EAAU;IACZ;EACF;AACF","ignoreList":[]}
@@ -1,25 +1,30 @@
1
1
  import { getGestureHandler } from "@hanzogui/native";
2
+ var SHEET_GESTURE_STATE_KEY = "__hanzogui_sheet_gesture_state__";
2
3
  function isGestureHandlerEnabled() {
3
- return getGestureHandler().isEnabled;
4
+ var _g_SHEET_GESTURE_STATE_KEY;
5
+ var g = globalThis;
6
+ var _g_SHEET_GESTURE_STATE_KEY_enabled;
7
+ return (_g_SHEET_GESTURE_STATE_KEY_enabled = (_g_SHEET_GESTURE_STATE_KEY = g[SHEET_GESTURE_STATE_KEY]) === null || _g_SHEET_GESTURE_STATE_KEY === void 0 ? void 0 : _g_SHEET_GESTURE_STATE_KEY.enabled) !== null && _g_SHEET_GESTURE_STATE_KEY_enabled !== void 0 ? _g_SHEET_GESTURE_STATE_KEY_enabled : getGestureHandler().isEnabled;
4
8
  }
5
9
  function setupGestureHandler(config) {
6
10
  var g = globalThis;
7
- if (g.__gui_sheet_gesture_handler_setup) {
11
+ if (g.__hanzogui_sheet_gesture_handler_setup) {
8
12
  return;
9
13
  }
10
- g.__gui_sheet_gesture_handler_setup = true;
14
+ g.__hanzogui_sheet_gesture_handler_setup = true;
11
15
  var {
12
16
  Gesture,
13
17
  GestureDetector,
14
18
  ScrollView
15
19
  } = config;
16
20
  if (Gesture && GestureDetector) {
17
- getGestureHandler().set({
21
+ g[SHEET_GESTURE_STATE_KEY] = {
18
22
  enabled: true,
19
23
  Gesture,
20
24
  GestureDetector,
21
- ScrollView: ScrollView || null
22
- });
25
+ ScrollView: ScrollView || null,
26
+ RootView: null
27
+ };
23
28
  }
24
29
  }
25
30
  export { isGestureHandlerEnabled, setupGestureHandler };
@@ -1 +1 @@
1
- {"version":3,"names":["getGestureHandler","isGestureHandlerEnabled","isEnabled","setupGestureHandler","config","g","globalThis","__gui_sheet_gesture_handler_setup","Gesture","GestureDetector","ScrollView","set","enabled"],"sources":["../../src/setupGestureHandler.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,iBAAA,QAAyB;AAE3B,SAASC,wBAAA,EAAmC;EACjD,OAAOD,iBAAA,CAAkB,EAAEE,SAAA;AAC7B;AAQO,SAASC,oBAAoBC,MAAA,EAAyC;EAC3E,IAAAC,CAAA,GAAMC,UAAI;EACV,IAAID,CAAA,CAAEE,iCAAA,EAAmC;IACvC;EACF;EACAF,CAAA,CAAEE,iCAAA,GAAoC;EAEtC;IAAMC,OAAE;IAAAC,eAAS;IAAAC;EAAiB,IAAWN,MAAI;EAEjD,IAAII,OAAA,IAAWC,eAAA,EAAiB;IAC9BT,iBAAA,CAAkB,EAAEW,GAAA,CAAI;MACtBC,OAAA,EAAS;MACTJ,OAAA;MACAC,eAAA;MACAC,UAAA,EAAYA,UAAA,IAAc;IAC5B,CAAC;EACH;AACF","ignoreList":[]}
1
+ {"version":3,"names":["getGestureHandler","SHEET_GESTURE_STATE_KEY","isGestureHandlerEnabled","_g_SHEET_GESTURE_STATE_KEY","g","globalThis","_g_SHEET_GESTURE_STATE_KEY_enabled","enabled","isEnabled","setupGestureHandler","config","__hanzogui_sheet_gesture_handler_setup","Gesture","GestureDetector","ScrollView","RootView"],"sources":["../../src/setupGestureHandler.ts"],"sourcesContent":[null],"mappings":"AAIA,SAASA,iBAAA,QAAyB;AAIlC,IAAAC,uBAAM,qCAA0B;AAEzB,SAASC,wBAAA,EAAmC;EACjD,IAAAC,0BAAU;EAIV,IAAAC,CAAA,GAAOC,UAAE;EACX,IAAAC,kCAAA;EAQO,OAAS,CAAAA,kCAA6D,IAAAH,0BAAA,GAAAC,CAAA,CAAAH,uBAAA,eAAAE,0BAAA,uBAAAA,0BAAA,CAAAI,OAAA,cAAAD,kCAAA,cAAAA,kCAAA,GAAAN,iBAAA,GAAAQ,SAAA;AAC3E;AACA,SAAMC,oBAAAC,MAAA;EACJ,IAAAN,CAAA,GAAAC,UAAA;EACF,IAAAD,CAAA,CAAAO,sCAAA;IACE;EAEF;EAEAP,CAAA,CAAAO,sCAAgC;EAC9B,IAAE;IAAAC,OAAA;IAAAC,eAAuB;IAAIC;EAAA,IAAAJ,MAAA;EAAA,IAC3BE,OAAA,IAASC,eAAA;IAAAT,CAAA,CACTH,uBAAA;MACAM,OAAA;MACAK,OAAA;MACAC,eAAU;MACZC,UAAA,EAAAA,UAAA;MACFC,QAAA;IACF","ignoreList":[]}
@@ -1,6 +1,9 @@
1
- import { useCallback, useMemo, useRef } from "react";
1
+ import { isWeb } from "@hanzogui/constants";
2
+ import { useCallback, useEffect, useMemo, useRef } from "react";
2
3
  import { getGestureHandlerState, isGestureHandlerEnabled } from "./gestureState.mjs";
4
+ import { getSheetReleasePosition } from "./keyboardAvoidance.mjs";
3
5
  const AT_TOP_THRESHOLD = 5;
6
+ const SCROLL_HANDOFF_THRESHOLD = 160;
4
7
  function useGestureHandlerPan(config) {
5
8
  const {
6
9
  positions,
@@ -19,6 +22,16 @@ function useGestureHandlerPan(config) {
19
22
  } = config;
20
23
  const gestureHandlerEnabled = isGestureHandlerEnabled();
21
24
  const panGestureRef = useRef(null);
25
+ const releaseConfigRef = useRef({
26
+ dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,
27
+ snapPointsMode: config.snapPointsMode ?? "percent",
28
+ isKeyboardVisible: config.isKeyboardVisible === true
29
+ });
30
+ releaseConfigRef.current = {
31
+ dismissOnSnapToBottom: config.dismissOnSnapToBottom === true,
32
+ snapPointsMode: config.snapPointsMode ?? "percent",
33
+ isKeyboardVisible: config.isKeyboardVisible === true
34
+ };
22
35
  const gestureStateRef = useRef({
23
36
  startY: 0,
24
37
  // track last translation when pan was active (for position calculation after handoff)
@@ -33,16 +46,43 @@ function useGestureHandlerPan(config) {
33
46
  // causing positions to revert. Frozen positions ensure stable snap calculation.
34
47
  frozenPositions: [],
35
48
  frozenMinY: 0,
49
+ frozenIsKeyboardVisible: false,
36
50
  // whether pan gesture actually started (vs just a tap in onBegin)
37
- panStarted: false
51
+ panStarted: false,
52
+ startedBelowTop: false,
53
+ upwardDragAfterTop: 0,
54
+ scrollUnlockedAfterTop: false,
55
+ keepScrollLockedAfterEnd: false
38
56
  });
57
+ const unlockScrollTimer = useRef(null);
58
+ useEffect(() => {
59
+ return () => {
60
+ if (unlockScrollTimer.current) {
61
+ clearTimeout(unlockScrollTimer.current);
62
+ unlockScrollTimer.current = null;
63
+ }
64
+ };
65
+ }, []);
39
66
  const onStart = useCallback(() => {
40
67
  stopSpring();
41
68
  }, [stopSpring]);
42
- const onEnd = useCallback((closestPoint, animationOverride) => {
69
+ const onEnd = useCallback((closestPoint, animationOverride, keepScrollLocked = false) => {
70
+ if (unlockScrollTimer.current) {
71
+ clearTimeout(unlockScrollTimer.current);
72
+ unlockScrollTimer.current = null;
73
+ }
43
74
  setIsDragging(false);
44
75
  scrollBridge.setParentDragging(false);
45
- scrollBridge.setScrollEnabled?.(true);
76
+ scrollBridge.lockScrollAtTop = false;
77
+ if (keepScrollLocked) {
78
+ scrollBridge.setScrollEnabled?.(false, 0);
79
+ unlockScrollTimer.current = setTimeout(() => {
80
+ unlockScrollTimer.current = null;
81
+ scrollBridge.setScrollEnabled?.(true);
82
+ }, 160);
83
+ } else {
84
+ scrollBridge.setScrollEnabled?.(true);
85
+ }
46
86
  setPosition(closestPoint);
47
87
  animateTo(closestPoint, animationOverride);
48
88
  }, [setIsDragging, scrollBridge, setPosition, animateTo]);
@@ -73,6 +113,16 @@ function useGestureHandlerPan(config) {
73
113
  gs.scrollEngaged = currentScrollY > 0;
74
114
  gs.frozenPositions = [...positions];
75
115
  gs.frozenMinY = minY;
116
+ gs.frozenIsKeyboardVisible = releaseConfigRef.current.isKeyboardVisible;
117
+ gs.startedBelowTop = !atTop;
118
+ gs.upwardDragAfterTop = 0;
119
+ gs.scrollUnlockedAfterTop = false;
120
+ gs.keepScrollLockedAfterEnd = false;
121
+ scrollBridge.lockScrollAtTop = false;
122
+ if (unlockScrollTimer.current) {
123
+ clearTimeout(unlockScrollTimer.current);
124
+ unlockScrollTimer.current = null;
125
+ }
76
126
  if (!atTop) {
77
127
  scrollBridge.setScrollEnabled?.(false, 0);
78
128
  }
@@ -114,13 +164,24 @@ function useGestureHandlerPan(config) {
114
164
  }
115
165
  } else {
116
166
  if (hasScrollableContent) {
117
- panHandles = false;
167
+ if (gs.startedBelowTop && !gs.scrollUnlockedAfterTop) {
168
+ gs.upwardDragAfterTop += Math.max(0, -deltaY);
169
+ if (gs.upwardDragAfterTop >= SCROLL_HANDOFF_THRESHOLD) {
170
+ gs.scrollUnlockedAfterTop = true;
171
+ panHandles = false;
172
+ } else {
173
+ panHandles = true;
174
+ }
175
+ } else {
176
+ panHandles = false;
177
+ }
118
178
  } else {
119
179
  panHandles = true;
120
180
  }
121
181
  }
122
182
  }
123
183
  if (panHandles) {
184
+ scrollBridge.lockScrollAtTop = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;
124
185
  const lockTo = isCurrentlyAtTop && isSwipingDown && gs.scrollEngaged ? void 0 : 0;
125
186
  scrollBridge.setScrollEnabled?.(false, lockTo);
126
187
  gs.accumulatedOffset += deltaY;
@@ -129,35 +190,42 @@ function useGestureHandlerPan(config) {
129
190
  setAnimatedPosition(newPosition);
130
191
  scrollBridge.setParentDragging(newPosition > minY);
131
192
  } else {
193
+ scrollBridge.lockScrollAtTop = false;
132
194
  scrollBridge.setScrollEnabled?.(true);
195
+ scrollBridge.setParentDragging(false);
133
196
  }
134
197
  }).onEnd(event => {
135
198
  const {
136
199
  velocityY
137
200
  } = event;
138
201
  const currentPos = gs.startY + gs.accumulatedOffset;
139
- scrollBridge.scrollLockY = void 0;
202
+ const keepScrollLockedAfterEnd = gs.startedBelowTop && !gs.scrollUnlockedAfterTop;
203
+ scrollBridge.lockScrollAtTop = false;
204
+ scrollBridge.scrollLockY = keepScrollLockedAfterEnd ? 0 : void 0;
205
+ gs.keepScrollLockedAfterEnd = keepScrollLockedAfterEnd;
140
206
  const snapPositions = gs.frozenPositions.length > 0 ? gs.frozenPositions : positions;
141
207
  const snapMinY = gs.frozenPositions.length > 0 ? gs.frozenMinY : minY;
142
208
  if (currentPos <= snapMinY + AT_TOP_THRESHOLD && scrollBridge.y > 0) {
143
- onEnd(0);
209
+ onEnd(0, void 0, keepScrollLockedAfterEnd);
144
210
  return;
145
211
  }
146
212
  const velocity = velocityY / 1e3;
147
213
  const projectedEnd = currentPos + frameSize * velocity * 0.2;
148
- let closestPoint = 0;
149
- let minDist = Number.POSITIVE_INFINITY;
150
- for (let i = 0; i < snapPositions.length; i++) {
151
- const pos = snapPositions[i];
152
- const dist = Math.abs(projectedEnd - pos);
153
- if (dist < minDist) {
154
- minDist = dist;
155
- closestPoint = i;
156
- }
157
- }
158
- onEnd(closestPoint);
214
+ const releaseConfig = releaseConfigRef.current;
215
+ const closestPoint = getSheetReleasePosition({
216
+ positions: snapPositions,
217
+ projectedEnd,
218
+ currentPosition: currentPos,
219
+ frameSize,
220
+ dismissOnSnapToBottom: releaseConfig.dismissOnSnapToBottom,
221
+ snapPointsMode: releaseConfig.snapPointsMode,
222
+ isKeyboardVisible: gs.frozenIsKeyboardVisible,
223
+ isWeb
224
+ });
225
+ onEnd(closestPoint, void 0, keepScrollLockedAfterEnd);
159
226
  }).onFinalize(() => {
160
- scrollBridge.scrollLockY = void 0;
227
+ scrollBridge.lockScrollAtTop = false;
228
+ scrollBridge.scrollLockY = gs.keepScrollLockedAfterEnd ? 0 : void 0;
161
229
  if (gs.panStarted) {
162
230
  setIsDragging(false);
163
231
  } else {