123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- /*
- * 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/RCTStyleAnimatedNode.h>
- #import <React/RCTAnimationUtils.h>
- #import <React/RCTValueAnimatedNode.h>
- #import <React/RCTTransformAnimatedNode.h>
- @implementation RCTStyleAnimatedNode
- {
- 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];
- NSDictionary<NSString *, NSNumber *> *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
|