@object-ui/plugin-gantt 11.2.0 → 11.4.0

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.js CHANGED
@@ -1,77 +1,77 @@
1
1
  import * as e from "react";
2
2
  import { useCallback as t, useEffect as n, useMemo as r, useRef as i, useState as a } from "react";
3
- import { ComponentRegistry as o, buildExpandFields as s, extractRecords as c } from "@object-ui/core";
4
- import { useNavigationOverlay as l, useObjectTranslation as u, useSchemaContext as d } from "@object-ui/react";
5
- import { GanttConfigSchema as f } from "@objectstack/spec/ui";
6
- import { resolveFieldCurrency as p, useLocalization as m } from "@object-ui/i18n";
7
- import { RecordDetailDrawer as h, deriveRecordPageHref as g } from "@object-ui/plugin-detail";
8
- import { AlertDialog as ee, AlertDialogAction as _, AlertDialogCancel as v, AlertDialogContent as te, AlertDialogDescription as ne, AlertDialogFooter as re, AlertDialogHeader as ie, AlertDialogTitle as ae, Button as y, cn as b, useResizeObserver as oe } from "@object-ui/components";
9
- import { formatCurrency as se, formatDate as ce, formatDateTime as le, formatNumber as x, formatPercent as ue, getSemanticColorName as S, getSemanticHex as de, humanizeLabel as fe } from "@object-ui/fields";
10
- import { Activity as pe, ChevronDown as me, ChevronLeft as he, ChevronRight as C, Crosshair as ge, Download as _e, FileDown as ve, Lock as w, Maximize2 as T, Minimize2 as ye, PanelLeft as be, PanelLeftClose as xe, Redo2 as Se, Save as Ce, Undo2 as we, Wand2 as Te, ZoomIn as Ee, ZoomOut as De } from "lucide-react";
11
- import { Fragment as Oe, jsx as E, jsxs as D } from "react/jsx-runtime";
3
+ import { ComponentRegistry as o, buildExpandFields as s, extractRecords as c, getRecordDisplayName as l } from "@object-ui/core";
4
+ import { useNavigationOverlay as u, useObjectTranslation as d, useSchemaContext as f } from "@object-ui/react";
5
+ import { GanttConfigSchema as p } from "@objectstack/spec/ui";
6
+ import { resolveFieldCurrency as m, useLocalization as h } from "@object-ui/i18n";
7
+ import { RecordDetailDrawer as g, deriveRecordPageHref as ee } from "@object-ui/plugin-detail";
8
+ import { AlertDialog as _, AlertDialogAction as v, AlertDialogCancel as te, AlertDialogContent as ne, AlertDialogDescription as re, AlertDialogFooter as ie, AlertDialogHeader as ae, AlertDialogTitle as oe, Button as y, cn as b, useResizeObserver as se } from "@object-ui/components";
9
+ import { formatCurrency as ce, formatDate as le, formatDateTime as x, formatNumber as ue, formatPercent as S, getSemanticColorName as de, getSemanticHex as fe, humanizeLabel as pe } from "@object-ui/fields";
10
+ import { Activity as me, ChevronDown as he, ChevronLeft as ge, ChevronRight as C, Crosshair as _e, Download as ve, FileDown as ye, Lock as w, Maximize2 as T, Minimize2 as be, PanelLeft as xe, PanelLeftClose as Se, Redo2 as Ce, Save as we, Undo2 as Te, Wand2 as Ee, ZoomIn as De, ZoomOut as Oe } from "lucide-react";
11
+ import { Fragment as ke, jsx as E, jsxs as D } from "react/jsx-runtime";
12
12
  //#region src/scheduling.ts
13
- var O = 1e3 * 60 * 60 * 24, ke = (e) => e.toISOString().slice(0, 10);
14
- function k(e, t) {
13
+ var Ae = 1e3 * 60 * 60 * 24, je = (e) => e.toISOString().slice(0, 10);
14
+ function O(e, t) {
15
15
  if (t.skipWeekends) {
16
16
  let t = e.getUTCDay();
17
17
  if (t === 0 || t === 6) return !1;
18
18
  }
19
- return !(t.holidays && t.holidays.has(ke(e)));
19
+ return !(t.holidays && t.holidays.has(je(e)));
20
20
  }
21
- function A(e) {
21
+ function k(e) {
22
22
  let t = new Date(e);
23
23
  return t.setUTCHours(0, 0, 0, 0), t;
24
24
  }
25
- function j(e, t) {
26
- let n = A(e);
27
- for (; !k(n, t);) n = new Date(n.getTime() + O);
25
+ function A(e, t) {
26
+ let n = k(e);
27
+ for (; !O(n, t);) n = new Date(n.getTime() + Ae);
28
28
  return n.getTime();
29
29
  }
30
- function M(e, t, n) {
30
+ function Me(e, t, n) {
31
31
  if (t <= e) return 0;
32
- let r = 0, i = A(e), a = A(t).getTime();
33
- for (; i.getTime() < a;) k(i, n) && r++, i = new Date(i.getTime() + O);
32
+ let r = 0, i = k(e), a = k(t).getTime();
33
+ for (; i.getTime() < a;) O(i, n) && r++, i = new Date(i.getTime() + Ae);
34
34
  return r;
35
35
  }
36
- function Ae(e, t, n) {
37
- if (t <= 0) return A(e).getTime();
38
- let r = A(e), i = t;
39
- for (; i > 0;) k(r, n) && i--, r = new Date(r.getTime() + O);
36
+ function j(e, t, n) {
37
+ if (t <= 0) return k(e).getTime();
38
+ let r = k(e), i = t;
39
+ for (; i > 0;) O(r, n) && i--, r = new Date(r.getTime() + Ae);
40
40
  return r.getTime();
41
41
  }
42
- function N(e, t, n) {
43
- if (t <= 0) return A(e).getTime();
44
- let r = A(e), i = t;
45
- for (; i > 0;) r = /* @__PURE__ */ new Date(r.getTime() - O), k(r, n) && i--;
42
+ function Ne(e, t, n) {
43
+ if (t <= 0) return k(e).getTime();
44
+ let r = k(e), i = t;
45
+ for (; i > 0;) r = /* @__PURE__ */ new Date(r.getTime() - Ae), O(r, n) && i--;
46
46
  return r.getTime();
47
47
  }
48
- var P = (e) => String(e);
49
- function je(e) {
48
+ var M = (e) => String(e);
49
+ function Pe(e) {
50
50
  return e === "ss" || e === "ff" || e === "sf" ? e : "fs";
51
51
  }
52
- function Me(e) {
53
- let t = new Set(e.map((e) => P(e.id))), n = [];
52
+ function Fe(e) {
53
+ let t = new Set(e.map((e) => M(e.id))), n = [];
54
54
  for (let r of e) {
55
- let e = P(r.id);
55
+ let e = M(r.id);
56
56
  for (let i of r.dependencies ?? []) {
57
57
  let r = typeof i == "object" && !!i, a = r ? i.id : i;
58
58
  if (a == null || a === "") continue;
59
- let o = P(a);
59
+ let o = M(a);
60
60
  o === e || !t.has(o) || n.push({
61
61
  pred: o,
62
62
  succ: e,
63
- type: je(r ? i.type : void 0)
63
+ type: Pe(r ? i.type : void 0)
64
64
  });
65
65
  }
66
66
  }
67
67
  return n;
68
68
  }
69
- function Ne(e) {
69
+ function N(e) {
70
70
  let t = /* @__PURE__ */ new Set();
71
- for (let n of e) n.parent != null && n.parent !== "" && t.add(P(n.parent));
71
+ for (let n of e) n.parent != null && n.parent !== "" && t.add(M(n.parent));
72
72
  return t;
73
73
  }
74
- function Pe(e, t) {
74
+ function P(e, t) {
75
75
  let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
76
76
  for (let t of e) n.set(t, 0), r.set(t, []);
77
77
  for (let e of t) r.get(e.pred).push(e.succ), n.set(e.succ, (n.get(e.succ) ?? 0) + 1);
@@ -97,7 +97,7 @@ function Pe(e, t) {
97
97
  hasCycle: !1
98
98
  };
99
99
  }
100
- function Fe(e, t) {
100
+ function Ie(e, t) {
101
101
  let n = {
102
102
  criticalIds: /* @__PURE__ */ new Set(),
103
103
  criticalEdges: /* @__PURE__ */ new Set()
@@ -105,10 +105,10 @@ function Fe(e, t) {
105
105
  if (!e.length) return n;
106
106
  let r = /* @__PURE__ */ new Map();
107
107
  for (let n of e) {
108
- let e = t ? M(n.start.getTime(), n.end.getTime(), t) : (n.end.getTime() - n.start.getTime()) / O;
109
- r.set(P(n.id), Number.isFinite(e) && e > 0 ? e : 0);
108
+ let e = t ? Me(n.start.getTime(), n.end.getTime(), t) : (n.end.getTime() - n.start.getTime()) / Ae;
109
+ r.set(M(n.id), Number.isFinite(e) && e > 0 ? e : 0);
110
110
  }
111
- let i = Me(e), a = e.map((e) => P(e.id)), { order: o, hasCycle: s } = Pe(a, i);
111
+ let i = Fe(e), a = e.map((e) => M(e.id)), { order: o, hasCycle: s } = P(a, i);
112
112
  if (s) return n;
113
113
  let c = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map();
114
114
  for (let e of a) c.set(e, []), l.set(e, []);
@@ -139,21 +139,21 @@ function Fe(e, t) {
139
139
  criticalEdges: _
140
140
  };
141
141
  }
142
- function Ie(e, t) {
142
+ function Le(e, t) {
143
143
  if (!e.length) return [];
144
- let n = Me(e), r = e.map((e) => P(e.id)), { order: i, hasCycle: a } = Pe(r, n);
144
+ let n = Fe(e), r = e.map((e) => M(e.id)), { order: i, hasCycle: a } = P(r, n);
145
145
  if (a) return [];
146
- let o = Ne(e), s = /* @__PURE__ */ new Map();
147
- for (let t of e) s.set(P(t.id), t);
146
+ let o = N(e), s = /* @__PURE__ */ new Map();
147
+ for (let t of e) s.set(M(t.id), t);
148
148
  let c = /* @__PURE__ */ new Map();
149
149
  for (let e of r) c.set(e, []);
150
150
  for (let e of n) c.get(e.succ).push(e);
151
151
  let l = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map();
152
- for (let t of e) l.set(P(t.id), t.start.getTime()), u.set(P(t.id), t.end.getTime());
152
+ for (let t of e) l.set(M(t.id), t.start.getTime()), u.set(M(t.id), t.end.getTime());
153
153
  for (let e of i) {
154
154
  let n = s.get(e);
155
155
  if (!n) continue;
156
- let r = t ? M(l.get(e), u.get(e), t) : u.get(e) - l.get(e), i = n.start.getTime();
156
+ let r = t ? Me(l.get(e), u.get(e), t) : u.get(e) - l.get(e), i = n.start.getTime();
157
157
  for (let n of c.get(e) ?? []) {
158
158
  let e = l.get(n.pred), a = u.get(n.pred), o;
159
159
  switch (n.type) {
@@ -161,10 +161,10 @@ function Ie(e, t) {
161
161
  o = e;
162
162
  break;
163
163
  case "ff":
164
- o = t ? N(a, r, t) : a - r;
164
+ o = t ? Ne(a, r, t) : a - r;
165
165
  break;
166
166
  case "sf":
167
- o = t ? N(e, r, t) : e - r;
167
+ o = t ? Ne(e, r, t) : e - r;
168
168
  break;
169
169
  default:
170
170
  o = a;
@@ -173,13 +173,13 @@ function Ie(e, t) {
173
173
  o > i && (i = o);
174
174
  }
175
175
  if (!o.has(e)) if (t) {
176
- let n = j(i, t);
177
- l.set(e, n), u.set(e, Ae(n, r, t));
176
+ let n = A(i, t);
177
+ l.set(e, n), u.set(e, j(n, r, t));
178
178
  } else l.set(e, i), u.set(e, i + r);
179
179
  }
180
180
  let d = [];
181
181
  for (let t of e) {
182
- let e = P(t.id);
182
+ let e = M(t.id);
183
183
  if (o.has(e)) continue;
184
184
  let n = l.get(e), r = u.get(e);
185
185
  (n !== t.start.getTime() || r !== t.end.getTime()) && d.push({
@@ -192,28 +192,28 @@ function Ie(e, t) {
192
192
  }
193
193
  //#endregion
194
194
  //#region src/shifts.ts
195
- var F = 6e4;
196
- 1440 * F;
197
- var Le = 1440;
198
- function I(e) {
195
+ var Re = 6e4;
196
+ 1440 * Re;
197
+ var ze = 1440;
198
+ function F(e) {
199
199
  if (typeof e != "string") return null;
200
200
  let t = /^(\d{1,2}):(\d{2})$/.exec(e.trim());
201
201
  if (!t) return null;
202
202
  let n = Number(t[1]), r = Number(t[2]);
203
203
  return n < 0 || n > 23 || r < 0 || r > 59 ? null : n * 60 + r;
204
204
  }
205
- function Re(e) {
205
+ function Be(e) {
206
206
  if (!e || !Array.isArray(e.bands) || e.bands.length === 0) return null;
207
- let t = I(e.dayStart) ?? 0, n = [];
207
+ let t = F(e.dayStart) ?? 0, n = [];
208
208
  for (let t = 0; t < e.bands.length; t++) {
209
- let r = e.bands[t], i = I(r.start), a = I(r.end);
209
+ let r = e.bands[t], i = F(r.start), a = F(r.end);
210
210
  if (i == null || a == null || !r.label) return null;
211
- let o = (a - i + Le) % Le || Le;
211
+ let o = (a - i + ze) % ze || ze;
212
212
  n.push({
213
213
  key: r.key ?? `band${t}`,
214
214
  label: r.label,
215
215
  color: r.color,
216
- durMs: o * F
216
+ durMs: o * Re
217
217
  });
218
218
  }
219
219
  return {
@@ -222,19 +222,19 @@ function Re(e) {
222
222
  showMidnight: e.showMidnight !== !1
223
223
  };
224
224
  }
225
- function ze(e, t) {
225
+ function Ve(e, t) {
226
226
  let n = new Date(e);
227
227
  return n.setHours(0, 0, 0, 0), n.setMinutes(t), n.getTime() > e.getTime() && n.setDate(n.getDate() - 1), n;
228
228
  }
229
- function Be(e, t) {
229
+ function I(e, t) {
230
230
  if (t.bands.length === 0) return null;
231
- let n = ze(e, t.dayStartMin).getTime(), r = e.getTime() - n, i = 0;
231
+ let n = Ve(e, t.dayStartMin).getTime(), r = e.getTime() - n, i = 0;
232
232
  for (let e of t.bands) if (i += e.durMs, r < i) return e;
233
233
  return t.bands[t.bands.length - 1];
234
234
  }
235
235
  //#endregion
236
236
  //#region src/useGanttTranslation.ts
237
- var Ve = {
237
+ var He = {
238
238
  "gantt.column.taskName": "Task Name",
239
239
  "gantt.column.start": "Start",
240
240
  "gantt.column.end": "End",
@@ -292,60 +292,60 @@ var Ve = {
292
292
  "gantt.readOnly": "Read-only",
293
293
  "gantt.readOnlyHint": "Editing is disabled for this view."
294
294
  };
295
- function He(e, t) {
296
- let n = Ve[e] || e;
295
+ function Ue(e, t) {
296
+ let n = He[e] || e;
297
297
  if (t) for (let [e, r] of Object.entries(t)) n = n.replace(`{{${e}}}`, String(r));
298
298
  return n;
299
299
  }
300
- function Ue() {
300
+ function We() {
301
301
  try {
302
- let e = u();
302
+ let e = d();
303
303
  return {
304
304
  t: (t, n) => {
305
305
  let r = e.t(t, n);
306
- return typeof r == "string" && r !== t ? r : He(t, n);
306
+ return typeof r == "string" && r !== t ? r : Ue(t, n);
307
307
  },
308
308
  language: e.language
309
309
  };
310
310
  } catch {
311
311
  return {
312
- t: He,
312
+ t: Ue,
313
313
  language: void 0
314
314
  };
315
315
  }
316
316
  }
317
317
  //#endregion
318
318
  //#region src/GanttView.tsx
319
- function We(e) {
319
+ function Ge(e) {
320
320
  return 110;
321
321
  }
322
- function Ge(e) {
322
+ function Ke(e) {
323
323
  return e < 640 ? 140 : e < 1024 ? 220 : 320;
324
324
  }
325
- function Ke(e) {
325
+ function qe(e) {
326
326
  return e >= 280;
327
327
  }
328
- function qe(e) {
328
+ function Je(e) {
329
329
  return e < 640 ? 32 : 40;
330
330
  }
331
- var Je = [
331
+ var Ye = [
332
332
  "day",
333
333
  "week",
334
334
  "month",
335
335
  "quarter",
336
336
  "year"
337
- ], Ye = {
337
+ ], Xe = {
338
338
  day: 1,
339
339
  week: 7,
340
340
  month: 30.44,
341
341
  quarter: 91.31,
342
342
  year: 365.25
343
- }, Xe = 1e3 * 60 * 60 * 24;
344
- function Ze(e, t) {
343
+ }, Ze = 1e3 * 60 * 60 * 24;
344
+ function Qe(e, t) {
345
345
  let n = new Date(e);
346
346
  return n.setHours(0, 0, 0, 0), t === "week" ? n.setDate(n.getDate() - (n.getDay() + 6) % 7) : t === "month" ? n.setDate(1) : t === "quarter" ? n.setMonth(Math.floor(n.getMonth() / 3) * 3, 1) : t === "year" && n.setMonth(0, 1), n;
347
347
  }
348
- function Qe(e, t, n) {
348
+ function $e(e, t, n) {
349
349
  let r = e.length - 1, i = 0;
350
350
  for (; i < r && e[i + 1] < t;) i++;
351
351
  let a = i;
@@ -355,7 +355,7 @@ function Qe(e, t, n) {
355
355
  end: a
356
356
  };
357
357
  }
358
- function $e(e, t, n) {
358
+ function et(e, t, n) {
359
359
  let r = new Date(e);
360
360
  if (n === "day") r.setDate(r.getDate() + t);
361
361
  else if (n === "week") r.setDate(r.getDate() + t * 7);
@@ -367,7 +367,7 @@ function $e(e, t, n) {
367
367
  }
368
368
  return r;
369
369
  }
370
- function et(e, t, n, r = 2) {
370
+ function tt(e, t, n, r = 2) {
371
371
  return new Promise((i) => {
372
372
  let a = new Blob([e], { type: "image/svg+xml;charset=utf-8" }), o = URL.createObjectURL(a), s = new Image();
373
373
  s.onload = () => {
@@ -380,11 +380,11 @@ function et(e, t, n, r = 2) {
380
380
  }, s.src = o;
381
381
  });
382
382
  }
383
- function tt(e, t) {
383
+ function nt(e, t) {
384
384
  let n = document.createElement("a");
385
385
  n.href = URL.createObjectURL(e), n.download = t, document.body.appendChild(n), n.click(), n.remove(), setTimeout(() => URL.revokeObjectURL(n.href), 1e3);
386
386
  }
387
- function nt(e, t, n) {
387
+ function rt(e, t, n) {
388
388
  let r = (e) => {
389
389
  let t = new Uint8Array(e.length);
390
390
  for (let n = 0; n < e.length; n++) t[n] = e.charCodeAt(n) & 255;
@@ -399,18 +399,18 @@ function nt(e, t, n) {
399
399
  for (let e of o) d += `${String(e).padStart(10, "0")} 00000 n \n`;
400
400
  return d += `trailer\n<< /Size 6 /Root 1 0 R >>\nstartxref\n${u}\n%%EOF\n`, c(r(d)), new Blob(a, { type: "application/pdf" });
401
401
  }
402
- function rt(e) {
402
+ function it(e) {
403
403
  let t = e.slice(e.indexOf(",") + 1), n = atob(t), r = new Uint8Array(n.length);
404
404
  for (let e = 0; e < n.length; e++) r[e] = n.charCodeAt(e);
405
405
  return r;
406
406
  }
407
- var it = "gantt-layout:";
407
+ var L = "gantt-layout:";
408
408
  function at(e) {
409
409
  if (!e || typeof window > "u") return null;
410
410
  try {
411
- let t = window.localStorage.getItem(it + e);
411
+ let t = window.localStorage.getItem(L + e);
412
412
  if (!t) return null;
413
- let n = JSON.parse(t), r = n.viewMode && Je.includes(n.viewMode) ? n.viewMode : null;
413
+ let n = JSON.parse(t), r = n.viewMode && Ye.includes(n.viewMode) ? n.viewMode : null;
414
414
  if (!r) return null;
415
415
  let i = typeof n.columnWidth == "number" && isFinite(n.columnWidth) ? n.columnWidth : null, a = typeof n.taskListWidth == "number" && isFinite(n.taskListWidth) ? n.taskListWidth : null;
416
416
  return {
@@ -425,40 +425,40 @@ function at(e) {
425
425
  }
426
426
  function ot(e, t) {
427
427
  if (!(typeof window > "u")) try {
428
- window.localStorage.setItem(it + e, JSON.stringify(t));
428
+ window.localStorage.setItem(L + e, JSON.stringify(t));
429
429
  } catch {}
430
430
  }
431
- function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTaskClick: o, onTaskUpdate: s, onTaskDelete: c, onViewChange: l, onDependencyCreate: u, onDependencyDelete: d, onTaskReorder: f, className: p, inlineEdit: m = !1, autoSchedule: h = !1, rescheduleOnConflict: g = !1, criticalPathDefault: ee = !1, workingCalendar: _, shiftSegments: v, showBaselines: te = !0, readOnly: ne = !1, mobileReadOnly: re = !1, groupBy: ie, ungroupedLabel: ae = "Ungrouped", defaultCollapsedDepth: se, persistLayoutKey: ce, onLayoutChange: le }) {
432
- let { t: x, language: ue } = Ue(), S = ue || void 0, [de, fe] = e.useState(/* @__PURE__ */ new Date()), O = e.useRef(null), { width: ke } = oe(O), k = ke || (typeof window < "u" ? window.innerWidth : 1024), A = k < 640, j = ne || re && A, M = j ? void 0 : s, Ae = j ? void 0 : c, N = j ? void 0 : u, P = j ? void 0 : d, je = j ? void 0 : f, Me = j ? !1 : m, Ne = j ? !1 : h, Pe = j ? !1 : g, F = qe(k), Le = We(k), I = e.useRef(void 0);
433
- I.current === void 0 && (I.current = at(ce));
434
- let Re = I.current, [Be, Ve] = e.useState(Re ? Re.columnWidth : null), [He, it] = e.useState(Re ? Re.taskListWidth ?? null : null), [L, st] = e.useState(n && Je.includes(n) ? n : Re?.viewMode ?? "day");
431
+ function st({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTaskClick: o, onTaskUpdate: s, onTaskDelete: c, onViewChange: l, onDependencyCreate: u, onDependencyDelete: d, onTaskReorder: f, className: p, inlineEdit: m = !1, autoSchedule: h = !1, rescheduleOnConflict: g = !1, criticalPathDefault: ee = !1, workingCalendar: _, shiftSegments: v, showBaselines: te = !0, readOnly: ne = !1, mobileReadOnly: re = !1, groupBy: ie, ungroupedLabel: ae = "Ungrouped", defaultCollapsedDepth: oe, persistLayoutKey: ce, onLayoutChange: le }) {
432
+ let { t: x, language: ue } = We(), S = ue || void 0, [de, fe] = e.useState(/* @__PURE__ */ new Date()), pe = e.useRef(null), { width: Ae } = se(pe), je = Ae || (typeof window < "u" ? window.innerWidth : 1024), O = je < 640, k = ne || re && O, A = k ? void 0 : s, Me = k ? void 0 : c, j = k ? void 0 : u, Ne = k ? void 0 : d, M = k ? void 0 : f, Pe = k ? !1 : m, Fe = k ? !1 : h, N = k ? !1 : g, P = Je(je), Re = Ge(je), ze = e.useRef(void 0);
433
+ ze.current === void 0 && (ze.current = at(ce));
434
+ let F = ze.current, [Be, I] = e.useState(F ? F.columnWidth : null), [He, Ue] = e.useState(F ? F.taskListWidth ?? null : null), [L, st] = e.useState(n && Ye.includes(n) ? n : F?.viewMode ?? "day");
435
435
  e.useEffect(() => {
436
- n && Je.includes(n) && st(n);
436
+ n && Ye.includes(n) && st(n);
437
437
  }, [n]);
438
- let ct = e.useRef(null), lt = e.useRef(null), ut = e.useRef(!0), [R, dt] = e.useState(Re ? Re.taskListCollapsed : !1), ft = e.useRef(!1);
438
+ let ct = e.useRef(null), lt = e.useRef(null), ut = e.useRef(!0), [R, dt] = e.useState(F ? F.taskListCollapsed : !1), ft = e.useRef(!1);
439
439
  e.useEffect(() => {
440
- !ft.current && A && (dt(!0), ft.current = !0);
441
- }, [A]);
442
- let pt = Math.max(160, k - 200), z = R ? 0 : He == null ? Ge(k) : Math.max(160, Math.min(He, pt)), mt = e.useMemo(() => {
440
+ !ft.current && O && (dt(!0), ft.current = !0);
441
+ }, [O]);
442
+ let pt = Math.max(160, je - 200), z = R ? 0 : He == null ? Ke(je) : Math.max(160, Math.min(He, pt)), mt = e.useMemo(() => {
443
443
  if (Be != null || i || t.length === 0) return null;
444
444
  let e = r ? new Date(r) : new Date(Math.min(...t.map((e) => e.start.getTime()))), n = new Date(Math.max(...t.map((e) => e.end.getTime())));
445
- r || e.setDate(e.getDate() - 7), n.setDate(n.getDate() + 14), e = Ze(e, L), n.setHours(23, 59, 59, 999);
446
- let a = Math.max(1, (n.getTime() - e.getTime()) / Xe), o = Math.max(0, k - z);
445
+ r || e.setDate(e.getDate() - 7), n.setDate(n.getDate() + 14), e = Qe(e, L), n.setHours(23, 59, 59, 999);
446
+ let a = Math.max(1, (n.getTime() - e.getTime()) / Ze), o = Math.max(0, je - z);
447
447
  if (o <= 0) return null;
448
- let s = o / a * Ye[L];
449
- if (s <= Le) return null;
448
+ let s = o / a * Xe[L];
449
+ if (s <= Re) return null;
450
450
  let c = Math.min(s, o * .6);
451
- return c > Le ? c : null;
451
+ return c > Re ? c : null;
452
452
  }, [
453
453
  Be,
454
454
  t,
455
455
  r,
456
456
  i,
457
457
  L,
458
- k,
458
+ je,
459
459
  z,
460
- Le
461
- ]), B = Be ?? mt ?? Le, ht = B / Ye[L], gt = Ke(z), [_t, vt] = e.useState(null), [yt, bt] = e.useState({}), [xt, St] = e.useState(null), V = e.useMemo(() => {
460
+ Re
461
+ ]), B = Be ?? mt ?? Re, ht = B / Xe[L], gt = qe(z), [_t, vt] = e.useState(null), [yt, bt] = e.useState({}), [xt, St] = e.useState(null), V = e.useMemo(() => {
462
462
  if (!ie) return t;
463
463
  let e = /* @__PURE__ */ new Set();
464
464
  for (let n of t) {
@@ -525,7 +525,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
525
525
  Dt.current = H;
526
526
  }, [H]);
527
527
  let Ot = e.useRef(!1), kt = e.useCallback((e) => {
528
- let t = L === "day" && v && v.bands.length > 0 && v ? Math.min(...v.bands.map((e) => e.durMs)) : Xe, n = (e, t) => En.current ? En.current(e, t) : $e(e, t, L), r = new Date(e.originStart), i = new Date(e.originEnd);
528
+ let t = L === "day" && v && v.bands.length > 0 && v ? Math.min(...v.bands.map((e) => e.durMs)) : Ze, n = (e, t) => En.current ? En.current(e, t) : et(e, t, L), r = new Date(e.originStart), i = new Date(e.originEnd);
529
529
  return e.mode === "move" ? (r = n(e.originStart, e.unitDelta), i = new Date(e.originEnd.getTime() + (r.getTime() - e.originStart.getTime()))) : e.mode === "resize-left" ? (r = n(e.originStart, e.unitDelta), i.getTime() - r.getTime() < t && (r = new Date(i.getTime() - t))) : e.mode === "resize-right" && (i = n(e.originEnd, e.unitDelta), i.getTime() - r.getTime() < t && (i = new Date(r.getTime() + t))), {
530
530
  start: r,
531
531
  end: i
@@ -533,7 +533,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
533
533
  }, [L, v]), At = e.useRef(t);
534
534
  At.current = t;
535
535
  let jt = e.useRef([]), Mt = e.useRef([]), [Nt, Pt] = e.useState(0), Ft = e.useCallback((e) => {
536
- if (!M) return;
536
+ if (!A) return;
537
537
  let t = [];
538
538
  for (let { task: n, changes: r } of e) {
539
539
  let e = {}, i = {}, a = !1;
@@ -541,21 +541,21 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
541
541
  let o = r[t], s = n[t], c = o instanceof Date && s instanceof Date ? o.getTime() === s.getTime() : o === s;
542
542
  e[t] = s, i[t] = o, c || (a = !0);
543
543
  }
544
- M(n, r), a && t.push({
544
+ A(n, r), a && t.push({
545
545
  taskId: String(n.id),
546
546
  before: e,
547
547
  after: i
548
548
  });
549
549
  }
550
550
  t.length && (jt.current.push(t), Mt.current = [], Pt((e) => e + 1));
551
- }, [M]), [It, Lt] = e.useState(null), Rt = e.useCallback((e) => {
552
- if (!Pe) return;
551
+ }, [A]), [It, Lt] = e.useState(null), Rt = e.useCallback((e) => {
552
+ if (!N) return;
553
553
  let t = /* @__PURE__ */ new Map();
554
554
  for (let { task: n, changes: r } of e) t.set(String(n.id), {
555
555
  start: r.start ?? n.start,
556
556
  end: r.end ?? n.end
557
557
  });
558
- let n = Ie(At.current.map((e) => {
558
+ let n = Le(At.current.map((e) => {
559
559
  let n = t.get(String(e.id));
560
560
  return n ? {
561
561
  ...e,
@@ -567,7 +567,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
567
567
  return !n || e.start.getTime() !== n.start.getTime() || e.end.getTime() !== n.end.getTime();
568
568
  });
569
569
  n.length && Lt(n);
570
- }, [Pe, _]), zt = e.useCallback(() => {
570
+ }, [N, _]), zt = e.useCallback(() => {
571
571
  if (!It) return;
572
572
  let e = It.map((e) => {
573
573
  let t = At.current.find((t) => String(t.id) === e.id);
@@ -581,11 +581,11 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
581
581
  }).filter(Boolean);
582
582
  e.length && Ft(e), Lt(null);
583
583
  }, [It, Ft]), Bt = e.useCallback((e, t) => {
584
- if (M) for (let n of e) {
584
+ if (A) for (let n of e) {
585
585
  let e = At.current.find((e) => String(e.id) === n.taskId);
586
- e && M(e, t === "undo" ? n.before : n.after);
586
+ e && A(e, t === "undo" ? n.before : n.after);
587
587
  }
588
- }, [M]), Vt = e.useCallback(() => {
588
+ }, [A]), Vt = e.useCallback(() => {
589
589
  let e = jt.current.pop();
590
590
  e && (Bt(e, "undo"), Mt.current.push(e), Pt((e) => e + 1));
591
591
  }, [Bt]), Ht = e.useCallback(() => {
@@ -597,7 +597,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
597
597
  }), [Nt]);
598
598
  e.useEffect(() => {
599
599
  if (!H) return;
600
- let e = L === "day" && v && v.bands.length > 0 && v ? ht * Math.min(...v.bands.map((e) => e.durMs)) / Xe : B, n = (t) => {
600
+ let e = L === "day" && v && v.bands.length > 0 && v ? ht * Math.min(...v.bands.map((e) => e.durMs)) / Ze : B, n = (t) => {
601
601
  let n = Dt.current;
602
602
  if (!n) return;
603
603
  let r = Math.round((t.clientX - n.originClientX) / Math.max(e, 1));
@@ -610,7 +610,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
610
610
  if (e) {
611
611
  if (e.unitDelta !== 0) {
612
612
  let n = t.find((t) => t.id === e.taskId);
613
- if (n && M) {
613
+ if (n && A) {
614
614
  let { start: t, end: r } = kt(e);
615
615
  if (e.group) {
616
616
  let r = t.getTime() - e.originStart.getTime(), i = [n, ...Tt(n.id)].map((e) => ({
@@ -649,14 +649,14 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
649
649
  L,
650
650
  v,
651
651
  t,
652
- M,
652
+ A,
653
653
  kt,
654
654
  Tt,
655
655
  Ft,
656
656
  Rt
657
657
  ]);
658
658
  let Gt = e.useCallback((e, t, n, r) => {
659
- !M || e.data?.__group || (n.stopPropagation(), n.preventDefault(), Et({
659
+ !A || e.data?.__group || (n.stopPropagation(), n.preventDefault(), Et({
660
660
  taskId: e.id,
661
661
  mode: t,
662
662
  group: r?.group ?? !1,
@@ -665,7 +665,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
665
665
  originClientX: n.clientX,
666
666
  unitDelta: 0
667
667
  }));
668
- }, [M]), [Kt, qt] = e.useState(null), Jt = e.useRef(null);
668
+ }, [A]), [Kt, qt] = e.useState(null), Jt = e.useRef(null);
669
669
  e.useEffect(() => {
670
670
  Jt.current = Kt;
671
671
  }, [Kt]), e.useEffect(() => {
@@ -683,7 +683,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
683
683
  if (e) {
684
684
  if (e.value !== e.originProgress) {
685
685
  let n = t.find((t) => t.id === e.taskId);
686
- n && M && Ft([{
686
+ n && A && Ft([{
687
687
  task: n,
688
688
  changes: { progress: e.value }
689
689
  }]), Ot.current = !0, window.setTimeout(() => {
@@ -699,7 +699,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
699
699
  }, [
700
700
  Kt,
701
701
  t,
702
- M,
702
+ A,
703
703
  Ft
704
704
  ]);
705
705
  let Yt = e.useRef(null), [U, Xt] = e.useState(null), Zt = e.useRef(null);
@@ -718,9 +718,9 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
718
718
  });
719
719
  }, n = () => {
720
720
  let e = Zt.current;
721
- if (e && e.targetId != null && String(e.targetId) !== String(e.sourceId) && N) {
721
+ if (e && e.targetId != null && String(e.targetId) !== String(e.sourceId) && j) {
722
722
  let n = t.find((t) => String(t.id) === String(e.sourceId)), r = t.find((t) => String(t.id) === String(e.targetId)), i = e.targetEnd ?? "start", a = `${e.sourceEnd === "end" ? "f" : "s"}${i === "end" ? "f" : "s"}`;
723
- n && r && N(n, r, a);
723
+ n && r && j(n, r, a);
724
724
  }
725
725
  Ot.current = !0, window.setTimeout(() => {
726
726
  Ot.current = !1;
@@ -732,7 +732,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
732
732
  }, [
733
733
  U,
734
734
  t,
735
- N
735
+ j
736
736
  ]);
737
737
  let [Qt, $t] = e.useState(null), en = e.useRef(null);
738
738
  e.useEffect(() => {
@@ -770,28 +770,28 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
770
770
  window.removeEventListener("pointerdown", e, !0), window.removeEventListener("keydown", t);
771
771
  };
772
772
  }, [rn]);
773
- let [sn, cn] = e.useState(null), ln = !!(o || M || N || Ae), un = e.useCallback((e, t) => {
773
+ let [sn, cn] = e.useState(null), ln = !!(o || A || j || Me), un = e.useCallback((e, t) => {
774
774
  t.preventDefault(), t.stopPropagation(), cn(e.id), ln && $t({
775
775
  x: t.clientX,
776
776
  y: t.clientY,
777
777
  taskId: e.id
778
778
  });
779
779
  }, [ln]), dn = e.useCallback((e, t, n, r) => {
780
- r.preventDefault(), r.stopPropagation(), !(!N && !P) && tn({
780
+ r.preventDefault(), r.stopPropagation(), !(!j && !Ne) && tn({
781
781
  x: r.clientX,
782
782
  y: r.clientY,
783
783
  sourceId: e,
784
784
  targetId: t,
785
785
  type: n
786
786
  });
787
- }, [N, P]), [fn, pn] = e.useState(() => /* @__PURE__ */ new Set()), mn = e.useCallback((e) => {
787
+ }, [j, Ne]), [fn, pn] = e.useState(() => /* @__PURE__ */ new Set()), mn = e.useCallback((e) => {
788
788
  pn((t) => {
789
789
  let n = new Set(t), r = String(e);
790
790
  return n.has(r) ? n.delete(r) : n.add(r), n;
791
791
  });
792
792
  }, []), hn = e.useRef(!1);
793
793
  e.useEffect(() => {
794
- if (hn.current || se == null || V.length === 0) return;
794
+ if (hn.current || oe == null || V.length === 0) return;
795
795
  hn.current = !0;
796
796
  let e = new Map(V.map((e) => [String(e.id), e])), t = /* @__PURE__ */ new Set();
797
797
  for (let n of V) {
@@ -799,16 +799,16 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
799
799
  r && r !== String(n.id) && e.has(r) && t.add(r);
800
800
  }
801
801
  let n = (t) => {
802
- let n = 0, r = new Set([String(t.id)]), i = t.parent != null && t.parent !== "" ? e.get(String(t.parent)) : void 0;
802
+ let n = 0, r = /* @__PURE__ */ new Set([String(t.id)]), i = t.parent != null && t.parent !== "" ? e.get(String(t.parent)) : void 0;
803
803
  for (; i && !r.has(String(i.id));) n += 1, r.add(String(i.id)), i = i.parent != null && i.parent !== "" ? e.get(String(i.parent)) : void 0;
804
804
  return n;
805
805
  }, r = /* @__PURE__ */ new Set();
806
806
  for (let e of V) {
807
807
  let i = String(e.id);
808
- t.has(i) && n(e) >= se && r.add(i);
808
+ t.has(i) && n(e) >= oe && r.add(i);
809
809
  }
810
810
  r.size && pn((e) => e.size ? e : r);
811
- }, [se, V]);
811
+ }, [oe, V]);
812
812
  let G = e.useMemo(() => {
813
813
  let e = new Set(V.map((e) => String(e.id))), t = /* @__PURE__ */ new Map(), n = [];
814
814
  for (let r of V) {
@@ -833,7 +833,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
833
833
  for (let a of s) {
834
834
  let s = i(a, n);
835
835
  (!e || s.start < e) && (e = s.start), (!t || s.end > t) && (t = s.end);
836
- let c = Math.max(s.end.getTime() - s.start.getTime(), Xe);
836
+ let c = Math.max(s.end.getTime() - s.start.getTime(), Ze);
837
837
  r += c * s.progress, o += c;
838
838
  }
839
839
  n.delete(a), c = {
@@ -885,27 +885,27 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
885
885
  cn(G[n].task.id);
886
886
  let r = X.current;
887
887
  if (r) {
888
- let e = n * F;
889
- e < r.scrollTop ? r.scrollTop = e : e + F > r.scrollTop + r.clientHeight && (r.scrollTop = e + F - r.clientHeight);
888
+ let e = n * P;
889
+ e < r.scrollTop ? r.scrollTop = e : e + P > r.scrollTop + r.clientHeight && (r.scrollTop = e + P - r.clientHeight);
890
890
  }
891
891
  return;
892
892
  }
893
893
  if (t < 0) return;
894
894
  let n = G[t];
895
- e.key === "Enter" ? (e.preventDefault(), o?.(n.task)) : e.key === "Delete" || e.key === "Backspace" ? Ae && (e.preventDefault(), Ae(n.task)) : (e.key === "ArrowRight" && n.hasChildren && fn.has(String(n.task.id)) || e.key === "ArrowLeft" && n.hasChildren && !fn.has(String(n.task.id))) && (e.preventDefault(), mn(n.task.id));
895
+ e.key === "Enter" ? (e.preventDefault(), o?.(n.task)) : e.key === "Delete" || e.key === "Backspace" ? Me && (e.preventDefault(), Me(n.task)) : (e.key === "ArrowRight" && n.hasChildren && fn.has(String(n.task.id)) || e.key === "ArrowLeft" && n.hasChildren && !fn.has(String(n.task.id))) && (e.preventDefault(), mn(n.task.id));
896
896
  }, [
897
897
  G,
898
898
  sn,
899
899
  o,
900
- Ae,
900
+ Me,
901
901
  fn,
902
902
  mn,
903
- F,
903
+ P,
904
904
  Vt,
905
905
  Ht
906
906
  ]), K = e.useMemo(() => {
907
907
  let e = r ? new Date(r) : /* @__PURE__ */ new Date(), n = i ? new Date(i) : /* @__PURE__ */ new Date();
908
- return !r && t.length > 0 && (e = new Date(Math.min(...t.map((e) => e.start.getTime()))), e.setDate(e.getDate() - 7)), !i && t.length > 0 && (n = new Date(Math.max(...t.map((e) => e.end.getTime()))), n.setDate(n.getDate() + 14)), e = L === "day" && v && v.bands.length > 0 ? ze(e, v.dayStartMin) : Ze(e, L), n.setHours(23, 59, 59, 999), {
908
+ return !r && t.length > 0 && (e = new Date(Math.min(...t.map((e) => e.start.getTime()))), e.setDate(e.getDate() - 7)), !i && t.length > 0 && (n = new Date(Math.max(...t.map((e) => e.end.getTime()))), n.setDate(n.getDate() + 14)), e = L === "day" && v && v.bands.length > 0 ? Ve(e, v.dayStartMin) : Qe(e, L), n.setHours(23, 59, 59, 999), {
909
909
  start: e,
910
910
  end: n
911
911
  };
@@ -931,7 +931,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
931
931
  if (_n && v) {
932
932
  let t = new Date(K.start);
933
933
  for (; t <= K.end;) for (let n of v.bands) {
934
- let r = n.durMs / Xe * ht;
934
+ let r = n.durMs / Ze * ht;
935
935
  e.push({
936
936
  date: new Date(t),
937
937
  label: n.label,
@@ -945,12 +945,12 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
945
945
  }
946
946
  let t = new Date(K.start);
947
947
  for (; t <= K.end;) {
948
- let n = $e(t, 1, L);
948
+ let n = et(t, 1, L);
949
949
  if (vn && !yn(t)) {
950
950
  t = n;
951
951
  continue;
952
952
  }
953
- let r = (n.getTime() - t.getTime()) / Xe * ht, i, a;
953
+ let r = (n.getTime() - t.getTime()) / Ze * ht, i, a;
954
954
  L === "day" ? (i = String(t.getDate()), a = t.toLocaleDateString(S, { weekday: "narrow" })) : i = L === "week" ? t.toLocaleDateString(S, {
955
955
  month: "numeric",
956
956
  day: "numeric"
@@ -976,7 +976,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
976
976
  let e = Array(q.length + 1), t = 0;
977
977
  for (let n = 0; n < q.length; n++) e[n] = t, t += q[n].width;
978
978
  return e[q.length] = t, e;
979
- }, [q]), bn = J[J.length - 1], xn = e.useMemo(() => q.map((e) => e.date.getTime()), [q]), Sn = e.useMemo(() => q.map((e) => e.realMs == null ? $e(e.date, 1, L).getTime() - e.date.getTime() : e.realMs), [q, L]), Y = e.useCallback((e) => {
979
+ }, [q]), bn = J[J.length - 1], xn = e.useMemo(() => q.map((e) => e.date.getTime()), [q]), Sn = e.useMemo(() => q.map((e) => e.realMs == null ? et(e.date, 1, L).getTime() - e.date.getTime() : e.realMs), [q, L]), Y = e.useCallback((e) => {
980
980
  let t = q.length;
981
981
  if (t === 0) return 0;
982
982
  let n = e.getTime(), r = 0, i = t - 1, a = 0;
@@ -1019,7 +1019,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1019
1019
  ct.current = null;
1020
1020
  let t = X.current;
1021
1021
  if (!t || t.clientWidth === 0) return;
1022
- let n = Math.max(0, t.scrollWidth - t.clientWidth), r = Math.max(0, Math.min(Math.round(Y(Ze(e, L))), n));
1022
+ let n = Math.max(0, t.scrollWidth - t.clientWidth), r = Math.max(0, Math.min(Math.round(Y(Qe(e, L))), n));
1023
1023
  t.scrollLeft !== r && (t.scrollLeft = r);
1024
1024
  }, [L, Y]);
1025
1025
  let Tn = e.useCallback((e, t) => {
@@ -1039,7 +1039,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1039
1039
  if (_n && v) {
1040
1040
  let t = 0;
1041
1041
  for (let n of q) {
1042
- let r = String(ze(n.date, v.dayStartMin).getTime()), i = e[e.length - 1];
1042
+ let r = String(Ve(n.date, v.dayStartMin).getTime()), i = e[e.length - 1];
1043
1043
  i && i.key === r ? i.width += n.width : e.push({
1044
1044
  key: r,
1045
1045
  label: n.date.toLocaleDateString(S, {
@@ -1091,7 +1091,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1091
1091
  if (!e) return;
1092
1092
  let t = () => {
1093
1093
  ut.current = !1;
1094
- }, n = new Set([
1094
+ }, n = /* @__PURE__ */ new Set([
1095
1095
  "ArrowLeft",
1096
1096
  "ArrowRight",
1097
1097
  "ArrowUp",
@@ -1131,32 +1131,32 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1131
1131
  let t = new ResizeObserver(Bn);
1132
1132
  return t.observe(e), () => t.disconnect();
1133
1133
  }, [Bn]);
1134
- let Vn = e.useMemo(() => Qe(J, In.left - 240, In.left + Rn.width + 240), [
1134
+ let Vn = e.useMemo(() => $e(J, In.left - 240, In.left + Rn.width + 240), [
1135
1135
  J,
1136
1136
  In.left,
1137
1137
  Rn.width
1138
1138
  ]), Hn = e.useMemo(() => {
1139
1139
  let e = Dn.map((e) => e.offset);
1140
1140
  return e.push(bn), e;
1141
- }, [Dn, bn]), Un = e.useMemo(() => Qe(Hn, In.left - 240, In.left + Rn.width + 240), [
1141
+ }, [Dn, bn]), Un = e.useMemo(() => $e(Hn, In.left - 240, In.left + Rn.width + 240), [
1142
1142
  Hn,
1143
1143
  In.left,
1144
1144
  Rn.width
1145
1145
  ]), Z = e.useMemo(() => ({
1146
- startIdx: Math.max(0, Math.floor(In.top / F) - 6),
1147
- endIdx: Math.min(G.length, Math.ceil((In.top + Rn.height) / F) + 6)
1146
+ startIdx: Math.max(0, Math.floor(In.top / P) - 6),
1147
+ endIdx: Math.min(G.length, Math.ceil((In.top + Rn.height) / P) + 6)
1148
1148
  }), [
1149
1149
  In.top,
1150
1150
  Rn.height,
1151
- F,
1151
+ P,
1152
1152
  G.length
1153
- ]), Wn = G.length * F, [Gn, Kn] = e.useState(!1);
1153
+ ]), Wn = G.length * P, [Gn, Kn] = e.useState(!1);
1154
1154
  e.useEffect(() => {
1155
1155
  let e = () => Kn(!!document.fullscreenElement);
1156
1156
  return document.addEventListener("fullscreenchange", e), () => document.removeEventListener("fullscreenchange", e);
1157
1157
  }, []);
1158
1158
  let qn = e.useCallback(() => {
1159
- let e = O.current;
1159
+ let e = pe.current;
1160
1160
  e && (document.fullscreenElement ? document.exitFullscreen?.() : e.requestFullscreen?.());
1161
1161
  }, []), Jn = e.useRef(null), Yn = e.useCallback((e) => {
1162
1162
  if (e.touches.length === 2) {
@@ -1169,7 +1169,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1169
1169
  }, [B]), Xn = e.useCallback((e) => {
1170
1170
  if (e.touches.length !== 2 || !Jn.current) return;
1171
1171
  let t = e.touches[0].clientX - e.touches[1].clientX, n = e.touches[0].clientY - e.touches[1].clientY, r = Math.max(1, Math.sqrt(t * t + n * n)) / Jn.current.baseDistance;
1172
- Ve(Math.max(15, Math.min(120, Math.round(Jn.current.baseColumn * r))));
1172
+ I(Math.max(15, Math.min(120, Math.round(Jn.current.baseColumn * r))));
1173
1173
  }, []), Zn = e.useCallback(() => {
1174
1174
  Jn.current = null;
1175
1175
  }, []), Q = e.useMemo(() => {
@@ -1236,7 +1236,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1236
1236
  e.useEffect(() => () => {
1237
1237
  Pn.current.forEach((e) => window.clearTimeout(e)), Fn.current?.();
1238
1238
  }, []);
1239
- let nr = e.useCallback(() => er(Ze(/* @__PURE__ */ new Date(), "week")), [er]), rr = e.useCallback(() => er(Ze(/* @__PURE__ */ new Date(), "month")), [er]), ir = (e) => {
1239
+ let nr = e.useCallback(() => er(Qe(/* @__PURE__ */ new Date(), "week")), [er]), rr = e.useCallback(() => er(Qe(/* @__PURE__ */ new Date(), "month")), [er]), ir = (e) => {
1240
1240
  let t = e.currentTarget;
1241
1241
  !ut.current && t.clientWidth > 0 && (lt.current = Cn(t.scrollLeft)), kn.current && (kn.current.scrollLeft = t.scrollLeft), An.current && An.current.scrollTop !== t.scrollTop && (An.current.scrollTop = t.scrollTop), Ln((e) => e.top === t.scrollTop && e.left === t.scrollLeft ? e : {
1242
1242
  top: t.scrollTop,
@@ -1249,14 +1249,14 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1249
1249
  top: t.scrollTop
1250
1250
  });
1251
1251
  }, or = (e, t) => {
1252
- let n = Y(e), r = _n && v ? ht * Math.min(...v.bands.map((e) => e.durMs)) / Xe : ht;
1252
+ let n = Y(e), r = _n && v ? ht * Math.min(...v.bands.map((e) => e.durMs)) / Ze : ht;
1253
1253
  return {
1254
1254
  left: n,
1255
1255
  width: Math.max(Y(t) - n, r, 3)
1256
1256
  };
1257
1257
  }, sr = H?.group ? H.taskId : null, cr = e.useMemo(() => {
1258
1258
  if (sr == null) return null;
1259
- let e = new Set([String(sr)]);
1259
+ let e = /* @__PURE__ */ new Set([String(sr)]);
1260
1260
  for (let t of Tt(sr)) e.add(String(t.id));
1261
1261
  return e;
1262
1262
  }, [sr, Tt]), lr = e.useMemo(() => {
@@ -1310,23 +1310,23 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1310
1310
  });
1311
1311
  }
1312
1312
  }), t;
1313
- }, [G]), fr = Math.round(F * .2), pr = F - fr * 2, mr = Math.max(Math.round(F * .4), 12), hr = mr * Math.SQRT2 / 2, gr = pr, _r = fr, vr = Math.max(3, Math.round(F * .13)), yr = F - vr - 1, br = "rgba(100, 116, 139, 0.35)", xr = "rgba(100, 116, 139, 0.6)", Sr = (e) => {
1313
+ }, [G]), fr = Math.round(P * .2), pr = P - fr * 2, mr = Math.max(Math.round(P * .4), 12), hr = mr * Math.SQRT2 / 2, gr = pr, _r = fr, vr = Math.max(3, Math.round(P * .13)), yr = P - vr - 1, br = "rgba(100, 116, 139, 0.35)", xr = "rgba(100, 116, 139, 0.6)", Sr = (e) => {
1314
1314
  let t = G[e.sourceIndex], n = G[e.targetIndex];
1315
1315
  if (!t || !n) return null;
1316
- let r = ur(t), i = ur(n), a = (e) => e.isSummary ? _r + gr / 2 : F / 2, o = e.sourceIndex * F + a(t), s = e.targetIndex * F + a(n), c = e.type === "fs" || e.type === "ff", l = e.type === "ff" || e.type === "sf", u = t.isMilestone ? r.left + (c ? hr : -hr) : c ? r.left + r.width : r.left, d = n.isMilestone ? i.left + (l ? hr : -hr) : l ? i.left + i.width : i.left, f = u + (c ? 10 : -10), p = d + (l ? 10 : -10), m = Math.round, h = [`M ${m(u)} ${m(o)}`, `L ${m(f)} ${m(o)}`];
1316
+ let r = ur(t), i = ur(n), a = (e) => e.isSummary ? _r + gr / 2 : P / 2, o = e.sourceIndex * P + a(t), s = e.targetIndex * P + a(n), c = e.type === "fs" || e.type === "ff", l = e.type === "ff" || e.type === "sf", u = t.isMilestone ? r.left + (c ? hr : -hr) : c ? r.left + r.width : r.left, d = n.isMilestone ? i.left + (l ? hr : -hr) : l ? i.left + i.width : i.left, f = u + (c ? 10 : -10), p = d + (l ? 10 : -10), m = Math.round, h = [`M ${m(u)} ${m(o)}`, `L ${m(f)} ${m(o)}`];
1317
1317
  if (l ? f >= p : f <= p) h.push(`L ${m(f)} ${m(s)}`, `L ${m(d)} ${m(s)}`);
1318
1318
  else {
1319
- let t = s >= o ? (e.sourceIndex + 1) * F : e.sourceIndex * F;
1319
+ let t = s >= o ? (e.sourceIndex + 1) * P : e.sourceIndex * P;
1320
1320
  h.push(`L ${m(f)} ${m(t)}`, `L ${m(p)} ${m(t)}`, `L ${m(p)} ${m(s)}`, `L ${m(d)} ${m(s)}`);
1321
1321
  }
1322
1322
  return h.join(" ");
1323
- }, Cr = H?.taskId ?? xt, [wr, Tr] = e.useState(ee), Er = e.useMemo(() => wr ? Fe(t, _) : null, [
1323
+ }, Cr = H?.taskId ?? xt, [wr, Tr] = e.useState(ee), Er = e.useMemo(() => wr ? Ie(t, _) : null, [
1324
1324
  wr,
1325
1325
  t,
1326
1326
  _
1327
1327
  ]), Dr = e.useCallback((e) => Er?.criticalIds.has(String(e)) ?? !1, [Er]), $ = "#dc2626", Or = e.useCallback(() => {
1328
- if (!M) return;
1329
- let e = Ie(t, _), n = [];
1328
+ if (!A) return;
1329
+ let e = Le(t, _), n = [];
1330
1330
  for (let r of e) {
1331
1331
  let e = t.find((e) => String(e.id) === r.id);
1332
1332
  e && n.push({
@@ -1340,7 +1340,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1340
1340
  Ft(n);
1341
1341
  }, [
1342
1342
  t,
1343
- M,
1343
+ A,
1344
1344
  _,
1345
1345
  Ft
1346
1346
  ]), kr = e.useCallback(() => {
@@ -1350,25 +1350,25 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1350
1350
  "<": "&lt;",
1351
1351
  ">": "&gt;",
1352
1352
  "\"": "&quot;"
1353
- })[e]), n = Math.max(z, 200), r = Math.ceil(n + bn), i = Math.ceil(36 + G.length * F), a = Er?.criticalEdges ?? null, o = [];
1353
+ })[e]), n = Math.max(z, 200), r = Math.ceil(n + bn), i = Math.ceil(36 + G.length * P), a = Er?.criticalEdges ?? null, o = [];
1354
1354
  o.push(`<rect x="0" y="0" width="${r}" height="${i}" fill="#ffffff"/>`), o.push(`<rect x="0" y="0" width="${r}" height="36" fill="#f8fafc"/>`), o.push(`<g transform="translate(${n},0)" font-family="sans-serif" font-size="10" fill="#475569">`), Dn.forEach((t) => {
1355
1355
  o.push(`<line x1="${t.offset.toFixed(1)}" y1="0" x2="${t.offset.toFixed(1)}" y2="36" stroke="#e2e8f0"/>`), o.push(`<text x="${(t.offset + t.width / 2).toFixed(1)}" y="12" text-anchor="middle" font-weight="600">${e(t.label)}</text>`);
1356
1356
  }), q.forEach((t, n) => {
1357
1357
  let r = J[n];
1358
1358
  o.push(`<line x1="${r.toFixed(1)}" y1="18" x2="${r.toFixed(1)}" y2="${i}" stroke="#eef2f7"/>`), o.push(`<text x="${(r + t.width / 2).toFixed(1)}" y="30" text-anchor="middle" fill="#1f2937">${e(t.label)}</text>`);
1359
1359
  }), o.push("</g>"), o.push(`<line x1="0" y1="18" x2="${r}" y2="18" stroke="#e2e8f0"/>`), o.push(`<line x1="0" y1="36" x2="${r}" y2="36" stroke="#cbd5e1"/>`), o.push(`<line x1="${n}" y1="0" x2="${n}" y2="${i}" stroke="#cbd5e1"/>`), o.push("<g transform=\"translate(0,36)\" font-family=\"sans-serif\" font-size=\"11\" fill=\"#1f2937\">"), G.forEach((t, r) => {
1360
- let i = r * F;
1361
- o.push(`<line x1="0" y1="${(i + F).toFixed(1)}" x2="${n}" y2="${(i + F).toFixed(1)}" stroke="#f1f5f9"/>`);
1360
+ let i = r * P;
1361
+ o.push(`<line x1="0" y1="${(i + P).toFixed(1)}" x2="${n}" y2="${(i + P).toFixed(1)}" stroke="#f1f5f9"/>`);
1362
1362
  let a = 8 + t.depth * 14, s = Math.max(4, Math.floor((n - a) / 6.5)), c = t.task.title.length > s ? t.task.title.slice(0, s - 1) + "…" : t.task.title, l = t.isSummary ? " font-weight=\"600\"" : "";
1363
- o.push(`<text x="${a}" y="${(i + F / 2 + 4).toFixed(1)}"${l}>${e(c)}</text>`);
1363
+ o.push(`<text x="${a}" y="${(i + P / 2 + 4).toFixed(1)}"${l}>${e(c)}</text>`);
1364
1364
  }), o.push("</g>"), o.push(`<g transform="translate(${n},36)" font-family="sans-serif" font-size="9">`), G.forEach((e, t) => {
1365
- let n = t * F, { left: r, width: i } = or(e.start, e.end), a = Dr(e.task.id), s = a ? ` stroke="${$}" stroke-width="2"` : "";
1365
+ let n = t * P, { left: r, width: i } = or(e.start, e.end), a = Dr(e.task.id), s = a ? ` stroke="${$}" stroke-width="2"` : "";
1366
1366
  if (te && e.task.baselineStart && e.task.baselineEnd) {
1367
1367
  let t = or(e.task.baselineStart, e.task.baselineEnd);
1368
1368
  o.push(`<rect x="${t.left.toFixed(1)}" y="${(n + yr).toFixed(1)}" width="${Math.max(2, t.width).toFixed(1)}" height="${vr}" rx="1" fill="${br}" stroke="${xr}"/>`);
1369
1369
  }
1370
1370
  if (e.isMilestone) {
1371
- let t = r, i = n + F / 2, s = mr / 2, c = a ? $ : e.task.color || "#3b82f6";
1371
+ let t = r, i = n + P / 2, s = mr / 2, c = a ? $ : e.task.color || "#3b82f6";
1372
1372
  o.push(`<polygon points="${t},${i - s} ${t + s},${i} ${t},${i + s} ${t - s},${i}" fill="${c}"/>`);
1373
1373
  } else if (e.isSummary) {
1374
1374
  let t = e.task.color || "#64748b";
@@ -1379,15 +1379,15 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1379
1379
  let t = e.task.color || "#3b82f6";
1380
1380
  o.push(`<rect x="${r.toFixed(1)}" y="${(n + fr).toFixed(1)}" width="${i.toFixed(1)}" height="${pr}" rx="3" fill="${t}"${s}/>`);
1381
1381
  let a = i * Math.min(100, Math.max(0, e.progress)) / 100;
1382
- o.push(`<rect x="${r.toFixed(1)}" y="${(n + fr).toFixed(1)}" width="${a.toFixed(1)}" height="${pr}" rx="3" fill="rgba(0,0,0,0.18)"/>`), i >= 24 && o.push(`<text x="${(r + i / 2).toFixed(1)}" y="${(n + F / 2 + 3).toFixed(1)}" text-anchor="middle" fill="#ffffff">${Math.round(e.progress)}%</text>`);
1382
+ o.push(`<rect x="${r.toFixed(1)}" y="${(n + fr).toFixed(1)}" width="${a.toFixed(1)}" height="${pr}" rx="3" fill="rgba(0,0,0,0.18)"/>`), i >= 24 && o.push(`<text x="${(r + i / 2).toFixed(1)}" y="${(n + P / 2 + 3).toFixed(1)}" text-anchor="middle" fill="#ffffff">${Math.round(e.progress)}%</text>`);
1383
1383
  }
1384
1384
  }), dr.forEach((e) => {
1385
1385
  let t = Sr(e);
1386
1386
  if (!t) return;
1387
1387
  let n = a?.has(`${String(e.sourceId)}->${String(e.targetId)}`) ?? !1, r = n ? $ : "#94a3b8";
1388
1388
  o.push(`<path d="${t}" fill="none" stroke="${r}" stroke-width="${n ? 2 : 1.5}"/>`);
1389
- }), Q != null && o.push(`<line x1="${Q.toFixed(1)}" y1="0" x2="${Q.toFixed(1)}" y2="${G.length * F}" stroke="#ef4444" stroke-width="1.5"/>`);
1390
- let s = G.length * F;
1389
+ }), Q != null && o.push(`<line x1="${Q.toFixed(1)}" y1="0" x2="${Q.toFixed(1)}" y2="${G.length * P}" stroke="#ef4444" stroke-width="1.5"/>`);
1390
+ let s = G.length * P;
1391
1391
  return On.forEach((t) => {
1392
1392
  let n = /var\(/.test(t.color) ? "#6366f1" : t.color;
1393
1393
  if (o.push(`<line x1="${t.left.toFixed(1)}" y1="0" x2="${t.left.toFixed(1)}" y2="${s}" stroke="${e(n)}" stroke-width="1.5"/>`), t.label) {
@@ -1411,7 +1411,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1411
1411
  J,
1412
1412
  bn,
1413
1413
  z,
1414
- F,
1414
+ P,
1415
1415
  fr,
1416
1416
  pr,
1417
1417
  _r,
@@ -1429,15 +1429,15 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1429
1429
  ]), Ar = e.useCallback(async () => {
1430
1430
  let e = kr();
1431
1431
  if (!e) return;
1432
- let t = await et(e.svg, e.W, e.H);
1432
+ let t = await tt(e.svg, e.W, e.H);
1433
1433
  t && t.toBlob((e) => {
1434
- e && tt(e, `gantt-${L}.png`);
1434
+ e && nt(e, `gantt-${L}.png`);
1435
1435
  }, "image/png");
1436
1436
  }, [kr, L]), jr = e.useCallback(async () => {
1437
1437
  let e = kr();
1438
1438
  if (!e) return;
1439
- let t = await et(e.svg, e.W, e.H);
1440
- t && tt(nt(rt(t.toDataURL("image/jpeg", .92)), t.width, t.height), `gantt-${L}.pdf`);
1439
+ let t = await tt(e.svg, e.W, e.H);
1440
+ t && nt(rt(it(t.toDataURL("image/jpeg", .92)), t.width, t.height), `gantt-${L}.pdf`);
1441
1441
  }, [kr, L]), [Mr, Nr] = e.useState(!1), Pr = e.useCallback(() => {
1442
1442
  let e = {
1443
1443
  viewMode: L,
@@ -1459,10 +1459,10 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1459
1459
  let e = setTimeout(() => Nr(!1), 1500);
1460
1460
  return () => clearTimeout(e);
1461
1461
  }, [Mr]), /* @__PURE__ */ D("div", {
1462
- ref: O,
1462
+ ref: pe,
1463
1463
  className: b("flex flex-col h-full bg-background overflow-hidden min-w-0", p),
1464
- "data-readonly": j ? "true" : void 0,
1465
- "data-mobile-readonly": re && A ? "true" : void 0,
1464
+ "data-readonly": k ? "true" : void 0,
1465
+ "data-mobile-readonly": re && O ? "true" : void 0,
1466
1466
  children: [
1467
1467
  /* @__PURE__ */ E("style", { children: "\n .gantt-resize-handle:hover { background-color: rgba(255, 255, 255, 0.4); }\n .gantt-bar-hover:hover { filter: brightness(1.1); }\n .gantt-locate-btn { opacity: 0; transition: opacity 0.15s ease; }\n .group\\/task-row:hover .gantt-locate-btn { opacity: 0.6; }\n .gantt-locate-btn:hover, .gantt-locate-btn:focus-visible { opacity: 1; }\n /* 定位闪烁: blink the located bar 3× with a thick ring + colored glow so\n it's hard to miss. The ring is an outline (not box-shadow) and the glow\n is a drop-shadow *filter* — both stay clear of the critical-path bar's\n inline box-shadow, which they'd otherwise clobber. */\n @keyframes gantt-flash {\n 0%, 25%, 50%, 100% {\n outline-color: rgba(37, 99, 235, 0);\n filter: drop-shadow(0 0 0 rgba(37, 99, 235, 0));\n }\n 12%, 37%, 62% {\n outline-color: rgba(37, 99, 235, 1);\n filter: drop-shadow(0 0 9px rgba(37, 99, 235, 0.9));\n }\n }\n .gantt-flash {\n outline: 3px solid transparent;\n outline-offset: 3px;\n border-radius: 2px;\n animation: gantt-flash 1.5s ease-in-out;\n }\n @media (min-width: 640px) {\n .gantt-sm-h50 { height: 50px; }\n .gantt-sm-w20 { width: 80px; }\n .gantt-sm-hidden { display: none; }\n }\n /* Persistent, grabbable timeline scrollbars. macOS (and iOS) default to\n overlay scrollbars that collapse to 0px and auto-hide, so the\n timeline's vertical scrollbar was nearly impossible to find. Defining\n ::-webkit-scrollbar opts this pane into a classic, always-visible bar\n regardless of the OS overlay preference. The thumb gets a min size so\n that with thousands of virtualized rows (scrollHeight in the hundreds\n of thousands of px) it never shrinks to an un-grabbable sliver. Scoped\n to the gantt pane so the host app's own scrollbars are untouched, and\n themed with neutral rgba (not theme utilities, which don't always\n reach a consuming app) so it's visible on any background. */\n /* Firefox (and any engine without ::-webkit-scrollbar) only: the\n standard props. We must NOT set these unconditionally — modern Chrome\n now honors scrollbar-width and, when it's present, IGNORES the\n ::-webkit-scrollbar rule below, falling back to the 0px auto-hiding\n overlay bar we're trying to replace. */\n @supports not selector(::-webkit-scrollbar) {\n [data-testid=\"gantt-timeline\"] {\n scrollbar-width: thin;\n scrollbar-color: rgba(130,130,130,0.55) transparent;\n }\n }\n [data-testid=\"gantt-timeline\"]::-webkit-scrollbar {\n width: 14px;\n height: 14px;\n }\n [data-testid=\"gantt-timeline\"]::-webkit-scrollbar-track {\n background: transparent;\n }\n [data-testid=\"gantt-timeline\"]::-webkit-scrollbar-thumb {\n background-color: rgba(130,130,130,0.55);\n border-radius: 8px;\n border: 3px solid transparent;\n background-clip: padding-box;\n min-height: 40px;\n min-width: 40px;\n }\n [data-testid=\"gantt-timeline\"]::-webkit-scrollbar-thumb:hover {\n background-color: rgba(110,110,110,0.85);\n }\n [data-testid=\"gantt-timeline\"]::-webkit-scrollbar-corner {\n background: transparent;\n }\n /* The task-list pane scrolls in lockstep with the timeline, so its own\n vertical scrollbar (butted against the divider) was a confusing second\n bar. Hide it — the pane stays wheel/drag-scrollable and synced. */\n .gantt-task-list::-webkit-scrollbar { width: 0; height: 0; }\n .gantt-task-list { scrollbar-width: none; }\n " }),
1468
1468
  /* @__PURE__ */ D("div", {
@@ -1475,7 +1475,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1475
1475
  size: "icon",
1476
1476
  className: "h-8 w-8",
1477
1477
  "aria-label": x("gantt.toolbar.prevPeriod"),
1478
- children: /* @__PURE__ */ E(he, { className: "h-4 w-4" })
1478
+ children: /* @__PURE__ */ E(ge, { className: "h-4 w-4" })
1479
1479
  }),
1480
1480
  /* @__PURE__ */ E(y, {
1481
1481
  variant: "ghost",
@@ -1491,7 +1491,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1491
1491
  year: "numeric"
1492
1492
  })
1493
1493
  }),
1494
- j && /* @__PURE__ */ D("span", {
1494
+ k && /* @__PURE__ */ D("span", {
1495
1495
  className: "inline-flex items-center gap-1 rounded-full border bg-muted px-2 py-0.5 text-[10px] font-medium text-muted-foreground",
1496
1496
  "data-testid": "gantt-readonly-badge",
1497
1497
  title: x("gantt.readOnlyHint"),
@@ -1505,7 +1505,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1505
1505
  className: "flex bg-muted rounded-md p-1",
1506
1506
  role: "group",
1507
1507
  "aria-label": x("gantt.toolbar.viewMode"),
1508
- children: Je.map((e) => /* @__PURE__ */ E(y, {
1508
+ children: Ye.map((e) => /* @__PURE__ */ E(y, {
1509
1509
  variant: "ghost",
1510
1510
  size: "sm",
1511
1511
  className: b("h-6 px-1.5 sm:px-2 text-xs", L === e && "bg-background shadow-sm hover:bg-background"),
@@ -1522,27 +1522,27 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1522
1522
  size: "icon",
1523
1523
  className: "h-6 w-6",
1524
1524
  onClick: () => {
1525
- if (B > 15) Ve(Math.max(15, B - 10));
1525
+ if (B > 15) I(Math.max(15, B - 10));
1526
1526
  else {
1527
- let e = Je.indexOf(L);
1528
- e < Je.length - 1 && (wn(Je[e + 1]), Ve(Le));
1527
+ let e = Ye.indexOf(L);
1528
+ e < Ye.length - 1 && (wn(Ye[e + 1]), I(Re));
1529
1529
  }
1530
1530
  },
1531
1531
  "aria-label": x("gantt.toolbar.zoomOut"),
1532
- children: /* @__PURE__ */ E(De, { className: "h-3 w-3" })
1532
+ children: /* @__PURE__ */ E(Oe, { className: "h-3 w-3" })
1533
1533
  }), /* @__PURE__ */ E(y, {
1534
1534
  variant: "ghost",
1535
1535
  size: "icon",
1536
1536
  className: "h-6 w-6",
1537
1537
  onClick: () => {
1538
- if (B < 120) Ve(Math.min(120, B + 10));
1538
+ if (B < 120) I(Math.min(120, B + 10));
1539
1539
  else {
1540
- let e = Je.indexOf(L);
1541
- e > 0 && (wn(Je[e - 1]), Ve(Le));
1540
+ let e = Ye.indexOf(L);
1541
+ e > 0 && (wn(Ye[e - 1]), I(Re));
1542
1542
  }
1543
1543
  },
1544
1544
  "aria-label": x("gantt.toolbar.zoomIn"),
1545
- children: /* @__PURE__ */ E(Ee, { className: "h-3 w-3" })
1545
+ children: /* @__PURE__ */ E(De, { className: "h-3 w-3" })
1546
1546
  })]
1547
1547
  }),
1548
1548
  /* @__PURE__ */ E(y, {
@@ -1553,7 +1553,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1553
1553
  "aria-label": x(R ? "gantt.toolbar.showTaskList" : "gantt.toolbar.hideTaskList"),
1554
1554
  "aria-pressed": R,
1555
1555
  "data-testid": "gantt-toggle-task-list",
1556
- children: E(R ? be : xe, { className: "h-4 w-4" })
1556
+ children: E(R ? xe : Se, { className: "h-4 w-4" })
1557
1557
  }),
1558
1558
  /* @__PURE__ */ E(y, {
1559
1559
  variant: "ghost",
@@ -1583,7 +1583,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1583
1583
  "data-testid": "gantt-jump-month",
1584
1584
  children: x("gantt.toolbar.thisMonth")
1585
1585
  }),
1586
- M ? /* @__PURE__ */ D(Oe, { children: [/* @__PURE__ */ E(y, {
1586
+ A ? /* @__PURE__ */ D(ke, { children: [/* @__PURE__ */ E(y, {
1587
1587
  variant: "ghost",
1588
1588
  size: "icon",
1589
1589
  className: "h-8 w-8",
@@ -1591,7 +1591,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1591
1591
  disabled: !Ut,
1592
1592
  "aria-label": x("gantt.toolbar.undo"),
1593
1593
  "data-testid": "gantt-undo",
1594
- children: /* @__PURE__ */ E(we, { className: "h-4 w-4" })
1594
+ children: /* @__PURE__ */ E(Te, { className: "h-4 w-4" })
1595
1595
  }), /* @__PURE__ */ E(y, {
1596
1596
  variant: "ghost",
1597
1597
  size: "icon",
@@ -1600,7 +1600,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1600
1600
  disabled: !Wt,
1601
1601
  "aria-label": x("gantt.toolbar.redo"),
1602
1602
  "data-testid": "gantt-redo",
1603
- children: /* @__PURE__ */ E(Se, { className: "h-4 w-4" })
1603
+ children: /* @__PURE__ */ E(Ce, { className: "h-4 w-4" })
1604
1604
  })] }) : null,
1605
1605
  /* @__PURE__ */ E(y, {
1606
1606
  variant: "ghost",
@@ -1611,16 +1611,16 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1611
1611
  "aria-pressed": wr,
1612
1612
  "data-testid": "gantt-critical-path",
1613
1613
  style: wr ? { color: $ } : void 0,
1614
- children: /* @__PURE__ */ E(pe, { className: "h-4 w-4" })
1614
+ children: /* @__PURE__ */ E(me, { className: "h-4 w-4" })
1615
1615
  }),
1616
- Ne && M ? /* @__PURE__ */ E(y, {
1616
+ Fe && A ? /* @__PURE__ */ E(y, {
1617
1617
  variant: "ghost",
1618
1618
  size: "icon",
1619
1619
  className: "h-8 w-8",
1620
1620
  onClick: Or,
1621
1621
  "aria-label": x("gantt.toolbar.autoSchedule"),
1622
1622
  "data-testid": "gantt-auto-schedule",
1623
- children: /* @__PURE__ */ E(Te, { className: "h-4 w-4" })
1623
+ children: /* @__PURE__ */ E(Ee, { className: "h-4 w-4" })
1624
1624
  }) : null,
1625
1625
  /* @__PURE__ */ E(y, {
1626
1626
  variant: "ghost",
@@ -1629,7 +1629,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1629
1629
  onClick: Ar,
1630
1630
  "aria-label": x("gantt.toolbar.exportPng"),
1631
1631
  "data-testid": "gantt-export-png",
1632
- children: /* @__PURE__ */ E(_e, { className: "h-4 w-4" })
1632
+ children: /* @__PURE__ */ E(ve, { className: "h-4 w-4" })
1633
1633
  }),
1634
1634
  /* @__PURE__ */ E(y, {
1635
1635
  variant: "ghost",
@@ -1638,7 +1638,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1638
1638
  onClick: jr,
1639
1639
  "aria-label": x("gantt.toolbar.exportPdf"),
1640
1640
  "data-testid": "gantt-export-pdf",
1641
- children: /* @__PURE__ */ E(ve, { className: "h-4 w-4" })
1641
+ children: /* @__PURE__ */ E(ye, { className: "h-4 w-4" })
1642
1642
  }),
1643
1643
  le || ce ? /* @__PURE__ */ E(y, {
1644
1644
  variant: "ghost",
@@ -1649,7 +1649,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1649
1649
  "aria-pressed": Mr,
1650
1650
  "data-testid": "gantt-save-layout",
1651
1651
  style: Mr ? { color: $ } : void 0,
1652
- children: /* @__PURE__ */ E(Ce, { className: "h-4 w-4" })
1652
+ children: /* @__PURE__ */ E(we, { className: "h-4 w-4" })
1653
1653
  }) : null,
1654
1654
  /* @__PURE__ */ E(y, {
1655
1655
  variant: "ghost",
@@ -1659,7 +1659,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1659
1659
  "aria-label": x(Gn ? "gantt.toolbar.exitFullscreen" : "gantt.toolbar.enterFullscreen"),
1660
1660
  "aria-pressed": Gn,
1661
1661
  "data-testid": "gantt-fullscreen",
1662
- children: E(Gn ? ye : T, { className: "h-4 w-4" })
1662
+ children: E(Gn ? be : T, { className: "h-4 w-4" })
1663
1663
  })
1664
1664
  ]
1665
1665
  })]
@@ -1683,14 +1683,14 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1683
1683
  onPointerDown: (e) => {
1684
1684
  if (e.button !== 0) return;
1685
1685
  e.preventDefault();
1686
- let t = e.clientX, n = z, r = Math.max(160, k - 200), i = (e) => {
1687
- it(Math.max(160, Math.min(n + (e.clientX - t), r)));
1686
+ let t = e.clientX, n = z, r = Math.max(160, je - 200), i = (e) => {
1687
+ Ue(Math.max(160, Math.min(n + (e.clientX - t), r)));
1688
1688
  }, a = () => {
1689
1689
  window.removeEventListener("pointermove", i), window.removeEventListener("pointerup", a), window.removeEventListener("pointercancel", a), document.body.style.cursor = "";
1690
1690
  };
1691
1691
  document.body.style.cursor = "col-resize", window.addEventListener("pointermove", i), window.addEventListener("pointerup", a), window.addEventListener("pointercancel", a);
1692
1692
  },
1693
- onDoubleClick: () => it(null),
1693
+ onDoubleClick: () => Ue(null),
1694
1694
  children: /* @__PURE__ */ E("div", { className: "absolute inset-y-0 left-1/2 -translate-x-1/2 w-px bg-border group-hover/splitter:w-[3px] group-hover/splitter:bg-primary transition-all" })
1695
1695
  }),
1696
1696
  /* @__PURE__ */ D("div", {
@@ -1704,7 +1704,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1704
1704
  children: [/* @__PURE__ */ E("div", {
1705
1705
  className: "flex-1 truncate",
1706
1706
  children: x("gantt.column.taskName")
1707
- }), gt && /* @__PURE__ */ D(Oe, { children: [/* @__PURE__ */ E("div", {
1707
+ }), gt && /* @__PURE__ */ D(ke, { children: [/* @__PURE__ */ E("div", {
1708
1708
  className: "w-16 gantt-sm-w20 text-right",
1709
1709
  children: x("gantt.column.start")
1710
1710
  }), /* @__PURE__ */ E("div", {
@@ -1771,41 +1771,41 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1771
1771
  "aria-label": x("gantt.aria.taskList"),
1772
1772
  children: [
1773
1773
  Z.startIdx > 0 && /* @__PURE__ */ E("div", {
1774
- style: { height: Z.startIdx * F },
1774
+ style: { height: Z.startIdx * P },
1775
1775
  "aria-hidden": "true"
1776
1776
  }),
1777
1777
  G.slice(Z.startIdx, Z.endIdx).map((e) => {
1778
- let t = e.task, n = Me && _t === t.id, r = fn.has(String(t.id)), i = sn != null && String(sn) === String(t.id);
1778
+ let t = e.task, n = Pe && _t === t.id, r = fn.has(String(t.id)), i = sn != null && String(sn) === String(t.id);
1779
1779
  return /* @__PURE__ */ D("div", {
1780
1780
  className: b("group/task-row relative flex items-center border-b px-2 sm:px-4 hover:bg-accent/50 cursor-pointer transition-colors", i && "bg-accent/50"),
1781
1781
  style: {
1782
- height: F,
1782
+ height: P,
1783
1783
  touchAction: "manipulation"
1784
1784
  },
1785
1785
  role: "treeitem",
1786
1786
  "aria-level": e.depth + 1,
1787
1787
  "aria-selected": i,
1788
1788
  "aria-expanded": e.hasChildren ? !r : void 0,
1789
- draggable: !!je && !n && !t.locked,
1790
- onDragStart: je ? (e) => {
1789
+ draggable: !!M && !n && !t.locked,
1790
+ onDragStart: M ? (e) => {
1791
1791
  e.dataTransfer.setData("text/plain", String(t.id)), e.dataTransfer.effectAllowed = "move";
1792
1792
  } : void 0,
1793
- onDragOver: je ? (e) => {
1793
+ onDragOver: M ? (e) => {
1794
1794
  e.preventDefault(), e.dataTransfer.dropEffect = "move";
1795
1795
  } : void 0,
1796
- onDrop: je ? (e) => {
1796
+ onDrop: M ? (e) => {
1797
1797
  e.preventDefault();
1798
1798
  let n = e.dataTransfer.getData("text/plain");
1799
1799
  if (!n || n === String(t.id)) return;
1800
1800
  let r = wt.get(n);
1801
- r && String(r.parent ?? "") === String(t.parent ?? "") && je(r, t);
1801
+ r && String(r.parent ?? "") === String(t.parent ?? "") && M(r, t);
1802
1802
  } : void 0,
1803
1803
  onContextMenu: (e) => un(t, e),
1804
1804
  onClick: () => {
1805
1805
  cn(t.id), n || o?.(t);
1806
1806
  },
1807
1807
  onDoubleClick: () => {
1808
- Me && M && !e.isSummary && !t.locked && (vt(t.id), bt({
1808
+ Pe && A && !e.isSummary && !t.locked && (vt(t.id), bt({
1809
1809
  title: t.title,
1810
1810
  start: t.start.toLocaleDateString("en-CA"),
1811
1811
  end: t.end.toLocaleDateString("en-CA"),
@@ -1827,7 +1827,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1827
1827
  "aria-expanded": !r,
1828
1828
  "aria-label": x(r ? "gantt.row.expand" : "gantt.row.collapse"),
1829
1829
  "data-testid": `gantt-row-toggle-${t.id}`,
1830
- children: E(r ? C : me, { className: "h-3.5 w-3.5" })
1830
+ children: E(r ? C : he, { className: "h-3.5 w-3.5" })
1831
1831
  }) : /* @__PURE__ */ E("span", {
1832
1832
  className: "w-3 shrink-0",
1833
1833
  style: { marginLeft: -4 },
@@ -1924,13 +1924,13 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
1924
1924
  onClick: (t) => {
1925
1925
  t.stopPropagation(), tr(e.start, e.end, e.task.id);
1926
1926
  },
1927
- children: /* @__PURE__ */ E(ge, { className: "w-3 h-3" })
1927
+ children: /* @__PURE__ */ E(_e, { className: "w-3 h-3" })
1928
1928
  })
1929
1929
  ]
1930
1930
  }, t.id);
1931
1931
  }),
1932
1932
  Z.endIdx < G.length && /* @__PURE__ */ E("div", {
1933
- style: { height: (G.length - Z.endIdx) * F },
1933
+ style: { height: (G.length - Z.endIdx) * P },
1934
1934
  "aria-hidden": "true"
1935
1935
  })
1936
1936
  ]
@@ -2020,7 +2020,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2020
2020
  })
2021
2021
  }),
2022
2022
  Z.startIdx > 0 && /* @__PURE__ */ E("div", {
2023
- style: { height: Z.startIdx * F },
2023
+ style: { height: Z.startIdx * P },
2024
2024
  "aria-hidden": "true"
2025
2025
  }),
2026
2026
  G.slice(Z.startIdx, Z.endIdx).map((t) => {
@@ -2036,7 +2036,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2036
2036
  },
2037
2037
  "data-testid": `gantt-baseline-${n.id}`,
2038
2038
  "aria-hidden": "true"
2039
- }) : null, c = H?.taskId === n.id, l = cr?.has(String(n.id)) ?? !1, u = lr?.has(String(n.id)) ?? !1, d = c || l || u ? ur(t) : i, f = !!n.locked, p = !!M && !t.isSummary && !f, m = U != null && U.targetId != null && String(U.targetId) === String(n.id) && String(U.sourceId) !== String(n.id), h = U ? (e) => {
2039
+ }) : null, c = H?.taskId === n.id, l = cr?.has(String(n.id)) ?? !1, u = lr?.has(String(n.id)) ?? !1, d = c || l || u ? ur(t) : i, f = !!n.locked, p = !!A && !t.isSummary && !f, m = U != null && U.targetId != null && String(U.targetId) === String(n.id) && String(U.sourceId) !== String(n.id), h = U ? (e) => {
2040
2040
  let t = e.currentTarget.getBoundingClientRect(), r = t.width > 0 && e.clientX - t.left > t.width / 2 ? "end" : "start";
2041
2041
  Xt((e) => e && String(e.sourceId) !== String(n.id) ? {
2042
2042
  ...e,
@@ -2049,11 +2049,11 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2049
2049
  targetId: null,
2050
2050
  targetEnd: null
2051
2051
  });
2052
- } : void 0, ee = Math.max(1, Math.round((t.end.getTime() - t.start.getTime()) / Xe)), _ = xt === n.id && !H && !Kt && !U ? /* @__PURE__ */ D("div", {
2052
+ } : void 0, ee = Math.max(1, Math.round((t.end.getTime() - t.start.getTime()) / Ze)), _ = xt === n.id && !H && !Kt && !U ? /* @__PURE__ */ D("div", {
2053
2053
  className: "absolute z-30 pointer-events-none rounded-md border bg-popover text-popover-foreground px-2.5 py-1.5 text-xs shadow-md whitespace-nowrap",
2054
2054
  style: {
2055
2055
  left: Math.max(d.left + 8, 4),
2056
- top: F - 8
2056
+ top: P - 8
2057
2057
  },
2058
2058
  role: "tooltip",
2059
2059
  "data-testid": `gantt-tooltip-${n.id}`,
@@ -2098,7 +2098,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2098
2098
  }) : null;
2099
2099
  if (n.type === "group") return /* @__PURE__ */ E("div", {
2100
2100
  className: "relative border-b hover:bg-accent/50",
2101
- style: { height: F },
2101
+ style: { height: P },
2102
2102
  onPointerMove: g,
2103
2103
  children: _
2104
2104
  }, n.id);
@@ -2106,12 +2106,12 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2106
2106
  let e = n.color || "#0d9488";
2107
2107
  return /* @__PURE__ */ D("div", {
2108
2108
  className: "relative border-b hover:bg-accent/50",
2109
- style: { height: F },
2109
+ style: { height: P },
2110
2110
  onPointerMove: g,
2111
2111
  children: [
2112
2112
  s,
2113
2113
  /* @__PURE__ */ D("div", {
2114
- className: b("gantt-bar-hover absolute rounded-sm border shadow-sm flex items-center px-2 select-none", M ? "cursor-grab active:cursor-grabbing" : "cursor-pointer", c && "ring-2 ring-primary z-10", Mn === n.id && "gantt-flash z-10"),
2114
+ className: b("gantt-bar-hover absolute rounded-sm border shadow-sm flex items-center px-2 select-none", A ? "cursor-grab active:cursor-grabbing" : "cursor-pointer", c && "ring-2 ring-primary z-10", Mn === n.id && "gantt-flash z-10"),
2115
2115
  style: {
2116
2116
  left: d.left,
2117
2117
  width: d.width,
@@ -2177,7 +2177,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2177
2177
  let e = mr;
2178
2178
  return /* @__PURE__ */ D("div", {
2179
2179
  className: "relative border-b hover:bg-accent/50",
2180
- style: { height: F },
2180
+ style: { height: P },
2181
2181
  onPointerMove: g,
2182
2182
  children: [
2183
2183
  s,
@@ -2185,7 +2185,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2185
2185
  className: b("gantt-bar-hover absolute rotate-45 rounded-[2px] border shadow-sm select-none", p ? "cursor-grab active:cursor-grabbing" : "cursor-pointer", c && "ring-2 ring-primary z-10", m && "ring-2 ring-primary", Mn === n.id && "gantt-flash z-10"),
2186
2186
  style: {
2187
2187
  left: d.left - e / 2,
2188
- top: (F - e) / 2,
2188
+ top: (P - e) / 2,
2189
2189
  width: e,
2190
2190
  height: e,
2191
2191
  backgroundColor: r ? $ : n.color || "#3b82f6",
@@ -2212,7 +2212,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2212
2212
  let v = Kt && Kt.taskId === n.id ? Kt.value : n.progress;
2213
2213
  return /* @__PURE__ */ D("div", {
2214
2214
  className: "relative border-b hover:bg-accent/50",
2215
- style: { height: F },
2215
+ style: { height: P },
2216
2216
  onPointerMove: g,
2217
2217
  onMouseEnter: () => St(n.id),
2218
2218
  onMouseLeave: () => St((e) => e === n.id ? null : e),
@@ -2252,7 +2252,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2252
2252
  e.button === 0 && Gt(n, "move", e);
2253
2253
  } : void 0,
2254
2254
  children: [
2255
- p && d.width >= 14 && /* @__PURE__ */ D(Oe, { children: [/* @__PURE__ */ E("div", {
2255
+ p && d.width >= 14 && /* @__PURE__ */ D(ke, { children: [/* @__PURE__ */ E("div", {
2256
2256
  className: "gantt-resize-handle absolute left-0 top-0 bottom-0",
2257
2257
  style: {
2258
2258
  width: 6,
@@ -2307,7 +2307,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2307
2307
  filter: "drop-shadow(0 1px 1px rgba(0, 0, 0, 0.35))"
2308
2308
  } })
2309
2309
  }),
2310
- N && !f && ["start", "end"].map((e) => {
2310
+ j && !f && ["start", "end"].map((e) => {
2311
2311
  let t = U != null && String(U.sourceId) === String(n.id) && U.sourceEnd === e, r = t || xt === n.id, i = r && U == null;
2312
2312
  return /* @__PURE__ */ E("div", {
2313
2313
  className: "absolute top-1/2 -translate-y-1/2 z-20 flex items-center transition-opacity",
@@ -2370,7 +2370,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2370
2370
  }, n.id);
2371
2371
  }),
2372
2372
  Z.endIdx < G.length && /* @__PURE__ */ E("div", {
2373
- style: { height: (G.length - Z.endIdx) * F },
2373
+ style: { height: (G.length - Z.endIdx) * P },
2374
2374
  "aria-hidden": "true"
2375
2375
  }),
2376
2376
  (dr.length > 0 || U) && /* @__PURE__ */ D("svg", {
@@ -2426,7 +2426,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2426
2426
  if (Math.max(t.sourceIndex, t.targetIndex) < Z.startIdx - 6 || n > Z.endIdx + 6) return null;
2427
2427
  let r = Sr(t);
2428
2428
  if (!r) return null;
2429
- let i = Cr != null && (String(t.sourceId) === String(Cr) || String(t.targetId) === String(Cr)), a = Er?.criticalEdges.has(`${String(t.sourceId)}->${String(t.targetId)}`) ?? !1, o = a ? "gantt-link-arrow-critical" : i ? "gantt-link-arrow-active" : "gantt-link-arrow", s = !!(P || N);
2429
+ let i = Cr != null && (String(t.sourceId) === String(Cr) || String(t.targetId) === String(Cr)), a = Er?.criticalEdges.has(`${String(t.sourceId)}->${String(t.targetId)}`) ?? !1, o = a ? "gantt-link-arrow-critical" : i ? "gantt-link-arrow-active" : "gantt-link-arrow", s = !!(Ne || j);
2430
2430
  return /* @__PURE__ */ D(e.Fragment, { children: [/* @__PURE__ */ E("path", {
2431
2431
  d: r,
2432
2432
  fill: "none",
@@ -2454,7 +2454,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2454
2454
  U && (() => {
2455
2455
  let e = G.findIndex((e) => String(e.task.id) === String(U.sourceId));
2456
2456
  if (e < 0) return null;
2457
- let t = ur(G[e]), n = G[e].isMilestone ? t.left + (U.sourceEnd === "start" ? -hr : hr) : U.sourceEnd === "start" ? t.left : t.left + t.width, r = e * F + F / 2;
2457
+ let t = ur(G[e]), n = G[e].isMilestone ? t.left + (U.sourceEnd === "start" ? -hr : hr) : U.sourceEnd === "start" ? t.left : t.left + t.width, r = e * P + P / 2;
2458
2458
  return /* @__PURE__ */ E("path", {
2459
2459
  d: `M ${Math.round(n)} ${Math.round(r)} L ${Math.round(U.x)} ${Math.round(U.y)}`,
2460
2460
  fill: "none",
@@ -2512,7 +2512,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2512
2512
  },
2513
2513
  children: x("gantt.menu.view")
2514
2514
  }),
2515
- Me && M && n && !n.isSummary && !e.locked && /* @__PURE__ */ E("button", {
2515
+ Pe && A && n && !n.isSummary && !e.locked && /* @__PURE__ */ E("button", {
2516
2516
  type: "button",
2517
2517
  role: "menuitem",
2518
2518
  className: r,
@@ -2527,7 +2527,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2527
2527
  },
2528
2528
  children: x("gantt.menu.edit")
2529
2529
  }),
2530
- N && n && !n.isMilestone && !e.locked && /* @__PURE__ */ D(Oe, { children: [/* @__PURE__ */ E("button", {
2530
+ j && n && !n.isMilestone && !e.locked && /* @__PURE__ */ D(ke, { children: [/* @__PURE__ */ E("button", {
2531
2531
  type: "button",
2532
2532
  role: "menuitem",
2533
2533
  className: r,
@@ -2558,13 +2558,13 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2558
2558
  },
2559
2559
  children: x("gantt.menu.addSuccessor")
2560
2560
  })] }),
2561
- Ae && !e.locked && /* @__PURE__ */ E("button", {
2561
+ Me && !e.locked && /* @__PURE__ */ E("button", {
2562
2562
  type: "button",
2563
2563
  role: "menuitem",
2564
2564
  className: b(r, "text-destructive"),
2565
2565
  "data-testid": "gantt-context-menu-delete",
2566
2566
  onClick: () => {
2567
- $t(null), Ae(e);
2567
+ $t(null), Me(e);
2568
2568
  },
2569
2569
  children: x("gantt.menu.delete")
2570
2570
  })
@@ -2593,7 +2593,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2593
2593
  n.title
2594
2594
  ]
2595
2595
  }),
2596
- N && [
2596
+ j && [
2597
2597
  "fs",
2598
2598
  "ss",
2599
2599
  "ff",
@@ -2605,24 +2605,24 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2605
2605
  className: b(r, W.type === t && "font-semibold"),
2606
2606
  "data-testid": `gantt-link-menu-type-${t}`,
2607
2607
  onClick: () => {
2608
- tn(null), t !== W.type && N(e, n, t);
2608
+ tn(null), t !== W.type && j(e, n, t);
2609
2609
  },
2610
2610
  children: [W.type === t ? "✓ " : "\xA0\xA0", x(`gantt.linkType.${t}`)]
2611
2611
  }, t)),
2612
- P && /* @__PURE__ */ D(Oe, { children: [/* @__PURE__ */ E("div", { className: "my-1 border-t" }), /* @__PURE__ */ E("button", {
2612
+ Ne && /* @__PURE__ */ D(ke, { children: [/* @__PURE__ */ E("div", { className: "my-1 border-t" }), /* @__PURE__ */ E("button", {
2613
2613
  type: "button",
2614
2614
  role: "menuitem",
2615
2615
  className: b(r, "text-destructive"),
2616
2616
  "data-testid": "gantt-link-menu-remove",
2617
2617
  onClick: () => {
2618
- tn(null), P(e, n);
2618
+ tn(null), Ne(e, n);
2619
2619
  },
2620
2620
  children: x("gantt.menu.removeDependency")
2621
2621
  })] })
2622
2622
  ]
2623
2623
  });
2624
2624
  })(),
2625
- rn && N && (() => {
2625
+ rn && j && (() => {
2626
2626
  let e = t.find((e) => String(e.id) === String(rn.taskId));
2627
2627
  if (!e) return null;
2628
2628
  let n = new Set(dr.map((e) => `${String(e.sourceId)}->${String(e.targetId)}`)), r = t.filter((t) => {
@@ -2651,7 +2651,7 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2651
2651
  className: "w-full text-left px-3 py-1.5 hover:bg-accent focus:bg-accent outline-none truncate",
2652
2652
  "data-testid": `gantt-dep-picker-option-${t.id}`,
2653
2653
  onClick: () => {
2654
- an(null), rn.relation === "pred" ? N(t, e, "fs") : N(e, t, "fs");
2654
+ an(null), rn.relation === "pred" ? j(t, e, "fs") : j(e, t, "fs");
2655
2655
  },
2656
2656
  children: t.title
2657
2657
  }, String(t.id)))]
@@ -2701,10 +2701,10 @@ function L({ tasks: t, viewMode: n, startDate: r, endDate: i, markers: a, onTask
2701
2701
  }
2702
2702
  //#endregion
2703
2703
  //#region src/workload.ts
2704
- function st(e, t, n, r) {
2704
+ function ct(e, t, n, r) {
2705
2705
  return t.getTime() === e.getTime() ? e.getTime() >= n.getTime() && e.getTime() < r.getTime() : e.getTime() < r.getTime() && t.getTime() > n.getTime();
2706
2706
  }
2707
- function ct(e, t, n) {
2707
+ function lt(e, t, n) {
2708
2708
  let { assignee: r, effort: i, capacity: a = 1, unassignedLabel: o = "Unassigned" } = n, s = (e) => typeof a == "function" ? a(e) : a, c = (e) => {
2709
2709
  let t = i ? i(e) : 1;
2710
2710
  return Number.isFinite(t) && t > 0 ? t : 0;
@@ -2721,7 +2721,7 @@ function ct(e, t, n) {
2721
2721
  for (let e of l.values()) {
2722
2722
  let n = s(e.key), r = 0, i = 0, a = t.map((t) => {
2723
2723
  let a = 0;
2724
- for (let n of e.items) st(n.start, n.end, t.start, t.end) && (a += c(n));
2724
+ for (let n of e.items) ct(n.start, n.end, t.start, t.end) && (a += c(n));
2725
2725
  a > r && (r = a);
2726
2726
  let o = a > n + 1e-9;
2727
2727
  return o && i++, {
@@ -2743,32 +2743,32 @@ function ct(e, t, n) {
2743
2743
  }
2744
2744
  //#endregion
2745
2745
  //#region src/ResourceWorkload.tsx
2746
- var lt = {
2746
+ var ut = {
2747
2747
  day: 26,
2748
2748
  week: 56,
2749
2749
  month: 76,
2750
2750
  quarter: 88,
2751
2751
  year: 104
2752
- }, ut = 48, R = 34, dt = 180;
2753
- function ft(e, t, n) {
2752
+ }, R = 48, dt = 34, ft = 180;
2753
+ function pt(e, t, n) {
2754
2754
  return t === "day" ? String(e.getDate()) : t === "week" ? e.toLocaleDateString(n, {
2755
2755
  month: "numeric",
2756
2756
  day: "numeric"
2757
2757
  }) : t === "month" ? e.toLocaleDateString(n, { month: "short" }) : t === "year" ? String(e.getFullYear()) : `Q${Math.floor(e.getMonth() / 3) + 1}`;
2758
2758
  }
2759
- function pt({ tasks: t, assignee: n, effort: r, capacity: i = 1, viewMode: a = "day", unassignedLabel: o = "Unassigned", className: s }) {
2760
- let { t: c, language: l } = Ue(), u = l || void 0, d = lt[a], f = e.useMemo(() => {
2759
+ function z({ tasks: t, assignee: n, effort: r, capacity: i = 1, viewMode: a = "day", unassignedLabel: o = "Unassigned", className: s }) {
2760
+ let { t: c, language: l } = We(), u = l || void 0, d = ut[a], f = e.useMemo(() => {
2761
2761
  if (!t.length) return [];
2762
- let e = new Date(Math.min(...t.map((e) => e.start.getTime()))), n = new Date(Math.max(...t.map((e) => e.end.getTime()))), r = Ze(e, a), i = $e(Ze(n, a), 1, a), o = [], s = 0;
2762
+ let e = new Date(Math.min(...t.map((e) => e.start.getTime()))), n = new Date(Math.max(...t.map((e) => e.end.getTime()))), r = Qe(e, a), i = et(Qe(n, a), 1, a), o = [], s = 0;
2763
2763
  for (; r < i && s++ < 4e3;) {
2764
- let e = $e(r, 1, a);
2764
+ let e = et(r, 1, a);
2765
2765
  o.push({
2766
2766
  date: new Date(r),
2767
2767
  col: {
2768
2768
  start: new Date(r),
2769
2769
  end: new Date(e)
2770
2770
  },
2771
- label: ft(r, a, u)
2771
+ label: pt(r, a, u)
2772
2772
  }), r = e;
2773
2773
  }
2774
2774
  return o;
@@ -2776,7 +2776,7 @@ function pt({ tasks: t, assignee: n, effort: r, capacity: i = 1, viewMode: a = "
2776
2776
  t,
2777
2777
  a,
2778
2778
  u
2779
- ]), p = e.useMemo(() => ct(t, f.map((e) => e.col), {
2779
+ ]), p = e.useMemo(() => lt(t, f.map((e) => e.col), {
2780
2780
  assignee: n,
2781
2781
  effort: r,
2782
2782
  capacity: i,
@@ -2805,11 +2805,11 @@ function pt({ tasks: t, assignee: n, effort: r, capacity: i = 1, viewMode: a = "
2805
2805
  children: /* @__PURE__ */ D("div", {
2806
2806
  style: {
2807
2807
  display: "flex",
2808
- minWidth: dt + h
2808
+ minWidth: ft + h
2809
2809
  },
2810
2810
  children: [/* @__PURE__ */ D("div", {
2811
2811
  style: {
2812
- width: dt,
2812
+ width: ft,
2813
2813
  flexShrink: 0
2814
2814
  },
2815
2815
  children: [/* @__PURE__ */ E("div", {
@@ -2826,7 +2826,7 @@ function pt({ tasks: t, assignee: n, effort: r, capacity: i = 1, viewMode: a = "
2826
2826
  }), p.map((e) => /* @__PURE__ */ D("div", {
2827
2827
  "data-testid": `resource-row-${e.key}`,
2828
2828
  style: {
2829
- height: ut,
2829
+ height: R,
2830
2830
  display: "flex",
2831
2831
  flexDirection: "column",
2832
2832
  justifyContent: "center",
@@ -2882,12 +2882,12 @@ function pt({ tasks: t, assignee: n, effort: r, capacity: i = 1, viewMode: a = "
2882
2882
  children: e.label
2883
2883
  }, t))
2884
2884
  }), p.map((e) => {
2885
- let t = R * (1 - Math.min(e.capacity / m, 1));
2885
+ let t = dt * (1 - Math.min(e.capacity / m, 1));
2886
2886
  return /* @__PURE__ */ D("div", {
2887
2887
  style: {
2888
2888
  position: "relative",
2889
2889
  display: "flex",
2890
- height: ut,
2890
+ height: R,
2891
2891
  borderBottom: "1px solid hsl(var(--border) / 0.5)"
2892
2892
  },
2893
2893
  children: [/* @__PURE__ */ E("div", {
@@ -2896,13 +2896,13 @@ function pt({ tasks: t, assignee: n, effort: r, capacity: i = 1, viewMode: a = "
2896
2896
  position: "absolute",
2897
2897
  left: 0,
2898
2898
  right: 0,
2899
- top: (ut - R) / 2 + t,
2899
+ top: (R - dt) / 2 + t,
2900
2900
  borderTop: "1px dashed hsl(var(--muted-foreground) / 0.6)",
2901
2901
  pointerEvents: "none",
2902
2902
  zIndex: 1
2903
2903
  }
2904
2904
  }), e.cells.map((t, n) => {
2905
- let r = Math.max(t.load > 0 ? 2 : 0, R * Math.min(t.load / m, 1));
2905
+ let r = Math.max(t.load > 0 ? 2 : 0, dt * Math.min(t.load / m, 1));
2906
2906
  return /* @__PURE__ */ E("div", {
2907
2907
  "data-testid": `resource-cell-${e.key}-${n}`,
2908
2908
  "data-load": t.load,
@@ -2916,7 +2916,7 @@ function pt({ tasks: t, assignee: n, effort: r, capacity: i = 1, viewMode: a = "
2916
2916
  display: "flex",
2917
2917
  alignItems: "flex-end",
2918
2918
  justifyContent: "center",
2919
- paddingBottom: (ut - R) / 2
2919
+ paddingBottom: (R - dt) / 2
2920
2920
  },
2921
2921
  children: t.load > 0 && /* @__PURE__ */ E("div", { style: {
2922
2922
  width: d - 6,
@@ -2942,7 +2942,7 @@ function pt({ tasks: t, assignee: n, effort: r, capacity: i = 1, viewMode: a = "
2942
2942
  }
2943
2943
  //#endregion
2944
2944
  //#region src/QuickFilterBar.tsx
2945
- var z = {
2945
+ var mt = {
2946
2946
  display: "flex",
2947
2947
  flexWrap: "wrap",
2948
2948
  alignItems: "center",
@@ -2951,7 +2951,7 @@ var z = {
2951
2951
  borderBottom: "1px solid hsl(var(--border))",
2952
2952
  background: "hsl(var(--background))",
2953
2953
  fontSize: 13
2954
- }, mt = {
2954
+ }, B = {
2955
2955
  display: "inline-flex",
2956
2956
  alignItems: "center",
2957
2957
  gap: 6,
@@ -2964,7 +2964,7 @@ var z = {
2964
2964
  cursor: "pointer",
2965
2965
  whiteSpace: "nowrap",
2966
2966
  lineHeight: "28px"
2967
- }, B = {
2967
+ }, ht = {
2968
2968
  position: "absolute",
2969
2969
  top: "calc(100% + 4px)",
2970
2970
  left: 0,
@@ -2978,7 +2978,7 @@ var z = {
2978
2978
  background: "hsl(var(--popover, var(--background)))",
2979
2979
  color: "hsl(var(--popover-foreground, var(--foreground)))",
2980
2980
  boxShadow: "0 8px 24px rgba(0,0,0,0.18)"
2981
- }, ht = {
2981
+ }, gt = {
2982
2982
  display: "flex",
2983
2983
  alignItems: "center",
2984
2984
  gap: 8,
@@ -2987,7 +2987,7 @@ var z = {
2987
2987
  cursor: "pointer",
2988
2988
  userSelect: "none"
2989
2989
  };
2990
- function gt({ checked: e }) {
2990
+ function _t({ checked: e }) {
2991
2991
  return /* @__PURE__ */ E("span", {
2992
2992
  "aria-hidden": !0,
2993
2993
  style: {
@@ -3007,7 +3007,7 @@ function gt({ checked: e }) {
3007
3007
  children: e ? "✓" : ""
3008
3008
  });
3009
3009
  }
3010
- function _t({ filter: e, selected: t, onChange: r, labels: o }) {
3010
+ function vt({ filter: e, selected: t, onChange: r, labels: o }) {
3011
3011
  let [s, c] = a(!1), l = i(null);
3012
3012
  n(() => {
3013
3013
  if (!s) return;
@@ -3033,7 +3033,7 @@ function _t({ filter: e, selected: t, onChange: r, labels: o }) {
3033
3033
  children: [/* @__PURE__ */ D("button", {
3034
3034
  type: "button",
3035
3035
  style: {
3036
- ...mt,
3036
+ ...B,
3037
3037
  borderColor: d > 0 ? "hsl(var(--primary))" : "hsl(var(--border))",
3038
3038
  color: d > 0 ? "hsl(var(--primary))" : "hsl(var(--foreground))"
3039
3039
  },
@@ -3051,26 +3051,26 @@ function _t({ filter: e, selected: t, onChange: r, labels: o }) {
3051
3051
  })]
3052
3052
  }), s && /* @__PURE__ */ E("div", {
3053
3053
  role: "listbox",
3054
- style: B,
3054
+ style: ht,
3055
3055
  "data-testid": `quick-filter-panel-${e.field}`,
3056
3056
  children: e.options.length === 0 ? /* @__PURE__ */ E("div", {
3057
3057
  style: {
3058
- ...ht,
3058
+ ...gt,
3059
3059
  cursor: "default",
3060
3060
  opacity: .6
3061
3061
  },
3062
3062
  children: o.empty
3063
- }) : /* @__PURE__ */ D(Oe, { children: [
3063
+ }) : /* @__PURE__ */ D(ke, { children: [
3064
3064
  /* @__PURE__ */ D("div", {
3065
3065
  role: "option",
3066
3066
  "aria-selected": f,
3067
3067
  style: {
3068
- ...ht,
3068
+ ...gt,
3069
3069
  fontWeight: 600
3070
3070
  },
3071
3071
  "data-testid": `quick-filter-all-${e.field}`,
3072
3072
  onClick: () => m(),
3073
- children: [/* @__PURE__ */ E(gt, { checked: f }), /* @__PURE__ */ E("span", { children: o.all })]
3073
+ children: [/* @__PURE__ */ E(_t, { checked: f }), /* @__PURE__ */ E("span", { children: o.all })]
3074
3074
  }),
3075
3075
  /* @__PURE__ */ E("div", { style: {
3076
3076
  height: 1,
@@ -3083,27 +3083,27 @@ function _t({ filter: e, selected: t, onChange: r, labels: o }) {
3083
3083
  role: "option",
3084
3084
  "aria-selected": n,
3085
3085
  style: {
3086
- ...ht,
3086
+ ...gt,
3087
3087
  background: n ? "hsl(var(--accent, var(--muted)))" : "transparent"
3088
3088
  },
3089
3089
  "data-testid": `quick-filter-option-${e.field}-${t.value}`,
3090
3090
  onClick: () => p(t.value),
3091
- children: [/* @__PURE__ */ E(gt, { checked: n }), /* @__PURE__ */ E("span", { children: t.label })]
3091
+ children: [/* @__PURE__ */ E(_t, { checked: n }), /* @__PURE__ */ E("span", { children: t.label })]
3092
3092
  }, t.value);
3093
3093
  })
3094
3094
  ] })
3095
3095
  })]
3096
3096
  });
3097
3097
  }
3098
- var vt = ({ filters: e, value: t, onChange: n, onClear: r, resultCount: i, totalCount: a, labels: o, className: s }) => {
3098
+ var yt = ({ filters: e, value: t, onChange: n, onClear: r, resultCount: i, totalCount: a, labels: o, className: s }) => {
3099
3099
  if (!e.length) return null;
3100
3100
  let c = o?.all ?? "All", l = o?.empty ?? "No options", u = o?.clear ?? "Clear", d = e.some((e) => (t[e.field]?.length ?? 0) > 0);
3101
3101
  return /* @__PURE__ */ D("div", {
3102
- style: z,
3102
+ style: mt,
3103
3103
  className: s,
3104
3104
  "data-testid": "quick-filter-bar",
3105
3105
  children: [
3106
- e.map((e) => /* @__PURE__ */ E(_t, {
3106
+ e.map((e) => /* @__PURE__ */ E(vt, {
3107
3107
  filter: e,
3108
3108
  selected: t[e.field] ?? [],
3109
3109
  onChange: (t) => n(e.field, t),
@@ -3115,7 +3115,7 @@ var vt = ({ filters: e, value: t, onChange: n, onClear: r, resultCount: i, total
3115
3115
  d && /* @__PURE__ */ E("button", {
3116
3116
  type: "button",
3117
3117
  style: {
3118
- ...mt,
3118
+ ...B,
3119
3119
  height: 28,
3120
3120
  color: "hsl(var(--muted-foreground))"
3121
3121
  },
@@ -3136,7 +3136,7 @@ var vt = ({ filters: e, value: t, onChange: n, onClear: r, resultCount: i, total
3136
3136
  };
3137
3137
  //#endregion
3138
3138
  //#region src/ObjectGantt.tsx
3139
- function yt(e) {
3139
+ function bt(e) {
3140
3140
  if (e == null) return;
3141
3141
  let t = String(e).toLowerCase().trim();
3142
3142
  if (t === "milestone") return "milestone";
@@ -3144,7 +3144,7 @@ function yt(e) {
3144
3144
  if (t === "summary" || t === "project" || t === "phase") return "summary";
3145
3145
  if (t === "task") return "task";
3146
3146
  }
3147
- var bt = {
3147
+ var xt = {
3148
3148
  fs: "fs",
3149
3149
  ss: "ss",
3150
3150
  ff: "ff",
@@ -3157,7 +3157,7 @@ var bt = {
3157
3157
  end_to_end: "ff",
3158
3158
  start_to_end: "sf"
3159
3159
  };
3160
- function xt(e) {
3160
+ function St(e) {
3161
3161
  if (e == null || e === "") return [];
3162
3162
  if (typeof e == "string") return e.split(",").map((e) => e.trim()).filter(Boolean);
3163
3163
  if (typeof e == "number") return [e];
@@ -3166,7 +3166,7 @@ function xt(e) {
3166
3166
  for (let n of e) if (!(n == null || n === "")) if (typeof n == "object") {
3167
3167
  let e = n.id ?? n._id ?? n.task ?? n.target;
3168
3168
  if (e == null || e === "") continue;
3169
- let r = bt[String(n.type ?? "").toLowerCase().replace(/-/g, "_")];
3169
+ let r = xt[String(n.type ?? "").toLowerCase().replace(/-/g, "_")];
3170
3170
  t.push(r ? {
3171
3171
  id: e,
3172
3172
  type: r
@@ -3174,7 +3174,7 @@ function xt(e) {
3174
3174
  } else t.push(n);
3175
3175
  return t;
3176
3176
  }
3177
- function St(e) {
3177
+ function V(e) {
3178
3178
  return e.data ? e.data : e.staticData ? {
3179
3179
  provider: "value",
3180
3180
  items: e.staticData
@@ -3183,7 +3183,7 @@ function St(e) {
3183
3183
  object: e.objectName
3184
3184
  } : null;
3185
3185
  }
3186
- function V(e) {
3186
+ function Ct(e) {
3187
3187
  if (e) {
3188
3188
  if (typeof e == "string") {
3189
3189
  let t = e.split(" "), n = t[0], r = t[1]?.toLowerCase() === "desc" ? "desc" : "asc";
@@ -3192,7 +3192,7 @@ function V(e) {
3192
3192
  if (Array.isArray(e)) return e.reduce((e, t) => (t.field && t.order && (e[t.field] = t.order), e), {});
3193
3193
  }
3194
3194
  }
3195
- function Ct(e) {
3195
+ function wt(e) {
3196
3196
  let t = null;
3197
3197
  if (e.startDateField && e.endDateField) return t = {
3198
3198
  startDateField: e.startDateField,
@@ -3218,22 +3218,22 @@ function Ct(e) {
3218
3218
  timeSegments: e.timeSegments
3219
3219
  }, t;
3220
3220
  if (e.gantt && (t = e.gantt), t) {
3221
- let e = f.safeParse(t);
3221
+ let e = p.safeParse(t);
3222
3222
  return e.success || console.warn("[ObjectGantt] Invalid gantt configuration:", e.error.format()), t;
3223
3223
  }
3224
3224
  return null;
3225
3225
  }
3226
- var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick: d, ...f }) => {
3227
- let [y, b] = a([]), [oe, pe] = a(!0), [me, he] = a(null), [C, ge] = a(null), { currency: _e } = m(), ve = St(e), w = r(() => ve, [JSON.stringify(ve)]), T = Ct(e), ye = w?.provider === "value";
3226
+ var Tt = ({ schema: e, dataSource: i, className: o, onTaskClick: d, onRowClick: f, ...p }) => {
3227
+ let [y, b] = a([]), [se, me] = a(!0), [he, ge] = a(null), [C, _e] = a(null), { currency: ve } = h(), ye = V(e), w = r(() => ye, [JSON.stringify(ye)]), T = wt(e), be = w?.provider === "value";
3228
3228
  n(() => {
3229
3229
  (async () => {
3230
3230
  try {
3231
- if (pe(!0), f.data && Array.isArray(f.data)) {
3232
- b(f.data), pe(!1);
3231
+ if (me(!0), p.data && Array.isArray(p.data)) {
3232
+ b(p.data), me(!1);
3233
3233
  return;
3234
3234
  }
3235
- if (ye && w?.provider === "value") {
3236
- b(w.items), pe(!1);
3235
+ if (be && w?.provider === "value") {
3236
+ b(w.items), me(!1);
3237
3237
  return;
3238
3238
  }
3239
3239
  if (!i || typeof i.find != "function") throw Error("DataSource required for object/api providers");
@@ -3241,29 +3241,29 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3241
3241
  let t = w.object, n = s(C?.fields);
3242
3242
  b(c(await i.find(t, {
3243
3243
  $filter: e.filter,
3244
- $orderby: V(e.sort),
3244
+ $orderby: Ct(e.sort),
3245
3245
  ...n.length > 0 ? { $expand: n } : {}
3246
3246
  })));
3247
3247
  } else w?.provider === "api" && (console.warn("API provider not yet implemented for ObjectGantt"), b([]));
3248
- pe(!1);
3248
+ me(!1);
3249
3249
  } catch (e) {
3250
- he(e), pe(!1);
3250
+ ge(e), me(!1);
3251
3251
  }
3252
3252
  })();
3253
3253
  }, [
3254
3254
  w,
3255
3255
  i,
3256
- ye,
3256
+ be,
3257
3257
  e.filter,
3258
3258
  e.sort,
3259
3259
  C
3260
3260
  ]), n(() => {
3261
- !ye && i && (async () => {
3261
+ !be && i && (async () => {
3262
3262
  try {
3263
3263
  if (!i) return;
3264
3264
  let t = w?.provider === "object" ? w.object : e.objectName;
3265
3265
  if (!t) return;
3266
- ge(await i.getObjectSchema(t));
3266
+ _e(await i.getObjectSchema(t));
3267
3267
  } catch (e) {
3268
3268
  console.error("Failed to fetch object schema:", e);
3269
3269
  }
@@ -3271,12 +3271,12 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3271
3271
  }, [
3272
3272
  e.objectName,
3273
3273
  i,
3274
- ye,
3274
+ be,
3275
3275
  w
3276
3276
  ]);
3277
- let be = r(() => {
3277
+ let xe = r(() => {
3278
3278
  if (!T || !y.length) return [];
3279
- let { startDateField: e, endDateField: t, titleField: n, progressField: r, dependenciesField: i, colorField: a, parentField: o, typeField: s, lockField: c, tooltipFields: l, baselineStartField: u, baselineEndField: d } = T, f = C?.fields ?? {}, m = (e, t) => {
3279
+ let { startDateField: e, endDateField: t, titleField: n, progressField: r, dependenciesField: i, colorField: a, parentField: o, typeField: s, lockField: c, tooltipFields: u, baselineStartField: d, baselineEndField: f } = T, p = C?.fields ?? {}, h = (e, t) => {
3280
3280
  if (!t) return;
3281
3281
  let n = t.split("."), r = e;
3282
3282
  for (let e of n) {
@@ -3284,41 +3284,35 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3284
3284
  r = r[e];
3285
3285
  }
3286
3286
  return r;
3287
- }, h = (e) => {
3287
+ }, g = (e) => {
3288
3288
  let t = [
3289
- m(e, n),
3290
- e?.name,
3291
- e?.title,
3292
- e?.subject,
3293
- e?.label,
3289
+ h(e, n),
3294
3290
  e?.account?.name,
3295
3291
  e?.opportunity?.name,
3296
- e?.contact && [e.contact.first_name, e.contact.last_name].filter(Boolean).join(" "),
3297
- e?.id,
3298
- e?._id
3292
+ e?.contact && [e.contact.first_name, e.contact.last_name].filter(Boolean).join(" ")
3299
3293
  ];
3300
3294
  for (let e of t) if (e != null && String(e).trim() !== "") return String(e);
3301
- return "Untitled";
3302
- }, g = (e, t) => {
3303
- if (t) return t;
3304
- let n = f[e] ?? f[e.split(".")[0]];
3305
- return n?.label ? n.label : fe(e);
3295
+ return l(C, e);
3306
3296
  }, ee = (e, t) => {
3297
+ if (t) return t;
3298
+ let n = p[e] ?? p[e.split(".")[0]];
3299
+ return n?.label ? n.label : pe(e);
3300
+ }, _ = (e, t) => {
3307
3301
  if (e == null || e === "") return "—";
3308
- let n = f[t] ?? f[t.split(".")[0]], r = n?.type, i = n?.options;
3302
+ let n = p[t] ?? p[t.split(".")[0]], r = n?.type, i = n?.options;
3309
3303
  if (Array.isArray(i) && i.length) {
3310
3304
  let t = i.find((t) => String(t.value) === String(e));
3311
3305
  if (t) return t.label;
3312
3306
  }
3313
3307
  switch (r) {
3314
- case "date": return ce(e);
3315
- case "datetime": return le(e);
3308
+ case "date": return le(e);
3309
+ case "datetime": return x(e);
3316
3310
  case "number":
3317
3311
  case "integer":
3318
3312
  case "float":
3319
- case "decimal": return x(Number(e));
3320
- case "currency": return se(Number(e), p(n, _e));
3321
- case "percent": return ue(Number(e));
3313
+ case "decimal": return ue(Number(e));
3314
+ case "currency": return ce(Number(e), m(n, ve));
3315
+ case "percent": return S(Number(e));
3322
3316
  case "boolean":
3323
3317
  case "checkbox": return e ? "Yes" : "No";
3324
3318
  default:
@@ -3339,43 +3333,43 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3339
3333
  }
3340
3334
  return String(e);
3341
3335
  }
3342
- }, _ = (e) => {
3343
- if (!l || !l.length) return;
3336
+ }, v = (e) => {
3337
+ if (!u || !u.length) return;
3344
3338
  let t = [];
3345
- for (let n of l) {
3339
+ for (let n of u) {
3346
3340
  let r = typeof n == "string" ? n : n?.field;
3347
3341
  if (!r) continue;
3348
3342
  let i = typeof n == "object" ? n.label : void 0;
3349
3343
  t.push({
3350
- label: g(r, i),
3351
- value: ee(m(e, r), r)
3344
+ label: ee(r, i),
3345
+ value: _(h(e, r), r)
3352
3346
  });
3353
3347
  }
3354
3348
  return t.length ? t : void 0;
3355
3349
  };
3356
3350
  return y.map((n, l) => {
3357
- let f = n[e], p = n[t], m = u ? n[u] : void 0, g = d ? n[d] : void 0, ee = m ? new Date(m) : void 0, v = g ? new Date(g) : void 0, te = h(n), ne = r ? n[r] : 0, re = i ? n[i] : [], ie = a ? n[a] : void 0;
3351
+ let u = n[e], p = n[t], m = d ? n[d] : void 0, h = f ? n[f] : void 0, ee = m ? new Date(m) : void 0, _ = h ? new Date(h) : void 0, te = g(n), ne = r ? n[r] : 0, re = i ? n[i] : [], ie = a ? n[a] : void 0;
3358
3352
  if (!ie) {
3359
3353
  let e = n.status ?? n.state ?? n.priority ?? n.severity;
3360
3354
  if (e != null && e !== "") {
3361
- let t = S(void 0, e);
3362
- t && (ie = de(t));
3355
+ let t = de(void 0, e);
3356
+ t && (ie = fe(t));
3363
3357
  }
3364
3358
  }
3365
3359
  return {
3366
3360
  id: n.id || n._id || `task-${l}`,
3367
3361
  title: te,
3368
- start: f ? new Date(f) : /* @__PURE__ */ new Date(),
3362
+ start: u ? new Date(u) : /* @__PURE__ */ new Date(),
3369
3363
  end: p ? new Date(p) : /* @__PURE__ */ new Date(),
3370
3364
  progress: Math.min(100, Math.max(0, ne || 0)),
3371
- dependencies: xt(re),
3365
+ dependencies: St(re),
3372
3366
  parent: o ? n[o] ?? null : void 0,
3373
- type: s ? yt(n[s]) : void 0,
3367
+ type: s ? bt(n[s]) : void 0,
3374
3368
  locked: c ? !!n[c] : void 0,
3375
3369
  color: ie,
3376
3370
  baselineStart: ee && !isNaN(ee.getTime()) ? ee : void 0,
3377
- baselineEnd: v && !isNaN(v.getTime()) ? v : void 0,
3378
- fields: _(n),
3371
+ baselineEnd: _ && !isNaN(_.getTime()) ? _ : void 0,
3372
+ fields: v(n),
3379
3373
  data: n
3380
3374
  };
3381
3375
  }).filter((e) => !isNaN(e.start.getTime()) && !isNaN(e.end.getTime()));
@@ -3383,7 +3377,7 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3383
3377
  y,
3384
3378
  T,
3385
3379
  C
3386
- ]), xe = r(() => {
3380
+ ]), Se = r(() => {
3387
3381
  let e = T?.groupByField;
3388
3382
  if (!e) return;
3389
3383
  let t = C?.fields ?? {}, n = (e, t) => {
@@ -3413,7 +3407,7 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3413
3407
  label: r(i)
3414
3408
  };
3415
3409
  };
3416
- }, [T?.groupByField, C]), Se = r(() => {
3410
+ }, [T?.groupByField, C]), Ce = r(() => {
3417
3411
  let e = T?.assigneeField;
3418
3412
  if (!e) return;
3419
3413
  let t = C?.fields ?? {}, n = (e, t) => {
@@ -3443,19 +3437,19 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3443
3437
  label: r(i)
3444
3438
  };
3445
3439
  };
3446
- }, [T?.assigneeField, C]), Ce = r(() => {
3440
+ }, [T?.assigneeField, C]), we = r(() => {
3447
3441
  let e = T?.effortField;
3448
3442
  if (e) return (t) => {
3449
3443
  let n = t.data?.[e], r = Number(n);
3450
3444
  return Number.isFinite(r) && r > 0 ? r : 1;
3451
3445
  };
3452
- }, [T?.effortField]), we = r(() => {
3446
+ }, [T?.effortField]), Te = r(() => {
3453
3447
  let t = e.skipWeekends, n = e.holidays;
3454
3448
  if (!(!t && (!n || n.length === 0))) return {
3455
3449
  skipWeekends: !!t,
3456
3450
  holidays: n && n.length ? new Set(n) : void 0
3457
3451
  };
3458
- }, [e]), Te = r(() => Re(T?.timeSegments), [T?.timeSegments]), Ee = t((e, t) => {
3452
+ }, [e]), Ee = r(() => Be(T?.timeSegments), [T?.timeSegments]), De = t((e, t) => {
3459
3453
  if (!e || !t) return null;
3460
3454
  let n = e;
3461
3455
  for (let e of t.split(".")) {
@@ -3468,13 +3462,13 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3468
3462
  return String(e.id ?? e._id ?? e.value ?? e.name ?? "");
3469
3463
  }
3470
3464
  return String(n);
3471
- }, []), De = T?.quickFilters, [O, ke] = a({});
3465
+ }, []), Oe = T?.quickFilters, [Ae, je] = a({});
3472
3466
  n(() => {
3473
- if (!De?.length || !i || typeof i.find != "function") return;
3467
+ if (!Oe?.length || !i || typeof i.find != "function") return;
3474
3468
  let e = C?.fields ?? {}, t = !1;
3475
3469
  return (async () => {
3476
3470
  let n = {};
3477
- for (let t of De) {
3471
+ for (let t of Oe) {
3478
3472
  if (t.options) continue;
3479
3473
  let r = e[t.field] ?? e[t.field.split(".")[0]], a = r?.type;
3480
3474
  if (a !== "lookup" && a !== "master_detail") continue;
@@ -3489,7 +3483,7 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3489
3483
  console.warn(`[ObjectGantt] Failed to load quick-filter options for "${t.field}":`, e);
3490
3484
  }
3491
3485
  }
3492
- t || ke((e) => ({
3486
+ t || je((e) => ({
3493
3487
  ...e,
3494
3488
  ...n
3495
3489
  }));
@@ -3497,15 +3491,15 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3497
3491
  t = !0;
3498
3492
  };
3499
3493
  }, [
3500
- JSON.stringify(De),
3494
+ JSON.stringify(Oe),
3501
3495
  i,
3502
3496
  C
3503
3497
  ]);
3504
- let k = r(() => {
3505
- if (!De?.length) return [];
3498
+ let O = r(() => {
3499
+ if (!Oe?.length) return [];
3506
3500
  let e = C?.fields ?? {};
3507
- return De.map((t) => {
3508
- let n = e[t.field] ?? e[t.field.split(".")[0]], r = t.label ?? n?.label ?? fe(t.field), i = [];
3501
+ return Oe.map((t) => {
3502
+ let n = e[t.field] ?? e[t.field.split(".")[0]], r = t.label ?? n?.label ?? pe(t.field), i = [];
3509
3503
  if (t.options?.length) i = t.options.map((e) => typeof e == "object" ? {
3510
3504
  value: String(e.value),
3511
3505
  label: String(e.label ?? e.value)
@@ -3517,11 +3511,11 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3517
3511
  value: String(e.value ?? e),
3518
3512
  label: String(e.label ?? e.value ?? e)
3519
3513
  }));
3520
- else if (O[t.field]?.length) i = O[t.field];
3514
+ else if (Ae[t.field]?.length) i = Ae[t.field];
3521
3515
  else {
3522
3516
  let e = /* @__PURE__ */ new Map();
3523
3517
  for (let n of y) {
3524
- let r = Ee(n, t.field);
3518
+ let r = De(n, t.field);
3525
3519
  if (r != null && !e.has(r)) {
3526
3520
  let i = n;
3527
3521
  for (let e of t.field.split(".")) i = i?.[e];
@@ -3541,42 +3535,42 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3541
3535
  };
3542
3536
  });
3543
3537
  }, [
3544
- De,
3538
+ Oe,
3545
3539
  C,
3546
- O,
3540
+ Ae,
3547
3541
  y,
3548
- Ee
3549
- ]), [A, j] = a({}), M = t((e, t) => {
3550
- j((n) => ({
3542
+ De
3543
+ ]), [k, A] = a({}), Me = t((e, t) => {
3544
+ A((n) => ({
3551
3545
  ...n,
3552
3546
  [e]: t
3553
3547
  }));
3554
- }, []), Ae = t(() => j({}), []), N = r(() => {
3555
- let e = Object.entries(A).filter(([, e]) => e.length > 0);
3556
- return e.length ? be.filter((t) => e.every(([e, n]) => {
3557
- let r = Ee(t.data, e);
3548
+ }, []), j = t(() => A({}), []), Ne = r(() => {
3549
+ let e = Object.entries(k).filter(([, e]) => e.length > 0);
3550
+ return e.length ? xe.filter((t) => e.every(([e, n]) => {
3551
+ let r = De(t.data, e);
3558
3552
  return r != null && n.includes(r);
3559
- })) : be;
3553
+ })) : xe;
3560
3554
  }, [
3561
- be,
3562
- A,
3563
- Ee
3564
- ]), P = r(() => {
3565
- if (T?.autoZoomToFilter !== !1 || !be.length) return null;
3566
- let e = be[0].start.getTime(), t = be[0].end.getTime();
3567
- for (let n of be) e = Math.min(e, n.start.getTime()), t = Math.max(t, n.end.getTime());
3555
+ xe,
3556
+ k,
3557
+ De
3558
+ ]), M = r(() => {
3559
+ if (T?.autoZoomToFilter !== !1 || !xe.length) return null;
3560
+ let e = xe[0].start.getTime(), t = xe[0].end.getTime();
3561
+ for (let n of xe) e = Math.min(e, n.start.getTime()), t = Math.max(t, n.end.getTime());
3568
3562
  return {
3569
3563
  start: new Date(e),
3570
3564
  end: new Date(t)
3571
3565
  };
3572
- }, [be, T?.autoZoomToFilter]), je = e.navigation ?? {
3566
+ }, [xe, T?.autoZoomToFilter]), Pe = e.navigation ?? {
3573
3567
  mode: "drawer",
3574
3568
  width: "min(960px, 60vw)"
3575
- }, Me = je.mode === "drawer" || je.mode === "modal" || je.mode === "split" || je.mode === "popover", Ne = l({
3576
- navigation: je,
3569
+ }, Fe = Pe.mode === "drawer" || Pe.mode === "modal" || Pe.mode === "split" || Pe.mode === "popover", N = u({
3570
+ navigation: Pe,
3577
3571
  objectName: e.objectName,
3578
- onRowClick: Me ? void 0 : d
3579
- }), Pe = t(async (t, n) => {
3572
+ onRowClick: Fe ? void 0 : f
3573
+ }), P = t(async (t, n) => {
3580
3574
  if (!T) return;
3581
3575
  let r = w?.provider === "object" ? w.object : e.objectName;
3582
3576
  if (!r || !i || typeof i.update != "function") return;
@@ -3600,18 +3594,18 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3600
3594
  i,
3601
3595
  e.objectName,
3602
3596
  y
3603
- ]), Fe = (e, t) => {
3597
+ ]), Ie = (e, t) => {
3604
3598
  let n = t.some((e) => typeof e == "object" && e.type && e.type !== "fs");
3605
3599
  return !n && typeof e == "string" ? t.map((e) => String(typeof e == "object" ? e.id : e)).join(",") : n ? t.map((e) => typeof e == "object" ? e.type && e.type !== "fs" ? {
3606
3600
  id: e.id,
3607
3601
  type: e.type
3608
3602
  } : e.id : e) : t.map((e) => typeof e == "object" ? e.id : e);
3609
- }, Ie = t(async (t, n, r) => {
3603
+ }, Le = t(async (t, n, r) => {
3610
3604
  let a = T?.dependenciesField;
3611
3605
  if (!a) return;
3612
3606
  let o = w?.provider === "object" ? w.object : e.objectName;
3613
3607
  if (!o || !i || typeof i.update != "function") return;
3614
- let s = Fe(n, r), c = y;
3608
+ let s = Ie(n, r), c = y;
3615
3609
  b((e) => e.map((e) => String(e.id ?? e._id) === String(t) ? {
3616
3610
  ...e,
3617
3611
  [a]: s
@@ -3627,65 +3621,65 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3627
3621
  i,
3628
3622
  e.objectName,
3629
3623
  y
3630
- ]), F = t(async (e, t, n = "fs") => {
3624
+ ]), Re = t(async (e, t, n = "fs") => {
3631
3625
  let r = e.data?.id ?? e.data?._id ?? e.id, i = t.data?.id ?? t.data?._id ?? t.id;
3632
3626
  if (r == null || i == null) return;
3633
3627
  let a = T?.dependenciesField;
3634
3628
  if (!a) return;
3635
- let o = y.find((e) => String(e.id ?? e._id) === String(i))?.[a], s = xt(o), c = (e) => String(typeof e == "object" ? e.id : e), l = s.find((e) => c(e) === String(r)), u = l && typeof l == "object" ? l.type ?? "fs" : "fs";
3629
+ let o = y.find((e) => String(e.id ?? e._id) === String(i))?.[a], s = St(o), c = (e) => String(typeof e == "object" ? e.id : e), l = s.find((e) => c(e) === String(r)), u = l && typeof l == "object" ? l.type ?? "fs" : "fs";
3636
3630
  if (l && u === n) return;
3637
3631
  let d = n === "fs" ? r : {
3638
3632
  id: r,
3639
3633
  type: n
3640
3634
  };
3641
- await Ie(i, o, l ? s.map((e) => c(e) === String(r) ? d : e) : [...s, d]);
3635
+ await Le(i, o, l ? s.map((e) => c(e) === String(r) ? d : e) : [...s, d]);
3642
3636
  }, [
3643
3637
  T,
3644
3638
  y,
3645
- Ie
3646
- ]), Le = t(async (e, t) => {
3639
+ Le
3640
+ ]), ze = t(async (e, t) => {
3647
3641
  let n = e.data?.id ?? e.data?._id ?? e.id, r = t.data?.id ?? t.data?._id ?? t.id;
3648
3642
  if (n == null || r == null) return;
3649
3643
  let i = T?.dependenciesField;
3650
3644
  if (!i) return;
3651
- let a = y.find((e) => String(e.id ?? e._id) === String(r))?.[i], o = xt(a), s = (e) => String(typeof e == "object" ? e.id : e), c = o.filter((e) => s(e) !== String(n));
3652
- c.length !== o.length && await Ie(r, a, c);
3645
+ let a = y.find((e) => String(e.id ?? e._id) === String(r))?.[i], o = St(a), s = (e) => String(typeof e == "object" ? e.id : e), c = o.filter((e) => s(e) !== String(n));
3646
+ c.length !== o.length && await Le(r, a, c);
3653
3647
  }, [
3654
3648
  T,
3655
3649
  y,
3656
- Ie
3657
- ]), [I, ze] = a(null), [Be, Ve] = a(!1), He = t((e) => {
3658
- ze(e);
3659
- }, []), Ue = t(async () => {
3660
- if (!I) return;
3650
+ Le
3651
+ ]), [F, Ve] = a(null), [I, He] = a(!1), Ue = t((e) => {
3652
+ Ve(e);
3653
+ }, []), We = t(async () => {
3654
+ if (!F) return;
3661
3655
  let t = w?.provider === "object" ? w.object : e.objectName;
3662
3656
  if (!t || !i?.delete) {
3663
- ze(null);
3657
+ Ve(null);
3664
3658
  return;
3665
3659
  }
3666
- let n = I.data?.id ?? I.data?._id ?? I.id;
3660
+ let n = F.data?.id ?? F.data?._id ?? F.id;
3667
3661
  if (n == null) {
3668
- ze(null);
3662
+ Ve(null);
3669
3663
  return;
3670
3664
  }
3671
- Ve(!0);
3665
+ He(!0);
3672
3666
  let r = y;
3673
3667
  b((e) => e.filter((e) => String(e.id ?? e._id) !== String(n)));
3674
3668
  try {
3675
- await i.delete(t, String(n)), ze(null);
3669
+ await i.delete(t, String(n)), Ve(null);
3676
3670
  } catch (e) {
3677
- console.error("[ObjectGantt] Failed to delete:", e), b(r), ze(null);
3671
+ console.error("[ObjectGantt] Failed to delete:", e), b(r), Ve(null);
3678
3672
  } finally {
3679
- Ve(!1);
3673
+ He(!1);
3680
3674
  }
3681
3675
  }, [
3682
- I,
3676
+ F,
3683
3677
  w,
3684
3678
  i,
3685
3679
  e.objectName,
3686
3680
  y
3687
3681
  ]);
3688
- return oe ? /* @__PURE__ */ E("div", {
3682
+ return se ? /* @__PURE__ */ E("div", {
3689
3683
  className: o,
3690
3684
  children: /* @__PURE__ */ E("div", {
3691
3685
  className: "flex items-center justify-center h-96",
@@ -3694,25 +3688,25 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3694
3688
  children: "Loading Gantt chart..."
3695
3689
  })
3696
3690
  })
3697
- }) : me ? /* @__PURE__ */ E("div", {
3691
+ }) : he ? /* @__PURE__ */ E("div", {
3698
3692
  className: o,
3699
3693
  children: /* @__PURE__ */ E("div", {
3700
3694
  className: "flex items-center justify-center h-96",
3701
3695
  children: /* @__PURE__ */ D("div", {
3702
3696
  className: "text-destructive",
3703
- children: ["Error: ", me.message]
3697
+ children: ["Error: ", he.message]
3704
3698
  })
3705
3699
  })
3706
3700
  }) : T ? /* @__PURE__ */ D("div", {
3707
3701
  className: o,
3708
3702
  children: [
3709
- k.length > 0 && /* @__PURE__ */ E(vt, {
3710
- filters: k,
3711
- value: A,
3712
- onChange: M,
3713
- onClear: Ae,
3714
- resultCount: N.length,
3715
- totalCount: be.length,
3703
+ O.length > 0 && /* @__PURE__ */ E(yt, {
3704
+ filters: O,
3705
+ value: k,
3706
+ onChange: Me,
3707
+ onClear: j,
3708
+ resultCount: Ne.length,
3709
+ totalCount: xe.length,
3716
3710
  labels: {
3717
3711
  all: "全部",
3718
3712
  clear: "清除筛选",
@@ -3722,53 +3716,53 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3722
3716
  }),
3723
3717
  /* @__PURE__ */ E("div", {
3724
3718
  className: "h-[calc(100vh-200px)] min-h-[600px]",
3725
- children: T?.resourceView && Se ? /* @__PURE__ */ E(pt, {
3726
- tasks: N,
3727
- assignee: Se,
3728
- effort: Ce,
3719
+ children: T?.resourceView && Ce ? /* @__PURE__ */ E(z, {
3720
+ tasks: Ne,
3721
+ assignee: Ce,
3722
+ effort: we,
3729
3723
  capacity: T?.capacity ?? 1,
3730
3724
  viewMode: e.viewMode || "day"
3731
- }) : /* @__PURE__ */ E(L, {
3732
- tasks: N,
3733
- startDate: P?.start,
3734
- endDate: P?.end,
3725
+ }) : /* @__PURE__ */ E(st, {
3726
+ tasks: Ne,
3727
+ startDate: M?.start,
3728
+ endDate: M?.end,
3735
3729
  onTaskClick: (e) => {
3736
- Ne.handleClick(e.data), u?.(e.data);
3730
+ N.handleClick(e.data), d?.(e.data);
3737
3731
  },
3738
- onTaskUpdate: Pe,
3739
- onTaskDelete: He,
3740
- onDependencyCreate: T?.dependenciesField ? F : void 0,
3741
- onDependencyDelete: T?.dependenciesField ? Le : void 0,
3732
+ onTaskUpdate: P,
3733
+ onTaskDelete: Ue,
3734
+ onDependencyCreate: T?.dependenciesField ? Re : void 0,
3735
+ onDependencyDelete: T?.dependenciesField ? ze : void 0,
3742
3736
  markers: e.markers,
3743
3737
  autoSchedule: !!T?.dependenciesField,
3744
3738
  rescheduleOnConflict: !!T?.dependenciesField,
3745
3739
  criticalPathDefault: !!e.criticalPath,
3746
- workingCalendar: we,
3747
- shiftSegments: Te,
3740
+ workingCalendar: Te,
3741
+ shiftSegments: Ee,
3748
3742
  showBaselines: e.showBaselines !== !1,
3749
3743
  readOnly: !!e.readOnly,
3750
3744
  mobileReadOnly: e.mobileReadOnly !== !1,
3751
3745
  persistLayoutKey: e.persistLayout === !1 ? void 0 : `${e.objectName || (w?.provider === "object" ? w.object : "") || "gantt"}:${e.viewName || "default"}`,
3752
- groupBy: xe,
3746
+ groupBy: Se,
3753
3747
  defaultCollapsedDepth: T?.defaultCollapsedDepth,
3754
3748
  inlineEdit: !0
3755
3749
  })
3756
3750
  }),
3757
- Ne.isOverlay && Ne.isOpen && Ne.selectedRecord && (() => {
3758
- let t = w?.provider === "object" ? w.object : e.objectName, n = Ne.selectedRecord, r = n.id ?? n._id;
3751
+ N.isOverlay && N.isOpen && N.selectedRecord && (() => {
3752
+ let t = w?.provider === "object" ? w.object : e.objectName, n = N.selectedRecord, r = n.id ?? n._id;
3759
3753
  if (!t || r == null) return null;
3760
3754
  let a = T?.titleField ? String(n[T.titleField] ?? "Task Details") : "Task Details";
3761
- return /* @__PURE__ */ E(h, {
3755
+ return /* @__PURE__ */ E(g, {
3762
3756
  open: !0,
3763
- onClose: Ne.close,
3757
+ onClose: N.close,
3764
3758
  title: a,
3765
3759
  record: n,
3766
3760
  objectName: t,
3767
3761
  recordId: r,
3768
3762
  dataSource: i,
3769
3763
  objectSchema: C,
3770
- width: Ne.width,
3771
- fullPageHref: g(t, r) ?? void 0,
3764
+ width: N.width,
3765
+ fullPageHref: ee(t, r) ?? void 0,
3772
3766
  onFieldSave: async (e, n) => {
3773
3767
  i?.update && (await i.update(t, String(r), { [e]: n }), b((t) => t.map((t) => String(t.id ?? t._id) === String(r) ? {
3774
3768
  ...t,
@@ -3780,26 +3774,26 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3780
3774
  }
3781
3775
  });
3782
3776
  })(),
3783
- /* @__PURE__ */ E(ee, {
3784
- open: !!I,
3777
+ /* @__PURE__ */ E(_, {
3778
+ open: !!F,
3785
3779
  onOpenChange: (e) => {
3786
- !e && !Be && ze(null);
3780
+ !e && !I && Ve(null);
3787
3781
  },
3788
- children: /* @__PURE__ */ D(te, { children: [/* @__PURE__ */ D(ie, { children: [/* @__PURE__ */ E(ae, { children: "Delete this task?" }), /* @__PURE__ */ E(ne, { children: I ? /* @__PURE__ */ D(Oe, { children: [
3782
+ children: /* @__PURE__ */ D(ne, { children: [/* @__PURE__ */ D(ae, { children: [/* @__PURE__ */ E(oe, { children: "Delete this task?" }), /* @__PURE__ */ E(re, { children: F ? /* @__PURE__ */ D(ke, { children: [
3789
3783
  "\"",
3790
- I.title,
3784
+ F.title,
3791
3785
  "\" will be permanently removed. This action cannot be undone."
3792
- ] }) : null })] }), /* @__PURE__ */ D(re, { children: [/* @__PURE__ */ E(v, {
3793
- disabled: Be,
3786
+ ] }) : null })] }), /* @__PURE__ */ D(ie, { children: [/* @__PURE__ */ E(te, {
3787
+ disabled: I,
3794
3788
  children: "Cancel"
3795
- }), /* @__PURE__ */ E(_, {
3789
+ }), /* @__PURE__ */ E(v, {
3796
3790
  onClick: (e) => {
3797
- e.preventDefault(), Ue();
3791
+ e.preventDefault(), We();
3798
3792
  },
3799
- disabled: Be,
3793
+ disabled: I,
3800
3794
  "data-testid": "gantt-delete-confirm",
3801
3795
  className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
3802
- children: Be ? "Deleting…" : "Delete"
3796
+ children: I ? "Deleting…" : "Delete"
3803
3797
  })] })] })
3804
3798
  })
3805
3799
  ]
@@ -3813,14 +3807,14 @@ var wt = ({ schema: e, dataSource: i, className: o, onTaskClick: u, onRowClick:
3813
3807
  })
3814
3808
  })
3815
3809
  });
3816
- }, Tt = ({ schema: e }) => {
3817
- let { dataSource: t } = d() || {};
3818
- return /* @__PURE__ */ E(wt, {
3810
+ }, H = ({ schema: e }) => {
3811
+ let { dataSource: t } = f() || {};
3812
+ return /* @__PURE__ */ E(Tt, {
3819
3813
  schema: e,
3820
3814
  dataSource: t
3821
3815
  });
3822
3816
  };
3823
- o.register("object-gantt", Tt, {
3817
+ o.register("object-gantt", H, {
3824
3818
  namespace: "plugin-gantt",
3825
3819
  label: "Object Gantt",
3826
3820
  category: "view",
@@ -3835,7 +3829,7 @@ o.register("object-gantt", Tt, {
3835
3829
  label: "Gantt Config",
3836
3830
  description: "startDateField, endDateField, titleField, progressField, percentageField, colorField, dependenciesField"
3837
3831
  }]
3838
- }), o.register("gantt", Tt, {
3832
+ }), o.register("gantt", H, {
3839
3833
  namespace: "view",
3840
3834
  label: "Gantt View",
3841
3835
  category: "view",
@@ -3852,4 +3846,4 @@ o.register("object-gantt", Tt, {
3852
3846
  }]
3853
3847
  });
3854
3848
  //#endregion
3855
- export { L as GanttView, wt as ObjectGantt, Tt as ObjectGanttRenderer, vt as QuickFilterBar, pt as ResourceWorkload, Be as bandAt, ct as computeWorkload, xt as normalizeDependencies, Re as normalizeShiftSegments, yt as normalizeTaskType, I as parseHHMM, ze as shiftDayStart };
3849
+ export { st as GanttView, Tt as ObjectGantt, H as ObjectGanttRenderer, yt as QuickFilterBar, z as ResourceWorkload, I as bandAt, lt as computeWorkload, St as normalizeDependencies, Be as normalizeShiftSegments, bt as normalizeTaskType, F as parseHHMM, Ve as shiftDayStart };