@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
|
@@ -15,10 +15,12 @@ export const gestureActivationCriteria = ({
|
|
|
15
15
|
}) => {
|
|
16
16
|
const enableTrackpadTwoFingerGesture = true;
|
|
17
17
|
const distance = gestureResponseDistance !== undefined ? gestureResponseDistance : gestureDirection === 'vertical' || gestureDirection === 'vertical-inverted' ? GESTURE_RESPONSE_DISTANCE_VERTICAL : GESTURE_RESPONSE_DISTANCE_HORIZONTAL;
|
|
18
|
+
const failOffsetX = [-15, 15];
|
|
19
|
+
const failOffsetY = [-20, 20];
|
|
18
20
|
if (gestureDirection === 'vertical') {
|
|
19
21
|
return {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
+
failOffsetX,
|
|
23
|
+
activeOffsetY: 5,
|
|
22
24
|
hitSlop: {
|
|
23
25
|
bottom: -layout.height + distance
|
|
24
26
|
},
|
|
@@ -26,8 +28,8 @@ export const gestureActivationCriteria = ({
|
|
|
26
28
|
};
|
|
27
29
|
} else if (gestureDirection === 'vertical-inverted') {
|
|
28
30
|
return {
|
|
29
|
-
|
|
30
|
-
|
|
31
|
+
failOffsetX,
|
|
32
|
+
activeOffsetY: -5,
|
|
31
33
|
hitSlop: {
|
|
32
34
|
top: -layout.height + distance
|
|
33
35
|
},
|
|
@@ -38,8 +40,8 @@ export const gestureActivationCriteria = ({
|
|
|
38
40
|
const invertedMultiplier = getInvertedMultiplier(gestureDirection, direction === 'rtl');
|
|
39
41
|
if (invertedMultiplier === 1) {
|
|
40
42
|
return {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
activeOffsetX: 5,
|
|
44
|
+
failOffsetY,
|
|
43
45
|
hitSlop: {
|
|
44
46
|
right: hitSlop
|
|
45
47
|
},
|
|
@@ -47,8 +49,8 @@ export const gestureActivationCriteria = ({
|
|
|
47
49
|
};
|
|
48
50
|
} else {
|
|
49
51
|
return {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
activeOffsetX: -5,
|
|
53
|
+
failOffsetY,
|
|
52
54
|
hitSlop: {
|
|
53
55
|
left: hitSlop
|
|
54
56
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getInvertedMultiplier","GESTURE_RESPONSE_DISTANCE_HORIZONTAL","GESTURE_RESPONSE_DISTANCE_VERTICAL","gestureActivationCriteria","direction","gestureDirection","gestureResponseDistance","layout","enableTrackpadTwoFingerGesture","distance","undefined","
|
|
1
|
+
{"version":3,"names":["getInvertedMultiplier","GESTURE_RESPONSE_DISTANCE_HORIZONTAL","GESTURE_RESPONSE_DISTANCE_VERTICAL","gestureActivationCriteria","direction","gestureDirection","gestureResponseDistance","layout","enableTrackpadTwoFingerGesture","distance","undefined","failOffsetX","failOffsetY","activeOffsetY","hitSlop","bottom","height","top","width","invertedMultiplier","activeOffsetX","right","left"],"sourceRoot":"../../../src","sources":["utils/gestureActivationCriteria.tsx"],"mappings":";;AAIA,SAASA,qBAAqB,QAAQ,4BAAyB;;AAE/D;AACA;AACA;AACA,MAAMC,oCAAoC,GAAG,EAAE;AAC/C,MAAMC,kCAAkC,GAAG,GAAG;AAE9C,OAAO,MAAMC,yBAAyB,GAAGA,CAAC;EACxCC,SAAS;EACTC,gBAAgB;EAChBC,uBAAuB;EACvBC;AAMF,CAAC,KAAuB;EACtB,MAAMC,8BAA8B,GAAG,IAAI;EAE3C,MAAMC,QAAQ,GACZH,uBAAuB,KAAKI,SAAS,GACjCJ,uBAAuB,GACvBD,gBAAgB,KAAK,UAAU,IAC7BA,gBAAgB,KAAK,mBAAmB,GACxCH,kCAAkC,GAClCD,oCAAoC;EAE5C,MAAMU,WAA6B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;EAC/C,MAAMC,WAA6B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC;EAE/C,IAAIP,gBAAgB,KAAK,UAAU,EAAE;IACnC,OAAO;MACLM,WAAW;MACXE,aAAa,EAAE,CAAC;MAChBC,OAAO,EAAE;QAAEC,MAAM,EAAE,CAACR,MAAM,CAACS,MAAM,GAAGP;MAAS,CAAC;MAC9CD;IACF,CAAC;EACH,CAAC,MAAM,IAAIH,gBAAgB,KAAK,mBAAmB,EAAE;IACnD,OAAO;MACLM,WAAW;MACXE,aAAa,EAAE,CAAC,CAAC;MACjBC,OAAO,EAAE;QAAEG,GAAG,EAAE,CAACV,MAAM,CAACS,MAAM,GAAGP;MAAS,CAAC;MAC3CD;IACF,CAAC;EACH,CAAC,MAAM;IACL,MAAMM,OAAO,GAAG,CAACP,MAAM,CAACW,KAAK,GAAGT,QAAQ;IACxC,MAAMU,kBAAkB,GAAGnB,qBAAqB,CAC9CK,gBAAgB,EAChBD,SAAS,KAAK,KAChB,CAAC;IAED,IAAIe,kBAAkB,KAAK,CAAC,EAAE;MAC5B,OAAO;QACLC,aAAa,EAAE,CAAC;QAChBR,WAAW;QACXE,OAAO,EAAE;UAAEO,KAAK,EAAEP;QAAQ,CAAC;QAC3BN;MACF,CAAC;IACH,CAAC,MAAM;MACL,OAAO;QACLY,aAAa,EAAE,CAAC,CAAC;QACjBR,WAAW;QACXE,OAAO,EAAE;UAAEQ,IAAI,EAAER;QAAQ,CAAC;QAC1BN;MACF,CAAC;IACH;EACF;AACF,CAAC","ignoreList":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { CardAnimationContext } from "./CardAnimationContext.js";
|
|
5
5
|
export function useCardAnimation() {
|
|
6
|
-
const animation = React.
|
|
6
|
+
const animation = React.use(CardAnimationContext);
|
|
7
7
|
if (animation === undefined) {
|
|
8
8
|
throw new Error("Couldn't find values for card animation. Are you inside a screen in Stack?");
|
|
9
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","CardAnimationContext","useCardAnimation","animation","
|
|
1
|
+
{"version":3,"names":["React","CardAnimationContext","useCardAnimation","animation","use","undefined","Error"],"sourceRoot":"../../../src","sources":["utils/useCardAnimation.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,oBAAoB,QAAQ,2BAAwB;AAE7D,OAAO,SAASC,gBAAgBA,CAAA,EAAG;EACjC,MAAMC,SAAS,GAAGH,KAAK,CAACI,GAAG,CAACH,oBAAoB,CAAC;EAEjD,IAAIE,SAAS,KAAKE,SAAS,EAAE;IAC3B,MAAM,IAAIC,KAAK,CACb,4EACF,CAAC;EACH;EAEA,OAAOH,SAAS;AAClB","ignoreList":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { GestureHandlerContext } from "./GestureHandlerContext.js";
|
|
5
|
+
export function useGestureHandler() {
|
|
6
|
+
const gesture = React.useContext(GestureHandlerContext);
|
|
7
|
+
return gesture;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=useGestureHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","GestureHandlerContext","useGestureHandler","gesture","useContext"],"sourceRoot":"../../../src","sources":["utils/useGestureHandler.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,SAASC,qBAAqB,QAAQ,4BAAyB;AAE/D,OAAO,SAASC,iBAAiBA,CAAA,EAAG;EAClC,MAAMC,OAAO,GAAGH,KAAK,CAACI,UAAU,CAACH,qBAAqB,CAAC;EAEvD,OAAOE,OAAO;AAChB","ignoreList":[]}
|
|
@@ -2,12 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { Keyboard, TextInput } from 'react-native';
|
|
5
|
-
export function useKeyboardManager(
|
|
5
|
+
export function useKeyboardManager({
|
|
6
|
+
enabled,
|
|
7
|
+
focused,
|
|
8
|
+
contentRef
|
|
9
|
+
}) {
|
|
6
10
|
// Numeric id of the previously focused text input
|
|
7
11
|
// When a gesture didn't change the tab, we can restore the focused input with this
|
|
8
12
|
const previouslyFocusedTextInputRef = React.useRef(undefined);
|
|
9
13
|
const startTimestampRef = React.useRef(0);
|
|
10
14
|
const keyboardTimeoutRef = React.useRef(undefined);
|
|
15
|
+
const enabledRef = React.useRef(enabled);
|
|
16
|
+
const focusedRef = React.useRef(focused);
|
|
11
17
|
const clearKeyboardTimeout = React.useCallback(() => {
|
|
12
18
|
if (keyboardTimeoutRef.current !== undefined) {
|
|
13
19
|
clearTimeout(keyboardTimeoutRef.current);
|
|
@@ -15,7 +21,7 @@ export function useKeyboardManager(isEnabled) {
|
|
|
15
21
|
}
|
|
16
22
|
}, []);
|
|
17
23
|
const onPageChangeStart = React.useCallback(() => {
|
|
18
|
-
if (!
|
|
24
|
+
if (!enabledRef.current || !focusedRef.current) {
|
|
19
25
|
return;
|
|
20
26
|
}
|
|
21
27
|
clearKeyboardTimeout();
|
|
@@ -29,30 +35,9 @@ export function useKeyboardManager(isEnabled) {
|
|
|
29
35
|
|
|
30
36
|
// Store timestamp for touch start
|
|
31
37
|
startTimestampRef.current = Date.now();
|
|
32
|
-
}, [clearKeyboardTimeout
|
|
33
|
-
const onPageChangeConfirm = React.useCallback(force => {
|
|
34
|
-
if (!isEnabled()) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
clearKeyboardTimeout();
|
|
38
|
-
if (force) {
|
|
39
|
-
// Always dismiss input, even if we don't have a ref to it
|
|
40
|
-
// We might not have the ref if onPageChangeStart was never called
|
|
41
|
-
// This can happen if page change was not from a gesture
|
|
42
|
-
Keyboard.dismiss();
|
|
43
|
-
} else {
|
|
44
|
-
const input = previouslyFocusedTextInputRef.current;
|
|
45
|
-
|
|
46
|
-
// Dismiss the keyboard only if an input was a focused before
|
|
47
|
-
// This makes sure we don't dismiss input on going back and focusing an input
|
|
48
|
-
input?.blur();
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
// Cleanup the ID on successful page change
|
|
52
|
-
previouslyFocusedTextInputRef.current = undefined;
|
|
53
|
-
}, [clearKeyboardTimeout, isEnabled]);
|
|
38
|
+
}, [clearKeyboardTimeout]);
|
|
54
39
|
const onPageChangeCancel = React.useCallback(() => {
|
|
55
|
-
if (!
|
|
40
|
+
if (!enabledRef.current || !focusedRef.current) {
|
|
56
41
|
return;
|
|
57
42
|
}
|
|
58
43
|
clearKeyboardTimeout();
|
|
@@ -77,7 +62,67 @@ export function useKeyboardManager(isEnabled) {
|
|
|
77
62
|
previouslyFocusedTextInputRef.current = undefined;
|
|
78
63
|
}
|
|
79
64
|
}
|
|
80
|
-
}, [clearKeyboardTimeout
|
|
65
|
+
}, [clearKeyboardTimeout]);
|
|
66
|
+
const onPageChangeConfirm = React.useCallback(({
|
|
67
|
+
gesture,
|
|
68
|
+
active,
|
|
69
|
+
closing
|
|
70
|
+
}) => {
|
|
71
|
+
if (!enabledRef.current || !focusedRef.current) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (!closing) {
|
|
75
|
+
onPageChangeCancel();
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
clearKeyboardTimeout();
|
|
79
|
+
if (!gesture) {
|
|
80
|
+
// Always dismiss input, even if we don't have a ref to it
|
|
81
|
+
// We might not have the ref if onPageChangeStart was never called
|
|
82
|
+
// This can happen if page change was not from a gesture
|
|
83
|
+
Keyboard.dismiss();
|
|
84
|
+
} else if (active) {
|
|
85
|
+
const input = previouslyFocusedTextInputRef.current;
|
|
86
|
+
|
|
87
|
+
// Dismiss the keyboard only if an input was a focused before
|
|
88
|
+
// This makes sure we don't dismiss input on going back and focusing an input
|
|
89
|
+
input?.blur();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
// Cleanup the ID on successful page change
|
|
93
|
+
previouslyFocusedTextInputRef.current = undefined;
|
|
94
|
+
}, [clearKeyboardTimeout, onPageChangeCancel]);
|
|
95
|
+
|
|
96
|
+
// Dismiss keyboard when screen loses focus (e.g. when pushing a new screen).
|
|
97
|
+
// This handles the "navigate forward" case so we don't dismiss the new screen's
|
|
98
|
+
// auto-focused input from handleTransition.
|
|
99
|
+
React.useLayoutEffect(() => {
|
|
100
|
+
if (enabledRef.current && !focused) {
|
|
101
|
+
Keyboard.dismiss();
|
|
102
|
+
}
|
|
103
|
+
}, [focused]);
|
|
104
|
+
|
|
105
|
+
// Dismiss keyboard if native focus is restored to an input in an unfocused screen.
|
|
106
|
+
// This can happen after dismissing a native alert when `autoFocus` is used on iOS.
|
|
107
|
+
React.useEffect(() => {
|
|
108
|
+
const blurInputInScreen = () => {
|
|
109
|
+
if (focusedRef.current || !enabledRef.current) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const input = TextInput.State.currentlyFocusedInput();
|
|
113
|
+
if (input && contentRef.current?.contains(input)) {
|
|
114
|
+
input.blur();
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
const subscriptions = [Keyboard.addListener('keyboardWillShow', blurInputInScreen), Keyboard.addListener('keyboardDidShow', blurInputInScreen)];
|
|
118
|
+
return () => {
|
|
119
|
+
subscriptions.forEach(subscription => subscription.remove());
|
|
120
|
+
};
|
|
121
|
+
}, [contentRef]);
|
|
122
|
+
React.useLayoutEffect(() => {
|
|
123
|
+
enabledRef.current = enabled;
|
|
124
|
+
focusedRef.current = focused;
|
|
125
|
+
});
|
|
81
126
|
React.useEffect(() => {
|
|
82
127
|
return () => clearKeyboardTimeout();
|
|
83
128
|
}, [clearKeyboardTimeout]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Keyboard","TextInput","useKeyboardManager","
|
|
1
|
+
{"version":3,"names":["React","Keyboard","TextInput","useKeyboardManager","enabled","focused","contentRef","previouslyFocusedTextInputRef","useRef","undefined","startTimestampRef","keyboardTimeoutRef","enabledRef","focusedRef","clearKeyboardTimeout","useCallback","current","clearTimeout","onPageChangeStart","input","State","currentlyFocusedInput","blur","Date","now","onPageChangeCancel","setTimeout","focus","onPageChangeConfirm","gesture","active","closing","dismiss","useLayoutEffect","useEffect","blurInputInScreen","contains","subscriptions","addListener","forEach","subscription","remove"],"sourceRoot":"../../../src","sources":["utils/useKeyboardManager.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -2,20 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
import { View } from 'react-native';
|
|
5
|
-
import {
|
|
6
|
-
|
|
5
|
+
import { GestureHandlerContext } from "../utils/GestureHandlerContext.js";
|
|
6
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
+
export function GestureDetector({
|
|
8
|
+
gesture,
|
|
7
9
|
children
|
|
8
|
-
})
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
}) {
|
|
11
|
+
return /*#__PURE__*/_jsx(GestureHandlerContext.Provider, {
|
|
12
|
+
value: gesture ?? null,
|
|
13
|
+
children: children
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
// eslint-disable-next-line @eslint-react/hooks-extra/no-unnecessary-use-prefix, @eslint-react/hooks-extra/ensure-custom-hooks-using-other-hooks
|
|
18
|
+
export function usePanGesture(_config) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
12
21
|
export const GestureHandlerRootView = View;
|
|
13
|
-
export const GestureState = {
|
|
14
|
-
UNDETERMINED: 0,
|
|
15
|
-
FAILED: 1,
|
|
16
|
-
BEGAN: 2,
|
|
17
|
-
CANCELLED: 3,
|
|
18
|
-
ACTIVE: 4,
|
|
19
|
-
END: 5
|
|
20
|
-
};
|
|
21
22
|
//# sourceMappingURL=GestureHandler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","
|
|
1
|
+
{"version":3,"names":["React","View","GestureHandlerContext","jsx","_jsx","GestureDetector","gesture","children","Provider","value","usePanGesture","_config","undefined","GestureHandlerRootView"],"sourceRoot":"../../../src","sources":["views/GestureHandler.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,IAAI,QAAQ,cAAc;AAMnC,SAASC,qBAAqB,QAAQ,mCAAgC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEvE,OAAO,SAASC,eAAeA,CAAC;EAC9BC,OAAO;EACPC;AAIF,CAAC,EAAE;EACD,oBACEH,IAAA,CAACF,qBAAqB,CAACM,QAAQ;IAACC,KAAK,EAAEH,OAAO,IAAI,IAAK;IAAAC,QAAA,EACpDA;EAAQ,CACqB,CAAC;AAErC;;AAEA;AACA,OAAO,SAASG,aAAaA,CAACC,OAAyB,EAAE;EACvD,OAAOC,SAAS;AAClB;AAEA,OAAO,MAAMC,sBAAsB,GAAGZ,IAAI","ignoreList":[]}
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import * as React from 'react';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
4
|
+
import { GestureDetector as GestureDetectorNative, usePanGesture } from 'react-native-gesture-handler';
|
|
5
|
+
import { GestureHandlerContext } from "../utils/GestureHandlerContext.js";
|
|
6
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
7
|
-
export function
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
7
|
+
export function GestureDetector({
|
|
8
|
+
gesture,
|
|
9
|
+
children
|
|
10
|
+
}) {
|
|
11
|
+
if (gesture == null) {
|
|
12
|
+
throw new Error('The provided gesture is undefined. A valid gesture must be passed to the GestureDetector on native platforms.');
|
|
13
|
+
}
|
|
14
|
+
return /*#__PURE__*/_jsx(GestureHandlerContext.Provider, {
|
|
15
|
+
value: gesture,
|
|
16
|
+
children: /*#__PURE__*/_jsx(GestureDetectorNative, {
|
|
17
|
+
gesture: gesture,
|
|
18
|
+
children: children
|
|
14
19
|
})
|
|
15
20
|
});
|
|
16
21
|
}
|
|
17
|
-
export {
|
|
22
|
+
export { usePanGesture };
|
|
23
|
+
export { GestureHandlerRootView } from 'react-native-gesture-handler';
|
|
18
24
|
//# sourceMappingURL=GestureHandlerNative.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","
|
|
1
|
+
{"version":3,"names":["React","GestureDetector","GestureDetectorNative","usePanGesture","GestureHandlerContext","jsx","_jsx","gesture","children","Error","Provider","value","GestureHandlerRootView"],"sourceRoot":"../../../src","sources":["views/GestureHandlerNative.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SACEC,eAAe,IAAIC,qBAAqB,EAExCC,aAAa,QACR,8BAA8B;AAErC,SAASC,qBAAqB,QAAQ,mCAAgC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEvE,OAAO,SAASL,eAAeA,CAAC;EAC9BM,OAAO;EACPC;AAIF,CAAC,EAAE;EACD,IAAID,OAAO,IAAI,IAAI,EAAE;IACnB,MAAM,IAAIE,KAAK,CACb,+GACF,CAAC;EACH;EAEA,oBACEH,IAAA,CAACF,qBAAqB,CAACM,QAAQ;IAACC,KAAK,EAAEJ,OAAQ;IAAAC,QAAA,eAC7CF,IAAA,CAACJ,qBAAqB;MAACK,OAAO,EAAEA,OAAQ;MAAAC,QAAA,EACrCA;IAAQ,CACY;EAAC,CACM,CAAC;AAErC;AAEA,SAASL,aAAa;AAEtB,SAASS,sBAAsB,QAAQ,8BAA8B","ignoreList":[]}
|
|
@@ -11,6 +11,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
11
11
|
export const Header = /*#__PURE__*/React.memo(function Header({
|
|
12
12
|
back,
|
|
13
13
|
progress,
|
|
14
|
+
inverted,
|
|
14
15
|
options,
|
|
15
16
|
route,
|
|
16
17
|
navigation,
|
|
@@ -36,11 +37,12 @@ export const Header = /*#__PURE__*/React.memo(function Header({
|
|
|
36
37
|
});
|
|
37
38
|
}
|
|
38
39
|
}, 50), [navigation, route.key]);
|
|
39
|
-
const isModal = React.
|
|
40
|
-
const isParentHeaderShown = React.
|
|
40
|
+
const isModal = React.use(ModalPresentationContext);
|
|
41
|
+
const isParentHeaderShown = React.use(HeaderShownContext);
|
|
41
42
|
const statusBarHeight = options.headerStatusBarHeight !== undefined ? options.headerStatusBarHeight : isModal || isParentHeaderShown ? 0 : insets.top;
|
|
42
43
|
return /*#__PURE__*/_jsx(HeaderSegment, {
|
|
43
44
|
...options,
|
|
45
|
+
inverted: inverted,
|
|
44
46
|
title: getHeaderTitle(options, route.name),
|
|
45
47
|
progress: progress,
|
|
46
48
|
modal: isModal,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getHeaderTitle","HeaderShownContext","StackActions","React","useSafeAreaInsets","ModalPresentationContext","throttle","HeaderSegment","jsx","_jsx","Header","memo","back","progress","options","route","navigation","styleInterpolator","insets","previousTitle","headerBackTitle","undefined","title","goBack","useCallback","isFocused","canGoBack","dispatch","pop","source","key","isModal","
|
|
1
|
+
{"version":3,"names":["getHeaderTitle","HeaderShownContext","StackActions","React","useSafeAreaInsets","ModalPresentationContext","throttle","HeaderSegment","jsx","_jsx","Header","memo","back","progress","inverted","options","route","navigation","styleInterpolator","insets","previousTitle","headerBackTitle","undefined","title","goBack","useCallback","isFocused","canGoBack","dispatch","pop","source","key","isModal","use","isParentHeaderShown","statusBarHeight","headerStatusBarHeight","top","name","modal","onGoBack","backHref","href"],"sourceRoot":"../../../../src","sources":["views/Header/Header.tsx"],"mappings":";;AAAA,SAASA,cAAc,EAAEC,kBAAkB,QAAQ,4BAA4B;AAC/E,SAASC,YAAY,QAAQ,0BAA0B;AACvD,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAASC,iBAAiB,QAAQ,gCAAgC;AAGlE,SAASC,wBAAwB,QAAQ,yCAAsC;AAC/E,SAASC,QAAQ,QAAQ,yBAAsB;AAC/C,SAASC,aAAa,QAAQ,oBAAiB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEhD,OAAO,MAAMC,MAAM,gBAAGP,KAAK,CAACQ,IAAI,CAAC,SAASD,MAAMA,CAAC;EAC/CE,IAAI;EACJC,QAAQ;EACRC,QAAQ;EACRC,OAAO;EACPC,KAAK;EACLC,UAAU;EACVC;AACgB,CAAC,EAAE;EACnB,MAAMC,MAAM,GAAGf,iBAAiB,CAAC,CAAC;EAElC,IAAIgB,aAAa;;EAEjB;EACA;EACA,IAAIL,OAAO,CAACM,eAAe,KAAKC,SAAS,EAAE;IACzCF,aAAa,GAAGL,OAAO,CAACM,eAAe;EACzC,CAAC,MAAM,IAAIT,IAAI,EAAE;IACfQ,aAAa,GAAGR,IAAI,CAACW,KAAK;EAC5B;;EAEA;EACA,MAAMC,MAAM,GAAGrB,KAAK,CAACsB,WAAW,CAC9BnB,QAAQ,CAAC,MAAM;IACb,IAAIW,UAAU,CAACS,SAAS,CAAC,CAAC,IAAIT,UAAU,CAACU,SAAS,CAAC,CAAC,EAAE;MACpDV,UAAU,CAACW,QAAQ,CAAC;QAClB,GAAG1B,YAAY,CAAC2B,GAAG,CAAC,CAAC;QACrBC,MAAM,EAAEd,KAAK,CAACe;MAChB,CAAC,CAAC;IACJ;EACF,CAAC,EAAE,EAAE,CAAC,EACN,CAACd,UAAU,EAAED,KAAK,CAACe,GAAG,CACxB,CAAC;EAED,MAAMC,OAAO,GAAG7B,KAAK,CAAC8B,GAAG,CAAC5B,wBAAwB,CAAC;EACnD,MAAM6B,mBAAmB,GAAG/B,KAAK,CAAC8B,GAAG,CAAChC,kBAAkB,CAAC;EAEzD,MAAMkC,eAAe,GACnBpB,OAAO,CAACqB,qBAAqB,KAAKd,SAAS,GACvCP,OAAO,CAACqB,qBAAqB,GAC7BJ,OAAO,IAAIE,mBAAmB,GAC5B,CAAC,GACDf,MAAM,CAACkB,GAAG;EAElB,oBACE5B,IAAA,CAACF,aAAa;IAAA,GACRQ,OAAO;IACXD,QAAQ,EAAEA,QAAS;IACnBS,KAAK,EAAEvB,cAAc,CAACe,OAAO,EAAEC,KAAK,CAACsB,IAAI,CAAE;IAC3CzB,QAAQ,EAAEA,QAAS;IACnB0B,KAAK,EAAEP,OAAQ;IACfX,eAAe,EACbN,OAAO,CAACM,eAAe,KAAKC,SAAS,GACjCP,OAAO,CAACM,eAAe,GACvBD,aACL;IACDgB,qBAAqB,EAAED,eAAgB;IACvCK,QAAQ,EAAE5B,IAAI,GAAGY,MAAM,GAAGF,SAAU;IACpCmB,QAAQ,EAAE7B,IAAI,GAAGA,IAAI,CAAC8B,IAAI,GAAGpB,SAAU;IACvCJ,iBAAiB,EAAEA;EAAkB,CACtC,CAAC;AAEN,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { getHeaderTitle, HeaderBackContext } from '@react-navigation/elements';
|
|
4
|
-
import {
|
|
4
|
+
import { ActivityView } from '@react-navigation/elements/internal';
|
|
5
|
+
import { NavigationProvider, useLinkBuilder, useLocale } from '@react-navigation/native';
|
|
5
6
|
import * as React from 'react';
|
|
6
7
|
import { StyleSheet, View } from 'react-native';
|
|
7
|
-
import { forNoAnimation, forSlideLeft,
|
|
8
|
+
import { forNoAnimation, forSlideLeft, forSlideUp } from "../../TransitionConfigs/HeaderStyleInterpolators.js";
|
|
9
|
+
import { getInvertedMultiplier } from "../../utils/getInvertedMultiplier.js";
|
|
8
10
|
import { Header } from "./Header.js";
|
|
9
11
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
10
12
|
export function HeaderContainer({
|
|
@@ -12,17 +14,21 @@ export function HeaderContainer({
|
|
|
12
14
|
scenes,
|
|
13
15
|
getPreviousScene,
|
|
14
16
|
getFocusedRoute,
|
|
17
|
+
contentHeight,
|
|
15
18
|
onContentHeightChange,
|
|
16
19
|
style
|
|
17
20
|
}) {
|
|
18
21
|
const focusedRoute = getFocusedRoute();
|
|
19
|
-
const parentHeaderBack = React.
|
|
22
|
+
const parentHeaderBack = React.use(HeaderBackContext);
|
|
20
23
|
const {
|
|
21
24
|
buildHref
|
|
22
25
|
} = useLinkBuilder();
|
|
26
|
+
const {
|
|
27
|
+
direction
|
|
28
|
+
} = useLocale();
|
|
23
29
|
return /*#__PURE__*/_jsx(View, {
|
|
24
30
|
style: [styles.container, style],
|
|
25
|
-
children: scenes.
|
|
31
|
+
children: scenes.map((scene, i, self) => {
|
|
26
32
|
if (mode === 'screen' && i !== self.length - 1 || !scene) {
|
|
27
33
|
return null;
|
|
28
34
|
}
|
|
@@ -60,6 +66,9 @@ export function HeaderContainer({
|
|
|
60
66
|
headerShown: previousHeaderShown = true,
|
|
61
67
|
headerMode: previousHeaderMode
|
|
62
68
|
} = previousDescriptor?.options || {};
|
|
69
|
+
const {
|
|
70
|
+
headerTransparent: nextHeaderTransparent
|
|
71
|
+
} = nextDescriptor?.options || {};
|
|
63
72
|
|
|
64
73
|
// If any of the next screens don't have a header or header is part of the screen
|
|
65
74
|
// Then we need to move this header offscreen so that it doesn't cover it
|
|
@@ -76,37 +85,67 @@ export function HeaderContainer({
|
|
|
76
85
|
const isHeaderStatic = (previousHeaderShown === false || previousHeaderMode === 'screen') &&
|
|
77
86
|
// We still need to animate when coming back from next scene
|
|
78
87
|
// A hacky way to check this is if the next scene exists
|
|
79
|
-
!nextDescriptor ||
|
|
88
|
+
!nextDescriptor ||
|
|
89
|
+
// If next header is transparent, we want to treat this header as static
|
|
90
|
+
// Otherwise it may show through the next header
|
|
91
|
+
nextHeaderTransparent || nextHeaderlessScene;
|
|
80
92
|
const props = {
|
|
81
93
|
back: headerBack,
|
|
82
94
|
progress: scene.progress,
|
|
95
|
+
inverted: getInvertedMultiplier(isHeaderStatic && nextHeaderlessGestureDirection ? nextHeaderlessGestureDirection : scene.descriptor.options.gestureDirection, direction === 'rtl'),
|
|
83
96
|
options: scene.descriptor.options,
|
|
84
97
|
route: scene.descriptor.route,
|
|
85
98
|
navigation: scene.descriptor.navigation,
|
|
86
|
-
styleInterpolator: mode === 'float' ? isHeaderStatic ? nextHeaderlessGestureDirection === 'vertical' || nextHeaderlessGestureDirection === 'vertical-inverted' ? forSlideUp :
|
|
99
|
+
styleInterpolator: mode === 'float' ? isHeaderStatic ? nextHeaderlessGestureDirection === 'vertical' || nextHeaderlessGestureDirection === 'vertical-inverted' ? forSlideUp : forSlideLeft : headerStyleInterpolator : forNoAnimation
|
|
87
100
|
};
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
children: /*#__PURE__*/_jsx(View, {
|
|
92
|
-
onLayout: onContentHeightChange ? e => {
|
|
93
|
-
const {
|
|
94
|
-
height
|
|
95
|
-
} = e.nativeEvent.layout;
|
|
101
|
+
const onRef = node => {
|
|
102
|
+
node?.measure((_x, _y, _width, height) => {
|
|
103
|
+
if (height && !contentHeight?.measured) {
|
|
96
104
|
onContentHeightChange({
|
|
97
105
|
route: scene.descriptor.route,
|
|
98
106
|
height
|
|
99
107
|
});
|
|
100
|
-
}
|
|
101
|
-
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
const onLayout = e => {
|
|
112
|
+
const {
|
|
113
|
+
height
|
|
114
|
+
} = e.nativeEvent.layout;
|
|
115
|
+
onContentHeightChange({
|
|
116
|
+
route: scene.descriptor.route,
|
|
117
|
+
height
|
|
118
|
+
});
|
|
119
|
+
};
|
|
120
|
+
return /*#__PURE__*/_jsx(NavigationProvider, {
|
|
121
|
+
navigation: scene.descriptor.navigation,
|
|
122
|
+
route: scene.descriptor.route,
|
|
123
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
102
124
|
style: [
|
|
103
|
-
// Avoid positioning the focused header
|
|
125
|
+
// Avoid absolutely positioning the focused header unnecessarily
|
|
104
126
|
// Otherwise accessibility tools don't seem to be able to find it
|
|
105
|
-
mode === 'float' && !isFocused || headerTransparent ? styles.
|
|
127
|
+
mode === 'float' && !isFocused || headerTransparent ? [styles.absolute, mode === 'screen' ?
|
|
128
|
+
// For transparent headers, specify a min height
|
|
129
|
+
// This is needed for screen readers, and testing tools on Android
|
|
130
|
+
// For float header, it's handled in CardStack
|
|
131
|
+
{
|
|
132
|
+
minHeight: contentHeight?.value
|
|
133
|
+
} : null] : null, {
|
|
106
134
|
pointerEvents: isFocused ? 'box-none' : 'none'
|
|
107
135
|
}],
|
|
108
|
-
children:
|
|
109
|
-
|
|
136
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
137
|
+
ref: onRef,
|
|
138
|
+
onLayout: onLayout,
|
|
139
|
+
style: {
|
|
140
|
+
pointerEvents: 'box-none'
|
|
141
|
+
},
|
|
142
|
+
children: /*#__PURE__*/_jsx(ActivityView, {
|
|
143
|
+
mode: isFocused ? 'normal' : 'inert',
|
|
144
|
+
visible: true,
|
|
145
|
+
children: header !== undefined ? header(props) : /*#__PURE__*/_jsx(Header, {
|
|
146
|
+
...props
|
|
147
|
+
})
|
|
148
|
+
})
|
|
110
149
|
})
|
|
111
150
|
})
|
|
112
151
|
}, scene.descriptor.route.key);
|
|
@@ -117,7 +156,7 @@ const styles = StyleSheet.create({
|
|
|
117
156
|
container: {
|
|
118
157
|
pointerEvents: 'box-none'
|
|
119
158
|
},
|
|
120
|
-
|
|
159
|
+
absolute: {
|
|
121
160
|
position: 'absolute',
|
|
122
161
|
top: 0,
|
|
123
162
|
start: 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getHeaderTitle","HeaderBackContext","NavigationProvider","useLinkBuilder","React","StyleSheet","View","forNoAnimation","forSlideLeft","
|
|
1
|
+
{"version":3,"names":["getHeaderTitle","HeaderBackContext","ActivityView","NavigationProvider","useLinkBuilder","useLocale","React","StyleSheet","View","forNoAnimation","forSlideLeft","forSlideUp","getInvertedMultiplier","Header","jsx","_jsx","HeaderContainer","mode","scenes","getPreviousScene","getFocusedRoute","contentHeight","onContentHeightChange","style","focusedRoute","parentHeaderBack","use","buildHref","direction","styles","container","children","map","scene","i","self","length","header","headerMode","headerShown","headerTransparent","headerStyleInterpolator","descriptor","options","isFocused","key","route","previousScene","headerBack","title","name","href","params","previousDescriptor","nextDescriptor","previousHeaderShown","previousHeaderMode","nextHeaderTransparent","nextHeaderlessScene","slice","find","currentHeaderShown","currentHeaderMode","gestureDirection","nextHeaderlessGestureDirection","isHeaderStatic","props","back","progress","inverted","navigation","styleInterpolator","onRef","node","measure","_x","_y","_width","height","measured","onLayout","e","nativeEvent","layout","absolute","minHeight","value","pointerEvents","ref","visible","undefined","create","position","top","start","end"],"sourceRoot":"../../../../src","sources":["views/Header/HeaderContainer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { getDefaultHeaderHeight, Header, HeaderBackButton, HeaderTitle, useFrameSize } from '@react-navigation/elements';
|
|
4
|
-
import { useLocale } from '@react-navigation/native';
|
|
5
4
|
import * as React from 'react';
|
|
6
5
|
import { StyleSheet } from 'react-native';
|
|
7
6
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
7
|
export function HeaderSegment(props) {
|
|
9
|
-
const {
|
|
10
|
-
direction
|
|
11
|
-
} = useLocale();
|
|
12
8
|
const layout = useFrameSize(frame => frame, true);
|
|
13
9
|
const {
|
|
14
10
|
progress,
|
|
11
|
+
inverted,
|
|
15
12
|
modal,
|
|
16
13
|
onGoBack,
|
|
17
14
|
backHref,
|
|
@@ -20,7 +17,7 @@ export function HeaderSegment(props) {
|
|
|
20
17
|
...props
|
|
21
18
|
}) : undefined,
|
|
22
19
|
headerRight: right,
|
|
23
|
-
|
|
20
|
+
headerBackIcon,
|
|
24
21
|
headerBackTitle,
|
|
25
22
|
headerBackButtonDisplayMode,
|
|
26
23
|
headerBackTruncatedTitle,
|
|
@@ -44,7 +41,7 @@ export function HeaderSegment(props) {
|
|
|
44
41
|
});
|
|
45
42
|
const {
|
|
46
43
|
height = defaultHeight
|
|
47
|
-
} = StyleSheet.flatten(customHeaderStyle
|
|
44
|
+
} = StyleSheet.flatten(customHeaderStyle) ?? {};
|
|
48
45
|
const headerHeight = typeof height === 'number' ? height : defaultHeight;
|
|
49
46
|
const {
|
|
50
47
|
titleStyle,
|
|
@@ -58,7 +55,7 @@ export function HeaderSegment(props) {
|
|
|
58
55
|
next: progress.next && {
|
|
59
56
|
progress: progress.next
|
|
60
57
|
},
|
|
61
|
-
|
|
58
|
+
inverted,
|
|
62
59
|
layouts: {
|
|
63
60
|
header: {
|
|
64
61
|
height: headerHeight,
|
|
@@ -66,11 +63,11 @@ export function HeaderSegment(props) {
|
|
|
66
63
|
},
|
|
67
64
|
screen: layout
|
|
68
65
|
}
|
|
69
|
-
}), [styleInterpolator, progress,
|
|
66
|
+
}), [styleInterpolator, progress, inverted, headerHeight, layout]);
|
|
70
67
|
const headerLeft = left ? props => left({
|
|
71
68
|
...props,
|
|
72
69
|
href: backHref,
|
|
73
|
-
|
|
70
|
+
icon: headerBackIcon,
|
|
74
71
|
accessibilityLabel: headerBackAccessibilityLabel,
|
|
75
72
|
testID: headerBackTestID,
|
|
76
73
|
allowFontScaling: headerBackAllowFontScaling,
|