iris-gantt 1.4.6 → 1.4.7

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/README.md CHANGED
@@ -2,7 +2,21 @@
2
2
 
3
3
  A comprehensive, production-ready Gantt chart component built with React and TypeScript. Easy to install, simple to use, fully customizable, and responsive.
4
4
 
5
- ## 🆕 Version 1.4.6 (Latest)
5
+ ## 🆕 Version 1.4.7 (Latest)
6
+
7
+ ### Bug Fixes
8
+ - **OnHold grey lines now render with project API data** — Fixed a bug where on-hold grey bars were not visible when tasks used API field names (`workGroupName`, `plannedStartDate`, `plannedEndDate`). The normalizer now recognises these aliases, so dates are correctly resolved and the hold period overlap is detected.
9
+
10
+ ### New API Field Aliases
11
+ The `tasks` prop now accepts the following additional field names used by common project APIs:
12
+
13
+ | New alias | Maps to |
14
+ |---|---|
15
+ | `workGroupName` | Task display name |
16
+ | `plannedStartDate` | Task bar start date |
17
+ | `plannedEndDate` | Task bar end date |
18
+
19
+ ## 🔖 Version 1.4.6
6
20
 
7
21
  ### Bug Fixes
8
22
  - **Baselines now show by default** — Fixed a critical bug where baselines were not rendering because the `config` spread was overriding the default `baselines: true` with `undefined`. Baselines are now always enabled unless you explicitly pass `config={{ baselines: false }}`.
@@ -10,9 +24,9 @@ A comprehensive, production-ready Gantt chart component built with React and Typ
10
24
 
11
25
  ### Improvements
12
26
  - **Project-level OnHold applied to all tasks** — The `onHoldPeriods` / `on_hold_periods` prop now propagates the grey hatched on-hold bar to **all** task rows including `project`-type tasks. Previously, only child/standalone tasks showed the hold bar; now the entire project hierarchy displays it consistently.
13
- - **Same-height on-hold bars** — The grey on-hold period bar is now the same height (28px) as the task bar. It no longer appears as a smaller overlay on top of the task bar; instead, both bars sit at the same level with the colored task segments in front and the grey hatched hold area behind.
27
+ - **Same-height on-hold bars** — The grey on-hold period bar is now the same height (28px) as the task bar.
14
28
  - **Tasks continue after hold period** — When a project resumes after an on-hold period, all affected tasks continue in sequence after the hold, and remaining days are extended automatically.
15
- - **No hover enlarge/scale effect** — Task bars no longer scale up or brighten on hover. They remain at their original size and appearance, preventing visual overlap with adjacent bars.
29
+ - **No hover enlarge/scale effect** — Task bars no longer scale up or brighten on hover.
16
30
 
17
31
  ## 🔖 Version 1.4.2
18
32
 
@@ -218,8 +232,8 @@ Each task can override the global `taskTooltipConfig` with its own `tooltipConfi
218
232
  ```
219
233
 
220
234
  API-friendly task aliases accepted in `tasks`:
221
- - Name: `text`, `name`, `title`, `taskName`, `task_name`
222
- - Timeline dates: `start`, `startDate`, `start_date`, `end`, `endDate`, `end_date`
235
+ - Name: `text`, `name`, `title`, `taskName`, `task_name`, `workGroupName`
236
+ - Timeline dates: `start`, `startDate`, `start_date`, `plannedStartDate`, `end`, `endDate`, `end_date`, `plannedEndDate`
223
237
  - Planned dates: `plannedStart`, `planned_start`, `planned_start_date`, `plannedEnd`, `planned_end`, `planned_end_date`
224
238
  - Actual dates: `actualStart`, `actual_start`, `actual_start_date`, `actualEnd`, `actual_end`, `actual_end_date`
225
239
  - Status: `status`, `currentStatus`, `current_status`
@@ -1 +1 @@
1
- {"version":3,"file":"Gantt.d.ts","sourceRoot":"","sources":["../../src/components/Gantt/Gantt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAQ3D,OAAO,KAAK,EAAE,WAAW,EAA4B,QAAQ,EAAiB,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQhJ,OAAO,KAAK,EAEV,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,eAAe,EACf,iBAAiB,EAEjB,iBAAiB,EACjB,qBAAqB,EAEtB,MAAM,SAAS,CAAC;AACjB,OAAO,aAAa,CAAC;AAErB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACtC,iBAAiB,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/C,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACpC,eAAe,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IACnE,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAGxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACnC;AA+aD,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAixBtC,CAAC"}
1
+ {"version":3,"file":"Gantt.d.ts","sourceRoot":"","sources":["../../src/components/Gantt/Gantt.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAQ3D,OAAO,KAAK,EAAE,WAAW,EAA4B,QAAQ,EAAiB,aAAa,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAQhJ,OAAO,KAAK,EAEV,IAAI,EACJ,SAAS,EACT,IAAI,EACJ,eAAe,EACf,iBAAiB,EAEjB,iBAAiB,EACjB,qBAAqB,EAEtB,MAAM,SAAS,CAAC;AACjB,OAAO,aAAa,CAAC;AAErB,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAClC,WAAW,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACtC,iBAAiB,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC/C,aAAa,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACpC,eAAe,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACtC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,EAAE,eAAe,KAAK,IAAI,CAAC;IACnE,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAGxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CACnC;AAwbD,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,CAixBtC,CAAC"}
@@ -52,12 +52,15 @@ export interface TaskInput extends Omit<Task, 'id' | 'text' | 'start' | 'end' |
52
52
  title?: string;
53
53
  taskName?: string;
54
54
  task_name?: string;
55
+ workGroupName?: string;
55
56
  start?: DateInput;
56
57
  end?: DateInput;
57
58
  startDate?: DateInput;
58
59
  start_date?: DateInput;
59
60
  endDate?: DateInput;
60
61
  end_date?: DateInput;
62
+ plannedStartDate?: DateInput;
63
+ plannedEndDate?: DateInput;
61
64
  plannedStart?: DateInput;
62
65
  plannedEnd?: DateInput;
63
66
  planned_start?: DateInput;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/Gantt/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/components/Gantt/types.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- import q, { useState as H, memo as ur, forwardRef as zt, useCallback as Fe, useEffect as Ve, useRef as We } from "react";
2
- import { Typography as Gt, Select as ve, InputNumber as Ce, Button as ye, Popover as pr, Tooltip as ke, Input as Ye, Space as Ct, Divider as Jt, Form as pe, Modal as Tt, DatePicker as Kt, ColorPicker as Zt, Alert as hr, Card as Bt, List as kt, Tag as mr, Menu as fr } from "antd";
1
+ import G, { useState as H, memo as ur, forwardRef as zt, useCallback as Fe, useEffect as Ve, useRef as We } from "react";
2
+ import { Typography as qt, Select as ve, InputNumber as Ce, Button as ye, Popover as pr, Tooltip as ke, Input as Ye, Space as Ct, Divider as Jt, Form as pe, Modal as Tt, DatePicker as Kt, ColorPicker as Zt, Alert as hr, Card as Bt, List as kt, Tag as mr, Menu as fr } from "antd";
3
3
  import { FontAwesomeIcon as ge } from "@fortawesome/react-fontawesome";
4
4
  import { faChevronDown as Wt, faPlus as It, faGripVertical as gr, faChevronRight as xr, faTimesCircle as yr, faSearchMinus as wr, faSearchPlus as br, faRotateLeft as Qt, faFileCsv as Sr, faFileExcel as vr, faFileCode as jr, faFilePdf as Tr, faExclamationTriangle as Dr, faLink as er, faTrash as tr, faInfoCircle as Mr, faEdit as Er, faCopy as Lr, faFlag as Fr, faTasks as Rr, faFolder as Pr } from "@fortawesome/free-solid-svg-icons";
5
5
  import rr from "dayjs";
@@ -8,7 +8,7 @@ var Ht;
8
8
  function Nr() {
9
9
  if (Ht) return ct;
10
10
  Ht = 1;
11
- var e = q, o = /* @__PURE__ */ Symbol.for("react.element"), a = /* @__PURE__ */ Symbol.for("react.fragment"), s = Object.prototype.hasOwnProperty, n = e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, h = { key: !0, ref: !0, __self: !0, __source: !0 };
11
+ var e = G, o = /* @__PURE__ */ Symbol.for("react.element"), a = /* @__PURE__ */ Symbol.for("react.fragment"), s = Object.prototype.hasOwnProperty, n = e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, h = { key: !0, ref: !0, __self: !0, __source: !0 };
12
12
  function g(d, l, x) {
13
13
  var p, w = {}, M = null, y = null;
14
14
  x !== void 0 && (M = "" + x), l.key !== void 0 && (M = "" + l.key), l.ref !== void 0 && (y = l.ref);
@@ -22,7 +22,7 @@ var ut = {};
22
22
  var Vt;
23
23
  function $r() {
24
24
  return Vt || (Vt = 1, process.env.NODE_ENV !== "production" && (function() {
25
- var e = q, o = /* @__PURE__ */ Symbol.for("react.element"), a = /* @__PURE__ */ Symbol.for("react.portal"), s = /* @__PURE__ */ Symbol.for("react.fragment"), n = /* @__PURE__ */ Symbol.for("react.strict_mode"), h = /* @__PURE__ */ Symbol.for("react.profiler"), g = /* @__PURE__ */ Symbol.for("react.provider"), d = /* @__PURE__ */ Symbol.for("react.context"), l = /* @__PURE__ */ Symbol.for("react.forward_ref"), x = /* @__PURE__ */ Symbol.for("react.suspense"), p = /* @__PURE__ */ Symbol.for("react.suspense_list"), w = /* @__PURE__ */ Symbol.for("react.memo"), M = /* @__PURE__ */ Symbol.for("react.lazy"), y = /* @__PURE__ */ Symbol.for("react.offscreen"), D = Symbol.iterator, b = "@@iterator";
25
+ var e = G, o = /* @__PURE__ */ Symbol.for("react.element"), a = /* @__PURE__ */ Symbol.for("react.portal"), s = /* @__PURE__ */ Symbol.for("react.fragment"), n = /* @__PURE__ */ Symbol.for("react.strict_mode"), h = /* @__PURE__ */ Symbol.for("react.profiler"), g = /* @__PURE__ */ Symbol.for("react.provider"), d = /* @__PURE__ */ Symbol.for("react.context"), l = /* @__PURE__ */ Symbol.for("react.forward_ref"), x = /* @__PURE__ */ Symbol.for("react.suspense"), p = /* @__PURE__ */ Symbol.for("react.suspense_list"), w = /* @__PURE__ */ Symbol.for("react.memo"), M = /* @__PURE__ */ Symbol.for("react.lazy"), y = /* @__PURE__ */ Symbol.for("react.offscreen"), D = Symbol.iterator, b = "@@iterator";
26
26
  function P(r) {
27
27
  if (r === null || typeof r != "object")
28
28
  return null;
@@ -66,7 +66,7 @@ function $r() {
66
66
  function z(r) {
67
67
  return r.displayName || "Context";
68
68
  }
69
- function G(r) {
69
+ function q(r) {
70
70
  if (r == null)
71
71
  return null;
72
72
  if (typeof r.tag == "number" && f("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), typeof r == "function")
@@ -99,11 +99,11 @@ function $r() {
99
99
  return j(r, r.render, "ForwardRef");
100
100
  case w:
101
101
  var T = r.displayName || null;
102
- return T !== null ? T : G(r.type) || "Memo";
102
+ return T !== null ? T : q(r.type) || "Memo";
103
103
  case M: {
104
104
  var R = r, A = R._payload, O = R._init;
105
105
  try {
106
- return G(O(A));
106
+ return q(O(A));
107
107
  } catch {
108
108
  return null;
109
109
  }
@@ -460,7 +460,7 @@ function $r() {
460
460
  function bt() {
461
461
  {
462
462
  if (ot.current) {
463
- var r = G(ot.current.type);
463
+ var r = q(ot.current.type);
464
464
  if (r)
465
465
  return `
466
466
 
@@ -472,7 +472,7 @@ Check the render method of \`` + r + "`.";
472
472
  function Ft(r) {
473
473
  return "";
474
474
  }
475
- var qe = {};
475
+ var Ge = {};
476
476
  function Rt(r) {
477
477
  {
478
478
  var i = bt();
@@ -491,11 +491,11 @@ Check the top-level render call using <` + m + ">.");
491
491
  return;
492
492
  r._store.validated = !0;
493
493
  var m = Rt(i);
494
- if (qe[m])
494
+ if (Ge[m])
495
495
  return;
496
- qe[m] = !0;
496
+ Ge[m] = !0;
497
497
  var T = "";
498
- r && r._owner && r._owner !== ot.current && (T = " It was passed a child from " + G(r._owner.type) + "."), Pe(r), f('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', m, T), Pe(null);
498
+ r && r._owner && r._owner !== ot.current && (T = " It was passed a child from " + q(r._owner.type) + "."), Pe(r), f('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', m, T), Pe(null);
499
499
  }
500
500
  }
501
501
  function St(r, i) {
@@ -517,7 +517,7 @@ Check the top-level render call using <` + m + ">.");
517
517
  }
518
518
  }
519
519
  }
520
- function Ge(r) {
520
+ function qe(r) {
521
521
  {
522
522
  var i = r.type;
523
523
  if (i == null || typeof i == "string")
@@ -532,11 +532,11 @@ Check the top-level render call using <` + m + ">.");
532
532
  else
533
533
  return;
534
534
  if (m) {
535
- var T = G(i);
535
+ var T = q(i);
536
536
  Be(m, r.props, "prop", T, r);
537
537
  } else if (i.PropTypes !== void 0 && !Ae) {
538
538
  Ae = !0;
539
- var R = G(i);
539
+ var R = q(i);
540
540
  f("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", R || "Unknown");
541
541
  }
542
542
  typeof i.getDefaultProps == "function" && !i.getDefaultProps.isReactClassApproved && f("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.");
@@ -564,7 +564,7 @@ Check the top-level render call using <` + m + ">.");
564
564
  var he = Ft();
565
565
  he ? C += he : C += bt();
566
566
  var ae;
567
- r === null ? ae = "null" : Re(r) ? ae = "array" : r !== void 0 && r.$$typeof === o ? (ae = "<" + (G(r.type) || "Unknown") + " />", C = " Did you accidentally export a JSX literal instead of a component?") : ae = typeof r, f("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", ae, C);
567
+ r === null ? ae = "null" : Re(r) ? ae = "array" : r !== void 0 && r.$$typeof === o ? (ae = "<" + (q(r.type) || "Unknown") + " />", C = " Did you accidentally export a JSX literal instead of a component?") : ae = typeof r, f("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", ae, C);
568
568
  }
569
569
  var Q = Lt(r, i, m, R, A);
570
570
  if (Q == null)
@@ -583,7 +583,7 @@ Check the top-level render call using <` + m + ">.");
583
583
  St(Te, r);
584
584
  }
585
585
  if (ne.call(i, "key")) {
586
- var Ne = G(r), be = Object.keys(i).filter(function(Ot) {
586
+ var Ne = q(r), be = Object.keys(i).filter(function(Ot) {
587
587
  return Ot !== "key";
588
588
  }), K = be.length > 0 ? "{key: someKey, " + be.join(": ..., ") + ": ...}" : "{key: someKey}";
589
589
  if (!it[Ne + K]) {
@@ -596,7 +596,7 @@ React keys must be passed directly to JSX without using spread:
596
596
  <%s key={someKey} {...props} />`, K, Ne, dt, Ne), it[Ne + K] = !0;
597
597
  }
598
598
  }
599
- return r === s ? vt(Q) : Ge(Q), Q;
599
+ return r === s ? vt(Q) : qe(Q), Q;
600
600
  }
601
601
  }
602
602
  function Pt(r, i, m) {
@@ -663,7 +663,7 @@ const we = (e, o, a) => {
663
663
  }, Ut = (e) => {
664
664
  const o = e.getDay();
665
665
  return o === 0 || o === 6;
666
- }, qt = (e, o) => o.some(
666
+ }, Gt = (e, o) => o.some(
667
667
  (a) => a.getFullYear() === e.getFullYear() && a.getMonth() === e.getMonth() && a.getDate() === e.getDate()
668
668
  ), Ze = (e) => {
669
669
  const o = new Date(e);
@@ -837,7 +837,7 @@ const Qe = (e) => e ? {
837
837
  lineHeight: e.lineHeight || 1.5714285714285714,
838
838
  color: e.fontColor || "rgba(0, 0, 0, 0.88)"
839
839
  }
840
- } : {}, { Text: Me, Paragraph: zr } = Gt, { Option: ze } = ve, Ir = ({
840
+ } : {}, { Text: Me, Paragraph: zr } = qt, { Option: ze } = ve, Ir = ({
841
841
  task: e,
842
842
  allTasks: o,
843
843
  links: a,
@@ -847,7 +847,7 @@ const Qe = (e) => e ? {
847
847
  children: g,
848
848
  styleConfig: d
849
849
  }) => {
850
- const l = Qe(d), [x, p] = H(!1), [w, M] = H(null), [y, D] = H("e2s"), [b, P] = H("lag"), [S, f] = H(0), [k, V] = H(e.duration), [B, $] = H(!0), W = "day", E = a.find((_) => _.target === e.id), U = !!E, Y = q.useMemo(() => o.length === 0 ? /* @__PURE__ */ new Date() : new Date(Math.min(...o.map((_) => _.start.getTime()))), [o]), j = () => {
850
+ const l = Qe(d), [x, p] = H(!1), [w, M] = H(null), [y, D] = H("e2s"), [b, P] = H("lag"), [S, f] = H(0), [k, V] = H(e.duration), [B, $] = H(!0), W = "day", E = a.find((_) => _.target === e.id), U = !!E, Y = G.useMemo(() => o.length === 0 ? /* @__PURE__ */ new Date() : new Date(Math.min(...o.map((_) => _.start.getTime()))), [o]), j = () => {
851
851
  if (w) {
852
852
  const _ = b === "lag" ? S : -S, ce = _t(_, W);
853
853
  if (k !== e.duration && h) {
@@ -862,7 +862,7 @@ const Qe = (e) => e ? {
862
862
  }
863
863
  }, z = () => {
864
864
  M(null), D("e2s"), P("lag"), f(0), V(e.duration);
865
- }, G = () => {
865
+ }, q = () => {
866
866
  E && n && (n(E.id), p(!1), z());
867
867
  }, ee = (_) => {
868
868
  if (p(_), _) {
@@ -1072,7 +1072,7 @@ const Qe = (e) => e ? {
1072
1072
  ye,
1073
1073
  {
1074
1074
  danger: !0,
1075
- onClick: G,
1075
+ onClick: q,
1076
1076
  style: {
1077
1077
  ...l.buttonDanger
1078
1078
  },
@@ -1109,9 +1109,9 @@ const Qe = (e) => e ? {
1109
1109
  );
1110
1110
  }, nr = ur(zt(
1111
1111
  ({ tasks: e, allTasks: o = [], columns: a, selectedTask: s, onTaskClick: n, onTaskContextMenu: h, onTaskUpdate: g, onTaskDragStart: d, onAddTask: l, onAddDependency: x, onRemoveDependency: p, links: w = [], dropIndicator: M, reorderTask: y, styleConfig: D }, b) => {
1112
- const P = q.useRef(null);
1113
- q.useImperativeHandle(b, () => P.current);
1114
- const [S, f] = q.useState(null), [k, V] = q.useState(0), B = (E, U = 0) => {
1112
+ const P = G.useRef(null);
1113
+ G.useImperativeHandle(b, () => P.current);
1114
+ const [S, f] = G.useState(null), [k, V] = G.useState(0), B = (E, U = 0) => {
1115
1115
  if (!E.parent) return U;
1116
1116
  const Y = e.find((j) => j.id === E.parent);
1117
1117
  return Y ? B(Y, U + 1) : U;
@@ -1199,7 +1199,7 @@ const Qe = (e) => e ? {
1199
1199
  task: E,
1200
1200
  allTasks: o,
1201
1201
  links: w,
1202
- onAddDependency: (z, G, ee, Z) => x?.(z, G, ee, Z),
1202
+ onAddDependency: (z, q, ee, Z) => x?.(z, q, ee, Z),
1203
1203
  onRemoveDependency: (z) => p?.(z),
1204
1204
  onTaskUpdate: g,
1205
1205
  styleConfig: D,
@@ -1215,7 +1215,7 @@ const Qe = (e) => e ? {
1215
1215
  gap: "4px"
1216
1216
  },
1217
1217
  children: j ? (() => {
1218
- const z = o.find((ee) => ee.id === j.source), G = z ? o.indexOf(z) + 1 : 0;
1218
+ const z = o.find((ee) => ee.id === j.source), q = z ? o.indexOf(z) + 1 : 0;
1219
1219
  return /* @__PURE__ */ t.jsx(
1220
1220
  "span",
1221
1221
  {
@@ -1228,7 +1228,7 @@ const Qe = (e) => e ? {
1228
1228
  borderRadius: "4px",
1229
1229
  whiteSpace: "nowrap"
1230
1230
  },
1231
- children: _r(j, G)
1231
+ children: _r(j, q)
1232
1232
  }
1233
1233
  );
1234
1234
  })() : /* @__PURE__ */ t.jsx(
@@ -1446,7 +1446,7 @@ const Yr = ({
1446
1446
  ), j = P(
1447
1447
  f?.actualEndAccessor?.(e) ?? e.actualEnd ?? e.end,
1448
1448
  e.end
1449
- ), z = f?.actualDatesFormatter ? f.actualDatesFormatter(Y, j, e) : `${Se(Y, k)} - ${Se(j, k)}`, G = f?.statusAccessor?.(e) ?? e.status, ee = G != null ? String(G) : "", Z = f?.statusFormatter ? f.statusFormatter(ee, e) : ee ? ee.replace(/-/g, " ") : f?.emptyStatusText || "Not set", J = f?.ownerAccessor?.(e) ?? e.owner, ie = J != null ? String(J).trim() : "", _ = ie ? f?.ownerFormatter ? f.ownerFormatter(ie, e) : ie : f?.emptyOwnerText || "", ce = p.length > 0 ? p : e.dependencyRule || [], me = S(
1449
+ ), z = f?.actualDatesFormatter ? f.actualDatesFormatter(Y, j, e) : `${Se(Y, k)} - ${Se(j, k)}`, q = f?.statusAccessor?.(e) ?? e.status, ee = q != null ? String(q) : "", Z = f?.statusFormatter ? f.statusFormatter(ee, e) : ee ? ee.replace(/-/g, " ") : f?.emptyStatusText || "Not set", J = f?.ownerAccessor?.(e) ?? e.owner, ie = J != null ? String(J).trim() : "", _ = ie ? f?.ownerFormatter ? f.ownerFormatter(ie, e) : ie : f?.emptyOwnerText || "", ce = p.length > 0 ? p : e.dependencyRule || [], me = S(
1450
1450
  f?.dependencyRuleAccessor?.(e, ce)
1451
1451
  ) || ce, re = me.length > 0 ? me.map((F) => f?.dependencyRuleFormatter ? f.dependencyRuleFormatter(F, e) : F).join(f?.dependencySeparator || " | ") : f?.emptyDependencyRuleText || "No dependency rule", oe = f?.progressAccessor?.(e) ?? e.progress, te = typeof oe == "number" ? oe : Number(oe), fe = Number.isFinite(te) ? te : e.progress, le = f?.progressFormatter ? f.progressFormatter(fe, e) : `${fe}%`, xe = /* @__PURE__ */ t.jsxs("div", { className: "gantt-tooltip", children: [
1452
1452
  f?.showTaskName !== !1 && /* @__PURE__ */ t.jsx("div", { className: "gantt-tooltip-title", children: $ }),
@@ -1527,10 +1527,10 @@ const Yr = ({
1527
1527
  }
1528
1528
  ) });
1529
1529
  }, Br = ({ links: e, tasks: o, getTaskPosition: a }) => {
1530
- const s = q.useMemo(() => {
1530
+ const s = G.useMemo(() => {
1531
1531
  const d = /* @__PURE__ */ new Map();
1532
1532
  return o.forEach((l) => d.set(l.id, l)), d;
1533
- }, [o]), n = (d) => s.get(d), h = q.useMemo(() => {
1533
+ }, [o]), n = (d) => s.get(d), h = G.useMemo(() => {
1534
1534
  let d = 0, l = 0;
1535
1535
  return o.forEach((x) => {
1536
1536
  try {
@@ -1600,7 +1600,7 @@ const Yr = ({
1600
1600
  if (J === 0) return !0;
1601
1601
  const ie = Y[J - 1];
1602
1602
  return Math.abs(Z.x - ie.x) > 0.5 || Math.abs(Z.y - ie.y) > 0.5;
1603
- }), z = j.length > 0 ? j.map((Z, J) => `${J === 0 ? "M" : "L"} ${Z.x},${Z.y}`).join(" ") : "", G = D.arrowWidth / 2, ee = `M ${B},${y - G} L ${V},${y} L ${B},${y + G} L ${$},${y} Z`;
1603
+ }), z = j.length > 0 ? j.map((Z, J) => `${J === 0 ? "M" : "L"} ${Z.x},${Z.y}`).join(" ") : "", q = D.arrowWidth / 2, ee = `M ${B},${y - q} L ${V},${y} L ${B},${y + q} L ${$},${y} Z`;
1604
1604
  return { path: z, arrow: ee };
1605
1605
  };
1606
1606
  return e.length === 0 ? null : /* @__PURE__ */ t.jsx(
@@ -1741,10 +1741,10 @@ const Yr = ({
1741
1741
  allowBaselineOnlyMode: M = !1,
1742
1742
  taskTooltipConfig: y
1743
1743
  }, D) => {
1744
- const [b, P] = H(e), S = (n.columnWidth || 60) * p, f = n.baselines && w && w.size > 0, k = q.useMemo(() => {
1744
+ const [b, P] = H(e), S = (n.columnWidth || 60) * p, f = n.baselines && w && w.size > 0, k = G.useMemo(() => {
1745
1745
  const c = /* @__PURE__ */ new Map();
1746
1746
  return b.forEach((v) => c.set(v.id, v)), c;
1747
- }, [b]), V = q.useMemo(() => {
1747
+ }, [b]), V = G.useMemo(() => {
1748
1748
  const c = /* @__PURE__ */ new Map(), v = {
1749
1749
  e2s: "Finish-to-Start",
1750
1750
  s2s: "Start-to-Start",
@@ -1767,13 +1767,13 @@ const Yr = ({
1767
1767
  s[1].unit,
1768
1768
  s[1].step
1769
1769
  );
1770
- q.useEffect(() => {
1770
+ G.useEffect(() => {
1771
1771
  (e.length !== b.length || e.some((v, N) => {
1772
1772
  const L = b[N];
1773
1773
  return !L || v.id !== L.id || v.start.getTime() !== L.start.getTime() || v.end.getTime() !== L.end.getTime();
1774
1774
  })) && P(e);
1775
1775
  }, [e]);
1776
- const U = q.useCallback((c) => {
1776
+ const U = G.useCallback((c) => {
1777
1777
  const v = [];
1778
1778
  let N = new Date(a.start);
1779
1779
  for (; N <= a.end; )
@@ -1782,7 +1782,7 @@ const Yr = ({
1782
1782
  label: Se(N, c.format || "D")
1783
1783
  }), N = we(N, c.step, c.unit);
1784
1784
  return v;
1785
- }, [a.start, a.end]), Y = q.useCallback((c) => {
1785
+ }, [a.start, a.end]), Y = G.useCallback((c) => {
1786
1786
  const v = s[1], N = a.start.getTime(), se = c.getTime() - N, X = {
1787
1787
  hour: 36e5,
1788
1788
  day: 864e5,
@@ -1804,7 +1804,7 @@ const Yr = ({
1804
1804
  left: v,
1805
1805
  width: Math.max(N - v, 0)
1806
1806
  };
1807
- }, G = q.useCallback((c) => {
1807
+ }, q = G.useCallback((c) => {
1808
1808
  const v = j(c), N = b.findIndex((X) => X.id === c.id);
1809
1809
  let L = n.rowHeight || 48;
1810
1810
  if (D && typeof D == "object" && D.current) {
@@ -1821,7 +1821,7 @@ const Yr = ({
1821
1821
  top: N * L + I,
1822
1822
  height: se
1823
1823
  };
1824
- }, [j, b, n.rowHeight, n.taskHeight, D]), ee = q.useRef(null), Z = Fe((c) => {
1824
+ }, [j, b, n.rowHeight, n.taskHeight, D]), ee = G.useRef(null), Z = Fe((c) => {
1825
1825
  B.taskId && B.type && (ee.current && cancelAnimationFrame(ee.current), ee.current = requestAnimationFrame(() => {
1826
1826
  const v = W(c.clientX, c.clientY);
1827
1827
  v && P(
@@ -1833,28 +1833,28 @@ const Yr = ({
1833
1833
  const c = b.find((v) => v.id === B.taskId);
1834
1834
  E(c || null), l();
1835
1835
  }
1836
- }, [B, b, E, l]), ie = s[1], _ = q.useMemo(() => U(ie), [U, ie]), ce = M && b.length === 0 && f, ue = q.useCallback(() => {
1836
+ }, [B, b, E, l]), ie = s[1], _ = G.useMemo(() => U(ie), [U, ie]), ce = M && b.length === 0 && f, ue = G.useCallback(() => {
1837
1837
  const c = [];
1838
1838
  let v = -1, N = -1, L = 0, se = "";
1839
1839
  return _.forEach((I) => {
1840
1840
  const X = I.date.getMonth(), ne = I.date.getFullYear(), De = Se(I.date, "MMM YYYY");
1841
1841
  X !== v || ne !== N ? (v !== -1 && c.push({ label: se, width: L }), v = X, N = ne, L = S, se = De) : L += S;
1842
1842
  }), v !== -1 && c.push({ label: se, width: L }), c;
1843
- }, [_, S]), me = q.useCallback(() => {
1843
+ }, [_, S]), me = G.useCallback(() => {
1844
1844
  const c = [];
1845
1845
  let v = -1, N = 0, L = -1, se = -1, I = "";
1846
1846
  return _.forEach((X) => {
1847
1847
  const De = X.date.getDate() <= 15 ? 0 : 1, de = X.date.getMonth(), je = X.date.getFullYear(), Be = Se(X.date, "MMM"), et = new Date(je, de + 1, 0).getDate(), Re = De === 0 ? `${Be} 1 - 15` : `${Be} 16 - ${et}`;
1848
1848
  De !== v || de !== L || je !== se ? (v !== -1 && c.push({ label: I, width: N }), v = De, L = de, se = je, N = S, I = Re) : N += S;
1849
1849
  }), v !== -1 && c.push({ label: I, width: N }), c;
1850
- }, [_, S]), re = q.useMemo(() => ue(), [ue]), oe = q.useMemo(() => me(), [me]), te = q.useMemo(() => _.length * S, [_.length, S]), fe = q.useMemo(() => {
1850
+ }, [_, S]), re = G.useMemo(() => ue(), [ue]), oe = G.useMemo(() => me(), [me]), te = G.useMemo(() => _.length * S, [_.length, S]), fe = G.useMemo(() => {
1851
1851
  const c = /* @__PURE__ */ new Date();
1852
1852
  return c.setHours(0, 0, 0, 0), c;
1853
- }, []), le = q.useMemo(() => {
1853
+ }, []), le = G.useMemo(() => {
1854
1854
  if (!n.showTodayLine) return null;
1855
1855
  const c = Y(fe);
1856
1856
  return c >= -S && c <= te + S ? Math.max(0, Math.min(c, te)) : null;
1857
- }, [n.showTodayLine, fe, te, S, Y]), xe = q.useMemo(() => {
1857
+ }, [n.showTodayLine, fe, te, S, Y]), xe = G.useMemo(() => {
1858
1858
  if (n.projectStartDate)
1859
1859
  return Ze(n.projectStartDate);
1860
1860
  if (e.length > 0) {
@@ -1862,7 +1862,7 @@ const Yr = ({
1862
1862
  return Ze(new Date(Math.min(...c)));
1863
1863
  }
1864
1864
  return null;
1865
- }, [n.projectStartDate, e]), F = q.useMemo(() => {
1865
+ }, [n.projectStartDate, e]), F = G.useMemo(() => {
1866
1866
  if (!n.showProjectStartLine || !xe) return null;
1867
1867
  const c = Y(xe);
1868
1868
  return c >= -S && c <= te + S ? Math.max(0, Math.min(c, te)) : null;
@@ -1960,7 +1960,7 @@ const Yr = ({
1960
1960
  `mid-${v}`
1961
1961
  )) }),
1962
1962
  /* @__PURE__ */ t.jsx("div", { className: "gantt-timeline-scale gantt-timeline-scale-day", style: { width: te }, children: _.map((c, v) => {
1963
- const N = n.weekends && Ut(c.date), L = n.holidays && qt(c.date, n.holidays);
1963
+ const N = n.weekends && Ut(c.date), L = n.holidays && Gt(c.date, n.holidays);
1964
1964
  return /* @__PURE__ */ t.jsx(
1965
1965
  "div",
1966
1966
  {
@@ -2143,7 +2143,7 @@ const Yr = ({
2143
2143
  )
2144
2144
  ] }),
2145
2145
  /* @__PURE__ */ t.jsx("div", { className: "gantt-timeline-grid", children: _.map((c, v) => {
2146
- const N = n.weekends && Ut(c.date), L = n.holidays && qt(c.date, n.holidays);
2146
+ const N = n.weekends && Ut(c.date), L = n.holidays && Gt(c.date, n.holidays);
2147
2147
  return /* @__PURE__ */ t.jsx(
2148
2148
  "div",
2149
2149
  {
@@ -2158,7 +2158,7 @@ const Yr = ({
2158
2158
  {
2159
2159
  links: o,
2160
2160
  tasks: b,
2161
- getTaskPosition: G
2161
+ getTaskPosition: q
2162
2162
  }
2163
2163
  ),
2164
2164
  /* @__PURE__ */ t.jsx("div", { className: "gantt-timeline-tasks", style: { width: te }, children: ce ? Array.from(w?.values() || []).map((c) => {
@@ -2418,7 +2418,7 @@ const { Search: Hr } = Ye, Vr = ({ onFilterChange: e, owners: o = [], uiConfig:
2418
2418
  }
2419
2419
  )
2420
2420
  ] });
2421
- }, { Option: Je } = ve, { TextArea: Ur } = Ye, qr = ({ onCreateTask: e, onClose: o, uiConfig: a = {}, parentId: s, parentTaskName: n, styleConfig: h }) => {
2421
+ }, { Option: Je } = ve, { TextArea: Ur } = Ye, Gr = ({ onCreateTask: e, onClose: o, uiConfig: a = {}, parentId: s, parentTaskName: n, styleConfig: h }) => {
2422
2422
  const [g] = pe.useForm(), d = Qe(h), l = (x) => {
2423
2423
  const p = x.start.toDate(), w = new Date(p);
2424
2424
  w.setDate(w.getDate() + (x.duration || 1)), e({
@@ -2504,7 +2504,7 @@ const { Search: Hr } = Ye, Vr = ({ onFilterChange: e, owners: o = [], uiConfig:
2504
2504
  )
2505
2505
  }
2506
2506
  );
2507
- }, { Option: Ke } = ve, { TextArea: Gr } = Ye, { confirm: Jr } = Tt, Kr = ({ task: e, onUpdate: o, onDelete: a, onClose: s, uiConfig: n = {}, styleConfig: h }) => {
2507
+ }, { Option: Ke } = ve, { TextArea: qr } = Ye, { confirm: Jr } = Tt, Kr = ({ task: e, onUpdate: o, onDelete: a, onClose: s, uiConfig: n = {}, styleConfig: h }) => {
2508
2508
  const [g] = pe.useForm(), d = Qe(h), l = (p) => {
2509
2509
  const w = p.start.toDate(), M = new Date(w);
2510
2510
  M.setDate(M.getDate() + (p.duration || 1)), o({
@@ -2598,13 +2598,13 @@ const { Search: Hr } = Ye, Vr = ({ onFilterChange: e, owners: o = [], uiConfig:
2598
2598
  /* @__PURE__ */ t.jsx(pe.Item, { name: "progress", label: n.progressLabel || "Progress (%)", style: { flex: 1 }, children: /* @__PURE__ */ t.jsx(Ce, { min: 0, max: 100, style: { width: "100%", ...d.input } }) })
2599
2599
  ] }),
2600
2600
  /* @__PURE__ */ t.jsx(pe.Item, { name: "owner", label: n.ownerLabel || "Owner", children: /* @__PURE__ */ t.jsx(Ye, { placeholder: n.ownerPlaceholder || "Assign to...", style: d.input }) }),
2601
- /* @__PURE__ */ t.jsx(pe.Item, { name: "details", label: n.detailsLabel || "Details", children: /* @__PURE__ */ t.jsx(Gr, { placeholder: n.detailsPlaceholder || "Add stage description...", rows: 3, style: d.input }) })
2601
+ /* @__PURE__ */ t.jsx(pe.Item, { name: "details", label: n.detailsLabel || "Details", children: /* @__PURE__ */ t.jsx(qr, { placeholder: n.detailsPlaceholder || "Add stage description...", rows: 3, style: d.input }) })
2602
2602
  ]
2603
2603
  }
2604
2604
  )
2605
2605
  }
2606
2606
  );
2607
- }, { Title: pt, Text: He, Paragraph: Zr } = Gt, { Option: Oe } = ve, Qr = ({
2607
+ }, { Title: pt, Text: He, Paragraph: Zr } = qt, { Option: Oe } = ve, Qr = ({
2608
2608
  task: e,
2609
2609
  allTasks: o,
2610
2610
  links: a,
@@ -2635,13 +2635,13 @@ const { Search: Hr } = Ye, Vr = ({ onFilterChange: e, owners: o = [], uiConfig:
2635
2635
  Example: 3FS+10d`);
2636
2636
  return;
2637
2637
  }
2638
- const z = j.taskNumber - 1, G = o[z];
2639
- if (!G) {
2638
+ const z = j.taskNumber - 1, q = o[z];
2639
+ if (!q) {
2640
2640
  alert(`Task ${j.taskNumber} not found`);
2641
2641
  return;
2642
2642
  }
2643
2643
  const ee = Ar(j.type), Z = _t(j.lag, j.lagUnit);
2644
- s(G.id, e.id, ee, Z), V("");
2644
+ s(q.id, e.id, ee, Z), V("");
2645
2645
  }, U = (j) => {
2646
2646
  switch (j) {
2647
2647
  case "e2s":
@@ -2846,7 +2846,7 @@ Example: 3FS+10d`);
2846
2846
  dataSource: B,
2847
2847
  locale: { emptyText: /* @__PURE__ */ t.jsx(He, { type: "secondary", style: { color: l.font?.color, opacity: 0.5 }, children: "No dependencies added yet." }) },
2848
2848
  renderItem: (j) => {
2849
- const z = o.find((G) => G.id === j.source);
2849
+ const z = o.find((q) => q.id === j.source);
2850
2850
  return /* @__PURE__ */ t.jsx(
2851
2851
  kt.Item,
2852
2852
  {
@@ -3339,13 +3339,20 @@ ${s + 1}. ${a.text}
3339
3339
  };
3340
3340
  }).filter((s) => s.end.getTime() >= s.start.getTime());
3341
3341
  }, fn = (e) => {
3342
- const o = /* @__PURE__ */ new Date(), a = Le(e.start ?? e.startDate ?? e.start_date, o), s = Le(e.end ?? e.endDate ?? e.end_date, a), n = s.getTime() < a.getTime() ? a : s, h = Le(e.plannedStart ?? e.planned_start ?? e.planned_start_date, a), g = Le(e.plannedEnd ?? e.planned_end ?? e.planned_end_date, n), d = g.getTime() < h.getTime() ? h : g, l = Le(e.actualStart ?? e.actual_start ?? e.actual_start_date, a), x = Le(e.actualEnd ?? e.actual_end ?? e.actual_end_date, n), p = x.getTime() < l.getTime() ? l : x, w = Math.max(Math.ceil((n.getTime() - a.getTime()) / mt), 0), M = un(e.dependencies ?? e.dependsOn ?? e.depends_on), y = pn(
3342
+ const o = /* @__PURE__ */ new Date(), a = Le(
3343
+ e.start ?? e.startDate ?? e.start_date ?? e.plannedStartDate,
3344
+ o
3345
+ ), s = Le(
3346
+ e.end ?? e.endDate ?? e.end_date ?? e.plannedEndDate,
3347
+ a
3348
+ ), n = s.getTime() < a.getTime() ? a : s, h = Le(e.plannedStart ?? e.planned_start ?? e.planned_start_date, a), g = Le(e.plannedEnd ?? e.planned_end ?? e.planned_end_date, n), d = g.getTime() < h.getTime() ? h : g, l = Le(e.actualStart ?? e.actual_start ?? e.actual_start_date, a), x = Le(e.actualEnd ?? e.actual_end ?? e.actual_end_date, n), p = x.getTime() < l.getTime() ? l : x, w = Math.max(Math.ceil((n.getTime() - a.getTime()) / mt), 0), M = un(e.dependencies ?? e.dependsOn ?? e.depends_on), y = pn(
3343
3349
  e.dependencyRule ?? e.dependency_rule ?? e.dependencyRuleDescription ?? e.dependency_rule_description
3344
3350
  ), D = hn(e.onHoldPeriods ?? e.on_hold_periods, a, n);
3345
3351
  return {
3346
3352
  id: String(e.id),
3347
3353
  rawId: e.id,
3348
- text: e.text || e.name || e.title || e.taskName || e.task_name || `Task ${String(e.id)}`,
3354
+ // Support API field name: workGroupName as the task display name
3355
+ text: e.text || e.name || e.title || e.taskName || e.task_name || e.workGroupName || `Task ${String(e.id)}`,
3349
3356
  start: a,
3350
3357
  end: n,
3351
3358
  plannedStart: h,
@@ -3564,12 +3571,12 @@ ${s + 1}. ${a.text}
3564
3571
  onLinkDelete: D,
3565
3572
  baselines: b
3566
3573
  }) => {
3567
- const P = { ...Sn, ...s }, S = { ...bn, ...g }, f = q.useMemo(() => {
3574
+ const P = { ...Sn, ...s }, S = { ...bn, ...g }, f = G.useMemo(() => {
3568
3575
  const u = {};
3569
3576
  return n.primary && (u["--wx-gantt-primary"] = n.primary), n.primarySelected && (u["--wx-gantt-primary-selected"] = n.primarySelected), n.success && (u["--wx-gantt-success"] = n.success), n.warning && (u["--wx-gantt-warning"] = n.warning), n.danger && (u["--wx-gantt-danger"] = n.danger), n.background && (u["--wx-gantt-background"] = n.background), n.backgroundAlt && (u["--wx-gantt-background-alt"] = n.backgroundAlt), n.backgroundHover && (u["--wx-gantt-background-hover"] = n.backgroundHover), n.selectColor && (u["--wx-gantt-select-color"] = n.selectColor), n.taskColor && (u["--wx-gantt-task-color"] = n.taskColor), n.taskFillColor && (u["--wx-gantt-task-fill-color"] = n.taskFillColor), n.projectColor && (u["--wx-gantt-project-color"] = n.projectColor), n.milestoneColor && (u["--wx-gantt-milestone-color"] = n.milestoneColor), n.fontColor && (u["--wx-gantt-font-color"] = n.fontColor), n.fontColorAlt && (u["--wx-gantt-font-color-alt"] = n.fontColorAlt), n.iconColor && (u["--wx-gantt-icon-color"] = n.iconColor), n.borderColor && (u["--wx-gantt-border-color"] = n.borderColor), n.fontFamily && (u["--wx-gantt-font-family"] = n.fontFamily), n.fontMono && (u["--wx-gantt-font-mono"] = n.fontMono), n.fontSize && (u["--wx-gantt-font-size"] = n.fontSize), n.fontWeight && (u["--wx-gantt-font-weight"] = String(n.fontWeight)), n.lineHeight && (u["--wx-gantt-line-height"] = String(n.lineHeight)), n.spacingXS && (u["--gantt-spacing-xs"] = n.spacingXS), n.spacingSM && (u["--gantt-spacing-sm"] = n.spacingSM), n.spacingMD && (u["--gantt-spacing-md"] = n.spacingMD), n.spacingLG && (u["--gantt-spacing-lg"] = n.spacingLG), n.customCSSVariables && Object.entries(n.customCSSVariables).forEach(([r, i]) => {
3570
3577
  u[r.startsWith("--") ? r : `--${r}`] = i;
3571
3578
  }), u;
3572
- }, [n]), k = q.useMemo(() => {
3579
+ }, [n]), k = G.useMemo(() => {
3573
3580
  const u = d ?? l;
3574
3581
  if (!u || u.length === 0) return [];
3575
3582
  const r = /* @__PURE__ */ new Date();
@@ -3577,7 +3584,7 @@ ${s + 1}. ${a.text}
3577
3584
  start: Le(i.start, r),
3578
3585
  end: Le(i.end, r)
3579
3586
  })).filter((i) => i.end.getTime() > i.start.getTime());
3580
- }, [d, l]), V = q.useMemo(() => {
3587
+ }, [d, l]), V = G.useMemo(() => {
3581
3588
  const u = gn(e);
3582
3589
  return xn(u, k);
3583
3590
  }, [e, k]), B = Array.isArray(o) ? o : [], {
@@ -3588,7 +3595,7 @@ ${s + 1}. ${a.text}
3588
3595
  undo: Y,
3589
3596
  redo: j,
3590
3597
  updateTask: z,
3591
- createTask: G,
3598
+ createTask: q,
3592
3599
  deleteTask: ee,
3593
3600
  saveState: Z
3594
3601
  } = tn(V, B), [J, ie] = H($), [_, ce] = H(null), [ue, me] = H(null), [re, oe] = H(!1), [te, fe] = H(void 0), [le, xe] = H(void 0), [F, c] = H(!1), [v, N] = H(null), [L, se] = H(null), [I, X] = H(null), [ne, De] = H(null), [de, je] = H(null), [Be, et] = H(1), [Re, Xe] = H(() => b && b.size > 0 ? b : V.length > 0 ? on(V) : /* @__PURE__ */ new Map());
@@ -3677,7 +3684,7 @@ ${s + 1}. ${a.text}
3677
3684
  }), m;
3678
3685
  })(u));
3679
3686
  }, [$, tt]);
3680
- const Mt = q.useMemo(() => {
3687
+ const Mt = G.useMemo(() => {
3681
3688
  if (!$ || !Array.isArray($)) return [];
3682
3689
  try {
3683
3690
  return Array.from(new Set($.map((u) => u?.owner).filter(Boolean)));
@@ -3714,12 +3721,12 @@ ${s + 1}. ${a.text}
3714
3721
  start: we(u.start, 7, "day"),
3715
3722
  end: we(u.end, 7, "day")
3716
3723
  };
3717
- G(r), w && w(r);
3724
+ q(r), w && w(r);
3718
3725
  }, Pe = (u) => {
3719
3726
  if (!de?.task) return;
3720
3727
  const r = { ...de.task, type: u };
3721
3728
  z(r), x && x(r);
3722
- }, Ae = q.useCallback((u, r) => {
3729
+ }, Ae = G.useCallback((u, r) => {
3723
3730
  let i = [];
3724
3731
  return r.filter((T) => T.parent === u).forEach((T) => {
3725
3732
  i.push(T.id), i = [...i, ...Ae(T.id, r)];
@@ -3773,10 +3780,10 @@ ${s + 1}. ${a.text}
3773
3780
  }
3774
3781
  }
3775
3782
  se(null), X(null), De(null), document.body.classList.remove("gantt-dragging");
3776
- }, qe = We(null), Rt = q.useCallback((u) => {
3783
+ }, Ge = We(null), Rt = G.useCallback((u) => {
3777
3784
  if (I) {
3778
3785
  const { clientX: r, clientY: i } = u;
3779
- qe.current && cancelAnimationFrame(qe.current), qe.current = requestAnimationFrame(() => {
3786
+ Ge.current && cancelAnimationFrame(Ge.current), Ge.current = requestAnimationFrame(() => {
3780
3787
  const m = Ee.rowHeight || 48, T = nt.current?.querySelector(".gantt-grid-body");
3781
3788
  if (!T || J.length === 0) {
3782
3789
  De(null);
@@ -3807,7 +3814,7 @@ ${s + 1}. ${a.text}
3807
3814
  parent: r
3808
3815
  // Set parent if provided (for subtasks)
3809
3816
  };
3810
- G(i);
3817
+ q(i);
3811
3818
  const m = {
3812
3819
  taskId: i.id,
3813
3820
  start: new Date(i.start),
@@ -3819,7 +3826,7 @@ ${s + 1}. ${a.text}
3819
3826
  const R = new Map(T);
3820
3827
  return R.set(i.id, m), R;
3821
3828
  }), w && w(i);
3822
- }, Ge = (u) => {
3829
+ }, qe = (u) => {
3823
3830
  z(u), x && x(u);
3824
3831
  }, vt = (u) => {
3825
3832
  ee(u), Xe((r) => {
@@ -3923,7 +3930,7 @@ ${s + 1}. ${a.text}
3923
3930
  selectedTask: _,
3924
3931
  onTaskClick: Lt,
3925
3932
  onTaskContextMenu: ot,
3926
- onTaskUpdate: Ge,
3933
+ onTaskUpdate: qe,
3927
3934
  onTaskDragStart: bt,
3928
3935
  onAddTask: (u) => {
3929
3936
  if (u) {
@@ -3968,7 +3975,7 @@ ${s + 1}. ${a.text}
3968
3975
  const m = $.find((A) => A.id === u);
3969
3976
  if (!m) return;
3970
3977
  const T = { ...m }, R = { ...m, ...r };
3971
- Ge(R), i && p && p({
3978
+ qe(R), i && p && p({
3972
3979
  task: R,
3973
3980
  previousTask: T,
3974
3981
  dragType: i.dragType
@@ -3981,7 +3988,7 @@ ${s + 1}. ${a.text}
3981
3988
  )
3982
3989
  ] }),
3983
3990
  re && /* @__PURE__ */ t.jsx(
3984
- qr,
3991
+ Gr,
3985
3992
  {
3986
3993
  onCreateTask: St,
3987
3994
  onClose: () => {
@@ -3993,7 +4000,7 @@ ${s + 1}. ${a.text}
3993
4000
  styleConfig: n
3994
4001
  }
3995
4002
  ),
3996
- ue && /* @__PURE__ */ t.jsx(Kr, { task: ue, onUpdate: Ge, onDelete: vt, onClose: () => me(null), uiConfig: P, styleConfig: n }),
4003
+ ue && /* @__PURE__ */ t.jsx(Kr, { task: ue, onUpdate: qe, onDelete: vt, onClose: () => me(null), uiConfig: P, styleConfig: n }),
3997
4004
  F && v && /* @__PURE__ */ t.jsx(
3998
4005
  Qr,
3999
4006
  {
@@ -4002,7 +4009,7 @@ ${s + 1}. ${a.text}
4002
4009
  links: W,
4003
4010
  onAddDependency: it,
4004
4011
  onRemoveDependency: lt,
4005
- onTaskUpdate: Ge,
4012
+ onTaskUpdate: qe,
4006
4013
  onClose: () => {
4007
4014
  c(!1), N(null);
4008
4015
  },
@@ -4141,7 +4148,7 @@ export {
4141
4148
  On as Gantt,
4142
4149
  nr as Grid,
4143
4150
  Yr as TaskBar,
4144
- qr as TaskCreator,
4151
+ Gr as TaskCreator,
4145
4152
  Kr as TaskEditor,
4146
4153
  ar as Timeline,
4147
4154
  Xr as Toolbar,
@@ -4154,7 +4161,7 @@ export {
4154
4161
  Rn as getEndOfDay,
4155
4162
  kr as getHoursBetween,
4156
4163
  Ze as getStartOfDay,
4157
- qt as isHoliday,
4164
+ Gt as isHoliday,
4158
4165
  Ut as isWeekend,
4159
4166
  tn as useUndoRedo
4160
4167
  };
@@ -28,4 +28,4 @@ ${s+1}. ${o.text}
28
28
  ${o.owner?`Owner: ${o.owner}`:""}
29
29
  `).join(`
30
30
  `)}
31
- `.trim();dt(a,"gantt-report.txt","text/plain"),alert("PDF export is a simplified text version. For full PDF with charts, a PDF library would be needed.")},Sr=(e,a,o="png")=>{if(!document.getElementById(e)){alert("Could not find Gantt chart element to export");return}if(o==="svg"){alert("SVG export requires additional library. Use PNG or implement with dom-to-svg.");return}alert("Image export requires html2canvas library. Install with: npm install html2canvas")},dt=(e,a,o)=>{const s=new Blob([e],{type:o}),n=URL.createObjectURL(s);vr(n,a),URL.revokeObjectURL(n)},vr=(e,a)=>{const o=document.createElement("a");o.href=e,o.download=a,document.body.appendChild(o),o.click(),document.body.removeChild(o)},jr=Object.freeze(Object.defineProperty({__proto__:null,exportToCSV:qt,exportToExcel:Gt,exportToImage:Sr,exportToJSON:Jt,exportToPDF:Kt,importFromJSON:e=>new Promise((a,o)=>{const s=new FileReader;s.onload=n=>{try{const h=n.target?.result,x=JSON.parse(h),d=x.tasks.map(l=>({...l,start:new Date(l.start),end:new Date(l.end)}));a({tasks:d,links:x.links||[]})}catch{o(new Error("Invalid JSON file"))}},s.onerror=()=>o(new Error("Failed to read file")),s.readAsText(e)})},Symbol.toStringTag,{value:"Module"})),Zt=(e,a)=>e.filter(o=>{if(a.searchText){const s=a.searchText.toLowerCase(),n=o.text.toLowerCase().includes(s),h=o.owner?.toLowerCase().includes(s),x=o.details?.toLowerCase().includes(s);if(!n&&!h&&!x)return!1}if(a.status!=="all"&&(o.progress===0?"not-started":o.progress===100?"completed":"in-progress")!==a.status||a.priority!=="all"&&o.priority!==a.priority||a.owner&&o.owner!==a.owner)return!1;if(a.dateRange){const s=o.start.getTime(),n=a.dateRange.start.getTime(),h=a.dateRange.end.getTime();if(s<n||s>h)return!1}return!0}),Ke=1440*60*1e3,Me=(e,a)=>{if(e instanceof Date){const o=new Date(e.getTime());return Number.isNaN(o.getTime())?new Date(a.getTime()):o}if(typeof e=="string"||typeof e=="number"){const o=new Date(e);if(!Number.isNaN(o.getTime()))return o}return new Date(a.getTime())},Tt=(e,a)=>{if(e==null||e==="")return a;const o=Number(e);return Number.isFinite(o)?o:a},Tr=e=>{if(Array.isArray(e)){const a=e.map(o=>String(o).trim()).filter(Boolean);return a.length>0?a:void 0}if(typeof e=="string"){const a=e.split(/[|,]/).map(o=>o.trim()).filter(Boolean);return a.length>0?a:void 0}},Dr=e=>{if(Array.isArray(e)){const a=e.map(o=>String(o).trim()).filter(Boolean);return a.length>0?a:void 0}if(typeof e=="string"){const a=e.split(/\r?\n|\|/).map(o=>o.trim()).filter(Boolean);return a.length>0?a:void 0}},Mr=(e,a,o)=>{if(!Array.isArray(e)||e.length===0)return;const s=a.getTime(),n=o.getTime();return e.map(h=>{const x=Me(h?.start,a),d=Me(h?.end,o),l=Math.max(x.getTime(),s),y=Math.min(d.getTime(),n);return{start:new Date(l),end:new Date(y)}}).filter(h=>h.end.getTime()>h.start.getTime())},Er=(e,a,o)=>{if(Array.isArray(e))return e.map(s=>{const n=Me(s?.start,a),h=Me(s?.end,o),x=h.getTime()<n.getTime()?n:h,d=Math.max(Math.ceil((x.getTime()-n.getTime())/Ke),0);return{start:n,end:x,duration:Tt(s?.duration,d)}}).filter(s=>s.end.getTime()>=s.start.getTime())},Lr=e=>{const a=new Date,o=Me(e.start??e.startDate??e.start_date,a),s=Me(e.end??e.endDate??e.end_date,o),n=s.getTime()<o.getTime()?o:s,h=Me(e.plannedStart??e.planned_start??e.planned_start_date,o),x=Me(e.plannedEnd??e.planned_end??e.planned_end_date,n),d=x.getTime()<h.getTime()?h:x,l=Me(e.actualStart??e.actual_start??e.actual_start_date,o),y=Me(e.actualEnd??e.actual_end??e.actual_end_date,n),p=y.getTime()<l.getTime()?l:y,S=Math.max(Math.ceil((n.getTime()-o.getTime())/Ke),0),L=Tr(e.dependencies??e.dependsOn??e.depends_on),w=Dr(e.dependencyRule??e.dependency_rule??e.dependencyRuleDescription??e.dependency_rule_description),E=Mr(e.onHoldPeriods??e.on_hold_periods,o,n);return{id:String(e.id),rawId:e.id,text:e.text||e.name||e.title||e.taskName||e.task_name||`Task ${String(e.id)}`,start:o,end:n,plannedStart:h,plannedEnd:d,actualStart:l,actualEnd:p,duration:Tt(e.duration,S),progress:Math.max(0,Math.min(100,Tt(e.progress??e.progressPercentage??e.progress_percentage,0))),type:e.type,parent:e.parent!==void 0&&e.parent!==null&&String(e.parent).length>0?String(e.parent):void 0,open:e.open,color:e.color,details:e.details,owner:e.owner||e.ownerName||e.owner_name,priority:e.priority,status:e.status??e.currentStatus??e.current_status,onHoldPeriods:E,dependencies:L,dependencyRule:w,segments:Er(e.segments,o,n),sequence_id:e.sequence_id,stage_id:e.stage_id,tooltipConfig:e.tooltipConfig}},Fr=e=>Array.isArray(e)?e.map(Lr):[],Pr=(e,a)=>{if(a.length===0)return e;const o=[...a].sort((s,n)=>s.start.getTime()-n.start.getTime());return e.map(s=>{if(s.onHoldPeriods&&s.onHoldPeriods.length>0||s.segments&&s.segments.length>0)return s;const n=s.start.getTime(),h=s.end.getTime(),x=h-n;if(x<=0){for(const v of o)if(n>=v.start.getTime()&&n<v.end.getTime())return{...s,start:new Date(v.end.getTime()),end:new Date(v.end.getTime())};return s}const d=o[o.length-1].end.getTime();if(n>=d)return s;const l=o[0].start.getTime();if(h<=l)return s;let y=n,p=0,S=0;const L=[],w=[];for(;p<x;){for(;S<o.length&&o[S].end.getTime()<=y;)S++;if(S<o.length){const v=o[S],O=v.start.getTime(),j=v.end.getTime();if(y<O){const f=O-y,_=Math.min(f,x-p);if(L.push({start:new Date(y),end:new Date(y+_),duration:Math.ceil(_/Ke)}),p+=_,y+=_,p>=x)break;w.push({start:new Date(O),end:new Date(j)}),y=j,S++}else w.push({start:new Date(y),end:new Date(j)}),y=j,S++}else{const v=x-p;L.push({start:new Date(y),end:new Date(y+v),duration:Math.ceil(v/Ke)}),p=x}}if(w.length===0)return s;const E=L.length>0?L[L.length-1].end:s.end;return{...s,end:E,duration:Math.max(Math.ceil((E.getTime()-n)/Ke),0),segments:L,onHoldPeriods:w}})},Nr=e=>[{name:"index",label:"",width:40,align:"center"},{name:"text",label:e?.columnLabels?.name||"Name",width:250,align:"left",resize:!0},{name:"predecessors",label:e?.columnLabels?.dependsOn||"Depends on",width:120,align:"left"},{name:"duration",label:e?.columnLabels?.duration||"Duration",width:110,align:"left"},{name:"start",label:e?.columnLabels?.start||"Start",width:130,align:"left"}],kr=[{unit:"month",step:1,format:"MMM"},{unit:"day",step:1,format:"D"}],Or={showTaskName:!0,showPlannedDates:!0,showActualDates:!0,showStatus:!0,showDependencyRule:!0,showProgress:!0,showOwner:!0,plannedLabel:"Planned",actualLabel:"Actual",statusLabel:"Status",dependencyRuleLabel:"Dependency Rule",progressLabel:"Progress",ownerLabel:"Owner",dateFormat:"MMM D, YYYY",dependencySeparator:" | ",emptyStatusText:"Not set",emptyOwnerText:"Not assigned",emptyDependencyRuleText:"No dependency rule"},$r={headerTitle:"Iris Gantt",showHeader:!0,showAddTaskButton:!0,showBaselineButton:!1,showZoomButtons:!0,showExportButtons:!0,showFilterSearch:!0,addTaskButtonText:"New Task",baselineButtonText:"Set Baseline",baselineButtonTextActive:"Baselines",zoomOutTooltip:"Zoom Out",zoomInTooltip:"Zoom In",resetZoomTooltip:"Reset Zoom",exportCSVTooltip:"Export to CSV",exportExcelTooltip:"Export to Excel",exportJSONTooltip:"Export to JSON",exportPDFTooltip:"Export to PDF",hideBaselinesTooltip:"Hide Baselines",showBaselinesTooltip:"Show Baselines",taskCreatorTitle:"Create New Task",taskCreatorOkText:"Create Task",taskCreatorCancelText:"Cancel",taskNameLabel:"Task Name",taskNamePlaceholder:"Enter task name",typeLabel:"Type",priorityLabel:"Priority",startDateLabel:"Start Date",durationLabel:"Duration (days)",colorLabel:"Color",progressLabel:"Progress (%)",ownerLabel:"Owner",ownerPlaceholder:"Assign to...",detailsLabel:"Details",detailsPlaceholder:"Add task description...",taskTypeOptions:{task:"Task",milestone:"Milestone",project:"Project"},priorityOptions:{low:"Low",medium:"Medium",high:"High"},taskEditorTitle:"Edit Task",taskEditorSaveText:"Save Changes",taskEditorCancelText:"Cancel",taskEditorDeleteText:"Delete",deleteConfirmTitle:"Delete Task",deleteConfirmContent:"This action cannot be undone.",deleteConfirmOkText:"Yes, Delete",deleteConfirmCancelText:"No",searchPlaceholder:"Search tasks...",allOwnersText:"All Owners",allStatusText:"All Status",allPriorityText:"All Priority",clearFiltersText:"Clear",statusOptions:{all:"All Status",notStarted:"Not Started",inProgress:"In Progress",completed:"Completed"},priorityFilterOptions:{all:"All Priority",low:"Low",medium:"Medium",high:"High"},columnLabels:{name:"Name",dependsOn:"Depends on",duration:"Duration",start:"Start"},taskNameRequired:"Please enter task name"},Cr=({tasks:e=[],links:a=[],config:o={},uiConfig:s={},styleConfig:n={},iconConfig:h={},taskTooltipConfig:x={},onHoldPeriods:d,on_hold_periods:l,onTaskUpdate:y,onTaskDragUpdate:p,onTaskCreate:S,onTaskDelete:L,onLinkCreate:w,onLinkDelete:E,baselines:v})=>{const O={...$r,...s},j={...Or,...x},f=b.useMemo(()=>{const u={};return n.primary&&(u["--wx-gantt-primary"]=n.primary),n.primarySelected&&(u["--wx-gantt-primary-selected"]=n.primarySelected),n.success&&(u["--wx-gantt-success"]=n.success),n.warning&&(u["--wx-gantt-warning"]=n.warning),n.danger&&(u["--wx-gantt-danger"]=n.danger),n.background&&(u["--wx-gantt-background"]=n.background),n.backgroundAlt&&(u["--wx-gantt-background-alt"]=n.backgroundAlt),n.backgroundHover&&(u["--wx-gantt-background-hover"]=n.backgroundHover),n.selectColor&&(u["--wx-gantt-select-color"]=n.selectColor),n.taskColor&&(u["--wx-gantt-task-color"]=n.taskColor),n.taskFillColor&&(u["--wx-gantt-task-fill-color"]=n.taskFillColor),n.projectColor&&(u["--wx-gantt-project-color"]=n.projectColor),n.milestoneColor&&(u["--wx-gantt-milestone-color"]=n.milestoneColor),n.fontColor&&(u["--wx-gantt-font-color"]=n.fontColor),n.fontColorAlt&&(u["--wx-gantt-font-color-alt"]=n.fontColorAlt),n.iconColor&&(u["--wx-gantt-icon-color"]=n.iconColor),n.borderColor&&(u["--wx-gantt-border-color"]=n.borderColor),n.fontFamily&&(u["--wx-gantt-font-family"]=n.fontFamily),n.fontMono&&(u["--wx-gantt-font-mono"]=n.fontMono),n.fontSize&&(u["--wx-gantt-font-size"]=n.fontSize),n.fontWeight&&(u["--wx-gantt-font-weight"]=String(n.fontWeight)),n.lineHeight&&(u["--wx-gantt-line-height"]=String(n.lineHeight)),n.spacingXS&&(u["--gantt-spacing-xs"]=n.spacingXS),n.spacingSM&&(u["--gantt-spacing-sm"]=n.spacingSM),n.spacingMD&&(u["--gantt-spacing-md"]=n.spacingMD),n.spacingLG&&(u["--gantt-spacing-lg"]=n.spacingLG),n.customCSSVariables&&Object.entries(n.customCSSVariables).forEach(([r,i])=>{u[r.startsWith("--")?r:`--${r}`]=i}),u},[n]),_=b.useMemo(()=>{const u=d??l;if(!u||u.length===0)return[];const r=new Date;return u.map(i=>({start:Me(i.start,r),end:Me(i.end,r)})).filter(i=>i.end.getTime()>i.start.getTime())},[d,l]),U=b.useMemo(()=>{const u=Fr(e);return Pr(u,_)},[e,_]),H=Array.isArray(a)?a:[],{tasks:C,links:V,setTasks:F,setLinks:G,undo:W,redo:D,updateTask:z,createTask:J,deleteTask:re,saveState:Q}=Vt(U,H),[K,de]=b.useState(C),[B,pe]=b.useState(null),[he,ge]=b.useState(null),[oe,ie]=b.useState(!1),[ne,xe]=b.useState(void 0),[ce,be]=b.useState(void 0),[N,c]=b.useState(!1),[T,$]=b.useState(null),[P,le]=b.useState(null),[Y,q]=b.useState(null),[ae,Te]=b.useState(null),[ue,ve]=b.useState(null),[Be,Ze]=b.useState(1),[Le,He]=b.useState(()=>v&&v.size>0?v:U.length>0?Ut(U):new Map);b.useEffect(()=>{v&&v.size>0&&He(v)},[v]);const[ct]=b.useState(o.theme||"light"),[Qe,ut]=b.useState({searchText:"",status:"all",priority:"all",owner:""}),et=b.useRef(null),tt=b.useRef(null),pt=b.useRef(null),rt=b.useRef(null),Ce=b.useRef(null),ht=b.useRef(null),Ee={columns:o.columns||Nr(s),scales:kr,readonly:!1,editable:!0,taskHeight:28,rowHeight:48,scaleHeight:28,columnWidth:80,minColumnWidth:60,autoSchedule:!1,criticalPath:!1,weekends:!0,holidays:[],theme:ct,locale:"en",showTodayLine:o.showTodayLine!==!1,todayLineColor:o.todayLineColor||"#ff4d4f",todayLineLabel:o.todayLineLabel!==void 0?o.todayLineLabel:"Today",todayLineWidth:o.todayLineWidth||1,todayLineStyle:o.todayLineStyle||"solid",todayLineOpacity:o.todayLineOpacity!==void 0?o.todayLineOpacity:1,todayLineLabelStyle:o.todayLineLabelStyle,showTodayLineMarker:o.showTodayLineMarker!==!1,todayLineMarkerSize:o.todayLineMarkerSize||8,todayLineMarkerStyle:o.todayLineMarkerStyle||"triangle",showProjectStartLine:o.showProjectStartLine!==!1,projectStartDate:o.projectStartDate,projectStartLineColor:o.projectStartLineColor||"#40a9ff",projectStartLineLabel:o.projectStartLineLabel!==void 0?o.projectStartLineLabel:"Start Project",projectStartLineWidth:o.projectStartLineWidth||1,projectStartLineStyle:o.projectStartLineStyle||"solid",projectStartLineOpacity:o.projectStartLineOpacity!==void 0?o.projectStartLineOpacity:1,projectStartLineLabelStyle:o.projectStartLineLabelStyle,showProjectStartLineMarker:o.showProjectStartLineMarker!==!1,projectStartLineMarkerSize:o.projectStartLineMarkerSize||8,projectStartLineMarkerStyle:o.projectStartLineMarkerStyle||"triangle",...o,baselines:o.baselines!==!1};b.useEffect(()=>{const u=Zt(C,Qe);de((i=>{const m=[],M=k=>{if(!k)return!1;const I=i.find(A=>A.id===k);return I&&!I.open&&I.type==="project"?!0:M(I?.parent)};return i.forEach(k=>{M(k.parent)||m.push(k)}),m})(u))},[C,Qe]);const Dt=b.useMemo(()=>{if(!C||!Array.isArray(C))return[];try{return Array.from(new Set(C.map(u=>u?.owner).filter(Boolean)))}catch(u){return console.warn("Error extracting owners:",u),[]}},[C]),Mt=(()=>{const u=K.length>0?K:C;if(u.length===0){const k=new Date;return{start:_e(ye(k,-30,"day")),end:_e(ye(k,60,"day"))}}const r=u.map(k=>k.start.getTime()),i=u.map(k=>k.end.getTime()),m=new Date(Math.min(...r)),M=new Date(Math.max(...i));return{start:_e(ye(m,-7,"day")),end:_e(M)}})(),Et=u=>{pe(u)},nt=(u,r)=>{if(Ee.readonly)return;u.preventDefault();const i=C.find(m=>m.id===r);i&&ve({x:u.clientX,y:u.clientY,task:i})},mt=()=>{if(!ue?.task)return;const u=ue.task,r={...u,id:`task-${Date.now()}`,text:`${u.text} (Copy)`,start:ye(u.start,7,"day"),end:ye(u.end,7,"day")};J(r),S&&S(r)},Fe=u=>{if(!ue?.task)return;const r={...ue.task,type:u};z(r),y&&y(r)},Ae=b.useCallback((u,r)=>{let i=[];return r.filter(M=>M.parent===u).forEach(M=>{i.push(M.id),i=[...i,...Ae(M.id,r)]}),i},[]),Ve=(u,r)=>(u??null)===(r??null),ft=(u,r,i,m)=>{if(!Ee.readonly)if(m==="reorder"){const M=K.findIndex(I=>I.id===u),k=Ae(u,C);q({id:u,initialIndex:M,currentX:r,currentY:i,descendantIds:k}),document.body.classList.add("gantt-dragging")}else le(u)},Lt=()=>{if(Y&&ae){const u=C.find(i=>i.id===Y.id),r=C.find(i=>i.id===ae.taskId);if(u&&r&&u.id!==r.id){const i=[u.id,...Y.descendantIds];if(!i.includes(r.id)){const m=[...C],M=(ae.position==="inside"?r.id:r.parent)??void 0,k=m.findIndex(Z=>Z.id===u.id);k!==-1&&(m[k]={...m[k],parent:M});const I=m.filter(Z=>i.includes(Z.id)),A=m.filter(Z=>!i.includes(Z.id));let R=A.findIndex(Z=>Z.id===r.id);if(ae.position==="inside"){const Z=[r.id,...Ae(r.id,A)],it=Z[Z.length-1];R=A.findIndex(Ot=>Ot.id===it)+1}else if(ae.position==="below"){const Z=Ae(r.id,A);Z.length>0?R=A.findIndex(it=>it.id===Z[Z.length-1])+1:R++}R<0&&(R=A.length);const me={tasks:[...C],links:[...V]};A.splice(R,0,...I),F(A),Q("task_update",me,{tasks:A,links:V});const ee=C.filter(Z=>Ve(Z.parent,u.parent)).findIndex(Z=>Z.id===u.id)+1,ke=A.filter(Z=>Ve(Z.parent,M)).findIndex(Z=>Z.id===u.id)+1,Pe={currentSequenceId:ee,targetSequenceId:ke,targetStageId:M??null},Se=A.find(Z=>Z.id===u.id);if(Se){const Z={...Se,sequence_id:ke,stage_id:M??null};y&&y(Z,Pe),p&&p({task:Z,previousTask:u,dragType:"reorder",reorderMeta:Pe})}}}}le(null),q(null),Te(null),document.body.classList.remove("gantt-dragging")},Xe=b.useRef(null),Ft=b.useCallback(u=>{if(Y){const{clientX:r,clientY:i}=u;Xe.current&&cancelAnimationFrame(Xe.current),Xe.current=requestAnimationFrame(()=>{const m=Ee.rowHeight||48,M=tt.current?.querySelector(".gantt-grid-body");if(!M||K.length===0){Te(null);return}const k=M.getBoundingClientRect(),I=i-k.top+M.scrollTop;let A=Math.floor(I/m);A=Math.max(0,Math.min(A,K.length-1));const R=K[A];if(R){if(R.id===Y.id||Y.descendantIds.includes(R.id)){Te(null),q(je=>je?{...je,currentX:r,currentY:i}:null);return}const se=I-A*m;let ee="above";R.type!=="milestone"?se<m*.3?ee="above":se>m*.7?ee="below":ee="inside":ee=se<m/2?"above":"below",Te({taskId:R.id,position:ee})}q(me=>me?{...me,currentX:r,currentY:i}:null)})}},[Y,K,Ee.rowHeight]),ot=()=>{Y&&Lt()},gt=(u,r)=>{const i={...u,id:`task-${Date.now()}`,parent:r};J(i);const m={taskId:i.id,start:new Date(i.start),end:new Date(i.end)};He(M=>{const k=new Map(M);return k.set(i.id,m),k}),S&&S(i)},Ue=u=>{z(u),y&&y(u)},xt=u=>{re(u),He(r=>{const i=new Map(r);return i.delete(u),i}),L&&L(u)},at=(u,r,i,m)=>{const M={id:`link-${Date.now()}`,source:u,target:r,type:i,lag:m};G([...V,M]),w&&w(M)},st=u=>{const r=V.filter(i=>i.id!==u);G(r),E&&E(u)};b.useEffect(()=>{const u=new Map(Le);let r=!1;C.forEach(m=>{Le.has(m.id)||(u.set(m.id,{taskId:m.id,start:new Date(m.start),end:new Date(m.end)}),r=!0)});const i=new Set(C.map(m=>m.id));Le.forEach((m,M)=>{i.has(M)||(u.delete(M),r=!0)}),r&&He(u)},[C]),b.useEffect(()=>{const u=r=>{(r.ctrlKey||r.metaKey)&&(r.key==="z"&&!r.shiftKey?(r.preventDefault(),W()):(r.key==="y"||r.key==="z"&&r.shiftKey)&&(r.preventDefault(),D()))};return window.addEventListener("keydown",u),()=>window.removeEventListener("keydown",u)},[W,D]),b.useEffect(()=>{const u=tt.current?.querySelector(".gantt-grid-body"),r=et.current?.querySelector(".gantt-timeline-body");if(!u||!r)return;const i=()=>{Ce.current!=="timeline"&&(Ce.current="grid",r.scrollTop=u.scrollTop,requestAnimationFrame(()=>{Ce.current=null}))},m=()=>{Ce.current!=="grid"&&(Ce.current="timeline",u.scrollTop=r.scrollTop,requestAnimationFrame(()=>{Ce.current=null}))};return u.addEventListener("scroll",i,{passive:!0}),r.addEventListener("scroll",m,{passive:!0}),()=>{u.removeEventListener("scroll",i),r.removeEventListener("scroll",m),ht.current&&clearTimeout(ht.current)}},[K]);const Pt={height:o.containerHeight||"100%",minHeight:o.containerMinHeight||"400px"},Nt={"--gantt-row-height":`${Ee.rowHeight||48}px`},kt=o.gridWidth?{"--gantt-grid-width":o.gridWidth}:{};return t.jsxs("div",{className:`gantt-page-wrapper theme-${ct}`,style:{...Pt,...f},children:[O.showHeader&&t.jsx("div",{className:"gantt-page-header",children:t.jsx("div",{className:"gantt-page-header-left",children:t.jsx("h1",{className:"gantt-page-title",children:O.headerTitle})})}),t.jsxs("div",{className:`gantt-container theme-${Ee.theme}`,ref:rt,style:{...kt,...Nt},children:[t.jsx(zt,{zoomLevel:Be,setZoomLevel:Ze,onExport:u=>{u==="csv"&&qt(C),u==="excel"&&Gt(C),u==="json"&&Jt(C,V),u==="pdf"&&Kt(C)},onFilterChange:u=>ut(u),owners:Dt||[],onAddTask:u=>{if(u){const r=C.find(i=>i.id===u);xe(u),be(r?.text)}else xe(void 0),be(void 0);ie(!0)},uiConfig:O,iconConfig:h,styleConfig:n}),t.jsxs("div",{className:"gantt-layout",ref:pt,onMouseMove:Ft,onMouseUp:ot,onMouseLeave:ot,children:[t.jsx(St,{ref:tt,tasks:K,columns:Ee.columns||[],selectedTask:B,onTaskClick:Et,onTaskContextMenu:nt,onTaskUpdate:Ue,onTaskDragStart:ft,onAddTask:u=>{if(u){const r=C.find(i=>i.id===u);xe(u),be(r?.text)}else xe(void 0),be(void 0);ie(!0)},onAddDependency:at,onRemoveDependency:st,onDependencyClick:u=>{const r=C.find(i=>i.id===u);r&&($(r),c(!0))},links:V,allTasks:C,dropIndicator:ae,reorderTask:Y,iconConfig:h,styleConfig:n}),t.jsx(jt,{ref:et,tasks:K,links:V,range:Mt,scales:Ee.scales,config:Ee,selectedTask:B,draggedTask:P,onTaskClick:()=>{},onTaskDragStart:()=>{},onTaskDragEnd:()=>{},onTaskUpdate:(u,r,i)=>{const m=C.find(I=>I.id===u);if(!m)return;const M={...m},k={...m,...r};Ue(k),i&&p&&p({task:k,previousTask:M,dragType:i.dragType})},zoomLevel:Be,baselines:Le,taskTooltipConfig:j})]}),oe&&t.jsx(Yt,{onCreateTask:gt,onClose:()=>{ie(!1),xe(void 0),be(void 0)},uiConfig:O,parentId:ne,parentTaskName:ce,styleConfig:n}),he&&t.jsx(Wt,{task:he,onUpdate:Ue,onDelete:xt,onClose:()=>ge(null),uiConfig:O,styleConfig:n}),N&&T&&t.jsx(Ht,{task:T,allTasks:C,links:V,onAddDependency:at,onRemoveDependency:st,onTaskUpdate:Ue,onClose:()=>{c(!1),$(null)},styleConfig:n}),ue&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"gantt-context-menu-overlay",onClick:()=>ve(null),onContextMenu:u=>{u.preventDefault(),ve(null)}}),t.jsx(xr,{x:ue.x,y:ue.y,task:ue.task,onEdit:()=>{ue.task&&ge(ue.task)},onDelete:()=>{ue.task&&xt(ue.task.id)},onCopy:mt,onDependencies:()=>{ue.task&&($(ue.task),c(!0))},onConvertToMilestone:()=>Fe("milestone"),onConvertToTask:()=>Fe("task"),onConvertToProject:()=>Fe("project"),onClose:()=>ve(null),onAutoSchedule:()=>{const u=Xt(C,V,{mode:"forward"});F(u),ve(null)},iconConfig:h,styleConfig:n})]}),Y&&(()=>{const u=C.find(R=>R.id===Y.id);if(!u)return null;const r=Number.isFinite(Y.currentX)?Y.currentX:0,i=Number.isFinite(Y.currentY)?Y.currentY:0,m=Ee.rowHeight||48,k=rt.current?.getBoundingClientRect(),I=k?r-k.left+12:r+12,A=k?i-k.top+12:i+12;return t.jsxs("div",{className:"gantt-drag-preview",style:{height:m,top:A,left:I,position:"absolute",pointerEvents:"none",zIndex:9999,maxWidth:"420px"},children:[t.jsx("span",{className:"gantt-drag-preview-name",title:u.text,children:u.text}),Y.descendantIds.length>0&&t.jsxs("span",{className:"gantt-drag-preview-count",children:["+",Y.descendantIds.length]})]})})()]})]})},Ar=Object.freeze(Object.defineProperty({__proto__:null,calculateCriticalPath:(e,a)=>{const o=new Set,s=new Map,n=new Map,h=new Map;e.forEach(w=>{n.set(w.id,[]),h.set(w.id,[])}),a.forEach(w=>{w.type==="e2s"&&(n.get(w.source)?.push(w.target),h.get(w.target)?.push(w.source))});const x=new Map,d=new Map,l=(w,E=new Set)=>{if(E.has(w))return;E.add(w);const v=e.find(j=>j.id===w);if(!v)return;const O=h.get(w)||[];if(O.length===0)x.set(w,0),d.set(w,v.duration);else{let j=0;O.forEach(f=>{l(f,E);const _=d.get(f)||0;j=Math.max(j,_)}),x.set(w,j),d.set(w,j+v.duration)}};e.forEach(w=>l(w.id));const y=new Map,p=new Map,S=Math.max(...Array.from(d.values())),L=(w,E=new Set)=>{if(E.has(w))return;E.add(w);const v=e.find(j=>j.id===w);if(!v)return;const O=n.get(w)||[];if(O.length===0)p.set(w,S),y.set(w,S-v.duration);else{let j=1/0;O.forEach(f=>{L(f,E);const _=y.get(f)||0;j=Math.min(j,_)}),p.set(w,j),y.set(w,j-v.duration)}};return e.forEach(w=>L(w.id)),e.forEach(w=>{const E=x.get(w.id)||0,O=(y.get(w.id)||0)-E;s.set(w.id,O),Math.abs(O)<.01&&o.add(w.id)}),{criticalTasks:o,taskFloats:s,projectDuration:S}},getTaskFloat:(e,a)=>a.taskFloats.get(e)||0,isCriticalTask:(e,a)=>a.criticalTasks.has(e)},Symbol.toStringTag,{value:"Module"}));X.AutoScheduler=br,X.Chart=jt,X.CriticalPath=Ar,X.DependencyEditor=Ht,X.ExportUtils=jr,X.FilterSearch=It,X.Gantt=Cr,X.Grid=St,X.TaskBar=Bt,X.TaskCreator=Yt,X.TaskEditor=Wt,X.Timeline=vt,X.Toolbar=zt,X.addToDate=ye,X.applyFilters=Zt,X.calculateDuration=or,X.createBaseline=Ut,X.formatDate=we,X.getDaysBetween=Ie,X.getEndOfDay=nr,X.getHoursBetween=Rt,X.getStartOfDay=_e,X.isHoliday=wt,X.isWeekend=yt,X.useUndoRedo=Vt,Object.defineProperty(X,Symbol.toStringTag,{value:"Module"})}));
31
+ `.trim();dt(a,"gantt-report.txt","text/plain"),alert("PDF export is a simplified text version. For full PDF with charts, a PDF library would be needed.")},Sr=(e,a,o="png")=>{if(!document.getElementById(e)){alert("Could not find Gantt chart element to export");return}if(o==="svg"){alert("SVG export requires additional library. Use PNG or implement with dom-to-svg.");return}alert("Image export requires html2canvas library. Install with: npm install html2canvas")},dt=(e,a,o)=>{const s=new Blob([e],{type:o}),n=URL.createObjectURL(s);vr(n,a),URL.revokeObjectURL(n)},vr=(e,a)=>{const o=document.createElement("a");o.href=e,o.download=a,document.body.appendChild(o),o.click(),document.body.removeChild(o)},jr=Object.freeze(Object.defineProperty({__proto__:null,exportToCSV:qt,exportToExcel:Gt,exportToImage:Sr,exportToJSON:Jt,exportToPDF:Kt,importFromJSON:e=>new Promise((a,o)=>{const s=new FileReader;s.onload=n=>{try{const h=n.target?.result,x=JSON.parse(h),d=x.tasks.map(l=>({...l,start:new Date(l.start),end:new Date(l.end)}));a({tasks:d,links:x.links||[]})}catch{o(new Error("Invalid JSON file"))}},s.onerror=()=>o(new Error("Failed to read file")),s.readAsText(e)})},Symbol.toStringTag,{value:"Module"})),Zt=(e,a)=>e.filter(o=>{if(a.searchText){const s=a.searchText.toLowerCase(),n=o.text.toLowerCase().includes(s),h=o.owner?.toLowerCase().includes(s),x=o.details?.toLowerCase().includes(s);if(!n&&!h&&!x)return!1}if(a.status!=="all"&&(o.progress===0?"not-started":o.progress===100?"completed":"in-progress")!==a.status||a.priority!=="all"&&o.priority!==a.priority||a.owner&&o.owner!==a.owner)return!1;if(a.dateRange){const s=o.start.getTime(),n=a.dateRange.start.getTime(),h=a.dateRange.end.getTime();if(s<n||s>h)return!1}return!0}),Ke=1440*60*1e3,Me=(e,a)=>{if(e instanceof Date){const o=new Date(e.getTime());return Number.isNaN(o.getTime())?new Date(a.getTime()):o}if(typeof e=="string"||typeof e=="number"){const o=new Date(e);if(!Number.isNaN(o.getTime()))return o}return new Date(a.getTime())},Tt=(e,a)=>{if(e==null||e==="")return a;const o=Number(e);return Number.isFinite(o)?o:a},Tr=e=>{if(Array.isArray(e)){const a=e.map(o=>String(o).trim()).filter(Boolean);return a.length>0?a:void 0}if(typeof e=="string"){const a=e.split(/[|,]/).map(o=>o.trim()).filter(Boolean);return a.length>0?a:void 0}},Dr=e=>{if(Array.isArray(e)){const a=e.map(o=>String(o).trim()).filter(Boolean);return a.length>0?a:void 0}if(typeof e=="string"){const a=e.split(/\r?\n|\|/).map(o=>o.trim()).filter(Boolean);return a.length>0?a:void 0}},Mr=(e,a,o)=>{if(!Array.isArray(e)||e.length===0)return;const s=a.getTime(),n=o.getTime();return e.map(h=>{const x=Me(h?.start,a),d=Me(h?.end,o),l=Math.max(x.getTime(),s),y=Math.min(d.getTime(),n);return{start:new Date(l),end:new Date(y)}}).filter(h=>h.end.getTime()>h.start.getTime())},Er=(e,a,o)=>{if(Array.isArray(e))return e.map(s=>{const n=Me(s?.start,a),h=Me(s?.end,o),x=h.getTime()<n.getTime()?n:h,d=Math.max(Math.ceil((x.getTime()-n.getTime())/Ke),0);return{start:n,end:x,duration:Tt(s?.duration,d)}}).filter(s=>s.end.getTime()>=s.start.getTime())},Lr=e=>{const a=new Date,o=Me(e.start??e.startDate??e.start_date??e.plannedStartDate,a),s=Me(e.end??e.endDate??e.end_date??e.plannedEndDate,o),n=s.getTime()<o.getTime()?o:s,h=Me(e.plannedStart??e.planned_start??e.planned_start_date,o),x=Me(e.plannedEnd??e.planned_end??e.planned_end_date,n),d=x.getTime()<h.getTime()?h:x,l=Me(e.actualStart??e.actual_start??e.actual_start_date,o),y=Me(e.actualEnd??e.actual_end??e.actual_end_date,n),p=y.getTime()<l.getTime()?l:y,S=Math.max(Math.ceil((n.getTime()-o.getTime())/Ke),0),L=Tr(e.dependencies??e.dependsOn??e.depends_on),w=Dr(e.dependencyRule??e.dependency_rule??e.dependencyRuleDescription??e.dependency_rule_description),E=Mr(e.onHoldPeriods??e.on_hold_periods,o,n);return{id:String(e.id),rawId:e.id,text:e.text||e.name||e.title||e.taskName||e.task_name||e.workGroupName||`Task ${String(e.id)}`,start:o,end:n,plannedStart:h,plannedEnd:d,actualStart:l,actualEnd:p,duration:Tt(e.duration,S),progress:Math.max(0,Math.min(100,Tt(e.progress??e.progressPercentage??e.progress_percentage,0))),type:e.type,parent:e.parent!==void 0&&e.parent!==null&&String(e.parent).length>0?String(e.parent):void 0,open:e.open,color:e.color,details:e.details,owner:e.owner||e.ownerName||e.owner_name,priority:e.priority,status:e.status??e.currentStatus??e.current_status,onHoldPeriods:E,dependencies:L,dependencyRule:w,segments:Er(e.segments,o,n),sequence_id:e.sequence_id,stage_id:e.stage_id,tooltipConfig:e.tooltipConfig}},Fr=e=>Array.isArray(e)?e.map(Lr):[],Pr=(e,a)=>{if(a.length===0)return e;const o=[...a].sort((s,n)=>s.start.getTime()-n.start.getTime());return e.map(s=>{if(s.onHoldPeriods&&s.onHoldPeriods.length>0||s.segments&&s.segments.length>0)return s;const n=s.start.getTime(),h=s.end.getTime(),x=h-n;if(x<=0){for(const v of o)if(n>=v.start.getTime()&&n<v.end.getTime())return{...s,start:new Date(v.end.getTime()),end:new Date(v.end.getTime())};return s}const d=o[o.length-1].end.getTime();if(n>=d)return s;const l=o[0].start.getTime();if(h<=l)return s;let y=n,p=0,S=0;const L=[],w=[];for(;p<x;){for(;S<o.length&&o[S].end.getTime()<=y;)S++;if(S<o.length){const v=o[S],O=v.start.getTime(),j=v.end.getTime();if(y<O){const f=O-y,_=Math.min(f,x-p);if(L.push({start:new Date(y),end:new Date(y+_),duration:Math.ceil(_/Ke)}),p+=_,y+=_,p>=x)break;w.push({start:new Date(O),end:new Date(j)}),y=j,S++}else w.push({start:new Date(y),end:new Date(j)}),y=j,S++}else{const v=x-p;L.push({start:new Date(y),end:new Date(y+v),duration:Math.ceil(v/Ke)}),p=x}}if(w.length===0)return s;const E=L.length>0?L[L.length-1].end:s.end;return{...s,end:E,duration:Math.max(Math.ceil((E.getTime()-n)/Ke),0),segments:L,onHoldPeriods:w}})},Nr=e=>[{name:"index",label:"",width:40,align:"center"},{name:"text",label:e?.columnLabels?.name||"Name",width:250,align:"left",resize:!0},{name:"predecessors",label:e?.columnLabels?.dependsOn||"Depends on",width:120,align:"left"},{name:"duration",label:e?.columnLabels?.duration||"Duration",width:110,align:"left"},{name:"start",label:e?.columnLabels?.start||"Start",width:130,align:"left"}],kr=[{unit:"month",step:1,format:"MMM"},{unit:"day",step:1,format:"D"}],Or={showTaskName:!0,showPlannedDates:!0,showActualDates:!0,showStatus:!0,showDependencyRule:!0,showProgress:!0,showOwner:!0,plannedLabel:"Planned",actualLabel:"Actual",statusLabel:"Status",dependencyRuleLabel:"Dependency Rule",progressLabel:"Progress",ownerLabel:"Owner",dateFormat:"MMM D, YYYY",dependencySeparator:" | ",emptyStatusText:"Not set",emptyOwnerText:"Not assigned",emptyDependencyRuleText:"No dependency rule"},$r={headerTitle:"Iris Gantt",showHeader:!0,showAddTaskButton:!0,showBaselineButton:!1,showZoomButtons:!0,showExportButtons:!0,showFilterSearch:!0,addTaskButtonText:"New Task",baselineButtonText:"Set Baseline",baselineButtonTextActive:"Baselines",zoomOutTooltip:"Zoom Out",zoomInTooltip:"Zoom In",resetZoomTooltip:"Reset Zoom",exportCSVTooltip:"Export to CSV",exportExcelTooltip:"Export to Excel",exportJSONTooltip:"Export to JSON",exportPDFTooltip:"Export to PDF",hideBaselinesTooltip:"Hide Baselines",showBaselinesTooltip:"Show Baselines",taskCreatorTitle:"Create New Task",taskCreatorOkText:"Create Task",taskCreatorCancelText:"Cancel",taskNameLabel:"Task Name",taskNamePlaceholder:"Enter task name",typeLabel:"Type",priorityLabel:"Priority",startDateLabel:"Start Date",durationLabel:"Duration (days)",colorLabel:"Color",progressLabel:"Progress (%)",ownerLabel:"Owner",ownerPlaceholder:"Assign to...",detailsLabel:"Details",detailsPlaceholder:"Add task description...",taskTypeOptions:{task:"Task",milestone:"Milestone",project:"Project"},priorityOptions:{low:"Low",medium:"Medium",high:"High"},taskEditorTitle:"Edit Task",taskEditorSaveText:"Save Changes",taskEditorCancelText:"Cancel",taskEditorDeleteText:"Delete",deleteConfirmTitle:"Delete Task",deleteConfirmContent:"This action cannot be undone.",deleteConfirmOkText:"Yes, Delete",deleteConfirmCancelText:"No",searchPlaceholder:"Search tasks...",allOwnersText:"All Owners",allStatusText:"All Status",allPriorityText:"All Priority",clearFiltersText:"Clear",statusOptions:{all:"All Status",notStarted:"Not Started",inProgress:"In Progress",completed:"Completed"},priorityFilterOptions:{all:"All Priority",low:"Low",medium:"Medium",high:"High"},columnLabels:{name:"Name",dependsOn:"Depends on",duration:"Duration",start:"Start"},taskNameRequired:"Please enter task name"},Cr=({tasks:e=[],links:a=[],config:o={},uiConfig:s={},styleConfig:n={},iconConfig:h={},taskTooltipConfig:x={},onHoldPeriods:d,on_hold_periods:l,onTaskUpdate:y,onTaskDragUpdate:p,onTaskCreate:S,onTaskDelete:L,onLinkCreate:w,onLinkDelete:E,baselines:v})=>{const O={...$r,...s},j={...Or,...x},f=b.useMemo(()=>{const u={};return n.primary&&(u["--wx-gantt-primary"]=n.primary),n.primarySelected&&(u["--wx-gantt-primary-selected"]=n.primarySelected),n.success&&(u["--wx-gantt-success"]=n.success),n.warning&&(u["--wx-gantt-warning"]=n.warning),n.danger&&(u["--wx-gantt-danger"]=n.danger),n.background&&(u["--wx-gantt-background"]=n.background),n.backgroundAlt&&(u["--wx-gantt-background-alt"]=n.backgroundAlt),n.backgroundHover&&(u["--wx-gantt-background-hover"]=n.backgroundHover),n.selectColor&&(u["--wx-gantt-select-color"]=n.selectColor),n.taskColor&&(u["--wx-gantt-task-color"]=n.taskColor),n.taskFillColor&&(u["--wx-gantt-task-fill-color"]=n.taskFillColor),n.projectColor&&(u["--wx-gantt-project-color"]=n.projectColor),n.milestoneColor&&(u["--wx-gantt-milestone-color"]=n.milestoneColor),n.fontColor&&(u["--wx-gantt-font-color"]=n.fontColor),n.fontColorAlt&&(u["--wx-gantt-font-color-alt"]=n.fontColorAlt),n.iconColor&&(u["--wx-gantt-icon-color"]=n.iconColor),n.borderColor&&(u["--wx-gantt-border-color"]=n.borderColor),n.fontFamily&&(u["--wx-gantt-font-family"]=n.fontFamily),n.fontMono&&(u["--wx-gantt-font-mono"]=n.fontMono),n.fontSize&&(u["--wx-gantt-font-size"]=n.fontSize),n.fontWeight&&(u["--wx-gantt-font-weight"]=String(n.fontWeight)),n.lineHeight&&(u["--wx-gantt-line-height"]=String(n.lineHeight)),n.spacingXS&&(u["--gantt-spacing-xs"]=n.spacingXS),n.spacingSM&&(u["--gantt-spacing-sm"]=n.spacingSM),n.spacingMD&&(u["--gantt-spacing-md"]=n.spacingMD),n.spacingLG&&(u["--gantt-spacing-lg"]=n.spacingLG),n.customCSSVariables&&Object.entries(n.customCSSVariables).forEach(([r,i])=>{u[r.startsWith("--")?r:`--${r}`]=i}),u},[n]),_=b.useMemo(()=>{const u=d??l;if(!u||u.length===0)return[];const r=new Date;return u.map(i=>({start:Me(i.start,r),end:Me(i.end,r)})).filter(i=>i.end.getTime()>i.start.getTime())},[d,l]),U=b.useMemo(()=>{const u=Fr(e);return Pr(u,_)},[e,_]),H=Array.isArray(a)?a:[],{tasks:C,links:V,setTasks:F,setLinks:G,undo:W,redo:D,updateTask:z,createTask:J,deleteTask:re,saveState:Q}=Vt(U,H),[K,de]=b.useState(C),[B,pe]=b.useState(null),[he,ge]=b.useState(null),[oe,ie]=b.useState(!1),[ne,xe]=b.useState(void 0),[ce,be]=b.useState(void 0),[N,c]=b.useState(!1),[T,$]=b.useState(null),[P,le]=b.useState(null),[Y,q]=b.useState(null),[ae,Te]=b.useState(null),[ue,ve]=b.useState(null),[Be,Ze]=b.useState(1),[Le,He]=b.useState(()=>v&&v.size>0?v:U.length>0?Ut(U):new Map);b.useEffect(()=>{v&&v.size>0&&He(v)},[v]);const[ct]=b.useState(o.theme||"light"),[Qe,ut]=b.useState({searchText:"",status:"all",priority:"all",owner:""}),et=b.useRef(null),tt=b.useRef(null),pt=b.useRef(null),rt=b.useRef(null),Ce=b.useRef(null),ht=b.useRef(null),Ee={columns:o.columns||Nr(s),scales:kr,readonly:!1,editable:!0,taskHeight:28,rowHeight:48,scaleHeight:28,columnWidth:80,minColumnWidth:60,autoSchedule:!1,criticalPath:!1,weekends:!0,holidays:[],theme:ct,locale:"en",showTodayLine:o.showTodayLine!==!1,todayLineColor:o.todayLineColor||"#ff4d4f",todayLineLabel:o.todayLineLabel!==void 0?o.todayLineLabel:"Today",todayLineWidth:o.todayLineWidth||1,todayLineStyle:o.todayLineStyle||"solid",todayLineOpacity:o.todayLineOpacity!==void 0?o.todayLineOpacity:1,todayLineLabelStyle:o.todayLineLabelStyle,showTodayLineMarker:o.showTodayLineMarker!==!1,todayLineMarkerSize:o.todayLineMarkerSize||8,todayLineMarkerStyle:o.todayLineMarkerStyle||"triangle",showProjectStartLine:o.showProjectStartLine!==!1,projectStartDate:o.projectStartDate,projectStartLineColor:o.projectStartLineColor||"#40a9ff",projectStartLineLabel:o.projectStartLineLabel!==void 0?o.projectStartLineLabel:"Start Project",projectStartLineWidth:o.projectStartLineWidth||1,projectStartLineStyle:o.projectStartLineStyle||"solid",projectStartLineOpacity:o.projectStartLineOpacity!==void 0?o.projectStartLineOpacity:1,projectStartLineLabelStyle:o.projectStartLineLabelStyle,showProjectStartLineMarker:o.showProjectStartLineMarker!==!1,projectStartLineMarkerSize:o.projectStartLineMarkerSize||8,projectStartLineMarkerStyle:o.projectStartLineMarkerStyle||"triangle",...o,baselines:o.baselines!==!1};b.useEffect(()=>{const u=Zt(C,Qe);de((i=>{const m=[],M=k=>{if(!k)return!1;const I=i.find(A=>A.id===k);return I&&!I.open&&I.type==="project"?!0:M(I?.parent)};return i.forEach(k=>{M(k.parent)||m.push(k)}),m})(u))},[C,Qe]);const Dt=b.useMemo(()=>{if(!C||!Array.isArray(C))return[];try{return Array.from(new Set(C.map(u=>u?.owner).filter(Boolean)))}catch(u){return console.warn("Error extracting owners:",u),[]}},[C]),Mt=(()=>{const u=K.length>0?K:C;if(u.length===0){const k=new Date;return{start:_e(ye(k,-30,"day")),end:_e(ye(k,60,"day"))}}const r=u.map(k=>k.start.getTime()),i=u.map(k=>k.end.getTime()),m=new Date(Math.min(...r)),M=new Date(Math.max(...i));return{start:_e(ye(m,-7,"day")),end:_e(M)}})(),Et=u=>{pe(u)},nt=(u,r)=>{if(Ee.readonly)return;u.preventDefault();const i=C.find(m=>m.id===r);i&&ve({x:u.clientX,y:u.clientY,task:i})},mt=()=>{if(!ue?.task)return;const u=ue.task,r={...u,id:`task-${Date.now()}`,text:`${u.text} (Copy)`,start:ye(u.start,7,"day"),end:ye(u.end,7,"day")};J(r),S&&S(r)},Fe=u=>{if(!ue?.task)return;const r={...ue.task,type:u};z(r),y&&y(r)},Ae=b.useCallback((u,r)=>{let i=[];return r.filter(M=>M.parent===u).forEach(M=>{i.push(M.id),i=[...i,...Ae(M.id,r)]}),i},[]),Ve=(u,r)=>(u??null)===(r??null),ft=(u,r,i,m)=>{if(!Ee.readonly)if(m==="reorder"){const M=K.findIndex(I=>I.id===u),k=Ae(u,C);q({id:u,initialIndex:M,currentX:r,currentY:i,descendantIds:k}),document.body.classList.add("gantt-dragging")}else le(u)},Lt=()=>{if(Y&&ae){const u=C.find(i=>i.id===Y.id),r=C.find(i=>i.id===ae.taskId);if(u&&r&&u.id!==r.id){const i=[u.id,...Y.descendantIds];if(!i.includes(r.id)){const m=[...C],M=(ae.position==="inside"?r.id:r.parent)??void 0,k=m.findIndex(Z=>Z.id===u.id);k!==-1&&(m[k]={...m[k],parent:M});const I=m.filter(Z=>i.includes(Z.id)),A=m.filter(Z=>!i.includes(Z.id));let R=A.findIndex(Z=>Z.id===r.id);if(ae.position==="inside"){const Z=[r.id,...Ae(r.id,A)],it=Z[Z.length-1];R=A.findIndex(Ot=>Ot.id===it)+1}else if(ae.position==="below"){const Z=Ae(r.id,A);Z.length>0?R=A.findIndex(it=>it.id===Z[Z.length-1])+1:R++}R<0&&(R=A.length);const me={tasks:[...C],links:[...V]};A.splice(R,0,...I),F(A),Q("task_update",me,{tasks:A,links:V});const ee=C.filter(Z=>Ve(Z.parent,u.parent)).findIndex(Z=>Z.id===u.id)+1,ke=A.filter(Z=>Ve(Z.parent,M)).findIndex(Z=>Z.id===u.id)+1,Pe={currentSequenceId:ee,targetSequenceId:ke,targetStageId:M??null},Se=A.find(Z=>Z.id===u.id);if(Se){const Z={...Se,sequence_id:ke,stage_id:M??null};y&&y(Z,Pe),p&&p({task:Z,previousTask:u,dragType:"reorder",reorderMeta:Pe})}}}}le(null),q(null),Te(null),document.body.classList.remove("gantt-dragging")},Xe=b.useRef(null),Ft=b.useCallback(u=>{if(Y){const{clientX:r,clientY:i}=u;Xe.current&&cancelAnimationFrame(Xe.current),Xe.current=requestAnimationFrame(()=>{const m=Ee.rowHeight||48,M=tt.current?.querySelector(".gantt-grid-body");if(!M||K.length===0){Te(null);return}const k=M.getBoundingClientRect(),I=i-k.top+M.scrollTop;let A=Math.floor(I/m);A=Math.max(0,Math.min(A,K.length-1));const R=K[A];if(R){if(R.id===Y.id||Y.descendantIds.includes(R.id)){Te(null),q(je=>je?{...je,currentX:r,currentY:i}:null);return}const se=I-A*m;let ee="above";R.type!=="milestone"?se<m*.3?ee="above":se>m*.7?ee="below":ee="inside":ee=se<m/2?"above":"below",Te({taskId:R.id,position:ee})}q(me=>me?{...me,currentX:r,currentY:i}:null)})}},[Y,K,Ee.rowHeight]),ot=()=>{Y&&Lt()},gt=(u,r)=>{const i={...u,id:`task-${Date.now()}`,parent:r};J(i);const m={taskId:i.id,start:new Date(i.start),end:new Date(i.end)};He(M=>{const k=new Map(M);return k.set(i.id,m),k}),S&&S(i)},Ue=u=>{z(u),y&&y(u)},xt=u=>{re(u),He(r=>{const i=new Map(r);return i.delete(u),i}),L&&L(u)},at=(u,r,i,m)=>{const M={id:`link-${Date.now()}`,source:u,target:r,type:i,lag:m};G([...V,M]),w&&w(M)},st=u=>{const r=V.filter(i=>i.id!==u);G(r),E&&E(u)};b.useEffect(()=>{const u=new Map(Le);let r=!1;C.forEach(m=>{Le.has(m.id)||(u.set(m.id,{taskId:m.id,start:new Date(m.start),end:new Date(m.end)}),r=!0)});const i=new Set(C.map(m=>m.id));Le.forEach((m,M)=>{i.has(M)||(u.delete(M),r=!0)}),r&&He(u)},[C]),b.useEffect(()=>{const u=r=>{(r.ctrlKey||r.metaKey)&&(r.key==="z"&&!r.shiftKey?(r.preventDefault(),W()):(r.key==="y"||r.key==="z"&&r.shiftKey)&&(r.preventDefault(),D()))};return window.addEventListener("keydown",u),()=>window.removeEventListener("keydown",u)},[W,D]),b.useEffect(()=>{const u=tt.current?.querySelector(".gantt-grid-body"),r=et.current?.querySelector(".gantt-timeline-body");if(!u||!r)return;const i=()=>{Ce.current!=="timeline"&&(Ce.current="grid",r.scrollTop=u.scrollTop,requestAnimationFrame(()=>{Ce.current=null}))},m=()=>{Ce.current!=="grid"&&(Ce.current="timeline",u.scrollTop=r.scrollTop,requestAnimationFrame(()=>{Ce.current=null}))};return u.addEventListener("scroll",i,{passive:!0}),r.addEventListener("scroll",m,{passive:!0}),()=>{u.removeEventListener("scroll",i),r.removeEventListener("scroll",m),ht.current&&clearTimeout(ht.current)}},[K]);const Pt={height:o.containerHeight||"100%",minHeight:o.containerMinHeight||"400px"},Nt={"--gantt-row-height":`${Ee.rowHeight||48}px`},kt=o.gridWidth?{"--gantt-grid-width":o.gridWidth}:{};return t.jsxs("div",{className:`gantt-page-wrapper theme-${ct}`,style:{...Pt,...f},children:[O.showHeader&&t.jsx("div",{className:"gantt-page-header",children:t.jsx("div",{className:"gantt-page-header-left",children:t.jsx("h1",{className:"gantt-page-title",children:O.headerTitle})})}),t.jsxs("div",{className:`gantt-container theme-${Ee.theme}`,ref:rt,style:{...kt,...Nt},children:[t.jsx(zt,{zoomLevel:Be,setZoomLevel:Ze,onExport:u=>{u==="csv"&&qt(C),u==="excel"&&Gt(C),u==="json"&&Jt(C,V),u==="pdf"&&Kt(C)},onFilterChange:u=>ut(u),owners:Dt||[],onAddTask:u=>{if(u){const r=C.find(i=>i.id===u);xe(u),be(r?.text)}else xe(void 0),be(void 0);ie(!0)},uiConfig:O,iconConfig:h,styleConfig:n}),t.jsxs("div",{className:"gantt-layout",ref:pt,onMouseMove:Ft,onMouseUp:ot,onMouseLeave:ot,children:[t.jsx(St,{ref:tt,tasks:K,columns:Ee.columns||[],selectedTask:B,onTaskClick:Et,onTaskContextMenu:nt,onTaskUpdate:Ue,onTaskDragStart:ft,onAddTask:u=>{if(u){const r=C.find(i=>i.id===u);xe(u),be(r?.text)}else xe(void 0),be(void 0);ie(!0)},onAddDependency:at,onRemoveDependency:st,onDependencyClick:u=>{const r=C.find(i=>i.id===u);r&&($(r),c(!0))},links:V,allTasks:C,dropIndicator:ae,reorderTask:Y,iconConfig:h,styleConfig:n}),t.jsx(jt,{ref:et,tasks:K,links:V,range:Mt,scales:Ee.scales,config:Ee,selectedTask:B,draggedTask:P,onTaskClick:()=>{},onTaskDragStart:()=>{},onTaskDragEnd:()=>{},onTaskUpdate:(u,r,i)=>{const m=C.find(I=>I.id===u);if(!m)return;const M={...m},k={...m,...r};Ue(k),i&&p&&p({task:k,previousTask:M,dragType:i.dragType})},zoomLevel:Be,baselines:Le,taskTooltipConfig:j})]}),oe&&t.jsx(Yt,{onCreateTask:gt,onClose:()=>{ie(!1),xe(void 0),be(void 0)},uiConfig:O,parentId:ne,parentTaskName:ce,styleConfig:n}),he&&t.jsx(Wt,{task:he,onUpdate:Ue,onDelete:xt,onClose:()=>ge(null),uiConfig:O,styleConfig:n}),N&&T&&t.jsx(Ht,{task:T,allTasks:C,links:V,onAddDependency:at,onRemoveDependency:st,onTaskUpdate:Ue,onClose:()=>{c(!1),$(null)},styleConfig:n}),ue&&t.jsxs(t.Fragment,{children:[t.jsx("div",{className:"gantt-context-menu-overlay",onClick:()=>ve(null),onContextMenu:u=>{u.preventDefault(),ve(null)}}),t.jsx(xr,{x:ue.x,y:ue.y,task:ue.task,onEdit:()=>{ue.task&&ge(ue.task)},onDelete:()=>{ue.task&&xt(ue.task.id)},onCopy:mt,onDependencies:()=>{ue.task&&($(ue.task),c(!0))},onConvertToMilestone:()=>Fe("milestone"),onConvertToTask:()=>Fe("task"),onConvertToProject:()=>Fe("project"),onClose:()=>ve(null),onAutoSchedule:()=>{const u=Xt(C,V,{mode:"forward"});F(u),ve(null)},iconConfig:h,styleConfig:n})]}),Y&&(()=>{const u=C.find(R=>R.id===Y.id);if(!u)return null;const r=Number.isFinite(Y.currentX)?Y.currentX:0,i=Number.isFinite(Y.currentY)?Y.currentY:0,m=Ee.rowHeight||48,k=rt.current?.getBoundingClientRect(),I=k?r-k.left+12:r+12,A=k?i-k.top+12:i+12;return t.jsxs("div",{className:"gantt-drag-preview",style:{height:m,top:A,left:I,position:"absolute",pointerEvents:"none",zIndex:9999,maxWidth:"420px"},children:[t.jsx("span",{className:"gantt-drag-preview-name",title:u.text,children:u.text}),Y.descendantIds.length>0&&t.jsxs("span",{className:"gantt-drag-preview-count",children:["+",Y.descendantIds.length]})]})})()]})]})},Ar=Object.freeze(Object.defineProperty({__proto__:null,calculateCriticalPath:(e,a)=>{const o=new Set,s=new Map,n=new Map,h=new Map;e.forEach(w=>{n.set(w.id,[]),h.set(w.id,[])}),a.forEach(w=>{w.type==="e2s"&&(n.get(w.source)?.push(w.target),h.get(w.target)?.push(w.source))});const x=new Map,d=new Map,l=(w,E=new Set)=>{if(E.has(w))return;E.add(w);const v=e.find(j=>j.id===w);if(!v)return;const O=h.get(w)||[];if(O.length===0)x.set(w,0),d.set(w,v.duration);else{let j=0;O.forEach(f=>{l(f,E);const _=d.get(f)||0;j=Math.max(j,_)}),x.set(w,j),d.set(w,j+v.duration)}};e.forEach(w=>l(w.id));const y=new Map,p=new Map,S=Math.max(...Array.from(d.values())),L=(w,E=new Set)=>{if(E.has(w))return;E.add(w);const v=e.find(j=>j.id===w);if(!v)return;const O=n.get(w)||[];if(O.length===0)p.set(w,S),y.set(w,S-v.duration);else{let j=1/0;O.forEach(f=>{L(f,E);const _=y.get(f)||0;j=Math.min(j,_)}),p.set(w,j),y.set(w,j-v.duration)}};return e.forEach(w=>L(w.id)),e.forEach(w=>{const E=x.get(w.id)||0,O=(y.get(w.id)||0)-E;s.set(w.id,O),Math.abs(O)<.01&&o.add(w.id)}),{criticalTasks:o,taskFloats:s,projectDuration:S}},getTaskFloat:(e,a)=>a.taskFloats.get(e)||0,isCriticalTask:(e,a)=>a.criticalTasks.has(e)},Symbol.toStringTag,{value:"Module"}));X.AutoScheduler=br,X.Chart=jt,X.CriticalPath=Ar,X.DependencyEditor=Ht,X.ExportUtils=jr,X.FilterSearch=It,X.Gantt=Cr,X.Grid=St,X.TaskBar=Bt,X.TaskCreator=Yt,X.TaskEditor=Wt,X.Timeline=vt,X.Toolbar=zt,X.addToDate=ye,X.applyFilters=Zt,X.calculateDuration=or,X.createBaseline=Ut,X.formatDate=we,X.getDaysBetween=Ie,X.getEndOfDay=nr,X.getHoursBetween=Rt,X.getStartOfDay=_e,X.isHoliday=wt,X.isWeekend=yt,X.useUndoRedo=Vt,Object.defineProperty(X,Symbol.toStringTag,{value:"Module"})}));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iris-gantt",
3
- "version": "1.4.6",
3
+ "version": "1.4.7",
4
4
  "description": "A comprehensive, production-ready Gantt chart component built with React and TypeScript. Easy to install, simple to use.",
5
5
  "keywords": [
6
6
  "gantt",
@@ -127,4 +127,4 @@
127
127
  "vite": "^7.2.4",
128
128
  "vitest": "^4.0.17"
129
129
  }
130
- }
130
+ }