/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
/**
* Single id → panel-component map (#1208 follow-up).
*
* The unified sidebar, the floating-panel host (#1201) and the pop-out
* windows all need to render the *same* panel body for a given id. Keeping
* the switch here means a panel only has to be wired once, and the three
* hosts stay in lock-step.
*/
import type { ReactNode } from 'react';
import type { WorkspacePanelId } from './registry';
import { HierarchyPanel } from '@/components/viewer/HierarchyPanel';
import { PropertiesPanel } from '@/components/viewer/PropertiesPanel';
import { ComparePanel } from '@/components/viewer/ComparePanel';
import { BCFPanel } from '@/components/viewer/BCFPanel';
import { IDSPanel } from '@/components/viewer/IDSPanel';
import { LensPanel } from '@/components/viewer/LensPanel';
import { ClashPanel } from '@/components/viewer/ClashPanel';
import { ExtensionsPanel } from '@/components/extensions/ExtensionsPanel';
import { ScriptPanel } from '@/components/viewer/ScriptPanel';
import { GanttPanel } from '@/components/viewer/schedule/GanttPanel';
import { ListPanel } from '@/components/viewer/lists/ListPanel';
/**
* Render the body for a workspace panel. `onClose` is the host's "close this
* panel" handler (re-dock to Information, remove the float, or re-dock the
* window). The Information panel ignores it — it is the always-on fallback.
*/
export function renderPanelBody(id: WorkspacePanelId, onClose: () => void): ReactNode {
switch (id) {
// Hierarchy's home is the left slot (#1267); it is never routed to the right
// pane / float / pop-out, but the case keeps the id to body map exhaustive.
case 'hierarchy': return ;
case 'properties': return ;
case 'compare': return ;
case 'bcf': return ;
case 'ids': return ;
case 'lens': return ;
case 'clash': return ;
case 'extensions': return ;
case 'script': return ;
case 'gantt': return ;
case 'lists': return ;
}
}