@react-navigation/stack 8.0.0-alpha.6 → 8.0.0-alpha.60
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/lib/module/TransitionConfigs/CardStyleInterpolators.js +280 -84
- package/lib/module/TransitionConfigs/CardStyleInterpolators.js.map +1 -1
- package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js +11 -44
- package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js.map +1 -1
- package/lib/module/TransitionConfigs/TransitionEasings.js +71 -0
- package/lib/module/TransitionConfigs/TransitionEasings.js.map +1 -0
- package/lib/module/TransitionConfigs/TransitionPresets.js +50 -10
- package/lib/module/TransitionConfigs/TransitionPresets.js.map +1 -1
- package/lib/module/TransitionConfigs/TransitionSpecs.js +69 -34
- package/lib/module/TransitionConfigs/TransitionSpecs.js.map +1 -1
- package/lib/module/index.js +2 -2
- package/lib/module/index.js.map +1 -1
- package/lib/module/navigators/createStackNavigator.js +37 -33
- package/lib/module/navigators/createStackNavigator.js.map +1 -1
- package/lib/module/utils/GestureHandlerContext.js +5 -0
- package/lib/module/utils/GestureHandlerContext.js.map +1 -0
- package/lib/module/utils/gestureActivationCriteria.js +10 -8
- package/lib/module/utils/gestureActivationCriteria.js.map +1 -1
- package/lib/module/utils/useCardAnimation.js +1 -1
- package/lib/module/utils/useCardAnimation.js.map +1 -1
- package/lib/module/utils/useGestureHandler.js +9 -0
- package/lib/module/utils/useGestureHandler.js.map +1 -0
- package/lib/module/utils/useKeyboardManager.js +71 -26
- package/lib/module/utils/useKeyboardManager.js.map +1 -1
- package/lib/module/views/GestureHandler.js +15 -14
- package/lib/module/views/GestureHandler.js.map +1 -1
- package/lib/module/views/GestureHandlerNative.js +16 -10
- package/lib/module/views/GestureHandlerNative.js.map +1 -1
- package/lib/module/views/Header/Header.js +4 -2
- package/lib/module/views/Header/Header.js.map +1 -1
- package/lib/module/views/Header/HeaderContainer.js +60 -21
- package/lib/module/views/Header/HeaderContainer.js.map +1 -1
- package/lib/module/views/Header/HeaderSegment.js +6 -9
- package/lib/module/views/Header/HeaderSegment.js.map +1 -1
- package/lib/module/views/Stack/Card.js +170 -123
- package/lib/module/views/Stack/Card.js.map +1 -1
- package/lib/module/views/Stack/CardContainer.js +96 -98
- package/lib/module/views/Stack/CardContainer.js.map +1 -1
- package/lib/module/views/Stack/CardContent.js +10 -37
- package/lib/module/views/Stack/CardContent.js.map +1 -1
- package/lib/module/views/Stack/CardStack.js +211 -147
- package/lib/module/views/Stack/CardStack.js.map +1 -1
- package/lib/module/views/Stack/StackView.js +106 -57
- package/lib/module/views/Stack/StackView.js.map +1 -1
- package/lib/typescript/src/TransitionConfigs/CardStyleInterpolators.d.ts +20 -12
- package/lib/typescript/src/TransitionConfigs/CardStyleInterpolators.d.ts.map +1 -1
- package/lib/typescript/src/TransitionConfigs/HeaderStyleInterpolators.d.ts +4 -4
- package/lib/typescript/src/TransitionConfigs/HeaderStyleInterpolators.d.ts.map +1 -1
- package/lib/typescript/src/TransitionConfigs/TransitionEasings.d.ts +38 -0
- package/lib/typescript/src/TransitionConfigs/TransitionEasings.d.ts.map +1 -0
- package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts +15 -3
- package/lib/typescript/src/TransitionConfigs/TransitionPresets.d.ts.map +1 -1
- package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts +44 -15
- package/lib/typescript/src/TransitionConfigs/TransitionSpecs.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +12 -12
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/navigators/createStackNavigator.d.ts +10 -15
- package/lib/typescript/src/navigators/createStackNavigator.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +120 -108
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/utils/CardAnimationContext.d.ts +1 -1
- package/lib/typescript/src/utils/CardAnimationContext.d.ts.map +1 -1
- package/lib/typescript/src/utils/GestureHandlerContext.d.ts +3 -0
- package/lib/typescript/src/utils/GestureHandlerContext.d.ts.map +1 -0
- package/lib/typescript/src/utils/gestureActivationCriteria.d.ts +4 -51
- package/lib/typescript/src/utils/gestureActivationCriteria.d.ts.map +1 -1
- package/lib/typescript/src/utils/getDistanceForDirection.d.ts +1 -1
- package/lib/typescript/src/utils/getDistanceForDirection.d.ts.map +1 -1
- package/lib/typescript/src/utils/getInvertedMultiplier.d.ts +1 -1
- package/lib/typescript/src/utils/getInvertedMultiplier.d.ts.map +1 -1
- package/lib/typescript/src/utils/getModalRoutesKeys.d.ts +1 -1
- package/lib/typescript/src/utils/getModalRoutesKeys.d.ts.map +1 -1
- package/lib/typescript/src/utils/getShadowStyle.d.ts +5 -5
- package/lib/typescript/src/utils/useCardAnimation.d.ts +1 -1
- package/lib/typescript/src/utils/useCardAnimation.d.ts.map +1 -1
- package/lib/typescript/src/utils/useGestureHandler.d.ts +2 -0
- package/lib/typescript/src/utils/useGestureHandler.d.ts.map +1 -0
- package/lib/typescript/src/utils/useKeyboardManager.d.ts +12 -2
- package/lib/typescript/src/utils/useKeyboardManager.d.ts.map +1 -1
- package/lib/typescript/src/views/GestureHandler.android.d.ts +1 -1
- package/lib/typescript/src/views/GestureHandler.android.d.ts.map +1 -1
- package/lib/typescript/src/views/GestureHandler.d.ts +7 -11
- package/lib/typescript/src/views/GestureHandler.d.ts.map +1 -1
- package/lib/typescript/src/views/GestureHandler.ios.d.ts +1 -1
- package/lib/typescript/src/views/GestureHandler.ios.d.ts.map +1 -1
- package/lib/typescript/src/views/GestureHandlerNative.d.ts +9 -4
- package/lib/typescript/src/views/GestureHandlerNative.d.ts.map +1 -1
- package/lib/typescript/src/views/Header/Header.d.ts +2 -2
- package/lib/typescript/src/views/Header/Header.d.ts.map +1 -1
- package/lib/typescript/src/views/Header/HeaderContainer.d.ts +9 -3
- package/lib/typescript/src/views/Header/HeaderContainer.d.ts.map +1 -1
- package/lib/typescript/src/views/Header/HeaderSegment.d.ts +6 -4
- package/lib/typescript/src/views/Header/HeaderSegment.d.ts.map +1 -1
- package/lib/typescript/src/views/Stack/Card.d.ts +14 -8
- package/lib/typescript/src/views/Stack/Card.d.ts.map +1 -1
- package/lib/typescript/src/views/Stack/CardContainer.d.ts +7 -7
- package/lib/typescript/src/views/Stack/CardContainer.d.ts.map +1 -1
- package/lib/typescript/src/views/Stack/CardContent.d.ts +1 -1
- package/lib/typescript/src/views/Stack/CardContent.d.ts.map +1 -1
- package/lib/typescript/src/views/Stack/CardStack.d.ts +10 -6
- package/lib/typescript/src/views/Stack/CardStack.d.ts.map +1 -1
- package/lib/typescript/src/views/Stack/StackView.d.ts +14 -17
- package/lib/typescript/src/views/Stack/StackView.d.ts.map +1 -1
- package/package.json +23 -24
- package/src/TransitionConfigs/CardStyleInterpolators.tsx +399 -100
- package/src/TransitionConfigs/HeaderStyleInterpolators.tsx +15 -46
- package/src/TransitionConfigs/TransitionEasings.tsx +90 -0
- package/src/TransitionConfigs/TransitionPresets.tsx +56 -10
- package/src/TransitionConfigs/TransitionSpecs.tsx +68 -34
- package/src/index.tsx +3 -2
- package/src/navigators/createStackNavigator.tsx +74 -91
- package/src/types.tsx +149 -123
- package/src/utils/GestureHandlerContext.tsx +5 -0
- package/src/utils/gestureActivationCriteria.tsx +14 -10
- package/src/utils/useCardAnimation.tsx +1 -1
- package/src/utils/useGestureHandler.tsx +9 -0
- package/src/utils/useKeyboardManager.tsx +96 -33
- package/src/views/GestureHandler.tsx +24 -16
- package/src/views/GestureHandlerNative.tsx +24 -13
- package/src/views/Header/Header.tsx +4 -2
- package/src/views/Header/HeaderContainer.tsx +79 -37
- package/src/views/Header/HeaderSegment.tsx +10 -11
- package/src/views/Stack/Card.tsx +241 -154
- package/src/views/Stack/CardContainer.tsx +111 -127
- package/src/views/Stack/CardContent.tsx +13 -51
- package/src/views/Stack/CardStack.tsx +478 -335
- package/src/views/Stack/StackView.tsx +181 -82
- package/lib/module/utils/GestureHandlerRefContext.js +0 -5
- package/lib/module/utils/GestureHandlerRefContext.js.map +0 -1
- package/lib/module/utils/findLastIndex.js +0 -11
- package/lib/module/utils/findLastIndex.js.map +0 -1
- package/lib/module/utils/useGestureHandlerRef.js +0 -12
- package/lib/module/utils/useGestureHandlerRef.js.map +0 -1
- package/lib/module/views/Stack/CardA11yWrapper.js +0 -43
- package/lib/module/views/Stack/CardA11yWrapper.js.map +0 -1
- package/lib/typescript/src/utils/GestureHandlerRefContext.d.ts +0 -3
- package/lib/typescript/src/utils/GestureHandlerRefContext.d.ts.map +0 -1
- package/lib/typescript/src/utils/findLastIndex.d.ts +0 -2
- package/lib/typescript/src/utils/findLastIndex.d.ts.map +0 -1
- package/lib/typescript/src/utils/useGestureHandlerRef.d.ts +0 -3
- package/lib/typescript/src/utils/useGestureHandlerRef.d.ts.map +0 -1
- package/lib/typescript/src/views/Stack/CardA11yWrapper.d.ts +0 -15
- package/lib/typescript/src/views/Stack/CardA11yWrapper.d.ts.map +0 -1
- package/src/utils/GestureHandlerRefContext.tsx +0 -5
- package/src/utils/findLastIndex.tsx +0 -9
- package/src/utils/useGestureHandlerRef.tsx +0 -15
- package/src/views/Stack/CardA11yWrapper.tsx +0 -67
|
@@ -7,26 +7,23 @@ import { StyleSheet, View } from 'react-native';
|
|
|
7
7
|
import { ModalPresentationContext } from "../../utils/ModalPresentationContext.js";
|
|
8
8
|
import { useKeyboardManager } from "../../utils/useKeyboardManager.js";
|
|
9
9
|
import { Card } from "./Card.js";
|
|
10
|
-
import { CardA11yWrapper } from "./CardA11yWrapper.js";
|
|
11
10
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
12
|
-
const EPSILON = 0.1;
|
|
13
11
|
function CardContainerInner({
|
|
14
12
|
interpolationIndex,
|
|
15
13
|
index,
|
|
16
14
|
active,
|
|
17
15
|
opening,
|
|
18
16
|
closing,
|
|
17
|
+
closingAnimated,
|
|
18
|
+
nextClosingAnimated,
|
|
19
19
|
gesture,
|
|
20
20
|
focused,
|
|
21
21
|
modal,
|
|
22
22
|
getPreviousScene,
|
|
23
23
|
getFocusedRoute,
|
|
24
|
-
hasAbsoluteFloatHeader,
|
|
25
24
|
headerHeight,
|
|
26
25
|
onHeaderHeightChange,
|
|
27
26
|
isParentHeaderShown,
|
|
28
|
-
isNextScreenTransparent,
|
|
29
|
-
detachCurrentScreen,
|
|
30
27
|
layout,
|
|
31
28
|
onCloseRoute,
|
|
32
29
|
onOpenRoute,
|
|
@@ -41,24 +38,27 @@ function CardContainerInner({
|
|
|
41
38
|
safeAreaInsetLeft,
|
|
42
39
|
safeAreaInsetRight,
|
|
43
40
|
safeAreaInsetTop,
|
|
44
|
-
scene
|
|
41
|
+
scene,
|
|
42
|
+
children
|
|
45
43
|
}) {
|
|
46
|
-
const wrapperRef = React.useRef(null);
|
|
47
44
|
const {
|
|
48
45
|
direction
|
|
49
46
|
} = useLocale();
|
|
50
|
-
const parentHeaderHeight = React.
|
|
47
|
+
const parentHeaderHeight = React.use(HeaderHeightContext);
|
|
48
|
+
const {
|
|
49
|
+
options
|
|
50
|
+
} = scene.descriptor;
|
|
51
|
+
const enabled = options.keyboardHandlingEnabled !== false;
|
|
52
|
+
const contentRef = React.useRef(null);
|
|
51
53
|
const {
|
|
52
54
|
onPageChangeStart,
|
|
53
55
|
onPageChangeCancel,
|
|
54
56
|
onPageChangeConfirm
|
|
55
|
-
} = useKeyboardManager(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
return navigation.isFocused() && options.keyboardHandlingEnabled !== false;
|
|
61
|
-
}, [scene.descriptor]));
|
|
57
|
+
} = useKeyboardManager({
|
|
58
|
+
enabled,
|
|
59
|
+
focused,
|
|
60
|
+
contentRef
|
|
61
|
+
});
|
|
62
62
|
const handleOpen = () => {
|
|
63
63
|
const {
|
|
64
64
|
route
|
|
@@ -111,17 +111,14 @@ function CardContainerInner({
|
|
|
111
111
|
closing,
|
|
112
112
|
gesture
|
|
113
113
|
}) => {
|
|
114
|
-
wrapperRef.current?.setInert(closing);
|
|
115
114
|
const {
|
|
116
115
|
route
|
|
117
116
|
} = scene.descriptor;
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
}
|
|
123
|
-
onPageChangeCancel?.();
|
|
124
|
-
}
|
|
117
|
+
onPageChangeConfirm?.({
|
|
118
|
+
gesture,
|
|
119
|
+
active,
|
|
120
|
+
closing
|
|
121
|
+
});
|
|
125
122
|
onTransitionStart?.({
|
|
126
123
|
route
|
|
127
124
|
}, closing);
|
|
@@ -135,18 +132,6 @@ function CardContainerInner({
|
|
|
135
132
|
const {
|
|
136
133
|
colors
|
|
137
134
|
} = useTheme();
|
|
138
|
-
React.useEffect(() => {
|
|
139
|
-
const listener = scene.progress.next?.addListener?.(({
|
|
140
|
-
value
|
|
141
|
-
}) => {
|
|
142
|
-
wrapperRef.current?.setInert(value > EPSILON);
|
|
143
|
-
});
|
|
144
|
-
return () => {
|
|
145
|
-
if (listener) {
|
|
146
|
-
scene.progress.next?.removeListener?.(listener);
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
}, [scene.progress.next]);
|
|
150
135
|
const {
|
|
151
136
|
presentation,
|
|
152
137
|
animation,
|
|
@@ -190,72 +175,85 @@ function CardContainerInner({
|
|
|
190
175
|
return undefined;
|
|
191
176
|
}, [canGoBack, backTitle, href]);
|
|
192
177
|
const animated = animation !== 'none';
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
178
|
+
const {
|
|
179
|
+
current,
|
|
180
|
+
next
|
|
181
|
+
} = React.useMemo(() => ({
|
|
182
|
+
current: {
|
|
183
|
+
progress: scene.progress.current,
|
|
184
|
+
closing: closingAnimated
|
|
185
|
+
},
|
|
186
|
+
next: scene.progress.next && nextClosingAnimated ? {
|
|
187
|
+
progress: scene.progress.next,
|
|
188
|
+
closing: nextClosingAnimated
|
|
189
|
+
} : undefined
|
|
190
|
+
}), [closingAnimated, nextClosingAnimated, scene.progress]);
|
|
191
|
+
return /*#__PURE__*/_jsx(Card, {
|
|
197
192
|
animated: animated,
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
193
|
+
interpolationIndex: interpolationIndex,
|
|
194
|
+
gestureDirection: gestureDirection,
|
|
195
|
+
layout: layout,
|
|
196
|
+
insets: insets,
|
|
197
|
+
direction: direction,
|
|
198
|
+
gesture: gesture,
|
|
199
|
+
current: current,
|
|
200
|
+
next: next,
|
|
201
|
+
opening: opening,
|
|
202
|
+
closing: closing,
|
|
203
|
+
onOpen: handleOpen,
|
|
204
|
+
onClose: handleClose,
|
|
205
|
+
overlay: cardOverlay,
|
|
206
|
+
overlayEnabled: cardOverlayEnabled,
|
|
207
|
+
shadowEnabled: cardShadowEnabled,
|
|
208
|
+
onTransition: handleTransition,
|
|
209
|
+
onGestureBegin: handleGestureBegin,
|
|
210
|
+
onGestureCanceled: handleGestureCanceled,
|
|
211
|
+
onGestureEnd: handleGestureEnd,
|
|
212
|
+
gestureEnabled: index === 0 ? false : gestureEnabled,
|
|
213
|
+
gestureResponseDistance: gestureResponseDistance,
|
|
214
|
+
gestureVelocityImpact: gestureVelocityImpact,
|
|
215
|
+
transitionSpec: transitionSpec,
|
|
216
|
+
styleInterpolator: cardStyleInterpolator,
|
|
217
|
+
pageOverflowEnabled:
|
|
218
|
+
// Avoid unfocused larger pages increasing scroll area
|
|
219
|
+
// e.g. when a smaller screen is pushed over a larger one on web
|
|
220
|
+
active &&
|
|
221
|
+
// Float header disables full-page scrolling in browsers
|
|
222
|
+
// So we don't need to keep overflow enabled
|
|
223
|
+
headerMode !== 'float' &&
|
|
224
|
+
// Avoid modals scrolling the whole page
|
|
225
|
+
// Modal content should be scrollable within the modal
|
|
226
|
+
presentation !== 'modal',
|
|
227
|
+
preloaded: preloaded,
|
|
228
|
+
contentStyle: [{
|
|
229
|
+
backgroundColor: presentation === 'transparentModal' ? 'transparent' : colors.background
|
|
230
|
+
}, cardStyle],
|
|
231
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
232
|
+
ref: contentRef,
|
|
233
|
+
style: styles.container,
|
|
234
|
+
children: /*#__PURE__*/_jsxs(ModalPresentationContext.Provider, {
|
|
235
|
+
value: modal,
|
|
236
|
+
children: [headerMode !== 'float' ? renderHeader({
|
|
237
|
+
mode: 'screen',
|
|
238
|
+
scenes: [previousScene, scene],
|
|
239
|
+
getPreviousScene,
|
|
240
|
+
getFocusedRoute,
|
|
241
|
+
contentHeight: headerHeight,
|
|
242
|
+
onContentHeightChange: onHeaderHeightChange,
|
|
243
|
+
style: styles.header
|
|
244
|
+
}) : null, /*#__PURE__*/_jsx(View, {
|
|
245
|
+
style: styles.scene,
|
|
246
|
+
children: /*#__PURE__*/_jsx(HeaderBackContext.Provider, {
|
|
247
|
+
value: headerBack,
|
|
248
|
+
children: /*#__PURE__*/_jsx(HeaderShownContext.Provider, {
|
|
249
|
+
value: isParentHeaderShown || headerShown !== false,
|
|
250
|
+
children: /*#__PURE__*/_jsx(HeaderHeightContext.Provider, {
|
|
251
|
+
value: headerShown !== false ? headerHeight?.value ?? 0 : parentHeaderHeight ?? 0,
|
|
252
|
+
children: children
|
|
255
253
|
})
|
|
256
254
|
})
|
|
257
|
-
})
|
|
258
|
-
})
|
|
255
|
+
})
|
|
256
|
+
})]
|
|
259
257
|
})
|
|
260
258
|
})
|
|
261
259
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getHeaderTitle","HeaderBackContext","HeaderHeightContext","HeaderShownContext","useLinkBuilder","useLocale","useTheme","React","StyleSheet","View","ModalPresentationContext","useKeyboardManager","Card","
|
|
1
|
+
{"version":3,"names":["getHeaderTitle","HeaderBackContext","HeaderHeightContext","HeaderShownContext","useLinkBuilder","useLocale","useTheme","React","StyleSheet","View","ModalPresentationContext","useKeyboardManager","Card","jsx","_jsx","jsxs","_jsxs","CardContainerInner","interpolationIndex","index","active","opening","closing","closingAnimated","nextClosingAnimated","gesture","focused","modal","getPreviousScene","getFocusedRoute","headerHeight","onHeaderHeightChange","isParentHeaderShown","layout","onCloseRoute","onOpenRoute","onGestureCancel","onGestureEnd","onGestureStart","onTransitionEnd","onTransitionStart","preloaded","renderHeader","safeAreaInsetBottom","safeAreaInsetLeft","safeAreaInsetRight","safeAreaInsetTop","scene","children","direction","parentHeaderHeight","use","options","descriptor","enabled","keyboardHandlingEnabled","contentRef","useRef","onPageChangeStart","onPageChangeCancel","onPageChangeConfirm","handleOpen","route","handleClose","handleGestureBegin","handleGestureCanceled","handleGestureEnd","handleTransition","insets","top","right","bottom","left","colors","presentation","animation","cardOverlay","cardOverlayEnabled","cardShadowEnabled","cardStyle","cardStyleInterpolator","gestureDirection","gestureEnabled","gestureResponseDistance","gestureVelocityImpact","headerMode","headerShown","transitionSpec","buildHref","previousScene","backTitle","href","name","params","canGoBack","headerBack","useMemo","title","undefined","animated","current","next","progress","onOpen","onClose","overlay","overlayEnabled","shadowEnabled","onTransition","onGestureBegin","onGestureCanceled","styleInterpolator","pageOverflowEnabled","contentStyle","backgroundColor","background","ref","style","styles","container","Provider","value","mode","scenes","contentHeight","onContentHeightChange","header","CardContainer","memo","create","flex","zIndex"],"sourceRoot":"../../../../src","sources":["views/Stack/CardContainer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -3,18 +3,18 @@
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { StyleSheet, View } from 'react-native';
|
|
5
5
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
-
// This component will render a page which overflows the screen
|
|
7
|
-
// if the container fills the body by comparing the size
|
|
8
|
-
// This lets the document.body handle scrolling of the content
|
|
9
|
-
// It's necessary for mobile browsers to be able to hide address bar on scroll
|
|
10
6
|
export function CardContent({
|
|
11
7
|
enabled,
|
|
12
8
|
layout,
|
|
13
9
|
style,
|
|
14
10
|
...rest
|
|
15
11
|
}) {
|
|
12
|
+
// If the container fills the body, we consider it to be a "page" that can overflow the screen
|
|
13
|
+
// So we adjust the style accordingly to let the content take more space if needed
|
|
14
|
+
// This lets the document.body handle scrolling of the content
|
|
15
|
+
// This is necessary for mobile browsers to be able to hide the address bar on scroll
|
|
16
16
|
const [fill, setFill] = React.useState(false);
|
|
17
|
-
React.
|
|
17
|
+
React.useLayoutEffect(() => {
|
|
18
18
|
if (typeof document === 'undefined' || !document.body) {
|
|
19
19
|
// Only run when DOM is available
|
|
20
20
|
return;
|
|
@@ -22,39 +22,12 @@ export function CardContent({
|
|
|
22
22
|
const width = document.body.clientWidth;
|
|
23
23
|
const height = document.body.clientHeight;
|
|
24
24
|
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
// address bar). To fix this, it's necessary to update the height of
|
|
29
|
-
// the DOM with the current height of the window.
|
|
30
|
-
// See https://css-tricks.com/the-trick-to-viewport-units-on-mobile/
|
|
31
|
-
const isFullHeight = height === layout.height;
|
|
32
|
-
const id = '__react-navigation-stack-mobile-chrome-viewport-fix';
|
|
33
|
-
let unsubscribe;
|
|
34
|
-
if (isFullHeight && navigator.maxTouchPoints > 0) {
|
|
35
|
-
const style = document.getElementById(id) ?? document.createElement('style');
|
|
36
|
-
style.id = id;
|
|
37
|
-
const updateStyle = () => {
|
|
38
|
-
const vh = window.innerHeight * 0.01;
|
|
39
|
-
style.textContent = [`:root { --vh: ${vh}px; }`, `body { height: calc(var(--vh, 1vh) * 100); }`].join('\n');
|
|
40
|
-
};
|
|
41
|
-
updateStyle();
|
|
42
|
-
if (!document.head.contains(style)) {
|
|
43
|
-
document.head.appendChild(style);
|
|
44
|
-
}
|
|
45
|
-
window.addEventListener('resize', updateStyle);
|
|
46
|
-
unsubscribe = () => {
|
|
47
|
-
window.removeEventListener('resize', updateStyle);
|
|
48
|
-
};
|
|
49
|
-
} else {
|
|
50
|
-
// Remove the workaround if the stack does not occupy the whole
|
|
51
|
-
// height of the page
|
|
52
|
-
document.getElementById(id)?.remove();
|
|
53
|
-
}
|
|
25
|
+
// `document.body.clientHeight`/`clientWidth` are always rounded integers,
|
|
26
|
+
// But `layout` is sub-pixel precise, so we allow a small difference.
|
|
27
|
+
const approximatelyEqual = (a, b) => Math.abs(a - b) < 1;
|
|
54
28
|
|
|
55
|
-
// eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect
|
|
56
|
-
setFill(width
|
|
57
|
-
return unsubscribe;
|
|
29
|
+
// eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-layout-effect
|
|
30
|
+
setFill(approximatelyEqual(width, layout.width) && approximatelyEqual(height, layout.height));
|
|
58
31
|
}, [layout.height, layout.width]);
|
|
59
32
|
return /*#__PURE__*/_jsx(View, {
|
|
60
33
|
...rest,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","StyleSheet","View","jsx","_jsx","CardContent","enabled","layout","style","rest","fill","setFill","useState","
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","jsx","_jsx","CardContent","enabled","layout","style","rest","fill","setFill","useState","useLayoutEffect","document","body","width","clientWidth","height","clientHeight","approximatelyEqual","a","b","Math","abs","pointerEvents","styles","page","card","create","minHeight","flex","overflow"],"sourceRoot":"../../../../src","sources":["views/Stack/CardContent.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,UAAU,EAAEC,IAAI,QAAwB,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQhE,OAAO,SAASC,WAAWA,CAAC;EAAEC,OAAO;EAAEC,MAAM;EAAEC,KAAK;EAAE,GAAGC;AAAY,CAAC,EAAE;EACtE;EACA;EACA;EACA;EACA,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGX,KAAK,CAACY,QAAQ,CAAC,KAAK,CAAC;EAE7CZ,KAAK,CAACa,eAAe,CAAC,MAAM;IAC1B,IAAI,OAAOC,QAAQ,KAAK,WAAW,IAAI,CAACA,QAAQ,CAACC,IAAI,EAAE;MACrD;MACA;IACF;IAEA,MAAMC,KAAK,GAAGF,QAAQ,CAACC,IAAI,CAACE,WAAW;IACvC,MAAMC,MAAM,GAAGJ,QAAQ,CAACC,IAAI,CAACI,YAAY;;IAEzC;IACA;IACA,MAAMC,kBAAkB,GAAGA,CAACC,CAAS,EAAEC,CAAS,KAAKC,IAAI,CAACC,GAAG,CAACH,CAAC,GAAGC,CAAC,CAAC,GAAG,CAAC;;IAExE;IACAX,OAAO,CACLS,kBAAkB,CAACJ,KAAK,EAAET,MAAM,CAACS,KAAK,CAAC,IACrCI,kBAAkB,CAACF,MAAM,EAAEX,MAAM,CAACW,MAAM,CAC5C,CAAC;EACH,CAAC,EAAE,CAACX,MAAM,CAACW,MAAM,EAAEX,MAAM,CAACS,KAAK,CAAC,CAAC;EAEjC,oBACEZ,IAAA,CAACF,IAAI;IAAA,GACCO,IAAI;IACRD,KAAK,EAAE,CACL;MAAEiB,aAAa,EAAE;IAAW,CAAC,EAC7BnB,OAAO,IAAII,IAAI,GAAGgB,MAAM,CAACC,IAAI,GAAGD,MAAM,CAACE,IAAI,EAC3CpB,KAAK;EACL,CACH,CAAC;AAEN;AAEA,MAAMkB,MAAM,GAAGzB,UAAU,CAAC4B,MAAM,CAAC;EAC/BF,IAAI,EAAE;IACJG,SAAS,EAAE;EACb,CAAC;EACDF,IAAI,EAAE;IACJG,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
|