123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- /*
- * 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 <React/RCTTransformAnimatedNode.h>
- #import <React/RCTValueAnimatedNode.h>
- @implementation RCTTransformAnimatedNode
- {
- NSMutableDictionary<NSString *, NSObject *> *_propsDictionary;
- }
- - (instancetype)initWithTag:(NSNumber *)tag
- config:(NSDictionary<NSString *, id> *)config
- {
- if ((self = [super initWithTag:tag config:config])) {
- _propsDictionary = [NSMutableDictionary new];
- }
- return self;
- }
- - (NSDictionary *)propsDictionary
- {
- return _propsDictionary;
- }
- - (void)performUpdate
- {
- [super performUpdate];
- NSArray<NSDictionary *> *transformConfigs = self.config[@"transforms"];
- NSMutableArray<NSDictionary *> *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
|