@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
@@ -7,49 +7,45 @@ var __getOwnPropNames = Object.getOwnPropertyNames;
7
7
  var __getProtoOf = Object.getPrototypeOf;
8
8
  var __hasOwnProp = Object.prototype.hasOwnProperty;
9
9
  var __export = (target, all) => {
10
- for (var name in all) __defProp(target, name, {
11
- get: all[name],
12
- enumerable: true
13
- });
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
14
  };
15
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;
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
23
  };
24
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
- // If the importer is in node compatibility mode or this is not an ESM
26
- // file that has been converted to a CommonJS file using a Babel-
27
- // compatible transform (i.e. "__esModule" has not been set), then set
28
- // "default" to the CommonJS "module.exports" for node compatibility.
29
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
30
- value: mod,
31
- enumerable: true
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
32
27
  }) : target, mod));
33
- var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
- value: true
35
- }), mod);
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
36
29
  var SheetImplementationCustom_exports = {};
37
30
  __export(SheetImplementationCustom_exports, {
38
- SheetImplementationCustom: () => SheetImplementationCustom
31
+ SheetImplementationCustom: () => SheetImplementationCustom,
32
+ isSheetOverlayComponent: () => isSheetOverlayComponent
39
33
  });
40
34
  module.exports = __toCommonJS(SheetImplementationCustom_exports);
41
35
  var import_jsx_runtime = require("react/jsx-runtime");
42
36
  var import_adapt = require("@tamagui/adapt");
43
37
  var import_animate_presence = require("@tamagui/animate-presence");
38
+ var import_transitionResolver = require("@tamagui/animation-helpers/transitionResolver");
44
39
  var import_compose_refs = require("@tamagui/compose-refs");
45
40
  var import_constants = require("@tamagui/constants");
46
41
  var import_core = require("@tamagui/core");
47
42
  var import_portal = require("@tamagui/portal");
48
43
  var import_react = __toESM(require("react"), 1);
49
- var import_react_native = require("react-native");
50
44
  var import_contexts = require("./contexts.native.js");
51
- var import_GestureDetectorWrapper = require("./GestureDetectorWrapper.native.js");
45
+ var import_constants2 = require("./constants.native.js");
52
46
  var import_gestureState = require("./gestureState.native.js");
47
+ var import_SheetDragSurface = require("./SheetDragSurface.native.js");
48
+ var import_stableViewportHeight = require("./stableViewportHeight.native.js");
53
49
  var import_GestureSheetContext = require("./GestureSheetContext.native.js");
54
50
  var import_helpers = require("./helpers.native.js");
55
51
  var import_keyboardAvoidance = require("./keyboardAvoidance.native.js");
@@ -62,634 +58,693 @@ var import_useSheetOpenState = require("./useSheetOpenState.native.js");
62
58
  var import_useSheetProviderProps = require("./useSheetProviderProps.native.js");
63
59
  var hiddenSize = 10000.1;
64
60
  var rnghRootStyleOpen = {
65
- width: "100%",
66
- height: "100%"
61
+ width: "100%",
62
+ height: "100%"
67
63
  };
68
64
  var rnghRootStyleClosed = {
69
- width: "100%",
70
- height: 0
65
+ width: "100%",
66
+ height: 0
71
67
  };
72
- var relativeDimensionTo = import_constants.isWeb ? "window" : "screen";
73
- function getStableViewportHeight() {
74
- if (import_constants.isWeb && typeof window !== "undefined") return (0, import_webViewport.getStableLayoutViewportHeight)();
75
- return import_react_native.Dimensions.get(relativeDimensionTo).height;
76
- }
77
- var SheetImplementationCustom = /* @__PURE__ */import_react.default.forwardRef(function SheetImplementationCustom2(props, forwardedRef) {
78
- var parentSheet = import_react.default.useContext(import_contexts.ParentSheetContext);
79
- var safeAreaInsets = (0, import_useSafeAreaInsets.useSafeAreaInsets)();
80
- var _safeAreaInsets_top;
81
- var safeAreaTopInset = (_safeAreaInsets_top = safeAreaInsets === null || safeAreaInsets === void 0 ? void 0 : safeAreaInsets.top) !== null && _safeAreaInsets_top !== void 0 ? _safeAreaInsets_top : 0;
82
- var {
83
- transition,
84
- transitionConfig: transitionConfigProp,
85
- modal = false,
86
- zIndex = parentSheet.zIndex + 1,
87
- moveOnKeyboardChange = false,
88
- unmountChildrenWhenHidden = false,
89
- disableTransparencyHide = false,
90
- portalProps,
91
- containerComponent: ContainerComponent = import_react.default.Fragment,
92
- onAnimationComplete
93
- } = props;
94
- var state = (0, import_useSheetOpenState.useSheetOpenState)(props);
95
- var [overlayComponent, setOverlayComponent] = import_react.default.useState(null);
96
- var providerProps = (0, import_useSheetProviderProps.useSheetProviderProps)(props, state, {
97
- onOverlayComponent: setOverlayComponent
98
- });
99
- var {
100
- frameSize,
101
- setFrameSize,
102
- dismissOnSnapToBottom,
103
- snapPoints,
104
- snapPointsMode,
105
- hasFit,
106
- position,
107
- setPosition,
108
- scrollBridge,
109
- screenSize,
110
- setMaxContentSize,
111
- maxSnapPoint
112
- } = providerProps;
113
- var {
114
- open,
115
- controller,
116
- isHidden
117
- } = state;
118
- var openRef = import_react.default.useRef(open);
119
- openRef.current = open;
120
- var sheetRef = import_react.default.useRef(void 0);
121
- var ref = (0, import_compose_refs.useComposedRefs)(forwardedRef, sheetRef, providerProps.contentRef);
122
- var {
123
- animationDriver
124
- } = (0, import_core.useConfiguration)();
125
- if (!animationDriver) throw new Error(`Sheet requires an animation driver to be set`);
126
- var transitionConfig = function () {
127
- var _animationDriver_animations;
128
- if (transitionConfigProp) return transitionConfigProp;
129
- var [animationProp, animationPropConfig] = !transition ? [] : Array.isArray(transition) ? transition : [transition];
130
- if (animationProp && ((_animationDriver_animations = animationDriver.animations) === null || _animationDriver_animations === void 0 ? void 0 : _animationDriver_animations[animationProp])) return {
131
- ...animationDriver.animations[animationProp],
132
- ...animationPropConfig
133
- };
134
- return null;
135
- }();
136
- var [isShowingInnerSheet, setIsShowingInnerSheet] = import_react.default.useState(false);
137
- var shouldHideParentSheet = !import_constants.isWeb && modal && isShowingInnerSheet && (0, import_portal.needsPortalRepropagation)();
138
- var sheetInsideSheet = import_react.default.useContext(import_contexts.SheetInsideSheetContext);
139
- var onInnerSheet = import_react.default.useCallback(function (hasChild) {
140
- setIsShowingInnerSheet(hasChild);
141
- }, []);
142
- var {
143
- keyboardHeight,
144
- isKeyboardVisible,
145
- dismissKeyboard,
146
- pauseKeyboardHandler,
147
- flushPendingHide
148
- } = (0, import_useKeyboardControllerSheet.useKeyboardControllerSheet)({
149
- enabled: Boolean(moveOnKeyboardChange)
150
- });
151
- var stableFrameSize = import_react.default.useRef(frameSize);
152
- import_react.default.useEffect(function () {
153
- if (open && frameSize) stableFrameSize.current = frameSize;
154
- }, [open, frameSize]);
155
- var isWebKbSheet = import_constants.isWeb && hasFit && moveOnKeyboardChange;
156
- var isNativeKbFitSheet = !import_constants.isWeb && hasFit && Boolean(moveOnKeyboardChange);
157
- var preKeyboardFrameSize = import_react.default.useRef(0);
158
- import_react.default.useEffect(function () {
159
- if (isNativeKbFitSheet && open && !isKeyboardVisible && frameSize > 0) preKeyboardFrameSize.current = frameSize;
160
- }, [isNativeKbFitSheet, open, isKeyboardVisible, frameSize]);
161
- var effScreenSize = isWebKbSheet ? getStableViewportHeight() : screenSize;
162
- var effectiveFrameSize = open ? frameSize : stableFrameSize.current || frameSize;
163
- var positions = import_react.default.useMemo(function () {
164
- return snapPoints.map(function (point) {
165
- return getYPositions(snapPointsMode, point, effScreenSize, effectiveFrameSize);
166
- });
167
- }, [effScreenSize, effectiveFrameSize, snapPoints, snapPointsMode]);
168
- var [isDragging, setIsDragging_] = import_react.default.useState(false);
169
- var isDraggingRef = import_react.default.useRef(false);
170
- var setIsDragging = import_react.default.useCallback(function (val) {
171
- isDraggingRef.current = val;
172
- pauseKeyboardHandler.current = val;
173
- setIsDragging_(val);
174
- if (!val) flushPendingHide();
175
- }, [pauseKeyboardHandler, flushPendingHide]);
176
- var activePositionsRef = import_react.default.useRef(positions);
177
- var activePositions = import_react.default.useMemo(function () {
178
- if (isDragging || isDraggingRef.current) return activePositionsRef.current;
179
- var result;
180
- if (!isKeyboardVisible || keyboardHeight <= 0) result = positions;else result = positions.map(function (p) {
181
- return (0, import_keyboardAvoidance.getKeyboardAdjustedSheetY)({
182
- sheetY: p,
183
- screenSize: effScreenSize,
184
- isKeyboardVisible,
185
- keyboardHeight,
186
- shouldTranslate: true,
187
- safeAreaTop: import_constants.isWeb ? (0, import_webViewport.getWebVisualViewportOffsetTop)() : safeAreaTopInset
188
- });
189
- });
190
- activePositionsRef.current = result;
191
- return result;
192
- }, [positions, isKeyboardVisible, keyboardHeight, effScreenSize, isDragging, safeAreaTopInset]);
193
- var keyboardOccludedHeight = (0, import_keyboardAvoidance.getKeyboardOccludedHeight)({
194
- frameSize: effectiveFrameSize,
195
- isKeyboardVisible,
196
- keyboardHeight,
197
- screenSize: effScreenSize,
198
- sheetY: position >= 0 ? activePositions[position] : void 0
199
- });
200
- var keyboardStableFrameHeight = isWebKbSheet && isKeyboardVisible && frameSize > 0 ? frameSize : isNativeKbFitSheet && isKeyboardVisible && preKeyboardFrameSize.current > 0 ? preKeyboardFrameSize.current : 0;
201
- var {
202
- useAnimatedNumber,
203
- useAnimatedNumberStyle
204
- } = animationDriver;
205
- var _animationDriver_View;
206
- var AnimatedView = (_animationDriver_View = animationDriver.View) !== null && _animationDriver_View !== void 0 ? _animationDriver_View : import_core.View;
207
- (0, import_constants.useIsomorphicLayoutEffect)(function () {
208
- if (!(sheetInsideSheet && open)) return;
209
- sheetInsideSheet(true);
210
- return function () {
211
- sheetInsideSheet(false);
212
- };
213
- }, [sheetInsideSheet, open]);
214
- var nextParentContext = import_react.default.useMemo(function () {
215
- return {
216
- zIndex
217
- };
218
- }, [zIndex]);
219
- var startPosition = (0, import_core.useDidFinishSSR)() && screenSize ? screenSize : hiddenSize;
220
- var animatedNumber = useAnimatedNumber(startPosition);
221
- var at = import_react.default.useRef(startPosition);
222
- var hasntMeasured = at.current === hiddenSize;
223
- var [disableAnimation, setDisableAnimation] = (0, import_react.useState)(hasntMeasured);
224
- var skipAdaptAnimation = import_react.default.useRef(false);
225
- if (controller === null || controller === void 0 ? void 0 : controller.skipNextAnimation) skipAdaptAnimation.current = true;
226
- var hasScrollView = import_react.default.useRef(false);
227
- var opacityFallbackTimer = import_react.default.useRef(null);
228
- var syncAnimatedPosition = (0, import_core.useEvent)(function (value) {
229
- at.current = value;
230
- scrollBridge.paneY = value;
231
- var minY = activePositions[0];
232
- var wasAtTop = scrollBridge.isAtTop;
233
- var nowAtTop = value <= minY + 5;
234
- if (wasAtTop === nowAtTop) return;
235
- scrollBridge.isAtTop = nowAtTop;
236
- if (nowAtTop) {
237
- var _scrollBridge_setScrollEnabled;
238
- if (scrollBridge.lockScrollAtTop) {
239
- var _scrollBridge_setScrollEnabled1;
240
- if (scrollBridge.y > 0) {
241
- var _scrollBridge_forceScrollTo;
242
- (_scrollBridge_forceScrollTo = scrollBridge.forceScrollTo) === null || _scrollBridge_forceScrollTo === void 0 || _scrollBridge_forceScrollTo.call(scrollBridge, 0);
243
- scrollBridge.y = 0;
244
- }
245
- scrollBridge.scrollLockY = 0;
246
- (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, false, 0);
247
- return;
248
- }
249
- if (scrollBridge.y > 0) {
250
- var _scrollBridge_forceScrollTo1;
251
- (_scrollBridge_forceScrollTo1 = scrollBridge.forceScrollTo) === null || _scrollBridge_forceScrollTo1 === void 0 || _scrollBridge_forceScrollTo1.call(scrollBridge, 0);
252
- scrollBridge.y = 0;
253
- }
254
- scrollBridge.scrollLockY = void 0;
255
- (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, true);
256
- } else {
257
- var _scrollBridge_setScrollEnabled2;
258
- scrollBridge.scrollLockY = 0;
259
- (_scrollBridge_setScrollEnabled2 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled2 === void 0 || _scrollBridge_setScrollEnabled2.call(scrollBridge, false);
260
- }
261
- });
262
- var setAnimatedPositionDirect = (0, import_core.useEvent)(function (value) {
263
- syncAnimatedPosition(value);
264
- animatedNumber.setValue(value, {
265
- type: "direct"
266
- });
267
- });
268
- var getAnimatedPosition = (0, import_core.useEvent)(function () {
269
- var value = animatedNumber.getValue();
270
- syncAnimatedPosition(value);
271
- return value;
272
- });
273
- function stopSpring() {
274
- animatedNumber.stop();
275
- if (scrollBridge.onFinishAnimate) {
276
- scrollBridge.onFinishAnimate();
277
- scrollBridge.onFinishAnimate = void 0;
278
- }
279
- }
280
- var animateTo = (0, import_core.useEvent)(function (position2, animationOverride) {
281
- if (frameSize === 0) return;
282
- var closeTarget = import_constants.isWeb ? Math.max(effScreenSize, (0, import_webViewport.getMaxViewportHeight)()) : effScreenSize;
283
- var toValue = isHidden || position2 === -1 ? closeTarget : activePositions[position2];
284
- if (at.current === toValue) return;
285
- at.current = toValue;
286
- stopSpring();
287
- var isOpenAnimation = position2 !== -1 && !isHidden;
288
- if (opacityFallbackTimer.current) {
289
- clearTimeout(opacityFallbackTimer.current);
290
- opacityFallbackTimer.current = null;
291
- }
292
- var animationCompleteCallback = function () {
293
- var _controller_onAnimationComplete;
294
- if (at.current !== toValue) return;
295
- syncAnimatedPosition(toValue);
296
- if (opacityFallbackTimer.current) {
297
- clearTimeout(opacityFallbackTimer.current);
298
- opacityFallbackTimer.current = null;
299
- }
300
- if (!isOpenAnimation && !openRef.current) setOpacity(0);
301
- onAnimationComplete === null || onAnimationComplete === void 0 || onAnimationComplete({
302
- open: isOpenAnimation
303
- });
304
- controller === null || controller === void 0 || (_controller_onAnimationComplete = controller.onAnimationComplete) == null || _controller_onAnimationComplete.call(controller, {
305
- open: isOpenAnimation
306
- });
307
- };
308
- if (!isOpenAnimation) opacityFallbackTimer.current = setTimeout(function () {
309
- opacityFallbackTimer.current = null;
310
- if (!openRef.current) setOpacity(0);
311
- }, 1e3);
312
- if (skipAdaptAnimation.current) {
313
- skipAdaptAnimation.current = false;
314
- animatedNumber.setValue(toValue, {
315
- type: "timing",
316
- duration: 0
317
- }, animationCompleteCallback);
318
- return;
319
- }
320
- animatedNumber.setValue(toValue, animationOverride || {
321
- type: "spring",
322
- ...transitionConfig
323
- }, 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
- // NOTE: effScreenSize/effectiveFrameSize are intentionally NOT deps. With the
362
- // spacer approach the frame's position target is frozen across keyboard
363
- // open/close (same stable baseline), so it must NOT re-animate — keyboard
364
- // avoidance is the bottom spacer + scroll, not a frame move.
365
- [hasntMeasured, disableAnimation, isHidden, frameSize, screenSize, open, position]);
366
- var _props_disableDrag;
367
- var disableDrag = (_props_disableDrag = props.disableDrag) !== null && _props_disableDrag !== void 0 ? _props_disableDrag : controller === null || controller === void 0 ? void 0 : controller.disableDrag;
368
- (0, import_core.useThemeName)();
369
- var [blockPan, setBlockPan] = import_react.default.useState(false);
370
- var panResponder = import_react.default.useMemo(function () {
371
- if (disableDrag) return;
372
- if (!frameSize) return;
373
- if (isShowingInnerSheet) return;
374
- var minY = activePositions[0];
375
- scrollBridge.paneMinY = minY;
376
- var startY = at.current;
377
- function setPanning(val) {
378
- setIsDragging(val);
379
- }
380
- var release = function (param) {
381
- var {
382
- vy
383
- } = param;
384
- scrollBridge.setParentDragging(false);
385
- if (scrollBridge.scrollLock) return;
386
- isExternalDrag = false;
387
- previouslyScrolling = false;
388
- setPanning(false);
389
- var currentPos = at.current;
390
- var end = currentPos + frameSize * vy * .2;
391
- var closestPoint = (0, import_keyboardAvoidance.getSheetReleasePosition)({
392
- positions: activePositions,
393
- projectedEnd: end,
394
- currentPosition: currentPos,
395
- frameSize,
396
- dismissOnSnapToBottom,
397
- snapPointsMode,
398
- isKeyboardVisible,
399
- isWeb: import_constants.isWeb
400
- });
401
- setPosition(closestPoint);
402
- animateTo(closestPoint);
403
- };
404
- var finish = function (_e, state2) {
405
- release({
406
- vy: state2.vy,
407
- dragAt: state2.dy
408
- });
409
- };
410
- var previouslyScrolling = false;
411
- var onMoveShouldSet = function (e, param) {
412
- var {
413
- dy
414
- } = param;
415
- function getShouldSet() {
416
- if (e.target === providerProps.handleRef.current) return true;
417
- if (scrollBridge.scrollNodeTouched) return false;
418
- if (scrollBridge.hasScrollableContent === true) {
419
- if (scrollBridge.scrollLock) return false;
420
- var isScrolled = scrollBridge.y !== 0;
421
- var isDraggingUp = dy < 0;
422
- var isNearTop = scrollBridge.paneY - 5 <= scrollBridge.paneMinY;
423
- if (isScrolled) return false;
424
- if (isNearTop) {
425
- if (hasScrollView.current && isDraggingUp) return false;
426
- }
427
- }
428
- return Math.abs(dy) > 10;
429
- }
430
- var granted = getShouldSet();
431
- if (granted) scrollBridge.setParentDragging(true);
432
- return granted;
433
- };
434
- var grant = function () {
435
- setPanning(true);
436
- stopSpring();
437
- startY = getAnimatedPosition();
438
- };
439
- var isExternalDrag = false;
440
- scrollBridge.startPanDrag = function () {
441
- isExternalDrag = true;
442
- grant();
443
- };
444
- scrollBridge.drag = function (dy) {
445
- if (!isExternalDrag) {
446
- isExternalDrag = true;
447
- grant();
448
- }
449
- var to = dy + startY;
450
- setAnimatedPositionDirect((0, import_helpers.resisted)(to, minY));
451
- };
452
- scrollBridge.release = release;
453
- scrollBridge.snapToPosition = function (positionIndex) {
454
- isExternalDrag = false;
455
- setPanning(false);
456
- setPosition(positionIndex);
457
- animateTo(positionIndex);
458
- };
459
- return import_react_native.PanResponder.create({
460
- onMoveShouldSetPanResponder: onMoveShouldSet,
461
- onPanResponderTerminationRequest: function () {
462
- return false;
463
- },
464
- onPanResponderGrant: grant,
465
- onPanResponderMove: function (_e, param) {
466
- var {
467
- dy
468
- } = param;
469
- var toFull = dy + startY;
470
- var to = (0, import_helpers.resisted)(toFull, minY);
471
- if (to <= minY) scrollBridge.setParentDragging(false);else scrollBridge.setParentDragging(true);
472
- setAnimatedPositionDirect(to);
473
- },
474
- onPanResponderEnd: finish,
475
- onPanResponderTerminate: finish,
476
- onPanResponderRelease: finish
477
- });
478
- }, [disableDrag, isShowingInnerSheet, animateTo, frameSize, activePositions, setPosition, dismissOnSnapToBottom, snapPointsMode]);
479
- import_react.default.useEffect(function () {
480
- if (isDragging || isHidden || !open || disableAnimation) return;
481
- if (!frameSize || !screenSize) return;
482
- animateTo(position, {
483
- type: "timing",
484
- duration: 250
485
- });
486
- }, [isKeyboardVisible, keyboardHeight]);
487
- var wasDragging = import_react.default.useRef(false);
488
- import_react.default.useEffect(function () {
489
- if (isDragging) {
490
- wasDragging.current = true;
491
- return;
492
- }
493
- if (!wasDragging.current) return;
494
- wasDragging.current = false;
495
- if (!frameSize || !screenSize || isHidden || !open) return;
496
- animateTo(position);
497
- }, [isDragging]);
498
- import_react.default.useEffect(function () {
499
- if (!open && isKeyboardVisible) {
500
- dismissKeyboard();
501
- pauseKeyboardHandler.current = false;
502
- flushPendingHide();
503
- }
504
- }, [open]);
505
- var {
506
- panGesture,
507
- panGestureRef,
508
- gestureHandlerEnabled
509
- } = (0, import_useGestureHandlerPan.useGestureHandlerPan)({
510
- positions: activePositions,
511
- frameSize,
512
- setPosition,
513
- animateTo,
514
- stopSpring,
515
- scrollBridge,
516
- setIsDragging,
517
- getCurrentPosition: getAnimatedPosition,
518
- resisted: import_helpers.resisted,
519
- disableDrag,
520
- isShowingInnerSheet,
521
- setAnimatedPosition: setAnimatedPositionDirect,
522
- dismissOnSnapToBottom,
523
- snapPointsMode,
524
- isKeyboardVisible,
525
- pauseKeyboardHandler
526
- });
527
- var ignoreLayoutForKeyboard = (0, import_core.useEvent)(function () {
528
- return import_constants.isWeb && moveOnKeyboardChange && (0, import_webViewport.getWebKeyboardResizeHeight)() >= import_webViewport.MIN_KEYBOARD_HEIGHT;
529
- });
530
- var handleAnimationViewLayout = (0, import_core.useEvent)(function (e) {
531
- var _e_nativeEvent;
532
- if (!open && stableFrameSize.current !== 0) return;
533
- var layoutHeight = (_e_nativeEvent = e.nativeEvent) === null || _e_nativeEvent === void 0 ? void 0 : _e_nativeEvent.layout.height;
534
- if (ignoreLayoutForKeyboard() && frameSize > 0) return;
535
- var next = modal ? Math.min(layoutHeight, getStableViewportHeight()) : layoutHeight;
536
- if (!next) return;
537
- setFrameSize(Math.round(next));
538
- });
539
- var handleMaxContentViewLayout = import_react.default.useCallback(function (e) {
540
- var _e_nativeEvent;
541
- if (ignoreLayoutForKeyboard() && screenSize > 0) return;
542
- var next = Math.min((_e_nativeEvent = e.nativeEvent) === null || _e_nativeEvent === void 0 ? void 0 : _e_nativeEvent.layout.height, getStableViewportHeight());
543
- if (!next) return;
544
- setMaxContentSize(Math.round(next));
545
- }, [ignoreLayoutForKeyboard, screenSize]);
546
- var animatedStyle = useAnimatedNumberStyle(animatedNumber, import_react.default.useCallback(function (val) {
547
- "worklet";
548
-
549
- return {
550
- transform: [{
551
- translateY: frameSize === 0 ? hiddenSize : val
552
- }]
553
- };
554
- }, [frameSize]));
555
- var [opacity, setOpacity] = import_react.default.useState(open ? 1 : 0);
556
- if (open && opacity === 0) {
557
- setOpacity(1);
558
- if (opacityFallbackTimer.current) {
559
- clearTimeout(opacityFallbackTimer.current);
560
- opacityFallbackTimer.current = null;
561
- }
562
- }
563
- var forcedContentHeight = hasFit ? void 0 : snapPointsMode === "percent" ? `${maxSnapPoint}${import_constants.isWeb ? modal ? "dvh" : "%" : "%"}` : maxSnapPoint;
564
- var setHasScrollView = import_react.default.useCallback(function (val) {
565
- hasScrollView.current = val;
566
- }, []);
567
- var contents = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_core.LayoutMeasurementController, {
568
- disable: !open,
569
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_contexts.ParentSheetContext.Provider, {
570
- value: nextParentContext,
571
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_SheetContext.SheetProvider, {
572
- ...providerProps,
573
- keyboardOccludedHeight,
574
- isKeyboardVisible,
575
- keyboardStableFrameHeight,
576
- setHasScrollView,
577
- children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_GestureSheetContext.GestureSheetProvider, {
578
- isDragging,
579
- blockPan,
580
- setBlockPan,
581
- panGesture,
582
- panGestureRef,
583
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_animate_presence.AnimatePresence, {
584
- custom: {
585
- open
586
- },
587
- children: shouldHideParentSheet || !open ? null : overlayComponent
588
- }), snapPointsMode !== "percent" && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_native.View, {
589
- style: {
590
- opacity: 0,
591
- position: "absolute",
592
- top: 0,
593
- left: 0,
594
- right: 0,
595
- bottom: 0,
596
- pointerEvents: "none"
597
- },
598
- onLayout: handleMaxContentViewLayout
599
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(AnimatedView, {
600
- ref,
601
- onLayout: handleAnimationViewLayout,
602
- transition: isDragging || disableAnimation ? null : transition,
603
- disableClassName: true,
604
- style: [{
605
- position: "absolute",
606
- zIndex,
607
- width: "100%",
608
- height: forcedContentHeight,
609
- minHeight: forcedContentHeight,
610
- opacity: shouldHideParentSheet ? 0 : disableTransparencyHide ? 1 : opacity,
611
- ...((shouldHideParentSheet || !open) && {
612
- pointerEvents: "none"
613
- })
614
- }, animatedStyle],
615
- children: gestureHandlerEnabled && panGesture ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_GestureDetectorWrapper.GestureDetectorWrapper, {
616
- gesture: panGesture,
617
- style: {
618
- flex: 1
619
- },
620
- children: props.children
621
- }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_native.View, {
622
- ...(panResponder === null || panResponder === void 0 ? void 0 : panResponder.panHandlers),
623
- style: {
624
- flex: 1,
625
- width: "100%",
626
- height: "100%"
627
- },
628
- children: props.children
629
- })
630
- })]
631
- })
632
- })
633
- })
634
- });
635
- if ((0, import_portal.needsPortalRepropagation)()) {
636
- var adaptContext = (0, import_adapt.useAdaptContext)();
637
- contents = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_adapt.ProvideAdaptContext, {
638
- ...adaptContext,
639
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_useSafeAreaInsets.SafeAreaInsetsContext.Provider, {
640
- value: safeAreaInsets,
641
- children: contents
642
- })
643
- });
644
- }
645
- var shouldMountChildren = unmountChildrenWhenHidden ? !!opacity : true;
646
- if (modal) {
647
- var RNGHRoot = (0, import_gestureState.getGestureHandlerState)().RootView;
648
- var mountedContents = shouldMountChildren ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(ContainerComponent, {
649
- children: contents
650
- }) : null;
651
- var modalContents = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_portal.Portal, {
652
- stackZIndex: zIndex,
653
- ...portalProps,
654
- children: mountedContents && RNGHRoot ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(RNGHRoot, {
655
- style: open ? rnghRootStyleOpen : rnghRootStyleClosed,
656
- children: mountedContents
657
- }) : mountedContents
658
- });
659
- if (import_constants.isWeb) return modalContents;
660
- return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_contexts.SheetInsideSheetContext.Provider, {
661
- value: onInnerSheet,
662
- children: modalContents
663
- });
664
- }
665
- return contents;
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;
666
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
+ }
667
721
  function getYPositions(mode, point, screenSize, frameSize) {
668
- if (!screenSize || !frameSize) return 0;
669
- if (mode === "mixed") {
670
- if (typeof point === "number") return screenSize - Math.min(screenSize, Math.max(0, point));
671
- if (point === "fit") return screenSize - Math.min(screenSize, frameSize);
672
- if (point.endsWith("%")) {
673
- var pct = Math.min(100, Math.max(0, Number(point.slice(0, -1)))) / 100;
674
- if (Number.isNaN(pct)) {
675
- console.warn("Invalid snapPoint percentage string");
676
- return 0;
677
- }
678
- return Math.round(screenSize - pct * screenSize);
679
- }
680
- console.warn("Invalid snapPoint unknown value");
681
- return 0;
682
- }
683
- if (mode === "fit") {
684
- if (point === 0) return screenSize;
685
- return screenSize - Math.min(screenSize, frameSize);
686
- }
687
- if (mode === "constant" && typeof point === "number") return screenSize - Math.min(screenSize, Math.max(0, point));
688
- var pct1 = Math.min(100, Math.max(0, Number(point))) / 100;
689
- if (Number.isNaN(pct1)) {
690
- console.warn("Invalid snapPoint percentage");
691
- return 0;
692
- }
693
- return Math.round(screenSize - pct1 * screenSize);
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);
694
748
  }
749
+
695
750
  //# sourceMappingURL=SheetImplementationCustom.native.js.map