     case expanded
 }
 
-fileprivate let topMargin: CGFloat = 64.0
-fileprivate let cornerRadius: CGFloat = 12.0
 fileprivate let velocityThreshold: CGFloat = 200.0
 
 public protocol SlidingContainerPresentable: class {

    
    public var blurEffectView: UIVisualEffectView? { return nil }
    public var blurEffect: UIBlurEffect? { return nil }
    
    public func animateTransitionIfNeeded(state: SlidingContainerPresentedState, duration: TimeInterval) {
        guard runningAnimators.isEmpty else { return }
        let frameAnimator = UIViewPropertyAnimator(duration: duration, dampingRatio: 1) {
            let viewFrame = self.view.frame
            switch state {
            case .expanded:
                self.modalContainer.frame = CGRect(x: 0, y: topMargin, width: viewFrame.width, height: viewFrame.height - topMargin)
            case .collapsed:
                self.modalContainer.frame = CGRect(x: 0, y: viewFrame.height, width: viewFrame.width, height: 0)
            } }
        frameAnimator.addCompletion { [weak self] _ in
            guard let `self` = self, let index = self.runningAnimators.index(of: frameAnimator) else { return }

        }
    }
    
    func percent(for recognizer: UIPanGestureRecognizer) -> CGFloat {
        let locationInSourceView = recognizer.location(in: view)
        let delta = recognizer.translation(in: view)
        let originalLocation = CGPoint(x: locationInSourceView.x - delta.x, y: locationInSourceView.y - delta.y)
        let width = view.bounds.width
        let height = view.bounds.height
        
        if anchorEdge == .top {
            let possibleHeight = originalLocation.y
            return abs(delta.y) / possibleHeight
        } else if anchorEdge == .bottom {
            let possibleHeight = height - originalLocation.y
            return delta.y / possibleHeight
        } else if anchorEdge == .left {
            let possibleWidth = originalLocation.x
            return abs(delta.x) / possibleWidth
        } else if anchorEdge == .right {
            let possibleWidth = width - originalLocation.x
            return delta.x / possibleWidth
        } else {
            fatalError("edge must be .top, .bottom, .left, or .right. actual=\(anchorEdge)")
        }
    }
    
    public func handlePan(with recognizer: UIPanGestureRecognizer) {
