mirror of
https://github.com/status-im/react-native.git
synced 2025-02-23 06:38:13 +00:00
Summary: The whole mounting iOS infra now uses `ComponentHandle` instead of `std::string` as a reference to particular `ComponentView` implementation. All changes are pretty straightforward, we use a different thing/type to refer to the particular class; no changes in the logic besides a new `RCTComponentViewFactory` that serves the same role of classes registry as Objective-C runtime served previously. That has several benefits: * It should be slightly faster, mostly because we don't need to convert `char *` strings to `std::string` and then to `NSString *`. * We don't need string-based component-name maps anymore (at least on this layer). We can call classes as we want and it will work because of classes are now explicit about which ShadowNodes they are compatible with. * Most importantly, it's explicit now! That means that no runtime magic is involved anymore and we can rely on static linting tool now and not be afraid of improper code stripping/overoptimization. Reviewed By: mdvacca Differential Revision: D13130760 fbshipit-source-id: aadf70525a1335b96992443abae4da359efdc829
79 lines
1.9 KiB
Objective-C
79 lines
1.9 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 <memory>
|
|
|
|
#import <React/RCTBridge.h>
|
|
#import <React/RCTComponentViewFactory.h>
|
|
#import <React/RCTPrimitives.h>
|
|
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
|
|
@class RCTFabricSurface;
|
|
@class RCTMountingManager;
|
|
|
|
/**
|
|
* Coordinates presenting of React Native Surfaces and represents application
|
|
* facing interface of running React Native core.
|
|
* SurfacePresenter incapsulates a bridge object inside and discourage direct
|
|
* access to it.
|
|
*/
|
|
@interface RCTSurfacePresenter : NSObject
|
|
|
|
- (instancetype)initWithBridge:(RCTBridge *)bridge;
|
|
|
|
@property (nonatomic, readonly) RCTComponentViewFactory *componentViewFactory;
|
|
|
|
@end
|
|
|
|
@interface RCTSurfacePresenter (Surface)
|
|
|
|
/**
|
|
* Surface uses those methods to register itself in the Presenter.
|
|
* Registering initiates running, rendering and mounting processes.
|
|
*/
|
|
- (void)registerSurface:(RCTFabricSurface *)surface;
|
|
- (void)unregisterSurface:(RCTFabricSurface *)surface;
|
|
- (void)setProps:(NSDictionary *)props
|
|
surface:(RCTFabricSurface *)surface;
|
|
|
|
- (nullable RCTFabricSurface *)surfaceForRootTag:(ReactTag)rootTag;
|
|
|
|
/**
|
|
* Measures the Surface with given constraints.
|
|
*/
|
|
- (CGSize)sizeThatFitsMinimumSize:(CGSize)minimumSize
|
|
maximumSize:(CGSize)maximumSize
|
|
surface:(RCTFabricSurface *)surface;
|
|
|
|
/**
|
|
* Sets `minimumSize` and `maximumSize` layout constraints for the Surface.
|
|
*/
|
|
- (void)setMinimumSize:(CGSize)minimumSize
|
|
maximumSize:(CGSize)maximumSize
|
|
surface:(RCTFabricSurface *)surface;
|
|
|
|
@end
|
|
|
|
@interface RCTSurfacePresenter (Deprecated)
|
|
|
|
/**
|
|
* Returns a underlying bridge.
|
|
*/
|
|
- (RCTBridge *)bridge_DO_NOT_USE;
|
|
|
|
@end
|
|
|
|
@interface RCTBridge (Deprecated)
|
|
|
|
@property (nonatomic) RCTSurfacePresenter *surfacePresenter;
|
|
|
|
@end
|
|
|
|
NS_ASSUME_NONNULL_END
|