react-native-screen-transitions 3.0.0-beta.1 → 3.0.0-beta.3
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/blank-stack/components/Screens.js +3 -3
- package/lib/commonjs/blank-stack/components/Screens.js.map +1 -1
- package/lib/commonjs/blank-stack/components/StackView.js +5 -3
- package/lib/commonjs/blank-stack/components/StackView.js.map +1 -1
- package/lib/commonjs/shared/hooks/bounds/use-bound-registry.js +21 -0
- package/lib/commonjs/shared/hooks/bounds/use-bound-registry.js.map +1 -1
- package/lib/module/blank-stack/components/Screens.js +3 -3
- package/lib/module/blank-stack/components/Screens.js.map +1 -1
- package/lib/module/blank-stack/components/StackView.js +4 -3
- package/lib/module/blank-stack/components/StackView.js.map +1 -1
- package/lib/module/shared/hooks/bounds/use-bound-registry.js +22 -1
- package/lib/module/shared/hooks/bounds/use-bound-registry.js.map +1 -1
- package/lib/typescript/blank-stack/components/Screens.d.ts +2 -3
- package/lib/typescript/blank-stack/components/Screens.d.ts.map +1 -1
- package/lib/typescript/blank-stack/components/StackView.d.ts.map +1 -1
- package/lib/typescript/shared/configs/index.d.ts +9 -9
- package/lib/typescript/shared/hooks/bounds/use-bound-registry.d.ts.map +1 -1
- package/lib/typescript/shared/index.d.ts +2 -1
- package/lib/typescript/shared/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/blank-stack/components/Screens.tsx +5 -5
- package/src/blank-stack/components/StackView.tsx +4 -3
- package/src/shared/hooks/bounds/use-bound-registry.tsx +32 -1
- package/src/shared/index.ts +3 -0
|
@@ -18,7 +18,7 @@ const AnimatedScreen = _reactNativeReanimated.default.createAnimatedComponent(_r
|
|
|
18
18
|
const Screen = ({
|
|
19
19
|
routeKey,
|
|
20
20
|
index,
|
|
21
|
-
|
|
21
|
+
routesLength,
|
|
22
22
|
isPreloaded,
|
|
23
23
|
activeScreensLimit,
|
|
24
24
|
children,
|
|
@@ -32,10 +32,10 @@ const Screen = ({
|
|
|
32
32
|
screenActivity.value = STATE_TRANSITIONING_OR_BELOW_TOP;
|
|
33
33
|
return;
|
|
34
34
|
}
|
|
35
|
-
if (index <
|
|
35
|
+
if (index < routesLength - activeScreensLimit - 1 || isPreloaded) {
|
|
36
36
|
screenActivity.value = STATE_INACTIVE;
|
|
37
37
|
} else {
|
|
38
|
-
const outputValue = index ===
|
|
38
|
+
const outputValue = index === routesLength - 1 ? STATE_ON_TOP : index >= routesLength - activeScreensLimit ? STATE_TRANSITIONING_OR_BELOW_TOP : STATE_INACTIVE;
|
|
39
39
|
const v = (0, _reactNativeReanimated.interpolate)(sceneProgress.value, [0, 1 - EPSILON, 1], [1, 1, outputValue], "clamp");
|
|
40
40
|
const next = Math.trunc(v) ?? STATE_TRANSITIONING_OR_BELOW_TOP;
|
|
41
41
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_reactNativeReanimated","_interopRequireWildcard","_reactNativeScreens","_animationStore","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","EPSILON","STATE_INACTIVE","STATE_TRANSITIONING_OR_BELOW_TOP","STATE_ON_TOP","AnimatedScreen","Animated","createAnimatedComponent","RNSScreen","Screen","routeKey","index","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_reactNativeReanimated","_interopRequireWildcard","_reactNativeScreens","_animationStore","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","EPSILON","STATE_INACTIVE","STATE_TRANSITIONING_OR_BELOW_TOP","STATE_ON_TOP","AnimatedScreen","Animated","createAnimatedComponent","RNSScreen","Screen","routeKey","index","routesLength","isPreloaded","activeScreensLimit","children","freezeOnBlur","shouldFreeze","sceneProgress","AnimationStore","getAnimation","screenActivity","useSharedValue","useDerivedValue","value","outputValue","v","interpolate","next","Math","trunc","animatedProps","useAnimatedProps","activityState","jsx","enabled","style","StyleSheet","absoluteFill","pointerEvents","exports"],"sourceRoot":"../../../../src","sources":["blank-stack/components/Screens.tsx"],"mappings":";;;;;;AAEA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,sBAAA,GAAAC,uBAAA,CAAAF,OAAA;AAMA,IAAAG,mBAAA,GAAAH,OAAA;AACA,IAAAI,eAAA,GAAAJ,OAAA;AAAqE,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAE,wBAAAI,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAN,uBAAA,YAAAA,CAAAI,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAarE,MAAMkB,OAAO,GAAG,IAAI;AAEpB,MAAMC,cAAc,GAAG,CAAC;AACxB,MAAMC,gCAAgC,GAAG,CAAC;AAC1C,MAAMC,YAAY,GAAG,CAAC;AAEtB,MAAMC,cAAc,GAAGC,8BAAQ,CAACC,uBAAuB,CAACC,0BAAS,CAAC;AAE3D,MAAMC,MAAM,GAAGA,CAAC;EACtBC,QAAQ;EACRC,KAAK;EACLC,YAAY;EACZC,WAAW;EACXC,kBAAkB;EAClBC,QAAQ;EACRC,YAAY;EACZC;AACY,CAAC,KAAK;EAClB,MAAMC,aAAa,GAAGC,8BAAc,CAACC,YAAY,CAACV,QAAQ,EAAE,UAAU,CAAC;EACvE,MAAMW,cAAc,GAAG,IAAAC,qCAAc,EAAY,CAAC,CAAC;EAEnD,IAAAC,sCAAe,EAAC,MAAM;IACrB,IAAI,CAACL,aAAa,EAAE;MACnBG,cAAc,CAACG,KAAK,GAAGrB,gCAAgC;MACvD;IACD;IAEA,IAAIQ,KAAK,GAAGC,YAAY,GAAGE,kBAAkB,GAAG,CAAC,IAAID,WAAW,EAAE;MACjEQ,cAAc,CAACG,KAAK,GAAGtB,cAAc;IACtC,CAAC,MAAM;MACN,MAAMuB,WAAW,GAChBd,KAAK,KAAKC,YAAY,GAAG,CAAC,GACvBR,YAAY,GACZO,KAAK,IAAIC,YAAY,GAAGE,kBAAkB,GACzCX,gCAAgC,GAChCD,cAAc;MAEnB,MAAMwB,CAAC,GAAG,IAAAC,kCAAW,EACpBT,aAAa,CAACM,KAAK,EACnB,CAAC,CAAC,EAAE,CAAC,GAAGvB,OAAO,EAAE,CAAC,CAAC,EACnB,CAAC,CAAC,EAAE,CAAC,EAAEwB,WAAW,CAAC,EACnB,OACD,CAAC;MAED,MAAMG,IAAI,GACRC,IAAI,CAACC,KAAK,CAACJ,CAAC,CAAC,IAAkBvB,gCAAgC;;MAEjE;MACA,IAAIyB,IAAI,KAAKP,cAAc,CAACG,KAAK,EAAE;QAClCH,cAAc,CAACG,KAAK,GAAGI,IAAI;MAC5B;IACD;EACD,CAAC,CAAC;EAEF,MAAMG,aAAa,GAAG,IAAAC,uCAAgB,EAAC,MAAM;IAC5C,OAAO;MACNC,aAAa,EAAEZ,cAAc,CAACG,KAAK;MACnCP,YAAY,EAAEI,cAAc,CAACG,KAAK,KAAKtB,cAAc,IAAIe;IAC1D,CAAC;EACF,CAAC,CAAC;EAEF,oBACC,IAAApC,WAAA,CAAAqD,GAAA,EAAC7B,cAAc;IACd8B,OAAO;IACPC,KAAK,EAAEC,uBAAU,CAACC,YAAa;IAC/BC,aAAa,EAAC,UAAU;IACxBvB,YAAY,EAAEA,YAAa;IAC3Be,aAAa,EAAEA,aAAc;IAAAhB,QAAA,EAE5BA;EAAQ,CACM,CAAC;AAEnB,CAAC;AAACyB,OAAA,CAAA/B,MAAA,GAAAA,MAAA","ignoreList":[]}
|
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.StackView = void 0;
|
|
7
7
|
var _elements = require("@react-navigation/elements");
|
|
8
8
|
var _native = require("@react-navigation/native");
|
|
9
|
+
var React = _interopRequireWildcard(require("react"));
|
|
9
10
|
var _reactNativeGestureHandler = require("react-native-gesture-handler");
|
|
10
11
|
var _reactNativeScreens = require("react-native-screens");
|
|
11
12
|
var _screenLifecycle = require("../../shared/components/controllers/screen-lifecycle");
|
|
@@ -14,10 +15,11 @@ var _withStackNavigation = require("../utils/with-stack-navigation");
|
|
|
14
15
|
var _Overlay = require("./Overlay");
|
|
15
16
|
var _Screens = require("./Screens");
|
|
16
17
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
18
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
17
19
|
function isFabric() {
|
|
18
20
|
return "nativeFabricUIManager" in global;
|
|
19
21
|
}
|
|
20
|
-
const SceneView = ({
|
|
22
|
+
const SceneView = /*#__PURE__*/React.memo(({
|
|
21
23
|
descriptor
|
|
22
24
|
}) => {
|
|
23
25
|
const {
|
|
@@ -32,7 +34,7 @@ const SceneView = ({
|
|
|
32
34
|
children: [descriptor.options.overlayMode === "screen" && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Overlay.Overlay.Screen, {}), render()]
|
|
33
35
|
})
|
|
34
36
|
});
|
|
35
|
-
};
|
|
37
|
+
});
|
|
36
38
|
const StackView = exports.StackView = (0, _withStackNavigation.withStackNavigationProvider)(({
|
|
37
39
|
activeScreensLimit,
|
|
38
40
|
descriptors,
|
|
@@ -64,7 +66,7 @@ const StackView = exports.StackView = (0, _withStackNavigation.withStackNavigati
|
|
|
64
66
|
index: sceneIndex,
|
|
65
67
|
activeScreensLimit: activeScreensLimit,
|
|
66
68
|
routeKey: route.key,
|
|
67
|
-
|
|
69
|
+
routesLength: routes.length,
|
|
68
70
|
shouldFreeze: shouldFreeze,
|
|
69
71
|
freezeOnBlur: descriptor.options.freezeOnBlur,
|
|
70
72
|
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_screenTransitionProvider.ScreenTransitionProvider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_elements","require","_native","_reactNativeGestureHandler","_reactNativeScreens","_screenLifecycle","_screenTransitionProvider","_withStackNavigation","_Overlay","_Screens","_jsxRuntime","isFabric","global","SceneView","descriptor","route","navigation","render","jsx","NavigationContext","Provider","value","children","jsxs","NavigationRouteContext","options","overlayMode","Overlay","Screen","StackView","exports","withStackNavigationProvider","activeScreensLimit","descriptors","focusedIndex","routes","scenes","shouldShowFloatOverlay","GestureHandlerRootView","SafeAreaProviderCompat","Float","ScreenContainer","style","flex","map","scene","sceneIndex","isFocused","isBelowFocused","previousDescriptor","undefined","nextDescriptor","isPreloaded","key","shouldFreeze","index","routeKey","freezeOnBlur","ScreenTransitionProvider","previous","current","next","LifecycleController","BlankStackScreenLifecycleController"],"sourceRoot":"../../../../src","sources":["blank-stack/components/StackView.tsx"],"mappings":";;;;;;AAAA,IAAAA,SAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAIA,IAAAE,0BAAA,
|
|
1
|
+
{"version":3,"names":["_elements","require","_native","React","_interopRequireWildcard","_reactNativeGestureHandler","_reactNativeScreens","_screenLifecycle","_screenTransitionProvider","_withStackNavigation","_Overlay","_Screens","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","isFabric","global","SceneView","memo","descriptor","route","navigation","render","jsx","NavigationContext","Provider","value","children","jsxs","NavigationRouteContext","options","overlayMode","Overlay","Screen","StackView","exports","withStackNavigationProvider","activeScreensLimit","descriptors","focusedIndex","routes","scenes","shouldShowFloatOverlay","GestureHandlerRootView","SafeAreaProviderCompat","Float","ScreenContainer","style","flex","map","scene","sceneIndex","isFocused","isBelowFocused","previousDescriptor","undefined","nextDescriptor","isPreloaded","key","shouldFreeze","index","routeKey","routesLength","length","freezeOnBlur","ScreenTransitionProvider","previous","current","next","LifecycleController","BlankStackScreenLifecycleController"],"sourceRoot":"../../../../src","sources":["blank-stack/components/StackView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -110,6 +110,27 @@ const useBoundsRegistry = ({
|
|
|
110
110
|
children: children
|
|
111
111
|
});
|
|
112
112
|
}, [IS_ROOT, sharedBoundTag, ROOT_SIGNAL]);
|
|
113
|
+
const prevNextRef = (0, _react.useRef)(next);
|
|
114
|
+
/**
|
|
115
|
+
* Measure non-pressable elements when the screen goes from focused to blurred
|
|
116
|
+
* (or when a new `next` descriptor appears) so we capture final bounds
|
|
117
|
+
* right before the transition starts.
|
|
118
|
+
*/
|
|
119
|
+
(0, _react.useLayoutEffect)(() => {
|
|
120
|
+
if (!sharedBoundTag || onPress) return;
|
|
121
|
+
const hadNext = !!prevNextRef.current;
|
|
122
|
+
const hasNext = !!next;
|
|
123
|
+
if (!hadNext && hasNext) {
|
|
124
|
+
(0, _reactNativeReanimated.runOnUI)(maybeMeasureAndStore)({});
|
|
125
|
+
}
|
|
126
|
+
prevNextRef.current = next;
|
|
127
|
+
}, [next, sharedBoundTag, onPress, maybeMeasureAndStore]);
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Signal child shared elements (nested under this provider) to refresh their
|
|
131
|
+
* measurements when the root updates, while preventing them from marking
|
|
132
|
+
* themselves active during that sync.
|
|
133
|
+
*/
|
|
113
134
|
(0, _reactNativeReanimated.useAnimatedReaction)(() => ROOT_MEASUREMENT_SIGNAL?.updateSignal.value, current => {
|
|
114
135
|
"worklet";
|
|
115
136
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNativeReanimated","_keys","_boundStore","_isBoundsEqual","_styles","_useStableCallback","_interopRequireDefault","_useStableCallbackValue","_jsxRuntime","e","__esModule","default","MeasurementUpdateContext","createContext","useBoundsRegistry","sharedBoundTag","animatedRef","style","onPress","previous","current","next","useKeys","preparedStyles","useMemo","prepareStyleForBounds","ROOT_MEASUREMENT_SIGNAL","useContext","ROOT_SIGNAL","useSharedValue","IS_ROOT","emitUpdate","useStableCallbackValue","value","maybeMeasureAndStore","skipMarkingActive","measured","measure","console","warn","key","route","isBoundsEqual","BoundStore","setRouteActive","runOnJS","setBounds","hasMeasuredOnLayout","handleInitialLayout","prevKey","prevBounds","getBounds","captureActiveOnPress","useStableCallback","runOnUI","MeasurementSyncProvider","Fragment","children","jsx","Provider","updateSignal","useAnimatedReaction","undefined","exports"],"sourceRoot":"../../../../../src","sources":["shared/hooks/bounds/use-bound-registry.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNativeReanimated","_keys","_boundStore","_isBoundsEqual","_styles","_useStableCallback","_interopRequireDefault","_useStableCallbackValue","_jsxRuntime","e","__esModule","default","MeasurementUpdateContext","createContext","useBoundsRegistry","sharedBoundTag","animatedRef","style","onPress","previous","current","next","useKeys","preparedStyles","useMemo","prepareStyleForBounds","ROOT_MEASUREMENT_SIGNAL","useContext","ROOT_SIGNAL","useSharedValue","IS_ROOT","emitUpdate","useStableCallbackValue","value","maybeMeasureAndStore","skipMarkingActive","measured","measure","console","warn","key","route","isBoundsEqual","BoundStore","setRouteActive","runOnJS","setBounds","hasMeasuredOnLayout","handleInitialLayout","prevKey","prevBounds","getBounds","captureActiveOnPress","useStableCallback","runOnUI","MeasurementSyncProvider","Fragment","children","jsx","Provider","updateSignal","prevNextRef","useRef","useLayoutEffect","hadNext","hasNext","useAnimatedReaction","undefined","exports"],"sourceRoot":"../../../../../src","sources":["shared/hooks/bounds/use-bound-registry.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,7 +13,7 @@ const AnimatedScreen = Animated.createAnimatedComponent(RNSScreen);
|
|
|
13
13
|
export const Screen = ({
|
|
14
14
|
routeKey,
|
|
15
15
|
index,
|
|
16
|
-
|
|
16
|
+
routesLength,
|
|
17
17
|
isPreloaded,
|
|
18
18
|
activeScreensLimit,
|
|
19
19
|
children,
|
|
@@ -27,10 +27,10 @@ export const Screen = ({
|
|
|
27
27
|
screenActivity.value = STATE_TRANSITIONING_OR_BELOW_TOP;
|
|
28
28
|
return;
|
|
29
29
|
}
|
|
30
|
-
if (index <
|
|
30
|
+
if (index < routesLength - activeScreensLimit - 1 || isPreloaded) {
|
|
31
31
|
screenActivity.value = STATE_INACTIVE;
|
|
32
32
|
} else {
|
|
33
|
-
const outputValue = index ===
|
|
33
|
+
const outputValue = index === routesLength - 1 ? STATE_ON_TOP : index >= routesLength - activeScreensLimit ? STATE_TRANSITIONING_OR_BELOW_TOP : STATE_INACTIVE;
|
|
34
34
|
const v = interpolate(sceneProgress.value, [0, 1 - EPSILON, 1], [1, 1, outputValue], "clamp");
|
|
35
35
|
const next = Math.trunc(v) ?? STATE_TRANSITIONING_OR_BELOW_TOP;
|
|
36
36
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","Animated","interpolate","useAnimatedProps","useDerivedValue","useSharedValue","Screen","RNSScreen","AnimationStore","jsx","_jsx","EPSILON","STATE_INACTIVE","STATE_TRANSITIONING_OR_BELOW_TOP","STATE_ON_TOP","AnimatedScreen","createAnimatedComponent","routeKey","index","
|
|
1
|
+
{"version":3,"names":["StyleSheet","Animated","interpolate","useAnimatedProps","useDerivedValue","useSharedValue","Screen","RNSScreen","AnimationStore","jsx","_jsx","EPSILON","STATE_INACTIVE","STATE_TRANSITIONING_OR_BELOW_TOP","STATE_ON_TOP","AnimatedScreen","createAnimatedComponent","routeKey","index","routesLength","isPreloaded","activeScreensLimit","children","freezeOnBlur","shouldFreeze","sceneProgress","getAnimation","screenActivity","value","outputValue","v","next","Math","trunc","animatedProps","activityState","enabled","style","absoluteFill","pointerEvents"],"sourceRoot":"../../../../src","sources":["blank-stack/components/Screens.tsx"],"mappings":";;AAEA,SAASA,UAAU,QAAQ,cAAc;AACzC,OAAOC,QAAQ,IACdC,WAAW,EACXC,gBAAgB,EAChBC,eAAe,EACfC,cAAc,QACR,yBAAyB;AAChC,SAASC,MAAM,IAAIC,SAAS,QAAQ,sBAAsB;AAC1D,SAASC,cAAc,QAAQ,qCAAqC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAarE,MAAMC,OAAO,GAAG,IAAI;AAEpB,MAAMC,cAAc,GAAG,CAAC;AACxB,MAAMC,gCAAgC,GAAG,CAAC;AAC1C,MAAMC,YAAY,GAAG,CAAC;AAEtB,MAAMC,cAAc,GAAGd,QAAQ,CAACe,uBAAuB,CAACT,SAAS,CAAC;AAElE,OAAO,MAAMD,MAAM,GAAGA,CAAC;EACtBW,QAAQ;EACRC,KAAK;EACLC,YAAY;EACZC,WAAW;EACXC,kBAAkB;EAClBC,QAAQ;EACRC,YAAY;EACZC;AACY,CAAC,KAAK;EAClB,MAAMC,aAAa,GAAGjB,cAAc,CAACkB,YAAY,CAACT,QAAQ,EAAE,UAAU,CAAC;EACvE,MAAMU,cAAc,GAAGtB,cAAc,CAAY,CAAC,CAAC;EAEnDD,eAAe,CAAC,MAAM;IACrB,IAAI,CAACqB,aAAa,EAAE;MACnBE,cAAc,CAACC,KAAK,GAAGf,gCAAgC;MACvD;IACD;IAEA,IAAIK,KAAK,GAAGC,YAAY,GAAGE,kBAAkB,GAAG,CAAC,IAAID,WAAW,EAAE;MACjEO,cAAc,CAACC,KAAK,GAAGhB,cAAc;IACtC,CAAC,MAAM;MACN,MAAMiB,WAAW,GAChBX,KAAK,KAAKC,YAAY,GAAG,CAAC,GACvBL,YAAY,GACZI,KAAK,IAAIC,YAAY,GAAGE,kBAAkB,GACzCR,gCAAgC,GAChCD,cAAc;MAEnB,MAAMkB,CAAC,GAAG5B,WAAW,CACpBuB,aAAa,CAACG,KAAK,EACnB,CAAC,CAAC,EAAE,CAAC,GAAGjB,OAAO,EAAE,CAAC,CAAC,EACnB,CAAC,CAAC,EAAE,CAAC,EAAEkB,WAAW,CAAC,EACnB,OACD,CAAC;MAED,MAAME,IAAI,GACRC,IAAI,CAACC,KAAK,CAACH,CAAC,CAAC,IAAkBjB,gCAAgC;;MAEjE;MACA,IAAIkB,IAAI,KAAKJ,cAAc,CAACC,KAAK,EAAE;QAClCD,cAAc,CAACC,KAAK,GAAGG,IAAI;MAC5B;IACD;EACD,CAAC,CAAC;EAEF,MAAMG,aAAa,GAAG/B,gBAAgB,CAAC,MAAM;IAC5C,OAAO;MACNgC,aAAa,EAAER,cAAc,CAACC,KAAK;MACnCJ,YAAY,EAAEG,cAAc,CAACC,KAAK,KAAKhB,cAAc,IAAIY;IAC1D,CAAC;EACF,CAAC,CAAC;EAEF,oBACCd,IAAA,CAACK,cAAc;IACdqB,OAAO;IACPC,KAAK,EAAErC,UAAU,CAACsC,YAAa;IAC/BC,aAAa,EAAC,UAAU;IACxBhB,YAAY,EAAEA,YAAa;IAC3BW,aAAa,EAAEA,aAAc;IAAAZ,QAAA,EAE5BA;EAAQ,CACM,CAAC;AAEnB,CAAC","ignoreList":[]}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { SafeAreaProviderCompat } from "@react-navigation/elements";
|
|
4
4
|
import { NavigationContext, NavigationRouteContext } from "@react-navigation/native";
|
|
5
|
+
import * as React from "react";
|
|
5
6
|
import { GestureHandlerRootView } from "react-native-gesture-handler";
|
|
6
7
|
import { ScreenContainer } from "react-native-screens";
|
|
7
8
|
import { BlankStackScreenLifecycleController } from "../../shared/components/controllers/screen-lifecycle";
|
|
@@ -13,7 +14,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
|
13
14
|
function isFabric() {
|
|
14
15
|
return "nativeFabricUIManager" in global;
|
|
15
16
|
}
|
|
16
|
-
const SceneView = ({
|
|
17
|
+
const SceneView = /*#__PURE__*/React.memo(({
|
|
17
18
|
descriptor
|
|
18
19
|
}) => {
|
|
19
20
|
const {
|
|
@@ -28,7 +29,7 @@ const SceneView = ({
|
|
|
28
29
|
children: [descriptor.options.overlayMode === "screen" && /*#__PURE__*/_jsx(Overlay.Screen, {}), render()]
|
|
29
30
|
})
|
|
30
31
|
});
|
|
31
|
-
};
|
|
32
|
+
});
|
|
32
33
|
export const StackView = withStackNavigationProvider(({
|
|
33
34
|
activeScreensLimit,
|
|
34
35
|
descriptors,
|
|
@@ -60,7 +61,7 @@ export const StackView = withStackNavigationProvider(({
|
|
|
60
61
|
index: sceneIndex,
|
|
61
62
|
activeScreensLimit: activeScreensLimit,
|
|
62
63
|
routeKey: route.key,
|
|
63
|
-
|
|
64
|
+
routesLength: routes.length,
|
|
64
65
|
shouldFreeze: shouldFreeze,
|
|
65
66
|
freezeOnBlur: descriptor.options.freezeOnBlur,
|
|
66
67
|
children: /*#__PURE__*/_jsx(ScreenTransitionProvider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["SafeAreaProviderCompat","NavigationContext","NavigationRouteContext","GestureHandlerRootView","ScreenContainer","BlankStackScreenLifecycleController","ScreenTransitionProvider","withStackNavigationProvider","Overlay","Screen","jsx","_jsx","jsxs","_jsxs","isFabric","global","SceneView","descriptor","route","navigation","render","Provider","value","children","options","overlayMode","StackView","activeScreensLimit","descriptors","focusedIndex","routes","scenes","shouldShowFloatOverlay","Float","style","flex","map","scene","sceneIndex","isFocused","isBelowFocused","previousDescriptor","undefined","nextDescriptor","isPreloaded","key","shouldFreeze","index","routeKey","freezeOnBlur","previous","current","next","LifecycleController"],"sourceRoot":"../../../../src","sources":["blank-stack/components/StackView.tsx"],"mappings":";;AAAA,SAASA,sBAAsB,QAAQ,4BAA4B;AACnE,SACCC,iBAAiB,EACjBC,sBAAsB,QAChB,0BAA0B;AACjC,SAASC,sBAAsB,QAAQ,8BAA8B;AACrE,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,mCAAmC,QAAQ,sDAAsD;AAC1G,SAASC,wBAAwB,QAAQ,mDAAmD;AAE5F,SAASC,2BAA2B,QAAQ,gCAAgC;AAC5E,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,MAAM,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAEnC,SAASC,QAAQA,CAAA,EAAG;EACnB,OAAO,uBAAuB,IAAIC,MAAM;AACzC;AAQA,MAAMC,SAAS,
|
|
1
|
+
{"version":3,"names":["SafeAreaProviderCompat","NavigationContext","NavigationRouteContext","React","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","flex","map","scene","sceneIndex","isFocused","isBelowFocused","previousDescriptor","undefined","nextDescriptor","isPreloaded","key","shouldFreeze","index","routeKey","routesLength","length","freezeOnBlur","previous","current","next","LifecycleController"],"sourceRoot":"../../../../src","sources":["blank-stack/components/StackView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { createContext, Fragment, useContext, useMemo } from "react";
|
|
3
|
+
import { createContext, Fragment, useContext, useLayoutEffect, useMemo, useRef } from "react";
|
|
4
4
|
import { measure, runOnJS, runOnUI, useAnimatedReaction, useSharedValue } from "react-native-reanimated";
|
|
5
5
|
import { useKeys } from "../../providers/keys";
|
|
6
6
|
import { BoundStore } from "../../stores/bound-store";
|
|
@@ -105,6 +105,27 @@ export const useBoundsRegistry = ({
|
|
|
105
105
|
children: children
|
|
106
106
|
});
|
|
107
107
|
}, [IS_ROOT, sharedBoundTag, ROOT_SIGNAL]);
|
|
108
|
+
const prevNextRef = useRef(next);
|
|
109
|
+
/**
|
|
110
|
+
* Measure non-pressable elements when the screen goes from focused to blurred
|
|
111
|
+
* (or when a new `next` descriptor appears) so we capture final bounds
|
|
112
|
+
* right before the transition starts.
|
|
113
|
+
*/
|
|
114
|
+
useLayoutEffect(() => {
|
|
115
|
+
if (!sharedBoundTag || onPress) return;
|
|
116
|
+
const hadNext = !!prevNextRef.current;
|
|
117
|
+
const hasNext = !!next;
|
|
118
|
+
if (!hadNext && hasNext) {
|
|
119
|
+
runOnUI(maybeMeasureAndStore)({});
|
|
120
|
+
}
|
|
121
|
+
prevNextRef.current = next;
|
|
122
|
+
}, [next, sharedBoundTag, onPress, maybeMeasureAndStore]);
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Signal child shared elements (nested under this provider) to refresh their
|
|
126
|
+
* measurements when the root updates, while preventing them from marking
|
|
127
|
+
* themselves active during that sync.
|
|
128
|
+
*/
|
|
108
129
|
useAnimatedReaction(() => ROOT_MEASUREMENT_SIGNAL?.updateSignal.value, current => {
|
|
109
130
|
"worklet";
|
|
110
131
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createContext","Fragment","useContext","useMemo","measure","runOnJS","runOnUI","useAnimatedReaction","useSharedValue","useKeys","BoundStore","isBoundsEqual","prepareStyleForBounds","useStableCallback","useStableCallbackValue","jsx","_jsx","MeasurementUpdateContext","useBoundsRegistry","sharedBoundTag","animatedRef","style","onPress","previous","current","next","preparedStyles","ROOT_MEASUREMENT_SIGNAL","ROOT_SIGNAL","IS_ROOT","emitUpdate","value","maybeMeasureAndStore","skipMarkingActive","measured","console","warn","key","route","setRouteActive","setBounds","hasMeasuredOnLayout","handleInitialLayout","prevKey","prevBounds","getBounds","captureActiveOnPress","MeasurementSyncProvider","children","Provider","updateSignal","undefined"],"sourceRoot":"../../../../../src","sources":["shared/hooks/bounds/use-bound-registry.tsx"],"mappings":";;AAAA,
|
|
1
|
+
{"version":3,"names":["createContext","Fragment","useContext","useLayoutEffect","useMemo","useRef","measure","runOnJS","runOnUI","useAnimatedReaction","useSharedValue","useKeys","BoundStore","isBoundsEqual","prepareStyleForBounds","useStableCallback","useStableCallbackValue","jsx","_jsx","MeasurementUpdateContext","useBoundsRegistry","sharedBoundTag","animatedRef","style","onPress","previous","current","next","preparedStyles","ROOT_MEASUREMENT_SIGNAL","ROOT_SIGNAL","IS_ROOT","emitUpdate","value","maybeMeasureAndStore","skipMarkingActive","measured","console","warn","key","route","setRouteActive","setBounds","hasMeasuredOnLayout","handleInitialLayout","prevKey","prevBounds","getBounds","captureActiveOnPress","MeasurementSyncProvider","children","Provider","updateSignal","prevNextRef","hadNext","hasNext","undefined"],"sourceRoot":"../../../../../src","sources":["shared/hooks/bounds/use-bound-registry.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,15 +1,14 @@
|
|
|
1
|
-
import type { NavigationRoute, ParamListBase } from "@react-navigation/native";
|
|
2
1
|
import type * as React from "react";
|
|
3
2
|
interface ScreenProps {
|
|
4
3
|
routeKey: string;
|
|
5
4
|
index: number;
|
|
6
|
-
|
|
5
|
+
routesLength: number;
|
|
7
6
|
isPreloaded: boolean;
|
|
8
7
|
children: React.ReactNode;
|
|
9
8
|
freezeOnBlur?: boolean;
|
|
10
9
|
shouldFreeze?: boolean;
|
|
11
10
|
activeScreensLimit: number;
|
|
12
11
|
}
|
|
13
|
-
export declare const Screen: ({ routeKey, index,
|
|
12
|
+
export declare const Screen: ({ routeKey, index, routesLength, isPreloaded, activeScreensLimit, children, freezeOnBlur, shouldFreeze, }: ScreenProps) => import("react/jsx-runtime").JSX.Element;
|
|
14
13
|
export {};
|
|
15
14
|
//# sourceMappingURL=Screens.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Screens.d.ts","sourceRoot":"","sources":["../../../../src/blank-stack/components/Screens.tsx"],"names":[],"mappings":"
|
|
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 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StackView.d.ts","sourceRoot":"","sources":["../../../../src/blank-stack/components/StackView.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"StackView.d.ts","sourceRoot":"","sources":["../../../../src/blank-stack/components/StackView.tsx"],"names":[],"mappings":"AAsCA,eAAO,MAAM,SAAS,iIAgErB,CAAC"}
|
|
@@ -2,15 +2,15 @@ export declare const Specs: {
|
|
|
2
2
|
DefaultSpec: import("react-native-reanimated/lib/typescript/animation/spring").SpringConfig;
|
|
3
3
|
};
|
|
4
4
|
export declare const Presets: {
|
|
5
|
-
SlideFromTop: (config?: Partial<import("
|
|
6
|
-
ZoomIn: (config?: Partial<import("
|
|
7
|
-
SlideFromBottom: (config?: Partial<import("
|
|
8
|
-
DraggableCard: (config?: Partial<import("
|
|
9
|
-
ElasticCard: (config?: Partial<import("
|
|
5
|
+
SlideFromTop: (config?: Partial<import("..").ScreenTransitionConfig>) => import("..").ScreenTransitionConfig;
|
|
6
|
+
ZoomIn: (config?: Partial<import("..").ScreenTransitionConfig>) => import("..").ScreenTransitionConfig;
|
|
7
|
+
SlideFromBottom: (config?: Partial<import("..").ScreenTransitionConfig>) => import("..").ScreenTransitionConfig;
|
|
8
|
+
DraggableCard: (config?: Partial<import("..").ScreenTransitionConfig>) => import("..").ScreenTransitionConfig;
|
|
9
|
+
ElasticCard: (config?: Partial<import("..").ScreenTransitionConfig> & {
|
|
10
10
|
elasticFactor?: number;
|
|
11
|
-
}) => import("
|
|
12
|
-
SharedIGImage: (config?: Partial<import("
|
|
13
|
-
SharedAppleMusic: (config?: Partial<import("
|
|
14
|
-
SharedXImage: (config?: Partial<import("
|
|
11
|
+
}) => import("..").ScreenTransitionConfig;
|
|
12
|
+
SharedIGImage: (config?: Partial<import("..").ScreenTransitionConfig>) => import("..").ScreenTransitionConfig;
|
|
13
|
+
SharedAppleMusic: (config?: Partial<import("..").ScreenTransitionConfig>) => import("..").ScreenTransitionConfig;
|
|
14
|
+
SharedXImage: (config?: Partial<import("..").ScreenTransitionConfig>) => import("..").ScreenTransitionConfig;
|
|
15
15
|
};
|
|
16
16
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-bound-registry.d.ts","sourceRoot":"","sources":["../../../../../src/shared/hooks/bounds/use-bound-registry.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"use-bound-registry.d.ts","sourceRoot":"","sources":["../../../../../src/shared/hooks/bounds/use-bound-registry.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACN,KAAK,WAAW,EAIhB,KAAK,UAAU,EAGf,MAAM,yBAAyB,CAAC;AASjC,UAAU,sBAAsB;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC/B,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACrD;AAcD,eAAO,MAAM,iBAAiB,GAAI,kDAK/B,sBAAsB;;;8GAoFD;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE;CAiDpD,CAAC"}
|
|
@@ -1320,5 +1320,6 @@ declare const _default: {
|
|
|
1320
1320
|
};
|
|
1321
1321
|
export default _default;
|
|
1322
1322
|
export { useScreenAnimation } from "./hooks/animation/use-screen-animation";
|
|
1323
|
-
export type { OverlayInterpolationProps, ScreenInterpolationProps, } from "./types/animation";
|
|
1323
|
+
export type { AnimationConfig, OverlayInterpolationProps, ScreenInterpolationProps, ScreenStyleInterpolator, } from "./types/animation";
|
|
1324
|
+
export type { ScreenTransitionConfig } from "./types/core";
|
|
1324
1325
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAChG,OAAO,UAAU,MAAM,uCAAuC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,UAAU,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,8BAA8B,EAAE,MAAM,gDAAgD,CAAC;AAChG,OAAO,UAAU,MAAM,uCAAuC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA2BmiE,CAAC;;;;;;;;;;AAxBnmE,wBAaE;AAEF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAE5E,YAAY,EACX,eAAe,EACf,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@ import { AnimationStore } from "../../shared/stores/animation-store";
|
|
|
13
13
|
interface ScreenProps {
|
|
14
14
|
routeKey: string;
|
|
15
15
|
index: number;
|
|
16
|
-
|
|
16
|
+
routesLength: number;
|
|
17
17
|
isPreloaded: boolean;
|
|
18
18
|
children: React.ReactNode;
|
|
19
19
|
freezeOnBlur?: boolean;
|
|
@@ -32,7 +32,7 @@ const AnimatedScreen = Animated.createAnimatedComponent(RNSScreen);
|
|
|
32
32
|
export const Screen = ({
|
|
33
33
|
routeKey,
|
|
34
34
|
index,
|
|
35
|
-
|
|
35
|
+
routesLength,
|
|
36
36
|
isPreloaded,
|
|
37
37
|
activeScreensLimit,
|
|
38
38
|
children,
|
|
@@ -48,13 +48,13 @@ export const Screen = ({
|
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
if (index <
|
|
51
|
+
if (index < routesLength - activeScreensLimit - 1 || isPreloaded) {
|
|
52
52
|
screenActivity.value = STATE_INACTIVE;
|
|
53
53
|
} else {
|
|
54
54
|
const outputValue =
|
|
55
|
-
index ===
|
|
55
|
+
index === routesLength - 1
|
|
56
56
|
? STATE_ON_TOP
|
|
57
|
-
: index >=
|
|
57
|
+
: index >= routesLength - activeScreensLimit
|
|
58
58
|
? STATE_TRANSITIONING_OR_BELOW_TOP
|
|
59
59
|
: STATE_INACTIVE;
|
|
60
60
|
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
NavigationContext,
|
|
4
4
|
NavigationRouteContext,
|
|
5
5
|
} from "@react-navigation/native";
|
|
6
|
+
import * as React from "react";
|
|
6
7
|
import { GestureHandlerRootView } from "react-native-gesture-handler";
|
|
7
8
|
import { ScreenContainer } from "react-native-screens";
|
|
8
9
|
import { BlankStackScreenLifecycleController } from "../../shared/components/controllers/screen-lifecycle";
|
|
@@ -22,7 +23,7 @@ type SceneViewProps = {
|
|
|
22
23
|
sceneIndex: number;
|
|
23
24
|
};
|
|
24
25
|
|
|
25
|
-
const SceneView = ({ descriptor }: SceneViewProps) => {
|
|
26
|
+
const SceneView = React.memo(({ descriptor }: SceneViewProps) => {
|
|
26
27
|
const { route, navigation, render } = descriptor;
|
|
27
28
|
|
|
28
29
|
return (
|
|
@@ -33,7 +34,7 @@ const SceneView = ({ descriptor }: SceneViewProps) => {
|
|
|
33
34
|
</NavigationRouteContext.Provider>
|
|
34
35
|
</NavigationContext.Provider>
|
|
35
36
|
);
|
|
36
|
-
};
|
|
37
|
+
});
|
|
37
38
|
|
|
38
39
|
export const StackView = withStackNavigationProvider(
|
|
39
40
|
({
|
|
@@ -74,7 +75,7 @@ export const StackView = withStackNavigationProvider(
|
|
|
74
75
|
index={sceneIndex}
|
|
75
76
|
activeScreensLimit={activeScreensLimit}
|
|
76
77
|
routeKey={route.key}
|
|
77
|
-
|
|
78
|
+
routesLength={routes.length}
|
|
78
79
|
shouldFreeze={shouldFreeze}
|
|
79
80
|
freezeOnBlur={descriptor.options.freezeOnBlur}
|
|
80
81
|
>
|
|
@@ -1,4 +1,11 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
createContext,
|
|
3
|
+
Fragment,
|
|
4
|
+
useContext,
|
|
5
|
+
useLayoutEffect,
|
|
6
|
+
useMemo,
|
|
7
|
+
useRef,
|
|
8
|
+
} from "react";
|
|
2
9
|
import type { View } from "react-native";
|
|
3
10
|
import {
|
|
4
11
|
type AnimatedRef,
|
|
@@ -132,6 +139,30 @@ export const useBoundsRegistry = ({
|
|
|
132
139
|
);
|
|
133
140
|
}, [IS_ROOT, sharedBoundTag, ROOT_SIGNAL]);
|
|
134
141
|
|
|
142
|
+
const prevNextRef = useRef(next);
|
|
143
|
+
/**
|
|
144
|
+
* Measure non-pressable elements when the screen goes from focused to blurred
|
|
145
|
+
* (or when a new `next` descriptor appears) so we capture final bounds
|
|
146
|
+
* right before the transition starts.
|
|
147
|
+
*/
|
|
148
|
+
useLayoutEffect(() => {
|
|
149
|
+
if (!sharedBoundTag || onPress) return;
|
|
150
|
+
|
|
151
|
+
const hadNext = !!prevNextRef.current;
|
|
152
|
+
const hasNext = !!next;
|
|
153
|
+
|
|
154
|
+
if (!hadNext && hasNext) {
|
|
155
|
+
runOnUI(maybeMeasureAndStore)({});
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
prevNextRef.current = next;
|
|
159
|
+
}, [next, sharedBoundTag, onPress, maybeMeasureAndStore]);
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Signal child shared elements (nested under this provider) to refresh their
|
|
163
|
+
* measurements when the root updates, while preventing them from marking
|
|
164
|
+
* themselves active during that sync.
|
|
165
|
+
*/
|
|
135
166
|
useAnimatedReaction(
|
|
136
167
|
() => ROOT_MEASUREMENT_SIGNAL?.updateSignal.value,
|
|
137
168
|
(current) => {
|
package/src/shared/index.ts
CHANGED
|
@@ -21,6 +21,9 @@ export default {
|
|
|
21
21
|
export { useScreenAnimation } from "./hooks/animation/use-screen-animation";
|
|
22
22
|
|
|
23
23
|
export type {
|
|
24
|
+
AnimationConfig,
|
|
24
25
|
OverlayInterpolationProps,
|
|
25
26
|
ScreenInterpolationProps,
|
|
27
|
+
ScreenStyleInterpolator,
|
|
26
28
|
} from "./types/animation";
|
|
29
|
+
export type { ScreenTransitionConfig } from "./types/core";
|