/** * Tab-group body rendering under DOM-panel keepalive: `renderActiveBody` (the * body region) + `NativeSlot` (the anchor for an active native panel). */ import { type ReactNode } from 'react'; import type { TabGroupNode } from '../layout/index.js'; import type { RenderContext } from './dock-view.js'; /** * Render a tab group's body region under DOM-panel KEEPALIVE. * * - DOM panels: ALL of the group's DOM panels are mounted SIMULTANEOUSLY, each * under a STABLE React key (`dom-${panelId}`) so switching the active tab never * remounts a body — React state + scroll persist across A→B→A. The active body * fills the region (flex:1); inactive ones stay in the DOM but `display:none`. * Each body's host renderer receives `{ active }` and is re-invoked with the * new flag on every activation change (no remount), so a host can fire * on-activation side effects off the false→true edge. * - Native panels: EXEMPT from keepalive. The single ACTIVE native panel mounts a * `NativeSlot` (keyed on the active id, so deactivation unmounts it and fires * `bindNativeSlot(id, null)`); inactive native panels render nothing. Keeping a * bound native slot mounted-but-hidden would collapse its WebContentsView rect. */ export declare function renderActiveBody(node: TabGroupNode, ctx: RenderContext): ReactNode; //# sourceMappingURL=panel-body.d.ts.map