@hanzogui/sheet 7.3.0 → 8.0.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 (229) hide show
  1. package/.turbo/turbo-build.log +2 -0
  2. package/controller/index.cjs +2 -0
  3. package/controller/index.d.ts +5 -0
  4. package/controller/index.js +2 -0
  5. package/controller/index.native.cjs +2 -0
  6. package/controller/index.native.js +2 -0
  7. package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -1
  8. package/dist/cjs/SheetImplementationCustom.cjs +137 -74
  9. package/dist/cjs/SheetImplementationCustom.native.js +162 -83
  10. package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
  11. package/dist/cjs/SheetScrollView.cjs +155 -34
  12. package/dist/cjs/SheetScrollView.native.js +160 -35
  13. package/dist/cjs/SheetScrollView.native.js.map +1 -1
  14. package/dist/cjs/createSheet.cjs +7 -3
  15. package/dist/cjs/createSheet.native.js +7 -3
  16. package/dist/cjs/createSheet.native.js.map +1 -1
  17. package/dist/cjs/gestureState.cjs +13 -2
  18. package/dist/cjs/gestureState.native.js +14 -2
  19. package/dist/cjs/gestureState.native.js.map +1 -1
  20. package/dist/cjs/index.cjs +12 -1
  21. package/dist/cjs/index.native.js +11 -0
  22. package/dist/cjs/index.native.js.map +1 -1
  23. package/dist/cjs/keyboardAvoidance.cjs +93 -0
  24. package/dist/cjs/keyboardAvoidance.native.js +99 -0
  25. package/dist/cjs/keyboardAvoidance.native.js.map +1 -0
  26. package/dist/cjs/nativeSheet.cjs +3 -0
  27. package/dist/cjs/nativeSheet.native.js +3 -0
  28. package/dist/cjs/nativeSheet.native.js.map +1 -1
  29. package/dist/cjs/setupGestureHandler.cjs +9 -6
  30. package/dist/cjs/setupGestureHandler.native.js +11 -6
  31. package/dist/cjs/setupGestureHandler.native.js.map +1 -1
  32. package/dist/cjs/useGestureHandlerPan.cjs +86 -18
  33. package/dist/cjs/useGestureHandlerPan.native.js +91 -18
  34. package/dist/cjs/useGestureHandlerPan.native.js.map +1 -1
  35. package/dist/cjs/useKeyboardControllerSheet.cjs +68 -6
  36. package/dist/cjs/useSafeAreaInsets.cjs +44 -0
  37. package/dist/cjs/useSafeAreaInsets.native.js +48 -0
  38. package/dist/cjs/useSafeAreaInsets.native.js.map +1 -0
  39. package/dist/cjs/useSheetProviderProps.cjs +1 -1
  40. package/dist/cjs/useSheetProviderProps.native.js +1 -1
  41. package/dist/cjs/useSheetProviderProps.native.js.map +1 -1
  42. package/dist/cjs/useSheetScrollViewGestures.cjs +30 -5
  43. package/dist/cjs/useSheetScrollViewGestures.native.js +4 -0
  44. package/dist/cjs/useSheetScrollViewGestures.native.js.map +1 -1
  45. package/dist/cjs/webViewport.cjs +75 -0
  46. package/dist/cjs/webViewport.native.js +81 -0
  47. package/dist/cjs/webViewport.native.js.map +1 -0
  48. package/dist/esm/GestureDetectorWrapper.mjs.map +1 -1
  49. package/dist/esm/GestureDetectorWrapper.native.js.map +1 -1
  50. package/dist/esm/SheetImplementationCustom.mjs +143 -84
  51. package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
  52. package/dist/esm/SheetImplementationCustom.native.js +173 -102
  53. package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
  54. package/dist/esm/SheetScrollView.mjs +157 -36
  55. package/dist/esm/SheetScrollView.mjs.map +1 -1
  56. package/dist/esm/SheetScrollView.native.js +162 -37
  57. package/dist/esm/SheetScrollView.native.js.map +1 -1
  58. package/dist/esm/createSheet.mjs +9 -6
  59. package/dist/esm/createSheet.mjs.map +1 -1
  60. package/dist/esm/createSheet.native.js +19 -15
  61. package/dist/esm/createSheet.native.js.map +1 -1
  62. package/dist/esm/gestureState.mjs +13 -2
  63. package/dist/esm/gestureState.mjs.map +1 -1
  64. package/dist/esm/gestureState.native.js +14 -2
  65. package/dist/esm/gestureState.native.js.map +1 -1
  66. package/dist/esm/index.js +2 -0
  67. package/dist/esm/index.js.map +1 -1
  68. package/dist/esm/index.mjs +2 -0
  69. package/dist/esm/index.mjs.map +1 -1
  70. package/dist/esm/index.native.js +2 -0
  71. package/dist/esm/index.native.js.map +1 -1
  72. package/dist/esm/keyboardAvoidance.mjs +66 -0
  73. package/dist/esm/keyboardAvoidance.mjs.map +1 -0
  74. package/dist/esm/keyboardAvoidance.native.js +69 -0
  75. package/dist/esm/keyboardAvoidance.native.js.map +1 -0
  76. package/dist/esm/nativeSheet.mjs +3 -0
  77. package/dist/esm/nativeSheet.mjs.map +1 -1
  78. package/dist/esm/nativeSheet.native.js +3 -0
  79. package/dist/esm/nativeSheet.native.js.map +1 -1
  80. package/dist/esm/setupGestureHandler.mjs +9 -6
  81. package/dist/esm/setupGestureHandler.mjs.map +1 -1
  82. package/dist/esm/setupGestureHandler.native.js +11 -6
  83. package/dist/esm/setupGestureHandler.native.js.map +1 -1
  84. package/dist/esm/useGestureHandlerPan.mjs +87 -19
  85. package/dist/esm/useGestureHandlerPan.mjs.map +1 -1
  86. package/dist/esm/useGestureHandlerPan.native.js +92 -19
  87. package/dist/esm/useGestureHandlerPan.native.js.map +1 -1
  88. package/dist/esm/useKeyboardControllerSheet.mjs +69 -7
  89. package/dist/esm/useKeyboardControllerSheet.mjs.map +1 -1
  90. package/dist/esm/useSafeAreaInsets.mjs +7 -0
  91. package/dist/esm/useSafeAreaInsets.mjs.map +1 -0
  92. package/dist/esm/useSafeAreaInsets.native.js +8 -0
  93. package/dist/esm/useSafeAreaInsets.native.js.map +1 -0
  94. package/dist/esm/useSheetProviderProps.mjs +1 -1
  95. package/dist/esm/useSheetProviderProps.mjs.map +1 -1
  96. package/dist/esm/useSheetProviderProps.native.js +1 -1
  97. package/dist/esm/useSheetProviderProps.native.js.map +1 -1
  98. package/dist/esm/useSheetScrollViewGestures.mjs +30 -5
  99. package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -1
  100. package/dist/esm/useSheetScrollViewGestures.native.js +4 -0
  101. package/dist/esm/useSheetScrollViewGestures.native.js.map +1 -1
  102. package/dist/esm/webViewport.mjs +43 -0
  103. package/dist/esm/webViewport.mjs.map +1 -0
  104. package/dist/esm/webViewport.native.js +46 -0
  105. package/dist/esm/webViewport.native.js.map +1 -0
  106. package/dist/jsx/GestureDetectorWrapper.mjs.map +1 -1
  107. package/dist/jsx/GestureDetectorWrapper.native.js.map +1 -1
  108. package/dist/jsx/SheetImplementationCustom.mjs +143 -84
  109. package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
  110. package/dist/jsx/SheetImplementationCustom.native.js +162 -83
  111. package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
  112. package/dist/jsx/SheetScrollView.mjs +157 -36
  113. package/dist/jsx/SheetScrollView.mjs.map +1 -1
  114. package/dist/jsx/SheetScrollView.native.js +160 -35
  115. package/dist/jsx/SheetScrollView.native.js.map +1 -1
  116. package/dist/jsx/createSheet.mjs +9 -6
  117. package/dist/jsx/createSheet.mjs.map +1 -1
  118. package/dist/jsx/createSheet.native.js +7 -3
  119. package/dist/jsx/createSheet.native.js.map +1 -1
  120. package/dist/jsx/gestureState.mjs +13 -2
  121. package/dist/jsx/gestureState.mjs.map +1 -1
  122. package/dist/jsx/gestureState.native.js +14 -2
  123. package/dist/jsx/gestureState.native.js.map +1 -1
  124. package/dist/jsx/index.js +2 -0
  125. package/dist/jsx/index.js.map +1 -1
  126. package/dist/jsx/index.mjs +2 -0
  127. package/dist/jsx/index.mjs.map +1 -1
  128. package/dist/jsx/index.native.js +11 -0
  129. package/dist/jsx/index.native.js.map +1 -1
  130. package/dist/jsx/keyboardAvoidance.mjs +66 -0
  131. package/dist/jsx/keyboardAvoidance.mjs.map +1 -0
  132. package/dist/jsx/keyboardAvoidance.native.js +99 -0
  133. package/dist/jsx/keyboardAvoidance.native.js.map +1 -0
  134. package/dist/jsx/nativeSheet.mjs +3 -0
  135. package/dist/jsx/nativeSheet.mjs.map +1 -1
  136. package/dist/jsx/nativeSheet.native.js +3 -0
  137. package/dist/jsx/nativeSheet.native.js.map +1 -1
  138. package/dist/jsx/setupGestureHandler.mjs +9 -6
  139. package/dist/jsx/setupGestureHandler.mjs.map +1 -1
  140. package/dist/jsx/setupGestureHandler.native.js +11 -6
  141. package/dist/jsx/setupGestureHandler.native.js.map +1 -1
  142. package/dist/jsx/useGestureHandlerPan.mjs +87 -19
  143. package/dist/jsx/useGestureHandlerPan.mjs.map +1 -1
  144. package/dist/jsx/useGestureHandlerPan.native.js +91 -18
  145. package/dist/jsx/useGestureHandlerPan.native.js.map +1 -1
  146. package/dist/jsx/useKeyboardControllerSheet.mjs +69 -7
  147. package/dist/jsx/useKeyboardControllerSheet.mjs.map +1 -1
  148. package/dist/jsx/useSafeAreaInsets.mjs +7 -0
  149. package/dist/jsx/useSafeAreaInsets.mjs.map +1 -0
  150. package/dist/jsx/useSafeAreaInsets.native.js +48 -0
  151. package/dist/jsx/useSafeAreaInsets.native.js.map +1 -0
  152. package/dist/jsx/useSheetProviderProps.mjs +1 -1
  153. package/dist/jsx/useSheetProviderProps.mjs.map +1 -1
  154. package/dist/jsx/useSheetProviderProps.native.js +1 -1
  155. package/dist/jsx/useSheetProviderProps.native.js.map +1 -1
  156. package/dist/jsx/useSheetScrollViewGestures.mjs +30 -5
  157. package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -1
  158. package/dist/jsx/useSheetScrollViewGestures.native.js +4 -0
  159. package/dist/jsx/useSheetScrollViewGestures.native.js.map +1 -1
  160. package/dist/jsx/webViewport.mjs +43 -0
  161. package/dist/jsx/webViewport.mjs.map +1 -0
  162. package/dist/jsx/webViewport.native.js +81 -0
  163. package/dist/jsx/webViewport.native.js.map +1 -0
  164. package/next.md +78 -0
  165. package/package.json +30 -48
  166. package/setup-gesture-handler/index.cjs +2 -0
  167. package/setup-gesture-handler/index.js +2 -0
  168. package/setup-gesture-handler/index.native.cjs +2 -0
  169. package/setup-gesture-handler/index.native.js +2 -0
  170. package/src/GestureDetectorWrapper.tsx +0 -3
  171. package/src/SheetImplementationCustom.tsx +387 -127
  172. package/src/SheetScrollView.tsx +195 -22
  173. package/src/createSheet.tsx +20 -7
  174. package/src/gestureState.ts +22 -2
  175. package/src/index.ts +4 -0
  176. package/src/keyboardAvoidance.ts +121 -0
  177. package/src/nativeSheet.tsx +8 -1
  178. package/src/setupGestureHandler.ts +14 -5
  179. package/src/types.tsx +20 -1
  180. package/src/useGestureHandlerPan.tsx +94 -35
  181. package/src/useKeyboardControllerSheet.ts +127 -10
  182. package/src/useSafeAreaInsets.native.ts +29 -0
  183. package/src/useSafeAreaInsets.ts +19 -0
  184. package/src/useSheetProviderProps.tsx +12 -1
  185. package/src/useSheetScrollViewGestures.native.ts +4 -0
  186. package/src/useSheetScrollViewGestures.ts +52 -5
  187. package/src/webViewport.ts +100 -0
  188. package/test/keyboardAvoidance.test.ts +269 -0
  189. package/tsconfig.json +57 -0
  190. package/types/GestureDetectorWrapper.d.ts +1 -1
  191. package/types/GestureDetectorWrapper.d.ts.map +1 -1
  192. package/types/GestureSheetContext.d.ts +1 -1
  193. package/types/GestureSheetContext.d.ts.map +1 -1
  194. package/types/Sheet.d.ts +6 -5
  195. package/types/Sheet.d.ts.map +1 -1
  196. package/types/SheetContext.d.ts +5 -2
  197. package/types/SheetContext.d.ts.map +1 -1
  198. package/types/SheetController.d.ts +1 -2
  199. package/types/SheetController.d.ts.map +1 -1
  200. package/types/SheetImplementationCustom.d.ts +1 -0
  201. package/types/SheetImplementationCustom.d.ts.map +1 -1
  202. package/types/SheetScrollView.d.ts.map +1 -1
  203. package/types/createSheet.d.ts +13 -12
  204. package/types/createSheet.d.ts.map +1 -1
  205. package/types/gestureState.d.ts.map +1 -1
  206. package/types/index.d.ts +1 -0
  207. package/types/index.d.ts.map +1 -1
  208. package/types/keyboardAvoidance.d.ts +26 -0
  209. package/types/keyboardAvoidance.d.ts.map +1 -0
  210. package/types/nativeSheet.d.ts.map +1 -1
  211. package/types/setupGestureHandler.d.ts.map +1 -1
  212. package/types/types.d.ts +10 -1
  213. package/types/types.d.ts.map +1 -1
  214. package/types/useGestureHandlerPan.d.ts +4 -1
  215. package/types/useGestureHandlerPan.d.ts.map +1 -1
  216. package/types/useKeyboardControllerSheet.d.ts +14 -3
  217. package/types/useKeyboardControllerSheet.d.ts.map +1 -1
  218. package/types/useSafeAreaInsets.d.ts +10 -0
  219. package/types/useSafeAreaInsets.d.ts.map +1 -0
  220. package/types/useSafeAreaInsets.native.d.ts +20 -0
  221. package/types/useSafeAreaInsets.native.d.ts.map +1 -0
  222. package/types/useSheetProviderProps.d.ts +3 -0
  223. package/types/useSheetProviderProps.d.ts.map +1 -1
  224. package/types/useSheetScrollViewGestures.d.ts +2 -1
  225. package/types/useSheetScrollViewGestures.d.ts.map +1 -1
  226. package/types/useSheetScrollViewGestures.native.d.ts.map +1 -1
  227. package/types/webViewport.d.ts +36 -0
  228. package/types/webViewport.d.ts.map +1 -0
  229. package/LICENSE +0 -42
@@ -45,6 +45,7 @@ var import_GestureSheetContext = require("./GestureSheetContext.cjs");
45
45
  var import_gestureState = require("./gestureState.cjs");
46
46
  var import_SheetContext = require("./SheetContext.cjs");
47
47
  var import_useSheetScrollViewGestures = require("./useSheetScrollViewGestures.cjs");
48
+ var import_webViewport = require("./webViewport.cjs");
48
49
  var import_jsx_runtime = require("react/jsx-runtime");
49
50
  const SHEET_SCROLL_VIEW_NAME = "SheetScrollView";
50
51
  const SheetScrollView = import_react.default.forwardRef(({
@@ -58,31 +59,66 @@ const SheetScrollView = import_react.default.forwardRef(({
58
59
  const gestureContext = (0, import_GestureSheetContext.useGestureSheetContext)();
59
60
  const {
60
61
  scrollBridge,
61
- setHasScrollView
62
+ setHasScrollView,
63
+ hasFit,
64
+ screenSize
62
65
  } = context;
66
+ const keyboardOccludedHeight = Math.max(0, context.keyboardOccludedHeight || 0);
67
+ const isKeyboardVisible = context.isKeyboardVisible === true || import_core.isWeb && (0, import_webViewport.getWebKeyboardResizeHeight)() >= import_webViewport.MIN_KEYBOARD_HEIGHT;
63
68
  const [scrollEnabled] = (0, import_use_controllable_state.useControllableState)({
64
69
  prop: scrollEnabledProp,
65
70
  defaultProp: true
66
71
  });
67
72
  const scrollRef = import_react.default.useRef(null);
73
+ const [hasScrollableContent, setHasScrollableContent] = (0, import_react.useState)(true);
74
+ const parentHeight = (0, import_react.useRef)(0);
75
+ const contentHeight = (0, import_react.useRef)(0);
76
+ const frozenFrameHeight = Math.max(0, context.keyboardStableFrameHeight || 0);
77
+ const fitSizingStyle = hasFit ? {
78
+ flex: void 0,
79
+ height: void 0,
80
+ maxHeight: screenSize || void 0
81
+ } : {
82
+ flex: 1
83
+ };
84
+ const contentContainerStyle = hasFit ? void 0 : {
85
+ minHeight: "100%"
86
+ };
87
+ const keyboardFrozenOverride = hasFit && isKeyboardVisible && frozenFrameHeight > 0 ? {
88
+ height: frozenFrameHeight,
89
+ maxHeight: frozenFrameHeight
90
+ } : null;
68
91
  const panGestureRef = gestureContext?.panGestureRef;
69
92
  const {
70
93
  ScrollView: RNGHScrollView
71
94
  } = (0, import_gestureState.getGestureHandlerState)();
72
95
  const useRNGHScrollView = (0, import_gestureState.isGestureHandlerEnabled)() && RNGHScrollView && panGestureRef;
73
96
  const currentScrollOffset = (0, import_react.useRef)(0);
97
+ const lastEmittedScrollOffset = (0, import_react.useRef)(0);
74
98
  const lockedScrollY = (0, import_react.useRef)(0);
99
+ const focusedInputScrollFrame = (0, import_react.useRef)(0);
75
100
  const setScrollEnabled = (next, lockTo) => {
76
101
  if (!next) {
77
- const lockY = lockTo ?? currentScrollOffset.current;
102
+ const lockY = lockTo ?? scrollBridge.scrollLockY ?? currentScrollOffset.current;
103
+ if (scrollBridge.enabled === false && scrollBridge.scrollLockY === lockY) {
104
+ return;
105
+ }
106
+ scrollBridge.enabled = false;
78
107
  lockedScrollY.current = lockY;
79
108
  scrollBridge.scrollLockY = lockY;
80
- scrollRef.current?.scrollTo?.({
81
- x: 0,
82
- y: lockY,
83
- animated: false
84
- });
109
+ if (currentScrollOffset.current !== lockY) {
110
+ scrollRef.current?.scrollTo?.({
111
+ x: 0,
112
+ y: lockY,
113
+ animated: false
114
+ });
115
+ currentScrollOffset.current = lockY;
116
+ }
85
117
  } else {
118
+ if (scrollBridge.enabled === true && scrollBridge.scrollLockY === void 0) {
119
+ return;
120
+ }
121
+ scrollBridge.enabled = true;
86
122
  lockedScrollY.current = currentScrollOffset.current;
87
123
  scrollBridge.scrollLockY = void 0;
88
124
  }
@@ -93,7 +129,81 @@ const SheetScrollView = import_react.default.forwardRef(({
93
129
  y,
94
130
  animated: false
95
131
  });
132
+ currentScrollOffset.current = y;
96
133
  };
134
+ const emitManualScroll = import_react.default.useCallback((node, y) => {
135
+ currentScrollOffset.current = y;
136
+ scrollBridge.y = y;
137
+ if (y > 0) scrollBridge.scrollStartY = -1;
138
+ lastEmittedScrollOffset.current = y;
139
+ onScroll?.({
140
+ nativeEvent: {
141
+ contentOffset: {
142
+ x: node.scrollLeft,
143
+ y
144
+ },
145
+ contentSize: {
146
+ height: node.scrollHeight,
147
+ width: node.scrollWidth
148
+ },
149
+ layoutMeasurement: {
150
+ height: node.offsetHeight,
151
+ width: node.offsetWidth
152
+ }
153
+ },
154
+ timeStamp: Date.now()
155
+ });
156
+ }, [onScroll, scrollBridge]);
157
+ const scrollFocusedInputClearOfKeyboard = import_react.default.useCallback(() => {
158
+ if (!import_core.isWeb || !hasFit || !isKeyboardVisible || keyboardOccludedHeight <= 0) {
159
+ return;
160
+ }
161
+ const node = scrollRef.current?.getScrollableNode();
162
+ const active = document.activeElement;
163
+ if (!node || !active || !(0, import_webViewport.isEditableElement)(active) || !node.contains(active)) {
164
+ return;
165
+ }
166
+ const keyboardHeight = Math.max(keyboardOccludedHeight, (0, import_webViewport.getWebKeyboardBottomInset)());
167
+ if (keyboardHeight <= 0) return;
168
+ const activeRect = active.getBoundingClientRect();
169
+ const nodeRect = node.getBoundingClientRect();
170
+ const margin = 12;
171
+ const keyboardTop = (0, import_webViewport.getStableLayoutViewportHeight)() - keyboardHeight;
172
+ const visibleTop = nodeRect.top + margin;
173
+ const visibleBottom = Math.min(nodeRect.bottom, keyboardTop) - margin;
174
+ let nextScrollTop = node.scrollTop;
175
+ if (activeRect.bottom > visibleBottom) {
176
+ nextScrollTop += Math.ceil(activeRect.bottom - visibleBottom);
177
+ } else if (activeRect.top < visibleTop) {
178
+ nextScrollTop -= Math.ceil(visibleTop - activeRect.top);
179
+ }
180
+ const maxScrollTop = Math.max(0, node.scrollHeight - node.clientHeight);
181
+ nextScrollTop = Math.max(0, Math.min(maxScrollTop, nextScrollTop));
182
+ if (nextScrollTop === node.scrollTop) return;
183
+ node.scrollTop = nextScrollTop;
184
+ currentScrollOffset.current = nextScrollTop;
185
+ scrollBridge.y = nextScrollTop;
186
+ if (nextScrollTop > 0) scrollBridge.scrollStartY = -1;
187
+ }, [hasFit, isKeyboardVisible, keyboardOccludedHeight, scrollBridge]);
188
+ const scheduleFocusedInputScroll = import_react.default.useCallback(() => {
189
+ if (!import_core.isWeb || !hasFit) return;
190
+ cancelAnimationFrame(focusedInputScrollFrame.current);
191
+ focusedInputScrollFrame.current = requestAnimationFrame(() => {
192
+ scrollFocusedInputClearOfKeyboard();
193
+ focusedInputScrollFrame.current = requestAnimationFrame(scrollFocusedInputClearOfKeyboard);
194
+ });
195
+ }, [hasFit, scrollFocusedInputClearOfKeyboard]);
196
+ (0, import_react.useEffect)(() => {
197
+ if (!import_core.isWeb || !hasFit) return;
198
+ scheduleFocusedInputScroll();
199
+ window.addEventListener("focusin", scheduleFocusedInputScroll);
200
+ window.visualViewport?.addEventListener("resize", scheduleFocusedInputScroll);
201
+ return () => {
202
+ cancelAnimationFrame(focusedInputScrollFrame.current);
203
+ window.removeEventListener("focusin", scheduleFocusedInputScroll);
204
+ window.visualViewport?.removeEventListener("resize", scheduleFocusedInputScroll);
205
+ };
206
+ }, [hasFit, scheduleFocusedInputScroll]);
97
207
  (0, import_react.useEffect)(() => {
98
208
  setHasScrollView(true);
99
209
  if ((0, import_gestureState.isGestureHandlerEnabled)()) {
@@ -106,14 +216,14 @@ const SheetScrollView = import_react.default.forwardRef(({
106
216
  scrollBridge.forceScrollTo = void 0;
107
217
  };
108
218
  }, []);
109
- const [hasScrollableContent, setHasScrollableContent] = (0, import_react.useState)(true);
110
- const parentHeight = (0, import_react.useRef)(0);
111
- const contentHeight = (0, import_react.useRef)(0);
112
219
  const updateScrollable = () => {
113
220
  if (parentHeight.current && contentHeight.current) {
114
221
  setHasScrollableContent(contentHeight.current > parentHeight.current);
115
222
  }
116
223
  };
224
+ const recordFitHeight = height => {
225
+ parentHeight.current = height;
226
+ };
117
227
  (0, import_react.useEffect)(() => {
118
228
  scrollBridge.hasScrollableContent = hasScrollableContent;
119
229
  }, [hasScrollableContent]);
@@ -122,30 +232,36 @@ const SheetScrollView = import_react.default.forwardRef(({
122
232
  scrollBridge,
123
233
  hasScrollableContent,
124
234
  scrollEnabled,
125
- setScrollEnabled
235
+ setScrollEnabled,
236
+ onManualScroll: emitManualScroll
126
237
  });
127
- const contentWrapper = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_core.View, {
238
+ const contentWrapper = /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_core.View, {
128
239
  onLayout: e => {
129
240
  const height = Math.floor(e.nativeEvent.layout.height);
130
241
  if (height !== contentHeight.current) {
131
242
  contentHeight.current = height;
132
243
  updateScrollable();
244
+ if (keyboardOccludedHeight > 0) {
245
+ scheduleFocusedInputScroll();
246
+ }
133
247
  }
134
248
  },
135
- children
249
+ children: [children, keyboardOccludedHeight > 0 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_core.View, {
250
+ "data-sheet-keyboard-scroll-pad": true,
251
+ height: keyboardOccludedHeight,
252
+ width: "100%"
253
+ })]
136
254
  });
137
255
  if (useRNGHScrollView && RNGHScrollView && panGestureRef) {
138
256
  const RNGHComponent = RNGHScrollView;
139
257
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(RNGHComponent, {
140
258
  ref: (0, import_compose_refs.composeRefs)(scrollRef, ref),
141
- style: {
142
- flex: 1
143
- },
259
+ style: fitSizingStyle,
144
260
  scrollEventThrottle: 1,
145
261
  scrollEnabled,
146
262
  simultaneousHandlers: [panGestureRef],
147
263
  onLayout: e => {
148
- parentHeight.current = Math.ceil(e.nativeEvent.layout.height);
264
+ recordFitHeight(Math.ceil(e.nativeEvent.layout.height));
149
265
  updateScrollable();
150
266
  },
151
267
  onScroll: e => {
@@ -161,40 +277,44 @@ const SheetScrollView = import_react.default.forwardRef(({
161
277
  animated: false
162
278
  });
163
279
  }
280
+ currentScrollOffset.current = scrollBridge.scrollLockY;
164
281
  scrollBridge.y = scrollBridge.scrollLockY;
165
- onScroll?.({
166
- ...e,
167
- nativeEvent: {
168
- ...e.nativeEvent,
169
- contentOffset: {
170
- ...e.nativeEvent.contentOffset,
171
- y: scrollBridge.scrollLockY
282
+ if (lastEmittedScrollOffset.current !== scrollBridge.scrollLockY) {
283
+ lastEmittedScrollOffset.current = scrollBridge.scrollLockY;
284
+ onScroll?.({
285
+ ...e,
286
+ nativeEvent: {
287
+ ...e.nativeEvent,
288
+ contentOffset: {
289
+ ...e.nativeEvent.contentOffset,
290
+ y: scrollBridge.scrollLockY
291
+ }
172
292
  }
173
- }
174
- });
293
+ });
294
+ }
175
295
  return;
176
296
  }
177
297
  scrollBridge.y = y;
178
298
  if (y > 0) scrollBridge.scrollStartY = -1;
299
+ lastEmittedScrollOffset.current = y;
179
300
  onScroll?.(e);
180
301
  },
181
- contentContainerStyle: {
182
- minHeight: "100%"
183
- },
302
+ contentContainerStyle,
184
303
  bounces: false,
185
304
  keyboardShouldPersistTaps: "always",
186
305
  keyboardDismissMode: "none",
187
306
  ...props,
307
+ ...keyboardFrozenOverride,
188
308
  children: contentWrapper
189
309
  });
190
310
  }
191
311
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_scroll_view.ScrollView, {
192
312
  onLayout: e => {
193
- parentHeight.current = Math.ceil(e.nativeEvent.layout.height);
313
+ recordFitHeight(Math.ceil(e.nativeEvent.layout.height));
194
314
  updateScrollable();
195
315
  },
196
316
  ref: (0, import_compose_refs.composeRefs)(scrollRef, ref),
197
- flex: 1,
317
+ ...fitSizingStyle,
198
318
  scrollEventThrottle: 1,
199
319
  className: "_ovs-contain",
200
320
  scrollEnabled,
@@ -202,15 +322,16 @@ const SheetScrollView = import_react.default.forwardRef(({
202
322
  const {
203
323
  y
204
324
  } = e.nativeEvent.contentOffset;
325
+ currentScrollOffset.current = y;
205
326
  scrollBridge.y = y;
206
327
  if (y > 0) scrollBridge.scrollStartY = -1;
328
+ lastEmittedScrollOffset.current = y;
207
329
  onScroll?.(e);
208
330
  },
209
- contentContainerStyle: {
210
- minHeight: "100%"
211
- },
331
+ contentContainerStyle,
212
332
  ...gestureProps,
213
333
  ...props,
334
+ ...keyboardFrozenOverride,
214
335
  children: contentWrapper
215
336
  });
216
337
  });
@@ -48,6 +48,7 @@ var import_GestureSheetContext = require("./GestureSheetContext.native.js");
48
48
  var import_gestureState = require("./gestureState.native.js");
49
49
  var import_SheetContext = require("./SheetContext.native.js");
50
50
  var import_useSheetScrollViewGestures = require("./useSheetScrollViewGestures.native.js");
51
+ var import_webViewport = require("./webViewport.native.js");
51
52
  var SHEET_SCROLL_VIEW_NAME = "SheetScrollView";
52
53
  var SheetScrollView = /* @__PURE__ */import_react.default.forwardRef(function (param, ref) {
53
54
  var {
@@ -61,32 +62,68 @@ var SheetScrollView = /* @__PURE__ */import_react.default.forwardRef(function (p
61
62
  var gestureContext = (0, import_GestureSheetContext.useGestureSheetContext)();
62
63
  var {
63
64
  scrollBridge,
64
- setHasScrollView
65
+ setHasScrollView,
66
+ hasFit,
67
+ screenSize
65
68
  } = context;
69
+ var keyboardOccludedHeight = Math.max(0, context.keyboardOccludedHeight || 0);
70
+ var isKeyboardVisible = context.isKeyboardVisible === true || import_core.isWeb && (0, import_webViewport.getWebKeyboardResizeHeight)() >= import_webViewport.MIN_KEYBOARD_HEIGHT;
66
71
  var [scrollEnabled] = (0, import_use_controllable_state.useControllableState)({
67
72
  prop: scrollEnabledProp,
68
73
  defaultProp: true
69
74
  });
70
75
  var scrollRef = import_react.default.useRef(null);
76
+ var [hasScrollableContent, setHasScrollableContent] = (0, import_react.useState)(true);
77
+ var parentHeight = (0, import_react.useRef)(0);
78
+ var contentHeight = (0, import_react.useRef)(0);
79
+ var frozenFrameHeight = Math.max(0, context.keyboardStableFrameHeight || 0);
80
+ var fitSizingStyle = hasFit ? {
81
+ flex: void 0,
82
+ height: void 0,
83
+ maxHeight: screenSize || void 0
84
+ } : {
85
+ flex: 1
86
+ };
87
+ var contentContainerStyle = hasFit ? void 0 : {
88
+ minHeight: "100%"
89
+ };
90
+ var keyboardFrozenOverride = hasFit && isKeyboardVisible && frozenFrameHeight > 0 ? {
91
+ height: frozenFrameHeight,
92
+ maxHeight: frozenFrameHeight
93
+ } : null;
71
94
  var panGestureRef = gestureContext === null || gestureContext === void 0 ? void 0 : gestureContext.panGestureRef;
72
95
  var {
73
96
  ScrollView: RNGHScrollView
74
97
  } = (0, import_gestureState.getGestureHandlerState)();
75
98
  var useRNGHScrollView = (0, import_gestureState.isGestureHandlerEnabled)() && RNGHScrollView && panGestureRef;
76
99
  var currentScrollOffset = (0, import_react.useRef)(0);
100
+ var lastEmittedScrollOffset = (0, import_react.useRef)(0);
77
101
  var lockedScrollY = (0, import_react.useRef)(0);
102
+ var focusedInputScrollFrame = (0, import_react.useRef)(0);
78
103
  var setScrollEnabled = function (next, lockTo) {
79
104
  if (!next) {
80
- var _scrollRef_current_scrollTo, _scrollRef_current;
81
- var lockY = lockTo !== null && lockTo !== void 0 ? lockTo : currentScrollOffset.current;
105
+ var _ref;
106
+ var lockY = (_ref = lockTo !== null && lockTo !== void 0 ? lockTo : scrollBridge.scrollLockY) !== null && _ref !== void 0 ? _ref : currentScrollOffset.current;
107
+ if (scrollBridge.enabled === false && scrollBridge.scrollLockY === lockY) {
108
+ return;
109
+ }
110
+ scrollBridge.enabled = false;
82
111
  lockedScrollY.current = lockY;
83
112
  scrollBridge.scrollLockY = lockY;
84
- (_scrollRef_current = scrollRef.current) === null || _scrollRef_current === void 0 ? void 0 : (_scrollRef_current_scrollTo = _scrollRef_current.scrollTo) === null || _scrollRef_current_scrollTo === void 0 ? void 0 : _scrollRef_current_scrollTo.call(_scrollRef_current, {
85
- x: 0,
86
- y: lockY,
87
- animated: false
88
- });
113
+ if (currentScrollOffset.current !== lockY) {
114
+ var _scrollRef_current_scrollTo, _scrollRef_current;
115
+ (_scrollRef_current = scrollRef.current) === null || _scrollRef_current === void 0 ? void 0 : (_scrollRef_current_scrollTo = _scrollRef_current.scrollTo) === null || _scrollRef_current_scrollTo === void 0 ? void 0 : _scrollRef_current_scrollTo.call(_scrollRef_current, {
116
+ x: 0,
117
+ y: lockY,
118
+ animated: false
119
+ });
120
+ currentScrollOffset.current = lockY;
121
+ }
89
122
  } else {
123
+ if (scrollBridge.enabled === true && scrollBridge.scrollLockY === void 0) {
124
+ return;
125
+ }
126
+ scrollBridge.enabled = true;
90
127
  lockedScrollY.current = currentScrollOffset.current;
91
128
  scrollBridge.scrollLockY = void 0;
92
129
  }
@@ -98,7 +135,84 @@ var SheetScrollView = /* @__PURE__ */import_react.default.forwardRef(function (p
98
135
  y,
99
136
  animated: false
100
137
  });
138
+ currentScrollOffset.current = y;
101
139
  };
140
+ var emitManualScroll = import_react.default.useCallback(function (node, y) {
141
+ currentScrollOffset.current = y;
142
+ scrollBridge.y = y;
143
+ if (y > 0) scrollBridge.scrollStartY = -1;
144
+ lastEmittedScrollOffset.current = y;
145
+ onScroll === null || onScroll === void 0 ? void 0 : onScroll({
146
+ nativeEvent: {
147
+ contentOffset: {
148
+ x: node.scrollLeft,
149
+ y
150
+ },
151
+ contentSize: {
152
+ height: node.scrollHeight,
153
+ width: node.scrollWidth
154
+ },
155
+ layoutMeasurement: {
156
+ height: node.offsetHeight,
157
+ width: node.offsetWidth
158
+ }
159
+ },
160
+ timeStamp: Date.now()
161
+ });
162
+ }, [onScroll, scrollBridge]);
163
+ var scrollFocusedInputClearOfKeyboard = import_react.default.useCallback(function () {
164
+ var _scrollRef_current;
165
+ if (!import_core.isWeb || !hasFit || !isKeyboardVisible || keyboardOccludedHeight <= 0) {
166
+ return;
167
+ }
168
+ var node = (_scrollRef_current = scrollRef.current) === null || _scrollRef_current === void 0 ? void 0 : _scrollRef_current.getScrollableNode();
169
+ var active = document.activeElement;
170
+ if (!node || !active || !(0, import_webViewport.isEditableElement)(active) || !node.contains(active)) {
171
+ return;
172
+ }
173
+ var keyboardHeight = Math.max(keyboardOccludedHeight, (0, import_webViewport.getWebKeyboardBottomInset)());
174
+ if (keyboardHeight <= 0) return;
175
+ var activeRect = active.getBoundingClientRect();
176
+ var nodeRect = node.getBoundingClientRect();
177
+ var margin = 12;
178
+ var keyboardTop = (0, import_webViewport.getStableLayoutViewportHeight)() - keyboardHeight;
179
+ var visibleTop = nodeRect.top + margin;
180
+ var visibleBottom = Math.min(nodeRect.bottom, keyboardTop) - margin;
181
+ var nextScrollTop = node.scrollTop;
182
+ if (activeRect.bottom > visibleBottom) {
183
+ nextScrollTop += Math.ceil(activeRect.bottom - visibleBottom);
184
+ } else if (activeRect.top < visibleTop) {
185
+ nextScrollTop -= Math.ceil(visibleTop - activeRect.top);
186
+ }
187
+ var maxScrollTop = Math.max(0, node.scrollHeight - node.clientHeight);
188
+ nextScrollTop = Math.max(0, Math.min(maxScrollTop, nextScrollTop));
189
+ if (nextScrollTop === node.scrollTop) return;
190
+ node.scrollTop = nextScrollTop;
191
+ currentScrollOffset.current = nextScrollTop;
192
+ scrollBridge.y = nextScrollTop;
193
+ if (nextScrollTop > 0) scrollBridge.scrollStartY = -1;
194
+ }, [hasFit, isKeyboardVisible, keyboardOccludedHeight, scrollBridge]);
195
+ var scheduleFocusedInputScroll = import_react.default.useCallback(function () {
196
+ if (!import_core.isWeb || !hasFit) return;
197
+ cancelAnimationFrame(focusedInputScrollFrame.current);
198
+ focusedInputScrollFrame.current = requestAnimationFrame(function () {
199
+ scrollFocusedInputClearOfKeyboard();
200
+ focusedInputScrollFrame.current = requestAnimationFrame(scrollFocusedInputClearOfKeyboard);
201
+ });
202
+ }, [hasFit, scrollFocusedInputClearOfKeyboard]);
203
+ (0, import_react.useEffect)(function () {
204
+ var _window_visualViewport;
205
+ if (!import_core.isWeb || !hasFit) return;
206
+ scheduleFocusedInputScroll();
207
+ window.addEventListener("focusin", scheduleFocusedInputScroll);
208
+ (_window_visualViewport = window.visualViewport) === null || _window_visualViewport === void 0 ? void 0 : _window_visualViewport.addEventListener("resize", scheduleFocusedInputScroll);
209
+ return function () {
210
+ var _window_visualViewport2;
211
+ cancelAnimationFrame(focusedInputScrollFrame.current);
212
+ window.removeEventListener("focusin", scheduleFocusedInputScroll);
213
+ (_window_visualViewport2 = window.visualViewport) === null || _window_visualViewport2 === void 0 ? void 0 : _window_visualViewport2.removeEventListener("resize", scheduleFocusedInputScroll);
214
+ };
215
+ }, [hasFit, scheduleFocusedInputScroll]);
102
216
  (0, import_react.useEffect)(function () {
103
217
  setHasScrollView(true);
104
218
  if ((0, import_gestureState.isGestureHandlerEnabled)()) {
@@ -111,14 +225,14 @@ var SheetScrollView = /* @__PURE__ */import_react.default.forwardRef(function (p
111
225
  scrollBridge.forceScrollTo = void 0;
112
226
  };
113
227
  }, []);
114
- var [hasScrollableContent, setHasScrollableContent] = (0, import_react.useState)(true);
115
- var parentHeight = (0, import_react.useRef)(0);
116
- var contentHeight = (0, import_react.useRef)(0);
117
228
  var updateScrollable = function () {
118
229
  if (parentHeight.current && contentHeight.current) {
119
230
  setHasScrollableContent(contentHeight.current > parentHeight.current);
120
231
  }
121
232
  };
233
+ var recordFitHeight = function (height) {
234
+ parentHeight.current = height;
235
+ };
122
236
  (0, import_react.useEffect)(function () {
123
237
  scrollBridge.hasScrollableContent = hasScrollableContent;
124
238
  }, [hasScrollableContent]);
@@ -127,30 +241,36 @@ var SheetScrollView = /* @__PURE__ */import_react.default.forwardRef(function (p
127
241
  scrollBridge,
128
242
  hasScrollableContent,
129
243
  scrollEnabled,
130
- setScrollEnabled
244
+ setScrollEnabled,
245
+ onManualScroll: emitManualScroll
131
246
  });
132
- var contentWrapper = /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_core.View, {
247
+ var contentWrapper = /* @__PURE__ */(0, import_jsx_runtime.jsxs)(import_core.View, {
133
248
  onLayout: function (e) {
134
249
  var height = Math.floor(e.nativeEvent.layout.height);
135
250
  if (height !== contentHeight.current) {
136
251
  contentHeight.current = height;
137
252
  updateScrollable();
253
+ if (keyboardOccludedHeight > 0) {
254
+ scheduleFocusedInputScroll();
255
+ }
138
256
  }
139
257
  },
140
- children
258
+ children: [children, keyboardOccludedHeight > 0 && /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_core.View, {
259
+ "data-sheet-keyboard-scroll-pad": true,
260
+ height: keyboardOccludedHeight,
261
+ width: "100%"
262
+ })]
141
263
  });
142
264
  if (useRNGHScrollView && RNGHScrollView && panGestureRef) {
143
265
  var RNGHComponent = RNGHScrollView;
144
266
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(RNGHComponent, {
145
267
  ref: (0, import_compose_refs.composeRefs)(scrollRef, ref),
146
- style: {
147
- flex: 1
148
- },
268
+ style: fitSizingStyle,
149
269
  scrollEventThrottle: 1,
150
270
  scrollEnabled,
151
271
  simultaneousHandlers: [panGestureRef],
152
272
  onLayout: function (e) {
153
- parentHeight.current = Math.ceil(e.nativeEvent.layout.height);
273
+ recordFitHeight(Math.ceil(e.nativeEvent.layout.height));
154
274
  updateScrollable();
155
275
  },
156
276
  onScroll: function (e) {
@@ -167,40 +287,44 @@ var SheetScrollView = /* @__PURE__ */import_react.default.forwardRef(function (p
167
287
  animated: false
168
288
  });
169
289
  }
290
+ currentScrollOffset.current = scrollBridge.scrollLockY;
170
291
  scrollBridge.y = scrollBridge.scrollLockY;
171
- onScroll === null || onScroll === void 0 ? void 0 : onScroll({
172
- ...e,
173
- nativeEvent: {
174
- ...e.nativeEvent,
175
- contentOffset: {
176
- ...e.nativeEvent.contentOffset,
177
- y: scrollBridge.scrollLockY
292
+ if (lastEmittedScrollOffset.current !== scrollBridge.scrollLockY) {
293
+ lastEmittedScrollOffset.current = scrollBridge.scrollLockY;
294
+ onScroll === null || onScroll === void 0 ? void 0 : onScroll({
295
+ ...e,
296
+ nativeEvent: {
297
+ ...e.nativeEvent,
298
+ contentOffset: {
299
+ ...e.nativeEvent.contentOffset,
300
+ y: scrollBridge.scrollLockY
301
+ }
178
302
  }
179
- }
180
- });
303
+ });
304
+ }
181
305
  return;
182
306
  }
183
307
  scrollBridge.y = y;
184
308
  if (y > 0) scrollBridge.scrollStartY = -1;
309
+ lastEmittedScrollOffset.current = y;
185
310
  onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);
186
311
  },
187
- contentContainerStyle: {
188
- minHeight: "100%"
189
- },
312
+ contentContainerStyle,
190
313
  bounces: false,
191
314
  keyboardShouldPersistTaps: "always",
192
315
  keyboardDismissMode: "none",
193
316
  ...props,
317
+ ...keyboardFrozenOverride,
194
318
  children: contentWrapper
195
319
  });
196
320
  }
197
321
  return /* @__PURE__ */(0, import_jsx_runtime.jsx)(import_scroll_view.ScrollView, {
198
322
  onLayout: function (e) {
199
- parentHeight.current = Math.ceil(e.nativeEvent.layout.height);
323
+ recordFitHeight(Math.ceil(e.nativeEvent.layout.height));
200
324
  updateScrollable();
201
325
  },
202
326
  ref: (0, import_compose_refs.composeRefs)(scrollRef, ref),
203
- flex: 1,
327
+ ...fitSizingStyle,
204
328
  scrollEventThrottle: 1,
205
329
  className: "_ovs-contain",
206
330
  scrollEnabled,
@@ -208,15 +332,16 @@ var SheetScrollView = /* @__PURE__ */import_react.default.forwardRef(function (p
208
332
  var {
209
333
  y
210
334
  } = e.nativeEvent.contentOffset;
335
+ currentScrollOffset.current = y;
211
336
  scrollBridge.y = y;
212
337
  if (y > 0) scrollBridge.scrollStartY = -1;
338
+ lastEmittedScrollOffset.current = y;
213
339
  onScroll === null || onScroll === void 0 ? void 0 : onScroll(e);
214
340
  },
215
- contentContainerStyle: {
216
- minHeight: "100%"
217
- },
341
+ contentContainerStyle,
218
342
  ...gestureProps,
219
343
  ...props,
344
+ ...keyboardFrozenOverride,
220
345
  children: contentWrapper
221
346
  });
222
347
  });
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","SheetScrollView_exports","__export","SheetScrollView","module","exports","import_jsx_runtime","require","import_compose_refs","import_core","import_scroll_view","import_use_controllable_state","import_react","__toESM","import_GestureSheetContext","import_gestureState","import_SheetContext","import_useSheetScrollViewGestures","SHEET_SCROLL_VIEW_NAME","default","forwardRef","param","ref","__scopeSheet","children","onScroll","scrollEnabled","scrollEnabledProp","props","context","useSheetContext","gestureContext","useGestureSheetContext","scrollBridge","setHasScrollView","useControllableState","prop","defaultProp","scrollRef","useRef","panGestureRef","ScrollView","RNGHScrollView","getGestureHandlerState","useRNGHScrollView","isGestureHandlerEnabled","currentScrollOffset","lockedScrollY","setScrollEnabled","next","lockTo","_scrollRef_current_scrollTo","_scrollRef_current","lockY","current","scrollLockY","scrollTo","call","x","y","animated","forceScrollTo","useEffect","hasScrollableContent","setHasScrollableContent","useState","parentHeight","contentHeight","updateScrollable","gestureProps","useSheetScrollViewGestures","contentWrapper","jsx","View","onLayout","e","height","Math","floor","nativeEvent","layout","RNGHComponent","composeRefs","style","flex","scrollEventThrottle","simultaneousHandlers","ceil","contentOffset","scrollStartY","contentContainerStyle","minHeight","bounces","keyboardShouldPersistTaps","keyboardDismissMode","className"],"sources":["../../src/SheetScrollView.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","SheetScrollView_exports","__export","SheetScrollView","module","exports","import_jsx_runtime","require","import_compose_refs","import_core","import_scroll_view","import_use_controllable_state","import_react","__toESM","import_GestureSheetContext","import_gestureState","import_SheetContext","import_useSheetScrollViewGestures","import_webViewport","SHEET_SCROLL_VIEW_NAME","default","forwardRef","param","ref","__scopeSheet","children","onScroll","scrollEnabled","scrollEnabledProp","props","context","useSheetContext","gestureContext","useGestureSheetContext","scrollBridge","setHasScrollView","hasFit","screenSize","keyboardOccludedHeight","Math","max","isKeyboardVisible","isWeb","getWebKeyboardResizeHeight","MIN_KEYBOARD_HEIGHT","useControllableState","prop","defaultProp","scrollRef","useRef","hasScrollableContent","setHasScrollableContent","useState","parentHeight","contentHeight","frozenFrameHeight","keyboardStableFrameHeight","fitSizingStyle","flex","height","maxHeight","contentContainerStyle","minHeight","keyboardFrozenOverride","panGestureRef","ScrollView","RNGHScrollView","getGestureHandlerState","useRNGHScrollView","isGestureHandlerEnabled","currentScrollOffset","lastEmittedScrollOffset","lockedScrollY","focusedInputScrollFrame","setScrollEnabled","next","lockTo","_ref","lockY","scrollLockY","current","enabled","_scrollRef_current_scrollTo","_scrollRef_current","scrollTo","call","x","y","animated","forceScrollTo","emitManualScroll","useCallback","node","scrollStartY","nativeEvent","contentOffset","scrollLeft","contentSize","scrollHeight","width","scrollWidth","layoutMeasurement","offsetHeight","offsetWidth","timeStamp","Date","now","scrollFocusedInputClearOfKeyboard","getScrollableNode","active","document","activeElement","isEditableElement","contains","keyboardHeight","getWebKeyboardBottomInset","activeRect","getBoundingClientRect","nodeRect","margin","keyboardTop","getStableLayoutViewportHeight","visibleTop","top","visibleBottom","min","bottom","nextScrollTop","scrollTop","ceil","maxScrollTop","clientHeight","scheduleFocusedInputScroll","cancelAnimationFrame","requestAnimationFrame","useEffect","_window_visualViewport","window","addEventListener","visualViewport","_window_visualViewport2","removeEventListener","updateScrollable","recordFitHeight","gestureProps","useSheetScrollViewGestures","onManualScroll","contentWrapper","jsxs","View","onLayout","e","floor","layout","jsx","RNGHComponent","composeRefs","style","scrollEventThrottle","simultaneousHandlers","bounces","keyboardShouldPersistTaps","keyboardDismissMode"],"sources":["../../src/SheetScrollView.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}