gantt-lib 0.135.0 → 0.135.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.css.map +1 -1
- package/dist/index.js +35 -5
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +35 -5
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +14 -2
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -13896,6 +13896,17 @@ var PLAN_FACT_COLUMN_OVERSCAN = 24;
|
|
|
13896
13896
|
var PLAN_FACT_COLUMN_WINDOW_STEP = 14;
|
|
13897
13897
|
var DEFAULT_INITIAL_VIEWPORT_HEIGHT = 768;
|
|
13898
13898
|
var DEFAULT_PLAN_FACT_COLUMN_WINDOW = PLAN_FACT_COLUMN_OVERSCAN + PLAN_FACT_COLUMN_WINDOW_STEP;
|
|
13899
|
+
function buildControlledScheduleIdentity(tasks) {
|
|
13900
|
+
return tasks.map((task, index) => [
|
|
13901
|
+
String(index),
|
|
13902
|
+
task.id,
|
|
13903
|
+
String(task.startDate),
|
|
13904
|
+
String(task.endDate),
|
|
13905
|
+
task.type ?? "",
|
|
13906
|
+
task.parentId ?? "",
|
|
13907
|
+
JSON.stringify(task.dependencies ?? [])
|
|
13908
|
+
].join("\0")).join("");
|
|
13909
|
+
}
|
|
13899
13910
|
function getInitialScrollViewportHeight(containerHeight, headerHeight) {
|
|
13900
13911
|
if (containerHeight === void 0) {
|
|
13901
13912
|
return 0;
|
|
@@ -14293,11 +14304,17 @@ function TaskGanttChartInner(props, ref) {
|
|
|
14293
14304
|
[resolvedRowContentLines, rowHeight]
|
|
14294
14305
|
);
|
|
14295
14306
|
const normalizedTasks = useMemo13(() => normalizeHierarchyTasks(tasks), [tasks]);
|
|
14307
|
+
const controlledScheduleIdentity = useMemo13(
|
|
14308
|
+
() => buildControlledScheduleIdentity(normalizedTasks),
|
|
14309
|
+
[normalizedTasks]
|
|
14310
|
+
);
|
|
14311
|
+
const previousControlledScheduleIdentityRef = useRef12(null);
|
|
14312
|
+
const controlledScheduleChanged = previousControlledScheduleIdentityRef.current !== null && previousControlledScheduleIdentityRef.current !== controlledScheduleIdentity;
|
|
14296
14313
|
const [previewTasksById, setPreviewTasksById] = useState12(/* @__PURE__ */ new Map());
|
|
14297
14314
|
const previewNormalizedTasks = useMemo13(() => {
|
|
14298
|
-
if (previewTasksById.size === 0) return normalizedTasks;
|
|
14315
|
+
if (controlledScheduleChanged || previewTasksById.size === 0) return normalizedTasks;
|
|
14299
14316
|
return normalizedTasks.map((task) => previewTasksById.get(task.id) ?? task);
|
|
14300
|
-
}, [normalizedTasks, previewTasksById]);
|
|
14317
|
+
}, [controlledScheduleChanged, normalizedTasks, previewTasksById]);
|
|
14301
14318
|
const isCustomWeekend = useMemo13(
|
|
14302
14319
|
() => createCustomDayPredicate({ customDays, isWeekend: isWeekend3 }),
|
|
14303
14320
|
[customDays, isWeekend3]
|
|
@@ -14566,6 +14583,18 @@ function TaskGanttChartInner(props, ref) {
|
|
|
14566
14583
|
}, [effectiveRowHeight, tasks, visibleTasks]);
|
|
14567
14584
|
const [dragGuideLines, setDragGuideLines] = useState12(null);
|
|
14568
14585
|
const [draggedTaskOverride, setDraggedTaskOverride] = useState12(null);
|
|
14586
|
+
useEffect10(() => {
|
|
14587
|
+
const previousIdentity = previousControlledScheduleIdentityRef.current;
|
|
14588
|
+
previousControlledScheduleIdentityRef.current = controlledScheduleIdentity;
|
|
14589
|
+
if (previousIdentity === null || previousIdentity === controlledScheduleIdentity) {
|
|
14590
|
+
return;
|
|
14591
|
+
}
|
|
14592
|
+
previewPositionStore.clear();
|
|
14593
|
+
setCascadeOverrides((current) => current.size === 0 ? current : /* @__PURE__ */ new Map());
|
|
14594
|
+
setPreviewTasksById((current) => current.size === 0 ? current : /* @__PURE__ */ new Map());
|
|
14595
|
+
setDraggedTaskOverride((current) => current === null ? current : null);
|
|
14596
|
+
setDragGuideLines((current) => current === null ? current : null);
|
|
14597
|
+
}, [controlledScheduleIdentity, previewPositionStore]);
|
|
14569
14598
|
useEffect10(() => {
|
|
14570
14599
|
const result = validateDependencies(tasks);
|
|
14571
14600
|
setValidationResult(result);
|
|
@@ -14767,6 +14796,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
14767
14796
|
onTasksChange?.(normalized);
|
|
14768
14797
|
}, [onTasksChange, onReorder]);
|
|
14769
14798
|
const dependencyOverrides = useMemo13(() => {
|
|
14799
|
+
if (controlledScheduleChanged) return /* @__PURE__ */ new Map();
|
|
14770
14800
|
const map = new Map(cascadeOverrides);
|
|
14771
14801
|
if (draggedTaskOverride) {
|
|
14772
14802
|
map.set(draggedTaskOverride.taskId, {
|
|
@@ -14775,7 +14805,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
14775
14805
|
});
|
|
14776
14806
|
}
|
|
14777
14807
|
return map;
|
|
14778
|
-
}, [cascadeOverrides, draggedTaskOverride]);
|
|
14808
|
+
}, [cascadeOverrides, controlledScheduleChanged, draggedTaskOverride]);
|
|
14779
14809
|
const handleCascadeProgress = useCallback10((overrides, previewTasks = []) => {
|
|
14780
14810
|
previewPositionStore.setPositions(overrides);
|
|
14781
14811
|
const renderedTaskIds = renderedTaskIdsRef.current;
|
|
@@ -14792,9 +14822,9 @@ function TaskGanttChartInner(props, ref) {
|
|
|
14792
14822
|
});
|
|
14793
14823
|
}, [previewPositionStore]);
|
|
14794
14824
|
const previewVisibleTasks = useMemo13(() => {
|
|
14795
|
-
if (previewTasksById.size === 0) return visibleTasks;
|
|
14825
|
+
if (controlledScheduleChanged || previewTasksById.size === 0) return visibleTasks;
|
|
14796
14826
|
return visibleTasks.map((task) => previewTasksById.get(task.id) ?? task);
|
|
14797
|
-
}, [visibleTasks, previewTasksById]);
|
|
14827
|
+
}, [controlledScheduleChanged, visibleTasks, previewTasksById]);
|
|
14798
14828
|
const visibleTaskIndexMap = useMemo13(
|
|
14799
14829
|
() => new Map(visibleTasks.map((task, index) => [task.id, index])),
|
|
14800
14830
|
[visibleTasks]
|