gantt-task-react-v 1.3.2 → 1.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,122 +0,0 @@
1
- import { TaskCoordinates } from "../types";
2
- /**
3
- * Generic object pool for reusing objects to reduce garbage collection
4
- */
5
- declare class ObjectPool<T> {
6
- private pool;
7
- private createFn;
8
- private resetFn?;
9
- private maxSize;
10
- constructor(createFn: () => T, resetFn?: (obj: T) => void, maxSize?: number);
11
- acquire(): T;
12
- release(obj: T): void;
13
- clear(): void;
14
- get size(): number;
15
- }
16
- /**
17
- * Task coordinates object pool for reducing memory allocations
18
- */
19
- export declare const useTaskCoordinatesPool: (maxSize?: number) => {
20
- acquire: () => TaskCoordinates;
21
- release: (coords: TaskCoordinates) => void;
22
- clear: () => void;
23
- pool: ObjectPool<TaskCoordinates>;
24
- };
25
- /**
26
- * Array pool for reusing arrays to reduce allocations
27
- */
28
- export declare const useArrayPool: <T>(maxSize?: number) => {
29
- acquire: () => T[];
30
- release: (arr: T[]) => void;
31
- clear: () => void;
32
- pool: ObjectPool<T[]>;
33
- };
34
- /**
35
- * Map pool for reusing Map objects
36
- */
37
- export declare const useMapPool: <K, V>(maxSize?: number) => {
38
- acquire: () => Map<K, V>;
39
- release: (map: Map<K, V>) => void;
40
- clear: () => void;
41
- pool: ObjectPool<Map<K, V>>;
42
- };
43
- /**
44
- * Set pool for reusing Set objects
45
- */
46
- export declare const useSetPool: <T>(maxSize?: number) => {
47
- acquire: () => Set<T>;
48
- release: (set: Set<T>) => void;
49
- clear: () => void;
50
- pool: ObjectPool<Set<T>>;
51
- };
52
- /**
53
- * Memory manager that coordinates multiple object pools
54
- */
55
- export declare const useMemoryManager: () => {
56
- coordinatesPool: {
57
- acquire: () => TaskCoordinates;
58
- release: (coords: TaskCoordinates) => void;
59
- clear: () => void;
60
- pool: ObjectPool<TaskCoordinates>;
61
- };
62
- arrayPool: {
63
- acquire: () => unknown[];
64
- release: (arr: unknown[]) => void;
65
- clear: () => void;
66
- pool: ObjectPool<unknown[]>;
67
- };
68
- mapPool: {
69
- acquire: () => Map<unknown, unknown>;
70
- release: (map: Map<unknown, unknown>) => void;
71
- clear: () => void;
72
- pool: ObjectPool<Map<unknown, unknown>>;
73
- };
74
- setPool: {
75
- acquire: () => Set<unknown>;
76
- release: (set: Set<unknown>) => void;
77
- clear: () => void;
78
- pool: ObjectPool<Set<unknown>>;
79
- };
80
- memoryStats: {
81
- coordinatesPoolSize: number;
82
- arrayPoolSize: number;
83
- mapPoolSize: number;
84
- setPoolSize: number;
85
- };
86
- clearAllPools: () => void;
87
- forceGarbageCollection: () => void;
88
- };
89
- /**
90
- * Memory-efficient batch processor that reuses objects
91
- */
92
- export declare const useBatchProcessor: <T, R>(batchSize?: number) => {
93
- processBatch: (items: T[], processor: (batch: T[]) => Promise<R[]> | R[], onProgress?: (processed: number, total: number) => void) => Promise<R[]>;
94
- };
95
- /**
96
- * Weak reference manager for preventing memory leaks
97
- */
98
- export declare const useWeakReferenceManager: () => {
99
- addWeakRef: (obj: object) => WeakRef<object>;
100
- cleanupDeadRefs: () => number;
101
- getAliveRefCount: () => number;
102
- totalRefs: number;
103
- };
104
- /**
105
- * Memory monitoring hook for tracking memory usage
106
- */
107
- export declare const useMemoryMonitor: (intervalMs?: number) => {
108
- memoryInfo: {
109
- usedJSHeapSize: number;
110
- totalJSHeapSize: number;
111
- jsHeapSizeLimit: number;
112
- };
113
- updateMemoryInfo: () => void;
114
- startMonitoring: () => () => void;
115
- getMemoryPressure: () => number;
116
- };
117
- declare global {
118
- interface Window {
119
- gc?: () => void;
120
- }
121
- }
122
- export {};
@@ -1,24 +0,0 @@
1
- import { RenderTask, TaskMapByLevel, ChildByLevelMap, RootMapByLevel } from "../types";
2
- export interface OptimizedDataStructures {
3
- tasksByLevel: Map<number, RenderTask[]>;
4
- tasksMap: TaskMapByLevel;
5
- childTasksMap: ChildByLevelMap;
6
- rootTasksMap: RootMapByLevel;
7
- taskIndicesByLevel: Map<number, Map<string, number>>;
8
- visibleTasksAtLevel: Map<number, RenderTask[]>;
9
- taskParentMap: Map<string, string | null>;
10
- taskDepthMap: Map<string, number>;
11
- }
12
- /**
13
- * Pre-computes optimized data structures for faster lookups
14
- * Reduces O(n) operations to O(1) for common queries
15
- */
16
- export declare const useOptimizedDataStructures: (tasks: readonly RenderTask[]) => OptimizedDataStructures;
17
- /**
18
- * Hook for getting tasks at specific level with O(1) access
19
- */
20
- export declare const useTasksAtLevel: (optimizedData: OptimizedDataStructures, level: number) => RenderTask[];
21
- /**
22
- * Hook for getting visible tasks in a specific range for virtualization
23
- */
24
- export declare const useVisibleTasksInRange: (optimizedData: OptimizedDataStructures, level: number, startIndex: number, endIndex: number) => RenderTask[];
@@ -1,117 +0,0 @@
1
- import React from "react";
2
- import { RenderTask, TaskCoordinates } from "../types";
3
- export interface SVGBatch {
4
- tasks: RenderTask[];
5
- dependencies: string[];
6
- selectedTasks: string[];
7
- holidays: string[];
8
- }
9
- export interface SVGRenderContext {
10
- additionalLeftSpace: number;
11
- fullRowHeight: number;
12
- taskHeight: number;
13
- svgWidth: number;
14
- svgHeight: number;
15
- }
16
- /**
17
- * Hook for batched SVG rendering to reduce DOM operations
18
- */
19
- export declare const useBatchedSVGRenderer: () => {
20
- clearBatch: () => void;
21
- addTaskToBatch: (task: RenderTask) => void;
22
- addDependencyToBatch: (dependency: string) => void;
23
- addSelectedTaskToBatch: (selectedTask: string) => void;
24
- addHolidayToBatch: (holiday: string) => void;
25
- getBatchData: () => {
26
- tasks: RenderTask[];
27
- dependencies: string[];
28
- selectedTasks: string[];
29
- holidays: string[];
30
- };
31
- currentBatch: SVGBatch;
32
- };
33
- /**
34
- * Hook for SVG element pooling to reuse DOM elements
35
- */
36
- export declare const useSVGElementPool: () => {
37
- acquireRect: () => SVGRectElement;
38
- releaseRect: (rect: SVGRectElement) => void;
39
- acquirePath: () => SVGPathElement;
40
- releasePath: (path: SVGPathElement) => void;
41
- acquireText: () => SVGTextElement;
42
- releaseText: (text: SVGTextElement) => void;
43
- acquireGroup: () => SVGGElement;
44
- releaseGroup: (group: SVGGElement) => void;
45
- clearPools: () => void;
46
- };
47
- /**
48
- * Hook for virtual SVG rendering - only renders visible elements
49
- */
50
- export declare const useVirtualSVGRenderer: (allTasks: RenderTask[], getTaskCoordinates: (task: RenderTask) => TaskCoordinates, viewportBounds: {
51
- minX: number;
52
- maxX: number;
53
- minY: number;
54
- maxY: number;
55
- }) => {
56
- visibleTasks: RenderTask[];
57
- getVisibleTasksInRange: (startIndex: number, endIndex: number) => RenderTask[];
58
- totalVisibleCount: number;
59
- };
60
- /**
61
- * Hook for optimized SVG coordinate transformations
62
- */
63
- export declare const useSVGCoordinateTransforms: () => {
64
- getTransform: (x: number, y: number) => string;
65
- getScaleTransform: (scaleX: number, scaleY: number) => string;
66
- clearTransformCache: () => void;
67
- };
68
- /**
69
- * Hook for Level-of-Detail (LOD) rendering
70
- * Reduces rendering complexity based on zoom level
71
- */
72
- export declare const useLODRenderer: (zoomLevel: number, taskCount: number) => {
73
- showLabels: boolean;
74
- showProgress: boolean;
75
- showDependencies: boolean;
76
- taskDetail: "minimal";
77
- maxVisibleTasks: number;
78
- } | {
79
- showLabels: boolean;
80
- showProgress: boolean;
81
- showDependencies: boolean;
82
- taskDetail: "reduced";
83
- maxVisibleTasks: number;
84
- } | {
85
- showLabels: boolean;
86
- showProgress: boolean;
87
- showDependencies: boolean;
88
- taskDetail: "full";
89
- maxVisibleTasks: number;
90
- };
91
- /**
92
- * Hook for efficient SVG path generation
93
- */
94
- export declare const useSVGPathGenerator: () => {
95
- generateTaskPath: (x: number, y: number, width: number, height: number, cornerRadius?: number) => string;
96
- generateProgressPath: (x: number, y: number, width: number, height: number, progressPercent: number) => string;
97
- generateArrowPath: (fromX: number, fromY: number, toX: number, toY: number, arrowSize?: number) => string;
98
- clearPathCache: () => void;
99
- };
100
- /**
101
- * Hook for SVG performance optimization
102
- */
103
- export declare const useSVGPerformanceOptimizer: () => {
104
- optimizeRenderList: (elements: React.ReactElement[]) => React.ReactElement<any, string | React.JSXElementConstructor<any>>[];
105
- batchSVGUpdates: (updates: Array<() => void>) => void;
106
- shouldSkipRender: (bounds: {
107
- x: number;
108
- y: number;
109
- width?: number;
110
- height?: number;
111
- }, viewportBounds: {
112
- minX: number;
113
- maxX: number;
114
- minY: number;
115
- maxY: number;
116
- }) => boolean;
117
- };
@@ -1,106 +0,0 @@
1
- export interface PerformanceMetrics {
2
- renderTime: number;
3
- coordinateCalculationTime: number;
4
- dependencyCalculationTime: number;
5
- sortingTime: number;
6
- totalTasks: number;
7
- visibleTasks: number;
8
- fps: number;
9
- memoryUsage: number;
10
- timestamp: number;
11
- }
12
- export interface PerformanceBenchmark {
13
- name: string;
14
- startTime: number;
15
- endTime?: number;
16
- duration?: number;
17
- metadata?: Record<string, unknown>;
18
- }
19
- /**
20
- * Performance monitor for tracking Gantt chart performance metrics
21
- */
22
- export declare const usePerformanceMonitor: (enabled?: boolean) => {
23
- startMeasurement: (name: string, metadata?: Record<string, unknown>) => void;
24
- endMeasurement: (name: string) => number;
25
- measureFunction: <T extends unknown[], R>(name: string, fn: (...args: T) => R, metadata?: Record<string, unknown>) => (...args: T) => R;
26
- measureAsyncFunction: <T_1 extends unknown[], R_1>(name: string, fn: (...args: T_1) => Promise<R_1>, metadata?: Record<string, unknown>) => (...args: T_1) => Promise<R_1>;
27
- getPerformanceReport: () => {
28
- measurements: Record<string, {
29
- count: number;
30
- totalTime: number;
31
- avgTime: number;
32
- maxTime: number;
33
- minTime: number;
34
- }>;
35
- fps: number;
36
- currentMetrics: PerformanceMetrics;
37
- allMetrics: PerformanceMetrics[];
38
- };
39
- addMetrics: (metrics: Omit<PerformanceMetrics, "timestamp">) => void;
40
- clearMeasurements: () => void;
41
- updateFPS: () => void;
42
- getFPS: () => number;
43
- getMemoryUsage: () => number;
44
- enabled: boolean;
45
- };
46
- /**
47
- * Hook for measuring render performance
48
- */
49
- export declare const useRenderPerformance: (componentName: string) => {
50
- measureRender: (fn: () => void) => () => void;
51
- renderCount: number;
52
- lastRenderTime: number;
53
- };
54
- /**
55
- * Hook for performance budgeting
56
- */
57
- export declare const usePerformanceBudget: (budgets: Record<string, number>) => {
58
- checkBudgets: () => {
59
- operation: string;
60
- actual: number;
61
- budget: number;
62
- timestamp: number;
63
- }[];
64
- getBudgetStatus: () => Record<string, {
65
- budget: number;
66
- actual: number;
67
- status: "ok" | "warning" | "violation";
68
- }>;
69
- violations: {
70
- operation: string;
71
- actual: number;
72
- budget: number;
73
- timestamp: number;
74
- }[];
75
- };
76
- /**
77
- * Hook for performance-aware rendering
78
- * Automatically reduces quality when performance is poor
79
- */
80
- export declare const useAdaptivePerformance: (thresholds: {
81
- fpsThreshold: number;
82
- renderTimeThreshold: number;
83
- }) => {
84
- performanceLevel: "medium" | "high" | "low";
85
- updatePerformanceLevel: () => "medium" | "high" | "low";
86
- getQualitySettings: () => {
87
- enableAnimations: boolean;
88
- renderQuality: string;
89
- maxVisibleTasks: number;
90
- updateFrequency: number;
91
- };
92
- };
93
- /**
94
- * Hook for throttling expensive operations based on performance
95
- */
96
- export declare const usePerformanceThrottling: () => {
97
- throttle: <T extends unknown[], R>(key: string, fn: (...args: T) => R, baseDelay?: number) => (...args: T) => R | undefined;
98
- };
99
- /**
100
- * Development-only performance debugging utilities
101
- */
102
- export declare const usePerformanceDebugger: () => {
103
- logPerformanceReport: () => void;
104
- exportPerformanceData: () => void;
105
- clearMeasurements: () => void;
106
- };
@@ -1,63 +0,0 @@
1
- import { RenderTask } from "../types";
2
- import type { OptimizedListParams } from "./use-optimized-list";
3
- export interface ProgressiveLoadingConfig {
4
- /** Number of tasks to load per chunk */
5
- chunkSize: number;
6
- /** Buffer size for preloading (in chunks) */
7
- preloadBuffer: number;
8
- /** Function to load a chunk of tasks */
9
- loadTaskChunk: (startIndex: number, endIndex: number) => Promise<RenderTask[]>;
10
- /** Total number of tasks available */
11
- totalTaskCount: number;
12
- /** Enable progressive loading */
13
- enabled: boolean;
14
- }
15
- export interface ProgressiveLoadingState {
16
- /** Currently loaded tasks */
17
- loadedTasks: readonly RenderTask[];
18
- /** Loading state */
19
- isLoading: boolean;
20
- /** Error state */
21
- error: Error | null;
22
- /** Loaded chunk ranges */
23
- loadedRanges: Set<string>;
24
- /** Currently loading chunks */
25
- loadingChunks: Set<string>;
26
- }
27
- /**
28
- * Hook for progressive loading of large task datasets
29
- * Loads tasks in chunks based on viewport visibility
30
- */
31
- export declare const useProgressiveLoading: (initialTasks: readonly RenderTask[], config: Partial<ProgressiveLoadingConfig>, renderedIndexes: OptimizedListParams | null) => ProgressiveLoadingState & {
32
- /** Force load a specific range */
33
- loadRange: (startIndex: number, endIndex: number) => Promise<void>;
34
- /** Preload next chunks based on scroll direction */
35
- preloadNext: (direction: "up" | "down") => Promise<void>;
36
- /** Clear loaded data and reset */
37
- reset: () => void;
38
- };
39
- /**
40
- * Hook for chunked task processing
41
- * Processes large task arrays in smaller chunks to avoid blocking the main thread
42
- */
43
- export declare const useChunkedProcessing: <T, R>(data: T[], processor: (chunk: T[]) => R[], chunkSize?: number) => {
44
- processedData: R[];
45
- isProcessing: boolean;
46
- progress: number;
47
- };
48
- /**
49
- * Enhanced progressive loading with smart caching
50
- */
51
- export declare const useSmartProgressiveLoading: (config: Partial<ProgressiveLoadingConfig> & {
52
- /** Cache expiry time in milliseconds */
53
- cacheExpiry?: number;
54
- /** Maximum cache size (number of chunks) */
55
- maxCacheSize?: number;
56
- }, renderedIndexes: OptimizedListParams | null) => ProgressiveLoadingState & {
57
- /** Force load a specific range */
58
- loadRange: (startIndex: number, endIndex: number) => Promise<void>;
59
- /** Preload next chunks based on scroll direction */
60
- preloadNext: (direction: "up" | "down") => Promise<void>;
61
- /** Clear loaded data and reset */
62
- reset: () => void;
63
- };
@@ -1,49 +0,0 @@
1
- import { DependencyMap, DependentMap, DependencyMargins, ExpandedDependency, ExpandedDependent, MapTaskToCoordinates, TaskMapByLevel, RenderTask, TaskCoordinates } from "../types";
2
- import type { OptimizedListParams } from "./use-optimized-list";
3
- interface SpatialBounds {
4
- minX: number;
5
- maxX: number;
6
- minY: number;
7
- maxY: number;
8
- }
9
- interface SpatialNode {
10
- taskId: string;
11
- bounds: SpatialBounds;
12
- dependencies: ExpandedDependency[];
13
- dependents: ExpandedDependent[];
14
- }
15
- /**
16
- * Spatial hash map for efficient spatial queries
17
- * Divides space into grid cells for O(1) spatial lookups
18
- */
19
- declare class SpatialHashMap {
20
- private cellSize;
21
- private grid;
22
- private taskNodes;
23
- constructor(cellSize?: number);
24
- private getBoundsFromCoordinates;
25
- insert(taskId: string, coordinates: TaskCoordinates, dependencies?: ExpandedDependency[], dependents?: ExpandedDependent[]): void;
26
- query(bounds: SpatialBounds): SpatialNode[];
27
- private boundsIntersect;
28
- getNode(taskId: string): SpatialNode | undefined;
29
- clear(): void;
30
- remove(taskId: string): void;
31
- }
32
- /**
33
- * Hook for optimized dependency calculations using spatial indexing
34
- */
35
- export declare const useSpatialDependencyMap: (tasks: readonly RenderTask[], visibleTasksMirror: Readonly<Record<string, true>>, tasksMap: TaskMapByLevel, mapTaskToCoordinates: MapTaskToCoordinates, fullRowHeight: number, isShowCriticalPath: boolean, renderedRowIndexes: OptimizedListParams | null, renderedColumnIndexes: OptimizedListParams | null) => [DependencyMap, DependentMap, DependencyMargins, SpatialHashMap];
36
- /**
37
- * Hook for querying dependencies in a specific spatial region
38
- */
39
- export declare const useSpatialDependencyQuery: (spatialMap: SpatialHashMap, queryBounds: SpatialBounds) => SpatialNode[];
40
- /**
41
- * Hook for optimized dependency updates
42
- * Only recalculates dependencies for tasks that actually changed
43
- */
44
- export declare const useIncrementalDependencyUpdate: (spatialMap: SpatialHashMap, changedTaskIds: Set<string>, allTasks: readonly RenderTask[]) => (newTaskCoordinates: Map<string, TaskCoordinates>) => void;
45
- /**
46
- * Utility function to create viewport bounds from rendered indexes
47
- */
48
- export declare const createViewportBounds: (renderedRowIndexes: OptimizedListParams | null, renderedColumnIndexes: OptimizedListParams | null, fullRowHeight: number, columnWidth: number) => SpatialBounds | null;
49
- export {};
@@ -1,50 +0,0 @@
1
- import { RenderTask, ViewMode, Distances, TaskCoordinates } from "../types";
2
- export interface WorkerMessage {
3
- id: string;
4
- type: "calculate-coordinates" | "process-dependencies" | "sort-tasks" | "filter-tasks";
5
- data: unknown;
6
- }
7
- export interface WorkerResponse {
8
- id: string;
9
- type: string;
10
- result?: unknown;
11
- error?: string;
12
- }
13
- export interface CoordinateCalculationData {
14
- tasks: RenderTask[];
15
- startDate: number;
16
- viewMode: ViewMode;
17
- rtl: boolean;
18
- fullRowHeight: number;
19
- taskHeight: number;
20
- taskYOffset: number;
21
- distances: Distances;
22
- svgWidth: number;
23
- }
24
- /**
25
- * Hook for managing Web Worker communications for heavy calculations
26
- */
27
- export declare const useGanttWebWorker: () => {
28
- isWorkerAvailable: boolean;
29
- sendMessage: (message: Omit<WorkerMessage, "id">, timeoutMs?: number) => Promise<unknown>;
30
- };
31
- /**
32
- * Hook for calculating task coordinates using Web Worker
33
- */
34
- export declare const useWorkerCoordinateCalculation: (tasks: readonly RenderTask[], startDate: Date, viewMode: ViewMode, rtl: boolean, fullRowHeight: number, taskHeight: number, taskYOffset: number, distances: Distances, svgWidth: number) => {
35
- coordinates: Map<string, TaskCoordinates>;
36
- isCalculating: boolean;
37
- recalculate: () => Promise<Map<string, TaskCoordinates>>;
38
- };
39
- /**
40
- * Hook for sorting tasks using Web Worker
41
- */
42
- export declare const useWorkerTaskSorting: () => {
43
- sortTasks: (tasks: RenderTask[]) => Promise<RenderTask[]>;
44
- };
45
- /**
46
- * Hook for filtering tasks using Web Worker
47
- */
48
- export declare const useWorkerTaskFiltering: () => {
49
- filterTasks: (tasks: RenderTask[], filterFn: string) => Promise<RenderTask[]>;
50
- };