ssap_app/node_modules/react-native-screens/ios/gamma/split-view/RNSSplitViewScreenShadowSta...

83 lines
3.0 KiB
Objective-C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#import <Foundation/Foundation.h>
#if defined(__cplusplus)
#import <react/renderer/core/State.h>
namespace react = facebook::react;
#endif // __cplusplus
NS_ASSUME_NONNULL_BEGIN
@class RNSSplitViewScreenComponentView;
/**
* @class RNSSplitViewScreenShadowStateProxy
* @brief Manages communication between native UIView layout and associated React Native ShadowNode state.
*
* This proxy enables RNSSplitViewScreenComponentView to propagate visual and layout-level state
* back to the Shadow Tree via RNSSplitViewScreenShadowNode.
*/
@interface RNSSplitViewScreenShadowStateProxy : NSObject
/**
* @brief Triggers a shadow state update for the given SplitViewScreen component.
*
* Internally uses the components frame in UIWindow coordinates to update the Shadow Tree state.
*
* @param screenComponentView An instance of RNSSplitViewScreenComponentView whose state should be updated.
*/
- (void)updateShadowStateOfComponent:(RNSSplitViewScreenComponentView *)screenComponentView;
/**
* @brief Triggers a shadow state update for the given SplitViewScreen component in the context of a given ancestor
* view.
*
* Converts the split view screen's local frame to coordinates of the specified ancestor view
* before applying the update to the Shadow Tree. If the ancestor haven't been defined frame is calculated relatively to
* the UIWindow.
*
* @param screenComponentView An instance of RNSSplitViewScreenComponentView whose state should be updated.
* @param ancestorView An optional UIView in whose coordinate space the frame should be computed.
*/
- (void)updateShadowStateOfComponent:(RNSSplitViewScreenComponentView *)screenComponentView
inContextOfAncestorView:(UIView *_Nullable)ancestorView;
/**
* @brief Send an update to ShadowNode state with given frame if needed.
*
* Converts the frame to coordinates of the specified ancestor view,
* before applying the update to the Shadow Tree.
*
* @param screenComponentView an instance of RNSSplitViewScreenComponentView whose state should be updated,
* @param frame frame to update the shadow state with; it must be in coordinate system of `screenComponentView`,
* @param ancestorView coordinate-system provider view, relative to which the frame should be converted before sending
* the update.
*/
- (void)updateShadowStateOfComponent:(RNSSplitViewScreenComponentView *)screenComponentView
withFrame:(CGRect)frame
inContextOfAncestorView:(nonnull UIView *)ancestorView;
/**
* @brief Send an update to ShadowNode state with given layout metrics.
*
* Updates size and origin in the ShadowNode state, if changed.
*
* @param frame A CGRect defining the component's layout metrics.
*/
- (void)updateShadowStateWithFrame:(CGRect)frame;
@end
#pragma mark - Hidden from Swift
#if defined(__cplusplus)
@interface RNSSplitViewScreenShadowStateProxy ()
- (void)updateState:(react::State::Shared const &)state oldState:(react::State::Shared const &)oldState;
@end
#endif // __cplusplus
NS_ASSUME_NONNULL_END