react-native-screen-transitions 3.0.0-rc.2 → 3.0.0-rc.4
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 +421 -371
- package/lib/commonjs/blank-stack/components/{Overlay.js → overlay.js} +7 -5
- package/lib/commonjs/blank-stack/components/overlay.js.map +1 -0
- package/lib/commonjs/blank-stack/components/{Screens.js → screens.js} +20 -17
- package/lib/commonjs/blank-stack/components/screens.js.map +1 -0
- package/lib/commonjs/blank-stack/components/stack-view.js +101 -0
- package/lib/commonjs/blank-stack/components/stack-view.js.map +1 -0
- package/lib/commonjs/blank-stack/index.js +1 -8
- package/lib/commonjs/blank-stack/index.js.map +1 -1
- package/lib/commonjs/blank-stack/navigators/{createBlankStackNavigator.js → create-blank-stack-navigator.js} +3 -3
- package/lib/commonjs/blank-stack/navigators/create-blank-stack-navigator.js.map +1 -0
- package/lib/commonjs/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.js +1 -11
- package/lib/commonjs/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.js.map +1 -1
- package/lib/commonjs/blank-stack/utils/with-stack-navigation/hooks/use-closing-route-keys.js +1 -12
- package/lib/commonjs/blank-stack/utils/with-stack-navigation/hooks/use-closing-route-keys.js.map +1 -1
- package/lib/commonjs/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.js.map +1 -1
- package/lib/commonjs/blank-stack/utils/with-stack-navigation/index.js +49 -55
- package/lib/commonjs/blank-stack/utils/with-stack-navigation/index.js.map +1 -1
- package/lib/commonjs/blank-stack/utils/with-stack-navigation/{_types.js → types.js} +1 -1
- package/lib/commonjs/blank-stack/utils/with-stack-navigation/types.js.map +1 -0
- package/lib/commonjs/native-stack/views/NativeStackView.native.js +110 -103
- package/lib/commonjs/native-stack/views/NativeStackView.native.js.map +1 -1
- package/lib/commonjs/shared/components/controllers/blank-stack-lifecycle.js +72 -0
- package/lib/commonjs/shared/components/controllers/blank-stack-lifecycle.js.map +1 -0
- package/lib/commonjs/shared/components/controllers/native-stack-lifecycle.js +79 -0
- package/lib/commonjs/shared/components/controllers/native-stack-lifecycle.js.map +1 -0
- package/lib/commonjs/shared/hooks/animation/use-screen-animation.js +49 -23
- package/lib/commonjs/shared/hooks/animation/use-screen-animation.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js +11 -6
- package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js +7 -7
- package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
- package/lib/commonjs/shared/providers/flags.provider.js +25 -0
- package/lib/commonjs/shared/providers/flags.provider.js.map +1 -0
- package/lib/commonjs/shared/providers/gestures.provider.js +32 -5
- package/lib/commonjs/shared/providers/gestures.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/register-bounds.provider.js +72 -45
- package/lib/commonjs/shared/providers/register-bounds.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/routes.provider.js +48 -0
- package/lib/commonjs/shared/providers/routes.provider.js.map +1 -0
- package/lib/commonjs/shared/providers/screen-transition.provider.js.map +1 -1
- package/lib/commonjs/shared/stores/bounds.store.js +91 -47
- package/lib/commonjs/shared/stores/bounds.store.js.map +1 -1
- package/lib/commonjs/shared/types/state.types.js +9 -0
- package/lib/commonjs/shared/types/state.types.js.map +1 -0
- package/lib/commonjs/shared/utils/animation/compute-stack-progress.js +20 -0
- package/lib/commonjs/shared/utils/animation/compute-stack-progress.js.map +1 -0
- package/lib/commonjs/shared/utils/animation/derivations.js +1 -1
- package/lib/commonjs/shared/utils/animation/start-screen-transition.js +11 -11
- package/lib/commonjs/shared/utils/animation/start-screen-transition.js.map +1 -1
- package/lib/commonjs/shared/utils/bounds/helpers/is-bounds-equal.js +1 -1
- package/lib/commonjs/shared/utils/bounds/helpers/is-bounds-equal.js.map +1 -1
- package/lib/commonjs/shared/utils/bounds/index.js +4 -5
- package/lib/commonjs/shared/utils/bounds/index.js.map +1 -1
- package/lib/commonjs/shared/utils/create-provider.js +20 -1
- package/lib/commonjs/shared/utils/create-provider.js.map +1 -1
- package/lib/commonjs/shared/utils/reset-stores-for-screen.js +2 -0
- package/lib/commonjs/shared/utils/reset-stores-for-screen.js.map +1 -1
- package/lib/module/blank-stack/components/{Overlay.js → overlay.js} +7 -5
- package/lib/module/blank-stack/components/overlay.js.map +1 -0
- package/lib/module/blank-stack/components/screens.js +61 -0
- package/lib/module/blank-stack/components/screens.js.map +1 -0
- package/lib/module/blank-stack/components/stack-view.js +96 -0
- package/lib/module/blank-stack/components/stack-view.js.map +1 -0
- package/lib/module/blank-stack/index.js +1 -2
- package/lib/module/blank-stack/index.js.map +1 -1
- package/lib/module/blank-stack/navigators/{createBlankStackNavigator.js → create-blank-stack-navigator.js} +2 -2
- package/lib/module/blank-stack/navigators/create-blank-stack-navigator.js.map +1 -0
- package/lib/module/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.js +1 -11
- package/lib/module/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.js.map +1 -1
- package/lib/module/blank-stack/utils/with-stack-navigation/hooks/use-closing-route-keys.js +1 -12
- package/lib/module/blank-stack/utils/with-stack-navigation/hooks/use-closing-route-keys.js.map +1 -1
- package/lib/module/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.js.map +1 -1
- package/lib/module/blank-stack/utils/with-stack-navigation/index.js +48 -54
- package/lib/module/blank-stack/utils/with-stack-navigation/index.js.map +1 -1
- package/lib/module/blank-stack/utils/with-stack-navigation/types.js +4 -0
- package/lib/module/blank-stack/utils/with-stack-navigation/types.js.map +1 -0
- package/lib/module/native-stack/views/NativeStackView.native.js +109 -102
- package/lib/module/native-stack/views/NativeStackView.native.js.map +1 -1
- package/lib/module/shared/components/controllers/blank-stack-lifecycle.js +66 -0
- package/lib/module/shared/components/controllers/blank-stack-lifecycle.js.map +1 -0
- package/lib/module/shared/components/controllers/native-stack-lifecycle.js +73 -0
- package/lib/module/shared/components/controllers/native-stack-lifecycle.js.map +1 -0
- package/lib/module/shared/hooks/animation/use-screen-animation.js +49 -23
- package/lib/module/shared/hooks/animation/use-screen-animation.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-build-gestures.js +11 -6
- package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-scroll-registry.js +7 -7
- package/lib/module/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
- package/lib/module/shared/providers/flags.provider.js +19 -0
- package/lib/module/shared/providers/flags.provider.js.map +1 -0
- package/lib/module/shared/providers/gestures.provider.js +31 -4
- package/lib/module/shared/providers/gestures.provider.js.map +1 -1
- package/lib/module/shared/providers/register-bounds.provider.js +72 -45
- package/lib/module/shared/providers/register-bounds.provider.js.map +1 -1
- package/lib/module/shared/providers/routes.provider.js +42 -0
- package/lib/module/shared/providers/routes.provider.js.map +1 -0
- package/lib/module/shared/providers/screen-transition.provider.js.map +1 -1
- package/lib/module/shared/stores/bounds.store.js +91 -47
- package/lib/module/shared/stores/bounds.store.js.map +1 -1
- package/lib/module/shared/types/state.types.js +5 -0
- package/lib/module/shared/types/state.types.js.map +1 -0
- package/lib/module/shared/utils/animation/compute-stack-progress.js +15 -0
- package/lib/module/shared/utils/animation/compute-stack-progress.js.map +1 -0
- package/lib/module/shared/utils/animation/derivations.js +1 -1
- package/lib/module/shared/utils/animation/start-screen-transition.js +11 -11
- package/lib/module/shared/utils/animation/start-screen-transition.js.map +1 -1
- package/lib/module/shared/utils/bounds/helpers/is-bounds-equal.js +1 -1
- package/lib/module/shared/utils/bounds/helpers/is-bounds-equal.js.map +1 -1
- package/lib/module/shared/utils/bounds/index.js +4 -5
- package/lib/module/shared/utils/bounds/index.js.map +1 -1
- package/lib/module/shared/utils/create-provider.js +20 -1
- package/lib/module/shared/utils/create-provider.js.map +1 -1
- package/lib/module/shared/utils/reset-stores-for-screen.js +2 -0
- package/lib/module/shared/utils/reset-stores-for-screen.js.map +1 -1
- package/lib/typescript/blank-stack/components/{Overlay.d.ts → overlay.d.ts} +1 -1
- package/lib/typescript/blank-stack/components/overlay.d.ts.map +1 -0
- package/lib/typescript/blank-stack/components/{Screens.d.ts → screens.d.ts} +1 -1
- package/lib/typescript/blank-stack/components/screens.d.ts.map +1 -0
- package/lib/typescript/blank-stack/components/stack-view.d.ts +3 -0
- package/lib/typescript/blank-stack/components/stack-view.d.ts.map +1 -0
- package/lib/typescript/blank-stack/index.d.ts +1 -2
- package/lib/typescript/blank-stack/index.d.ts.map +1 -1
- package/lib/typescript/blank-stack/navigators/{createBlankStackNavigator.d.ts → create-blank-stack-navigator.d.ts} +1 -1
- package/lib/typescript/blank-stack/navigators/create-blank-stack-navigator.d.ts.map +1 -0
- package/lib/typescript/blank-stack/types.d.ts +5 -39
- package/lib/typescript/blank-stack/types.d.ts.map +1 -1
- package/lib/typescript/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.d.ts.map +1 -1
- package/lib/typescript/blank-stack/utils/with-stack-navigation/hooks/use-closing-route-keys.d.ts.map +1 -1
- package/lib/typescript/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.d.ts +1 -1
- package/lib/typescript/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.d.ts.map +1 -1
- package/lib/typescript/blank-stack/utils/with-stack-navigation/index.d.ts +3 -5
- package/lib/typescript/blank-stack/utils/with-stack-navigation/index.d.ts.map +1 -1
- package/lib/typescript/blank-stack/utils/with-stack-navigation/{_types.d.ts → types.d.ts} +1 -1
- package/lib/typescript/blank-stack/utils/with-stack-navigation/types.d.ts.map +1 -0
- package/lib/typescript/native-stack/views/NativeStackView.native.d.ts.map +1 -1
- package/lib/typescript/shared/components/controllers/blank-stack-lifecycle.d.ts +8 -0
- package/lib/typescript/shared/components/controllers/blank-stack-lifecycle.d.ts.map +1 -0
- package/lib/typescript/shared/components/controllers/native-stack-lifecycle.d.ts +8 -0
- package/lib/typescript/shared/components/controllers/native-stack-lifecycle.d.ts.map +1 -0
- package/lib/typescript/shared/hooks/animation/use-screen-animation.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts +2 -2
- package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts.map +1 -1
- package/lib/typescript/shared/index.d.ts +20 -20
- package/lib/typescript/shared/providers/flags.provider.d.ts +10 -0
- package/lib/typescript/shared/providers/flags.provider.d.ts.map +1 -0
- package/lib/typescript/shared/providers/gestures.provider.d.ts +8 -2
- package/lib/typescript/shared/providers/gestures.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/register-bounds.provider.d.ts.map +1 -1
- package/lib/typescript/shared/providers/routes.provider.d.ts +19 -0
- package/lib/typescript/shared/providers/routes.provider.d.ts.map +1 -0
- package/lib/typescript/shared/providers/screen-transition.provider.d.ts +2 -2
- package/lib/typescript/shared/providers/screen-transition.provider.d.ts.map +1 -1
- package/lib/typescript/shared/stores/bounds.store.d.ts +23 -11
- package/lib/typescript/shared/stores/bounds.store.d.ts.map +1 -1
- package/lib/typescript/shared/types/animation.types.d.ts +12 -0
- package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
- package/lib/typescript/shared/types/bounds.types.d.ts +2 -2
- package/lib/typescript/shared/types/bounds.types.d.ts.map +1 -1
- package/lib/typescript/shared/types/state.types.d.ts +3 -0
- package/lib/typescript/shared/types/state.types.d.ts.map +1 -0
- package/lib/typescript/shared/utils/animation/compute-stack-progress.d.ts +3 -0
- package/lib/typescript/shared/utils/animation/compute-stack-progress.d.ts.map +1 -0
- package/lib/typescript/shared/utils/animation/start-screen-transition.d.ts.map +1 -1
- package/lib/typescript/shared/utils/bounds/index.d.ts.map +1 -1
- package/lib/typescript/shared/utils/create-provider.d.ts +2 -2
- package/lib/typescript/shared/utils/create-provider.d.ts.map +1 -1
- package/lib/typescript/shared/utils/reset-stores-for-screen.d.ts.map +1 -1
- package/package.json +2 -1
- package/src/blank-stack/components/{Overlay.tsx → overlay.tsx} +4 -3
- package/src/blank-stack/components/{Screens.tsx → screens.tsx} +24 -20
- package/src/blank-stack/components/stack-view.tsx +115 -0
- package/src/blank-stack/index.ts +1 -2
- package/src/blank-stack/navigators/{createBlankStackNavigator.tsx → create-blank-stack-navigator.tsx} +1 -1
- package/src/blank-stack/types.ts +6 -31
- package/src/blank-stack/utils/with-stack-navigation/helpers/compose-descriptors.ts +1 -8
- package/src/blank-stack/utils/with-stack-navigation/hooks/use-closing-route-keys.tsx +1 -12
- package/src/blank-stack/utils/with-stack-navigation/hooks/use-stack-navigation-state.tsx +1 -1
- package/src/blank-stack/utils/with-stack-navigation/index.tsx +42 -62
- package/src/native-stack/views/NativeStackView.native.tsx +121 -112
- package/src/shared/__tests__/bounds.store.test.ts +376 -167
- package/src/shared/__tests__/determine-dismissal.test.ts +2 -12
- package/src/shared/__tests__/geometry.test.ts +1 -1
- package/src/shared/__tests__/gesture.velocity.test.ts +2 -10
- package/src/shared/components/controllers/blank-stack-lifecycle.tsx +70 -0
- package/src/shared/components/controllers/native-stack-lifecycle.tsx +87 -0
- package/src/shared/hooks/animation/use-screen-animation.tsx +61 -30
- package/src/shared/hooks/gestures/use-build-gestures.tsx +16 -7
- package/src/shared/hooks/gestures/use-scroll-registry.tsx +7 -7
- package/src/shared/providers/flags.provider.tsx +21 -0
- package/src/shared/providers/gestures.provider.tsx +34 -5
- package/src/shared/providers/register-bounds.provider.tsx +86 -54
- package/src/shared/providers/routes.provider.tsx +54 -0
- package/src/shared/providers/screen-transition.provider.tsx +2 -2
- package/src/shared/stores/bounds.store.ts +90 -54
- package/src/shared/types/animation.types.ts +13 -0
- package/src/shared/types/bounds.types.ts +2 -2
- package/src/shared/types/state.types.ts +2 -0
- package/src/shared/utils/animation/compute-stack-progress.ts +16 -0
- package/src/shared/utils/animation/derivations.ts +1 -1
- package/src/shared/utils/animation/start-screen-transition.ts +13 -10
- package/src/shared/utils/bounds/helpers/is-bounds-equal.ts +1 -1
- package/src/shared/utils/bounds/index.ts +7 -10
- package/src/shared/utils/create-provider.tsx +35 -1
- package/src/shared/utils/reset-stores-for-screen.ts +2 -0
- package/lib/commonjs/blank-stack/components/Overlay.js.map +0 -1
- package/lib/commonjs/blank-stack/components/Screens.js.map +0 -1
- package/lib/commonjs/blank-stack/components/StackView.js +0 -93
- package/lib/commonjs/blank-stack/components/StackView.js.map +0 -1
- package/lib/commonjs/blank-stack/navigators/createBlankStackNavigator.js.map +0 -1
- package/lib/commonjs/blank-stack/utils/with-stack-navigation/_types.js.map +0 -1
- package/lib/commonjs/shared/components/controllers/screen-lifecycle.js +0 -142
- package/lib/commonjs/shared/components/controllers/screen-lifecycle.js.map +0 -1
- package/lib/commonjs/shared/hooks/gestures/use-parent-gesture-registry.js +0 -28
- package/lib/commonjs/shared/hooks/gestures/use-parent-gesture-registry.js.map +0 -1
- package/lib/module/blank-stack/components/Overlay.js.map +0 -1
- package/lib/module/blank-stack/components/Screens.js +0 -58
- package/lib/module/blank-stack/components/Screens.js.map +0 -1
- package/lib/module/blank-stack/components/StackView.js +0 -88
- package/lib/module/blank-stack/components/StackView.js.map +0 -1
- package/lib/module/blank-stack/navigators/createBlankStackNavigator.js.map +0 -1
- package/lib/module/blank-stack/utils/with-stack-navigation/_types.js +0 -4
- package/lib/module/blank-stack/utils/with-stack-navigation/_types.js.map +0 -1
- package/lib/module/shared/components/controllers/screen-lifecycle.js +0 -136
- package/lib/module/shared/components/controllers/screen-lifecycle.js.map +0 -1
- package/lib/module/shared/hooks/gestures/use-parent-gesture-registry.js +0 -23
- package/lib/module/shared/hooks/gestures/use-parent-gesture-registry.js.map +0 -1
- package/lib/typescript/blank-stack/components/Overlay.d.ts.map +0 -1
- package/lib/typescript/blank-stack/components/Screens.d.ts.map +0 -1
- package/lib/typescript/blank-stack/components/StackView.d.ts +0 -2
- package/lib/typescript/blank-stack/components/StackView.d.ts.map +0 -1
- package/lib/typescript/blank-stack/navigators/createBlankStackNavigator.d.ts.map +0 -1
- package/lib/typescript/blank-stack/utils/with-stack-navigation/_types.d.ts.map +0 -1
- package/lib/typescript/shared/components/controllers/screen-lifecycle.d.ts +0 -12
- package/lib/typescript/shared/components/controllers/screen-lifecycle.d.ts.map +0 -1
- package/lib/typescript/shared/hooks/gestures/use-parent-gesture-registry.d.ts +0 -6
- package/lib/typescript/shared/hooks/gestures/use-parent-gesture-registry.d.ts.map +0 -1
- package/src/blank-stack/components/StackView.tsx +0 -108
- package/src/shared/components/controllers/screen-lifecycle.tsx +0 -154
- package/src/shared/hooks/gestures/use-parent-gesture-registry.tsx +0 -18
- /package/src/blank-stack/utils/with-stack-navigation/{_types.ts → types.ts} +0 -0
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { SafeAreaProviderCompat } from "@react-navigation/elements";
|
|
4
|
-
import { NavigationContext, NavigationRouteContext } from "@react-navigation/native";
|
|
5
|
-
import * as React from "react";
|
|
6
|
-
import { StyleSheet } from "react-native";
|
|
7
|
-
import { GestureHandlerRootView } from "react-native-gesture-handler";
|
|
8
|
-
import { ScreenContainer } from "react-native-screens";
|
|
9
|
-
import { BlankStackScreenLifecycleController } from "../../shared/components/controllers/screen-lifecycle";
|
|
10
|
-
import { ScreenTransitionProvider } from "../../shared/providers/screen-transition.provider";
|
|
11
|
-
import { withStackNavigationProvider } from "../utils/with-stack-navigation";
|
|
12
|
-
import { Overlay } from "./Overlay";
|
|
13
|
-
import { Screen } from "./Screens";
|
|
14
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
|
-
function isFabric() {
|
|
16
|
-
return "nativeFabricUIManager" in global;
|
|
17
|
-
}
|
|
18
|
-
const SceneView = /*#__PURE__*/React.memo(({
|
|
19
|
-
descriptor
|
|
20
|
-
}) => {
|
|
21
|
-
const {
|
|
22
|
-
route,
|
|
23
|
-
navigation,
|
|
24
|
-
render
|
|
25
|
-
} = descriptor;
|
|
26
|
-
return /*#__PURE__*/_jsx(NavigationContext.Provider, {
|
|
27
|
-
value: navigation,
|
|
28
|
-
children: /*#__PURE__*/_jsxs(NavigationRouteContext.Provider, {
|
|
29
|
-
value: route,
|
|
30
|
-
children: [descriptor.options.overlayMode === "screen" && /*#__PURE__*/_jsx(Overlay.Screen, {}), render()]
|
|
31
|
-
})
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
export const StackView = withStackNavigationProvider(({
|
|
35
|
-
activeScreensLimit,
|
|
36
|
-
descriptors,
|
|
37
|
-
focusedIndex,
|
|
38
|
-
routes,
|
|
39
|
-
scenes,
|
|
40
|
-
shouldShowFloatOverlay
|
|
41
|
-
}) => {
|
|
42
|
-
return /*#__PURE__*/_jsx(GestureHandlerRootView, {
|
|
43
|
-
children: /*#__PURE__*/_jsxs(SafeAreaProviderCompat, {
|
|
44
|
-
children: [shouldShowFloatOverlay ? /*#__PURE__*/_jsx(Overlay.Float, {}) : null, /*#__PURE__*/_jsx(ScreenContainer, {
|
|
45
|
-
style: styles.container,
|
|
46
|
-
children: scenes.map((scene, sceneIndex) => {
|
|
47
|
-
const descriptor = scene.descriptor;
|
|
48
|
-
const route = scene.route;
|
|
49
|
-
const isFocused = focusedIndex === sceneIndex;
|
|
50
|
-
const isBelowFocused = focusedIndex - 1 === sceneIndex;
|
|
51
|
-
const previousDescriptor = scenes[sceneIndex - 1]?.descriptor ?? undefined;
|
|
52
|
-
const nextDescriptor = scenes[sceneIndex + 1]?.descriptor ?? undefined;
|
|
53
|
-
const isPreloaded = descriptors[route.key] === undefined;
|
|
54
|
-
|
|
55
|
-
// On Fabric, when screen is frozen, animated and reanimated values are not updated
|
|
56
|
-
// due to component being unmounted. To avoid this, we don't freeze the previous screen there
|
|
57
|
-
const shouldFreeze = isFabric() ? !isPreloaded && !isFocused && !isBelowFocused : !isPreloaded && !isFocused;
|
|
58
|
-
return /*#__PURE__*/_jsx(Screen, {
|
|
59
|
-
isPreloaded: isPreloaded,
|
|
60
|
-
index: sceneIndex,
|
|
61
|
-
activeScreensLimit: activeScreensLimit,
|
|
62
|
-
routeKey: route.key,
|
|
63
|
-
routesLength: routes.length,
|
|
64
|
-
shouldFreeze: shouldFreeze,
|
|
65
|
-
freezeOnBlur: descriptor.options.freezeOnBlur,
|
|
66
|
-
children: /*#__PURE__*/_jsx(ScreenTransitionProvider, {
|
|
67
|
-
previous: previousDescriptor,
|
|
68
|
-
current: descriptor,
|
|
69
|
-
next: nextDescriptor,
|
|
70
|
-
LifecycleController: BlankStackScreenLifecycleController,
|
|
71
|
-
children: /*#__PURE__*/_jsx(SceneView, {
|
|
72
|
-
isFocused: isFocused,
|
|
73
|
-
sceneIndex: sceneIndex,
|
|
74
|
-
descriptor: descriptor
|
|
75
|
-
}, route.key)
|
|
76
|
-
})
|
|
77
|
-
}, route.key);
|
|
78
|
-
})
|
|
79
|
-
})]
|
|
80
|
-
})
|
|
81
|
-
});
|
|
82
|
-
});
|
|
83
|
-
const styles = StyleSheet.create({
|
|
84
|
-
container: {
|
|
85
|
-
flex: 1
|
|
86
|
-
}
|
|
87
|
-
});
|
|
88
|
-
//# sourceMappingURL=StackView.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["SafeAreaProviderCompat","NavigationContext","NavigationRouteContext","React","StyleSheet","GestureHandlerRootView","ScreenContainer","BlankStackScreenLifecycleController","ScreenTransitionProvider","withStackNavigationProvider","Overlay","Screen","jsx","_jsx","jsxs","_jsxs","isFabric","global","SceneView","memo","descriptor","route","navigation","render","Provider","value","children","options","overlayMode","StackView","activeScreensLimit","descriptors","focusedIndex","routes","scenes","shouldShowFloatOverlay","Float","style","styles","container","map","scene","sceneIndex","isFocused","isBelowFocused","previousDescriptor","undefined","nextDescriptor","isPreloaded","key","shouldFreeze","index","routeKey","routesLength","length","freezeOnBlur","previous","current","next","LifecycleController","create","flex"],"sourceRoot":"../../../../src","sources":["blank-stack/components/StackView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["createNavigatorFactory","StackActions","StackRouter","useNavigationBuilder","React","StackView","jsx","_jsx","BlankStackNavigator","id","initialRouteName","children","layout","screenListeners","screenOptions","screenLayout","rest","state","describe","descriptors","navigation","NavigationContent","useEffect","addListener","e","isFocused","requestAnimationFrame","index","defaultPrevented","dispatch","popToTop","target","key","createBlankStackNavigator","config"],"sourceRoot":"../../../../src","sources":["blank-stack/navigators/createBlankStackNavigator.tsx"],"mappings":";;AAAA,SACCA,sBAAsB,EAKtBC,YAAY,EAEZC,WAAW,EAIXC,oBAAoB,QACd,0BAA0B;AACjC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAASC,SAAS,QAAQ,yBAAyB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQpD,SAASC,mBAAmBA,CAAC;EAC5BC,EAAE;EACFC,gBAAgB;EAChBC,QAAQ;EACRC,MAAM;EACNC,eAAe;EACfC,aAAa;EACbC,YAAY;EACZ,GAAGC;AACsB,CAAC,EAAE;EAC5B,MAAM;IAAEC,KAAK;IAAEC,QAAQ;IAAEC,WAAW;IAAEC,UAAU;IAAEC;EAAkB,CAAC,GACpElB,oBAAoB,CAMlBD,WAAW,EAAE;IACdO,EAAE;IACFC,gBAAgB;IAChBC,QAAQ;IACRC,MAAM;IACNC,eAAe;IACfC,aAAa;IACbC;EACD,CAAC,CAAC;EAEHX,KAAK,CAACkB,SAAS,CACd;EACC;EACAF,UAAU,EAAEG,WAAW,GAAG,UAAU,EAAGC,CAAM,IAAK;IACjD,MAAMC,SAAS,GAAGL,UAAU,CAACK,SAAS,CAAC,CAAC;;IAExC;IACA;IACAC,qBAAqB,CAAC,MAAM;MAC3B,IACCT,KAAK,CAACU,KAAK,GAAG,CAAC,IACfF,SAAS,IACT,CAAED,CAAC,CAAgCI,gBAAgB,EAClD;QACD;QACA;QACAR,UAAU,CAACS,QAAQ,CAAC;UACnB,GAAG5B,YAAY,CAAC6B,QAAQ,CAAC,CAAC;UAC1BC,MAAM,EAAEd,KAAK,CAACe;QACf,CAAC,CAAC;MACH;IACD,CAAC,CAAC;EACH,CAAC,CAAC,EACH,CAACZ,UAAU,EAAEH,KAAK,CAACU,KAAK,EAAEV,KAAK,CAACe,GAAG,CACpC,CAAC;EAED,oBACCzB,IAAA,CAACc,iBAAiB;IAAAV,QAAA,eACjBJ,IAAA,CAACF,SAAS;MAAA,GACLW,IAAI;MACRC,KAAK,EAAEA,KAAM;MACbG,UAAU,EAAEA,UAAW;MACvBD,WAAW,EAAEA,WAAY;MACzBD,QAAQ,EAAEA;IAAS,CACnB;EAAC,CACgB,CAAC;AAEtB;AAEA,OAAO,SAASe,yBAAyBA,CAmBvCC,MAAe,EAAmC;EACnD,OAAOlC,sBAAsB,CAACQ,mBAAmB,CAAC,CAAC0B,MAAM,CAAC;AAC3D","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../../../src","sources":["blank-stack/utils/with-stack-navigation/_types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { useEffect, useLayoutEffect } from "react";
|
|
4
|
-
import { useAnimatedReaction, useDerivedValue } from "react-native-reanimated";
|
|
5
|
-
import { useStackNavigationContext } from "../../../blank-stack/utils/with-stack-navigation";
|
|
6
|
-
import { useParentGestureRegistry } from "../../hooks/gestures/use-parent-gesture-registry";
|
|
7
|
-
import { useSharedValueState } from "../../hooks/reanimated/use-shared-value-state";
|
|
8
|
-
import useStableCallback from "../../hooks/use-stable-callback";
|
|
9
|
-
import { useGestureContext } from "../../providers/gestures.provider";
|
|
10
|
-
import { useKeys } from "../../providers/keys.provider";
|
|
11
|
-
import { AnimationStore } from "../../stores/animation.store";
|
|
12
|
-
import { startScreenTransition } from "../../utils/animation/start-screen-transition";
|
|
13
|
-
import { resetStoresForScreen } from "../../utils/reset-stores-for-screen";
|
|
14
|
-
/**
|
|
15
|
-
* ScreenLifecycleController built out for Native Stack implementation.
|
|
16
|
-
*/
|
|
17
|
-
export const NativeStackScreenLifecycleController = ({
|
|
18
|
-
children
|
|
19
|
-
}) => {
|
|
20
|
-
const {
|
|
21
|
-
current
|
|
22
|
-
} = useKeys();
|
|
23
|
-
const {
|
|
24
|
-
parentContext
|
|
25
|
-
} = useGestureContext();
|
|
26
|
-
const isParentDismissingViaGesture = useSharedValueState(useDerivedValue(() => {
|
|
27
|
-
"worklet";
|
|
28
|
-
|
|
29
|
-
return parentContext?.gestureAnimationValues.isDismissing?.value ?? false;
|
|
30
|
-
}));
|
|
31
|
-
const animations = AnimationStore.getAll(current.route.key);
|
|
32
|
-
const handleBeforeRemove = useStableCallback(e => {
|
|
33
|
-
const isEnabled = current.options.enableTransitions;
|
|
34
|
-
const isFirstScreen = current.navigation.getState().index === 0;
|
|
35
|
-
|
|
36
|
-
// If transitions are disabled, or the dismissal was on the local root, or this is the first screen of the stack, reset the stores
|
|
37
|
-
if (!isEnabled || isParentDismissingViaGesture || isFirstScreen) {
|
|
38
|
-
resetStoresForScreen(current);
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
e.preventDefault();
|
|
42
|
-
const onAnimationFinish = finished => {
|
|
43
|
-
if (finished) {
|
|
44
|
-
current.navigation.dispatch(e.data.action);
|
|
45
|
-
|
|
46
|
-
// we'll ensure the dispatch is complete before resetting stores
|
|
47
|
-
requestAnimationFrame(() => {
|
|
48
|
-
resetStoresForScreen(current);
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
};
|
|
52
|
-
startScreenTransition({
|
|
53
|
-
target: "close",
|
|
54
|
-
spec: current.options.transitionSpec,
|
|
55
|
-
onAnimationFinish,
|
|
56
|
-
animations
|
|
57
|
-
});
|
|
58
|
-
});
|
|
59
|
-
const handleInitialize = useStableCallback(() => {
|
|
60
|
-
startScreenTransition({
|
|
61
|
-
target: "open",
|
|
62
|
-
spec: current.options.transitionSpec,
|
|
63
|
-
animations
|
|
64
|
-
});
|
|
65
|
-
});
|
|
66
|
-
useEffect(() => {
|
|
67
|
-
const unsubscribe = current.navigation.addListener("beforeRemove", handleBeforeRemove);
|
|
68
|
-
return unsubscribe;
|
|
69
|
-
}, [current.navigation, handleBeforeRemove]);
|
|
70
|
-
useLayoutEffect(handleInitialize, []);
|
|
71
|
-
|
|
72
|
-
// important for t.a scrollviews inside nested navigators.
|
|
73
|
-
useParentGestureRegistry();
|
|
74
|
-
return children;
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* ScreenLifecycleController built out for Blank Stack implementation.
|
|
79
|
-
*/
|
|
80
|
-
|
|
81
|
-
export const BlankStackScreenLifecycleController = ({
|
|
82
|
-
children
|
|
83
|
-
}) => {
|
|
84
|
-
const {
|
|
85
|
-
current
|
|
86
|
-
} = useKeys();
|
|
87
|
-
const {
|
|
88
|
-
handleCloseRoute,
|
|
89
|
-
closingRouteKeysShared
|
|
90
|
-
} = useStackNavigationContext();
|
|
91
|
-
const animations = AnimationStore.getAll(current.route.key);
|
|
92
|
-
const handleInitialize = useStableCallback(() => {
|
|
93
|
-
startScreenTransition({
|
|
94
|
-
target: "open",
|
|
95
|
-
spec: current.options.transitionSpec,
|
|
96
|
-
animations
|
|
97
|
-
});
|
|
98
|
-
});
|
|
99
|
-
const handleCleanup = useStableCallback(() => {
|
|
100
|
-
resetStoresForScreen(current);
|
|
101
|
-
});
|
|
102
|
-
const handleCloseEnd = useStableCallback(finished => {
|
|
103
|
-
if (!finished) {
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
handleCloseRoute({
|
|
107
|
-
route: current.route
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
useAnimatedReaction(() => ({
|
|
111
|
-
keys: closingRouteKeysShared.value
|
|
112
|
-
}), ({
|
|
113
|
-
keys
|
|
114
|
-
}) => {
|
|
115
|
-
if (!keys.includes(current.route.key)) {
|
|
116
|
-
return;
|
|
117
|
-
}
|
|
118
|
-
startScreenTransition({
|
|
119
|
-
target: "close",
|
|
120
|
-
spec: current.options.transitionSpec,
|
|
121
|
-
animations,
|
|
122
|
-
onAnimationFinish: handleCloseEnd
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
useLayoutEffect(() => {
|
|
126
|
-
handleInitialize();
|
|
127
|
-
return () => {
|
|
128
|
-
handleCleanup();
|
|
129
|
-
};
|
|
130
|
-
}, [handleInitialize, handleCleanup]);
|
|
131
|
-
|
|
132
|
-
// important for t.a scrollviews inside nested navigators.
|
|
133
|
-
useParentGestureRegistry();
|
|
134
|
-
return children;
|
|
135
|
-
};
|
|
136
|
-
//# sourceMappingURL=screen-lifecycle.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useLayoutEffect","useAnimatedReaction","useDerivedValue","useStackNavigationContext","useParentGestureRegistry","useSharedValueState","useStableCallback","useGestureContext","useKeys","AnimationStore","startScreenTransition","resetStoresForScreen","NativeStackScreenLifecycleController","children","current","parentContext","isParentDismissingViaGesture","gestureAnimationValues","isDismissing","value","animations","getAll","route","key","handleBeforeRemove","e","isEnabled","options","enableTransitions","isFirstScreen","navigation","getState","index","preventDefault","onAnimationFinish","finished","dispatch","data","action","requestAnimationFrame","target","spec","transitionSpec","handleInitialize","unsubscribe","addListener","BlankStackScreenLifecycleController","handleCloseRoute","closingRouteKeysShared","handleCleanup","handleCloseEnd","keys","includes"],"sourceRoot":"../../../../../src","sources":["shared/components/controllers/screen-lifecycle.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { useEffect } from "react";
|
|
4
|
-
import { useGestureContext } from "../../providers/gestures.provider";
|
|
5
|
-
import useStableCallback from "../use-stable-callback";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Registers native gestures with parent gestures to enable proper gesture handling
|
|
9
|
-
* in nested navigators that contain scrollable content.
|
|
10
|
-
*/
|
|
11
|
-
export const useParentGestureRegistry = () => {
|
|
12
|
-
const {
|
|
13
|
-
parentContext,
|
|
14
|
-
nativeGesture
|
|
15
|
-
} = useGestureContext();
|
|
16
|
-
const registerNativeGesture = useStableCallback(() => {
|
|
17
|
-
if (parentContext?.panGesture && nativeGesture) {
|
|
18
|
-
parentContext.panGesture.blocksExternalGesture(nativeGesture);
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
useEffect(registerNativeGesture);
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=use-parent-gesture-registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["useEffect","useGestureContext","useStableCallback","useParentGestureRegistry","parentContext","nativeGesture","registerNativeGesture","panGesture","blocksExternalGesture"],"sourceRoot":"../../../../../src","sources":["shared/hooks/gestures/use-parent-gesture-registry.tsx"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,OAAO;AACjC,SAASC,iBAAiB,QAAQ,mCAAmC;AACrE,OAAOC,iBAAiB,MAAM,wBAAwB;;AAEtD;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,GAAGA,CAAA,KAAM;EAC7C,MAAM;IAAEC,aAAa;IAAEC;EAAc,CAAC,GAAGJ,iBAAiB,CAAC,CAAC;EAC5D,MAAMK,qBAAqB,GAAGJ,iBAAiB,CAAC,MAAM;IACrD,IAAIE,aAAa,EAAEG,UAAU,IAAIF,aAAa,EAAE;MAC/CD,aAAa,CAACG,UAAU,CAACC,qBAAqB,CAACH,aAAa,CAAC;IAC9D;EACD,CAAC,CAAC;EAEFL,SAAS,CAACM,qBAAqB,CAAC;AACjC,CAAC","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Overlay.d.ts","sourceRoot":"","sources":["../../../../src/blank-stack/components/Overlay.tsx"],"names":[],"mappings":"AAsJA,eAAO,MAAM,OAAO;;;CAGnB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Screens.d.ts","sourceRoot":"","sources":["../../../../src/blank-stack/components/Screens.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAWpC,UAAU,WAAW;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;CAC3B;AAUD,eAAO,MAAM,MAAM,GAAI,2GASpB,WAAW,4CAuDb,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"StackView.d.ts","sourceRoot":"","sources":["../../../../src/blank-stack/components/StackView.tsx"],"names":[],"mappings":"AAuCA,eAAO,MAAM,SAAS,iIAgErB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createBlankStackNavigator.d.ts","sourceRoot":"","sources":["../../../../src/blank-stack/navigators/createBlankStackNavigator.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGN,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAGlB,KAAK,oBAAoB,EAGzB,KAAK,YAAY,EACjB,KAAK,cAAc,EAEnB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,KAAK,EACX,4BAA4B,EAC5B,2BAA2B,EAC3B,wBAAwB,EACxB,wBAAwB,EACxB,MAAM,UAAU,CAAC;AAElB,iBAAS,mBAAmB,CAAC,EAC5B,EAAE,EACF,gBAAgB,EAChB,QAAQ,EACR,MAAM,EACN,eAAe,EACf,aAAa,EACb,YAAY,EACZ,GAAG,IAAI,EACP,EAAE,wBAAwB,2CAuD1B;AAED,wBAAgB,yBAAyB,CACxC,KAAK,CAAC,SAAS,SAAS,aAAa,EACrC,KAAK,CAAC,WAAW,SAAS,MAAM,GAAG,SAAS,GAAG,SAAS,EACxD,KAAK,CAAC,OAAO,SAAS,oBAAoB,GAAG;IAC5C,SAAS,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACvC,aAAa,EAAE,2BAA2B,CAAC;IAC3C,QAAQ,EAAE,4BAA4B,CAAC;IACvC,cAAc,EAAE;SACd,SAAS,IAAI,MAAM,SAAS,GAAG,wBAAwB,CACvD,SAAS,EACT,SAAS,EACT,WAAW,CACX;KACD,CAAC;IACF,SAAS,EAAE,OAAO,mBAAmB,CAAC;CACtC,EACD,KAAK,CAAC,MAAM,SAAS,YAAY,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC,OAAO,CAAC,EACjE,MAAM,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAElD"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"_types.d.ts","sourceRoot":"","sources":["../../../../../src/blank-stack/utils/with-stack-navigation/_types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,eAAe,EACf,aAAa,EACb,KAAK,EACL,SAAS,EACT,oBAAoB,EACpB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EACX,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,eAAe,EACf,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,2BAA2B;IAC3C,MAAM,EAAE,eAAe,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE,CAAC;IACjD,WAAW,EAAE,uBAAuB,CAAC;IACrC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9C,gBAAgB,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;KAAE,KAAK,IAAI,CAAC;IAC9D,sBAAsB,EAAE,OAAO,CAAC;IAChC,YAAY,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,2BAA2B;IAC3C,KAAK,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAC3C,UAAU,EAAE,2BAA2B,CAAC;IACxC,WAAW,EAAE,uBAAuB,CAAC;IACrC,QAAQ,EAAE,CACT,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,EAC/B,WAAW,EAAE,OAAO,KAChB,oBAAoB,CAAC;CAC1B"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export interface ScreenLifecycleProps {
|
|
2
|
-
children: React.ReactNode;
|
|
3
|
-
}
|
|
4
|
-
/**
|
|
5
|
-
* ScreenLifecycleController built out for Native Stack implementation.
|
|
6
|
-
*/
|
|
7
|
-
export declare const NativeStackScreenLifecycleController: ({ children, }: ScreenLifecycleProps) => import("react").ReactNode;
|
|
8
|
-
/**
|
|
9
|
-
* ScreenLifecycleController built out for Blank Stack implementation.
|
|
10
|
-
*/
|
|
11
|
-
export declare const BlankStackScreenLifecycleController: ({ children, }: ScreenLifecycleProps) => import("react").ReactNode;
|
|
12
|
-
//# sourceMappingURL=screen-lifecycle.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"screen-lifecycle.d.ts","sourceRoot":"","sources":["../../../../../src/shared/components/controllers/screen-lifecycle.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED;;GAEG;AACH,eAAO,MAAM,oCAAoC,GAAI,eAElD,oBAAoB,8BAmEtB,CAAC;AAEF;;GAEG;AAEH,eAAO,MAAM,mCAAmC,GAAI,eAEjD,oBAAoB,8BAuDtB,CAAC"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Registers native gestures with parent gestures to enable proper gesture handling
|
|
3
|
-
* in nested navigators that contain scrollable content.
|
|
4
|
-
*/
|
|
5
|
-
export declare const useParentGestureRegistry: () => void;
|
|
6
|
-
//# sourceMappingURL=use-parent-gesture-registry.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"use-parent-gesture-registry.d.ts","sourceRoot":"","sources":["../../../../../src/shared/hooks/gestures/use-parent-gesture-registry.tsx"],"names":[],"mappings":"AAIA;;;GAGG;AACH,eAAO,MAAM,wBAAwB,YASpC,CAAC"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
import { SafeAreaProviderCompat } from "@react-navigation/elements";
|
|
2
|
-
import {
|
|
3
|
-
NavigationContext,
|
|
4
|
-
NavigationRouteContext,
|
|
5
|
-
} from "@react-navigation/native";
|
|
6
|
-
import * as React from "react";
|
|
7
|
-
import { StyleSheet } from "react-native";
|
|
8
|
-
import { GestureHandlerRootView } from "react-native-gesture-handler";
|
|
9
|
-
import { ScreenContainer } from "react-native-screens";
|
|
10
|
-
import { BlankStackScreenLifecycleController } from "../../shared/components/controllers/screen-lifecycle";
|
|
11
|
-
import { ScreenTransitionProvider } from "../../shared/providers/screen-transition.provider";
|
|
12
|
-
import type { BlankStackDescriptor } from "../types";
|
|
13
|
-
import { withStackNavigationProvider } from "../utils/with-stack-navigation";
|
|
14
|
-
import { Overlay } from "./Overlay";
|
|
15
|
-
import { Screen } from "./Screens";
|
|
16
|
-
|
|
17
|
-
function isFabric() {
|
|
18
|
-
return "nativeFabricUIManager" in global;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
type SceneViewProps = {
|
|
22
|
-
descriptor: BlankStackDescriptor;
|
|
23
|
-
isFocused: boolean;
|
|
24
|
-
sceneIndex: number;
|
|
25
|
-
};
|
|
26
|
-
|
|
27
|
-
const SceneView = React.memo(({ descriptor }: SceneViewProps) => {
|
|
28
|
-
const { route, navigation, render } = descriptor;
|
|
29
|
-
|
|
30
|
-
return (
|
|
31
|
-
<NavigationContext.Provider value={navigation}>
|
|
32
|
-
<NavigationRouteContext.Provider value={route}>
|
|
33
|
-
{descriptor.options.overlayMode === "screen" && <Overlay.Screen />}
|
|
34
|
-
{render()}
|
|
35
|
-
</NavigationRouteContext.Provider>
|
|
36
|
-
</NavigationContext.Provider>
|
|
37
|
-
);
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
export const StackView = withStackNavigationProvider(
|
|
41
|
-
({
|
|
42
|
-
activeScreensLimit,
|
|
43
|
-
descriptors,
|
|
44
|
-
focusedIndex,
|
|
45
|
-
routes,
|
|
46
|
-
scenes,
|
|
47
|
-
shouldShowFloatOverlay,
|
|
48
|
-
}) => {
|
|
49
|
-
return (
|
|
50
|
-
<GestureHandlerRootView>
|
|
51
|
-
<SafeAreaProviderCompat>
|
|
52
|
-
{shouldShowFloatOverlay ? <Overlay.Float /> : null}
|
|
53
|
-
<ScreenContainer style={styles.container}>
|
|
54
|
-
{scenes.map((scene, sceneIndex) => {
|
|
55
|
-
const descriptor = scene.descriptor;
|
|
56
|
-
const route = scene.route;
|
|
57
|
-
const isFocused = focusedIndex === sceneIndex;
|
|
58
|
-
const isBelowFocused = focusedIndex - 1 === sceneIndex;
|
|
59
|
-
|
|
60
|
-
const previousDescriptor =
|
|
61
|
-
scenes[sceneIndex - 1]?.descriptor ?? undefined;
|
|
62
|
-
const nextDescriptor =
|
|
63
|
-
scenes[sceneIndex + 1]?.descriptor ?? undefined;
|
|
64
|
-
|
|
65
|
-
const isPreloaded = descriptors[route.key] === undefined;
|
|
66
|
-
|
|
67
|
-
// On Fabric, when screen is frozen, animated and reanimated values are not updated
|
|
68
|
-
// due to component being unmounted. To avoid this, we don't freeze the previous screen there
|
|
69
|
-
const shouldFreeze = isFabric()
|
|
70
|
-
? !isPreloaded && !isFocused && !isBelowFocused
|
|
71
|
-
: !isPreloaded && !isFocused;
|
|
72
|
-
return (
|
|
73
|
-
<Screen
|
|
74
|
-
key={route.key}
|
|
75
|
-
isPreloaded={isPreloaded}
|
|
76
|
-
index={sceneIndex}
|
|
77
|
-
activeScreensLimit={activeScreensLimit}
|
|
78
|
-
routeKey={route.key}
|
|
79
|
-
routesLength={routes.length}
|
|
80
|
-
shouldFreeze={shouldFreeze}
|
|
81
|
-
freezeOnBlur={descriptor.options.freezeOnBlur}
|
|
82
|
-
>
|
|
83
|
-
<ScreenTransitionProvider
|
|
84
|
-
previous={previousDescriptor}
|
|
85
|
-
current={descriptor}
|
|
86
|
-
next={nextDescriptor}
|
|
87
|
-
LifecycleController={BlankStackScreenLifecycleController}
|
|
88
|
-
>
|
|
89
|
-
<SceneView
|
|
90
|
-
key={route.key}
|
|
91
|
-
isFocused={isFocused}
|
|
92
|
-
sceneIndex={sceneIndex}
|
|
93
|
-
descriptor={descriptor}
|
|
94
|
-
/>
|
|
95
|
-
</ScreenTransitionProvider>
|
|
96
|
-
</Screen>
|
|
97
|
-
);
|
|
98
|
-
})}
|
|
99
|
-
</ScreenContainer>
|
|
100
|
-
</SafeAreaProviderCompat>
|
|
101
|
-
</GestureHandlerRootView>
|
|
102
|
-
);
|
|
103
|
-
},
|
|
104
|
-
);
|
|
105
|
-
|
|
106
|
-
const styles = StyleSheet.create({
|
|
107
|
-
container: { flex: 1 },
|
|
108
|
-
});
|
|
@@ -1,154 +0,0 @@
|
|
|
1
|
-
import { useEffect, useLayoutEffect } from "react";
|
|
2
|
-
import { useAnimatedReaction, useDerivedValue } from "react-native-reanimated";
|
|
3
|
-
import type { BlankStackDescriptor } from "../../../blank-stack/types";
|
|
4
|
-
import { useStackNavigationContext } from "../../../blank-stack/utils/with-stack-navigation";
|
|
5
|
-
import type { NativeStackDescriptor } from "../../../native-stack/types";
|
|
6
|
-
import { useParentGestureRegistry } from "../../hooks/gestures/use-parent-gesture-registry";
|
|
7
|
-
import { useSharedValueState } from "../../hooks/reanimated/use-shared-value-state";
|
|
8
|
-
import useStableCallback from "../../hooks/use-stable-callback";
|
|
9
|
-
import { useGestureContext } from "../../providers/gestures.provider";
|
|
10
|
-
import { useKeys } from "../../providers/keys.provider";
|
|
11
|
-
import { AnimationStore } from "../../stores/animation.store";
|
|
12
|
-
import { startScreenTransition } from "../../utils/animation/start-screen-transition";
|
|
13
|
-
import { resetStoresForScreen } from "../../utils/reset-stores-for-screen";
|
|
14
|
-
|
|
15
|
-
export interface ScreenLifecycleProps {
|
|
16
|
-
children: React.ReactNode;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* ScreenLifecycleController built out for Native Stack implementation.
|
|
21
|
-
*/
|
|
22
|
-
export const NativeStackScreenLifecycleController = ({
|
|
23
|
-
children,
|
|
24
|
-
}: ScreenLifecycleProps) => {
|
|
25
|
-
const { current } = useKeys<NativeStackDescriptor>();
|
|
26
|
-
const { parentContext } = useGestureContext();
|
|
27
|
-
|
|
28
|
-
const isParentDismissingViaGesture = useSharedValueState(
|
|
29
|
-
useDerivedValue(() => {
|
|
30
|
-
"worklet";
|
|
31
|
-
return parentContext?.gestureAnimationValues.isDismissing?.value ?? false;
|
|
32
|
-
}),
|
|
33
|
-
);
|
|
34
|
-
|
|
35
|
-
const animations = AnimationStore.getAll(current.route.key);
|
|
36
|
-
|
|
37
|
-
const handleBeforeRemove = useStableCallback((e: any) => {
|
|
38
|
-
const isEnabled = current.options.enableTransitions;
|
|
39
|
-
|
|
40
|
-
const isFirstScreen = current.navigation.getState().index === 0;
|
|
41
|
-
|
|
42
|
-
// If transitions are disabled, or the dismissal was on the local root, or this is the first screen of the stack, reset the stores
|
|
43
|
-
if (!isEnabled || isParentDismissingViaGesture || isFirstScreen) {
|
|
44
|
-
resetStoresForScreen(current);
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
e.preventDefault();
|
|
49
|
-
const onAnimationFinish = (finished: boolean) => {
|
|
50
|
-
if (finished) {
|
|
51
|
-
current.navigation.dispatch(e.data.action);
|
|
52
|
-
|
|
53
|
-
// we'll ensure the dispatch is complete before resetting stores
|
|
54
|
-
requestAnimationFrame(() => {
|
|
55
|
-
resetStoresForScreen(current);
|
|
56
|
-
});
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
startScreenTransition({
|
|
61
|
-
target: "close",
|
|
62
|
-
spec: current.options.transitionSpec,
|
|
63
|
-
onAnimationFinish,
|
|
64
|
-
animations,
|
|
65
|
-
});
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
const handleInitialize = useStableCallback(() => {
|
|
69
|
-
startScreenTransition({
|
|
70
|
-
target: "open",
|
|
71
|
-
spec: current.options.transitionSpec,
|
|
72
|
-
animations,
|
|
73
|
-
});
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
useEffect(() => {
|
|
77
|
-
const unsubscribe = current.navigation.addListener(
|
|
78
|
-
"beforeRemove",
|
|
79
|
-
handleBeforeRemove,
|
|
80
|
-
);
|
|
81
|
-
|
|
82
|
-
return unsubscribe;
|
|
83
|
-
}, [current.navigation, handleBeforeRemove]);
|
|
84
|
-
|
|
85
|
-
useLayoutEffect(handleInitialize, []);
|
|
86
|
-
|
|
87
|
-
// important for t.a scrollviews inside nested navigators.
|
|
88
|
-
useParentGestureRegistry();
|
|
89
|
-
|
|
90
|
-
return children;
|
|
91
|
-
};
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* ScreenLifecycleController built out for Blank Stack implementation.
|
|
95
|
-
*/
|
|
96
|
-
|
|
97
|
-
export const BlankStackScreenLifecycleController = ({
|
|
98
|
-
children,
|
|
99
|
-
}: ScreenLifecycleProps) => {
|
|
100
|
-
const { current } = useKeys<BlankStackDescriptor>();
|
|
101
|
-
const { handleCloseRoute, closingRouteKeysShared } =
|
|
102
|
-
useStackNavigationContext();
|
|
103
|
-
|
|
104
|
-
const animations = AnimationStore.getAll(current.route.key);
|
|
105
|
-
|
|
106
|
-
const handleInitialize = useStableCallback(() => {
|
|
107
|
-
startScreenTransition({
|
|
108
|
-
target: "open",
|
|
109
|
-
spec: current.options.transitionSpec,
|
|
110
|
-
animations,
|
|
111
|
-
});
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
const handleCleanup = useStableCallback(() => {
|
|
115
|
-
resetStoresForScreen(current);
|
|
116
|
-
});
|
|
117
|
-
|
|
118
|
-
const handleCloseEnd = useStableCallback((finished: boolean) => {
|
|
119
|
-
if (!finished) {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
handleCloseRoute({ route: current.route });
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
useAnimatedReaction(
|
|
126
|
-
() => ({
|
|
127
|
-
keys: closingRouteKeysShared.value,
|
|
128
|
-
}),
|
|
129
|
-
({ keys }) => {
|
|
130
|
-
if (!keys.includes(current.route.key)) {
|
|
131
|
-
return;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
startScreenTransition({
|
|
135
|
-
target: "close",
|
|
136
|
-
spec: current.options.transitionSpec,
|
|
137
|
-
animations,
|
|
138
|
-
onAnimationFinish: handleCloseEnd,
|
|
139
|
-
});
|
|
140
|
-
},
|
|
141
|
-
);
|
|
142
|
-
|
|
143
|
-
useLayoutEffect(() => {
|
|
144
|
-
handleInitialize();
|
|
145
|
-
return () => {
|
|
146
|
-
handleCleanup();
|
|
147
|
-
};
|
|
148
|
-
}, [handleInitialize, handleCleanup]);
|
|
149
|
-
|
|
150
|
-
// important for t.a scrollviews inside nested navigators.
|
|
151
|
-
useParentGestureRegistry();
|
|
152
|
-
|
|
153
|
-
return children;
|
|
154
|
-
};
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { useEffect } from "react";
|
|
2
|
-
import { useGestureContext } from "../../providers/gestures.provider";
|
|
3
|
-
import useStableCallback from "../use-stable-callback";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Registers native gestures with parent gestures to enable proper gesture handling
|
|
7
|
-
* in nested navigators that contain scrollable content.
|
|
8
|
-
*/
|
|
9
|
-
export const useParentGestureRegistry = () => {
|
|
10
|
-
const { parentContext, nativeGesture } = useGestureContext();
|
|
11
|
-
const registerNativeGesture = useStableCallback(() => {
|
|
12
|
-
if (parentContext?.panGesture && nativeGesture) {
|
|
13
|
-
parentContext.panGesture.blocksExternalGesture(nativeGesture);
|
|
14
|
-
}
|
|
15
|
-
});
|
|
16
|
-
|
|
17
|
-
useEffect(registerNativeGesture);
|
|
18
|
-
};
|
|
File without changes
|