// // ModelColorHelper.swift // VDS // // Created by Matt Bruce on 8/4/22. // import Foundation import UIKit public protocol Colorable { associatedtype ModelType func getColor(_ viewModel: ModelType) -> UIColor } open class ModelSurfaceColorHelper: Colorable { public var lightColor: UIColor = .clear public var darkColor: UIColor = .clear public func getColor(_ viewModel: ModelType) -> UIColor { return viewModel.surface == .light ? lightColor : darkColor } } open class ModelSingleColorHelper: Colorable { public var disabled = ModelSurfaceColorHelper() public var enabled = ModelSurfaceColorHelper() public func getColor(_ viewModel: ModelType) -> UIColor { return viewModel.disabled ? disabled.getColor(viewModel) : enabled.getColor(viewModel) } } public protocol BinaryColorable{ var userTrueColor: Bool { get } } open class BinaryColorHelper { public var trueColor: UIColor = .clear public var falseColor: UIColor = .clear public func getColor(_ viewModel: ModelType) -> UIColor { return viewModel.userTrueColor ? trueColor : falseColor } } open class BinarySurfaceColorHelper: Colorable{ public var light = BinaryColorHelper() public var dark = BinaryColorHelper() public func getColor(_ viewModel: ModelType) -> UIColor { if viewModel.surface == .light { return light.getColor(viewModel) } else { return dark.getColor(viewModel) } } } open class BinaryModelColorHelper: Colorable { public var disabled = BinarySurfaceColorHelper() public var enabled = BinarySurfaceColorHelper() public func getColor(_ viewModel: ModelType) -> UIColor { return viewModel.disabled ? disabled.getColor(viewModel) : enabled.getColor(viewModel) } }