react-native-screen-transitions 2.3.3 → 2.3.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 CHANGED
@@ -146,16 +146,28 @@ Ready-made presets for common shared-element patterns. These leverage the bounds
146
146
 
147
147
  Other presets: `SharedAppleMusic()`, `SharedXImage()`.
148
148
 
149
- Note: Masked container required
149
+ #### 🎭 Masked View Setup (Required for SharedIGImage & SharedAppleMusic)
150
150
 
151
- - For `SharedIGImage` and `SharedAppleMusic`, wrap the next screen with `Transition.MaskedView` as the first element so the preset can animate `_ROOT_CONTAINER` and `_ROOT_MASKED` correctly.
152
- - Install the mask package:
153
- - Expo: `npx expo install @react-native-masked-view/masked-view`
154
- - Bare RN: `npm i @react-native-masked-view/masked-view` (then iOS: `cd ios && pod install`)
155
- - `Transition.MaskedView` lazy-loads the native mask and falls back to a plain `View` if missing, but the mask is required for the full shared effect.
151
+ > **⚠️ Important**: These presets require native code and **will not work in Expo Go**. You must use a development build.
156
152
 
157
- Minimal usage on the destination screen:
153
+ **1. Install the dependency**
154
+ ```bash
155
+ # Expo projects
156
+ npx expo install @react-native-masked-view/masked-view
157
+
158
+ # Bare React Native
159
+ npm install @react-native-masked-view/masked-view
160
+ cd ios && pod install # iOS only
161
+ ```
158
162
 
163
+ **2. Create a development build** (if using Expo)
164
+ ```bash
165
+ npx expo run:ios
166
+ # or
167
+ npx expo run:android
168
+ ```
169
+
170
+ **3. Wrap your destination screen**
159
171
  ```tsx
160
172
  export default function PostScreen() {
161
173
  return (
@@ -166,6 +178,10 @@ export default function PostScreen() {
166
178
  }
167
179
  ```
168
180
 
181
+ > **💡 Fallback behavior**: `Transition.MaskedView` will fall back to a plain `View` if the masked view library is missing, but this breaks the shared element effect and may cause errors like "bounds is not a function".
182
+
183
+ ---
184
+
169
185
  ### Navigator-level custom animations
170
186
 
171
187
  Instead of presets, you can define a custom transition directly on the screen’s options.
@@ -23,15 +23,12 @@ const ScreenLifecycleController = ({
23
23
  const handleBeforeRemove = (0, _useStableCallback.default)(e => {
24
24
  const key = current.navigation.getParent()?.getState().key;
25
25
  const requestedDismissOnNavigator = _navigatorDismissState.NavigatorDismissState.get(key);
26
+ const isEnabled = current.options.enableTransitions;
27
+ const isRequestedDismissOnNavigator = requestedDismissOnNavigator;
28
+ const isFirstScreen = current.navigation.getState().index === 0;
26
29
 
27
- // Don't run e.preventDefault when the dismissal was on the local root
28
- if (requestedDismissOnNavigator) {
29
- (0, _resetStoresForScreen.resetStoresForScreen)(current);
30
- return;
31
- }
32
-
33
- // Don't run e.preventDefault when this is the first screen of the stack
34
- if (current.navigation.getState().index === 0) {
30
+ // If transitions are disabled, or the dismissal was on the local root, or this is the first screen of the stack, reset the stores
31
+ if (!isEnabled || isRequestedDismissOnNavigator || isFirstScreen) {
35
32
  (0, _resetStoresForScreen.resetStoresForScreen)(current);
36
33
  return;
37
34
  }
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_useParentGestureRegistry","_useStableCallback","_interopRequireDefault","_keys","_animations","_navigatorDismissState","_resetStoresForScreen","_startScreenTransition","e","__esModule","default","ScreenLifecycleController","children","current","useKeys","animations","Animations","getAll","route","key","handleBeforeRemove","useStableCallback","navigation","getParent","getState","requestedDismissOnNavigator","NavigatorDismissState","get","resetStoresForScreen","index","preventDefault","onAnimationFinish","finished","dispatch","data","action","requestAnimationFrame","startScreenTransition","target","spec","options","transitionSpec","handleInitialize","useEffect","unsubscribe","addListener","useLayoutEffect","useParentGestureRegistry","exports"],"sourceRoot":"../../../../src","sources":["components/controllers/screen-lifecycle.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,yBAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,sBAAA,GAAAN,OAAA;AACA,IAAAO,qBAAA,GAAAP,OAAA;AACA,IAAAQ,sBAAA,GAAAR,OAAA;AAAsF,SAAAG,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAM/E,MAAMG,yBAAyB,GAAGA,CAAC;EACzCC;AACqB,CAAC,KAAK;EAC3B,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,aAAO,EAAC,CAAC;EAE7B,MAAMC,UAAU,GAAGC,sBAAU,CAACC,MAAM,CAACJ,OAAO,CAACK,KAAK,CAACC,GAAG,CAAC;EAEvD,MAAMC,kBAAkB,GAAG,IAAAC,0BAAiB,EAAEb,CAAM,IAAK;IACxD,MAAMW,GAAG,GAAGN,OAAO,CAACS,UAAU,CAACC,SAAS,CAAC,CAAC,EAAEC,QAAQ,CAAC,CAAC,CAACL,GAAG;IAC1D,MAAMM,2BAA2B,GAAGC,4CAAqB,CAACC,GAAG,CAACR,GAAG,CAAC;;IAElE;IACA,IAAIM,2BAA2B,EAAE;MAChC,IAAAG,0CAAoB,EAACf,OAAO,CAAC;MAC7B;IACD;;IAEA;IACA,IAAIA,OAAO,CAACS,UAAU,CAACE,QAAQ,CAAC,CAAC,CAACK,KAAK,KAAK,CAAC,EAAE;MAC9C,IAAAD,0CAAoB,EAACf,OAAO,CAAC;MAC7B;IACD;IAEAL,CAAC,CAACsB,cAAc,CAAC,CAAC;IAClB,MAAMC,iBAAiB,GAAIC,QAAiB,IAAK;MAChD,IAAIA,QAAQ,EAAE;QACbnB,OAAO,CAACS,UAAU,CAACW,QAAQ,CAACzB,CAAC,CAAC0B,IAAI,CAACC,MAAM,CAAC;;QAE1C;QACAC,qBAAqB,CAAC,MAAM;UAC3B,IAAAR,0CAAoB,EAACf,OAAO,CAAC;QAC9B,CAAC,CAAC;MACH;IACD,CAAC;IAED,IAAAwB,4CAAqB,EAAC;MACrBC,MAAM,EAAE,OAAO;MACfC,IAAI,EAAE1B,OAAO,CAAC2B,OAAO,CAACC,cAAc;MACpCV,iBAAiB;MACjBhB;IACD,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,MAAM2B,gBAAgB,GAAG,IAAArB,0BAAiB,EAAC,MAAM;IAChD,IAAAgB,4CAAqB,EAAC;MACrBC,MAAM,EAAE,MAAM;MACdC,IAAI,EAAE1B,OAAO,CAAC2B,OAAO,CAACC,cAAc;MACpC1B;IACD,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,IAAA4B,gBAAS,EAAC,MAAM;IACf,MAAMC,WAAW,GAAG/B,OAAO,CAACS,UAAU,CAACuB,WAAW,CACjD,cAAc,EACdzB,kBACD,CAAC;IAED,OAAOwB,WAAW;EACnB,CAAC,EAAE,CAAC/B,OAAO,CAACS,UAAU,EAAEF,kBAAkB,CAAC,CAAC;EAE5C,IAAA0B,sBAAe,EAACJ,gBAAgB,EAAE,EAAE,CAAC;;EAErC;EACA,IAAAK,kDAAwB,EAAC,CAAC;EAE1B,OAAOnC,QAAQ;AAChB,CAAC;AAACoC,OAAA,CAAArC,yBAAA,GAAAA,yBAAA","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_useParentGestureRegistry","_useStableCallback","_interopRequireDefault","_keys","_animations","_navigatorDismissState","_resetStoresForScreen","_startScreenTransition","e","__esModule","default","ScreenLifecycleController","children","current","useKeys","animations","Animations","getAll","route","key","handleBeforeRemove","useStableCallback","navigation","getParent","getState","requestedDismissOnNavigator","NavigatorDismissState","get","isEnabled","options","enableTransitions","isRequestedDismissOnNavigator","isFirstScreen","index","resetStoresForScreen","preventDefault","onAnimationFinish","finished","dispatch","data","action","requestAnimationFrame","startScreenTransition","target","spec","transitionSpec","handleInitialize","useEffect","unsubscribe","addListener","useLayoutEffect","useParentGestureRegistry","exports"],"sourceRoot":"../../../../src","sources":["components/controllers/screen-lifecycle.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,yBAAA,GAAAD,OAAA;AACA,IAAAE,kBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,KAAA,GAAAJ,OAAA;AACA,IAAAK,WAAA,GAAAL,OAAA;AACA,IAAAM,sBAAA,GAAAN,OAAA;AACA,IAAAO,qBAAA,GAAAP,OAAA;AACA,IAAAQ,sBAAA,GAAAR,OAAA;AAAsF,SAAAG,uBAAAM,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAM/E,MAAMG,yBAAyB,GAAGA,CAAC;EACzCC;AACqB,CAAC,KAAK;EAC3B,MAAM;IAAEC;EAAQ,CAAC,GAAG,IAAAC,aAAO,EAAC,CAAC;EAE7B,MAAMC,UAAU,GAAGC,sBAAU,CAACC,MAAM,CAACJ,OAAO,CAACK,KAAK,CAACC,GAAG,CAAC;EAEvD,MAAMC,kBAAkB,GAAG,IAAAC,0BAAiB,EAAEb,CAAM,IAAK;IACxD,MAAMW,GAAG,GAAGN,OAAO,CAACS,UAAU,CAACC,SAAS,CAAC,CAAC,EAAEC,QAAQ,CAAC,CAAC,CAACL,GAAG;IAC1D,MAAMM,2BAA2B,GAAGC,4CAAqB,CAACC,GAAG,CAACR,GAAG,CAAC;IAElE,MAAMS,SAAS,GAAGf,OAAO,CAACgB,OAAO,CAACC,iBAAiB;IACnD,MAAMC,6BAA6B,GAAGN,2BAA2B;IACjE,MAAMO,aAAa,GAAGnB,OAAO,CAACS,UAAU,CAACE,QAAQ,CAAC,CAAC,CAACS,KAAK,KAAK,CAAC;;IAE/D;IACA,IAAI,CAACL,SAAS,IAAIG,6BAA6B,IAAIC,aAAa,EAAE;MACjE,IAAAE,0CAAoB,EAACrB,OAAO,CAAC;MAC7B;IACD;IAEAL,CAAC,CAAC2B,cAAc,CAAC,CAAC;IAClB,MAAMC,iBAAiB,GAAIC,QAAiB,IAAK;MAChD,IAAIA,QAAQ,EAAE;QACbxB,OAAO,CAACS,UAAU,CAACgB,QAAQ,CAAC9B,CAAC,CAAC+B,IAAI,CAACC,MAAM,CAAC;;QAE1C;QACAC,qBAAqB,CAAC,MAAM;UAC3B,IAAAP,0CAAoB,EAACrB,OAAO,CAAC;QAC9B,CAAC,CAAC;MACH;IACD,CAAC;IAED,IAAA6B,4CAAqB,EAAC;MACrBC,MAAM,EAAE,OAAO;MACfC,IAAI,EAAE/B,OAAO,CAACgB,OAAO,CAACgB,cAAc;MACpCT,iBAAiB;MACjBrB;IACD,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,MAAM+B,gBAAgB,GAAG,IAAAzB,0BAAiB,EAAC,MAAM;IAChD,IAAAqB,4CAAqB,EAAC;MACrBC,MAAM,EAAE,MAAM;MACdC,IAAI,EAAE/B,OAAO,CAACgB,OAAO,CAACgB,cAAc;MACpC9B;IACD,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,IAAAgC,gBAAS,EAAC,MAAM;IACf,MAAMC,WAAW,GAAGnC,OAAO,CAACS,UAAU,CAAC2B,WAAW,CACjD,cAAc,EACd7B,kBACD,CAAC;IAED,OAAO4B,WAAW;EACnB,CAAC,EAAE,CAACnC,OAAO,CAACS,UAAU,EAAEF,kBAAkB,CAAC,CAAC;EAE5C,IAAA8B,sBAAe,EAACJ,gBAAgB,EAAE,EAAE,CAAC;;EAErC;EACA,IAAAK,kDAAwB,EAAC,CAAC;EAE1B,OAAOvC,QAAQ;AAChB,CAAC;AAACwC,OAAA,CAAAzC,yBAAA,GAAAA,yBAAA","ignoreList":[]}
@@ -60,7 +60,7 @@ function createTransitionAwareComponent(Wrapped, options = {}) {
60
60
  style
61
61
  });
62
62
  const {
63
- handleTransitionLayout,
63
+ handleInitialLayout,
64
64
  captureActiveOnPress,
65
65
  MeasurementSyncProvider
66
66
  } = (0, _useBoundRegistry.useBoundsRegistry)({
@@ -75,7 +75,7 @@ function createTransitionAwareComponent(Wrapped, options = {}) {
75
75
  ref: animatedRef,
76
76
  style: [style, associatedStyles],
77
77
  onPress: captureActiveOnPress,
78
- onLayout: (0, _reactNativeReanimated.runOnUI)(handleTransitionLayout),
78
+ onLayout: (0, _reactNativeReanimated.runOnUI)(handleInitialLayout),
79
79
  collapsable: !sharedBoundTag,
80
80
  children: children
81
81
  })
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireWildcard","_useAssociatedStyle","_useBoundRegistry","_useScrollRegistry","_gestures","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createTransitionAwareComponent","Wrapped","options","isScrollable","AnimatedComponent","Animated","createAnimatedComponent","ScrollableInner","forwardRef","props","ref","nativeGesture","useGestureContext","scrollHandler","onContentSizeChange","onLayout","useScrollRegistry","onScroll","jsx","GestureDetector","gesture","children","scrollEventThrottle","Inner","_","style","sharedBoundTag","styleId","onPress","rest","animatedRef","useAnimatedRef","associatedStyles","useAssociatedStyles","id","handleTransitionLayout","captureActiveOnPress","MeasurementSyncProvider","useBoundsRegistry","runOnUI","collapsable","memo"],"sourceRoot":"../../../src","sources":["components/create-transition-aware-component.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNativeGestureHandler","_reactNativeReanimated","_interopRequireWildcard","_useAssociatedStyle","_useBoundRegistry","_useScrollRegistry","_gestures","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createTransitionAwareComponent","Wrapped","options","isScrollable","AnimatedComponent","Animated","createAnimatedComponent","ScrollableInner","forwardRef","props","ref","nativeGesture","useGestureContext","scrollHandler","onContentSizeChange","onLayout","useScrollRegistry","onScroll","jsx","GestureDetector","gesture","children","scrollEventThrottle","Inner","_","style","sharedBoundTag","styleId","onPress","rest","animatedRef","useAnimatedRef","associatedStyles","useAssociatedStyles","id","handleInitialLayout","captureActiveOnPress","MeasurementSyncProvider","useBoundsRegistry","runOnUI","collapsable","memo"],"sourceRoot":"../../../src","sources":["components/create-transition-aware-component.tsx"],"mappings":"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","ignoreList":[]}
@@ -22,12 +22,12 @@ const useBoundsRegistry = ({
22
22
  }) => {
23
23
  const {
24
24
  previous,
25
- current
25
+ current,
26
+ next
26
27
  } = (0, _keys.useKeys)();
27
28
  const ROOT_MEASUREMENT_SIGNAL = (0, _react.useContext)(MeasurementUpdateContext);
28
29
  const ROOT_SIGNAL = (0, _reactNativeReanimated.useSharedValue)(0);
29
30
  const IS_ROOT = !ROOT_MEASUREMENT_SIGNAL;
30
- const hasMeasured = (0, _reactNativeReanimated.useSharedValue)(false);
31
31
  const emitUpdate = (0, _react.useCallback)(() => {
32
32
  "worklet";
33
33
 
@@ -39,7 +39,8 @@ const useBoundsRegistry = ({
39
39
  }) => {
40
40
  "worklet";
41
41
 
42
- if (!sharedBoundTag) return;
42
+ // Currently, there's no necessity to measure when the current route is blurred ( could potentially change in the future )
43
+ if (!sharedBoundTag || next) return;
43
44
  const measured = (0, _reactNativeReanimated.measure)(animatedRef);
44
45
  if (!measured) {
45
46
  console.warn(`[react-native-screen-transitions] measure() returned null for sharedBoundTag="${sharedBoundTag}"`);
@@ -64,12 +65,13 @@ const useBoundsRegistry = ({
64
65
  _bounds.Bounds.setRouteActive(key, sharedBoundTag);
65
66
  }
66
67
  if (onPress) (0, _reactNativeReanimated.runOnJS)(onPress)();
67
- }, [sharedBoundTag, animatedRef, current.route.key, style, emitUpdate]);
68
- const handleTransitionLayout = (0, _react.useCallback)(() => {
68
+ }, [sharedBoundTag, animatedRef, current.route.key, style, emitUpdate, next]);
69
+ const hasMeasuredOnLayout = (0, _reactNativeReanimated.useSharedValue)(false);
70
+ const handleInitialLayout = (0, _react.useCallback)(() => {
69
71
  "worklet";
70
72
 
71
73
  const prevKey = previous?.route.key;
72
- if (!sharedBoundTag || hasMeasured.value || !prevKey) {
74
+ if (!sharedBoundTag || hasMeasuredOnLayout.value || !prevKey) {
73
75
  return;
74
76
  }
75
77
  const prevBounds = _bounds.Bounds.getBounds(prevKey)?.[sharedBoundTag];
@@ -79,9 +81,9 @@ const useBoundsRegistry = ({
79
81
  skipMarkingActive: true
80
82
  });
81
83
  // Should not measure again while in transition
82
- hasMeasured.value = true;
84
+ hasMeasuredOnLayout.value = true;
83
85
  }
84
- }, [maybeMeasureAndStore, sharedBoundTag, previous?.route.key, hasMeasured]);
86
+ }, [maybeMeasureAndStore, sharedBoundTag, previous?.route.key, hasMeasuredOnLayout]);
85
87
  const captureActiveOnPress = (0, _useStableCallback.default)(() => {
86
88
  if (!sharedBoundTag) {
87
89
  if (onPress) onPress();
@@ -118,7 +120,7 @@ const useBoundsRegistry = ({
118
120
  });
119
121
  });
120
122
  return {
121
- handleTransitionLayout,
123
+ handleInitialLayout,
122
124
  captureActiveOnPress,
123
125
  MeasurementSyncProvider
124
126
  };
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNativeReanimated","_keys","_bounds","_flattenStyles","_isBoundsEqual","_useStableCallback","_interopRequireDefault","_jsxRuntime","e","__esModule","default","MeasurementUpdateContext","createContext","useBoundsRegistry","sharedBoundTag","animatedRef","style","onPress","previous","current","useKeys","ROOT_MEASUREMENT_SIGNAL","useContext","ROOT_SIGNAL","useSharedValue","IS_ROOT","hasMeasured","emitUpdate","useCallback","value","maybeMeasureAndStore","skipMarkingActive","measured","measure","console","warn","key","route","isBoundsEqual","Bounds","setRouteActive","runOnJS","setBounds","flattenStyle","handleTransitionLayout","prevKey","prevBounds","getBounds","captureActiveOnPress","useStableCallback","runOnUI","MeasurementSyncProvider","useMemo","Fragment","children","jsx","Provider","updateSignal","useAnimatedReaction","undefined","exports"],"sourceRoot":"../../../../src","sources":["hooks/bounds/use-bound-registry.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNativeReanimated","_keys","_bounds","_flattenStyles","_isBoundsEqual","_useStableCallback","_interopRequireDefault","_jsxRuntime","e","__esModule","default","MeasurementUpdateContext","createContext","useBoundsRegistry","sharedBoundTag","animatedRef","style","onPress","previous","current","next","useKeys","ROOT_MEASUREMENT_SIGNAL","useContext","ROOT_SIGNAL","useSharedValue","IS_ROOT","emitUpdate","useCallback","value","maybeMeasureAndStore","skipMarkingActive","measured","measure","console","warn","key","route","isBoundsEqual","Bounds","setRouteActive","runOnJS","setBounds","flattenStyle","hasMeasuredOnLayout","handleInitialLayout","prevKey","prevBounds","getBounds","captureActiveOnPress","useStableCallback","runOnUI","MeasurementSyncProvider","useMemo","Fragment","children","jsx","Provider","updateSignal","useAnimatedReaction","undefined","exports"],"sourceRoot":"../../../../src","sources":["hooks/bounds/use-bound-registry.tsx"],"mappings":"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","ignoreList":[]}
@@ -18,15 +18,12 @@ export const ScreenLifecycleController = ({
18
18
  const handleBeforeRemove = useStableCallback(e => {
19
19
  const key = current.navigation.getParent()?.getState().key;
20
20
  const requestedDismissOnNavigator = NavigatorDismissState.get(key);
21
+ const isEnabled = current.options.enableTransitions;
22
+ const isRequestedDismissOnNavigator = requestedDismissOnNavigator;
23
+ const isFirstScreen = current.navigation.getState().index === 0;
21
24
 
22
- // Don't run e.preventDefault when the dismissal was on the local root
23
- if (requestedDismissOnNavigator) {
24
- resetStoresForScreen(current);
25
- return;
26
- }
27
-
28
- // Don't run e.preventDefault when this is the first screen of the stack
29
- if (current.navigation.getState().index === 0) {
25
+ // If transitions are disabled, or the dismissal was on the local root, or this is the first screen of the stack, reset the stores
26
+ if (!isEnabled || isRequestedDismissOnNavigator || isFirstScreen) {
30
27
  resetStoresForScreen(current);
31
28
  return;
32
29
  }
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","useLayoutEffect","useParentGestureRegistry","useStableCallback","useKeys","Animations","NavigatorDismissState","resetStoresForScreen","startScreenTransition","ScreenLifecycleController","children","current","animations","getAll","route","key","handleBeforeRemove","e","navigation","getParent","getState","requestedDismissOnNavigator","get","index","preventDefault","onAnimationFinish","finished","dispatch","data","action","requestAnimationFrame","target","spec","options","transitionSpec","handleInitialize","unsubscribe","addListener"],"sourceRoot":"../../../../src","sources":["components/controllers/screen-lifecycle.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,eAAe,QAAQ,OAAO;AAClD,SAASC,wBAAwB,QAAQ,kDAAkD;AAC3F,OAAOC,iBAAiB,MAAM,iCAAiC;AAC/D,SAASC,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,UAAU,QAAQ,yBAAyB;AACpD,SAASC,qBAAqB,QAAQ,sCAAsC;AAC5E,SAASC,oBAAoB,QAAQ,4CAA4C;AACjF,SAASC,qBAAqB,QAAQ,+CAA+C;AAMrF,OAAO,MAAMC,yBAAyB,GAAGA,CAAC;EACzCC;AACqB,CAAC,KAAK;EAC3B,MAAM;IAAEC;EAAQ,CAAC,GAAGP,OAAO,CAAC,CAAC;EAE7B,MAAMQ,UAAU,GAAGP,UAAU,CAACQ,MAAM,CAACF,OAAO,CAACG,KAAK,CAACC,GAAG,CAAC;EAEvD,MAAMC,kBAAkB,GAAGb,iBAAiB,CAAEc,CAAM,IAAK;IACxD,MAAMF,GAAG,GAAGJ,OAAO,CAACO,UAAU,CAACC,SAAS,CAAC,CAAC,EAAEC,QAAQ,CAAC,CAAC,CAACL,GAAG;IAC1D,MAAMM,2BAA2B,GAAGf,qBAAqB,CAACgB,GAAG,CAACP,GAAG,CAAC;;IAElE;IACA,IAAIM,2BAA2B,EAAE;MAChCd,oBAAoB,CAACI,OAAO,CAAC;MAC7B;IACD;;IAEA;IACA,IAAIA,OAAO,CAACO,UAAU,CAACE,QAAQ,CAAC,CAAC,CAACG,KAAK,KAAK,CAAC,EAAE;MAC9ChB,oBAAoB,CAACI,OAAO,CAAC;MAC7B;IACD;IAEAM,CAAC,CAACO,cAAc,CAAC,CAAC;IAClB,MAAMC,iBAAiB,GAAIC,QAAiB,IAAK;MAChD,IAAIA,QAAQ,EAAE;QACbf,OAAO,CAACO,UAAU,CAACS,QAAQ,CAACV,CAAC,CAACW,IAAI,CAACC,MAAM,CAAC;;QAE1C;QACAC,qBAAqB,CAAC,MAAM;UAC3BvB,oBAAoB,CAACI,OAAO,CAAC;QAC9B,CAAC,CAAC;MACH;IACD,CAAC;IAEDH,qBAAqB,CAAC;MACrBuB,MAAM,EAAE,OAAO;MACfC,IAAI,EAAErB,OAAO,CAACsB,OAAO,CAACC,cAAc;MACpCT,iBAAiB;MACjBb;IACD,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,MAAMuB,gBAAgB,GAAGhC,iBAAiB,CAAC,MAAM;IAChDK,qBAAqB,CAAC;MACrBuB,MAAM,EAAE,MAAM;MACdC,IAAI,EAAErB,OAAO,CAACsB,OAAO,CAACC,cAAc;MACpCtB;IACD,CAAC,CAAC;EACH,CAAC,CAAC;EAEFZ,SAAS,CAAC,MAAM;IACf,MAAMoC,WAAW,GAAGzB,OAAO,CAACO,UAAU,CAACmB,WAAW,CACjD,cAAc,EACdrB,kBACD,CAAC;IAED,OAAOoB,WAAW;EACnB,CAAC,EAAE,CAACzB,OAAO,CAACO,UAAU,EAAEF,kBAAkB,CAAC,CAAC;EAE5Cf,eAAe,CAACkC,gBAAgB,EAAE,EAAE,CAAC;;EAErC;EACAjC,wBAAwB,CAAC,CAAC;EAE1B,OAAOQ,QAAQ;AAChB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["useEffect","useLayoutEffect","useParentGestureRegistry","useStableCallback","useKeys","Animations","NavigatorDismissState","resetStoresForScreen","startScreenTransition","ScreenLifecycleController","children","current","animations","getAll","route","key","handleBeforeRemove","e","navigation","getParent","getState","requestedDismissOnNavigator","get","isEnabled","options","enableTransitions","isRequestedDismissOnNavigator","isFirstScreen","index","preventDefault","onAnimationFinish","finished","dispatch","data","action","requestAnimationFrame","target","spec","transitionSpec","handleInitialize","unsubscribe","addListener"],"sourceRoot":"../../../../src","sources":["components/controllers/screen-lifecycle.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,eAAe,QAAQ,OAAO;AAClD,SAASC,wBAAwB,QAAQ,kDAAkD;AAC3F,OAAOC,iBAAiB,MAAM,iCAAiC;AAC/D,SAASC,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,UAAU,QAAQ,yBAAyB;AACpD,SAASC,qBAAqB,QAAQ,sCAAsC;AAC5E,SAASC,oBAAoB,QAAQ,4CAA4C;AACjF,SAASC,qBAAqB,QAAQ,+CAA+C;AAMrF,OAAO,MAAMC,yBAAyB,GAAGA,CAAC;EACzCC;AACqB,CAAC,KAAK;EAC3B,MAAM;IAAEC;EAAQ,CAAC,GAAGP,OAAO,CAAC,CAAC;EAE7B,MAAMQ,UAAU,GAAGP,UAAU,CAACQ,MAAM,CAACF,OAAO,CAACG,KAAK,CAACC,GAAG,CAAC;EAEvD,MAAMC,kBAAkB,GAAGb,iBAAiB,CAAEc,CAAM,IAAK;IACxD,MAAMF,GAAG,GAAGJ,OAAO,CAACO,UAAU,CAACC,SAAS,CAAC,CAAC,EAAEC,QAAQ,CAAC,CAAC,CAACL,GAAG;IAC1D,MAAMM,2BAA2B,GAAGf,qBAAqB,CAACgB,GAAG,CAACP,GAAG,CAAC;IAElE,MAAMQ,SAAS,GAAGZ,OAAO,CAACa,OAAO,CAACC,iBAAiB;IACnD,MAAMC,6BAA6B,GAAGL,2BAA2B;IACjE,MAAMM,aAAa,GAAGhB,OAAO,CAACO,UAAU,CAACE,QAAQ,CAAC,CAAC,CAACQ,KAAK,KAAK,CAAC;;IAE/D;IACA,IAAI,CAACL,SAAS,IAAIG,6BAA6B,IAAIC,aAAa,EAAE;MACjEpB,oBAAoB,CAACI,OAAO,CAAC;MAC7B;IACD;IAEAM,CAAC,CAACY,cAAc,CAAC,CAAC;IAClB,MAAMC,iBAAiB,GAAIC,QAAiB,IAAK;MAChD,IAAIA,QAAQ,EAAE;QACbpB,OAAO,CAACO,UAAU,CAACc,QAAQ,CAACf,CAAC,CAACgB,IAAI,CAACC,MAAM,CAAC;;QAE1C;QACAC,qBAAqB,CAAC,MAAM;UAC3B5B,oBAAoB,CAACI,OAAO,CAAC;QAC9B,CAAC,CAAC;MACH;IACD,CAAC;IAEDH,qBAAqB,CAAC;MACrB4B,MAAM,EAAE,OAAO;MACfC,IAAI,EAAE1B,OAAO,CAACa,OAAO,CAACc,cAAc;MACpCR,iBAAiB;MACjBlB;IACD,CAAC,CAAC;EACH,CAAC,CAAC;EAEF,MAAM2B,gBAAgB,GAAGpC,iBAAiB,CAAC,MAAM;IAChDK,qBAAqB,CAAC;MACrB4B,MAAM,EAAE,MAAM;MACdC,IAAI,EAAE1B,OAAO,CAACa,OAAO,CAACc,cAAc;MACpC1B;IACD,CAAC,CAAC;EACH,CAAC,CAAC;EAEFZ,SAAS,CAAC,MAAM;IACf,MAAMwC,WAAW,GAAG7B,OAAO,CAACO,UAAU,CAACuB,WAAW,CACjD,cAAc,EACdzB,kBACD,CAAC;IAED,OAAOwB,WAAW;EACnB,CAAC,EAAE,CAAC7B,OAAO,CAACO,UAAU,EAAEF,kBAAkB,CAAC,CAAC;EAE5Cf,eAAe,CAACsC,gBAAgB,EAAE,EAAE,CAAC;;EAErC;EACArC,wBAAwB,CAAC,CAAC;EAE1B,OAAOQ,QAAQ;AAChB,CAAC","ignoreList":[]}
@@ -55,7 +55,7 @@ export function createTransitionAwareComponent(Wrapped, options = {}) {
55
55
  style
56
56
  });
57
57
  const {
58
- handleTransitionLayout,
58
+ handleInitialLayout,
59
59
  captureActiveOnPress,
60
60
  MeasurementSyncProvider
61
61
  } = useBoundsRegistry({
@@ -70,7 +70,7 @@ export function createTransitionAwareComponent(Wrapped, options = {}) {
70
70
  ref: animatedRef,
71
71
  style: [style, associatedStyles],
72
72
  onPress: captureActiveOnPress,
73
- onLayout: runOnUI(handleTransitionLayout),
73
+ onLayout: runOnUI(handleInitialLayout),
74
74
  collapsable: !sharedBoundTag,
75
75
  children: children
76
76
  })
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","memo","GestureDetector","Animated","runOnUI","useAnimatedRef","useAssociatedStyles","useBoundsRegistry","useScrollRegistry","useGestureContext","jsx","_jsx","createTransitionAwareComponent","Wrapped","options","isScrollable","AnimatedComponent","createAnimatedComponent","ScrollableInner","props","ref","nativeGesture","scrollHandler","onContentSizeChange","onLayout","onScroll","gesture","children","scrollEventThrottle","Inner","_","style","sharedBoundTag","styleId","onPress","rest","animatedRef","associatedStyles","id","handleTransitionLayout","captureActiveOnPress","MeasurementSyncProvider","collapsable"],"sourceRoot":"../../../src","sources":["components/create-transition-aware-component.tsx"],"mappings":";;AACA,SAA6BA,UAAU,EAAEC,IAAI,QAAQ,OAAO;AAE5D,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,OAAOC,QAAQ,IAAIC,OAAO,EAAEC,cAAc,QAAQ,yBAAyB;AAC3E,SAASC,mBAAmB,QAAQ,yCAAyC;AAC7E,SAASC,iBAAiB,QAAQ,oCAAoC;AACtE,SAASC,iBAAiB,QAAQ,uCAAuC;AACzE,SAASC,iBAAiB,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQ1D,OAAO,SAASC,8BAA8BA,CAC7CC,OAAyB,EACzBC,OAA8C,GAAG,CAAC,CAAC,EAClD;EACD,MAAM;IAAEC,YAAY,GAAG;EAAM,CAAC,GAAGD,OAAO;EAExC,MAAME,iBAAiB,GAAGb,QAAQ,CAACc,uBAAuB,CAACJ,OAAO,CAAC;EAEnE,MAAMK,eAAe,gBAAGlB,UAAU,CAGhC,CAACmB,KAAU,EAAEC,GAAG,KAAK;IACtB,MAAM;MAAEC;IAAc,CAAC,GAAGZ,iBAAiB,CAAC,CAAC;IAC7C,MAAM;MAAEa,aAAa;MAAEC,mBAAmB;MAAEC;IAAS,CAAC,GAAGhB,iBAAiB,CAAC;MAC1EiB,QAAQ,EAAEN,KAAK,CAACM,QAAQ;MACxBF,mBAAmB,EAAEJ,KAAK,CAACI,mBAAmB;MAC9CC,QAAQ,EAAEL,KAAK,CAACK;IACjB,CAAC,CAAC;IAEF,oBACCb,IAAA,CAACT,eAAe;MAACwB,OAAO,EAAEL,aAAc;MAAAM,QAAA,eACvChB,IAAA,CAACK,iBAAiB;QAAA,GACZG,KAAK;QACVC,GAAG,EAAEA,GAAI;QACTK,QAAQ,EAAEH,aAAc;QACxBC,mBAAmB,EAAEA,mBAAoB;QACzCC,QAAQ,EAAEA,QAAS;QACnBI,mBAAmB,EAAET,KAAK,CAACS,mBAAmB,IAAI;MAAG,CACrD;IAAC,CACc,CAAC;EAEpB,CAAC,CAAC;EAEF,MAAMC,KAAK,gBAAG7B,UAAU,CAGtB,CAACmB,KAAK,EAAEW,CAAC,KAAK;IACf,MAAM;MAAEH,QAAQ;MAAEI,KAAK;MAAEC,cAAc;MAAEC,OAAO;MAAEC,OAAO;MAAE,GAAGC;IAAK,CAAC,GACnEhB,KAAY;IAEb,MAAMiB,WAAW,GAAG/B,cAAc,CAAO,CAAC;IAE1C,MAAM;MAAEgC;IAAiB,CAAC,GAAG/B,mBAAmB,CAAC;MAChDgC,EAAE,EAAEN,cAAc,IAAIC,OAAO;MAC7BF;IACD,CAAC,CAAC;IAEF,MAAM;MACLQ,sBAAsB;MACtBC,oBAAoB;MACpBC;IACD,CAAC,GAAGlC,iBAAiB,CAAC;MACrByB,cAAc;MACdI,WAAW;MACXL,KAAK;MACLG;IACD,CAAC,CAAC;IAEF,oBACCvB,IAAA,CAAC8B,uBAAuB;MAAAd,QAAA,eACvBhB,IAAA,CAACK,iBAAiB;QAAA,GACZmB,IAAI;QACTf,GAAG,EAAEgB,WAAY;QACjBL,KAAK,EAAE,CAACA,KAAK,EAAEM,gBAAgB,CAAE;QACjCH,OAAO,EAAEM,oBAAqB;QAC9BhB,QAAQ,EAAEpB,OAAO,CAACmC,sBAAsB,CAAE;QAC1CG,WAAW,EAAE,CAACV,cAAe;QAAAL,QAAA,EAE5BA;MAAQ,CACS;IAAC,CACI,CAAC;EAE5B,CAAC,CAAC;EAEF,IAAIZ,YAAY,EAAE;IACjB,oBAAOd,IAAI,CAACiB,eAAe,CAAC;EAM7B;EAEA,oBAAOjB,IAAI,CAAC4B,KAAK,CAAC;AAMnB","ignoreList":[]}
1
+ {"version":3,"names":["forwardRef","memo","GestureDetector","Animated","runOnUI","useAnimatedRef","useAssociatedStyles","useBoundsRegistry","useScrollRegistry","useGestureContext","jsx","_jsx","createTransitionAwareComponent","Wrapped","options","isScrollable","AnimatedComponent","createAnimatedComponent","ScrollableInner","props","ref","nativeGesture","scrollHandler","onContentSizeChange","onLayout","onScroll","gesture","children","scrollEventThrottle","Inner","_","style","sharedBoundTag","styleId","onPress","rest","animatedRef","associatedStyles","id","handleInitialLayout","captureActiveOnPress","MeasurementSyncProvider","collapsable"],"sourceRoot":"../../../src","sources":["components/create-transition-aware-component.tsx"],"mappings":";;AACA,SAA6BA,UAAU,EAAEC,IAAI,QAAQ,OAAO;AAE5D,SAASC,eAAe,QAAQ,8BAA8B;AAC9D,OAAOC,QAAQ,IAAIC,OAAO,EAAEC,cAAc,QAAQ,yBAAyB;AAC3E,SAASC,mBAAmB,QAAQ,yCAAyC;AAC7E,SAASC,iBAAiB,QAAQ,oCAAoC;AACtE,SAASC,iBAAiB,QAAQ,uCAAuC;AACzE,SAASC,iBAAiB,QAAQ,uBAAuB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQ1D,OAAO,SAASC,8BAA8BA,CAC7CC,OAAyB,EACzBC,OAA8C,GAAG,CAAC,CAAC,EAClD;EACD,MAAM;IAAEC,YAAY,GAAG;EAAM,CAAC,GAAGD,OAAO;EAExC,MAAME,iBAAiB,GAAGb,QAAQ,CAACc,uBAAuB,CAACJ,OAAO,CAAC;EAEnE,MAAMK,eAAe,gBAAGlB,UAAU,CAGhC,CAACmB,KAAU,EAAEC,GAAG,KAAK;IACtB,MAAM;MAAEC;IAAc,CAAC,GAAGZ,iBAAiB,CAAC,CAAC;IAC7C,MAAM;MAAEa,aAAa;MAAEC,mBAAmB;MAAEC;IAAS,CAAC,GAAGhB,iBAAiB,CAAC;MAC1EiB,QAAQ,EAAEN,KAAK,CAACM,QAAQ;MACxBF,mBAAmB,EAAEJ,KAAK,CAACI,mBAAmB;MAC9CC,QAAQ,EAAEL,KAAK,CAACK;IACjB,CAAC,CAAC;IAEF,oBACCb,IAAA,CAACT,eAAe;MAACwB,OAAO,EAAEL,aAAc;MAAAM,QAAA,eACvChB,IAAA,CAACK,iBAAiB;QAAA,GACZG,KAAK;QACVC,GAAG,EAAEA,GAAI;QACTK,QAAQ,EAAEH,aAAc;QACxBC,mBAAmB,EAAEA,mBAAoB;QACzCC,QAAQ,EAAEA,QAAS;QACnBI,mBAAmB,EAAET,KAAK,CAACS,mBAAmB,IAAI;MAAG,CACrD;IAAC,CACc,CAAC;EAEpB,CAAC,CAAC;EAEF,MAAMC,KAAK,gBAAG7B,UAAU,CAGtB,CAACmB,KAAK,EAAEW,CAAC,KAAK;IACf,MAAM;MAAEH,QAAQ;MAAEI,KAAK;MAAEC,cAAc;MAAEC,OAAO;MAAEC,OAAO;MAAE,GAAGC;IAAK,CAAC,GACnEhB,KAAY;IAEb,MAAMiB,WAAW,GAAG/B,cAAc,CAAO,CAAC;IAE1C,MAAM;MAAEgC;IAAiB,CAAC,GAAG/B,mBAAmB,CAAC;MAChDgC,EAAE,EAAEN,cAAc,IAAIC,OAAO;MAC7BF;IACD,CAAC,CAAC;IAEF,MAAM;MACLQ,mBAAmB;MACnBC,oBAAoB;MACpBC;IACD,CAAC,GAAGlC,iBAAiB,CAAC;MACrByB,cAAc;MACdI,WAAW;MACXL,KAAK;MACLG;IACD,CAAC,CAAC;IAEF,oBACCvB,IAAA,CAAC8B,uBAAuB;MAAAd,QAAA,eACvBhB,IAAA,CAACK,iBAAiB;QAAA,GACZmB,IAAI;QACTf,GAAG,EAAEgB,WAAY;QACjBL,KAAK,EAAE,CAACA,KAAK,EAAEM,gBAAgB,CAAE;QACjCH,OAAO,EAAEM,oBAAqB;QAC9BhB,QAAQ,EAAEpB,OAAO,CAACmC,mBAAmB,CAAE;QACvCG,WAAW,EAAE,CAACV,cAAe;QAAAL,QAAA,EAE5BA;MAAQ,CACS;IAAC,CACI,CAAC;EAE5B,CAAC,CAAC;EAEF,IAAIZ,YAAY,EAAE;IACjB,oBAAOd,IAAI,CAACiB,eAAe,CAAC;EAM7B;EAEA,oBAAOjB,IAAI,CAAC4B,KAAK,CAAC;AAMnB","ignoreList":[]}
@@ -17,12 +17,12 @@ export const useBoundsRegistry = ({
17
17
  }) => {
18
18
  const {
19
19
  previous,
20
- current
20
+ current,
21
+ next
21
22
  } = useKeys();
22
23
  const ROOT_MEASUREMENT_SIGNAL = useContext(MeasurementUpdateContext);
23
24
  const ROOT_SIGNAL = useSharedValue(0);
24
25
  const IS_ROOT = !ROOT_MEASUREMENT_SIGNAL;
25
- const hasMeasured = useSharedValue(false);
26
26
  const emitUpdate = useCallback(() => {
27
27
  "worklet";
28
28
 
@@ -34,7 +34,8 @@ export const useBoundsRegistry = ({
34
34
  }) => {
35
35
  "worklet";
36
36
 
37
- if (!sharedBoundTag) return;
37
+ // Currently, there's no necessity to measure when the current route is blurred ( could potentially change in the future )
38
+ if (!sharedBoundTag || next) return;
38
39
  const measured = measure(animatedRef);
39
40
  if (!measured) {
40
41
  console.warn(`[react-native-screen-transitions] measure() returned null for sharedBoundTag="${sharedBoundTag}"`);
@@ -59,12 +60,13 @@ export const useBoundsRegistry = ({
59
60
  Bounds.setRouteActive(key, sharedBoundTag);
60
61
  }
61
62
  if (onPress) runOnJS(onPress)();
62
- }, [sharedBoundTag, animatedRef, current.route.key, style, emitUpdate]);
63
- const handleTransitionLayout = useCallback(() => {
63
+ }, [sharedBoundTag, animatedRef, current.route.key, style, emitUpdate, next]);
64
+ const hasMeasuredOnLayout = useSharedValue(false);
65
+ const handleInitialLayout = useCallback(() => {
64
66
  "worklet";
65
67
 
66
68
  const prevKey = previous?.route.key;
67
- if (!sharedBoundTag || hasMeasured.value || !prevKey) {
69
+ if (!sharedBoundTag || hasMeasuredOnLayout.value || !prevKey) {
68
70
  return;
69
71
  }
70
72
  const prevBounds = Bounds.getBounds(prevKey)?.[sharedBoundTag];
@@ -74,9 +76,9 @@ export const useBoundsRegistry = ({
74
76
  skipMarkingActive: true
75
77
  });
76
78
  // Should not measure again while in transition
77
- hasMeasured.value = true;
79
+ hasMeasuredOnLayout.value = true;
78
80
  }
79
- }, [maybeMeasureAndStore, sharedBoundTag, previous?.route.key, hasMeasured]);
81
+ }, [maybeMeasureAndStore, sharedBoundTag, previous?.route.key, hasMeasuredOnLayout]);
80
82
  const captureActiveOnPress = useStableCallback(() => {
81
83
  if (!sharedBoundTag) {
82
84
  if (onPress) onPress();
@@ -113,7 +115,7 @@ export const useBoundsRegistry = ({
113
115
  });
114
116
  });
115
117
  return {
116
- handleTransitionLayout,
118
+ handleInitialLayout,
117
119
  captureActiveOnPress,
118
120
  MeasurementSyncProvider
119
121
  };
@@ -1 +1 @@
1
- {"version":3,"names":["createContext","Fragment","useCallback","useContext","useMemo","measure","runOnJS","runOnUI","useAnimatedReaction","useSharedValue","useKeys","Bounds","flattenStyle","isBoundsEqual","useStableCallback","jsx","_jsx","MeasurementUpdateContext","useBoundsRegistry","sharedBoundTag","animatedRef","style","onPress","previous","current","ROOT_MEASUREMENT_SIGNAL","ROOT_SIGNAL","IS_ROOT","hasMeasured","emitUpdate","value","maybeMeasureAndStore","skipMarkingActive","measured","console","warn","key","route","setRouteActive","setBounds","handleTransitionLayout","prevKey","prevBounds","getBounds","captureActiveOnPress","MeasurementSyncProvider","children","Provider","updateSignal","undefined"],"sourceRoot":"../../../../src","sources":["hooks/bounds/use-bound-registry.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["createContext","Fragment","useCallback","useContext","useMemo","measure","runOnJS","runOnUI","useAnimatedReaction","useSharedValue","useKeys","Bounds","flattenStyle","isBoundsEqual","useStableCallback","jsx","_jsx","MeasurementUpdateContext","useBoundsRegistry","sharedBoundTag","animatedRef","style","onPress","previous","current","next","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":["hooks/bounds/use-bound-registry.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"screen-lifecycle.d.ts","sourceRoot":"","sources":["../../../../src/components/controllers/screen-lifecycle.tsx"],"names":[],"mappings":"AASA,UAAU,oBAAoB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,eAAO,MAAM,yBAAyB,GAAI,eAEvC,oBAAoB,8BAgEtB,CAAC"}
1
+ {"version":3,"file":"screen-lifecycle.d.ts","sourceRoot":"","sources":["../../../../src/components/controllers/screen-lifecycle.tsx"],"names":[],"mappings":"AASA,UAAU,oBAAoB;IAC7B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC1B;AAED,eAAO,MAAM,yBAAyB,GAAI,eAEvC,oBAAoB,8BA8DtB,CAAC"}
@@ -7,7 +7,7 @@ interface BoundMeasurerHookProps {
7
7
  onPress?: ((...args: unknown[]) => void) | undefined;
8
8
  }
9
9
  export declare const useBoundsRegistry: ({ sharedBoundTag, animatedRef, style, onPress, }: BoundMeasurerHookProps) => {
10
- handleTransitionLayout: () => void;
10
+ handleInitialLayout: () => void;
11
11
  captureActiveOnPress: () => void;
12
12
  MeasurementSyncProvider: import("react").ExoticComponent<import("react").FragmentProps> | (({ children }: {
13
13
  children: React.ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"use-bound-registry.d.ts","sourceRoot":"","sources":["../../../../src/hooks/bounds/use-bound-registry.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACN,KAAK,WAAW,EAIhB,KAAK,UAAU,EAGf,MAAM,yBAAyB,CAAC;AAQjC,UAAU,sBAAsB;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAE/B,KAAK,EAAE,UAAU,CAAC;IAClB,OAAO,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CACrD;AASD,eAAO,MAAM,iBAAiB,GAAI,kDAK/B,sBAAsB;;;8GAyFD;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE;CAyBpD,CAAC"}
1
+ {"version":3,"file":"use-bound-registry.d.ts","sourceRoot":"","sources":["../../../../src/hooks/bounds/use-bound-registry.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACN,KAAK,WAAW,EAIhB,KAAK,UAAU,EAGf,MAAM,yBAAyB,CAAC;AAQjC,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;;;8GAyFD;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;KAAE;CAyBpD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-screen-transitions",
3
- "version": "2.3.3",
3
+ "version": "2.3.4",
4
4
  "description": "Easy screen transitions for React Native and Expo",
5
5
  "author": "Ed",
6
6
  "license": "MIT",
@@ -22,14 +22,12 @@ export const ScreenLifecycleController = ({
22
22
  const key = current.navigation.getParent()?.getState().key;
23
23
  const requestedDismissOnNavigator = NavigatorDismissState.get(key);
24
24
 
25
- // Don't run e.preventDefault when the dismissal was on the local root
26
- if (requestedDismissOnNavigator) {
27
- resetStoresForScreen(current);
28
- return;
29
- }
25
+ const isEnabled = current.options.enableTransitions;
26
+ const isRequestedDismissOnNavigator = requestedDismissOnNavigator;
27
+ const isFirstScreen = current.navigation.getState().index === 0;
30
28
 
31
- // Don't run e.preventDefault when this is the first screen of the stack
32
- if (current.navigation.getState().index === 0) {
29
+ // If transitions are disabled, or the dismissal was on the local root, or this is the first screen of the stack, reset the stores
30
+ if (!isEnabled || isRequestedDismissOnNavigator || isFirstScreen) {
33
31
  resetStoresForScreen(current);
34
32
  return;
35
33
  }
@@ -62,7 +62,7 @@ export function createTransitionAwareComponent<P extends object>(
62
62
  });
63
63
 
64
64
  const {
65
- handleTransitionLayout,
65
+ handleInitialLayout,
66
66
  captureActiveOnPress,
67
67
  MeasurementSyncProvider,
68
68
  } = useBoundsRegistry({
@@ -79,7 +79,7 @@ export function createTransitionAwareComponent<P extends object>(
79
79
  ref={animatedRef}
80
80
  style={[style, associatedStyles]}
81
81
  onPress={captureActiveOnPress}
82
- onLayout={runOnUI(handleTransitionLayout)}
82
+ onLayout={runOnUI(handleInitialLayout)}
83
83
  collapsable={!sharedBoundTag}
84
84
  >
85
85
  {children}
@@ -25,11 +25,15 @@ import useStableCallback from "../use-stable-callback";
25
25
  interface BoundMeasurerHookProps {
26
26
  sharedBoundTag?: string;
27
27
  animatedRef: AnimatedRef<View>;
28
-
29
28
  style: StyleProps;
30
29
  onPress?: ((...args: unknown[]) => void) | undefined;
31
30
  }
32
31
 
32
+ interface MaybeMeasureAndStoreParams {
33
+ onPress?: ((...args: unknown[]) => void) | undefined;
34
+ skipMarkingActive?: boolean;
35
+ }
36
+
33
37
  interface MeasurementUpdateContextType {
34
38
  updateSignal: SharedValue<number>;
35
39
  }
@@ -43,12 +47,11 @@ export const useBoundsRegistry = ({
43
47
  style,
44
48
  onPress,
45
49
  }: BoundMeasurerHookProps) => {
46
- const { previous, current } = useKeys();
50
+ const { previous, current, next } = useKeys();
47
51
 
48
52
  const ROOT_MEASUREMENT_SIGNAL = useContext(MeasurementUpdateContext);
49
53
  const ROOT_SIGNAL = useSharedValue(0);
50
54
  const IS_ROOT = !ROOT_MEASUREMENT_SIGNAL;
51
- const hasMeasured = useSharedValue(false);
52
55
 
53
56
  const emitUpdate = useCallback(() => {
54
57
  "worklet";
@@ -56,15 +59,10 @@ export const useBoundsRegistry = ({
56
59
  }, [IS_ROOT, ROOT_SIGNAL]);
57
60
 
58
61
  const maybeMeasureAndStore = useCallback(
59
- ({
60
- onPress,
61
- skipMarkingActive,
62
- }: {
63
- onPress?: () => void;
64
- skipMarkingActive?: boolean;
65
- }) => {
62
+ ({ onPress, skipMarkingActive }: MaybeMeasureAndStoreParams) => {
66
63
  "worklet";
67
- if (!sharedBoundTag) return;
64
+ // Currently, there's no necessity to measure when the current route is blurred ( could potentially change in the future )
65
+ if (!sharedBoundTag || next) return;
68
66
 
69
67
  const measured = measure(animatedRef);
70
68
 
@@ -95,14 +93,15 @@ export const useBoundsRegistry = ({
95
93
 
96
94
  if (onPress) runOnJS(onPress)();
97
95
  },
98
- [sharedBoundTag, animatedRef, current.route.key, style, emitUpdate],
96
+ [sharedBoundTag, animatedRef, current.route.key, style, emitUpdate, next],
99
97
  );
100
98
 
101
- const handleTransitionLayout = useCallback(() => {
99
+ const hasMeasuredOnLayout = useSharedValue(false);
100
+ const handleInitialLayout = useCallback(() => {
102
101
  "worklet";
103
102
 
104
103
  const prevKey = previous?.route.key;
105
- if (!sharedBoundTag || hasMeasured.value || !prevKey) {
104
+ if (!sharedBoundTag || hasMeasuredOnLayout.value || !prevKey) {
106
105
  return;
107
106
  }
108
107
 
@@ -112,9 +111,14 @@ export const useBoundsRegistry = ({
112
111
  // Should skip mark active if we are in a transition
113
112
  maybeMeasureAndStore({ skipMarkingActive: true });
114
113
  // Should not measure again while in transition
115
- hasMeasured.value = true;
114
+ hasMeasuredOnLayout.value = true;
116
115
  }
117
- }, [maybeMeasureAndStore, sharedBoundTag, previous?.route.key, hasMeasured]);
116
+ }, [
117
+ maybeMeasureAndStore,
118
+ sharedBoundTag,
119
+ previous?.route.key,
120
+ hasMeasuredOnLayout,
121
+ ]);
118
122
 
119
123
  const captureActiveOnPress = useStableCallback(() => {
120
124
  if (!sharedBoundTag) {
@@ -152,7 +156,7 @@ export const useBoundsRegistry = ({
152
156
  );
153
157
 
154
158
  return {
155
- handleTransitionLayout,
159
+ handleInitialLayout,
156
160
  captureActiveOnPress,
157
161
  MeasurementSyncProvider,
158
162
  };