mirror of
https://github.com/facebook/react-native.git
synced 2025-11-01 09:14:26 +00:00
700960c9f1
Summary: `RCTPropsAnimatedNode` uses the bridge to access it's current surface presenter to perform animations. In bridgeless mode, the surface presenter is not owned by the bridge. Instead, pass the surface presenter through the ownership chain: `RCTNativeAnimated*Module` -> `RCTNativeAnimatedNodesManager` -> `RCTPropsAnimatedNode` `RCTSurfacePresenter` should not be strongly held by any of these animation internals. If it gets destroyed at a higher level, animations should not be completed. Changelog: [Internal] Differential Revision: D23272735 fbshipit-source-id: ce08ee3b59ac2ba70e31cebb7ba8e9f3a644c848
94 lines
3.0 KiB
Objective-C
94 lines
3.0 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 <Foundation/Foundation.h>
|
|
#import <React/RCTBridgeModule.h>
|
|
#import <React/RCTUIManager.h>
|
|
#import <React/RCTSurfacePresenterStub.h>
|
|
|
|
@protocol RCTValueAnimatedNodeObserver;
|
|
|
|
@interface RCTNativeAnimatedNodesManager : NSObject
|
|
|
|
- (nonnull instancetype)initWithBridge:(nonnull RCTBridge *)bridge
|
|
surfacePresenter:(id<RCTSurfacePresenterStub>)surfacePresenter;
|
|
|
|
- (void)updateAnimations;
|
|
|
|
- (void)stepAnimations:(nonnull CADisplayLink *)displaylink;
|
|
|
|
- (BOOL)isNodeManagedByFabric:(nonnull NSNumber *)tag;
|
|
|
|
- (void)getValue:(nonnull NSNumber *)nodeTag
|
|
saveCallback:(nullable RCTResponseSenderBlock)saveCallback;
|
|
|
|
// graph
|
|
|
|
- (void)createAnimatedNode:(nonnull NSNumber *)tag
|
|
config:(NSDictionary<NSString *, id> *__nonnull)config;
|
|
|
|
- (void)connectAnimatedNodes:(nonnull NSNumber *)parentTag
|
|
childTag:(nonnull NSNumber *)childTag;
|
|
|
|
- (void)disconnectAnimatedNodes:(nonnull NSNumber *)parentTag
|
|
childTag:(nonnull NSNumber *)childTag;
|
|
|
|
- (void)connectAnimatedNodeToView:(nonnull NSNumber *)nodeTag
|
|
viewTag:(nonnull NSNumber *)viewTag
|
|
viewName:(nonnull NSString *)viewName;
|
|
|
|
- (void)restoreDefaultValues:(nonnull NSNumber *)nodeTag;
|
|
|
|
- (void)disconnectAnimatedNodeFromView:(nonnull NSNumber *)nodeTag
|
|
viewTag:(nonnull NSNumber *)viewTag;
|
|
|
|
- (void)dropAnimatedNode:(nonnull NSNumber *)tag;
|
|
|
|
// mutations
|
|
|
|
- (void)setAnimatedNodeValue:(nonnull NSNumber *)nodeTag
|
|
value:(nonnull NSNumber *)value;
|
|
|
|
- (void)setAnimatedNodeOffset:(nonnull NSNumber *)nodeTag
|
|
offset:(nonnull NSNumber *)offset;
|
|
|
|
- (void)flattenAnimatedNodeOffset:(nonnull NSNumber *)nodeTag;
|
|
|
|
- (void)extractAnimatedNodeOffset:(nonnull NSNumber *)nodeTag;
|
|
|
|
// drivers
|
|
|
|
- (void)startAnimatingNode:(nonnull NSNumber *)animationId
|
|
nodeTag:(nonnull NSNumber *)nodeTag
|
|
config:(NSDictionary<NSString *, id> *__nonnull)config
|
|
endCallback:(nullable RCTResponseSenderBlock)callBack;
|
|
|
|
- (void)stopAnimation:(nonnull NSNumber *)animationId;
|
|
|
|
- (void)stopAnimationLoop;
|
|
|
|
// events
|
|
|
|
- (void)addAnimatedEventToView:(nonnull NSNumber *)viewTag
|
|
eventName:(nonnull NSString *)eventName
|
|
eventMapping:(NSDictionary<NSString *, id> *__nonnull)eventMapping;
|
|
|
|
- (void)removeAnimatedEventFromView:(nonnull NSNumber *)viewTag
|
|
eventName:(nonnull NSString *)eventName
|
|
animatedNodeTag:(nonnull NSNumber *)animatedNodeTag;
|
|
|
|
- (void)handleAnimatedEvent:(nonnull id<RCTEvent>)event;
|
|
|
|
// listeners
|
|
|
|
- (void)startListeningToAnimatedNodeValue:(nonnull NSNumber *)tag
|
|
valueObserver:(nonnull id<RCTValueAnimatedNodeObserver>)valueObserver;
|
|
|
|
- (void)stopListeningToAnimatedNodeValue:(nonnull NSNumber *)tag;
|
|
|
|
@end
|