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