import Foundation import UIKit import AsyncDisplayKit import Display 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() -> (PeekControllerAccessoryNode & ASDisplayNode)? func isEqual(to: PeekControllerContent) -> Bool } public protocol PeekControllerContentNode { func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) -> CGSize } public protocol PeekControllerAccessoryNode { func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) }