@hanzogui/sheet 2.0.0

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 (347) hide show
  1. package/LICENSE +21 -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.cjs +48 -0
  8. package/dist/cjs/GestureDetectorWrapper.native.js +53 -0
  9. package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -0
  10. package/dist/cjs/GestureSheetContext.cjs +52 -0
  11. package/dist/cjs/GestureSheetContext.native.js +56 -0
  12. package/dist/cjs/GestureSheetContext.native.js.map +1 -0
  13. package/dist/cjs/Sheet.cjs +117 -0
  14. package/dist/cjs/Sheet.native.js +120 -0
  15. package/dist/cjs/Sheet.native.js.map +1 -0
  16. package/dist/cjs/SheetContext.cjs +32 -0
  17. package/dist/cjs/SheetContext.native.js +35 -0
  18. package/dist/cjs/SheetContext.native.js.map +1 -0
  19. package/dist/cjs/SheetController.cjs +65 -0
  20. package/dist/cjs/SheetController.native.js +71 -0
  21. package/dist/cjs/SheetController.native.js.map +1 -0
  22. package/dist/cjs/SheetImplementationCustom.cjs +472 -0
  23. package/dist/cjs/SheetImplementationCustom.native.js +524 -0
  24. package/dist/cjs/SheetImplementationCustom.native.js.map +1 -0
  25. package/dist/cjs/SheetScrollView.cjs +180 -0
  26. package/dist/cjs/SheetScrollView.native.js +197 -0
  27. package/dist/cjs/SheetScrollView.native.js.map +1 -0
  28. package/dist/cjs/constants.cjs +32 -0
  29. package/dist/cjs/constants.native.js +35 -0
  30. package/dist/cjs/constants.native.js.map +1 -0
  31. package/dist/cjs/contexts.cjs +42 -0
  32. package/dist/cjs/contexts.native.js +45 -0
  33. package/dist/cjs/contexts.native.js.map +1 -0
  34. package/dist/cjs/controller.cjs +29 -0
  35. package/dist/cjs/controller.native.js +32 -0
  36. package/dist/cjs/controller.native.js.map +1 -0
  37. package/dist/cjs/createSheet.cjs +191 -0
  38. package/dist/cjs/createSheet.native.js +208 -0
  39. package/dist/cjs/createSheet.native.js.map +1 -0
  40. package/dist/cjs/gestureState.cjs +39 -0
  41. package/dist/cjs/gestureState.native.js +42 -0
  42. package/dist/cjs/gestureState.native.js.map +1 -0
  43. package/dist/cjs/helpers.cjs +31 -0
  44. package/dist/cjs/helpers.native.js +35 -0
  45. package/dist/cjs/helpers.native.js.map +1 -0
  46. package/dist/cjs/index.cjs +28 -0
  47. package/dist/cjs/index.native.js +31 -0
  48. package/dist/cjs/index.native.js.map +1 -0
  49. package/dist/cjs/nativeSheet.cjs +87 -0
  50. package/dist/cjs/nativeSheet.native.js +101 -0
  51. package/dist/cjs/nativeSheet.native.js.map +1 -0
  52. package/dist/cjs/setupGestureHandler.cjs +46 -0
  53. package/dist/cjs/setupGestureHandler.native.js +50 -0
  54. package/dist/cjs/setupGestureHandler.native.js.map +1 -0
  55. package/dist/cjs/types.cjs +16 -0
  56. package/dist/cjs/types.native.js +19 -0
  57. package/dist/cjs/types.native.js.map +1 -0
  58. package/dist/cjs/useGestureHandlerPan.cjs +136 -0
  59. package/dist/cjs/useGestureHandlerPan.native.js +145 -0
  60. package/dist/cjs/useGestureHandlerPan.native.js.map +1 -0
  61. package/dist/cjs/useKeyboardControllerSheet.cjs +38 -0
  62. package/dist/cjs/useKeyboardControllerSheet.native.js +114 -0
  63. package/dist/cjs/useKeyboardControllerSheet.native.js.map +1 -0
  64. package/dist/cjs/useSheet.cjs +27 -0
  65. package/dist/cjs/useSheet.native.js +32 -0
  66. package/dist/cjs/useSheet.native.js.map +1 -0
  67. package/dist/cjs/useSheetController.cjs +50 -0
  68. package/dist/cjs/useSheetController.native.js +53 -0
  69. package/dist/cjs/useSheetController.native.js.map +1 -0
  70. package/dist/cjs/useSheetOffscreenSize.cjs +51 -0
  71. package/dist/cjs/useSheetOffscreenSize.native.js +61 -0
  72. package/dist/cjs/useSheetOffscreenSize.native.js.map +1 -0
  73. package/dist/cjs/useSheetOpenState.cjs +49 -0
  74. package/dist/cjs/useSheetOpenState.native.js +56 -0
  75. package/dist/cjs/useSheetOpenState.native.js.map +1 -0
  76. package/dist/cjs/useSheetProviderProps.cjs +133 -0
  77. package/dist/cjs/useSheetProviderProps.native.js +153 -0
  78. package/dist/cjs/useSheetProviderProps.native.js.map +1 -0
  79. package/dist/cjs/useSheetScrollViewGestures.cjs +123 -0
  80. package/dist/cjs/useSheetScrollViewGestures.native.js +110 -0
  81. package/dist/cjs/useSheetScrollViewGestures.native.js.map +1 -0
  82. package/dist/esm/GestureDetectorWrapper.mjs +25 -0
  83. package/dist/esm/GestureDetectorWrapper.mjs.map +1 -0
  84. package/dist/esm/GestureDetectorWrapper.native.js +27 -0
  85. package/dist/esm/GestureDetectorWrapper.native.js.map +1 -0
  86. package/dist/esm/GestureSheetContext.mjs +28 -0
  87. package/dist/esm/GestureSheetContext.mjs.map +1 -0
  88. package/dist/esm/GestureSheetContext.native.js +29 -0
  89. package/dist/esm/GestureSheetContext.native.js.map +1 -0
  90. package/dist/esm/Sheet.mjs +89 -0
  91. package/dist/esm/Sheet.mjs.map +1 -0
  92. package/dist/esm/Sheet.native.js +89 -0
  93. package/dist/esm/Sheet.native.js.map +1 -0
  94. package/dist/esm/SheetContext.mjs +6 -0
  95. package/dist/esm/SheetContext.mjs.map +1 -0
  96. package/dist/esm/SheetContext.native.js +6 -0
  97. package/dist/esm/SheetContext.native.js.map +1 -0
  98. package/dist/esm/SheetController.mjs +31 -0
  99. package/dist/esm/SheetController.mjs.map +1 -0
  100. package/dist/esm/SheetController.native.js +34 -0
  101. package/dist/esm/SheetController.native.js.map +1 -0
  102. package/dist/esm/SheetImplementationCustom.mjs +437 -0
  103. package/dist/esm/SheetImplementationCustom.mjs.map +1 -0
  104. package/dist/esm/SheetImplementationCustom.native.js +487 -0
  105. package/dist/esm/SheetImplementationCustom.native.js.map +1 -0
  106. package/dist/esm/SheetScrollView.mjs +146 -0
  107. package/dist/esm/SheetScrollView.mjs.map +1 -0
  108. package/dist/esm/SheetScrollView.native.js +160 -0
  109. package/dist/esm/SheetScrollView.native.js.map +1 -0
  110. package/dist/esm/constants.mjs +6 -0
  111. package/dist/esm/constants.mjs.map +1 -0
  112. package/dist/esm/constants.native.js +6 -0
  113. package/dist/esm/constants.native.js.map +1 -0
  114. package/dist/esm/contexts.mjs +7 -0
  115. package/dist/esm/contexts.mjs.map +1 -0
  116. package/dist/esm/contexts.native.js +7 -0
  117. package/dist/esm/contexts.native.js.map +1 -0
  118. package/dist/esm/controller.mjs +4 -0
  119. package/dist/esm/controller.mjs.map +1 -0
  120. package/dist/esm/controller.native.js +4 -0
  121. package/dist/esm/controller.native.js.map +1 -0
  122. package/dist/esm/createSheet.mjs +168 -0
  123. package/dist/esm/createSheet.mjs.map +1 -0
  124. package/dist/esm/createSheet.native.js +182 -0
  125. package/dist/esm/createSheet.native.js.map +1 -0
  126. package/dist/esm/gestureState.mjs +13 -0
  127. package/dist/esm/gestureState.mjs.map +1 -0
  128. package/dist/esm/gestureState.native.js +13 -0
  129. package/dist/esm/gestureState.native.js.map +1 -0
  130. package/dist/esm/helpers.mjs +8 -0
  131. package/dist/esm/helpers.mjs.map +1 -0
  132. package/dist/esm/helpers.native.js +9 -0
  133. package/dist/esm/helpers.native.js.map +1 -0
  134. package/dist/esm/index.js +12 -0
  135. package/dist/esm/index.js.map +1 -0
  136. package/dist/esm/index.mjs +12 -0
  137. package/dist/esm/index.mjs.map +1 -0
  138. package/dist/esm/index.native.js +12 -0
  139. package/dist/esm/index.native.js.map +1 -0
  140. package/dist/esm/nativeSheet.mjs +63 -0
  141. package/dist/esm/nativeSheet.mjs.map +1 -0
  142. package/dist/esm/nativeSheet.native.js +74 -0
  143. package/dist/esm/nativeSheet.native.js.map +1 -0
  144. package/dist/esm/setupGestureHandler.mjs +22 -0
  145. package/dist/esm/setupGestureHandler.mjs.map +1 -0
  146. package/dist/esm/setupGestureHandler.native.js +23 -0
  147. package/dist/esm/setupGestureHandler.native.js.map +1 -0
  148. package/dist/esm/types.mjs +2 -0
  149. package/dist/esm/types.mjs.map +1 -0
  150. package/dist/esm/types.native.js +2 -0
  151. package/dist/esm/types.native.js.map +1 -0
  152. package/dist/esm/useGestureHandlerPan.mjs +113 -0
  153. package/dist/esm/useGestureHandlerPan.mjs.map +1 -0
  154. package/dist/esm/useGestureHandlerPan.native.js +119 -0
  155. package/dist/esm/useGestureHandlerPan.native.js.map +1 -0
  156. package/dist/esm/useKeyboardControllerSheet.mjs +15 -0
  157. package/dist/esm/useKeyboardControllerSheet.mjs.map +1 -0
  158. package/dist/esm/useKeyboardControllerSheet.native.js +88 -0
  159. package/dist/esm/useKeyboardControllerSheet.native.js.map +1 -0
  160. package/dist/esm/useSheet.mjs +4 -0
  161. package/dist/esm/useSheet.mjs.map +1 -0
  162. package/dist/esm/useSheet.native.js +6 -0
  163. package/dist/esm/useSheet.native.js.map +1 -0
  164. package/dist/esm/useSheetController.mjs +15 -0
  165. package/dist/esm/useSheetController.mjs.map +1 -0
  166. package/dist/esm/useSheetController.native.js +15 -0
  167. package/dist/esm/useSheetController.native.js.map +1 -0
  168. package/dist/esm/useSheetOffscreenSize.mjs +28 -0
  169. package/dist/esm/useSheetOffscreenSize.mjs.map +1 -0
  170. package/dist/esm/useSheetOffscreenSize.native.js +35 -0
  171. package/dist/esm/useSheetOffscreenSize.native.js.map +1 -0
  172. package/dist/esm/useSheetOpenState.mjs +26 -0
  173. package/dist/esm/useSheetOpenState.mjs.map +1 -0
  174. package/dist/esm/useSheetOpenState.native.js +30 -0
  175. package/dist/esm/useSheetOpenState.native.js.map +1 -0
  176. package/dist/esm/useSheetProviderProps.mjs +99 -0
  177. package/dist/esm/useSheetProviderProps.mjs.map +1 -0
  178. package/dist/esm/useSheetProviderProps.native.js +116 -0
  179. package/dist/esm/useSheetProviderProps.native.js.map +1 -0
  180. package/dist/esm/useSheetScrollViewGestures.mjs +100 -0
  181. package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -0
  182. package/dist/esm/useSheetScrollViewGestures.native.js +84 -0
  183. package/dist/esm/useSheetScrollViewGestures.native.js.map +1 -0
  184. package/dist/jsx/GestureDetectorWrapper.mjs +25 -0
  185. package/dist/jsx/GestureDetectorWrapper.mjs.map +1 -0
  186. package/dist/jsx/GestureDetectorWrapper.native.js +53 -0
  187. package/dist/jsx/GestureDetectorWrapper.native.js.map +1 -0
  188. package/dist/jsx/GestureSheetContext.mjs +28 -0
  189. package/dist/jsx/GestureSheetContext.mjs.map +1 -0
  190. package/dist/jsx/GestureSheetContext.native.js +56 -0
  191. package/dist/jsx/GestureSheetContext.native.js.map +1 -0
  192. package/dist/jsx/Sheet.mjs +89 -0
  193. package/dist/jsx/Sheet.mjs.map +1 -0
  194. package/dist/jsx/Sheet.native.js +120 -0
  195. package/dist/jsx/Sheet.native.js.map +1 -0
  196. package/dist/jsx/SheetContext.mjs +6 -0
  197. package/dist/jsx/SheetContext.mjs.map +1 -0
  198. package/dist/jsx/SheetContext.native.js +35 -0
  199. package/dist/jsx/SheetContext.native.js.map +1 -0
  200. package/dist/jsx/SheetController.mjs +31 -0
  201. package/dist/jsx/SheetController.mjs.map +1 -0
  202. package/dist/jsx/SheetController.native.js +71 -0
  203. package/dist/jsx/SheetController.native.js.map +1 -0
  204. package/dist/jsx/SheetImplementationCustom.mjs +437 -0
  205. package/dist/jsx/SheetImplementationCustom.mjs.map +1 -0
  206. package/dist/jsx/SheetImplementationCustom.native.js +524 -0
  207. package/dist/jsx/SheetImplementationCustom.native.js.map +1 -0
  208. package/dist/jsx/SheetScrollView.mjs +146 -0
  209. package/dist/jsx/SheetScrollView.mjs.map +1 -0
  210. package/dist/jsx/SheetScrollView.native.js +197 -0
  211. package/dist/jsx/SheetScrollView.native.js.map +1 -0
  212. package/dist/jsx/constants.mjs +6 -0
  213. package/dist/jsx/constants.mjs.map +1 -0
  214. package/dist/jsx/constants.native.js +35 -0
  215. package/dist/jsx/constants.native.js.map +1 -0
  216. package/dist/jsx/contexts.mjs +7 -0
  217. package/dist/jsx/contexts.mjs.map +1 -0
  218. package/dist/jsx/contexts.native.js +45 -0
  219. package/dist/jsx/contexts.native.js.map +1 -0
  220. package/dist/jsx/controller.mjs +4 -0
  221. package/dist/jsx/controller.mjs.map +1 -0
  222. package/dist/jsx/controller.native.js +32 -0
  223. package/dist/jsx/controller.native.js.map +1 -0
  224. package/dist/jsx/createSheet.mjs +168 -0
  225. package/dist/jsx/createSheet.mjs.map +1 -0
  226. package/dist/jsx/createSheet.native.js +208 -0
  227. package/dist/jsx/createSheet.native.js.map +1 -0
  228. package/dist/jsx/gestureState.mjs +13 -0
  229. package/dist/jsx/gestureState.mjs.map +1 -0
  230. package/dist/jsx/gestureState.native.js +42 -0
  231. package/dist/jsx/gestureState.native.js.map +1 -0
  232. package/dist/jsx/helpers.mjs +8 -0
  233. package/dist/jsx/helpers.mjs.map +1 -0
  234. package/dist/jsx/helpers.native.js +35 -0
  235. package/dist/jsx/helpers.native.js.map +1 -0
  236. package/dist/jsx/index.js +12 -0
  237. package/dist/jsx/index.js.map +1 -0
  238. package/dist/jsx/index.mjs +12 -0
  239. package/dist/jsx/index.mjs.map +1 -0
  240. package/dist/jsx/index.native.js +31 -0
  241. package/dist/jsx/index.native.js.map +1 -0
  242. package/dist/jsx/nativeSheet.mjs +63 -0
  243. package/dist/jsx/nativeSheet.mjs.map +1 -0
  244. package/dist/jsx/nativeSheet.native.js +101 -0
  245. package/dist/jsx/nativeSheet.native.js.map +1 -0
  246. package/dist/jsx/setupGestureHandler.mjs +22 -0
  247. package/dist/jsx/setupGestureHandler.mjs.map +1 -0
  248. package/dist/jsx/setupGestureHandler.native.js +50 -0
  249. package/dist/jsx/setupGestureHandler.native.js.map +1 -0
  250. package/dist/jsx/types.mjs +2 -0
  251. package/dist/jsx/types.mjs.map +1 -0
  252. package/dist/jsx/types.native.js +19 -0
  253. package/dist/jsx/types.native.js.map +1 -0
  254. package/dist/jsx/useGestureHandlerPan.mjs +113 -0
  255. package/dist/jsx/useGestureHandlerPan.mjs.map +1 -0
  256. package/dist/jsx/useGestureHandlerPan.native.js +145 -0
  257. package/dist/jsx/useGestureHandlerPan.native.js.map +1 -0
  258. package/dist/jsx/useKeyboardControllerSheet.mjs +15 -0
  259. package/dist/jsx/useKeyboardControllerSheet.mjs.map +1 -0
  260. package/dist/jsx/useKeyboardControllerSheet.native.js +114 -0
  261. package/dist/jsx/useKeyboardControllerSheet.native.js.map +1 -0
  262. package/dist/jsx/useSheet.mjs +4 -0
  263. package/dist/jsx/useSheet.mjs.map +1 -0
  264. package/dist/jsx/useSheet.native.js +32 -0
  265. package/dist/jsx/useSheet.native.js.map +1 -0
  266. package/dist/jsx/useSheetController.mjs +15 -0
  267. package/dist/jsx/useSheetController.mjs.map +1 -0
  268. package/dist/jsx/useSheetController.native.js +53 -0
  269. package/dist/jsx/useSheetController.native.js.map +1 -0
  270. package/dist/jsx/useSheetOffscreenSize.mjs +28 -0
  271. package/dist/jsx/useSheetOffscreenSize.mjs.map +1 -0
  272. package/dist/jsx/useSheetOffscreenSize.native.js +61 -0
  273. package/dist/jsx/useSheetOffscreenSize.native.js.map +1 -0
  274. package/dist/jsx/useSheetOpenState.mjs +26 -0
  275. package/dist/jsx/useSheetOpenState.mjs.map +1 -0
  276. package/dist/jsx/useSheetOpenState.native.js +56 -0
  277. package/dist/jsx/useSheetOpenState.native.js.map +1 -0
  278. package/dist/jsx/useSheetProviderProps.mjs +99 -0
  279. package/dist/jsx/useSheetProviderProps.mjs.map +1 -0
  280. package/dist/jsx/useSheetProviderProps.native.js +153 -0
  281. package/dist/jsx/useSheetProviderProps.native.js.map +1 -0
  282. package/dist/jsx/useSheetScrollViewGestures.mjs +100 -0
  283. package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -0
  284. package/dist/jsx/useSheetScrollViewGestures.native.js +110 -0
  285. package/dist/jsx/useSheetScrollViewGestures.native.js.map +1 -0
  286. package/next.md +78 -0
  287. package/package.json +96 -0
  288. package/setup-gesture-handler/index.cjs +2 -0
  289. package/setup-gesture-handler/index.js +2 -0
  290. package/setup-gesture-handler/index.native.cjs +2 -0
  291. package/setup-gesture-handler/index.native.js +2 -0
  292. package/setup-gesture-handler.cjs +1 -0
  293. package/src/GestureDetectorWrapper.tsx +41 -0
  294. package/src/GestureSheetContext.tsx +62 -0
  295. package/src/Sheet.tsx +114 -0
  296. package/src/SheetContext.tsx +11 -0
  297. package/src/SheetController.tsx +44 -0
  298. package/src/SheetImplementationCustom.tsx +868 -0
  299. package/src/SheetScrollView.tsx +195 -0
  300. package/src/constants.tsx +5 -0
  301. package/src/contexts.ts +9 -0
  302. package/src/controller.ts +9 -0
  303. package/src/createSheet.tsx +296 -0
  304. package/src/gestureState.ts +24 -0
  305. package/src/helpers.tsx +31 -0
  306. package/src/index.ts +11 -0
  307. package/src/nativeSheet.tsx +89 -0
  308. package/src/setupGestureHandler.ts +34 -0
  309. package/src/types.tsx +181 -0
  310. package/src/useGestureHandlerPan.tsx +364 -0
  311. package/src/useKeyboardControllerSheet.native.ts +136 -0
  312. package/src/useKeyboardControllerSheet.ts +26 -0
  313. package/src/useSheet.tsx +3 -0
  314. package/src/useSheetController.tsx +27 -0
  315. package/src/useSheetOffscreenSize.tsx +49 -0
  316. package/src/useSheetOpenState.tsx +33 -0
  317. package/src/useSheetProviderProps.tsx +223 -0
  318. package/src/useSheetScrollViewGestures.native.ts +163 -0
  319. package/src/useSheetScrollViewGestures.ts +194 -0
  320. package/tsconfig.json +56 -0
  321. package/types/GestureDetectorWrapper.d.ts +14 -0
  322. package/types/GestureSheetContext.d.ts +36 -0
  323. package/types/Sheet.d.ts +183 -0
  324. package/types/SheetContext.d.ts +43 -0
  325. package/types/SheetController.d.ts +6 -0
  326. package/types/SheetImplementationCustom.d.ts +36 -0
  327. package/types/SheetScrollView.d.ts +40 -0
  328. package/types/constants.d.ts +5 -0
  329. package/types/contexts.d.ts +6 -0
  330. package/types/controller.d.ts +3 -0
  331. package/types/createSheet.d.ts +194 -0
  332. package/types/gestureState.d.ts +11 -0
  333. package/types/helpers.d.ts +2 -0
  334. package/types/index.d.ts +12 -0
  335. package/types/nativeSheet.d.ts +10 -0
  336. package/types/setupGestureHandler.d.ts +11 -0
  337. package/types/types.d.ts +147 -0
  338. package/types/useGestureHandlerPan.d.ts +44 -0
  339. package/types/useKeyboardControllerSheet.d.ts +7 -0
  340. package/types/useKeyboardControllerSheet.native.d.ts +13 -0
  341. package/types/useSheet.d.ts +2 -0
  342. package/types/useSheetController.d.ts +17 -0
  343. package/types/useSheetOffscreenSize.d.ts +3 -0
  344. package/types/useSheetOpenState.d.ts +9 -0
  345. package/types/useSheetProviderProps.d.ts +36 -0
  346. package/types/useSheetScrollViewGestures.d.ts +12 -0
  347. package/types/useSheetScrollViewGestures.native.d.ts +21 -0
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf,
8
+ __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: !0
13
+ });
14
+ },
15
+ __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
17
+ get: () => from[key],
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
+ value: mod,
29
+ enumerable: !0
30
+ }) : target, mod)),
31
+ __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
+ value: !0
33
+ }), mod);
34
+ var useSheetProviderProps_exports = {};
35
+ __export(useSheetProviderProps_exports, {
36
+ useSheetProviderProps: () => useSheetProviderProps
37
+ });
38
+ module.exports = __toCommonJS(useSheetProviderProps_exports);
39
+ var import_react = __toESM(require("react"), 1),
40
+ import_gui_core = require("@hanzo/gui-core"),
41
+ import_gui_use_constant = require("@hanzo/gui-use-constant"),
42
+ import_gui_use_controllable_state = require("@hanzo/gui-use-controllable-state");
43
+ function useSheetProviderProps(props, state) {
44
+ var options = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {},
45
+ handleRef = import_react.default.useRef(null),
46
+ contentRef = import_react.default.useRef(null),
47
+ [frameSize, setFrameSize] = import_react.default.useState(0),
48
+ [maxContentSize, setMaxContentSize] = import_react.default.useState(0),
49
+ _props_snapPointsMode,
50
+ snapPointsMode = (_props_snapPointsMode = props.snapPointsMode) !== null && _props_snapPointsMode !== void 0 ? _props_snapPointsMode : "percent",
51
+ _props_snapPoints,
52
+ snapPointsProp = (_props_snapPoints = props.snapPoints) !== null && _props_snapPoints !== void 0 ? _props_snapPoints : snapPointsMode === "percent" ? [80] : snapPointsMode === "constant" ? [256] : ["fit"],
53
+ hasFit = snapPointsProp[0] === "fit",
54
+ snapPoints = import_react.default.useMemo(function () {
55
+ return props.dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp;
56
+ }, [JSON.stringify(snapPointsProp), props.dismissOnSnapToBottom]),
57
+ [position_, setPositionImmediate] = (0, import_gui_use_controllable_state.useControllableState)({
58
+ prop: props.position,
59
+ defaultProp: props.defaultPosition || (state.open ? 0 : -1),
60
+ onChange: props.onPositionChange,
61
+ strategy: "most-recent-wins"
62
+ }),
63
+ position = state.open === !1 ? -1 : position_,
64
+ {
65
+ open
66
+ } = state,
67
+ setPosition = import_react.default.useCallback(function (next) {
68
+ props.dismissOnSnapToBottom && next === snapPoints.length - 1 ? state.setOpen(!1) : setPositionImmediate(next);
69
+ }, [props.dismissOnSnapToBottom, snapPoints.length, setPositionImmediate, state.setOpen]);
70
+ process.env.NODE_ENV === "development" && (snapPointsMode === "mixed" && snapPoints.some(function (p) {
71
+ if (typeof p == "string") {
72
+ if (p === "fit") return !1;
73
+ if (p.endsWith("%")) {
74
+ var n = Number(p.slice(0, -1));
75
+ return n < 0 || n > 100;
76
+ }
77
+ return !0;
78
+ }
79
+ return typeof p != "number" || p < 0;
80
+ }) && console.warn('\u26A0\uFE0F Invalid snapPoint given, snapPoints must be positive numeric values, string percentages between 0-100%, or "fit" when snapPointsMode is mixed'), snapPointsMode === "mixed" && snapPoints.indexOf("fit") > 0 && console.warn('\u26A0\uFE0F Invalid snapPoint given, "fit" must be the first/largest snap point when snapPointsMode is mixed'), snapPointsMode === "fit" && (snapPoints.length !== (props.dismissOnSnapToBottom ? 2 : 1) || snapPoints[0] !== "fit") && console.warn("\u26A0\uFE0F Invalid snapPoint given, there are no snap points when snapPointsMode is fit"), snapPointsMode === "constant" && snapPoints.some(function (p) {
81
+ return typeof p != "number" || p < 0;
82
+ }) && console.warn("\u26A0\uFE0F Invalid snapPoint given, snapPoints must be positive numeric values when snapPointsMode is constant"), snapPointsMode === "percent" && snapPoints.some(function (p) {
83
+ return typeof p != "number" || p < 0 || p > 100;
84
+ }) && console.warn("\u26A0\uFE0F Invalid snapPoint given, snapPoints must be numeric values between 0 and 100 when snapPointsMode is percent")), open && props.dismissOnSnapToBottom && position === snapPoints.length - 1 && setPositionImmediate(0);
85
+ var shouldSetPositionOpen = open && position < 0;
86
+ import_react.default.useEffect(function () {
87
+ shouldSetPositionOpen && setPosition(0);
88
+ }, [setPosition, shouldSetPositionOpen]);
89
+ var {
90
+ animationDriver
91
+ } = (0, import_gui_core.useConfiguration)();
92
+ if (!animationDriver) throw new Error(process.env.NODE_ENV === "production" ? "\u274C 008" : "Must set animations in tamagui.config.ts");
93
+ var scrollBridge = (0, import_gui_use_constant.useConstant)(function () {
94
+ var parentDragListeners = /* @__PURE__ */new Set(),
95
+ bridge = {
96
+ hasScrollableContent: !1,
97
+ enabled: !1,
98
+ y: 0,
99
+ paneY: 0,
100
+ paneMinY: 0,
101
+ scrollStartY: -1,
102
+ drag: function () {},
103
+ release: function () {},
104
+ scrollLock: !1,
105
+ isParentDragging: !1,
106
+ onParentDragging: function (cb) {
107
+ return parentDragListeners.add(cb), function () {
108
+ parentDragListeners.delete(cb);
109
+ };
110
+ },
111
+ setParentDragging: function (val) {
112
+ val !== bridge.isParentDragging && (bridge.isParentDragging = val, parentDragListeners.forEach(function (cb) {
113
+ return cb(val);
114
+ }));
115
+ }
116
+ };
117
+ return bridge;
118
+ }),
119
+ disableRemoveScroll;
120
+ props.disableRemoveScroll !== void 0 ? disableRemoveScroll = props.disableRemoveScroll || !open || !props.modal : props.forceRemoveScrollEnabled !== void 0 ? (process.env.NODE_ENV === "development" && console.warn("[Sheet] forceRemoveScrollEnabled is deprecated. Use disableRemoveScroll instead."), disableRemoveScroll = !props.forceRemoveScrollEnabled) : disableRemoveScroll = !open || !props.modal;
121
+ var maxSnapPoint = snapPoints[0],
122
+ screenSize = snapPointsMode === "percent" ? frameSize / ((typeof maxSnapPoint == "number" ? maxSnapPoint : 100) / 100) : maxContentSize,
123
+ _props_dismissOnOverlayPress,
124
+ _props_dismissOnSnapToBottom,
125
+ providerProps = {
126
+ screenSize,
127
+ maxSnapPoint,
128
+ disableRemoveScroll,
129
+ scrollBridge,
130
+ modal: !!props.modal,
131
+ open: state.open,
132
+ setOpen: state.setOpen,
133
+ hidden: !!state.isHidden,
134
+ contentRef,
135
+ handleRef,
136
+ frameSize,
137
+ setFrameSize,
138
+ dismissOnOverlayPress: (_props_dismissOnOverlayPress = props.dismissOnOverlayPress) !== null && _props_dismissOnOverlayPress !== void 0 ? _props_dismissOnOverlayPress : !0,
139
+ dismissOnSnapToBottom: (_props_dismissOnSnapToBottom = props.dismissOnSnapToBottom) !== null && _props_dismissOnSnapToBottom !== void 0 ? _props_dismissOnSnapToBottom : !1,
140
+ onOverlayComponent: options.onOverlayComponent,
141
+ scope: props.__scopeSheet,
142
+ hasFit,
143
+ position,
144
+ snapPoints,
145
+ snapPointsMode,
146
+ setMaxContentSize,
147
+ setPosition,
148
+ setPositionImmediate,
149
+ onlyShowFrame: !1
150
+ };
151
+ return providerProps;
152
+ }
153
+ //# sourceMappingURL=useSheetProviderProps.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["__create","Object","create","__defProp","defineProperty","__getOwnPropDesc","getOwnPropertyDescriptor","__getOwnPropNames","getOwnPropertyNames","__getProtoOf","getPrototypeOf","__hasOwnProp","prototype","hasOwnProperty","__export","target","all","name","get","enumerable","__copyProps","to","from","except","desc","key","call","__toESM","mod","isNodeMode","__esModule","value","__toCommonJS","useSheetProviderProps_exports","useSheetProviderProps","module","exports","import_react","require","import_gui_core","import_gui_use_constant","import_gui_use_controllable_state","props","state","options","arguments","length","handleRef","default","useRef","contentRef","frameSize","setFrameSize","useState","maxContentSize","setMaxContentSize","_props_snapPointsMode","snapPointsMode","_props_snapPoints","snapPointsProp","snapPoints","hasFit","useMemo","dismissOnSnapToBottom","JSON","stringify","position_","setPositionImmediate","useControllableState","prop","position","defaultProp","defaultPosition","open","onChange","onPositionChange","strategy","setPosition","useCallback","next","setOpen","process","env","NODE_ENV","some","p","endsWith","n","Number","slice","console","warn","indexOf","shouldSetPositionOpen","useEffect","animationDriver","useConfiguration","Error","scrollBridge","useConstant","parentDragListeners","Set","bridge","hasScrollableContent","enabled","y","paneY","paneMinY","scrollStartY","drag","release","scrollLock","isParentDragging","onParentDragging","cb","add","delete","setParentDragging","val","forEach"],"sources":["../../src/useSheetProviderProps.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,100 @@
1
+ import { useEffect, useRef } from "react";
2
+ function useSheetScrollViewGestures({
3
+ scrollRef,
4
+ scrollBridge,
5
+ hasScrollableContent
6
+ }) {
7
+ const state = useRef({
8
+ startY: 0,
9
+ lastY: 0,
10
+ owner: "none",
11
+ panDragOffset: 0,
12
+ dys: [],
13
+ scrollYAtGestureStart: 0
14
+ });
15
+ return useEffect(() => {
16
+ if (!scrollRef.current) return;
17
+ const controller = new AbortController(),
18
+ node = scrollRef.current?.getScrollableNode();
19
+ if (!node) return;
20
+ node.style.overscrollBehavior = "contain";
21
+ let originalOverflow = "";
22
+ const disableScroll = () => {
23
+ node.style.overflowY !== "hidden" && (originalOverflow = node.style.overflowY, node.style.overflowY = "hidden");
24
+ },
25
+ enableScroll = () => {
26
+ node.style.overflowY = originalOverflow;
27
+ },
28
+ handleTouchStart = e => {
29
+ const touch = e.touches[0];
30
+ if (!touch) return;
31
+ const currentScrollY = node.scrollTop;
32
+ state.current = {
33
+ startY: touch.pageY,
34
+ lastY: touch.pageY,
35
+ owner: "none",
36
+ panDragOffset: 0,
37
+ dys: [],
38
+ scrollYAtGestureStart: currentScrollY
39
+ }, scrollBridge.scrollStartY = touch.pageY;
40
+ },
41
+ handleTouchMove = e => {
42
+ const touch = e.touches[0];
43
+ if (!touch) return;
44
+ const {
45
+ current: s
46
+ } = state,
47
+ pageY = touch.pageY,
48
+ dy = pageY - s.lastY;
49
+ if (s.lastY = pageY, dy === 0) return;
50
+ const isDraggingDown = dy > 0,
51
+ currentScrollY = node.scrollTop,
52
+ isPaneAtTop = scrollBridge.paneY <= scrollBridge.paneMinY + 5;
53
+ scrollBridge.y = currentScrollY;
54
+ let shouldPanOwn = !1;
55
+ isPaneAtTop ? currentScrollY <= 0 && isDraggingDown && (shouldPanOwn = !0) : shouldPanOwn = !0;
56
+ const newOwner = shouldPanOwn ? "pan" : "scroll";
57
+ if (newOwner !== s.owner && (newOwner === "pan" ? (s.panDragOffset = 0, s.dys = [], scrollBridge.setParentDragging(!0), disableScroll()) : (scrollBridge.setParentDragging(!1), scrollBridge.scrollLock = !1, enableScroll()), s.owner = newOwner), s.owner === "pan") e.cancelable && e.preventDefault(), s.panDragOffset += dy, scrollBridge.drag(s.panDragOffset), s.dys.push(dy), s.dys.length > 100 && (s.dys = s.dys.slice(-10));else if (s.owner === "scroll") {
58
+ const scrollDelta = -dy,
59
+ maxScrollY = node.scrollHeight - node.clientHeight,
60
+ newScrollY = Math.max(0, Math.min(maxScrollY, currentScrollY + scrollDelta));
61
+ newScrollY !== currentScrollY && (node.scrollTop = newScrollY, scrollBridge.y = newScrollY);
62
+ }
63
+ },
64
+ handleTouchEnd = () => {
65
+ const {
66
+ current: s
67
+ } = state;
68
+ if (s.owner === "pan") {
69
+ scrollBridge.setParentDragging(!1);
70
+ let vy = 0;
71
+ if (s.dys.length) {
72
+ const recentDys = s.dys.slice(-10);
73
+ vy = recentDys.reduce((a, b) => a + b, 0) / recentDys.length * 0.04;
74
+ }
75
+ scrollBridge.release({
76
+ dragAt: s.panDragOffset,
77
+ vy
78
+ });
79
+ }
80
+ enableScroll(), s.owner = "none", s.panDragOffset = 0, s.dys = [];
81
+ };
82
+ return node.addEventListener("touchstart", handleTouchStart, {
83
+ signal: controller.signal,
84
+ passive: !0
85
+ }), node.addEventListener("touchmove", handleTouchMove, {
86
+ signal: controller.signal,
87
+ passive: !1
88
+ }), node.addEventListener("touchend", handleTouchEnd, {
89
+ signal: controller.signal,
90
+ passive: !0
91
+ }), node.addEventListener("touchcancel", handleTouchEnd, {
92
+ signal: controller.signal,
93
+ passive: !0
94
+ }), () => {
95
+ enableScroll(), controller.abort();
96
+ };
97
+ }, [scrollRef, scrollBridge, hasScrollableContent]), {};
98
+ }
99
+ export { useSheetScrollViewGestures };
100
+ //# sourceMappingURL=useSheetScrollViewGestures.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","useSheetScrollViewGestures","scrollRef","scrollBridge","hasScrollableContent","state","startY","lastY","owner","panDragOffset","dys","scrollYAtGestureStart","current","controller","AbortController","node","getScrollableNode","style","overscrollBehavior","originalOverflow","disableScroll","overflowY","enableScroll","handleTouchStart","e","touch","touches","currentScrollY","scrollTop","pageY","scrollStartY","handleTouchMove","s","dy","isDraggingDown","isPaneAtTop","paneY","paneMinY","y","shouldPanOwn","newOwner","setParentDragging","scrollLock","cancelable","preventDefault","drag","push","length","slice","scrollDelta","maxScrollY","scrollHeight","clientHeight","newScrollY","Math","max","min","handleTouchEnd","vy","recentDys","reduce","a","b","release","dragAt","addEventListener","signal","passive","abort"],"sources":["../../src/useSheetScrollViewGestures.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,110 @@
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 useSheetScrollViewGestures_native_exports = {};
24
+ __export(useSheetScrollViewGestures_native_exports, {
25
+ useSheetScrollViewGestures: () => useSheetScrollViewGestures
26
+ });
27
+ module.exports = __toCommonJS(useSheetScrollViewGestures_native_exports);
28
+ var import_react = require("react");
29
+ function useSheetScrollViewGestures(param) {
30
+ var {
31
+ scrollBridge,
32
+ hasScrollableContent,
33
+ scrollEnabled,
34
+ setScrollEnabled
35
+ } = param,
36
+ state = (0, import_react.useRef)({
37
+ lastPageY: 0,
38
+ dragAt: 0,
39
+ dys: [],
40
+ isScrolling: !1,
41
+ isDraggingScrollArea: !1,
42
+ scrollEngaged: !1,
43
+ prevScrollY: 0,
44
+ handoffOccurred: !1,
45
+ handoffDragOffset: 0
46
+ }),
47
+ release = function () {
48
+ var s = state.current;
49
+ if (s.isDraggingScrollArea) {
50
+ s.isDraggingScrollArea = !1, scrollBridge.scrollStartY = -1, scrollBridge.scrollLock = !1, s.isScrolling = !1, s.scrollEngaged = !1, s.prevScrollY = 0, s.handoffOccurred = !1, s.handoffDragOffset = 0, setScrollEnabled(!0);
51
+ var vy = 0;
52
+ if (s.dys.length) {
53
+ var recentDys = s.dys.slice(-10),
54
+ dist = recentDys.reduce(function (a, b) {
55
+ return a + b;
56
+ }, 0);
57
+ vy = dist / recentDys.length * 0.04;
58
+ }
59
+ s.dys = [], scrollBridge.release({
60
+ dragAt: s.dragAt,
61
+ vy
62
+ });
63
+ }
64
+ },
65
+ onStartShouldSetResponder = function () {
66
+ var s = state.current;
67
+ return scrollBridge.scrollStartY = -1, s.isDraggingScrollArea = !0, s.scrollEngaged = scrollBridge.y > 0, s.prevScrollY = scrollBridge.y, s.handoffOccurred = !1, s.handoffDragOffset = 0, !1;
68
+ },
69
+ onMoveShouldSetResponder = function (e) {
70
+ if (!scrollEnabled) return !1;
71
+ var s = state.current,
72
+ {
73
+ pageY
74
+ } = e.nativeEvent;
75
+ return s.lastPageY === 0 ? (s.lastPageY = pageY, !1) : Math.abs(pageY - s.lastPageY) > 10;
76
+ },
77
+ onResponderMove = function (e) {
78
+ var s = state.current,
79
+ {
80
+ pageY
81
+ } = e.nativeEvent;
82
+ !s.isScrolling && scrollBridge.scrollStartY === -1 && (scrollBridge.scrollStartY = pageY, s.lastPageY = pageY);
83
+ var dragAt = pageY - scrollBridge.scrollStartY,
84
+ dy = pageY - s.lastPageY;
85
+ s.lastPageY = pageY;
86
+ var isDraggingDown = dy > 0,
87
+ isPaneAtTop = scrollBridge.paneY <= scrollBridge.paneMinY + 5,
88
+ currentScrollY = scrollBridge.y;
89
+ currentScrollY > 0 && (s.scrollEngaged = !0);
90
+ var wasScrolledNowAtZero = s.scrollEngaged && s.prevScrollY > 0 && currentScrollY <= 0;
91
+ wasScrolledNowAtZero && !s.handoffOccurred && (s.handoffOccurred = !0, s.handoffDragOffset = 0), s.prevScrollY = currentScrollY;
92
+ var panHandles = !1;
93
+ if (!isPaneAtTop) panHandles = isDraggingDown ? currentScrollY <= 0 || !hasScrollableContent : !0;else if (isDraggingDown) currentScrollY > 0 && hasScrollableContent && !s.handoffOccurred ? panHandles = !1 : panHandles = s.handoffOccurred || wasScrolledNowAtZero || currentScrollY <= 0;else if (panHandles = !hasScrollableContent, !panHandles) {
94
+ s.isScrolling = !0, scrollBridge.scrollLock = !0, setScrollEnabled(!0);
95
+ return;
96
+ }
97
+ if (panHandles) {
98
+ setScrollEnabled(!1);
99
+ var effectiveDragAt = dragAt;
100
+ s.handoffOccurred && (s.handoffDragOffset += dy, effectiveDragAt = s.handoffDragOffset), scrollBridge.drag(effectiveDragAt), s.dragAt = effectiveDragAt, s.dys.push(dy), s.dys.length > 100 && (s.dys = s.dys.slice(-10));
101
+ } else setScrollEnabled(!0);
102
+ };
103
+ return {
104
+ onResponderRelease: release,
105
+ onStartShouldSetResponder,
106
+ onMoveShouldSetResponder,
107
+ onResponderMove
108
+ };
109
+ }
110
+ //# sourceMappingURL=useSheetScrollViewGestures.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useSheetScrollViewGestures_native_exports","__export","useSheetScrollViewGestures","module","exports","__toCommonJS","import_react","require","param","scrollBridge","hasScrollableContent","scrollEnabled","setScrollEnabled","state","useRef","lastPageY","dragAt","dys","isScrolling","isDraggingScrollArea","scrollEngaged","prevScrollY","handoffOccurred","handoffDragOffset","release","s","current","scrollStartY","scrollLock","vy","length","recentDys","slice","dist","reduce","a","b","onStartShouldSetResponder","y","onMoveShouldSetResponder","e","pageY","nativeEvent","Math","abs","onResponderMove","dy","isDraggingDown","isPaneAtTop","paneY","paneMinY","currentScrollY","wasScrolledNowAtZero","panHandles","effectiveDragAt","drag","push","onResponderRelease"],"sources":["../../src/useSheetScrollViewGestures.native.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/next.md ADDED
@@ -0,0 +1,78 @@
1
+ # Sheet ScrollView Gesture Handoff - Next Steps
2
+
3
+ ## Current Limitation
4
+
5
+ The Sheet + ScrollView gesture coordination on native iOS has limitations because Tamagui uses React Native's built-in `PanResponder`, while iOS's `UIScrollView` gesture recognizers fire BEFORE the RN responder system can claim the gesture.
6
+
7
+ This causes:
8
+
9
+ - Minor scroll "flicker" when starting to drag down from scroll top
10
+ - Imperfect handoff between scroll and sheet drag gestures
11
+
12
+ ## Ideal Solution: react-native-gesture-handler Integration
13
+
14
+ Both `gorhom/bottom-sheet` and `react-native-actions-sheet` solve this by using `react-native-gesture-handler` which provides:
15
+
16
+ 1. **`simultaneousHandlers`** - allows coordinating multiple gesture recognizers
17
+ 2. **`GestureDetector`** with worklets - can check conditions and decide who handles gesture before it starts
18
+ 3. **Native gesture coordination** - works at the iOS/Android gesture recognizer level, not the JS responder level
19
+
20
+ ## Proposed API
21
+
22
+ ```tsx
23
+ import { setupGestureHandler } from '@tamagui/sheet'
24
+ import { GestureHandlerRootView } from 'react-native-gesture-handler'
25
+
26
+ // Call once at app startup (optional - falls back to PanResponder)
27
+ setupGestureHandler({
28
+ // Pass the gesture handler module so we don't add it as a hard dependency
29
+ GestureDetector: require('react-native-gesture-handler').GestureDetector,
30
+ Gesture: require('react-native-gesture-handler').Gesture,
31
+ })
32
+
33
+ // Then wrap app
34
+ export default function App() {
35
+ return (
36
+ <GestureHandlerRootView style={{ flex: 1 }}>
37
+ <YourApp />
38
+ </GestureHandlerRootView>
39
+ )
40
+ }
41
+ ```
42
+
43
+ ## Implementation Notes
44
+
45
+ If `setupGestureHandler()` is called:
46
+
47
+ - Use `GestureDetector` with `Gesture.Pan()` instead of `PanResponder`
48
+ - Use `simultaneousHandlers` to coordinate with ScrollView's gesture
49
+ - Implement `blockPan` flag pattern from actions-sheet for smooth handoff
50
+
51
+ If not called:
52
+
53
+ - Fall back to current `PanResponder` implementation
54
+ - Accept the minor limitations on native
55
+
56
+ ## References
57
+
58
+ - gorhom/bottom-sheet: Uses Reanimated worklets + gesture handler
59
+ - react-native-actions-sheet: Uses `blockPan` flag pattern with gesture handler
60
+ - Both are MIT licensed and can be used as reference
61
+
62
+ ## Files to Modify
63
+
64
+ - `SheetImplementationCustom.tsx` - Replace PanResponder with GestureDetector
65
+ - `SheetScrollView.tsx` - Use `useScrollHandlers()` pattern from actions-sheet
66
+ - Add `setupGestureHandler.ts` for optional gesture handler registration
67
+
68
+ ## Test Case
69
+
70
+ There's a test case at `code/kitchen-sink/src/usecases/SheetScrollableDrag.tsx` that demonstrates the bug and can be used to verify fixes. It's not exported in the main navigation but can be accessed directly for testing.
71
+
72
+ ## Attempted Fixes
73
+
74
+ 1. **Native scroll enable/disable based on pane position** - Tried disabling scroll when sheet is not at top position, but this completely broke scrolling because the initial pane position values aren't set correctly on mount.
75
+
76
+ 2. **PaneY change listeners** - Added `onPaneYChange`/`setPaneY` to ScrollBridge to notify ScrollView of position changes during drag, but the fundamental issue remains that iOS UIScrollView gesture recognizers fire before RN's responder system.
77
+
78
+ The core issue is architectural: React Native's PanResponder cannot coordinate with iOS's native UIScrollView gesture recognizers at the right level. The only real solution is `react-native-gesture-handler` integration.
package/package.json ADDED
@@ -0,0 +1,96 @@
1
+ {
2
+ "name": "@hanzogui/sheet",
3
+ "version": "2.0.0",
4
+ "license": "MIT",
5
+ "source": "src/index.ts",
6
+ "type": "module",
7
+ "sideEffects": [
8
+ "*.css"
9
+ ],
10
+ "main": "dist/cjs",
11
+ "module": "dist/esm",
12
+ "types": "./types/index.d.ts",
13
+ "typesVersions": {
14
+ "*": {
15
+ "setup-gesture-handler": [
16
+ "./types/setupGestureHandler.d.ts"
17
+ ]
18
+ }
19
+ },
20
+ "exports": {
21
+ "./package.json": "./package.json",
22
+ ".": {
23
+ "types": "./types/index.d.ts",
24
+ "react-native": "./dist/esm/index.native.js",
25
+ "browser": "./dist/esm/index.mjs",
26
+ "module": "./dist/esm/index.mjs",
27
+ "import": "./dist/esm/index.mjs",
28
+ "require": "./dist/cjs/index.cjs",
29
+ "default": "./dist/esm/index.mjs"
30
+ },
31
+ "./controller": {
32
+ "types": "./types/controller.d.ts",
33
+ "react-native": "./dist/esm/controller.native.js",
34
+ "browser": "./dist/esm/controller.mjs",
35
+ "module": "./dist/esm/controller.mjs",
36
+ "import": "./dist/esm/controller.mjs",
37
+ "require": "./dist/cjs/controller.cjs",
38
+ "default": "./dist/cjs/controller.native.js"
39
+ },
40
+ "./setup-gesture-handler": {
41
+ "types": "./types/setupGestureHandler.d.ts",
42
+ "react-native": "./dist/esm/setupGestureHandler.native.js",
43
+ "browser": "./dist/esm/setupGestureHandler.mjs",
44
+ "module": "./dist/esm/setupGestureHandler.mjs",
45
+ "import": "./dist/esm/setupGestureHandler.mjs",
46
+ "require": "./dist/cjs/setupGestureHandler.cjs",
47
+ "default": "./dist/esm/setupGestureHandler.mjs"
48
+ }
49
+ },
50
+ "publishConfig": {
51
+ "access": "public"
52
+ },
53
+ "scripts": {
54
+ "build": "hanzo-gui-build",
55
+ "watch": "hanzo-gui-build --watch",
56
+ "clean": "hanzo-gui-build clean"
57
+ },
58
+ "dependencies": {
59
+ "@hanzogui/adapt": "2.0.0",
60
+ "@hanzogui/animate-presence": "2.0.0",
61
+ "@hanzogui/animations-react-native": "2.0.0-rc.29",
62
+ "@hanzogui/compose-refs": "2.0.0-rc.29",
63
+ "@hanzogui/constants": "2.0.0-rc.29",
64
+ "@hanzogui/core": "2.0.0-rc.29",
65
+ "@hanzogui/create-context": "2.0.0-rc.29",
66
+ "@hanzogui/helpers": "2.0.0-rc.29",
67
+ "@hanzogui/native": "2.0.0-rc.29",
68
+ "@hanzogui/portal": "2.0.0",
69
+ "@hanzogui/remove-scroll": "2.0.0",
70
+ "@hanzogui/scroll-view": "2.0.0",
71
+ "@hanzogui/stacks": "2.0.0",
72
+ "@hanzogui/use-constant": "2.0.0-rc.29",
73
+ "@hanzogui/use-controllable-state": "2.0.0-rc.29",
74
+ "@hanzogui/use-did-finish-ssr": "2.0.0-rc.29",
75
+ "@hanzogui/use-keyboard-visible": "2.0.0-rc.29",
76
+ "@hanzogui/z-index-stack": "2.0.0"
77
+ },
78
+ "devDependencies": {
79
+ "@hanzogui/build": "2.0.0-rc.29",
80
+ "react": ">=19",
81
+ "react-native": "0.83.2",
82
+ "react-native-gesture-handler": "~2.30.0"
83
+ },
84
+ "peerDependencies": {
85
+ "react": ">=19",
86
+ "react-native": "*",
87
+ "react-native-gesture-handler": ">=2.0.0"
88
+ },
89
+ "peerDependenciesMeta": {
90
+ "react-native-gesture-handler": {
91
+ "optional": true
92
+ }
93
+ },
94
+ "module:jsx": "dist/jsx",
95
+ "removeSideEffects": true
96
+ }
@@ -0,0 +1,2 @@
1
+ // compat with tamagui static compiler
2
+ Object.assign(module.exports, require('../dist/cjs/setupGestureHandler.cjs'))
@@ -0,0 +1,2 @@
1
+ // compat with metro without package exports
2
+ Object.assign(module.exports, require('../dist/cjs/setupGestureHandler.cjs'))
@@ -0,0 +1,2 @@
1
+ // compat with tamagui static compiler
2
+ Object.assign(module.exports, require('../dist/cjs/setupGestureHandler.cjs'))
@@ -0,0 +1,2 @@
1
+ // compat with metro without package exports
2
+ Object.assign(module.exports, require('../dist/cjs/setupGestureHandler.cjs'))
@@ -0,0 +1 @@
1
+ Object.assign(module.exports, require('./dist/cjs/setupGestureHandler.cjs'))
@@ -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
+ }