<commit_before>//
//  CRToast
//  CRNotificationDemo
//
//

#import <Foundation/Foundation.h>

typedef NS_OPTIONS(NSInteger, CRToastInteractionType) {
    CRToastInteractionTypeSwipeUp = 1 << 0,
    CRToastInteractionTypeSwipeLeft = 1 << 1,
    CRToastInteractionTypeSwipeDown = 1 << 2,
    CRToastInteractionTypeSwipeRight = 1 << 3,
    CRToastInteractionTypeTapOnce = 1 << 4,
    CRToastInteractionTypeTapTwice = 1 << 5,
    CRToastInteractionTypeTwoFingerTapOnce = 1 << 6,
    CRToastInteractionTypeTwoFingerTapTwice = 1 << 7,
    CRToastInteractionTypeSwipe = (CRToastInteractionTypeSwipeUp | CRToastInteractionTypeSwipeLeft | CRToastInteractionTypeSwipeDown | CRToastInteractionTypeSwipeRight),
    CRToastInteractionTypeTap = (CRToastInteractionTypeTapOnce | CRToastInteractionTypeTapTwice | CRToastInteractionTypeTwoFingerTapOnce | CRToastInteractionTypeTwoFingerTapTwice),
    CRToastInteractionTypeAll = (CRToastInteractionTypeSwipe, CRToastInteractionTypeTap)
};

@interface CRToastInteractionResponder : NSObject
+ (instancetype)interactionResponderWithInteractionType:(CRToastInteractionType)interactionType
                                   automaticallyDismiss:(BOOL)automaticallyDismiss
                                                  block:(void (^)(void))block;
@end

///--------------------
/// @name Notification Option Types
///--------------------

/**
 `CRToastType` defines the height of the notification. `CRToastTypeStatusBar` covers the status bar, `CRToastTypeNavigationBar` covers the status bar
 and navigation bar
 */

typedef NS_ENUM(NSInteger, CRToastType){
    CRToastTypeStatusBar,
    CRToastTypeNavigationBar
};

/**
 `CRToastPresentationType` defines whether a notification will cover the contents of the status/navigation bar or whether the content will be pushed
 out by the notification.
 */
<commit_msg>Documentation around CRToastInteractionResponder and CRToastInteractionType<commit_after>//
//  CRToast
//  CRNotificationDemo
//
//

#import <Foundation/Foundation.h>

/**
 CRToastInteractionType defines the types of interactions that can be injected into a CRToastIneractionResponder.
 */

typedef NS_OPTIONS(NSInteger, CRToastInteractionType) {
    CRToastInteractionTypeSwipeUp = 1 << 0,
    CRToastInteractionTypeSwipeLeft = 1 << 1,
    CRToastInteractionTypeSwipeDown = 1 << 2,
    CRToastInteractionTypeSwipeRight = 1 << 3,
    CRToastInteractionTypeTapOnce = 1 << 4,
    CRToastInteractionTypeTapTwice = 1 << 5,
    CRToastInteractionTypeTwoFingerTapOnce = 1 << 6,
    CRToastInteractionTypeTwoFingerTapTwice = 1 << 7,
    CRToastInteractionTypeSwipe = (CRToastInteractionTypeSwipeUp | CRToastInteractionTypeSwipeLeft | CRToastInteractionTypeSwipeDown | CRToastInteractionTypeSwipeRight),
    CRToastInteractionTypeTap = (CRToastInteractionTypeTapOnce | CRToastInteractionTypeTapTwice | CRToastInteractionTypeTwoFingerTapOnce | CRToastInteractionTypeTwoFingerTapTwice),
    CRToastInteractionTypeAll = (CRToastInteractionTypeSwipe, CRToastInteractionTypeTap)
};

/**
 CRToastInteractionResponder is a container object to configure responses to user interactions with a notification. A collection of interaction responders can be included in the 
 options for any given notification or in defaults.
 */

@interface CRToastInteractionResponder : NSObject

/**
 Creates an interaction responder for a given interaction type.
 @param interactionType The kind of interaction that will trigger the responder
 @param automaticallyDismiss A BOOL indiciating if the notification should automatically be dismissed on the interaction being observed. If YES the configured notification dismisall
 animation will begin immidiately upon encountering the interaction.
 @param block A block of code to be called immidiately upon the interaction being encountered.
 */

+ (instancetype)interactionResponderWithInteractionType:(CRToastInteractionType)interactionType
                                   automaticallyDismiss:(BOOL)automaticallyDismiss
                                                  block:(void (^)(void))block;
@end

///--------------------
/// @name Notification Option Types
///--------------------

/**
 `CRToastType` defines the height of the notification. `CRToastTypeStatusBar` covers the status bar, `CRToastTypeNavigationBar` covers the status bar
 and navigation bar
 */

typedef NS_ENUM(NSInteger, CRToastType){
    CRToastTypeStatusBar,
    CRToastTypeNavigationBar
};

/**
 `CRToastPresentationType` defines whether a notification will cover the contents of the status/navigation bar or whether the content will be pushed
 out by the notification.
 */

{'fraction_non_alphanumeric': 0.08075340982896731, 'fraction_numerical': 0.006927906473262611, 'mean_word_length': 4.220338983050848, 'pattern_counts': {'":': 0, '<': 37, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2436500', 'n_tokens_mistral': 1339, 'n_tokens_neox': 1274, 'n_words': 327}