/// export type CalendarViewType = 'MONTHLY' | 'WEEKLY' | 'DAILY' | 'YEARLY'; export type displayAllDayScheduleMode = 'none' | 'use'; export type StartOfWeek = 'sunday' | 'monday'; export type TodayBtnMode = 'none' | 'use'; export type ActionType = 'CLICK' | 'CLICK_WITH_SHIFT_KEY_DOWN' | 'DELETE_KEY_DOWN' | 'DRAG' | 'DOUBLE_CLICK'; export type TargetType = 'SCHEDULE' | 'DATE'; export type Action = { action: ActionType; target: TargetType; date?: Date; dates?: Date[]; schedule?: Schedule; schedules?: Schedule[]; selectedDates?: Date[]; startDate?: string | undefined | null; endDate?: string | undefined | null; }; export type ConfigTrigger = (action: Action) => void; export type Config = { [target in TargetType]?: { [action in ActionType]?: ConfigTrigger; }; }; export type Schedule = { id: number; title: string; startDate: Date; endDate: Date; isAllDay?: boolean; [key: string]: any; }; export type CalendarActionType = 'CALENDAR_TYPE_CHANGE' | 'PREV_BUTTON_CLICK' | 'NEXT_BUTTON_CLICK' | 'TODAY_BUTTON_CLICK'; export type CalendarAction = { type: CalendarActionType; payload: { type?: CalendarViewType; startDate: string | undefined | null; endDate: string | undefined | null; }; }; export type CalendarProps = { defaultViewType?: CalendarViewType | 'str_fm_month' | 'str_fm_week' | 'str_fm_day' | 'str_fm_year'; viewTypes?: (CalendarViewType | 'str_fm_month' | 'str_fm_week' | 'str_fm_day' | 'str_fm_year')[]; displayAllDayScheduleMode?: displayAllDayScheduleMode; startOfWeek?: StartOfWeek; todayBtnMode?: TodayBtnMode; schedules?: Schedule[]; config?: Config; onActionDispatch?: (action: CalendarAction) => void; }; export type EventItemProps = { event: Schedule; date?: Date; extraProps?: Record; onDragStart: (event: Schedule, e: React.DragEvent) => void; onDragEnd: (e: React.DragEvent) => void; onClick: (schedule: Schedule, e: React.MouseEvent) => void; onDoubleClick: (schedule: Schedule) => void; isSelected?: boolean; };