@tamagui/sheet 2.0.0-rc.9 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (469) hide show
  1. package/.turbo/turbo-build.log +2 -0
  2. package/controller/index.cjs +2 -1
  3. package/controller/index.js +2 -0
  4. package/controller/index.native.cjs +2 -0
  5. package/controller/index.native.js +2 -0
  6. package/dist/cjs/GestureDetectorWrapper.cjs +27 -21
  7. package/dist/cjs/GestureDetectorWrapper.native.js +33 -28
  8. package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -1
  9. package/dist/cjs/GestureSheetContext.cjs +14 -12
  10. package/dist/cjs/GestureSheetContext.native.js +29 -27
  11. package/dist/cjs/GestureSheetContext.native.js.map +1 -1
  12. package/dist/cjs/Sheet.cjs +88 -86
  13. package/dist/cjs/Sheet.native.js +88 -86
  14. package/dist/cjs/Sheet.native.js.map +1 -1
  15. package/dist/cjs/SheetContext.cjs +16 -14
  16. package/dist/cjs/SheetContext.native.js +16 -14
  17. package/dist/cjs/SheetContext.native.js.map +1 -1
  18. package/dist/cjs/SheetController.cjs +40 -32
  19. package/dist/cjs/SheetController.native.js +62 -54
  20. package/dist/cjs/SheetController.native.js.map +1 -1
  21. package/dist/cjs/SheetImplementationCustom.cjs +617 -429
  22. package/dist/cjs/SheetImplementationCustom.native.js +647 -474
  23. package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
  24. package/dist/cjs/SheetScrollView.cjs +198 -135
  25. package/dist/cjs/SheetScrollView.native.js +216 -163
  26. package/dist/cjs/SheetScrollView.native.js.map +1 -1
  27. package/dist/cjs/constants.cjs +16 -14
  28. package/dist/cjs/constants.native.js +16 -14
  29. package/dist/cjs/constants.native.js.map +1 -1
  30. package/dist/cjs/contexts.cjs +27 -25
  31. package/dist/cjs/contexts.native.js +29 -27
  32. package/dist/cjs/contexts.native.js.map +1 -1
  33. package/dist/cjs/controller.cjs +14 -12
  34. package/dist/cjs/controller.native.js +14 -12
  35. package/dist/cjs/controller.native.js.map +1 -1
  36. package/dist/cjs/createSheet.cjs +159 -160
  37. package/dist/cjs/createSheet.native.js +172 -180
  38. package/dist/cjs/createSheet.native.js.map +1 -1
  39. package/dist/cjs/gestureState.cjs +12 -10
  40. package/dist/cjs/gestureState.native.js +12 -10
  41. package/dist/cjs/gestureState.native.js.map +1 -1
  42. package/dist/cjs/helpers.cjs +17 -13
  43. package/dist/cjs/helpers.native.js +17 -13
  44. package/dist/cjs/helpers.native.js.map +1 -1
  45. package/dist/cjs/index.cjs +7 -5
  46. package/dist/cjs/index.native.js +7 -5
  47. package/dist/cjs/index.native.js.map +1 -1
  48. package/dist/cjs/keyboardAvoidance.cjs +42 -0
  49. package/dist/cjs/keyboardAvoidance.native.js +46 -0
  50. package/dist/cjs/keyboardAvoidance.native.js.map +1 -0
  51. package/dist/cjs/nativeSheet.cjs +68 -55
  52. package/dist/cjs/nativeSheet.native.js +77 -68
  53. package/dist/cjs/nativeSheet.native.js.map +1 -1
  54. package/dist/cjs/setupGestureHandler.cjs +24 -18
  55. package/dist/cjs/setupGestureHandler.native.js +24 -19
  56. package/dist/cjs/setupGestureHandler.native.js.map +1 -1
  57. package/dist/cjs/types.cjs +7 -5
  58. package/dist/cjs/types.native.js +7 -5
  59. package/dist/cjs/types.native.js.map +1 -1
  60. package/dist/cjs/useGestureHandlerPan.cjs +181 -111
  61. package/dist/cjs/useGestureHandlerPan.native.js +183 -115
  62. package/dist/cjs/useGestureHandlerPan.native.js.map +1 -1
  63. package/dist/cjs/useKeyboardControllerSheet.cjs +76 -18
  64. package/dist/cjs/useKeyboardControllerSheet.native.js +100 -82
  65. package/dist/cjs/useKeyboardControllerSheet.native.js.map +1 -1
  66. package/dist/cjs/useSheet.cjs +12 -10
  67. package/dist/cjs/useSheet.native.js +16 -14
  68. package/dist/cjs/useSheet.native.js.map +1 -1
  69. package/dist/cjs/useSheetController.cjs +35 -33
  70. package/dist/cjs/useSheetController.native.js +37 -35
  71. package/dist/cjs/useSheetController.native.js.map +1 -1
  72. package/dist/cjs/useSheetOffscreenSize.cjs +35 -23
  73. package/dist/cjs/useSheetOffscreenSize.native.js +36 -27
  74. package/dist/cjs/useSheetOffscreenSize.native.js.map +1 -1
  75. package/dist/cjs/useSheetOpenState.cjs +28 -25
  76. package/dist/cjs/useSheetOpenState.native.js +39 -37
  77. package/dist/cjs/useSheetOpenState.native.js.map +1 -1
  78. package/dist/cjs/useSheetProviderProps.cjs +129 -81
  79. package/dist/cjs/useSheetProviderProps.native.js +165 -122
  80. package/dist/cjs/useSheetProviderProps.native.js.map +1 -1
  81. package/dist/cjs/useSheetScrollViewGestures.cjs +129 -81
  82. package/dist/cjs/useSheetScrollViewGestures.native.js +128 -79
  83. package/dist/cjs/useSheetScrollViewGestures.native.js.map +1 -1
  84. package/dist/cjs/webViewport.cjs +50 -0
  85. package/dist/cjs/webViewport.native.js +54 -0
  86. package/dist/cjs/webViewport.native.js.map +1 -0
  87. package/dist/esm/GestureDetectorWrapper.mjs +12 -8
  88. package/dist/esm/GestureDetectorWrapper.mjs.map +1 -1
  89. package/dist/esm/GestureDetectorWrapper.native.js +18 -15
  90. package/dist/esm/GestureDetectorWrapper.native.js.map +1 -1
  91. package/dist/esm/GestureSheetContext.native.js +14 -14
  92. package/dist/esm/GestureSheetContext.native.js.map +1 -1
  93. package/dist/esm/Sheet.mjs +70 -70
  94. package/dist/esm/Sheet.mjs.map +1 -1
  95. package/dist/esm/Sheet.native.js +70 -70
  96. package/dist/esm/Sheet.native.js.map +1 -1
  97. package/dist/esm/SheetContext.mjs +2 -2
  98. package/dist/esm/SheetContext.mjs.map +1 -1
  99. package/dist/esm/SheetContext.native.js +2 -2
  100. package/dist/esm/SheetContext.native.js.map +1 -1
  101. package/dist/esm/SheetController.mjs +12 -6
  102. package/dist/esm/SheetController.mjs.map +1 -1
  103. package/dist/esm/SheetController.native.js +18 -12
  104. package/dist/esm/SheetController.native.js.map +1 -1
  105. package/dist/esm/SheetImplementationCustom.mjs +575 -389
  106. package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
  107. package/dist/esm/SheetImplementationCustom.native.js +601 -434
  108. package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
  109. package/dist/esm/SheetScrollView.mjs +165 -104
  110. package/dist/esm/SheetScrollView.mjs.map +1 -1
  111. package/dist/esm/SheetScrollView.native.js +184 -133
  112. package/dist/esm/SheetScrollView.native.js.map +1 -1
  113. package/dist/esm/constants.mjs +4 -4
  114. package/dist/esm/constants.mjs.map +1 -1
  115. package/dist/esm/constants.native.js +4 -4
  116. package/dist/esm/constants.native.js.map +1 -1
  117. package/dist/esm/contexts.mjs +3 -3
  118. package/dist/esm/contexts.mjs.map +1 -1
  119. package/dist/esm/contexts.native.js +3 -3
  120. package/dist/esm/contexts.native.js.map +1 -1
  121. package/dist/esm/createSheet.mjs +130 -133
  122. package/dist/esm/createSheet.mjs.map +1 -1
  123. package/dist/esm/createSheet.native.js +142 -152
  124. package/dist/esm/createSheet.native.js.map +1 -1
  125. package/dist/esm/helpers.mjs +5 -3
  126. package/dist/esm/helpers.mjs.map +1 -1
  127. package/dist/esm/helpers.native.js +5 -3
  128. package/dist/esm/helpers.native.js.map +1 -1
  129. package/dist/esm/index.js +11 -11
  130. package/dist/esm/index.js.map +1 -6
  131. package/dist/esm/keyboardAvoidance.mjs +17 -0
  132. package/dist/esm/keyboardAvoidance.mjs.map +1 -0
  133. package/dist/esm/keyboardAvoidance.native.js +18 -0
  134. package/dist/esm/keyboardAvoidance.native.js.map +1 -0
  135. package/dist/esm/nativeSheet.mjs +49 -38
  136. package/dist/esm/nativeSheet.mjs.map +1 -1
  137. package/dist/esm/nativeSheet.native.js +55 -48
  138. package/dist/esm/nativeSheet.native.js.map +1 -1
  139. package/dist/esm/setupGestureHandler.mjs +12 -8
  140. package/dist/esm/setupGestureHandler.mjs.map +1 -1
  141. package/dist/esm/setupGestureHandler.native.js +12 -9
  142. package/dist/esm/setupGestureHandler.native.js.map +1 -1
  143. package/dist/esm/useGestureHandlerPan.mjs +167 -99
  144. package/dist/esm/useGestureHandlerPan.mjs.map +1 -1
  145. package/dist/esm/useGestureHandlerPan.native.js +168 -102
  146. package/dist/esm/useGestureHandlerPan.native.js.map +1 -1
  147. package/dist/esm/useKeyboardControllerSheet.mjs +65 -9
  148. package/dist/esm/useKeyboardControllerSheet.mjs.map +1 -1
  149. package/dist/esm/useKeyboardControllerSheet.native.js +85 -69
  150. package/dist/esm/useKeyboardControllerSheet.native.js.map +1 -1
  151. package/dist/esm/useSheetController.mjs +11 -11
  152. package/dist/esm/useSheetController.mjs.map +1 -1
  153. package/dist/esm/useSheetController.native.js +11 -11
  154. package/dist/esm/useSheetController.native.js.map +1 -1
  155. package/dist/esm/useSheetOffscreenSize.mjs +23 -13
  156. package/dist/esm/useSheetOffscreenSize.mjs.map +1 -1
  157. package/dist/esm/useSheetOffscreenSize.native.js +24 -17
  158. package/dist/esm/useSheetOffscreenSize.native.js.map +1 -1
  159. package/dist/esm/useSheetOpenState.mjs +14 -13
  160. package/dist/esm/useSheetOpenState.mjs.map +1 -1
  161. package/dist/esm/useSheetOpenState.native.js +17 -17
  162. package/dist/esm/useSheetOpenState.native.js.map +1 -1
  163. package/dist/esm/useSheetProviderProps.mjs +101 -55
  164. package/dist/esm/useSheetProviderProps.mjs.map +1 -1
  165. package/dist/esm/useSheetProviderProps.native.js +137 -96
  166. package/dist/esm/useSheetProviderProps.native.js.map +1 -1
  167. package/dist/esm/useSheetScrollViewGestures.mjs +117 -71
  168. package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -1
  169. package/dist/esm/useSheetScrollViewGestures.native.js +116 -69
  170. package/dist/esm/useSheetScrollViewGestures.native.js.map +1 -1
  171. package/dist/esm/webViewport.mjs +22 -0
  172. package/dist/esm/webViewport.mjs.map +1 -0
  173. package/dist/esm/webViewport.native.js +23 -0
  174. package/dist/esm/webViewport.native.js.map +1 -0
  175. package/dist/jsx/GestureDetectorWrapper.mjs +12 -8
  176. package/dist/jsx/GestureDetectorWrapper.mjs.map +1 -1
  177. package/dist/jsx/GestureDetectorWrapper.native.js +33 -28
  178. package/dist/jsx/GestureDetectorWrapper.native.js.map +1 -1
  179. package/dist/jsx/GestureSheetContext.native.js +29 -27
  180. package/dist/jsx/GestureSheetContext.native.js.map +1 -1
  181. package/dist/jsx/Sheet.mjs +70 -70
  182. package/dist/jsx/Sheet.mjs.map +1 -1
  183. package/dist/jsx/Sheet.native.js +88 -86
  184. package/dist/jsx/Sheet.native.js.map +1 -1
  185. package/dist/jsx/SheetContext.mjs +2 -2
  186. package/dist/jsx/SheetContext.mjs.map +1 -1
  187. package/dist/jsx/SheetContext.native.js +16 -14
  188. package/dist/jsx/SheetContext.native.js.map +1 -1
  189. package/dist/jsx/SheetController.mjs +12 -6
  190. package/dist/jsx/SheetController.mjs.map +1 -1
  191. package/dist/jsx/SheetController.native.js +62 -54
  192. package/dist/jsx/SheetController.native.js.map +1 -1
  193. package/dist/jsx/SheetImplementationCustom.mjs +575 -389
  194. package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
  195. package/dist/jsx/SheetImplementationCustom.native.js +647 -474
  196. package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
  197. package/dist/jsx/SheetScrollView.mjs +165 -104
  198. package/dist/jsx/SheetScrollView.mjs.map +1 -1
  199. package/dist/jsx/SheetScrollView.native.js +216 -163
  200. package/dist/jsx/SheetScrollView.native.js.map +1 -1
  201. package/dist/jsx/constants.mjs +4 -4
  202. package/dist/jsx/constants.mjs.map +1 -1
  203. package/dist/jsx/constants.native.js +16 -14
  204. package/dist/jsx/constants.native.js.map +1 -1
  205. package/dist/jsx/contexts.mjs +3 -3
  206. package/dist/jsx/contexts.mjs.map +1 -1
  207. package/dist/jsx/contexts.native.js +29 -27
  208. package/dist/jsx/contexts.native.js.map +1 -1
  209. package/dist/jsx/controller.native.js +14 -12
  210. package/dist/jsx/createSheet.mjs +130 -133
  211. package/dist/jsx/createSheet.mjs.map +1 -1
  212. package/dist/jsx/createSheet.native.js +172 -180
  213. package/dist/jsx/createSheet.native.js.map +1 -1
  214. package/dist/jsx/gestureState.native.js +12 -10
  215. package/dist/jsx/gestureState.native.js.map +1 -1
  216. package/dist/jsx/helpers.mjs +5 -3
  217. package/dist/jsx/helpers.mjs.map +1 -1
  218. package/dist/jsx/helpers.native.js +17 -13
  219. package/dist/jsx/helpers.native.js.map +1 -1
  220. package/dist/jsx/index.js +11 -11
  221. package/dist/jsx/index.js.map +1 -6
  222. package/dist/jsx/index.native.js +7 -5
  223. package/dist/jsx/index.native.js.map +1 -1
  224. package/dist/jsx/keyboardAvoidance.mjs +17 -0
  225. package/dist/jsx/keyboardAvoidance.mjs.map +1 -0
  226. package/dist/jsx/keyboardAvoidance.native.js +46 -0
  227. package/dist/jsx/keyboardAvoidance.native.js.map +1 -0
  228. package/dist/jsx/nativeSheet.mjs +49 -38
  229. package/dist/jsx/nativeSheet.mjs.map +1 -1
  230. package/dist/jsx/nativeSheet.native.js +77 -68
  231. package/dist/jsx/nativeSheet.native.js.map +1 -1
  232. package/dist/jsx/setupGestureHandler.mjs +12 -8
  233. package/dist/jsx/setupGestureHandler.mjs.map +1 -1
  234. package/dist/jsx/setupGestureHandler.native.js +24 -19
  235. package/dist/jsx/setupGestureHandler.native.js.map +1 -1
  236. package/dist/jsx/types.native.js +7 -5
  237. package/dist/jsx/useGestureHandlerPan.mjs +167 -99
  238. package/dist/jsx/useGestureHandlerPan.mjs.map +1 -1
  239. package/dist/jsx/useGestureHandlerPan.native.js +183 -115
  240. package/dist/jsx/useGestureHandlerPan.native.js.map +1 -1
  241. package/dist/jsx/useKeyboardControllerSheet.mjs +65 -9
  242. package/dist/jsx/useKeyboardControllerSheet.mjs.map +1 -1
  243. package/dist/jsx/useKeyboardControllerSheet.native.js +100 -82
  244. package/dist/jsx/useKeyboardControllerSheet.native.js.map +1 -1
  245. package/dist/jsx/useSheet.native.js +16 -14
  246. package/dist/jsx/useSheetController.mjs +11 -11
  247. package/dist/jsx/useSheetController.mjs.map +1 -1
  248. package/dist/jsx/useSheetController.native.js +37 -35
  249. package/dist/jsx/useSheetController.native.js.map +1 -1
  250. package/dist/jsx/useSheetOffscreenSize.mjs +23 -13
  251. package/dist/jsx/useSheetOffscreenSize.mjs.map +1 -1
  252. package/dist/jsx/useSheetOffscreenSize.native.js +36 -27
  253. package/dist/jsx/useSheetOffscreenSize.native.js.map +1 -1
  254. package/dist/jsx/useSheetOpenState.mjs +14 -13
  255. package/dist/jsx/useSheetOpenState.mjs.map +1 -1
  256. package/dist/jsx/useSheetOpenState.native.js +39 -37
  257. package/dist/jsx/useSheetOpenState.native.js.map +1 -1
  258. package/dist/jsx/useSheetProviderProps.mjs +101 -55
  259. package/dist/jsx/useSheetProviderProps.mjs.map +1 -1
  260. package/dist/jsx/useSheetProviderProps.native.js +165 -122
  261. package/dist/jsx/useSheetProviderProps.native.js.map +1 -1
  262. package/dist/jsx/useSheetScrollViewGestures.mjs +117 -71
  263. package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -1
  264. package/dist/jsx/useSheetScrollViewGestures.native.js +128 -79
  265. package/dist/jsx/useSheetScrollViewGestures.native.js.map +1 -1
  266. package/dist/jsx/webViewport.mjs +22 -0
  267. package/dist/jsx/webViewport.mjs.map +1 -0
  268. package/dist/jsx/webViewport.native.js +54 -0
  269. package/dist/jsx/webViewport.native.js.map +1 -0
  270. package/next.md +78 -0
  271. package/package.json +29 -39
  272. package/setup-gesture-handler/index.cjs +2 -0
  273. package/setup-gesture-handler/index.js +2 -0
  274. package/setup-gesture-handler/index.native.cjs +2 -0
  275. package/setup-gesture-handler/index.native.js +2 -0
  276. package/src/GestureDetectorWrapper.tsx +0 -3
  277. package/src/SheetController.tsx +4 -1
  278. package/src/SheetImplementationCustom.tsx +414 -84
  279. package/src/SheetScrollView.tsx +74 -9
  280. package/src/keyboardAvoidance.ts +30 -0
  281. package/src/nativeSheet.tsx +9 -1
  282. package/src/types.tsx +16 -1
  283. package/src/useGestureHandlerPan.tsx +5 -15
  284. package/src/useKeyboardControllerSheet.ts +106 -10
  285. package/src/useSheetController.tsx +4 -0
  286. package/src/useSheetProviderProps.tsx +17 -0
  287. package/src/useSheetScrollViewGestures.ts +23 -2
  288. package/src/webViewport.ts +52 -0
  289. package/test/keyboardAvoidance.test.ts +53 -0
  290. package/tsconfig.json +57 -0
  291. package/types/GestureDetectorWrapper.d.ts.map +1 -1
  292. package/types/Sheet.d.ts +3 -0
  293. package/types/Sheet.d.ts.map +1 -1
  294. package/types/SheetContext.d.ts +4 -0
  295. package/types/SheetContext.d.ts.map +1 -1
  296. package/types/SheetController.d.ts +1 -1
  297. package/types/SheetController.d.ts.map +1 -1
  298. package/types/SheetImplementationCustom.d.ts +3 -0
  299. package/types/SheetImplementationCustom.d.ts.map +1 -1
  300. package/types/SheetScrollView.d.ts.map +1 -1
  301. package/types/createSheet.d.ts +3 -0
  302. package/types/createSheet.d.ts.map +1 -1
  303. package/types/keyboardAvoidance.d.ts +8 -0
  304. package/types/keyboardAvoidance.d.ts.map +1 -0
  305. package/types/nativeSheet.d.ts.map +1 -1
  306. package/types/types.d.ts +10 -1
  307. package/types/types.d.ts.map +1 -1
  308. package/types/useGestureHandlerPan.d.ts.map +1 -1
  309. package/types/useKeyboardControllerSheet.d.ts +14 -3
  310. package/types/useKeyboardControllerSheet.d.ts.map +1 -1
  311. package/types/useSheetController.d.ts +3 -0
  312. package/types/useSheetController.d.ts.map +1 -1
  313. package/types/useSheetProviderProps.d.ts +4 -0
  314. package/types/useSheetProviderProps.d.ts.map +1 -1
  315. package/types/useSheetScrollViewGestures.d.ts.map +1 -1
  316. package/types/webViewport.d.ts +30 -0
  317. package/types/webViewport.d.ts.map +1 -0
  318. package/dist/cjs/GestureDetectorWrapper.js +0 -29
  319. package/dist/cjs/GestureDetectorWrapper.js.map +0 -6
  320. package/dist/cjs/GestureSheetContext.js +0 -43
  321. package/dist/cjs/GestureSheetContext.js.map +0 -6
  322. package/dist/cjs/Sheet.js +0 -104
  323. package/dist/cjs/Sheet.js.map +0 -6
  324. package/dist/cjs/SheetContext.js +0 -28
  325. package/dist/cjs/SheetContext.js.map +0 -6
  326. package/dist/cjs/SheetController.js +0 -52
  327. package/dist/cjs/SheetController.js.map +0 -6
  328. package/dist/cjs/SheetImplementationCustom.js +0 -393
  329. package/dist/cjs/SheetImplementationCustom.js.map +0 -6
  330. package/dist/cjs/SheetScrollView.js +0 -137
  331. package/dist/cjs/SheetScrollView.js.map +0 -6
  332. package/dist/cjs/constants.js +0 -24
  333. package/dist/cjs/constants.js.map +0 -6
  334. package/dist/cjs/contexts.js +0 -33
  335. package/dist/cjs/contexts.js.map +0 -6
  336. package/dist/cjs/controller.js +0 -23
  337. package/dist/cjs/controller.js.map +0 -6
  338. package/dist/cjs/createSheet.js +0 -152
  339. package/dist/cjs/createSheet.js.map +0 -6
  340. package/dist/cjs/gestureState.js +0 -34
  341. package/dist/cjs/gestureState.js.map +0 -6
  342. package/dist/cjs/helpers.js +0 -26
  343. package/dist/cjs/helpers.js.map +0 -6
  344. package/dist/cjs/index.js +0 -25
  345. package/dist/cjs/index.js.map +0 -6
  346. package/dist/cjs/nativeSheet.js +0 -56
  347. package/dist/cjs/nativeSheet.js.map +0 -6
  348. package/dist/cjs/setupGestureHandler.js +0 -38
  349. package/dist/cjs/setupGestureHandler.js.map +0 -6
  350. package/dist/cjs/types.js +0 -14
  351. package/dist/cjs/types.js.map +0 -6
  352. package/dist/cjs/useGestureHandlerPan.js +0 -126
  353. package/dist/cjs/useGestureHandlerPan.js.map +0 -6
  354. package/dist/cjs/useKeyboardControllerSheet.js +0 -34
  355. package/dist/cjs/useKeyboardControllerSheet.js.map +0 -6
  356. package/dist/cjs/useSheet.js +0 -22
  357. package/dist/cjs/useSheet.js.map +0 -6
  358. package/dist/cjs/useSheetController.js +0 -39
  359. package/dist/cjs/useSheetController.js.map +0 -6
  360. package/dist/cjs/useSheetOffscreenSize.js +0 -43
  361. package/dist/cjs/useSheetOffscreenSize.js.map +0 -6
  362. package/dist/cjs/useSheetOpenState.js +0 -37
  363. package/dist/cjs/useSheetOpenState.js.map +0 -6
  364. package/dist/cjs/useSheetProviderProps.js +0 -130
  365. package/dist/cjs/useSheetProviderProps.js.map +0 -6
  366. package/dist/cjs/useSheetScrollViewGestures.js +0 -102
  367. package/dist/cjs/useSheetScrollViewGestures.js.map +0 -6
  368. package/dist/esm/GestureDetectorWrapper.js +0 -15
  369. package/dist/esm/GestureDetectorWrapper.js.map +0 -6
  370. package/dist/esm/GestureSheetContext.js +0 -28
  371. package/dist/esm/GestureSheetContext.js.map +0 -6
  372. package/dist/esm/Sheet.js +0 -92
  373. package/dist/esm/Sheet.js.map +0 -6
  374. package/dist/esm/SheetContext.js +0 -13
  375. package/dist/esm/SheetContext.js.map +0 -6
  376. package/dist/esm/SheetController.js +0 -31
  377. package/dist/esm/SheetController.js.map +0 -6
  378. package/dist/esm/SheetImplementationCustom.js +0 -395
  379. package/dist/esm/SheetImplementationCustom.js.map +0 -6
  380. package/dist/esm/SheetScrollView.js +0 -122
  381. package/dist/esm/SheetScrollView.js.map +0 -6
  382. package/dist/esm/constants.js +0 -8
  383. package/dist/esm/constants.js.map +0 -6
  384. package/dist/esm/contexts.js +0 -9
  385. package/dist/esm/contexts.js.map +0 -6
  386. package/dist/esm/controller.js +0 -11
  387. package/dist/esm/controller.js.map +0 -6
  388. package/dist/esm/createSheet.js +0 -153
  389. package/dist/esm/createSheet.js.map +0 -6
  390. package/dist/esm/gestureState.js +0 -18
  391. package/dist/esm/gestureState.js.map +0 -6
  392. package/dist/esm/helpers.js +0 -10
  393. package/dist/esm/helpers.js.map +0 -6
  394. package/dist/esm/nativeSheet.js +0 -46
  395. package/dist/esm/nativeSheet.js.map +0 -6
  396. package/dist/esm/setupGestureHandler.js +0 -22
  397. package/dist/esm/setupGestureHandler.js.map +0 -6
  398. package/dist/esm/types.js +0 -1
  399. package/dist/esm/types.js.map +0 -6
  400. package/dist/esm/useGestureHandlerPan.js +0 -111
  401. package/dist/esm/useGestureHandlerPan.js.map +0 -6
  402. package/dist/esm/useKeyboardControllerSheet.js +0 -18
  403. package/dist/esm/useKeyboardControllerSheet.js.map +0 -6
  404. package/dist/esm/useSheet.js +0 -6
  405. package/dist/esm/useSheet.js.map +0 -6
  406. package/dist/esm/useSheetController.js +0 -15
  407. package/dist/esm/useSheetController.js.map +0 -6
  408. package/dist/esm/useSheetOffscreenSize.js +0 -27
  409. package/dist/esm/useSheetOffscreenSize.js.map +0 -6
  410. package/dist/esm/useSheetOpenState.js +0 -22
  411. package/dist/esm/useSheetOpenState.js.map +0 -6
  412. package/dist/esm/useSheetProviderProps.js +0 -109
  413. package/dist/esm/useSheetProviderProps.js.map +0 -6
  414. package/dist/esm/useSheetScrollViewGestures.js +0 -86
  415. package/dist/esm/useSheetScrollViewGestures.js.map +0 -6
  416. package/dist/jsx/GestureDetectorWrapper.js +0 -15
  417. package/dist/jsx/GestureDetectorWrapper.js.map +0 -6
  418. package/dist/jsx/GestureSheetContext.js +0 -28
  419. package/dist/jsx/GestureSheetContext.js.map +0 -6
  420. package/dist/jsx/Sheet.js +0 -92
  421. package/dist/jsx/Sheet.js.map +0 -6
  422. package/dist/jsx/SheetContext.js +0 -13
  423. package/dist/jsx/SheetContext.js.map +0 -6
  424. package/dist/jsx/SheetController.js +0 -31
  425. package/dist/jsx/SheetController.js.map +0 -6
  426. package/dist/jsx/SheetImplementationCustom.js +0 -395
  427. package/dist/jsx/SheetImplementationCustom.js.map +0 -6
  428. package/dist/jsx/SheetScrollView.js +0 -122
  429. package/dist/jsx/SheetScrollView.js.map +0 -6
  430. package/dist/jsx/constants.js +0 -8
  431. package/dist/jsx/constants.js.map +0 -6
  432. package/dist/jsx/contexts.js +0 -9
  433. package/dist/jsx/contexts.js.map +0 -6
  434. package/dist/jsx/controller.js +0 -11
  435. package/dist/jsx/controller.js.map +0 -6
  436. package/dist/jsx/createSheet.js +0 -153
  437. package/dist/jsx/createSheet.js.map +0 -6
  438. package/dist/jsx/gestureState.js +0 -18
  439. package/dist/jsx/gestureState.js.map +0 -6
  440. package/dist/jsx/helpers.js +0 -10
  441. package/dist/jsx/helpers.js.map +0 -6
  442. package/dist/jsx/nativeSheet.js +0 -46
  443. package/dist/jsx/nativeSheet.js.map +0 -6
  444. package/dist/jsx/setupGestureHandler.js +0 -22
  445. package/dist/jsx/setupGestureHandler.js.map +0 -6
  446. package/dist/jsx/types.js +0 -1
  447. package/dist/jsx/types.js.map +0 -6
  448. package/dist/jsx/useGestureHandlerPan.js +0 -111
  449. package/dist/jsx/useGestureHandlerPan.js.map +0 -6
  450. package/dist/jsx/useKeyboardControllerSheet.js +0 -18
  451. package/dist/jsx/useKeyboardControllerSheet.js.map +0 -6
  452. package/dist/jsx/useSheet.js +0 -6
  453. package/dist/jsx/useSheet.js.map +0 -6
  454. package/dist/jsx/useSheetController.js +0 -15
  455. package/dist/jsx/useSheetController.js.map +0 -6
  456. package/dist/jsx/useSheetOffscreenSize.js +0 -27
  457. package/dist/jsx/useSheetOffscreenSize.js.map +0 -6
  458. package/dist/jsx/useSheetOpenState.js +0 -22
  459. package/dist/jsx/useSheetOpenState.js.map +0 -6
  460. package/dist/jsx/useSheetProviderProps.js +0 -109
  461. package/dist/jsx/useSheetProviderProps.js.map +0 -6
  462. package/dist/jsx/useSheetScrollViewGestures.js +0 -86
  463. package/dist/jsx/useSheetScrollViewGestures.js.map +0 -6
  464. package/types/GestureDetectorWrapper.native.d.ts +0 -14
  465. package/types/gestureState.native.d.ts +0 -12
  466. package/types/setupGestureHandler.native.d.ts +0 -41
  467. package/types/useGestureHandlerPan.native.d.ts +0 -33
  468. package/types/useSheetScrollViewGestures.web.d.ts +0 -15
  469. package/types/useSheetScrollViewGestures.web.d.ts.map +0 -1
@@ -4,517 +4,690 @@ var __create = Object.create;
4
4
  var __defProp = Object.defineProperty;
5
5
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
6
  var __getOwnPropNames = Object.getOwnPropertyNames;
7
- var __getProtoOf = Object.getPrototypeOf,
8
- __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __getProtoOf = Object.getPrototypeOf;
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: !0
13
- });
14
- },
15
- __copyProps = (to, from, except, desc) => {
16
- if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
10
+ for (var name in all) __defProp(target, name, {
11
+ get: all[name],
12
+ enumerable: true
13
+ });
14
+ };
15
+ var __copyProps = (to, from, except, desc) => {
16
+ if (from && typeof from === "object" || typeof from === "function") {
17
+ for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
17
18
  get: () => from[key],
18
19
  enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
20
  });
20
- return to;
21
- };
21
+ }
22
+ return to;
23
+ };
22
24
  var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
- // If the importer is in node compatibility mode or this is not an ESM
24
- // file that has been converted to a CommonJS file using a Babel-
25
- // compatible transform (i.e. "__esModule" has not been set), then set
26
- // "default" to the CommonJS "module.exports" for node compatibility.
27
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
28
- value: mod,
29
- enumerable: !0
30
- }) : target, mod)),
31
- __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
32
- value: !0
33
- }), mod);
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
32
+ }) : target, mod));
33
+ var __toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
34
+ value: true
35
+ }), mod);
34
36
  var SheetImplementationCustom_exports = {};
35
37
  __export(SheetImplementationCustom_exports, {
36
38
  SheetImplementationCustom: () => SheetImplementationCustom
37
39
  });
38
40
  module.exports = __toCommonJS(SheetImplementationCustom_exports);
39
- var import_jsx_runtime = require("react/jsx-runtime"),
40
- import_adapt = require("@tamagui/adapt"),
41
- import_animate_presence = require("@tamagui/animate-presence"),
42
- import_compose_refs = require("@tamagui/compose-refs"),
43
- import_constants = require("@tamagui/constants"),
44
- import_core = require("@tamagui/core"),
45
- import_native = require("@tamagui/native"),
46
- import_portal = require("@tamagui/portal"),
47
- import_react = __toESM(require("react"), 1),
48
- import_react_native = require("react-native"),
49
- import_contexts = require("./contexts.native.js"),
50
- import_GestureDetectorWrapper = require("./GestureDetectorWrapper.native.js"),
51
- import_GestureSheetContext = require("./GestureSheetContext.native.js"),
52
- import_helpers = require("./helpers.native.js"),
53
- import_SheetContext = require("./SheetContext.native.js"),
54
- import_useGestureHandlerPan = require("./useGestureHandlerPan.native.js"),
55
- import_useKeyboardControllerSheet = require("./useKeyboardControllerSheet.native.js"),
56
- import_useSheetOpenState = require("./useSheetOpenState.native.js"),
57
- import_useSheetProviderProps = require("./useSheetProviderProps.native.js"),
58
- hiddenSize = 10000.1,
59
- _cachedSafeAreaTop;
41
+ var import_jsx_runtime = require("react/jsx-runtime");
42
+ var import_adapt = require("@tamagui/adapt");
43
+ var import_animate_presence = require("@tamagui/animate-presence");
44
+ var import_compose_refs = require("@tamagui/compose-refs");
45
+ var import_constants = require("@tamagui/constants");
46
+ var import_core = require("@tamagui/core");
47
+ var import_native = require("@tamagui/native");
48
+ var import_portal = require("@tamagui/portal");
49
+ var import_react = __toESM(require("react"), 1);
50
+ var import_react_native = require("react-native");
51
+ var import_contexts = require("./contexts.native.js");
52
+ var import_GestureDetectorWrapper = require("./GestureDetectorWrapper.native.js");
53
+ var import_gestureState = require("./gestureState.native.js");
54
+ var import_GestureSheetContext = require("./GestureSheetContext.native.js");
55
+ var import_helpers = require("./helpers.native.js");
56
+ var import_keyboardAvoidance = require("./keyboardAvoidance.native.js");
57
+ var import_webViewport = require("./webViewport.native.js");
58
+ var import_SheetContext = require("./SheetContext.native.js");
59
+ var import_useGestureHandlerPan = require("./useGestureHandlerPan.native.js");
60
+ var import_useKeyboardControllerSheet = require("./useKeyboardControllerSheet.native.js");
61
+ var import_useSheetOpenState = require("./useSheetOpenState.native.js");
62
+ var import_useSheetProviderProps = require("./useSheetProviderProps.native.js");
63
+ var hiddenSize = 10000.1;
64
+ var rnghRootStyleOpen = {
65
+ width: "100%",
66
+ height: "100%"
67
+ };
68
+ var rnghRootStyleClosed = {
69
+ width: "100%",
70
+ height: 0
71
+ };
72
+ var _cachedSafeAreaTop;
60
73
  function getSafeAreaTopInset() {
61
- return _cachedSafeAreaTop !== void 0 || (_cachedSafeAreaTop = (0, import_native.getSafeArea)().getInsets().top), _cachedSafeAreaTop;
74
+ if (_cachedSafeAreaTop !== void 0) return _cachedSafeAreaTop;
75
+ _cachedSafeAreaTop = (0, import_native.getSafeArea)().getInsets().top;
76
+ return _cachedSafeAreaTop;
62
77
  }
63
- var relativeDimensionTo = import_constants.isWeb ? "window" : "screen",
64
- SheetImplementationCustom = /* @__PURE__ */import_react.default.forwardRef(function (props, forwardedRef) {
65
- var parentSheet = import_react.default.useContext(import_contexts.ParentSheetContext),
66
- {
67
- transition,
68
- transitionConfig: transitionConfigProp,
69
- modal = !1,
70
- zIndex = parentSheet.zIndex + 1,
71
- moveOnKeyboardChange = !1,
72
- unmountChildrenWhenHidden = !1,
73
- portalProps,
74
- containerComponent: ContainerComponent = import_react.default.Fragment
75
- } = props,
76
- state = (0, import_useSheetOpenState.useSheetOpenState)(props),
77
- [overlayComponent, setOverlayComponent] = import_react.default.useState(null),
78
- providerProps = (0, import_useSheetProviderProps.useSheetProviderProps)(props, state, {
79
- onOverlayComponent: setOverlayComponent
80
- }),
81
- {
82
- frameSize,
83
- setFrameSize,
84
- snapPoints,
85
- snapPointsMode,
86
- hasFit,
87
- position,
88
- setPosition,
89
- scrollBridge,
90
- screenSize,
91
- setMaxContentSize,
92
- maxSnapPoint
93
- } = providerProps,
94
- {
95
- open,
96
- controller,
97
- isHidden
98
- } = state,
99
- sheetRef = import_react.default.useRef(void 0),
100
- ref = (0, import_compose_refs.useComposedRefs)(forwardedRef, sheetRef, providerProps.contentRef),
101
- {
102
- animationDriver
103
- } = (0, import_core.useConfiguration)();
104
- if (!animationDriver) throw new Error("Sheet requires an animation driver to be set");
105
- var transitionConfig = function () {
106
- var _animationDriver_animations;
107
- if (transitionConfigProp) return transitionConfigProp;
108
- var [animationProp, animationPropConfig] = transition ? Array.isArray(transition) ? transition : [transition] : [];
109
- return animationProp && !((_animationDriver_animations = animationDriver.animations) === null || _animationDriver_animations === void 0) && _animationDriver_animations[animationProp] ? {
110
- ...animationDriver.animations[animationProp],
111
- ...animationPropConfig
112
- } : null;
113
- }(),
114
- [isShowingInnerSheet, setIsShowingInnerSheet] = import_react.default.useState(!1),
115
- shouldHideParentSheet = !import_constants.isWeb && modal && isShowingInnerSheet && (0, import_portal.needsPortalRepropagation)(),
116
- sheetInsideSheet = import_react.default.useContext(import_contexts.SheetInsideSheetContext),
117
- onInnerSheet = import_react.default.useCallback(function (hasChild) {
118
- setIsShowingInnerSheet(hasChild);
119
- }, []),
120
- stableFrameSize = import_react.default.useRef(frameSize);
121
- import_react.default.useEffect(function () {
122
- open && frameSize && (stableFrameSize.current = frameSize);
123
- }, [open, frameSize]);
124
- var effectiveFrameSize = open ? frameSize : stableFrameSize.current || frameSize,
125
- positions = import_react.default.useMemo(function () {
126
- return snapPoints.map(function (point) {
127
- return getYPositions(snapPointsMode, point, screenSize, effectiveFrameSize);
128
- });
129
- }, [screenSize, effectiveFrameSize, snapPoints, snapPointsMode]),
130
- {
131
- keyboardHeight,
132
- isKeyboardVisible,
133
- dismissKeyboard,
134
- pauseKeyboardHandler,
135
- flushPendingHide
136
- } = (0, import_useKeyboardControllerSheet.useKeyboardControllerSheet)({
137
- enabled: !import_constants.isWeb && !!moveOnKeyboardChange
138
- }),
139
- [isDragging, setIsDragging_] = import_react.default.useState(!1),
140
- isDraggingRef = import_react.default.useRef(!1),
141
- setIsDragging = import_react.default.useCallback(function (val) {
142
- isDraggingRef.current = val, pauseKeyboardHandler.current = val, setIsDragging_(val), val || flushPendingHide();
143
- }, [pauseKeyboardHandler, flushPendingHide]),
144
- activePositionsRef = import_react.default.useRef(positions),
145
- activePositions = import_react.default.useMemo(function () {
146
- if (isDragging || isDraggingRef.current) return activePositionsRef.current;
147
- var result;
148
- if (!isKeyboardVisible || keyboardHeight <= 0) result = positions;else {
149
- var safeAreaTop = import_constants.isWeb ? 0 : getSafeAreaTopInset();
150
- result = positions.map(function (p) {
151
- return screenSize && p >= screenSize ? p : Math.max(safeAreaTop, p - keyboardHeight);
152
- });
153
- }
154
- return activePositionsRef.current = result, result;
155
- }, [positions, isKeyboardVisible, keyboardHeight, screenSize, isDragging]),
156
- {
157
- useAnimatedNumber,
158
- useAnimatedNumberStyle,
159
- useAnimatedNumberReaction
160
- } = animationDriver,
161
- _animationDriver_View,
162
- AnimatedView = (_animationDriver_View = animationDriver.View) !== null && _animationDriver_View !== void 0 ? _animationDriver_View : import_core.View;
163
- (0, import_constants.useIsomorphicLayoutEffect)(function () {
164
- if (sheetInsideSheet && open) return sheetInsideSheet(!0), function () {
165
- sheetInsideSheet(!1);
166
- };
167
- }, [sheetInsideSheet, open]);
168
- var nextParentContext = import_react.default.useMemo(function () {
169
- return {
170
- zIndex
171
- };
172
- }, [zIndex]),
173
- isMounted = (0, import_core.useDidFinishSSR)(),
174
- startPosition = isMounted && screenSize ? screenSize : hiddenSize,
175
- animatedNumber = useAnimatedNumber(startPosition),
176
- at = import_react.default.useRef(startPosition),
177
- hasntMeasured = at.current === hiddenSize,
178
- [disableAnimation, setDisableAnimation] = (0, import_react.useState)(hasntMeasured),
179
- skipAdaptAnimation = import_react.default.useRef(!1);
180
- controller?.skipNextAnimation && (skipAdaptAnimation.current = !0);
181
- var hasScrollView = import_react.default.useRef(!1);
182
- useAnimatedNumberReaction({
183
- value: animatedNumber,
184
- hostRef: sheetRef
185
- }, import_react.default.useCallback(function (value) {
186
- at.current = value, scrollBridge.paneY = value;
187
- var minY = activePositions[0],
188
- wasAtTop = scrollBridge.isAtTop,
189
- nowAtTop = value <= minY + 5;
190
- if (wasAtTop !== nowAtTop) if (scrollBridge.isAtTop = nowAtTop, nowAtTop) {
78
+ var relativeDimensionTo = import_constants.isWeb ? "window" : "screen";
79
+ function getStableViewportHeight() {
80
+ if (import_constants.isWeb && typeof window !== "undefined") return (0, import_webViewport.getStableLayoutViewportHeight)();
81
+ return import_react_native.Dimensions.get(relativeDimensionTo).height;
82
+ }
83
+ var SheetImplementationCustom = /* @__PURE__ */import_react.default.forwardRef(function SheetImplementationCustom2(props, forwardedRef) {
84
+ var parentSheet = import_react.default.useContext(import_contexts.ParentSheetContext);
85
+ var {
86
+ transition,
87
+ transitionConfig: transitionConfigProp,
88
+ modal = false,
89
+ zIndex = parentSheet.zIndex + 1,
90
+ moveOnKeyboardChange = false,
91
+ unmountChildrenWhenHidden = false,
92
+ portalProps,
93
+ containerComponent: ContainerComponent = import_react.default.Fragment,
94
+ onAnimationComplete
95
+ } = props;
96
+ var state = (0, import_useSheetOpenState.useSheetOpenState)(props);
97
+ var [overlayComponent, setOverlayComponent] = import_react.default.useState(null);
98
+ var providerProps = (0, import_useSheetProviderProps.useSheetProviderProps)(props, state, {
99
+ onOverlayComponent: setOverlayComponent
100
+ });
101
+ var {
102
+ frameSize,
103
+ setFrameSize,
104
+ snapPoints,
105
+ snapPointsMode,
106
+ hasFit,
107
+ position,
108
+ setPosition,
109
+ scrollBridge,
110
+ screenSize,
111
+ setMaxContentSize,
112
+ maxSnapPoint
113
+ } = providerProps;
114
+ var {
115
+ open,
116
+ controller,
117
+ isHidden
118
+ } = state;
119
+ var openRef = import_react.default.useRef(open);
120
+ openRef.current = open;
121
+ var sheetRef = import_react.default.useRef(void 0);
122
+ var ref = (0, import_compose_refs.useComposedRefs)(forwardedRef, sheetRef, providerProps.contentRef);
123
+ var {
124
+ animationDriver
125
+ } = (0, import_core.useConfiguration)();
126
+ if (!animationDriver) throw new Error(`Sheet requires an animation driver to be set`);
127
+ var transitionConfig = function () {
128
+ var _animationDriver_animations;
129
+ if (transitionConfigProp) return transitionConfigProp;
130
+ var [animationProp, animationPropConfig] = !transition ? [] : Array.isArray(transition) ? transition : [transition];
131
+ if (animationProp && ((_animationDriver_animations = animationDriver.animations) === null || _animationDriver_animations === void 0 ? void 0 : _animationDriver_animations[animationProp])) return {
132
+ ...animationDriver.animations[animationProp],
133
+ ...animationPropConfig
134
+ };
135
+ return null;
136
+ }();
137
+ var [isShowingInnerSheet, setIsShowingInnerSheet] = import_react.default.useState(false);
138
+ var shouldHideParentSheet = !import_constants.isWeb && modal && isShowingInnerSheet && (0, import_portal.needsPortalRepropagation)();
139
+ var sheetInsideSheet = import_react.default.useContext(import_contexts.SheetInsideSheetContext);
140
+ var onInnerSheet = import_react.default.useCallback(function (hasChild) {
141
+ setIsShowingInnerSheet(hasChild);
142
+ }, []);
143
+ var {
144
+ keyboardHeight,
145
+ isKeyboardVisible,
146
+ dismissKeyboard,
147
+ pauseKeyboardHandler,
148
+ flushPendingHide
149
+ } = (0, import_useKeyboardControllerSheet.useKeyboardControllerSheet)({
150
+ enabled: Boolean(moveOnKeyboardChange)
151
+ });
152
+ var stableFrameSize = import_react.default.useRef(frameSize);
153
+ import_react.default.useEffect(function () {
154
+ if (open && frameSize) stableFrameSize.current = frameSize;
155
+ }, [open, frameSize]);
156
+ var isWebKbSheet = import_constants.isWeb && hasFit && moveOnKeyboardChange;
157
+ var hasCleanKbBaseline = import_react.default.useRef(false);
158
+ var seedSettled = import_react.default.useRef(false);
159
+ var stableKbGeom = import_react.default.useRef({
160
+ frame: 0,
161
+ screen: 0
162
+ });
163
+ if ((!import_constants.isWeb || !isKeyboardVisible) && frameSize > 0 && screenSize > 0) {
164
+ stableKbGeom.current.frame = frameSize;
165
+ stableKbGeom.current.screen = screenSize;
166
+ hasCleanKbBaseline.current = true;
167
+ } else if (isWebKbSheet && isKeyboardVisible && !hasCleanKbBaseline.current && screenSize > 0) stableKbGeom.current.screen = Math.max(stableKbGeom.current.screen, screenSize);
168
+ var seedingKbBaseline = isWebKbSheet && isKeyboardVisible && !hasCleanKbBaseline.current && !seedSettled.current;
169
+ var freezeForKb = isWebKbSheet && isKeyboardVisible && stableKbGeom.current.frame > 0;
170
+ var effScreenSize = freezeForKb ? stableKbGeom.current.screen : screenSize;
171
+ var effectiveFrameSize = freezeForKb ? stableKbGeom.current.frame : open ? frameSize : stableFrameSize.current || frameSize;
172
+ var positions = import_react.default.useMemo(function () {
173
+ return snapPoints.map(function (point) {
174
+ return getYPositions(snapPointsMode, point, effScreenSize, effectiveFrameSize);
175
+ });
176
+ }, [effScreenSize, effectiveFrameSize, snapPoints, snapPointsMode]);
177
+ var [isDragging, setIsDragging_] = import_react.default.useState(false);
178
+ var isDraggingRef = import_react.default.useRef(false);
179
+ var setIsDragging = import_react.default.useCallback(function (val) {
180
+ isDraggingRef.current = val;
181
+ pauseKeyboardHandler.current = val;
182
+ setIsDragging_(val);
183
+ if (!val) flushPendingHide();
184
+ }, [pauseKeyboardHandler, flushPendingHide]);
185
+ var activePositionsRef = import_react.default.useRef(positions);
186
+ var activePositions = import_react.default.useMemo(function () {
187
+ if (isDragging || isDraggingRef.current) return activePositionsRef.current;
188
+ var result;
189
+ if (import_constants.isWeb || !isKeyboardVisible || keyboardHeight <= 0) result = positions;else {
190
+ var safeAreaTop = getSafeAreaTopInset();
191
+ result = positions.map(function (p) {
192
+ if (screenSize && p >= screenSize) return p;
193
+ return Math.max(safeAreaTop, p - keyboardHeight);
194
+ });
195
+ }
196
+ activePositionsRef.current = result;
197
+ return result;
198
+ }, [positions, isKeyboardVisible, keyboardHeight, screenSize, isDragging]);
199
+ var keyboardOccludedHeight = seedingKbBaseline ? 0 : (0, import_keyboardAvoidance.getKeyboardOccludedHeight)({
200
+ frameSize: effectiveFrameSize,
201
+ isKeyboardVisible,
202
+ keyboardHeight,
203
+ screenSize: effScreenSize,
204
+ sheetY: position >= 0 ? activePositions[position] : void 0
205
+ });
206
+ var keyboardStableFrameHeight = !isWebKbSheet ? 0 : seedingKbBaseline ? stableKbGeom.current.screen || screenSize : stableKbGeom.current.frame > 0 ? stableKbGeom.current.frame : 0;
207
+ var {
208
+ useAnimatedNumber,
209
+ useAnimatedNumberStyle,
210
+ useAnimatedNumberReaction
211
+ } = animationDriver;
212
+ var _animationDriver_View;
213
+ var AnimatedView = (_animationDriver_View = animationDriver.View) !== null && _animationDriver_View !== void 0 ? _animationDriver_View : import_core.View;
214
+ (0, import_constants.useIsomorphicLayoutEffect)(function () {
215
+ if (!(sheetInsideSheet && open)) return;
216
+ sheetInsideSheet(true);
217
+ return function () {
218
+ sheetInsideSheet(false);
219
+ };
220
+ }, [sheetInsideSheet, open]);
221
+ var nextParentContext = import_react.default.useMemo(function () {
222
+ return {
223
+ zIndex
224
+ };
225
+ }, [zIndex]);
226
+ var startPosition = (0, import_core.useDidFinishSSR)() && screenSize ? screenSize : hiddenSize;
227
+ var animatedNumber = useAnimatedNumber(startPosition);
228
+ var at = import_react.default.useRef(startPosition);
229
+ var hasntMeasured = at.current === hiddenSize;
230
+ var [disableAnimation, setDisableAnimation] = (0, import_react.useState)(hasntMeasured);
231
+ var skipAdaptAnimation = import_react.default.useRef(false);
232
+ if (controller === null || controller === void 0 ? void 0 : controller.skipNextAnimation) skipAdaptAnimation.current = true;
233
+ var hasScrollView = import_react.default.useRef(false);
234
+ var opacityFallbackTimer = import_react.default.useRef(null);
235
+ useAnimatedNumberReaction({
236
+ value: animatedNumber,
237
+ hostRef: sheetRef
238
+ }, import_react.default.useCallback(function (value) {
239
+ at.current = value;
240
+ scrollBridge.paneY = value;
241
+ var minY = activePositions[0];
242
+ var wasAtTop = scrollBridge.isAtTop;
243
+ var nowAtTop = value <= minY + 5;
244
+ if (wasAtTop !== nowAtTop) {
245
+ scrollBridge.isAtTop = nowAtTop;
246
+ if (nowAtTop) {
191
247
  var _scrollBridge_setScrollEnabled;
192
- scrollBridge.scrollLockY = void 0, (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !0);
248
+ if (scrollBridge.y > 0) {
249
+ var _scrollBridge_forceScrollTo;
250
+ (_scrollBridge_forceScrollTo = scrollBridge.forceScrollTo) === null || _scrollBridge_forceScrollTo === void 0 || _scrollBridge_forceScrollTo.call(scrollBridge, 0);
251
+ scrollBridge.y = 0;
252
+ }
253
+ scrollBridge.scrollLockY = void 0;
254
+ (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, true);
193
255
  } else {
194
256
  var _scrollBridge_setScrollEnabled1;
195
- scrollBridge.scrollLockY = 0, (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, !1);
257
+ scrollBridge.scrollLockY = 0;
258
+ (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, false);
196
259
  }
197
- }, [animationDriver, activePositions]));
198
- function stopSpring() {
199
- animatedNumber.stop(), scrollBridge.onFinishAnimate && (scrollBridge.onFinishAnimate(), scrollBridge.onFinishAnimate = void 0);
200
260
  }
201
- var animateTo = (0, import_core.useEvent)(function (position2, animationOverride) {
202
- if (frameSize !== 0) {
203
- var toValue = isHidden || position2 === -1 ? screenSize : activePositions[position2];
204
- if (at.current !== toValue) {
205
- if (at.current = toValue, stopSpring(), skipAdaptAnimation.current) {
206
- skipAdaptAnimation.current = !1, animatedNumber.setValue(toValue, {
207
- type: "timing",
208
- duration: 0
209
- });
210
- return;
211
- }
212
- animatedNumber.setValue(toValue, animationOverride || {
213
- type: "spring",
214
- ...transitionConfig
215
- });
216
- }
217
- }
218
- });
219
- (0, import_constants.useIsomorphicLayoutEffect)(function () {
220
- if (hasntMeasured && screenSize && frameSize) {
221
- at.current = screenSize, animatedNumber.setValue(screenSize, {
222
- type: "timing",
223
- duration: 0
224
- }, function () {
225
- setTimeout(function () {
226
- setDisableAnimation(!1);
227
- }, 10);
228
- });
229
- return;
230
- }
231
- if (!disableAnimation && !(!frameSize || !screenSize || isHidden || hasntMeasured && !open) && (animateTo(position), position === -1 && (scrollBridge.scrollLock = !1, scrollBridge.scrollStartY = -1), open && position >= 0)) {
232
- var isTopPosition = position === 0;
233
- if (scrollBridge.isAtTop = isTopPosition, isTopPosition) {
234
- var _scrollBridge_setScrollEnabled;
235
- scrollBridge.scrollLockY = void 0, (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, !0);
236
- } else {
237
- var _scrollBridge_setScrollEnabled1;
238
- scrollBridge.scrollLockY = 0, (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, !1);
239
- }
261
+ }, [animationDriver, activePositions]));
262
+ function stopSpring() {
263
+ animatedNumber.stop();
264
+ if (scrollBridge.onFinishAnimate) {
265
+ scrollBridge.onFinishAnimate();
266
+ scrollBridge.onFinishAnimate = void 0;
267
+ }
268
+ }
269
+ var animateTo = (0, import_core.useEvent)(function (position2, animationOverride) {
270
+ if (frameSize === 0) return;
271
+ var toValue = isHidden || position2 === -1 ? effScreenSize : activePositions[position2];
272
+ if (at.current === toValue) return;
273
+ at.current = toValue;
274
+ stopSpring();
275
+ var isOpenAnimation = position2 !== -1 && !isHidden;
276
+ if (opacityFallbackTimer.current) {
277
+ clearTimeout(opacityFallbackTimer.current);
278
+ opacityFallbackTimer.current = null;
279
+ }
280
+ var animationCompleteCallback = function () {
281
+ var _controller_onAnimationComplete;
282
+ if (opacityFallbackTimer.current) {
283
+ clearTimeout(opacityFallbackTimer.current);
284
+ opacityFallbackTimer.current = null;
240
285
  }
241
- }, [hasntMeasured, disableAnimation, isHidden, frameSize, screenSize, open, position]);
242
- var _props_disableDrag,
243
- disableDrag = (_props_disableDrag = props.disableDrag) !== null && _props_disableDrag !== void 0 ? _props_disableDrag : controller?.disableDrag,
244
- themeName = (0, import_core.useThemeName)(),
245
- [blockPan, setBlockPan] = import_react.default.useState(!1),
246
- panResponder = import_react.default.useMemo(function () {
247
- if (disableDrag || !frameSize || isShowingInnerSheet) return;
248
- var minY = positions[0];
249
- scrollBridge.paneMinY = minY;
250
- var startY = at.current;
251
- function setPanning(val) {
252
- setIsDragging(val);
253
- }
254
- var release = function (param) {
255
- var {
256
- vy
257
- } = param;
258
- if (scrollBridge.setParentDragging(!1), !scrollBridge.scrollLock) {
259
- isExternalDrag = !1, previouslyScrolling = !1, setPanning(!1);
260
- for (var currentPos = at.current, end = currentPos + frameSize * vy * 0.2, closestPoint = 0, dist = Number.POSITIVE_INFINITY, i = 0; i < positions.length; i++) {
261
- var position2 = positions[i],
262
- curDist = end > position2 ? end - position2 : position2 - end;
263
- curDist < dist && (dist = curDist, closestPoint = i);
264
- }
265
- setPosition(closestPoint), animateTo(closestPoint);
266
- }
267
- },
268
- finish = function (_e, state2) {
269
- release({
270
- vy: state2.vy,
271
- dragAt: state2.dy
272
- });
273
- },
274
- previouslyScrolling = !1,
275
- onMoveShouldSet = function (e, param) {
276
- var {
277
- dy
278
- } = param;
279
- function getShouldSet() {
280
- if (e.target === providerProps.handleRef.current) return !0;
281
- if (scrollBridge.hasScrollableContent === !0) {
282
- if (scrollBridge.scrollLock) return !1;
283
- var isScrolled = scrollBridge.y !== 0,
284
- isDraggingUp = dy < 0,
285
- isNearTop = scrollBridge.paneY - 5 <= scrollBridge.paneMinY;
286
- if (isScrolled) return previouslyScrolling = !0, !1;
287
- if (isNearTop && hasScrollView.current && isDraggingUp) return !1;
288
- }
289
- return Math.abs(dy) > 10;
290
- }
291
- var granted = getShouldSet();
292
- return granted && scrollBridge.setParentDragging(!0), granted;
293
- },
294
- grant = function () {
295
- setPanning(!0), stopSpring(), startY = at.current;
296
- },
297
- isExternalDrag = !1;
298
- return scrollBridge.drag = function (dy) {
299
- isExternalDrag || (isExternalDrag = !0, grant());
300
- var to = dy + startY;
301
- animatedNumber.setValue((0, import_helpers.resisted)(to, minY), {
302
- type: "direct"
303
- });
304
- }, scrollBridge.release = release, scrollBridge.snapToPosition = function (positionIndex) {
305
- isExternalDrag = !1, previouslyScrolling = !1, setPanning(!1), setPosition(positionIndex), animateTo(positionIndex);
306
- }, import_react_native.PanResponder.create({
307
- onMoveShouldSetPanResponder: onMoveShouldSet,
308
- onPanResponderGrant: grant,
309
- onPanResponderMove: function (_e, param) {
310
- var {
311
- dy
312
- } = param,
313
- toFull = dy + startY,
314
- to = (0, import_helpers.resisted)(toFull, minY),
315
- isAtTop = to <= minY;
316
- isAtTop ? scrollBridge.setParentDragging(!1) : scrollBridge.setParentDragging(!0), animatedNumber.setValue(to, {
317
- type: "direct"
318
- });
319
- },
320
- onPanResponderEnd: finish,
321
- onPanResponderTerminate: finish,
322
- onPanResponderRelease: finish
323
- });
324
- }, [disableDrag, isShowingInnerSheet, animateTo, frameSize, positions, setPosition]);
325
- import_react.default.useEffect(function () {
326
- isDragging || isHidden || !open || disableAnimation || !frameSize || !screenSize || animateTo(position, {
286
+ if (!isOpenAnimation && !openRef.current) setOpacity(0);
287
+ onAnimationComplete === null || onAnimationComplete === void 0 || onAnimationComplete({
288
+ open: isOpenAnimation
289
+ });
290
+ controller === null || controller === void 0 || (_controller_onAnimationComplete = controller.onAnimationComplete) == null || _controller_onAnimationComplete.call(controller, {
291
+ open: isOpenAnimation
292
+ });
293
+ };
294
+ if (!isOpenAnimation) opacityFallbackTimer.current = setTimeout(function () {
295
+ opacityFallbackTimer.current = null;
296
+ if (!openRef.current) setOpacity(0);
297
+ }, 1e3);
298
+ if (skipAdaptAnimation.current) {
299
+ skipAdaptAnimation.current = false;
300
+ animatedNumber.setValue(toValue, {
327
301
  type: "timing",
328
- duration: 250
302
+ duration: 0
303
+ }, animationCompleteCallback);
304
+ return;
305
+ }
306
+ animatedNumber.setValue(toValue, animationOverride || {
307
+ type: "spring",
308
+ ...transitionConfig
309
+ }, animationCompleteCallback);
310
+ });
311
+ (0, import_constants.useIsomorphicLayoutEffect)(function () {
312
+ if (hasntMeasured && screenSize && frameSize) {
313
+ at.current = screenSize;
314
+ animatedNumber.setValue(screenSize, {
315
+ type: "timing",
316
+ duration: 0
317
+ }, function () {
318
+ setTimeout(function () {
319
+ setDisableAnimation(false);
320
+ }, 10);
329
321
  });
330
- }, [isKeyboardVisible, keyboardHeight]);
331
- var wasDragging = import_react.default.useRef(!1);
332
- import_react.default.useEffect(function () {
333
- if (isDragging) {
334
- wasDragging.current = !0;
335
- return;
322
+ return;
323
+ }
324
+ if (disableAnimation) return;
325
+ if (isDraggingRef.current) return;
326
+ if (!frameSize || !screenSize || isHidden || hasntMeasured && !open) return;
327
+ animateTo(position);
328
+ if (position === -1) {
329
+ scrollBridge.scrollLock = false;
330
+ scrollBridge.scrollStartY = -1;
331
+ }
332
+ if (open && position >= 0) {
333
+ var isTopPosition = position === 0;
334
+ scrollBridge.isAtTop = isTopPosition;
335
+ if (isTopPosition) {
336
+ var _scrollBridge_setScrollEnabled;
337
+ scrollBridge.scrollLockY = void 0;
338
+ (_scrollBridge_setScrollEnabled = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled === void 0 || _scrollBridge_setScrollEnabled.call(scrollBridge, true);
339
+ } else {
340
+ var _scrollBridge_setScrollEnabled1;
341
+ scrollBridge.scrollLockY = 0;
342
+ (_scrollBridge_setScrollEnabled1 = scrollBridge.setScrollEnabled) === null || _scrollBridge_setScrollEnabled1 === void 0 || _scrollBridge_setScrollEnabled1.call(scrollBridge, false);
336
343
  }
337
- wasDragging.current && (wasDragging.current = !1, !(!frameSize || !screenSize || isHidden || !open) && animateTo(position));
338
- }, [isDragging]), import_react.default.useEffect(function () {
339
- !open && isKeyboardVisible && dismissKeyboard();
340
- }, [open]);
341
- var {
342
- panGesture,
343
- panGestureRef,
344
- gestureHandlerEnabled
345
- } = (0, import_useGestureHandlerPan.useGestureHandlerPan)({
346
- positions: activePositions,
347
- frameSize,
348
- setPosition,
349
- animateTo,
350
- stopSpring,
351
- scrollBridge,
352
- setIsDragging,
353
- getCurrentPosition: function () {
354
- return at.current;
355
- },
356
- resisted: import_helpers.resisted,
357
- disableDrag,
358
- isShowingInnerSheet,
359
- setAnimatedPosition: function (val) {
360
- at.current = val, animatedNumber.setValue(val, {
361
- type: "direct"
362
- });
363
- },
364
- pauseKeyboardHandler
365
- }),
366
- handleAnimationViewLayout = import_react.default.useCallback(function (e) {
367
- var _e_nativeEvent;
368
- if (!(!open && stableFrameSize.current !== 0)) {
369
- var layoutHeight = (_e_nativeEvent = e.nativeEvent) === null || _e_nativeEvent === void 0 ? void 0 : _e_nativeEvent.layout.height,
370
- next = modal ? Math.min(layoutHeight, import_react_native.Dimensions.get(relativeDimensionTo).height) : layoutHeight;
371
- next && setFrameSize(next);
344
+ }
345
+ }, [hasntMeasured, disableAnimation, isHidden, frameSize, screenSize, open, position]);
346
+ var _props_disableDrag;
347
+ var disableDrag = (_props_disableDrag = props.disableDrag) !== null && _props_disableDrag !== void 0 ? _props_disableDrag : controller === null || controller === void 0 ? void 0 : controller.disableDrag;
348
+ (0, import_core.useThemeName)();
349
+ var [blockPan, setBlockPan] = import_react.default.useState(false);
350
+ var panResponder = import_react.default.useMemo(function () {
351
+ if (disableDrag) return;
352
+ if (!frameSize) return;
353
+ if (isShowingInnerSheet) return;
354
+ var minY = activePositions[0];
355
+ scrollBridge.paneMinY = minY;
356
+ var startY = at.current;
357
+ function setPanning(val) {
358
+ setIsDragging(val);
359
+ }
360
+ var release = function (param) {
361
+ var {
362
+ vy
363
+ } = param;
364
+ scrollBridge.setParentDragging(false);
365
+ if (scrollBridge.scrollLock) return;
366
+ isExternalDrag = false;
367
+ previouslyScrolling = false;
368
+ setPanning(false);
369
+ var end = at.current + frameSize * vy * .2;
370
+ var closestPoint = 0;
371
+ var dist = Number.POSITIVE_INFINITY;
372
+ for (var i = 0; i < activePositions.length; i++) {
373
+ var position2 = activePositions[i];
374
+ var curDist = end > position2 ? end - position2 : position2 - end;
375
+ if (curDist < dist) {
376
+ dist = curDist;
377
+ closestPoint = i;
372
378
  }
373
- }, [open, modal]),
374
- handleMaxContentViewLayout = import_react.default.useCallback(function (e) {
375
- var _e_nativeEvent,
376
- next = Math.min((_e_nativeEvent = e.nativeEvent) === null || _e_nativeEvent === void 0 ? void 0 : _e_nativeEvent.layout.height, import_react_native.Dimensions.get(relativeDimensionTo).height);
377
- next && setMaxContentSize(next);
378
- }, []),
379
- animatedStyle = useAnimatedNumberStyle(animatedNumber, function (val) {
380
- "worklet";
381
-
382
- var translateY = frameSize === 0 ? hiddenSize : val;
383
- return {
384
- transform: [{
385
- translateY
386
- }]
387
- };
388
- }),
389
- [opacity, setOpacity] = import_react.default.useState(open ? 1 : 0);
390
- open && opacity === 0 && setOpacity(1), import_react.default.useEffect(function () {
391
- if (!open) {
392
- var tm = setTimeout(function () {
393
- setOpacity(0);
394
- }, 400);
395
- return function () {
396
- clearTimeout(tm);
397
- };
398
379
  }
399
- }, [open]);
400
- var forcedContentHeight = hasFit ? void 0 : snapPointsMode === "percent" ?
401
- // Use dvh for modal (viewport-relative), % for inline (container-relative)
402
- `${maxSnapPoint}${import_constants.isWeb && modal ? "dvh" : "%"}` : maxSnapPoint,
403
- setHasScrollView = import_react.default.useCallback(function (val) {
404
- hasScrollView.current = val;
405
- }, []),
406
- contents = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_core.LayoutMeasurementController, {
407
- disable: !open,
408
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_contexts.ParentSheetContext.Provider, {
409
- value: nextParentContext,
410
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_SheetContext.SheetProvider, {
411
- ...providerProps,
412
- setHasScrollView,
413
- children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_GestureSheetContext.GestureSheetProvider, {
414
- isDragging,
415
- blockPan,
416
- setBlockPan,
417
- panGesture,
418
- panGestureRef,
419
- children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_animate_presence.AnimatePresence, {
420
- custom: {
421
- open
422
- },
423
- children: shouldHideParentSheet || !open ? null : overlayComponent
424
- }), snapPointsMode !== "percent" && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_native.View, {
425
- style: {
426
- opacity: 0,
427
- position: "absolute",
428
- top: 0,
429
- left: 0,
430
- right: 0,
431
- bottom: 0,
432
- pointerEvents: "none"
433
- },
434
- onLayout: handleMaxContentViewLayout
435
- }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(AnimatedView, {
436
- ref,
437
- onLayout: handleAnimationViewLayout,
438
- // @ts-ignore for CSS driver this is necessary to attach the transition
439
- // also motion driver at least though i suspect all drivers?
440
- transition: isDragging || disableAnimation ? null : transition,
441
- // @ts-ignore
442
- disableClassName: !0,
443
- style: [{
444
- position: "absolute",
445
- zIndex,
446
- width: "100%",
447
- height: forcedContentHeight,
448
- minHeight: forcedContentHeight,
449
- opacity: shouldHideParentSheet ? 0 : opacity,
450
- ...((shouldHideParentSheet || !open) && {
451
- pointerEvents: "none"
452
- })
453
- }, animatedStyle],
454
- children: (/* wrap children with plain RN View for panResponder - tamagui views no longer handle responder events on web */
455
- gestureHandlerEnabled && panGesture ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_GestureDetectorWrapper.GestureDetectorWrapper, {
456
- gesture: panGesture,
457
- style: {
458
- flex: 1
459
- },
460
- children: props.children
461
- }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_native.View, {
462
- ...panResponder?.panHandlers,
463
- style: {
464
- flex: 1,
465
- width: "100%",
466
- height: "100%"
467
- },
468
- children: props.children
469
- }))
470
- })]
471
- })
472
- })
473
- })
380
+ setPosition(closestPoint);
381
+ animateTo(closestPoint);
382
+ };
383
+ var finish = function (_e, state2) {
384
+ release({
385
+ vy: state2.vy,
386
+ dragAt: state2.dy
474
387
  });
475
- if ((0, import_portal.needsPortalRepropagation)()) {
476
- var adaptContext = (0, import_adapt.useAdaptContext)();
477
- contents = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_adapt.ProvideAdaptContext, {
478
- ...adaptContext,
479
- children: (/* @ts-ignore */
480
- contents)
388
+ };
389
+ var previouslyScrolling = false;
390
+ var onMoveShouldSet = function (e, param) {
391
+ var {
392
+ dy
393
+ } = param;
394
+ function getShouldSet() {
395
+ if (e.target === providerProps.handleRef.current) return true;
396
+ if (scrollBridge.scrollNodeTouched) return false;
397
+ if (scrollBridge.hasScrollableContent === true) {
398
+ if (scrollBridge.scrollLock) return false;
399
+ var isScrolled = scrollBridge.y !== 0;
400
+ var isDraggingUp = dy < 0;
401
+ var isNearTop = scrollBridge.paneY - 5 <= scrollBridge.paneMinY;
402
+ if (isScrolled) return false;
403
+ if (isNearTop) {
404
+ if (hasScrollView.current && isDraggingUp) return false;
405
+ }
406
+ }
407
+ return Math.abs(dy) > 10;
408
+ }
409
+ var granted = getShouldSet();
410
+ if (granted) scrollBridge.setParentDragging(true);
411
+ return granted;
412
+ };
413
+ var grant = function () {
414
+ setPanning(true);
415
+ stopSpring();
416
+ startY = at.current;
417
+ };
418
+ var isExternalDrag = false;
419
+ scrollBridge.startPanDrag = function () {
420
+ isExternalDrag = true;
421
+ grant();
422
+ };
423
+ scrollBridge.drag = function (dy) {
424
+ if (!isExternalDrag) {
425
+ isExternalDrag = true;
426
+ grant();
427
+ }
428
+ var to = dy + startY;
429
+ animatedNumber.setValue((0, import_helpers.resisted)(to, minY), {
430
+ type: "direct"
481
431
  });
432
+ };
433
+ scrollBridge.release = release;
434
+ scrollBridge.snapToPosition = function (positionIndex) {
435
+ isExternalDrag = false;
436
+ setPanning(false);
437
+ setPosition(positionIndex);
438
+ animateTo(positionIndex);
439
+ };
440
+ return import_react_native.PanResponder.create({
441
+ onMoveShouldSetPanResponder: onMoveShouldSet,
442
+ onPanResponderGrant: grant,
443
+ onPanResponderMove: function (_e, param) {
444
+ var {
445
+ dy
446
+ } = param;
447
+ var toFull = dy + startY;
448
+ var to = (0, import_helpers.resisted)(toFull, minY);
449
+ if (to <= minY) scrollBridge.setParentDragging(false);else scrollBridge.setParentDragging(true);
450
+ animatedNumber.setValue(to, {
451
+ type: "direct"
452
+ });
453
+ },
454
+ onPanResponderEnd: finish,
455
+ onPanResponderTerminate: finish,
456
+ onPanResponderRelease: finish
457
+ });
458
+ }, [disableDrag, isShowingInnerSheet, animateTo, frameSize, activePositions, setPosition]);
459
+ import_react.default.useEffect(function () {
460
+ if (import_constants.isWeb) return;
461
+ if (isDragging || isHidden || !open || disableAnimation) return;
462
+ if (!frameSize || !screenSize) return;
463
+ animateTo(position, {
464
+ type: "timing",
465
+ duration: 250
466
+ });
467
+ }, [isKeyboardVisible, keyboardHeight]);
468
+ var wasDragging = import_react.default.useRef(false);
469
+ import_react.default.useEffect(function () {
470
+ if (isDragging) {
471
+ wasDragging.current = true;
472
+ return;
482
473
  }
483
- var shouldMountChildren = unmountChildrenWhenHidden ? !!opacity : !0;
484
- if (modal) {
485
- var modalContents = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_portal.Portal, {
486
- stackZIndex: zIndex,
487
- ...portalProps,
488
- children: shouldMountChildren && /* @__PURE__ */(0, import_jsx_runtime.jsx)(ContainerComponent, {
489
- children: /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_core.Theme, {
490
- contain: !0,
491
- forceClassName: !0,
492
- name: themeName,
493
- children: contents
494
- })
495
- })
496
- });
497
- return import_constants.isWeb ? modalContents : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_contexts.SheetInsideSheetContext.Provider, {
498
- value: onInnerSheet,
499
- children: modalContents
474
+ if (!wasDragging.current) return;
475
+ wasDragging.current = false;
476
+ if (!frameSize || !screenSize || isHidden || !open) return;
477
+ animateTo(position);
478
+ }, [isDragging]);
479
+ import_react.default.useEffect(function () {
480
+ if (!open && isKeyboardVisible) {
481
+ dismissKeyboard();
482
+ pauseKeyboardHandler.current = false;
483
+ flushPendingHide();
484
+ }
485
+ }, [open]);
486
+ var {
487
+ panGesture,
488
+ panGestureRef,
489
+ gestureHandlerEnabled
490
+ } = (0, import_useGestureHandlerPan.useGestureHandlerPan)({
491
+ positions: activePositions,
492
+ frameSize,
493
+ setPosition,
494
+ animateTo,
495
+ stopSpring,
496
+ scrollBridge,
497
+ setIsDragging,
498
+ getCurrentPosition: function () {
499
+ return at.current;
500
+ },
501
+ resisted: import_helpers.resisted,
502
+ disableDrag,
503
+ isShowingInnerSheet,
504
+ setAnimatedPosition: function (val) {
505
+ at.current = val;
506
+ animatedNumber.setValue(val, {
507
+ type: "direct"
500
508
  });
509
+ },
510
+ pauseKeyboardHandler
511
+ });
512
+ var ignoreLayoutForKeyboard = (0, import_core.useEvent)(function () {
513
+ return import_constants.isWeb && moveOnKeyboardChange && (0, import_webViewport.getWebKeyboardHeight)() >= import_webViewport.MIN_KEYBOARD_HEIGHT;
514
+ });
515
+ var shouldSeedKbFrame = (0, import_core.useEvent)(function () {
516
+ return isWebKbSheet && !hasCleanKbBaseline.current && !seedSettled.current && ignoreLayoutForKeyboard();
517
+ });
518
+ var shouldSeedKbScreen = (0, import_core.useEvent)(function () {
519
+ return isWebKbSheet && !hasCleanKbBaseline.current && ignoreLayoutForKeyboard();
520
+ });
521
+ var handleAnimationViewLayout = (0, import_core.useEvent)(function (e) {
522
+ var _e_nativeEvent;
523
+ if (!open && stableFrameSize.current !== 0) return;
524
+ var seeding = shouldSeedKbFrame();
525
+ if (!seeding && ignoreLayoutForKeyboard()) return;
526
+ var layoutHeight = (_e_nativeEvent = e.nativeEvent) === null || _e_nativeEvent === void 0 ? void 0 : _e_nativeEvent.layout.height;
527
+ var next = modal || seeding ? Math.min(layoutHeight, getStableViewportHeight()) : layoutHeight;
528
+ if (!next) return;
529
+ var rounded = Math.round(next);
530
+ if (seeding) {
531
+ if (rounded > stableKbGeom.current.frame) stableKbGeom.current.frame = rounded;else if (stableKbGeom.current.frame > 0) seedSettled.current = true;
532
+ }
533
+ setFrameSize(rounded);
534
+ });
535
+ var handleMaxContentViewLayout = import_react.default.useCallback(function (e) {
536
+ var _e_nativeEvent;
537
+ if (shouldSeedKbScreen()) {
538
+ setMaxContentSize(Math.round(getStableViewportHeight()));
539
+ return;
540
+ }
541
+ if (ignoreLayoutForKeyboard()) 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, shouldSeedKbScreen]);
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;
501
561
  }
502
- return contents;
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
+ isKeyboardSeeding: seedingKbBaseline,
577
+ setHasScrollView,
578
+ children: /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_GestureSheetContext.GestureSheetProvider, {
579
+ isDragging,
580
+ blockPan,
581
+ setBlockPan,
582
+ panGesture,
583
+ panGestureRef,
584
+ children: [/* @__PURE__ */(0, import_jsx_runtime.jsx)(import_animate_presence.AnimatePresence, {
585
+ custom: {
586
+ open
587
+ },
588
+ children: shouldHideParentSheet || !open ? null : overlayComponent
589
+ }), snapPointsMode !== "percent" && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_native.View, {
590
+ style: {
591
+ opacity: 0,
592
+ position: "absolute",
593
+ top: 0,
594
+ left: 0,
595
+ right: 0,
596
+ bottom: 0,
597
+ pointerEvents: "none"
598
+ },
599
+ onLayout: handleMaxContentViewLayout
600
+ }), /* @__PURE__ */(0, import_jsx_runtime.jsx)(AnimatedView, {
601
+ ref,
602
+ onLayout: handleAnimationViewLayout,
603
+ transition: isDragging || disableAnimation ? null : transition,
604
+ disableClassName: true,
605
+ style: [{
606
+ position: "absolute",
607
+ zIndex,
608
+ width: "100%",
609
+ height: forcedContentHeight,
610
+ minHeight: forcedContentHeight,
611
+ opacity: !shouldHideParentSheet ? opacity : 0,
612
+ ...((shouldHideParentSheet || !open) && {
613
+ pointerEvents: "none"
614
+ })
615
+ }, animatedStyle],
616
+ children: gestureHandlerEnabled && panGesture ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_GestureDetectorWrapper.GestureDetectorWrapper, {
617
+ gesture: panGesture,
618
+ style: {
619
+ flex: 1
620
+ },
621
+ children: props.children
622
+ }) : /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_react_native.View, {
623
+ ...(panResponder === null || panResponder === void 0 ? void 0 : panResponder.panHandlers),
624
+ style: {
625
+ flex: 1,
626
+ width: "100%",
627
+ height: "100%"
628
+ },
629
+ children: props.children
630
+ })
631
+ })]
632
+ })
633
+ })
634
+ })
503
635
  });
636
+ if ((0, import_portal.needsPortalRepropagation)()) {
637
+ var adaptContext = (0, import_adapt.useAdaptContext)();
638
+ contents = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_adapt.ProvideAdaptContext, {
639
+ ...adaptContext,
640
+ children: contents
641
+ });
642
+ }
643
+ var shouldMountChildren = unmountChildrenWhenHidden ? !!opacity : true;
644
+ if (modal) {
645
+ var RNGHRoot = (0, import_gestureState.getGestureHandlerState)().RootView;
646
+ var mountedContents = shouldMountChildren ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(ContainerComponent, {
647
+ children: contents
648
+ }) : null;
649
+ var modalContents = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_portal.Portal, {
650
+ stackZIndex: zIndex,
651
+ ...portalProps,
652
+ children: mountedContents && RNGHRoot ? /* @__PURE__ */(0, import_jsx_runtime.jsx)(RNGHRoot, {
653
+ style: open ? rnghRootStyleOpen : rnghRootStyleClosed,
654
+ children: mountedContents
655
+ }) : mountedContents
656
+ });
657
+ if (import_constants.isWeb) return modalContents;
658
+ return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_contexts.SheetInsideSheetContext.Provider, {
659
+ value: onInnerSheet,
660
+ children: modalContents
661
+ });
662
+ }
663
+ return contents;
664
+ });
504
665
  function getYPositions(mode, point, screenSize, frameSize) {
505
666
  if (!screenSize || !frameSize) return 0;
506
667
  if (mode === "mixed") {
507
- if (typeof point == "number") return screenSize - Math.min(screenSize, Math.max(0, point));
668
+ if (typeof point === "number") return screenSize - Math.min(screenSize, Math.max(0, point));
508
669
  if (point === "fit") return screenSize - Math.min(screenSize, frameSize);
509
670
  if (point.endsWith("%")) {
510
671
  var pct = Math.min(100, Math.max(0, Number(point.slice(0, -1)))) / 100;
511
- return Number.isNaN(pct) ? (console.warn("Invalid snapPoint percentage string"), 0) : Math.round(screenSize - pct * screenSize);
672
+ if (Number.isNaN(pct)) {
673
+ console.warn("Invalid snapPoint percentage string");
674
+ return 0;
675
+ }
676
+ return Math.round(screenSize - pct * screenSize);
512
677
  }
513
- return console.warn("Invalid snapPoint unknown value"), 0;
678
+ console.warn("Invalid snapPoint unknown value");
679
+ return 0;
514
680
  }
515
- if (mode === "fit") return point === 0 ? screenSize : screenSize - Math.min(screenSize, frameSize);
516
- if (mode === "constant" && typeof point == "number") return screenSize - Math.min(screenSize, Math.max(0, point));
681
+ if (mode === "fit") {
682
+ if (point === 0) return screenSize;
683
+ return screenSize - Math.min(screenSize, frameSize);
684
+ }
685
+ if (mode === "constant" && typeof point === "number") return screenSize - Math.min(screenSize, Math.max(0, point));
517
686
  var pct1 = Math.min(100, Math.max(0, Number(point))) / 100;
518
- return Number.isNaN(pct1) ? (console.warn("Invalid snapPoint percentage"), 0) : Math.round(screenSize - pct1 * screenSize);
687
+ if (Number.isNaN(pct1)) {
688
+ console.warn("Invalid snapPoint percentage");
689
+ return 0;
690
+ }
691
+ return Math.round(screenSize - pct1 * screenSize);
519
692
  }
520
693
  //# sourceMappingURL=SheetImplementationCustom.native.js.map