|
- import Combine
- import MPAKX
- 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 { v in
- if let id {
- var d = [String: String]()
- d[id] = v
- return MPAK.Many([id], d)
- }
- return v
- }
- .eraseToAnyPublisher(),
- &subscriptions
- )
-
- Bus.receiveSync(
- [textApp],
- { [weak self] (_, v: String) in self?.v = "a:\(v)" },
- &subscriptions
- )
- }
- }
- }
|