// // 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 { if let newValue { onChangeSubscriber = publisher(for: .valueChanged) .sink { c in newValue(c) } } else { onChangeSubscriber?.cancel() onChangeSubscriber = nil } } } }