import { AfterViewInit, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
import { MenuMetadata } from './types';
import * as i0 from "@angular/core";
/**
* val-menu
*
* A side menu component using Ionic IonMenu with customizable logo,
* close button, and content projection for menu items.
*
* @example
*
*
*
*
*
*
* @input props - Menu configuration
*/
export declare class MenuComponent implements AfterViewInit, OnChanges, OnDestroy {
private menuCtrl;
private i18n;
private elementRef;
private splitPane?;
private splitPaneOriginalStyles;
protected readonly isDesktopCollapsed: import("@angular/core").WritableSignal;
private touchStartX;
private touchStartTime;
private readonly EDGE_SWIPE_THRESHOLD;
private readonly MIN_SWIPE_DISTANCE;
private readonly MAX_SWIPE_DURATION;
/**
* Menu configuration.
*/
props: MenuMetadata;
ngOnChanges(changes: SimpleChanges): void;
ngAfterViewInit(): void;
ngOnDestroy(): void;
onTouchStart(event: TouchEvent): void;
onTouchEnd(event: TouchEvent): void;
/**
* Close button text - reactive to language changes.
*/
closeButtonText: import("@angular/core").Signal;
/**
* Closes the menu.
*/
closeMenu(): Promise;
/**
* Expande el rail a pedido de lo que está proyectado adentro. Una sección que
* solo agrupa hijos no puede desplegarse en 56px, así que pide lugar en vez
* de no hacer nada.
*/
expandDesktopRail(): void;
toggleDesktopCollapse(): void;
retractableMenuEnabled(): boolean;
desktopCollapseButtonLabel(): string;
desktopCollapseIcon(): string;
private dragStartX;
private dragStartWidth;
private dragBounds;
private dragging;
/** Por debajo de esto no hubo arrastre: fue un click sobre el borde. */
private readonly DRAG_CLICK_SLOP;
onEdgePointerDown(event: PointerEvent): void;
onEdgePointerMove(event: PointerEvent): void;
onEdgePointerUp(event: PointerEvent): void;
/** Ancho que corresponde al puntero, acotado a los dos extremos. */
private widthFromPointer;
/**
* Resuelve un ancho CSS a píxeles midiendo un elemento de sondeo. Hace falta
* porque los valores son expresiones (`min(40vw, 22rem)`) que getComputedStyle
* devuelve sin resolver cuando viven en una custom property.
*/
private resolveWidthPx;
private menuElement;
private collapsedWidthValue;
private expandedWidthValue;
private applySplitPaneWidth;
private syncSplitPaneWidth;
/**
* Publica el estado del menú en el shell, para que el CONTENIDO pueda
* adaptarse.
*
* El menú ya sabía si estaba abierto o cerrado, pero solo se lo decía a sí
* mismo y al ancho del pane: el contenido seguía con el mismo tope, así que
* el espacio que dejaba la navegación se volvía aire lateral en vez de
* contenido.
*
* Se marca el `ion-split-pane` porque es el ancestro común del menú y del
* contenido; desde ahí `val-container` lo lee con `:host-context` y ninguna
* app necesita cablear nada. El atributo se limpia al restaurar (ver
* restoreSplitPaneWidth) para no dejar un shell "colapsado" cuando el rail
* deja de estar activo.
*/
private markShellMenuState;
private findSplitPane;
private captureOriginalSplitPaneStyles;
private restoreSplitPaneWidth;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
}