/** * 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 "RCTTransformAnimatedNode.h" #import "RCTValueAnimatedNode.h" @implementation RCTTransformAnimatedNode { 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]; NSArray *transformConfigs = self.config[@"transforms"]; NSMutableArray *transform = [NSMutableArray arrayWithCapacity:transformConfigs.count]; for (NSDictionary *transformConfig in transformConfigs) { NSString *type = transformConfig[@"type"]; NSString *property = transformConfig[@"property"]; NSNumber *value; if ([type isEqualToString: @"animated"]) { NSNumber *nodeTag = transformConfig[@"nodeTag"]; RCTAnimatedNode *node = [self.parentNodes objectForKey:nodeTag]; if (![node isKindOfClass:[RCTValueAnimatedNode class]]) { continue; } RCTValueAnimatedNode *parentNode = (RCTValueAnimatedNode *)node; value = @(parentNode.value); } else { value = transformConfig[@"value"]; } [transform addObject:@{property: value}]; } _propsDictionary[@"transform"] = transform; } @end