2017-07-03 23:13:34 +00:00
|
|
|
/**
|
|
|
|
* Copyright (c) 2015-present, Facebook, Inc.
|
|
|
|
*
|
2018-02-17 02:24:55 +00:00
|
|
|
* This source code is licensed under the MIT license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree.
|
2017-07-03 23:13:34 +00:00
|
|
|
*/
|
|
|
|
|
|
|
|
#import "RCTLayoutAnimationGroup.h"
|
|
|
|
|
|
|
|
#import "RCTLayoutAnimation.h"
|
|
|
|
#import "RCTConvert.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
|