@hanzogui/sheet 8.3.0 → 8.3.2

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 (559) hide show
  1. package/dist/cjs/GestureDetectorWrapper.js +23 -0
  2. package/dist/cjs/GestureDetectorWrapper.js.map +1 -0
  3. package/dist/cjs/GestureSheetContext.js +21 -0
  4. package/dist/cjs/GestureSheetContext.js.map +1 -0
  5. package/dist/cjs/Sheet.js +102 -0
  6. package/dist/cjs/Sheet.js.map +1 -0
  7. package/dist/cjs/SheetContext.js +8 -0
  8. package/dist/cjs/SheetContext.js.map +1 -0
  9. package/dist/cjs/SheetController.js +33 -0
  10. package/dist/cjs/SheetController.js.map +1 -0
  11. package/dist/cjs/SheetImplementationCustom.js +866 -0
  12. package/dist/cjs/SheetImplementationCustom.js.map +1 -0
  13. package/dist/cjs/SheetScrollView.js +278 -0
  14. package/dist/cjs/SheetScrollView.js.map +1 -0
  15. package/dist/cjs/constants.js +8 -0
  16. package/dist/cjs/constants.js.map +1 -0
  17. package/dist/cjs/contexts.js +10 -0
  18. package/dist/cjs/contexts.js.map +1 -0
  19. package/dist/cjs/controller.js +11 -0
  20. package/dist/cjs/controller.js.map +1 -0
  21. package/dist/cjs/createSheet.js +153 -0
  22. package/dist/cjs/createSheet.js.map +1 -0
  23. package/dist/cjs/gestureState.js +35 -0
  24. package/dist/cjs/gestureState.js.map +1 -0
  25. package/dist/cjs/helpers.js +29 -0
  26. package/dist/cjs/helpers.js.map +1 -0
  27. package/dist/cjs/index.js +19 -0
  28. package/dist/cjs/index.js.map +1 -0
  29. package/dist/cjs/keyboardAvoidance.js +67 -0
  30. package/dist/cjs/keyboardAvoidance.js.map +1 -0
  31. package/dist/cjs/nativeSheet.js +52 -0
  32. package/dist/cjs/nativeSheet.js.map +1 -0
  33. package/dist/cjs/package.json +1 -0
  34. package/dist/cjs/setupGestureHandler.js +31 -0
  35. package/dist/cjs/setupGestureHandler.js.map +1 -0
  36. package/dist/cjs/types.js +3 -0
  37. package/dist/cjs/types.js.map +1 -0
  38. package/dist/cjs/useGestureHandlerPan.js +356 -0
  39. package/dist/cjs/useGestureHandlerPan.js.map +1 -0
  40. package/dist/cjs/useKeyboardControllerSheet.js +124 -0
  41. package/dist/cjs/useKeyboardControllerSheet.js.map +1 -0
  42. package/dist/cjs/useSafeAreaInsets.js +16 -0
  43. package/dist/cjs/useSafeAreaInsets.js.map +1 -0
  44. package/dist/cjs/useSheet.js +7 -0
  45. package/dist/cjs/useSheet.js.map +1 -0
  46. package/dist/cjs/useSheetController.js +19 -0
  47. package/dist/cjs/useSheetController.js.map +1 -0
  48. package/dist/cjs/useSheetOffscreenSize.js +40 -0
  49. package/dist/cjs/useSheetOffscreenSize.js.map +1 -0
  50. package/dist/cjs/useSheetOpenState.js +29 -0
  51. package/dist/cjs/useSheetOpenState.js.map +1 -0
  52. package/dist/cjs/useSheetProviderProps.js +169 -0
  53. package/dist/cjs/useSheetProviderProps.js.map +1 -0
  54. package/dist/cjs/useSheetScrollViewGestures.js +195 -0
  55. package/dist/cjs/useSheetScrollViewGestures.js.map +1 -0
  56. package/dist/cjs/webViewport.js +108 -0
  57. package/dist/cjs/webViewport.js.map +1 -0
  58. package/dist/esm/GestureDetectorWrapper.js +20 -0
  59. package/dist/esm/GestureDetectorWrapper.js.map +1 -0
  60. package/dist/esm/GestureSheetContext.js +17 -0
  61. package/dist/esm/GestureSheetContext.js.map +1 -0
  62. package/dist/esm/Sheet.js +97 -0
  63. package/dist/esm/Sheet.js.map +1 -0
  64. package/dist/esm/SheetContext.js +5 -0
  65. package/dist/esm/SheetContext.js.map +1 -0
  66. package/dist/esm/SheetController.js +28 -0
  67. package/dist/esm/SheetController.js.map +1 -0
  68. package/dist/esm/SheetImplementationCustom.js +862 -0
  69. package/dist/esm/SheetImplementationCustom.js.map +1 -0
  70. package/dist/esm/SheetScrollView.js +274 -0
  71. package/dist/esm/SheetScrollView.js.map +1 -0
  72. package/dist/esm/constants.js +5 -0
  73. package/dist/esm/constants.js.map +1 -0
  74. package/dist/esm/contexts.js +6 -0
  75. package/dist/esm/contexts.js.map +1 -0
  76. package/dist/esm/controller.js +5 -0
  77. package/dist/esm/controller.js.map +1 -0
  78. package/dist/esm/createSheet.js +150 -0
  79. package/dist/esm/createSheet.js.map +1 -0
  80. package/dist/esm/gestureState.js +29 -0
  81. package/dist/esm/gestureState.js.map +1 -0
  82. package/dist/esm/helpers.js +26 -0
  83. package/dist/esm/helpers.js.map +1 -0
  84. package/dist/esm/index.js +13 -14
  85. package/dist/esm/index.js.map +1 -1
  86. package/dist/esm/keyboardAvoidance.js +62 -0
  87. package/dist/esm/keyboardAvoidance.js.map +1 -0
  88. package/dist/esm/nativeSheet.js +48 -0
  89. package/dist/esm/nativeSheet.js.map +1 -0
  90. package/dist/esm/setupGestureHandler.js +27 -0
  91. package/dist/esm/setupGestureHandler.js.map +1 -0
  92. package/dist/esm/types.js +2 -0
  93. package/dist/esm/types.js.map +1 -0
  94. package/dist/esm/useGestureHandlerPan.js +353 -0
  95. package/dist/esm/useGestureHandlerPan.js.map +1 -0
  96. package/dist/esm/useKeyboardControllerSheet.js +121 -0
  97. package/dist/esm/useKeyboardControllerSheet.js.map +1 -0
  98. package/dist/esm/useSafeAreaInsets.js +11 -0
  99. package/dist/esm/useSafeAreaInsets.js.map +1 -0
  100. package/dist/esm/useSheet.js +3 -0
  101. package/dist/esm/useSheet.js.map +1 -0
  102. package/dist/esm/useSheetController.js +14 -0
  103. package/dist/esm/useSheetController.js.map +1 -0
  104. package/dist/esm/useSheetOffscreenSize.js +36 -0
  105. package/dist/esm/useSheetOffscreenSize.js.map +1 -0
  106. package/dist/esm/useSheetOpenState.js +25 -0
  107. package/dist/esm/useSheetOpenState.js.map +1 -0
  108. package/dist/esm/useSheetProviderProps.js +165 -0
  109. package/dist/esm/useSheetProviderProps.js.map +1 -0
  110. package/dist/esm/useSheetScrollViewGestures.js +192 -0
  111. package/dist/esm/useSheetScrollViewGestures.js.map +1 -0
  112. package/dist/esm/webViewport.js +98 -0
  113. package/dist/esm/webViewport.js.map +1 -0
  114. package/dist/native/GestureDetectorWrapper.js +20 -0
  115. package/dist/native/GestureDetectorWrapper.js.map +1 -0
  116. package/dist/native/GestureSheetContext.js +17 -0
  117. package/dist/native/GestureSheetContext.js.map +1 -0
  118. package/dist/native/Sheet.js +97 -0
  119. package/dist/native/Sheet.js.map +1 -0
  120. package/dist/native/SheetContext.js +5 -0
  121. package/dist/native/SheetContext.js.map +1 -0
  122. package/dist/native/SheetController.js +28 -0
  123. package/dist/native/SheetController.js.map +1 -0
  124. package/dist/native/SheetImplementationCustom.js +862 -0
  125. package/dist/native/SheetImplementationCustom.js.map +1 -0
  126. package/dist/native/SheetScrollView.js +274 -0
  127. package/dist/native/SheetScrollView.js.map +1 -0
  128. package/dist/native/constants.js +5 -0
  129. package/dist/native/constants.js.map +1 -0
  130. package/dist/native/contexts.js +6 -0
  131. package/dist/native/contexts.js.map +1 -0
  132. package/dist/native/controller.js +5 -0
  133. package/dist/native/controller.js.map +1 -0
  134. package/dist/native/createSheet.js +150 -0
  135. package/dist/native/createSheet.js.map +1 -0
  136. package/dist/native/gestureState.js +29 -0
  137. package/dist/native/gestureState.js.map +1 -0
  138. package/dist/native/helpers.js +26 -0
  139. package/dist/native/helpers.js.map +1 -0
  140. package/dist/native/index.js +13 -0
  141. package/dist/native/index.js.map +1 -0
  142. package/dist/native/keyboardAvoidance.js +62 -0
  143. package/dist/native/keyboardAvoidance.js.map +1 -0
  144. package/dist/native/nativeSheet.js +48 -0
  145. package/dist/native/nativeSheet.js.map +1 -0
  146. package/dist/native/setupGestureHandler.js +27 -0
  147. package/dist/native/setupGestureHandler.js.map +1 -0
  148. package/dist/native/types.js +2 -0
  149. package/dist/native/types.js.map +1 -0
  150. package/dist/native/useGestureHandlerPan.js +353 -0
  151. package/dist/native/useGestureHandlerPan.js.map +1 -0
  152. package/dist/native/useKeyboardControllerSheet.js +118 -0
  153. package/dist/native/useKeyboardControllerSheet.js.map +1 -0
  154. package/dist/native/useSafeAreaInsets.js +25 -0
  155. package/dist/native/useSafeAreaInsets.js.map +1 -0
  156. package/dist/native/useSheet.js +3 -0
  157. package/dist/native/useSheet.js.map +1 -0
  158. package/dist/native/useSheetController.js +14 -0
  159. package/dist/native/useSheetController.js.map +1 -0
  160. package/dist/native/useSheetOffscreenSize.js +36 -0
  161. package/dist/native/useSheetOffscreenSize.js.map +1 -0
  162. package/dist/native/useSheetOpenState.js +25 -0
  163. package/dist/native/useSheetOpenState.js.map +1 -0
  164. package/dist/native/useSheetProviderProps.js +165 -0
  165. package/dist/native/useSheetProviderProps.js.map +1 -0
  166. package/dist/native/useSheetScrollViewGestures.js +131 -0
  167. package/dist/native/useSheetScrollViewGestures.js.map +1 -0
  168. package/dist/native/webViewport.js +98 -0
  169. package/dist/native/webViewport.js.map +1 -0
  170. package/package.json +46 -49
  171. package/src/GestureDetectorWrapper.tsx +1 -1
  172. package/src/Sheet.tsx +4 -4
  173. package/src/SheetContext.tsx +2 -2
  174. package/src/SheetController.d.ts +7 -0
  175. package/src/SheetController.d.ts.map +1 -0
  176. package/src/SheetController.js +38 -0
  177. package/src/SheetController.js.map +1 -0
  178. package/src/SheetController.tsx +2 -2
  179. package/src/SheetImplementationCustom.tsx +14 -14
  180. package/src/SheetScrollView.tsx +6 -6
  181. package/src/controller.ts +2 -2
  182. package/src/createSheet.tsx +9 -9
  183. package/src/index.ts +12 -12
  184. package/src/nativeSheet.tsx +4 -4
  185. package/src/useGestureHandlerPan.tsx +3 -3
  186. package/src/useKeyboardControllerSheet.native.ts +1 -1
  187. package/src/useKeyboardControllerSheet.ts +2 -2
  188. package/src/useSafeAreaInsets.native.ts +1 -1
  189. package/src/useSheet.tsx +1 -1
  190. package/src/useSheetController.d.ts +20 -0
  191. package/src/useSheetController.d.ts.map +1 -0
  192. package/src/useSheetController.js +14 -0
  193. package/src/useSheetController.js.map +1 -0
  194. package/src/useSheetOffscreenSize.tsx +1 -1
  195. package/src/useSheetOpenState.tsx +2 -2
  196. package/src/useSheetProviderProps.tsx +2 -2
  197. package/src/useSheetScrollViewGestures.native.ts +1 -1
  198. package/src/useSheetScrollViewGestures.ts +1 -1
  199. package/types/GestureDetectorWrapper.d.ts +1 -1
  200. package/types/GestureDetectorWrapper.d.ts.map +1 -1
  201. package/types/GestureSheetContext.d.ts +1 -1
  202. package/types/GestureSheetContext.d.ts.map +1 -1
  203. package/types/Sheet.d.ts +81 -89
  204. package/types/Sheet.d.ts.map +1 -1
  205. package/types/SheetContext.d.ts +5 -5
  206. package/types/SheetContext.d.ts.map +1 -1
  207. package/types/SheetController.d.ts +3 -2
  208. package/types/SheetController.d.ts.map +1 -1
  209. package/types/SheetImplementationCustom.d.ts +3 -3
  210. package/types/SheetImplementationCustom.d.ts.map +1 -1
  211. package/types/SheetScrollView.d.ts +6 -6
  212. package/types/controller.d.ts +2 -2
  213. package/types/controller.d.ts.map +1 -1
  214. package/types/createSheet.d.ts +85 -85
  215. package/types/createSheet.d.ts.map +1 -1
  216. package/types/index.d.ts +12 -12
  217. package/types/index.d.ts.map +1 -1
  218. package/types/nativeSheet.d.ts +1 -1
  219. package/types/nativeSheet.d.ts.map +1 -1
  220. package/types/useGestureHandlerPan.d.ts +1 -1
  221. package/types/useGestureHandlerPan.d.ts.map +1 -1
  222. package/types/useKeyboardControllerSheet.d.ts +1 -1
  223. package/types/useKeyboardControllerSheet.d.ts.map +1 -1
  224. package/types/useKeyboardControllerSheet.native.d.ts +1 -1
  225. package/types/useKeyboardControllerSheet.native.d.ts.map +1 -1
  226. package/types/useSafeAreaInsets.native.d.ts +1 -1
  227. package/types/useSafeAreaInsets.native.d.ts.map +1 -1
  228. package/types/useSheet.d.ts +1 -1
  229. package/types/useSheet.d.ts.map +1 -1
  230. package/types/useSheetOffscreenSize.d.ts +1 -1
  231. package/types/useSheetOffscreenSize.d.ts.map +1 -1
  232. package/types/useSheetOpenState.d.ts +2 -2
  233. package/types/useSheetOpenState.d.ts.map +1 -1
  234. package/types/useSheetProviderProps.d.ts +3 -3
  235. package/types/useSheetProviderProps.d.ts.map +1 -1
  236. package/types/useSheetScrollViewGestures.d.ts +1 -1
  237. package/types/useSheetScrollViewGestures.d.ts.map +1 -1
  238. package/types/useSheetScrollViewGestures.native.d.ts +1 -1
  239. package/types/useSheetScrollViewGestures.native.d.ts.map +1 -1
  240. package/controller/index.cjs +0 -2
  241. package/controller/index.d.ts +0 -5
  242. package/controller/index.js +0 -2
  243. package/controller/index.native.cjs +0 -2
  244. package/controller/index.native.js +0 -2
  245. package/dist/cjs/GestureDetectorWrapper.cjs +0 -54
  246. package/dist/cjs/GestureDetectorWrapper.native.js +0 -58
  247. package/dist/cjs/GestureDetectorWrapper.native.js.map +0 -1
  248. package/dist/cjs/GestureSheetContext.cjs +0 -54
  249. package/dist/cjs/GestureSheetContext.native.js +0 -58
  250. package/dist/cjs/GestureSheetContext.native.js.map +0 -1
  251. package/dist/cjs/Sheet.cjs +0 -119
  252. package/dist/cjs/Sheet.native.js +0 -122
  253. package/dist/cjs/Sheet.native.js.map +0 -1
  254. package/dist/cjs/SheetContext.cjs +0 -34
  255. package/dist/cjs/SheetContext.native.js +0 -37
  256. package/dist/cjs/SheetContext.native.js.map +0 -1
  257. package/dist/cjs/SheetController.cjs +0 -73
  258. package/dist/cjs/SheetController.native.js +0 -79
  259. package/dist/cjs/SheetController.native.js.map +0 -1
  260. package/dist/cjs/SheetImplementationCustom.cjs +0 -652
  261. package/dist/cjs/SheetImplementationCustom.native.js +0 -694
  262. package/dist/cjs/SheetImplementationCustom.native.js.map +0 -1
  263. package/dist/cjs/SheetScrollView.cjs +0 -337
  264. package/dist/cjs/SheetScrollView.native.js +0 -348
  265. package/dist/cjs/SheetScrollView.native.js.map +0 -1
  266. package/dist/cjs/constants.cjs +0 -34
  267. package/dist/cjs/constants.native.js +0 -37
  268. package/dist/cjs/constants.native.js.map +0 -1
  269. package/dist/cjs/contexts.cjs +0 -44
  270. package/dist/cjs/contexts.native.js +0 -47
  271. package/dist/cjs/contexts.native.js.map +0 -1
  272. package/dist/cjs/controller.cjs +0 -31
  273. package/dist/cjs/controller.native.js +0 -34
  274. package/dist/cjs/controller.native.js.map +0 -1
  275. package/dist/cjs/createSheet.cjs +0 -194
  276. package/dist/cjs/createSheet.native.js +0 -204
  277. package/dist/cjs/createSheet.native.js.map +0 -1
  278. package/dist/cjs/gestureState.cjs +0 -52
  279. package/dist/cjs/gestureState.native.js +0 -56
  280. package/dist/cjs/gestureState.native.js.map +0 -1
  281. package/dist/cjs/helpers.cjs +0 -35
  282. package/dist/cjs/helpers.native.js +0 -39
  283. package/dist/cjs/helpers.native.js.map +0 -1
  284. package/dist/cjs/index.cjs +0 -41
  285. package/dist/cjs/index.native.js +0 -44
  286. package/dist/cjs/index.native.js.map +0 -1
  287. package/dist/cjs/keyboardAvoidance.cjs +0 -93
  288. package/dist/cjs/keyboardAvoidance.native.js +0 -99
  289. package/dist/cjs/keyboardAvoidance.native.js.map +0 -1
  290. package/dist/cjs/nativeSheet.cjs +0 -99
  291. package/dist/cjs/nativeSheet.native.js +0 -109
  292. package/dist/cjs/nativeSheet.native.js.map +0 -1
  293. package/dist/cjs/setupGestureHandler.cjs +0 -55
  294. package/dist/cjs/setupGestureHandler.native.js +0 -60
  295. package/dist/cjs/setupGestureHandler.native.js.map +0 -1
  296. package/dist/cjs/types.cjs +0 -18
  297. package/dist/cjs/types.native.js +0 -21
  298. package/dist/cjs/types.native.js.map +0 -1
  299. package/dist/cjs/useGestureHandlerPan.cjs +0 -274
  300. package/dist/cjs/useGestureHandlerPan.native.js +0 -286
  301. package/dist/cjs/useGestureHandlerPan.native.js.map +0 -1
  302. package/dist/cjs/useKeyboardControllerSheet.cjs +0 -102
  303. package/dist/cjs/useKeyboardControllerSheet.native.js +0 -132
  304. package/dist/cjs/useKeyboardControllerSheet.native.js.map +0 -1
  305. package/dist/cjs/useSafeAreaInsets.cjs +0 -44
  306. package/dist/cjs/useSafeAreaInsets.native.js +0 -48
  307. package/dist/cjs/useSafeAreaInsets.native.js.map +0 -1
  308. package/dist/cjs/useSheet.cjs +0 -29
  309. package/dist/cjs/useSheet.native.js +0 -34
  310. package/dist/cjs/useSheet.native.js.map +0 -1
  311. package/dist/cjs/useSheetController.cjs +0 -52
  312. package/dist/cjs/useSheetController.native.js +0 -55
  313. package/dist/cjs/useSheetController.native.js.map +0 -1
  314. package/dist/cjs/useSheetOffscreenSize.cjs +0 -63
  315. package/dist/cjs/useSheetOffscreenSize.native.js +0 -70
  316. package/dist/cjs/useSheetOffscreenSize.native.js.map +0 -1
  317. package/dist/cjs/useSheetOpenState.cjs +0 -52
  318. package/dist/cjs/useSheetOpenState.native.js +0 -58
  319. package/dist/cjs/useSheetOpenState.native.js.map +0 -1
  320. package/dist/cjs/useSheetProviderProps.cjs +0 -181
  321. package/dist/cjs/useSheetProviderProps.native.js +0 -196
  322. package/dist/cjs/useSheetProviderProps.native.js.map +0 -1
  323. package/dist/cjs/useSheetScrollViewGestures.cjs +0 -191
  324. package/dist/cjs/useSheetScrollViewGestures.native.js +0 -163
  325. package/dist/cjs/useSheetScrollViewGestures.native.js.map +0 -1
  326. package/dist/cjs/webViewport.cjs +0 -75
  327. package/dist/cjs/webViewport.native.js +0 -81
  328. package/dist/cjs/webViewport.native.js.map +0 -1
  329. package/dist/esm/GestureDetectorWrapper.mjs +0 -29
  330. package/dist/esm/GestureDetectorWrapper.mjs.map +0 -1
  331. package/dist/esm/GestureDetectorWrapper.native.js +0 -30
  332. package/dist/esm/GestureDetectorWrapper.native.js.map +0 -1
  333. package/dist/esm/GestureSheetContext.mjs +0 -28
  334. package/dist/esm/GestureSheetContext.mjs.map +0 -1
  335. package/dist/esm/GestureSheetContext.native.js +0 -29
  336. package/dist/esm/GestureSheetContext.native.js.map +0 -1
  337. package/dist/esm/Sheet.mjs +0 -89
  338. package/dist/esm/Sheet.mjs.map +0 -1
  339. package/dist/esm/Sheet.native.js +0 -89
  340. package/dist/esm/Sheet.native.js.map +0 -1
  341. package/dist/esm/SheetContext.mjs +0 -6
  342. package/dist/esm/SheetContext.mjs.map +0 -1
  343. package/dist/esm/SheetContext.native.js +0 -6
  344. package/dist/esm/SheetContext.native.js.map +0 -1
  345. package/dist/esm/SheetController.mjs +0 -37
  346. package/dist/esm/SheetController.mjs.map +0 -1
  347. package/dist/esm/SheetController.native.js +0 -40
  348. package/dist/esm/SheetController.native.js.map +0 -1
  349. package/dist/esm/SheetImplementationCustom.mjs +0 -611
  350. package/dist/esm/SheetImplementationCustom.mjs.map +0 -1
  351. package/dist/esm/SheetImplementationCustom.native.js +0 -643
  352. package/dist/esm/SheetImplementationCustom.native.js.map +0 -1
  353. package/dist/esm/SheetScrollView.mjs +0 -301
  354. package/dist/esm/SheetScrollView.mjs.map +0 -1
  355. package/dist/esm/SheetScrollView.native.js +0 -309
  356. package/dist/esm/SheetScrollView.native.js.map +0 -1
  357. package/dist/esm/constants.mjs +0 -6
  358. package/dist/esm/constants.mjs.map +0 -1
  359. package/dist/esm/constants.native.js +0 -6
  360. package/dist/esm/constants.native.js.map +0 -1
  361. package/dist/esm/contexts.mjs +0 -7
  362. package/dist/esm/contexts.mjs.map +0 -1
  363. package/dist/esm/contexts.native.js +0 -7
  364. package/dist/esm/contexts.native.js.map +0 -1
  365. package/dist/esm/controller.mjs +0 -4
  366. package/dist/esm/controller.mjs.map +0 -1
  367. package/dist/esm/controller.native.js +0 -4
  368. package/dist/esm/controller.native.js.map +0 -1
  369. package/dist/esm/createSheet.mjs +0 -168
  370. package/dist/esm/createSheet.mjs.map +0 -1
  371. package/dist/esm/createSheet.native.js +0 -176
  372. package/dist/esm/createSheet.native.js.map +0 -1
  373. package/dist/esm/gestureState.mjs +0 -24
  374. package/dist/esm/gestureState.mjs.map +0 -1
  375. package/dist/esm/gestureState.native.js +0 -25
  376. package/dist/esm/gestureState.native.js.map +0 -1
  377. package/dist/esm/helpers.mjs +0 -10
  378. package/dist/esm/helpers.mjs.map +0 -1
  379. package/dist/esm/helpers.native.js +0 -11
  380. package/dist/esm/helpers.native.js.map +0 -1
  381. package/dist/esm/index.mjs +0 -14
  382. package/dist/esm/index.mjs.map +0 -1
  383. package/dist/esm/index.native.js +0 -14
  384. package/dist/esm/index.native.js.map +0 -1
  385. package/dist/esm/keyboardAvoidance.mjs +0 -66
  386. package/dist/esm/keyboardAvoidance.mjs.map +0 -1
  387. package/dist/esm/keyboardAvoidance.native.js +0 -69
  388. package/dist/esm/keyboardAvoidance.native.js.map +0 -1
  389. package/dist/esm/nativeSheet.mjs +0 -73
  390. package/dist/esm/nativeSheet.mjs.map +0 -1
  391. package/dist/esm/nativeSheet.native.js +0 -80
  392. package/dist/esm/nativeSheet.native.js.map +0 -1
  393. package/dist/esm/setupGestureHandler.mjs +0 -29
  394. package/dist/esm/setupGestureHandler.mjs.map +0 -1
  395. package/dist/esm/setupGestureHandler.native.js +0 -31
  396. package/dist/esm/setupGestureHandler.native.js.map +0 -1
  397. package/dist/esm/types.mjs +0 -2
  398. package/dist/esm/types.mjs.map +0 -1
  399. package/dist/esm/types.native.js +0 -2
  400. package/dist/esm/types.native.js.map +0 -1
  401. package/dist/esm/useGestureHandlerPan.mjs +0 -249
  402. package/dist/esm/useGestureHandlerPan.mjs.map +0 -1
  403. package/dist/esm/useGestureHandlerPan.native.js +0 -258
  404. package/dist/esm/useGestureHandlerPan.native.js.map +0 -1
  405. package/dist/esm/useKeyboardControllerSheet.mjs +0 -77
  406. package/dist/esm/useKeyboardControllerSheet.mjs.map +0 -1
  407. package/dist/esm/useKeyboardControllerSheet.native.js +0 -104
  408. package/dist/esm/useKeyboardControllerSheet.native.js.map +0 -1
  409. package/dist/esm/useSafeAreaInsets.mjs +0 -7
  410. package/dist/esm/useSafeAreaInsets.mjs.map +0 -1
  411. package/dist/esm/useSafeAreaInsets.native.js +0 -8
  412. package/dist/esm/useSafeAreaInsets.native.js.map +0 -1
  413. package/dist/esm/useSheet.mjs +0 -4
  414. package/dist/esm/useSheet.mjs.map +0 -1
  415. package/dist/esm/useSheet.native.js +0 -6
  416. package/dist/esm/useSheet.native.js.map +0 -1
  417. package/dist/esm/useSheetController.mjs +0 -15
  418. package/dist/esm/useSheetController.mjs.map +0 -1
  419. package/dist/esm/useSheetController.native.js +0 -15
  420. package/dist/esm/useSheetController.native.js.map +0 -1
  421. package/dist/esm/useSheetOffscreenSize.mjs +0 -38
  422. package/dist/esm/useSheetOffscreenSize.mjs.map +0 -1
  423. package/dist/esm/useSheetOffscreenSize.native.js +0 -42
  424. package/dist/esm/useSheetOffscreenSize.native.js.map +0 -1
  425. package/dist/esm/useSheetOpenState.mjs +0 -27
  426. package/dist/esm/useSheetOpenState.mjs.map +0 -1
  427. package/dist/esm/useSheetOpenState.native.js +0 -30
  428. package/dist/esm/useSheetOpenState.native.js.map +0 -1
  429. package/dist/esm/useSheetProviderProps.mjs +0 -145
  430. package/dist/esm/useSheetProviderProps.mjs.map +0 -1
  431. package/dist/esm/useSheetProviderProps.native.js +0 -157
  432. package/dist/esm/useSheetProviderProps.native.js.map +0 -1
  433. package/dist/esm/useSheetScrollViewGestures.mjs +0 -166
  434. package/dist/esm/useSheetScrollViewGestures.mjs.map +0 -1
  435. package/dist/esm/useSheetScrollViewGestures.native.js +0 -135
  436. package/dist/esm/useSheetScrollViewGestures.native.js.map +0 -1
  437. package/dist/esm/webViewport.mjs +0 -43
  438. package/dist/esm/webViewport.mjs.map +0 -1
  439. package/dist/esm/webViewport.native.js +0 -46
  440. package/dist/esm/webViewport.native.js.map +0 -1
  441. package/dist/jsx/GestureDetectorWrapper.mjs +0 -29
  442. package/dist/jsx/GestureDetectorWrapper.mjs.map +0 -1
  443. package/dist/jsx/GestureDetectorWrapper.native.js +0 -58
  444. package/dist/jsx/GestureDetectorWrapper.native.js.map +0 -1
  445. package/dist/jsx/GestureSheetContext.mjs +0 -28
  446. package/dist/jsx/GestureSheetContext.mjs.map +0 -1
  447. package/dist/jsx/GestureSheetContext.native.js +0 -58
  448. package/dist/jsx/GestureSheetContext.native.js.map +0 -1
  449. package/dist/jsx/Sheet.mjs +0 -89
  450. package/dist/jsx/Sheet.mjs.map +0 -1
  451. package/dist/jsx/Sheet.native.js +0 -122
  452. package/dist/jsx/Sheet.native.js.map +0 -1
  453. package/dist/jsx/SheetContext.mjs +0 -6
  454. package/dist/jsx/SheetContext.mjs.map +0 -1
  455. package/dist/jsx/SheetContext.native.js +0 -37
  456. package/dist/jsx/SheetContext.native.js.map +0 -1
  457. package/dist/jsx/SheetController.mjs +0 -37
  458. package/dist/jsx/SheetController.mjs.map +0 -1
  459. package/dist/jsx/SheetController.native.js +0 -79
  460. package/dist/jsx/SheetController.native.js.map +0 -1
  461. package/dist/jsx/SheetImplementationCustom.mjs +0 -611
  462. package/dist/jsx/SheetImplementationCustom.mjs.map +0 -1
  463. package/dist/jsx/SheetImplementationCustom.native.js +0 -694
  464. package/dist/jsx/SheetImplementationCustom.native.js.map +0 -1
  465. package/dist/jsx/SheetScrollView.mjs +0 -301
  466. package/dist/jsx/SheetScrollView.mjs.map +0 -1
  467. package/dist/jsx/SheetScrollView.native.js +0 -348
  468. package/dist/jsx/SheetScrollView.native.js.map +0 -1
  469. package/dist/jsx/constants.mjs +0 -6
  470. package/dist/jsx/constants.mjs.map +0 -1
  471. package/dist/jsx/constants.native.js +0 -37
  472. package/dist/jsx/constants.native.js.map +0 -1
  473. package/dist/jsx/contexts.mjs +0 -7
  474. package/dist/jsx/contexts.mjs.map +0 -1
  475. package/dist/jsx/contexts.native.js +0 -47
  476. package/dist/jsx/contexts.native.js.map +0 -1
  477. package/dist/jsx/controller.mjs +0 -4
  478. package/dist/jsx/controller.mjs.map +0 -1
  479. package/dist/jsx/controller.native.js +0 -34
  480. package/dist/jsx/controller.native.js.map +0 -1
  481. package/dist/jsx/createSheet.mjs +0 -168
  482. package/dist/jsx/createSheet.mjs.map +0 -1
  483. package/dist/jsx/createSheet.native.js +0 -204
  484. package/dist/jsx/createSheet.native.js.map +0 -1
  485. package/dist/jsx/gestureState.mjs +0 -24
  486. package/dist/jsx/gestureState.mjs.map +0 -1
  487. package/dist/jsx/gestureState.native.js +0 -56
  488. package/dist/jsx/gestureState.native.js.map +0 -1
  489. package/dist/jsx/helpers.mjs +0 -10
  490. package/dist/jsx/helpers.mjs.map +0 -1
  491. package/dist/jsx/helpers.native.js +0 -39
  492. package/dist/jsx/helpers.native.js.map +0 -1
  493. package/dist/jsx/index.js +0 -14
  494. package/dist/jsx/index.js.map +0 -1
  495. package/dist/jsx/index.mjs +0 -14
  496. package/dist/jsx/index.mjs.map +0 -1
  497. package/dist/jsx/index.native.js +0 -44
  498. package/dist/jsx/index.native.js.map +0 -1
  499. package/dist/jsx/keyboardAvoidance.mjs +0 -66
  500. package/dist/jsx/keyboardAvoidance.mjs.map +0 -1
  501. package/dist/jsx/keyboardAvoidance.native.js +0 -99
  502. package/dist/jsx/keyboardAvoidance.native.js.map +0 -1
  503. package/dist/jsx/nativeSheet.mjs +0 -73
  504. package/dist/jsx/nativeSheet.mjs.map +0 -1
  505. package/dist/jsx/nativeSheet.native.js +0 -109
  506. package/dist/jsx/nativeSheet.native.js.map +0 -1
  507. package/dist/jsx/setupGestureHandler.mjs +0 -29
  508. package/dist/jsx/setupGestureHandler.mjs.map +0 -1
  509. package/dist/jsx/setupGestureHandler.native.js +0 -60
  510. package/dist/jsx/setupGestureHandler.native.js.map +0 -1
  511. package/dist/jsx/types.mjs +0 -2
  512. package/dist/jsx/types.mjs.map +0 -1
  513. package/dist/jsx/types.native.js +0 -21
  514. package/dist/jsx/types.native.js.map +0 -1
  515. package/dist/jsx/useGestureHandlerPan.mjs +0 -249
  516. package/dist/jsx/useGestureHandlerPan.mjs.map +0 -1
  517. package/dist/jsx/useGestureHandlerPan.native.js +0 -286
  518. package/dist/jsx/useGestureHandlerPan.native.js.map +0 -1
  519. package/dist/jsx/useKeyboardControllerSheet.mjs +0 -77
  520. package/dist/jsx/useKeyboardControllerSheet.mjs.map +0 -1
  521. package/dist/jsx/useKeyboardControllerSheet.native.js +0 -132
  522. package/dist/jsx/useKeyboardControllerSheet.native.js.map +0 -1
  523. package/dist/jsx/useSafeAreaInsets.mjs +0 -7
  524. package/dist/jsx/useSafeAreaInsets.mjs.map +0 -1
  525. package/dist/jsx/useSafeAreaInsets.native.js +0 -48
  526. package/dist/jsx/useSafeAreaInsets.native.js.map +0 -1
  527. package/dist/jsx/useSheet.mjs +0 -4
  528. package/dist/jsx/useSheet.mjs.map +0 -1
  529. package/dist/jsx/useSheet.native.js +0 -34
  530. package/dist/jsx/useSheet.native.js.map +0 -1
  531. package/dist/jsx/useSheetController.mjs +0 -15
  532. package/dist/jsx/useSheetController.mjs.map +0 -1
  533. package/dist/jsx/useSheetController.native.js +0 -55
  534. package/dist/jsx/useSheetController.native.js.map +0 -1
  535. package/dist/jsx/useSheetOffscreenSize.mjs +0 -38
  536. package/dist/jsx/useSheetOffscreenSize.mjs.map +0 -1
  537. package/dist/jsx/useSheetOffscreenSize.native.js +0 -70
  538. package/dist/jsx/useSheetOffscreenSize.native.js.map +0 -1
  539. package/dist/jsx/useSheetOpenState.mjs +0 -27
  540. package/dist/jsx/useSheetOpenState.mjs.map +0 -1
  541. package/dist/jsx/useSheetOpenState.native.js +0 -58
  542. package/dist/jsx/useSheetOpenState.native.js.map +0 -1
  543. package/dist/jsx/useSheetProviderProps.mjs +0 -145
  544. package/dist/jsx/useSheetProviderProps.mjs.map +0 -1
  545. package/dist/jsx/useSheetProviderProps.native.js +0 -196
  546. package/dist/jsx/useSheetProviderProps.native.js.map +0 -1
  547. package/dist/jsx/useSheetScrollViewGestures.mjs +0 -166
  548. package/dist/jsx/useSheetScrollViewGestures.mjs.map +0 -1
  549. package/dist/jsx/useSheetScrollViewGestures.native.js +0 -163
  550. package/dist/jsx/useSheetScrollViewGestures.native.js.map +0 -1
  551. package/dist/jsx/webViewport.mjs +0 -43
  552. package/dist/jsx/webViewport.mjs.map +0 -1
  553. package/dist/jsx/webViewport.native.js +0 -81
  554. package/dist/jsx/webViewport.native.js.map +0 -1
  555. package/setup-gesture-handler/index.cjs +0 -2
  556. package/setup-gesture-handler/index.js +0 -2
  557. package/setup-gesture-handler/index.native.cjs +0 -2
  558. package/setup-gesture-handler/index.native.js +0 -2
  559. package/setup-gesture-handler.cjs +0 -1
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+ /**
3
+ * Web implementation of the keyboard controller sheet hook.
4
+ *
5
+ * Mobile browsers don't expose a keyboard API, but they do resize the
6
+ * VisualViewport when the soft keyboard opens. We use the viewport shrink
7
+ * (`clientHeight - visualViewport.height`) to detect the keyboard, then feed the
8
+ * bottom layout inset (`clientHeight - (offsetTop + height)`) into
9
+ * SheetImplementationCustom. The bottom inset accounts for iOS Safari panning
10
+ * the visual viewport during focus, so the sheet doesn't over-lift.
11
+ *
12
+ * Without this, a bottom sheet on mobile web stays pinned behind the keyboard:
13
+ * react-native-web's Dimensions tracks the (shrinking) VisualViewport, so any
14
+ * content sized off window dimensions collapses while the sheet's bottom stays
15
+ * occluded. See SheetImplementationCustom's activePositions / keyboardOccludedHeight.
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.useKeyboardControllerSheet = useKeyboardControllerSheet;
19
+ const react_1 = require("react");
20
+ const constants_1 = require("@hanzogui/constants");
21
+ const webViewport_ts_1 = require("./webViewport.js");
22
+ function useKeyboardControllerSheet(options) {
23
+ const { enabled } = options;
24
+ // initialize from the CURRENT viewport, not blindly from 0/false. when the
25
+ // sheet opens with the soft keyboard already up (e.g. it was raised by a field
26
+ // on the page behind, or by an autofocus whose keyboard wins the race against
27
+ // the first layout), a false initial value makes the sheet's very first render
28
+ // believe the keyboard is down — it captures a keyboard-free baseline from a
29
+ // keyboard-shrunk layout and the anchor/seed machinery has to recover. reading
30
+ // the viewport synchronously here removes that first-render race: the sheet
31
+ // knows the keyboard is up on render 1 and takes the seed path deterministically.
32
+ const [keyboardHeight, setKeyboardHeight] = (0, react_1.useState)(() => constants_1.isWeb && enabled && typeof window !== 'undefined' && window.visualViewport
33
+ ? (() => {
34
+ const resizeHeight = (0, webViewport_ts_1.getWebKeyboardResizeHeight)();
35
+ return resizeHeight >= webViewport_ts_1.MIN_KEYBOARD_HEIGHT &&
36
+ (0, webViewport_ts_1.isEditableElement)(document.activeElement)
37
+ ? (0, webViewport_ts_1.getWebKeyboardBottomInset)()
38
+ : 0;
39
+ })()
40
+ : 0);
41
+ const [isKeyboardVisible, setIsKeyboardVisible] = (0, react_1.useState)(() => keyboardHeight > 0);
42
+ // action-sheet pattern: pause keyboard hide events during drag so the sheet
43
+ // position doesn't revert mid-gesture when a TextInput blurs.
44
+ const pauseKeyboardHandler = (0, react_1.useRef)(false);
45
+ const pendingHide = (0, react_1.useRef)(false);
46
+ // live mirror of isKeyboardVisible so the listener can read it without
47
+ // re-subscribing on every toggle.
48
+ const isVisibleRef = (0, react_1.useRef)(false);
49
+ isVisibleRef.current = isKeyboardVisible;
50
+ const dismissKeyboard = (0, react_1.useCallback)(() => {
51
+ if (typeof document === 'undefined')
52
+ return;
53
+ const active = document.activeElement;
54
+ if ((0, webViewport_ts_1.isEditableElement)(active)) {
55
+ active?.blur?.();
56
+ }
57
+ }, []);
58
+ const flushPendingHide = (0, react_1.useCallback)(() => {
59
+ if (pendingHide.current) {
60
+ pendingHide.current = false;
61
+ setIsKeyboardVisible(false);
62
+ setKeyboardHeight(0);
63
+ }
64
+ }, []);
65
+ (0, react_1.useEffect)(() => {
66
+ if (!constants_1.isWeb || !enabled)
67
+ return;
68
+ if (typeof window === 'undefined')
69
+ return;
70
+ const vv = window.visualViewport;
71
+ if (!vv)
72
+ return;
73
+ const update = () => {
74
+ const resizeHeight = (0, webViewport_ts_1.getWebKeyboardResizeHeight)();
75
+ const height = (0, webViewport_ts_1.getWebKeyboardBottomInset)();
76
+ const tall = resizeHeight >= webViewport_ts_1.MIN_KEYBOARD_HEIGHT;
77
+ // require an editable element focused to *show* — this rules out URL-bar
78
+ // collapse and other viewport changes that aren't a keyboard. but stay
79
+ // visible while the viewport remains shrunk even if focus momentarily
80
+ // moves to a non-editable element (e.g. tapping between two inputs fires
81
+ // focusout→focusin), so the sheet doesn't flicker mid-transition.
82
+ const editableFocused = (0, webViewport_ts_1.isEditableElement)(document.activeElement);
83
+ const visible = tall && (editableFocused || isVisibleRef.current);
84
+ if (!visible) {
85
+ // suppress hide during an active drag so positions stay frozen; the
86
+ // drag-end flush reconciles the real state.
87
+ if (pauseKeyboardHandler.current && isVisibleRef.current) {
88
+ pendingHide.current = true;
89
+ return;
90
+ }
91
+ setIsKeyboardVisible(false);
92
+ setKeyboardHeight(0);
93
+ return;
94
+ }
95
+ pendingHide.current = false;
96
+ setIsKeyboardVisible(true);
97
+ setKeyboardHeight((prev) => (prev === height ? prev : height));
98
+ };
99
+ // resize tracks keyboard open/close. scroll tracks iOS Safari's focus pan:
100
+ // visualViewport.offsetTop can change after the height has settled, and the
101
+ // sheet cap must move in that same layout coordinate space.
102
+ vv.addEventListener('resize', update);
103
+ vv.addEventListener('scroll', update);
104
+ // focus changes flip editable state without necessarily resizing the viewport
105
+ window.addEventListener('focusin', update);
106
+ window.addEventListener('focusout', update);
107
+ update();
108
+ return () => {
109
+ vv.removeEventListener('resize', update);
110
+ vv.removeEventListener('scroll', update);
111
+ window.removeEventListener('focusin', update);
112
+ window.removeEventListener('focusout', update);
113
+ };
114
+ }, [enabled]);
115
+ return {
116
+ keyboardControllerEnabled: false,
117
+ keyboardHeight,
118
+ isKeyboardVisible,
119
+ dismissKeyboard,
120
+ pauseKeyboardHandler,
121
+ flushPendingHide,
122
+ };
123
+ }
124
+ //# sourceMappingURL=useKeyboardControllerSheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKeyboardControllerSheet.js","sourceRoot":"","sources":["../../src/useKeyboardControllerSheet.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SafeAreaInsetsContext = void 0;
4
+ exports.useSafeAreaInsets = useSafeAreaInsets;
5
+ const tslib_1 = require("tslib");
6
+ const React = tslib_1.__importStar(require("react"));
7
+ // web uses CSS env(safe-area-inset-*) for safe areas, so there is no native
8
+ // safe-area context to read here — the keyboard-avoidance path uses the visual
9
+ // viewport offset instead. this stub keeps the import resolvable on web (where
10
+ // react-native-safe-area-context isn't a dependency) and is the canonical type
11
+ // source for both platform variants.
12
+ exports.SafeAreaInsetsContext = React.createContext(null);
13
+ function useSafeAreaInsets() {
14
+ return null;
15
+ }
16
+ //# sourceMappingURL=useSafeAreaInsets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSafeAreaInsets.js","sourceRoot":"","sources":["../../src/useSafeAreaInsets.ts"],"names":[],"mappings":";;;;;AAAA,MAAY,KAAK,0CAAa;AAS9B,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,qCAAqC;AACxB,QAAA,qBAAqB,GAAG,KAAK,CAAC,aAAa,CAAwB,IAAI,CAAC,CAAA;AAErF;IACE,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSheet = void 0;
4
+ const SheetContext_tsx_1 = require("./SheetContext.js");
5
+ const useSheet = () => (0, SheetContext_tsx_1.useSheetContext)('', undefined);
6
+ exports.useSheet = useSheet;
7
+ //# sourceMappingURL=useSheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSheet.js","sourceRoot":"","sources":["../../src/useSheet.tsx"],"names":[],"mappings":";;;AAAA,wDAAoD;AAE7C,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,IAAA,kCAAe,EAAC,EAAE,EAAE,SAAS,CAAC,CAAA;AAA/C,QAAA,QAAQ,GAAR,QAAQ,CAAuC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SheetControllerContext = exports.useSheetController = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ const useSheetController = () => {
7
+ const controller = react_1.default.useContext(exports.SheetControllerContext);
8
+ const isHidden = controller?.hidden;
9
+ const isShowingNonSheet = isHidden && controller?.open;
10
+ return {
11
+ controller,
12
+ isHidden,
13
+ isShowingNonSheet,
14
+ disableDrag: controller?.disableDrag,
15
+ };
16
+ };
17
+ exports.useSheetController = useSheetController;
18
+ exports.SheetControllerContext = react_1.default.createContext(null);
19
+ //# sourceMappingURL=useSheetController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSheetController.js","sourceRoot":"","sources":["../../src/useSheetController.tsx"],"names":[],"mappings":";;;;AAAA,0DAAyB;AAElB,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,MAAM,UAAU,GAAG,eAAK,CAAC,UAAU,CAAC,QAAA,sBAAsB,CAAC,CAAA;IAC3D,MAAM,QAAQ,GAAG,UAAU,EAAE,MAAM,CAAA;IACnC,MAAM,iBAAiB,GAAG,QAAQ,IAAI,UAAU,EAAE,IAAI,CAAA;IACtD,OAAO;QACL,UAAU;QACV,QAAQ;QACR,iBAAiB;QACjB,WAAW,EAAE,UAAU,EAAE,WAAW;KACrC,CAAA;AACH,CAAC,CAAA;AAVY,QAAA,kBAAkB,GAAlB,kBAAkB,CAU9B;AAEY,QAAA,sBAAsB,GACjC,eAAK,CAAC,aAAa,CAAqC,IAAI,CAAC,CAAA"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSheetOffscreenSize = void 0;
4
+ const useSheetOffscreenSize = ({ snapPoints, position, screenSize, frameSize, snapPointsMode, }) => {
5
+ if (snapPointsMode === 'fit') {
6
+ return 0;
7
+ }
8
+ if (snapPointsMode === 'constant') {
9
+ const maxSize = Number(snapPoints[0]);
10
+ const currentSize = Number(snapPoints[position] ?? 0);
11
+ const offscreenSize = maxSize - currentSize;
12
+ return offscreenSize;
13
+ }
14
+ if (snapPointsMode === 'percent') {
15
+ const maxPercentOpened = Number(snapPoints[0]) / 100;
16
+ const percentOpened = Number(snapPoints[position] ?? 0) / 100;
17
+ const percentHidden = maxPercentOpened - percentOpened;
18
+ const offscreenSize = percentHidden * screenSize;
19
+ return offscreenSize;
20
+ }
21
+ // mixed:
22
+ const maxSnapPoint = snapPoints[0];
23
+ if (maxSnapPoint === 'fit') {
24
+ return 0;
25
+ }
26
+ const maxSize = typeof maxSnapPoint === 'string'
27
+ ? (Number(maxSnapPoint.slice(0, -1)) / 100) * screenSize
28
+ : maxSnapPoint;
29
+ const currentSnapPoint = snapPoints[position] ?? 0;
30
+ const currentSize = typeof currentSnapPoint === 'string'
31
+ ? (Number(currentSnapPoint.slice(0, -1)) / 100) * screenSize
32
+ : currentSnapPoint;
33
+ const offscreenSize = maxSize - currentSize;
34
+ if (Number.isNaN(offscreenSize)) {
35
+ return 0;
36
+ }
37
+ return offscreenSize;
38
+ };
39
+ exports.useSheetOffscreenSize = useSheetOffscreenSize;
40
+ //# sourceMappingURL=useSheetOffscreenSize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSheetOffscreenSize.js","sourceRoot":"","sources":["../../src/useSheetOffscreenSize.tsx"],"names":[],"mappings":";;;AAEO,MAAM,qBAAqB,GAAG,CAAC,EACpC,UAAU,EACV,QAAQ,EACR,UAAU,EACV,SAAS,EACT,cAAc,GACI,EAAE,EAAE;IACtB,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;QACrC,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;QACrD,MAAM,aAAa,GAAG,OAAO,GAAG,WAAW,CAAA;QAC3C,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;QACpD,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAA;QAC7D,MAAM,aAAa,GAAG,gBAAgB,GAAG,aAAa,CAAA;QACtD,MAAM,aAAa,GAAG,aAAa,GAAG,UAAU,CAAA;QAChD,OAAO,aAAa,CAAA;IACtB,CAAC;IAED,SAAS;IACT,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;IAClC,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,OAAO,GACX,OAAO,YAAY,KAAK,QAAQ;QAC9B,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,UAAU;QACxD,CAAC,CAAC,YAAY,CAAA;IAClB,MAAM,gBAAgB,GAAG,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAClD,MAAM,WAAW,GACf,OAAO,gBAAgB,KAAK,QAAQ;QAClC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,UAAU;QAC5D,CAAC,CAAC,gBAAgB,CAAA;IACtB,MAAM,aAAa,GAAG,OAAO,GAAG,WAAW,CAAA;IAC3C,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,CAAA;IACV,CAAC;IACD,OAAO,aAAa,CAAA;AACtB,CAAC,CAAA;AA9CY,QAAA,qBAAqB,GAArB,qBAAqB,CA8CjC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSheetOpenState = void 0;
4
+ const use_controllable_state_1 = require("@hanzogui/use-controllable-state");
5
+ const useSheetController_tsx_1 = require("./useSheetController.js");
6
+ const useSheetOpenState = (props) => {
7
+ const { isHidden, controller } = (0, useSheetController_tsx_1.useSheetController)();
8
+ const onOpenChangeInternal = (val) => {
9
+ controller?.onOpenChange?.(val);
10
+ props.onOpenChange?.(val);
11
+ };
12
+ const propVal = props.preferAdaptParentOpenState
13
+ ? (controller?.open ?? props.open)
14
+ : (props.open ?? controller?.open);
15
+ const [open, setOpen] = (0, use_controllable_state_1.useControllableState)({
16
+ prop: propVal,
17
+ defaultProp: props.defaultOpen ?? false,
18
+ onChange: onOpenChangeInternal,
19
+ strategy: 'most-recent-wins',
20
+ });
21
+ return {
22
+ open,
23
+ setOpen,
24
+ isHidden,
25
+ controller,
26
+ };
27
+ };
28
+ exports.useSheetOpenState = useSheetOpenState;
29
+ //# sourceMappingURL=useSheetOpenState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSheetOpenState.js","sourceRoot":"","sources":["../../src/useSheetOpenState.tsx"],"names":[],"mappings":";;;AAAA,6EAAuE;AAGvE,oEAA6D;AAEtD,MAAM,iBAAiB,GAAG,CAAC,KAAiB,EAAE,EAAE;IACrD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,IAAA,2CAAkB,GAAE,CAAA;IAErD,MAAM,oBAAoB,GAAG,CAAC,GAAY,EAAE,EAAE;QAC5C,UAAU,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAAA;QAC/B,KAAK,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,0BAA0B;QAC9C,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC;QAClC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,UAAU,EAAE,IAAI,CAAC,CAAA;IAEpC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,IAAA,6CAAoB,EAAC;QAC3C,IAAI,EAAE,OAAO;QACb,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,KAAK;QACvC,QAAQ,EAAE,oBAAoB;QAC9B,QAAQ,EAAE,kBAAkB;KAC7B,CAAC,CAAA;IAEF,OAAO;QACL,IAAI;QACJ,OAAO;QACP,QAAQ;QACR,UAAU;KACX,CAAA;AACH,CAAC,CAAA;AAzBY,QAAA,iBAAiB,GAAjB,iBAAiB,CAyB7B"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSheetProviderProps = useSheetProviderProps;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ const core_1 = require("@hanzogui/core");
7
+ const use_constant_1 = require("@hanzogui/use-constant");
8
+ const use_controllable_state_1 = require("@hanzogui/use-controllable-state");
9
+ function useSheetProviderProps(props, state, options = {}) {
10
+ const handleRef = react_1.default.useRef(null);
11
+ const contentRef = react_1.default.useRef(null);
12
+ const [frameSize, setFrameSize] = react_1.default.useState(0);
13
+ const [maxContentSize, setMaxContentSize] = react_1.default.useState(0);
14
+ const snapPointsMode = props.snapPointsMode ?? 'percent';
15
+ const snapPointsProp = props.snapPoints ??
16
+ (snapPointsMode === 'percent'
17
+ ? [80]
18
+ : snapPointsMode === 'constant'
19
+ ? [256]
20
+ : ['fit']);
21
+ const hasFit = snapPointsProp[0] === 'fit';
22
+ const snapPoints = react_1.default.useMemo(() => (props.dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp), [JSON.stringify(snapPointsProp), props.dismissOnSnapToBottom]);
23
+ // lets set -1 to be always the "open = false" position
24
+ const [position_, setPositionImmediate] = (0, use_controllable_state_1.useControllableState)({
25
+ prop: props.position,
26
+ defaultProp: props.defaultPosition || (state.open ? 0 : -1),
27
+ onChange: props.onPositionChange,
28
+ strategy: 'most-recent-wins',
29
+ });
30
+ const position = state.open === false ? -1 : position_;
31
+ const { open } = state;
32
+ const setPosition = react_1.default.useCallback((next) => {
33
+ // close on dismissOnSnapToBottom (and set position so it animates)
34
+ if (props.dismissOnSnapToBottom && next === snapPoints.length - 1) {
35
+ state.setOpen(false);
36
+ }
37
+ else {
38
+ setPositionImmediate(next);
39
+ }
40
+ }, [props.dismissOnSnapToBottom, snapPoints.length, setPositionImmediate, state.setOpen]);
41
+ if (process.env.NODE_ENV === 'development') {
42
+ if (snapPointsMode === 'mixed' &&
43
+ snapPoints.some((p) => {
44
+ if (typeof p === 'string') {
45
+ if (p === 'fit') {
46
+ return false;
47
+ }
48
+ if (p.endsWith('%')) {
49
+ const n = Number(p.slice(0, -1));
50
+ return n < 0 || n > 100;
51
+ }
52
+ return true;
53
+ }
54
+ return typeof p !== 'number' || p < 0;
55
+ })) {
56
+ console.warn('⚠️ Invalid snapPoint given, snapPoints must be positive numeric values, string percentages between 0-100%, or "fit" when snapPointsMode is mixed');
57
+ }
58
+ if (snapPointsMode === 'mixed' && snapPoints.indexOf('fit') > 0) {
59
+ console.warn('⚠️ Invalid snapPoint given, "fit" must be the first/largest snap point when snapPointsMode is mixed');
60
+ }
61
+ if (snapPointsMode === 'fit' &&
62
+ (snapPoints.length !== (props.dismissOnSnapToBottom ? 2 : 1) ||
63
+ snapPoints[0] !== 'fit')) {
64
+ console.warn('⚠️ Invalid snapPoint given, there are no snap points when snapPointsMode is fit');
65
+ }
66
+ if (snapPointsMode === 'constant' &&
67
+ snapPoints.some((p) => typeof p !== 'number' || p < 0)) {
68
+ console.warn('⚠️ Invalid snapPoint given, snapPoints must be positive numeric values when snapPointsMode is constant');
69
+ }
70
+ if (snapPointsMode === 'percent' &&
71
+ snapPoints.some((p) => typeof p !== 'number' || p < 0 || p > 100)) {
72
+ console.warn('⚠️ Invalid snapPoint given, snapPoints must be numeric values between 0 and 100 when snapPointsMode is percent');
73
+ }
74
+ }
75
+ // reset position to fully open on re-open after dismissOnSnapToBottom
76
+ if (open && props.dismissOnSnapToBottom && position === snapPoints.length - 1) {
77
+ setPositionImmediate(0);
78
+ }
79
+ // open must set position
80
+ const shouldSetPositionOpen = open && position < 0;
81
+ react_1.default.useEffect(() => {
82
+ if (shouldSetPositionOpen) {
83
+ setPosition(0);
84
+ }
85
+ }, [setPosition, shouldSetPositionOpen]);
86
+ const { animationDriver } = (0, core_1.useConfiguration)();
87
+ if (!animationDriver) {
88
+ throw new Error(process.env.NODE_ENV === 'production'
89
+ ? `❌ 008`
90
+ : 'Must set animations in hanzogui.config.ts');
91
+ }
92
+ const scrollBridge = (0, use_constant_1.useConstant)(() => {
93
+ const parentDragListeners = new Set();
94
+ const bridge = {
95
+ hasScrollableContent: false,
96
+ enabled: false,
97
+ y: 0,
98
+ paneY: 0,
99
+ paneMinY: 0,
100
+ scrollStartY: -1,
101
+ drag: () => { },
102
+ release: () => { },
103
+ scrollLock: false,
104
+ isParentDragging: false,
105
+ onParentDragging: (cb) => {
106
+ parentDragListeners.add(cb);
107
+ return () => {
108
+ parentDragListeners.delete(cb);
109
+ };
110
+ },
111
+ setParentDragging: (val) => {
112
+ if (val !== bridge.isParentDragging) {
113
+ bridge.isParentDragging = val;
114
+ parentDragListeners.forEach((cb) => cb(val));
115
+ }
116
+ },
117
+ };
118
+ return bridge;
119
+ });
120
+ // Handle both new disableRemoveScroll and deprecated forceRemoveScrollEnabled
121
+ let disableRemoveScroll;
122
+ if (props.disableRemoveScroll !== undefined) {
123
+ // New prop: disableRemoveScroll={true} means RemoveScroll is disabled
124
+ disableRemoveScroll = props.disableRemoveScroll || !open || !props.modal;
125
+ }
126
+ else if (props.forceRemoveScrollEnabled !== undefined) {
127
+ // Deprecated prop: forceRemoveScrollEnabled can override the default
128
+ if (process.env.NODE_ENV === 'development') {
129
+ console.warn('[Sheet] forceRemoveScrollEnabled is deprecated. Use disableRemoveScroll instead.');
130
+ }
131
+ disableRemoveScroll = !props.forceRemoveScrollEnabled;
132
+ }
133
+ else {
134
+ // Default: disabled when not open or not modal
135
+ disableRemoveScroll = !open || !props.modal;
136
+ }
137
+ const maxSnapPoint = snapPoints[0];
138
+ const screenSize = snapPointsMode === 'percent'
139
+ ? frameSize / ((typeof maxSnapPoint === 'number' ? maxSnapPoint : 100) / 100)
140
+ : maxContentSize;
141
+ const providerProps = {
142
+ screenSize,
143
+ maxSnapPoint,
144
+ disableRemoveScroll,
145
+ scrollBridge,
146
+ modal: !!props.modal,
147
+ open: state.open,
148
+ setOpen: state.setOpen,
149
+ hidden: !!state.isHidden,
150
+ contentRef,
151
+ handleRef,
152
+ frameSize,
153
+ setFrameSize,
154
+ dismissOnOverlayPress: props.dismissOnOverlayPress ?? true,
155
+ dismissOnSnapToBottom: props.dismissOnSnapToBottom ?? false,
156
+ onOverlayComponent: options.onOverlayComponent,
157
+ scope: props.__scopeSheet,
158
+ hasFit,
159
+ position,
160
+ snapPoints,
161
+ snapPointsMode,
162
+ setMaxContentSize,
163
+ setPosition,
164
+ setPositionImmediate,
165
+ onlyShowFrame: false,
166
+ };
167
+ return providerProps;
168
+ }
169
+ //# sourceMappingURL=useSheetProviderProps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSheetProviderProps.js","sourceRoot":"","sources":["../../src/useSheetProviderProps.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useSheetScrollViewGestures = useSheetScrollViewGestures;
4
+ const react_1 = require("react");
5
+ function useSheetScrollViewGestures({ scrollRef, scrollBridge, hasScrollableContent, onManualScroll, }) {
6
+ const state = (0, react_1.useRef)({
7
+ startY: 0,
8
+ lastY: 0,
9
+ owner: 'none',
10
+ hadPanOwner: false,
11
+ panDragOffset: 0,
12
+ dys: [],
13
+ scrollYAtGestureStart: 0,
14
+ });
15
+ const onManualScrollRef = (0, react_1.useRef)(onManualScroll);
16
+ (0, react_1.useEffect)(() => {
17
+ onManualScrollRef.current = onManualScroll;
18
+ }, [onManualScroll]);
19
+ (0, react_1.useEffect)(() => {
20
+ if (!scrollRef.current)
21
+ return;
22
+ const controller = new AbortController();
23
+ const node = scrollRef.current?.getScrollableNode();
24
+ if (!node)
25
+ return;
26
+ node.style.overscrollBehavior = 'contain';
27
+ // track original overflow to restore later
28
+ let originalOverflow = '';
29
+ const disableScroll = () => {
30
+ if (node.style.overflowY !== 'hidden') {
31
+ originalOverflow = node.style.overflowY;
32
+ node.style.overflowY = 'hidden';
33
+ }
34
+ };
35
+ const enableScroll = () => {
36
+ node.style.overflowY = originalOverflow;
37
+ };
38
+ const setScrollTop = (nextScrollY) => {
39
+ if (node.scrollTop === nextScrollY)
40
+ return;
41
+ node.scrollTop = nextScrollY;
42
+ onManualScrollRef.current?.(node, nextScrollY);
43
+ };
44
+ const handleTouchStart = (e) => {
45
+ const touch = e.touches[0];
46
+ if (!touch)
47
+ return;
48
+ const currentScrollY = node.scrollTop;
49
+ state.current = {
50
+ startY: touch.pageY,
51
+ lastY: touch.pageY,
52
+ owner: 'none',
53
+ hadPanOwner: false,
54
+ panDragOffset: 0,
55
+ dys: [],
56
+ scrollYAtGestureStart: currentScrollY,
57
+ };
58
+ scrollBridge.scrollStartY = touch.pageY;
59
+ // claim this touch for the scroll-view gesture hook so the PanResponder
60
+ // (which also negotiates this touch via RNW's responder system) defers
61
+ // and doesn't double-drive the sheet position. cleared on touchend.
62
+ scrollBridge.scrollNodeTouched = true;
63
+ };
64
+ const handleTouchMove = (e) => {
65
+ const touch = e.touches[0];
66
+ if (!touch)
67
+ return;
68
+ const { current: s } = state;
69
+ const pageY = touch.pageY;
70
+ const dy = pageY - s.lastY;
71
+ s.lastY = pageY;
72
+ if (dy === 0)
73
+ return;
74
+ const isDraggingDown = dy > 0;
75
+ const currentScrollY = node.scrollTop;
76
+ const isPaneAtTop = scrollBridge.isAtTop ?? scrollBridge.paneY <= scrollBridge.paneMinY + 5;
77
+ scrollBridge.y = currentScrollY;
78
+ // simple ownership rules:
79
+ // - pan owns when: sheet not at top, OR (sheet at top AND scrollY=0 AND dragging down)
80
+ // - scroll owns otherwise
81
+ let shouldPanOwn = false;
82
+ if (!isPaneAtTop) {
83
+ // sheet not at top - pan always owns
84
+ shouldPanOwn = true;
85
+ }
86
+ else if (currentScrollY <= 0 && isDraggingDown) {
87
+ // at top, scroll at 0, dragging down - pan owns (pull sheet down)
88
+ shouldPanOwn = true;
89
+ }
90
+ const newOwner = shouldPanOwn ? 'pan' : 'scroll';
91
+ // handle transitions
92
+ if (newOwner !== s.owner) {
93
+ if (newOwner === 'pan') {
94
+ s.hadPanOwner = true;
95
+ s.panDragOffset = 0;
96
+ s.dys = [];
97
+ // re-baseline the pan origin to the sheet's CURRENT position so the
98
+ // offset (reset to 0 here) maps to where it actually is — required for
99
+ // a correct scroll→pan handoff now that the PanResponder defers to us.
100
+ scrollBridge.startPanDrag?.();
101
+ scrollBridge.setParentDragging(true);
102
+ disableScroll();
103
+ }
104
+ else {
105
+ scrollBridge.setParentDragging(false);
106
+ scrollBridge.scrollLock = false;
107
+ if (s.hadPanOwner) {
108
+ disableScroll();
109
+ }
110
+ else {
111
+ enableScroll();
112
+ }
113
+ }
114
+ s.owner = newOwner;
115
+ }
116
+ if (s.owner === 'pan') {
117
+ if (e.cancelable)
118
+ e.preventDefault();
119
+ s.panDragOffset += dy;
120
+ scrollBridge.drag(s.panDragOffset);
121
+ s.dys.push(dy);
122
+ if (s.dys.length > 100)
123
+ s.dys = s.dys.slice(-10);
124
+ }
125
+ else if (s.owner === 'scroll' && (!e.isTrusted || s.hadPanOwner)) {
126
+ // synthetic events don't trigger native overflow scroll, so tests need us
127
+ // to move scrollTop directly. real mixed gestures need the same direct
128
+ // path after pan ownership: ios safari may not resume native scrolling
129
+ // mid-touch after an earlier prevented touchmove. pure real scrolls still
130
+ // use native scrolling; mixed pan↔scroll gestures keep overflow hidden
131
+ // and are driven here until touchend.
132
+ if (e.cancelable)
133
+ e.preventDefault();
134
+ const scrollDelta = -dy;
135
+ const maxScrollY = node.scrollHeight - node.clientHeight;
136
+ const newScrollY = Math.max(0, Math.min(maxScrollY, currentScrollY + scrollDelta));
137
+ if (newScrollY !== currentScrollY) {
138
+ setScrollTop(newScrollY);
139
+ scrollBridge.y = newScrollY;
140
+ if (newScrollY > 0)
141
+ scrollBridge.scrollStartY = -1;
142
+ }
143
+ }
144
+ };
145
+ const handleTouchEnd = () => {
146
+ const { current: s } = state;
147
+ if (s.owner === 'pan') {
148
+ scrollBridge.setParentDragging(false);
149
+ let vy = 0;
150
+ if (s.dys.length) {
151
+ const recentDys = s.dys.slice(-10);
152
+ const dist = recentDys.reduce((a, b) => a + b, 0);
153
+ vy = (dist / recentDys.length) * 0.04;
154
+ }
155
+ scrollBridge.release({ dragAt: s.panDragOffset, vy });
156
+ }
157
+ else if (s.owner === 'scroll') {
158
+ // gesture ended while scrolling. a pan→scroll handoff only happens once
159
+ // the pane reached the top, so commit the top snap (index 0) and clear
160
+ // the dragging state HERE, on touchend — never mid-gesture (that would
161
+ // fight the live gesture). this replaces the PanResponder's release,
162
+ // which used to fire on touchend before it deferred to this hook.
163
+ scrollBridge.snapToPosition?.(0);
164
+ }
165
+ enableScroll();
166
+ s.owner = 'none';
167
+ s.hadPanOwner = false;
168
+ s.panDragOffset = 0;
169
+ s.dys = [];
170
+ scrollBridge.scrollNodeTouched = false;
171
+ };
172
+ node.addEventListener('touchstart', handleTouchStart, {
173
+ signal: controller.signal,
174
+ passive: true,
175
+ });
176
+ node.addEventListener('touchmove', handleTouchMove, {
177
+ signal: controller.signal,
178
+ passive: false,
179
+ });
180
+ node.addEventListener('touchend', handleTouchEnd, {
181
+ signal: controller.signal,
182
+ passive: true,
183
+ });
184
+ node.addEventListener('touchcancel', handleTouchEnd, {
185
+ signal: controller.signal,
186
+ passive: true,
187
+ });
188
+ return () => {
189
+ enableScroll();
190
+ controller.abort();
191
+ };
192
+ }, [scrollRef, scrollBridge, hasScrollableContent]);
193
+ return {};
194
+ }
195
+ //# sourceMappingURL=useSheetScrollViewGestures.js.map