34 lines
1.2 KiB
TypeScript
34 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;
|
||
|
|
}
|