/** * @license * Copyright 2023 Nuraly, Laabidi Aymen * SPDX-License-Identifier: MIT */ import { LitElement, nothing, type PropertyValues } from 'lit'; import { PanelMode, PanelSize, PanelPosition, MaximizePosition } from './panel.types.js'; import '../icon/index.js'; import '../label/index.js'; import { PanelDragHost, PanelResizeHost } from './controllers/index.js'; declare const NrPanelElement_base: (new (...args: any[]) => import("@nuralyui/common/mixins").DependencyAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").ThemeAware) & (new (...args: any[]) => import("@nuralyui/common/mixins").EventHandlerCapable) & (new (...args: any[]) => import("packages/common/src/shared/base-mixin.js").LightDomContent) & typeof LitElement; /** * Versatile panel component that can transform between panel and window modes. * * Features: * - Transform between panel (docked) and window (floating) modes * - Draggable in window mode * - Resizable panels * - Collapsible content * - Minimizable to compact view * - Theme-aware styling with light/dark mode support * - Multiple size presets * - Positioned docking (left, right, top, bottom) * * @example * ```html * * *

Panel content here

*
* * * *

Window content here

*
* ``` * * @fires panel-mode-change - Panel mode changed * @fires panel-close - Panel closed * @fires panel-minimize - Panel minimized * @fires panel-maximize - Panel maximized/restored * @fires panel-drag-start - Panel drag started * @fires panel-drag-end - Panel drag ended * @fires panel-resize - Panel resized * * @slot default - Panel body content * @slot header - Custom header content * @slot footer - Custom footer content */ export declare class NrPanelElement extends NrPanelElement_base implements PanelDragHost, PanelResizeHost { static useShadowDom: boolean; static styles: import("lit").CSSResult; requiredComponents: string[]; /** Panel mode (panel, window, minimized) */ mode: PanelMode; /** Panel size */ size: PanelSize; /** Panel position (for panel mode) */ position: PanelPosition; /** Position where the window appears when maximizing from embedded mode */ maximizePosition: MaximizePosition; /** Whether the panel can be dragged (window mode only) */ draggable: boolean; /** Whether the panel is resizable */ resizable: boolean; /** Whether the panel content can be collapsed */ collapsible: boolean; /** Whether the panel can be minimized */ minimizable: boolean; /** Whether the panel can be closed */ closable: boolean; /** Whether to enable smooth animations for position/mode changes */ animated: boolean; /** Panel title */ title: string; /** Header icon */ icon: string; /** Custom width */ width: string; /** Custom height */ height: string; /** Whether the panel is open/visible */ open: boolean; /** Collapsed state */ private collapsed; /** Dragging state */ isDragging: boolean; /** Animation state */ private animating; /** Current X offset for dragging */ offsetX: number; /** Current Y offset for dragging */ offsetY: number; /** Current panel width */ panelWidth: number; /** Current panel height */ panelHeight: number; /** Original mode before any transformations (for restoration from minimized) */ private originalMode; /** Track if panel is maximized from embedded mode */ private isMaximizedFromEmbedded; /** Track if this panel was created from a tab pop-out */ isTabPopOut: boolean; /** Track if this is the first update to capture initial mode */ private isFirstUpdate; /** Original dimensions before maximizing from embedded mode */ private originalEmbeddedWidth; /** Original dimensions before maximizing from embedded mode */ private originalEmbeddedHeight; private dragController; private _resizeController; connectedCallback(): void; willUpdate(changedProperties: PropertyValues): void; updated(changedProperties: PropertyValues): void; /** * Handle mode change */ private handleModeChange; /** * Transform to window mode */ transformToWindow(): void; /** * Transform to panel mode */ transformToPanel(): void; /** * Restore panel to its original state */ restore(): void; /** * Minimize panel */ minimize(): void; /** * Maximize embedded panel to floating window */ maximizeEmbedded(): void; /** * Set the window position based on maximizePosition with slight randomization */ private setMaximizePosition; /** * Restore maximized embedded panel back to embedded mode */ restoreEmbedded(): void; /** * Maximize/restore panel */ maximize(): void; /** * Close panel */ close(): void; /** * Toggle collapsed state */ toggleCollapse(): void; /** * Get label size based on panel size */ private getLabelSize; /** * Get panel classes */ private getPanelClasses; /** * Get panel styles */ private getPanelStyles; /** * Render header */ private renderHeader; /** * Render footer */ private renderFooter; /** * Render resize handles */ private renderResizeHandles; render(): typeof nothing | import("lit-html").TemplateResult<1>; } declare global { interface HTMLElementTagNameMap { 'nr-panel': NrPanelElement; } } export {}; //# sourceMappingURL=panel.component.d.ts.map