@tamagui/sheet 2.7.7 → 3.0.0-beta.1091.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 (477) hide show
  1. package/dist/cjs/GestureSheetContext.cjs +28 -37
  2. package/dist/cjs/GestureSheetContext.native.cjs +48 -0
  3. package/dist/cjs/GestureSheetContext.native.js +29 -37
  4. package/dist/cjs/GestureSheetContext.native.js.map +1 -1
  5. package/dist/cjs/Sheet.cjs +220 -99
  6. package/dist/cjs/Sheet.native.cjs +245 -0
  7. package/dist/cjs/Sheet.native.js +223 -98
  8. package/dist/cjs/Sheet.native.js.map +1 -1
  9. package/dist/cjs/SheetContext.cjs +43 -22
  10. package/dist/cjs/SheetContext.native.cjs +57 -0
  11. package/dist/cjs/SheetContext.native.js +44 -22
  12. package/dist/cjs/SheetContext.native.js.map +1 -1
  13. package/dist/cjs/SheetController.cjs +49 -56
  14. package/dist/cjs/SheetController.native.cjs +71 -0
  15. package/dist/cjs/SheetController.native.js +52 -58
  16. package/dist/cjs/SheetController.native.js.map +1 -1
  17. package/dist/cjs/SheetDragSurface.cjs +50 -0
  18. package/dist/cjs/SheetDragSurface.native.cjs +61 -0
  19. package/dist/cjs/SheetDragSurface.native.js +63 -0
  20. package/dist/cjs/SheetDragSurface.native.js.map +1 -0
  21. package/dist/cjs/SheetImplementationCustom.cjs +664 -610
  22. package/dist/cjs/SheetImplementationCustom.native.cjs +748 -0
  23. package/dist/cjs/SheetImplementationCustom.native.js +704 -649
  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 +21 -21
  30. package/dist/cjs/constants.native.cjs +36 -0
  31. package/dist/cjs/constants.native.js +21 -20
  32. package/dist/cjs/constants.native.js.map +1 -1
  33. package/dist/cjs/contexts.cjs +19 -28
  34. package/dist/cjs/contexts.native.cjs +37 -0
  35. package/dist/cjs/contexts.native.js +19 -27
  36. package/dist/cjs/contexts.native.js.map +1 -1
  37. package/dist/cjs/controller.cjs +16 -18
  38. package/dist/cjs/controller.native.cjs +31 -0
  39. package/dist/cjs/controller.native.js +16 -17
  40. package/dist/cjs/controller.native.js.map +1 -1
  41. package/dist/cjs/gestureState.cjs +28 -30
  42. package/dist/cjs/gestureState.native.cjs +53 -0
  43. package/dist/cjs/gestureState.native.js +29 -30
  44. package/dist/cjs/gestureState.native.js.map +1 -1
  45. package/dist/cjs/helpers.cjs +20 -24
  46. package/dist/cjs/helpers.native.cjs +34 -0
  47. package/dist/cjs/helpers.native.js +21 -24
  48. package/dist/cjs/helpers.native.js.map +1 -1
  49. package/dist/cjs/index.cjs +14 -21
  50. package/dist/cjs/index.native.cjs +36 -0
  51. package/dist/cjs/index.native.js +15 -21
  52. package/dist/cjs/index.native.js.map +1 -1
  53. package/dist/cjs/keyboardAvoidance.cjs +55 -79
  54. package/dist/cjs/keyboardAvoidance.native.cjs +74 -0
  55. package/dist/cjs/keyboardAvoidance.native.js +55 -78
  56. package/dist/cjs/keyboardAvoidance.native.js.map +1 -1
  57. package/dist/cjs/nativeSheet.cjs +17 -86
  58. package/dist/cjs/nativeSheet.native.cjs +94 -0
  59. package/dist/cjs/nativeSheet.native.js +73 -86
  60. package/dist/cjs/nativeSheet.native.js.map +1 -1
  61. package/dist/cjs/stableViewportHeight.cjs +27 -0
  62. package/dist/cjs/stableViewportHeight.native.cjs +29 -0
  63. package/dist/cjs/stableViewportHeight.native.js +31 -0
  64. package/dist/cjs/stableViewportHeight.native.js.map +1 -0
  65. package/dist/cjs/types.cjs +9 -11
  66. package/dist/cjs/types.native.cjs +18 -0
  67. package/dist/cjs/types.native.js +9 -10
  68. package/dist/cjs/types.native.js.map +1 -1
  69. package/dist/cjs/useGestureHandlerPan.cjs +244 -257
  70. package/dist/cjs/useGestureHandlerPan.native.cjs +272 -0
  71. package/dist/cjs/useGestureHandlerPan.native.js +253 -265
  72. package/dist/cjs/useGestureHandlerPan.native.js.map +1 -1
  73. package/dist/cjs/useKeyboardControllerSheet.cjs +82 -88
  74. package/dist/cjs/useKeyboardControllerSheet.native.cjs +92 -0
  75. package/dist/cjs/useKeyboardControllerSheet.native.js +73 -111
  76. package/dist/cjs/useKeyboardControllerSheet.native.js.map +1 -1
  77. package/dist/cjs/useSafeAreaInsets.cjs +19 -26
  78. package/dist/cjs/useSafeAreaInsets.native.cjs +50 -0
  79. package/dist/cjs/useSafeAreaInsets.native.js +29 -25
  80. package/dist/cjs/useSafeAreaInsets.native.js.map +1 -1
  81. package/dist/cjs/useSheetController.cjs +26 -39
  82. package/dist/cjs/useSheetController.native.cjs +41 -0
  83. package/dist/cjs/useSheetController.native.js +27 -39
  84. package/dist/cjs/useSheetController.native.js.map +1 -1
  85. package/dist/cjs/useSheetOffscreenSize.cjs +43 -53
  86. package/dist/cjs/useSheetOffscreenSize.native.cjs +59 -0
  87. package/dist/cjs/useSheetOffscreenSize.native.js +47 -56
  88. package/dist/cjs/useSheetOffscreenSize.native.js.map +1 -1
  89. package/dist/cjs/useSheetOpenState.cjs +68 -40
  90. package/dist/cjs/useSheetOpenState.native.cjs +87 -0
  91. package/dist/cjs/useSheetOpenState.native.js +73 -42
  92. package/dist/cjs/useSheetOpenState.native.js.map +1 -1
  93. package/dist/cjs/useSheetProviderProps.cjs +145 -164
  94. package/dist/cjs/useSheetProviderProps.native.cjs +175 -0
  95. package/dist/cjs/useSheetProviderProps.native.js +155 -174
  96. package/dist/cjs/useSheetProviderProps.native.js.map +1 -1
  97. package/dist/cjs/useSheetScrollViewGestures.cjs +171 -180
  98. package/dist/cjs/useSheetScrollViewGestures.native.cjs +149 -0
  99. package/dist/cjs/useSheetScrollViewGestures.native.js +135 -147
  100. package/dist/cjs/useSheetScrollViewGestures.native.js.map +1 -1
  101. package/dist/cjs/webViewport.cjs +46 -48
  102. package/dist/cjs/webViewport.native.cjs +78 -0
  103. package/dist/cjs/webViewport.native.js +49 -50
  104. package/dist/cjs/webViewport.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 +207 -83
  110. package/dist/esm/Sheet.mjs.map +1 -1
  111. package/dist/esm/Sheet.native.js +210 -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/SheetDragSurface.mjs +25 -0
  122. package/dist/esm/SheetDragSurface.mjs.map +1 -0
  123. package/dist/esm/SheetDragSurface.native.js +34 -0
  124. package/dist/esm/SheetDragSurface.native.js.map +1 -0
  125. package/dist/esm/SheetImplementationCustom.mjs +647 -586
  126. package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
  127. package/dist/esm/SheetImplementationCustom.native.js +684 -618
  128. package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
  129. package/dist/esm/SheetScrollView.mjs +278 -288
  130. package/dist/esm/SheetScrollView.mjs.map +1 -1
  131. package/dist/esm/SheetScrollView.native.js +287 -297
  132. package/dist/esm/SheetScrollView.native.js.map +1 -1
  133. package/dist/esm/constants.mjs +5 -3
  134. package/dist/esm/constants.mjs.map +1 -1
  135. package/dist/esm/constants.native.js +5 -3
  136. package/dist/esm/constants.native.js.map +1 -1
  137. package/dist/esm/contexts.mjs +3 -3
  138. package/dist/esm/contexts.mjs.map +1 -1
  139. package/dist/esm/contexts.native.js +3 -3
  140. package/dist/esm/contexts.native.js.map +1 -1
  141. package/dist/esm/controller.mjs +2 -2
  142. package/dist/esm/controller.native.js +2 -2
  143. package/dist/esm/gestureState.mjs +13 -11
  144. package/dist/esm/gestureState.mjs.map +1 -1
  145. package/dist/esm/gestureState.native.js +14 -12
  146. package/dist/esm/gestureState.native.js.map +1 -1
  147. package/dist/esm/helpers.mjs +7 -6
  148. package/dist/esm/helpers.mjs.map +1 -1
  149. package/dist/esm/helpers.native.js +8 -7
  150. package/dist/esm/helpers.native.js.map +1 -1
  151. package/dist/esm/index.js +21 -14
  152. package/dist/esm/index.mjs +21 -14
  153. package/dist/esm/index.native.js +21 -14
  154. package/dist/esm/keyboardAvoidance.mjs +40 -61
  155. package/dist/esm/keyboardAvoidance.mjs.map +1 -1
  156. package/dist/esm/keyboardAvoidance.native.js +40 -61
  157. package/dist/esm/keyboardAvoidance.native.js.map +1 -1
  158. package/dist/esm/nativeSheet.mjs +4 -70
  159. package/dist/esm/nativeSheet.mjs.map +1 -1
  160. package/dist/esm/nativeSheet.native.js +60 -70
  161. package/dist/esm/nativeSheet.native.js.map +1 -1
  162. package/dist/esm/stableViewportHeight.mjs +8 -0
  163. package/dist/esm/stableViewportHeight.mjs.map +1 -0
  164. package/dist/esm/stableViewportHeight.native.js +8 -0
  165. package/dist/esm/stableViewportHeight.native.js.map +1 -0
  166. package/dist/esm/types.mjs +0 -2
  167. package/dist/esm/types.native.js +0 -2
  168. package/dist/esm/useGestureHandlerPan.mjs +232 -239
  169. package/dist/esm/useGestureHandlerPan.mjs.map +1 -1
  170. package/dist/esm/useGestureHandlerPan.native.js +241 -248
  171. package/dist/esm/useGestureHandlerPan.native.js.map +1 -1
  172. package/dist/esm/useKeyboardControllerSheet.mjs +71 -71
  173. package/dist/esm/useKeyboardControllerSheet.mjs.map +1 -1
  174. package/dist/esm/useKeyboardControllerSheet.native.js +66 -94
  175. package/dist/esm/useKeyboardControllerSheet.native.js.map +1 -1
  176. package/dist/esm/useSafeAreaInsets.mjs +3 -1
  177. package/dist/esm/useSafeAreaInsets.mjs.map +1 -1
  178. package/dist/esm/useSafeAreaInsets.native.js +15 -3
  179. package/dist/esm/useSafeAreaInsets.native.js.map +1 -1
  180. package/dist/esm/useSheetController.mjs +14 -12
  181. package/dist/esm/useSheetController.mjs.map +1 -1
  182. package/dist/esm/useSheetController.native.js +14 -12
  183. package/dist/esm/useSheetController.native.js.map +1 -1
  184. package/dist/esm/useSheetOffscreenSize.mjs +30 -35
  185. package/dist/esm/useSheetOffscreenSize.mjs.map +1 -1
  186. package/dist/esm/useSheetOffscreenSize.native.js +34 -39
  187. package/dist/esm/useSheetOffscreenSize.native.js.map +1 -1
  188. package/dist/esm/useSheetOpenState.mjs +50 -22
  189. package/dist/esm/useSheetOpenState.mjs.map +1 -1
  190. package/dist/esm/useSheetOpenState.native.js +55 -25
  191. package/dist/esm/useSheetOpenState.native.js.map +1 -1
  192. package/dist/esm/useSheetProviderProps.mjs +130 -138
  193. package/dist/esm/useSheetProviderProps.mjs.map +1 -1
  194. package/dist/esm/useSheetProviderProps.native.js +140 -149
  195. package/dist/esm/useSheetProviderProps.native.js.map +1 -1
  196. package/dist/esm/useSheetScrollViewGestures.mjs +159 -162
  197. package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -1
  198. package/dist/esm/useSheetScrollViewGestures.native.js +123 -130
  199. package/dist/esm/useSheetScrollViewGestures.native.js.map +1 -1
  200. package/dist/esm/webViewport.mjs +26 -25
  201. package/dist/esm/webViewport.mjs.map +1 -1
  202. package/dist/esm/webViewport.native.js +29 -28
  203. package/dist/esm/webViewport.native.js.map +1 -1
  204. package/dist/jsx/GestureSheetContext.mjs +15 -20
  205. package/dist/jsx/GestureSheetContext.mjs.map +1 -1
  206. package/dist/jsx/GestureSheetContext.native.cjs +48 -0
  207. package/dist/jsx/GestureSheetContext.native.js +29 -37
  208. package/dist/jsx/GestureSheetContext.native.js.map +1 -1
  209. package/dist/jsx/Sheet.mjs +207 -83
  210. package/dist/jsx/Sheet.mjs.map +1 -1
  211. package/dist/jsx/Sheet.native.cjs +245 -0
  212. package/dist/jsx/Sheet.native.js +223 -98
  213. package/dist/jsx/Sheet.native.js.map +1 -1
  214. package/dist/jsx/SheetContext.mjs +21 -5
  215. package/dist/jsx/SheetContext.mjs.map +1 -1
  216. package/dist/jsx/SheetContext.native.cjs +57 -0
  217. package/dist/jsx/SheetContext.native.js +44 -22
  218. package/dist/jsx/SheetContext.native.js.map +1 -1
  219. package/dist/jsx/SheetController.mjs +34 -30
  220. package/dist/jsx/SheetController.mjs.map +1 -1
  221. package/dist/jsx/SheetController.native.cjs +71 -0
  222. package/dist/jsx/SheetController.native.js +52 -58
  223. package/dist/jsx/SheetController.native.js.map +1 -1
  224. package/dist/jsx/SheetDragSurface.mjs +25 -0
  225. package/dist/jsx/SheetDragSurface.mjs.map +1 -0
  226. package/dist/jsx/SheetDragSurface.native.cjs +61 -0
  227. package/dist/jsx/SheetDragSurface.native.js +63 -0
  228. package/dist/jsx/SheetDragSurface.native.js.map +1 -0
  229. package/dist/jsx/SheetImplementationCustom.mjs +647 -586
  230. package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
  231. package/dist/jsx/SheetImplementationCustom.native.cjs +748 -0
  232. package/dist/jsx/SheetImplementationCustom.native.js +704 -649
  233. package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
  234. package/dist/jsx/SheetScrollView.mjs +278 -288
  235. package/dist/jsx/SheetScrollView.mjs.map +1 -1
  236. package/dist/jsx/SheetScrollView.native.cjs +326 -0
  237. package/dist/jsx/SheetScrollView.native.js +299 -319
  238. package/dist/jsx/SheetScrollView.native.js.map +1 -1
  239. package/dist/jsx/constants.mjs +5 -3
  240. package/dist/jsx/constants.mjs.map +1 -1
  241. package/dist/jsx/constants.native.cjs +36 -0
  242. package/dist/jsx/constants.native.js +21 -20
  243. package/dist/jsx/constants.native.js.map +1 -1
  244. package/dist/jsx/contexts.mjs +3 -3
  245. package/dist/jsx/contexts.mjs.map +1 -1
  246. package/dist/jsx/contexts.native.cjs +37 -0
  247. package/dist/jsx/contexts.native.js +19 -27
  248. package/dist/jsx/contexts.native.js.map +1 -1
  249. package/dist/jsx/controller.mjs +2 -2
  250. package/dist/jsx/controller.native.cjs +31 -0
  251. package/dist/jsx/controller.native.js +16 -17
  252. package/dist/jsx/controller.native.js.map +1 -1
  253. package/dist/jsx/gestureState.mjs +13 -11
  254. package/dist/jsx/gestureState.mjs.map +1 -1
  255. package/dist/jsx/gestureState.native.cjs +53 -0
  256. package/dist/jsx/gestureState.native.js +29 -30
  257. package/dist/jsx/gestureState.native.js.map +1 -1
  258. package/dist/jsx/helpers.mjs +7 -6
  259. package/dist/jsx/helpers.mjs.map +1 -1
  260. package/dist/jsx/helpers.native.cjs +34 -0
  261. package/dist/jsx/helpers.native.js +21 -24
  262. package/dist/jsx/helpers.native.js.map +1 -1
  263. package/dist/jsx/index.js +21 -14
  264. package/dist/jsx/index.mjs +21 -14
  265. package/dist/jsx/index.native.cjs +36 -0
  266. package/dist/jsx/index.native.js +15 -21
  267. package/dist/jsx/index.native.js.map +1 -1
  268. package/dist/jsx/keyboardAvoidance.mjs +40 -61
  269. package/dist/jsx/keyboardAvoidance.mjs.map +1 -1
  270. package/dist/jsx/keyboardAvoidance.native.cjs +74 -0
  271. package/dist/jsx/keyboardAvoidance.native.js +55 -78
  272. package/dist/jsx/keyboardAvoidance.native.js.map +1 -1
  273. package/dist/jsx/nativeSheet.mjs +4 -70
  274. package/dist/jsx/nativeSheet.mjs.map +1 -1
  275. package/dist/jsx/nativeSheet.native.cjs +94 -0
  276. package/dist/jsx/nativeSheet.native.js +73 -86
  277. package/dist/jsx/nativeSheet.native.js.map +1 -1
  278. package/dist/jsx/stableViewportHeight.mjs +8 -0
  279. package/dist/jsx/stableViewportHeight.mjs.map +1 -0
  280. package/dist/jsx/stableViewportHeight.native.cjs +29 -0
  281. package/dist/jsx/stableViewportHeight.native.js +31 -0
  282. package/dist/jsx/stableViewportHeight.native.js.map +1 -0
  283. package/dist/jsx/types.mjs +0 -2
  284. package/dist/jsx/types.native.cjs +18 -0
  285. package/dist/jsx/types.native.js +9 -10
  286. package/dist/jsx/types.native.js.map +1 -1
  287. package/dist/jsx/useGestureHandlerPan.mjs +232 -239
  288. package/dist/jsx/useGestureHandlerPan.mjs.map +1 -1
  289. package/dist/jsx/useGestureHandlerPan.native.cjs +272 -0
  290. package/dist/jsx/useGestureHandlerPan.native.js +253 -265
  291. package/dist/jsx/useGestureHandlerPan.native.js.map +1 -1
  292. package/dist/jsx/useKeyboardControllerSheet.mjs +71 -71
  293. package/dist/jsx/useKeyboardControllerSheet.mjs.map +1 -1
  294. package/dist/jsx/useKeyboardControllerSheet.native.cjs +92 -0
  295. package/dist/jsx/useKeyboardControllerSheet.native.js +73 -111
  296. package/dist/jsx/useKeyboardControllerSheet.native.js.map +1 -1
  297. package/dist/jsx/useSafeAreaInsets.mjs +3 -1
  298. package/dist/jsx/useSafeAreaInsets.mjs.map +1 -1
  299. package/dist/jsx/useSafeAreaInsets.native.cjs +50 -0
  300. package/dist/jsx/useSafeAreaInsets.native.js +29 -25
  301. package/dist/jsx/useSafeAreaInsets.native.js.map +1 -1
  302. package/dist/jsx/useSheetController.mjs +14 -12
  303. package/dist/jsx/useSheetController.mjs.map +1 -1
  304. package/dist/jsx/useSheetController.native.cjs +41 -0
  305. package/dist/jsx/useSheetController.native.js +27 -39
  306. package/dist/jsx/useSheetController.native.js.map +1 -1
  307. package/dist/jsx/useSheetOffscreenSize.mjs +30 -35
  308. package/dist/jsx/useSheetOffscreenSize.mjs.map +1 -1
  309. package/dist/jsx/useSheetOffscreenSize.native.cjs +59 -0
  310. package/dist/jsx/useSheetOffscreenSize.native.js +47 -56
  311. package/dist/jsx/useSheetOffscreenSize.native.js.map +1 -1
  312. package/dist/jsx/useSheetOpenState.mjs +50 -22
  313. package/dist/jsx/useSheetOpenState.mjs.map +1 -1
  314. package/dist/jsx/useSheetOpenState.native.cjs +87 -0
  315. package/dist/jsx/useSheetOpenState.native.js +73 -42
  316. package/dist/jsx/useSheetOpenState.native.js.map +1 -1
  317. package/dist/jsx/useSheetProviderProps.mjs +130 -138
  318. package/dist/jsx/useSheetProviderProps.mjs.map +1 -1
  319. package/dist/jsx/useSheetProviderProps.native.cjs +175 -0
  320. package/dist/jsx/useSheetProviderProps.native.js +155 -174
  321. package/dist/jsx/useSheetProviderProps.native.js.map +1 -1
  322. package/dist/jsx/useSheetScrollViewGestures.mjs +159 -162
  323. package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -1
  324. package/dist/jsx/useSheetScrollViewGestures.native.cjs +149 -0
  325. package/dist/jsx/useSheetScrollViewGestures.native.js +135 -147
  326. package/dist/jsx/useSheetScrollViewGestures.native.js.map +1 -1
  327. package/dist/jsx/webViewport.mjs +26 -25
  328. package/dist/jsx/webViewport.mjs.map +1 -1
  329. package/dist/jsx/webViewport.native.cjs +78 -0
  330. package/dist/jsx/webViewport.native.js +49 -50
  331. package/dist/jsx/webViewport.native.js.map +1 -1
  332. package/package.json +38 -40
  333. package/src/Sheet.tsx +314 -77
  334. package/src/SheetContext.tsx +57 -7
  335. package/src/SheetController.tsx +7 -6
  336. package/src/SheetDragSurface.native.tsx +42 -0
  337. package/src/SheetDragSurface.tsx +40 -0
  338. package/src/SheetImplementationCustom.tsx +364 -181
  339. package/src/SheetScrollView.tsx +36 -20
  340. package/src/constants.tsx +3 -3
  341. package/src/helpers.tsx +0 -14
  342. package/src/index.ts +3 -6
  343. package/src/{nativeSheet.tsx → nativeSheet.native.tsx} +9 -20
  344. package/src/nativeSheet.ts +19 -0
  345. package/src/stableViewportHeight.native.ts +9 -0
  346. package/src/stableViewportHeight.ts +15 -0
  347. package/src/types.tsx +122 -92
  348. package/src/useKeyboardControllerSheet.native.ts +10 -39
  349. package/src/useSafeAreaInsets.native.ts +20 -13
  350. package/src/useSheetController.tsx +15 -7
  351. package/src/useSheetOpenState.tsx +50 -4
  352. package/src/useSheetProviderProps.tsx +4 -27
  353. package/src/useSheetScrollViewGestures.ts +2 -2
  354. package/types/GestureSheetContext.d.ts +1 -1
  355. package/types/GestureSheetContext.d.ts.map +1 -1
  356. package/types/Sheet.d.ts +247 -151
  357. package/types/Sheet.d.ts.map +1 -1
  358. package/types/SheetContext.d.ts +28 -42
  359. package/types/SheetContext.d.ts.map +1 -1
  360. package/types/SheetController.d.ts +4 -2
  361. package/types/SheetController.d.ts.map +1 -1
  362. package/types/SheetDragSurface.d.ts +11 -0
  363. package/types/SheetDragSurface.d.ts.map +1 -0
  364. package/types/SheetDragSurface.native.d.ts +11 -0
  365. package/types/SheetDragSurface.native.d.ts.map +1 -0
  366. package/types/SheetImplementationCustom.d.ts +4 -36
  367. package/types/SheetImplementationCustom.d.ts.map +1 -1
  368. package/types/SheetScrollView.d.ts +21 -38
  369. package/types/SheetScrollView.d.ts.map +1 -1
  370. package/types/constants.d.ts +3 -2
  371. package/types/constants.d.ts.map +1 -1
  372. package/types/index.d.ts +1 -3
  373. package/types/index.d.ts.map +1 -1
  374. package/types/nativeSheet.d.ts +8 -8
  375. package/types/nativeSheet.d.ts.map +1 -1
  376. package/types/nativeSheet.native.d.ts +5 -0
  377. package/types/nativeSheet.native.d.ts.map +1 -0
  378. package/types/stableViewportHeight.d.ts +12 -0
  379. package/types/stableViewportHeight.d.ts.map +1 -0
  380. package/types/stableViewportHeight.native.d.ts +6 -0
  381. package/types/stableViewportHeight.native.d.ts.map +1 -0
  382. package/types/types.d.ts +43 -17
  383. package/types/types.d.ts.map +1 -1
  384. package/types/useKeyboardControllerSheet.native.d.ts +6 -6
  385. package/types/useKeyboardControllerSheet.native.d.ts.map +1 -1
  386. package/types/useSafeAreaInsets.native.d.ts +4 -12
  387. package/types/useSafeAreaInsets.native.d.ts.map +1 -1
  388. package/types/useSheetController.d.ts +6 -6
  389. package/types/useSheetController.d.ts.map +1 -1
  390. package/types/useSheetOffscreenSize.d.ts.map +1 -1
  391. package/types/useSheetOpenState.d.ts +3 -2
  392. package/types/useSheetOpenState.d.ts.map +1 -1
  393. package/types/useSheetProviderProps.d.ts +5 -8
  394. package/types/useSheetProviderProps.d.ts.map +1 -1
  395. package/types/useSheetScrollViewGestures.d.ts +2 -2
  396. package/types/useSheetScrollViewGestures.d.ts.map +1 -1
  397. package/.turbo/turbo-build.log +0 -2
  398. package/controller/index.cjs +0 -2
  399. package/controller/index.d.ts +0 -5
  400. package/controller/index.js +0 -2
  401. package/controller/index.native.cjs +0 -2
  402. package/controller/index.native.js +0 -2
  403. package/dist/cjs/GestureDetectorWrapper.cjs +0 -54
  404. package/dist/cjs/GestureDetectorWrapper.native.js +0 -58
  405. package/dist/cjs/GestureDetectorWrapper.native.js.map +0 -1
  406. package/dist/cjs/createSheet.cjs +0 -194
  407. package/dist/cjs/createSheet.native.js +0 -204
  408. package/dist/cjs/createSheet.native.js.map +0 -1
  409. package/dist/cjs/setupGestureHandler.cjs +0 -55
  410. package/dist/cjs/setupGestureHandler.native.js +0 -60
  411. package/dist/cjs/setupGestureHandler.native.js.map +0 -1
  412. package/dist/cjs/useSheet.cjs +0 -29
  413. package/dist/cjs/useSheet.native.js +0 -34
  414. package/dist/cjs/useSheet.native.js.map +0 -1
  415. package/dist/esm/GestureDetectorWrapper.mjs +0 -29
  416. package/dist/esm/GestureDetectorWrapper.mjs.map +0 -1
  417. package/dist/esm/GestureDetectorWrapper.native.js +0 -30
  418. package/dist/esm/GestureDetectorWrapper.native.js.map +0 -1
  419. package/dist/esm/controller.mjs.map +0 -1
  420. package/dist/esm/controller.native.js.map +0 -1
  421. package/dist/esm/createSheet.mjs +0 -168
  422. package/dist/esm/createSheet.mjs.map +0 -1
  423. package/dist/esm/createSheet.native.js +0 -176
  424. package/dist/esm/createSheet.native.js.map +0 -1
  425. package/dist/esm/index.js.map +0 -1
  426. package/dist/esm/index.mjs.map +0 -1
  427. package/dist/esm/index.native.js.map +0 -1
  428. package/dist/esm/setupGestureHandler.mjs +0 -29
  429. package/dist/esm/setupGestureHandler.mjs.map +0 -1
  430. package/dist/esm/setupGestureHandler.native.js +0 -31
  431. package/dist/esm/setupGestureHandler.native.js.map +0 -1
  432. package/dist/esm/types.mjs.map +0 -1
  433. package/dist/esm/types.native.js.map +0 -1
  434. package/dist/esm/useSheet.mjs +0 -4
  435. package/dist/esm/useSheet.mjs.map +0 -1
  436. package/dist/esm/useSheet.native.js +0 -6
  437. package/dist/esm/useSheet.native.js.map +0 -1
  438. package/dist/jsx/GestureDetectorWrapper.mjs +0 -29
  439. package/dist/jsx/GestureDetectorWrapper.mjs.map +0 -1
  440. package/dist/jsx/GestureDetectorWrapper.native.js +0 -58
  441. package/dist/jsx/GestureDetectorWrapper.native.js.map +0 -1
  442. package/dist/jsx/controller.mjs.map +0 -1
  443. package/dist/jsx/createSheet.mjs +0 -168
  444. package/dist/jsx/createSheet.mjs.map +0 -1
  445. package/dist/jsx/createSheet.native.js +0 -204
  446. package/dist/jsx/createSheet.native.js.map +0 -1
  447. package/dist/jsx/index.js.map +0 -1
  448. package/dist/jsx/index.mjs.map +0 -1
  449. package/dist/jsx/setupGestureHandler.mjs +0 -29
  450. package/dist/jsx/setupGestureHandler.mjs.map +0 -1
  451. package/dist/jsx/setupGestureHandler.native.js +0 -60
  452. package/dist/jsx/setupGestureHandler.native.js.map +0 -1
  453. package/dist/jsx/types.mjs.map +0 -1
  454. package/dist/jsx/useSheet.mjs +0 -4
  455. package/dist/jsx/useSheet.mjs.map +0 -1
  456. package/dist/jsx/useSheet.native.js +0 -34
  457. package/dist/jsx/useSheet.native.js.map +0 -1
  458. package/next.md +0 -78
  459. package/setup-gesture-handler/index.cjs +0 -2
  460. package/setup-gesture-handler/index.js +0 -2
  461. package/setup-gesture-handler/index.native.cjs +0 -2
  462. package/setup-gesture-handler/index.native.js +0 -2
  463. package/setup-gesture-handler.cjs +0 -1
  464. package/src/GestureDetectorWrapper.tsx +0 -38
  465. package/src/createSheet.tsx +0 -309
  466. package/src/setupGestureHandler.ts +0 -43
  467. package/src/useSheet.tsx +0 -3
  468. package/test/keyboardAvoidance.test.ts +0 -269
  469. package/tsconfig.json +0 -57
  470. package/types/GestureDetectorWrapper.d.ts +0 -14
  471. package/types/GestureDetectorWrapper.d.ts.map +0 -1
  472. package/types/createSheet.d.ts +0 -195
  473. package/types/createSheet.d.ts.map +0 -1
  474. package/types/setupGestureHandler.d.ts +0 -11
  475. package/types/setupGestureHandler.d.ts.map +0 -1
  476. package/types/useSheet.d.ts +0 -2
  477. package/types/useSheet.d.ts.map +0 -1
@@ -0,0 +1,748 @@
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
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __export = (target, all) => {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
18
+ get: () => from[key],
19
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
20
+ });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
25
+ value: mod,
26
+ enumerable: true
27
+ }) : target, mod));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var SheetImplementationCustom_exports = {};
30
+ __export(SheetImplementationCustom_exports, {
31
+ SheetImplementationCustom: () => SheetImplementationCustom,
32
+ isSheetOverlayComponent: () => isSheetOverlayComponent
33
+ });
34
+ module.exports = __toCommonJS(SheetImplementationCustom_exports);
35
+ var import_jsx_runtime = require("react/jsx-runtime");
36
+ var import_adapt = require("@tamagui/adapt");
37
+ var import_animate_presence = require("@tamagui/animate-presence");
38
+ var import_transitionResolver = require("@tamagui/animation-helpers/transitionResolver");
39
+ var import_compose_refs = require("@tamagui/compose-refs");
40
+ var import_constants = require("@tamagui/constants");
41
+ var import_core = require("@tamagui/core");
42
+ var import_portal = require("@tamagui/portal");
43
+ var import_react = __toESM(require("react"), 1);
44
+ var import_contexts = require("./contexts.native.js");
45
+ var import_constants2 = require("./constants.native.js");
46
+ var import_gestureState = require("./gestureState.native.js");
47
+ var import_SheetDragSurface = require("./SheetDragSurface.native.js");
48
+ var import_stableViewportHeight = require("./stableViewportHeight.native.js");
49
+ var import_GestureSheetContext = require("./GestureSheetContext.native.js");
50
+ var import_helpers = require("./helpers.native.js");
51
+ var import_keyboardAvoidance = require("./keyboardAvoidance.native.js");
52
+ var import_webViewport = require("./webViewport.native.js");
53
+ var import_SheetContext = require("./SheetContext.native.js");
54
+ var import_useGestureHandlerPan = require("./useGestureHandlerPan.native.js");
55
+ var import_useKeyboardControllerSheet = require("./useKeyboardControllerSheet.native.js");
56
+ var import_useSafeAreaInsets = require("./useSafeAreaInsets.native.js");
57
+ var import_useSheetOpenState = require("./useSheetOpenState.native.js");
58
+ var import_useSheetProviderProps = require("./useSheetProviderProps.native.js");
59
+ var hiddenSize = 10000.1;
60
+ var rnghRootStyleOpen = {
61
+ width: "100%",
62
+ height: "100%"
63
+ };
64
+ var rnghRootStyleClosed = {
65
+ width: "100%",
66
+ height: 0
67
+ };
68
+ var sheetEscapeLayers = [];
69
+ var SheetImplementationCustom = (0, import_core.createRefComponent)(function SheetImplementationCustom2(props, forwardedRef) {
70
+ var parentSheet = import_react.default.useContext(import_contexts.ParentSheetContext);
71
+ var safeAreaInsets = (0, import_useSafeAreaInsets.useSafeAreaInsets)();
72
+ var _safeAreaInsets_top;
73
+ var safeAreaTopInset = (_safeAreaInsets_top = safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.top) !== null && _safeAreaInsets_top !== void 0 ? _safeAreaInsets_top : 0;
74
+ var { transition, transitionConfig: transitionConfigProp, modal = false, zIndex = parentSheet.zIndex + 1, moveOnKeyboardChange = false, unmountChildrenWhenHidden = false, disableHideWhenClosed = false, portalProps, containerComponent: ContainerComponent = import_react.default.Fragment, onTransition } = props;
75
+ var state = (0, import_useSheetOpenState.useSheetOpenState)(props);
76
+ var providerProps = (0, import_useSheetProviderProps.useSheetProviderProps)(props, state);
77
+ var { frameSize, setFrameSize, dismissOnSnapToBottom, snapPoints, snapPointsMode, hasFit, position, setPosition, scrollBridge, screenSize, setMaxContentSize, maxSnapPoint } = providerProps;
78
+ var { open, controller, isHidden } = state;
79
+ var openRef = import_react.default.useRef(open);
80
+ openRef.current = open;
81
+ var sheetRef = import_react.default.useRef(void 0);
82
+ var ref = (0, import_compose_refs.useComposedRefs)(forwardedRef, sheetRef, providerProps.contentRef);
83
+ var animationDriver = (0, import_core.useAnimationDriver)();
84
+ var transitionConfig = (function() {
85
+ var _getTransitionResolver, _resolved_all;
86
+ if (transitionConfigProp) return transitionConfigProp;
87
+ var resolved = transition ? (_getTransitionResolver = (0, import_transitionResolver.getTransitionResolver)()) === null || _getTransitionResolver === void 0 ? void 0 : _getTransitionResolver.resolve(transition, { animations: animationDriver.animations }) : null;
88
+ var timing = resolved === null || resolved === void 0 ? void 0 : (_resolved_all = resolved.all) === null || _resolved_all === void 0 ? void 0 : _resolved_all.timing;
89
+ if (!timing) return null;
90
+ if (timing.kind === "timing") return {
91
+ type: "timing",
92
+ duration: timing.durationMs
93
+ };
94
+ return {
95
+ type: "spring",
96
+ stiffness: timing.stiffness,
97
+ damping: timing.damping,
98
+ mass: timing.mass
99
+ };
100
+ })();
101
+ var [isShowingInnerSheet, setIsShowingInnerSheet] = import_react.default.useState(false);
102
+ var shouldHideParentSheet = !import_constants.isWeb && modal && isShowingInnerSheet && (0, import_portal.needsPortalRepropagation)();
103
+ var sheetInsideSheet = import_react.default.useContext(import_contexts.SheetInsideSheetContext);
104
+ var onInnerSheet = import_react.default.useCallback(function(hasChild) {
105
+ setIsShowingInnerSheet(hasChild);
106
+ }, []);
107
+ var { keyboardHeight, isKeyboardVisible, dismissKeyboard, pauseKeyboardHandler, flushPendingHide } = (0, import_useKeyboardControllerSheet.useKeyboardControllerSheet)({ enabled: Boolean(moveOnKeyboardChange) });
108
+ var stableFrameSize = import_react.default.useRef(frameSize);
109
+ import_react.default.useEffect(function() {
110
+ if (open && frameSize) stableFrameSize.current = frameSize;
111
+ }, [open, frameSize]);
112
+ var isWebKbSheet = import_constants.isWeb && hasFit && moveOnKeyboardChange;
113
+ var isNativeKbFitSheet = !import_constants.isWeb && hasFit && Boolean(moveOnKeyboardChange);
114
+ var preKeyboardFrameSize = import_react.default.useRef(0);
115
+ import_react.default.useEffect(function() {
116
+ if (isNativeKbFitSheet && open && !isKeyboardVisible && frameSize > 0) preKeyboardFrameSize.current = frameSize;
117
+ }, [
118
+ isNativeKbFitSheet,
119
+ open,
120
+ isKeyboardVisible,
121
+ frameSize
122
+ ]);
123
+ var effScreenSize = isWebKbSheet ? (0, import_stableViewportHeight.getStableViewportHeight)() : screenSize;
124
+ var effectiveFrameSize = open ? frameSize : stableFrameSize.current || frameSize;
125
+ var positions = import_react.default.useMemo(function() {
126
+ return snapPoints.map(function(point) {
127
+ return getYPositions(snapPointsMode, point, effScreenSize, effectiveFrameSize);
128
+ });
129
+ }, [
130
+ effScreenSize,
131
+ effectiveFrameSize,
132
+ snapPoints,
133
+ snapPointsMode
134
+ ]);
135
+ var [isDragging, setIsDragging_] = import_react.default.useState(false);
136
+ var isDraggingRef = import_react.default.useRef(false);
137
+ var setIsDragging = import_react.default.useCallback(function(val) {
138
+ isDraggingRef.current = val;
139
+ pauseKeyboardHandler.current = val;
140
+ setIsDragging_(val);
141
+ if (!val) flushPendingHide();
142
+ }, [pauseKeyboardHandler, flushPendingHide]);
143
+ var activePositionsRef = import_react.default.useRef(positions);
144
+ var activePositions = import_react.default.useMemo(function() {
145
+ if (isDragging || isDraggingRef.current) return activePositionsRef.current;
146
+ var result;
147
+ if (!isKeyboardVisible || keyboardHeight <= 0) result = positions;
148
+ else result = positions.map(function(p) {
149
+ return (0, import_keyboardAvoidance.getKeyboardAdjustedSheetY)({
150
+ sheetY: p,
151
+ screenSize: effScreenSize,
152
+ isKeyboardVisible,
153
+ keyboardHeight,
154
+ shouldTranslate: true,
155
+ safeAreaTop: import_constants.isWeb ? (0, import_webViewport.getWebVisualViewportOffsetTop)() : safeAreaTopInset
156
+ });
157
+ });
158
+ activePositionsRef.current = result;
159
+ return result;
160
+ }, [
161
+ positions,
162
+ isKeyboardVisible,
163
+ keyboardHeight,
164
+ effScreenSize,
165
+ isDragging,
166
+ safeAreaTopInset
167
+ ]);
168
+ var keyboardOccludedHeight = (0, import_keyboardAvoidance.getKeyboardOccludedHeight)({
169
+ frameSize: effectiveFrameSize,
170
+ isKeyboardVisible,
171
+ keyboardHeight,
172
+ screenSize: effScreenSize,
173
+ sheetY: position >= 0 ? activePositions[position] : void 0
174
+ });
175
+ var keyboardStableFrameHeight = isWebKbSheet && isKeyboardVisible && frameSize > 0 ? frameSize : isNativeKbFitSheet && isKeyboardVisible && preKeyboardFrameSize.current > 0 ? preKeyboardFrameSize.current : 0;
176
+ var _animationDriver_View;
177
+ var AnimatedView = (_animationDriver_View = animationDriver.View) !== null && _animationDriver_View !== void 0 ? _animationDriver_View : import_core.View;
178
+ (0, import_constants.useIsomorphicLayoutEffect)(function() {
179
+ if (!(sheetInsideSheet && open)) return;
180
+ sheetInsideSheet(true);
181
+ return function() {
182
+ sheetInsideSheet(false);
183
+ };
184
+ }, [sheetInsideSheet, open]);
185
+ var nextParentContext = import_react.default.useMemo(function() {
186
+ return { zIndex };
187
+ }, [zIndex]);
188
+ var startPosition = (0, import_core.useDidFinishSSR)() && screenSize ? screenSize : hiddenSize;
189
+ var animatedNumber = (0, import_core.useAnimatedNumber)(startPosition);
190
+ var at = import_react.default.useRef(startPosition);
191
+ var hasntMeasured = at.current === hiddenSize;
192
+ var [disableAnimation, setDisableAnimation] = (0, import_react.useState)(hasntMeasured);
193
+ var skipAdaptAnimation = import_react.default.useRef(false);
194
+ if (controller === null || controller === void 0 ? void 0 : controller.skipNextAnimation) skipAdaptAnimation.current = true;
195
+ var hasScrollView = import_react.default.useRef(false);
196
+ var lastPositionIndexRef = import_react.default.useRef(-1);
197
+ var pendingTransitionRef = import_react.default.useRef(null);
198
+ var emitTransition = (0, import_core.useEvent)(function(phase, event, finished) {
199
+ var _controller_onTransition;
200
+ var e = {
201
+ phase,
202
+ cause: event.cause,
203
+ position: event.position
204
+ };
205
+ if (phase === "end") e.finished = finished;
206
+ onTransition === null || onTransition === void 0 || onTransition(e);
207
+ controller === null || controller === void 0 || (_controller_onTransition = controller.onTransition) == null || _controller_onTransition.call(controller, e);
208
+ });
209
+ var syncAnimatedPosition = (0, import_core.useEvent)(function(value) {
210
+ at.current = value;
211
+ scrollBridge.paneY = value;
212
+ var minY = activePositions[0];
213
+ var wasAtTop = scrollBridge.isAtTop;
214
+ var nowAtTop = value <= minY + 5;
215
+ if (wasAtTop === nowAtTop) return;
216
+ scrollBridge.isAtTop = nowAtTop;
217
+ if (nowAtTop) {
218
+ var _scrollBridge_setScrollEnabled;
219
+ if (scrollBridge.lockScrollAtTop) {
220
+ var _scrollBridge_setScrollEnabled1;
221
+ if (scrollBridge.y > 0) {
222
+ var _scrollBridge_forceScrollTo;
223
+ (_scrollBridge_forceScrollTo = scrollBridge.forceScrollTo) === null || _scrollBridge_forceScrollTo === void 0 || _scrollBridge_forceScrollTo.call(scrollBridge, 0);
224
+ scrollBridge.y = 0;
225
+ }
226
+ scrollBridge.scrollLockY = 0;
227
+ (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, false, 0);
228
+ return;
229
+ }
230
+ if (scrollBridge.y > 0) {
231
+ var _scrollBridge_forceScrollTo1;
232
+ (_scrollBridge_forceScrollTo1 = scrollBridge.forceScrollTo) === null || _scrollBridge_forceScrollTo1 === void 0 || _scrollBridge_forceScrollTo1.call(scrollBridge, 0);
233
+ scrollBridge.y = 0;
234
+ }
235
+ scrollBridge.scrollLockY = void 0;
236
+ (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, true);
237
+ } else {
238
+ var _scrollBridge_setScrollEnabled2;
239
+ scrollBridge.scrollLockY = 0;
240
+ (_scrollBridge_setScrollEnabled2 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled2 === void 0 || _scrollBridge_setScrollEnabled2.call(scrollBridge, false);
241
+ }
242
+ });
243
+ var setAnimatedPositionDirect = (0, import_core.useEvent)(function(value) {
244
+ syncAnimatedPosition(value);
245
+ animatedNumber.setValue(value, { type: "direct" });
246
+ });
247
+ var getAnimatedPosition = (0, import_core.useEvent)(function() {
248
+ var value = animatedNumber.getValue();
249
+ syncAnimatedPosition(value);
250
+ return value;
251
+ });
252
+ function stopSpring() {
253
+ animatedNumber.stop();
254
+ if (scrollBridge.onFinishAnimate) {
255
+ scrollBridge.onFinishAnimate();
256
+ scrollBridge.onFinishAnimate = void 0;
257
+ }
258
+ }
259
+ var animateTo = (0, import_core.useEvent)(function(position2, animationOverride) {
260
+ if (frameSize === 0) return;
261
+ var closeTarget = import_constants.isWeb ? Math.max(effScreenSize, (0, import_webViewport.getMaxViewportHeight)()) : effScreenSize;
262
+ var isDismissPosition = dismissOnSnapToBottom && position2 === activePositions.length - 1;
263
+ var isOpenAnimation = position2 !== -1 && !isHidden && !isDismissPosition;
264
+ var toValue = isOpenAnimation ? activePositions[position2] : closeTarget;
265
+ if (at.current === toValue) {
266
+ if (isDismissPosition) {
267
+ if (pendingTransitionRef.current) {
268
+ emitTransition("end", pendingTransitionRef.current, false);
269
+ pendingTransitionRef.current = null;
270
+ }
271
+ stopSpring();
272
+ var event = {
273
+ cause: "close",
274
+ position: toValue
275
+ };
276
+ lastPositionIndexRef.current = -1;
277
+ emitTransition("start", event);
278
+ syncAnimatedPosition(toValue);
279
+ setIsFullyClosed(true);
280
+ emitTransition("end", event, true);
281
+ }
282
+ return;
283
+ }
284
+ at.current = toValue;
285
+ var cause = !isOpenAnimation ? "close" : lastPositionIndexRef.current < 0 ? "open" : "snap";
286
+ lastPositionIndexRef.current = isOpenAnimation ? position2 : -1;
287
+ var event1 = {
288
+ cause,
289
+ position: toValue
290
+ };
291
+ if (pendingTransitionRef.current) {
292
+ emitTransition("end", pendingTransitionRef.current, false);
293
+ pendingTransitionRef.current = null;
294
+ }
295
+ stopSpring();
296
+ var animationCompleteCallback = function() {
297
+ if (at.current !== toValue) return;
298
+ syncAnimatedPosition(toValue);
299
+ pendingTransitionRef.current = null;
300
+ if (!isOpenAnimation && !openRef.current) setIsFullyClosed(true);
301
+ emitTransition("end", event1, true);
302
+ };
303
+ pendingTransitionRef.current = event1;
304
+ emitTransition("start", event1);
305
+ if (skipAdaptAnimation.current) {
306
+ skipAdaptAnimation.current = false;
307
+ animatedNumber.setValue(toValue, {
308
+ type: "timing",
309
+ duration: 0
310
+ }, animationCompleteCallback);
311
+ return;
312
+ }
313
+ var resolvedConfig = animationOverride || {
314
+ type: "spring",
315
+ ...transitionConfig
316
+ };
317
+ var springConfig = !resolvedConfig.type || resolvedConfig.type === "spring" ? {
318
+ restDisplacementThreshold: 1,
319
+ restSpeedThreshold: 10,
320
+ energyThreshold: 1e-5,
321
+ ...resolvedConfig
322
+ } : resolvedConfig;
323
+ animatedNumber.setValue(toValue, springConfig, animationCompleteCallback);
324
+ });
325
+ (0, import_constants.useIsomorphicLayoutEffect)(function() {
326
+ if (hasntMeasured && screenSize && frameSize) {
327
+ at.current = screenSize;
328
+ animatedNumber.setValue(screenSize, {
329
+ type: "timing",
330
+ duration: 0
331
+ }, function() {
332
+ syncAnimatedPosition(screenSize);
333
+ setTimeout(function() {
334
+ setDisableAnimation(false);
335
+ }, 10);
336
+ });
337
+ return;
338
+ }
339
+ if (disableAnimation) return;
340
+ if (isDraggingRef.current) return;
341
+ if (!frameSize || !screenSize || isHidden || hasntMeasured && !open) return;
342
+ animateTo(position);
343
+ if (position === -1) {
344
+ scrollBridge.scrollLock = false;
345
+ scrollBridge.scrollStartY = -1;
346
+ }
347
+ if (open && position >= 0) {
348
+ var isTopPosition = position === 0;
349
+ scrollBridge.isAtTop = isTopPosition;
350
+ if (isTopPosition) {
351
+ var _scrollBridge_setScrollEnabled;
352
+ scrollBridge.scrollLockY = void 0;
353
+ (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, true);
354
+ } else {
355
+ var _scrollBridge_setScrollEnabled1;
356
+ scrollBridge.scrollLockY = 0;
357
+ (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, false);
358
+ }
359
+ }
360
+ }, [
361
+ hasntMeasured,
362
+ disableAnimation,
363
+ isHidden,
364
+ frameSize,
365
+ screenSize,
366
+ open,
367
+ position
368
+ ]);
369
+ var _props_disableDrag;
370
+ var disableDrag = (_props_disableDrag = props.disableDrag) !== null && _props_disableDrag !== void 0 ? _props_disableDrag : controller === null || controller === void 0 ? void 0 : controller.disableDrag;
371
+ (0, import_core.useThemeName)();
372
+ var [blockPan, setBlockPan] = import_react.default.useState(false);
373
+ var panConfig = import_react.default.useMemo(function() {
374
+ if (disableDrag) return null;
375
+ if (!frameSize) return null;
376
+ if (isShowingInnerSheet) return null;
377
+ var minY = activePositions[0];
378
+ scrollBridge.paneMinY = minY;
379
+ var startY = at.current;
380
+ function setPanning(val) {
381
+ setIsDragging(val);
382
+ }
383
+ var release = function(param) {
384
+ var { vy } = param;
385
+ scrollBridge.setParentDragging(false);
386
+ if (scrollBridge.scrollLock) return;
387
+ isExternalDrag = false;
388
+ previouslyScrolling = false;
389
+ setPanning(false);
390
+ var currentPos = at.current;
391
+ var end = currentPos + frameSize * vy * .2;
392
+ var closestPoint = (0, import_keyboardAvoidance.getSheetReleasePosition)({
393
+ positions: activePositions,
394
+ projectedEnd: end,
395
+ currentPosition: currentPos,
396
+ frameSize,
397
+ dismissOnSnapToBottom,
398
+ snapPointsMode,
399
+ isKeyboardVisible,
400
+ isWeb: import_constants.isWeb
401
+ });
402
+ setPosition(closestPoint);
403
+ animateTo(closestPoint);
404
+ };
405
+ var finish = function(_e, state2) {
406
+ release({
407
+ vy: state2.vy,
408
+ dragAt: state2.dy
409
+ });
410
+ };
411
+ var previouslyScrolling = false;
412
+ var onMoveShouldSet = function(e, param) {
413
+ var { dy } = param;
414
+ function getShouldSet() {
415
+ if (e.target === providerProps.handleRef.current) return true;
416
+ if (scrollBridge.scrollNodeTouched) return false;
417
+ if (scrollBridge.hasScrollableContent === true) {
418
+ if (scrollBridge.scrollLock) return false;
419
+ var isScrolled = scrollBridge.y !== 0;
420
+ var isDraggingUp = dy < 0;
421
+ var isNearTop = scrollBridge.paneY - 5 <= scrollBridge.paneMinY;
422
+ if (isScrolled) return false;
423
+ if (isNearTop) {
424
+ if (hasScrollView.current && isDraggingUp) return false;
425
+ }
426
+ }
427
+ return Math.abs(dy) > 10;
428
+ }
429
+ var granted = getShouldSet();
430
+ if (granted) scrollBridge.setParentDragging(true);
431
+ return granted;
432
+ };
433
+ var grant = function() {
434
+ setPanning(true);
435
+ stopSpring();
436
+ startY = getAnimatedPosition();
437
+ };
438
+ var isExternalDrag = false;
439
+ scrollBridge.startPanDrag = function() {
440
+ isExternalDrag = true;
441
+ grant();
442
+ };
443
+ scrollBridge.drag = function(dy) {
444
+ if (!isExternalDrag) {
445
+ isExternalDrag = true;
446
+ grant();
447
+ }
448
+ var to = dy + startY;
449
+ setAnimatedPositionDirect((0, import_helpers.resisted)(to, minY));
450
+ };
451
+ scrollBridge.release = release;
452
+ scrollBridge.snapToPosition = function(positionIndex) {
453
+ isExternalDrag = false;
454
+ setPanning(false);
455
+ setPosition(positionIndex);
456
+ animateTo(positionIndex);
457
+ };
458
+ return {
459
+ onMoveShouldSetPanResponder: onMoveShouldSet,
460
+ onPanResponderTerminationRequest: function() {
461
+ return false;
462
+ },
463
+ onPanResponderGrant: grant,
464
+ onPanResponderMove: function(_e, param) {
465
+ var { dy } = param;
466
+ var toFull = dy + startY;
467
+ var to = (0, import_helpers.resisted)(toFull, minY);
468
+ if (to <= minY) scrollBridge.setParentDragging(false);
469
+ else scrollBridge.setParentDragging(true);
470
+ setAnimatedPositionDirect(to);
471
+ },
472
+ onPanResponderEnd: finish,
473
+ onPanResponderTerminate: finish,
474
+ onPanResponderRelease: finish
475
+ };
476
+ }, [
477
+ disableDrag,
478
+ isShowingInnerSheet,
479
+ animateTo,
480
+ frameSize,
481
+ activePositions,
482
+ setPosition,
483
+ dismissOnSnapToBottom,
484
+ snapPointsMode
485
+ ]);
486
+ import_react.default.useEffect(function() {
487
+ if (isDragging || isHidden || !open || disableAnimation) return;
488
+ if (!frameSize || !screenSize) return;
489
+ animateTo(position, {
490
+ type: "timing",
491
+ duration: 250
492
+ });
493
+ }, [isKeyboardVisible, keyboardHeight]);
494
+ var wasDragging = import_react.default.useRef(false);
495
+ import_react.default.useEffect(function() {
496
+ if (isDragging) {
497
+ wasDragging.current = true;
498
+ return;
499
+ }
500
+ if (!wasDragging.current) return;
501
+ wasDragging.current = false;
502
+ if (!frameSize || !screenSize || isHidden || !open) return;
503
+ animateTo(position);
504
+ }, [isDragging]);
505
+ import_react.default.useEffect(function() {
506
+ if (!open && isKeyboardVisible) {
507
+ dismissKeyboard();
508
+ pauseKeyboardHandler.current = false;
509
+ flushPendingHide();
510
+ }
511
+ }, [open]);
512
+ import_react.default.useEffect(function() {
513
+ if (!import_constants.isWeb || !modal || !open || shouldHideParentSheet) return;
514
+ var layer = {};
515
+ sheetEscapeLayers.push(layer);
516
+ var onKeyDown = function(event) {
517
+ if (event.key === "Escape") {
518
+ if (sheetEscapeLayers[sheetEscapeLayers.length - 1] === layer) state.setOpen(false);
519
+ }
520
+ };
521
+ document.addEventListener("keydown", onKeyDown);
522
+ return function() {
523
+ var index = sheetEscapeLayers.indexOf(layer);
524
+ if (index > -1) sheetEscapeLayers.splice(index, 1);
525
+ document.removeEventListener("keydown", onKeyDown);
526
+ };
527
+ }, [
528
+ modal,
529
+ open,
530
+ shouldHideParentSheet,
531
+ state.setOpen
532
+ ]);
533
+ var { panGesture, panGestureRef, gestureHandlerEnabled } = (0, import_useGestureHandlerPan.useGestureHandlerPan)({
534
+ positions: activePositions,
535
+ frameSize,
536
+ setPosition,
537
+ animateTo,
538
+ stopSpring,
539
+ scrollBridge,
540
+ setIsDragging,
541
+ getCurrentPosition: getAnimatedPosition,
542
+ resisted: import_helpers.resisted,
543
+ disableDrag,
544
+ isShowingInnerSheet,
545
+ setAnimatedPosition: setAnimatedPositionDirect,
546
+ dismissOnSnapToBottom,
547
+ snapPointsMode,
548
+ isKeyboardVisible,
549
+ pauseKeyboardHandler
550
+ });
551
+ var ignoreLayoutForKeyboard = (0, import_core.useEvent)(function() {
552
+ return import_constants.isWeb && moveOnKeyboardChange && (0, import_webViewport.getWebKeyboardResizeHeight)() >= import_webViewport.MIN_KEYBOARD_HEIGHT;
553
+ });
554
+ var handleAnimationViewLayout = (0, import_core.useEvent)(function(e) {
555
+ var _e_nativeEvent;
556
+ if (!open && stableFrameSize.current !== 0) return;
557
+ var layoutHeight = (_e_nativeEvent = e.nativeEvent) === null || _e_nativeEvent === void 0 ? void 0 : _e_nativeEvent.layout.height;
558
+ if (ignoreLayoutForKeyboard() && frameSize > 0) return;
559
+ var next = modal ? Math.min(layoutHeight, (0, import_stableViewportHeight.getStableViewportHeight)()) : layoutHeight;
560
+ if (!next) return;
561
+ setFrameSize(Math.round(next));
562
+ });
563
+ var handleMaxContentViewLayout = import_react.default.useCallback(function(e) {
564
+ var _e_nativeEvent;
565
+ if (ignoreLayoutForKeyboard() && screenSize > 0) return;
566
+ var next = Math.min((_e_nativeEvent = e.nativeEvent) === null || _e_nativeEvent === void 0 ? void 0 : _e_nativeEvent.layout.height, (0, import_stableViewportHeight.getStableViewportHeight)());
567
+ if (!next) return;
568
+ setMaxContentSize(Math.round(next));
569
+ }, [ignoreLayoutForKeyboard, screenSize]);
570
+ var getAnimatedNumberStyle = import_react.default.useCallback(function(val) {
571
+ "worklet";
572
+ return { transform: [{ translateY: frameSize === 0 ? hiddenSize : val }] };
573
+ }, [frameSize]);
574
+ var animatedStyle = (0, import_core.useAnimatedNumberStyle)(animatedNumber, getAnimatedNumberStyle);
575
+ var [isFullyClosed, setIsFullyClosed] = import_react.default.useState(false);
576
+ if (open && isFullyClosed) setIsFullyClosed(false);
577
+ var hasEverOpened = import_react.default.useRef(open);
578
+ if (open) hasEverOpened.current = true;
579
+ var isVisuallyActive = open || hasEverOpened.current && !isFullyClosed;
580
+ var applyHidden = shouldHideParentSheet || isFullyClosed && !disableHideWhenClosed;
581
+ var forcedContentHeight = hasFit ? void 0 : snapPointsMode === "percent" ? `${maxSnapPoint}${import_constants.isWeb ? modal ? "dvh" : "%" : "%"}` : maxSnapPoint;
582
+ var setHasScrollView = import_react.default.useCallback(function(val) {
583
+ hasScrollView.current = val;
584
+ }, []);
585
+ var animatedPositionValue = import_react.default.useMemo(function() {
586
+ var _activePositions_;
587
+ return {
588
+ value: animatedNumber,
589
+ screenSize: effScreenSize,
590
+ frameSize,
591
+ snapOffsets: activePositions,
592
+ minY: (_activePositions_ = activePositions[0]) !== null && _activePositions_ !== void 0 ? _activePositions_ : 0
593
+ };
594
+ }, [
595
+ animatedNumber,
596
+ effScreenSize,
597
+ frameSize,
598
+ activePositions
599
+ ]);
600
+ var { overlayChildren, animatedChildren } = import_react.default.useMemo(function() {
601
+ return partitionSheetChildren(props.children);
602
+ }, [props.children]);
603
+ var contents = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.LayoutMeasurementController, {
604
+ disable: !open,
605
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_contexts.ParentSheetContext.Provider, {
606
+ value: nextParentContext,
607
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_SheetContext.SheetProvider, {
608
+ ...providerProps,
609
+ keyboardOccludedHeight,
610
+ isKeyboardVisible,
611
+ keyboardStableFrameHeight,
612
+ setHasScrollView,
613
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_GestureSheetContext.GestureSheetProvider, {
614
+ isDragging,
615
+ blockPan,
616
+ setBlockPan,
617
+ panGesture,
618
+ panGestureRef,
619
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_SheetContext.SheetAnimatedPositionContext.Provider, {
620
+ value: animatedPositionValue,
621
+ children: [
622
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_SheetContext.SheetOverlayLayerContext.Provider, {
623
+ value: true,
624
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_animate_presence.AnimatePresence, {
625
+ custom: { open },
626
+ children: shouldHideParentSheet || !open ? null : overlayChildren
627
+ })
628
+ }),
629
+ snapPointsMode !== "percent" && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_core.View, {
630
+ opacity: 0,
631
+ position: "absolute",
632
+ inset: 0,
633
+ pointerEvents: "none",
634
+ onLayout: handleMaxContentViewLayout
635
+ }),
636
+ /* @__PURE__ */ (0, import_jsx_runtime.jsx)(AnimatedView, {
637
+ ref,
638
+ onLayout: handleAnimationViewLayout,
639
+ transition: isDragging || disableAnimation ? null : transition,
640
+ disableClassName: true,
641
+ style: [{
642
+ position: "absolute",
643
+ zIndex,
644
+ width: "100%",
645
+ height: forcedContentHeight,
646
+ minHeight: forcedContentHeight,
647
+ ...applyHidden && { display: "none" },
648
+ ...(shouldHideParentSheet || !open) && { pointerEvents: "none" }
649
+ }, animatedStyle],
650
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_SheetDragSurface.SheetDragSurface, {
651
+ gestureHandlerEnabled,
652
+ panGesture,
653
+ panConfig,
654
+ children: animatedChildren
655
+ })
656
+ })
657
+ ]
658
+ })
659
+ })
660
+ })
661
+ })
662
+ });
663
+ if ((0, import_portal.needsPortalRepropagation)()) {
664
+ var adaptContext = (0, import_adapt.useAdaptContext)();
665
+ contents = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_adapt.ProvideAdaptContext, {
666
+ ...adaptContext,
667
+ children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_useSafeAreaInsets.SafeAreaInsetsContext.Provider, {
668
+ value: safeAreaInsets,
669
+ children: contents
670
+ })
671
+ });
672
+ }
673
+ var shouldMountChildren = unmountChildrenWhenHidden ? !isFullyClosed : true;
674
+ if (modal) {
675
+ var RNGHRoot = (0, import_gestureState.getGestureHandlerState)().RootView;
676
+ var mountedContents = shouldMountChildren ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ContainerComponent, { children: contents }) : null;
677
+ var modalContents = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_portal.Portal, {
678
+ stackZIndex: zIndex,
679
+ hidden: !isVisuallyActive,
680
+ ...portalProps,
681
+ children: mountedContents && RNGHRoot ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RNGHRoot, {
682
+ style: open ? rnghRootStyleOpen : rnghRootStyleClosed,
683
+ children: mountedContents
684
+ }) : mountedContents
685
+ });
686
+ if (import_constants.isWeb) return modalContents;
687
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_contexts.SheetInsideSheetContext.Provider, {
688
+ value: onInnerSheet,
689
+ children: modalContents
690
+ });
691
+ }
692
+ return contents;
693
+ });
694
+ function isSheetOverlayComponent(type) {
695
+ var staticConfig = type === null || type === void 0 ? void 0 : type.staticConfig;
696
+ while (staticConfig) {
697
+ if (staticConfig[import_constants2.SHEET_OVERLAY_MARKER]) return true;
698
+ staticConfig = staticConfig.parentStaticConfig;
699
+ }
700
+ return false;
701
+ }
702
+ function partitionSheetChildren(children) {
703
+ var overlayChildren = [];
704
+ var animatedChildren = [];
705
+ import_react.default.Children.forEach(children, function(child) {
706
+ if (!/* @__PURE__ */ import_react.default.isValidElement(child)) {
707
+ animatedChildren.push(child);
708
+ return;
709
+ }
710
+ if (isSheetOverlayComponent(child.type)) {
711
+ overlayChildren.push(child);
712
+ return;
713
+ }
714
+ animatedChildren.push(child);
715
+ });
716
+ return {
717
+ overlayChildren,
718
+ animatedChildren
719
+ };
720
+ }
721
+ function getYPositions(mode, point, screenSize, frameSize) {
722
+ if (!screenSize || !frameSize) return 0;
723
+ if (mode === "mixed") {
724
+ if (typeof point === "number") return screenSize - Math.min(screenSize, Math.max(0, point));
725
+ if (point === "fit") return screenSize - Math.min(screenSize, frameSize);
726
+ if (point.endsWith("%")) {
727
+ var pct = Math.min(100, Math.max(0, Number(point.slice(0, -1)))) / 100;
728
+ if (Number.isNaN(pct)) {
729
+ console.warn((0, import_core.formatDiagnostic)("TAMAGUI_SHEET_SNAP_POINT", "Sheet", "snapPoints contains an invalid percentage string", "Use \"fit\", a pixel number, or a percentage such as \"50%\"", "snapPoint", point));
730
+ return 0;
731
+ }
732
+ return Math.round(screenSize - pct * screenSize);
733
+ }
734
+ console.warn((0, import_core.formatDiagnostic)("TAMAGUI_SHEET_SNAP_POINT", "Sheet", "snapPoints contains an unsupported mixed-mode value", "Use \"fit\", a pixel number, or a percentage such as \"50%\"", "snapPoint", point));
735
+ return 0;
736
+ }
737
+ if (mode === "fit") {
738
+ if (point === 0) return screenSize;
739
+ return screenSize - Math.min(screenSize, frameSize);
740
+ }
741
+ if (mode === "constant" && typeof point === "number") return screenSize - Math.min(screenSize, Math.max(0, point));
742
+ var pct1 = Math.min(100, Math.max(0, Number(point))) / 100;
743
+ if (Number.isNaN(pct1)) {
744
+ console.warn((0, import_core.formatDiagnostic)("TAMAGUI_SHEET_SNAP_POINT", "Sheet", "snapPoints contains a value that cannot be converted to a percentage", "Use a numeric percentage such as 50", "snapPoint", point));
745
+ return 0;
746
+ }
747
+ return Math.round(screenSize - pct1 * screenSize);
748
+ }