import { type PanelSizingConstraints } from '../../split-layout/panel-sizing.js'; import type { PanelWidth } from '../../split-layout/width-utils.js'; import type { RenderedMode } from '../shared/panel-state/panel-mode.js'; import type { DetailsPanelState } from '../shared/panel-state/usePanelState.js'; import type { ExtractedDetailsSlot } from './slots.js'; /** * Everything the details region needs to know about a rendered mode. Holds no * styles so the sizing math can read the same table as the markup. * * @internal */ export interface PanelView { panelVariant: 'split' | 'overlay' | 'hidden'; /** `null` when the mode offers no resize separator. */ handleVariant: 'split' | 'overlay' | null; /** Where the panel content lives. */ host: 'panel' | 'drawer'; /** Drives the panel's `hidden` attribute. */ visible: boolean; role: 'dialog' | undefined; /** Whether the panel reserves space from the content. */ reservesContent: boolean; } /** * The collapsed mode keeps `host: 'panel'` on purpose. Moving the content * elsewhere while collapsing would unmount it and reset its scroll position * and form state (APPDEV-19606). * * @internal */ export declare const PANEL_VIEW: Record; /** @internal */ export type DetailsSlot = ExtractedDetailsSlot & { state: DetailsPanelState; }; /** @internal */ export interface DetailsSizing { /** Value published as the panel width variable on the region. */ panelWidthCss: string; /** Whether the current mode offers a resize separator. */ isResizable: boolean; /** Bounds the separator reports: the width and the limits of the panel it controls. */ bounds: { value: number; min: number; max: number; }; /** What a drag re-clamps against. */ constraints: PanelSizingConstraints; panelWidthPx: number; } /** * Maps the details slot and its rendered mode onto the shared panel sizing. * Only the mode-specific reading of the declared inputs lives here, never the * arithmetic: an overlay reserves nothing from the content, and a hidden panel * has no width to publish at all. * * @internal */ export declare function computeDetailsSizing(details: DetailsSlot | null, contentMin: PanelWidth, view: PanelView): DetailsSizing; //# sourceMappingURL=details-sizing.d.ts.map