Calendar/wwwroot/js/utils/OverlapDetector.d.ts
2026-02-03 00:02:25 +01:00

33 lines
1.2 KiB
TypeScript

/**
* 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<EventId, StackLink>;
};
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;
}