12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /*
- * 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 "RCTLayoutAnimationGroup.h"
- #import "RCTConvert.h"
- #import "RCTLayoutAnimation.h"
- @implementation RCTLayoutAnimationGroup
- - (instancetype)initWithCreatingLayoutAnimation:(RCTLayoutAnimation *)creatingLayoutAnimation
- updatingLayoutAnimation:(RCTLayoutAnimation *)updatingLayoutAnimation
- deletingLayoutAnimation:(RCTLayoutAnimation *)deletingLayoutAnimation
- callback:(RCTResponseSenderBlock)callback
- {
- if (self = [super init]) {
- _creatingLayoutAnimation = creatingLayoutAnimation;
- _updatingLayoutAnimation = updatingLayoutAnimation;
- _deletingLayoutAnimation = deletingLayoutAnimation;
- _callback = callback;
- }
- return self;
- }
- - (instancetype)initWithConfig:(NSDictionary *)config callback:(RCTResponseSenderBlock)callback
- {
- if (!config) {
- return nil;
- }
- if (self = [super init]) {
- NSTimeInterval duration = [RCTConvert NSTimeInterval:config[@"duration"]];
- if (duration > 0.0 && duration < 0.01) {
- RCTLogError(@"RCTLayoutAnimationGroup expects timings to be in ms, not seconds.");
- duration = duration * 1000.0;
- }
- _creatingLayoutAnimation = [[RCTLayoutAnimation alloc] initWithDuration:duration config:config[@"create"]];
- _updatingLayoutAnimation = [[RCTLayoutAnimation alloc] initWithDuration:duration config:config[@"update"]];
- _deletingLayoutAnimation = [[RCTLayoutAnimation alloc] initWithDuration:duration config:config[@"delete"]];
- _callback = callback;
- }
- return self;
- }
- - (BOOL)isEqual:(RCTLayoutAnimationGroup *)layoutAnimation
- {
- RCTLayoutAnimation *creatingLayoutAnimation = layoutAnimation.creatingLayoutAnimation;
- RCTLayoutAnimation *updatingLayoutAnimation = layoutAnimation.updatingLayoutAnimation;
- RCTLayoutAnimation *deletingLayoutAnimation = layoutAnimation.deletingLayoutAnimation;
- return (_creatingLayoutAnimation == creatingLayoutAnimation ||
- [_creatingLayoutAnimation isEqual:creatingLayoutAnimation]) &&
- (_updatingLayoutAnimation == updatingLayoutAnimation ||
- [_updatingLayoutAnimation isEqual:updatingLayoutAnimation]) &&
- (_deletingLayoutAnimation == deletingLayoutAnimation ||
- [_deletingLayoutAnimation isEqual:deletingLayoutAnimation]);
- }
- - (NSString *)description
- {
- return
- [NSString stringWithFormat:
- @"<%@: %p; creatingLayoutAnimation: %@; updatingLayoutAnimation: %@; deletingLayoutAnimation: %@>",
- NSStringFromClass([self class]),
- self,
- [_creatingLayoutAnimation description],
- [_updatingLayoutAnimation description],
- [_deletingLayoutAnimation description]];
- }
- @end
|