UNPKG

svelte-gantt

Version:

Interactive JavaScript Gantt chart/resource booking component

150 lines (149 loc) 3.96 kB
import type { SvelteTask, TaskModel } from "./task"; import type { SvelteRow } from "./row"; import type { TimeRangeModel } from "./timeRange"; type EventController<T extends any[]> = [(handler: (arg: T) => void) => () => void, (...params: T) => void]; type EventsAndArgs<T = any> = { [Event in keyof T]: T[Event] extends any[] ? T[Event] : never; }; type EventFeature<T extends EventsAndArgs> = { on: { [Event in keyof T]: EventController<T[Event]>[0]; }; raise: { [Event in keyof T]: EventController<T[Event]>[1]; }; }; export declare function provideGanttApi(): { tasks: EventFeature<{ move: [TaskModel]; resize: [TaskModel]; select: [SvelteTask]; switchRow: [SvelteTask, SvelteRow, SvelteRow]; moveEnd: [TaskModel]; change: [{ task: SvelteTask; sourceRow: SvelteRow; targetRow: SvelteRow; previousState: any; }]; changed: [{ task: SvelteTask; sourceRow: SvelteRow; targetRow: SvelteRow; previousState: any; }]; dblclicked: [SvelteTask, MouseEvent]; }>; gantt: EventFeature<{ viewChanged: []; dateSelected: [{ from: number; to: number; }]; }>; timeranges: EventFeature<{ clicked: [{ model: TimeRangeModel; }]; resized: [{ model: TimeRangeModel; left: number; width: number; }]; changed: [{ model: TimeRangeModel; left: number; width: number; }]; }>; }; declare function createGanttApi(): { tasks: EventFeature<{ move: [TaskModel]; resize: [TaskModel]; select: [SvelteTask]; switchRow: [SvelteTask, SvelteRow, SvelteRow]; moveEnd: [TaskModel]; change: [{ task: SvelteTask; sourceRow: SvelteRow; targetRow: SvelteRow; previousState: any; }]; changed: [{ task: SvelteTask; sourceRow: SvelteRow; targetRow: SvelteRow; previousState: any; }]; dblclicked: [SvelteTask, MouseEvent]; }>; gantt: EventFeature<{ viewChanged: []; dateSelected: [{ from: number; to: number; }]; }>; timeranges: EventFeature<{ clicked: [{ model: TimeRangeModel; }]; resized: [{ model: TimeRangeModel; left: number; width: number; }]; changed: [{ model: TimeRangeModel; left: number; width: number; }]; }>; }; export type GanttApi = ReturnType<typeof createGanttApi>; export declare function useGanttApi(): { tasks: EventFeature<{ move: [TaskModel]; resize: [TaskModel]; select: [SvelteTask]; switchRow: [SvelteTask, SvelteRow, SvelteRow]; moveEnd: [TaskModel]; change: [{ task: SvelteTask; sourceRow: SvelteRow; targetRow: SvelteRow; previousState: any; }]; changed: [{ task: SvelteTask; sourceRow: SvelteRow; targetRow: SvelteRow; previousState: any; }]; dblclicked: [SvelteTask, MouseEvent]; }>; gantt: EventFeature<{ viewChanged: []; dateSelected: [{ from: number; to: number; }]; }>; timeranges: EventFeature<{ clicked: [{ model: TimeRangeModel; }]; resized: [{ model: TimeRangeModel; left: number; width: number; }]; changed: [{ model: TimeRangeModel; left: number; width: number; }]; }>; }; export {};