import { Layers } from "lucide-react"; import type { StandaloneViewProps, TabProps, TermixApp, } from "@termix/plugin-sdk/frontend"; import { setTmuxMonitorApi } from "./api"; import { tmuxMonitorEnabled } from "./host-tmux-monitor"; import { HostTmuxMonitorSection } from "./HostTmuxMonitorSection"; import { TmuxMonitor } from "./TmuxMonitor"; import TmuxMonitorApp from "./TmuxMonitorApp"; const VIEW_ID = "tmux_monitor"; function TmuxMonitorTab({ tab, isVisible }: TabProps) { const hostId = (tab.data?.hostId as number | undefined) ?? undefined; return ( ); } function TmuxMonitorStandalone(props: StandaloneViewProps) { return ; } export function activate(app: TermixApp): void { setTmuxMonitorApi(app.api); app.onDispose(() => setTmuxMonitorApi(null)); // A single cross-host browser, like the old core tab: opening it from a // host row just points the already-open (or newly opened) tab at that host. app.registerTab(VIEW_ID, TmuxMonitorTab, { icon: Layers, titleKey: "nav.tmuxMonitor", singleton: true, hostless: true, persistent: true, activityTypes: ["tmux_monitor"], standalone: TmuxMonitorStandalone, }); app.registerHostAction({ id: "tmux_monitor", titleKey: "nav.tmuxMonitor", icon: Layers, kind: "open", order: 70, copyUrlView: VIEW_ID, when: (host) => !!host.enableSsh && tmuxMonitorEnabled(host), run: (host, shell) => shell.openSingletonTab(VIEW_ID, { data: { hostId: Number(host.id), hostRequest: Date.now() }, }), }); app.registerHostEditorSection({ id: "tmux-monitor", group: "ssh", titleKey: "hosts.tabTmuxMonitor", icon: Layers, order: 45, defaults: true, component: HostTmuxMonitorSection, }); }