         gesture.setTranslation(.zero, in: self)
       } else {
         guard gestureTranslation == 0 else { break }
-        if range > 100 || abs(velocity.y) > 200 {
+        if range > 100 || abs(velocity.y) > 300 && abs(velocity.x) < 300 {
           up ? self.expandPrevious() : self.expandNext()
           gesture.isEnabled = false
           gesture.isEnabled = true

    newRightSideLayer.position = CGPoint(x: bounds.width, y: cellFrame.minY)
    let newRightSideNewValue = AnimationValue.position(position)
    let newRightSideDelay = duration + newCellAnimationDelay
    animate(newRightSideLayer, newValue: newRightSideNewValue, item: .newRightSide, duration: config.animationDuration * 1.5, delay: newRightSideDelay, index: index)
    self.newRightSideLayer = newRightSideLayer
    
    animationInProcess = true

    layout.minimumLineSpacing = config.cardsSpacing
    layout.scrollDirection = .horizontal
    let insets = config.sideInsets
    let rightInset = UIScreen.main.bounds.width - config.cardsSize.width
    layout.sectionInset = UIEdgeInsets(top: 0, left: insets.left, bottom: 0, right: rightInset)
    
    collectionView = UICollectionView(frame: .zero, collectionViewLayout: layout)
