 
 import UIKit
 
+/// The type of the block which contains user defined actions that will run during the height change.
+public typealias HeightChangeUserActionsBlockType = ((oldHeight: CGFloat, newHeight: CGFloat) -> Void)
+
 /// The `RSKGrowingTextViewDelegate` protocol extends the `UITextViewDelegate` protocol by providing a set of optional methods you can use to receive messages related to the change of the height of `RSKGrowingTextView` objects.
 @objc public protocol RSKGrowingTextViewDelegate: UITextViewDelegate {
     ///

    @IBInspectable public var heightChangeAnimationDuration: Double = 0.35
    
    /// The block which contains user defined actions that will run during the height change.
    public var heightChangeUserActionsBlock: ((growingTextViewHeightBegin: CGFloat, growingTextViewHeightEnd: CGFloat) -> Void)?
    
    /// The maximum number of lines before enabling scrolling. The default value is `5`.
    @IBInspectable public var maximumNumberOfLines: Int = 5 {


/// A light-weight UITextView subclass that automatically grows and shrinks based on the size of user input and can be constrained by maximum and minimum number of lines.
@IBDesignable public class RSKGrowingTextView: RSKPlaceholderTextView {
    
    // MARK: - Private Properties
    
    private var calculatedHeight: CGFloat {
