pi-remote-ios/Sources/UI/Terminal/TerminalViewRepresentable.s...

41 lines
1.3 KiB
Swift

// TerminalViewRepresentable.swift
// SwiftUI bridge that wraps TerminalViewController for use inside SwiftUI view trees.
//
// Usage:
// let controller = TerminalViewController()
// TerminalViewRepresentable(controller: controller)
// .ignoresSafeArea()
import SwiftUI
/// A SwiftUI-compatible wrapper around `TerminalViewController`.
///
/// The `controller` is created and owned externally (typically by a
/// parent view or view-model) so that its `feed(data:)` and
/// `apply(theme:)` APIs remain accessible outside the SwiftUI tree.
public struct TerminalViewRepresentable: UIViewControllerRepresentable {
// MARK: Properties
/// The controller to host. Must be created before this representable is inserted.
public let controller: TerminalViewController
// MARK: Init
public init(controller: TerminalViewController) {
self.controller = controller
}
// MARK: UIViewControllerRepresentable
public func makeUIViewController(context: Context) -> TerminalViewController {
controller
}
public func updateUIViewController(_ uiViewController: TerminalViewController,
context: Context) {
// No-op for now: theme and font updates are applied imperatively via
// controller.apply(theme:) and controller.apply(font:).
}
}