// // Changeable.swift // VDS // // Created by Matt Bruce on 4/3/23. // import Foundation import UIKit import Combine public protocol Changeable: Handlerable where Self: UIControl { var onChangeSubscriber: AnyCancellable? { get set } } extension Changeable { public var onChange: ((Self) -> ())? { get { return nil } set { onChangeSubscriber?.cancel() if let newValue { onChangeSubscriber = publisher(for: .valueChanged) .sink { c in newValue(c) } } } } }