@kalender/core
Version:
calendar core library
62 lines • 1.83 kB
TypeScript
import { Time, WeekDay } from "../date-tools";
export declare enum RepeatTypes {
Interval = "Interval",
DayOfWeek = "DayOfWeek",
DayOfMonth = "DayOfMonth",
DayOfYear = "DayOfYear",
MonthDay = "MonthDay",
NthWeekDayOfIntervalMonth = "NthWeekDayOfIntervalMonth",
NthWeekDayOfSpecifiedMonth = "NthWeekDayOfSpecifiedMonth"
}
export declare type CalendarRepeat<T = any> = (T extends RepeatTypes.Interval ? {
interval?: number;
} : T extends RepeatTypes.DayOfWeek ? {
days?: WeekDay[];
interval?: number;
weeks?: number;
} : T extends RepeatTypes.DayOfMonth ? {
days: number[];
months?: number[];
} : T extends RepeatTypes.DayOfYear ? {
days: number[];
interval?: number;
timesOfYear?: number;
} : T extends RepeatTypes.MonthDay ? {
month: number;
day: number;
interval?: number;
timesOfYear?: number;
} : T extends RepeatTypes.NthWeekDayOfIntervalMonth ? {
interval?: number;
rank?: number;
weekDay: WeekDay;
} : T extends RepeatTypes.NthWeekDayOfSpecifiedMonth ? {
month: number;
rank?: number;
weekDay: WeekDay;
interval?: number;
} : {}) & {
type: T;
start: Date;
end?: Date;
times?: number;
};
export interface CalendarEvent<T extends RepeatTypes = any> {
id: Symbol;
title: string;
description?: string;
start: Time;
end: Time;
repeat: CalendarRepeat<T>;
customData?: any;
}
export declare type CalendarRepeatFn<T extends RepeatTypes> = (date: Date, option: Omit<CalendarRepeat<T>, 'type'>) => boolean;
export interface CalendarDate {
year: number;
month: number;
day: number;
weekDay: number;
date: Date;
events: Omit<CalendarEvent, 'id' | 'repeat'>[];
}
//# sourceMappingURL=definition.d.ts.map