@hanzogui/sheet 3.0.2 → 7.3.0

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