//
//  Copyright (c) 2018 Open Whisper Systems. All rights reserved.
//

import Foundation

@objc
class OWSLayerView: UIView {
    let layoutCallback: ((UIView) -> Void)

    @objc
    public required init(frame: CGRect, layoutCallback : @escaping (UIView) -> Void) {
        self.layoutCallback = layoutCallback
        super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
        self.layoutCallback = { _ in
        }
        super.init(coder: aDecoder)
    }

    override var bounds: CGRect {
        didSet {
            updateLayer()
        }
    }

    override var frame: CGRect {
        didSet {
            updateLayer()
        }
    }

    override var center: CGPoint {
        didSet {
            updateLayer()
        }
    }

    private func updateLayer() {
        // Prevent the shape layer from animating changes.
        CATransaction.begin()
        CATransaction.setDisableActions(true)

        layoutCallback(self)

        CATransaction.commit()
    }
}
