






#import "SexToast.h"
#import "UplinkDryManager.h"


static UIColor *chamberZeroCascadePhotosNiacinColor = nil;
static UIColor *expireArteryColor = nil;
static UIFont *fatalSafeBag = nil;
static CGFloat kitAskKinMagicRadius = 6.0;
static UIEdgeInsets slantSuitableLingerSheUploadEditorial = {10, 16, 10, 16};

@interface SexToast()
@property (nonatomic, strong) UILabel *viewHueLabel;
@property (nonatomic, strong) NSTimer *winLookTimer;
@property (nonatomic, assign) ElderBehaviorAllowableCapDevices position;
@end

@implementation SexToast


- (instancetype)initForkMessage:(NSString *)message {
    self = [super initWithFrame:CGRectZero];
    if (self) {
        self.userInteractionEnabled = NO;
        self.backgroundColor = UIColor.clearColor;
        
        
        UIView *container = [UIView new];
        container.backgroundColor = chamberZeroCascadePhotosNiacinColor ?:
            [[UIColor blackColor] colorWithAlphaComponent:0.85];
        container.layer.cornerRadius = kitAskKinMagicRadius;
        container.clipsToBounds = YES;
        container.translatesAutoresizingMaskIntoConstraints = NO;
        [self addSubview:container];
        
        
        _viewHueLabel = [UILabel new];
        _viewHueLabel.text = message;
        _viewHueLabel.textColor = expireArteryColor ?: UIColor.whiteColor;
        _viewHueLabel.font = fatalSafeBag ?: [UIFont systemFontOfSize:14];
        _viewHueLabel.textAlignment = NSTextAlignmentCenter;
        _viewHueLabel.numberOfLines = 0;
        _viewHueLabel.translatesAutoresizingMaskIntoConstraints = NO;
        [container addSubview:_viewHueLabel];
        
        
        [NSLayoutConstraint activateConstraints:@[
            
            [container.leadingAnchor constraintEqualToAnchor:_viewHueLabel.leadingAnchor
                                                   constant:-slantSuitableLingerSheUploadEditorial.left],
            [container.trailingAnchor constraintEqualToAnchor:_viewHueLabel.trailingAnchor
                                                    constant:slantSuitableLingerSheUploadEditorial.right],
            [container.topAnchor constraintEqualToAnchor:_viewHueLabel.topAnchor
                                              constant:-slantSuitableLingerSheUploadEditorial.top],
            [container.bottomAnchor constraintEqualToAnchor:_viewHueLabel.bottomAnchor
                                                 constant:slantSuitableLingerSheUploadEditorial.bottom],
            
            
            [container.widthAnchor constraintLessThanOrEqualToConstant:
                [UIScreen mainScreen].bounds.size.width - 40]
        ]];
    }
    return self;
}


+ (void)show:(NSString *)message
    duration:(NSTimeInterval)duration
    position:(ElderBehaviorAllowableCapDevices)position
{
    
    dispatch_async(dispatch_get_main_queue(), ^{
        SexToast *mouse = [[SexToast alloc] initForkMessage:message];
        mouse.position = position;
        [mouse protectedObserverAscendingPhysicalHundreds];
        [mouse toolDocumentThreePressesLow:duration];
    });
}

- (void)toolDocumentThreePressesLow:(NSTimeInterval)duration {
    UIWindow *window = [UplinkDryManager.shared libraryGivenWindow];
    [window addSubview:self];
    
    
    self.translatesAutoresizingMaskIntoConstraints = NO;
    [NSLayoutConstraint activateConstraints:@[
        [self.leadingAnchor constraintEqualToAnchor:window.leadingAnchor],
        [self.trailingAnchor constraintEqualToAnchor:window.trailingAnchor],
        [self.topAnchor constraintEqualToAnchor:window.topAnchor],
        [self.bottomAnchor constraintEqualToAnchor:window.bottomAnchor]
    ]];
    
    
    [self settlingNothingApplyingEscapesSmartAnimation];
    
    
    if (duration > 0) {
        __weak typeof(self) weakSelf = self;
        self.winLookTimer = [NSTimer scheduledTimerWithTimeInterval:duration repeats:YES block:^(NSTimer * _Nonnull found) {
            [weakSelf dismiss];
        }];
    }
}

- (void)dismiss {
    [self.winLookTimer invalidate];
    [self semaphoreDitherDecipherRadixHoverPingAnimator:^{
        [self removeFromSuperview];
    }];
}


- (void)settlingNothingApplyingEscapesSmartAnimation {
    CGAffineTransform transform;
    switch (self.position) {
        case MantissaFathomsAudiogramPasteStable:
            transform = CGAffineTransformMakeTranslation(0, -100);
            break;
        case RenewingStartedFractionsChromeFocalFeedback:
            transform = CGAffineTransformMakeTranslation(0, 100);
            break;
        default:
            transform = CGAffineTransformMakeScale(0.8, 0.8);
            break;
    }
    
    self.alpha = 0;
    self.viewHueLabel.superview.transform = transform;
    
    [UIView animateWithDuration:0.3
                          delay:0
         usingSpringWithDamping:0.7
          initialSpringVelocity:0.1
                        options:UIViewAnimationOptionCurveEaseOut
                     animations:^{
        self.alpha = 1;
        self.viewHueLabel.superview.transform = CGAffineTransformIdentity;
    } completion:nil];
}

- (void)semaphoreDitherDecipherRadixHoverPingAnimator:(void(^)(void))completion {
    CGAffineTransform transform;
    switch (self.position) {
        case MantissaFathomsAudiogramPasteStable:
            transform = CGAffineTransformMakeTranslation(0, -self.viewHueLabel.superview.frame.size.height - 50);
            break;
        case RenewingStartedFractionsChromeFocalFeedback:
            transform = CGAffineTransformMakeTranslation(0, self.viewHueLabel.superview.frame.size.height + 50);
            break;
        default:
            transform = CGAffineTransformMakeScale(0.8, 0.8);
            break;
    }
    
    [UIView animateWithDuration:0.25
                     animations:^{
        self.alpha = 0;
        self.viewHueLabel.superview.transform = transform;
    } completion:^(BOOL finished) {
        if (completion) completion();
    }];
}


- (void)protectedObserverAscendingPhysicalHundreds {
    UIView *container = self.viewHueLabel.superview;
    
    
    switch (self.position) {
        case MantissaFathomsAudiogramPasteStable: {
            [container.topAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.topAnchor
                                               constant:30].active = YES;
            break;
        }
        case ArtPhysicalDeriveBitCreamyCenter: {
            [container.centerYAnchor constraintEqualToAnchor:self.centerYAnchor].active = YES;
            break;
        }
        case RenewingStartedFractionsChromeFocalFeedback: {
            [container.bottomAnchor constraintEqualToAnchor:self.safeAreaLayoutGuide.bottomAnchor
                                                  constant:-30].active = YES;
            break;
        }
    }
    
    
    [container.centerXAnchor constraintEqualToAnchor:self.centerXAnchor].active = YES;
}


+ (void)disabledDigitTraitRawPolarAlignedColor:(UIColor *)color {
    chamberZeroCascadePhotosNiacinColor = color;
}

+ (void)mathWinTopWrapColor:(UIColor *)color {
    expireArteryColor = color;
}

+ (void)accessingOcean:(UIFont *)font {
    fatalSafeBag = font;
}

+ (void)leapUpdatingOrdinalsArtSequencerRadius:(CGFloat)radius {
    kitAskKinMagicRadius = radius;
}


+ (void)factAdd:(NSString *)message {
    [self show:message duration:2.0 position:MantissaFathomsAudiogramPasteStable];
}

+ (void)pingCenter:(NSString *)message {
    [self show:message duration:2.0 position:ArtPhysicalDeriveBitCreamyCenter];
}

+ (void)twoCapHall:(NSString *)message {
    [self show:message duration:2.0 position:RenewingStartedFractionsChromeFocalFeedback];
}

- (void)dealloc {
    
}

@end
