gantt-lib 0.131.0 → 0.132.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -39,6 +39,7 @@ __export(index_exports, {
39
39
  DatePicker: () => DatePicker,
40
40
  DragGuideLines: () => DragGuideLines_default,
41
41
  GanttChart: () => GanttChart,
42
+ GenerationSkeletonRows: () => GenerationSkeleton_default,
42
43
  GridBackground: () => GridBackground_default,
43
44
  Input: () => Input,
44
45
  PlanFactMatrix: () => PlanFactMatrix,
@@ -1479,7 +1480,7 @@ function resizeTaskWithCascade(taskId, anchor, newDate, snapshot, options) {
1479
1480
  const originalStart = parseDateOnly(task.startDate);
1480
1481
  const originalEnd = parseDateOnly(task.endDate);
1481
1482
  let newRange;
1482
- if (anchor === "end") {
1483
+ if (anchor === "start") {
1483
1484
  newRange = { start: originalStart, end: newDate };
1484
1485
  } else {
1485
1486
  newRange = { start: newDate, end: originalEnd };
@@ -8642,6 +8643,55 @@ var NewTaskRow = ({
8642
8643
  ] });
8643
8644
  };
8644
8645
 
8646
+ // src/components/GenerationSkeleton/GenerationSkeleton.tsx
8647
+ var import_jsx_runtime16 = require("react/jsx-runtime");
8648
+ var MAX_SKELETON_ROWS = 200;
8649
+ function clampCount(count) {
8650
+ if (!Number.isFinite(count)) return 0;
8651
+ return Math.min(MAX_SKELETON_ROWS, Math.max(0, Math.floor(count)));
8652
+ }
8653
+ var GenerationSkeletonRows = ({
8654
+ count,
8655
+ rowHeight,
8656
+ variant,
8657
+ startIndex = 0,
8658
+ taskListLayout,
8659
+ chartDayWidth = 40
8660
+ }) => {
8661
+ const safeCount = clampCount(count);
8662
+ if (safeCount === 0) return null;
8663
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
8664
+ "div",
8665
+ {
8666
+ className: `gantt-generation-skeleton gantt-generation-skeleton-${variant}`,
8667
+ "aria-hidden": "true",
8668
+ style: taskListLayout ? {
8669
+ "--skeleton-name-left": `${taskListLayout.nameLeft}px`,
8670
+ "--skeleton-name-width": `${taskListLayout.nameWidth}px`
8671
+ } : void 0,
8672
+ children: Array.from({ length: safeCount }, (_, index) => {
8673
+ const rowIndex = startIndex + index;
8674
+ const parentShape = rowIndex % 4 === 0;
8675
+ const shortShape = rowIndex % 3 === 1;
8676
+ const mediumShape = rowIndex % 3 === 2;
8677
+ const chartBarDays = 5 + rowIndex % 6;
8678
+ const chartBarStyle = variant === "chart" ? { width: `${chartBarDays * Math.max(1, chartDayWidth)}px` } : void 0;
8679
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
8680
+ "div",
8681
+ {
8682
+ className: "gantt-generation-skeleton-row",
8683
+ style: { top: `${rowIndex * rowHeight}px`, height: `${rowHeight}px` },
8684
+ children: variant === "task-list" ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_jsx_runtime16.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: `gantt-generation-skeleton-label ${shortShape ? "gantt-generation-skeleton-label-short" : ""} ${mediumShape ? "gantt-generation-skeleton-label-medium" : ""}` }) }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: `gantt-generation-skeleton-bar ${parentShape ? "gantt-generation-skeleton-bar-parent" : ""} ${shortShape ? "gantt-generation-skeleton-bar-short" : ""}`, style: chartBarStyle })
8685
+ },
8686
+ rowIndex
8687
+ );
8688
+ })
8689
+ }
8690
+ );
8691
+ };
8692
+ GenerationSkeletonRows.displayName = "GenerationSkeletonRows";
8693
+ var GenerationSkeleton_default = GenerationSkeletonRows;
8694
+
8645
8695
  // src/components/TaskList/columns/createBuiltInColumns.tsx
8646
8696
  var BUILT_IN_COLUMN_WIDTHS = {
8647
8697
  selection: 36,
@@ -8729,7 +8779,7 @@ function resolveTaskListColumns(builtIn, custom, hiddenColumnIds = []) {
8729
8779
  }
8730
8780
 
8731
8781
  // src/components/TaskList/TaskList.tsx
8732
- var import_jsx_runtime16 = require("react/jsx-runtime");
8782
+ var import_jsx_runtime17 = require("react/jsx-runtime");
8733
8783
  var LINK_TYPE_ORDER2 = ["FS", "SS", "FF", "SF"];
8734
8784
  var MIN_TASK_LIST_WIDTH = 530;
8735
8785
  var DEFAULT_COLUMN_MIN_WIDTH = 40;
@@ -8867,7 +8917,7 @@ var SelectAllCheckbox = ({
8867
8917
  ref.current.indeterminate = indeterminate;
8868
8918
  }
8869
8919
  }, [indeterminate]);
8870
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
8920
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
8871
8921
  "input",
8872
8922
  {
8873
8923
  ref,
@@ -8936,7 +8986,8 @@ var TaskList = ({
8936
8986
  bodyMinHeight,
8937
8987
  taskDateChangeMode = "preserve-duration",
8938
8988
  onTaskDateChangeModeChange,
8939
- visibleRowIndices
8989
+ visibleRowIndices,
8990
+ skeletonRowCount = 0
8940
8991
  }) => {
8941
8992
  const reorderDisabled = disableTaskListReorder || disableTaskDrag;
8942
8993
  const [internalSelectedTaskIds, setInternalSelectedTaskIds] = (0, import_react13.useState)(/* @__PURE__ */ new Set());
@@ -8990,8 +9041,8 @@ var TaskList = ({
8990
9041
  return tasks2;
8991
9042
  }, [orderedTasks, collapsedParentIds, filterMode, filteredTaskIds, isFilterActive, criticalPathMode, criticalTaskIds]);
8992
9043
  const totalHeight = (0, import_react13.useMemo)(
8993
- () => visibleTasks.length * rowHeight,
8994
- [visibleTasks.length, rowHeight]
9044
+ () => (visibleTasks.length + Math.max(0, Math.floor(skeletonRowCount))) * rowHeight,
9045
+ [rowHeight, skeletonRowCount, visibleTasks.length]
8995
9046
  );
8996
9047
  const visibleTaskNumberMap = (0, import_react13.useMemo)(
8997
9048
  () => Object.fromEntries(
@@ -9679,6 +9730,22 @@ var TaskList = ({
9679
9730
  () => resolvedColumns.reduce((sum, col) => sum + (col.width ?? 120), 0),
9680
9731
  [resolvedColumns]
9681
9732
  );
9733
+ const generationSkeletonTaskListLayout = (0, import_react13.useMemo)(() => {
9734
+ let left = 0;
9735
+ const layout = {
9736
+ nameLeft: 40,
9737
+ nameWidth: 200
9738
+ };
9739
+ for (const column of resolvedColumns) {
9740
+ const width = column.width ?? 120;
9741
+ if (column.id === "name") {
9742
+ layout.nameLeft = left;
9743
+ layout.nameWidth = width;
9744
+ }
9745
+ left += width;
9746
+ }
9747
+ return layout;
9748
+ }, [resolvedColumns]);
9682
9749
  const requestedTaskListWidth = taskListWidth ?? Math.min(MIN_TASK_LIST_WIDTH, resolvedColumnWidthTotal);
9683
9750
  const effectiveTaskListWidth = Math.max(requestedTaskListWidth, resolvedColumnWidthTotal);
9684
9751
  const tableHeaderHeight = headerHeight + 1;
@@ -9740,7 +9807,7 @@ var TaskList = ({
9740
9807
  document.body.style.cursor = "col-resize";
9741
9808
  document.body.style.userSelect = "none";
9742
9809
  }, [resolvedColumns]);
9743
- const renderResizeHandle = (0, import_react13.useCallback)((columnId) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
9810
+ const renderResizeHandle = (0, import_react13.useCallback)((columnId) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9744
9811
  "button",
9745
9812
  {
9746
9813
  type: "button",
@@ -9754,7 +9821,7 @@ var TaskList = ({
9754
9821
  }
9755
9822
  }
9756
9823
  ), [startColumnResize]);
9757
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
9824
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9758
9825
  "div",
9759
9826
  {
9760
9827
  ref: overlayRef,
@@ -9763,17 +9830,17 @@ var TaskList = ({
9763
9830
  "--tasklist-width": `${effectiveTaskListWidth}px`,
9764
9831
  "--gantt-row-content-lines": String(Math.max(2, Math.floor(rowContentLines)))
9765
9832
  },
9766
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "gantt-tl-table", children: [
9767
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "gantt-tl-header", style: { height: `${tableHeaderHeight}px` }, children: resolvedColumns.map((col) => {
9833
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "gantt-tl-table", children: [
9834
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "gantt-tl-header", style: { height: `${tableHeaderHeight}px` }, children: resolvedColumns.map((col) => {
9768
9835
  if (col.id === "selection") {
9769
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
9836
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9770
9837
  "div",
9771
9838
  {
9772
9839
  className: "gantt-tl-headerCell gantt-tl-cell-selection",
9773
9840
  "data-column-id": "selection",
9774
9841
  style: { width: col.width, minWidth: col.width, maxWidth: col.width, flex: `0 0 ${col.width}px`, position: "relative" },
9775
9842
  children: [
9776
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
9843
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9777
9844
  SelectAllCheckbox,
9778
9845
  {
9779
9846
  checked: areAllVisibleTasksSelected,
@@ -9788,15 +9855,15 @@ var TaskList = ({
9788
9855
  );
9789
9856
  }
9790
9857
  if (col.id === "dependencies") {
9791
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
9858
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9792
9859
  "div",
9793
9860
  {
9794
9861
  className: "gantt-tl-headerCell gantt-tl-cell-deps",
9795
9862
  "data-column-id": "dependencies",
9796
9863
  style: { width: col.width, minWidth: col.width, maxWidth: col.width, flex: `0 0 ${col.width}px`, position: "relative" },
9797
9864
  children: [
9798
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(Popover, { open: typeMenuOpen, onOpenChange: setTypeMenuOpen, children: [
9799
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
9865
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Popover, { open: typeMenuOpen, onOpenChange: setTypeMenuOpen, children: [
9866
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9800
9867
  "button",
9801
9868
  {
9802
9869
  className: "gantt-tl-dep-type-trigger",
@@ -9809,7 +9876,7 @@ var TaskList = ({
9809
9876
  ]
9810
9877
  }
9811
9878
  ) }),
9812
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(PopoverContent, { portal: true, align: "start", children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "gantt-tl-dep-type-menu", children: LINK_TYPE_ORDER2.map((lt) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
9879
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverContent, { portal: true, align: "start", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "gantt-tl-dep-type-menu", children: LINK_TYPE_ORDER2.map((lt) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9813
9880
  "button",
9814
9881
  {
9815
9882
  className: `gantt-tl-dep-type-option${activeLinkType === lt ? " active" : ""}`,
@@ -9819,13 +9886,13 @@ var TaskList = ({
9819
9886
  },
9820
9887
  children: [
9821
9888
  import_react13.default.createElement(LINK_TYPE_ICONS[lt]),
9822
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { children: LINK_TYPE_LABELS[lt] })
9889
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: LINK_TYPE_LABELS[lt] })
9823
9890
  ]
9824
9891
  },
9825
9892
  lt
9826
9893
  )) }) })
9827
9894
  ] }),
9828
- dependencyError && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "gantt-tl-dep-error", children: dependencyError }),
9895
+ dependencyError && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "gantt-tl-dep-error", children: dependencyError }),
9829
9896
  renderResizeHandle(col.id)
9830
9897
  ]
9831
9898
  },
@@ -9834,7 +9901,7 @@ var TaskList = ({
9834
9901
  }
9835
9902
  const builtInClass = BUILT_IN_CSS_CLASSES[col.id];
9836
9903
  if (builtInClass !== void 0) {
9837
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
9904
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9838
9905
  "div",
9839
9906
  {
9840
9907
  className: `gantt-tl-headerCell ${builtInClass}`,
@@ -9848,7 +9915,7 @@ var TaskList = ({
9848
9915
  col.id
9849
9916
  );
9850
9917
  }
9851
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
9918
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9852
9919
  "div",
9853
9920
  {
9854
9921
  className: `gantt-tl-headerCell gantt-tl-headerCell-custom gantt-tl-cell-align-${col.align ?? "left"}`,
@@ -9863,7 +9930,7 @@ var TaskList = ({
9863
9930
  col.id
9864
9931
  );
9865
9932
  }) }),
9866
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
9933
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
9867
9934
  "div",
9868
9935
  {
9869
9936
  className: "gantt-tl-body",
@@ -9873,7 +9940,7 @@ var TaskList = ({
9873
9940
  position: "relative"
9874
9941
  },
9875
9942
  children: [
9876
- shouldShowBeforeFirstDropZone && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
9943
+ shouldShowBeforeFirstDropZone && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9877
9944
  "div",
9878
9945
  {
9879
9946
  className: [
@@ -9890,7 +9957,7 @@ var TaskList = ({
9890
9957
  const previousVisibleTask = index > 0 ? visibleTasks[index - 1] : void 0;
9891
9958
  const canDemoteTask = index === 0 || !task.parentId || previousVisibleTask?.id !== task.parentId;
9892
9959
  const topOffset = index * rowHeight + (hasVisiblePendingInsert && index > pendingInsertRowIndex ? rowHeight : 0);
9893
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
9960
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9894
9961
  "div",
9895
9962
  {
9896
9963
  style: {
@@ -9899,7 +9966,7 @@ var TaskList = ({
9899
9966
  left: 0,
9900
9967
  right: 0
9901
9968
  },
9902
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
9969
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9903
9970
  TaskListRow,
9904
9971
  {
9905
9972
  task,
@@ -9973,7 +10040,7 @@ var TaskList = ({
9973
10040
  task.id
9974
10041
  );
9975
10042
  }),
9976
- hasVisiblePendingInsert && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
10043
+ hasVisiblePendingInsert && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9977
10044
  "div",
9978
10045
  {
9979
10046
  style: {
@@ -9982,7 +10049,7 @@ var TaskList = ({
9982
10049
  left: 0,
9983
10050
  right: 0
9984
10051
  },
9985
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
10052
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
9986
10053
  NewTaskRow,
9987
10054
  {
9988
10055
  rowHeight,
@@ -9992,11 +10059,21 @@ var TaskList = ({
9992
10059
  }
9993
10060
  )
9994
10061
  }
10062
+ ),
10063
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
10064
+ GenerationSkeleton_default,
10065
+ {
10066
+ count: skeletonRowCount,
10067
+ rowHeight,
10068
+ variant: "task-list",
10069
+ startIndex: visibleTasks.length,
10070
+ taskListLayout: generationSkeletonTaskListLayout
10071
+ }
9995
10072
  )
9996
10073
  ]
9997
10074
  }
9998
10075
  ),
9999
- isCreating && !pendingInsert && /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
10076
+ isCreating && !pendingInsert && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
10000
10077
  NewTaskRow,
10001
10078
  {
10002
10079
  rowHeight,
@@ -10005,7 +10082,7 @@ var TaskList = ({
10005
10082
  nestingDepth: 0
10006
10083
  }
10007
10084
  ),
10008
- enableAddTask && onAdd && !isCreating && !pendingInsert && /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
10085
+ enableAddTask && onAdd && !isCreating && !pendingInsert && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
10009
10086
  "button",
10010
10087
  {
10011
10088
  className: `gantt-tl-add-btn${!reorderDisabled && dragOverTarget?.index === visibleTasks.length ? " gantt-tl-add-btn-drag-over" : ""}`,
@@ -10499,7 +10576,7 @@ var useResourceItemDrag = ({
10499
10576
  };
10500
10577
 
10501
10578
  // src/components/ResourceTimelineChart/ResourceTimelineChart.tsx
10502
- var import_jsx_runtime17 = require("react/jsx-runtime");
10579
+ var import_jsx_runtime18 = require("react/jsx-runtime");
10503
10580
  var DEFAULT_DAY_WIDTH = 40;
10504
10581
  var DEFAULT_HEADER_HEIGHT = 40;
10505
10582
  var DEFAULT_LANE_HEIGHT = 40;
@@ -10662,41 +10739,41 @@ var orderResourcesByType = (resources) => {
10662
10739
  };
10663
10740
  var ResourceTypeIcon = ({ type }) => {
10664
10741
  if (type === "\u041B\u044E\u0434\u0438") {
10665
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("svg", { className: "gantt-resourceTimeline-resourceTypeIcon gantt-resourceTimeline-resourceTypeIconPeople", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
10666
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }),
10667
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("circle", { cx: "9", cy: "7", r: "4" }),
10668
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "M22 21v-2a4 4 0 0 0-3-3.87" }),
10669
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })
10742
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("svg", { className: "gantt-resourceTimeline-resourceTypeIcon gantt-resourceTimeline-resourceTypeIconPeople", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
10743
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }),
10744
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("circle", { cx: "9", cy: "7", r: "4" }),
10745
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M22 21v-2a4 4 0 0 0-3-3.87" }),
10746
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })
10670
10747
  ] });
10671
10748
  }
10672
10749
  if (type === "\u041E\u0431\u043E\u0440\u0443\u0434\u043E\u0432\u0430\u043D\u0438\u0435") {
10673
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("svg", { className: "gantt-resourceTimeline-resourceTypeIcon gantt-resourceTimeline-resourceTypeIconEquipment", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
10674
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9" }),
10675
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "m18 15 4-4" }),
10676
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5" })
10750
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("svg", { className: "gantt-resourceTimeline-resourceTypeIcon gantt-resourceTimeline-resourceTypeIconEquipment", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
10751
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9" }),
10752
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "m18 15 4-4" }),
10753
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5" })
10677
10754
  ] });
10678
10755
  }
10679
10756
  if (type === "\u041C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B") {
10680
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("svg", { className: "gantt-resourceTimeline-resourceTypeIcon gantt-resourceTimeline-resourceTypeIconMaterials", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
10681
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "M10 22v-8" }),
10682
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "M2.336 8.89 10 14l11.715-7.029" }),
10683
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "M22 14a2 2 0 0 1-.971 1.715l-10 6a2 2 0 0 1-2.138-.05l-6-4A2 2 0 0 1 2 16v-6a2 2 0 0 1 .971-1.715l10-6a2 2 0 0 1 2.138.05l6 4A2 2 0 0 1 22 8z" })
10757
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("svg", { className: "gantt-resourceTimeline-resourceTypeIcon gantt-resourceTimeline-resourceTypeIconMaterials", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
10758
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M10 22v-8" }),
10759
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M2.336 8.89 10 14l11.715-7.029" }),
10760
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M22 14a2 2 0 0 1-.971 1.715l-10 6a2 2 0 0 1-2.138-.05l-6-4A2 2 0 0 1 2 16v-6a2 2 0 0 1 .971-1.715l10-6a2 2 0 0 1 2.138.05l6 4A2 2 0 0 1 22 8z" })
10684
10761
  ] });
10685
10762
  }
10686
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("svg", { className: "gantt-resourceTimeline-resourceTypeIcon gantt-resourceTimeline-resourceTypeIconOther", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
10687
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("circle", { cx: "12", cy: "12", r: "9" }),
10688
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "M12 8v4" }),
10689
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "M12 16h.01" })
10763
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("svg", { className: "gantt-resourceTimeline-resourceTypeIcon gantt-resourceTimeline-resourceTypeIconOther", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
10764
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("circle", { cx: "12", cy: "12", r: "9" }),
10765
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M12 8v4" }),
10766
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M12 16h.01" })
10690
10767
  ] });
10691
10768
  };
10692
- var ResourceTypeDropdownIcon = () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("svg", { className: "gantt-resourceTimeline-resourceTypeDropdownIcon", width: "10", height: "10", viewBox: "0 0 10 10", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "M2 3.5 5 6.5 8 3.5" }) });
10693
- var ResourceGroupChevronIcon = () => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("svg", { className: "gantt-resourceTimeline-resourceGroupChevronIcon", width: "12", height: "12", viewBox: "0 0 12 12", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "M4 2.5 7.5 6 4 9.5" }) });
10769
+ var ResourceTypeDropdownIcon = () => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("svg", { className: "gantt-resourceTimeline-resourceTypeDropdownIcon", width: "10", height: "10", viewBox: "0 0 10 10", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M2 3.5 5 6.5 8 3.5" }) });
10770
+ var ResourceGroupChevronIcon = () => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("svg", { className: "gantt-resourceTimeline-resourceGroupChevronIcon", width: "12", height: "12", viewBox: "0 0 12 12", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M4 2.5 7.5 6 4 9.5" }) });
10694
10771
  function isInactiveResourceStatus(status) {
10695
10772
  return status?.trim().toLocaleLowerCase() === "inactive";
10696
10773
  }
10697
- var ResourceStatusLockIcon = () => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("svg", { className: "gantt-resourceTimeline-resourceStatusIcon", width: "12", height: "12", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
10698
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("rect", { x: "5", y: "11", width: "14", height: "10", rx: "2" }),
10699
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("path", { d: "M8 11V8a4 4 0 1 1 8 0v3" })
10774
+ var ResourceStatusLockIcon = () => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("svg", { className: "gantt-resourceTimeline-resourceStatusIcon", width: "12", height: "12", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
10775
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("rect", { x: "5", y: "11", width: "14", height: "10", rx: "2" }),
10776
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M8 11V8a4 4 0 1 1 8 0v3" })
10700
10777
  ] });
10701
10778
  var ResourceHeader = ({
10702
10779
  resource,
@@ -10786,7 +10863,7 @@ var ResourceHeader = ({
10786
10863
  handleNameCancel();
10787
10864
  }
10788
10865
  }, [applyResourcePatch, handleNameCancel, nameValue, resource.name]);
10789
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
10866
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
10790
10867
  "div",
10791
10868
  {
10792
10869
  className: `gantt-resourceTimeline-resourceHeader${menuOpen ? " gantt-resourceTimeline-resourceHeaderMenuOpen" : ""}${isInactive ? " gantt-resourceTimeline-resourceHeaderInactive" : ""}`,
@@ -10797,10 +10874,10 @@ var ResourceHeader = ({
10797
10874
  gridTemplateColumns: columnTemplate
10798
10875
  },
10799
10876
  children: [
10800
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-resourceNumber", children: rowIndex + 1 }),
10801
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "gantt-resourceTimeline-resourceName", children: [
10802
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Popover, { open: typeMenuOpen, onOpenChange: setTypeMenuOpen, children: [
10803
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
10877
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceNumber", children: rowIndex + 1 }),
10878
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceName", children: [
10879
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Popover, { open: typeMenuOpen, onOpenChange: setTypeMenuOpen, children: [
10880
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
10804
10881
  "button",
10805
10882
  {
10806
10883
  type: "button",
@@ -10813,12 +10890,12 @@ var ResourceHeader = ({
10813
10890
  setTypeMenuOpen((open) => !open);
10814
10891
  },
10815
10892
  children: [
10816
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ResourceTypeIcon, { type }),
10817
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ResourceTypeDropdownIcon, {})
10893
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ResourceTypeIcon, { type }),
10894
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ResourceTypeDropdownIcon, {})
10818
10895
  ]
10819
10896
  }
10820
10897
  ) }),
10821
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverContent, { className: "gantt-resourceTimeline-resourceOptionMenu", portal: true, align: "start", children: RESOURCE_TYPE_OPTIONS.map((option) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
10898
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverContent, { className: "gantt-resourceTimeline-resourceOptionMenu", portal: true, align: "start", children: RESOURCE_TYPE_OPTIONS.map((option) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
10822
10899
  "button",
10823
10900
  {
10824
10901
  type: "button",
@@ -10829,14 +10906,14 @@ var ResourceHeader = ({
10829
10906
  applyResourcePatch({ type: option });
10830
10907
  },
10831
10908
  children: [
10832
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-resourceOptionIcon", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ResourceTypeIcon, { type: option }) }),
10909
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceOptionIcon", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ResourceTypeIcon, { type: option }) }),
10833
10910
  option
10834
10911
  ]
10835
10912
  },
10836
10913
  option
10837
10914
  )) })
10838
10915
  ] }),
10839
- editingName ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
10916
+ editingName ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10840
10917
  Input,
10841
10918
  {
10842
10919
  ref: nameInputRef,
@@ -10848,7 +10925,7 @@ var ResourceHeader = ({
10848
10925
  "aria-label": `\u041D\u043E\u0432\u043E\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 ${resource.name}`,
10849
10926
  className: "gantt-tl-name-input gantt-resourceTimeline-resourceNameInput"
10850
10927
  }
10851
- ) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
10928
+ ) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10852
10929
  "button",
10853
10930
  {
10854
10931
  type: "button",
@@ -10860,23 +10937,23 @@ var ResourceHeader = ({
10860
10937
  onResourceNameClick?.(resourceId);
10861
10938
  },
10862
10939
  onDoubleClick: handleNameDoubleClick,
10863
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "gantt-resourceTimeline-resourceNameContent", children: [
10864
- isInactive && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
10940
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceNameContent", children: [
10941
+ isInactive && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10865
10942
  "span",
10866
10943
  {
10867
10944
  className: "gantt-resourceTimeline-resourceStatusMarker",
10868
10945
  "aria-label": `\u0420\u0435\u0441\u0443\u0440\u0441 ${resource.name} \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u0435\u043D`,
10869
10946
  title: "\u041D\u0435\u0430\u043A\u0442\u0438\u0432\u0435\u043D",
10870
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ResourceStatusLockIcon, {})
10947
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ResourceStatusLockIcon, {})
10871
10948
  }
10872
10949
  ),
10873
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-resourceNameText", children: resource.name })
10950
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceNameText", children: resource.name })
10874
10951
  ] })
10875
10952
  }
10876
10953
  )
10877
10954
  ] }),
10878
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Popover, { open: scopeMenuOpen, onOpenChange: setScopeMenuOpen, children: [
10879
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
10955
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Popover, { open: scopeMenuOpen, onOpenChange: setScopeMenuOpen, children: [
10956
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10880
10957
  "button",
10881
10958
  {
10882
10959
  type: "button",
@@ -10887,10 +10964,10 @@ var ResourceHeader = ({
10887
10964
  event.stopPropagation();
10888
10965
  setScopeMenuOpen((open) => !open);
10889
10966
  },
10890
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: scopeLabel })
10967
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: scopeLabel })
10891
10968
  }
10892
10969
  ) }),
10893
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverContent, { className: "gantt-resourceTimeline-resourceOptionMenu", portal: true, align: "start", children: RESOURCE_SCOPE_OPTIONS.map((option) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
10970
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverContent, { className: "gantt-resourceTimeline-resourceOptionMenu", portal: true, align: "start", children: RESOURCE_SCOPE_OPTIONS.map((option) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
10894
10971
  "button",
10895
10972
  {
10896
10973
  type: "button",
@@ -10901,35 +10978,35 @@ var ResourceHeader = ({
10901
10978
  applyResourcePatch({ scope: option });
10902
10979
  },
10903
10980
  children: [
10904
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: `gantt-resourceTimeline-resourceOptionScopeDot gantt-resourceTimeline-resourceScope${option}` }),
10981
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: `gantt-resourceTimeline-resourceOptionScopeDot gantt-resourceTimeline-resourceScope${option}` }),
10905
10982
  RESOURCE_SCOPE_LABELS[option] ?? option
10906
10983
  ]
10907
10984
  },
10908
10985
  option
10909
10986
  )) })
10910
10987
  ] }),
10911
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
10988
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
10912
10989
  "span",
10913
10990
  {
10914
10991
  className: "gantt-resourceTimeline-resourceAssignments",
10915
10992
  "aria-label": `\u041D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0440\u0435\u0441\u0443\u0440\u0441\u0430 ${resource.name}: ${assignmentCount}, ${workedDays} \u0434\u043D.`,
10916
10993
  children: [
10917
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "gantt-resourceTimeline-resourceWorkedDays", children: [
10918
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-resourceMetricValue", children: workedDays > 0 ? workedDays : "-" }),
10919
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-resourceMetricLabel", children: workedDays > 0 ? "\u0434\u043D." : "" })
10994
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceWorkedDays", children: [
10995
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceMetricValue", children: workedDays > 0 ? workedDays : "-" }),
10996
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceMetricLabel", children: workedDays > 0 ? "\u0434\u043D." : "" })
10920
10997
  ] }),
10921
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "gantt-resourceTimeline-resourceAssignmentCount", children: [
10922
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-resourceMetricValue", children: assignmentCount > 0 ? assignmentCount : "" }),
10923
- assignmentCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("svg", { className: "gantt-resourceTimeline-resourceAssignmentIcon", width: "14", height: "14", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
10924
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("rect", { width: "15", height: "5", x: "4", y: "5", rx: "2" }),
10925
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("rect", { width: "10", height: "5", x: "4", y: "14", rx: "2" })
10998
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceAssignmentCount", children: [
10999
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceMetricValue", children: assignmentCount > 0 ? assignmentCount : "" }),
11000
+ assignmentCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("svg", { className: "gantt-resourceTimeline-resourceAssignmentIcon", width: "14", height: "14", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
11001
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("rect", { width: "15", height: "5", x: "4", y: "5", rx: "2" }),
11002
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("rect", { width: "10", height: "5", x: "4", y: "14", rx: "2" })
10926
11003
  ] })
10927
11004
  ] })
10928
11005
  ]
10929
11006
  }
10930
11007
  ),
10931
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "gantt-resourceTimeline-resourceActions", children: [
10932
- conflictCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11008
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceActions", children: [
11009
+ conflictCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10933
11010
  "button",
10934
11011
  {
10935
11012
  type: "button",
@@ -10943,8 +11020,8 @@ var ResourceHeader = ({
10943
11020
  children: conflictCount
10944
11021
  }
10945
11022
  ),
10946
- hasMenu && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Popover, { open: menuOpen, onOpenChange: setMenuOpen, children: [
10947
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11023
+ hasMenu && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Popover, { open: menuOpen, onOpenChange: setMenuOpen, children: [
11024
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
10948
11025
  "button",
10949
11026
  {
10950
11027
  className: "gantt-resourceTimeline-resourceMenuButton",
@@ -10954,10 +11031,10 @@ var ResourceHeader = ({
10954
11031
  event.stopPropagation();
10955
11032
  setMenuOpen((open) => !open);
10956
11033
  },
10957
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { "aria-hidden": "true", children: "\u22EE" })
11034
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { "aria-hidden": "true", children: "\u22EE" })
10958
11035
  }
10959
11036
  ) }),
10960
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverContent, { className: "gantt-resourceTimeline-resourceMenu", portal: true, align: "end", children: visibleCommands.map((command) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
11037
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverContent, { className: "gantt-resourceTimeline-resourceMenu", portal: true, align: "end", children: visibleCommands.map((command) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
10961
11038
  "button",
10962
11039
  {
10963
11040
  type: "button",
@@ -11010,7 +11087,7 @@ var NewResourceRow = ({ height, onConfirm, onCancel, columnTemplate }) => {
11010
11087
  handleConfirm();
11011
11088
  }
11012
11089
  };
11013
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
11090
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
11014
11091
  "div",
11015
11092
  {
11016
11093
  className: "gantt-resourceTimeline-resourceHeader gantt-resourceTimeline-resourceHeaderNew",
@@ -11020,8 +11097,8 @@ var NewResourceRow = ({ height, onConfirm, onCancel, columnTemplate }) => {
11020
11097
  gridTemplateColumns: columnTemplate
11021
11098
  },
11022
11099
  children: [
11023
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-resourceNumber", children: "+" }),
11024
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11100
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceNumber", children: "+" }),
11101
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11025
11102
  Input,
11026
11103
  {
11027
11104
  ref: inputRef,
@@ -11200,7 +11277,7 @@ function ResourceTimelineChart({
11200
11277
  document.body.style.cursor = "col-resize";
11201
11278
  document.body.style.userSelect = "none";
11202
11279
  }, [resolvedResourceColumnWidths]);
11203
- const renderResizeHandle = (0, import_react15.useCallback)((columnId) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11280
+ const renderResizeHandle = (0, import_react15.useCallback)((columnId) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11204
11281
  "button",
11205
11282
  {
11206
11283
  type: "button",
@@ -11511,7 +11588,7 @@ function ResourceTimelineChart({
11511
11588
  }
11512
11589
  };
11513
11590
  }, []);
11514
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "gantt-container gantt-resourceTimeline", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11591
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "gantt-container gantt-resourceTimeline", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11515
11592
  "div",
11516
11593
  {
11517
11594
  ref: scrollContainerRef,
@@ -11522,44 +11599,44 @@ function ResourceTimelineChart({
11522
11599
  },
11523
11600
  "data-allow-vertical-pan": allowVerticalPan ? "true" : "false",
11524
11601
  onMouseDown: handlePanStart,
11525
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "gantt-resourceTimeline-scrollContent", children: [
11526
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
11602
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gantt-resourceTimeline-scrollContent", children: [
11603
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
11527
11604
  "div",
11528
11605
  {
11529
11606
  className: `gantt-resourceTimeline-resourceColumn${resourceColumnHasRightShadow ? " gantt-resourceTimeline-resourceColumnShadowed" : ""}`,
11530
11607
  style: { width: `${effectiveRowHeaderWidth}px`, minWidth: `${effectiveRowHeaderWidth}px` },
11531
11608
  children: [
11532
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
11609
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
11533
11610
  "div",
11534
11611
  {
11535
11612
  className: "gantt-resourceTimeline-corner",
11536
11613
  style: { height: `${timelineHeaderHeight}px`, gridTemplateColumns: resourceColumnTemplate },
11537
11614
  children: [
11538
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "gantt-resourceTimeline-resourceHeaderCell gantt-resourceTimeline-resourceHeaderNumber", children: [
11615
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceHeaderCell gantt-resourceTimeline-resourceHeaderNumber", children: [
11539
11616
  "#",
11540
11617
  renderResizeHandle("number")
11541
11618
  ] }),
11542
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "gantt-resourceTimeline-resourceHeaderCell gantt-resourceTimeline-resourceHeaderName", children: [
11619
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceHeaderCell gantt-resourceTimeline-resourceHeaderName", children: [
11543
11620
  "\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435",
11544
11621
  renderResizeHandle("name")
11545
11622
  ] }),
11546
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-resourceHeaderCell", "aria-label": "\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u044C", children: renderResizeHandle("availability") }),
11547
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "gantt-resourceTimeline-resourceHeaderCell", children: [
11623
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceHeaderCell", "aria-label": "\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u044C", children: renderResizeHandle("availability") }),
11624
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceHeaderCell", children: [
11548
11625
  "\u041D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F",
11549
11626
  renderResizeHandle("assignments")
11550
11627
  ] }),
11551
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-resourceHeaderCell gantt-resourceTimeline-resourceHeaderActions", "aria-label": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F", children: renderResizeHandle("actions") })
11628
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceHeaderCell gantt-resourceTimeline-resourceHeaderActions", "aria-label": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F", children: renderResizeHandle("actions") })
11552
11629
  ]
11553
11630
  }
11554
11631
  ),
11555
- displayLayout.groupHeaders.length > 0 ? displayLayout.groupHeaders.map((group) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_react15.default.Fragment, { children: [
11556
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
11632
+ displayLayout.groupHeaders.length > 0 ? displayLayout.groupHeaders.map((group) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_react15.default.Fragment, { children: [
11633
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
11557
11634
  "div",
11558
11635
  {
11559
11636
  className: "gantt-resourceTimeline-resourceGroupHeader",
11560
11637
  style: { height: `${group.height}px` },
11561
11638
  children: [
11562
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11639
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11563
11640
  "button",
11564
11641
  {
11565
11642
  type: "button",
@@ -11570,12 +11647,12 @@ function ResourceTimelineChart({
11570
11647
  event.stopPropagation();
11571
11648
  toggleResourceGroupCollapsed(group.key);
11572
11649
  },
11573
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(ResourceGroupChevronIcon, {})
11650
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ResourceGroupChevronIcon, {})
11574
11651
  }
11575
11652
  ),
11576
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-resourceGroupTitle", children: group.label }),
11577
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-resourceGroupCount", children: group.count }),
11578
- canAddResource && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11653
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceGroupTitle", children: group.label }),
11654
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceGroupCount", children: group.count }),
11655
+ canAddResource && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11579
11656
  "button",
11580
11657
  {
11581
11658
  type: "button",
@@ -11594,7 +11671,7 @@ function ResourceTimelineChart({
11594
11671
  ),
11595
11672
  displayLayout.rows.filter((row) => getResourceType(row.resource) === group.key).map((row) => {
11596
11673
  const rowIndex = displayLayout.rows.findIndex((candidate) => candidate.resourceId === row.resourceId);
11597
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11674
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11598
11675
  ResourceHeader,
11599
11676
  {
11600
11677
  resource: row.resource,
@@ -11614,7 +11691,7 @@ function ResourceTimelineChart({
11614
11691
  row.resourceId
11615
11692
  );
11616
11693
  }),
11617
- displayLayout.groupAddRows.some((row) => row.key === group.key) && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11694
+ displayLayout.groupAddRows.some((row) => row.key === group.key) && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11618
11695
  NewResourceRow,
11619
11696
  {
11620
11697
  height: resourceAddRowHeight,
@@ -11623,7 +11700,7 @@ function ResourceTimelineChart({
11623
11700
  columnTemplate: resourceColumnTemplate
11624
11701
  }
11625
11702
  )
11626
- ] }, group.key)) : displayLayout.rows.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11703
+ ] }, group.key)) : displayLayout.rows.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11627
11704
  ResourceHeader,
11628
11705
  {
11629
11706
  resource: row.resource,
@@ -11642,7 +11719,7 @@ function ResourceTimelineChart({
11642
11719
  },
11643
11720
  row.resourceId
11644
11721
  )),
11645
- canAddResource && (isCreatingResource ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11722
+ canAddResource && (isCreatingResource ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11646
11723
  NewResourceRow,
11647
11724
  {
11648
11725
  height: resourceAddRowHeight,
@@ -11650,7 +11727,7 @@ function ResourceTimelineChart({
11650
11727
  onCancel: handleCancelNewResource,
11651
11728
  columnTemplate: resourceColumnTemplate
11652
11729
  }
11653
- ) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11730
+ ) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11654
11731
  "button",
11655
11732
  {
11656
11733
  className: "gantt-resourceTimeline-addResourceButton",
@@ -11666,18 +11743,18 @@ function ResourceTimelineChart({
11666
11743
  ]
11667
11744
  }
11668
11745
  ),
11669
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
11746
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
11670
11747
  "div",
11671
11748
  {
11672
11749
  className: "gantt-resourceTimeline-chartSurface",
11673
11750
  style: { minWidth: `${gridWidth}px` },
11674
11751
  children: [
11675
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11752
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11676
11753
  "div",
11677
11754
  {
11678
11755
  className: "gantt-resourceTimeline-stickyHeader",
11679
11756
  style: { width: `${gridWidth}px`, height: `${timelineHeaderHeight}px` },
11680
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11757
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11681
11758
  TimeScaleHeader_default,
11682
11759
  {
11683
11760
  days: dateRange,
@@ -11689,14 +11766,14 @@ function ResourceTimelineChart({
11689
11766
  )
11690
11767
  }
11691
11768
  ),
11692
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
11769
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
11693
11770
  "div",
11694
11771
  {
11695
11772
  ref: gridRef,
11696
11773
  className: "gantt-resourceTimeline-grid",
11697
11774
  style: { width: `${gridWidth}px`, height: `${displayTotalHeight}px` },
11698
11775
  children: [
11699
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11776
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11700
11777
  GridBackground_default,
11701
11778
  {
11702
11779
  dateRange,
@@ -11706,8 +11783,8 @@ function ResourceTimelineChart({
11706
11783
  isCustomWeekend: weekendPredicate
11707
11784
  }
11708
11785
  ),
11709
- todayInRange && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(TodayIndicator_default, { monthStart, dayWidth }),
11710
- displayLayout.groupHeaders.map((group) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11786
+ todayInRange && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TodayIndicator_default, { monthStart, dayWidth }),
11787
+ displayLayout.groupHeaders.map((group) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11711
11788
  "div",
11712
11789
  {
11713
11790
  className: "gantt-resourceTimeline-row gantt-resourceTimeline-groupRow",
@@ -11719,7 +11796,7 @@ function ResourceTimelineChart({
11719
11796
  },
11720
11797
  `group-row-${group.key}`
11721
11798
  )),
11722
- displayLayout.rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11799
+ displayLayout.rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11723
11800
  "div",
11724
11801
  {
11725
11802
  className: "gantt-resourceTimeline-row",
@@ -11731,7 +11808,7 @@ function ResourceTimelineChart({
11731
11808
  },
11732
11809
  row.resourceId
11733
11810
  )),
11734
- canAddResource && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11811
+ canAddResource && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11735
11812
  "div",
11736
11813
  {
11737
11814
  className: "gantt-resourceTimeline-row gantt-resourceTimeline-rowNew",
@@ -11742,7 +11819,7 @@ function ResourceTimelineChart({
11742
11819
  }
11743
11820
  }
11744
11821
  ),
11745
- displayLayout.groupAddRows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11822
+ displayLayout.groupAddRows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11746
11823
  "div",
11747
11824
  {
11748
11825
  className: "gantt-resourceTimeline-row gantt-resourceTimeline-rowNew",
@@ -11813,7 +11890,7 @@ function ResourceTimelineChart({
11813
11890
  const tooltipFirstLine = layoutItem.item.tooltip?.firstLine ?? layoutItem.item.title;
11814
11891
  const tooltipSecondLine = resourceItemTooltipLines === 2 ? layoutItem.item.tooltip?.secondLine ?? layoutItem.item.subtitle : void 0;
11815
11892
  const tooltipSecondLineIcon = layoutItem.item.tooltip?.secondLineIcon;
11816
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
11893
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
11817
11894
  "div",
11818
11895
  {
11819
11896
  className,
@@ -11841,11 +11918,11 @@ function ResourceTimelineChart({
11841
11918
  backgroundColor: layoutItem.item.color ?? "var(--gantt-task-bar-default-color, #3b82f6)"
11842
11919
  },
11843
11920
  children: [
11844
- !readonly && !layoutItem.item.locked && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
11845
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-resizeHandle gantt-resourceTimeline-resizeHandleStart" }),
11846
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-resizeHandle gantt-resourceTimeline-resizeHandleEnd" })
11921
+ !readonly && !layoutItem.item.locked && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
11922
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resizeHandle gantt-resourceTimeline-resizeHandleStart" }),
11923
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resizeHandle gantt-resourceTimeline-resizeHandleEnd" })
11847
11924
  ] }),
11848
- weekendOverlaySegments.map((segment, index) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11925
+ weekendOverlaySegments.map((segment, index) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11849
11926
  "span",
11850
11927
  {
11851
11928
  className: "gantt-resourceTimeline-weekendOverlay",
@@ -11857,7 +11934,7 @@ function ResourceTimelineChart({
11857
11934
  },
11858
11935
  `weekend-overlay-${index}`
11859
11936
  )),
11860
- conflictOverlaySegments.map((segment, index) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11937
+ conflictOverlaySegments.map((segment, index) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11861
11938
  "span",
11862
11939
  {
11863
11940
  className: "gantt-resourceTimeline-conflictOverlay",
@@ -11869,7 +11946,7 @@ function ResourceTimelineChart({
11869
11946
  },
11870
11947
  `conflict-overlay-${index}`
11871
11948
  )),
11872
- hasItemMenu && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11949
+ hasItemMenu && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11873
11950
  "button",
11874
11951
  {
11875
11952
  type: "button",
@@ -11882,12 +11959,12 @@ function ResourceTimelineChart({
11882
11959
  event.stopPropagation();
11883
11960
  onResourceItemMenuClick?.(layoutItem.item);
11884
11961
  },
11885
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { "aria-hidden": "true", children: "\u22EE" })
11962
+ children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { "aria-hidden": "true", children: "\u22EE" })
11886
11963
  }
11887
11964
  ),
11888
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "gantt-resourceTimeline-itemInner", children: renderItem ? renderItem(layoutItem.item, renderContext) : /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "gantt-resourceTimeline-defaultItemContent", children: [
11889
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "gantt-resourceTimeline-defaultItemMain", children: [
11890
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
11965
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "gantt-resourceTimeline-itemInner", children: renderItem ? renderItem(layoutItem.item, renderContext) : /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gantt-resourceTimeline-defaultItemContent", children: [
11966
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gantt-resourceTimeline-defaultItemMain", children: [
11967
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
11891
11968
  "span",
11892
11969
  {
11893
11970
  className: "gantt-resourceTimeline-itemDurationChip",
@@ -11895,15 +11972,15 @@ function ResourceTimelineChart({
11895
11972
  children: durationValue
11896
11973
  }
11897
11974
  ),
11898
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-itemTitle", children: layoutItem.item.title })
11975
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-itemTitle", children: layoutItem.item.title })
11899
11976
  ] }),
11900
- layoutItem.item.subtitle && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-itemSubtitle", children: layoutItem.item.subtitle })
11977
+ layoutItem.item.subtitle && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-itemSubtitle", children: layoutItem.item.subtitle })
11901
11978
  ] }) }),
11902
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "gantt-resourceTimeline-itemTooltip", role: "tooltip", children: [
11903
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "gantt-resourceTimeline-itemTooltipLine gantt-resourceTimeline-itemTooltipLinePrimary", children: tooltipFirstLine }),
11904
- tooltipSecondLine && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "gantt-resourceTimeline-itemTooltipLine gantt-resourceTimeline-itemTooltipLineSecondary", children: [
11905
- tooltipSecondLineIcon && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-itemTooltipIcon", "aria-hidden": "true", children: tooltipSecondLineIcon }),
11906
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "gantt-resourceTimeline-itemTooltipText", children: tooltipSecondLine })
11979
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gantt-resourceTimeline-itemTooltip", role: "tooltip", children: [
11980
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "gantt-resourceTimeline-itemTooltipLine gantt-resourceTimeline-itemTooltipLinePrimary", children: tooltipFirstLine }),
11981
+ tooltipSecondLine && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gantt-resourceTimeline-itemTooltipLine gantt-resourceTimeline-itemTooltipLineSecondary", children: [
11982
+ tooltipSecondLineIcon && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-itemTooltipIcon", "aria-hidden": "true", children: tooltipSecondLineIcon }),
11983
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-itemTooltipText", children: tooltipSecondLine })
11907
11984
  ] })
11908
11985
  ] })
11909
11986
  ]
@@ -11925,7 +12002,7 @@ function ResourceTimelineChart({
11925
12002
 
11926
12003
  // src/components/TableMatrix/TableMatrix.tsx
11927
12004
  var import_react16 = require("react");
11928
- var import_jsx_runtime18 = require("react/jsx-runtime");
12005
+ var import_jsx_runtime19 = require("react/jsx-runtime");
11929
12006
  var AUTO_COLUMN_MIN_WIDTH = 72;
11930
12007
  var AUTO_COLUMN_MAX_WIDTH = 180;
11931
12008
  var DAY_MS4 = 24 * 60 * 60 * 1e3;
@@ -12125,9 +12202,9 @@ function TableMatrix({
12125
12202
  return task ? { task, index } : null;
12126
12203
  }).filter((entry) => entry !== null);
12127
12204
  }, [tasks, visibleRowIndices]);
12128
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gantt-mx-root", style: { width: `${totalWidth}px` }, children: [
12129
- hasAutoWidthColumns && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { ref: measureRef, className: "gantt-mx-measure", "aria-hidden": "true", children: [
12130
- columns.map((column, columnIndex) => typeof column.width === "number" ? null : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12205
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "gantt-mx-root", style: { width: `${totalWidth}px` }, children: [
12206
+ hasAutoWidthColumns && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { ref: measureRef, className: "gantt-mx-measure", "aria-hidden": "true", children: [
12207
+ columns.map((column, columnIndex) => typeof column.width === "number" ? null : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12131
12208
  "div",
12132
12209
  {
12133
12210
  "data-gantt-mx-measure-column": columnIndex,
@@ -12136,7 +12213,7 @@ function TableMatrix({
12136
12213
  },
12137
12214
  `header:${column.id}`
12138
12215
  )),
12139
- tasks.map((task) => columns.map((column, columnIndex) => typeof column.width === "number" ? null : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12216
+ tasks.map((task) => columns.map((column, columnIndex) => typeof column.width === "number" ? null : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12140
12217
  "div",
12141
12218
  {
12142
12219
  "data-gantt-mx-measure-column": columnIndex,
@@ -12146,8 +12223,8 @@ function TableMatrix({
12146
12223
  `${task.id}:${column.id}`
12147
12224
  )))
12148
12225
  ] }),
12149
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gantt-mx-header", style: { height: `${headerHeight}px` }, children: [
12150
- hasGroupHeader && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12226
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "gantt-mx-header", style: { height: `${headerHeight}px` }, children: [
12227
+ hasGroupHeader && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12151
12228
  "div",
12152
12229
  {
12153
12230
  className: "gantt-mx-headerRow gantt-mx-headerGroupRow",
@@ -12155,7 +12232,7 @@ function TableMatrix({
12155
12232
  gridTemplateColumns: headerSpans.map((span) => `${span.width ?? 0}px`).join(" "),
12156
12233
  height: `${topRowHeight}px`
12157
12234
  },
12158
- children: headerSpans.map((span) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12235
+ children: headerSpans.map((span) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12159
12236
  "div",
12160
12237
  {
12161
12238
  className: joinClasses("gantt-mx-groupCell", span.className),
@@ -12166,7 +12243,7 @@ function TableMatrix({
12166
12243
  ))
12167
12244
  }
12168
12245
  ),
12169
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12246
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12170
12247
  "div",
12171
12248
  {
12172
12249
  className: "gantt-mx-headerRow",
@@ -12174,7 +12251,7 @@ function TableMatrix({
12174
12251
  children: columns.map((column) => {
12175
12252
  const overlayWidthPercent = getOverlayWidthPercent(column, overlayDateMs);
12176
12253
  const shouldRenderOverlayEdge = isOverlayDateInColumn(column, overlayDateMs);
12177
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
12254
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
12178
12255
  "div",
12179
12256
  {
12180
12257
  className: joinClasses(
@@ -12183,7 +12260,7 @@ function TableMatrix({
12183
12260
  ),
12184
12261
  style: column.minWidth !== void 0 ? { minWidth: `${column.minWidth}px` } : void 0,
12185
12262
  children: [
12186
- shouldRenderOverlayEdge && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12263
+ shouldRenderOverlayEdge && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12187
12264
  "span",
12188
12265
  {
12189
12266
  className: "gantt-mx-dateOverlayEdge",
@@ -12193,7 +12270,7 @@ function TableMatrix({
12193
12270
  }
12194
12271
  }
12195
12272
  ),
12196
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-mx-headerContent", children: column.header })
12273
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "gantt-mx-headerContent", children: column.header })
12197
12274
  ]
12198
12275
  },
12199
12276
  column.id
@@ -12202,7 +12279,7 @@ function TableMatrix({
12202
12279
  }
12203
12280
  )
12204
12281
  ] }),
12205
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12282
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12206
12283
  "div",
12207
12284
  {
12208
12285
  className: "gantt-mx-body",
@@ -12216,7 +12293,7 @@ function TableMatrix({
12216
12293
  const nestingDepth = nestingDepthMap.get(task.id) ?? 0;
12217
12294
  const rowFillLevel = Math.min(nestingDepth, 2);
12218
12295
  const isTotal = Boolean(task.isTotal);
12219
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12296
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12220
12297
  "div",
12221
12298
  {
12222
12299
  "data-gantt-task-row-id": task.id,
@@ -12241,7 +12318,7 @@ function TableMatrix({
12241
12318
  const overlayWidthPercent = getOverlayWidthPercent(column, overlayDateMs);
12242
12319
  const shouldRenderOverlay = overlayWidthPercent > 0 && (!dateOverlay || !dateOverlay.shouldRender || dateOverlay.shouldRender({ task, column, rowIndex: index, columnIndex }));
12243
12320
  const shouldRenderOverlayEdge = isOverlayDateInColumn(column, overlayDateMs);
12244
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
12321
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
12245
12322
  "div",
12246
12323
  {
12247
12324
  className: joinClasses(
@@ -12256,7 +12333,7 @@ function TableMatrix({
12256
12333
  onCellClick?.({ task, column, rowIndex: index, columnIndex, event });
12257
12334
  },
12258
12335
  children: [
12259
- shouldRenderOverlay && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12336
+ shouldRenderOverlay && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12260
12337
  "span",
12261
12338
  {
12262
12339
  className: joinClasses("gantt-mx-dateOverlay", dateOverlay && dateOverlay.className),
@@ -12266,7 +12343,7 @@ function TableMatrix({
12266
12343
  }
12267
12344
  }
12268
12345
  ),
12269
- shouldRenderOverlayEdge && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
12346
+ shouldRenderOverlayEdge && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12270
12347
  "span",
12271
12348
  {
12272
12349
  className: "gantt-mx-dateOverlayEdge",
@@ -12276,7 +12353,7 @@ function TableMatrix({
12276
12353
  }
12277
12354
  }
12278
12355
  ),
12279
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "gantt-mx-cellContent", children: column.renderCell(task) })
12356
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "gantt-mx-cellContent", children: column.renderCell(task) })
12280
12357
  ]
12281
12358
  },
12282
12359
  `${task.id}:${column.id}`
@@ -12293,7 +12370,7 @@ function TableMatrix({
12293
12370
 
12294
12371
  // src/components/PlanFactMatrix/PlanFactMatrix.tsx
12295
12372
  var import_react17 = __toESM(require("react"));
12296
- var import_jsx_runtime19 = require("react/jsx-runtime");
12373
+ var import_jsx_runtime20 = require("react/jsx-runtime");
12297
12374
  var DAY_MS5 = 24 * 60 * 60 * 1e3;
12298
12375
  function joinClasses2(...values) {
12299
12376
  return values.filter(Boolean).join(" ");
@@ -12402,7 +12479,7 @@ function PlanFactCellEditor({
12402
12479
  }
12403
12480
  onCommit(parsed);
12404
12481
  }, [draft, onCancel, onCommit]);
12405
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12482
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
12406
12483
  "input",
12407
12484
  {
12408
12485
  ref: inputRef,
@@ -12516,7 +12593,7 @@ function PlanFactRowInner({
12516
12593
  showOverflowTooltip,
12517
12594
  hideOverflowTooltip
12518
12595
  }) {
12519
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12596
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
12520
12597
  "div",
12521
12598
  {
12522
12599
  "data-gantt-task-row-id": task.id,
@@ -12554,7 +12631,7 @@ function PlanFactRowInner({
12554
12631
  const isSelected = !isParent && isInRenderedRange;
12555
12632
  const showFillHandle = !isParent && !isEditing && isInRenderedRange && renderedRangeBounds !== null && dateIndex === renderedRangeBounds.toDateIndex && subrowIndex === renderedRangeBounds.toSubrowIndex;
12556
12633
  const isRangeAnchor = !showFillHandle && !isParent && selectedRange?.anchor.taskId === task.id && selectedRange.anchor.dateIndex === dateIndex && selectedRange.anchor.kind === kind;
12557
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
12634
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
12558
12635
  "div",
12559
12636
  {
12560
12637
  "data-plan-fact-task-id": task.id,
@@ -12651,7 +12728,7 @@ function PlanFactRowInner({
12651
12728
  }
12652
12729
  },
12653
12730
  children: [
12654
- isEditing ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12731
+ isEditing ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
12655
12732
  PlanFactCellEditor,
12656
12733
  {
12657
12734
  value,
@@ -12677,7 +12754,7 @@ function PlanFactRowInner({
12677
12754
  focusCell(nextActiveCell);
12678
12755
  }
12679
12756
  }
12680
- ) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12757
+ ) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
12681
12758
  "span",
12682
12759
  {
12683
12760
  className: "gantt-pf-cellValue",
@@ -12691,7 +12768,7 @@ function PlanFactRowInner({
12691
12768
  children: isParent ? "" : formatValue(value)
12692
12769
  }
12693
12770
  ),
12694
- showFillHandle && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
12771
+ showFillHandle && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
12695
12772
  "span",
12696
12773
  {
12697
12774
  className: "gantt-pf-fillHandle",
@@ -13203,7 +13280,7 @@ function PlanFactMatrix({
13203
13280
  document.removeEventListener("mousedown", handleMouseDown);
13204
13281
  };
13205
13282
  }, [clearSelection]);
13206
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
13283
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
13207
13284
  "div",
13208
13285
  {
13209
13286
  ref: rootRef,
@@ -13213,8 +13290,8 @@ function PlanFactMatrix({
13213
13290
  ["--gantt-pf-day-width"]: `${dayWidth}px`
13214
13291
  },
13215
13292
  children: [
13216
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "gantt-pf-header", style: { width: `${totalWidth}px`, height: `${headerHeight}px` }, children: [
13217
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
13293
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "gantt-pf-header", style: { width: `${totalWidth}px`, height: `${headerHeight}px` }, children: [
13294
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
13218
13295
  "div",
13219
13296
  {
13220
13297
  className: "gantt-pf-dateWindow",
@@ -13222,7 +13299,7 @@ function PlanFactMatrix({
13222
13299
  left: `${renderedDateWindow.startIndex * dayWidth}px`,
13223
13300
  width: `${renderedDateWindow.days.length * dayWidth}px`
13224
13301
  },
13225
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
13302
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
13226
13303
  TimeScaleHeader_default,
13227
13304
  {
13228
13305
  days: renderedDateWindow.days,
@@ -13234,7 +13311,7 @@ function PlanFactMatrix({
13234
13311
  )
13235
13312
  }
13236
13313
  ),
13237
- todayDateIndex !== void 0 && todayDateIndex >= renderedDateWindow.startIndex && todayDateIndex < renderedDateWindow.startIndex + renderedDateWindow.days.length && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
13314
+ todayDateIndex !== void 0 && todayDateIndex >= renderedDateWindow.startIndex && todayDateIndex < renderedDateWindow.startIndex + renderedDateWindow.days.length && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
13238
13315
  "span",
13239
13316
  {
13240
13317
  className: "gantt-pf-headerTodayLine",
@@ -13246,7 +13323,7 @@ function PlanFactMatrix({
13246
13323
  }
13247
13324
  )
13248
13325
  ] }),
13249
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "gantt-pf-monthSeparatorLayer", "aria-hidden": "true", children: monthSeparatorIndices.map((dateIndex) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
13326
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "gantt-pf-monthSeparatorLayer", "aria-hidden": "true", children: monthSeparatorIndices.map((dateIndex) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
13250
13327
  "span",
13251
13328
  {
13252
13329
  className: "gantt-pf-monthSeparator",
@@ -13257,7 +13334,7 @@ function PlanFactMatrix({
13257
13334
  },
13258
13335
  `month-separator-${dateIndex}`
13259
13336
  )) }),
13260
- /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
13337
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
13261
13338
  "div",
13262
13339
  {
13263
13340
  ref: bodyRef,
@@ -13268,7 +13345,7 @@ function PlanFactMatrix({
13268
13345
  width: `${totalWidth}px`
13269
13346
  },
13270
13347
  children: [
13271
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
13348
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
13272
13349
  "div",
13273
13350
  {
13274
13351
  className: "gantt-pf-dateWindow gantt-pf-dateWindow-body",
@@ -13276,7 +13353,7 @@ function PlanFactMatrix({
13276
13353
  left: `${renderedDateWindow.startIndex * dayWidth}px`,
13277
13354
  width: `${renderedDateWindow.days.length * dayWidth}px`
13278
13355
  },
13279
- children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
13356
+ children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
13280
13357
  GridBackground_default,
13281
13358
  {
13282
13359
  dateRange: renderedDateWindow.days,
@@ -13294,7 +13371,7 @@ function PlanFactMatrix({
13294
13371
  if (!task) return null;
13295
13372
  const isParent = parentTaskIds.has(task.id);
13296
13373
  const isHighlighted = filterMode === "highlight" && !!highlightedTaskIds?.has(task.id);
13297
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
13374
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
13298
13375
  PlanFactRow,
13299
13376
  {
13300
13377
  task,
@@ -13339,7 +13416,7 @@ function PlanFactMatrix({
13339
13416
  ]
13340
13417
  }
13341
13418
  ),
13342
- overflowTooltip && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
13419
+ overflowTooltip && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
13343
13420
  "div",
13344
13421
  {
13345
13422
  className: "gantt-pf-overflowTooltip",
@@ -13765,7 +13842,7 @@ function createTaskPreviewPositionStore() {
13765
13842
  }
13766
13843
 
13767
13844
  // src/components/GanttChart/GanttChart.tsx
13768
- var import_jsx_runtime20 = require("react/jsx-runtime");
13845
+ var import_jsx_runtime21 = require("react/jsx-runtime");
13769
13846
  var SCROLL_TO_ROW_CONTEXT_ROWS = 2;
13770
13847
  var TASK_ROW_OVERSCAN = 8;
13771
13848
  var PLAN_FACT_COLUMN_OVERSCAN = 24;
@@ -13892,9 +13969,9 @@ function arePreviewTaskMapsEqual(left, right) {
13892
13969
  }
13893
13970
  function GanttChartInner(props, ref) {
13894
13971
  if (props.mode === "resource-planner") {
13895
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(ResourceTimelineChart, { ...props });
13972
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ResourceTimelineChart, { ...props });
13896
13973
  }
13897
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
13974
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
13898
13975
  TaskGanttChart,
13899
13976
  {
13900
13977
  ...props,
@@ -13944,6 +14021,7 @@ function TaskGanttChartInner(props, ref) {
13944
14021
  onSelectedTaskIdsChange,
13945
14022
  disableTaskDrag = false,
13946
14023
  showChart = true,
14024
+ skeletonRowCount = 0,
13947
14025
  timelineMarkers,
13948
14026
  additionalColumns,
13949
14027
  hiddenTaskListColumns,
@@ -14203,6 +14281,7 @@ function TaskGanttChartInner(props, ref) {
14203
14281
  () => Math.round(dateRange.length * dayWidth),
14204
14282
  [dateRange.length, dayWidth]
14205
14283
  );
14284
+ const renderGridWidth = Math.max(gridWidth, skeletonRowCount > 0 ? 720 : 0);
14206
14285
  const matrixWidth = (0, import_react18.useMemo)(
14207
14286
  () => matrixColumns.reduce((sum, column) => {
14208
14287
  if (typeof column.width !== "number") return void 0;
@@ -14250,8 +14329,8 @@ function TaskGanttChartInner(props, ref) {
14250
14329
  return mergedHighlightedTaskIds;
14251
14330
  }, [filterMode, highlightedTaskIds, matchedTaskIds, criticalPathMode, criticalTaskIds]);
14252
14331
  const totalGridHeight = (0, import_react18.useMemo)(
14253
- () => visibleTasks.length * effectiveRowHeight,
14254
- [effectiveRowHeight, visibleTasks.length]
14332
+ () => (visibleTasks.length + Math.max(0, Math.floor(skeletonRowCount))) * effectiveRowHeight,
14333
+ [effectiveRowHeight, skeletonRowCount, visibleTasks.length]
14255
14334
  );
14256
14335
  const timelineHeaderHeight = headerHeight + 1;
14257
14336
  const tableBodyMinHeight = (0, import_react18.useMemo)(() => {
@@ -15034,19 +15113,19 @@ function TaskGanttChartInner(props, ref) {
15034
15113
  window.removeEventListener("mouseup", handlePanEnd);
15035
15114
  };
15036
15115
  }, []);
15037
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15116
+ return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15038
15117
  "div",
15039
15118
  {
15040
15119
  ref: containerRef,
15041
15120
  className: isTableMatrixMode ? "gantt-container gantt-container-tableMatrix" : isPlanFactMode ? "gantt-container gantt-container-planFact" : "gantt-container",
15042
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15121
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15043
15122
  "div",
15044
15123
  {
15045
15124
  ref: scrollContainerRef,
15046
15125
  className: "gantt-scrollContainer",
15047
15126
  style: { height: containerHeight ?? "auto", cursor: "grab" },
15048
15127
  onMouseDown: handlePanStart,
15049
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
15128
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
15050
15129
  "div",
15051
15130
  {
15052
15131
  ref: scrollContentRef,
@@ -15054,7 +15133,7 @@ function TaskGanttChartInner(props, ref) {
15054
15133
  onMouseOver: handleSharedRowHover,
15055
15134
  onMouseLeave: clearHoveredRows,
15056
15135
  children: [
15057
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15136
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15058
15137
  TaskList,
15059
15138
  {
15060
15139
  tasks: normalizedTasks,
@@ -15113,20 +15192,21 @@ function TaskGanttChartInner(props, ref) {
15113
15192
  bodyMinHeight: tableBodyMinHeight,
15114
15193
  taskDateChangeMode,
15115
15194
  onTaskDateChangeModeChange: handleTaskDateChangeMode,
15116
- visibleRowIndices: visibleTaskWindowIndices
15195
+ visibleRowIndices: visibleTaskWindowIndices,
15196
+ skeletonRowCount
15117
15197
  }
15118
15198
  ),
15119
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15199
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15120
15200
  "div",
15121
15201
  {
15122
15202
  className: isTableMatrixMode || isPlanFactMode || showChart ? "gantt-chartSurface" : "gantt-chartSurface gantt-chart-hidden",
15123
15203
  style: {
15124
- minWidth: isTableMatrixMode ? matrixWidth !== void 0 ? `${matrixWidth}px` : void 0 : isPlanFactMode ? `${gridWidth}px` : `${gridWidth}px`,
15125
- width: isTableMatrixMode ? matrixWidth !== void 0 ? `${matrixWidth}px` : "max-content" : isPlanFactMode ? `${gridWidth}px` : void 0,
15204
+ minWidth: isTableMatrixMode ? matrixWidth !== void 0 ? `${matrixWidth}px` : void 0 : isPlanFactMode ? `${renderGridWidth}px` : `${renderGridWidth}px`,
15205
+ width: isTableMatrixMode ? matrixWidth !== void 0 ? `${matrixWidth}px` : "max-content" : isPlanFactMode ? `${renderGridWidth}px` : void 0,
15126
15206
  flex: isTableMatrixMode || isPlanFactMode ? "0 0 auto" : 1,
15127
15207
  display: isTableMatrixMode || isPlanFactMode || showChart ? void 0 : "none"
15128
15208
  },
15129
- children: isTableMatrixMode ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15209
+ children: isTableMatrixMode ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15130
15210
  TableMatrix,
15131
15211
  {
15132
15212
  tasks: visibleTasks,
@@ -15144,7 +15224,7 @@ function TaskGanttChartInner(props, ref) {
15144
15224
  filterMode,
15145
15225
  visibleRowIndices: visibleTaskWindowIndices
15146
15226
  }
15147
- ) : isPlanFactMode ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15227
+ ) : isPlanFactMode ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15148
15228
  PlanFactMatrix,
15149
15229
  {
15150
15230
  tasks: visibleTasks,
@@ -15165,14 +15245,14 @@ function TaskGanttChartInner(props, ref) {
15165
15245
  todayDateIndex: todayInRange ? todayIndex : void 0,
15166
15246
  isCustomWeekend
15167
15247
  }
15168
- ) : /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
15169
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
15248
+ ) : /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
15249
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
15170
15250
  "div",
15171
15251
  {
15172
15252
  className: "gantt-stickyHeader",
15173
- style: { width: `${gridWidth}px`, height: `${timelineHeaderHeight}px` },
15253
+ style: { width: `${renderGridWidth}px`, height: `${timelineHeaderHeight}px` },
15174
15254
  children: [
15175
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15255
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15176
15256
  TimeScaleHeader_default,
15177
15257
  {
15178
15258
  days: dateRange,
@@ -15185,7 +15265,7 @@ function TaskGanttChartInner(props, ref) {
15185
15265
  onTimelineHoverEnd: () => setActiveTimelineTooltip(null)
15186
15266
  }
15187
15267
  ),
15188
- activeTimelineTooltip && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "gantt-timelineTooltipLayer", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15268
+ activeTimelineTooltip && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "gantt-timelineTooltipLayer", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15189
15269
  "div",
15190
15270
  {
15191
15271
  className: "gantt-timelineTooltip",
@@ -15199,17 +15279,17 @@ function TaskGanttChartInner(props, ref) {
15199
15279
  ]
15200
15280
  }
15201
15281
  ),
15202
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
15282
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
15203
15283
  "div",
15204
15284
  {
15205
15285
  className: "gantt-taskArea",
15206
15286
  style: {
15207
15287
  position: "relative",
15208
- width: `${gridWidth}px`,
15288
+ width: `${renderGridWidth}px`,
15209
15289
  height: `${totalGridHeight}px`
15210
15290
  },
15211
15291
  children: [
15212
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15292
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15213
15293
  GridBackground_default,
15214
15294
  {
15215
15295
  dateRange,
@@ -15219,7 +15299,7 @@ function TaskGanttChartInner(props, ref) {
15219
15299
  isCustomWeekend
15220
15300
  }
15221
15301
  ),
15222
- todayInRange && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15302
+ todayInRange && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15223
15303
  TodayIndicator_default,
15224
15304
  {
15225
15305
  monthStart,
@@ -15228,7 +15308,7 @@ function TaskGanttChartInner(props, ref) {
15228
15308
  onHoverEnd: () => setActiveTimelineTooltip(null)
15229
15309
  }
15230
15310
  ),
15231
- visibleTimelineMarkers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15311
+ visibleTimelineMarkers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15232
15312
  TimelineMarkers_default,
15233
15313
  {
15234
15314
  rangeStart: monthStart,
@@ -15239,7 +15319,7 @@ function TaskGanttChartInner(props, ref) {
15239
15319
  onHoverEnd: () => setActiveTimelineTooltip(null)
15240
15320
  }
15241
15321
  ),
15242
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15322
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15243
15323
  DependencyLines_default,
15244
15324
  {
15245
15325
  tasks: renderedDependencyTasks,
@@ -15248,7 +15328,7 @@ function TaskGanttChartInner(props, ref) {
15248
15328
  monthStart,
15249
15329
  dayWidth,
15250
15330
  rowHeight: effectiveRowHeight,
15251
- gridWidth,
15331
+ gridWidth: renderGridWidth,
15252
15332
  totalHeight: totalGridHeight,
15253
15333
  rowIndexByTaskId: visibleTaskIndexMap,
15254
15334
  dragOverrides: dependencyOverrides,
@@ -15259,7 +15339,7 @@ function TaskGanttChartInner(props, ref) {
15259
15339
  criticalTaskIds: criticalPathMode ? criticalTaskIds : void 0
15260
15340
  }
15261
15341
  ),
15262
- dependencyLineMenu && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
15342
+ dependencyLineMenu && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
15263
15343
  "div",
15264
15344
  {
15265
15345
  className: "gantt-dependencyLineMenu",
@@ -15267,8 +15347,8 @@ function TaskGanttChartInner(props, ref) {
15267
15347
  role: "dialog",
15268
15348
  "aria-label": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0441\u043E \u0441\u0432\u044F\u0437\u044C\u044E",
15269
15349
  children: [
15270
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "gantt-dependencyLineMenuType", children: dependencyLineMenu.linkType === "FS" ? "\u041E\u041D" : dependencyLineMenu.linkType === "SS" ? "\u041D\u041D" : dependencyLineMenu.linkType === "FF" ? "\u041E\u041E" : "\u041D\u041E" }),
15271
- !disableDependencyEditing && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15350
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "gantt-dependencyLineMenuType", children: dependencyLineMenu.linkType === "FS" ? "\u041E\u041D" : dependencyLineMenu.linkType === "SS" ? "\u041D\u041D" : dependencyLineMenu.linkType === "FF" ? "\u041E\u041E" : "\u041D\u041E" }),
15351
+ !disableDependencyEditing && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15272
15352
  "button",
15273
15353
  {
15274
15354
  type: "button",
@@ -15276,7 +15356,7 @@ function TaskGanttChartInner(props, ref) {
15276
15356
  "aria-label": "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u0432\u044F\u0437\u044C",
15277
15357
  title: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u0432\u044F\u0437\u044C",
15278
15358
  onClick: handleDependencyLineDelete,
15279
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
15359
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
15280
15360
  "svg",
15281
15361
  {
15282
15362
  xmlns: "http://www.w3.org/2000/svg",
@@ -15290,15 +15370,15 @@ function TaskGanttChartInner(props, ref) {
15290
15370
  strokeLinejoin: "round",
15291
15371
  "aria-hidden": "true",
15292
15372
  children: [
15293
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6" }),
15294
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("path", { d: "M3 6h18" }),
15295
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" })
15373
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6" }),
15374
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("path", { d: "M3 6h18" }),
15375
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" })
15296
15376
  ]
15297
15377
  }
15298
15378
  )
15299
15379
  }
15300
15380
  ),
15301
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15381
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15302
15382
  "button",
15303
15383
  {
15304
15384
  type: "button",
@@ -15312,16 +15392,16 @@ function TaskGanttChartInner(props, ref) {
15312
15392
  ]
15313
15393
  }
15314
15394
  ),
15315
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15395
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15316
15396
  DependencyCreationOverlay,
15317
15397
  {
15318
15398
  drag: dependencyCreationDrag,
15319
- width: gridWidth,
15399
+ width: renderGridWidth,
15320
15400
  height: totalGridHeight
15321
15401
  }
15322
15402
  ),
15323
- dependencyCreationError && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "gantt-dependencyCreation-error", role: "status", children: dependencyCreationError }),
15324
- dragGuideLines && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15403
+ dependencyCreationError && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "gantt-dependencyCreation-error", role: "status", children: dependencyCreationError }),
15404
+ dragGuideLines && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15325
15405
  DragGuideLines_default,
15326
15406
  {
15327
15407
  isDragging: dragGuideLines.isDragging,
@@ -15331,7 +15411,7 @@ function TaskGanttChartInner(props, ref) {
15331
15411
  totalHeight: totalGridHeight
15332
15412
  }
15333
15413
  ),
15334
- renderedChartTasks.map(({ task, index }) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15414
+ renderedChartTasks.map(({ task, index }) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15335
15415
  "div",
15336
15416
  {
15337
15417
  style: {
@@ -15341,7 +15421,7 @@ function TaskGanttChartInner(props, ref) {
15341
15421
  right: 0,
15342
15422
  height: `${effectiveRowHeight}px`
15343
15423
  },
15344
- children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
15424
+ children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15345
15425
  TaskRow_default,
15346
15426
  {
15347
15427
  task,
@@ -15385,7 +15465,17 @@ function TaskGanttChartInner(props, ref) {
15385
15465
  )
15386
15466
  },
15387
15467
  task.id
15388
- ))
15468
+ )),
15469
+ /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
15470
+ GenerationSkeleton_default,
15471
+ {
15472
+ count: skeletonRowCount,
15473
+ rowHeight: effectiveRowHeight,
15474
+ variant: "chart",
15475
+ startIndex: visibleTasks.length,
15476
+ chartDayWidth: dayWidth
15477
+ }
15478
+ )
15389
15479
  ]
15390
15480
  }
15391
15481
  )
@@ -15406,7 +15496,7 @@ GanttChart.displayName = "GanttChart";
15406
15496
 
15407
15497
  // src/components/ui/Button.tsx
15408
15498
  var import_react19 = __toESM(require("react"));
15409
- var import_jsx_runtime21 = require("react/jsx-runtime");
15499
+ var import_jsx_runtime22 = require("react/jsx-runtime");
15410
15500
  var Button = import_react19.default.forwardRef(
15411
15501
  ({ className, variant = "default", size = "default", children, ...props }, ref) => {
15412
15502
  const classes = [
@@ -15415,7 +15505,7 @@ var Button = import_react19.default.forwardRef(
15415
15505
  size !== "default" ? `gantt-btn-${size}` : "",
15416
15506
  className || ""
15417
15507
  ].filter(Boolean).join(" ");
15418
- return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("button", { ref, className: classes, ...props, children });
15508
+ return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { ref, className: classes, ...props, children });
15419
15509
  }
15420
15510
  );
15421
15511
  Button.displayName = "Button";
@@ -15461,6 +15551,7 @@ var nameContains = (substring, caseSensitive = false) => (task) => {
15461
15551
  DatePicker,
15462
15552
  DragGuideLines,
15463
15553
  GanttChart,
15554
+ GenerationSkeletonRows,
15464
15555
  GridBackground,
15465
15556
  Input,
15466
15557
  PlanFactMatrix,