@tamagui/sheet 2.7.7 → 3.0.0-beta.643.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 (435) hide show
  1. package/dist/cjs/GestureDetectorWrapper.cjs +32 -41
  2. package/dist/cjs/GestureDetectorWrapper.native.cjs +48 -0
  3. package/dist/cjs/GestureDetectorWrapper.native.js +32 -40
  4. package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -1
  5. package/dist/cjs/GestureSheetContext.cjs +29 -37
  6. package/dist/cjs/GestureSheetContext.native.cjs +49 -0
  7. package/dist/cjs/GestureSheetContext.native.js +30 -37
  8. package/dist/cjs/GestureSheetContext.native.js.map +1 -1
  9. package/dist/cjs/Sheet.cjs +206 -99
  10. package/dist/cjs/Sheet.native.cjs +234 -0
  11. package/dist/cjs/Sheet.native.js +212 -98
  12. package/dist/cjs/Sheet.native.js.map +1 -1
  13. package/dist/cjs/SheetContext.cjs +44 -22
  14. package/dist/cjs/SheetContext.native.cjs +58 -0
  15. package/dist/cjs/SheetContext.native.js +45 -22
  16. package/dist/cjs/SheetContext.native.js.map +1 -1
  17. package/dist/cjs/SheetController.cjs +50 -56
  18. package/dist/cjs/SheetController.native.cjs +72 -0
  19. package/dist/cjs/SheetController.native.js +53 -58
  20. package/dist/cjs/SheetController.native.js.map +1 -1
  21. package/dist/cjs/SheetImplementationCustom.cjs +674 -605
  22. package/dist/cjs/SheetImplementationCustom.native.cjs +762 -0
  23. package/dist/cjs/SheetImplementationCustom.native.js +713 -644
  24. package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
  25. package/dist/cjs/SheetScrollView.cjs +291 -312
  26. package/dist/cjs/SheetScrollView.native.cjs +326 -0
  27. package/dist/cjs/SheetScrollView.native.js +299 -319
  28. package/dist/cjs/SheetScrollView.native.js.map +1 -1
  29. package/dist/cjs/constants.cjs +22 -21
  30. package/dist/cjs/constants.native.cjs +37 -0
  31. package/dist/cjs/constants.native.js +22 -20
  32. package/dist/cjs/constants.native.js.map +1 -1
  33. package/dist/cjs/contexts.cjs +20 -28
  34. package/dist/cjs/contexts.native.cjs +38 -0
  35. package/dist/cjs/contexts.native.js +20 -27
  36. package/dist/cjs/contexts.native.js.map +1 -1
  37. package/dist/cjs/controller.cjs +17 -18
  38. package/dist/cjs/controller.native.cjs +32 -0
  39. package/dist/cjs/controller.native.js +17 -17
  40. package/dist/cjs/controller.native.js.map +1 -1
  41. package/dist/cjs/gestureState.cjs +29 -30
  42. package/dist/cjs/gestureState.native.cjs +54 -0
  43. package/dist/cjs/gestureState.native.js +30 -30
  44. package/dist/cjs/gestureState.native.js.map +1 -1
  45. package/dist/cjs/helpers.cjs +21 -24
  46. package/dist/cjs/helpers.native.cjs +35 -0
  47. package/dist/cjs/helpers.native.js +22 -24
  48. package/dist/cjs/helpers.native.js.map +1 -1
  49. package/dist/cjs/index.cjs +15 -21
  50. package/dist/cjs/index.native.cjs +37 -0
  51. package/dist/cjs/index.native.js +16 -21
  52. package/dist/cjs/index.native.js.map +1 -1
  53. package/dist/cjs/keyboardAvoidance.cjs +56 -79
  54. package/dist/cjs/keyboardAvoidance.native.cjs +75 -0
  55. package/dist/cjs/keyboardAvoidance.native.js +56 -78
  56. package/dist/cjs/keyboardAvoidance.native.js.map +1 -1
  57. package/dist/cjs/nativeSheet.cjs +64 -76
  58. package/dist/cjs/nativeSheet.native.cjs +94 -0
  59. package/dist/cjs/nativeSheet.native.js +70 -83
  60. package/dist/cjs/nativeSheet.native.js.map +1 -1
  61. package/dist/cjs/types.cjs +10 -11
  62. package/dist/cjs/types.native.cjs +19 -0
  63. package/dist/cjs/types.native.js +10 -10
  64. package/dist/cjs/types.native.js.map +1 -1
  65. package/dist/cjs/useGestureHandlerPan.cjs +245 -257
  66. package/dist/cjs/useGestureHandlerPan.native.cjs +273 -0
  67. package/dist/cjs/useGestureHandlerPan.native.js +254 -265
  68. package/dist/cjs/useGestureHandlerPan.native.js.map +1 -1
  69. package/dist/cjs/useKeyboardControllerSheet.cjs +83 -88
  70. package/dist/cjs/useKeyboardControllerSheet.native.cjs +119 -0
  71. package/dist/cjs/useKeyboardControllerSheet.native.js +100 -111
  72. package/dist/cjs/useKeyboardControllerSheet.native.js.map +1 -1
  73. package/dist/cjs/useSafeAreaInsets.cjs +20 -26
  74. package/dist/cjs/useSafeAreaInsets.native.cjs +51 -0
  75. package/dist/cjs/useSafeAreaInsets.native.js +30 -25
  76. package/dist/cjs/useSafeAreaInsets.native.js.map +1 -1
  77. package/dist/cjs/useSheetController.cjs +27 -39
  78. package/dist/cjs/useSheetController.native.cjs +42 -0
  79. package/dist/cjs/useSheetController.native.js +28 -39
  80. package/dist/cjs/useSheetController.native.js.map +1 -1
  81. package/dist/cjs/useSheetOffscreenSize.cjs +44 -53
  82. package/dist/cjs/useSheetOffscreenSize.native.cjs +60 -0
  83. package/dist/cjs/useSheetOffscreenSize.native.js +48 -56
  84. package/dist/cjs/useSheetOffscreenSize.native.js.map +1 -1
  85. package/dist/cjs/useSheetOpenState.cjs +69 -40
  86. package/dist/cjs/useSheetOpenState.native.cjs +88 -0
  87. package/dist/cjs/useSheetOpenState.native.js +74 -42
  88. package/dist/cjs/useSheetOpenState.native.js.map +1 -1
  89. package/dist/cjs/useSheetProviderProps.cjs +146 -164
  90. package/dist/cjs/useSheetProviderProps.native.cjs +176 -0
  91. package/dist/cjs/useSheetProviderProps.native.js +156 -174
  92. package/dist/cjs/useSheetProviderProps.native.js.map +1 -1
  93. package/dist/cjs/useSheetScrollViewGestures.cjs +172 -180
  94. package/dist/cjs/useSheetScrollViewGestures.native.cjs +150 -0
  95. package/dist/cjs/useSheetScrollViewGestures.native.js +136 -147
  96. package/dist/cjs/useSheetScrollViewGestures.native.js.map +1 -1
  97. package/dist/cjs/webViewport.cjs +47 -48
  98. package/dist/cjs/webViewport.native.cjs +79 -0
  99. package/dist/cjs/webViewport.native.js +50 -50
  100. package/dist/cjs/webViewport.native.js.map +1 -1
  101. package/dist/esm/GestureDetectorWrapper.mjs +19 -23
  102. package/dist/esm/GestureDetectorWrapper.mjs.map +1 -1
  103. package/dist/esm/GestureDetectorWrapper.native.js +20 -24
  104. package/dist/esm/GestureDetectorWrapper.native.js.map +1 -1
  105. package/dist/esm/GestureSheetContext.mjs +15 -20
  106. package/dist/esm/GestureSheetContext.mjs.map +1 -1
  107. package/dist/esm/GestureSheetContext.native.js +17 -22
  108. package/dist/esm/GestureSheetContext.native.js.map +1 -1
  109. package/dist/esm/Sheet.mjs +191 -83
  110. package/dist/esm/Sheet.mjs.map +1 -1
  111. package/dist/esm/Sheet.native.js +198 -83
  112. package/dist/esm/Sheet.native.js.map +1 -1
  113. package/dist/esm/SheetContext.mjs +21 -5
  114. package/dist/esm/SheetContext.mjs.map +1 -1
  115. package/dist/esm/SheetContext.native.js +21 -5
  116. package/dist/esm/SheetContext.native.js.map +1 -1
  117. package/dist/esm/SheetController.mjs +34 -30
  118. package/dist/esm/SheetController.mjs.map +1 -1
  119. package/dist/esm/SheetController.native.js +38 -34
  120. package/dist/esm/SheetController.native.js.map +1 -1
  121. package/dist/esm/SheetImplementationCustom.mjs +655 -580
  122. package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
  123. package/dist/esm/SheetImplementationCustom.native.js +691 -612
  124. package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
  125. package/dist/esm/SheetScrollView.mjs +277 -288
  126. package/dist/esm/SheetScrollView.mjs.map +1 -1
  127. package/dist/esm/SheetScrollView.native.js +286 -297
  128. package/dist/esm/SheetScrollView.native.js.map +1 -1
  129. package/dist/esm/constants.mjs +5 -3
  130. package/dist/esm/constants.mjs.map +1 -1
  131. package/dist/esm/constants.native.js +5 -3
  132. package/dist/esm/constants.native.js.map +1 -1
  133. package/dist/esm/contexts.mjs +3 -3
  134. package/dist/esm/contexts.mjs.map +1 -1
  135. package/dist/esm/contexts.native.js +3 -3
  136. package/dist/esm/contexts.native.js.map +1 -1
  137. package/dist/esm/controller.mjs +2 -2
  138. package/dist/esm/controller.native.js +2 -2
  139. package/dist/esm/gestureState.mjs +13 -11
  140. package/dist/esm/gestureState.mjs.map +1 -1
  141. package/dist/esm/gestureState.native.js +14 -12
  142. package/dist/esm/gestureState.native.js.map +1 -1
  143. package/dist/esm/helpers.mjs +7 -6
  144. package/dist/esm/helpers.mjs.map +1 -1
  145. package/dist/esm/helpers.native.js +8 -7
  146. package/dist/esm/helpers.native.js.map +1 -1
  147. package/dist/esm/index.js +21 -14
  148. package/dist/esm/index.mjs +21 -14
  149. package/dist/esm/index.native.js +21 -14
  150. package/dist/esm/keyboardAvoidance.mjs +40 -61
  151. package/dist/esm/keyboardAvoidance.mjs.map +1 -1
  152. package/dist/esm/keyboardAvoidance.native.js +40 -61
  153. package/dist/esm/keyboardAvoidance.native.js.map +1 -1
  154. package/dist/esm/nativeSheet.mjs +52 -61
  155. package/dist/esm/nativeSheet.mjs.map +1 -1
  156. package/dist/esm/nativeSheet.native.js +58 -69
  157. package/dist/esm/nativeSheet.native.js.map +1 -1
  158. package/dist/esm/types.mjs +0 -2
  159. package/dist/esm/types.native.js +0 -2
  160. package/dist/esm/useGestureHandlerPan.mjs +232 -239
  161. package/dist/esm/useGestureHandlerPan.mjs.map +1 -1
  162. package/dist/esm/useGestureHandlerPan.native.js +241 -248
  163. package/dist/esm/useGestureHandlerPan.native.js.map +1 -1
  164. package/dist/esm/useKeyboardControllerSheet.mjs +71 -71
  165. package/dist/esm/useKeyboardControllerSheet.mjs.map +1 -1
  166. package/dist/esm/useKeyboardControllerSheet.native.js +92 -94
  167. package/dist/esm/useKeyboardControllerSheet.native.js.map +1 -1
  168. package/dist/esm/useSafeAreaInsets.mjs +3 -1
  169. package/dist/esm/useSafeAreaInsets.mjs.map +1 -1
  170. package/dist/esm/useSafeAreaInsets.native.js +15 -3
  171. package/dist/esm/useSafeAreaInsets.native.js.map +1 -1
  172. package/dist/esm/useSheetController.mjs +14 -12
  173. package/dist/esm/useSheetController.mjs.map +1 -1
  174. package/dist/esm/useSheetController.native.js +14 -12
  175. package/dist/esm/useSheetController.native.js.map +1 -1
  176. package/dist/esm/useSheetOffscreenSize.mjs +30 -35
  177. package/dist/esm/useSheetOffscreenSize.mjs.map +1 -1
  178. package/dist/esm/useSheetOffscreenSize.native.js +34 -39
  179. package/dist/esm/useSheetOffscreenSize.native.js.map +1 -1
  180. package/dist/esm/useSheetOpenState.mjs +50 -22
  181. package/dist/esm/useSheetOpenState.mjs.map +1 -1
  182. package/dist/esm/useSheetOpenState.native.js +55 -25
  183. package/dist/esm/useSheetOpenState.native.js.map +1 -1
  184. package/dist/esm/useSheetProviderProps.mjs +130 -138
  185. package/dist/esm/useSheetProviderProps.mjs.map +1 -1
  186. package/dist/esm/useSheetProviderProps.native.js +140 -149
  187. package/dist/esm/useSheetProviderProps.native.js.map +1 -1
  188. package/dist/esm/useSheetScrollViewGestures.mjs +159 -162
  189. package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -1
  190. package/dist/esm/useSheetScrollViewGestures.native.js +123 -130
  191. package/dist/esm/useSheetScrollViewGestures.native.js.map +1 -1
  192. package/dist/esm/webViewport.mjs +26 -25
  193. package/dist/esm/webViewport.mjs.map +1 -1
  194. package/dist/esm/webViewport.native.js +29 -28
  195. package/dist/esm/webViewport.native.js.map +1 -1
  196. package/dist/jsx/GestureDetectorWrapper.mjs +19 -23
  197. package/dist/jsx/GestureDetectorWrapper.mjs.map +1 -1
  198. package/dist/jsx/GestureDetectorWrapper.native.cjs +48 -0
  199. package/dist/jsx/GestureDetectorWrapper.native.js +32 -40
  200. package/dist/jsx/GestureDetectorWrapper.native.js.map +1 -1
  201. package/dist/jsx/GestureSheetContext.mjs +15 -20
  202. package/dist/jsx/GestureSheetContext.mjs.map +1 -1
  203. package/dist/jsx/GestureSheetContext.native.cjs +49 -0
  204. package/dist/jsx/GestureSheetContext.native.js +30 -37
  205. package/dist/jsx/GestureSheetContext.native.js.map +1 -1
  206. package/dist/jsx/Sheet.mjs +191 -83
  207. package/dist/jsx/Sheet.mjs.map +1 -1
  208. package/dist/jsx/Sheet.native.cjs +234 -0
  209. package/dist/jsx/Sheet.native.js +212 -98
  210. package/dist/jsx/Sheet.native.js.map +1 -1
  211. package/dist/jsx/SheetContext.mjs +21 -5
  212. package/dist/jsx/SheetContext.mjs.map +1 -1
  213. package/dist/jsx/SheetContext.native.cjs +58 -0
  214. package/dist/jsx/SheetContext.native.js +45 -22
  215. package/dist/jsx/SheetContext.native.js.map +1 -1
  216. package/dist/jsx/SheetController.mjs +34 -30
  217. package/dist/jsx/SheetController.mjs.map +1 -1
  218. package/dist/jsx/SheetController.native.cjs +72 -0
  219. package/dist/jsx/SheetController.native.js +53 -58
  220. package/dist/jsx/SheetController.native.js.map +1 -1
  221. package/dist/jsx/SheetImplementationCustom.mjs +655 -580
  222. package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
  223. package/dist/jsx/SheetImplementationCustom.native.cjs +762 -0
  224. package/dist/jsx/SheetImplementationCustom.native.js +713 -644
  225. package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
  226. package/dist/jsx/SheetScrollView.mjs +277 -288
  227. package/dist/jsx/SheetScrollView.mjs.map +1 -1
  228. package/dist/jsx/SheetScrollView.native.cjs +326 -0
  229. package/dist/jsx/SheetScrollView.native.js +299 -319
  230. package/dist/jsx/SheetScrollView.native.js.map +1 -1
  231. package/dist/jsx/constants.mjs +5 -3
  232. package/dist/jsx/constants.mjs.map +1 -1
  233. package/dist/jsx/constants.native.cjs +37 -0
  234. package/dist/jsx/constants.native.js +22 -20
  235. package/dist/jsx/constants.native.js.map +1 -1
  236. package/dist/jsx/contexts.mjs +3 -3
  237. package/dist/jsx/contexts.mjs.map +1 -1
  238. package/dist/jsx/contexts.native.cjs +38 -0
  239. package/dist/jsx/contexts.native.js +20 -27
  240. package/dist/jsx/contexts.native.js.map +1 -1
  241. package/dist/jsx/controller.mjs +2 -2
  242. package/dist/jsx/controller.native.cjs +32 -0
  243. package/dist/jsx/controller.native.js +17 -17
  244. package/dist/jsx/controller.native.js.map +1 -1
  245. package/dist/jsx/gestureState.mjs +13 -11
  246. package/dist/jsx/gestureState.mjs.map +1 -1
  247. package/dist/jsx/gestureState.native.cjs +54 -0
  248. package/dist/jsx/gestureState.native.js +30 -30
  249. package/dist/jsx/gestureState.native.js.map +1 -1
  250. package/dist/jsx/helpers.mjs +7 -6
  251. package/dist/jsx/helpers.mjs.map +1 -1
  252. package/dist/jsx/helpers.native.cjs +35 -0
  253. package/dist/jsx/helpers.native.js +22 -24
  254. package/dist/jsx/helpers.native.js.map +1 -1
  255. package/dist/jsx/index.js +21 -14
  256. package/dist/jsx/index.mjs +21 -14
  257. package/dist/jsx/index.native.cjs +37 -0
  258. package/dist/jsx/index.native.js +16 -21
  259. package/dist/jsx/index.native.js.map +1 -1
  260. package/dist/jsx/keyboardAvoidance.mjs +40 -61
  261. package/dist/jsx/keyboardAvoidance.mjs.map +1 -1
  262. package/dist/jsx/keyboardAvoidance.native.cjs +75 -0
  263. package/dist/jsx/keyboardAvoidance.native.js +56 -78
  264. package/dist/jsx/keyboardAvoidance.native.js.map +1 -1
  265. package/dist/jsx/nativeSheet.mjs +52 -61
  266. package/dist/jsx/nativeSheet.mjs.map +1 -1
  267. package/dist/jsx/nativeSheet.native.cjs +94 -0
  268. package/dist/jsx/nativeSheet.native.js +70 -83
  269. package/dist/jsx/nativeSheet.native.js.map +1 -1
  270. package/dist/jsx/types.mjs +0 -2
  271. package/dist/jsx/types.native.cjs +19 -0
  272. package/dist/jsx/types.native.js +10 -10
  273. package/dist/jsx/types.native.js.map +1 -1
  274. package/dist/jsx/useGestureHandlerPan.mjs +232 -239
  275. package/dist/jsx/useGestureHandlerPan.mjs.map +1 -1
  276. package/dist/jsx/useGestureHandlerPan.native.cjs +273 -0
  277. package/dist/jsx/useGestureHandlerPan.native.js +254 -265
  278. package/dist/jsx/useGestureHandlerPan.native.js.map +1 -1
  279. package/dist/jsx/useKeyboardControllerSheet.mjs +71 -71
  280. package/dist/jsx/useKeyboardControllerSheet.mjs.map +1 -1
  281. package/dist/jsx/useKeyboardControllerSheet.native.cjs +119 -0
  282. package/dist/jsx/useKeyboardControllerSheet.native.js +100 -111
  283. package/dist/jsx/useKeyboardControllerSheet.native.js.map +1 -1
  284. package/dist/jsx/useSafeAreaInsets.mjs +3 -1
  285. package/dist/jsx/useSafeAreaInsets.mjs.map +1 -1
  286. package/dist/jsx/useSafeAreaInsets.native.cjs +51 -0
  287. package/dist/jsx/useSafeAreaInsets.native.js +30 -25
  288. package/dist/jsx/useSafeAreaInsets.native.js.map +1 -1
  289. package/dist/jsx/useSheetController.mjs +14 -12
  290. package/dist/jsx/useSheetController.mjs.map +1 -1
  291. package/dist/jsx/useSheetController.native.cjs +42 -0
  292. package/dist/jsx/useSheetController.native.js +28 -39
  293. package/dist/jsx/useSheetController.native.js.map +1 -1
  294. package/dist/jsx/useSheetOffscreenSize.mjs +30 -35
  295. package/dist/jsx/useSheetOffscreenSize.mjs.map +1 -1
  296. package/dist/jsx/useSheetOffscreenSize.native.cjs +60 -0
  297. package/dist/jsx/useSheetOffscreenSize.native.js +48 -56
  298. package/dist/jsx/useSheetOffscreenSize.native.js.map +1 -1
  299. package/dist/jsx/useSheetOpenState.mjs +50 -22
  300. package/dist/jsx/useSheetOpenState.mjs.map +1 -1
  301. package/dist/jsx/useSheetOpenState.native.cjs +88 -0
  302. package/dist/jsx/useSheetOpenState.native.js +74 -42
  303. package/dist/jsx/useSheetOpenState.native.js.map +1 -1
  304. package/dist/jsx/useSheetProviderProps.mjs +130 -138
  305. package/dist/jsx/useSheetProviderProps.mjs.map +1 -1
  306. package/dist/jsx/useSheetProviderProps.native.cjs +176 -0
  307. package/dist/jsx/useSheetProviderProps.native.js +156 -174
  308. package/dist/jsx/useSheetProviderProps.native.js.map +1 -1
  309. package/dist/jsx/useSheetScrollViewGestures.mjs +159 -162
  310. package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -1
  311. package/dist/jsx/useSheetScrollViewGestures.native.cjs +150 -0
  312. package/dist/jsx/useSheetScrollViewGestures.native.js +136 -147
  313. package/dist/jsx/useSheetScrollViewGestures.native.js.map +1 -1
  314. package/dist/jsx/webViewport.mjs +26 -25
  315. package/dist/jsx/webViewport.mjs.map +1 -1
  316. package/dist/jsx/webViewport.native.cjs +79 -0
  317. package/dist/jsx/webViewport.native.js +50 -50
  318. package/dist/jsx/webViewport.native.js.map +1 -1
  319. package/package.json +33 -39
  320. package/src/Sheet.tsx +316 -77
  321. package/src/SheetContext.tsx +57 -7
  322. package/src/SheetController.tsx +7 -6
  323. package/src/SheetImplementationCustom.tsx +343 -140
  324. package/src/SheetScrollView.tsx +24 -13
  325. package/src/constants.tsx +3 -3
  326. package/src/helpers.tsx +0 -14
  327. package/src/index.ts +3 -6
  328. package/src/nativeSheet.tsx +5 -15
  329. package/src/types.tsx +104 -92
  330. package/src/useKeyboardControllerSheet.native.ts +7 -2
  331. package/src/useSafeAreaInsets.native.ts +20 -13
  332. package/src/useSheetController.tsx +15 -7
  333. package/src/useSheetOpenState.tsx +50 -4
  334. package/src/useSheetProviderProps.tsx +4 -27
  335. package/src/useSheetScrollViewGestures.ts +2 -2
  336. package/types/GestureDetectorWrapper.d.ts +1 -1
  337. package/types/GestureDetectorWrapper.d.ts.map +1 -1
  338. package/types/GestureSheetContext.d.ts +1 -1
  339. package/types/GestureSheetContext.d.ts.map +1 -1
  340. package/types/Sheet.d.ts +384 -135
  341. package/types/Sheet.d.ts.map +1 -1
  342. package/types/SheetContext.d.ts +28 -42
  343. package/types/SheetContext.d.ts.map +1 -1
  344. package/types/SheetController.d.ts +4 -2
  345. package/types/SheetController.d.ts.map +1 -1
  346. package/types/SheetImplementationCustom.d.ts +3 -35
  347. package/types/SheetImplementationCustom.d.ts.map +1 -1
  348. package/types/SheetScrollView.d.ts +57 -23
  349. package/types/SheetScrollView.d.ts.map +1 -1
  350. package/types/constants.d.ts +3 -2
  351. package/types/constants.d.ts.map +1 -1
  352. package/types/index.d.ts +1 -3
  353. package/types/index.d.ts.map +1 -1
  354. package/types/nativeSheet.d.ts.map +1 -1
  355. package/types/types.d.ts +28 -17
  356. package/types/types.d.ts.map +1 -1
  357. package/types/useKeyboardControllerSheet.native.d.ts.map +1 -1
  358. package/types/useSafeAreaInsets.native.d.ts +4 -12
  359. package/types/useSafeAreaInsets.native.d.ts.map +1 -1
  360. package/types/useSheetController.d.ts +6 -6
  361. package/types/useSheetController.d.ts.map +1 -1
  362. package/types/useSheetOffscreenSize.d.ts.map +1 -1
  363. package/types/useSheetOpenState.d.ts +3 -2
  364. package/types/useSheetOpenState.d.ts.map +1 -1
  365. package/types/useSheetProviderProps.d.ts +5 -8
  366. package/types/useSheetProviderProps.d.ts.map +1 -1
  367. package/types/useSheetScrollViewGestures.d.ts +2 -2
  368. package/types/useSheetScrollViewGestures.d.ts.map +1 -1
  369. package/.turbo/turbo-build.log +0 -2
  370. package/controller/index.cjs +0 -2
  371. package/controller/index.d.ts +0 -5
  372. package/controller/index.js +0 -2
  373. package/controller/index.native.cjs +0 -2
  374. package/controller/index.native.js +0 -2
  375. package/dist/cjs/createSheet.cjs +0 -194
  376. package/dist/cjs/createSheet.native.js +0 -204
  377. package/dist/cjs/createSheet.native.js.map +0 -1
  378. package/dist/cjs/setupGestureHandler.cjs +0 -55
  379. package/dist/cjs/setupGestureHandler.native.js +0 -60
  380. package/dist/cjs/setupGestureHandler.native.js.map +0 -1
  381. package/dist/cjs/useSheet.cjs +0 -29
  382. package/dist/cjs/useSheet.native.js +0 -34
  383. package/dist/cjs/useSheet.native.js.map +0 -1
  384. package/dist/esm/controller.mjs.map +0 -1
  385. package/dist/esm/controller.native.js.map +0 -1
  386. package/dist/esm/createSheet.mjs +0 -168
  387. package/dist/esm/createSheet.mjs.map +0 -1
  388. package/dist/esm/createSheet.native.js +0 -176
  389. package/dist/esm/createSheet.native.js.map +0 -1
  390. package/dist/esm/index.js.map +0 -1
  391. package/dist/esm/index.mjs.map +0 -1
  392. package/dist/esm/index.native.js.map +0 -1
  393. package/dist/esm/setupGestureHandler.mjs +0 -29
  394. package/dist/esm/setupGestureHandler.mjs.map +0 -1
  395. package/dist/esm/setupGestureHandler.native.js +0 -31
  396. package/dist/esm/setupGestureHandler.native.js.map +0 -1
  397. package/dist/esm/types.mjs.map +0 -1
  398. package/dist/esm/types.native.js.map +0 -1
  399. package/dist/esm/useSheet.mjs +0 -4
  400. package/dist/esm/useSheet.mjs.map +0 -1
  401. package/dist/esm/useSheet.native.js +0 -6
  402. package/dist/esm/useSheet.native.js.map +0 -1
  403. package/dist/jsx/controller.mjs.map +0 -1
  404. package/dist/jsx/createSheet.mjs +0 -168
  405. package/dist/jsx/createSheet.mjs.map +0 -1
  406. package/dist/jsx/createSheet.native.js +0 -204
  407. package/dist/jsx/createSheet.native.js.map +0 -1
  408. package/dist/jsx/index.js.map +0 -1
  409. package/dist/jsx/index.mjs.map +0 -1
  410. package/dist/jsx/setupGestureHandler.mjs +0 -29
  411. package/dist/jsx/setupGestureHandler.mjs.map +0 -1
  412. package/dist/jsx/setupGestureHandler.native.js +0 -60
  413. package/dist/jsx/setupGestureHandler.native.js.map +0 -1
  414. package/dist/jsx/types.mjs.map +0 -1
  415. package/dist/jsx/useSheet.mjs +0 -4
  416. package/dist/jsx/useSheet.mjs.map +0 -1
  417. package/dist/jsx/useSheet.native.js +0 -34
  418. package/dist/jsx/useSheet.native.js.map +0 -1
  419. package/next.md +0 -78
  420. package/setup-gesture-handler/index.cjs +0 -2
  421. package/setup-gesture-handler/index.js +0 -2
  422. package/setup-gesture-handler/index.native.cjs +0 -2
  423. package/setup-gesture-handler/index.native.js +0 -2
  424. package/setup-gesture-handler.cjs +0 -1
  425. package/src/createSheet.tsx +0 -309
  426. package/src/setupGestureHandler.ts +0 -43
  427. package/src/useSheet.tsx +0 -3
  428. package/test/keyboardAvoidance.test.ts +0 -269
  429. package/tsconfig.json +0 -57
  430. package/types/createSheet.d.ts +0 -195
  431. package/types/createSheet.d.ts.map +0 -1
  432. package/types/setupGestureHandler.d.ts +0 -11
  433. package/types/setupGestureHandler.d.ts.map +0 -1
  434. package/types/useSheet.d.ts +0 -2
  435. package/types/useSheet.d.ts.map +0 -1
package/next.md DELETED
@@ -1,78 +0,0 @@
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.
@@ -1,2 +0,0 @@
1
- // compat with tamagui static compiler
2
- Object.assign(module.exports, require('../dist/cjs/setupGestureHandler.cjs'))
@@ -1,2 +0,0 @@
1
- // compat with metro without package exports
2
- Object.assign(module.exports, require('../dist/cjs/setupGestureHandler.cjs'))
@@ -1,2 +0,0 @@
1
- // compat with tamagui static compiler
2
- Object.assign(module.exports, require('../dist/cjs/setupGestureHandler.cjs'))
@@ -1,2 +0,0 @@
1
- // compat with metro without package exports
2
- Object.assign(module.exports, require('../dist/cjs/setupGestureHandler.cjs'))
@@ -1 +0,0 @@
1
- Object.assign(module.exports, require('./dist/cjs/setupGestureHandler.cjs'))
@@ -1,309 +0,0 @@
1
- import { useComposedRefs } from '@tamagui/compose-refs'
2
- import { isWeb, useIsomorphicLayoutEffect } from '@tamagui/constants'
3
- import type {
4
- GetProps,
5
- ViewProps,
6
- TamaguiComponent,
7
- TamaguiComponentExpectingVariants,
8
- TamaguiElement,
9
- } from '@tamagui/core'
10
- import { View } from '@tamagui/core'
11
- import { composeEventHandlers, withStaticProperties } from '@tamagui/helpers'
12
- import { resolveViewZIndex } from '@tamagui/portal'
13
- import { RemoveScroll } from '@tamagui/remove-scroll'
14
- import { useDidFinishSSR } from '@tamagui/use-did-finish-ssr'
15
- import { StackZIndexContext } from '@tamagui/z-index-stack'
16
- import type { ForwardRefExoticComponent, FunctionComponent, RefAttributes } from 'react'
17
- import { forwardRef, memo, useMemo, useEffect, useRef } from 'react'
18
- import type { View as RNView } from 'react-native'
19
- import { Platform } from 'react-native'
20
- import { SHEET_HANDLE_NAME, SHEET_NAME, SHEET_OVERLAY_NAME } from './constants'
21
- import { getNativeSheet } from './nativeSheet'
22
- import { useSheetContext } from './SheetContext'
23
- import { SheetImplementationCustom } from './SheetImplementationCustom'
24
- import { SheetScrollView } from './SheetScrollView'
25
- import type { SheetProps, SheetScopedProps } from './types'
26
- import { useSheetController } from './useSheetController'
27
- import { useSheetOffscreenSize } from './useSheetOffscreenSize'
28
- import { getMaxViewportHeight } from './webViewport'
29
-
30
- type SharedSheetProps = {
31
- open?: boolean
32
- }
33
-
34
- type BaseProps = ViewProps & SharedSheetProps
35
-
36
- type SheetStyledComponent = TamaguiComponentExpectingVariants<BaseProps, SharedSheetProps>
37
-
38
- export function createSheet<
39
- H extends TamaguiComponent | SheetStyledComponent,
40
- F extends TamaguiComponent | SheetStyledComponent,
41
- O extends TamaguiComponent | SheetStyledComponent,
42
- >({ Handle, Frame, Overlay }: { Handle: H; Frame: F; Overlay: O }) {
43
- const SheetHandle = Handle.styleable<any>(
44
- (
45
- { __scopeSheet, ...props }: SheetScopedProps<SheetStyledComponent>,
46
- forwardedRef
47
- ) => {
48
- const context = useSheetContext(SHEET_HANDLE_NAME, __scopeSheet)
49
- const composedRef = useComposedRefs<TamaguiElement>(context.handleRef, forwardedRef)
50
-
51
- // track if sheet was being dragged to prevent onPress toggle after drag
52
- const wasDraggingRef = useRef(false)
53
-
54
- // subscribe to parent dragging changes to track if we dragged during this press
55
- useEffect(() => {
56
- if (!context.scrollBridge) return
57
- return context.scrollBridge.onParentDragging((isDragging: boolean) => {
58
- if (isDragging) {
59
- wasDraggingRef.current = true
60
- }
61
- })
62
- }, [context.scrollBridge])
63
-
64
- if (context.onlyShowFrame) {
65
- return null
66
- }
67
-
68
- return (
69
- // @ts-ignore
70
- <Handle
71
- ref={composedRef}
72
- onPressIn={() => {
73
- // reset at start of new press
74
- wasDraggingRef.current = false
75
- }}
76
- onPress={() => {
77
- // skip toggle if this was a drag gesture
78
- if (wasDraggingRef.current) {
79
- wasDraggingRef.current = false
80
- return
81
- }
82
- // don't toggle to the bottom snap position when dismissOnSnapToBottom set
83
- const max =
84
- context.snapPoints.length + (context.dismissOnSnapToBottom ? -1 : 0)
85
- const nextPos = (context.position + 1) % max
86
- context.setPosition(nextPos)
87
- }}
88
- open={context.open}
89
- {...props}
90
- />
91
- )
92
- }
93
- )
94
-
95
- /* -------------------------------------------------------------------------------------------------
96
- * SheetOverlay
97
- * -----------------------------------------------------------------------------------------------*/
98
-
99
- const SheetOverlay = Overlay.styleable<SheetScopedProps<{}>>((propsIn, ref) => {
100
- const { __scopeSheet, ...props } = propsIn
101
- const context = useSheetContext(SHEET_OVERLAY_NAME, __scopeSheet)
102
-
103
- // this ones a bit weird for legacy reasons, we need to hoist it above <Sheet /> AnimatedView
104
- // so we just pass it up to context
105
-
106
- const element = useMemo(() => {
107
- return (
108
- // @ts-ignore
109
- <Overlay
110
- {...props}
111
- ref={ref}
112
- onPress={composeEventHandlers(
113
- props.onPress,
114
- context.dismissOnOverlayPress
115
- ? () => {
116
- context.setOpen(false)
117
- }
118
- : undefined
119
- )}
120
- />
121
- )
122
- }, [props, ref, context.dismissOnOverlayPress, context.setOpen])
123
-
124
- useIsomorphicLayoutEffect(() => {
125
- context.onOverlayComponent?.(element)
126
- }, [element])
127
-
128
- if (context.onlyShowFrame) {
129
- return null
130
- }
131
-
132
- return null
133
- })
134
-
135
- /* -------------------------------------------------------------------------------------------------
136
- * Sheet
137
- * -----------------------------------------------------------------------------------------------*/
138
-
139
- type ExtraFrameProps = {
140
- /**
141
- * by default the sheet adds a view below its bottom that extends past the
142
- * largest visible viewport height. this covers spring overshoot when opening
143
- * so page content never shows through below the sheet.
144
- */
145
- disableHideBottomOverflow?: boolean
146
-
147
- /**
148
- * Adds padding accounting for the currently offscreen content, so if you put a flex element inside
149
- * the sheet, it will always flex to the height of the visible amount of the sheet. If this is not
150
- * turned on, the inner content is always set to the max height of the sheet.
151
- */
152
- adjustPaddingForOffscreenContent?: boolean
153
- }
154
-
155
- const SheetFrame = Frame.styleable<SheetProps & ExtraFrameProps>(
156
- (
157
- {
158
- __scopeSheet,
159
- adjustPaddingForOffscreenContent,
160
- disableHideBottomOverflow,
161
- children,
162
- ...props
163
- },
164
- forwardedRef
165
- ) => {
166
- const context = useSheetContext(SHEET_NAME, __scopeSheet)
167
- const { hasFit, disableRemoveScroll, frameSize, contentRef, open } = context
168
- const composedContentRef = useComposedRefs(forwardedRef, contentRef)
169
- const offscreenSize = useSheetOffscreenSize(context)
170
-
171
- // FIX: Store the frameSize when open for use during close animation
172
- const stableFrameSize = useRef(frameSize)
173
- useEffect(() => {
174
- if (open && frameSize) {
175
- stableFrameSize.current = frameSize
176
- }
177
- }, [open, frameSize])
178
-
179
- const sheetContents = useMemo(() => {
180
- // FIX: Use fixed height during close animation to prevent content-driven resizing
181
- const shouldUseFixedHeight = hasFit && !open && stableFrameSize.current
182
-
183
- return (
184
- // @ts-expect-error
185
- <Frame
186
- ref={composedContentRef}
187
- flex={hasFit && open ? 0 : 1}
188
- flexBasis={hasFit ? 'auto' : undefined}
189
- height={
190
- shouldUseFixedHeight
191
- ? stableFrameSize.current
192
- : hasFit
193
- ? undefined
194
- : frameSize
195
- }
196
- pointerEvents={open ? 'auto' : 'none'}
197
- data-state={open ? 'open' : 'closed'}
198
- {...props}
199
- >
200
- <StackZIndexContext zIndex={resolveViewZIndex(props.zIndex)}>
201
- {children}
202
- </StackZIndexContext>
203
-
204
- {adjustPaddingForOffscreenContent && (
205
- <View data-sheet-offscreen-pad height={offscreenSize} width="100%" />
206
- )}
207
- </Frame>
208
- )
209
- }, [
210
- open,
211
- props,
212
- frameSize,
213
- offscreenSize,
214
- adjustPaddingForOffscreenContent,
215
- hasFit,
216
- ])
217
-
218
- return (
219
- <>
220
- <RemoveScroll enabled={!disableRemoveScroll && context.open}>
221
- {sheetContents}
222
- </RemoveScroll>
223
-
224
- {/* below frame hide when bouncing past 100% */}
225
- {!disableHideBottomOverflow && (
226
- // @ts-ignore
227
- <Frame
228
- {...props}
229
- componentName="SheetCover"
230
- data-sheet-cover=""
231
- children={null}
232
- // Don't inherit testID - this is a visual helper element
233
- testID={undefined}
234
- id={undefined}
235
- position="absolute"
236
- // anchor the cover's top at the sheet's bottom edge (top: 100% of the
237
- // container), then extend it downward. on web extend it past the
238
- // largest viewport safari can reveal as its chrome retracts, so the
239
- // sheet background covers the bottom instead of revealing the page.
240
- // native keeps frameSize.
241
- top="100%"
242
- zIndex={-1}
243
- height={
244
- isWeb
245
- ? Math.max(context.frameSize, getMaxViewportHeight())
246
- : context.frameSize
247
- }
248
- maxHeight={isWeb ? 'none' : undefined}
249
- left={0}
250
- right={0}
251
- borderWidth={0}
252
- borderRadius={0}
253
- shadowOpacity={0}
254
- />
255
- )}
256
- </>
257
- )
258
- }
259
- ) as any as ForwardRefExoticComponent<
260
- SheetScopedProps<
261
- Omit<GetProps<typeof Frame>, keyof ExtraFrameProps> & ExtraFrameProps
262
- >
263
- >
264
-
265
- const Sheet = forwardRef<RNView, SheetProps>(function Sheet(props, ref) {
266
- const hydrated = useDidFinishSSR()
267
- const { isShowingNonSheet } = useSheetController()
268
-
269
- let SheetImplementation = SheetImplementationCustom
270
-
271
- if (props.native && Platform.OS === 'ios') {
272
- if (process.env.TAMAGUI_TARGET === 'native') {
273
- const impl = getNativeSheet('ios')
274
- if (impl) {
275
- // @ts-expect-error accepting external sheet implementation
276
- SheetImplementation = impl
277
- }
278
- }
279
- }
280
-
281
- /**
282
- * Performance is sensitive here so avoid all the hooks below with this
283
- */
284
- if (isShowingNonSheet || !hydrated) {
285
- return null
286
- }
287
-
288
- return <SheetImplementation ref={ref} {...props} />
289
- })
290
-
291
- const components = {
292
- Frame: SheetFrame,
293
- Overlay: SheetOverlay,
294
- Handle: SheetHandle,
295
- ScrollView: SheetScrollView,
296
- }
297
-
298
- const Controlled = withStaticProperties(Sheet, components) as any as FunctionComponent<
299
- Omit<SheetProps, 'open' | 'onOpenChange'> & RefAttributes<RNView>
300
- > &
301
- typeof components
302
-
303
- return withStaticProperties(Sheet, {
304
- ...components,
305
- Controlled,
306
- })
307
- }
308
-
309
- /* -------------------------------------------------------------------------------------------------*/
@@ -1,43 +0,0 @@
1
- /**
2
- * Legacy setup - prefer `import '@tamagui/native/setup-gesture-handler'` instead.
3
- */
4
-
5
- import { getGestureHandler } from '@tamagui/native'
6
-
7
- import type { GestureState } from '@tamagui/native'
8
-
9
- const SHEET_GESTURE_STATE_KEY = '__tamagui_sheet_gesture_state__'
10
-
11
- export function isGestureHandlerEnabled(): boolean {
12
- const g = globalThis as typeof globalThis & {
13
- [SHEET_GESTURE_STATE_KEY]?: GestureState
14
- }
15
-
16
- return g[SHEET_GESTURE_STATE_KEY]?.enabled ?? getGestureHandler().isEnabled
17
- }
18
-
19
- export interface SetupGestureHandlerConfig {
20
- Gesture: any
21
- GestureDetector: any
22
- ScrollView?: any
23
- }
24
-
25
- export function setupGestureHandler(config: SetupGestureHandlerConfig): void {
26
- const g = globalThis as any
27
- if (g.__tamagui_sheet_gesture_handler_setup) {
28
- return
29
- }
30
- g.__tamagui_sheet_gesture_handler_setup = true
31
-
32
- const { Gesture, GestureDetector, ScrollView } = config
33
-
34
- if (Gesture && GestureDetector) {
35
- g[SHEET_GESTURE_STATE_KEY] = {
36
- enabled: true,
37
- Gesture,
38
- GestureDetector,
39
- ScrollView: ScrollView || null,
40
- RootView: null,
41
- } satisfies GestureState
42
- }
43
- }
package/src/useSheet.tsx DELETED
@@ -1,3 +0,0 @@
1
- import { useSheetContext } from './SheetContext'
2
-
3
- export const useSheet = () => useSheetContext('', undefined)