react-native-screen-transitions 3.0.0-beta.1 → 3.0.0-beta.2

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.
@@ -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":"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","ignoreList":[]}
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":[]}
@@ -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,SAASA,aAAa,EAAEC,QAAQ,EAAEC,UAAU,EAAEC,OAAO,QAAQ,OAAO;AAEpE,SAECC,OAAO,EACPC,OAAO,EACPC,OAAO,EAEPC,mBAAmB,EACnBC,cAAc,QACR,yBAAyB;AAEhC,SAASC,OAAO,QAAQ,sBAAsB;AAC9C,SAASC,UAAU,QAAQ,0BAA0B;AACrD,SAASC,aAAa,QAAQ,2CAA2C;AACzE,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,OAAOC,iBAAiB,MAAM,wBAAwB;AACtD,OAAOC,sBAAsB,MAAM,8BAA8B;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAkBlE,MAAMC,wBAAwB,gBAC7BjB,aAAa,CAAsC,IAAI,CAAC;AAEzD,OAAO,MAAMkB,iBAAiB,GAAGA,CAAC;EACjCC,cAAc;EACdC,WAAW;EACXC,KAAK;EACLC;AACuB,CAAC,KAAK;EAC7B,MAAM;IAAEC,QAAQ;IAAEC,OAAO;IAAEC;EAAK,CAAC,GAAGhB,OAAO,CAAC,CAAC;EAC7C,MAAMiB,cAAc,GAAGvB,OAAO,CAAC,MAAMS,qBAAqB,CAACS,KAAK,CAAC,EAAE,CAACA,KAAK,CAAC,CAAC;EAE3E,MAAMM,uBAAuB,GAAGzB,UAAU,CAACe,wBAAwB,CAAC;EACpE,MAAMW,WAAW,GAAGpB,cAAc,CAAC,CAAC,CAAC;EACrC,MAAMqB,OAAO,GAAG,CAACF,uBAAuB;EAExC,MAAMG,UAAU,GAAGhB,sBAAsB,CAAC,MAAM;IAC/C,SAAS;;IACT,IAAIe,OAAO,EAAED,WAAW,CAACG,KAAK,GAAGH,WAAW,CAACG,KAAK,GAAG,CAAC;EACvD,CAAC,CAAC;EAEF,MAAMC,oBAAoB,GAAGlB,sBAAsB,CAClD,CAAC;IAAEQ,OAAO;IAAEW;EAA8C,CAAC,KAAK;IAC/D,SAAS;;IACT;IACA,IAAI,CAACd,cAAc,IAAIM,IAAI,EAAE;IAE7B,MAAMS,QAAQ,GAAG9B,OAAO,CAACgB,WAAW,CAAC;IAErC,IAAI,CAACc,QAAQ,EAAE;MACdC,OAAO,CAACC,IAAI,CACX,iFAAiFjB,cAAc,GAChG,CAAC;MACD;IACD;IAEA,MAAMkB,GAAG,GAAGb,OAAO,CAACc,KAAK,CAACD,GAAG;IAE7B,IAAI1B,aAAa,CAAC;MAAEuB,QAAQ;MAAEG,GAAG;MAAElB;IAAe,CAAC,CAAC,EAAE;MACrDW,UAAU,CAAC,CAAC;MACZ,IAAI,CAACG,iBAAiB,EAAE;QACvBvB,UAAU,CAAC6B,cAAc,CAACF,GAAG,EAAElB,cAAc,CAAC;MAC/C;MACA,IAAIG,OAAO,EAAEjB,OAAO,CAACiB,OAAO,CAAC,CAAC,CAAC;MAC/B;IACD;IAEAQ,UAAU,CAAC,CAAC;IAEZpB,UAAU,CAAC8B,SAAS,CAACH,GAAG,EAAElB,cAAc,EAAEe,QAAQ,EAAER,cAAc,CAAC;IACnE,IAAI,CAACO,iBAAiB,EAAE;MACvBvB,UAAU,CAAC6B,cAAc,CAACF,GAAG,EAAElB,cAAc,CAAC;IAC/C;IAEA,IAAIG,OAAO,EAAEjB,OAAO,CAACiB,OAAO,CAAC,CAAC,CAAC;EAChC,CACD,CAAC;EAED,MAAMmB,mBAAmB,GAAGjC,cAAc,CAAC,KAAK,CAAC;EACjD,MAAMkC,mBAAmB,GAAG5B,sBAAsB,CAAC,MAAM;IACxD,SAAS;;IAET,MAAM6B,OAAO,GAAGpB,QAAQ,EAAEe,KAAK,CAACD,GAAG;IACnC,IAAI,CAAClB,cAAc,IAAIsB,mBAAmB,CAACV,KAAK,IAAI,CAACY,OAAO,EAAE;MAC7D;IACD;IAEA,MAAMC,UAAU,GAAGlC,UAAU,CAACmC,SAAS,CAACF,OAAO,CAAC,GAAGxB,cAAc,CAAC;IAElE,IAAIyB,UAAU,EAAE;MACf;MACAZ,oBAAoB,CAAC;QAAEC,iBAAiB,EAAE;MAAK,CAAC,CAAC;MACjD;MACAQ,mBAAmB,CAACV,KAAK,GAAG,IAAI;IACjC;EACD,CAAC,CAAC;EAEF,MAAMe,oBAAoB,GAAGjC,iBAAiB,CAAC,MAAM;IACpD,IAAI,CAACM,cAAc,EAAE;MACpB,IAAIG,OAAO,EAAEA,OAAO,CAAC,CAAC;MACtB;IACD;;IAEA;IACAhB,OAAO,CAAC0B,oBAAoB,CAAC,CAAC;MAAEV;IAAQ,CAAC,CAAC;EAC3C,CAAC,CAAC;EAEF,MAAMyB,uBAAuB,GAAG5C,OAAO,CAAC,MAAM;IAC7C,IAAI,CAAC0B,OAAO,IAAI,CAACV,cAAc,EAAE;MAChC,OAAOlB,QAAQ;IAChB;IAEA,OAAO,CAAC;MAAE+C;IAAwC,CAAC,kBAClDhC,IAAA,CAACC,wBAAwB,CAACgC,QAAQ;MAAClB,KAAK,EAAE;QAAEmB,YAAY,EAAEtB;MAAY,CAAE;MAAAoB,QAAA,EACtEA;IAAQ,CACyB,CACnC;EACF,CAAC,EAAE,CAACnB,OAAO,EAAEV,cAAc,EAAES,WAAW,CAAC,CAAC;EAE1CrB,mBAAmB,CAClB,MAAMoB,uBAAuB,EAAEuB,YAAY,CAACnB,KAAK,EAChDP,OAAO,IAAK;IACZ,SAAS;;IAET;IACA,IAAIA,OAAO,KAAK,CAAC,IAAIA,OAAO,KAAK2B,SAAS,EAAE;;IAE5C;IACAnB,oBAAoB,CAAC;MAAEC,iBAAiB,EAAE;IAAK,CAAC,CAAC;EAClD,CACD,CAAC;EAED,OAAO;IACNS,mBAAmB;IACnBI,oBAAoB;IACpBC;EACD,CAAC;AACF,CAAC","ignoreList":[]}
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 +1 @@
1
- {"version":3,"file":"use-bound-registry.d.ts","sourceRoot":"","sources":["../../../../../src/shared/hooks/bounds/use-bound-registry.tsx"],"names":[],"mappings":"AACA,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;CAyBpD,CAAC"}
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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-screen-transitions",
3
- "version": "3.0.0-beta.1",
3
+ "version": "3.0.0-beta.2",
4
4
  "description": "Easy screen transitions for React Native and Expo",
5
5
  "author": "Ed",
6
6
  "license": "MIT",
@@ -1,4 +1,11 @@
1
- import { createContext, Fragment, useContext, useMemo } from "react";
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) => {