// // EKAttributes.swift // SwiftEntryKit // // Created by Daniel Huri on 4/19/18. // Copyright (c) 2018 huri000@gmail.com. All rights reserved. // import Foundation import UIKit public struct EKAttributes { // MARK: Identification /** A settable **optional** name that matches the entry-attributes. - Nameless entries cannot be inquired using *SwiftEntryKit.isCurrentlyDisplaying(entryNamed: _) -> Bool* */ public var name: String? // MARK: Display Attributes /** Entry presentation window level */ public var windowLevel = WindowLevel.statusBar /** The position of the entry inside the screen */ public var position = Position.top /** The display manner of the entry. */ public var precedence = Precedence.override(priority: .normal, dropEnqueuedEntries: false) /** Describes how long the entry is displayed before it is dismissed */ public var displayDuration: DisplayDuration = 2 // Use .infinity for infinite duration /** The frame attributes of the entry */ public var positionConstraints = PositionConstraints() // MARK: User Interaction Attributes /** Describes what happens when the user interacts the screen, forwards the touch to the application window by default */ public var screenInteraction = UserInteraction.forward /** Describes what happens when the user interacts the entry, dismisses the content by default */ public var entryInteraction = UserInteraction.dismiss /** Describes the scrolling behaviour of the entry. The entry can be swiped out and in with an ability to spring back with a jolt */ public var scroll = Scroll.enabled(swipeable: true, pullbackAnimation: .jolt) /** Generate haptic feedback once the entry is displayed */ public var hapticFeedbackType = NotificationHapticFeedback.none /** Describes the actions that take place when the entry appears or is being dismissed */ public var lifecycleEvents = LifecycleEvents() // MARK: Theme & Style Attributes /** The display mode of the entry */ public var displayMode = DisplayMode.inferred /** Describes the entry's background appearance while it shows */ public var entryBackground = BackgroundStyle.clear /** Describes the background appearance while the entry shows */ public var screenBackground = BackgroundStyle.clear /** The shadow around the entry */ public var shadow = Shadow.none /** The corner attributes */ public var roundCorners = RoundCorners.none /** The border around the entry */ public var border = Border.none /** Preferred status bar style while the entry shows */ public var statusBar = StatusBar.inferred // MARK: Animation Attributes /** Describes how the entry animates in */ public var entranceAnimation = Animation.translation /** Describes how the entry animates out */ public var exitAnimation = Animation.translation /** Describes the previous entry behaviour when a new entry with higher display-priority shows */ public var popBehavior = PopBehavior.animated(animation: .translation) { didSet { popBehavior.validate() } } /** Init with default attributes */ public init() {} }