mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
Summary: ## Context In bridgeless mode, RCTRootView is actually an instance of RCTSurfaceHostingProxyRootView. A lot of code that uses RCTRootView uses its RCTEventDispatcher or RCTModuleRegistry properties. Both of properties reach into the bridge, which means these APIs only work in bridge mode. ## Changes - Give RCTSurfaceHostingProxyRootView access to the bridgeless RCTModuleRegistry, in bridgeless mode. ## Benefits - This makes the RCTEventDispatcher and RCTModuleRegistry properties of RCTSurfaceHostingProxyRootView work in bridgeless mode. This allows us to eliminate branching in native code that uses these properties. Diffs incoming. Changelog: [Internal] Reviewed By: sshic Differential Revision: D30753829 fbshipit-source-id: 0815f8ae5507686bd5aff20a3abc1843533bb132
65 lines
2.4 KiB
Objective-C
65 lines
2.4 KiB
Objective-C
/*
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
#import <UIKit/UIKit.h>
|
|
|
|
#import <React/RCTBridgeModule.h>
|
|
#import <React/RCTRootView.h>
|
|
|
|
#import "RCTSurfaceHostingView.h"
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
/**
|
|
* This is a RCTRootView-compatible implementation of RCTSurfaceHostingView.
|
|
* Use this class to replace all usages of RCTRootView in the app for easier migration
|
|
* to RCTSurfaceHostingView.
|
|
*
|
|
* WARNING: In the future, RCTRootView will be deprecated in favor of RCTSurfaceHostingView.
|
|
*/
|
|
@interface RCTSurfaceHostingProxyRootView : RCTSurfaceHostingView
|
|
|
|
#pragma mark RCTRootView compatibility - keep these sync'ed with RCTRootView.h
|
|
|
|
@property (nonatomic, copy, readonly) NSString *moduleName;
|
|
@property (nonatomic, strong, readonly) RCTBridge *bridge;
|
|
@property (nonatomic, readonly) BOOL hasBridge;
|
|
@property (nonatomic, strong, readonly) RCTModuleRegistry *moduleRegistry;
|
|
@property (nonatomic, strong, readonly) id<RCTEventDispatcherProtocol> eventDispatcher;
|
|
@property (nonatomic, copy, readwrite) NSDictionary *appProperties;
|
|
@property (nonatomic, assign) RCTRootViewSizeFlexibility sizeFlexibility;
|
|
@property (nonatomic, weak) id<RCTRootViewDelegate> delegate;
|
|
@property (nonatomic, weak) UIViewController *reactViewController;
|
|
@property (nonatomic, strong, readonly) UIView *contentView;
|
|
@property (nonatomic, strong) UIView *loadingView;
|
|
@property (nonatomic, assign) BOOL passThroughTouches;
|
|
@property (nonatomic, assign) NSTimeInterval loadingViewFadeDelay;
|
|
@property (nonatomic, assign) NSTimeInterval loadingViewFadeDuration;
|
|
@property (nonatomic, assign) CGSize minimumSize;
|
|
|
|
- (instancetype)initWithBridge:(RCTBridge *)bridge
|
|
moduleName:(NSString *)moduleName
|
|
initialProperties:(NSDictionary *)initialProperties NS_DESIGNATED_INITIALIZER;
|
|
|
|
- (instancetype)initWithBundleURL:(NSURL *)bundleURL
|
|
moduleName:(NSString *)moduleName
|
|
initialProperties:(NSDictionary *)initialProperties
|
|
launchOptions:(NSDictionary *)launchOptions;
|
|
|
|
/**
|
|
* Bridgeless mode initializer
|
|
*/
|
|
- (instancetype)initWithSurface:(id<RCTSurfaceProtocol>)surface
|
|
sizeMeasureMode:(RCTSurfaceSizeMeasureMode)sizeMeasureMode
|
|
moduleRegistry:(RCTModuleRegistry *)moduleRegistry;
|
|
|
|
- (void)cancelTouches;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|