/** * OverlapDetector - Ren tidbaseret overlap detection * Ingen DOM manipulation, kun tidsberegninger */ import { CalendarEvent } from '../types/CalendarTypes'; export type EventId = string & { readonly __brand: 'EventId'; }; export type OverlapResult = { overlappingEvents: CalendarEvent[]; stackLinks: Map; }; export interface StackLink { prev?: EventId; next?: EventId; stackLevel: number; } export declare class OverlapDetector { /** * Resolver hvilke events et givent event overlapper med i en kolonne * @param event - CalendarEvent der skal checkes for overlap * @param columnEvents - Array af CalendarEvent objekter i kolonnen * @returns Array af events som det givne event overlapper med */ resolveOverlap(event: CalendarEvent, columnEvents: CalendarEvent[]): CalendarEvent[]; /** * Dekorerer events med stack linking data * @param newEvent - Det nye event der skal tilføjes * @param overlappingEvents - Events som det nye event overlapper med * @returns OverlapResult med overlappende events og stack links */ decorateWithStackLinks(newEvent: CalendarEvent, overlappingEvents: CalendarEvent[]): OverlapResult; }