 import UIKit
 
 @objc public protocol TableViewDraggerDelegate: class {
+    /// If allow movement of cell, please return `true`. require a call to `moveRowAtIndexPath:toIndexPath:` of UITableView and rearranged of data.
     func dragger(dragger: TableViewDragger, moveDraggingAtIndexPath indexPath: NSIndexPath, newIndexPath: NSIndexPath) -> Bool
     
+    /// If allow dragging of cell, prease return `true`.
     optional func dragger(dragger: TableViewDragger, shouldDragAtIndexPath indexPath: NSIndexPath) -> Bool
     optional func dragger(dragger: TableViewDragger, willBeginDraggingAtIndexPath indexPath: NSIndexPath)
     optional func dragger(dragger: TableViewDragger, didBeginDraggingAtIndexPath indexPath: NSIndexPath)

    weak var targetTableView: UITableView?
    private var draggingVerticalMotion: UIScrollView.DragMotion?
    
    public var originCellHidden: Bool = true
    public var cellZoomScale: CGFloat = 1
    public var cellAlpha: CGFloat = 1
    public var cellShadowOpacity: Float = 0.4
    public var scrollVelocity: CGFloat = 1
    public weak var delegate: TableViewDraggerDelegate?
    public weak var dataSource: TableViewDraggerDataSource?

}

@objc public protocol TableViewDraggerDataSource: class {
    /// Return any cell if want to change the cell in drag.
    optional func dragger(dragger: TableViewDragger, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell?
    /// Return the indexPath if want to change the indexPath to start drag.
    optional func dragger(dragger: TableViewDragger, indexPathForDragAtIndexPath indexPath: NSIndexPath) -> NSIndexPath
}

