react-native-screens 3.19.0 → 3.21.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/README.md +2 -1
- package/RNScreens.podspec +1 -1
- package/android/build.gradle +24 -6
- package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +4 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +7 -9
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +12 -4
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +32 -8
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +36 -15
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderAttachedEvent.kt +24 -0
- package/android/src/main/java/com/swmansion/rnscreens/events/HeaderDetachedEvent.kt +24 -0
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarBlurEvent.kt +24 -0
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarChangeTextEvent.kt +29 -0
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarCloseEvent.kt +24 -0
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarFocusEvent.kt +24 -0
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarOpenEvent.kt +24 -0
- package/android/src/main/java/com/swmansion/rnscreens/events/SearchBarSearchButtonPressEvent.kt +26 -0
- package/android/src/main/res/base/anim/rns_standard_accelerate_interpolator.xml +6 -0
- package/android/src/main/res/v33/anim-v33/rns_default_enter_in.xml +38 -0
- package/android/src/main/res/v33/anim-v33/rns_default_enter_out.xml +38 -0
- package/android/src/main/res/v33/anim-v33/rns_default_exit_in.xml +38 -0
- package/android/src/main/res/v33/anim-v33/rns_default_exit_out.xml +38 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +3 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +1 -0
- package/common/cpp/react/renderer/components/rnscreens/RNSScreenState.h +1 -2
- package/ios/RCTImageComponentView+RNSScreenStackHeaderConfig.h +11 -0
- package/ios/RCTImageComponentView+RNSScreenStackHeaderConfig.mm +14 -0
- package/ios/RNSConvert.h +2 -2
- package/ios/RNSConvert.mm +2 -2
- package/ios/RNSFullWindowOverlay.h +5 -5
- package/ios/RNSFullWindowOverlay.mm +13 -13
- package/ios/RNSScreen.h +7 -6
- package/ios/RNSScreen.mm +35 -33
- package/ios/RNSScreenContainer.h +2 -2
- package/ios/RNSScreenContainer.mm +5 -5
- package/ios/RNSScreenNavigationContainer.mm +3 -3
- package/ios/RNSScreenStack.h +4 -4
- package/ios/RNSScreenStack.mm +62 -23
- package/ios/RNSScreenStackHeaderConfig.h +10 -3
- package/ios/RNSScreenStackHeaderConfig.mm +138 -81
- package/ios/RNSScreenStackHeaderSubview.h +5 -6
- package/ios/RNSScreenStackHeaderSubview.mm +20 -11
- package/ios/RNSScreenWindowTraits.mm +21 -2
- package/ios/RNSSearchBar.h +5 -4
- package/ios/RNSSearchBar.mm +87 -12
- package/ios/RNScreens.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
- package/ios/RNScreens.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/RNScreens.xcodeproj/project.xcworkspace/xcuserdata/wojciechlewicki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNScreens.xcodeproj/xcuserdata/wojciechlewicki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
- package/lib/commonjs/TransitionProgressContext.js.map +1 -1
- package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js +0 -5
- package/lib/commonjs/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenContainerNativeComponent.js +0 -5
- package/lib/commonjs/fabric/ScreenContainerNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenNativeComponent.js +0 -5
- package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js +0 -5
- package/lib/commonjs/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js +0 -8
- package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js +0 -8
- package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackNativeComponent.js +0 -5
- package/lib/commonjs/fabric/ScreenStackNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/SearchBarNativeComponent.js +7 -7
- package/lib/commonjs/fabric/SearchBarNativeComponent.js.map +1 -1
- package/lib/commonjs/index.js +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.native.js +53 -11
- package/lib/commonjs/index.native.js.map +1 -1
- package/lib/commonjs/native-stack/index.js.map +1 -1
- package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js +18 -16
- package/lib/commonjs/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
- package/lib/commonjs/native-stack/types.js.map +1 -1
- package/lib/commonjs/native-stack/utils/HeaderHeightContext.js.map +1 -1
- package/lib/commonjs/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
- package/lib/commonjs/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
- package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -1
- package/lib/commonjs/native-stack/utils/useHeaderHeight.js.map +1 -1
- package/lib/commonjs/native-stack/views/FontProcessor.js +1 -0
- package/lib/commonjs/native-stack/views/FontProcessor.js.map +1 -1
- package/lib/commonjs/native-stack/views/HeaderConfig.js +3 -1
- package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.js +14 -1
- package/lib/commonjs/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedScreen.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +3 -1
- package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedTransitionProgressContext.js.map +1 -1
- package/lib/commonjs/reanimated/index.js.map +1 -1
- package/lib/commonjs/reanimated/useReanimatedTransitionProgress.js.map +1 -1
- package/lib/commonjs/types.js.map +1 -1
- package/lib/commonjs/useTransitionProgress.js.map +1 -1
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/module/fabric/FullWindowOverlayNativeComponent.js +0 -5
- package/lib/module/fabric/FullWindowOverlayNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenContainerNativeComponent.js +0 -5
- package/lib/module/fabric/ScreenContainerNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenNativeComponent.js +0 -5
- package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js +0 -5
- package/lib/module/fabric/ScreenNavigationContainerNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js +0 -6
- package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js +0 -6
- package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenStackNativeComponent.js +0 -5
- package/lib/module/fabric/ScreenStackNativeComponent.js.map +1 -1
- package/lib/module/fabric/SearchBarNativeComponent.js +4 -6
- package/lib/module/fabric/SearchBarNativeComponent.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.native.js +54 -11
- package/lib/module/index.native.js.map +1 -1
- package/lib/module/native-stack/navigators/createNativeStackNavigator.js +18 -16
- package/lib/module/native-stack/navigators/createNativeStackNavigator.js.map +1 -1
- package/lib/module/native-stack/types.js.map +1 -1
- package/lib/module/native-stack/utils/SafeAreaProviderCompat.js.map +1 -1
- package/lib/module/native-stack/utils/getDefaultHeaderHeight.js.map +1 -1
- package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -1
- package/lib/module/native-stack/utils/useHeaderHeight.js.map +1 -1
- package/lib/module/native-stack/views/FontProcessor.js +1 -0
- package/lib/module/native-stack/views/FontProcessor.js.map +1 -1
- package/lib/module/native-stack/views/HeaderConfig.js +3 -1
- package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/module/native-stack/views/NativeStackView.js +15 -1
- package/lib/module/native-stack/views/NativeStackView.js.map +1 -1
- package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -1
- package/lib/module/reanimated/ReanimatedScreen.js.map +1 -1
- package/lib/module/reanimated/ReanimatedScreenProvider.js +3 -1
- package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -1
- package/lib/module/reanimated/useReanimatedTransitionProgress.js.map +1 -1
- package/lib/module/types.js.map +1 -1
- package/lib/module/useTransitionProgress.js.map +1 -1
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/fabric/FullWindowOverlayNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/ScreenContainerNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts +62 -0
- package/lib/typescript/fabric/ScreenNavigationContainerNativeComponent.d.ts +6 -0
- package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +34 -0
- package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +9 -0
- package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +9 -0
- package/lib/typescript/fabric/SearchBarNativeComponent.d.ts +46 -0
- package/lib/typescript/index.d.ts +2 -2
- package/lib/typescript/native-stack/navigators/createNativeStackNavigator.d.ts +2 -2
- package/lib/typescript/native-stack/types.d.ts +55 -1
- package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +1 -1
- package/lib/typescript/reanimated/ReanimatedScreen.d.ts +1 -1
- package/lib/typescript/types.d.ts +81 -2
- package/lib/typescript/useTransitionProgress.d.ts +3 -3
- package/native-stack/README.md +59 -1
- package/package.json +11 -14
- package/src/fabric/FullWindowOverlayNativeComponent.ts +6 -0
- package/src/fabric/ScreenContainerNativeComponent.ts +6 -0
- package/src/fabric/ScreenNativeComponent.ts +97 -0
- package/src/fabric/ScreenNavigationContainerNativeComponent.ts +9 -0
- package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +43 -0
- package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +20 -0
- package/src/fabric/ScreenStackNativeComponent.ts +12 -0
- package/src/fabric/SearchBarNativeComponent.ts +73 -0
- package/src/index.native.tsx +107 -14
- package/src/index.tsx +4 -3
- package/src/native-stack/navigators/createNativeStackNavigator.tsx +23 -19
- package/src/native-stack/types.tsx +55 -0
- package/src/native-stack/views/FontProcessor.tsx +1 -0
- package/src/native-stack/views/HeaderConfig.tsx +3 -1
- package/src/native-stack/views/NativeStackView.tsx +14 -2
- package/src/types.tsx +84 -2
- package/android/src/main/java/com/swmansion/rnscreens/LifecycleHelper.kt +0 -60
- package/createNativeStackNavigator/README.md +0 -522
- package/createNativeStackNavigator/package.json +0 -6
- package/lib/commonjs/createNativeStackNavigator.js +0 -374
- package/lib/commonjs/createNativeStackNavigator.js.map +0 -1
- package/lib/module/createNativeStackNavigator.js +0 -366
- package/lib/module/createNativeStackNavigator.js.map +0 -1
- package/lib/typescript/createNativeStackNavigator.d.ts +0 -51
- package/src/createNativeStackNavigator.tsx +0 -594
- package/src/fabric/FullWindowOverlayNativeComponent.js +0 -19
- package/src/fabric/ScreenContainerNativeComponent.js +0 -19
- package/src/fabric/ScreenNativeComponent.js +0 -104
- package/src/fabric/ScreenNavigationContainerNativeComponent.js +0 -19
- package/src/fabric/ScreenStackHeaderConfigNativeComponent.js +0 -54
- package/src/fabric/ScreenStackHeaderSubviewNativeComponent.js +0 -31
- package/src/fabric/ScreenStackNativeComponent.js +0 -23
- package/src/fabric/SearchBarNativeComponent.js +0 -62
- /package/android/src/main/res/{anim → base/anim}/rns_default_enter_in.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_default_enter_out.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_default_exit_in.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_default_exit_out.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_fade_from_bottom.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_fade_in.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_fade_out.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_fade_to_bottom.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_no_animation_20.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_no_animation_250.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_no_animation_350.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_no_animation_medium.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_slide_in_from_bottom.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_slide_in_from_left.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_slide_in_from_right.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_slide_out_to_bottom.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_slide_out_to_left.xml +0 -0
- /package/android/src/main/res/{anim → base/anim}/rns_slide_out_to_right.xml +0 -0
|
@@ -1,374 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var _react = _interopRequireDefault(require("react"));
|
|
8
|
-
var _reactNative = require("react-native");
|
|
9
|
-
var _reactNativeScreens = require("react-native-screens");
|
|
10
|
-
var _reactNavigation = require("react-navigation");
|
|
11
|
-
var _reactNavigationStack = require("react-navigation-stack");
|
|
12
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
|
-
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
14
|
-
const REMOVE_ACTION = 'NativeStackNavigator/REMOVE';
|
|
15
|
-
const isAndroid = _reactNative.Platform.OS === 'android';
|
|
16
|
-
let didWarn = isAndroid;
|
|
17
|
-
function renderComponentOrThunk(componentOrThunk, props) {
|
|
18
|
-
if (typeof componentOrThunk === 'function') {
|
|
19
|
-
return componentOrThunk(props);
|
|
20
|
-
}
|
|
21
|
-
return componentOrThunk;
|
|
22
|
-
}
|
|
23
|
-
function removeScene(route, dismissCount, navigation) {
|
|
24
|
-
navigation.dispatch({
|
|
25
|
-
// @ts-ignore special navigation action for native stack
|
|
26
|
-
type: REMOVE_ACTION,
|
|
27
|
-
immediate: true,
|
|
28
|
-
key: route.key,
|
|
29
|
-
dismissCount
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
function onAppear(route, descriptor, navigation) {
|
|
33
|
-
var _descriptor$options, _descriptor$options$o;
|
|
34
|
-
(_descriptor$options = descriptor.options) === null || _descriptor$options === void 0 ? void 0 : (_descriptor$options$o = _descriptor$options.onAppear) === null || _descriptor$options$o === void 0 ? void 0 : _descriptor$options$o.call(_descriptor$options);
|
|
35
|
-
navigation.dispatch(_reactNavigation.StackActions.completeTransition({
|
|
36
|
-
toChildKey: route.key,
|
|
37
|
-
key: navigation.state.key
|
|
38
|
-
}));
|
|
39
|
-
}
|
|
40
|
-
function onFinishTransitioning(navigation) {
|
|
41
|
-
const {
|
|
42
|
-
routes
|
|
43
|
-
} = navigation.state;
|
|
44
|
-
const lastRoute = (routes === null || routes === void 0 ? void 0 : routes.length) && routes[routes.length - 1];
|
|
45
|
-
if (lastRoute) {
|
|
46
|
-
navigation.dispatch(_reactNavigation.StackActions.completeTransition({
|
|
47
|
-
toChildKey: lastRoute.key,
|
|
48
|
-
key: navigation.state.key
|
|
49
|
-
}));
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
function renderHeaderConfig(index, route, descriptor, navigationConfig) {
|
|
53
|
-
const {
|
|
54
|
-
options
|
|
55
|
-
} = descriptor;
|
|
56
|
-
const {
|
|
57
|
-
headerMode
|
|
58
|
-
} = navigationConfig;
|
|
59
|
-
const {
|
|
60
|
-
backButtonInCustomView,
|
|
61
|
-
direction,
|
|
62
|
-
disableBackButtonMenu,
|
|
63
|
-
headerBackTitle,
|
|
64
|
-
headerBackTitleStyle,
|
|
65
|
-
headerBackTitleVisible,
|
|
66
|
-
headerHideBackButton,
|
|
67
|
-
headerHideShadow,
|
|
68
|
-
headerLargeStyle,
|
|
69
|
-
headerLargeTitle,
|
|
70
|
-
headerLargeTitleHideShadow,
|
|
71
|
-
headerLargeTitleStyle,
|
|
72
|
-
headerShown,
|
|
73
|
-
headerStyle,
|
|
74
|
-
headerTintColor,
|
|
75
|
-
headerTitleStyle,
|
|
76
|
-
headerTopInsetEnabled = true,
|
|
77
|
-
headerTranslucent,
|
|
78
|
-
hideShadow,
|
|
79
|
-
largeTitle,
|
|
80
|
-
largeTitleHideShadow,
|
|
81
|
-
title,
|
|
82
|
-
translucent
|
|
83
|
-
} = options;
|
|
84
|
-
const scene = {
|
|
85
|
-
index,
|
|
86
|
-
key: route.key,
|
|
87
|
-
route,
|
|
88
|
-
descriptor
|
|
89
|
-
};
|
|
90
|
-
const headerOptions = {
|
|
91
|
-
backButtonInCustomView,
|
|
92
|
-
backTitle: headerBackTitleVisible === false ? '' : headerBackTitle,
|
|
93
|
-
backTitleFontFamily: headerBackTitleStyle === null || headerBackTitleStyle === void 0 ? void 0 : headerBackTitleStyle.fontFamily,
|
|
94
|
-
backTitleFontSize: headerBackTitleStyle === null || headerBackTitleStyle === void 0 ? void 0 : headerBackTitleStyle.fontSize,
|
|
95
|
-
color: headerTintColor,
|
|
96
|
-
direction,
|
|
97
|
-
disableBackButtonMenu,
|
|
98
|
-
topInsetEnabled: headerTopInsetEnabled,
|
|
99
|
-
hideBackButton: headerHideBackButton,
|
|
100
|
-
hideShadow: headerHideShadow || hideShadow,
|
|
101
|
-
largeTitle: headerLargeTitle || largeTitle,
|
|
102
|
-
largeTitleBackgroundColor: (headerLargeStyle === null || headerLargeStyle === void 0 ? void 0 : headerLargeStyle.backgroundColor) || ( // @ts-ignore old implementation, will not be present in TS API, but can be used here
|
|
103
|
-
headerLargeTitleStyle === null || headerLargeTitleStyle === void 0 ? void 0 : headerLargeTitleStyle.backgroundColor),
|
|
104
|
-
largeTitleColor: headerLargeTitleStyle === null || headerLargeTitleStyle === void 0 ? void 0 : headerLargeTitleStyle.color,
|
|
105
|
-
largeTitleFontFamily: headerLargeTitleStyle === null || headerLargeTitleStyle === void 0 ? void 0 : headerLargeTitleStyle.fontFamily,
|
|
106
|
-
largeTitleFontSize: headerLargeTitleStyle === null || headerLargeTitleStyle === void 0 ? void 0 : headerLargeTitleStyle.fontSize,
|
|
107
|
-
largeTitleFontWeight: headerLargeTitleStyle === null || headerLargeTitleStyle === void 0 ? void 0 : headerLargeTitleStyle.fontWeight,
|
|
108
|
-
largeTitleHideShadow: largeTitleHideShadow || headerLargeTitleHideShadow,
|
|
109
|
-
title,
|
|
110
|
-
titleColor: (headerTitleStyle === null || headerTitleStyle === void 0 ? void 0 : headerTitleStyle.color) || headerTintColor,
|
|
111
|
-
titleFontFamily: headerTitleStyle === null || headerTitleStyle === void 0 ? void 0 : headerTitleStyle.fontFamily,
|
|
112
|
-
titleFontSize: headerTitleStyle === null || headerTitleStyle === void 0 ? void 0 : headerTitleStyle.fontSize,
|
|
113
|
-
titleFontWeight: headerTitleStyle === null || headerTitleStyle === void 0 ? void 0 : headerTitleStyle.fontWeight,
|
|
114
|
-
translucent: headerTranslucent || translucent || false
|
|
115
|
-
};
|
|
116
|
-
const hasHeader = headerShown !== false && headerMode !== 'none' && options.header !== null;
|
|
117
|
-
if (!hasHeader) {
|
|
118
|
-
return /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderConfig, _extends({}, headerOptions, {
|
|
119
|
-
hidden: true
|
|
120
|
-
}));
|
|
121
|
-
}
|
|
122
|
-
if (headerStyle !== undefined) {
|
|
123
|
-
headerOptions.backgroundColor = headerStyle.backgroundColor;
|
|
124
|
-
headerOptions.blurEffect = headerStyle.blurEffect;
|
|
125
|
-
}
|
|
126
|
-
const children = [];
|
|
127
|
-
if (options.backButtonImage) {
|
|
128
|
-
children.push( /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderBackButtonImage, {
|
|
129
|
-
key: "backImage",
|
|
130
|
-
source: options.backButtonImage
|
|
131
|
-
}));
|
|
132
|
-
}
|
|
133
|
-
if (_reactNative.Platform.OS === 'ios' && options.searchBar) {
|
|
134
|
-
children.push( /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderSearchBarView, null, /*#__PURE__*/_react.default.createElement(_reactNativeScreens.SearchBar, options.searchBar)));
|
|
135
|
-
}
|
|
136
|
-
if (options.headerLeft !== undefined) {
|
|
137
|
-
children.push( /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderLeftView, {
|
|
138
|
-
key: "left"
|
|
139
|
-
}, renderComponentOrThunk(options.headerLeft, {
|
|
140
|
-
scene
|
|
141
|
-
})));
|
|
142
|
-
} else if (options.headerBackImage !== undefined) {
|
|
143
|
-
const goBack = () => {
|
|
144
|
-
// Go back on next tick because button ripple effect needs to happen on Android
|
|
145
|
-
requestAnimationFrame(() => {
|
|
146
|
-
descriptor.navigation.goBack(descriptor.key);
|
|
147
|
-
});
|
|
148
|
-
};
|
|
149
|
-
children.push( /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderLeftView, {
|
|
150
|
-
key: "left"
|
|
151
|
-
}, /*#__PURE__*/_react.default.createElement(_reactNavigationStack.HeaderBackButton, {
|
|
152
|
-
onPress: goBack,
|
|
153
|
-
pressColorAndroid: options.headerPressColorAndroid,
|
|
154
|
-
tintColor: options.headerTintColor,
|
|
155
|
-
backImage: options.headerBackImage,
|
|
156
|
-
label: options.backButtonTitle,
|
|
157
|
-
truncatedLabel: options.truncatedBackButtonTitle,
|
|
158
|
-
labelVisible: options.backTitleVisible,
|
|
159
|
-
labelStyle: options.headerBackTitleStyle,
|
|
160
|
-
titleLayout: options.layoutPreset
|
|
161
|
-
// @ts-ignore old props kept for very old version of `react-navigation-stack`
|
|
162
|
-
,
|
|
163
|
-
title: options.backButtonTitle,
|
|
164
|
-
truncatedTitle: options.truncatedBackButtonTitle,
|
|
165
|
-
backTitleVisible: options.backTitleVisible,
|
|
166
|
-
titleStyle: options.headerBackTitleStyle,
|
|
167
|
-
layoutPreset: options.layoutPreset,
|
|
168
|
-
scene: scene
|
|
169
|
-
})));
|
|
170
|
-
}
|
|
171
|
-
if (options.headerTitle) {
|
|
172
|
-
if (title === undefined && typeof options.headerTitle === 'string') {
|
|
173
|
-
headerOptions.title = options.headerTitle;
|
|
174
|
-
} else {
|
|
175
|
-
children.push( /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderCenterView, {
|
|
176
|
-
key: "center"
|
|
177
|
-
}, renderComponentOrThunk(options.headerTitle, {
|
|
178
|
-
scene
|
|
179
|
-
})));
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
if (options.headerRight) {
|
|
183
|
-
children.push( /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderRightView, {
|
|
184
|
-
key: "right"
|
|
185
|
-
}, renderComponentOrThunk(options.headerRight, {
|
|
186
|
-
scene
|
|
187
|
-
})));
|
|
188
|
-
}
|
|
189
|
-
if (children.length > 0) {
|
|
190
|
-
headerOptions.children = children;
|
|
191
|
-
}
|
|
192
|
-
return /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStackHeaderConfig, headerOptions);
|
|
193
|
-
}
|
|
194
|
-
const MaybeNestedStack = _ref => {
|
|
195
|
-
let {
|
|
196
|
-
isHeaderInModal,
|
|
197
|
-
screenProps,
|
|
198
|
-
route,
|
|
199
|
-
navigation,
|
|
200
|
-
SceneComponent,
|
|
201
|
-
index,
|
|
202
|
-
descriptor,
|
|
203
|
-
navigationConfig
|
|
204
|
-
} = _ref;
|
|
205
|
-
const Screen = _react.default.useContext(_reactNativeScreens.ScreenContext);
|
|
206
|
-
if (isHeaderInModal) {
|
|
207
|
-
return /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStack, {
|
|
208
|
-
style: styles.scenes
|
|
209
|
-
}, /*#__PURE__*/_react.default.createElement(Screen, {
|
|
210
|
-
style: _reactNative.StyleSheet.absoluteFill,
|
|
211
|
-
enabled: true,
|
|
212
|
-
isNativeStack: true
|
|
213
|
-
}, renderHeaderConfig(index, route, descriptor, navigationConfig), /*#__PURE__*/_react.default.createElement(_reactNavigation.SceneView, {
|
|
214
|
-
screenProps: screenProps,
|
|
215
|
-
navigation: navigation,
|
|
216
|
-
component: SceneComponent
|
|
217
|
-
})));
|
|
218
|
-
}
|
|
219
|
-
return /*#__PURE__*/_react.default.createElement(_reactNavigation.SceneView, {
|
|
220
|
-
screenProps: screenProps,
|
|
221
|
-
navigation: navigation,
|
|
222
|
-
component: SceneComponent
|
|
223
|
-
});
|
|
224
|
-
};
|
|
225
|
-
function StackView(_ref2) {
|
|
226
|
-
let {
|
|
227
|
-
navigation,
|
|
228
|
-
descriptors,
|
|
229
|
-
navigationConfig,
|
|
230
|
-
screenProps
|
|
231
|
-
} = _ref2;
|
|
232
|
-
const {
|
|
233
|
-
routes
|
|
234
|
-
} = navigation.state;
|
|
235
|
-
const Screen = _react.default.useContext(_reactNativeScreens.ScreenContext);
|
|
236
|
-
return /*#__PURE__*/_react.default.createElement(_reactNativeScreens.ScreenStack, {
|
|
237
|
-
style: styles.scenes,
|
|
238
|
-
onFinishTransitioning: () => onFinishTransitioning(navigation)
|
|
239
|
-
}, routes.map((route, index) => {
|
|
240
|
-
const descriptor = descriptors[route.key];
|
|
241
|
-
const {
|
|
242
|
-
getComponent,
|
|
243
|
-
options
|
|
244
|
-
} = descriptor;
|
|
245
|
-
const routeNavigationProp = descriptor.navigation;
|
|
246
|
-
const {
|
|
247
|
-
mode,
|
|
248
|
-
transparentCard
|
|
249
|
-
} = navigationConfig;
|
|
250
|
-
const SceneComponent = getComponent();
|
|
251
|
-
let stackPresentation = 'push';
|
|
252
|
-
if (options.stackPresentation) {
|
|
253
|
-
stackPresentation = options.stackPresentation;
|
|
254
|
-
} else {
|
|
255
|
-
// this shouldn't be used because we have a prop for that
|
|
256
|
-
if (mode === 'modal' || mode === 'containedModal') {
|
|
257
|
-
stackPresentation = mode;
|
|
258
|
-
if (transparentCard || options.cardTransparent) {
|
|
259
|
-
stackPresentation = mode === 'containedModal' ? 'containedTransparentModal' : 'transparentModal';
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
let stackAnimation = options.stackAnimation;
|
|
264
|
-
if (options.animationEnabled === false) {
|
|
265
|
-
stackAnimation = 'none';
|
|
266
|
-
}
|
|
267
|
-
const hasHeader = options.headerShown !== false && (navigationConfig === null || navigationConfig === void 0 ? void 0 : navigationConfig.headerMode) !== 'none' && options.header !== null;
|
|
268
|
-
if (!didWarn && stackPresentation !== 'push' && options.headerShown !== undefined) {
|
|
269
|
-
didWarn = true;
|
|
270
|
-
console.warn('Be aware that changing the visibility of header in modal on iOS will result in resetting the state of the screen.');
|
|
271
|
-
}
|
|
272
|
-
const isHeaderInModal = isAndroid ? false : stackPresentation !== 'push' && hasHeader && options.headerShown === true;
|
|
273
|
-
const isHeaderInPush = isAndroid ? hasHeader : stackPresentation === 'push' && hasHeader;
|
|
274
|
-
return /*#__PURE__*/_react.default.createElement(Screen, {
|
|
275
|
-
key: `screen_${route.key}`,
|
|
276
|
-
enabled: true,
|
|
277
|
-
isNativeStack: true,
|
|
278
|
-
style: [_reactNative.StyleSheet.absoluteFill, options.cardStyle],
|
|
279
|
-
stackAnimation: stackAnimation,
|
|
280
|
-
customAnimationOnSwipe: options.customAnimationOnSwipe,
|
|
281
|
-
stackPresentation: stackPresentation,
|
|
282
|
-
replaceAnimation: options.replaceAnimation === undefined ? 'pop' : options.replaceAnimation,
|
|
283
|
-
pointerEvents: index === navigation.state.routes.length - 1 ? 'auto' : 'none',
|
|
284
|
-
gestureEnabled: _reactNative.Platform.OS === 'android' ? false : options.gestureEnabled === undefined ? true : options.gestureEnabled,
|
|
285
|
-
nativeBackButtonDismissalEnabled: options.nativeBackButtonDismissalEnabled,
|
|
286
|
-
fullScreenSwipeEnabled: options.fullScreenSwipeEnabled,
|
|
287
|
-
screenOrientation: options.screenOrientation,
|
|
288
|
-
statusBarAnimation: options.statusBarAnimation,
|
|
289
|
-
statusBarColor: options.statusBarColor,
|
|
290
|
-
statusBarHidden: options.statusBarHidden,
|
|
291
|
-
statusBarStyle: options.statusBarStyle,
|
|
292
|
-
statusBarTranslucent: options.statusBarTranslucent,
|
|
293
|
-
onAppear: () => onAppear(route, descriptor, routeNavigationProp),
|
|
294
|
-
onWillAppear: () => {
|
|
295
|
-
var _options$onWillAppear;
|
|
296
|
-
return options === null || options === void 0 ? void 0 : (_options$onWillAppear = options.onWillAppear) === null || _options$onWillAppear === void 0 ? void 0 : _options$onWillAppear.call(options);
|
|
297
|
-
},
|
|
298
|
-
onWillDisappear: () => {
|
|
299
|
-
var _options$onWillDisapp;
|
|
300
|
-
return options === null || options === void 0 ? void 0 : (_options$onWillDisapp = options.onWillDisappear) === null || _options$onWillDisapp === void 0 ? void 0 : _options$onWillDisapp.call(options);
|
|
301
|
-
},
|
|
302
|
-
onDisappear: () => {
|
|
303
|
-
var _options$onDisappear;
|
|
304
|
-
return options === null || options === void 0 ? void 0 : (_options$onDisappear = options.onDisappear) === null || _options$onDisappear === void 0 ? void 0 : _options$onDisappear.call(options);
|
|
305
|
-
},
|
|
306
|
-
onHeaderBackButtonClicked: () => removeScene(route, 1, routeNavigationProp),
|
|
307
|
-
onDismissed: e => removeScene(route, e.nativeEvent.dismissCount, routeNavigationProp)
|
|
308
|
-
}, isHeaderInPush && renderHeaderConfig(index, route, descriptor, navigationConfig), /*#__PURE__*/_react.default.createElement(MaybeNestedStack, {
|
|
309
|
-
isHeaderInModal: isHeaderInModal,
|
|
310
|
-
screenProps: screenProps,
|
|
311
|
-
route: route,
|
|
312
|
-
navigation: routeNavigationProp,
|
|
313
|
-
SceneComponent: SceneComponent,
|
|
314
|
-
index: index,
|
|
315
|
-
descriptor: descriptor,
|
|
316
|
-
navigationConfig: navigationConfig
|
|
317
|
-
}));
|
|
318
|
-
}));
|
|
319
|
-
}
|
|
320
|
-
const styles = _reactNative.StyleSheet.create({
|
|
321
|
-
scenes: {
|
|
322
|
-
flex: 1
|
|
323
|
-
}
|
|
324
|
-
});
|
|
325
|
-
function createStackNavigator(routeConfigMap) {
|
|
326
|
-
let stackConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
327
|
-
const router = (0, _reactNavigation.StackRouter)(routeConfigMap, stackConfig);
|
|
328
|
-
|
|
329
|
-
// below we override getStateForAction method in order to add handling for
|
|
330
|
-
// a custom native stack navigation action. The action REMOVE that we want to
|
|
331
|
-
// add works in a similar way to POP, but it does not remove all the routes
|
|
332
|
-
// that sit on top of the removed route. For example if we have three routes
|
|
333
|
-
// [a,b,c] and call POP on b, then both b and c will go away. In case we
|
|
334
|
-
// call REMOVE on b, only b will be removed from the stack and the resulting
|
|
335
|
-
// state will be [a, c]
|
|
336
|
-
const superGetStateForAction = router.getStateForAction;
|
|
337
|
-
router.getStateForAction = (action, state) => {
|
|
338
|
-
if (action.type === REMOVE_ACTION) {
|
|
339
|
-
const {
|
|
340
|
-
key,
|
|
341
|
-
immediate,
|
|
342
|
-
dismissCount
|
|
343
|
-
} = action;
|
|
344
|
-
let backRouteIndex = state.index;
|
|
345
|
-
if (key) {
|
|
346
|
-
const backRoute = state.routes.find(route => route.key === key);
|
|
347
|
-
backRouteIndex = state.routes.indexOf(backRoute);
|
|
348
|
-
}
|
|
349
|
-
if (backRouteIndex > 0) {
|
|
350
|
-
const newRoutes = [...state.routes];
|
|
351
|
-
if (dismissCount > 1) {
|
|
352
|
-
// when dismissing with iOS 14 native header back button, we can pop more than 1 screen at a time
|
|
353
|
-
// and the `backRouteIndex` is the index of the previous screen. Since we are starting already
|
|
354
|
-
// on the previous screen, we add 1 to start.
|
|
355
|
-
newRoutes.splice(backRouteIndex - dismissCount + 1, dismissCount);
|
|
356
|
-
} else {
|
|
357
|
-
newRoutes.splice(backRouteIndex, 1);
|
|
358
|
-
}
|
|
359
|
-
return {
|
|
360
|
-
...state,
|
|
361
|
-
routes: newRoutes,
|
|
362
|
-
index: newRoutes.length - 1,
|
|
363
|
-
isTransitioning: immediate !== true
|
|
364
|
-
};
|
|
365
|
-
}
|
|
366
|
-
}
|
|
367
|
-
return superGetStateForAction(action, state);
|
|
368
|
-
};
|
|
369
|
-
// Create a navigator with StackView as the view
|
|
370
|
-
return (0, _reactNavigation.createNavigator)(StackView, router, stackConfig);
|
|
371
|
-
}
|
|
372
|
-
var _default = createStackNavigator;
|
|
373
|
-
exports.default = _default;
|
|
374
|
-
//# sourceMappingURL=createNativeStackNavigator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["REMOVE_ACTION","isAndroid","Platform","OS","didWarn","renderComponentOrThunk","componentOrThunk","props","removeScene","route","dismissCount","navigation","dispatch","type","immediate","key","onAppear","descriptor","options","StackActions","completeTransition","toChildKey","state","onFinishTransitioning","routes","lastRoute","length","renderHeaderConfig","index","navigationConfig","headerMode","backButtonInCustomView","direction","disableBackButtonMenu","headerBackTitle","headerBackTitleStyle","headerBackTitleVisible","headerHideBackButton","headerHideShadow","headerLargeStyle","headerLargeTitle","headerLargeTitleHideShadow","headerLargeTitleStyle","headerShown","headerStyle","headerTintColor","headerTitleStyle","headerTopInsetEnabled","headerTranslucent","hideShadow","largeTitle","largeTitleHideShadow","title","translucent","scene","headerOptions","backTitle","backTitleFontFamily","fontFamily","backTitleFontSize","fontSize","color","topInsetEnabled","hideBackButton","largeTitleBackgroundColor","backgroundColor","largeTitleColor","largeTitleFontFamily","largeTitleFontSize","largeTitleFontWeight","fontWeight","titleColor","titleFontFamily","titleFontSize","titleFontWeight","hasHeader","header","undefined","blurEffect","children","backButtonImage","push","searchBar","headerLeft","headerBackImage","goBack","requestAnimationFrame","headerPressColorAndroid","backButtonTitle","truncatedBackButtonTitle","backTitleVisible","layoutPreset","headerTitle","headerRight","MaybeNestedStack","isHeaderInModal","screenProps","SceneComponent","Screen","React","useContext","ScreenContext","styles","scenes","StyleSheet","absoluteFill","StackView","descriptors","map","getComponent","routeNavigationProp","mode","transparentCard","stackPresentation","cardTransparent","stackAnimation","animationEnabled","console","warn","isHeaderInPush","cardStyle","customAnimationOnSwipe","replaceAnimation","gestureEnabled","nativeBackButtonDismissalEnabled","fullScreenSwipeEnabled","screenOrientation","statusBarAnimation","statusBarColor","statusBarHidden","statusBarStyle","statusBarTranslucent","onWillAppear","onWillDisappear","onDisappear","e","nativeEvent","create","flex","createStackNavigator","routeConfigMap","stackConfig","router","StackRouter","superGetStateForAction","getStateForAction","action","backRouteIndex","backRoute","find","indexOf","newRoutes","splice","isTransitioning","createNavigator"],"sources":["createNativeStackNavigator.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Platform,\n StyleSheet,\n Animated,\n StyleProp,\n TextStyle,\n ViewStyle,\n} from 'react-native';\nimport {\n ScreenContext,\n ScreenStack,\n ScreenStackHeaderBackButtonImage,\n ScreenStackHeaderCenterView,\n ScreenStackHeaderConfig,\n ScreenStackHeaderConfigProps,\n ScreenStackHeaderLeftView,\n ScreenStackHeaderRightView,\n ScreenStackHeaderSearchBarView,\n SearchBar,\n StackPresentationTypes,\n} from 'react-native-screens';\nimport {\n createNavigator,\n SceneView,\n StackActions,\n StackRouter,\n NavigationRouteConfigMap,\n CreateNavigatorConfig,\n NavigationStackRouterConfig,\n NavigationParams,\n NavigationRoute,\n NavigationDescriptor,\n NavigationState,\n NavigationNavigator,\n NavigationAction,\n NavigationProp,\n NavigationScreenProp,\n} from 'react-navigation';\nimport { NativeStackNavigationOptions as NativeStackNavigationOptionsV5 } from './native-stack/types';\nimport { HeaderBackButton } from 'react-navigation-stack';\nimport {\n StackNavigationHelpers,\n StackNavigationProp,\n Layout,\n} from 'react-navigation-stack/src/vendor/types';\n\nconst REMOVE_ACTION = 'NativeStackNavigator/REMOVE';\n\nconst isAndroid = Platform.OS === 'android';\n\nlet didWarn = isAndroid;\n\nfunction renderComponentOrThunk(componentOrThunk: unknown, props: unknown) {\n if (typeof componentOrThunk === 'function') {\n return componentOrThunk(props);\n }\n return componentOrThunk;\n}\n\ntype NativeStackRemoveNavigationAction = {\n type: typeof REMOVE_ACTION;\n immediate: boolean;\n dismissCount: number;\n key?: string;\n};\n\nexport type NativeStackNavigationProp = StackNavigationProp;\n\nexport type NativeStackNavigationOptions = StackNavigatorOptions &\n NativeStackNavigationOptionsV5 &\n BackButtonProps & {\n onWillAppear?: () => void;\n onAppear?: () => void;\n onWillDisappear?: () => void;\n onDisappear?: () => void;\n // these props differ from the ones used in v5 `native-stack`, and we would like to keep the API consistent between versions\n /** Use `headerHideShadow` to be consistent with v5 `native-stack` */\n hideShadow?: boolean;\n /** Use `headerLargeTitle` to be consistent with v5 `native-stack` */\n largeTitle?: boolean;\n /** Use `headerLargeTitleHideShadow` to be consistent with v5 `native-stack` */\n largeTitleHideShadow?: boolean;\n /** Use `headerTranslucent` to be consistent with v5 `native-stack` */\n translucent?: boolean;\n };\n\n// these are adopted from `stack` navigator\ntype StackNavigatorOptions = {\n /** This is an option from `stackNavigator` and it hides the header when set to `null`. Use `headerShown` instead to be consistent with v5 `native-stack`. */\n header?: React.ComponentType<Record<string, unknown>> | null;\n /** This is an option from `stackNavigator` and it controls the stack presentation along with `mode` prop. Use `stackPresentation` instead to be consistent with v5 `native-stack` */\n cardTransparent?: boolean;\n /** This is an option from `stackNavigator` and it sets stack animation to none when `false` passed. Use `stackAnimation: 'none'` instead to be consistent with v5 `native-stack` */\n animationEnabled?: boolean;\n cardStyle?: StyleProp<ViewStyle>;\n};\n\n// these are the props used for rendering back button taken from `react-navigation-stack`\ntype BackButtonProps = {\n headerBackImage?: (props: { tintColor: string }) => React.ReactNode;\n headerPressColorAndroid?: string;\n headerTintColor?: string;\n backButtonTitle?: string;\n truncatedBackButtonTitle?: string;\n backTitleVisible?: boolean;\n headerBackTitleStyle?: Animated.WithAnimatedValue<StyleProp<TextStyle>>;\n layoutPreset?: Layout;\n};\n\ntype NativeStackDescriptor = NavigationDescriptor<\n NavigationParams,\n NativeStackNavigationOptions\n>;\n\ntype NativeStackDescriptorMap = {\n [key: string]: NativeStackDescriptor;\n};\n\n// these are the props used for rendering back button taken from `react-navigation-stack`\ntype NativeStackNavigationConfig = {\n /** This is an option from `stackNavigator` and controls the stack presentation along with `cardTransparent` prop. Use `stackPresentation` instead to be consistent with v5 `native-stack` */\n mode?: 'modal' | 'containedModal';\n /** This is an option from `stackNavigator` and makes the header hide when set to `none`. Use `headerShown` instead to be consistent with v5 `native-stack` */\n headerMode?: 'none';\n /** This is an option from `stackNavigator` and controls the stack presentation along with `mode` prop. Use `stackPresentation` instead to be consistent with v5 `native-stack` */\n transparentCard?: boolean;\n};\n\nfunction removeScene(\n route: NavigationRoute<NavigationParams>,\n dismissCount: number,\n navigation: StackNavigationHelpers\n) {\n navigation.dispatch({\n // @ts-ignore special navigation action for native stack\n type: REMOVE_ACTION,\n immediate: true,\n key: route.key,\n dismissCount,\n });\n}\n\nfunction onAppear(\n route: NavigationRoute<NavigationParams>,\n descriptor: NativeStackDescriptor,\n navigation: StackNavigationHelpers\n) {\n descriptor.options?.onAppear?.();\n navigation.dispatch(\n StackActions.completeTransition({\n toChildKey: route.key,\n key: navigation.state.key,\n })\n );\n}\n\nfunction onFinishTransitioning(navigation: StackNavigationHelpers) {\n const { routes } = navigation.state;\n const lastRoute = routes?.length && routes[routes.length - 1];\n\n if (lastRoute) {\n navigation.dispatch(\n StackActions.completeTransition({\n toChildKey: lastRoute.key,\n key: navigation.state.key,\n })\n );\n }\n}\n\nfunction renderHeaderConfig(\n index: number,\n route: NavigationRoute<NavigationParams>,\n descriptor: NativeStackDescriptor,\n navigationConfig: NativeStackNavigationConfig\n) {\n const { options } = descriptor;\n const { headerMode } = navigationConfig;\n\n const {\n backButtonInCustomView,\n direction,\n disableBackButtonMenu,\n headerBackTitle,\n headerBackTitleStyle,\n headerBackTitleVisible,\n headerHideBackButton,\n headerHideShadow,\n headerLargeStyle,\n headerLargeTitle,\n headerLargeTitleHideShadow,\n headerLargeTitleStyle,\n headerShown,\n headerStyle,\n headerTintColor,\n headerTitleStyle,\n headerTopInsetEnabled = true,\n headerTranslucent,\n hideShadow,\n largeTitle,\n largeTitleHideShadow,\n title,\n translucent,\n } = options;\n\n const scene = {\n index,\n key: route.key,\n route,\n descriptor,\n };\n\n const headerOptions: ScreenStackHeaderConfigProps = {\n backButtonInCustomView,\n backTitle: headerBackTitleVisible === false ? '' : headerBackTitle,\n backTitleFontFamily: headerBackTitleStyle?.fontFamily,\n backTitleFontSize: headerBackTitleStyle?.fontSize,\n color: headerTintColor,\n direction,\n disableBackButtonMenu,\n topInsetEnabled: headerTopInsetEnabled,\n hideBackButton: headerHideBackButton,\n hideShadow: headerHideShadow || hideShadow,\n largeTitle: headerLargeTitle || largeTitle,\n largeTitleBackgroundColor:\n headerLargeStyle?.backgroundColor ||\n // @ts-ignore old implementation, will not be present in TS API, but can be used here\n headerLargeTitleStyle?.backgroundColor,\n largeTitleColor: headerLargeTitleStyle?.color,\n largeTitleFontFamily: headerLargeTitleStyle?.fontFamily,\n largeTitleFontSize: headerLargeTitleStyle?.fontSize,\n largeTitleFontWeight: headerLargeTitleStyle?.fontWeight,\n largeTitleHideShadow: largeTitleHideShadow || headerLargeTitleHideShadow,\n title,\n titleColor: headerTitleStyle?.color || headerTintColor,\n titleFontFamily: headerTitleStyle?.fontFamily,\n titleFontSize: headerTitleStyle?.fontSize,\n titleFontWeight: headerTitleStyle?.fontWeight,\n translucent: headerTranslucent || translucent || false,\n };\n\n const hasHeader =\n headerShown !== false && headerMode !== 'none' && options.header !== null;\n if (!hasHeader) {\n return <ScreenStackHeaderConfig {...headerOptions} hidden />;\n }\n\n if (headerStyle !== undefined) {\n headerOptions.backgroundColor = headerStyle.backgroundColor;\n headerOptions.blurEffect = headerStyle.blurEffect;\n }\n\n const children = [];\n\n if (options.backButtonImage) {\n children.push(\n <ScreenStackHeaderBackButtonImage\n key=\"backImage\"\n source={options.backButtonImage}\n />\n );\n }\n\n if (Platform.OS === 'ios' && options.searchBar) {\n children.push(\n <ScreenStackHeaderSearchBarView>\n <SearchBar {...options.searchBar} />\n </ScreenStackHeaderSearchBarView>\n );\n }\n\n if (options.headerLeft !== undefined) {\n children.push(\n <ScreenStackHeaderLeftView key=\"left\">\n {renderComponentOrThunk(options.headerLeft, { scene })}\n </ScreenStackHeaderLeftView>\n );\n } else if (options.headerBackImage !== undefined) {\n const goBack = () => {\n // Go back on next tick because button ripple effect needs to happen on Android\n requestAnimationFrame(() => {\n descriptor.navigation.goBack(descriptor.key);\n });\n };\n\n children.push(\n <ScreenStackHeaderLeftView key=\"left\">\n <HeaderBackButton\n onPress={goBack}\n pressColorAndroid={options.headerPressColorAndroid}\n tintColor={options.headerTintColor}\n backImage={options.headerBackImage}\n label={options.backButtonTitle}\n truncatedLabel={options.truncatedBackButtonTitle}\n labelVisible={options.backTitleVisible}\n labelStyle={options.headerBackTitleStyle}\n titleLayout={options.layoutPreset}\n // @ts-ignore old props kept for very old version of `react-navigation-stack`\n title={options.backButtonTitle}\n truncatedTitle={options.truncatedBackButtonTitle}\n backTitleVisible={options.backTitleVisible}\n titleStyle={options.headerBackTitleStyle}\n layoutPreset={options.layoutPreset}\n scene={scene}\n />\n </ScreenStackHeaderLeftView>\n );\n }\n\n if (options.headerTitle) {\n if (title === undefined && typeof options.headerTitle === 'string') {\n headerOptions.title = options.headerTitle;\n } else {\n children.push(\n <ScreenStackHeaderCenterView key=\"center\">\n {renderComponentOrThunk(options.headerTitle, { scene })}\n </ScreenStackHeaderCenterView>\n );\n }\n }\n\n if (options.headerRight) {\n children.push(\n <ScreenStackHeaderRightView key=\"right\">\n {renderComponentOrThunk(options.headerRight, { scene })}\n </ScreenStackHeaderRightView>\n );\n }\n\n if (children.length > 0) {\n headerOptions.children = children;\n }\n\n return <ScreenStackHeaderConfig {...headerOptions} />;\n}\n\nconst MaybeNestedStack = ({\n isHeaderInModal,\n screenProps,\n route,\n navigation,\n SceneComponent,\n index,\n descriptor,\n navigationConfig,\n}: {\n isHeaderInModal: boolean;\n screenProps: unknown;\n route: NavigationRoute<NavigationParams>;\n navigation: NavigationScreenProp<\n NavigationRoute<NavigationParams>,\n NavigationParams\n >;\n SceneComponent: React.ComponentType<Record<string, unknown>>;\n index: number;\n descriptor: NativeStackDescriptor;\n navigationConfig: NativeStackNavigationConfig;\n}) => {\n const Screen = React.useContext(ScreenContext);\n\n if (isHeaderInModal) {\n return (\n <ScreenStack style={styles.scenes}>\n <Screen style={StyleSheet.absoluteFill} enabled isNativeStack>\n {renderHeaderConfig(index, route, descriptor, navigationConfig)}\n <SceneView\n screenProps={screenProps}\n navigation={navigation}\n component={SceneComponent}\n />\n </Screen>\n </ScreenStack>\n );\n }\n return (\n <SceneView\n screenProps={screenProps}\n navigation={navigation}\n component={SceneComponent}\n />\n );\n};\n\ntype StackViewProps = {\n navigation: StackNavigationHelpers;\n descriptors: NativeStackDescriptorMap;\n navigationConfig: NativeStackNavigationConfig;\n screenProps: unknown;\n};\n\nfunction StackView({\n navigation,\n descriptors,\n navigationConfig,\n screenProps,\n}: StackViewProps) {\n const { routes } = navigation.state;\n const Screen = React.useContext(ScreenContext);\n return (\n <ScreenStack\n style={styles.scenes}\n onFinishTransitioning={() => onFinishTransitioning(navigation)}\n >\n {routes.map((route, index) => {\n const descriptor = descriptors[route.key];\n const { getComponent, options } = descriptor;\n const routeNavigationProp = descriptor.navigation;\n const { mode, transparentCard } = navigationConfig;\n const SceneComponent = getComponent();\n\n let stackPresentation: StackPresentationTypes = 'push';\n\n if (options.stackPresentation) {\n stackPresentation = options.stackPresentation;\n } else {\n // this shouldn't be used because we have a prop for that\n if (mode === 'modal' || mode === 'containedModal') {\n stackPresentation = mode;\n if (transparentCard || options.cardTransparent) {\n stackPresentation =\n mode === 'containedModal'\n ? 'containedTransparentModal'\n : 'transparentModal';\n }\n }\n }\n let stackAnimation = options.stackAnimation;\n if (options.animationEnabled === false) {\n stackAnimation = 'none';\n }\n\n const hasHeader =\n options.headerShown !== false &&\n navigationConfig?.headerMode !== 'none' &&\n options.header !== null;\n\n if (\n !didWarn &&\n stackPresentation !== 'push' &&\n options.headerShown !== undefined\n ) {\n didWarn = true;\n console.warn(\n 'Be aware that changing the visibility of header in modal on iOS will result in resetting the state of the screen.'\n );\n }\n\n const isHeaderInModal = isAndroid\n ? false\n : stackPresentation !== 'push' &&\n hasHeader &&\n options.headerShown === true;\n const isHeaderInPush = isAndroid\n ? hasHeader\n : stackPresentation === 'push' && hasHeader;\n\n return (\n <Screen\n key={`screen_${route.key}`}\n enabled\n isNativeStack\n style={[StyleSheet.absoluteFill, options.cardStyle]}\n stackAnimation={stackAnimation}\n customAnimationOnSwipe={options.customAnimationOnSwipe}\n stackPresentation={stackPresentation}\n replaceAnimation={\n options.replaceAnimation === undefined\n ? 'pop'\n : options.replaceAnimation\n }\n pointerEvents={\n index === navigation.state.routes.length - 1 ? 'auto' : 'none'\n }\n gestureEnabled={\n Platform.OS === 'android'\n ? false\n : options.gestureEnabled === undefined\n ? true\n : options.gestureEnabled\n }\n nativeBackButtonDismissalEnabled={\n options.nativeBackButtonDismissalEnabled\n }\n fullScreenSwipeEnabled={options.fullScreenSwipeEnabled}\n screenOrientation={options.screenOrientation}\n statusBarAnimation={options.statusBarAnimation}\n statusBarColor={options.statusBarColor}\n statusBarHidden={options.statusBarHidden}\n statusBarStyle={options.statusBarStyle}\n statusBarTranslucent={options.statusBarTranslucent}\n onAppear={() => onAppear(route, descriptor, routeNavigationProp)}\n onWillAppear={() => options?.onWillAppear?.()}\n onWillDisappear={() => options?.onWillDisappear?.()}\n onDisappear={() => options?.onDisappear?.()}\n onHeaderBackButtonClicked={() =>\n removeScene(route, 1, routeNavigationProp)\n }\n onDismissed={(e) =>\n removeScene(\n route,\n e.nativeEvent.dismissCount,\n routeNavigationProp\n )\n }\n >\n {isHeaderInPush &&\n renderHeaderConfig(index, route, descriptor, navigationConfig)}\n <MaybeNestedStack\n isHeaderInModal={isHeaderInModal}\n screenProps={screenProps}\n route={route}\n navigation={routeNavigationProp}\n SceneComponent={SceneComponent}\n index={index}\n descriptor={descriptor}\n navigationConfig={navigationConfig}\n />\n </Screen>\n );\n })}\n </ScreenStack>\n );\n}\n\nconst styles = StyleSheet.create({\n scenes: { flex: 1 },\n});\n\nfunction createStackNavigator(\n routeConfigMap: NavigationRouteConfigMap<\n NativeStackNavigationOptions,\n StackNavigationProp\n >,\n stackConfig: CreateNavigatorConfig<\n NativeStackNavigationConfig,\n NavigationStackRouterConfig,\n NativeStackNavigationOptions,\n StackNavigationProp\n > = {}\n): NavigationNavigator<\n Record<string, unknown>,\n NavigationProp<NavigationState>\n> {\n const router = StackRouter(routeConfigMap, stackConfig);\n\n // below we override getStateForAction method in order to add handling for\n // a custom native stack navigation action. The action REMOVE that we want to\n // add works in a similar way to POP, but it does not remove all the routes\n // that sit on top of the removed route. For example if we have three routes\n // [a,b,c] and call POP on b, then both b and c will go away. In case we\n // call REMOVE on b, only b will be removed from the stack and the resulting\n // state will be [a, c]\n const superGetStateForAction = router.getStateForAction;\n router.getStateForAction = (\n action: NavigationAction | NativeStackRemoveNavigationAction,\n state\n ) => {\n if (action.type === REMOVE_ACTION) {\n const { key, immediate, dismissCount } = action;\n let backRouteIndex = state.index;\n if (key) {\n const backRoute = state.routes.find(\n (route: NavigationRoute<NavigationParams>) => route.key === key\n );\n backRouteIndex = state.routes.indexOf(backRoute);\n }\n\n if (backRouteIndex > 0) {\n const newRoutes = [...state.routes];\n if (dismissCount > 1) {\n // when dismissing with iOS 14 native header back button, we can pop more than 1 screen at a time\n // and the `backRouteIndex` is the index of the previous screen. Since we are starting already\n // on the previous screen, we add 1 to start.\n newRoutes.splice(backRouteIndex - dismissCount + 1, dismissCount);\n } else {\n newRoutes.splice(backRouteIndex, 1);\n }\n\n return {\n ...state,\n routes: newRoutes,\n index: newRoutes.length - 1,\n isTransitioning: immediate !== true,\n };\n }\n }\n return superGetStateForAction(action as NavigationAction, state);\n };\n // Create a navigator with StackView as the view\n return createNavigator(StackView, router, stackConfig);\n}\n\nexport default createStackNavigator;\n"],"mappings":";;;;;;AAAA;AACA;AAQA;AAaA;AAkBA;AAA0D;AAAA;AAO1D,MAAMA,aAAa,GAAG,6BAA6B;AAEnD,MAAMC,SAAS,GAAGC,qBAAQ,CAACC,EAAE,KAAK,SAAS;AAE3C,IAAIC,OAAO,GAAGH,SAAS;AAEvB,SAASI,sBAAsB,CAACC,gBAAyB,EAAEC,KAAc,EAAE;EACzE,IAAI,OAAOD,gBAAgB,KAAK,UAAU,EAAE;IAC1C,OAAOA,gBAAgB,CAACC,KAAK,CAAC;EAChC;EACA,OAAOD,gBAAgB;AACzB;AAuEA,SAASE,WAAW,CAClBC,KAAwC,EACxCC,YAAoB,EACpBC,UAAkC,EAClC;EACAA,UAAU,CAACC,QAAQ,CAAC;IAClB;IACAC,IAAI,EAAEb,aAAa;IACnBc,SAAS,EAAE,IAAI;IACfC,GAAG,EAAEN,KAAK,CAACM,GAAG;IACdL;EACF,CAAC,CAAC;AACJ;AAEA,SAASM,QAAQ,CACfP,KAAwC,EACxCQ,UAAiC,EACjCN,UAAkC,EAClC;EAAA;EACA,uBAAAM,UAAU,CAACC,OAAO,iFAAlB,oBAAoBF,QAAQ,0DAA5B,+CAAgC;EAChCL,UAAU,CAACC,QAAQ,CACjBO,6BAAY,CAACC,kBAAkB,CAAC;IAC9BC,UAAU,EAAEZ,KAAK,CAACM,GAAG;IACrBA,GAAG,EAAEJ,UAAU,CAACW,KAAK,CAACP;EACxB,CAAC,CAAC,CACH;AACH;AAEA,SAASQ,qBAAqB,CAACZ,UAAkC,EAAE;EACjE,MAAM;IAAEa;EAAO,CAAC,GAAGb,UAAU,CAACW,KAAK;EACnC,MAAMG,SAAS,GAAG,CAAAD,MAAM,aAANA,MAAM,uBAANA,MAAM,CAAEE,MAAM,KAAIF,MAAM,CAACA,MAAM,CAACE,MAAM,GAAG,CAAC,CAAC;EAE7D,IAAID,SAAS,EAAE;IACbd,UAAU,CAACC,QAAQ,CACjBO,6BAAY,CAACC,kBAAkB,CAAC;MAC9BC,UAAU,EAAEI,SAAS,CAACV,GAAG;MACzBA,GAAG,EAAEJ,UAAU,CAACW,KAAK,CAACP;IACxB,CAAC,CAAC,CACH;EACH;AACF;AAEA,SAASY,kBAAkB,CACzBC,KAAa,EACbnB,KAAwC,EACxCQ,UAAiC,EACjCY,gBAA6C,EAC7C;EACA,MAAM;IAAEX;EAAQ,CAAC,GAAGD,UAAU;EAC9B,MAAM;IAAEa;EAAW,CAAC,GAAGD,gBAAgB;EAEvC,MAAM;IACJE,sBAAsB;IACtBC,SAAS;IACTC,qBAAqB;IACrBC,eAAe;IACfC,oBAAoB;IACpBC,sBAAsB;IACtBC,oBAAoB;IACpBC,gBAAgB;IAChBC,gBAAgB;IAChBC,gBAAgB;IAChBC,0BAA0B;IAC1BC,qBAAqB;IACrBC,WAAW;IACXC,WAAW;IACXC,eAAe;IACfC,gBAAgB;IAChBC,qBAAqB,GAAG,IAAI;IAC5BC,iBAAiB;IACjBC,UAAU;IACVC,UAAU;IACVC,oBAAoB;IACpBC,KAAK;IACLC;EACF,CAAC,GAAGnC,OAAO;EAEX,MAAMoC,KAAK,GAAG;IACZ1B,KAAK;IACLb,GAAG,EAAEN,KAAK,CAACM,GAAG;IACdN,KAAK;IACLQ;EACF,CAAC;EAED,MAAMsC,aAA2C,GAAG;IAClDxB,sBAAsB;IACtByB,SAAS,EAAEpB,sBAAsB,KAAK,KAAK,GAAG,EAAE,GAAGF,eAAe;IAClEuB,mBAAmB,EAAEtB,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEuB,UAAU;IACrDC,iBAAiB,EAAExB,oBAAoB,aAApBA,oBAAoB,uBAApBA,oBAAoB,CAAEyB,QAAQ;IACjDC,KAAK,EAAEhB,eAAe;IACtBb,SAAS;IACTC,qBAAqB;IACrB6B,eAAe,EAAEf,qBAAqB;IACtCgB,cAAc,EAAE1B,oBAAoB;IACpCY,UAAU,EAAEX,gBAAgB,IAAIW,UAAU;IAC1CC,UAAU,EAAEV,gBAAgB,IAAIU,UAAU;IAC1Cc,yBAAyB,EACvB,CAAAzB,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAE0B,eAAe,OACjC;IACAvB,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAEuB,eAAe;IACxCC,eAAe,EAAExB,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAEmB,KAAK;IAC7CM,oBAAoB,EAAEzB,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAEgB,UAAU;IACvDU,kBAAkB,EAAE1B,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAEkB,QAAQ;IACnDS,oBAAoB,EAAE3B,qBAAqB,aAArBA,qBAAqB,uBAArBA,qBAAqB,CAAE4B,UAAU;IACvDnB,oBAAoB,EAAEA,oBAAoB,IAAIV,0BAA0B;IACxEW,KAAK;IACLmB,UAAU,EAAE,CAAAzB,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEe,KAAK,KAAIhB,eAAe;IACtD2B,eAAe,EAAE1B,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEY,UAAU;IAC7Ce,aAAa,EAAE3B,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEc,QAAQ;IACzCc,eAAe,EAAE5B,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEwB,UAAU;IAC7CjB,WAAW,EAAEL,iBAAiB,IAAIK,WAAW,IAAI;EACnD,CAAC;EAED,MAAMsB,SAAS,GACbhC,WAAW,KAAK,KAAK,IAAIb,UAAU,KAAK,MAAM,IAAIZ,OAAO,CAAC0D,MAAM,KAAK,IAAI;EAC3E,IAAI,CAACD,SAAS,EAAE;IACd,oBAAO,6BAAC,2CAAuB,eAAKpB,aAAa;MAAE,MAAM;IAAA,GAAG;EAC9D;EAEA,IAAIX,WAAW,KAAKiC,SAAS,EAAE;IAC7BtB,aAAa,CAACU,eAAe,GAAGrB,WAAW,CAACqB,eAAe;IAC3DV,aAAa,CAACuB,UAAU,GAAGlC,WAAW,CAACkC,UAAU;EACnD;EAEA,MAAMC,QAAQ,GAAG,EAAE;EAEnB,IAAI7D,OAAO,CAAC8D,eAAe,EAAE;IAC3BD,QAAQ,CAACE,IAAI,eACX,6BAAC,oDAAgC;MAC/B,GAAG,EAAC,WAAW;MACf,MAAM,EAAE/D,OAAO,CAAC8D;IAAgB,EAChC,CACH;EACH;EAEA,IAAI9E,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAIe,OAAO,CAACgE,SAAS,EAAE;IAC9CH,QAAQ,CAACE,IAAI,eACX,6BAAC,kDAA8B,qBAC7B,6BAAC,6BAAS,EAAK/D,OAAO,CAACgE,SAAS,CAAI,CACL,CAClC;EACH;EAEA,IAAIhE,OAAO,CAACiE,UAAU,KAAKN,SAAS,EAAE;IACpCE,QAAQ,CAACE,IAAI,eACX,6BAAC,6CAAyB;MAAC,GAAG,EAAC;IAAM,GAClC5E,sBAAsB,CAACa,OAAO,CAACiE,UAAU,EAAE;MAAE7B;IAAM,CAAC,CAAC,CAC5B,CAC7B;EACH,CAAC,MAAM,IAAIpC,OAAO,CAACkE,eAAe,KAAKP,SAAS,EAAE;IAChD,MAAMQ,MAAM,GAAG,MAAM;MACnB;MACAC,qBAAqB,CAAC,MAAM;QAC1BrE,UAAU,CAACN,UAAU,CAAC0E,MAAM,CAACpE,UAAU,CAACF,GAAG,CAAC;MAC9C,CAAC,CAAC;IACJ,CAAC;IAEDgE,QAAQ,CAACE,IAAI,eACX,6BAAC,6CAAyB;MAAC,GAAG,EAAC;IAAM,gBACnC,6BAAC,sCAAgB;MACf,OAAO,EAAEI,MAAO;MAChB,iBAAiB,EAAEnE,OAAO,CAACqE,uBAAwB;MACnD,SAAS,EAAErE,OAAO,CAAC2B,eAAgB;MACnC,SAAS,EAAE3B,OAAO,CAACkE,eAAgB;MACnC,KAAK,EAAElE,OAAO,CAACsE,eAAgB;MAC/B,cAAc,EAAEtE,OAAO,CAACuE,wBAAyB;MACjD,YAAY,EAAEvE,OAAO,CAACwE,gBAAiB;MACvC,UAAU,EAAExE,OAAO,CAACiB,oBAAqB;MACzC,WAAW,EAAEjB,OAAO,CAACyE;MACrB;MAAA;MACA,KAAK,EAAEzE,OAAO,CAACsE,eAAgB;MAC/B,cAAc,EAAEtE,OAAO,CAACuE,wBAAyB;MACjD,gBAAgB,EAAEvE,OAAO,CAACwE,gBAAiB;MAC3C,UAAU,EAAExE,OAAO,CAACiB,oBAAqB;MACzC,YAAY,EAAEjB,OAAO,CAACyE,YAAa;MACnC,KAAK,EAAErC;IAAM,EACb,CACwB,CAC7B;EACH;EAEA,IAAIpC,OAAO,CAAC0E,WAAW,EAAE;IACvB,IAAIxC,KAAK,KAAKyB,SAAS,IAAI,OAAO3D,OAAO,CAAC0E,WAAW,KAAK,QAAQ,EAAE;MAClErC,aAAa,CAACH,KAAK,GAAGlC,OAAO,CAAC0E,WAAW;IAC3C,CAAC,MAAM;MACLb,QAAQ,CAACE,IAAI,eACX,6BAAC,+CAA2B;QAAC,GAAG,EAAC;MAAQ,GACtC5E,sBAAsB,CAACa,OAAO,CAAC0E,WAAW,EAAE;QAAEtC;MAAM,CAAC,CAAC,CAC3B,CAC/B;IACH;EACF;EAEA,IAAIpC,OAAO,CAAC2E,WAAW,EAAE;IACvBd,QAAQ,CAACE,IAAI,eACX,6BAAC,8CAA0B;MAAC,GAAG,EAAC;IAAO,GACpC5E,sBAAsB,CAACa,OAAO,CAAC2E,WAAW,EAAE;MAAEvC;IAAM,CAAC,CAAC,CAC5B,CAC9B;EACH;EAEA,IAAIyB,QAAQ,CAACrD,MAAM,GAAG,CAAC,EAAE;IACvB6B,aAAa,CAACwB,QAAQ,GAAGA,QAAQ;EACnC;EAEA,oBAAO,6BAAC,2CAAuB,EAAKxB,aAAa,CAAI;AACvD;AAEA,MAAMuC,gBAAgB,GAAG,QAqBnB;EAAA,IArBoB;IACxBC,eAAe;IACfC,WAAW;IACXvF,KAAK;IACLE,UAAU;IACVsF,cAAc;IACdrE,KAAK;IACLX,UAAU;IACVY;EAaF,CAAC;EACC,MAAMqE,MAAM,GAAGC,cAAK,CAACC,UAAU,CAACC,iCAAa,CAAC;EAE9C,IAAIN,eAAe,EAAE;IACnB,oBACE,6BAAC,+BAAW;MAAC,KAAK,EAAEO,MAAM,CAACC;IAAO,gBAChC,6BAAC,MAAM;MAAC,KAAK,EAAEC,uBAAU,CAACC,YAAa;MAAC,OAAO;MAAC,aAAa;IAAA,GAC1D9E,kBAAkB,CAACC,KAAK,EAAEnB,KAAK,EAAEQ,UAAU,EAAEY,gBAAgB,CAAC,eAC/D,6BAAC,0BAAS;MACR,WAAW,EAAEmE,WAAY;MACzB,UAAU,EAAErF,UAAW;MACvB,SAAS,EAAEsF;IAAe,EAC1B,CACK,CACG;EAElB;EACA,oBACE,6BAAC,0BAAS;IACR,WAAW,EAAED,WAAY;IACzB,UAAU,EAAErF,UAAW;IACvB,SAAS,EAAEsF;EAAe,EAC1B;AAEN,CAAC;AASD,SAASS,SAAS,QAKC;EAAA,IALA;IACjB/F,UAAU;IACVgG,WAAW;IACX9E,gBAAgB;IAChBmE;EACc,CAAC;EACf,MAAM;IAAExE;EAAO,CAAC,GAAGb,UAAU,CAACW,KAAK;EACnC,MAAM4E,MAAM,GAAGC,cAAK,CAACC,UAAU,CAACC,iCAAa,CAAC;EAC9C,oBACE,6BAAC,+BAAW;IACV,KAAK,EAAEC,MAAM,CAACC,MAAO;IACrB,qBAAqB,EAAE,MAAMhF,qBAAqB,CAACZ,UAAU;EAAE,GAE9Da,MAAM,CAACoF,GAAG,CAAC,CAACnG,KAAK,EAAEmB,KAAK,KAAK;IAC5B,MAAMX,UAAU,GAAG0F,WAAW,CAAClG,KAAK,CAACM,GAAG,CAAC;IACzC,MAAM;MAAE8F,YAAY;MAAE3F;IAAQ,CAAC,GAAGD,UAAU;IAC5C,MAAM6F,mBAAmB,GAAG7F,UAAU,CAACN,UAAU;IACjD,MAAM;MAAEoG,IAAI;MAAEC;IAAgB,CAAC,GAAGnF,gBAAgB;IAClD,MAAMoE,cAAc,GAAGY,YAAY,EAAE;IAErC,IAAII,iBAAyC,GAAG,MAAM;IAEtD,IAAI/F,OAAO,CAAC+F,iBAAiB,EAAE;MAC7BA,iBAAiB,GAAG/F,OAAO,CAAC+F,iBAAiB;IAC/C,CAAC,MAAM;MACL;MACA,IAAIF,IAAI,KAAK,OAAO,IAAIA,IAAI,KAAK,gBAAgB,EAAE;QACjDE,iBAAiB,GAAGF,IAAI;QACxB,IAAIC,eAAe,IAAI9F,OAAO,CAACgG,eAAe,EAAE;UAC9CD,iBAAiB,GACfF,IAAI,KAAK,gBAAgB,GACrB,2BAA2B,GAC3B,kBAAkB;QAC1B;MACF;IACF;IACA,IAAII,cAAc,GAAGjG,OAAO,CAACiG,cAAc;IAC3C,IAAIjG,OAAO,CAACkG,gBAAgB,KAAK,KAAK,EAAE;MACtCD,cAAc,GAAG,MAAM;IACzB;IAEA,MAAMxC,SAAS,GACbzD,OAAO,CAACyB,WAAW,KAAK,KAAK,IAC7B,CAAAd,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEC,UAAU,MAAK,MAAM,IACvCZ,OAAO,CAAC0D,MAAM,KAAK,IAAI;IAEzB,IACE,CAACxE,OAAO,IACR6G,iBAAiB,KAAK,MAAM,IAC5B/F,OAAO,CAACyB,WAAW,KAAKkC,SAAS,EACjC;MACAzE,OAAO,GAAG,IAAI;MACdiH,OAAO,CAACC,IAAI,CACV,mHAAmH,CACpH;IACH;IAEA,MAAMvB,eAAe,GAAG9F,SAAS,GAC7B,KAAK,GACLgH,iBAAiB,KAAK,MAAM,IAC5BtC,SAAS,IACTzD,OAAO,CAACyB,WAAW,KAAK,IAAI;IAChC,MAAM4E,cAAc,GAAGtH,SAAS,GAC5B0E,SAAS,GACTsC,iBAAiB,KAAK,MAAM,IAAItC,SAAS;IAE7C,oBACE,6BAAC,MAAM;MACL,GAAG,EAAG,UAASlE,KAAK,CAACM,GAAI,EAAE;MAC3B,OAAO;MACP,aAAa;MACb,KAAK,EAAE,CAACyF,uBAAU,CAACC,YAAY,EAAEvF,OAAO,CAACsG,SAAS,CAAE;MACpD,cAAc,EAAEL,cAAe;MAC/B,sBAAsB,EAAEjG,OAAO,CAACuG,sBAAuB;MACvD,iBAAiB,EAAER,iBAAkB;MACrC,gBAAgB,EACd/F,OAAO,CAACwG,gBAAgB,KAAK7C,SAAS,GAClC,KAAK,GACL3D,OAAO,CAACwG,gBACb;MACD,aAAa,EACX9F,KAAK,KAAKjB,UAAU,CAACW,KAAK,CAACE,MAAM,CAACE,MAAM,GAAG,CAAC,GAAG,MAAM,GAAG,MACzD;MACD,cAAc,EACZxB,qBAAQ,CAACC,EAAE,KAAK,SAAS,GACrB,KAAK,GACLe,OAAO,CAACyG,cAAc,KAAK9C,SAAS,GACpC,IAAI,GACJ3D,OAAO,CAACyG,cACb;MACD,gCAAgC,EAC9BzG,OAAO,CAAC0G,gCACT;MACD,sBAAsB,EAAE1G,OAAO,CAAC2G,sBAAuB;MACvD,iBAAiB,EAAE3G,OAAO,CAAC4G,iBAAkB;MAC7C,kBAAkB,EAAE5G,OAAO,CAAC6G,kBAAmB;MAC/C,cAAc,EAAE7G,OAAO,CAAC8G,cAAe;MACvC,eAAe,EAAE9G,OAAO,CAAC+G,eAAgB;MACzC,cAAc,EAAE/G,OAAO,CAACgH,cAAe;MACvC,oBAAoB,EAAEhH,OAAO,CAACiH,oBAAqB;MACnD,QAAQ,EAAE,MAAMnH,QAAQ,CAACP,KAAK,EAAEQ,UAAU,EAAE6F,mBAAmB,CAAE;MACjE,YAAY,EAAE;QAAA;QAAA,OAAM5F,OAAO,aAAPA,OAAO,gDAAPA,OAAO,CAAEkH,YAAY,0DAArB,2BAAAlH,OAAO,CAAkB;MAAA,CAAC;MAC9C,eAAe,EAAE;QAAA;QAAA,OAAMA,OAAO,aAAPA,OAAO,gDAAPA,OAAO,CAAEmH,eAAe,0DAAxB,2BAAAnH,OAAO,CAAqB;MAAA,CAAC;MACpD,WAAW,EAAE;QAAA;QAAA,OAAMA,OAAO,aAAPA,OAAO,+CAAPA,OAAO,CAAEoH,WAAW,yDAApB,0BAAApH,OAAO,CAAiB;MAAA,CAAC;MAC5C,yBAAyB,EAAE,MACzBV,WAAW,CAACC,KAAK,EAAE,CAAC,EAAEqG,mBAAmB,CAC1C;MACD,WAAW,EAAGyB,CAAC,IACb/H,WAAW,CACTC,KAAK,EACL8H,CAAC,CAACC,WAAW,CAAC9H,YAAY,EAC1BoG,mBAAmB;IAEtB,GAEAS,cAAc,IACb5F,kBAAkB,CAACC,KAAK,EAAEnB,KAAK,EAAEQ,UAAU,EAAEY,gBAAgB,CAAC,eAChE,6BAAC,gBAAgB;MACf,eAAe,EAAEkE,eAAgB;MACjC,WAAW,EAAEC,WAAY;MACzB,KAAK,EAAEvF,KAAM;MACb,UAAU,EAAEqG,mBAAoB;MAChC,cAAc,EAAEb,cAAe;MAC/B,KAAK,EAAErE,KAAM;MACb,UAAU,EAAEX,UAAW;MACvB,gBAAgB,EAAEY;IAAiB,EACnC,CACK;EAEb,CAAC,CAAC,CACU;AAElB;AAEA,MAAMyE,MAAM,GAAGE,uBAAU,CAACiC,MAAM,CAAC;EAC/BlC,MAAM,EAAE;IAAEmC,IAAI,EAAE;EAAE;AACpB,CAAC,CAAC;AAEF,SAASC,oBAAoB,CAC3BC,cAGC,EAUD;EAAA,IATAC,WAKC,uEAAG,CAAC,CAAC;EAKN,MAAMC,MAAM,GAAG,IAAAC,4BAAW,EAACH,cAAc,EAAEC,WAAW,CAAC;;EAEvD;EACA;EACA;EACA;EACA;EACA;EACA;EACA,MAAMG,sBAAsB,GAAGF,MAAM,CAACG,iBAAiB;EACvDH,MAAM,CAACG,iBAAiB,GAAG,CACzBC,MAA4D,EAC5D5H,KAAK,KACF;IACH,IAAI4H,MAAM,CAACrI,IAAI,KAAKb,aAAa,EAAE;MACjC,MAAM;QAAEe,GAAG;QAAED,SAAS;QAAEJ;MAAa,CAAC,GAAGwI,MAAM;MAC/C,IAAIC,cAAc,GAAG7H,KAAK,CAACM,KAAK;MAChC,IAAIb,GAAG,EAAE;QACP,MAAMqI,SAAS,GAAG9H,KAAK,CAACE,MAAM,CAAC6H,IAAI,CAChC5I,KAAwC,IAAKA,KAAK,CAACM,GAAG,KAAKA,GAAG,CAChE;QACDoI,cAAc,GAAG7H,KAAK,CAACE,MAAM,CAAC8H,OAAO,CAACF,SAAS,CAAC;MAClD;MAEA,IAAID,cAAc,GAAG,CAAC,EAAE;QACtB,MAAMI,SAAS,GAAG,CAAC,GAAGjI,KAAK,CAACE,MAAM,CAAC;QACnC,IAAId,YAAY,GAAG,CAAC,EAAE;UACpB;UACA;UACA;UACA6I,SAAS,CAACC,MAAM,CAACL,cAAc,GAAGzI,YAAY,GAAG,CAAC,EAAEA,YAAY,CAAC;QACnE,CAAC,MAAM;UACL6I,SAAS,CAACC,MAAM,CAACL,cAAc,EAAE,CAAC,CAAC;QACrC;QAEA,OAAO;UACL,GAAG7H,KAAK;UACRE,MAAM,EAAE+H,SAAS;UACjB3H,KAAK,EAAE2H,SAAS,CAAC7H,MAAM,GAAG,CAAC;UAC3B+H,eAAe,EAAE3I,SAAS,KAAK;QACjC,CAAC;MACH;IACF;IACA,OAAOkI,sBAAsB,CAACE,MAAM,EAAsB5H,KAAK,CAAC;EAClE,CAAC;EACD;EACA,OAAO,IAAAoI,gCAAe,EAAChD,SAAS,EAAEoC,MAAM,EAAED,WAAW,CAAC;AACxD;AAAC,eAEcF,oBAAoB;AAAA"}
|