cmux/Sources/Panels/PanelContentView.swift
Austin Wang ed18e32d11
Fix terminal pane drag/drop handoff delay (#1837)
* Fix terminal pane portal handoff after drag

* Fix terminal portal handoff during split churn

* Fix terminal host handoff for same-pane rebuilds
2026-03-19 20:37:32 -07:00

60 lines
2 KiB
Swift

import SwiftUI
import Foundation
import Bonsplit
/// View that renders the appropriate panel view based on panel type
struct PanelContentView: View {
let panel: any Panel
let paneId: PaneID
let isFocused: Bool
let isSelectedInPane: Bool
let isVisibleInUI: Bool
let portalPriority: Int
let isSplit: Bool
let appearance: PanelAppearance
let hasUnreadNotification: Bool
let onFocus: () -> Void
let onRequestPanelFocus: () -> Void
let onTriggerFlash: () -> Void
var body: some View {
switch panel.panelType {
case .terminal:
if let terminalPanel = panel as? TerminalPanel {
TerminalPanelView(
panel: terminalPanel,
paneId: paneId,
isFocused: isFocused,
isVisibleInUI: isVisibleInUI,
portalPriority: portalPriority,
isSplit: isSplit,
appearance: appearance,
hasUnreadNotification: hasUnreadNotification,
onFocus: onFocus,
onTriggerFlash: onTriggerFlash
)
}
case .browser:
if let browserPanel = panel as? BrowserPanel {
BrowserPanelView(
panel: browserPanel,
paneId: paneId,
isFocused: isFocused,
isVisibleInUI: isVisibleInUI,
portalPriority: portalPriority,
onRequestPanelFocus: onRequestPanelFocus
)
}
case .markdown:
if let markdownPanel = panel as? MarkdownPanel {
MarkdownPanelView(
panel: markdownPanel,
isFocused: isFocused,
isVisibleInUI: isVisibleInUI,
portalPriority: portalPriority,
onRequestPanelFocus: onRequestPanelFocus
)
}
}
}
}