import { GhanttTimelineProps, GhanttTimelineScale } from './types'; /** Inicio del rango global al hacer zoom con modificador (Cmd/Ctrl + rueda). */ export declare const GHANTT_MODIFIER_ZOOM_GLOBAL_START = "2015-01-01"; /** * Mitad de la ventana en escala `hour` (zoom por modificador / línea local): total ≈ 2× ms. * Antes 24 h por lado (48 h); se sube a **100 h** por lado (**200 h** mínimo en cinta) para scroll + virtualización. */ export declare const GHANTT_MODIFIER_ZOOM_HOUR_HALF_MS: number; /** Fin exclusivo del rango global: hasta el fin de 2030. */ export declare function ghanttModifierZoomGlobalEndExclusive(): string; /** * Orden de escala con zoom por modificador: de más detalle (índice 0) a más agregada (índice 3). * No incluye `year` (solo años en la rejilla): el tope es `month` (mes + año en cada etiqueta). */ export declare const GHANTT_MODIFIER_ZOOM_ORDER: readonly GhanttTimelineScale[]; /** Zoom mínimo de ventana (ms) — solo aplica a ventanas locales (p. ej. hora). */ export declare const GHANTT_MODIFIER_ZOOM_MIN_SPAN_MS = 3600000; /** Anchos por slot recomendados (px). */ export declare function ghanttDefaultColumnWidthForScale(scale: GhanttTimelineScale): number; export declare function ghanttModifierZoomScaleIndex(scale: GhanttTimelineScale): number; /** * Escala según la **duración** visible (ms), con histéresis ligera (p. ej. API sin zoom por modificador). */ export declare function ghanttInferScaleForSpan(spanMs: number, prev?: GhanttTimelineScale): GhanttTimelineScale; /** * Construye `viewStart` / `viewEnd` centrados en `centerMs` y acotados al rango global (API genérica). * Para la línea completa con zoom por modificador usar {@link ghanttModifierZoomFullTimelineBounds}. */ export declare function ghanttModifierZoomWindowForScale(scale: GhanttTimelineScale, centerMs: number, globalStartMs: number, globalEndExclusiveMs: number): { viewStart: string; viewEnd: string; }; /** * Ventana de timeline con **zoom por modificador**: casi siempre el rango global completo (2015 → fin * del año en curso) para que todos los años/períodos sigan presentes en la cinta; solo la **escala** * (rejilla) cambia. En **hora** se usa una ventana local centrada en `anchorMs` (no cabe la línea * entera a nivel hora en DOM). La ventana horaria total ≈ `2 * GHANTT_MODIFIER_ZOOM_HOUR_HALF_MS` (≥200 h). */ export declare function ghanttModifierZoomFullTimelineBounds(scale: GhanttTimelineScale, anchorMs: number, prev?: GhanttTimelineProps): { viewStart: string; viewEnd: string; }; /** Normaliza la línea de tiempo inicial cuando está activo `modifierWheelZoom`. */ export declare function ghanttModifierZoomNormalizeInitial(t: GhanttTimelineProps): GhanttTimelineProps; export interface GhanttModifierZoomWheelInput { /** Índice 0..3 en {@link GHANTT_MODIFIER_ZOOM_ORDER} (lo acumula `Ghantt` con la rueda). */ targetScaleIndex: number; ctrlKey: boolean; metaKey: boolean; altKey: boolean; /** Fracción 0..1 sobre el contenido scrollable (instante bajo el puntero). */ anchorFraction: number; } /** Límites de ancho de columna (px) para “zoom” dentro de la misma escala antes de cambiar de vista. */ export declare function ghanttModifierZoomColumnBounds(scale: GhanttTimelineScale): { min: number; max: number; defaultWidth: number; }; /** * Calcula el columnWidthPx inicial de nextScale que preserva la misma densidad px/ms * que tenia currentWidthPx en currentScale. Forzado dentro de [min,max] de la escala destino. */ export declare function ghanttContinuousColumnWidth(currentScale: GhanttTimelineScale, currentWidthPx: number, nextScale: GhanttTimelineScale): number; export interface GhanttModifierZoomWheelDeltaInput { /** Acumulado del batch (`>0` ≈ scroll “abajo” = zoom out / menos detalle). */ deltaY: number; ctrlKey: boolean; metaKey: boolean; altKey: boolean; /** Fracción 0..1 del instante bajo el puntero (scroll tras zoom sigue usándola en `Ghantt`). */ anchorFraction: number; } /** * Zoom con modificador vía rueda: primero **estrecha o ensancha columnas** en la escala actual; * solo al llegar al límite pasa al **siguiente nivel** de escala (p. ej. día → hora al acercar). */ export declare function ghanttModifierZoomWheelDelta(prev: GhanttTimelineProps, input: GhanttModifierZoomWheelDeltaInput): GhanttTimelineProps | null; /** * Zoom por modificador: solo cambia la **escala** y mantiene la **cinta completa** (2015 → año actual) * salvo en vista **hora** (ventana local). El desplazamiento horizontal sigue el “enfoque” bajo el cursor. */ export declare function ghanttModifierZoomOnWheel(prev: GhanttTimelineProps, input: GhanttModifierZoomWheelInput): GhanttTimelineProps | null; export interface GhanttModifierZoomApplyStepOptions { direction: 'in' | 'out'; anchorFraction?: number; } /** * Un paso **discreto** de escala (API opcional / pruebas). */ export declare function ghanttModifierZoomApplyStep(prev: GhanttTimelineProps, options: GhanttModifierZoomApplyStepOptions): GhanttTimelineProps | null; //# sourceMappingURL=ghanttModifierWheelZoom.d.ts.map