         isHalfWayOpen ? showDrawerPlugin() : hideDrawerPlugin()
     }
 
-    private func canDrag(with newYCoordinate: CGFloat) -> Bool {
-        let canDragUp = newYCoordinate > minYToShow
-        let canDragDown = initialCenterY > newYCoordinate
+    private func canDrag(with newBottomDistance: CGFloat) -> Bool {
+        let canDragUp = abs(newBottomDistance) < maxHeight
+        let canDragDown = abs(newBottomDistance) >= placeholder
+
         return canDragUp && canDragDown
     }
 }

    private func handleGestureChange(with gesture: UIPanGestureRecognizer) {
        guard let view = gesture.view else { return }

        if canDrag(with: gesture.newYCoordinate) {
            let portionShown = initialCenterY - gesture.newYCoordinate
            let mediaControlAlpha = hiddenHeight / portionShown * 0.08

            view.center.y = gesture.newYCoordinate
            view.alpha = 1

            core?.trigger(InternalEvent.didDragDrawer.rawValue, userInfo: ["alpha": mediaControlAlpha])
        }
    }

    private var maxHeight: CGFloat {
        return overlayViewFrame.height/2
    }

    private var minHeightToShow: CGFloat {
        return overlayViewFrame.height * 0.25
    }

    open var height: CGFloat {
