gantt-lib 0.71.1 → 0.71.2

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
@@ -931,7 +931,7 @@ declare const calculateMilestoneGeometry: (taskDate: Date, monthStart: Date, day
931
931
  };
932
932
  /**
933
933
  * Resolve milestone connection points relative to the task day cell.
934
- * Anchors sit at day boundary +/- half diamond diagonal.
934
+ * Anchors sit on the actual horizontal diamond vertices.
935
935
  */
936
936
  declare const calculateMilestoneConnectionBounds: (dayLeft: number, dayWidth: number, size?: number) => {
937
937
  left: number;
@@ -952,6 +952,7 @@ declare const resolveTaskHorizontalGeometry: (task: HorizontalGeometryTask, mont
952
952
  }) => {
953
953
  left: number;
954
954
  right: number;
955
+ centerX: number;
955
956
  };
956
957
  /**
957
958
  * Convert pixel position to date (inverse of calculateTaskBar)
package/dist/index.d.ts CHANGED
@@ -931,7 +931,7 @@ declare const calculateMilestoneGeometry: (taskDate: Date, monthStart: Date, day
931
931
  };
932
932
  /**
933
933
  * Resolve milestone connection points relative to the task day cell.
934
- * Anchors sit at day boundary +/- half diamond diagonal.
934
+ * Anchors sit on the actual horizontal diamond vertices.
935
935
  */
936
936
  declare const calculateMilestoneConnectionBounds: (dayLeft: number, dayWidth: number, size?: number) => {
937
937
  left: number;
@@ -952,6 +952,7 @@ declare const resolveTaskHorizontalGeometry: (task: HorizontalGeometryTask, mont
952
952
  }) => {
953
953
  left: number;
954
954
  right: number;
955
+ centerX: number;
955
956
  };
956
957
  /**
957
958
  * Convert pixel position to date (inverse of calculateTaskBar)
package/dist/index.js CHANGED
@@ -1981,10 +1981,10 @@ var calculateMilestoneGeometry = (taskDate, monthStart, dayWidth, size = 14) =>
1981
1981
  };
1982
1982
  var calculateMilestoneConnectionBounds = (dayLeft, dayWidth, size = 14) => {
1983
1983
  const halfDiagonal = Math.round(size / Math.SQRT2);
1984
- const visualNudge = 2;
1984
+ const centerX = Math.round(dayLeft + dayWidth / 2);
1985
1985
  return {
1986
- left: dayLeft + halfDiagonal + visualNudge,
1987
- right: dayLeft + dayWidth - halfDiagonal - visualNudge
1986
+ left: centerX - halfDiagonal,
1987
+ right: centerX + halfDiagonal
1988
1988
  };
1989
1989
  };
1990
1990
  var resolveTaskHorizontalGeometry = (task, monthStart, dayWidth, override) => {
@@ -1993,19 +1993,32 @@ var resolveTaskHorizontalGeometry = (task, monthStart, dayWidth, override) => {
1993
1993
  if (task.type === "milestone") {
1994
1994
  const size = 14;
1995
1995
  if (override) {
1996
- return calculateMilestoneConnectionBounds(override.left, dayWidth, size);
1996
+ const bounds2 = calculateMilestoneConnectionBounds(override.left, dayWidth, size);
1997
+ return {
1998
+ ...bounds2,
1999
+ centerX: Math.round(override.left + dayWidth / 2)
2000
+ };
1997
2001
  }
1998
2002
  const bar2 = calculateTaskBar(startDate, startDate, monthStart, dayWidth);
1999
- return calculateMilestoneConnectionBounds(bar2.left, dayWidth, size);
2003
+ const bounds = calculateMilestoneConnectionBounds(bar2.left, dayWidth, size);
2004
+ return {
2005
+ ...bounds,
2006
+ centerX: Math.round(bar2.left + dayWidth / 2)
2007
+ };
2000
2008
  }
2001
2009
  if (override) {
2002
2010
  return {
2003
2011
  left: override.left,
2004
- right: override.left + override.width
2012
+ right: override.left + override.width,
2013
+ centerX: Math.round(override.left + override.width / 2)
2005
2014
  };
2006
2015
  }
2007
2016
  const bar = calculateTaskBar(startDate, endDate, monthStart, dayWidth);
2008
- return { left: bar.left, right: bar.left + bar.width };
2017
+ return {
2018
+ left: bar.left,
2019
+ right: bar.left + bar.width,
2020
+ centerX: Math.round(bar.left + bar.width / 2)
2021
+ };
2009
2022
  };
2010
2023
  var pixelsToDate = (pixels, monthStart, dayWidth) => {
2011
2024
  const days = Math.round(pixels / dayWidth);
@@ -3340,6 +3353,7 @@ var DependencyLines = import_react6.default.memo(({
3340
3353
  positions.set(task.id, {
3341
3354
  left: computed.left,
3342
3355
  right: computed.right,
3356
+ centerX: computed.centerX,
3343
3357
  rowTop: index * rowHeight,
3344
3358
  isVirtual: false
3345
3359
  });
@@ -3358,6 +3372,7 @@ var DependencyLines = import_react6.default.memo(({
3358
3372
  positions.set(task.id, {
3359
3373
  left: computed.left,
3360
3374
  right: computed.right,
3375
+ centerX: computed.centerX,
3361
3376
  rowTop: ancestorPosition.rowTop,
3362
3377
  isVirtual: true
3363
3378
  });
@@ -3408,12 +3423,12 @@ var DependencyLines = import_react6.default.memo(({
3408
3423
  fromY = predecessor.rowTop + rowHeight - 10;
3409
3424
  toY = successor.rowTop + 6;
3410
3425
  }
3411
- let fromX = edge.type === "SS" || edge.type === "SF" ? predecessor.left : predecessor.right;
3412
- const toX = edge.type === "FF" || edge.type === "SF" ? successor.right : successor.left;
3426
+ let fromX = predecessorTask && isMilestoneTask(predecessorTask) ? predecessor.centerX : edge.type === "SS" || edge.type === "SF" ? predecessor.left : predecessor.right;
3427
+ const toX = successorTask && isMilestoneTask(successorTask) ? successor.centerX : edge.type === "FF" || edge.type === "SF" ? successor.right : successor.left;
3413
3428
  const stackedMilestonesSameDay = Boolean(
3414
3429
  predecessorTask && successorTask && isMilestoneTask(predecessorTask) && isMilestoneTask(successorTask) && edge.lag === 0 && new Date(predecessorTask.startDate).toISOString().split("T")[0] === new Date(successorTask.startDate).toISOString().split("T")[0] && predecessor.rowTop !== successor.rowTop && edge.type === "FS"
3415
3430
  );
3416
- const finalToX = stackedMilestonesSameDay ? Math.round(((predecessor.left + predecessor.right) / 2 + (successor.left + successor.right) / 2) / 2) : toX;
3431
+ const finalToX = stackedMilestonesSameDay ? Math.round((predecessor.centerX + successor.centerX) / 2) : toX;
3417
3432
  if (stackedMilestonesSameDay) {
3418
3433
  fromX = finalToX;
3419
3434
  }