react-native-screen-transitions 3.7.0-beta.1 → 3.7.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/lib/commonjs/shared/adapters/with-screen-transitions/options.js +37 -9
- package/lib/commonjs/shared/adapters/with-screen-transitions/options.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js +10 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/animation/helpers/read-screen-animation-revisions.js +20 -0
- package/lib/commonjs/shared/providers/screen/animation/helpers/read-screen-animation-revisions.js.map +1 -0
- package/lib/commonjs/shared/providers/screen/animation/use-screen-animation.js +2 -13
- package/lib/commonjs/shared/providers/screen/animation/use-screen-animation.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/gestures/ownership/shadowing-claims.js +18 -0
- package/lib/commonjs/shared/providers/screen/gestures/ownership/shadowing-claims.js.map +1 -0
- package/lib/commonjs/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js +47 -1
- package/lib/commonjs/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +12 -3
- package/lib/commonjs/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
- package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.js +23 -20
- package/lib/commonjs/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.js.map +1 -1
- package/lib/module/shared/adapters/with-screen-transitions/options.js +37 -9
- package/lib/module/shared/adapters/with-screen-transitions/options.js.map +1 -1
- package/lib/module/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js +10 -1
- package/lib/module/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.js.map +1 -1
- package/lib/module/shared/providers/screen/animation/helpers/pipeline.js.map +1 -1
- package/lib/module/shared/providers/screen/animation/helpers/read-screen-animation-revisions.js +15 -0
- package/lib/module/shared/providers/screen/animation/helpers/read-screen-animation-revisions.js.map +1 -0
- package/lib/module/shared/providers/screen/animation/use-screen-animation.js +1 -12
- package/lib/module/shared/providers/screen/animation/use-screen-animation.js.map +1 -1
- package/lib/module/shared/providers/screen/gestures/ownership/shadowing-claims.js +13 -0
- package/lib/module/shared/providers/screen/gestures/ownership/shadowing-claims.js.map +1 -0
- package/lib/module/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js +49 -3
- package/lib/module/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.js.map +1 -1
- package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js +12 -3
- package/lib/module/shared/providers/screen/styles/hooks/use-interpolated-style-maps.js.map +1 -1
- package/lib/module/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.js +23 -20
- package/lib/module/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.js.map +1 -1
- package/lib/module/shared/types/animation.types.js.map +1 -1
- package/lib/typescript/shared/adapters/with-screen-transitions/options.d.ts.map +1 -1
- package/lib/typescript/shared/index.d.ts +1 -1
- package/lib/typescript/shared/index.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/animation/helpers/pipeline.d.ts +1 -1
- package/lib/typescript/shared/providers/screen/animation/helpers/pipeline.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/animation/helpers/read-screen-animation-revisions.d.ts +3 -0
- package/lib/typescript/shared/providers/screen/animation/helpers/read-screen-animation-revisions.d.ts.map +1 -0
- package/lib/typescript/shared/providers/screen/animation/use-screen-animation.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/gestures/ownership/shadowing-claims.d.ts +8 -0
- package/lib/typescript/shared/providers/screen/gestures/ownership/shadowing-claims.d.ts.map +1 -0
- package/lib/typescript/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/styles/hooks/use-interpolated-style-maps.d.ts.map +1 -1
- package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.d.ts.map +1 -1
- package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/helpers/types.d.ts +2 -3
- package/lib/typescript/shared/providers/stack/helpers/managed-stack-state/helpers/types.d.ts.map +1 -1
- package/lib/typescript/shared/types/animation.types.d.ts +14 -0
- package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
- package/lib/typescript/shared/types/index.d.ts +1 -1
- package/lib/typescript/shared/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/shared/adapters/with-screen-transitions/options.ts +86 -19
- package/src/shared/index.ts +3 -0
- package/src/shared/providers/screen/animation/helpers/accessors/use-build-transition-accessor.ts +14 -0
- package/src/shared/providers/screen/animation/helpers/pipeline.ts +4 -1
- package/src/shared/providers/screen/animation/helpers/read-screen-animation-revisions.ts +25 -0
- package/src/shared/providers/screen/animation/use-screen-animation.tsx +1 -21
- package/src/shared/providers/screen/gestures/ownership/shadowing-claims.ts +18 -0
- package/src/shared/providers/screen/gestures/ownership/use-walk-up-and-register-shadowing-claims.ts +64 -3
- package/src/shared/providers/screen/styles/hooks/use-interpolated-style-maps.tsx +15 -1
- package/src/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.ts +38 -24
- package/src/shared/providers/stack/helpers/managed-stack-state/helpers/types.ts +2 -3
- package/src/shared/types/animation.types.ts +18 -0
- package/src/shared/types/index.ts +3 -0
package/src/shared/providers/stack/helpers/managed-stack-state/helpers/build-managed-stack-state.ts
CHANGED
|
@@ -59,11 +59,10 @@ const resolveStableDescriptorSource = <
|
|
|
59
59
|
};
|
|
60
60
|
|
|
61
61
|
const getSceneActivity = ({
|
|
62
|
-
|
|
62
|
+
activeIndex,
|
|
63
|
+
inertIndex,
|
|
63
64
|
isClosing,
|
|
64
65
|
sceneIndex,
|
|
65
|
-
topIndex,
|
|
66
|
-
topIsClosing,
|
|
67
66
|
}: SceneActivityWindow & {
|
|
68
67
|
isClosing: boolean;
|
|
69
68
|
sceneIndex: number;
|
|
@@ -72,21 +71,33 @@ const getSceneActivity = ({
|
|
|
72
71
|
return "closing";
|
|
73
72
|
}
|
|
74
73
|
|
|
75
|
-
if (
|
|
76
|
-
return sceneIndex === focusedIndex ? "inert" : "inactive";
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (sceneIndex === topIndex) {
|
|
74
|
+
if (sceneIndex === activeIndex) {
|
|
80
75
|
return "active";
|
|
81
76
|
}
|
|
82
77
|
|
|
83
|
-
if (sceneIndex ===
|
|
78
|
+
if (sceneIndex === inertIndex) {
|
|
84
79
|
return "inert";
|
|
85
80
|
}
|
|
86
81
|
|
|
87
82
|
return "inactive";
|
|
88
83
|
};
|
|
89
84
|
|
|
85
|
+
const getNonClosingSceneIndices = <TDescriptor extends BaseStackDescriptor>(
|
|
86
|
+
routes: ManagedRoutes<TDescriptor>,
|
|
87
|
+
closingRouteKeys: ReadonlySet<string>,
|
|
88
|
+
) => {
|
|
89
|
+
const indices: number[] = [];
|
|
90
|
+
|
|
91
|
+
for (let index = 0; index < routes.length; index++) {
|
|
92
|
+
const route = routes[index];
|
|
93
|
+
if (route && !closingRouteKeys.has(route.key)) {
|
|
94
|
+
indices.push(index);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
return indices;
|
|
99
|
+
};
|
|
100
|
+
|
|
90
101
|
const getSceneActivityWindow = <
|
|
91
102
|
TDescriptor extends BaseStackDescriptor,
|
|
92
103
|
TNavigation extends BaseStackNavigation,
|
|
@@ -98,29 +109,32 @@ const getSceneActivityWindow = <
|
|
|
98
109
|
TDescriptor,
|
|
99
110
|
TNavigation
|
|
100
111
|
>): SceneActivityWindow => {
|
|
101
|
-
const
|
|
112
|
+
const nonClosingIndices = getNonClosingSceneIndices(routes, closingRouteKeys);
|
|
102
113
|
|
|
103
|
-
|
|
114
|
+
const topNonClosingIndex =
|
|
115
|
+
nonClosingIndices[nonClosingIndices.length - 1] ?? -1;
|
|
104
116
|
|
|
105
|
-
|
|
117
|
+
const hasClosingRouteAboveActive =
|
|
118
|
+
topNonClosingIndex !== -1 && topNonClosingIndex < routes.length - 1;
|
|
119
|
+
|
|
120
|
+
const activeIndex = hasClosingRouteAboveActive ? -1 : topNonClosingIndex;
|
|
121
|
+
const inertIndex = hasClosingRouteAboveActive
|
|
122
|
+
? topNonClosingIndex
|
|
123
|
+
: (nonClosingIndices[nonClosingIndices.length - 2] ?? -1);
|
|
124
|
+
|
|
125
|
+
const focusedRouteKey = props.state.routes[props.state.index]?.key;
|
|
126
|
+
if (
|
|
127
|
+
focusedRouteKey &&
|
|
128
|
+
!routes.some((route) => route.key === focusedRouteKey)
|
|
129
|
+
) {
|
|
106
130
|
throw new Error(
|
|
107
131
|
`Focused route "${focusedRouteKey}" is missing from routes`,
|
|
108
132
|
);
|
|
109
133
|
}
|
|
110
134
|
|
|
111
|
-
while (focusedIndex > 0 && closingRouteKeys.has(routes[focusedIndex]?.key)) {
|
|
112
|
-
focusedIndex--;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
const topIndex = routes.length - 1;
|
|
116
|
-
const topRoute = routes[topIndex];
|
|
117
|
-
const topIsClosing =
|
|
118
|
-
topRoute !== undefined && closingRouteKeys.has(topRoute.key);
|
|
119
|
-
|
|
120
135
|
return {
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
topIsClosing,
|
|
136
|
+
activeIndex,
|
|
137
|
+
inertIndex,
|
|
124
138
|
};
|
|
125
139
|
};
|
|
126
140
|
|
|
@@ -176,6 +176,10 @@ export type ScreenTransitionDepthTarget = {
|
|
|
176
176
|
|
|
177
177
|
export type ScreenTransitionTarget = ScreenTransitionDepthTarget;
|
|
178
178
|
|
|
179
|
+
export type ScreenTransitionAccessor = (
|
|
180
|
+
target?: ScreenTransitionTarget,
|
|
181
|
+
) => ScreenInterpolationProps | null;
|
|
182
|
+
|
|
179
183
|
export interface ScreenInterpolationProps {
|
|
180
184
|
/**
|
|
181
185
|
* Values for the screen that came before the current one in the navigation stack.
|
|
@@ -239,6 +243,20 @@ export interface ScreenInterpolationProps {
|
|
|
239
243
|
*/
|
|
240
244
|
bounds: BoundsAccessor;
|
|
241
245
|
|
|
246
|
+
/**
|
|
247
|
+
* Resolves interpolation props for this screen's transition timeline or an
|
|
248
|
+
* ancestor/descendant transition timeline.
|
|
249
|
+
*
|
|
250
|
+
* Calling without a target returns the current transition.
|
|
251
|
+
* `transition({ depth: -1 })` returns the immediate parent transition.
|
|
252
|
+
* `transition({ depth: 1 })` returns the immediate child transition.
|
|
253
|
+
* `transition({ depth: 0 })` returns the current transition.
|
|
254
|
+
*
|
|
255
|
+
* When called from a returned transition scope, targets are resolved relative
|
|
256
|
+
* to that scope.
|
|
257
|
+
*/
|
|
258
|
+
transition: ScreenTransitionAccessor;
|
|
259
|
+
|
|
242
260
|
/**
|
|
243
261
|
* The screen state that is currently driving the transition (either current or next, whichever is focused).
|
|
244
262
|
*/
|
|
@@ -4,8 +4,11 @@ export type {
|
|
|
4
4
|
AnimationConfig,
|
|
5
5
|
ScreenInterpolationProps,
|
|
6
6
|
ScreenStyleInterpolator,
|
|
7
|
+
ScreenTransitionAccessor,
|
|
8
|
+
ScreenTransitionDepthTarget,
|
|
7
9
|
ScreenTransitionOptions,
|
|
8
10
|
ScreenTransitionState,
|
|
11
|
+
ScreenTransitionTarget,
|
|
9
12
|
TransitionInterpolatedStyle,
|
|
10
13
|
TransitionInterpolatorOptions,
|
|
11
14
|
TransitionSlotStyle,
|