UNPKG

svelte-gantt

Version:

Interactive JavaScript Gantt chart/resource booking component

45 lines (44 loc) 1.62 kB
/// <reference types="svelte" /> import type { Readable } from 'svelte/store'; import type { SvelteTask } from './task'; import type { SvelteRow } from './row'; import type { SvelteTimeRange } from './timeRange'; export interface EntityState<T, K = PropertyKey> { ids: K[]; entities: { [key: PropertyKey]: T; }; } interface EntityType<K = PropertyKey> { model: { id: K; }; hidden?: boolean; } export type EntityKey = string | number | symbol; export interface EntityStore<T extends EntityType, K extends EntityKey = EntityKey> extends Readable<EntityState<T>> { _update(updater: (value: EntityState<T>) => EntityState<T>): void; add(entity: T): void; addAll(entities: T[]): void; update(entity: T): void; upsert(entity: T): void; upsertAll(entities: T[]): void; delete(id: K): void; deleteAll(ids: K[]): void; refresh(): void; set(value: EntityState<T>): void; entities?: Record<K, T>; } export declare function all<T extends EntityType>(store: EntityStore<T>): Readable<T[]>; export declare function where<T extends EntityType>(store: EntityStore<T>, filterFn: (value: T) => boolean): Readable<T[]>; export declare function createDataStore(): { taskStore: EntityStore<SvelteTask, EntityKey>; rowStore: EntityStore<SvelteRow, EntityKey>; timeRangeStore: EntityStore<SvelteTimeRange, EntityKey>; allTasks: Readable<SvelteTask[]>; allRows: Readable<SvelteRow[]>; allTimeRanges: Readable<SvelteTimeRange[]>; rowTaskCache: Readable<{}>; }; export type GanttDataStore = ReturnType<typeof createDataStore>; export {};