@levelcaptech/gantt-task-react-custom 0.1.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.
Files changed (40) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +159 -0
  3. package/dist/components/calendar/calendar.d.ts +14 -0
  4. package/dist/components/calendar/top-part-of-calendar.d.ts +11 -0
  5. package/dist/components/gantt/gantt.d.ts +3 -0
  6. package/dist/components/gantt/task-gantt-content.d.ts +25 -0
  7. package/dist/components/gantt/task-gantt.d.ts +13 -0
  8. package/dist/components/grid/grid-body.d.ts +12 -0
  9. package/dist/components/grid/grid.d.ts +4 -0
  10. package/dist/components/other/arrow.d.ts +12 -0
  11. package/dist/components/other/horizontal-scroll.d.ts +8 -0
  12. package/dist/components/other/tooltip.d.ts +29 -0
  13. package/dist/components/other/vertical-scroll.d.ts +9 -0
  14. package/dist/components/task-item/bar/bar-date-handle.d.ts +11 -0
  15. package/dist/components/task-item/bar/bar-display.d.ts +20 -0
  16. package/dist/components/task-item/bar/bar-progress-handle.d.ts +7 -0
  17. package/dist/components/task-item/bar/bar-small.d.ts +3 -0
  18. package/dist/components/task-item/bar/bar.d.ts +3 -0
  19. package/dist/components/task-item/milestone/milestone.d.ts +3 -0
  20. package/dist/components/task-item/project/project.d.ts +3 -0
  21. package/dist/components/task-item/task-item.d.ts +15 -0
  22. package/dist/components/task-list/task-list-header.d.ts +7 -0
  23. package/dist/components/task-list/task-list-table.d.ts +13 -0
  24. package/dist/components/task-list/task-list.d.ts +37 -0
  25. package/dist/helpers/bar-helper.d.ts +14 -0
  26. package/dist/helpers/date-helper.d.ts +14 -0
  27. package/dist/helpers/other-helper.d.ts +8 -0
  28. package/dist/index.css +312 -0
  29. package/dist/index.d.ts +3 -0
  30. package/dist/index.js +2749 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/index.modern.js +2748 -0
  33. package/dist/index.modern.js.map +1 -0
  34. package/dist/test/date-helper.test.d.ts +1 -0
  35. package/dist/test/gant.test.d.ts +1 -0
  36. package/dist/types/bar-task.d.ts +21 -0
  37. package/dist/types/date-setup.d.ts +5 -0
  38. package/dist/types/gantt-task-actions.d.ts +8 -0
  39. package/dist/types/public-types.d.ts +136 -0
  40. package/package.json +70 -0
package/dist/index.js ADDED
@@ -0,0 +1,2749 @@
1
+ function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
2
+
3
+ var React = require('react');
4
+ var React__default = _interopDefault(React);
5
+
6
+ function _extends() {
7
+ _extends = Object.assign || function (target) {
8
+ for (var i = 1; i < arguments.length; i++) {
9
+ var source = arguments[i];
10
+
11
+ for (var key in source) {
12
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
13
+ target[key] = source[key];
14
+ }
15
+ }
16
+ }
17
+
18
+ return target;
19
+ };
20
+
21
+ return _extends.apply(this, arguments);
22
+ }
23
+
24
+ function _unsupportedIterableToArray(o, minLen) {
25
+ if (!o) return;
26
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
27
+ var n = Object.prototype.toString.call(o).slice(8, -1);
28
+ if (n === "Object" && o.constructor) n = o.constructor.name;
29
+ if (n === "Map" || n === "Set") return Array.from(o);
30
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
31
+ }
32
+
33
+ function _arrayLikeToArray(arr, len) {
34
+ if (len == null || len > arr.length) len = arr.length;
35
+
36
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
37
+
38
+ return arr2;
39
+ }
40
+
41
+ function _createForOfIteratorHelperLoose(o, allowArrayLike) {
42
+ var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
43
+ if (it) return (it = it.call(o)).next.bind(it);
44
+
45
+ if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
46
+ if (it) o = it;
47
+ var i = 0;
48
+ return function () {
49
+ if (i >= o.length) return {
50
+ done: true
51
+ };
52
+ return {
53
+ done: false,
54
+ value: o[i++]
55
+ };
56
+ };
57
+ }
58
+
59
+ throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
60
+ }
61
+
62
+ (function (ViewMode) {
63
+ ViewMode["Hour"] = "Hour";
64
+ ViewMode["QuarterDay"] = "Quarter Day";
65
+ ViewMode["HalfDay"] = "Half Day";
66
+ ViewMode["Day"] = "Day";
67
+ ViewMode["Week"] = "Week";
68
+ ViewMode["Month"] = "Month";
69
+ ViewMode["QuarterYear"] = "QuarterYear";
70
+ ViewMode["Year"] = "Year";
71
+ })(exports.ViewMode || (exports.ViewMode = {}));
72
+
73
+ var intlDTCache = {};
74
+ var getCachedDateTimeFormat = function getCachedDateTimeFormat(locString, opts) {
75
+ if (opts === void 0) {
76
+ opts = {};
77
+ }
78
+
79
+ var key = JSON.stringify([locString, opts]);
80
+ var dtf = intlDTCache[key];
81
+
82
+ if (!dtf) {
83
+ dtf = new Intl.DateTimeFormat(locString, opts);
84
+ intlDTCache[key] = dtf;
85
+ }
86
+
87
+ return dtf;
88
+ };
89
+ var addToDate = function addToDate(date, quantity, scale) {
90
+ var newDate = new Date(date.getFullYear() + (scale === "year" ? quantity : 0), date.getMonth() + (scale === "month" ? quantity : 0), date.getDate() + (scale === "day" ? quantity : 0), date.getHours() + (scale === "hour" ? quantity : 0), date.getMinutes() + (scale === "minute" ? quantity : 0), date.getSeconds() + (scale === "second" ? quantity : 0), date.getMilliseconds() + (scale === "millisecond" ? quantity : 0));
91
+ return newDate;
92
+ };
93
+ var startOfDate = function startOfDate(date, scale) {
94
+ var scores = ["millisecond", "second", "minute", "hour", "day", "month", "year"];
95
+
96
+ var shouldReset = function shouldReset(_scale) {
97
+ var maxScore = scores.indexOf(scale);
98
+ return scores.indexOf(_scale) <= maxScore;
99
+ };
100
+
101
+ var newDate = new Date(date.getFullYear(), shouldReset("year") ? 0 : date.getMonth(), shouldReset("month") ? 1 : date.getDate(), shouldReset("day") ? 0 : date.getHours(), shouldReset("hour") ? 0 : date.getMinutes(), shouldReset("minute") ? 0 : date.getSeconds(), shouldReset("second") ? 0 : date.getMilliseconds());
102
+ return newDate;
103
+ };
104
+ var ganttDateRange = function ganttDateRange(tasks, viewMode, preStepsCount) {
105
+ var newStartDate = tasks[0].start;
106
+ var newEndDate = tasks[0].start;
107
+
108
+ for (var _iterator = _createForOfIteratorHelperLoose(tasks), _step; !(_step = _iterator()).done;) {
109
+ var task = _step.value;
110
+
111
+ if (task.start < newStartDate) {
112
+ newStartDate = task.start;
113
+ }
114
+
115
+ if (task.end > newEndDate) {
116
+ newEndDate = task.end;
117
+ }
118
+ }
119
+
120
+ switch (viewMode) {
121
+ case exports.ViewMode.Year:
122
+ newStartDate = addToDate(newStartDate, -1, "year");
123
+ newStartDate = startOfDate(newStartDate, "year");
124
+ newEndDate = addToDate(newEndDate, 1, "year");
125
+ newEndDate = startOfDate(newEndDate, "year");
126
+ break;
127
+
128
+ case exports.ViewMode.QuarterYear:
129
+ newStartDate = addToDate(newStartDate, -3, "month");
130
+ newStartDate = startOfDate(newStartDate, "month");
131
+ newEndDate = addToDate(newEndDate, 3, "year");
132
+ newEndDate = startOfDate(newEndDate, "year");
133
+ break;
134
+
135
+ case exports.ViewMode.Month:
136
+ newStartDate = addToDate(newStartDate, -1 * preStepsCount, "month");
137
+ newStartDate = startOfDate(newStartDate, "month");
138
+ newEndDate = addToDate(newEndDate, 1, "year");
139
+ newEndDate = startOfDate(newEndDate, "year");
140
+ break;
141
+
142
+ case exports.ViewMode.Week:
143
+ newStartDate = startOfDate(newStartDate, "day");
144
+ newStartDate = addToDate(getMonday(newStartDate), -7 * preStepsCount, "day");
145
+ newEndDate = startOfDate(newEndDate, "day");
146
+ newEndDate = addToDate(newEndDate, 1.5, "month");
147
+ break;
148
+
149
+ case exports.ViewMode.Day:
150
+ newStartDate = startOfDate(newStartDate, "day");
151
+ newStartDate = addToDate(newStartDate, -1 * preStepsCount, "day");
152
+ newEndDate = startOfDate(newEndDate, "day");
153
+ newEndDate = addToDate(newEndDate, 19, "day");
154
+ break;
155
+
156
+ case exports.ViewMode.QuarterDay:
157
+ newStartDate = startOfDate(newStartDate, "day");
158
+ newStartDate = addToDate(newStartDate, -1 * preStepsCount, "day");
159
+ newEndDate = startOfDate(newEndDate, "day");
160
+ newEndDate = addToDate(newEndDate, 66, "hour");
161
+ break;
162
+
163
+ case exports.ViewMode.HalfDay:
164
+ newStartDate = startOfDate(newStartDate, "day");
165
+ newStartDate = addToDate(newStartDate, -1 * preStepsCount, "day");
166
+ newEndDate = startOfDate(newEndDate, "day");
167
+ newEndDate = addToDate(newEndDate, 108, "hour");
168
+ break;
169
+
170
+ case exports.ViewMode.Hour:
171
+ newStartDate = startOfDate(newStartDate, "hour");
172
+ newStartDate = addToDate(newStartDate, -1 * preStepsCount, "hour");
173
+ newEndDate = startOfDate(newEndDate, "day");
174
+ newEndDate = addToDate(newEndDate, 1, "day");
175
+ break;
176
+ }
177
+
178
+ return [newStartDate, newEndDate];
179
+ };
180
+ var seedDates = function seedDates(startDate, endDate, viewMode) {
181
+ var currentDate = new Date(startDate);
182
+ var dates = [currentDate];
183
+
184
+ while (currentDate < endDate) {
185
+ switch (viewMode) {
186
+ case exports.ViewMode.Year:
187
+ currentDate = addToDate(currentDate, 1, "year");
188
+ break;
189
+
190
+ case exports.ViewMode.QuarterYear:
191
+ currentDate = addToDate(currentDate, 3, "month");
192
+ break;
193
+
194
+ case exports.ViewMode.Month:
195
+ currentDate = addToDate(currentDate, 1, "month");
196
+ break;
197
+
198
+ case exports.ViewMode.Week:
199
+ currentDate = addToDate(currentDate, 7, "day");
200
+ break;
201
+
202
+ case exports.ViewMode.Day:
203
+ currentDate = addToDate(currentDate, 1, "day");
204
+ break;
205
+
206
+ case exports.ViewMode.HalfDay:
207
+ currentDate = addToDate(currentDate, 12, "hour");
208
+ break;
209
+
210
+ case exports.ViewMode.QuarterDay:
211
+ currentDate = addToDate(currentDate, 6, "hour");
212
+ break;
213
+
214
+ case exports.ViewMode.Hour:
215
+ currentDate = addToDate(currentDate, 1, "hour");
216
+ break;
217
+ }
218
+
219
+ dates.push(currentDate);
220
+ }
221
+
222
+ return dates;
223
+ };
224
+ var getLocaleMonth = function getLocaleMonth(date, locale) {
225
+ var bottomValue = getCachedDateTimeFormat(locale, {
226
+ month: "long"
227
+ }).format(date);
228
+ bottomValue = bottomValue.replace(bottomValue[0], bottomValue[0].toLocaleUpperCase());
229
+ return bottomValue;
230
+ };
231
+ var getLocalDayOfWeek = function getLocalDayOfWeek(date, locale, format) {
232
+ var bottomValue = getCachedDateTimeFormat(locale, {
233
+ weekday: format
234
+ }).format(date);
235
+ bottomValue = bottomValue.replace(bottomValue[0], bottomValue[0].toLocaleUpperCase());
236
+ return bottomValue;
237
+ };
238
+
239
+ var getMonday = function getMonday(date) {
240
+ var day = date.getDay();
241
+ var diff = date.getDate() - day + (day === 0 ? -6 : 1);
242
+ return new Date(date.setDate(diff));
243
+ };
244
+
245
+ var getWeekNumberISO8601 = function getWeekNumberISO8601(date) {
246
+ var tmpDate = new Date(date.valueOf());
247
+ var dayNumber = (tmpDate.getDay() + 6) % 7;
248
+ tmpDate.setDate(tmpDate.getDate() - dayNumber + 3);
249
+ var firstThursday = tmpDate.valueOf();
250
+ tmpDate.setMonth(0, 1);
251
+
252
+ if (tmpDate.getDay() !== 4) {
253
+ tmpDate.setMonth(0, 1 + (4 - tmpDate.getDay() + 7) % 7);
254
+ }
255
+
256
+ var weekNumber = (1 + Math.ceil((firstThursday - tmpDate.valueOf()) / 604800000)).toString();
257
+
258
+ if (weekNumber.length === 1) {
259
+ return "0" + weekNumber;
260
+ } else {
261
+ return weekNumber;
262
+ }
263
+ };
264
+ var getDaysInMonth = function getDaysInMonth(month, year) {
265
+ return new Date(year, month + 1, 0).getDate();
266
+ };
267
+
268
+ var styles = {"ganttTable":"_3_ygE","ganttTable_Header":"_1nBOt","ganttTable_HeaderSeparator":"_2eZzQ","ganttTable_HeaderItem":"_WuQ0f"};
269
+
270
+ var TaskListHeaderDefault = function TaskListHeaderDefault(_ref) {
271
+ var headerHeight = _ref.headerHeight,
272
+ fontFamily = _ref.fontFamily,
273
+ fontSize = _ref.fontSize,
274
+ rowWidth = _ref.rowWidth;
275
+ return React__default.createElement("div", {
276
+ className: styles.ganttTable,
277
+ style: {
278
+ fontFamily: fontFamily,
279
+ fontSize: fontSize
280
+ }
281
+ }, React__default.createElement("div", {
282
+ className: styles.ganttTable_Header,
283
+ style: {
284
+ height: headerHeight - 2
285
+ }
286
+ }, React__default.createElement("div", {
287
+ className: styles.ganttTable_HeaderItem,
288
+ style: {
289
+ minWidth: rowWidth
290
+ }
291
+ }, "\xA0Name"), React__default.createElement("div", {
292
+ className: styles.ganttTable_HeaderSeparator,
293
+ style: {
294
+ height: headerHeight * 0.5,
295
+ marginTop: headerHeight * 0.2
296
+ }
297
+ }), React__default.createElement("div", {
298
+ className: styles.ganttTable_HeaderItem,
299
+ style: {
300
+ minWidth: rowWidth
301
+ }
302
+ }, "\xA0From"), React__default.createElement("div", {
303
+ className: styles.ganttTable_HeaderSeparator,
304
+ style: {
305
+ height: headerHeight * 0.5,
306
+ marginTop: headerHeight * 0.25
307
+ }
308
+ }), React__default.createElement("div", {
309
+ className: styles.ganttTable_HeaderItem,
310
+ style: {
311
+ minWidth: rowWidth
312
+ }
313
+ }, "\xA0To")));
314
+ };
315
+
316
+ var styles$1 = {"taskListWrapper":"_3ZbQT","taskListTableRow":"_34SS0","taskListCell":"_3lLk3","taskListNameWrapper":"_nI1Xw","taskListExpander":"_2QjE6","taskListEmptyExpander":"_2TfEi"};
317
+
318
+ var localeDateStringCache = {};
319
+
320
+ var toLocaleDateStringFactory = function toLocaleDateStringFactory(locale) {
321
+ return function (date, dateTimeOptions) {
322
+ var key = date.toString();
323
+ var lds = localeDateStringCache[key];
324
+
325
+ if (!lds) {
326
+ lds = date.toLocaleDateString(locale, dateTimeOptions);
327
+ localeDateStringCache[key] = lds;
328
+ }
329
+
330
+ return lds;
331
+ };
332
+ };
333
+
334
+ var dateTimeOptions = {
335
+ weekday: "short",
336
+ year: "numeric",
337
+ month: "long",
338
+ day: "numeric"
339
+ };
340
+ var TaskListTableDefault = function TaskListTableDefault(_ref) {
341
+ var rowHeight = _ref.rowHeight,
342
+ rowWidth = _ref.rowWidth,
343
+ tasks = _ref.tasks,
344
+ fontFamily = _ref.fontFamily,
345
+ fontSize = _ref.fontSize,
346
+ locale = _ref.locale,
347
+ onExpanderClick = _ref.onExpanderClick;
348
+ var toLocaleDateString = React.useMemo(function () {
349
+ return toLocaleDateStringFactory(locale);
350
+ }, [locale]);
351
+ return React__default.createElement("div", {
352
+ className: styles$1.taskListWrapper,
353
+ style: {
354
+ fontFamily: fontFamily,
355
+ fontSize: fontSize
356
+ }
357
+ }, tasks.map(function (t) {
358
+ var expanderSymbol = "";
359
+
360
+ if (t.hideChildren === false) {
361
+ expanderSymbol = "▼";
362
+ } else if (t.hideChildren === true) {
363
+ expanderSymbol = "▶";
364
+ }
365
+
366
+ return React__default.createElement("div", {
367
+ className: styles$1.taskListTableRow,
368
+ style: {
369
+ height: rowHeight
370
+ },
371
+ key: t.id + "row"
372
+ }, React__default.createElement("div", {
373
+ className: styles$1.taskListCell,
374
+ style: {
375
+ minWidth: rowWidth,
376
+ maxWidth: rowWidth
377
+ },
378
+ title: t.name
379
+ }, React__default.createElement("div", {
380
+ className: styles$1.taskListNameWrapper
381
+ }, React__default.createElement("div", {
382
+ className: expanderSymbol ? styles$1.taskListExpander : styles$1.taskListEmptyExpander,
383
+ onClick: function onClick() {
384
+ return onExpanderClick(t);
385
+ }
386
+ }, expanderSymbol), React__default.createElement("div", null, t.name))), React__default.createElement("div", {
387
+ className: styles$1.taskListCell,
388
+ style: {
389
+ minWidth: rowWidth,
390
+ maxWidth: rowWidth
391
+ }
392
+ }, "\xA0", toLocaleDateString(t.start, dateTimeOptions)), React__default.createElement("div", {
393
+ className: styles$1.taskListCell,
394
+ style: {
395
+ minWidth: rowWidth,
396
+ maxWidth: rowWidth
397
+ }
398
+ }, "\xA0", toLocaleDateString(t.end, dateTimeOptions)));
399
+ }));
400
+ };
401
+
402
+ var styles$2 = {"tooltipDefaultContainer":"_3T42e","tooltipDefaultContainerParagraph":"_29NTg","tooltipDetailsContainer":"_25P-K","tooltipDetailsContainerHidden":"_3gVAq"};
403
+
404
+ var Tooltip = function Tooltip(_ref) {
405
+ var task = _ref.task,
406
+ rowHeight = _ref.rowHeight,
407
+ rtl = _ref.rtl,
408
+ svgContainerHeight = _ref.svgContainerHeight,
409
+ svgContainerWidth = _ref.svgContainerWidth,
410
+ scrollX = _ref.scrollX,
411
+ scrollY = _ref.scrollY,
412
+ arrowIndent = _ref.arrowIndent,
413
+ fontSize = _ref.fontSize,
414
+ fontFamily = _ref.fontFamily,
415
+ headerHeight = _ref.headerHeight,
416
+ taskListWidth = _ref.taskListWidth,
417
+ TooltipContent = _ref.TooltipContent;
418
+ var tooltipRef = React.useRef(null);
419
+
420
+ var _useState = React.useState(0),
421
+ relatedY = _useState[0],
422
+ setRelatedY = _useState[1];
423
+
424
+ var _useState2 = React.useState(0),
425
+ relatedX = _useState2[0],
426
+ setRelatedX = _useState2[1];
427
+
428
+ React.useEffect(function () {
429
+ if (tooltipRef.current) {
430
+ var tooltipHeight = tooltipRef.current.offsetHeight * 1.1;
431
+ var tooltipWidth = tooltipRef.current.offsetWidth * 1.1;
432
+ var newRelatedY = task.index * rowHeight - scrollY + headerHeight;
433
+ var newRelatedX;
434
+
435
+ if (rtl) {
436
+ newRelatedX = task.x1 - arrowIndent * 1.5 - tooltipWidth - scrollX;
437
+
438
+ if (newRelatedX < 0) {
439
+ newRelatedX = task.x2 + arrowIndent * 1.5 - scrollX;
440
+ }
441
+
442
+ var tooltipLeftmostPoint = tooltipWidth + newRelatedX;
443
+
444
+ if (tooltipLeftmostPoint > svgContainerWidth) {
445
+ newRelatedX = svgContainerWidth - tooltipWidth;
446
+ newRelatedY += rowHeight;
447
+ }
448
+ } else {
449
+ newRelatedX = task.x2 + arrowIndent * 1.5 + taskListWidth - scrollX;
450
+
451
+ var _tooltipLeftmostPoint = tooltipWidth + newRelatedX;
452
+
453
+ var fullChartWidth = taskListWidth + svgContainerWidth;
454
+
455
+ if (_tooltipLeftmostPoint > fullChartWidth) {
456
+ newRelatedX = task.x1 + taskListWidth - arrowIndent * 1.5 - scrollX - tooltipWidth;
457
+ }
458
+
459
+ if (newRelatedX < taskListWidth) {
460
+ newRelatedX = svgContainerWidth + taskListWidth - tooltipWidth;
461
+ newRelatedY += rowHeight;
462
+ }
463
+ }
464
+
465
+ var tooltipLowerPoint = tooltipHeight + newRelatedY - scrollY;
466
+
467
+ if (tooltipLowerPoint > svgContainerHeight - scrollY) {
468
+ newRelatedY = svgContainerHeight - tooltipHeight;
469
+ }
470
+
471
+ setRelatedY(newRelatedY);
472
+ setRelatedX(newRelatedX);
473
+ }
474
+ }, [tooltipRef, task, arrowIndent, scrollX, scrollY, headerHeight, taskListWidth, rowHeight, svgContainerHeight, svgContainerWidth, rtl]);
475
+ return React__default.createElement("div", {
476
+ ref: tooltipRef,
477
+ className: relatedX ? styles$2.tooltipDetailsContainer : styles$2.tooltipDetailsContainerHidden,
478
+ style: {
479
+ left: relatedX,
480
+ top: relatedY
481
+ }
482
+ }, React__default.createElement(TooltipContent, {
483
+ task: task,
484
+ fontSize: fontSize,
485
+ fontFamily: fontFamily
486
+ }));
487
+ };
488
+ var StandardTooltipContent = function StandardTooltipContent(_ref2) {
489
+ var task = _ref2.task,
490
+ fontSize = _ref2.fontSize,
491
+ fontFamily = _ref2.fontFamily;
492
+ var style = {
493
+ fontSize: fontSize,
494
+ fontFamily: fontFamily
495
+ };
496
+ return React__default.createElement("div", {
497
+ className: styles$2.tooltipDefaultContainer,
498
+ style: style
499
+ }, React__default.createElement("b", {
500
+ style: {
501
+ fontSize: fontSize + 6
502
+ }
503
+ }, task.name + ": " + task.start.getDate() + "-" + (task.start.getMonth() + 1) + "-" + task.start.getFullYear() + " - " + task.end.getDate() + "-" + (task.end.getMonth() + 1) + "-" + task.end.getFullYear()), task.end.getTime() - task.start.getTime() !== 0 && React__default.createElement("p", {
504
+ className: styles$2.tooltipDefaultContainerParagraph
505
+ }, "Duration: " + ~~((task.end.getTime() - task.start.getTime()) / (1000 * 60 * 60 * 24)) + " day(s)"), React__default.createElement("p", {
506
+ className: styles$2.tooltipDefaultContainerParagraph
507
+ }, !!task.progress && "Progress: " + task.progress + " %"));
508
+ };
509
+
510
+ var styles$3 = {"scroll":"_1eT-t"};
511
+
512
+ var VerticalScroll = function VerticalScroll(_ref) {
513
+ var scroll = _ref.scroll,
514
+ ganttHeight = _ref.ganttHeight,
515
+ ganttFullHeight = _ref.ganttFullHeight,
516
+ headerHeight = _ref.headerHeight,
517
+ rtl = _ref.rtl,
518
+ onScroll = _ref.onScroll;
519
+ var scrollRef = React.useRef(null);
520
+ React.useEffect(function () {
521
+ if (scrollRef.current) {
522
+ scrollRef.current.scrollTop = scroll;
523
+ }
524
+ }, [scroll]);
525
+ return React__default.createElement("div", {
526
+ style: {
527
+ height: ganttHeight,
528
+ marginTop: headerHeight,
529
+ marginLeft: rtl ? "" : "-1rem"
530
+ },
531
+ className: styles$3.scroll,
532
+ onScroll: onScroll,
533
+ ref: scrollRef
534
+ }, React__default.createElement("div", {
535
+ style: {
536
+ height: ganttFullHeight,
537
+ width: 1
538
+ }
539
+ }));
540
+ };
541
+
542
+ var TaskList = function TaskList(_ref) {
543
+ var headerHeight = _ref.headerHeight,
544
+ fontFamily = _ref.fontFamily,
545
+ fontSize = _ref.fontSize,
546
+ rowWidth = _ref.rowWidth,
547
+ rowHeight = _ref.rowHeight,
548
+ scrollY = _ref.scrollY,
549
+ tasks = _ref.tasks,
550
+ selectedTask = _ref.selectedTask,
551
+ setSelectedTask = _ref.setSelectedTask,
552
+ onExpanderClick = _ref.onExpanderClick,
553
+ locale = _ref.locale,
554
+ ganttHeight = _ref.ganttHeight,
555
+ taskListRef = _ref.taskListRef,
556
+ horizontalContainerClass = _ref.horizontalContainerClass,
557
+ TaskListHeader = _ref.TaskListHeader,
558
+ TaskListTable = _ref.TaskListTable;
559
+ var horizontalContainerRef = React.useRef(null);
560
+ React.useEffect(function () {
561
+ if (horizontalContainerRef.current) {
562
+ horizontalContainerRef.current.scrollTop = scrollY;
563
+ }
564
+ }, [scrollY]);
565
+ var headerProps = {
566
+ headerHeight: headerHeight,
567
+ fontFamily: fontFamily,
568
+ fontSize: fontSize,
569
+ rowWidth: rowWidth
570
+ };
571
+ var selectedTaskId = selectedTask ? selectedTask.id : "";
572
+ var tableProps = {
573
+ rowHeight: rowHeight,
574
+ rowWidth: rowWidth,
575
+ fontFamily: fontFamily,
576
+ fontSize: fontSize,
577
+ tasks: tasks,
578
+ locale: locale,
579
+ selectedTaskId: selectedTaskId,
580
+ setSelectedTask: setSelectedTask,
581
+ onExpanderClick: onExpanderClick
582
+ };
583
+ return React__default.createElement("div", {
584
+ ref: taskListRef
585
+ }, React__default.createElement(TaskListHeader, Object.assign({}, headerProps)), React__default.createElement("div", {
586
+ ref: horizontalContainerRef,
587
+ className: horizontalContainerClass,
588
+ style: ganttHeight ? {
589
+ height: ganttHeight
590
+ } : {}
591
+ }, React__default.createElement(TaskListTable, Object.assign({}, tableProps))));
592
+ };
593
+
594
+ var styles$4 = {"gridRow":"_2dZTy","gridRowLine":"_3rUKi","gridTick":"_RuwuK"};
595
+
596
+ var GridBody = function GridBody(_ref) {
597
+ var tasks = _ref.tasks,
598
+ dates = _ref.dates,
599
+ rowHeight = _ref.rowHeight,
600
+ svgWidth = _ref.svgWidth,
601
+ columnWidth = _ref.columnWidth,
602
+ todayColor = _ref.todayColor,
603
+ rtl = _ref.rtl;
604
+ var y = 0;
605
+ var gridRows = [];
606
+ var rowLines = [React__default.createElement("line", {
607
+ key: "RowLineFirst",
608
+ x: "0",
609
+ y1: 0,
610
+ x2: svgWidth,
611
+ y2: 0,
612
+ className: styles$4.gridRowLine
613
+ })];
614
+
615
+ for (var _iterator = _createForOfIteratorHelperLoose(tasks), _step; !(_step = _iterator()).done;) {
616
+ var task = _step.value;
617
+ gridRows.push(React__default.createElement("rect", {
618
+ key: "Row" + task.id,
619
+ x: "0",
620
+ y: y,
621
+ width: svgWidth,
622
+ height: rowHeight,
623
+ className: styles$4.gridRow
624
+ }));
625
+ rowLines.push(React__default.createElement("line", {
626
+ key: "RowLine" + task.id,
627
+ x: "0",
628
+ y1: y + rowHeight,
629
+ x2: svgWidth,
630
+ y2: y + rowHeight,
631
+ className: styles$4.gridRowLine
632
+ }));
633
+ y += rowHeight;
634
+ }
635
+
636
+ var now = new Date();
637
+ var tickX = 0;
638
+ var ticks = [];
639
+ var today = React__default.createElement("rect", null);
640
+
641
+ for (var i = 0; i < dates.length; i++) {
642
+ var date = dates[i];
643
+ ticks.push(React__default.createElement("line", {
644
+ key: date.getTime(),
645
+ x1: tickX,
646
+ y1: 0,
647
+ x2: tickX,
648
+ y2: y,
649
+ className: styles$4.gridTick
650
+ }));
651
+
652
+ if (i + 1 !== dates.length && date.getTime() < now.getTime() && dates[i + 1].getTime() >= now.getTime() || i !== 0 && i + 1 === dates.length && date.getTime() < now.getTime() && addToDate(date, date.getTime() - dates[i - 1].getTime(), "millisecond").getTime() >= now.getTime()) {
653
+ today = React__default.createElement("rect", {
654
+ x: tickX,
655
+ y: 0,
656
+ width: columnWidth,
657
+ height: y,
658
+ fill: todayColor
659
+ });
660
+ }
661
+
662
+ if (rtl && i + 1 !== dates.length && date.getTime() >= now.getTime() && dates[i + 1].getTime() < now.getTime()) {
663
+ today = React__default.createElement("rect", {
664
+ x: tickX + columnWidth,
665
+ y: 0,
666
+ width: columnWidth,
667
+ height: y,
668
+ fill: todayColor
669
+ });
670
+ }
671
+
672
+ tickX += columnWidth;
673
+ }
674
+
675
+ return React__default.createElement("g", {
676
+ className: "gridBody"
677
+ }, React__default.createElement("g", {
678
+ className: "rows"
679
+ }, gridRows), React__default.createElement("g", {
680
+ className: "rowLines"
681
+ }, rowLines), React__default.createElement("g", {
682
+ className: "ticks"
683
+ }, ticks), React__default.createElement("g", {
684
+ className: "today"
685
+ }, today));
686
+ };
687
+
688
+ var Grid = function Grid(props) {
689
+ return React__default.createElement("g", {
690
+ className: "grid"
691
+ }, React__default.createElement(GridBody, Object.assign({}, props)));
692
+ };
693
+
694
+ var styles$5 = {"calendarBottomText":"_9w8d5","calendarTopTick":"_1rLuZ","calendarTopText":"_2q1Kt","calendarHeader":"_35nLX"};
695
+
696
+ var TopPartOfCalendar = function TopPartOfCalendar(_ref) {
697
+ var value = _ref.value,
698
+ x1Line = _ref.x1Line,
699
+ y1Line = _ref.y1Line,
700
+ y2Line = _ref.y2Line,
701
+ xText = _ref.xText,
702
+ yText = _ref.yText;
703
+ return React__default.createElement("g", {
704
+ className: "calendarTop"
705
+ }, React__default.createElement("line", {
706
+ x1: x1Line,
707
+ y1: y1Line,
708
+ x2: x1Line,
709
+ y2: y2Line,
710
+ className: styles$5.calendarTopTick,
711
+ key: value + "line"
712
+ }), React__default.createElement("text", {
713
+ key: value + "text",
714
+ y: yText,
715
+ x: xText,
716
+ className: styles$5.calendarTopText
717
+ }, value));
718
+ };
719
+
720
+ var Calendar = function Calendar(_ref) {
721
+ var dateSetup = _ref.dateSetup,
722
+ locale = _ref.locale,
723
+ viewMode = _ref.viewMode,
724
+ rtl = _ref.rtl,
725
+ headerHeight = _ref.headerHeight,
726
+ columnWidth = _ref.columnWidth,
727
+ fontFamily = _ref.fontFamily,
728
+ fontSize = _ref.fontSize;
729
+
730
+ var getCalendarValuesForYear = function getCalendarValuesForYear() {
731
+ var topValues = [];
732
+ var bottomValues = [];
733
+ var topDefaultHeight = headerHeight * 0.5;
734
+
735
+ for (var i = 0; i < dateSetup.dates.length; i++) {
736
+ var date = dateSetup.dates[i];
737
+ var bottomValue = date.getFullYear();
738
+ bottomValues.push(React__default.createElement("text", {
739
+ key: date.getTime(),
740
+ y: headerHeight * 0.8,
741
+ x: columnWidth * i + columnWidth * 0.5,
742
+ className: styles$5.calendarBottomText
743
+ }, bottomValue));
744
+
745
+ if (i === 0 || date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()) {
746
+ var topValue = date.getFullYear().toString();
747
+ var xText = void 0;
748
+
749
+ if (rtl) {
750
+ xText = (6 + i + date.getFullYear() + 1) * columnWidth;
751
+ } else {
752
+ xText = (6 + i - date.getFullYear()) * columnWidth;
753
+ }
754
+
755
+ topValues.push(React__default.createElement(TopPartOfCalendar, {
756
+ key: topValue,
757
+ value: topValue,
758
+ x1Line: columnWidth * i,
759
+ y1Line: 0,
760
+ y2Line: headerHeight,
761
+ xText: xText,
762
+ yText: topDefaultHeight * 0.9
763
+ }));
764
+ }
765
+ }
766
+
767
+ return [topValues, bottomValues];
768
+ };
769
+
770
+ var getCalendarValuesForQuarterYear = function getCalendarValuesForQuarterYear() {
771
+ var topValues = [];
772
+ var bottomValues = [];
773
+ var topDefaultHeight = headerHeight * 0.5;
774
+
775
+ for (var i = 0; i < dateSetup.dates.length; i++) {
776
+ var date = dateSetup.dates[i];
777
+ var quarter = "Q" + Math.floor((date.getMonth() + 3) / 3);
778
+ bottomValues.push(React__default.createElement("text", {
779
+ key: date.getTime(),
780
+ y: headerHeight * 0.8,
781
+ x: columnWidth * i + columnWidth * 0.5,
782
+ className: styles$5.calendarBottomText
783
+ }, quarter));
784
+
785
+ if (i === 0 || date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()) {
786
+ var topValue = date.getFullYear().toString();
787
+ var xText = void 0;
788
+
789
+ if (rtl) {
790
+ xText = (6 + i + date.getMonth() + 1) * columnWidth;
791
+ } else {
792
+ xText = (6 + i - date.getMonth()) * columnWidth;
793
+ }
794
+
795
+ topValues.push(React__default.createElement(TopPartOfCalendar, {
796
+ key: topValue,
797
+ value: topValue,
798
+ x1Line: columnWidth * i,
799
+ y1Line: 0,
800
+ y2Line: topDefaultHeight,
801
+ xText: Math.abs(xText),
802
+ yText: topDefaultHeight * 0.9
803
+ }));
804
+ }
805
+ }
806
+
807
+ return [topValues, bottomValues];
808
+ };
809
+
810
+ var getCalendarValuesForMonth = function getCalendarValuesForMonth() {
811
+ var topValues = [];
812
+ var bottomValues = [];
813
+ var topDefaultHeight = headerHeight * 0.5;
814
+
815
+ for (var i = 0; i < dateSetup.dates.length; i++) {
816
+ var date = dateSetup.dates[i];
817
+ var bottomValue = getLocaleMonth(date, locale);
818
+ bottomValues.push(React__default.createElement("text", {
819
+ key: bottomValue + date.getFullYear(),
820
+ y: headerHeight * 0.8,
821
+ x: columnWidth * i + columnWidth * 0.5,
822
+ className: styles$5.calendarBottomText
823
+ }, bottomValue));
824
+
825
+ if (i === 0 || date.getFullYear() !== dateSetup.dates[i - 1].getFullYear()) {
826
+ var topValue = date.getFullYear().toString();
827
+ var xText = void 0;
828
+
829
+ if (rtl) {
830
+ xText = (6 + i + date.getMonth() + 1) * columnWidth;
831
+ } else {
832
+ xText = (6 + i - date.getMonth()) * columnWidth;
833
+ }
834
+
835
+ topValues.push(React__default.createElement(TopPartOfCalendar, {
836
+ key: topValue,
837
+ value: topValue,
838
+ x1Line: columnWidth * i,
839
+ y1Line: 0,
840
+ y2Line: topDefaultHeight,
841
+ xText: xText,
842
+ yText: topDefaultHeight * 0.9
843
+ }));
844
+ }
845
+ }
846
+
847
+ return [topValues, bottomValues];
848
+ };
849
+
850
+ var getCalendarValuesForWeek = function getCalendarValuesForWeek() {
851
+ var topValues = [];
852
+ var bottomValues = [];
853
+ var weeksCount = 1;
854
+ var topDefaultHeight = headerHeight * 0.5;
855
+ var dates = dateSetup.dates;
856
+
857
+ for (var i = dates.length - 1; i >= 0; i--) {
858
+ var date = dates[i];
859
+ var topValue = "";
860
+
861
+ if (i === 0 || date.getMonth() !== dates[i - 1].getMonth()) {
862
+ topValue = getLocaleMonth(date, locale) + ", " + date.getFullYear();
863
+ }
864
+
865
+ var bottomValue = "W" + getWeekNumberISO8601(date);
866
+ bottomValues.push(React__default.createElement("text", {
867
+ key: date.getTime(),
868
+ y: headerHeight * 0.8,
869
+ x: columnWidth * (i + +rtl),
870
+ className: styles$5.calendarBottomText
871
+ }, bottomValue));
872
+
873
+ if (topValue) {
874
+ if (i !== dates.length - 1) {
875
+ topValues.push(React__default.createElement(TopPartOfCalendar, {
876
+ key: topValue,
877
+ value: topValue,
878
+ x1Line: columnWidth * i + weeksCount * columnWidth,
879
+ y1Line: 0,
880
+ y2Line: topDefaultHeight,
881
+ xText: columnWidth * i + columnWidth * weeksCount * 0.5,
882
+ yText: topDefaultHeight * 0.9
883
+ }));
884
+ }
885
+
886
+ weeksCount = 0;
887
+ }
888
+
889
+ weeksCount++;
890
+ }
891
+
892
+ return [topValues, bottomValues];
893
+ };
894
+
895
+ var getCalendarValuesForDay = function getCalendarValuesForDay() {
896
+ var topValues = [];
897
+ var bottomValues = [];
898
+ var topDefaultHeight = headerHeight * 0.5;
899
+ var dates = dateSetup.dates;
900
+
901
+ for (var i = 0; i < dates.length; i++) {
902
+ var date = dates[i];
903
+ var bottomValue = getLocalDayOfWeek(date, locale, "short") + ", " + date.getDate().toString();
904
+ bottomValues.push(React__default.createElement("text", {
905
+ key: date.getTime(),
906
+ y: headerHeight * 0.8,
907
+ x: columnWidth * i + columnWidth * 0.5,
908
+ className: styles$5.calendarBottomText
909
+ }, bottomValue));
910
+
911
+ if (i + 1 !== dates.length && date.getMonth() !== dates[i + 1].getMonth()) {
912
+ var topValue = getLocaleMonth(date, locale);
913
+ topValues.push(React__default.createElement(TopPartOfCalendar, {
914
+ key: topValue + date.getFullYear(),
915
+ value: topValue,
916
+ x1Line: columnWidth * (i + 1),
917
+ y1Line: 0,
918
+ y2Line: topDefaultHeight,
919
+ xText: columnWidth * (i + 1) - getDaysInMonth(date.getMonth(), date.getFullYear()) * columnWidth * 0.5,
920
+ yText: topDefaultHeight * 0.9
921
+ }));
922
+ }
923
+ }
924
+
925
+ return [topValues, bottomValues];
926
+ };
927
+
928
+ var getCalendarValuesForPartOfDay = function getCalendarValuesForPartOfDay() {
929
+ var topValues = [];
930
+ var bottomValues = [];
931
+ var ticks = viewMode === exports.ViewMode.HalfDay ? 2 : 4;
932
+ var topDefaultHeight = headerHeight * 0.5;
933
+ var dates = dateSetup.dates;
934
+
935
+ for (var i = 0; i < dates.length; i++) {
936
+ var date = dates[i];
937
+ var bottomValue = getCachedDateTimeFormat(locale, {
938
+ hour: "numeric"
939
+ }).format(date);
940
+ bottomValues.push(React__default.createElement("text", {
941
+ key: date.getTime(),
942
+ y: headerHeight * 0.8,
943
+ x: columnWidth * (i + +rtl),
944
+ className: styles$5.calendarBottomText,
945
+ fontFamily: fontFamily
946
+ }, bottomValue));
947
+
948
+ if (i === 0 || date.getDate() !== dates[i - 1].getDate()) {
949
+ var topValue = getLocalDayOfWeek(date, locale, "short") + ", " + date.getDate() + " " + getLocaleMonth(date, locale);
950
+ topValues.push(React__default.createElement(TopPartOfCalendar, {
951
+ key: topValue + date.getFullYear(),
952
+ value: topValue,
953
+ x1Line: columnWidth * i + ticks * columnWidth,
954
+ y1Line: 0,
955
+ y2Line: topDefaultHeight,
956
+ xText: columnWidth * i + ticks * columnWidth * 0.5,
957
+ yText: topDefaultHeight * 0.9
958
+ }));
959
+ }
960
+ }
961
+
962
+ return [topValues, bottomValues];
963
+ };
964
+
965
+ var getCalendarValuesForHour = function getCalendarValuesForHour() {
966
+ var topValues = [];
967
+ var bottomValues = [];
968
+ var topDefaultHeight = headerHeight * 0.5;
969
+ var dates = dateSetup.dates;
970
+
971
+ for (var i = 0; i < dates.length; i++) {
972
+ var date = dates[i];
973
+ var bottomValue = getCachedDateTimeFormat(locale, {
974
+ hour: "numeric"
975
+ }).format(date);
976
+ bottomValues.push(React__default.createElement("text", {
977
+ key: date.getTime(),
978
+ y: headerHeight * 0.8,
979
+ x: columnWidth * (i + +rtl),
980
+ className: styles$5.calendarBottomText,
981
+ fontFamily: fontFamily
982
+ }, bottomValue));
983
+
984
+ if (i !== 0 && date.getDate() !== dates[i - 1].getDate()) {
985
+ var displayDate = dates[i - 1];
986
+ var topValue = getLocalDayOfWeek(displayDate, locale, "long") + ", " + displayDate.getDate() + " " + getLocaleMonth(displayDate, locale);
987
+ var topPosition = (date.getHours() - 24) / 2;
988
+ topValues.push(React__default.createElement(TopPartOfCalendar, {
989
+ key: topValue + displayDate.getFullYear(),
990
+ value: topValue,
991
+ x1Line: columnWidth * i,
992
+ y1Line: 0,
993
+ y2Line: topDefaultHeight,
994
+ xText: columnWidth * (i + topPosition),
995
+ yText: topDefaultHeight * 0.9
996
+ }));
997
+ }
998
+ }
999
+
1000
+ return [topValues, bottomValues];
1001
+ };
1002
+
1003
+ var topValues = [];
1004
+ var bottomValues = [];
1005
+
1006
+ switch (dateSetup.viewMode) {
1007
+ case exports.ViewMode.Year:
1008
+ var _getCalendarValuesFor = getCalendarValuesForYear();
1009
+
1010
+ topValues = _getCalendarValuesFor[0];
1011
+ bottomValues = _getCalendarValuesFor[1];
1012
+ break;
1013
+
1014
+ case exports.ViewMode.QuarterYear:
1015
+ var _getCalendarValuesFor2 = getCalendarValuesForQuarterYear();
1016
+
1017
+ topValues = _getCalendarValuesFor2[0];
1018
+ bottomValues = _getCalendarValuesFor2[1];
1019
+ break;
1020
+
1021
+ case exports.ViewMode.Month:
1022
+ var _getCalendarValuesFor3 = getCalendarValuesForMonth();
1023
+
1024
+ topValues = _getCalendarValuesFor3[0];
1025
+ bottomValues = _getCalendarValuesFor3[1];
1026
+ break;
1027
+
1028
+ case exports.ViewMode.Week:
1029
+ var _getCalendarValuesFor4 = getCalendarValuesForWeek();
1030
+
1031
+ topValues = _getCalendarValuesFor4[0];
1032
+ bottomValues = _getCalendarValuesFor4[1];
1033
+ break;
1034
+
1035
+ case exports.ViewMode.Day:
1036
+ var _getCalendarValuesFor5 = getCalendarValuesForDay();
1037
+
1038
+ topValues = _getCalendarValuesFor5[0];
1039
+ bottomValues = _getCalendarValuesFor5[1];
1040
+ break;
1041
+
1042
+ case exports.ViewMode.QuarterDay:
1043
+ case exports.ViewMode.HalfDay:
1044
+ var _getCalendarValuesFor6 = getCalendarValuesForPartOfDay();
1045
+
1046
+ topValues = _getCalendarValuesFor6[0];
1047
+ bottomValues = _getCalendarValuesFor6[1];
1048
+ break;
1049
+
1050
+ case exports.ViewMode.Hour:
1051
+ var _getCalendarValuesFor7 = getCalendarValuesForHour();
1052
+
1053
+ topValues = _getCalendarValuesFor7[0];
1054
+ bottomValues = _getCalendarValuesFor7[1];
1055
+ }
1056
+
1057
+ return React__default.createElement("g", {
1058
+ className: "calendar",
1059
+ fontSize: fontSize,
1060
+ fontFamily: fontFamily
1061
+ }, React__default.createElement("rect", {
1062
+ x: 0,
1063
+ y: 0,
1064
+ width: columnWidth * dateSetup.dates.length,
1065
+ height: headerHeight,
1066
+ className: styles$5.calendarHeader
1067
+ }), bottomValues, " ", topValues);
1068
+ };
1069
+
1070
+ // A type of promise-like that resolves synchronously and supports only one observer
1071
+
1072
+ const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.iterator || (Symbol.iterator = Symbol("Symbol.iterator"))) : "@@iterator";
1073
+
1074
+ const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== "undefined" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol("Symbol.asyncIterator"))) : "@@asyncIterator";
1075
+
1076
+ // Asynchronously call a function and send errors to recovery continuation
1077
+ function _catch(body, recover) {
1078
+ try {
1079
+ var result = body();
1080
+ } catch(e) {
1081
+ return recover(e);
1082
+ }
1083
+ if (result && result.then) {
1084
+ return result.then(void 0, recover);
1085
+ }
1086
+ return result;
1087
+ }
1088
+
1089
+ var Arrow = function Arrow(_ref) {
1090
+ var taskFrom = _ref.taskFrom,
1091
+ taskTo = _ref.taskTo,
1092
+ rowHeight = _ref.rowHeight,
1093
+ taskHeight = _ref.taskHeight,
1094
+ arrowIndent = _ref.arrowIndent,
1095
+ rtl = _ref.rtl;
1096
+ var path;
1097
+ var trianglePoints;
1098
+
1099
+ if (rtl) {
1100
+ var _drownPathAndTriangle = drownPathAndTriangleRTL(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent);
1101
+
1102
+ path = _drownPathAndTriangle[0];
1103
+ trianglePoints = _drownPathAndTriangle[1];
1104
+ } else {
1105
+ var _drownPathAndTriangle2 = drownPathAndTriangle(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent);
1106
+
1107
+ path = _drownPathAndTriangle2[0];
1108
+ trianglePoints = _drownPathAndTriangle2[1];
1109
+ }
1110
+
1111
+ return React__default.createElement("g", {
1112
+ className: "arrow"
1113
+ }, React__default.createElement("path", {
1114
+ strokeWidth: "1.5",
1115
+ d: path,
1116
+ fill: "none"
1117
+ }), React__default.createElement("polygon", {
1118
+ points: trianglePoints
1119
+ }));
1120
+ };
1121
+
1122
+ var drownPathAndTriangle = function drownPathAndTriangle(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent) {
1123
+ var indexCompare = taskFrom.index > taskTo.index ? -1 : 1;
1124
+ var taskToEndPosition = taskTo.y + taskHeight / 2;
1125
+ var taskFromEndPosition = taskFrom.x2 + arrowIndent * 2;
1126
+ var taskFromHorizontalOffsetValue = taskFromEndPosition < taskTo.x1 ? "" : "H " + (taskTo.x1 - arrowIndent);
1127
+ var taskToHorizontalOffsetValue = taskFromEndPosition > taskTo.x1 ? arrowIndent : taskTo.x1 - taskFrom.x2 - arrowIndent;
1128
+ var path = "M " + taskFrom.x2 + " " + (taskFrom.y + taskHeight / 2) + " \n h " + arrowIndent + " \n v " + indexCompare * rowHeight / 2 + " \n " + taskFromHorizontalOffsetValue + "\n V " + taskToEndPosition + " \n h " + taskToHorizontalOffsetValue;
1129
+ var trianglePoints = taskTo.x1 + "," + taskToEndPosition + " \n " + (taskTo.x1 - 5) + "," + (taskToEndPosition - 5) + " \n " + (taskTo.x1 - 5) + "," + (taskToEndPosition + 5);
1130
+ return [path, trianglePoints];
1131
+ };
1132
+
1133
+ var drownPathAndTriangleRTL = function drownPathAndTriangleRTL(taskFrom, taskTo, rowHeight, taskHeight, arrowIndent) {
1134
+ var indexCompare = taskFrom.index > taskTo.index ? -1 : 1;
1135
+ var taskToEndPosition = taskTo.y + taskHeight / 2;
1136
+ var taskFromEndPosition = taskFrom.x1 - arrowIndent * 2;
1137
+ var taskFromHorizontalOffsetValue = taskFromEndPosition > taskTo.x2 ? "" : "H " + (taskTo.x2 + arrowIndent);
1138
+ var taskToHorizontalOffsetValue = taskFromEndPosition < taskTo.x2 ? -arrowIndent : taskTo.x2 - taskFrom.x1 + arrowIndent;
1139
+ var path = "M " + taskFrom.x1 + " " + (taskFrom.y + taskHeight / 2) + " \n h " + -arrowIndent + " \n v " + indexCompare * rowHeight / 2 + " \n " + taskFromHorizontalOffsetValue + "\n V " + taskToEndPosition + " \n h " + taskToHorizontalOffsetValue;
1140
+ var trianglePoints = taskTo.x2 + "," + taskToEndPosition + " \n " + (taskTo.x2 + 5) + "," + (taskToEndPosition + 5) + " \n " + (taskTo.x2 + 5) + "," + (taskToEndPosition - 5);
1141
+ return [path, trianglePoints];
1142
+ };
1143
+
1144
+ var convertToBarTasks = function convertToBarTasks(tasks, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
1145
+ var barTasks = tasks.map(function (t, i) {
1146
+ return convertToBarTask(t, i, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor);
1147
+ });
1148
+ barTasks = barTasks.map(function (task) {
1149
+ var dependencies = task.dependencies || [];
1150
+
1151
+ var _loop = function _loop(j) {
1152
+ var dependence = barTasks.findIndex(function (value) {
1153
+ return value.id === dependencies[j];
1154
+ });
1155
+ if (dependence !== -1) barTasks[dependence].barChildren.push(task);
1156
+ };
1157
+
1158
+ for (var j = 0; j < dependencies.length; j++) {
1159
+ _loop(j);
1160
+ }
1161
+
1162
+ return task;
1163
+ });
1164
+ return barTasks;
1165
+ };
1166
+
1167
+ var convertToBarTask = function convertToBarTask(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
1168
+ var barTask;
1169
+
1170
+ switch (task.type) {
1171
+ case "milestone":
1172
+ barTask = convertToMilestone(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, milestoneBackgroundColor, milestoneBackgroundSelectedColor);
1173
+ break;
1174
+
1175
+ case "project":
1176
+ barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor);
1177
+ break;
1178
+
1179
+ default:
1180
+ barTask = convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor);
1181
+ break;
1182
+ }
1183
+
1184
+ return barTask;
1185
+ };
1186
+
1187
+ var convertToBar = function convertToBar(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor) {
1188
+ var x1;
1189
+ var x2;
1190
+
1191
+ if (rtl) {
1192
+ x2 = taskXCoordinateRTL(task.start, dates, columnWidth);
1193
+ x1 = taskXCoordinateRTL(task.end, dates, columnWidth);
1194
+ } else {
1195
+ x1 = taskXCoordinate(task.start, dates, columnWidth);
1196
+ x2 = taskXCoordinate(task.end, dates, columnWidth);
1197
+ }
1198
+
1199
+ var typeInternal = task.type;
1200
+
1201
+ if (typeInternal === "task" && x2 - x1 < handleWidth * 2) {
1202
+ typeInternal = "smalltask";
1203
+ x2 = x1 + handleWidth * 2;
1204
+ }
1205
+
1206
+ var _progressWithByParams = progressWithByParams(x1, x2, task.progress, rtl),
1207
+ progressWidth = _progressWithByParams[0],
1208
+ progressX = _progressWithByParams[1];
1209
+
1210
+ var y = taskYCoordinate(index, rowHeight, taskHeight);
1211
+ var hideChildren = task.type === "project" ? task.hideChildren : undefined;
1212
+
1213
+ var styles = _extends({
1214
+ backgroundColor: barBackgroundColor,
1215
+ backgroundSelectedColor: barBackgroundSelectedColor,
1216
+ progressColor: barProgressColor,
1217
+ progressSelectedColor: barProgressSelectedColor
1218
+ }, task.styles);
1219
+
1220
+ return _extends({}, task, {
1221
+ typeInternal: typeInternal,
1222
+ x1: x1,
1223
+ x2: x2,
1224
+ y: y,
1225
+ index: index,
1226
+ progressX: progressX,
1227
+ progressWidth: progressWidth,
1228
+ barCornerRadius: barCornerRadius,
1229
+ handleWidth: handleWidth,
1230
+ hideChildren: hideChildren,
1231
+ height: taskHeight,
1232
+ barChildren: [],
1233
+ styles: styles
1234
+ });
1235
+ };
1236
+
1237
+ var convertToMilestone = function convertToMilestone(task, index, dates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, milestoneBackgroundColor, milestoneBackgroundSelectedColor) {
1238
+ var x = taskXCoordinate(task.start, dates, columnWidth);
1239
+ var y = taskYCoordinate(index, rowHeight, taskHeight);
1240
+ var x1 = x - taskHeight * 0.5;
1241
+ var x2 = x + taskHeight * 0.5;
1242
+ var rotatedHeight = taskHeight / 1.414;
1243
+
1244
+ var styles = _extends({
1245
+ backgroundColor: milestoneBackgroundColor,
1246
+ backgroundSelectedColor: milestoneBackgroundSelectedColor,
1247
+ progressColor: "",
1248
+ progressSelectedColor: ""
1249
+ }, task.styles);
1250
+
1251
+ return _extends({}, task, {
1252
+ end: task.start,
1253
+ x1: x1,
1254
+ x2: x2,
1255
+ y: y,
1256
+ index: index,
1257
+ progressX: 0,
1258
+ progressWidth: 0,
1259
+ barCornerRadius: barCornerRadius,
1260
+ handleWidth: handleWidth,
1261
+ typeInternal: task.type,
1262
+ progress: 0,
1263
+ height: rotatedHeight,
1264
+ hideChildren: undefined,
1265
+ barChildren: [],
1266
+ styles: styles
1267
+ });
1268
+ };
1269
+
1270
+ var taskXCoordinate = function taskXCoordinate(xDate, dates, columnWidth) {
1271
+ var index = dates.findIndex(function (d) {
1272
+ return d.getTime() >= xDate.getTime();
1273
+ }) - 1;
1274
+ var remainderMillis = xDate.getTime() - dates[index].getTime();
1275
+ var percentOfInterval = remainderMillis / (dates[index + 1].getTime() - dates[index].getTime());
1276
+ var x = index * columnWidth + percentOfInterval * columnWidth;
1277
+ return x;
1278
+ };
1279
+
1280
+ var taskXCoordinateRTL = function taskXCoordinateRTL(xDate, dates, columnWidth) {
1281
+ var x = taskXCoordinate(xDate, dates, columnWidth);
1282
+ x += columnWidth;
1283
+ return x;
1284
+ };
1285
+
1286
+ var taskYCoordinate = function taskYCoordinate(index, rowHeight, taskHeight) {
1287
+ var y = index * rowHeight + (rowHeight - taskHeight) / 2;
1288
+ return y;
1289
+ };
1290
+
1291
+ var progressWithByParams = function progressWithByParams(taskX1, taskX2, progress, rtl) {
1292
+ var progressWidth = (taskX2 - taskX1) * progress * 0.01;
1293
+ var progressX;
1294
+
1295
+ if (rtl) {
1296
+ progressX = taskX2 - progressWidth;
1297
+ } else {
1298
+ progressX = taskX1;
1299
+ }
1300
+
1301
+ return [progressWidth, progressX];
1302
+ };
1303
+
1304
+ var progressByX = function progressByX(x, task) {
1305
+ if (x >= task.x2) return 100;else if (x <= task.x1) return 0;else {
1306
+ var barWidth = task.x2 - task.x1;
1307
+ var progressPercent = Math.round((x - task.x1) * 100 / barWidth);
1308
+ return progressPercent;
1309
+ }
1310
+ };
1311
+
1312
+ var progressByXRTL = function progressByXRTL(x, task) {
1313
+ if (x >= task.x2) return 0;else if (x <= task.x1) return 100;else {
1314
+ var barWidth = task.x2 - task.x1;
1315
+ var progressPercent = Math.round((task.x2 - x) * 100 / barWidth);
1316
+ return progressPercent;
1317
+ }
1318
+ };
1319
+
1320
+ var getProgressPoint = function getProgressPoint(progressX, taskY, taskHeight) {
1321
+ var point = [progressX - 5, taskY + taskHeight, progressX + 5, taskY + taskHeight, progressX, taskY + taskHeight - 8.66];
1322
+ return point.join(",");
1323
+ };
1324
+
1325
+ var startByX = function startByX(x, xStep, task) {
1326
+ if (x >= task.x2 - task.handleWidth * 2) {
1327
+ x = task.x2 - task.handleWidth * 2;
1328
+ }
1329
+
1330
+ var steps = Math.round((x - task.x1) / xStep);
1331
+ var additionalXValue = steps * xStep;
1332
+ var newX = task.x1 + additionalXValue;
1333
+ return newX;
1334
+ };
1335
+
1336
+ var endByX = function endByX(x, xStep, task) {
1337
+ if (x <= task.x1 + task.handleWidth * 2) {
1338
+ x = task.x1 + task.handleWidth * 2;
1339
+ }
1340
+
1341
+ var steps = Math.round((x - task.x2) / xStep);
1342
+ var additionalXValue = steps * xStep;
1343
+ var newX = task.x2 + additionalXValue;
1344
+ return newX;
1345
+ };
1346
+
1347
+ var moveByX = function moveByX(x, xStep, task) {
1348
+ var steps = Math.round((x - task.x1) / xStep);
1349
+ var additionalXValue = steps * xStep;
1350
+ var newX1 = task.x1 + additionalXValue;
1351
+ var newX2 = newX1 + task.x2 - task.x1;
1352
+ return [newX1, newX2];
1353
+ };
1354
+
1355
+ var dateByX = function dateByX(x, taskX, taskDate, xStep, timeStep) {
1356
+ var newDate = new Date((x - taskX) / xStep * timeStep + taskDate.getTime());
1357
+ newDate = new Date(newDate.getTime() + (newDate.getTimezoneOffset() - taskDate.getTimezoneOffset()) * 60000);
1358
+ return newDate;
1359
+ };
1360
+
1361
+ var handleTaskBySVGMouseEvent = function handleTaskBySVGMouseEvent(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta, rtl) {
1362
+ var result;
1363
+
1364
+ switch (selectedTask.type) {
1365
+ case "milestone":
1366
+ result = handleTaskBySVGMouseEventForMilestone(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta);
1367
+ break;
1368
+
1369
+ default:
1370
+ result = handleTaskBySVGMouseEventForBar(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta, rtl);
1371
+ break;
1372
+ }
1373
+
1374
+ return result;
1375
+ };
1376
+
1377
+ var handleTaskBySVGMouseEventForBar = function handleTaskBySVGMouseEventForBar(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta, rtl) {
1378
+ var changedTask = _extends({}, selectedTask);
1379
+
1380
+ var isChanged = false;
1381
+
1382
+ switch (action) {
1383
+ case "progress":
1384
+ if (rtl) {
1385
+ changedTask.progress = progressByXRTL(svgX, selectedTask);
1386
+ } else {
1387
+ changedTask.progress = progressByX(svgX, selectedTask);
1388
+ }
1389
+
1390
+ isChanged = changedTask.progress !== selectedTask.progress;
1391
+
1392
+ if (isChanged) {
1393
+ var _progressWithByParams2 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
1394
+ progressWidth = _progressWithByParams2[0],
1395
+ progressX = _progressWithByParams2[1];
1396
+
1397
+ changedTask.progressWidth = progressWidth;
1398
+ changedTask.progressX = progressX;
1399
+ }
1400
+
1401
+ break;
1402
+
1403
+ case "start":
1404
+ {
1405
+ var newX1 = startByX(svgX, xStep, selectedTask);
1406
+ changedTask.x1 = newX1;
1407
+ isChanged = changedTask.x1 !== selectedTask.x1;
1408
+
1409
+ if (isChanged) {
1410
+ if (rtl) {
1411
+ changedTask.end = dateByX(newX1, selectedTask.x1, selectedTask.end, xStep, timeStep);
1412
+ } else {
1413
+ changedTask.start = dateByX(newX1, selectedTask.x1, selectedTask.start, xStep, timeStep);
1414
+ }
1415
+
1416
+ var _progressWithByParams3 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
1417
+ _progressWidth = _progressWithByParams3[0],
1418
+ _progressX = _progressWithByParams3[1];
1419
+
1420
+ changedTask.progressWidth = _progressWidth;
1421
+ changedTask.progressX = _progressX;
1422
+ }
1423
+
1424
+ break;
1425
+ }
1426
+
1427
+ case "end":
1428
+ {
1429
+ var newX2 = endByX(svgX, xStep, selectedTask);
1430
+ changedTask.x2 = newX2;
1431
+ isChanged = changedTask.x2 !== selectedTask.x2;
1432
+
1433
+ if (isChanged) {
1434
+ if (rtl) {
1435
+ changedTask.start = dateByX(newX2, selectedTask.x2, selectedTask.start, xStep, timeStep);
1436
+ } else {
1437
+ changedTask.end = dateByX(newX2, selectedTask.x2, selectedTask.end, xStep, timeStep);
1438
+ }
1439
+
1440
+ var _progressWithByParams4 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
1441
+ _progressWidth2 = _progressWithByParams4[0],
1442
+ _progressX2 = _progressWithByParams4[1];
1443
+
1444
+ changedTask.progressWidth = _progressWidth2;
1445
+ changedTask.progressX = _progressX2;
1446
+ }
1447
+
1448
+ break;
1449
+ }
1450
+
1451
+ case "move":
1452
+ {
1453
+ var _moveByX = moveByX(svgX - initEventX1Delta, xStep, selectedTask),
1454
+ newMoveX1 = _moveByX[0],
1455
+ newMoveX2 = _moveByX[1];
1456
+
1457
+ isChanged = newMoveX1 !== selectedTask.x1;
1458
+
1459
+ if (isChanged) {
1460
+ changedTask.start = dateByX(newMoveX1, selectedTask.x1, selectedTask.start, xStep, timeStep);
1461
+ changedTask.end = dateByX(newMoveX2, selectedTask.x2, selectedTask.end, xStep, timeStep);
1462
+ changedTask.x1 = newMoveX1;
1463
+ changedTask.x2 = newMoveX2;
1464
+
1465
+ var _progressWithByParams5 = progressWithByParams(changedTask.x1, changedTask.x2, changedTask.progress, rtl),
1466
+ _progressWidth3 = _progressWithByParams5[0],
1467
+ _progressX3 = _progressWithByParams5[1];
1468
+
1469
+ changedTask.progressWidth = _progressWidth3;
1470
+ changedTask.progressX = _progressX3;
1471
+ }
1472
+
1473
+ break;
1474
+ }
1475
+ }
1476
+
1477
+ return {
1478
+ isChanged: isChanged,
1479
+ changedTask: changedTask
1480
+ };
1481
+ };
1482
+
1483
+ var handleTaskBySVGMouseEventForMilestone = function handleTaskBySVGMouseEventForMilestone(svgX, action, selectedTask, xStep, timeStep, initEventX1Delta) {
1484
+ var changedTask = _extends({}, selectedTask);
1485
+
1486
+ var isChanged = false;
1487
+
1488
+ switch (action) {
1489
+ case "move":
1490
+ {
1491
+ var _moveByX2 = moveByX(svgX - initEventX1Delta, xStep, selectedTask),
1492
+ newMoveX1 = _moveByX2[0],
1493
+ newMoveX2 = _moveByX2[1];
1494
+
1495
+ isChanged = newMoveX1 !== selectedTask.x1;
1496
+
1497
+ if (isChanged) {
1498
+ changedTask.start = dateByX(newMoveX1, selectedTask.x1, selectedTask.start, xStep, timeStep);
1499
+ changedTask.end = changedTask.start;
1500
+ changedTask.x1 = newMoveX1;
1501
+ changedTask.x2 = newMoveX2;
1502
+ }
1503
+
1504
+ break;
1505
+ }
1506
+ }
1507
+
1508
+ return {
1509
+ isChanged: isChanged,
1510
+ changedTask: changedTask
1511
+ };
1512
+ };
1513
+
1514
+ function isKeyboardEvent(event) {
1515
+ return event.key !== undefined;
1516
+ }
1517
+ function removeHiddenTasks(tasks) {
1518
+ var groupedTasks = tasks.filter(function (t) {
1519
+ return t.hideChildren && t.type === "project";
1520
+ });
1521
+
1522
+ if (groupedTasks.length > 0) {
1523
+ var _loop = function _loop(i) {
1524
+ var groupedTask = groupedTasks[i];
1525
+ var children = getChildren(tasks, groupedTask);
1526
+ tasks = tasks.filter(function (t) {
1527
+ return children.indexOf(t) === -1;
1528
+ });
1529
+ };
1530
+
1531
+ for (var i = 0; groupedTasks.length > i; i++) {
1532
+ _loop(i);
1533
+ }
1534
+ }
1535
+
1536
+ return tasks;
1537
+ }
1538
+
1539
+ function getChildren(taskList, task) {
1540
+ var tasks = [];
1541
+
1542
+ if (task.type !== "project") {
1543
+ tasks = taskList.filter(function (t) {
1544
+ return t.dependencies && t.dependencies.indexOf(task.id) !== -1;
1545
+ });
1546
+ } else {
1547
+ tasks = taskList.filter(function (t) {
1548
+ return t.project && t.project === task.id;
1549
+ });
1550
+ }
1551
+
1552
+ var taskChildren = [];
1553
+ tasks.forEach(function (t) {
1554
+ taskChildren.push.apply(taskChildren, getChildren(taskList, t));
1555
+ });
1556
+ tasks = tasks.concat(tasks, taskChildren);
1557
+ return tasks;
1558
+ }
1559
+
1560
+ var sortTasks = function sortTasks(taskA, taskB) {
1561
+ var orderA = taskA.displayOrder || Number.MAX_VALUE;
1562
+ var orderB = taskB.displayOrder || Number.MAX_VALUE;
1563
+
1564
+ if (orderA > orderB) {
1565
+ return 1;
1566
+ } else if (orderA < orderB) {
1567
+ return -1;
1568
+ } else {
1569
+ return 0;
1570
+ }
1571
+ };
1572
+
1573
+ var styles$6 = {"barWrapper":"_KxSXS","barHandle":"_3w_5u","barBackground":"_31ERP"};
1574
+
1575
+ var BarDisplay = function BarDisplay(_ref) {
1576
+ var x = _ref.x,
1577
+ y = _ref.y,
1578
+ width = _ref.width,
1579
+ height = _ref.height,
1580
+ isSelected = _ref.isSelected,
1581
+ progressX = _ref.progressX,
1582
+ progressWidth = _ref.progressWidth,
1583
+ barCornerRadius = _ref.barCornerRadius,
1584
+ styles = _ref.styles,
1585
+ onMouseDown = _ref.onMouseDown;
1586
+
1587
+ var getProcessColor = function getProcessColor() {
1588
+ return isSelected ? styles.progressSelectedColor : styles.progressColor;
1589
+ };
1590
+
1591
+ var getBarColor = function getBarColor() {
1592
+ return isSelected ? styles.backgroundSelectedColor : styles.backgroundColor;
1593
+ };
1594
+
1595
+ return React__default.createElement("g", {
1596
+ onMouseDown: onMouseDown
1597
+ }, React__default.createElement("rect", {
1598
+ x: x,
1599
+ width: width,
1600
+ y: y,
1601
+ height: height,
1602
+ ry: barCornerRadius,
1603
+ rx: barCornerRadius,
1604
+ fill: getBarColor(),
1605
+ className: styles$6.barBackground
1606
+ }), React__default.createElement("rect", {
1607
+ x: progressX,
1608
+ width: progressWidth,
1609
+ y: y,
1610
+ height: height,
1611
+ ry: barCornerRadius,
1612
+ rx: barCornerRadius,
1613
+ fill: getProcessColor()
1614
+ }));
1615
+ };
1616
+
1617
+ var BarDateHandle = function BarDateHandle(_ref) {
1618
+ var x = _ref.x,
1619
+ y = _ref.y,
1620
+ width = _ref.width,
1621
+ height = _ref.height,
1622
+ barCornerRadius = _ref.barCornerRadius,
1623
+ onMouseDown = _ref.onMouseDown;
1624
+ return React__default.createElement("rect", {
1625
+ x: x,
1626
+ y: y,
1627
+ width: width,
1628
+ height: height,
1629
+ className: styles$6.barHandle,
1630
+ ry: barCornerRadius,
1631
+ rx: barCornerRadius,
1632
+ onMouseDown: onMouseDown
1633
+ });
1634
+ };
1635
+
1636
+ var BarProgressHandle = function BarProgressHandle(_ref) {
1637
+ var progressPoint = _ref.progressPoint,
1638
+ onMouseDown = _ref.onMouseDown;
1639
+ return React__default.createElement("polygon", {
1640
+ className: styles$6.barHandle,
1641
+ points: progressPoint,
1642
+ onMouseDown: onMouseDown
1643
+ });
1644
+ };
1645
+
1646
+ var Bar = function Bar(_ref) {
1647
+ var task = _ref.task,
1648
+ isProgressChangeable = _ref.isProgressChangeable,
1649
+ isDateChangeable = _ref.isDateChangeable,
1650
+ rtl = _ref.rtl,
1651
+ onEventStart = _ref.onEventStart,
1652
+ isSelected = _ref.isSelected;
1653
+ var progressPoint = getProgressPoint(+!rtl * task.progressWidth + task.progressX, task.y, task.height);
1654
+ var handleHeight = task.height - 2;
1655
+ return React__default.createElement("g", {
1656
+ className: styles$6.barWrapper,
1657
+ tabIndex: 0
1658
+ }, React__default.createElement(BarDisplay, {
1659
+ x: task.x1,
1660
+ y: task.y,
1661
+ width: task.x2 - task.x1,
1662
+ height: task.height,
1663
+ progressX: task.progressX,
1664
+ progressWidth: task.progressWidth,
1665
+ barCornerRadius: task.barCornerRadius,
1666
+ styles: task.styles,
1667
+ isSelected: isSelected,
1668
+ onMouseDown: function onMouseDown(e) {
1669
+ isDateChangeable && onEventStart("move", task, e);
1670
+ }
1671
+ }), React__default.createElement("g", {
1672
+ className: "handleGroup"
1673
+ }, isDateChangeable && React__default.createElement("g", null, React__default.createElement(BarDateHandle, {
1674
+ x: task.x1 + 1,
1675
+ y: task.y + 1,
1676
+ width: task.handleWidth,
1677
+ height: handleHeight,
1678
+ barCornerRadius: task.barCornerRadius,
1679
+ onMouseDown: function onMouseDown(e) {
1680
+ onEventStart("start", task, e);
1681
+ }
1682
+ }), React__default.createElement(BarDateHandle, {
1683
+ x: task.x2 - task.handleWidth - 1,
1684
+ y: task.y + 1,
1685
+ width: task.handleWidth,
1686
+ height: handleHeight,
1687
+ barCornerRadius: task.barCornerRadius,
1688
+ onMouseDown: function onMouseDown(e) {
1689
+ onEventStart("end", task, e);
1690
+ }
1691
+ })), isProgressChangeable && React__default.createElement(BarProgressHandle, {
1692
+ progressPoint: progressPoint,
1693
+ onMouseDown: function onMouseDown(e) {
1694
+ onEventStart("progress", task, e);
1695
+ }
1696
+ })));
1697
+ };
1698
+
1699
+ var BarSmall = function BarSmall(_ref) {
1700
+ var task = _ref.task,
1701
+ isProgressChangeable = _ref.isProgressChangeable,
1702
+ isDateChangeable = _ref.isDateChangeable,
1703
+ onEventStart = _ref.onEventStart,
1704
+ isSelected = _ref.isSelected;
1705
+ var progressPoint = getProgressPoint(task.progressWidth + task.x1, task.y, task.height);
1706
+ return React__default.createElement("g", {
1707
+ className: styles$6.barWrapper,
1708
+ tabIndex: 0
1709
+ }, React__default.createElement(BarDisplay, {
1710
+ x: task.x1,
1711
+ y: task.y,
1712
+ width: task.x2 - task.x1,
1713
+ height: task.height,
1714
+ progressX: task.progressX,
1715
+ progressWidth: task.progressWidth,
1716
+ barCornerRadius: task.barCornerRadius,
1717
+ styles: task.styles,
1718
+ isSelected: isSelected,
1719
+ onMouseDown: function onMouseDown(e) {
1720
+ isDateChangeable && onEventStart("move", task, e);
1721
+ }
1722
+ }), React__default.createElement("g", {
1723
+ className: "handleGroup"
1724
+ }, isProgressChangeable && React__default.createElement(BarProgressHandle, {
1725
+ progressPoint: progressPoint,
1726
+ onMouseDown: function onMouseDown(e) {
1727
+ onEventStart("progress", task, e);
1728
+ }
1729
+ })));
1730
+ };
1731
+
1732
+ var styles$7 = {"milestoneWrapper":"_RRr13","milestoneBackground":"_2P2B1"};
1733
+
1734
+ var Milestone = function Milestone(_ref) {
1735
+ var task = _ref.task,
1736
+ isDateChangeable = _ref.isDateChangeable,
1737
+ onEventStart = _ref.onEventStart,
1738
+ isSelected = _ref.isSelected;
1739
+ var transform = "rotate(45 " + (task.x1 + task.height * 0.356) + " \n " + (task.y + task.height * 0.85) + ")";
1740
+
1741
+ var getBarColor = function getBarColor() {
1742
+ return isSelected ? task.styles.backgroundSelectedColor : task.styles.backgroundColor;
1743
+ };
1744
+
1745
+ return React__default.createElement("g", {
1746
+ tabIndex: 0,
1747
+ className: styles$7.milestoneWrapper
1748
+ }, React__default.createElement("rect", {
1749
+ fill: getBarColor(),
1750
+ x: task.x1,
1751
+ width: task.height,
1752
+ y: task.y,
1753
+ height: task.height,
1754
+ rx: task.barCornerRadius,
1755
+ ry: task.barCornerRadius,
1756
+ transform: transform,
1757
+ className: styles$7.milestoneBackground,
1758
+ onMouseDown: function onMouseDown(e) {
1759
+ isDateChangeable && onEventStart("move", task, e);
1760
+ }
1761
+ }));
1762
+ };
1763
+
1764
+ var styles$8 = {"projectWrapper":"_1KJ6x","projectBackground":"_2RbVy","projectTop":"_2pZMF"};
1765
+
1766
+ var Project = function Project(_ref) {
1767
+ var task = _ref.task,
1768
+ isSelected = _ref.isSelected;
1769
+ var barColor = isSelected ? task.styles.backgroundSelectedColor : task.styles.backgroundColor;
1770
+ var processColor = isSelected ? task.styles.progressSelectedColor : task.styles.progressColor;
1771
+ var projectWith = task.x2 - task.x1;
1772
+ var projectLeftTriangle = [task.x1, task.y + task.height / 2 - 1, task.x1, task.y + task.height, task.x1 + 15, task.y + task.height / 2 - 1].join(",");
1773
+ var projectRightTriangle = [task.x2, task.y + task.height / 2 - 1, task.x2, task.y + task.height, task.x2 - 15, task.y + task.height / 2 - 1].join(",");
1774
+ return React__default.createElement("g", {
1775
+ tabIndex: 0,
1776
+ className: styles$8.projectWrapper
1777
+ }, React__default.createElement("rect", {
1778
+ fill: barColor,
1779
+ x: task.x1,
1780
+ width: projectWith,
1781
+ y: task.y,
1782
+ height: task.height,
1783
+ rx: task.barCornerRadius,
1784
+ ry: task.barCornerRadius,
1785
+ className: styles$8.projectBackground
1786
+ }), React__default.createElement("rect", {
1787
+ x: task.progressX,
1788
+ width: task.progressWidth,
1789
+ y: task.y,
1790
+ height: task.height,
1791
+ ry: task.barCornerRadius,
1792
+ rx: task.barCornerRadius,
1793
+ fill: processColor
1794
+ }), React__default.createElement("rect", {
1795
+ fill: barColor,
1796
+ x: task.x1,
1797
+ width: projectWith,
1798
+ y: task.y,
1799
+ height: task.height / 2,
1800
+ rx: task.barCornerRadius,
1801
+ ry: task.barCornerRadius,
1802
+ className: styles$8.projectTop
1803
+ }), React__default.createElement("polygon", {
1804
+ className: styles$8.projectTop,
1805
+ points: projectLeftTriangle,
1806
+ fill: barColor
1807
+ }), React__default.createElement("polygon", {
1808
+ className: styles$8.projectTop,
1809
+ points: projectRightTriangle,
1810
+ fill: barColor
1811
+ }));
1812
+ };
1813
+
1814
+ var style = {"barLabel":"_3zRJQ","barLabelOutside":"_3KcaM"};
1815
+
1816
+ var TaskItem = function TaskItem(props) {
1817
+ var _props = _extends({}, props),
1818
+ task = _props.task,
1819
+ arrowIndent = _props.arrowIndent,
1820
+ isDelete = _props.isDelete,
1821
+ taskHeight = _props.taskHeight,
1822
+ isSelected = _props.isSelected,
1823
+ rtl = _props.rtl,
1824
+ onEventStart = _props.onEventStart;
1825
+
1826
+ var textRef = React.useRef(null);
1827
+
1828
+ var _useState = React.useState(React__default.createElement("div", null)),
1829
+ taskItem = _useState[0],
1830
+ setTaskItem = _useState[1];
1831
+
1832
+ var _useState2 = React.useState(true),
1833
+ isTextInside = _useState2[0],
1834
+ setIsTextInside = _useState2[1];
1835
+
1836
+ React.useEffect(function () {
1837
+ switch (task.typeInternal) {
1838
+ case "milestone":
1839
+ setTaskItem(React__default.createElement(Milestone, Object.assign({}, props)));
1840
+ break;
1841
+
1842
+ case "project":
1843
+ setTaskItem(React__default.createElement(Project, Object.assign({}, props)));
1844
+ break;
1845
+
1846
+ case "smalltask":
1847
+ setTaskItem(React__default.createElement(BarSmall, Object.assign({}, props)));
1848
+ break;
1849
+
1850
+ default:
1851
+ setTaskItem(React__default.createElement(Bar, Object.assign({}, props)));
1852
+ break;
1853
+ }
1854
+ }, [task, isSelected]);
1855
+ React.useEffect(function () {
1856
+ if (textRef.current) {
1857
+ setIsTextInside(textRef.current.getBBox().width < task.x2 - task.x1);
1858
+ }
1859
+ }, [textRef, task]);
1860
+
1861
+ var getX = function getX() {
1862
+ var width = task.x2 - task.x1;
1863
+ var hasChild = task.barChildren.length > 0;
1864
+
1865
+ if (isTextInside) {
1866
+ return task.x1 + width * 0.5;
1867
+ }
1868
+
1869
+ if (rtl && textRef.current) {
1870
+ return task.x1 - textRef.current.getBBox().width - arrowIndent * +hasChild - arrowIndent * 0.2;
1871
+ } else {
1872
+ return task.x1 + width + arrowIndent * +hasChild + arrowIndent * 0.2;
1873
+ }
1874
+ };
1875
+
1876
+ return React__default.createElement("g", {
1877
+ onKeyDown: function onKeyDown(e) {
1878
+ switch (e.key) {
1879
+ case "Delete":
1880
+ {
1881
+ if (isDelete) onEventStart("delete", task, e);
1882
+ break;
1883
+ }
1884
+ }
1885
+
1886
+ e.stopPropagation();
1887
+ },
1888
+ onMouseEnter: function onMouseEnter(e) {
1889
+ onEventStart("mouseenter", task, e);
1890
+ },
1891
+ onMouseLeave: function onMouseLeave(e) {
1892
+ onEventStart("mouseleave", task, e);
1893
+ },
1894
+ onDoubleClick: function onDoubleClick(e) {
1895
+ onEventStart("dblclick", task, e);
1896
+ },
1897
+ onClick: function onClick(e) {
1898
+ onEventStart("click", task, e);
1899
+ },
1900
+ onFocus: function onFocus() {
1901
+ onEventStart("select", task);
1902
+ }
1903
+ }, taskItem, React__default.createElement("text", {
1904
+ x: getX(),
1905
+ y: task.y + taskHeight * 0.5,
1906
+ className: isTextInside ? style.barLabel : style.barLabelOutside,
1907
+ ref: textRef
1908
+ }, task.name));
1909
+ };
1910
+
1911
+ var TaskGanttContent = function TaskGanttContent(_ref) {
1912
+ var _svg$current;
1913
+
1914
+ var tasks = _ref.tasks,
1915
+ dates = _ref.dates,
1916
+ ganttEvent = _ref.ganttEvent,
1917
+ selectedTask = _ref.selectedTask,
1918
+ rowHeight = _ref.rowHeight,
1919
+ columnWidth = _ref.columnWidth,
1920
+ timeStep = _ref.timeStep,
1921
+ svg = _ref.svg,
1922
+ taskHeight = _ref.taskHeight,
1923
+ arrowColor = _ref.arrowColor,
1924
+ arrowIndent = _ref.arrowIndent,
1925
+ fontFamily = _ref.fontFamily,
1926
+ fontSize = _ref.fontSize,
1927
+ rtl = _ref.rtl,
1928
+ setGanttEvent = _ref.setGanttEvent,
1929
+ setFailedTask = _ref.setFailedTask,
1930
+ setSelectedTask = _ref.setSelectedTask,
1931
+ onDateChange = _ref.onDateChange,
1932
+ onProgressChange = _ref.onProgressChange,
1933
+ onDoubleClick = _ref.onDoubleClick,
1934
+ onClick = _ref.onClick,
1935
+ onDelete = _ref.onDelete;
1936
+ var point = svg === null || svg === void 0 ? void 0 : (_svg$current = svg.current) === null || _svg$current === void 0 ? void 0 : _svg$current.createSVGPoint();
1937
+
1938
+ var _useState = React.useState(0),
1939
+ xStep = _useState[0],
1940
+ setXStep = _useState[1];
1941
+
1942
+ var _useState2 = React.useState(0),
1943
+ initEventX1Delta = _useState2[0],
1944
+ setInitEventX1Delta = _useState2[1];
1945
+
1946
+ var _useState3 = React.useState(false),
1947
+ isMoving = _useState3[0],
1948
+ setIsMoving = _useState3[1];
1949
+
1950
+ React.useEffect(function () {
1951
+ var dateDelta = dates[1].getTime() - dates[0].getTime() - dates[1].getTimezoneOffset() * 60 * 1000 + dates[0].getTimezoneOffset() * 60 * 1000;
1952
+ var newXStep = timeStep * columnWidth / dateDelta;
1953
+ setXStep(newXStep);
1954
+ }, [columnWidth, dates, timeStep]);
1955
+ React.useEffect(function () {
1956
+ var handleMouseMove = function handleMouseMove(event) {
1957
+ try {
1958
+ var _svg$current$getScree;
1959
+
1960
+ if (!ganttEvent.changedTask || !point || !(svg !== null && svg !== void 0 && svg.current)) return Promise.resolve();
1961
+ event.preventDefault();
1962
+ point.x = event.clientX;
1963
+ var cursor = point.matrixTransform(svg === null || svg === void 0 ? void 0 : (_svg$current$getScree = svg.current.getScreenCTM()) === null || _svg$current$getScree === void 0 ? void 0 : _svg$current$getScree.inverse());
1964
+
1965
+ var _handleTaskBySVGMouse = handleTaskBySVGMouseEvent(cursor.x, ganttEvent.action, ganttEvent.changedTask, xStep, timeStep, initEventX1Delta, rtl),
1966
+ isChanged = _handleTaskBySVGMouse.isChanged,
1967
+ changedTask = _handleTaskBySVGMouse.changedTask;
1968
+
1969
+ if (isChanged) {
1970
+ setGanttEvent({
1971
+ action: ganttEvent.action,
1972
+ changedTask: changedTask
1973
+ });
1974
+ }
1975
+
1976
+ return Promise.resolve();
1977
+ } catch (e) {
1978
+ return Promise.reject(e);
1979
+ }
1980
+ };
1981
+
1982
+ var handleMouseUp = function handleMouseUp(event) {
1983
+ try {
1984
+ var _svg$current$getScree2;
1985
+
1986
+ var _temp6 = function _temp6() {
1987
+ if (!operationSuccess) {
1988
+ setFailedTask(originalSelectedTask);
1989
+ }
1990
+ };
1991
+
1992
+ var action = ganttEvent.action,
1993
+ originalSelectedTask = ganttEvent.originalSelectedTask,
1994
+ changedTask = ganttEvent.changedTask;
1995
+ if (!changedTask || !point || !(svg !== null && svg !== void 0 && svg.current) || !originalSelectedTask) return Promise.resolve();
1996
+ event.preventDefault();
1997
+ point.x = event.clientX;
1998
+ var cursor = point.matrixTransform(svg === null || svg === void 0 ? void 0 : (_svg$current$getScree2 = svg.current.getScreenCTM()) === null || _svg$current$getScree2 === void 0 ? void 0 : _svg$current$getScree2.inverse());
1999
+
2000
+ var _handleTaskBySVGMouse2 = handleTaskBySVGMouseEvent(cursor.x, action, changedTask, xStep, timeStep, initEventX1Delta, rtl),
2001
+ newChangedTask = _handleTaskBySVGMouse2.changedTask;
2002
+
2003
+ var isNotLikeOriginal = originalSelectedTask.start !== newChangedTask.start || originalSelectedTask.end !== newChangedTask.end || originalSelectedTask.progress !== newChangedTask.progress;
2004
+ svg.current.removeEventListener("mousemove", handleMouseMove);
2005
+ svg.current.removeEventListener("mouseup", handleMouseUp);
2006
+ setGanttEvent({
2007
+ action: ""
2008
+ });
2009
+ setIsMoving(false);
2010
+ var operationSuccess = true;
2011
+
2012
+ var _temp7 = function () {
2013
+ if ((action === "move" || action === "end" || action === "start") && onDateChange && isNotLikeOriginal) {
2014
+ var _temp8 = _catch(function () {
2015
+ return Promise.resolve(onDateChange(newChangedTask, newChangedTask.barChildren)).then(function (result) {
2016
+ if (result !== undefined) {
2017
+ operationSuccess = result;
2018
+ }
2019
+ });
2020
+ }, function () {
2021
+ operationSuccess = false;
2022
+ });
2023
+
2024
+ if (_temp8 && _temp8.then) return _temp8.then(function () {});
2025
+ } else {
2026
+ var _temp9 = function () {
2027
+ if (onProgressChange && isNotLikeOriginal) {
2028
+ var _temp10 = _catch(function () {
2029
+ return Promise.resolve(onProgressChange(newChangedTask, newChangedTask.barChildren)).then(function (result) {
2030
+ if (result !== undefined) {
2031
+ operationSuccess = result;
2032
+ }
2033
+ });
2034
+ }, function () {
2035
+ operationSuccess = false;
2036
+ });
2037
+
2038
+ if (_temp10 && _temp10.then) return _temp10.then(function () {});
2039
+ }
2040
+ }();
2041
+
2042
+ if (_temp9 && _temp9.then) return _temp9.then(function () {});
2043
+ }
2044
+ }();
2045
+
2046
+ return Promise.resolve(_temp7 && _temp7.then ? _temp7.then(_temp6) : _temp6(_temp7));
2047
+ } catch (e) {
2048
+ return Promise.reject(e);
2049
+ }
2050
+ };
2051
+
2052
+ if (!isMoving && (ganttEvent.action === "move" || ganttEvent.action === "end" || ganttEvent.action === "start" || ganttEvent.action === "progress") && svg !== null && svg !== void 0 && svg.current) {
2053
+ svg.current.addEventListener("mousemove", handleMouseMove);
2054
+ svg.current.addEventListener("mouseup", handleMouseUp);
2055
+ setIsMoving(true);
2056
+ }
2057
+ }, [ganttEvent, xStep, initEventX1Delta, onProgressChange, timeStep, onDateChange, svg, isMoving, point, rtl, setFailedTask, setGanttEvent]);
2058
+
2059
+ var handleBarEventStart = function handleBarEventStart(action, task, event) {
2060
+ try {
2061
+ return Promise.resolve(function () {
2062
+ if (!event) {
2063
+ if (action === "select") {
2064
+ setSelectedTask(task.id);
2065
+ }
2066
+ } else return function () {
2067
+ if (isKeyboardEvent(event)) {
2068
+ var _temp14 = function () {
2069
+ if (action === "delete") {
2070
+ var _temp15 = function () {
2071
+ if (onDelete) {
2072
+ var _temp16 = _catch(function () {
2073
+ return Promise.resolve(onDelete(task)).then(function (result) {
2074
+ if (result !== undefined && result) {
2075
+ setGanttEvent({
2076
+ action: action,
2077
+ changedTask: task
2078
+ });
2079
+ }
2080
+ });
2081
+ }, function (error) {
2082
+ console.error("Error on Delete. " + error);
2083
+ });
2084
+
2085
+ if (_temp16 && _temp16.then) return _temp16.then(function () {});
2086
+ }
2087
+ }();
2088
+
2089
+ if (_temp15 && _temp15.then) return _temp15.then(function () {});
2090
+ }
2091
+ }();
2092
+
2093
+ if (_temp14 && _temp14.then) return _temp14.then(function () {});
2094
+ } else if (action === "mouseenter") {
2095
+ if (!ganttEvent.action) {
2096
+ setGanttEvent({
2097
+ action: action,
2098
+ changedTask: task,
2099
+ originalSelectedTask: task
2100
+ });
2101
+ }
2102
+ } else if (action === "mouseleave") {
2103
+ if (ganttEvent.action === "mouseenter") {
2104
+ setGanttEvent({
2105
+ action: ""
2106
+ });
2107
+ }
2108
+ } else if (action === "dblclick") {
2109
+ !!onDoubleClick && onDoubleClick(task);
2110
+ } else if (action === "click") {
2111
+ !!onClick && onClick(task);
2112
+ } else if (action === "move") {
2113
+ var _svg$current$getScree3;
2114
+
2115
+ if (!(svg !== null && svg !== void 0 && svg.current) || !point) return;
2116
+ point.x = event.clientX;
2117
+ var cursor = point.matrixTransform((_svg$current$getScree3 = svg.current.getScreenCTM()) === null || _svg$current$getScree3 === void 0 ? void 0 : _svg$current$getScree3.inverse());
2118
+ setInitEventX1Delta(cursor.x - task.x1);
2119
+ setGanttEvent({
2120
+ action: action,
2121
+ changedTask: task,
2122
+ originalSelectedTask: task
2123
+ });
2124
+ } else {
2125
+ setGanttEvent({
2126
+ action: action,
2127
+ changedTask: task,
2128
+ originalSelectedTask: task
2129
+ });
2130
+ }
2131
+ }();
2132
+ }());
2133
+ } catch (e) {
2134
+ return Promise.reject(e);
2135
+ }
2136
+ };
2137
+
2138
+ return React__default.createElement("g", {
2139
+ className: "content"
2140
+ }, React__default.createElement("g", {
2141
+ className: "arrows",
2142
+ fill: arrowColor,
2143
+ stroke: arrowColor
2144
+ }, tasks.map(function (task) {
2145
+ return task.barChildren.map(function (child) {
2146
+ return React__default.createElement(Arrow, {
2147
+ key: "Arrow from " + task.id + " to " + tasks[child.index].id,
2148
+ taskFrom: task,
2149
+ taskTo: tasks[child.index],
2150
+ rowHeight: rowHeight,
2151
+ taskHeight: taskHeight,
2152
+ arrowIndent: arrowIndent,
2153
+ rtl: rtl
2154
+ });
2155
+ });
2156
+ })), React__default.createElement("g", {
2157
+ className: "bar",
2158
+ fontFamily: fontFamily,
2159
+ fontSize: fontSize
2160
+ }, tasks.map(function (task) {
2161
+ return React__default.createElement(TaskItem, {
2162
+ task: task,
2163
+ arrowIndent: arrowIndent,
2164
+ taskHeight: taskHeight,
2165
+ isProgressChangeable: !!onProgressChange && !task.isDisabled,
2166
+ isDateChangeable: !!onDateChange && !task.isDisabled,
2167
+ isDelete: !task.isDisabled,
2168
+ onEventStart: handleBarEventStart,
2169
+ key: task.id,
2170
+ isSelected: !!selectedTask && task.id === selectedTask.id,
2171
+ rtl: rtl
2172
+ });
2173
+ })));
2174
+ };
2175
+
2176
+ var styles$9 = {"ganttVerticalContainer":"_CZjuD","horizontalContainer":"_2B2zv","wrapper":"_3eULf"};
2177
+
2178
+ var TaskGantt = function TaskGantt(_ref) {
2179
+ var gridProps = _ref.gridProps,
2180
+ calendarProps = _ref.calendarProps,
2181
+ barProps = _ref.barProps,
2182
+ ganttHeight = _ref.ganttHeight,
2183
+ scrollY = _ref.scrollY,
2184
+ scrollX = _ref.scrollX;
2185
+ var ganttSVGRef = React.useRef(null);
2186
+ var horizontalContainerRef = React.useRef(null);
2187
+ var verticalGanttContainerRef = React.useRef(null);
2188
+
2189
+ var newBarProps = _extends({}, barProps, {
2190
+ svg: ganttSVGRef
2191
+ });
2192
+
2193
+ React.useEffect(function () {
2194
+ if (horizontalContainerRef.current) {
2195
+ horizontalContainerRef.current.scrollTop = scrollY;
2196
+ }
2197
+ }, [scrollY]);
2198
+ React.useEffect(function () {
2199
+ if (verticalGanttContainerRef.current) {
2200
+ verticalGanttContainerRef.current.scrollLeft = scrollX;
2201
+ }
2202
+ }, [scrollX]);
2203
+ return React__default.createElement("div", {
2204
+ className: styles$9.ganttVerticalContainer,
2205
+ ref: verticalGanttContainerRef,
2206
+ dir: "ltr"
2207
+ }, React__default.createElement("svg", {
2208
+ xmlns: "http://www.w3.org/2000/svg",
2209
+ width: gridProps.svgWidth,
2210
+ height: calendarProps.headerHeight,
2211
+ fontFamily: barProps.fontFamily
2212
+ }, React__default.createElement(Calendar, Object.assign({}, calendarProps))), React__default.createElement("div", {
2213
+ ref: horizontalContainerRef,
2214
+ className: styles$9.horizontalContainer,
2215
+ style: ganttHeight ? {
2216
+ height: ganttHeight,
2217
+ width: gridProps.svgWidth
2218
+ } : {
2219
+ width: gridProps.svgWidth
2220
+ }
2221
+ }, React__default.createElement("svg", {
2222
+ xmlns: "http://www.w3.org/2000/svg",
2223
+ width: gridProps.svgWidth,
2224
+ height: barProps.rowHeight * barProps.tasks.length,
2225
+ fontFamily: barProps.fontFamily,
2226
+ ref: ganttSVGRef
2227
+ }, React__default.createElement(Grid, Object.assign({}, gridProps)), React__default.createElement(TaskGanttContent, Object.assign({}, newBarProps)))));
2228
+ };
2229
+
2230
+ var styles$a = {"scrollWrapper":"_2k9Ys","scroll":"_19jgW"};
2231
+
2232
+ var HorizontalScroll = function HorizontalScroll(_ref) {
2233
+ var scroll = _ref.scroll,
2234
+ svgWidth = _ref.svgWidth,
2235
+ taskListWidth = _ref.taskListWidth,
2236
+ rtl = _ref.rtl,
2237
+ onScroll = _ref.onScroll;
2238
+ var scrollRef = React.useRef(null);
2239
+ React.useEffect(function () {
2240
+ if (scrollRef.current) {
2241
+ scrollRef.current.scrollLeft = scroll;
2242
+ }
2243
+ }, [scroll]);
2244
+ return React__default.createElement("div", {
2245
+ dir: "ltr",
2246
+ style: {
2247
+ margin: rtl ? "0px " + taskListWidth + "px 0px 0px" : "0px 0px 0px " + taskListWidth + "px"
2248
+ },
2249
+ className: styles$a.scrollWrapper,
2250
+ onScroll: onScroll,
2251
+ ref: scrollRef
2252
+ }, React__default.createElement("div", {
2253
+ style: {
2254
+ width: svgWidth
2255
+ },
2256
+ className: styles$a.scroll
2257
+ }));
2258
+ };
2259
+
2260
+ var Gantt = function Gantt(_ref) {
2261
+ var tasks = _ref.tasks,
2262
+ _ref$headerHeight = _ref.headerHeight,
2263
+ headerHeight = _ref$headerHeight === void 0 ? 50 : _ref$headerHeight,
2264
+ _ref$columnWidth = _ref.columnWidth,
2265
+ columnWidth = _ref$columnWidth === void 0 ? 60 : _ref$columnWidth,
2266
+ _ref$listCellWidth = _ref.listCellWidth,
2267
+ listCellWidth = _ref$listCellWidth === void 0 ? "155px" : _ref$listCellWidth,
2268
+ _ref$rowHeight = _ref.rowHeight,
2269
+ rowHeight = _ref$rowHeight === void 0 ? 50 : _ref$rowHeight,
2270
+ _ref$ganttHeight = _ref.ganttHeight,
2271
+ ganttHeight = _ref$ganttHeight === void 0 ? 0 : _ref$ganttHeight,
2272
+ _ref$viewMode = _ref.viewMode,
2273
+ viewMode = _ref$viewMode === void 0 ? exports.ViewMode.Day : _ref$viewMode,
2274
+ _ref$preStepsCount = _ref.preStepsCount,
2275
+ preStepsCount = _ref$preStepsCount === void 0 ? 1 : _ref$preStepsCount,
2276
+ _ref$locale = _ref.locale,
2277
+ locale = _ref$locale === void 0 ? "en-GB" : _ref$locale,
2278
+ _ref$barFill = _ref.barFill,
2279
+ barFill = _ref$barFill === void 0 ? 60 : _ref$barFill,
2280
+ _ref$barCornerRadius = _ref.barCornerRadius,
2281
+ barCornerRadius = _ref$barCornerRadius === void 0 ? 3 : _ref$barCornerRadius,
2282
+ _ref$barProgressColor = _ref.barProgressColor,
2283
+ barProgressColor = _ref$barProgressColor === void 0 ? "#a3a3ff" : _ref$barProgressColor,
2284
+ _ref$barProgressSelec = _ref.barProgressSelectedColor,
2285
+ barProgressSelectedColor = _ref$barProgressSelec === void 0 ? "#8282f5" : _ref$barProgressSelec,
2286
+ _ref$barBackgroundCol = _ref.barBackgroundColor,
2287
+ barBackgroundColor = _ref$barBackgroundCol === void 0 ? "#b8c2cc" : _ref$barBackgroundCol,
2288
+ _ref$barBackgroundSel = _ref.barBackgroundSelectedColor,
2289
+ barBackgroundSelectedColor = _ref$barBackgroundSel === void 0 ? "#aeb8c2" : _ref$barBackgroundSel,
2290
+ _ref$projectProgressC = _ref.projectProgressColor,
2291
+ projectProgressColor = _ref$projectProgressC === void 0 ? "#7db59a" : _ref$projectProgressC,
2292
+ _ref$projectProgressS = _ref.projectProgressSelectedColor,
2293
+ projectProgressSelectedColor = _ref$projectProgressS === void 0 ? "#59a985" : _ref$projectProgressS,
2294
+ _ref$projectBackgroun = _ref.projectBackgroundColor,
2295
+ projectBackgroundColor = _ref$projectBackgroun === void 0 ? "#fac465" : _ref$projectBackgroun,
2296
+ _ref$projectBackgroun2 = _ref.projectBackgroundSelectedColor,
2297
+ projectBackgroundSelectedColor = _ref$projectBackgroun2 === void 0 ? "#f7bb53" : _ref$projectBackgroun2,
2298
+ _ref$milestoneBackgro = _ref.milestoneBackgroundColor,
2299
+ milestoneBackgroundColor = _ref$milestoneBackgro === void 0 ? "#f1c453" : _ref$milestoneBackgro,
2300
+ _ref$milestoneBackgro2 = _ref.milestoneBackgroundSelectedColor,
2301
+ milestoneBackgroundSelectedColor = _ref$milestoneBackgro2 === void 0 ? "#f29e4c" : _ref$milestoneBackgro2,
2302
+ _ref$rtl = _ref.rtl,
2303
+ rtl = _ref$rtl === void 0 ? false : _ref$rtl,
2304
+ _ref$handleWidth = _ref.handleWidth,
2305
+ handleWidth = _ref$handleWidth === void 0 ? 8 : _ref$handleWidth,
2306
+ _ref$timeStep = _ref.timeStep,
2307
+ timeStep = _ref$timeStep === void 0 ? 300000 : _ref$timeStep,
2308
+ _ref$arrowColor = _ref.arrowColor,
2309
+ arrowColor = _ref$arrowColor === void 0 ? "grey" : _ref$arrowColor,
2310
+ _ref$fontFamily = _ref.fontFamily,
2311
+ fontFamily = _ref$fontFamily === void 0 ? "Arial, Roboto, Oxygen, Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue" : _ref$fontFamily,
2312
+ _ref$fontSize = _ref.fontSize,
2313
+ fontSize = _ref$fontSize === void 0 ? "14px" : _ref$fontSize,
2314
+ _ref$arrowIndent = _ref.arrowIndent,
2315
+ arrowIndent = _ref$arrowIndent === void 0 ? 20 : _ref$arrowIndent,
2316
+ _ref$todayColor = _ref.todayColor,
2317
+ todayColor = _ref$todayColor === void 0 ? "rgba(252, 248, 227, 0.5)" : _ref$todayColor,
2318
+ viewDate = _ref.viewDate,
2319
+ _ref$TooltipContent = _ref.TooltipContent,
2320
+ TooltipContent = _ref$TooltipContent === void 0 ? StandardTooltipContent : _ref$TooltipContent,
2321
+ _ref$TaskListHeader = _ref.TaskListHeader,
2322
+ TaskListHeader = _ref$TaskListHeader === void 0 ? TaskListHeaderDefault : _ref$TaskListHeader,
2323
+ _ref$TaskListTable = _ref.TaskListTable,
2324
+ TaskListTable = _ref$TaskListTable === void 0 ? TaskListTableDefault : _ref$TaskListTable,
2325
+ onDateChange = _ref.onDateChange,
2326
+ onProgressChange = _ref.onProgressChange,
2327
+ onDoubleClick = _ref.onDoubleClick,
2328
+ onClick = _ref.onClick,
2329
+ onDelete = _ref.onDelete,
2330
+ onSelect = _ref.onSelect,
2331
+ onExpanderClick = _ref.onExpanderClick;
2332
+ var wrapperRef = React.useRef(null);
2333
+ var taskListRef = React.useRef(null);
2334
+
2335
+ var _useState = React.useState(function () {
2336
+ var _ganttDateRange = ganttDateRange(tasks, viewMode, preStepsCount),
2337
+ startDate = _ganttDateRange[0],
2338
+ endDate = _ganttDateRange[1];
2339
+
2340
+ return {
2341
+ viewMode: viewMode,
2342
+ dates: seedDates(startDate, endDate, viewMode)
2343
+ };
2344
+ }),
2345
+ dateSetup = _useState[0],
2346
+ setDateSetup = _useState[1];
2347
+
2348
+ var _useState2 = React.useState(undefined),
2349
+ currentViewDate = _useState2[0],
2350
+ setCurrentViewDate = _useState2[1];
2351
+
2352
+ var _useState3 = React.useState(0),
2353
+ taskListWidth = _useState3[0],
2354
+ setTaskListWidth = _useState3[1];
2355
+
2356
+ var _useState4 = React.useState(0),
2357
+ svgContainerWidth = _useState4[0],
2358
+ setSvgContainerWidth = _useState4[1];
2359
+
2360
+ var _useState5 = React.useState(ganttHeight),
2361
+ svgContainerHeight = _useState5[0],
2362
+ setSvgContainerHeight = _useState5[1];
2363
+
2364
+ var _useState6 = React.useState([]),
2365
+ barTasks = _useState6[0],
2366
+ setBarTasks = _useState6[1];
2367
+
2368
+ var _useState7 = React.useState({
2369
+ action: ""
2370
+ }),
2371
+ ganttEvent = _useState7[0],
2372
+ setGanttEvent = _useState7[1];
2373
+
2374
+ var taskHeight = React.useMemo(function () {
2375
+ return rowHeight * barFill / 100;
2376
+ }, [rowHeight, barFill]);
2377
+
2378
+ var _useState8 = React.useState(),
2379
+ selectedTask = _useState8[0],
2380
+ setSelectedTask = _useState8[1];
2381
+
2382
+ var _useState9 = React.useState(null),
2383
+ failedTask = _useState9[0],
2384
+ setFailedTask = _useState9[1];
2385
+
2386
+ var svgWidth = dateSetup.dates.length * columnWidth;
2387
+ var ganttFullHeight = barTasks.length * rowHeight;
2388
+
2389
+ var _useState10 = React.useState(0),
2390
+ scrollY = _useState10[0],
2391
+ setScrollY = _useState10[1];
2392
+
2393
+ var _useState11 = React.useState(-1),
2394
+ scrollX = _useState11[0],
2395
+ setScrollX = _useState11[1];
2396
+
2397
+ var _useState12 = React.useState(false),
2398
+ ignoreScrollEvent = _useState12[0],
2399
+ setIgnoreScrollEvent = _useState12[1];
2400
+
2401
+ React.useEffect(function () {
2402
+ var filteredTasks;
2403
+
2404
+ if (onExpanderClick) {
2405
+ filteredTasks = removeHiddenTasks(tasks);
2406
+ } else {
2407
+ filteredTasks = tasks;
2408
+ }
2409
+
2410
+ filteredTasks = filteredTasks.sort(sortTasks);
2411
+
2412
+ var _ganttDateRange2 = ganttDateRange(filteredTasks, viewMode, preStepsCount),
2413
+ startDate = _ganttDateRange2[0],
2414
+ endDate = _ganttDateRange2[1];
2415
+
2416
+ var newDates = seedDates(startDate, endDate, viewMode);
2417
+
2418
+ if (rtl) {
2419
+ newDates = newDates.reverse();
2420
+
2421
+ if (scrollX === -1) {
2422
+ setScrollX(newDates.length * columnWidth);
2423
+ }
2424
+ }
2425
+
2426
+ setDateSetup({
2427
+ dates: newDates,
2428
+ viewMode: viewMode
2429
+ });
2430
+ setBarTasks(convertToBarTasks(filteredTasks, newDates, columnWidth, rowHeight, taskHeight, barCornerRadius, handleWidth, rtl, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor));
2431
+ }, [tasks, viewMode, preStepsCount, rowHeight, barCornerRadius, columnWidth, taskHeight, handleWidth, barProgressColor, barProgressSelectedColor, barBackgroundColor, barBackgroundSelectedColor, projectProgressColor, projectProgressSelectedColor, projectBackgroundColor, projectBackgroundSelectedColor, milestoneBackgroundColor, milestoneBackgroundSelectedColor, rtl, scrollX, onExpanderClick]);
2432
+ React.useEffect(function () {
2433
+ if (viewMode === dateSetup.viewMode && (viewDate && !currentViewDate || viewDate && (currentViewDate === null || currentViewDate === void 0 ? void 0 : currentViewDate.valueOf()) !== viewDate.valueOf())) {
2434
+ var dates = dateSetup.dates;
2435
+ var index = dates.findIndex(function (d, i) {
2436
+ return viewDate.valueOf() >= d.valueOf() && i + 1 !== dates.length && viewDate.valueOf() < dates[i + 1].valueOf();
2437
+ });
2438
+
2439
+ if (index === -1) {
2440
+ return;
2441
+ }
2442
+
2443
+ setCurrentViewDate(viewDate);
2444
+ setScrollX(columnWidth * index);
2445
+ }
2446
+ }, [viewDate, columnWidth, dateSetup.dates, dateSetup.viewMode, viewMode, currentViewDate, setCurrentViewDate]);
2447
+ React.useEffect(function () {
2448
+ var changedTask = ganttEvent.changedTask,
2449
+ action = ganttEvent.action;
2450
+
2451
+ if (changedTask) {
2452
+ if (action === "delete") {
2453
+ setGanttEvent({
2454
+ action: ""
2455
+ });
2456
+ setBarTasks(barTasks.filter(function (t) {
2457
+ return t.id !== changedTask.id;
2458
+ }));
2459
+ } else if (action === "move" || action === "end" || action === "start" || action === "progress") {
2460
+ var prevStateTask = barTasks.find(function (t) {
2461
+ return t.id === changedTask.id;
2462
+ });
2463
+
2464
+ if (prevStateTask && (prevStateTask.start.getTime() !== changedTask.start.getTime() || prevStateTask.end.getTime() !== changedTask.end.getTime() || prevStateTask.progress !== changedTask.progress)) {
2465
+ var newTaskList = barTasks.map(function (t) {
2466
+ return t.id === changedTask.id ? changedTask : t;
2467
+ });
2468
+ setBarTasks(newTaskList);
2469
+ }
2470
+ }
2471
+ }
2472
+ }, [ganttEvent, barTasks]);
2473
+ React.useEffect(function () {
2474
+ if (failedTask) {
2475
+ setBarTasks(barTasks.map(function (t) {
2476
+ return t.id !== failedTask.id ? t : failedTask;
2477
+ }));
2478
+ setFailedTask(null);
2479
+ }
2480
+ }, [failedTask, barTasks]);
2481
+ React.useEffect(function () {
2482
+ if (!listCellWidth) {
2483
+ setTaskListWidth(0);
2484
+ }
2485
+
2486
+ if (taskListRef.current) {
2487
+ setTaskListWidth(taskListRef.current.offsetWidth);
2488
+ }
2489
+ }, [taskListRef, listCellWidth]);
2490
+ React.useEffect(function () {
2491
+ if (wrapperRef.current) {
2492
+ setSvgContainerWidth(wrapperRef.current.offsetWidth - taskListWidth);
2493
+ }
2494
+ }, [wrapperRef, taskListWidth]);
2495
+ React.useEffect(function () {
2496
+ if (ganttHeight) {
2497
+ setSvgContainerHeight(ganttHeight + headerHeight);
2498
+ } else {
2499
+ setSvgContainerHeight(tasks.length * rowHeight + headerHeight);
2500
+ }
2501
+ }, [ganttHeight, tasks, headerHeight, rowHeight]);
2502
+ React.useEffect(function () {
2503
+ var _wrapperRef$current;
2504
+
2505
+ var handleWheel = function handleWheel(event) {
2506
+ if (event.shiftKey || event.deltaX) {
2507
+ var scrollMove = event.deltaX ? event.deltaX : event.deltaY;
2508
+ var newScrollX = scrollX + scrollMove;
2509
+
2510
+ if (newScrollX < 0) {
2511
+ newScrollX = 0;
2512
+ } else if (newScrollX > svgWidth) {
2513
+ newScrollX = svgWidth;
2514
+ }
2515
+
2516
+ setScrollX(newScrollX);
2517
+ event.preventDefault();
2518
+ } else if (ganttHeight) {
2519
+ var newScrollY = scrollY + event.deltaY;
2520
+
2521
+ if (newScrollY < 0) {
2522
+ newScrollY = 0;
2523
+ } else if (newScrollY > ganttFullHeight - ganttHeight) {
2524
+ newScrollY = ganttFullHeight - ganttHeight;
2525
+ }
2526
+
2527
+ if (newScrollY !== scrollY) {
2528
+ setScrollY(newScrollY);
2529
+ event.preventDefault();
2530
+ }
2531
+ }
2532
+
2533
+ setIgnoreScrollEvent(true);
2534
+ };
2535
+
2536
+ (_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 ? void 0 : _wrapperRef$current.addEventListener("wheel", handleWheel, {
2537
+ passive: false
2538
+ });
2539
+ return function () {
2540
+ var _wrapperRef$current2;
2541
+
2542
+ (_wrapperRef$current2 = wrapperRef.current) === null || _wrapperRef$current2 === void 0 ? void 0 : _wrapperRef$current2.removeEventListener("wheel", handleWheel);
2543
+ };
2544
+ }, [wrapperRef, scrollY, scrollX, ganttHeight, svgWidth, rtl, ganttFullHeight]);
2545
+
2546
+ var handleScrollY = function handleScrollY(event) {
2547
+ if (scrollY !== event.currentTarget.scrollTop && !ignoreScrollEvent) {
2548
+ setScrollY(event.currentTarget.scrollTop);
2549
+ setIgnoreScrollEvent(true);
2550
+ } else {
2551
+ setIgnoreScrollEvent(false);
2552
+ }
2553
+ };
2554
+
2555
+ var handleScrollX = function handleScrollX(event) {
2556
+ if (scrollX !== event.currentTarget.scrollLeft && !ignoreScrollEvent) {
2557
+ setScrollX(event.currentTarget.scrollLeft);
2558
+ setIgnoreScrollEvent(true);
2559
+ } else {
2560
+ setIgnoreScrollEvent(false);
2561
+ }
2562
+ };
2563
+
2564
+ var handleKeyDown = function handleKeyDown(event) {
2565
+ event.preventDefault();
2566
+ var newScrollY = scrollY;
2567
+ var newScrollX = scrollX;
2568
+ var isX = true;
2569
+
2570
+ switch (event.key) {
2571
+ case "Down":
2572
+ case "ArrowDown":
2573
+ newScrollY += rowHeight;
2574
+ isX = false;
2575
+ break;
2576
+
2577
+ case "Up":
2578
+ case "ArrowUp":
2579
+ newScrollY -= rowHeight;
2580
+ isX = false;
2581
+ break;
2582
+
2583
+ case "Left":
2584
+ case "ArrowLeft":
2585
+ newScrollX -= columnWidth;
2586
+ break;
2587
+
2588
+ case "Right":
2589
+ case "ArrowRight":
2590
+ newScrollX += columnWidth;
2591
+ break;
2592
+ }
2593
+
2594
+ if (isX) {
2595
+ if (newScrollX < 0) {
2596
+ newScrollX = 0;
2597
+ } else if (newScrollX > svgWidth) {
2598
+ newScrollX = svgWidth;
2599
+ }
2600
+
2601
+ setScrollX(newScrollX);
2602
+ } else {
2603
+ if (newScrollY < 0) {
2604
+ newScrollY = 0;
2605
+ } else if (newScrollY > ganttFullHeight - ganttHeight) {
2606
+ newScrollY = ganttFullHeight - ganttHeight;
2607
+ }
2608
+
2609
+ setScrollY(newScrollY);
2610
+ }
2611
+
2612
+ setIgnoreScrollEvent(true);
2613
+ };
2614
+
2615
+ var handleSelectedTask = function handleSelectedTask(taskId) {
2616
+ var newSelectedTask = barTasks.find(function (t) {
2617
+ return t.id === taskId;
2618
+ });
2619
+ var oldSelectedTask = barTasks.find(function (t) {
2620
+ return !!selectedTask && t.id === selectedTask.id;
2621
+ });
2622
+
2623
+ if (onSelect) {
2624
+ if (oldSelectedTask) {
2625
+ onSelect(oldSelectedTask, false);
2626
+ }
2627
+
2628
+ if (newSelectedTask) {
2629
+ onSelect(newSelectedTask, true);
2630
+ }
2631
+ }
2632
+
2633
+ setSelectedTask(newSelectedTask);
2634
+ };
2635
+
2636
+ var handleExpanderClick = function handleExpanderClick(task) {
2637
+ if (onExpanderClick && task.hideChildren !== undefined) {
2638
+ onExpanderClick(_extends({}, task, {
2639
+ hideChildren: !task.hideChildren
2640
+ }));
2641
+ }
2642
+ };
2643
+
2644
+ var gridProps = {
2645
+ columnWidth: columnWidth,
2646
+ svgWidth: svgWidth,
2647
+ tasks: tasks,
2648
+ rowHeight: rowHeight,
2649
+ dates: dateSetup.dates,
2650
+ todayColor: todayColor,
2651
+ rtl: rtl
2652
+ };
2653
+ var calendarProps = {
2654
+ dateSetup: dateSetup,
2655
+ locale: locale,
2656
+ viewMode: viewMode,
2657
+ headerHeight: headerHeight,
2658
+ columnWidth: columnWidth,
2659
+ fontFamily: fontFamily,
2660
+ fontSize: fontSize,
2661
+ rtl: rtl
2662
+ };
2663
+ var barProps = {
2664
+ tasks: barTasks,
2665
+ dates: dateSetup.dates,
2666
+ ganttEvent: ganttEvent,
2667
+ selectedTask: selectedTask,
2668
+ rowHeight: rowHeight,
2669
+ taskHeight: taskHeight,
2670
+ columnWidth: columnWidth,
2671
+ arrowColor: arrowColor,
2672
+ timeStep: timeStep,
2673
+ fontFamily: fontFamily,
2674
+ fontSize: fontSize,
2675
+ arrowIndent: arrowIndent,
2676
+ svgWidth: svgWidth,
2677
+ rtl: rtl,
2678
+ setGanttEvent: setGanttEvent,
2679
+ setFailedTask: setFailedTask,
2680
+ setSelectedTask: handleSelectedTask,
2681
+ onDateChange: onDateChange,
2682
+ onProgressChange: onProgressChange,
2683
+ onDoubleClick: onDoubleClick,
2684
+ onClick: onClick,
2685
+ onDelete: onDelete
2686
+ };
2687
+ var tableProps = {
2688
+ rowHeight: rowHeight,
2689
+ rowWidth: listCellWidth,
2690
+ fontFamily: fontFamily,
2691
+ fontSize: fontSize,
2692
+ tasks: barTasks,
2693
+ locale: locale,
2694
+ headerHeight: headerHeight,
2695
+ scrollY: scrollY,
2696
+ ganttHeight: ganttHeight,
2697
+ horizontalContainerClass: styles$9.horizontalContainer,
2698
+ selectedTask: selectedTask,
2699
+ taskListRef: taskListRef,
2700
+ setSelectedTask: handleSelectedTask,
2701
+ onExpanderClick: handleExpanderClick,
2702
+ TaskListHeader: TaskListHeader,
2703
+ TaskListTable: TaskListTable
2704
+ };
2705
+ return React__default.createElement("div", null, React__default.createElement("div", {
2706
+ className: styles$9.wrapper,
2707
+ onKeyDown: handleKeyDown,
2708
+ tabIndex: 0,
2709
+ ref: wrapperRef
2710
+ }, listCellWidth && React__default.createElement(TaskList, Object.assign({}, tableProps)), React__default.createElement(TaskGantt, {
2711
+ gridProps: gridProps,
2712
+ calendarProps: calendarProps,
2713
+ barProps: barProps,
2714
+ ganttHeight: ganttHeight,
2715
+ scrollY: scrollY,
2716
+ scrollX: scrollX
2717
+ }), ganttEvent.changedTask && React__default.createElement(Tooltip, {
2718
+ arrowIndent: arrowIndent,
2719
+ rowHeight: rowHeight,
2720
+ svgContainerHeight: svgContainerHeight,
2721
+ svgContainerWidth: svgContainerWidth,
2722
+ fontFamily: fontFamily,
2723
+ fontSize: fontSize,
2724
+ scrollX: scrollX,
2725
+ scrollY: scrollY,
2726
+ task: ganttEvent.changedTask,
2727
+ headerHeight: headerHeight,
2728
+ taskListWidth: taskListWidth,
2729
+ TooltipContent: TooltipContent,
2730
+ rtl: rtl,
2731
+ svgWidth: svgWidth
2732
+ }), React__default.createElement(VerticalScroll, {
2733
+ ganttFullHeight: ganttFullHeight,
2734
+ ganttHeight: ganttHeight,
2735
+ headerHeight: headerHeight,
2736
+ scroll: scrollY,
2737
+ onScroll: handleScrollY,
2738
+ rtl: rtl
2739
+ })), React__default.createElement(HorizontalScroll, {
2740
+ svgWidth: svgWidth,
2741
+ taskListWidth: taskListWidth,
2742
+ scroll: scrollX,
2743
+ rtl: rtl,
2744
+ onScroll: handleScrollX
2745
+ }));
2746
+ };
2747
+
2748
+ exports.Gantt = Gantt;
2749
+ //# sourceMappingURL=index.js.map