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.js
CHANGED
|
@@ -14020,6 +14020,17 @@ var PLAN_FACT_COLUMN_OVERSCAN = 24;
|
|
|
14020
14020
|
var PLAN_FACT_COLUMN_WINDOW_STEP = 14;
|
|
14021
14021
|
var DEFAULT_INITIAL_VIEWPORT_HEIGHT = 768;
|
|
14022
14022
|
var DEFAULT_PLAN_FACT_COLUMN_WINDOW = PLAN_FACT_COLUMN_OVERSCAN + PLAN_FACT_COLUMN_WINDOW_STEP;
|
|
14023
|
+
function buildControlledScheduleIdentity(tasks) {
|
|
14024
|
+
return tasks.map((task, index) => [
|
|
14025
|
+
String(index),
|
|
14026
|
+
task.id,
|
|
14027
|
+
String(task.startDate),
|
|
14028
|
+
String(task.endDate),
|
|
14029
|
+
task.type ?? "",
|
|
14030
|
+
task.parentId ?? "",
|
|
14031
|
+
JSON.stringify(task.dependencies ?? [])
|
|
14032
|
+
].join("\0")).join("");
|
|
14033
|
+
}
|
|
14023
14034
|
function getInitialScrollViewportHeight(containerHeight, headerHeight) {
|
|
14024
14035
|
if (containerHeight === void 0) {
|
|
14025
14036
|
return 0;
|
|
@@ -14417,11 +14428,17 @@ function TaskGanttChartInner(props, ref) {
|
|
|
14417
14428
|
[resolvedRowContentLines, rowHeight]
|
|
14418
14429
|
);
|
|
14419
14430
|
const normalizedTasks = (0, import_react19.useMemo)(() => normalizeHierarchyTasks(tasks), [tasks]);
|
|
14431
|
+
const controlledScheduleIdentity = (0, import_react19.useMemo)(
|
|
14432
|
+
() => buildControlledScheduleIdentity(normalizedTasks),
|
|
14433
|
+
[normalizedTasks]
|
|
14434
|
+
);
|
|
14435
|
+
const previousControlledScheduleIdentityRef = (0, import_react19.useRef)(null);
|
|
14436
|
+
const controlledScheduleChanged = previousControlledScheduleIdentityRef.current !== null && previousControlledScheduleIdentityRef.current !== controlledScheduleIdentity;
|
|
14420
14437
|
const [previewTasksById, setPreviewTasksById] = (0, import_react19.useState)(/* @__PURE__ */ new Map());
|
|
14421
14438
|
const previewNormalizedTasks = (0, import_react19.useMemo)(() => {
|
|
14422
|
-
if (previewTasksById.size === 0) return normalizedTasks;
|
|
14439
|
+
if (controlledScheduleChanged || previewTasksById.size === 0) return normalizedTasks;
|
|
14423
14440
|
return normalizedTasks.map((task) => previewTasksById.get(task.id) ?? task);
|
|
14424
|
-
}, [normalizedTasks, previewTasksById]);
|
|
14441
|
+
}, [controlledScheduleChanged, normalizedTasks, previewTasksById]);
|
|
14425
14442
|
const isCustomWeekend = (0, import_react19.useMemo)(
|
|
14426
14443
|
() => createCustomDayPredicate({ customDays, isWeekend: isWeekend3 }),
|
|
14427
14444
|
[customDays, isWeekend3]
|
|
@@ -14690,6 +14707,18 @@ function TaskGanttChartInner(props, ref) {
|
|
|
14690
14707
|
}, [effectiveRowHeight, tasks, visibleTasks]);
|
|
14691
14708
|
const [dragGuideLines, setDragGuideLines] = (0, import_react19.useState)(null);
|
|
14692
14709
|
const [draggedTaskOverride, setDraggedTaskOverride] = (0, import_react19.useState)(null);
|
|
14710
|
+
(0, import_react19.useEffect)(() => {
|
|
14711
|
+
const previousIdentity = previousControlledScheduleIdentityRef.current;
|
|
14712
|
+
previousControlledScheduleIdentityRef.current = controlledScheduleIdentity;
|
|
14713
|
+
if (previousIdentity === null || previousIdentity === controlledScheduleIdentity) {
|
|
14714
|
+
return;
|
|
14715
|
+
}
|
|
14716
|
+
previewPositionStore.clear();
|
|
14717
|
+
setCascadeOverrides((current) => current.size === 0 ? current : /* @__PURE__ */ new Map());
|
|
14718
|
+
setPreviewTasksById((current) => current.size === 0 ? current : /* @__PURE__ */ new Map());
|
|
14719
|
+
setDraggedTaskOverride((current) => current === null ? current : null);
|
|
14720
|
+
setDragGuideLines((current) => current === null ? current : null);
|
|
14721
|
+
}, [controlledScheduleIdentity, previewPositionStore]);
|
|
14693
14722
|
(0, import_react19.useEffect)(() => {
|
|
14694
14723
|
const result = validateDependencies(tasks);
|
|
14695
14724
|
setValidationResult(result);
|
|
@@ -14891,6 +14920,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
14891
14920
|
onTasksChange?.(normalized);
|
|
14892
14921
|
}, [onTasksChange, onReorder]);
|
|
14893
14922
|
const dependencyOverrides = (0, import_react19.useMemo)(() => {
|
|
14923
|
+
if (controlledScheduleChanged) return /* @__PURE__ */ new Map();
|
|
14894
14924
|
const map = new Map(cascadeOverrides);
|
|
14895
14925
|
if (draggedTaskOverride) {
|
|
14896
14926
|
map.set(draggedTaskOverride.taskId, {
|
|
@@ -14899,7 +14929,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
14899
14929
|
});
|
|
14900
14930
|
}
|
|
14901
14931
|
return map;
|
|
14902
|
-
}, [cascadeOverrides, draggedTaskOverride]);
|
|
14932
|
+
}, [cascadeOverrides, controlledScheduleChanged, draggedTaskOverride]);
|
|
14903
14933
|
const handleCascadeProgress = (0, import_react19.useCallback)((overrides, previewTasks = []) => {
|
|
14904
14934
|
previewPositionStore.setPositions(overrides);
|
|
14905
14935
|
const renderedTaskIds = renderedTaskIdsRef.current;
|
|
@@ -14916,9 +14946,9 @@ function TaskGanttChartInner(props, ref) {
|
|
|
14916
14946
|
});
|
|
14917
14947
|
}, [previewPositionStore]);
|
|
14918
14948
|
const previewVisibleTasks = (0, import_react19.useMemo)(() => {
|
|
14919
|
-
if (previewTasksById.size === 0) return visibleTasks;
|
|
14949
|
+
if (controlledScheduleChanged || previewTasksById.size === 0) return visibleTasks;
|
|
14920
14950
|
return visibleTasks.map((task) => previewTasksById.get(task.id) ?? task);
|
|
14921
|
-
}, [visibleTasks, previewTasksById]);
|
|
14951
|
+
}, [controlledScheduleChanged, visibleTasks, previewTasksById]);
|
|
14922
14952
|
const visibleTaskIndexMap = (0, import_react19.useMemo)(
|
|
14923
14953
|
() => new Map(visibleTasks.map((task, index) => [task.id, index])),
|
|
14924
14954
|
[visibleTasks]
|