// // CarouselScrollbarViewConttroller.swift // VDSSample // // Created by Kanamarlapudi, Vasavi on 15/03/24. // import Foundation import UIKit import VDS import Combine import VDSColorTokens class CarouselScrollbarViewConttroller: BaseViewController { lazy var layoutPickerSelectorView = { PickerSelectorView(title: "1UP", picker: self.picker, items: CarouselScrollbar.Layout.allCases) }() var slidesTextField = NumericField() var positionTextField = NumericField() override func viewDidLoad() { super.viewDidLoad() addContentTopView(view: component) setupPicker() setupModel() } override func setupForm() { super.setupForm() addFormRow(label: "Surface", view: surfacePickerSelectorView) addFormRow(label: "Layout", view: layoutPickerSelectorView) addFormRow(label: "Number Of Slides", view: slidesTextField) addFormRow(label: "Position", view: positionTextField) slidesTextField .numberPublisher .sink { [weak self] number in guard let number else { return } self?.component.numberOfSlides = number.intValue self?.component.position = Int(self?.positionTextField.text ?? "1") ?? 1 }.store(in: &subscribers) positionTextField .numberPublisher .sink { [weak self] number in guard let number else { return } self?.component.position = number.intValue }.store(in: &subscribers) } func setupModel() { //setup UI component.numberOfSlides = 8 surfacePickerSelectorView.text = component.surface.rawValue slidesTextField.text = String(component.numberOfSlides) positionTextField.text = String(component.position) //setup test page to show scrubber id was changed component.onScrubberDidChange = { [weak self] scrubberId in guard let self else { return } positionTextField.text = String(scrubberId) } } func setupPicker() { surfacePickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.surface = item self?.contentTopView.backgroundColor = item.color } layoutPickerSelectorView.onPickerDidSelect = { [weak self] item in self?.component.selectedLayout = item self?.component.position = Int(self?.positionTextField.text ?? "1") ?? 1 } } }