import Foundation import UIKit import AsyncDisplayKit import Display import SwiftSignalKit public enum PeekControllerContentPresentation { case contained case freeform } public enum PeerControllerMenuActivation { case drag case press } public protocol PeekControllerContent { func presentation() -> PeekControllerContentPresentation func menuActivation() -> PeerControllerMenuActivation func menuItems() -> [ContextMenuItem] func node() -> PeekControllerContentNode & ASDisplayNode func topAccessoryNode() -> ASDisplayNode? func fullScreenAccessoryNode(blurView: UIVisualEffectView) -> (PeekControllerAccessoryNode & ASDisplayNode)? func isEqual(to: PeekControllerContent) -> Bool } public protocol PeekControllerContentNode { func ready() -> Signal func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) -> CGSize } public protocol PeekControllerAccessoryNode { var dismiss: () -> Void { get set } func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) }