@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,121 @@
1
+ /**
2
+ * Web implementation of the keyboard controller sheet hook.
3
+ *
4
+ * Mobile browsers don't expose a keyboard API, but they do resize the
5
+ * VisualViewport when the soft keyboard opens. We use the viewport shrink
6
+ * (`clientHeight - visualViewport.height`) to detect the keyboard, then feed the
7
+ * bottom layout inset (`clientHeight - (offsetTop + height)`) into
8
+ * SheetImplementationCustom. The bottom inset accounts for iOS Safari panning
9
+ * the visual viewport during focus, so the sheet doesn't over-lift.
10
+ *
11
+ * Without this, a bottom sheet on mobile web stays pinned behind the keyboard:
12
+ * react-native-web's Dimensions tracks the (shrinking) VisualViewport, so any
13
+ * content sized off window dimensions collapses while the sheet's bottom stays
14
+ * occluded. See SheetImplementationCustom's activePositions / keyboardOccludedHeight.
15
+ */
16
+ import { useCallback, useEffect, useRef, useState } from 'react';
17
+ import { isWeb } from '@hanzogui/constants';
18
+ import { getWebKeyboardBottomInset, getWebKeyboardResizeHeight, isEditableElement, MIN_KEYBOARD_HEIGHT, } from './webViewport.js';
19
+ export function useKeyboardControllerSheet(options) {
20
+ const { enabled } = options;
21
+ // initialize from the CURRENT viewport, not blindly from 0/false. when the
22
+ // sheet opens with the soft keyboard already up (e.g. it was raised by a field
23
+ // on the page behind, or by an autofocus whose keyboard wins the race against
24
+ // the first layout), a false initial value makes the sheet's very first render
25
+ // believe the keyboard is down — it captures a keyboard-free baseline from a
26
+ // keyboard-shrunk layout and the anchor/seed machinery has to recover. reading
27
+ // the viewport synchronously here removes that first-render race: the sheet
28
+ // knows the keyboard is up on render 1 and takes the seed path deterministically.
29
+ const [keyboardHeight, setKeyboardHeight] = useState(() => isWeb && enabled && typeof window !== 'undefined' && window.visualViewport
30
+ ? (() => {
31
+ const resizeHeight = getWebKeyboardResizeHeight();
32
+ return resizeHeight >= MIN_KEYBOARD_HEIGHT &&
33
+ isEditableElement(document.activeElement)
34
+ ? getWebKeyboardBottomInset()
35
+ : 0;
36
+ })()
37
+ : 0);
38
+ const [isKeyboardVisible, setIsKeyboardVisible] = useState(() => keyboardHeight > 0);
39
+ // action-sheet pattern: pause keyboard hide events during drag so the sheet
40
+ // position doesn't revert mid-gesture when a TextInput blurs.
41
+ const pauseKeyboardHandler = useRef(false);
42
+ const pendingHide = useRef(false);
43
+ // live mirror of isKeyboardVisible so the listener can read it without
44
+ // re-subscribing on every toggle.
45
+ const isVisibleRef = useRef(false);
46
+ isVisibleRef.current = isKeyboardVisible;
47
+ const dismissKeyboard = useCallback(() => {
48
+ if (typeof document === 'undefined')
49
+ return;
50
+ const active = document.activeElement;
51
+ if (isEditableElement(active)) {
52
+ active?.blur?.();
53
+ }
54
+ }, []);
55
+ const flushPendingHide = useCallback(() => {
56
+ if (pendingHide.current) {
57
+ pendingHide.current = false;
58
+ setIsKeyboardVisible(false);
59
+ setKeyboardHeight(0);
60
+ }
61
+ }, []);
62
+ useEffect(() => {
63
+ if (!isWeb || !enabled)
64
+ return;
65
+ if (typeof window === 'undefined')
66
+ return;
67
+ const vv = window.visualViewport;
68
+ if (!vv)
69
+ return;
70
+ const update = () => {
71
+ const resizeHeight = getWebKeyboardResizeHeight();
72
+ const height = getWebKeyboardBottomInset();
73
+ const tall = resizeHeight >= MIN_KEYBOARD_HEIGHT;
74
+ // require an editable element focused to *show* — this rules out URL-bar
75
+ // collapse and other viewport changes that aren't a keyboard. but stay
76
+ // visible while the viewport remains shrunk even if focus momentarily
77
+ // moves to a non-editable element (e.g. tapping between two inputs fires
78
+ // focusout→focusin), so the sheet doesn't flicker mid-transition.
79
+ const editableFocused = isEditableElement(document.activeElement);
80
+ const visible = tall && (editableFocused || isVisibleRef.current);
81
+ if (!visible) {
82
+ // suppress hide during an active drag so positions stay frozen; the
83
+ // drag-end flush reconciles the real state.
84
+ if (pauseKeyboardHandler.current && isVisibleRef.current) {
85
+ pendingHide.current = true;
86
+ return;
87
+ }
88
+ setIsKeyboardVisible(false);
89
+ setKeyboardHeight(0);
90
+ return;
91
+ }
92
+ pendingHide.current = false;
93
+ setIsKeyboardVisible(true);
94
+ setKeyboardHeight((prev) => (prev === height ? prev : height));
95
+ };
96
+ // resize tracks keyboard open/close. scroll tracks iOS Safari's focus pan:
97
+ // visualViewport.offsetTop can change after the height has settled, and the
98
+ // sheet cap must move in that same layout coordinate space.
99
+ vv.addEventListener('resize', update);
100
+ vv.addEventListener('scroll', update);
101
+ // focus changes flip editable state without necessarily resizing the viewport
102
+ window.addEventListener('focusin', update);
103
+ window.addEventListener('focusout', update);
104
+ update();
105
+ return () => {
106
+ vv.removeEventListener('resize', update);
107
+ vv.removeEventListener('scroll', update);
108
+ window.removeEventListener('focusin', update);
109
+ window.removeEventListener('focusout', update);
110
+ };
111
+ }, [enabled]);
112
+ return {
113
+ keyboardControllerEnabled: false,
114
+ keyboardHeight,
115
+ isKeyboardVisible,
116
+ dismissKeyboard,
117
+ pauseKeyboardHandler,
118
+ flushPendingHide,
119
+ };
120
+ }
121
+ //# 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,11 @@
1
+ import * as React from 'react';
2
+ // web uses CSS env(safe-area-inset-*) for safe areas, so there is no native
3
+ // safe-area context to read here — the keyboard-avoidance path uses the visual
4
+ // viewport offset instead. this stub keeps the import resolvable on web (where
5
+ // react-native-safe-area-context isn't a dependency) and is the canonical type
6
+ // source for both platform variants.
7
+ export const SafeAreaInsetsContext = React.createContext(null);
8
+ export function useSafeAreaInsets() {
9
+ return null;
10
+ }
11
+ //# sourceMappingURL=useSafeAreaInsets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSafeAreaInsets.js","sourceRoot":"","sources":["../../src/useSafeAreaInsets.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,4EAA4E;AAC5E,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,qCAAqC;AACrC,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAC,aAAa,CAAwB,IAAI,CAAC,CAAA;AAErF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { useSheetContext } from './SheetContext.js';
2
+ export const useSheet = () => useSheetContext('', undefined);
3
+ //# sourceMappingURL=useSheet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSheet.js","sourceRoot":"","sources":["../../src/useSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAoB,CAAA;AAEpD,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE,CAAC,eAAe,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA"}
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ export const useSheetController = () => {
3
+ const controller = React.useContext(SheetControllerContext);
4
+ const isHidden = controller?.hidden;
5
+ const isShowingNonSheet = isHidden && controller?.open;
6
+ return {
7
+ controller,
8
+ isHidden,
9
+ isShowingNonSheet,
10
+ disableDrag: controller?.disableDrag,
11
+ };
12
+ };
13
+ export const SheetControllerContext = React.createContext(null);
14
+ //# sourceMappingURL=useSheetController.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSheetController.js","sourceRoot":"","sources":["../../src/useSheetController.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAG,EAAE;IACrC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,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;AAED,MAAM,CAAC,MAAM,sBAAsB,GACjC,KAAK,CAAC,aAAa,CAAqC,IAAI,CAAC,CAAA"}
@@ -0,0 +1,36 @@
1
+ export const useSheetOffscreenSize = ({ snapPoints, position, screenSize, frameSize, snapPointsMode, }) => {
2
+ if (snapPointsMode === 'fit') {
3
+ return 0;
4
+ }
5
+ if (snapPointsMode === 'constant') {
6
+ const maxSize = Number(snapPoints[0]);
7
+ const currentSize = Number(snapPoints[position] ?? 0);
8
+ const offscreenSize = maxSize - currentSize;
9
+ return offscreenSize;
10
+ }
11
+ if (snapPointsMode === 'percent') {
12
+ const maxPercentOpened = Number(snapPoints[0]) / 100;
13
+ const percentOpened = Number(snapPoints[position] ?? 0) / 100;
14
+ const percentHidden = maxPercentOpened - percentOpened;
15
+ const offscreenSize = percentHidden * screenSize;
16
+ return offscreenSize;
17
+ }
18
+ // mixed:
19
+ const maxSnapPoint = snapPoints[0];
20
+ if (maxSnapPoint === 'fit') {
21
+ return 0;
22
+ }
23
+ const maxSize = typeof maxSnapPoint === 'string'
24
+ ? (Number(maxSnapPoint.slice(0, -1)) / 100) * screenSize
25
+ : maxSnapPoint;
26
+ const currentSnapPoint = snapPoints[position] ?? 0;
27
+ const currentSize = typeof currentSnapPoint === 'string'
28
+ ? (Number(currentSnapPoint.slice(0, -1)) / 100) * screenSize
29
+ : currentSnapPoint;
30
+ const offscreenSize = maxSize - currentSize;
31
+ if (Number.isNaN(offscreenSize)) {
32
+ return 0;
33
+ }
34
+ return offscreenSize;
35
+ };
36
+ //# sourceMappingURL=useSheetOffscreenSize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSheetOffscreenSize.js","sourceRoot":"","sources":["../../src/useSheetOffscreenSize.tsx"],"names":[],"mappings":"AAEA,MAAM,CAAC,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"}
@@ -0,0 +1,25 @@
1
+ import { useControllableState } from '@hanzogui/use-controllable-state';
2
+ import { useSheetController } from './useSheetController.js';
3
+ export const useSheetOpenState = (props) => {
4
+ const { isHidden, controller } = useSheetController();
5
+ const onOpenChangeInternal = (val) => {
6
+ controller?.onOpenChange?.(val);
7
+ props.onOpenChange?.(val);
8
+ };
9
+ const propVal = props.preferAdaptParentOpenState
10
+ ? (controller?.open ?? props.open)
11
+ : (props.open ?? controller?.open);
12
+ const [open, setOpen] = useControllableState({
13
+ prop: propVal,
14
+ defaultProp: props.defaultOpen ?? false,
15
+ onChange: onOpenChangeInternal,
16
+ strategy: 'most-recent-wins',
17
+ });
18
+ return {
19
+ open,
20
+ setOpen,
21
+ isHidden,
22
+ controller,
23
+ };
24
+ };
25
+ //# sourceMappingURL=useSheetOpenState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSheetOpenState.js","sourceRoot":"","sources":["../../src/useSheetOpenState.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAGvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAA0B,CAAA;AAE7D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAiB,EAAE,EAAE;IACrD,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,kBAAkB,EAAE,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,oBAAoB,CAAC;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"}
@@ -0,0 +1,165 @@
1
+ import React from 'react';
2
+ import { useConfiguration } from '@hanzogui/core';
3
+ import { useConstant } from '@hanzogui/use-constant';
4
+ import { useControllableState } from '@hanzogui/use-controllable-state';
5
+ export function useSheetProviderProps(props, state, options = {}) {
6
+ const handleRef = React.useRef(null);
7
+ const contentRef = React.useRef(null);
8
+ const [frameSize, setFrameSize] = React.useState(0);
9
+ const [maxContentSize, setMaxContentSize] = React.useState(0);
10
+ const snapPointsMode = props.snapPointsMode ?? 'percent';
11
+ const snapPointsProp = props.snapPoints ??
12
+ (snapPointsMode === 'percent'
13
+ ? [80]
14
+ : snapPointsMode === 'constant'
15
+ ? [256]
16
+ : ['fit']);
17
+ const hasFit = snapPointsProp[0] === 'fit';
18
+ const snapPoints = React.useMemo(() => (props.dismissOnSnapToBottom ? [...snapPointsProp, 0] : snapPointsProp), [JSON.stringify(snapPointsProp), props.dismissOnSnapToBottom]);
19
+ // lets set -1 to be always the "open = false" position
20
+ const [position_, setPositionImmediate] = useControllableState({
21
+ prop: props.position,
22
+ defaultProp: props.defaultPosition || (state.open ? 0 : -1),
23
+ onChange: props.onPositionChange,
24
+ strategy: 'most-recent-wins',
25
+ });
26
+ const position = state.open === false ? -1 : position_;
27
+ const { open } = state;
28
+ const setPosition = React.useCallback((next) => {
29
+ // close on dismissOnSnapToBottom (and set position so it animates)
30
+ if (props.dismissOnSnapToBottom && next === snapPoints.length - 1) {
31
+ state.setOpen(false);
32
+ }
33
+ else {
34
+ setPositionImmediate(next);
35
+ }
36
+ }, [props.dismissOnSnapToBottom, snapPoints.length, setPositionImmediate, state.setOpen]);
37
+ if (process.env.NODE_ENV === 'development') {
38
+ if (snapPointsMode === 'mixed' &&
39
+ snapPoints.some((p) => {
40
+ if (typeof p === 'string') {
41
+ if (p === 'fit') {
42
+ return false;
43
+ }
44
+ if (p.endsWith('%')) {
45
+ const n = Number(p.slice(0, -1));
46
+ return n < 0 || n > 100;
47
+ }
48
+ return true;
49
+ }
50
+ return typeof p !== 'number' || p < 0;
51
+ })) {
52
+ console.warn('⚠️ Invalid snapPoint given, snapPoints must be positive numeric values, string percentages between 0-100%, or "fit" when snapPointsMode is mixed');
53
+ }
54
+ if (snapPointsMode === 'mixed' && snapPoints.indexOf('fit') > 0) {
55
+ console.warn('⚠️ Invalid snapPoint given, "fit" must be the first/largest snap point when snapPointsMode is mixed');
56
+ }
57
+ if (snapPointsMode === 'fit' &&
58
+ (snapPoints.length !== (props.dismissOnSnapToBottom ? 2 : 1) ||
59
+ snapPoints[0] !== 'fit')) {
60
+ console.warn('⚠️ Invalid snapPoint given, there are no snap points when snapPointsMode is fit');
61
+ }
62
+ if (snapPointsMode === 'constant' &&
63
+ snapPoints.some((p) => typeof p !== 'number' || p < 0)) {
64
+ console.warn('⚠️ Invalid snapPoint given, snapPoints must be positive numeric values when snapPointsMode is constant');
65
+ }
66
+ if (snapPointsMode === 'percent' &&
67
+ snapPoints.some((p) => typeof p !== 'number' || p < 0 || p > 100)) {
68
+ console.warn('⚠️ Invalid snapPoint given, snapPoints must be numeric values between 0 and 100 when snapPointsMode is percent');
69
+ }
70
+ }
71
+ // reset position to fully open on re-open after dismissOnSnapToBottom
72
+ if (open && props.dismissOnSnapToBottom && position === snapPoints.length - 1) {
73
+ setPositionImmediate(0);
74
+ }
75
+ // open must set position
76
+ const shouldSetPositionOpen = open && position < 0;
77
+ React.useEffect(() => {
78
+ if (shouldSetPositionOpen) {
79
+ setPosition(0);
80
+ }
81
+ }, [setPosition, shouldSetPositionOpen]);
82
+ const { animationDriver } = useConfiguration();
83
+ if (!animationDriver) {
84
+ throw new Error(process.env.NODE_ENV === 'production'
85
+ ? `❌ 008`
86
+ : 'Must set animations in hanzogui.config.ts');
87
+ }
88
+ const scrollBridge = useConstant(() => {
89
+ const parentDragListeners = new Set();
90
+ const bridge = {
91
+ hasScrollableContent: false,
92
+ enabled: false,
93
+ y: 0,
94
+ paneY: 0,
95
+ paneMinY: 0,
96
+ scrollStartY: -1,
97
+ drag: () => { },
98
+ release: () => { },
99
+ scrollLock: false,
100
+ isParentDragging: false,
101
+ onParentDragging: (cb) => {
102
+ parentDragListeners.add(cb);
103
+ return () => {
104
+ parentDragListeners.delete(cb);
105
+ };
106
+ },
107
+ setParentDragging: (val) => {
108
+ if (val !== bridge.isParentDragging) {
109
+ bridge.isParentDragging = val;
110
+ parentDragListeners.forEach((cb) => cb(val));
111
+ }
112
+ },
113
+ };
114
+ return bridge;
115
+ });
116
+ // Handle both new disableRemoveScroll and deprecated forceRemoveScrollEnabled
117
+ let disableRemoveScroll;
118
+ if (props.disableRemoveScroll !== undefined) {
119
+ // New prop: disableRemoveScroll={true} means RemoveScroll is disabled
120
+ disableRemoveScroll = props.disableRemoveScroll || !open || !props.modal;
121
+ }
122
+ else if (props.forceRemoveScrollEnabled !== undefined) {
123
+ // Deprecated prop: forceRemoveScrollEnabled can override the default
124
+ if (process.env.NODE_ENV === 'development') {
125
+ console.warn('[Sheet] forceRemoveScrollEnabled is deprecated. Use disableRemoveScroll instead.');
126
+ }
127
+ disableRemoveScroll = !props.forceRemoveScrollEnabled;
128
+ }
129
+ else {
130
+ // Default: disabled when not open or not modal
131
+ disableRemoveScroll = !open || !props.modal;
132
+ }
133
+ const maxSnapPoint = snapPoints[0];
134
+ const screenSize = snapPointsMode === 'percent'
135
+ ? frameSize / ((typeof maxSnapPoint === 'number' ? maxSnapPoint : 100) / 100)
136
+ : maxContentSize;
137
+ const providerProps = {
138
+ screenSize,
139
+ maxSnapPoint,
140
+ disableRemoveScroll,
141
+ scrollBridge,
142
+ modal: !!props.modal,
143
+ open: state.open,
144
+ setOpen: state.setOpen,
145
+ hidden: !!state.isHidden,
146
+ contentRef,
147
+ handleRef,
148
+ frameSize,
149
+ setFrameSize,
150
+ dismissOnOverlayPress: props.dismissOnOverlayPress ?? true,
151
+ dismissOnSnapToBottom: props.dismissOnSnapToBottom ?? false,
152
+ onOverlayComponent: options.onOverlayComponent,
153
+ scope: props.__scopeSheet,
154
+ hasFit,
155
+ position,
156
+ snapPoints,
157
+ snapPointsMode,
158
+ setMaxContentSize,
159
+ setPosition,
160
+ setPositionImmediate,
161
+ onlyShowFrame: false,
162
+ };
163
+ return providerProps;
164
+ }
165
+ //# 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,192 @@
1
+ import { useEffect, useRef } from 'react';
2
+ export function useSheetScrollViewGestures({ scrollRef, scrollBridge, hasScrollableContent, onManualScroll, }) {
3
+ const state = useRef({
4
+ startY: 0,
5
+ lastY: 0,
6
+ owner: 'none',
7
+ hadPanOwner: false,
8
+ panDragOffset: 0,
9
+ dys: [],
10
+ scrollYAtGestureStart: 0,
11
+ });
12
+ const onManualScrollRef = useRef(onManualScroll);
13
+ useEffect(() => {
14
+ onManualScrollRef.current = onManualScroll;
15
+ }, [onManualScroll]);
16
+ useEffect(() => {
17
+ if (!scrollRef.current)
18
+ return;
19
+ const controller = new AbortController();
20
+ const node = scrollRef.current?.getScrollableNode();
21
+ if (!node)
22
+ return;
23
+ node.style.overscrollBehavior = 'contain';
24
+ // track original overflow to restore later
25
+ let originalOverflow = '';
26
+ const disableScroll = () => {
27
+ if (node.style.overflowY !== 'hidden') {
28
+ originalOverflow = node.style.overflowY;
29
+ node.style.overflowY = 'hidden';
30
+ }
31
+ };
32
+ const enableScroll = () => {
33
+ node.style.overflowY = originalOverflow;
34
+ };
35
+ const setScrollTop = (nextScrollY) => {
36
+ if (node.scrollTop === nextScrollY)
37
+ return;
38
+ node.scrollTop = nextScrollY;
39
+ onManualScrollRef.current?.(node, nextScrollY);
40
+ };
41
+ const handleTouchStart = (e) => {
42
+ const touch = e.touches[0];
43
+ if (!touch)
44
+ return;
45
+ const currentScrollY = node.scrollTop;
46
+ state.current = {
47
+ startY: touch.pageY,
48
+ lastY: touch.pageY,
49
+ owner: 'none',
50
+ hadPanOwner: false,
51
+ panDragOffset: 0,
52
+ dys: [],
53
+ scrollYAtGestureStart: currentScrollY,
54
+ };
55
+ scrollBridge.scrollStartY = touch.pageY;
56
+ // claim this touch for the scroll-view gesture hook so the PanResponder
57
+ // (which also negotiates this touch via RNW's responder system) defers
58
+ // and doesn't double-drive the sheet position. cleared on touchend.
59
+ scrollBridge.scrollNodeTouched = true;
60
+ };
61
+ const handleTouchMove = (e) => {
62
+ const touch = e.touches[0];
63
+ if (!touch)
64
+ return;
65
+ const { current: s } = state;
66
+ const pageY = touch.pageY;
67
+ const dy = pageY - s.lastY;
68
+ s.lastY = pageY;
69
+ if (dy === 0)
70
+ return;
71
+ const isDraggingDown = dy > 0;
72
+ const currentScrollY = node.scrollTop;
73
+ const isPaneAtTop = scrollBridge.isAtTop ?? scrollBridge.paneY <= scrollBridge.paneMinY + 5;
74
+ scrollBridge.y = currentScrollY;
75
+ // simple ownership rules:
76
+ // - pan owns when: sheet not at top, OR (sheet at top AND scrollY=0 AND dragging down)
77
+ // - scroll owns otherwise
78
+ let shouldPanOwn = false;
79
+ if (!isPaneAtTop) {
80
+ // sheet not at top - pan always owns
81
+ shouldPanOwn = true;
82
+ }
83
+ else if (currentScrollY <= 0 && isDraggingDown) {
84
+ // at top, scroll at 0, dragging down - pan owns (pull sheet down)
85
+ shouldPanOwn = true;
86
+ }
87
+ const newOwner = shouldPanOwn ? 'pan' : 'scroll';
88
+ // handle transitions
89
+ if (newOwner !== s.owner) {
90
+ if (newOwner === 'pan') {
91
+ s.hadPanOwner = true;
92
+ s.panDragOffset = 0;
93
+ s.dys = [];
94
+ // re-baseline the pan origin to the sheet's CURRENT position so the
95
+ // offset (reset to 0 here) maps to where it actually is — required for
96
+ // a correct scroll→pan handoff now that the PanResponder defers to us.
97
+ scrollBridge.startPanDrag?.();
98
+ scrollBridge.setParentDragging(true);
99
+ disableScroll();
100
+ }
101
+ else {
102
+ scrollBridge.setParentDragging(false);
103
+ scrollBridge.scrollLock = false;
104
+ if (s.hadPanOwner) {
105
+ disableScroll();
106
+ }
107
+ else {
108
+ enableScroll();
109
+ }
110
+ }
111
+ s.owner = newOwner;
112
+ }
113
+ if (s.owner === 'pan') {
114
+ if (e.cancelable)
115
+ e.preventDefault();
116
+ s.panDragOffset += dy;
117
+ scrollBridge.drag(s.panDragOffset);
118
+ s.dys.push(dy);
119
+ if (s.dys.length > 100)
120
+ s.dys = s.dys.slice(-10);
121
+ }
122
+ else if (s.owner === 'scroll' && (!e.isTrusted || s.hadPanOwner)) {
123
+ // synthetic events don't trigger native overflow scroll, so tests need us
124
+ // to move scrollTop directly. real mixed gestures need the same direct
125
+ // path after pan ownership: ios safari may not resume native scrolling
126
+ // mid-touch after an earlier prevented touchmove. pure real scrolls still
127
+ // use native scrolling; mixed pan↔scroll gestures keep overflow hidden
128
+ // and are driven here until touchend.
129
+ if (e.cancelable)
130
+ e.preventDefault();
131
+ const scrollDelta = -dy;
132
+ const maxScrollY = node.scrollHeight - node.clientHeight;
133
+ const newScrollY = Math.max(0, Math.min(maxScrollY, currentScrollY + scrollDelta));
134
+ if (newScrollY !== currentScrollY) {
135
+ setScrollTop(newScrollY);
136
+ scrollBridge.y = newScrollY;
137
+ if (newScrollY > 0)
138
+ scrollBridge.scrollStartY = -1;
139
+ }
140
+ }
141
+ };
142
+ const handleTouchEnd = () => {
143
+ const { current: s } = state;
144
+ if (s.owner === 'pan') {
145
+ scrollBridge.setParentDragging(false);
146
+ let vy = 0;
147
+ if (s.dys.length) {
148
+ const recentDys = s.dys.slice(-10);
149
+ const dist = recentDys.reduce((a, b) => a + b, 0);
150
+ vy = (dist / recentDys.length) * 0.04;
151
+ }
152
+ scrollBridge.release({ dragAt: s.panDragOffset, vy });
153
+ }
154
+ else if (s.owner === 'scroll') {
155
+ // gesture ended while scrolling. a pan→scroll handoff only happens once
156
+ // the pane reached the top, so commit the top snap (index 0) and clear
157
+ // the dragging state HERE, on touchend — never mid-gesture (that would
158
+ // fight the live gesture). this replaces the PanResponder's release,
159
+ // which used to fire on touchend before it deferred to this hook.
160
+ scrollBridge.snapToPosition?.(0);
161
+ }
162
+ enableScroll();
163
+ s.owner = 'none';
164
+ s.hadPanOwner = false;
165
+ s.panDragOffset = 0;
166
+ s.dys = [];
167
+ scrollBridge.scrollNodeTouched = false;
168
+ };
169
+ node.addEventListener('touchstart', handleTouchStart, {
170
+ signal: controller.signal,
171
+ passive: true,
172
+ });
173
+ node.addEventListener('touchmove', handleTouchMove, {
174
+ signal: controller.signal,
175
+ passive: false,
176
+ });
177
+ node.addEventListener('touchend', handleTouchEnd, {
178
+ signal: controller.signal,
179
+ passive: true,
180
+ });
181
+ node.addEventListener('touchcancel', handleTouchEnd, {
182
+ signal: controller.signal,
183
+ passive: true,
184
+ });
185
+ return () => {
186
+ enableScroll();
187
+ controller.abort();
188
+ };
189
+ }, [scrollRef, scrollBridge, hasScrollableContent]);
190
+ return {};
191
+ }
192
+ //# sourceMappingURL=useSheetScrollViewGestures.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSheetScrollViewGestures.js","sourceRoot":"","sources":["../../src/useSheetScrollViewGestures.ts"],"names":[],"mappings":"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"}