gantt-lib 0.132.2 → 0.132.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -614,6 +614,10 @@ interface TaskChartSharedProps<TTask extends Task = Task> {
614
614
  showChart?: boolean;
615
615
  /** Display-only placeholder rows appended below the currently available task rows. */
616
616
  skeletonRowCount?: number;
617
+ /** Shift skeleton chart bars by this many days relative to today (negative values start earlier). */
618
+ skeletonStartOffsetDays?: number;
619
+ /** Add a stable per-row backward jitter to skeleton chart bars, in days. */
620
+ skeletonStartJitterDays?: number;
617
621
  /** Optional vertical timeline markers such as deadlines and checkpoints. */
618
622
  timelineMarkers?: TimelineMarker[];
619
623
  /** Additional custom columns to render in the TaskList after built-in columns */
@@ -840,6 +844,7 @@ interface GenerationSkeletonRowsProps {
840
844
  taskListLayout?: GenerationSkeletonTaskListLayout;
841
845
  chartDayWidth?: number;
842
846
  chartStartDayOffset?: number;
847
+ chartStartJitterDays?: number;
843
848
  }
844
849
  declare const GenerationSkeletonRows: React$1.FC<GenerationSkeletonRowsProps>;
845
850
 
package/dist/index.d.ts CHANGED
@@ -614,6 +614,10 @@ interface TaskChartSharedProps<TTask extends Task = Task> {
614
614
  showChart?: boolean;
615
615
  /** Display-only placeholder rows appended below the currently available task rows. */
616
616
  skeletonRowCount?: number;
617
+ /** Shift skeleton chart bars by this many days relative to today (negative values start earlier). */
618
+ skeletonStartOffsetDays?: number;
619
+ /** Add a stable per-row backward jitter to skeleton chart bars, in days. */
620
+ skeletonStartJitterDays?: number;
617
621
  /** Optional vertical timeline markers such as deadlines and checkpoints. */
618
622
  timelineMarkers?: TimelineMarker[];
619
623
  /** Additional custom columns to render in the TaskList after built-in columns */
@@ -840,6 +844,7 @@ interface GenerationSkeletonRowsProps {
840
844
  taskListLayout?: GenerationSkeletonTaskListLayout;
841
845
  chartDayWidth?: number;
842
846
  chartStartDayOffset?: number;
847
+ chartStartJitterDays?: number;
843
848
  }
844
849
  declare const GenerationSkeletonRows: React$1.FC<GenerationSkeletonRowsProps>;
845
850
 
package/dist/index.js CHANGED
@@ -8648,6 +8648,11 @@ var import_react13 = require("react");
8648
8648
  var import_jsx_runtime16 = require("react/jsx-runtime");
8649
8649
  var MAX_SKELETON_ROWS = 200;
8650
8650
  var SHIMMER_DURATION_MS = 1450;
8651
+ function stableRowJitter(rowIndex, maxDays) {
8652
+ if (maxDays <= 0) return 0;
8653
+ const hash = Math.imul(rowIndex + 1, 2654435761) >>> 0;
8654
+ return hash % (maxDays + 1);
8655
+ }
8651
8656
  function clampCount(count) {
8652
8657
  if (!Number.isFinite(count)) return 0;
8653
8658
  return Math.min(MAX_SKELETON_ROWS, Math.max(0, Math.floor(count)));
@@ -8659,7 +8664,8 @@ var GenerationSkeletonRows = ({
8659
8664
  startIndex = 0,
8660
8665
  taskListLayout,
8661
8666
  chartDayWidth = 40,
8662
- chartStartDayOffset = 0
8667
+ chartStartDayOffset = 0,
8668
+ chartStartJitterDays = 0
8663
8669
  }) => {
8664
8670
  const safeCount = clampCount(count);
8665
8671
  const previousCountRef = (0, import_react13.useRef)(null);
@@ -8687,9 +8693,10 @@ var GenerationSkeletonRows = ({
8687
8693
  const shortShape = rowIndex % 3 === 1;
8688
8694
  const mediumShape = rowIndex % 3 === 2;
8689
8695
  const chartBarDays = 5 + rowIndex % 6;
8696
+ const chartStartJitter = variant === "chart" ? stableRowJitter(rowIndex, Math.max(0, Math.floor(chartStartJitterDays))) : 0;
8690
8697
  const chartBarStyle = variant === "chart" ? {
8691
8698
  width: `${chartBarDays * Math.max(1, chartDayWidth)}px`,
8692
- marginLeft: `${Math.max(0, chartStartDayOffset) * Math.max(1, chartDayWidth)}px`
8699
+ marginLeft: `${Math.max(0, chartStartDayOffset - chartStartJitter) * Math.max(1, chartDayWidth)}px`
8693
8700
  } : void 0;
8694
8701
  return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
8695
8702
  "div",
@@ -14037,6 +14044,8 @@ function TaskGanttChartInner(props, ref) {
14037
14044
  disableTaskDrag = false,
14038
14045
  showChart = true,
14039
14046
  skeletonRowCount = 0,
14047
+ skeletonStartOffsetDays = 0,
14048
+ skeletonStartJitterDays = 0,
14040
14049
  timelineMarkers,
14041
14050
  additionalColumns,
14042
14051
  hiddenTaskListColumns,
@@ -15489,7 +15498,8 @@ function TaskGanttChartInner(props, ref) {
15489
15498
  variant: "chart",
15490
15499
  startIndex: visibleTasks.length,
15491
15500
  chartDayWidth: dayWidth,
15492
- chartStartDayOffset: todayInRange ? todayIndex : 0
15501
+ chartStartDayOffset: todayInRange ? Math.max(0, todayIndex + Math.floor(Number.isFinite(skeletonStartOffsetDays) ? skeletonStartOffsetDays : 0)) : 0,
15502
+ chartStartJitterDays: skeletonStartJitterDays
15493
15503
  }
15494
15504
  )
15495
15505
  ]