import { CSSProperties, ReactNode } from 'react'; import { GhanttTimelineSlot, GhanttUpperSegment } from './ganttTimeline'; /** A partir de este número de slots se usa una rejilla CSS (una sola capa) en lugar de un nodo por columna. */ export declare const GHANTT_DENSE_SLOT_GRID_MIN_SLOTS = 96; /** * Con escala `hour` / `day` / `week` y al menos tantos slots, la **cabecera** (etiquetas por slot) * virtualiza celdas con {@link ghanttScrollVirtualIndexRange}. El **cuerpo** con ancho fijo usa una * sola capa CSS (gradiente) para todos los días/semanas; no duplica esa lógica por fila. */ export declare const GHANTT_SCROLL_VIRTUAL_MIN_SLOTS = 120; /** @deprecated Usar {@link GHANTT_SCROLL_VIRTUAL_MIN_SLOTS}. */ export declare const GHANTT_HOUR_VIRTUAL_MIN_SLOTS = 120; /** * Rango de índices de slots (misma anchura en px) a renderizar para scroll fluido: * ~200–300 slots “activos” anclados al scroll (viewport + colchón hacia ambos lados). */ export declare function ghanttScrollVirtualIndexRange(scrollLeftPx: number, viewportWidthPx: number, cellPx: number, slotCount: number): { start: number; end: number; }; /** @deprecated Usar {@link ghanttScrollVirtualIndexRange}. */ export declare const ghanttHourVirtualIndexRange: typeof ghanttScrollVirtualIndexRange; /** Tope usado por {@link ghanttDenseHeaderLabelIndices} (utilidades de muestreo; la cabecera del strip pinta un label por slot). */ export declare const GHANTT_DENSE_HEADER_MAX_LABELS = 72; /** * Índices de slot en los que dibujar etiqueta en cabecera densa (inicio + cada ~step + último slot). */ export declare function ghanttDenseHeaderLabelIndices(slotCount: number, maxLabels: number): number[]; /** * Índices de etiquetas en cabecera densa repartidos **por cada bloque del piso superior** (p. ej. mes), * para que al hacer scroll siempre haya etiquetas secundarias en el viewport. Si `upperSpans` no * encaja con `totalSlots`, se usa {@link ghanttDenseHeaderLabelIndices} global. */ export declare function ghanttDenseHeaderLabelIndicesByUpperSpans(totalSlots: number, upperSpans: readonly number[], maxLabels: number): number[]; export interface GhanttSlotStripProps { slots: readonly GhanttTimelineSlot[]; /** Segmentos mayores (meses, años) para dibujar la rejilla principal. Si se pasan, se ocultan las líneas de los slots individuales. */ upperSegments?: readonly GhanttUpperSegment[]; /** `header`: fondo de cabecera; `body`: transparente para heredar fila (selección, hijos, zebra). */ variant: 'header' | 'body'; /** Contenido por celda de slot (cabecera con etiquetas). En cuerpo suele omitirse. */ renderSlot?: (slot: GhanttTimelineSlot) => ReactNode; className?: string; /** Ancho fijo por slot (px). Suele ir dentro de un contenedor con `overflow-x-auto` en la columna Gantt. */ slotMinWidthPx?: number; /** * Umbral para rejilla densa **solo en cuerpo** (gradiente repetido). La cabecera siempre usa una celda por slot. * @default {@link GHANTT_DENSE_SLOT_GRID_MIN_SLOTS} */ densePatternMinSlots?: number; } /** Ancho de celda en px alineado a píxeles enteros (cabecera, cuerpo y gradiente comparten el mismo valor). */ export declare function ghanttSnapSlotWidthPx(slotMinWidthPx: number): number; /** * Líneas verticales entre slots o segmentos mayores. * `slotPixelWidth` suele ser {@link ghanttSnapSlotWidthPx}(`columnWidthPx`). */ export declare function ghanttVerticalSlotGridBackgroundStyle(slotCount: number, slotPixelWidth: number, upperSegments?: readonly GhanttUpperSegment[], hideMinorGrid?: boolean): CSSProperties; declare function GhanttSlotStripRoot(props: GhanttSlotStripProps): import("react/jsx-runtime").JSX.Element; export declare const GhanttSlotStrip: import('react').MemoExoticComponent; export {}; //# sourceMappingURL=GhanttSlotStrip.d.ts.map