cmux/Sources/Panels/PanelContentView.swift
Austin Wang c447bee602
Fix browser pane portal anchor sizing (#1094)
* Fix browser pane webview sizing

* Guard browser portal by pane ownership

* Keep browser portal frame during transient zero geometry

* Guard portal surfaces against duplicate hosts

* Defer terminal surface reflow during tab drags

* Fix browser panel pane ID unit tests
2026-03-09 13:28:05 -07:00

59 lines
1.9 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,
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
)
}
}
}
}