gantt-task-react-v 1.4.0 → 1.4.1

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.
@@ -13126,6 +13126,12 @@ const TaskGanttContentInner = (props) => {
13126
13126
  const tasksRes = [];
13127
13127
  const arrowsRes = [];
13128
13128
  const selectedTasksRes = [];
13129
+ const taskById = /* @__PURE__ */ new Map();
13130
+ mapGlobalRowIndexToTask.forEach((task) => {
13131
+ if (task.type !== "empty") {
13132
+ taskById.set(task.id, task);
13133
+ }
13134
+ });
13129
13135
  const addedSelectedTasks = {};
13130
13136
  const addedDependencies = {};
13131
13137
  for (let index2 = start; index2 <= end; ++index2) {
@@ -13420,6 +13426,93 @@ const TaskGanttContentInner = (props) => {
13420
13426
  );
13421
13427
  }
13422
13428
  }
13429
+ const renderedTop = start * fullRowHeight;
13430
+ const renderedBottom = (end + 1) * fullRowHeight;
13431
+ for (const [comparisonLevel, dependenciesByLevel] of dependencyMap) {
13432
+ let addedDependenciesAtLevel = addedDependencies[comparisonLevel];
13433
+ if (!addedDependenciesAtLevel) {
13434
+ addedDependenciesAtLevel = {};
13435
+ addedDependencies[comparisonLevel] = addedDependenciesAtLevel;
13436
+ }
13437
+ const criticalPathOnLevel = criticalPaths ? criticalPaths.get(comparisonLevel) : void 0;
13438
+ for (const [taskId, dependencies] of dependenciesByLevel) {
13439
+ let addedDependenciesAtTask = addedDependenciesAtLevel[taskId];
13440
+ if (!addedDependenciesAtTask) {
13441
+ addedDependenciesAtTask = {};
13442
+ addedDependenciesAtLevel[taskId] = addedDependenciesAtTask;
13443
+ }
13444
+ const targetTask = taskById.get(taskId);
13445
+ if (!targetTask)
13446
+ continue;
13447
+ const criticalPathForTask = criticalPathOnLevel ? criticalPathOnLevel.dependencies.get(taskId) : void 0;
13448
+ dependencies.filter(({ source }) => {
13449
+ if (addedDependenciesAtTask[source.id])
13450
+ return false;
13451
+ if (!visibleTasksMirror[source.id])
13452
+ return false;
13453
+ return true;
13454
+ }).forEach(
13455
+ ({
13456
+ containerHeight,
13457
+ containerY,
13458
+ innerFromY,
13459
+ innerToY,
13460
+ ownTarget,
13461
+ source,
13462
+ sourceTarget
13463
+ }) => {
13464
+ if (containerY + containerHeight < renderedTop || containerY > renderedBottom) {
13465
+ return;
13466
+ }
13467
+ addedDependenciesAtTask[source.id] = true;
13468
+ const isCritical = criticalPathForTask ? criticalPathForTask.has(source.id) : false;
13469
+ const { x1: fromX1, x2: fromX2 } = getTaskCoordinates2(source);
13470
+ const { x1: targetX1, x2: targetX2 } = getTaskCoordinates2(targetTask);
13471
+ const safeFromX1 = isNaN(fromX1) || !isFinite(fromX1) ? 0 : fromX1;
13472
+ const safeFromX2 = isNaN(fromX2) || !isFinite(fromX2) ? safeFromX1 + 10 : fromX2;
13473
+ const safeTargetX1 = isNaN(targetX1) || !isFinite(targetX1) ? 0 : targetX1;
13474
+ const safeTargetX2 = isNaN(targetX2) || !isFinite(targetX2) ? safeTargetX1 + 10 : targetX2;
13475
+ const cX = Math.min(safeFromX1, safeTargetX1) - DELTA_RELATION_WIDTH;
13476
+ const cW = Math.max(safeFromX2, safeTargetX2) - cX + DELTA_RELATION_WIDTH;
13477
+ const safeCX = isNaN(cX) || !isFinite(cX) ? 0 : cX;
13478
+ const safeCW = isNaN(cW) || !isFinite(cW) ? 100 : Math.max(cW, 0);
13479
+ arrowsRes.push(
13480
+ /* @__PURE__ */ jsx(
13481
+ "svg",
13482
+ {
13483
+ x: Math.max(safeCX + (additionalLeftSpace || 0), 0),
13484
+ y: containerY,
13485
+ width: safeCW,
13486
+ height: containerHeight,
13487
+ children: /* @__PURE__ */ jsx(
13488
+ Arrow,
13489
+ {
13490
+ distances,
13491
+ taskFrom: source,
13492
+ targetFrom: sourceTarget,
13493
+ fromX1: safeFromX1 - safeCX,
13494
+ fromX2: safeFromX2 - safeCX,
13495
+ fromY: innerFromY,
13496
+ taskTo: targetTask,
13497
+ targetTo: ownTarget,
13498
+ toX1: safeTargetX1 - safeCX,
13499
+ toX2: safeTargetX2 - safeCX,
13500
+ toY: innerToY,
13501
+ fullRowHeight,
13502
+ taskHeight,
13503
+ isCritical,
13504
+ rtl,
13505
+ onArrowDoubleClick
13506
+ }
13507
+ )
13508
+ },
13509
+ `Arrow from ${source.id} to ${taskId} on ${comparisonLevel}`
13510
+ )
13511
+ );
13512
+ }
13513
+ );
13514
+ }
13515
+ }
13423
13516
  return [tasksRes, arrowsRes, selectedTasksRes];
13424
13517
  }, [
13425
13518
  viewMode,
@@ -13143,6 +13143,12 @@
13143
13143
  const tasksRes = [];
13144
13144
  const arrowsRes = [];
13145
13145
  const selectedTasksRes = [];
13146
+ const taskById = /* @__PURE__ */ new Map();
13147
+ mapGlobalRowIndexToTask.forEach((task) => {
13148
+ if (task.type !== "empty") {
13149
+ taskById.set(task.id, task);
13150
+ }
13151
+ });
13146
13152
  const addedSelectedTasks = {};
13147
13153
  const addedDependencies = {};
13148
13154
  for (let index2 = start; index2 <= end; ++index2) {
@@ -13437,6 +13443,93 @@
13437
13443
  );
13438
13444
  }
13439
13445
  }
13446
+ const renderedTop = start * fullRowHeight;
13447
+ const renderedBottom = (end + 1) * fullRowHeight;
13448
+ for (const [comparisonLevel, dependenciesByLevel] of dependencyMap) {
13449
+ let addedDependenciesAtLevel = addedDependencies[comparisonLevel];
13450
+ if (!addedDependenciesAtLevel) {
13451
+ addedDependenciesAtLevel = {};
13452
+ addedDependencies[comparisonLevel] = addedDependenciesAtLevel;
13453
+ }
13454
+ const criticalPathOnLevel = criticalPaths ? criticalPaths.get(comparisonLevel) : void 0;
13455
+ for (const [taskId, dependencies] of dependenciesByLevel) {
13456
+ let addedDependenciesAtTask = addedDependenciesAtLevel[taskId];
13457
+ if (!addedDependenciesAtTask) {
13458
+ addedDependenciesAtTask = {};
13459
+ addedDependenciesAtLevel[taskId] = addedDependenciesAtTask;
13460
+ }
13461
+ const targetTask = taskById.get(taskId);
13462
+ if (!targetTask)
13463
+ continue;
13464
+ const criticalPathForTask = criticalPathOnLevel ? criticalPathOnLevel.dependencies.get(taskId) : void 0;
13465
+ dependencies.filter(({ source }) => {
13466
+ if (addedDependenciesAtTask[source.id])
13467
+ return false;
13468
+ if (!visibleTasksMirror[source.id])
13469
+ return false;
13470
+ return true;
13471
+ }).forEach(
13472
+ ({
13473
+ containerHeight,
13474
+ containerY,
13475
+ innerFromY,
13476
+ innerToY,
13477
+ ownTarget,
13478
+ source,
13479
+ sourceTarget
13480
+ }) => {
13481
+ if (containerY + containerHeight < renderedTop || containerY > renderedBottom) {
13482
+ return;
13483
+ }
13484
+ addedDependenciesAtTask[source.id] = true;
13485
+ const isCritical = criticalPathForTask ? criticalPathForTask.has(source.id) : false;
13486
+ const { x1: fromX1, x2: fromX2 } = getTaskCoordinates2(source);
13487
+ const { x1: targetX1, x2: targetX2 } = getTaskCoordinates2(targetTask);
13488
+ const safeFromX1 = isNaN(fromX1) || !isFinite(fromX1) ? 0 : fromX1;
13489
+ const safeFromX2 = isNaN(fromX2) || !isFinite(fromX2) ? safeFromX1 + 10 : fromX2;
13490
+ const safeTargetX1 = isNaN(targetX1) || !isFinite(targetX1) ? 0 : targetX1;
13491
+ const safeTargetX2 = isNaN(targetX2) || !isFinite(targetX2) ? safeTargetX1 + 10 : targetX2;
13492
+ const cX = Math.min(safeFromX1, safeTargetX1) - DELTA_RELATION_WIDTH;
13493
+ const cW = Math.max(safeFromX2, safeTargetX2) - cX + DELTA_RELATION_WIDTH;
13494
+ const safeCX = isNaN(cX) || !isFinite(cX) ? 0 : cX;
13495
+ const safeCW = isNaN(cW) || !isFinite(cW) ? 100 : Math.max(cW, 0);
13496
+ arrowsRes.push(
13497
+ /* @__PURE__ */ jsxRuntime.jsx(
13498
+ "svg",
13499
+ {
13500
+ x: Math.max(safeCX + (additionalLeftSpace || 0), 0),
13501
+ y: containerY,
13502
+ width: safeCW,
13503
+ height: containerHeight,
13504
+ children: /* @__PURE__ */ jsxRuntime.jsx(
13505
+ Arrow,
13506
+ {
13507
+ distances,
13508
+ taskFrom: source,
13509
+ targetFrom: sourceTarget,
13510
+ fromX1: safeFromX1 - safeCX,
13511
+ fromX2: safeFromX2 - safeCX,
13512
+ fromY: innerFromY,
13513
+ taskTo: targetTask,
13514
+ targetTo: ownTarget,
13515
+ toX1: safeTargetX1 - safeCX,
13516
+ toX2: safeTargetX2 - safeCX,
13517
+ toY: innerToY,
13518
+ fullRowHeight,
13519
+ taskHeight,
13520
+ isCritical,
13521
+ rtl,
13522
+ onArrowDoubleClick
13523
+ }
13524
+ )
13525
+ },
13526
+ `Arrow from ${source.id} to ${taskId} on ${comparisonLevel}`
13527
+ )
13528
+ );
13529
+ }
13530
+ );
13531
+ }
13532
+ }
13440
13533
  return [tasksRes, arrowsRes, selectedTasksRes];
13441
13534
  }, [
13442
13535
  viewMode,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gantt-task-react-v",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "Interactive Gantt Chart for React with TypeScript.",
5
5
  "author": "aguilanbon",
6
6
  "homepage": "https://github.com/aguilanbon/gantt-task-react-v",