import { Configuration } from '../configurations/CalendarConfig'; import { IColumnBounds } from './ColumnDetectionUtils'; import { DateService } from './DateService'; /** * PositionUtils - Positioning utilities with dependency injection * Focuses on pixel/position calculations while delegating date operations * * Note: Uses DateService with date-fns for all date/time operations */ export declare class PositionUtils { private dateService; private config; constructor(dateService: DateService, config: Configuration); /** * Convert minutes to pixels */ minutesToPixels(minutes: number): number; /** * Convert pixels to minutes */ pixelsToMinutes(pixels: number): number; /** * Convert time (HH:MM) to pixels from day start using DateService */ timeToPixels(timeString: string): number; /** * Convert Date object to pixels from day start using DateService */ dateToPixels(date: Date): number; /** * Convert pixels to time using DateService */ pixelsToTime(pixels: number): string; /** * Beregn event position og størrelse */ calculateEventPosition(startTime: string | Date, endTime: string | Date): { top: number; height: number; duration: number; }; /** * Snap position til grid interval */ snapToGrid(pixels: number): number; /** * Snap time to interval using DateService */ snapTimeToInterval(timeString: string): string; /** * Beregn kolonne position for overlappende events */ calculateColumnPosition(eventIndex: number, totalColumns: number, containerWidth: number): { left: number; width: number; }; /** * Check om to events overlapper i tid */ eventsOverlap(start1: string | Date, end1: string | Date, start2: string | Date, end2: string | Date): boolean; /** * Beregn Y position fra mouse/touch koordinat */ getPositionFromCoordinate(clientY: number, column: IColumnBounds): number; /** * Valider at tid er inden for arbejdstimer */ isWithinWorkHours(timeString: string): boolean; /** * Valider at tid er inden for dag grænser */ isWithinDayBounds(timeString: string): boolean; /** * Hent minimum event højde i pixels */ getMinimumEventHeight(): number; /** * Hent maksimum event højde i pixels (hele dagen) */ getMaximumEventHeight(): number; /** * Beregn total kalender højde */ getTotalCalendarHeight(): number; /** * Convert ISO datetime to time string with UTC-to-local conversion */ isoToTimeString(isoString: string): string; /** * Convert time string to ISO datetime using DateService with timezone handling */ timeStringToIso(timeString: string, date?: Date): string; /** * Calculate event duration using DateService */ calculateDuration(startTime: string | Date, endTime: string | Date): number; /** * Format duration to readable text (Danish) */ formatDuration(minutes: number): string; }