@lodev09/react-native-true-sheet 4.0.0-beta.5 → 4.0.0-beta.7
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/android/src/main/java/com/lodev09/truesheet/TrueSheetOverlayView.kt +106 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetOverlayViewManager.kt +45 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetPackage.kt +2 -1
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetStateUpdater.kt +18 -0
- package/android/src/main/java/com/lodev09/truesheet/TrueSheetView.kt +3 -25
- package/android/src/main/java/com/lodev09/truesheet/core/TrueSheetOverlayRootView.kt +137 -0
- package/android/src/main/java/com/lodev09/truesheet/utils/ViewUtils.kt +19 -0
- package/android/src/main/jni/TrueSheetSpec.h +1 -0
- package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetLayoutUtils.h +46 -0
- package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetOverlayViewComponentDescriptor.h +21 -0
- package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetOverlayViewShadowNode.cpp +17 -0
- package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetOverlayViewShadowNode.h +36 -0
- package/common/cpp/react/renderer/components/TrueSheetSpec/TrueSheetViewShadowNode.cpp +4 -35
- package/ios/TrueSheetContentView.h +3 -1
- package/ios/TrueSheetContentView.mm +11 -0
- package/ios/TrueSheetOverlayView.h +32 -0
- package/ios/TrueSheetOverlayView.mm +141 -0
- package/ios/TrueSheetView.mm +17 -0
- package/ios/TrueSheetViewController.mm +27 -13
- package/ios/core/TrueSheetOverlayContainerView.h +31 -0
- package/ios/core/TrueSheetOverlayContainerView.mm +35 -0
- package/ios/tvos/TrueSheetStubs.mm +12 -0
- package/lib/module/TrueSheetOverlay.js +30 -0
- package/lib/module/TrueSheetOverlay.js.map +1 -0
- package/lib/module/TrueSheetOverlay.web.js +35 -0
- package/lib/module/TrueSheetOverlay.web.js.map +1 -0
- package/lib/module/fabric/TrueSheetOverlayViewNativeComponent.ts +12 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/mocks/index.js +10 -0
- package/lib/module/mocks/index.js.map +1 -1
- package/lib/module/mocks/navigationExpoRouter.js.map +1 -1
- package/lib/module/navigation/base-types.js +2 -0
- package/lib/module/navigation/base-types.js.map +1 -0
- package/lib/module/navigation/createTrueSheetRouter.js +0 -9
- package/lib/module/navigation/createTrueSheetRouter.js.map +1 -1
- package/lib/module/navigation/expo-router/base-types.js +2 -0
- package/lib/module/navigation/expo-router/base-types.js.map +1 -0
- package/lib/module/navigation/expo-router/index.js +5 -3
- package/lib/module/navigation/expo-router/index.js.map +1 -1
- package/lib/module/navigation/expo-router/types.js +4 -0
- package/lib/module/navigation/expo-router/types.js.map +1 -0
- package/lib/module/navigation/index.js.map +1 -1
- package/lib/typescript/src/TrueSheetOverlay.d.ts +8 -0
- package/lib/typescript/src/TrueSheetOverlay.d.ts.map +1 -0
- package/lib/typescript/src/TrueSheetOverlay.web.d.ts +8 -0
- package/lib/typescript/src/TrueSheetOverlay.web.d.ts.map +1 -0
- package/lib/typescript/src/fabric/TrueSheetOverlayViewNativeComponent.d.ts +6 -0
- package/lib/typescript/src/fabric/TrueSheetOverlayViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/mocks/index.d.ts +4 -0
- package/lib/typescript/src/mocks/index.d.ts.map +1 -1
- package/lib/typescript/src/mocks/navigationExpoRouter.d.ts +3 -3
- package/lib/typescript/src/mocks/navigationExpoRouter.d.ts.map +1 -1
- package/lib/typescript/src/navigation/base-types.d.ts +9 -0
- package/lib/typescript/src/navigation/base-types.d.ts.map +1 -0
- package/lib/typescript/src/navigation/createTrueSheetRouter.d.ts +2 -13
- package/lib/typescript/src/navigation/createTrueSheetRouter.d.ts.map +1 -1
- package/lib/typescript/src/navigation/expo-router/base-types.d.ts +8 -0
- package/lib/typescript/src/navigation/expo-router/base-types.d.ts.map +1 -0
- package/lib/typescript/src/navigation/expo-router/index.d.ts +5 -5
- package/lib/typescript/src/navigation/expo-router/index.d.ts.map +1 -1
- package/lib/typescript/src/navigation/expo-router/types.d.ts +44 -0
- package/lib/typescript/src/navigation/expo-router/types.d.ts.map +1 -0
- package/lib/typescript/src/navigation/index.d.ts +3 -4
- package/lib/typescript/src/navigation/index.d.ts.map +1 -1
- package/lib/typescript/src/navigation/types.d.ts +34 -4
- package/lib/typescript/src/navigation/types.d.ts.map +1 -1
- package/package.json +9 -1
- package/react-native.config.js +1 -0
- package/src/TrueSheetOverlay.tsx +24 -0
- package/src/TrueSheetOverlay.web.tsx +33 -0
- package/src/fabric/TrueSheetOverlayViewNativeComponent.ts +12 -0
- package/src/index.ts +1 -0
- package/src/mocks/index.ts +7 -0
- package/src/mocks/navigationExpoRouter.ts +6 -5
- package/src/navigation/base-types.ts +20 -0
- package/src/navigation/createTrueSheetRouter.ts +5 -33
- package/src/navigation/expo-router/base-types.ts +18 -0
- package/src/navigation/expo-router/index.ts +20 -19
- package/src/navigation/expo-router/types.ts +116 -0
- package/src/navigation/index.ts +6 -7
- package/src/navigation/types.ts +65 -19
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Created by Jovanni Lo (@lodev09)
|
|
3
|
+
// Copyright (c) 2024-present. All rights reserved.
|
|
4
|
+
//
|
|
5
|
+
// This source code is licensed under the MIT license found in the
|
|
6
|
+
// LICENSE file in the root directory of this source tree.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
10
|
+
|
|
11
|
+
#import "TrueSheetOverlayView.h"
|
|
12
|
+
#import "core/TrueSheetOverlayContainerView.h"
|
|
13
|
+
|
|
14
|
+
#import <react/renderer/components/TrueSheetSpec/EventEmitters.h>
|
|
15
|
+
#import <react/renderer/components/TrueSheetSpec/Props.h>
|
|
16
|
+
#import <react/renderer/components/TrueSheetSpec/RCTComponentViewHelpers.h>
|
|
17
|
+
#import <react/renderer/components/TrueSheetSpec/TrueSheetOverlayViewComponentDescriptor.h>
|
|
18
|
+
#import <react/renderer/components/TrueSheetSpec/TrueSheetOverlayViewShadowNode.h>
|
|
19
|
+
|
|
20
|
+
#import <React/RCTSurfaceTouchHandler.h>
|
|
21
|
+
|
|
22
|
+
using namespace facebook::react;
|
|
23
|
+
|
|
24
|
+
static NSHashTable<TrueSheetOverlayView *> *gOverlayViews;
|
|
25
|
+
|
|
26
|
+
@interface TrueSheetOverlayView () <TrueSheetOverlayContainerViewDelegate>
|
|
27
|
+
@end
|
|
28
|
+
|
|
29
|
+
@implementation TrueSheetOverlayView {
|
|
30
|
+
TrueSheetOverlayContainerView *_containerView;
|
|
31
|
+
RCTSurfaceTouchHandler *_touchHandler;
|
|
32
|
+
TrueSheetOverlayViewShadowNode::ConcreteState::Shared _state;
|
|
33
|
+
CGSize _lastStateSize;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
+ (ComponentDescriptorProvider)componentDescriptorProvider {
|
|
37
|
+
return concreteComponentDescriptorProvider<TrueSheetOverlayViewComponentDescriptor>();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
+ (void)bringOverlaysToFrontInWindow:(nullable UIWindow *)window {
|
|
41
|
+
if (!window)
|
|
42
|
+
return;
|
|
43
|
+
|
|
44
|
+
for (TrueSheetOverlayView *overlay in gOverlayViews) {
|
|
45
|
+
if (overlay->_containerView.superview == window) {
|
|
46
|
+
[window bringSubviewToFront:overlay->_containerView];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
- (instancetype)initWithFrame:(CGRect)frame {
|
|
52
|
+
if (self = [super initWithFrame:frame]) {
|
|
53
|
+
static const auto defaultProps = std::make_shared<const TrueSheetOverlayViewProps>();
|
|
54
|
+
_props = defaultProps;
|
|
55
|
+
|
|
56
|
+
_containerView = [[TrueSheetOverlayContainerView alloc] initWithFrame:CGRectZero];
|
|
57
|
+
_containerView.delegate = self;
|
|
58
|
+
|
|
59
|
+
_touchHandler = [[RCTSurfaceTouchHandler alloc] init];
|
|
60
|
+
[_touchHandler attachToView:_containerView];
|
|
61
|
+
|
|
62
|
+
_lastStateSize = CGSizeZero;
|
|
63
|
+
|
|
64
|
+
// The host stays in the React tree for layout only — children render in the container
|
|
65
|
+
self.hidden = YES;
|
|
66
|
+
|
|
67
|
+
if (!gOverlayViews) {
|
|
68
|
+
gOverlayViews = [NSHashTable weakObjectsHashTable];
|
|
69
|
+
}
|
|
70
|
+
[gOverlayViews addObject:self];
|
|
71
|
+
}
|
|
72
|
+
return self;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
- (void)didMoveToWindow {
|
|
76
|
+
[super didMoveToWindow];
|
|
77
|
+
|
|
78
|
+
UIWindow *window = self.window;
|
|
79
|
+
if (window) {
|
|
80
|
+
_containerView.frame = window.bounds;
|
|
81
|
+
[window addSubview:_containerView];
|
|
82
|
+
} else {
|
|
83
|
+
[_containerView removeFromSuperview];
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
#pragma mark - State
|
|
88
|
+
|
|
89
|
+
- (void)updateState:(const State::Shared &)state oldState:(const State::Shared &)oldState {
|
|
90
|
+
_state = std::static_pointer_cast<TrueSheetOverlayViewShadowNode::ConcreteState const>(state);
|
|
91
|
+
|
|
92
|
+
if (self.window) {
|
|
93
|
+
[self updateStateWithSize:self.window.bounds.size];
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
- (void)overlayContainerViewDidLayout:(CGSize)size {
|
|
98
|
+
[self updateStateWithSize:size];
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
- (void)updateStateWithSize:(CGSize)size {
|
|
102
|
+
if (!_state)
|
|
103
|
+
return;
|
|
104
|
+
|
|
105
|
+
if (fabs(size.width - _lastStateSize.width) < 0.5 && fabs(size.height - _lastStateSize.height) < 0.5)
|
|
106
|
+
return;
|
|
107
|
+
|
|
108
|
+
_lastStateSize = size;
|
|
109
|
+
|
|
110
|
+
auto stateData = _state->getData();
|
|
111
|
+
stateData.containerWidth = static_cast<float>(size.width);
|
|
112
|
+
stateData.containerHeight = static_cast<float>(size.height);
|
|
113
|
+
_state->updateState(std::move(stateData), EventQueue::UpdateMode::unstable_Immediate);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
#pragma mark - Child Component Mounting
|
|
117
|
+
|
|
118
|
+
- (void)mountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index {
|
|
119
|
+
[_containerView insertSubview:childComponentView atIndex:index];
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
- (void)unmountChildComponentView:(UIView<RCTComponentViewProtocol> *)childComponentView index:(NSInteger)index {
|
|
123
|
+
[childComponentView removeFromSuperview];
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
- (void)prepareForRecycle {
|
|
127
|
+
[super prepareForRecycle];
|
|
128
|
+
|
|
129
|
+
[_containerView removeFromSuperview];
|
|
130
|
+
_lastStateSize = CGSizeZero;
|
|
131
|
+
_state.reset();
|
|
132
|
+
self.hidden = YES;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@end
|
|
136
|
+
|
|
137
|
+
Class<RCTComponentViewProtocol> TrueSheetOverlayViewCls(void) {
|
|
138
|
+
return TrueSheetOverlayView.class;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
#endif
|
package/ios/TrueSheetView.mm
CHANGED
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
#import "TrueSheetContentView.h"
|
|
14
14
|
#import "TrueSheetFooterView.h"
|
|
15
15
|
#import "TrueSheetModule.h"
|
|
16
|
+
#import "TrueSheetOverlayView.h"
|
|
16
17
|
#import "TrueSheetViewController.h"
|
|
17
18
|
#import "core/RNScreensEventObserver.h"
|
|
18
19
|
#import "events/TrueSheetDragEvents.h"
|
|
@@ -525,13 +526,29 @@ using namespace facebook::react;
|
|
|
525
526
|
[_screensEventObserver capturePresenterScreenFromView:self];
|
|
526
527
|
[_screensEventObserver startObservingWithState:_state.get()->getData()];
|
|
527
528
|
|
|
529
|
+
UIWindow *window = presentingViewController.view.window;
|
|
528
530
|
[presentingViewController presentViewController:_controller
|
|
529
531
|
animated:animated
|
|
530
532
|
completion:^{
|
|
533
|
+
[TrueSheetOverlayView bringOverlaysToFrontInWindow:window];
|
|
531
534
|
if (completion) {
|
|
532
535
|
completion(YES, nil);
|
|
533
536
|
}
|
|
534
537
|
}];
|
|
538
|
+
|
|
539
|
+
// Presenting adds the sheet's transition view on top of the window once the
|
|
540
|
+
// transition starts — re-front overlays alongside it so the first frame is
|
|
541
|
+
// already ordered (and again on completion in case the transition was queued)
|
|
542
|
+
id<UIViewControllerTransitionCoordinator> coordinator = _controller.transitionCoordinator;
|
|
543
|
+
if (coordinator) {
|
|
544
|
+
[coordinator
|
|
545
|
+
animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
|
|
546
|
+
[TrueSheetOverlayView bringOverlaysToFrontInWindow:window];
|
|
547
|
+
}
|
|
548
|
+
completion:nil];
|
|
549
|
+
} else {
|
|
550
|
+
[TrueSheetOverlayView bringOverlaysToFrontInWindow:window];
|
|
551
|
+
}
|
|
535
552
|
}
|
|
536
553
|
|
|
537
554
|
- (void)resizeToIndex:(NSInteger)index completion:(nullable TrueSheetCompletionBlock)completion {
|
|
@@ -207,7 +207,10 @@ static char TrueSheetAccessibilityWindowPreviousElementsKey;
|
|
|
207
207
|
}
|
|
208
208
|
|
|
209
209
|
- (CGFloat)screenHeight {
|
|
210
|
-
|
|
210
|
+
// In a windowed iPad app (Stage Manager, iPadOS 26 windowing) the window can be shorter than
|
|
211
|
+
// UIScreen.mainScreen, so prefer the window's height. Some callers run before this controller's
|
|
212
|
+
// view is attached (e.g. mid-presentation detent resolution), so fall back to the presenter's.
|
|
213
|
+
UIWindow *window = self.view.window ?: self.presentingViewController.view.window;
|
|
211
214
|
return window ? window.bounds.size.height : UIScreen.mainScreen.bounds.size.height;
|
|
212
215
|
}
|
|
213
216
|
|
|
@@ -671,6 +674,22 @@ static BOOL TrueSheetIsPhoneIdiom(void) {
|
|
|
671
674
|
}
|
|
672
675
|
}
|
|
673
676
|
|
|
677
|
+
// Rotation or an iPad window resize changes the height fractional detents
|
|
678
|
+
// resolve against — re-resolve alongside the transition so the sheet lands on
|
|
679
|
+
// the new height instead of waiting for a content-driven rebuild.
|
|
680
|
+
- (void)viewWillTransitionToSize:(CGSize)size
|
|
681
|
+
withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
|
|
682
|
+
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
|
|
683
|
+
|
|
684
|
+
if (@available(iOS 16.0, *)) {
|
|
685
|
+
[coordinator
|
|
686
|
+
animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
|
|
687
|
+
[self.sheet invalidateDetents];
|
|
688
|
+
}
|
|
689
|
+
completion:nil];
|
|
690
|
+
}
|
|
691
|
+
}
|
|
692
|
+
|
|
674
693
|
// Fires when UIKit resolves the sheet's float/anchored placement (present,
|
|
675
694
|
// detent resize crossing the float threshold, rotation). The footer's
|
|
676
695
|
// absorbed inset follows the observed safe area — repush it right away so
|
|
@@ -1198,8 +1217,13 @@ static BOOL TrueSheetIsPhoneIdiom(void) {
|
|
|
1198
1217
|
|
|
1199
1218
|
if (@available(iOS 16.0, *)) {
|
|
1200
1219
|
NSString *detentId = [NSString stringWithFormat:@"custom-%f", value];
|
|
1201
|
-
|
|
1202
|
-
|
|
1220
|
+
// Resolve lazily — detents are built before presentation (no window yet), and
|
|
1221
|
+
// UIKit re-resolves on container size changes (rotation, windowed iPad resize).
|
|
1222
|
+
return [self customDetentWithIdentifier:detentId
|
|
1223
|
+
atIndex:index
|
|
1224
|
+
heightBlock:^CGFloat {
|
|
1225
|
+
return value * self.screenHeight;
|
|
1226
|
+
}];
|
|
1203
1227
|
} else if (value >= 0.5) {
|
|
1204
1228
|
return [UISheetPresentationControllerDetent largeDetent];
|
|
1205
1229
|
} else {
|
|
@@ -1207,16 +1231,6 @@ static BOOL TrueSheetIsPhoneIdiom(void) {
|
|
|
1207
1231
|
}
|
|
1208
1232
|
}
|
|
1209
1233
|
|
|
1210
|
-
- (UISheetPresentationControllerDetent *)customDetentWithIdentifier:(NSString *)identifier
|
|
1211
|
-
height:(CGFloat)height
|
|
1212
|
-
atIndex:(NSInteger)index API_AVAILABLE(ios(16.0)) {
|
|
1213
|
-
return [self customDetentWithIdentifier:identifier
|
|
1214
|
-
atIndex:index
|
|
1215
|
-
heightBlock:^CGFloat {
|
|
1216
|
-
return height;
|
|
1217
|
-
}];
|
|
1218
|
-
}
|
|
1219
|
-
|
|
1220
1234
|
- (UISheetPresentationControllerDetent *)customDetentWithIdentifier:(NSString *)identifier
|
|
1221
1235
|
atIndex:(NSInteger)index
|
|
1222
1236
|
heightBlock:(CGFloat (^)(void))heightBlock
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Created by Jovanni Lo (@lodev09)
|
|
3
|
+
// Copyright (c) 2024-present. All rights reserved.
|
|
4
|
+
//
|
|
5
|
+
// This source code is licensed under the MIT license found in the
|
|
6
|
+
// LICENSE file in the root directory of this source tree.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
10
|
+
|
|
11
|
+
#import <UIKit/UIKit.h>
|
|
12
|
+
|
|
13
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
14
|
+
|
|
15
|
+
@protocol TrueSheetOverlayContainerViewDelegate <NSObject>
|
|
16
|
+
- (void)overlayContainerViewDidLayout:(CGSize)size;
|
|
17
|
+
@end
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Window-level view hosting an overlay's children.
|
|
21
|
+
* Touches that miss every child fall through to the views beneath.
|
|
22
|
+
*/
|
|
23
|
+
@interface TrueSheetOverlayContainerView : UIView
|
|
24
|
+
|
|
25
|
+
@property (nonatomic, weak, nullable) id<TrueSheetOverlayContainerViewDelegate> delegate;
|
|
26
|
+
|
|
27
|
+
@end
|
|
28
|
+
|
|
29
|
+
NS_ASSUME_NONNULL_END
|
|
30
|
+
|
|
31
|
+
#endif
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Created by Jovanni Lo (@lodev09)
|
|
3
|
+
// Copyright (c) 2024-present. All rights reserved.
|
|
4
|
+
//
|
|
5
|
+
// This source code is licensed under the MIT license found in the
|
|
6
|
+
// LICENSE file in the root directory of this source tree.
|
|
7
|
+
//
|
|
8
|
+
|
|
9
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
10
|
+
|
|
11
|
+
#import "TrueSheetOverlayContainerView.h"
|
|
12
|
+
|
|
13
|
+
@implementation TrueSheetOverlayContainerView
|
|
14
|
+
|
|
15
|
+
- (instancetype)initWithFrame:(CGRect)frame {
|
|
16
|
+
if (self = [super initWithFrame:frame]) {
|
|
17
|
+
self.backgroundColor = UIColor.clearColor;
|
|
18
|
+
self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
|
|
19
|
+
}
|
|
20
|
+
return self;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
- (nullable UIView *)hitTest:(CGPoint)point withEvent:(nullable UIEvent *)event {
|
|
24
|
+
UIView *hit = [super hitTest:point withEvent:event];
|
|
25
|
+
return hit == self ? nil : hit;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
- (void)layoutSubviews {
|
|
29
|
+
[super layoutSubviews];
|
|
30
|
+
[self.delegate overlayContainerViewDidLayout:self.bounds.size];
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
@end
|
|
34
|
+
|
|
35
|
+
#endif
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
#import <react/renderer/components/TrueSheetSpec/ComponentDescriptors.h>
|
|
21
21
|
#import <react/renderer/components/TrueSheetSpec/TrueSheetContentViewComponentDescriptor.h>
|
|
22
22
|
#import <react/renderer/components/TrueSheetSpec/TrueSheetFooterViewComponentDescriptor.h>
|
|
23
|
+
#import <react/renderer/components/TrueSheetSpec/TrueSheetOverlayViewComponentDescriptor.h>
|
|
23
24
|
#import <react/renderer/components/TrueSheetSpec/TrueSheetViewComponentDescriptor.h>
|
|
24
25
|
|
|
25
26
|
#import <TrueSheetSpec/TrueSheetSpec.h>
|
|
@@ -94,6 +95,17 @@ using namespace facebook::react;
|
|
|
94
95
|
|
|
95
96
|
@end
|
|
96
97
|
|
|
98
|
+
@interface TrueSheetOverlayView : RCTViewComponentView
|
|
99
|
+
@end
|
|
100
|
+
|
|
101
|
+
@implementation TrueSheetOverlayView
|
|
102
|
+
|
|
103
|
+
+ (ComponentDescriptorProvider)componentDescriptorProvider {
|
|
104
|
+
return concreteComponentDescriptorProvider<TrueSheetOverlayViewComponentDescriptor>();
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@end
|
|
108
|
+
|
|
97
109
|
#pragma mark - Module
|
|
98
110
|
|
|
99
111
|
@interface TrueSheetModule : NSObject <RCTBridgeModule, NativeTrueSheetModuleSpec>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { StyleSheet } from 'react-native';
|
|
4
|
+
import TrueSheetOverlayViewNativeComponent from './fabric/TrueSheetOverlayViewNativeComponent';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Renders its children in a native layer above every presented sheet — for
|
|
8
|
+
* toasts, dialogs, and other content a sheet must not cover.
|
|
9
|
+
* Fills the window; touches that miss its children pass through to the views beneath.
|
|
10
|
+
*/
|
|
11
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
12
|
+
export const TrueSheetOverlay = ({
|
|
13
|
+
style,
|
|
14
|
+
...rest
|
|
15
|
+
}) => /*#__PURE__*/_jsx(TrueSheetOverlayViewNativeComponent, {
|
|
16
|
+
...rest,
|
|
17
|
+
style: [styles.overlay, style]
|
|
18
|
+
});
|
|
19
|
+
const styles = StyleSheet.create({
|
|
20
|
+
// Sized to the window from native — absolute so it takes no layout space.
|
|
21
|
+
// Children render in a native container, so the host itself must never
|
|
22
|
+
// catch touches (Android forces it visible on layout).
|
|
23
|
+
overlay: {
|
|
24
|
+
position: 'absolute',
|
|
25
|
+
top: 0,
|
|
26
|
+
left: 0,
|
|
27
|
+
pointerEvents: 'none'
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=TrueSheetOverlay.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","TrueSheetOverlayViewNativeComponent","jsx","_jsx","TrueSheetOverlay","style","rest","styles","overlay","create","position","top","left","pointerEvents"],"sourceRoot":"../../src","sources":["TrueSheetOverlay.tsx"],"mappings":";;AAAA,SAASA,UAAU,QAAwB,cAAc;AAEzD,OAAOC,mCAAmC,MAAM,8CAA8C;;AAE9F;AACA;AACA;AACA;AACA;AAJA,SAAAC,GAAA,IAAAC,IAAA;AAKA,OAAO,MAAMC,gBAAgB,GAAGA,CAAC;EAAEC,KAAK;EAAE,GAAGC;AAAgB,CAAC,kBAC5DH,IAAA,CAACF,mCAAmC;EAAA,GAAKK,IAAI;EAAED,KAAK,EAAE,CAACE,MAAM,CAACC,OAAO,EAAEH,KAAK;AAAE,CAAE,CACjF;AAED,MAAME,MAAM,GAAGP,UAAU,CAACS,MAAM,CAAC;EAC/B;EACA;EACA;EACAD,OAAO,EAAE;IACPE,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,IAAI,EAAE,CAAC;IACPC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/// <reference lib="dom" />
|
|
4
|
+
import { useLayoutEffect, useState } from 'react';
|
|
5
|
+
import { createPortal } from 'react-dom';
|
|
6
|
+
import { StyleSheet, View } from 'react-native';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Renders its children in a layer above every presented sheet — for
|
|
10
|
+
* toasts, dialogs, and other content a sheet must not cover.
|
|
11
|
+
* Fills the window; touches that miss its children pass through to the views beneath.
|
|
12
|
+
*/
|
|
13
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
+
export const TrueSheetOverlay = ({
|
|
15
|
+
style,
|
|
16
|
+
...rest
|
|
17
|
+
}) => {
|
|
18
|
+
// Portal target appended to the body so it stacks above the sheets' portal
|
|
19
|
+
const [container] = useState(() => typeof document !== 'undefined' ? document.createElement('div') : null);
|
|
20
|
+
useLayoutEffect(() => {
|
|
21
|
+
if (!container) return;
|
|
22
|
+
container.style.cssText = 'position:fixed;inset:0;pointer-events:none';
|
|
23
|
+
document.body.appendChild(container);
|
|
24
|
+
return () => {
|
|
25
|
+
container.remove();
|
|
26
|
+
};
|
|
27
|
+
}, [container]);
|
|
28
|
+
if (!container) return null;
|
|
29
|
+
return /*#__PURE__*/createPortal(/*#__PURE__*/_jsx(View, {
|
|
30
|
+
pointerEvents: "box-none",
|
|
31
|
+
...rest,
|
|
32
|
+
style: [StyleSheet.absoluteFill, style]
|
|
33
|
+
}), container);
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=TrueSheetOverlay.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useLayoutEffect","useState","createPortal","StyleSheet","View","jsx","_jsx","TrueSheetOverlay","style","rest","container","document","createElement","cssText","body","appendChild","remove","pointerEvents","absoluteFill"],"sourceRoot":"../../src","sources":["TrueSheetOverlay.web.tsx"],"mappings":";;AAAA;AACA,SAASA,eAAe,EAAEC,QAAQ,QAAQ,OAAO;AACjD,SAASC,YAAY,QAAQ,WAAW;AACxC,SAASC,UAAU,EAAEC,IAAI,QAAwB,cAAc;;AAE/D;AACA;AACA;AACA;AACA;AAJA,SAAAC,GAAA,IAAAC,IAAA;AAKA,OAAO,MAAMC,gBAAgB,GAAGA,CAAC;EAAEC,KAAK;EAAE,GAAGC;AAAgB,CAAC,KAAK;EACjE;EACA,MAAM,CAACC,SAAS,CAAC,GAAGT,QAAQ,CAAC,MAC3B,OAAOU,QAAQ,KAAK,WAAW,GAAGA,QAAQ,CAACC,aAAa,CAAC,KAAK,CAAC,GAAG,IACpE,CAAC;EAEDZ,eAAe,CAAC,MAAM;IACpB,IAAI,CAACU,SAAS,EAAE;IAEhBA,SAAS,CAACF,KAAK,CAACK,OAAO,GAAG,4CAA4C;IACtEF,QAAQ,CAACG,IAAI,CAACC,WAAW,CAACL,SAAS,CAAC;IACpC,OAAO,MAAM;MACXA,SAAS,CAACM,MAAM,CAAC,CAAC;IACpB,CAAC;EACH,CAAC,EAAE,CAACN,SAAS,CAAC,CAAC;EAEf,IAAI,CAACA,SAAS,EAAE,OAAO,IAAI;EAE3B,oBAAOR,YAAY,cACjBI,IAAA,CAACF,IAAI;IAACa,aAAa,EAAC,UAAU;IAAA,GAAKR,IAAI;IAAED,KAAK,EAAE,CAACL,UAAU,CAACe,YAAY,EAAEV,KAAK;EAAE,CAAE,CAAC,EACpFE,SACF,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ViewProps } from 'react-native';
|
|
2
|
+
import { codegenNativeComponent } from 'react-native';
|
|
3
|
+
|
|
4
|
+
export interface NativeProps extends ViewProps {
|
|
5
|
+
// No props needed - sized to the window from native
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
// interfaceOnly: shadow node/state/descriptor are custom (common/cpp) so the
|
|
9
|
+
// overlay is sized to the window
|
|
10
|
+
export default codegenNativeComponent<NativeProps>('TrueSheetOverlayView', {
|
|
11
|
+
interfaceOnly: true,
|
|
12
|
+
});
|
package/lib/module/index.js
CHANGED
|
@@ -3,5 +3,6 @@
|
|
|
3
3
|
export * from './TrueSheet';
|
|
4
4
|
export * from "./TrueSheet.types.js";
|
|
5
5
|
export { TrueSheetPeek } from './TrueSheetPeek';
|
|
6
|
+
export { TrueSheetOverlay } from './TrueSheetOverlay';
|
|
6
7
|
export { TrueSheetProvider, useTrueSheet } from './TrueSheetProvider';
|
|
7
8
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TrueSheetPeek","TrueSheetProvider","useTrueSheet"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,aAAa;AAC3B,cAAc,sBAAmB;AACjC,SAASA,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,iBAAiB,EAAEC,YAAY,QAAQ,qBAAqB","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["TrueSheetPeek","TrueSheetOverlay","TrueSheetProvider","useTrueSheet"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,cAAc,aAAa;AAC3B,cAAc,sBAAmB;AACjC,SAASA,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,gBAAgB,QAAQ,oBAAoB;AACrD,SAASC,iBAAiB,EAAEC,YAAY,QAAQ,qBAAqB","ignoreList":[]}
|
|
@@ -68,6 +68,16 @@ export function TrueSheetPeek({
|
|
|
68
68
|
return /*#__PURE__*/React.createElement(View, rest, children);
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Mock TrueSheetOverlay component for testing.
|
|
73
|
+
*/
|
|
74
|
+
export function TrueSheetOverlay({
|
|
75
|
+
children,
|
|
76
|
+
...rest
|
|
77
|
+
}) {
|
|
78
|
+
return /*#__PURE__*/React.createElement(View, rest, children);
|
|
79
|
+
}
|
|
80
|
+
|
|
71
81
|
/**
|
|
72
82
|
* Mock TrueSheetProvider for testing.
|
|
73
83
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","createElement","isValidElement","View","TrueSheet","Component","instances","dismiss","jest","fn","_name","_animated","Promise","resolve","dismissStack","present","_index","resize","dismissAll","componentDidMount","name","props","componentWillUnmount","renderHeader","header","renderFooter","footer","render","children","style","TrueSheetPeek","rest","TrueSheetProvider","useTrueSheet"],"sourceRoot":"../../../src","sources":["mocks/index.ts"],"mappings":"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
|
|
1
|
+
{"version":3,"names":["React","createElement","isValidElement","View","TrueSheet","Component","instances","dismiss","jest","fn","_name","_animated","Promise","resolve","dismissStack","present","_index","resize","dismissAll","componentDidMount","name","props","componentWillUnmount","renderHeader","header","renderFooter","footer","render","children","style","TrueSheetPeek","rest","TrueSheetOverlay","TrueSheetProvider","useTrueSheet"],"sourceRoot":"../../../src","sources":["mocks/index.ts"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAEC,cAAc,QAAwB,OAAO;AAC5E,SAASC,IAAI,QAAwB,cAAc;AAQnD;AACA;AACA;AACA;AACA,OAAO,MAAMC,SAAS,SAASJ,KAAK,CAACK,SAAS,CAAiC;EAC7E,OAAOC,SAAS,GAA8B,CAAC,CAAC;EAEhD,OAAOC,OAAO,GAAGC,IAAI,CAACC,EAAE,CAAC,CAACC,KAAa,EAAEC,SAAmB,KAAKC,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC;EACnF,OAAOC,YAAY,GAAGN,IAAI,CAACC,EAAE,CAAC,CAACC,KAAa,EAAEC,SAAmB,KAAKC,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC;EACxF,OAAOE,OAAO,GAAGP,IAAI,CAACC,EAAE,CAAC,CAACC,KAAa,EAAEM,MAAe,EAAEL,SAAmB,KAC3EC,OAAO,CAACC,OAAO,CAAC,CAClB,CAAC;EACD,OAAOI,MAAM,GAAGT,IAAI,CAACC,EAAE,CAAC,CAACC,KAAa,EAAEM,MAAc,KAAKJ,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC;EAC7E,OAAOK,UAAU,GAAGV,IAAI,CAACC,EAAE,CAAEE,SAAmB,IAAKC,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC;EAEvEN,OAAO,GAAGC,IAAI,CAACC,EAAE,CAAEE,SAAmB,IAAKC,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC;EAC7DC,YAAY,GAAGN,IAAI,CAACC,EAAE,CAAEE,SAAmB,IAAKC,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC;EAClEE,OAAO,GAAGP,IAAI,CAACC,EAAE,CAAC,CAACO,MAAe,EAAEL,SAAmB,KAAKC,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC;EAC9EI,MAAM,GAAGT,IAAI,CAACC,EAAE,CAAEO,MAAc,IAAKJ,OAAO,CAACC,OAAO,CAAC,CAAC,CAAC;EAEvDM,iBAAiBA,CAAA,EAAG;IAClB,MAAM;MAAEC;IAAK,CAAC,GAAG,IAAI,CAACC,KAAK;IAC3B,IAAID,IAAI,EAAE;MACRhB,SAAS,CAACE,SAAS,CAACc,IAAI,CAAC,GAAG,IAAI;IAClC;EACF;EAEAE,oBAAoBA,CAAA,EAAG;IACrB,MAAM;MAAEF;IAAK,CAAC,GAAG,IAAI,CAACC,KAAK;IAC3B,IAAID,IAAI,EAAE;MACR,OAAOhB,SAAS,CAACE,SAAS,CAACc,IAAI,CAAC;IAClC;EACF;EAEQG,YAAYA,CAAA,EAAc;IAChC,MAAM;MAAEC;IAAO,CAAC,GAAG,IAAI,CAACH,KAAK;IAC7B,IAAI,CAACG,MAAM,EAAE,OAAO,IAAI;IACxB,OAAO,aAAAtB,cAAc,CAACsB,MAAM,CAAC,GAAGA,MAAM,gBAAGvB,aAAa,CAACuB,MAAM,CAAC;EAChE;EAEQC,YAAYA,CAAA,EAAc;IAChC,MAAM;MAAEC;IAAO,CAAC,GAAG,IAAI,CAACL,KAAK;IAC7B,IAAI,CAACK,MAAM,EAAE,OAAO,IAAI;IACxB,OAAO,aAAAxB,cAAc,CAACwB,MAAM,CAAC,GAAGA,MAAM,gBAAGzB,aAAa,CAACyB,MAAM,CAAC;EAChE;EAEAC,MAAMA,CAAA,EAAG;IACP,MAAM;MAAEC,QAAQ;MAAEC;IAAM,CAAC,GAAG,IAAI,CAACR,KAAK;IACtC,oBAAOrB,KAAK,CAACC,aAAa,CAACE,IAAI,EAAE;MAAE0B;IAAM,CAAC,EAAE,IAAI,CAACN,YAAY,CAAC,CAAC,EAAEK,QAAQ,EAAE,IAAI,CAACH,YAAY,CAAC,CAAC,CAAC;EACjG;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAASK,aAAaA,CAAC;EAAEF,QAAQ;EAAE,GAAGG;AAAgB,CAAC,EAAE;EAC9D,oBAAO/B,KAAK,CAACC,aAAa,CAACE,IAAI,EAAE4B,IAAI,EAAEH,QAAQ,CAAC;AAClD;;AAEA;AACA;AACA;AACA,OAAO,SAASI,gBAAgBA,CAAC;EAAEJ,QAAQ;EAAE,GAAGG;AAAgB,CAAC,EAAE;EACjE,oBAAO/B,KAAK,CAACC,aAAa,CAACE,IAAI,EAAE4B,IAAI,EAAEH,QAAQ,CAAC;AAClD;;AAEA;AACA;AACA;AACA,OAAO,SAASK,iBAAiBA,CAAC;EAAEL;AAAwC,CAAC,EAAE;EAC7E,OAAOA,QAAQ;AACjB;;AAEA;AACA;AACA;AACA,OAAO,SAASM,YAAYA,CAAA,EAA2B;EACrD,OAAO;IACLnB,OAAO,EAAEX,SAAS,CAACW,OAAO;IAC1BR,OAAO,EAAEH,SAAS,CAACG,OAAO;IAC1BO,YAAY,EAAEV,SAAS,CAACU,YAAY;IACpCG,MAAM,EAAEb,SAAS,CAACa,MAAM;IACxBC,UAAU,EAAEd,SAAS,CAACc;EACxB,CAAC;AACH;AAEA,cAAc,uBAAoB","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TrueSheetActions","useTrueSheetNavigation","useTrueSheetNavigationMock","Sheet","Object","assign","jest","fn","children","Screen","Protected"],"sourceRoot":"../../../src","sources":["mocks/navigationExpoRouter.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["TrueSheetActions","useTrueSheetNavigation","useTrueSheetNavigationMock","Sheet","Object","assign","jest","fn","children","Screen","Protected"],"sourceRoot":"../../../src","sources":["mocks/navigationExpoRouter.ts"],"mappings":";;AAEA,SACEA,gBAAgB,EAChBC,sBAAsB,IAAIC,0BAA0B,QAC/C,iBAAc;;AAErB;AACA;AACA;AACA;AACA,OAAO,MAAMC,KAAK,GAAGC,MAAM,CAACC,MAAM,CAChCC,IAAI,CAACC,EAAE,CAAC,CAAC;EAAEC;AAAwC,CAAC,KAAKA,QAAQ,CAAC,EAClE;EACEC,MAAM,EAAEH,IAAI,CAACC,EAAE,CAAC,MAAM,IAAI,CAAC;EAC3BG,SAAS,EAAEJ,IAAI,CAACC,EAAE,CAAC,MAAM,IAAI;AAC/B,CACF,CAAC;;AAED;AACA;AACA;AACA,OAAO,MAAMN,sBAAsB,GAAGK,IAAI,CAACC,EAAE,CAG3C,MACEL,0BAA0B,CAAC,CAC/B,CAAC;AAED,SAASF,gBAAgB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../src","sources":["navigation/base-types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -1,15 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import { TrueSheetActions } from "./actions.js";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* The base `StackRouter` factory to wrap, typed generically over the state and
|
|
7
|
-
* action types the wrapper threads through — `StackRouter` is structural and
|
|
8
|
-
* never touches the sheet-specific fields.
|
|
9
|
-
* Injected by each entry point so the shared router never imports
|
|
10
|
-
* `@react-navigation/*` at runtime (Expo Router apps don't install it).
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
4
|
const uid = () => Math.random().toString(36).slice(2, 10);
|
|
14
5
|
const ensureBaseRoute = (state, baseRouteName, routeParamList) => {
|
|
15
6
|
if (!baseRouteName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["TrueSheetActions","uid","Math","random","toString","slice","ensureBaseRoute","state","baseRouteName","routeParamList","hasBaseRoute","routes","some","r","name","baseRoute","key","params","index","length","createTrueSheetRouter","stackRouter","routerOptions","baseRouter","type","getInitialState","options","initialRouteName","routeNames","stateWithBaseRoute","stale","getStateForAction","action","routeIndex","target","source","findIndex","map","route","i","resizeIndex","resizeKey","pop","count","payload","maxPopCount","actualCount","min","targetIndex","closingIndex","closing","popCount","targetName","routeKey","filter","_","getRehydratedState","partialState","routeGetIdList","actionCreators"],"sourceRoot":"../../../src","sources":["navigation/createTrueSheetRouter.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["TrueSheetActions","uid","Math","random","toString","slice","ensureBaseRoute","state","baseRouteName","routeParamList","hasBaseRoute","routes","some","r","name","baseRoute","key","params","index","length","createTrueSheetRouter","stackRouter","routerOptions","baseRouter","type","getInitialState","options","initialRouteName","routeNames","stateWithBaseRoute","stale","getStateForAction","action","routeIndex","target","source","findIndex","map","route","i","resizeIndex","resizeKey","pop","count","payload","maxPopCount","actualCount","min","targetIndex","closingIndex","closing","popCount","targetName","routeKey","filter","_","getRehydratedState","partialState","routeGetIdList","actionCreators"],"sourceRoot":"../../../src","sources":["navigation/createTrueSheetRouter.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["navigation/expo-router/base-types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -3,9 +3,11 @@
|
|
|
3
3
|
import { StackRouter, unstable_integrateWithRouter, useNavigation } from 'expo-router';
|
|
4
4
|
import { createTrueSheetRouter } from "../createTrueSheetRouter.js";
|
|
5
5
|
import { trueSheetNavigator } from "../navigator.js";
|
|
6
|
-
|
|
7
|
-
//
|
|
8
|
-
|
|
6
|
+
// expo-router's vendored StackRouter is structurally identical to @react-navigation's.
|
|
7
|
+
// Pinned to this entry's own router types: `createTrueSheetRouter` is shared and typed
|
|
8
|
+
// against React Navigation, which resolves to `any` in apps that only install expo-router.
|
|
9
|
+
const sheetRouter = createTrueSheetRouter(StackRouter);
|
|
10
|
+
const SheetNavigator = unstable_integrateWithRouter(trueSheetNavigator, sheetRouter, {
|
|
9
11
|
createProps: ({
|
|
10
12
|
state,
|
|
11
13
|
dispatch
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StackRouter","unstable_integrateWithRouter","useNavigation","createTrueSheetRouter","trueSheetNavigator","SheetNavigator","createProps","state","dispatch","routes","Sheet","useTrueSheetNavigation","TrueSheetActions"],"sourceRoot":"../../../../src","sources":["navigation/expo-router/index.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["StackRouter","unstable_integrateWithRouter","useNavigation","createTrueSheetRouter","trueSheetNavigator","sheetRouter","SheetNavigator","createProps","state","dispatch","routes","Sheet","useTrueSheetNavigation","TrueSheetActions"],"sourceRoot":"../../../../src","sources":["navigation/expo-router/index.ts"],"mappings":";;AAAA,SAASA,WAAW,EAAEC,4BAA4B,EAAEC,aAAa,QAAQ,aAAa;AAEtF,SAASC,qBAAqB,QAAQ,6BAA0B;AAChE,SAASC,kBAAkB,QAAQ,iBAAc;AAcjD;AACA;AACA;AACA,MAAMC,WAAmC,GAAGF,qBAAqB,CAC/DH,WACF,CAAC;AAED,MAAMM,cAAc,GAAGL,4BAA4B,CAMjDG,kBAAkB,EAAEC,WAAW,EAAE;EACjCE,WAAW,EAAEA,CAAC;IAAEC,KAAK;IAAEC;EAAS,CAAC,MAAM;IACrCC,MAAM,EAAEF,KAAK,CAACE,MAAM;IACpBD;EACF,CAAC;AACH,CAAC,CAAC;;AAEF;AACA;AACA;AACA;;AAQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAME,KAAK,GAAGL,cAGpB;;AAED;AACA;AACA;AACA;AACA,OAAO,MAAMM,sBAAsB,GAAGA,CAAA,KAEHV,aAAa,CAA6B,CAAC;AAE9E,SAASW,gBAAgB,QAAkC,eAAY","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../../../src","sources":["navigation/expo-router/types.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["createStandardNavigationFactories","StackRouter","createTrueSheetRouter","trueSheetNavigator","createNavigator","createScreen","state","navigation","routes","dispatch","createTrueSheetNavigator","createTrueSheetScreen","TrueSheetActions","useTrueSheetNavigation"],"sourceRoot":"../../../src","sources":["navigation/index.ts"],"mappings":";;AAAA,SACEA,iCAAiC,EACjCC,WAAW,QAEN,0BAA0B;AAEjC,SAASC,qBAAqB,
|
|
1
|
+
{"version":3,"names":["createStandardNavigationFactories","StackRouter","createTrueSheetRouter","trueSheetNavigator","createNavigator","createScreen","state","navigation","routes","dispatch","createTrueSheetNavigator","createTrueSheetScreen","TrueSheetActions","useTrueSheetNavigation"],"sourceRoot":"../../../src","sources":["navigation/index.ts"],"mappings":";;AAAA,SACEA,iCAAiC,EACjCC,WAAW,QAEN,0BAA0B;AAEjC,SAASC,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASC,kBAAkB,QAAQ,gBAAa;AAmBhD,MAAM;EAAEC,eAAe;EAAEC;AAAa,CAAC,GAAGL,iCAAiC,CAKzEG,kBAAkB,EAClBD,qBAAqB,CAACD,WAAiC,CAAC,EACxD,CAAC;EAAEK,KAAK;EAAEC;AAAW,CAAC,MAAM;EAAEC,MAAM,EAAEF,KAAK,CAACE,MAAM;EAAEC,QAAQ,EAAEF,UAAU,CAACE;AAAS,CAAC,CACrF,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,wBAAwB,GAAGN,eAAe;;AAEvD;AACA;AACA;AACA,OAAO,MAAMO,qBAAqB,GAAGN,YAAY;AAEjD,SAASO,gBAAgB,QAAkC,cAAW;AACtE,SAASV,qBAAqB,QAAQ,4BAAyB;AAC/D,SAASW,sBAAsB,QAAQ,6BAA0B","ignoreList":[]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ViewProps } from 'react-native';
|
|
2
|
+
/**
|
|
3
|
+
* Renders its children in a native layer above every presented sheet — for
|
|
4
|
+
* toasts, dialogs, and other content a sheet must not cover.
|
|
5
|
+
* Fills the window; touches that miss its children pass through to the views beneath.
|
|
6
|
+
*/
|
|
7
|
+
export declare const TrueSheetOverlay: ({ style, ...rest }: ViewProps) => import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=TrueSheetOverlay.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrueSheetOverlay.d.ts","sourceRoot":"","sources":["../../../src/TrueSheetOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI1D;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,oBAAoB,SAAS,4CAE7D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type ViewProps } from 'react-native';
|
|
2
|
+
/**
|
|
3
|
+
* Renders its children in a layer above every presented sheet — for
|
|
4
|
+
* toasts, dialogs, and other content a sheet must not cover.
|
|
5
|
+
* Fills the window; touches that miss its children pass through to the views beneath.
|
|
6
|
+
*/
|
|
7
|
+
export declare const TrueSheetOverlay: ({ style, ...rest }: ViewProps) => import("react").ReactPortal | null;
|
|
8
|
+
//# sourceMappingURL=TrueSheetOverlay.web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrueSheetOverlay.web.d.ts","sourceRoot":"","sources":["../../../src/TrueSheetOverlay.web.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,oBAAoB,SAAS,uCAsB7D,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ViewProps } from 'react-native';
|
|
2
|
+
export interface NativeProps extends ViewProps {
|
|
3
|
+
}
|
|
4
|
+
declare const _default: import("react-native").HostComponent<NativeProps>;
|
|
5
|
+
export default _default;
|
|
6
|
+
//# sourceMappingURL=TrueSheetOverlayViewNativeComponent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TrueSheetOverlayViewNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/fabric/TrueSheetOverlayViewNativeComponent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,WAAW,WAAY,SAAQ,SAAS;CAE7C;;AAID,wBAEG"}
|