diff --git a/Modules/BusX/BusUI/src/BusUI.ManyTextField.swift b/Modules/BusX/BusUI/src/BusUI.ManyTextField.swift new file mode 100644 index 0000000..02c9949 --- /dev/null +++ b/Modules/BusX/BusUI/src/BusUI.ManyTextField.swift @@ -0,0 +1,49 @@ +import Combine +import SwiftUI + +extension BusUI { + public final class ManyTextField: ObservableObject { + let textApp: String + let textUI: String + @Published public var id: String? + @Published public var v = "a:" + var subscriptions = [AnyCancellable]() + var sub = [AnyCancellable]() + + public init( + _ textApp: String, + _ textUI: String + ) { + self.textApp = textApp + self.textUI = textUI + + /**///print("ИГР BusUTF(\(Unmanaged.passUnretained(self).toOpaque())).init textA/textU: '\(textApp)'/'\(textUI)'") + + $id + .sink { [weak self] v in self?.setup(v) } + .store(in: &sub) + } + + private func setup(_ id: String?) { + /**/print("ИГР BusUTF(\(Unmanaged.passUnretained(self).toOpaque())).setup id: '\(id)'") + + subscriptions = [] + + Bus.sendSync( + textUI, + $v + .removeDuplicates() + .compactMap(onlyUIText) + .compactMap { .... + id? } + .eraseToAnyPublisher(), + &subscriptions + ) + + Bus.receiveSync( + [textApp], + { [weak self] (_, v: String) in self?.v = "a:\(v)" }, + &subscriptions + ) + } + } +} diff --git a/Modules/BusX/BusUI/src/BusUI.TextField.swift b/Modules/BusX/BusUI/src/BusUI.TextField.swift index 2cd9faa..c48ffd7 100644 --- a/Modules/BusX/BusUI/src/BusUI.TextField.swift +++ b/Modules/BusX/BusUI/src/BusUI.TextField.swift @@ -3,32 +3,13 @@ import SwiftUI extension BusUI { public final class TextField: ObservableObject { - let textApp: String - let textUI: String - @Published public var id: String? @Published public var v = "a:" var subscriptions = [AnyCancellable]() - var sub = [AnyCancellable]() public init( _ textApp: String, _ textUI: String ) { - self.textApp = textApp - self.textUI = textUI - - /**///print("ИГР BusUTF(\(Unmanaged.passUnretained(self).toOpaque())).init textA/textU: '\(textApp)'/'\(textUI)'") - - $id - .sink { [weak self] v in self?.setup(v) } - .store(in: &sub) - } - - private func setup(_ id: String?) { - /**/print("ИГР BusUTF(\(Unmanaged.passUnretained(self).toOpaque())).setup id: '\(id)'") - - subscriptions = [] - Bus.sendSync( textUI, $v