react-native-screens 4.19.0-nightly-20251022-4fcc5e7e3 → 4.19.0-nightly-20251024-ea2a0334f
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 +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenViewManager.kt +8 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +3 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +1 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +3 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +1 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerDelegate.java +3 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerInterface.java +1 -0
- package/ios/RNSScreen.h +1 -0
- package/ios/RNSScreen.mm +12 -1
- package/ios/RNSScreenStack.mm +2 -1
- package/ios/RNSScreenStackHeaderConfig.h +1 -0
- package/ios/RNSScreenStackHeaderConfig.mm +11 -1
- package/ios/RNSScreenStackHeaderSubview.h +1 -0
- package/ios/RNSScreenStackHeaderSubview.mm +11 -1
- package/ios/conversion/RNSConversions-SplitView.mm +19 -0
- package/ios/conversion/RNSConversions.h +5 -0
- package/ios/gamma/split-view/RNSSplitViewAppearanceApplicator.swift +1 -0
- package/ios/gamma/split-view/RNSSplitViewHostComponentView.h +3 -0
- package/ios/gamma/split-view/RNSSplitViewHostComponentView.mm +12 -0
- package/ios/gamma/split-view/RNSSplitViewScreenComponentView.mm +0 -18
- package/ios/gamma/split-view/RNSSplitViewScreenController.swift +5 -119
- package/lib/commonjs/components/Screen.js +3 -1
- package/lib/commonjs/components/Screen.js.map +1 -1
- package/lib/commonjs/components/ScreenStackHeaderConfig.js +9 -2
- package/lib/commonjs/components/ScreenStackHeaderConfig.js.map +1 -1
- package/lib/commonjs/fabric/ModalScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/gamma/SplitViewHostNativeComponent.js.map +1 -1
- package/lib/commonjs/flags.js +44 -6
- package/lib/commonjs/flags.js.map +1 -1
- package/lib/module/components/Screen.js +3 -1
- package/lib/module/components/Screen.js.map +1 -1
- package/lib/module/components/ScreenStackHeaderConfig.js +9 -2
- package/lib/module/components/ScreenStackHeaderConfig.js.map +1 -1
- package/lib/module/fabric/ModalScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenStackHeaderConfigNativeComponent.js.map +1 -1
- package/lib/module/fabric/ScreenStackHeaderSubviewNativeComponent.js.map +1 -1
- package/lib/module/fabric/gamma/SplitViewHostNativeComponent.js.map +1 -1
- package/lib/module/flags.js +44 -6
- package/lib/module/flags.js.map +1 -1
- package/lib/typescript/components/Screen.d.ts.map +1 -1
- package/lib/typescript/components/ScreenStackHeaderConfig.d.ts.map +1 -1
- package/lib/typescript/components/gamma/split-view/SplitViewHost.types.d.ts +23 -0
- package/lib/typescript/components/gamma/split-view/SplitViewHost.types.d.ts.map +1 -1
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/ModalScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/ScreenNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/ScreenStackHeaderConfigNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts +1 -0
- package/lib/typescript/fabric/ScreenStackHeaderSubviewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/fabric/gamma/SplitViewHostNativeComponent.d.ts +2 -0
- package/lib/typescript/fabric/gamma/SplitViewHostNativeComponent.d.ts.map +1 -1
- package/lib/typescript/flags.d.ts +3 -0
- package/lib/typescript/flags.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/Screen.tsx +5 -1
- package/src/components/ScreenStackHeaderConfig.tsx +22 -1
- package/src/components/gamma/split-view/SplitViewHost.types.ts +24 -0
- package/src/fabric/ModalScreenNativeComponent.ts +1 -0
- package/src/fabric/ScreenNativeComponent.ts +1 -0
- package/src/fabric/ScreenStackHeaderConfigNativeComponent.ts +1 -0
- package/src/fabric/ScreenStackHeaderSubviewNativeComponent.ts +1 -0
- package/src/fabric/gamma/SplitViewHostNativeComponent.ts +6 -0
- package/src/flags.ts +72 -11
package/README.md
CHANGED
|
@@ -233,6 +233,7 @@ Use `ScrollView` with prop `contentInsetAdjustmentBehavior=“automatic”` as a
|
|
|
233
233
|
| [Memory leak while moving from one screen to another in the same stack](https://github.com/software-mansion/react-native-screens/issues/843) | [explanation](https://github.com/software-mansion/react-native-screens/issues/843#issuecomment-832034119) |
|
|
234
234
|
| [LargeHeader stays small after pop/goBack/swipe gesture on iOS 14+](https://github.com/software-mansion/react-native-screens/issues/649) | [potential fix](https://github.com/software-mansion/react-native-screens/issues/649#issuecomment-712199895) |
|
|
235
235
|
| [`onScroll` and `onMomentumScrollEnd` of previous screen triggered in bottom tabs](https://github.com/software-mansion/react-native-screens/issues/1183) | [explanation](https://github.com/software-mansion/react-native-screens/issues/1183#issuecomment-949313111) |
|
|
236
|
+
| [SplitView doesn't clear the blur under primary column after switching to color with `opacity: 0`](https://github.com/software-mansion/react-native-screens/issues/3327) | [workarounds](https://github.com/software-mansion/react-native-screens/issues/3327#issuecomment-3432488799) |
|
|
236
237
|
|
|
237
238
|
## Contributing
|
|
238
239
|
|
|
@@ -205,6 +205,13 @@ class ScreenStackHeaderConfigViewManager :
|
|
|
205
205
|
config.setDirection(direction)
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
+
// synchronousShadowStateUpdatesEnabled is not available on Android atm,
|
|
209
|
+
// however we must override their setters
|
|
210
|
+
override fun setSynchronousShadowStateUpdatesEnabled(
|
|
211
|
+
config: ScreenStackHeaderConfig?,
|
|
212
|
+
value: Boolean,
|
|
213
|
+
) = Unit
|
|
214
|
+
|
|
208
215
|
override fun getExportedCustomDirectEventTypeConstants(): Map<String, Any> =
|
|
209
216
|
hashMapOf(
|
|
210
217
|
HeaderAttachedEvent.EVENT_NAME to hashMapOf("registrationName" to "onAttached"),
|
|
@@ -50,6 +50,13 @@ class ScreenStackHeaderSubviewManager :
|
|
|
50
50
|
Log.w("[RNScreens]", "hidesSharedBackground prop is not available on Android")
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
// synchronousShadowStateUpdatesEnabled is not available on Android atm,
|
|
54
|
+
// however we must override their setters
|
|
55
|
+
override fun setSynchronousShadowStateUpdatesEnabled(
|
|
56
|
+
view: ScreenStackHeaderSubview?,
|
|
57
|
+
value: Boolean,
|
|
58
|
+
) = Unit
|
|
59
|
+
|
|
53
60
|
override fun updateState(
|
|
54
61
|
view: ScreenStackHeaderSubview,
|
|
55
62
|
props: ReactStylesDiffMap?,
|
|
@@ -268,6 +268,7 @@ open class ScreenViewManager :
|
|
|
268
268
|
view?.sheetElevation = value.toFloat()
|
|
269
269
|
}
|
|
270
270
|
|
|
271
|
+
// mark: iOS-only
|
|
271
272
|
// these props are not available on Android, however we must override their setters
|
|
272
273
|
override fun setFullScreenSwipeEnabled(
|
|
273
274
|
view: Screen?,
|
|
@@ -334,6 +335,13 @@ open class ScreenViewManager :
|
|
|
334
335
|
value: String?,
|
|
335
336
|
) = Unit
|
|
336
337
|
|
|
338
|
+
override fun setSynchronousShadowStateUpdatesEnabled(
|
|
339
|
+
view: Screen?,
|
|
340
|
+
value: Boolean,
|
|
341
|
+
) = Unit
|
|
342
|
+
|
|
343
|
+
// END mark: iOS-only
|
|
344
|
+
|
|
337
345
|
@ReactProp(name = "sheetAllowedDetents")
|
|
338
346
|
override fun setSheetAllowedDetents(
|
|
339
347
|
view: Screen,
|
package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java
CHANGED
|
@@ -134,6 +134,9 @@ public class RNSScreenManagerDelegate<T extends View, U extends BaseViewManager<
|
|
|
134
134
|
case "topScrollEdgeEffect":
|
|
135
135
|
mViewManager.setTopScrollEdgeEffect(view, (String) value);
|
|
136
136
|
break;
|
|
137
|
+
case "synchronousShadowStateUpdatesEnabled":
|
|
138
|
+
mViewManager.setSynchronousShadowStateUpdatesEnabled(view, value == null ? false : (boolean) value);
|
|
139
|
+
break;
|
|
137
140
|
default:
|
|
138
141
|
super.setProperty(view, propName, value);
|
|
139
142
|
}
|
package/android/src/paper/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java
CHANGED
|
@@ -52,4 +52,5 @@ public interface RNSScreenManagerInterface<T extends View> {
|
|
|
52
52
|
void setLeftScrollEdgeEffect(T view, @Nullable String value);
|
|
53
53
|
void setRightScrollEdgeEffect(T view, @Nullable String value);
|
|
54
54
|
void setTopScrollEdgeEffect(T view, @Nullable String value);
|
|
55
|
+
void setSynchronousShadowStateUpdatesEnabled(T view, boolean value);
|
|
55
56
|
}
|
|
@@ -115,6 +115,9 @@ public class RNSScreenStackHeaderConfigManagerDelegate<T extends View, U extends
|
|
|
115
115
|
case "headerRightBarButtonItems":
|
|
116
116
|
mViewManager.setHeaderRightBarButtonItems(view, (ReadableArray) value);
|
|
117
117
|
break;
|
|
118
|
+
case "synchronousShadowStateUpdatesEnabled":
|
|
119
|
+
mViewManager.setSynchronousShadowStateUpdatesEnabled(view, value == null ? false : (boolean) value);
|
|
120
|
+
break;
|
|
118
121
|
default:
|
|
119
122
|
super.setProperty(view, propName, value);
|
|
120
123
|
}
|
|
@@ -45,4 +45,5 @@ public interface RNSScreenStackHeaderConfigManagerInterface<T extends View> {
|
|
|
45
45
|
void setTopInsetEnabled(T view, boolean value);
|
|
46
46
|
void setHeaderLeftBarButtonItems(T view, @Nullable ReadableArray value);
|
|
47
47
|
void setHeaderRightBarButtonItems(T view, @Nullable ReadableArray value);
|
|
48
|
+
void setSynchronousShadowStateUpdatesEnabled(T view, boolean value);
|
|
48
49
|
}
|
|
@@ -29,6 +29,9 @@ public class RNSScreenStackHeaderSubviewManagerDelegate<T extends View, U extend
|
|
|
29
29
|
case "hidesSharedBackground":
|
|
30
30
|
mViewManager.setHidesSharedBackground(view, value == null ? false : (boolean) value);
|
|
31
31
|
break;
|
|
32
|
+
case "synchronousShadowStateUpdatesEnabled":
|
|
33
|
+
mViewManager.setSynchronousShadowStateUpdatesEnabled(view, value == null ? false : (boolean) value);
|
|
34
|
+
break;
|
|
32
35
|
default:
|
|
33
36
|
super.setProperty(view, propName, value);
|
|
34
37
|
}
|
|
@@ -16,4 +16,5 @@ import androidx.annotation.Nullable;
|
|
|
16
16
|
public interface RNSScreenStackHeaderSubviewManagerInterface<T extends View> {
|
|
17
17
|
void setType(T view, @Nullable String value);
|
|
18
18
|
void setHidesSharedBackground(T view, boolean value);
|
|
19
|
+
void setSynchronousShadowStateUpdatesEnabled(T view, boolean value);
|
|
19
20
|
}
|
package/ios/RNSScreen.h
CHANGED
|
@@ -94,6 +94,7 @@ namespace react = facebook::react;
|
|
|
94
94
|
@property (nonatomic) RNSScrollEdgeEffect leftScrollEdgeEffect;
|
|
95
95
|
@property (nonatomic) RNSScrollEdgeEffect rightScrollEdgeEffect;
|
|
96
96
|
@property (nonatomic) RNSScrollEdgeEffect topScrollEdgeEffect;
|
|
97
|
+
@property (nonatomic, readwrite) BOOL synchronousShadowStateUpdatesEnabled;
|
|
97
98
|
|
|
98
99
|
@property (nonatomic, retain) NSNumber *transitionDuration;
|
|
99
100
|
@property (nonatomic, readonly) BOOL dismissed;
|
package/ios/RNSScreen.mm
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
#import <React/RCTRootComponentView.h>
|
|
13
13
|
#import <React/RCTScrollViewComponentView.h>
|
|
14
14
|
#import <React/RCTSurfaceTouchHandler.h>
|
|
15
|
+
#import <cxxreact/ReactNativeVersion.h>
|
|
15
16
|
#import <react/renderer/components/rnscreens/EventEmitters.h>
|
|
16
17
|
#import <react/renderer/components/rnscreens/Props.h>
|
|
17
18
|
#import <react/renderer/components/rnscreens/RCTComponentViewHelpers.h>
|
|
@@ -188,7 +189,15 @@ RNS_IGNORE_SUPER_CALL_END
|
|
|
188
189
|
: [_controller calculateHeaderHeightIsModal:self.isPresentedAsNativeModal];
|
|
189
190
|
|
|
190
191
|
auto newState = react::RNSScreenState{RCTSizeFromCGSize(self.bounds.size), {0, effectiveContentOffsetY}};
|
|
191
|
-
|
|
192
|
+
|
|
193
|
+
_state->updateState(
|
|
194
|
+
std::move(newState)
|
|
195
|
+
#if REACT_NATIVE_VERSION_MINOR >= 82
|
|
196
|
+
,
|
|
197
|
+
_synchronousShadowStateUpdatesEnabled ? facebook::react::EventQueue::UpdateMode::unstable_Immediate
|
|
198
|
+
: facebook::react::EventQueue::UpdateMode::Asynchronous
|
|
199
|
+
#endif
|
|
200
|
+
);
|
|
192
201
|
|
|
193
202
|
// TODO: Requesting layout on every layout is wrong. We should look for a way to get rid of this.
|
|
194
203
|
UINavigationController *navctr = _controller.navigationController;
|
|
@@ -1372,6 +1381,8 @@ RNS_IGNORE_SUPER_CALL_END
|
|
|
1372
1381
|
|
|
1373
1382
|
[self setSwipeDirection:[RNSConvert RNSScreenSwipeDirectionFromCppEquivalent:newScreenProps.swipeDirection]];
|
|
1374
1383
|
|
|
1384
|
+
[self setSynchronousShadowStateUpdatesEnabled:newScreenProps.synchronousShadowStateUpdatesEnabled];
|
|
1385
|
+
|
|
1375
1386
|
#if !TARGET_OS_TV
|
|
1376
1387
|
if (newScreenProps.statusBarHidden != oldScreenProps.statusBarHidden) {
|
|
1377
1388
|
[self setStatusBarHidden:newScreenProps.statusBarHidden];
|
package/ios/RNSScreenStack.mm
CHANGED
|
@@ -1245,7 +1245,8 @@ RNS_IGNORE_SUPER_CALL_END
|
|
|
1245
1245
|
BOOL isBackGesture = [panGestureRecognizer translationInView:panGestureRecognizer.view].x > 0 &&
|
|
1246
1246
|
_controller.viewControllers.count > 1;
|
|
1247
1247
|
|
|
1248
|
-
if (
|
|
1248
|
+
if (otherGestureRecognizer.state == UIGestureRecognizerStateBegan ||
|
|
1249
|
+
gestureRecognizer.state == UIGestureRecognizerStateBegan || isBackGesture) {
|
|
1249
1250
|
return NO;
|
|
1250
1251
|
}
|
|
1251
1252
|
|
|
@@ -65,6 +65,7 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
65
65
|
@property (nonatomic) RCTDirectEventBlock onPressHeaderBarButtonItem;
|
|
66
66
|
@property (nonatomic) RCTDirectEventBlock onPressHeaderBarButtonMenuItem;
|
|
67
67
|
#endif
|
|
68
|
+
@property (nonatomic, readwrite) BOOL synchronousShadowStateUpdatesEnabled;
|
|
68
69
|
|
|
69
70
|
NS_ASSUME_NONNULL_END
|
|
70
71
|
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
#import <React/RCTMountingTransactionObserving.h>
|
|
6
6
|
#import <React/UIView+React.h>
|
|
7
7
|
#import <ReactCommon/TurboModuleUtils.h>
|
|
8
|
+
#import <cxxreact/ReactNativeVersion.h>
|
|
8
9
|
#import <react/renderer/components/image/ImageProps.h>
|
|
9
10
|
#import <react/renderer/components/rnscreens/ComponentDescriptors.h>
|
|
10
11
|
#import <react/renderer/components/rnscreens/EventEmitters.h>
|
|
@@ -233,7 +234,14 @@ RNS_IGNORE_SUPER_CALL_END
|
|
|
233
234
|
|
|
234
235
|
if (newState != _lastSendState) {
|
|
235
236
|
_lastSendState = newState;
|
|
236
|
-
_state->updateState(
|
|
237
|
+
_state->updateState(
|
|
238
|
+
std::move(newState)
|
|
239
|
+
#if REACT_NATIVE_VERSION_MINOR >= 82
|
|
240
|
+
,
|
|
241
|
+
_synchronousShadowStateUpdatesEnabled ? facebook::react::EventQueue::UpdateMode::unstable_Immediate
|
|
242
|
+
: facebook::react::EventQueue::UpdateMode::Asynchronous
|
|
243
|
+
#endif
|
|
244
|
+
);
|
|
237
245
|
}
|
|
238
246
|
}
|
|
239
247
|
|
|
@@ -1178,6 +1186,8 @@ static RCTResizeMode resizeModeFromCppEquiv(react::ImageResizeMode resizeMode)
|
|
|
1178
1186
|
[self layoutNavigationControllerView];
|
|
1179
1187
|
}
|
|
1180
1188
|
|
|
1189
|
+
_synchronousShadowStateUpdatesEnabled = newScreenProps.synchronousShadowStateUpdatesEnabled;
|
|
1190
|
+
|
|
1181
1191
|
_initialPropsSet = YES;
|
|
1182
1192
|
_props = std::static_pointer_cast<react::RNSScreenStackHeaderConfigProps const>(props);
|
|
1183
1193
|
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
#import "RNSScreenStackHeaderConfig.h"
|
|
5
5
|
|
|
6
6
|
#ifdef RCT_NEW_ARCH_ENABLED
|
|
7
|
+
#import <cxxreact/ReactNativeVersion.h>
|
|
7
8
|
#import <react/renderer/components/rnscreens/ComponentDescriptors.h>
|
|
8
9
|
#import <react/renderer/components/rnscreens/EventEmitters.h>
|
|
9
10
|
#import <react/renderer/components/rnscreens/RCTComponentViewHelpers.h>
|
|
@@ -99,7 +100,15 @@ namespace react = facebook::react;
|
|
|
99
100
|
if (!CGRectEqualToRect(frame, _lastScheduledFrame)) {
|
|
100
101
|
auto newState =
|
|
101
102
|
react::RNSScreenStackHeaderSubviewState(RCTSizeFromCGSize(frame.size), RCTPointFromCGPoint(frame.origin));
|
|
102
|
-
_state->updateState(
|
|
103
|
+
_state->updateState(
|
|
104
|
+
std::move(newState)
|
|
105
|
+
#if REACT_NATIVE_VERSION_MINOR >= 82
|
|
106
|
+
,
|
|
107
|
+
_synchronousShadowStateUpdatesEnabled ? facebook::react::EventQueue::UpdateMode::unstable_Immediate
|
|
108
|
+
: facebook::react::EventQueue::UpdateMode::Asynchronous
|
|
109
|
+
#endif
|
|
110
|
+
);
|
|
111
|
+
|
|
103
112
|
_lastScheduledFrame = frame;
|
|
104
113
|
}
|
|
105
114
|
}
|
|
@@ -140,6 +149,7 @@ namespace react = facebook::react;
|
|
|
140
149
|
|
|
141
150
|
[self setType:[RNSConvert RNSScreenStackHeaderSubviewTypeFromCppEquivalent:newHeaderSubviewProps.type]];
|
|
142
151
|
[self setHidesSharedBackground:newHeaderSubviewProps.hidesSharedBackground];
|
|
152
|
+
[self setSynchronousShadowStateUpdatesEnabled:newHeaderSubviewProps.synchronousShadowStateUpdatesEnabled];
|
|
143
153
|
[super updateProps:props oldProps:oldProps];
|
|
144
154
|
}
|
|
145
155
|
|
|
@@ -60,6 +60,25 @@ UISplitViewControllerDisplayMode SplitViewPreferredDisplayModeFromHostProp(
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
+
#if !TARGET_OS_TV
|
|
64
|
+
UISplitViewControllerBackgroundStyle SplitViewPrimaryBackgroundStyleFromHostProp(
|
|
65
|
+
facebook::react::RNSSplitViewHostPrimaryBackgroundStyle primaryBackgroundStyle)
|
|
66
|
+
{
|
|
67
|
+
using enum facebook::react::RNSSplitViewHostPrimaryBackgroundStyle;
|
|
68
|
+
|
|
69
|
+
switch (primaryBackgroundStyle) {
|
|
70
|
+
case None:
|
|
71
|
+
return UISplitViewControllerBackgroundStyleNone;
|
|
72
|
+
case Sidebar:
|
|
73
|
+
return UISplitViewControllerBackgroundStyleSidebar;
|
|
74
|
+
case Default:
|
|
75
|
+
default:
|
|
76
|
+
UISplitViewController *tempSplitVC = [[UISplitViewController alloc] init];
|
|
77
|
+
return tempSplitVC.primaryBackgroundStyle;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
#endif // !TARGET_OS_TV
|
|
81
|
+
|
|
63
82
|
UISplitViewControllerDisplayModeButtonVisibility SplitViewDisplayModeButtonVisibilityFromHostProp(
|
|
64
83
|
react::RNSSplitViewHostDisplayModeButtonVisibility displayModeButtonVisibility)
|
|
65
84
|
{
|
|
@@ -94,6 +94,11 @@ UISplitViewControllerPrimaryEdge SplitViewPrimaryEdgeFromHostProp(react::RNSSpli
|
|
|
94
94
|
UISplitViewControllerDisplayMode SplitViewPreferredDisplayModeFromHostProp(
|
|
95
95
|
react::RNSSplitViewHostPreferredDisplayMode displayMode);
|
|
96
96
|
|
|
97
|
+
#if !TARGET_OS_TV
|
|
98
|
+
UISplitViewControllerBackgroundStyle SplitViewPrimaryBackgroundStyleFromHostProp(
|
|
99
|
+
react::RNSSplitViewHostPrimaryBackgroundStyle primaryBackgroundStyle);
|
|
100
|
+
#endif // !TARGET_OS_TV
|
|
101
|
+
|
|
97
102
|
UISplitViewControllerDisplayModeButtonVisibility SplitViewDisplayModeButtonVisibilityFromHostProp(
|
|
98
103
|
react::RNSSplitViewHostDisplayModeButtonVisibility displayModeButtonVisibility);
|
|
99
104
|
|
|
@@ -65,6 +65,7 @@ class RNSSplitViewAppearanceApplicator {
|
|
|
65
65
|
// Step 1 - general settings
|
|
66
66
|
splitViewController.displayModeButtonVisibility = splitView.displayModeButtonVisibility
|
|
67
67
|
splitViewController.preferredSplitBehavior = splitView.preferredSplitBehavior
|
|
68
|
+
splitViewController.primaryBackgroundStyle = splitView.primaryBackgroundStyle
|
|
68
69
|
splitViewController.presentsWithGesture = splitView.presentsWithGesture
|
|
69
70
|
splitViewController.primaryEdge = splitView.primaryEdge
|
|
70
71
|
splitViewController.showsSecondaryOnlyButton = splitView.showSecondaryToggleButton
|
|
@@ -35,6 +35,9 @@ NS_ASSUME_NONNULL_BEGIN
|
|
|
35
35
|
@property (nonatomic, readonly) UISplitViewControllerPrimaryEdge primaryEdge;
|
|
36
36
|
@property (nonatomic, readonly) UISplitViewControllerDisplayMode preferredDisplayMode;
|
|
37
37
|
@property (nonatomic, readonly) UISplitViewControllerDisplayModeButtonVisibility displayModeButtonVisibility;
|
|
38
|
+
#if !TARGET_OS_TV
|
|
39
|
+
@property (nonatomic, readonly) UISplitViewControllerBackgroundStyle primaryBackgroundStyle;
|
|
40
|
+
#endif // !TARGET_OS_TV
|
|
38
41
|
@property (nonatomic, readonly) BOOL presentsWithGesture;
|
|
39
42
|
@property (nonatomic, readonly) BOOL showSecondaryToggleButton;
|
|
40
43
|
@property (nonatomic, readonly) BOOL showInspector;
|
|
@@ -64,6 +64,10 @@ static const CGFloat epsilon = 1e-6;
|
|
|
64
64
|
_primaryEdge = UISplitViewControllerPrimaryEdgeLeading;
|
|
65
65
|
_preferredDisplayMode = UISplitViewControllerDisplayModeAutomatic;
|
|
66
66
|
_displayModeButtonVisibility = UISplitViewControllerDisplayModeButtonVisibilityAutomatic;
|
|
67
|
+
#if !TARGET_OS_TV
|
|
68
|
+
UISplitViewController *tempSplitVC = [[UISplitViewController alloc] init];
|
|
69
|
+
_primaryBackgroundStyle = tempSplitVC.primaryBackgroundStyle;
|
|
70
|
+
#endif // !TARGET_OS_TV
|
|
67
71
|
_presentsWithGesture = true;
|
|
68
72
|
_showSecondaryToggleButton = false;
|
|
69
73
|
_showInspector = false;
|
|
@@ -238,6 +242,14 @@ RNS_IGNORE_SUPER_CALL_END
|
|
|
238
242
|
rnscreens::conversion::SplitViewPreferredDisplayModeFromHostProp(newComponentProps.preferredDisplayMode);
|
|
239
243
|
}
|
|
240
244
|
|
|
245
|
+
#if !TARGET_OS_TV
|
|
246
|
+
if (oldComponentProps.primaryBackgroundStyle != newComponentProps.primaryBackgroundStyle) {
|
|
247
|
+
_needsSplitViewAppearanceUpdate = true;
|
|
248
|
+
_primaryBackgroundStyle =
|
|
249
|
+
rnscreens::conversion::SplitViewPrimaryBackgroundStyleFromHostProp(newComponentProps.primaryBackgroundStyle);
|
|
250
|
+
}
|
|
251
|
+
#endif // !TARGET_OS_TV
|
|
252
|
+
|
|
241
253
|
if (oldComponentProps.presentsWithGesture != newComponentProps.presentsWithGesture) {
|
|
242
254
|
_needsSplitViewAppearanceUpdate = true;
|
|
243
255
|
_presentsWithGesture = newComponentProps.presentsWithGesture;
|
|
@@ -167,24 +167,6 @@ namespace react = facebook::react;
|
|
|
167
167
|
return react::concreteComponentDescriptorProvider<react::RNSSplitViewScreenComponentDescriptor>();
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
- (void)updateLayoutMetrics:(const facebook::react::LayoutMetrics &)layoutMetrics
|
|
171
|
-
oldLayoutMetrics:(const facebook::react::LayoutMetrics &)oldLayoutMetrics
|
|
172
|
-
{
|
|
173
|
-
// We're tracking presentation layer updates in the RNSSplitViewScreen.
|
|
174
|
-
// There's a problem with SplitView that it sets the frame to the end value of the animation right after the animation
|
|
175
|
-
// begins. Because of that, the size of our component is desynchronizing easily and we're blocking a communication
|
|
176
|
-
// between native and shadow layout for a while until the transition ends. For the following case when we want to make
|
|
177
|
-
// a transition from width A to B:
|
|
178
|
-
// 1. size 'A' is set on ShadowNode
|
|
179
|
-
// 2. animation for the transition starts
|
|
180
|
-
// 3. `setFrame` is called with the width 'B'
|
|
181
|
-
// 4. in the same time, we want to track updates and treat intermediate value A' indicated from the presentation layer
|
|
182
|
-
// as our source of truth
|
|
183
|
-
if (![_controller isViewSizeTransitionInProgress]) {
|
|
184
|
-
[super updateLayoutMetrics:layoutMetrics oldLayoutMetrics:oldLayoutMetrics];
|
|
185
|
-
}
|
|
186
|
-
}
|
|
187
|
-
|
|
188
170
|
+ (BOOL)shouldBeRecycled
|
|
189
171
|
{
|
|
190
172
|
// There won't be tens of instances of this component usually & it's easier for now.
|
|
@@ -18,8 +18,6 @@ public class RNSSplitViewScreenController: UIViewController {
|
|
|
18
18
|
return splitViewScreenComponentView.reactEventEmitter()
|
|
19
19
|
}
|
|
20
20
|
|
|
21
|
-
private var viewSizeTransitionState: ViewSizeTransitionState? = nil
|
|
22
|
-
|
|
23
21
|
@objc public required init(splitViewScreenComponentView: RNSSplitViewScreenComponentView) {
|
|
24
22
|
self.splitViewScreenComponentView = splitViewScreenComponentView
|
|
25
23
|
super.init(nibName: nil, bundle: nil)
|
|
@@ -62,18 +60,6 @@ public class RNSSplitViewScreenController: UIViewController {
|
|
|
62
60
|
return self.splitViewController is RNSSplitViewHostController
|
|
63
61
|
}
|
|
64
62
|
|
|
65
|
-
///
|
|
66
|
-
/// @brief Determines whether an SplitView animated transition is currently running
|
|
67
|
-
///
|
|
68
|
-
/// Used to differentiate favor frames from the presentation layer over view's frame .
|
|
69
|
-
///
|
|
70
|
-
/// @return true if the transition is running, false otherwise.
|
|
71
|
-
///
|
|
72
|
-
@objc
|
|
73
|
-
public func isViewSizeTransitionInProgress() -> Bool {
|
|
74
|
-
return viewSizeTransitionState != nil
|
|
75
|
-
}
|
|
76
|
-
|
|
77
63
|
// MARK: Signals
|
|
78
64
|
|
|
79
65
|
@objc
|
|
@@ -83,55 +69,6 @@ public class RNSSplitViewScreenController: UIViewController {
|
|
|
83
69
|
|
|
84
70
|
// MARK: Layout
|
|
85
71
|
|
|
86
|
-
///
|
|
87
|
-
/// @brief This method is overridden to extract the value to which we're transitioning
|
|
88
|
-
/// and attach the DisplayLink to track frame updates on the presentation layer.
|
|
89
|
-
///
|
|
90
|
-
public override func viewWillTransition(
|
|
91
|
-
to size: CGSize,
|
|
92
|
-
with coordinator: any UIViewControllerTransitionCoordinator
|
|
93
|
-
) {
|
|
94
|
-
super.viewWillTransition(to: size, with: coordinator)
|
|
95
|
-
|
|
96
|
-
viewSizeTransitionState = ViewSizeTransitionState()
|
|
97
|
-
|
|
98
|
-
coordinator.animate(
|
|
99
|
-
alongsideTransition: { [weak self] context in
|
|
100
|
-
guard let self = self else { return }
|
|
101
|
-
guard let viewSizeTransitionState = self.viewSizeTransitionState else { return }
|
|
102
|
-
|
|
103
|
-
if viewSizeTransitionState.displayLink == nil {
|
|
104
|
-
viewSizeTransitionState.setupDisplayLink(
|
|
105
|
-
forTarget: self, selector: #selector(trackTransitionProgress))
|
|
106
|
-
}
|
|
107
|
-
},
|
|
108
|
-
completion: { [weak self] context in
|
|
109
|
-
guard let self = self else { return }
|
|
110
|
-
self.cleanupViewSizeTransitionState()
|
|
111
|
-
// After the animation completion, ensure that ShadowTree state
|
|
112
|
-
// is calculated relatively to the ancestor's frame by requesting
|
|
113
|
-
// the state update.
|
|
114
|
-
self.updateShadowTreeState()
|
|
115
|
-
})
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
private func cleanupViewSizeTransitionState() {
|
|
119
|
-
viewSizeTransitionState?.invalidate()
|
|
120
|
-
viewSizeTransitionState = nil
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
///
|
|
124
|
-
/// @brief This method is responsible for tracking animation frames and requests layout
|
|
125
|
-
/// which will synchronize ShadowNode size with the animation frame size.
|
|
126
|
-
///
|
|
127
|
-
@objc
|
|
128
|
-
private func trackTransitionProgress() {
|
|
129
|
-
if let currentFrame = view.layer.presentation()?.frame {
|
|
130
|
-
viewSizeTransitionState?.lastViewPresentationFrame = currentFrame
|
|
131
|
-
updateShadowTreeState()
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
72
|
@objc
|
|
136
73
|
public override func viewDidLayoutSubviews() {
|
|
137
74
|
super.viewDidLayoutSubviews()
|
|
@@ -146,8 +83,6 @@ public class RNSSplitViewScreenController: UIViewController {
|
|
|
146
83
|
/// Differentiates cases when we're in the Host hierarchy to calculate frame relatively
|
|
147
84
|
/// to the Host view from the modal case where we're passing absolute layout metrics to the ShadowNode.
|
|
148
85
|
///
|
|
149
|
-
/// Prefers to apply dynamic updates from the presentation layer if the transition is in progress.
|
|
150
|
-
///
|
|
151
86
|
private func updateShadowTreeState() {
|
|
152
87
|
// For modals, which are presented outside the SplitViewHost subtree (and RN hierarchy),
|
|
153
88
|
// we're attaching our touch handler and we don't need to apply any offset corrections,
|
|
@@ -163,48 +98,19 @@ public class RNSSplitViewScreenController: UIViewController {
|
|
|
163
98
|
"[RNScreens] Expected to find RNSSplitViewHost component for RNSSplitViewScreen component"
|
|
164
99
|
)
|
|
165
100
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
// which is read from `trackTransitionProgress` method.
|
|
169
|
-
if let lastViewPresentationFrame = viewSizeTransitionState?.lastViewPresentationFrame,
|
|
170
|
-
!lastViewPresentationFrame.isNull
|
|
171
|
-
{
|
|
172
|
-
shadowStateProxy.updateShadowState(
|
|
173
|
-
ofComponent: splitViewScreenComponentView, withFrame: lastViewPresentationFrame,
|
|
174
|
-
inContextOfAncestorView: ancestorView!)
|
|
175
|
-
return
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// There might be the case, when transition is about to start and in the meantime,
|
|
179
|
-
// sth else is triggering frame update relatively to the parent. As we know
|
|
180
|
-
// that dynamic updates from the presentation layer are coming, we're blocking this
|
|
181
|
-
// to prevent interrupting with the frames that are less important for us.
|
|
182
|
-
// This works fine, because after the animation completion, we're sending the last update
|
|
183
|
-
// which is compatible with the frame which would be calculated relatively to the ancestor here.
|
|
184
|
-
if !isViewSizeTransitionInProgress() {
|
|
185
|
-
shadowStateProxy.updateShadowState(
|
|
186
|
-
ofComponent: splitViewScreenComponentView, inContextOfAncestorView: ancestorView)
|
|
187
|
-
}
|
|
101
|
+
shadowStateProxy.updateShadowState(
|
|
102
|
+
ofComponent: splitViewScreenComponentView, inContextOfAncestorView: ancestorView)
|
|
188
103
|
}
|
|
189
104
|
|
|
190
105
|
///
|
|
191
106
|
/// @brief Request ShadowNode state update when the SplitView screen frame origin has changed.
|
|
192
107
|
///
|
|
193
|
-
/// If there's a transition in progress, this function is ignored as we prefer to apply updates
|
|
194
|
-
/// that are dynamically coming from the presentation layer, rather than reading the frame, because
|
|
195
|
-
/// view's frame is set to the target value at the begining of the transition.
|
|
196
|
-
///
|
|
197
108
|
/// @param splitViewController The UISplitViewController whose layout positioning changed, represented by RNSSplitViewHostController.
|
|
198
109
|
///
|
|
199
110
|
func columnPositioningDidChangeIn(splitViewController: UISplitViewController) {
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
if !isViewSizeTransitionInProgress() {
|
|
204
|
-
shadowStateProxy.updateShadowState(
|
|
205
|
-
ofComponent: splitViewScreenComponentView, inContextOfAncestorView: splitViewController.view
|
|
206
|
-
)
|
|
207
|
-
}
|
|
111
|
+
shadowStateProxy.updateShadowState(
|
|
112
|
+
ofComponent: splitViewScreenComponentView, inContextOfAncestorView: splitViewController.view
|
|
113
|
+
)
|
|
208
114
|
}
|
|
209
115
|
|
|
210
116
|
// MARK: Events
|
|
@@ -237,23 +143,3 @@ extension RNSSplitViewScreenController: RNSFrameCorrectionProvider {
|
|
|
237
143
|
self.splitViewScreenComponentView.unregister(fromFrameCorrection: view)
|
|
238
144
|
}
|
|
239
145
|
}
|
|
240
|
-
|
|
241
|
-
private class ViewSizeTransitionState {
|
|
242
|
-
public var displayLink: CADisplayLink?
|
|
243
|
-
public var lastViewPresentationFrame: CGRect = CGRect.null
|
|
244
|
-
|
|
245
|
-
public func setupDisplayLink(forTarget target: Any, selector sel: Selector) {
|
|
246
|
-
if displayLink != nil {
|
|
247
|
-
displayLink?.invalidate()
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
displayLink = CADisplayLink(target: target, selector: sel)
|
|
251
|
-
displayLink!.add(to: .main, forMode: .common)
|
|
252
|
-
}
|
|
253
|
-
|
|
254
|
-
public func invalidate() {
|
|
255
|
-
displayLink?.invalidate()
|
|
256
|
-
displayLink = nil
|
|
257
|
-
lastViewPresentationFrame = CGRect.null
|
|
258
|
-
}
|
|
259
|
-
}
|
|
@@ -15,6 +15,7 @@ var _ModalScreenNativeComponent = _interopRequireDefault(require("../fabric/Moda
|
|
|
15
15
|
var _usePrevious = require("./helpers/usePrevious");
|
|
16
16
|
var _sheet = require("./helpers/sheet");
|
|
17
17
|
var _utils = require("../utils");
|
|
18
|
+
var _flags = _interopRequireDefault(require("../flags"));
|
|
18
19
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
19
20
|
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); } // Native components
|
|
20
21
|
const AnimatedNativeScreen = _reactNative.Animated.createAnimatedComponent(_ScreenNativeComponent.default);
|
|
@@ -176,7 +177,8 @@ const InnerScreen = exports.InnerScreen = /*#__PURE__*/_react.default.forwardRef
|
|
|
176
177
|
bottomScrollEdgeEffect: scrollEdgeEffects?.bottom,
|
|
177
178
|
leftScrollEdgeEffect: scrollEdgeEffects?.left,
|
|
178
179
|
rightScrollEdgeEffect: scrollEdgeEffects?.right,
|
|
179
|
-
topScrollEdgeEffect: scrollEdgeEffects?.top
|
|
180
|
+
topScrollEdgeEffect: scrollEdgeEffects?.top,
|
|
181
|
+
synchronousShadowStateUpdatesEnabled: _flags.default.experiment.synchronousScreenUpdatesEnabled
|
|
180
182
|
}), !isNativeStack ?
|
|
181
183
|
// see comment of this prop in types.tsx for information why it is needed
|
|
182
184
|
children : /*#__PURE__*/_react.default.createElement(_TransitionProgressContext.default.Provider, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Object","defineProperty","exports","value","default","ScreenContext","InnerScreen","_react","_interopRequireDefault","require","_reactNative","_TransitionProgressContext","_DelayedFreeze","_core","_ScreenNativeComponent","_ModalScreenNativeComponent","_usePrevious","_sheet","_utils","e","__esModule","_extends","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","AnimatedNativeScreen","Animated","createAnimatedComponent","ScreenNativeComponent","AnimatedNativeModalScreen","ModalScreenNativeComponent","React","forwardRef","props","ref","innerRef","useRef","useImperativeHandle","current","prevActivityState","usePrevious","activityState","setRef","onComponentRef","closing","Value","progress","goingForward","enabled","screensEnabled","freezeOnBlur","freezeEnabled","shouldFreeze","rest","sheetAllowedDetents","sheetLargestUndimmedDetentIndex","SHEET_DIMMED_ALWAYS","sheetGrabberVisible","sheetCornerRadius","sheetExpandsWhenScrolledToEdge","sheetElevation","sheetInitialDetentIndex","screenId","stackPresentation","onAppear","onDisappear","onWillAppear","onWillDisappear","isNativePlatformSupported","resolvedSheetAllowedDetents","resolveSheetAllowedDetents","resolvedSheetLargestUndimmedDetent","resolveSheetLargestUndimmedDetent","resolvedSheetInitialDetentIndex","resolveSheetInitialDetentIndex","shouldUseModalScreenComponent","Platform","select","ios","undefined","android","AnimatedScreen","active","children","isNativeStack","fullScreenSwipeEnabled","gestureResponseDistance","scrollEdgeEffects","onGestureCancel","style","console","warn","Error","handleRef","viewConfig","validAttributes","display","_viewConfig","__viewConfig","freeze","createElement","zIndex","sheetLargestUndimmedDetent","sheetInitialDetent","parseBooleanToOptionalBooleanNativeProp","start","end","top","bottom","onTransitionProgress","event","nativeEvent","useNativeDriver","bottomScrollEdgeEffect","leftScrollEdgeEffect","left","rightScrollEdgeEffect","right","topScrollEdgeEffect","Provider","View","createContext","Screen","ScreenWrapper","useContext","displayName","_default"],"sourceRoot":"../../../src","sources":["components/Screen.tsx"],"mappings":";AAAA,YAAY;;AAACA,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,CAAAE,OAAA,GAAAF,OAAA,CAAAG,aAAA,GAAAH,OAAA,CAAAI,WAAA;AAEb,IAAAC,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,0BAAA,GAAAH,sBAAA,CAAAC,OAAA;AACA,IAAAG,cAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAGA,IAAAI,KAAA,GAAAJ,OAAA;AAOA,IAAAK,sBAAA,GAAAN,sBAAA,CAAAC,OAAA;AAGA,IAAAM,2BAAA,GAAAP,sBAAA,CAAAC,OAAA;AAIA,IAAAO,YAAA,GAAAP,OAAA;AACA,IAAAQ,MAAA,GAAAR,OAAA;AAMA,IAAAS,MAAA,GAAAT,OAAA;
|
|
1
|
+
{"version":3,"names":["Object","defineProperty","exports","value","default","ScreenContext","InnerScreen","_react","_interopRequireDefault","require","_reactNative","_TransitionProgressContext","_DelayedFreeze","_core","_ScreenNativeComponent","_ModalScreenNativeComponent","_usePrevious","_sheet","_utils","_flags","e","__esModule","_extends","assign","bind","n","arguments","length","t","r","hasOwnProperty","call","apply","AnimatedNativeScreen","Animated","createAnimatedComponent","ScreenNativeComponent","AnimatedNativeModalScreen","ModalScreenNativeComponent","React","forwardRef","props","ref","innerRef","useRef","useImperativeHandle","current","prevActivityState","usePrevious","activityState","setRef","onComponentRef","closing","Value","progress","goingForward","enabled","screensEnabled","freezeOnBlur","freezeEnabled","shouldFreeze","rest","sheetAllowedDetents","sheetLargestUndimmedDetentIndex","SHEET_DIMMED_ALWAYS","sheetGrabberVisible","sheetCornerRadius","sheetExpandsWhenScrolledToEdge","sheetElevation","sheetInitialDetentIndex","screenId","stackPresentation","onAppear","onDisappear","onWillAppear","onWillDisappear","isNativePlatformSupported","resolvedSheetAllowedDetents","resolveSheetAllowedDetents","resolvedSheetLargestUndimmedDetent","resolveSheetLargestUndimmedDetent","resolvedSheetInitialDetentIndex","resolveSheetInitialDetentIndex","shouldUseModalScreenComponent","Platform","select","ios","undefined","android","AnimatedScreen","active","children","isNativeStack","fullScreenSwipeEnabled","gestureResponseDistance","scrollEdgeEffects","onGestureCancel","style","console","warn","Error","handleRef","viewConfig","validAttributes","display","_viewConfig","__viewConfig","freeze","createElement","zIndex","sheetLargestUndimmedDetent","sheetInitialDetent","parseBooleanToOptionalBooleanNativeProp","start","end","top","bottom","onTransitionProgress","event","nativeEvent","useNativeDriver","bottomScrollEdgeEffect","leftScrollEdgeEffect","left","rightScrollEdgeEffect","right","topScrollEdgeEffect","synchronousShadowStateUpdatesEnabled","featureFlags","experiment","synchronousScreenUpdatesEnabled","Provider","View","createContext","Screen","ScreenWrapper","useContext","displayName","_default"],"sourceRoot":"../../../src","sources":["components/Screen.tsx"],"mappings":"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","ignoreList":[]}
|