@matsu1321/react-gantt-chart 1.0.0

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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Matsu132
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,186 @@
1
+ # react-gantt-chart
2
+
3
+ [![npm version](https://badge.fury.io/js/react-gantt-chart.svg)](https://badge.fury.io/js/react-gantt-chart)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ **The ultimate high-performance, flexible Gantt chart component for modern React.**
7
+
8
+ `react-gantt-chart` is an ultra-lightweight, high-performance Gantt chart library designed to run **smoothly at 60fps** even when managing large-scale projects with over 10,000 tasks.
9
+
10
+ Built with a custom **Zero Dependency** architecture, it avoids heavy third-party libraries. By incorporating advanced rendering optimization via Virtual DOM (Virtualization) and native scrolling for seamless horizontal scroll synchronization, it overturns the common perception of Gantt chart libraries as being "heavy", "slow", and "clunky".
11
+
12
+ ---
13
+
14
+ ## 🌟 Why choose `react-gantt-chart`?
15
+
16
+ - **⚡ Groundbreaking Performance**: Automatically removes off-screen elements from the DOM. Even with tens of thousands of tasks, it only renders the few dozen rows visible on the screen, resulting in zero latency.
17
+ - **🎮 Intuitive Interactions**: Seamlessly modify task duration (slide), resize, and update progress rates using drag-and-drop mouse operations.
18
+ - **📱 Perfect Scroll Synchronization**: The task tree on the left and the timeline on the right are perfectly synchronized pixel by pixel. No matter how fast you scroll, there is no misalignment or delay.
19
+ - **🛠 Flexible Customization**: Highly extensible to fit your project's needs, including custom label formatters, arbitrary locale support (fully supports `en-US`, `ja-JP`, etc.), and task-specific styling.
20
+ - **🔒 Type-Safe Reliability (TypeScript)**: Built entirely in TypeScript, ensuring a robust design and allowing you to develop safely with powerful IDE auto-completion support.
21
+
22
+ ---
23
+
24
+ ## 📦 Installation
25
+
26
+ ```bash
27
+ npm install react-gantt-chart
28
+ ```
29
+
30
+ or
31
+
32
+ ```bash
33
+ yarn add react-gantt-chart
34
+ ```
35
+
36
+ ---
37
+
38
+ ## 🔌 Quick Start
39
+
40
+ ```tsx
41
+ import React, { useState } from "react";
42
+ import { Gantt, ViewMode, Task } from "react-gantt-chart";
43
+ import "react-gantt-chart/dist/style.css";
44
+
45
+ const initialTasks: Task[] = [
46
+ {
47
+ id: "project-1",
48
+ name: "Product Development Project",
49
+ start: new Date(2026, 4, 1),
50
+ end: new Date(2026, 4, 15),
51
+ type: "project",
52
+ progress: 45,
53
+ displayOrder: 1,
54
+ hideChildren: false,
55
+ },
56
+ {
57
+ id: "task-1-1",
58
+ name: "Requirement Definition & Design",
59
+ start: new Date(2026, 4, 1),
60
+ end: new Date(2026, 4, 5),
61
+ type: "task",
62
+ progress: 80,
63
+ project: "project-1",
64
+ displayOrder: 2,
65
+ },
66
+ {
67
+ id: "task-1-2",
68
+ name: "Frontend Development",
69
+ start: new Date(2026, 4, 6),
70
+ end: new Date(2026, 4, 12),
71
+ type: "task",
72
+ progress: 30,
73
+ project: "project-1",
74
+ dependencies: ["task-1-1"],
75
+ displayOrder: 3,
76
+ },
77
+ {
78
+ id: "milestone-1",
79
+ name: "Alpha Release",
80
+ start: new Date(2026, 4, 15),
81
+ end: new Date(2026, 4, 15),
82
+ type: "milestone",
83
+ progress: 0,
84
+ project: "project-1",
85
+ dependencies: ["task-1-2"],
86
+ displayOrder: 4,
87
+ },
88
+ ];
89
+
90
+ export const MyGanttChart = () => {
91
+ const [tasks, setTasks] = useState<Task[]>(initialTasks);
92
+ const [view, setView] = useState<ViewMode>(ViewMode.Day);
93
+
94
+ const handleDateChange = (updatedTask: Task, _children: Task[]) => {
95
+ setTasks(prev => prev.map(t => t.id === updatedTask.id ? updatedTask : t));
96
+ };
97
+
98
+ const handleProgressChange = (updatedTask: Task, _children: Task[]) => {
99
+ setTasks(prev => prev.map(t => t.id === updatedTask.id ? updatedTask : t));
100
+ };
101
+
102
+ const handleExpanderClick = (task: Task) => {
103
+ setTasks(prev => prev.map(t => t.id === task.id ? { ...t, hideChildren: !t.hideChildren } : t));
104
+ };
105
+
106
+ return (
107
+ <div style={{ width: "100%", height: "600px" }}>
108
+ <Gantt
109
+ tasks={tasks}
110
+ viewMode={view}
111
+ locale="en-US"
112
+ ganttHeight={500}
113
+ onDateChange={handleDateChange}
114
+ onProgressChange={handleProgressChange}
115
+ onExpanderClick={handleExpanderClick}
116
+ />
117
+ </div>
118
+ );
119
+ };
120
+ ```
121
+
122
+ ---
123
+
124
+ ## 🛠️ API Reference
125
+
126
+ ### `Gantt` Component Props
127
+
128
+ | Property | Type | Default | Description |
129
+ | :--- | :--- | :--- | :--- |
130
+ | `tasks` | `Task[]` | **Required** | The array of tasks to display |
131
+ | `viewMode` | `ViewMode` | `ViewMode.Day` | The time scale of the calendar (display unit) |
132
+ | `locale` | `string` | `"en-GB"` | Localization string. E.g., `"en-US"`, `"ja-JP"` |
133
+ | `ganttHeight` | `number` | `0` (Auto) | The total height of the Gantt chart (px) |
134
+ | `rowHeight` | `number` | `50` | The height per task row (px) |
135
+ | `headerHeight` | `number` | `50` | The height of the calendar and table headers (px) |
136
+ | `columnWidth` | `number` | *Depends on ViewMode* | The width per date column (px) |
137
+ | `listCellWidth` | `string` | `"155px"` | The total width of the task list on the left |
138
+ | `barFill` | `number` | `60` | The vertical ratio of the task bar relative to the row height (%) |
139
+ | `barCornerRadius` | `number` | `3` | The border-radius of the task bar (px) |
140
+ | `handleWidth` | `number` | `8` | The width of the left/right drag detection area for resizing (px) |
141
+ | `fontFamily` | `string` | `"Arial, ..."` | The font family for the entire chart |
142
+ | `fontSize` | `string` | `"14px"` | The font size for the entire chart |
143
+ | `rtl` | `boolean` | `false` | Enable Right-to-Left (RTL) layout rendering |
144
+ | `todayColor` | `string` | `"rgba(...)"` | The background color of the grid representing "today" |
145
+
146
+ ### Event Handlers
147
+
148
+ | Event Name | Signature | Description |
149
+ | :--- | :--- | :--- |
150
+ | `onDateChange` | `(task: Task, children: Task[]) => void \| Promise<void>` | Called when a task period change (drag/resize) is completed |
151
+ | `onProgressChange` | `(task: Task, children: Task[]) => void \| Promise<void>` | Called when the progress handle is dragged |
152
+ | `onExpanderClick` | `(task: Task) => void` | Called when the expand/collapse icon of a project is clicked |
153
+ | `onSelect` | `(task: Task, isSelected: boolean) => void` | Called when a task is clicked and its selection state changes |
154
+ | `onDoubleClick` | `(task: Task) => void` | Called when a task is double-clicked |
155
+ | `onClick` | `(task: Task) => void` | Called when a task is single-clicked |
156
+ | `onDelete` | `(task: Task) => void` | Called when a task deletion action occurs |
157
+
158
+ ---
159
+
160
+ ## 🎨 Styling Customization
161
+
162
+ Each `Task` object can have a `styles` property, allowing you to define individual color designs for each task.
163
+
164
+ ```typescript
165
+ export interface Task {
166
+ id: string;
167
+ name: string;
168
+ start: Date;
169
+ end: Date;
170
+ type: TaskType; // 'task' | 'project' | 'milestone'
171
+ progress: number; // 0 - 100
172
+ styles?: {
173
+ backgroundColor?: string;
174
+ backgroundSelectedColor?: string;
175
+ progressColor?: string;
176
+ progressSelectedColor?: string;
177
+ };
178
+ // ...
179
+ }
180
+ ```
181
+
182
+ ---
183
+
184
+ ## 📄 License
185
+
186
+ MIT
@@ -0,0 +1,18 @@
1
+ import { default as React } from 'react';
2
+ import { ViewMode } from '../../types/public-types';
3
+ import { CalendarSetup } from '../../types/calendar-setup';
4
+
5
+ export type CalendarProps = {
6
+ dateSetup: CalendarSetup;
7
+ locale: string;
8
+ viewMode: ViewMode;
9
+ headerHeight: number;
10
+ columnWidth: number;
11
+ fontFamily: string;
12
+ fontSize: string;
13
+ rtl?: boolean;
14
+ calendarTopHeaderFormat?: (date: Date, viewMode: ViewMode) => string;
15
+ calendarBottomHeaderFormat?: (date: Date, viewMode: ViewMode) => string;
16
+ };
17
+ export declare const Calendar: React.FC<CalendarProps>;
18
+ export default Calendar;
@@ -0,0 +1,12 @@
1
+ import { default as React } from 'react';
2
+
3
+ type TopPartOfCalendarProps = {
4
+ value: string;
5
+ x1Line: number;
6
+ y1Line: number;
7
+ y2Line: number;
8
+ xText: number;
9
+ yText: number;
10
+ };
11
+ export declare const TopPartOfCalendar: React.FC<TopPartOfCalendarProps>;
12
+ export default TopPartOfCalendar;
@@ -0,0 +1,16 @@
1
+ import { default as React } from 'react';
2
+ import { RenderedTask } from '../../types/rendered-task';
3
+
4
+ type DependencyArrowProps = {
5
+ taskFrom: RenderedTask;
6
+ taskTo: RenderedTask;
7
+ rowHeight: number;
8
+ taskHeight: number;
9
+ arrowIndent: number;
10
+ rtl: boolean;
11
+ };
12
+ /**
13
+ * タスク間の依存関係を示す矢印
14
+ */
15
+ export declare const DependencyArrow: React.FC<DependencyArrowProps>;
16
+ export default DependencyArrow;
@@ -0,0 +1,4 @@
1
+ import { default as React } from 'react';
2
+ import { GanttProps } from '../../types/public-types';
3
+
4
+ export declare const Gantt: React.FC<GanttProps>;
@@ -0,0 +1,34 @@
1
+ import { default as React } from 'react';
2
+ import { Task } from '../../types/public-types';
3
+ import { RenderedTask } from '../../types/rendered-task';
4
+
5
+ export type TaskTooltipProps = {
6
+ task: RenderedTask;
7
+ arrowIndent: number;
8
+ rtl: boolean;
9
+ svgWidth: number;
10
+ fontSize: string;
11
+ fontFamily: string;
12
+ mousePos?: {
13
+ x: number;
14
+ y: number;
15
+ };
16
+ TooltipContent: React.FC<{
17
+ task: Task;
18
+ fontSize: string;
19
+ fontFamily: string;
20
+ }>;
21
+ };
22
+ /**
23
+ * ガントチャートのデフォルトツールチップ表示内容
24
+ */
25
+ export declare const DefaultTooltipContent: React.FC<{
26
+ task: Task;
27
+ fontSize: string;
28
+ fontFamily: string;
29
+ }>;
30
+ /**
31
+ * ホバー時に表示されるタスク詳細ツールチップ
32
+ */
33
+ export declare const TaskTooltip: React.FC<TaskTooltipProps>;
34
+ export default TaskTooltip;
@@ -0,0 +1,40 @@
1
+ import { default as React } from 'react';
2
+ import { Task, EventOption } from '../../types/public-types';
3
+ import { RenderedTask } from '../../types/rendered-task';
4
+ import { GanttInteractionState } from '../../types/interaction-types';
5
+
6
+ export type TimelineContentProps = {
7
+ /** 仮想スクロールで切り出した表示中タスク */
8
+ tasks: RenderedTask[];
9
+ /** 矢印描画などに使う全タスクリスト */
10
+ allTasks?: RenderedTask[];
11
+ interactionState: GanttInteractionState;
12
+ selectedTask: RenderedTask | undefined;
13
+ rowHeight: number;
14
+ columnWidth: number;
15
+ timeStep: number;
16
+ svg?: React.RefObject<SVGSVGElement>;
17
+ svgWidth: number;
18
+ /** 全タスク合計高さ(SVG の height) */
19
+ svgHeight?: number;
20
+ taskHeight: number;
21
+ arrowColor: string;
22
+ arrowIndent: number;
23
+ fontSize: string;
24
+ fontFamily: string;
25
+ rtl: boolean;
26
+ setInteractionState: (value: GanttInteractionState) => void;
27
+ setFailedTask: (value: RenderedTask | null) => void;
28
+ setSelectedTask: (taskId: string) => void;
29
+ mousePos?: {
30
+ x: number;
31
+ y: number;
32
+ };
33
+ TooltipContent?: React.FC<{
34
+ task: Task;
35
+ fontSize: string;
36
+ fontFamily: string;
37
+ }>;
38
+ } & EventOption;
39
+ export declare const TimelineContent: React.FC<TimelineContentProps>;
40
+ export default TimelineContent;
@@ -0,0 +1,21 @@
1
+ import { default as React } from 'react';
2
+ import { GridProps } from '../grid/grid';
3
+ import { CalendarProps } from '../calendar/calendar';
4
+ import { TimelineContentProps } from './timeline-content';
5
+
6
+ export type TimelinePanelProps = {
7
+ gridProps: GridProps;
8
+ calendarProps: CalendarProps;
9
+ contentProps: TimelineContentProps;
10
+ };
11
+ /**
12
+ * ガントチャートの右側タイムライン領域
13
+ *
14
+ * ### スクロールガタつき解消の核心
15
+ * - カレンダーヘッダーを `position: sticky; top: 0` でスクロールコンテナ内部に配置
16
+ * - `overflow: auto` を持つコンテナが縦横スクロールを一括管理するため
17
+ * 「state → 再レンダリング → DOM 書き込み」のフレーム遅延が発生しない
18
+ * - translateX 計算が不要になりカレンダーとグリッドのズレがゼロになる
19
+ */
20
+ export declare const TimelinePanel: React.FC<TimelinePanelProps>;
21
+ export default TimelinePanel;
@@ -0,0 +1,16 @@
1
+ import { default as React } from 'react';
2
+ import { Task } from '../../types/public-types';
3
+
4
+ export type GridBodyProps = {
5
+ tasks: Task[];
6
+ dates: Date[];
7
+ svgWidth: number;
8
+ rowHeight: number;
9
+ columnWidth: number;
10
+ todayColor: string;
11
+ startIndex?: number;
12
+ endIndex?: number;
13
+ svgHeight?: number;
14
+ };
15
+ export declare const GridBody: React.FC<GridBodyProps>;
16
+ export default GridBody;
@@ -0,0 +1,6 @@
1
+ import { default as React } from 'react';
2
+ import { GridBodyProps } from './grid-body';
3
+
4
+ export type GridProps = GridBodyProps;
5
+ export declare const Grid: React.FC<GridProps>;
6
+ export default Grid;
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { TaskItemProps } from '../task-item';
3
+
4
+ export declare const Bar: React.FC<TaskItemProps>;
5
+ export default Bar;
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { TaskItemProps } from '../task-item';
3
+
4
+ export declare const Milestone: React.FC<TaskItemProps>;
5
+ export default Milestone;
@@ -0,0 +1,5 @@
1
+ import { default as React } from 'react';
2
+ import { TaskItemProps } from '../task-item';
3
+
4
+ export declare const Project: React.FC<TaskItemProps>;
5
+ export default Project;
@@ -0,0 +1,17 @@
1
+ import { default as React } from 'react';
2
+ import { RenderedTask } from '../../types/rendered-task';
3
+ import { ChartInteraction } from '../../types/interaction-types';
4
+
5
+ export type TaskItemProps = {
6
+ task: RenderedTask;
7
+ arrowIndent: number;
8
+ taskHeight: number;
9
+ isProgressChangeable: boolean;
10
+ isDateChangeable: boolean;
11
+ isDelete: boolean;
12
+ isSelected: boolean;
13
+ rtl: boolean;
14
+ onEventStart: (action: ChartInteraction, selectedTask: RenderedTask, event?: React.MouseEvent | React.KeyboardEvent) => void;
15
+ };
16
+ export declare const TaskItem: React.FC<TaskItemProps>;
17
+ export default TaskItem;
@@ -0,0 +1,10 @@
1
+ import { default as React } from 'react';
2
+
3
+ export declare const TaskListHeaderDefault: React.FC<{
4
+ headerHeight: number;
5
+ rowWidth: string;
6
+ fontFamily: string;
7
+ fontSize: string;
8
+ }>;
9
+ export type TaskListHeaderProps = typeof TaskListHeaderDefault;
10
+ export default TaskListHeaderDefault;
@@ -0,0 +1,17 @@
1
+ import { default as React } from 'react';
2
+ import { Task } from '../../types/public-types';
3
+
4
+ export declare const TaskListTableDefault: React.FC<{
5
+ rowHeight: number;
6
+ rowWidth: string;
7
+ fontFamily: string;
8
+ fontSize: string;
9
+ locale: string;
10
+ tasks: Task[];
11
+ visibleTasks?: Task[];
12
+ selectedTaskId: string;
13
+ setSelectedTask: (taskId: string) => void;
14
+ onExpanderClick: (task: Task) => void;
15
+ }>;
16
+ export type TaskListTableProps = typeof TaskListTableDefault;
17
+ export default TaskListTableDefault;
@@ -0,0 +1,40 @@
1
+ import { default as React } from 'react';
2
+ import { RenderedTask } from '../../types/rendered-task';
3
+ import { Task } from '../../types/public-types';
4
+
5
+ export type TaskListProps = {
6
+ headerHeight: number;
7
+ rowWidth: string;
8
+ fontFamily: string;
9
+ fontSize: string;
10
+ rowHeight: number;
11
+ locale: string;
12
+ tasks: Task[];
13
+ visibleTasks?: Task[];
14
+ horizontalContainerClass?: string;
15
+ selectedTask?: RenderedTask | undefined;
16
+ selectedTaskId?: string;
17
+ setSelectedTask: (taskId: string) => void;
18
+ onExpanderClick: (task: Task) => void;
19
+ TaskListHeader?: React.FC<{
20
+ headerHeight: number;
21
+ rowWidth: string;
22
+ fontFamily: string;
23
+ fontSize: string;
24
+ }>;
25
+ TaskListTable?: React.FC<{
26
+ rowHeight: number;
27
+ rowWidth: string;
28
+ fontFamily: string;
29
+ fontSize: string;
30
+ locale: string;
31
+ tasks: Task[];
32
+ visibleTasks?: Task[];
33
+ selectedTaskId: string;
34
+ setSelectedTask: (taskId: string) => void;
35
+ onExpanderClick: (task: Task) => void;
36
+ }>;
37
+ taskListWidth?: number;
38
+ };
39
+ export declare const TaskList: React.FC<TaskListProps>;
40
+ export default TaskList;
@@ -0,0 +1,12 @@
1
+ import { Task, ViewMode } from '../types/public-types';
2
+
3
+ export type DateHelperScales = "year" | "month" | "week" | "day" | "hour" | "minute" | "second" | "millisecond";
4
+ export declare const getCachedDateTimeFormat: (locString: string | string[], opts?: Intl.DateTimeFormatOptions) => Intl.DateTimeFormat;
5
+ export declare const addToDate: (date: Date, quantity: number, scale: DateHelperScales) => Date;
6
+ export declare const startOfDate: (date: Date, scale: DateHelperScales) => Date;
7
+ export declare const getLocaleMonth: (date: Date, locale: string) => string;
8
+ export declare const getLocalDayOfWeek: (date: Date, locale: string, format?: "long" | "short" | "narrow") => string;
9
+ export declare const getWeekNumberISO8601: (date: Date) => string;
10
+ export declare const getDaysInMonth: (month: number, year: number) => number;
11
+ export declare const seedDates: (startDate: Date, endDate: Date, viewMode: ViewMode) => Date[];
12
+ export declare const ganttDateRange: (tasks: Task[], viewMode: ViewMode, preStepsCount: number) => Date[];
@@ -0,0 +1,15 @@
1
+ import { default as React } from 'react';
2
+ import { RenderedTask } from '../types/rendered-task';
3
+ import { Task } from '../types/public-types';
4
+
5
+ export declare function isKeyboardEvent(event: React.MouseEvent | React.KeyboardEvent | React.FocusEvent): event is React.KeyboardEvent;
6
+ export declare function isMouseEvent(event: React.MouseEvent | React.KeyboardEvent | React.FocusEvent): event is React.MouseEvent;
7
+ export declare function isRenderedTask(task: Task | RenderedTask): task is RenderedTask;
8
+ /**
9
+ * 折りたたまれたプロジェクト配下の子タスクを除外する
10
+ */
11
+ export declare function removeHiddenTasks(tasks: Task[]): Task[];
12
+ /**
13
+ * displayOrder に基づいてタスクをソートする比較関数
14
+ */
15
+ export declare const sortTasks: (taskA: Task, taskB: Task) => 0 | 1 | -1;
@@ -0,0 +1,22 @@
1
+ import { Task } from '../types/public-types';
2
+ import { RenderedTask } from '../types/rendered-task';
3
+ import { DragAction } from '../types/interaction-types';
4
+
5
+ /**
6
+ * 指定日付に対応するSVG上のX座標を線形補間で算出する
7
+ */
8
+ export declare const taskXCoordinate: (date: Date, dates: Date[], columnWidth: number) => number;
9
+ /**
10
+ * Task[] をピクセル座標付きの RenderedTask[] に変換する
11
+ */
12
+ export declare const convertToRenderedTasks: (tasks: Task[], dates: Date[], columnWidth: number, rowHeight: number, taskHeight: number, barCornerRadius: number, handleWidth: number, rtl: boolean, barProgressColor: string, barProgressSelectedColor: string, barBackgroundColor: string, barBackgroundSelectedColor: string, projectProgressColor: string, projectProgressSelectedColor: string, projectBackgroundColor: string, projectBackgroundSelectedColor: string, milestoneBackgroundColor: string, milestoneBackgroundSelectedColor: string) => RenderedTask[];
13
+ export declare const calcProgressGeometry: (taskX1: number, taskX2: number, progress: number, rtl: boolean) => number[];
14
+ export declare const progressByProgressWidth: (progressWidth: number, task: RenderedTask) => number;
15
+ export declare const getProgressHandlePoint: (progressX: number, taskY: number, taskHeight: number) => string;
16
+ /**
17
+ * SVG上のマウスX座標とドラッグ操作種別から変更後のタスク座標を算出する
18
+ */
19
+ export declare const applyDragToTask: (svgX: number, action: DragAction, selectedTask: RenderedTask, xStep: number, timeStep: number, initEventX1Delta: number, rtl: boolean) => {
20
+ isChanged: boolean;
21
+ changedTask: RenderedTask;
22
+ };
@@ -0,0 +1,4 @@
1
+
2
+ export { Gantt } from './components/gantt/gantt';
3
+ export { ViewMode } from './types/public-types';
4
+ export type { Task, EventOption, DisplayOption, StylingOption, GanttProps, TaskType, } from './types/public-types';