@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.
- package/.turbo/turbo-build.log +2 -0
- package/controller/index.cjs +2 -0
- package/controller/index.d.ts +5 -0
- package/controller/index.js +2 -0
- package/controller/index.native.cjs +2 -0
- package/controller/index.native.js +2 -0
- package/dist/cjs/GestureDetectorWrapper.native.js.map +1 -1
- package/dist/cjs/SheetImplementationCustom.cjs +137 -74
- package/dist/cjs/SheetImplementationCustom.native.js +162 -83
- package/dist/cjs/SheetImplementationCustom.native.js.map +1 -1
- package/dist/cjs/SheetScrollView.cjs +155 -34
- package/dist/cjs/SheetScrollView.native.js +160 -35
- package/dist/cjs/SheetScrollView.native.js.map +1 -1
- package/dist/cjs/createSheet.cjs +7 -3
- package/dist/cjs/createSheet.native.js +7 -3
- package/dist/cjs/createSheet.native.js.map +1 -1
- package/dist/cjs/gestureState.cjs +13 -2
- package/dist/cjs/gestureState.native.js +14 -2
- package/dist/cjs/gestureState.native.js.map +1 -1
- package/dist/cjs/index.cjs +12 -1
- package/dist/cjs/index.native.js +11 -0
- package/dist/cjs/index.native.js.map +1 -1
- package/dist/cjs/keyboardAvoidance.cjs +93 -0
- package/dist/cjs/keyboardAvoidance.native.js +99 -0
- package/dist/cjs/keyboardAvoidance.native.js.map +1 -0
- package/dist/cjs/nativeSheet.cjs +3 -0
- package/dist/cjs/nativeSheet.native.js +3 -0
- package/dist/cjs/nativeSheet.native.js.map +1 -1
- package/dist/cjs/setupGestureHandler.cjs +9 -6
- package/dist/cjs/setupGestureHandler.native.js +11 -6
- package/dist/cjs/setupGestureHandler.native.js.map +1 -1
- package/dist/cjs/useGestureHandlerPan.cjs +86 -18
- package/dist/cjs/useGestureHandlerPan.native.js +91 -18
- package/dist/cjs/useGestureHandlerPan.native.js.map +1 -1
- package/dist/cjs/useKeyboardControllerSheet.cjs +68 -6
- package/dist/cjs/useSafeAreaInsets.cjs +44 -0
- package/dist/cjs/useSafeAreaInsets.native.js +48 -0
- package/dist/cjs/useSafeAreaInsets.native.js.map +1 -0
- package/dist/cjs/useSheetProviderProps.cjs +1 -1
- package/dist/cjs/useSheetProviderProps.native.js +1 -1
- package/dist/cjs/useSheetProviderProps.native.js.map +1 -1
- package/dist/cjs/useSheetScrollViewGestures.cjs +30 -5
- package/dist/cjs/useSheetScrollViewGestures.native.js +4 -0
- package/dist/cjs/useSheetScrollViewGestures.native.js.map +1 -1
- package/dist/cjs/webViewport.cjs +75 -0
- package/dist/cjs/webViewport.native.js +81 -0
- package/dist/cjs/webViewport.native.js.map +1 -0
- package/dist/esm/GestureDetectorWrapper.mjs.map +1 -1
- package/dist/esm/GestureDetectorWrapper.native.js.map +1 -1
- package/dist/esm/SheetImplementationCustom.mjs +143 -84
- package/dist/esm/SheetImplementationCustom.mjs.map +1 -1
- package/dist/esm/SheetImplementationCustom.native.js +173 -102
- package/dist/esm/SheetImplementationCustom.native.js.map +1 -1
- package/dist/esm/SheetScrollView.mjs +157 -36
- package/dist/esm/SheetScrollView.mjs.map +1 -1
- package/dist/esm/SheetScrollView.native.js +162 -37
- package/dist/esm/SheetScrollView.native.js.map +1 -1
- package/dist/esm/createSheet.mjs +9 -6
- package/dist/esm/createSheet.mjs.map +1 -1
- package/dist/esm/createSheet.native.js +19 -15
- package/dist/esm/createSheet.native.js.map +1 -1
- package/dist/esm/gestureState.mjs +13 -2
- package/dist/esm/gestureState.mjs.map +1 -1
- package/dist/esm/gestureState.native.js +14 -2
- package/dist/esm/gestureState.native.js.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/index.mjs +2 -0
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/index.native.js +2 -0
- package/dist/esm/index.native.js.map +1 -1
- package/dist/esm/keyboardAvoidance.mjs +66 -0
- package/dist/esm/keyboardAvoidance.mjs.map +1 -0
- package/dist/esm/keyboardAvoidance.native.js +69 -0
- package/dist/esm/keyboardAvoidance.native.js.map +1 -0
- package/dist/esm/nativeSheet.mjs +3 -0
- package/dist/esm/nativeSheet.mjs.map +1 -1
- package/dist/esm/nativeSheet.native.js +3 -0
- package/dist/esm/nativeSheet.native.js.map +1 -1
- package/dist/esm/setupGestureHandler.mjs +9 -6
- package/dist/esm/setupGestureHandler.mjs.map +1 -1
- package/dist/esm/setupGestureHandler.native.js +11 -6
- package/dist/esm/setupGestureHandler.native.js.map +1 -1
- package/dist/esm/useGestureHandlerPan.mjs +87 -19
- package/dist/esm/useGestureHandlerPan.mjs.map +1 -1
- package/dist/esm/useGestureHandlerPan.native.js +92 -19
- package/dist/esm/useGestureHandlerPan.native.js.map +1 -1
- package/dist/esm/useKeyboardControllerSheet.mjs +69 -7
- package/dist/esm/useKeyboardControllerSheet.mjs.map +1 -1
- package/dist/esm/useSafeAreaInsets.mjs +7 -0
- package/dist/esm/useSafeAreaInsets.mjs.map +1 -0
- package/dist/esm/useSafeAreaInsets.native.js +8 -0
- package/dist/esm/useSafeAreaInsets.native.js.map +1 -0
- package/dist/esm/useSheetProviderProps.mjs +1 -1
- package/dist/esm/useSheetProviderProps.mjs.map +1 -1
- package/dist/esm/useSheetProviderProps.native.js +1 -1
- package/dist/esm/useSheetProviderProps.native.js.map +1 -1
- package/dist/esm/useSheetScrollViewGestures.mjs +30 -5
- package/dist/esm/useSheetScrollViewGestures.mjs.map +1 -1
- package/dist/esm/useSheetScrollViewGestures.native.js +4 -0
- package/dist/esm/useSheetScrollViewGestures.native.js.map +1 -1
- package/dist/esm/webViewport.mjs +43 -0
- package/dist/esm/webViewport.mjs.map +1 -0
- package/dist/esm/webViewport.native.js +46 -0
- package/dist/esm/webViewport.native.js.map +1 -0
- package/dist/jsx/GestureDetectorWrapper.mjs.map +1 -1
- package/dist/jsx/GestureDetectorWrapper.native.js.map +1 -1
- package/dist/jsx/SheetImplementationCustom.mjs +143 -84
- package/dist/jsx/SheetImplementationCustom.mjs.map +1 -1
- package/dist/jsx/SheetImplementationCustom.native.js +162 -83
- package/dist/jsx/SheetImplementationCustom.native.js.map +1 -1
- package/dist/jsx/SheetScrollView.mjs +157 -36
- package/dist/jsx/SheetScrollView.mjs.map +1 -1
- package/dist/jsx/SheetScrollView.native.js +160 -35
- package/dist/jsx/SheetScrollView.native.js.map +1 -1
- package/dist/jsx/createSheet.mjs +9 -6
- package/dist/jsx/createSheet.mjs.map +1 -1
- package/dist/jsx/createSheet.native.js +7 -3
- package/dist/jsx/createSheet.native.js.map +1 -1
- package/dist/jsx/gestureState.mjs +13 -2
- package/dist/jsx/gestureState.mjs.map +1 -1
- package/dist/jsx/gestureState.native.js +14 -2
- package/dist/jsx/gestureState.native.js.map +1 -1
- package/dist/jsx/index.js +2 -0
- package/dist/jsx/index.js.map +1 -1
- package/dist/jsx/index.mjs +2 -0
- package/dist/jsx/index.mjs.map +1 -1
- package/dist/jsx/index.native.js +11 -0
- package/dist/jsx/index.native.js.map +1 -1
- package/dist/jsx/keyboardAvoidance.mjs +66 -0
- package/dist/jsx/keyboardAvoidance.mjs.map +1 -0
- package/dist/jsx/keyboardAvoidance.native.js +99 -0
- package/dist/jsx/keyboardAvoidance.native.js.map +1 -0
- package/dist/jsx/nativeSheet.mjs +3 -0
- package/dist/jsx/nativeSheet.mjs.map +1 -1
- package/dist/jsx/nativeSheet.native.js +3 -0
- package/dist/jsx/nativeSheet.native.js.map +1 -1
- package/dist/jsx/setupGestureHandler.mjs +9 -6
- package/dist/jsx/setupGestureHandler.mjs.map +1 -1
- package/dist/jsx/setupGestureHandler.native.js +11 -6
- package/dist/jsx/setupGestureHandler.native.js.map +1 -1
- package/dist/jsx/useGestureHandlerPan.mjs +87 -19
- package/dist/jsx/useGestureHandlerPan.mjs.map +1 -1
- package/dist/jsx/useGestureHandlerPan.native.js +91 -18
- package/dist/jsx/useGestureHandlerPan.native.js.map +1 -1
- package/dist/jsx/useKeyboardControllerSheet.mjs +69 -7
- package/dist/jsx/useKeyboardControllerSheet.mjs.map +1 -1
- package/dist/jsx/useSafeAreaInsets.mjs +7 -0
- package/dist/jsx/useSafeAreaInsets.mjs.map +1 -0
- package/dist/jsx/useSafeAreaInsets.native.js +48 -0
- package/dist/jsx/useSafeAreaInsets.native.js.map +1 -0
- package/dist/jsx/useSheetProviderProps.mjs +1 -1
- package/dist/jsx/useSheetProviderProps.mjs.map +1 -1
- package/dist/jsx/useSheetProviderProps.native.js +1 -1
- package/dist/jsx/useSheetProviderProps.native.js.map +1 -1
- package/dist/jsx/useSheetScrollViewGestures.mjs +30 -5
- package/dist/jsx/useSheetScrollViewGestures.mjs.map +1 -1
- package/dist/jsx/useSheetScrollViewGestures.native.js +4 -0
- package/dist/jsx/useSheetScrollViewGestures.native.js.map +1 -1
- package/dist/jsx/webViewport.mjs +43 -0
- package/dist/jsx/webViewport.mjs.map +1 -0
- package/dist/jsx/webViewport.native.js +81 -0
- package/dist/jsx/webViewport.native.js.map +1 -0
- package/next.md +78 -0
- package/package.json +30 -48
- package/setup-gesture-handler/index.cjs +2 -0
- package/setup-gesture-handler/index.js +2 -0
- package/setup-gesture-handler/index.native.cjs +2 -0
- package/setup-gesture-handler/index.native.js +2 -0
- package/src/GestureDetectorWrapper.tsx +0 -3
- package/src/SheetImplementationCustom.tsx +387 -127
- package/src/SheetScrollView.tsx +195 -22
- package/src/createSheet.tsx +20 -7
- package/src/gestureState.ts +22 -2
- package/src/index.ts +4 -0
- package/src/keyboardAvoidance.ts +121 -0
- package/src/nativeSheet.tsx +8 -1
- package/src/setupGestureHandler.ts +14 -5
- package/src/types.tsx +20 -1
- package/src/useGestureHandlerPan.tsx +94 -35
- package/src/useKeyboardControllerSheet.ts +127 -10
- package/src/useSafeAreaInsets.native.ts +29 -0
- package/src/useSafeAreaInsets.ts +19 -0
- package/src/useSheetProviderProps.tsx +12 -1
- package/src/useSheetScrollViewGestures.native.ts +4 -0
- package/src/useSheetScrollViewGestures.ts +52 -5
- package/src/webViewport.ts +100 -0
- package/test/keyboardAvoidance.test.ts +269 -0
- package/tsconfig.json +57 -0
- package/types/GestureDetectorWrapper.d.ts +1 -1
- package/types/GestureDetectorWrapper.d.ts.map +1 -1
- package/types/GestureSheetContext.d.ts +1 -1
- package/types/GestureSheetContext.d.ts.map +1 -1
- package/types/Sheet.d.ts +6 -5
- package/types/Sheet.d.ts.map +1 -1
- package/types/SheetContext.d.ts +5 -2
- package/types/SheetContext.d.ts.map +1 -1
- package/types/SheetController.d.ts +1 -2
- package/types/SheetController.d.ts.map +1 -1
- package/types/SheetImplementationCustom.d.ts +1 -0
- package/types/SheetImplementationCustom.d.ts.map +1 -1
- package/types/SheetScrollView.d.ts.map +1 -1
- package/types/createSheet.d.ts +13 -12
- package/types/createSheet.d.ts.map +1 -1
- package/types/gestureState.d.ts.map +1 -1
- package/types/index.d.ts +1 -0
- package/types/index.d.ts.map +1 -1
- package/types/keyboardAvoidance.d.ts +26 -0
- package/types/keyboardAvoidance.d.ts.map +1 -0
- package/types/nativeSheet.d.ts.map +1 -1
- package/types/setupGestureHandler.d.ts.map +1 -1
- package/types/types.d.ts +10 -1
- package/types/types.d.ts.map +1 -1
- package/types/useGestureHandlerPan.d.ts +4 -1
- package/types/useGestureHandlerPan.d.ts.map +1 -1
- package/types/useKeyboardControllerSheet.d.ts +14 -3
- package/types/useKeyboardControllerSheet.d.ts.map +1 -1
- package/types/useSafeAreaInsets.d.ts +10 -0
- package/types/useSafeAreaInsets.d.ts.map +1 -0
- package/types/useSafeAreaInsets.native.d.ts +20 -0
- package/types/useSafeAreaInsets.native.d.ts.map +1 -0
- package/types/useSheetProviderProps.d.ts +3 -0
- package/types/useSheetProviderProps.d.ts.map +1 -1
- package/types/useSheetScrollViewGestures.d.ts +2 -1
- package/types/useSheetScrollViewGestures.d.ts.map +1 -1
- package/types/useSheetScrollViewGestures.native.d.ts.map +1 -1
- package/types/webViewport.d.ts +36 -0
- package/types/webViewport.d.ts.map +1 -0
- 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
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
...e
|
|
169
|
-
|
|
170
|
-
...e.nativeEvent
|
|
171
|
-
|
|
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
|
-
|
|
313
|
+
recordFitHeight(Math.ceil(e.nativeEvent.layout.height));
|
|
194
314
|
updateScrollable();
|
|
195
315
|
},
|
|
196
316
|
ref: (0, import_compose_refs.composeRefs)(scrollRef, ref),
|
|
197
|
-
|
|
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
|
|
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
|
-
(
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
...e
|
|
175
|
-
|
|
176
|
-
...e.nativeEvent
|
|
177
|
-
|
|
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
|
-
|
|
323
|
+
recordFitHeight(Math.ceil(e.nativeEvent.layout.height));
|
|
200
324
|
updateScrollable();
|
|
201
325
|
},
|
|
202
326
|
ref: (0, import_compose_refs.composeRefs)(scrollRef, ref),
|
|
203
|
-
|
|
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":[]}
|