/** * Copyright (c) 2015-present, Facebook, Inc. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #import "RCTStyleAnimatedNode.h" #import "RCTAnimationUtils.h" #import "RCTValueAnimatedNode.h" #import "RCTTransformAnimatedNode.h" @implementation RCTStyleAnimatedNode { NSMutableDictionary *_propsDictionary; } - (instancetype)initWithTag:(NSNumber *)tag config:(NSDictionary *)config; { if ((self = [super initWithTag:tag config:config])) { _propsDictionary = [NSMutableDictionary new]; } return self; } - (NSDictionary *)propsDictionary { return _propsDictionary; } - (void)performUpdate { [super performUpdate]; NSDictionary *style = self.config[@"style"]; [style enumerateKeysAndObjectsUsingBlock:^(NSString *property, NSNumber *nodeTag, __unused BOOL *stop) { RCTAnimatedNode *node = [self.parentNodes objectForKey:nodeTag]; if (node) { if ([node isKindOfClass:[RCTValueAnimatedNode class]]) { RCTValueAnimatedNode *parentNode = (RCTValueAnimatedNode *)node; [self->_propsDictionary setObject:@(parentNode.value) forKey:property]; } else if ([node isKindOfClass:[RCTTransformAnimatedNode class]]) { RCTTransformAnimatedNode *parentNode = (RCTTransformAnimatedNode *)node; [self->_propsDictionary addEntriesFromDictionary:parentNode.propsDictionary]; } } }]; } @end