@jaeungkim/gantt-chart 0.3.1 → 0.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.
Files changed (57) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +60 -101
  3. package/dist/components/GanttBar.d.ts +23 -0
  4. package/dist/components/GanttChartHeader.d.ts +17 -0
  5. package/dist/components/GanttDependencyArrows.d.ts +15 -0
  6. package/dist/components/GanttDragGuides.d.ts +9 -0
  7. package/dist/components/GanttGridSplitter.d.ts +14 -0
  8. package/dist/components/GanttMarkers.d.ts +18 -0
  9. package/dist/components/GanttTaskGrid.d.ts +42 -0
  10. package/dist/components/ScaleSelector.d.ts +11 -0
  11. package/dist/constants/gantt.d.ts +47 -0
  12. package/dist/core/calendar.d.ts +45 -0
  13. package/dist/core/criticalPath.d.ts +67 -0
  14. package/dist/core/dates.d.ts +32 -0
  15. package/dist/core/index.d.ts +16 -0
  16. package/dist/core/scheduling.d.ts +104 -0
  17. package/dist/core/tree.d.ts +42 -0
  18. package/dist/core/types.d.ts +76 -0
  19. package/dist/gantt-chart.css +1 -1
  20. package/dist/hooks/useGanttBarDrag.d.ts +35 -0
  21. package/dist/hooks/useGanttDrawCreate.d.ts +31 -0
  22. package/dist/hooks/useGanttExportApi.d.ts +30 -0
  23. package/dist/hooks/useGanttHistoryApi.d.ts +28 -0
  24. package/dist/hooks/useGanttLinkDrag.d.ts +31 -0
  25. package/dist/hooks/useGanttProgressDrag.d.ts +16 -0
  26. package/dist/hooks/useGanttRowDrag.d.ts +33 -0
  27. package/dist/hooks/useGanttScrollApi.d.ts +63 -0
  28. package/dist/hooks/useGanttSelectors.d.ts +23 -0
  29. package/dist/hooks/useGanttVirtualization.d.ts +32 -0
  30. package/dist/hooks/useResolvedTheme.d.ts +15 -0
  31. package/dist/index.cjs +4 -0
  32. package/dist/index.d.cts +13 -0
  33. package/dist/index.d.ts +13 -51
  34. package/dist/index.js +5819 -0
  35. package/dist/pages/Gantt.d.ts +306 -0
  36. package/dist/stores/context.d.ts +10 -0
  37. package/dist/stores/store.d.ts +118 -0
  38. package/dist/types/gantt.d.ts +283 -0
  39. package/dist/types/task.d.ts +111 -0
  40. package/dist/utils/a11y.d.ts +141 -0
  41. package/dist/utils/arrowPath.d.ts +66 -0
  42. package/dist/utils/dependency.d.ts +42 -0
  43. package/dist/utils/grouping.d.ts +81 -0
  44. package/dist/utils/headerUtils.d.ts +6 -0
  45. package/dist/utils/history.d.ts +56 -0
  46. package/dist/utils/i18n.d.ts +16 -0
  47. package/dist/utils/mutation.d.ts +47 -0
  48. package/dist/utils/pngExport.d.ts +67 -0
  49. package/dist/utils/pointerGesture.d.ts +31 -0
  50. package/dist/utils/rowDrag.d.ts +69 -0
  51. package/dist/utils/timeline.d.ts +161 -0
  52. package/dist/utils/transformData.d.ts +15 -0
  53. package/dist/utils/viewport.d.ts +95 -0
  54. package/package.json +47 -32
  55. package/dist/index.cjs.js +0 -4
  56. package/dist/index.es.js +0 -2394
  57. package/dist/readmeImg.png +0 -0
package/dist/index.es.js DELETED
@@ -1,2394 +0,0 @@
1
- import { jsxs as tt, jsx as _ } from "react/jsx-runtime";
2
- import * as yt from "react";
3
- import st, { useRef as it, useState as Mt, useCallback as Kt, useMemo as bt, useEffect as et } from "react";
4
- import { flushSync as ee } from "react-dom";
5
- const xt = 38, ne = 5, J = {
6
- day: {
7
- labelUnit: "day",
8
- tickUnit: "hour",
9
- unitPerTick: 1,
10
- dragStepUnit: "hour",
11
- dragStepAmount: 1,
12
- basePxPerDragStep: 32,
13
- formatTickLabel: (s) => s.format("hh"),
14
- formatHeaderLabel: (s) => s.format("MMM D")
15
- },
16
- week: {
17
- labelUnit: "month",
18
- tickUnit: "day",
19
- unitPerTick: 1,
20
- dragStepUnit: "hour",
21
- dragStepAmount: 6,
22
- basePxPerDragStep: 54,
23
- formatTickLabel: (s) => s.format("D"),
24
- formatHeaderLabel: (s) => s.format("MMM")
25
- },
26
- month: {
27
- labelUnit: "month",
28
- tickUnit: "day",
29
- unitPerTick: 1,
30
- dragStepUnit: "day",
31
- dragStepAmount: 1,
32
- basePxPerDragStep: 32,
33
- formatTickLabel: (s) => s.format("D"),
34
- formatHeaderLabel: (s) => s.format("MMM YYYY")
35
- },
36
- year: {
37
- labelUnit: "month",
38
- tickUnit: "month",
39
- unitPerTick: 1,
40
- dragStepUnit: "day",
41
- dragStepAmount: 7,
42
- basePxPerDragStep: 28,
43
- formatTickLabel: (s) => s.format("D"),
44
- formatHeaderLabel: (s) => s.format("MMM YYYY")
45
- }
46
- }, Dt = (s) => {
47
- let a;
48
- const n = /* @__PURE__ */ new Set(), e = (c, d) => {
49
- const f = typeof c == "function" ? c(a) : c;
50
- if (!Object.is(f, a)) {
51
- const h = a;
52
- a = d ?? (typeof f != "object" || f === null) ? f : Object.assign({}, a, f), n.forEach((y) => y(a, h));
53
- }
54
- }, r = () => a, i = { setState: e, getState: r, getInitialState: () => u, subscribe: (c) => (n.add(c), () => n.delete(c)) }, u = a = s(e, r, i);
55
- return i;
56
- }, re = ((s) => s ? Dt(s) : Dt), se = (s) => s;
57
- function ie(s, a = se) {
58
- const n = st.useSyncExternalStore(
59
- s.subscribe,
60
- st.useCallback(() => a(s.getState()), [s, a]),
61
- st.useCallback(() => a(s.getInitialState()), [s, a])
62
- );
63
- return st.useDebugValue(n), n;
64
- }
65
- const oe = (s) => {
66
- const a = re(s), n = (e) => ie(a, e);
67
- return Object.assign(n, a), n;
68
- }, ae = ((s) => oe);
69
- function Qt(s, a) {
70
- let n;
71
- try {
72
- n = s();
73
- } catch {
74
- return;
75
- }
76
- return {
77
- getItem: (r) => {
78
- var t;
79
- const o = (u) => u === null ? null : JSON.parse(u, void 0), i = (t = n.getItem(r)) != null ? t : null;
80
- return i instanceof Promise ? i.then(o) : o(i);
81
- },
82
- setItem: (r, t) => n.setItem(r, JSON.stringify(t, void 0)),
83
- removeItem: (r) => n.removeItem(r)
84
- };
85
- }
86
- const wt = (s) => (a) => {
87
- try {
88
- const n = s(a);
89
- return n instanceof Promise ? n : {
90
- then(e) {
91
- return wt(e)(n);
92
- },
93
- catch(e) {
94
- return this;
95
- }
96
- };
97
- } catch (n) {
98
- return {
99
- then(e) {
100
- return this;
101
- },
102
- catch(e) {
103
- return wt(e)(n);
104
- }
105
- };
106
- }
107
- }, ue = (s, a) => (n, e, r) => {
108
- let t = {
109
- storage: Qt(() => localStorage),
110
- partialize: (l) => l,
111
- version: 0,
112
- merge: (l, v) => ({
113
- ...v,
114
- ...l
115
- }),
116
- ...a
117
- }, o = !1;
118
- const i = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set();
119
- let c = t.storage;
120
- if (!c)
121
- return s(
122
- (...l) => {
123
- console.warn(
124
- `[zustand persist middleware] Unable to update item '${t.name}', the given storage is currently unavailable.`
125
- ), n(...l);
126
- },
127
- e,
128
- r
129
- );
130
- const d = () => {
131
- const l = t.partialize({ ...e() });
132
- return c.setItem(t.name, {
133
- state: l,
134
- version: t.version
135
- });
136
- }, f = r.setState;
137
- r.setState = (l, v) => (f(l, v), d());
138
- const h = s(
139
- (...l) => (n(...l), d()),
140
- e,
141
- r
142
- );
143
- r.getInitialState = () => h;
144
- let y;
145
- const S = () => {
146
- var l, v;
147
- if (!c) return;
148
- o = !1, i.forEach((D) => {
149
- var b;
150
- return D((b = e()) != null ? b : h);
151
- });
152
- const g = ((v = t.onRehydrateStorage) == null ? void 0 : v.call(t, (l = e()) != null ? l : h)) || void 0;
153
- return wt(c.getItem.bind(c))(t.name).then((D) => {
154
- if (D)
155
- if (typeof D.version == "number" && D.version !== t.version) {
156
- if (t.migrate) {
157
- const b = t.migrate(
158
- D.state,
159
- D.version
160
- );
161
- return b instanceof Promise ? b.then((z) => [!0, z]) : [!0, b];
162
- }
163
- console.error(
164
- "State loaded from storage couldn't be migrated since no migrate function was provided"
165
- );
166
- } else
167
- return [!1, D.state];
168
- return [!1, void 0];
169
- }).then((D) => {
170
- var b;
171
- const [z, P] = D;
172
- if (y = t.merge(
173
- P,
174
- (b = e()) != null ? b : h
175
- ), n(y, !0), z)
176
- return d();
177
- }).then(() => {
178
- g == null || g(y, void 0), y = e(), o = !0, u.forEach((D) => D(y));
179
- }).catch((D) => {
180
- g == null || g(void 0, D);
181
- });
182
- };
183
- return r.persist = {
184
- setOptions: (l) => {
185
- t = {
186
- ...t,
187
- ...l
188
- }, l.storage && (c = l.storage);
189
- },
190
- clearStorage: () => {
191
- c == null || c.removeItem(t.name);
192
- },
193
- getOptions: () => t,
194
- rehydrate: () => S(),
195
- hasHydrated: () => o,
196
- onHydrate: (l) => (i.add(l), () => {
197
- i.delete(l);
198
- }),
199
- onFinishHydration: (l) => (u.add(l), () => {
200
- u.delete(l);
201
- })
202
- }, t.skipHydration || S(), y || h;
203
- }, ce = ue, j = ae()(
204
- ce(
205
- (s, a) => ({
206
- rawTasks: [],
207
- transformedTasks: [],
208
- bottomRowCells: [],
209
- selectedScale: "month",
210
- currentTask: null,
211
- dragOffsets: {},
212
- setCurrentTask: (n) => s({ currentTask: n }),
213
- setSelectedScale: (n) => s({ selectedScale: n }),
214
- setRawTasks: (n) => s({ rawTasks: n }),
215
- setBottomRowCells: (n) => s({ bottomRowCells: n }),
216
- setTransformedTasks: (n) => s({ transformedTasks: n }),
217
- setDragOffset: (n, e) => s((r) => ({
218
- dragOffsets: { ...r.dragOffsets, [n]: e }
219
- })),
220
- clearDragOffset: (n) => s((e) => {
221
- const { [n]: r, ...t } = e.dragOffsets;
222
- return { dragOffsets: t };
223
- }),
224
- getCurrentDragOffset: (n) => a().dragOffsets[n] || null,
225
- getTotalWidth: () => a().bottomRowCells.reduce((e, r) => e + r.widthPx, 0)
226
- }),
227
- {
228
- name: "gantt-storage",
229
- storage: Qt(() => sessionStorage),
230
- partialize: (s) => ({ selectedScale: s.selectedScale })
231
- }
232
- )
233
- );
234
- function B(s) {
235
- return s && s.__esModule && Object.prototype.hasOwnProperty.call(s, "default") ? s.default : s;
236
- }
237
- var at = { exports: {} }, le = at.exports, Ot;
238
- function fe() {
239
- return Ot || (Ot = 1, (function(s, a) {
240
- (function(n, e) {
241
- s.exports = e();
242
- })(le, (function() {
243
- var n = 1e3, e = 6e4, r = 36e5, t = "millisecond", o = "second", i = "minute", u = "hour", c = "day", d = "week", f = "month", h = "quarter", y = "year", S = "date", l = "Invalid Date", v = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, g = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, D = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: function(E) {
244
- var O = ["th", "st", "nd", "rd"], x = E % 100;
245
- return "[" + E + (O[(x - 20) % 10] || O[x] || O[0]) + "]";
246
- } }, b = function(E, O, x) {
247
- var I = String(E);
248
- return !I || I.length >= O ? E : "" + Array(O + 1 - I.length).join(x) + E;
249
- }, z = { s: b, z: function(E) {
250
- var O = -E.utcOffset(), x = Math.abs(O), I = Math.floor(x / 60), M = x % 60;
251
- return (O <= 0 ? "+" : "-") + b(I, 2, "0") + ":" + b(M, 2, "0");
252
- }, m: function E(O, x) {
253
- if (O.date() < x.date()) return -E(x, O);
254
- var I = 12 * (x.year() - O.year()) + (x.month() - O.month()), M = O.clone().add(I, f), C = x - M < 0, L = O.clone().add(I + (C ? -1 : 1), f);
255
- return +(-(I + (x - M) / (C ? M - L : L - M)) || 0);
256
- }, a: function(E) {
257
- return E < 0 ? Math.ceil(E) || 0 : Math.floor(E);
258
- }, p: function(E) {
259
- return { M: f, y, w: d, d: c, D: S, h: u, m: i, s: o, ms: t, Q: h }[E] || String(E || "").toLowerCase().replace(/s$/, "");
260
- }, u: function(E) {
261
- return E === void 0;
262
- } }, P = "en", k = {};
263
- k[P] = D;
264
- var w = "$isDayjsObject", $ = function(E) {
265
- return E instanceof W || !(!E || !E[w]);
266
- }, p = function E(O, x, I) {
267
- var M;
268
- if (!O) return P;
269
- if (typeof O == "string") {
270
- var C = O.toLowerCase();
271
- k[C] && (M = C), x && (k[C] = x, M = C);
272
- var L = O.split("-");
273
- if (!M && L.length > 1) return E(L[0]);
274
- } else {
275
- var R = O.name;
276
- k[R] = O, M = R;
277
- }
278
- return !I && M && (P = M), M || !I && P;
279
- }, m = function(E, O) {
280
- if ($(E)) return E.clone();
281
- var x = typeof O == "object" ? O : {};
282
- return x.date = E, x.args = arguments, new W(x);
283
- }, T = z;
284
- T.l = p, T.i = $, T.w = function(E, O) {
285
- return m(E, { locale: O.$L, utc: O.$u, x: O.$x, $offset: O.$offset });
286
- };
287
- var W = (function() {
288
- function E(x) {
289
- this.$L = p(x.locale, null, !0), this.parse(x), this.$x = this.$x || x.x || {}, this[w] = !0;
290
- }
291
- var O = E.prototype;
292
- return O.parse = function(x) {
293
- this.$d = (function(I) {
294
- var M = I.date, C = I.utc;
295
- if (M === null) return /* @__PURE__ */ new Date(NaN);
296
- if (T.u(M)) return /* @__PURE__ */ new Date();
297
- if (M instanceof Date) return new Date(M);
298
- if (typeof M == "string" && !/Z$/i.test(M)) {
299
- var L = M.match(v);
300
- if (L) {
301
- var R = L[2] - 1 || 0, A = (L[7] || "0").substring(0, 3);
302
- return C ? new Date(Date.UTC(L[1], R, L[3] || 1, L[4] || 0, L[5] || 0, L[6] || 0, A)) : new Date(L[1], R, L[3] || 1, L[4] || 0, L[5] || 0, L[6] || 0, A);
303
- }
304
- }
305
- return new Date(M);
306
- })(x), this.init();
307
- }, O.init = function() {
308
- var x = this.$d;
309
- this.$y = x.getFullYear(), this.$M = x.getMonth(), this.$D = x.getDate(), this.$W = x.getDay(), this.$H = x.getHours(), this.$m = x.getMinutes(), this.$s = x.getSeconds(), this.$ms = x.getMilliseconds();
310
- }, O.$utils = function() {
311
- return T;
312
- }, O.isValid = function() {
313
- return this.$d.toString() !== l;
314
- }, O.isSame = function(x, I) {
315
- var M = m(x);
316
- return this.startOf(I) <= M && M <= this.endOf(I);
317
- }, O.isAfter = function(x, I) {
318
- return m(x) < this.startOf(I);
319
- }, O.isBefore = function(x, I) {
320
- return this.endOf(I) < m(x);
321
- }, O.$g = function(x, I, M) {
322
- return T.u(x) ? this[I] : this.set(M, x);
323
- }, O.unix = function() {
324
- return Math.floor(this.valueOf() / 1e3);
325
- }, O.valueOf = function() {
326
- return this.$d.getTime();
327
- }, O.startOf = function(x, I) {
328
- var M = this, C = !!T.u(I) || I, L = T.p(x), R = function(X, U) {
329
- var V = T.w(M.$u ? Date.UTC(M.$y, U, X) : new Date(M.$y, U, X), M);
330
- return C ? V : V.endOf(c);
331
- }, A = function(X, U) {
332
- return T.w(M.toDate()[X].apply(M.toDate("s"), (C ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(U)), M);
333
- }, F = this.$W, Y = this.$M, q = this.$D, K = "set" + (this.$u ? "UTC" : "");
334
- switch (L) {
335
- case y:
336
- return C ? R(1, 0) : R(31, 11);
337
- case f:
338
- return C ? R(1, Y) : R(0, Y + 1);
339
- case d:
340
- var G = this.$locale().weekStart || 0, nt = (F < G ? F + 7 : F) - G;
341
- return R(C ? q - nt : q + (6 - nt), Y);
342
- case c:
343
- case S:
344
- return A(K + "Hours", 0);
345
- case u:
346
- return A(K + "Minutes", 1);
347
- case i:
348
- return A(K + "Seconds", 2);
349
- case o:
350
- return A(K + "Milliseconds", 3);
351
- default:
352
- return this.clone();
353
- }
354
- }, O.endOf = function(x) {
355
- return this.startOf(x, !1);
356
- }, O.$set = function(x, I) {
357
- var M, C = T.p(x), L = "set" + (this.$u ? "UTC" : ""), R = (M = {}, M[c] = L + "Date", M[S] = L + "Date", M[f] = L + "Month", M[y] = L + "FullYear", M[u] = L + "Hours", M[i] = L + "Minutes", M[o] = L + "Seconds", M[t] = L + "Milliseconds", M)[C], A = C === c ? this.$D + (I - this.$W) : I;
358
- if (C === f || C === y) {
359
- var F = this.clone().set(S, 1);
360
- F.$d[R](A), F.init(), this.$d = F.set(S, Math.min(this.$D, F.daysInMonth())).$d;
361
- } else R && this.$d[R](A);
362
- return this.init(), this;
363
- }, O.set = function(x, I) {
364
- return this.clone().$set(x, I);
365
- }, O.get = function(x) {
366
- return this[T.p(x)]();
367
- }, O.add = function(x, I) {
368
- var M, C = this;
369
- x = Number(x);
370
- var L = T.p(I), R = function(Y) {
371
- var q = m(C);
372
- return T.w(q.date(q.date() + Math.round(Y * x)), C);
373
- };
374
- if (L === f) return this.set(f, this.$M + x);
375
- if (L === y) return this.set(y, this.$y + x);
376
- if (L === c) return R(1);
377
- if (L === d) return R(7);
378
- var A = (M = {}, M[i] = e, M[u] = r, M[o] = n, M)[L] || 1, F = this.$d.getTime() + x * A;
379
- return T.w(F, this);
380
- }, O.subtract = function(x, I) {
381
- return this.add(-1 * x, I);
382
- }, O.format = function(x) {
383
- var I = this, M = this.$locale();
384
- if (!this.isValid()) return M.invalidDate || l;
385
- var C = x || "YYYY-MM-DDTHH:mm:ssZ", L = T.z(this), R = this.$H, A = this.$m, F = this.$M, Y = M.weekdays, q = M.months, K = M.meridiem, G = function(U, V, rt, ot) {
386
- return U && (U[V] || U(I, C)) || rt[V].slice(0, ot);
387
- }, nt = function(U) {
388
- return T.s(R % 12 || 12, U, "0");
389
- }, X = K || function(U, V, rt) {
390
- var ot = U < 12 ? "AM" : "PM";
391
- return rt ? ot.toLowerCase() : ot;
392
- };
393
- return C.replace(g, (function(U, V) {
394
- return V || (function(rt) {
395
- switch (rt) {
396
- case "YY":
397
- return String(I.$y).slice(-2);
398
- case "YYYY":
399
- return T.s(I.$y, 4, "0");
400
- case "M":
401
- return F + 1;
402
- case "MM":
403
- return T.s(F + 1, 2, "0");
404
- case "MMM":
405
- return G(M.monthsShort, F, q, 3);
406
- case "MMMM":
407
- return G(q, F);
408
- case "D":
409
- return I.$D;
410
- case "DD":
411
- return T.s(I.$D, 2, "0");
412
- case "d":
413
- return String(I.$W);
414
- case "dd":
415
- return G(M.weekdaysMin, I.$W, Y, 2);
416
- case "ddd":
417
- return G(M.weekdaysShort, I.$W, Y, 3);
418
- case "dddd":
419
- return Y[I.$W];
420
- case "H":
421
- return String(R);
422
- case "HH":
423
- return T.s(R, 2, "0");
424
- case "h":
425
- return nt(1);
426
- case "hh":
427
- return nt(2);
428
- case "a":
429
- return X(R, A, !0);
430
- case "A":
431
- return X(R, A, !1);
432
- case "m":
433
- return String(A);
434
- case "mm":
435
- return T.s(A, 2, "0");
436
- case "s":
437
- return String(I.$s);
438
- case "ss":
439
- return T.s(I.$s, 2, "0");
440
- case "SSS":
441
- return T.s(I.$ms, 3, "0");
442
- case "Z":
443
- return L;
444
- }
445
- return null;
446
- })(U) || L.replace(":", "");
447
- }));
448
- }, O.utcOffset = function() {
449
- return 15 * -Math.round(this.$d.getTimezoneOffset() / 15);
450
- }, O.diff = function(x, I, M) {
451
- var C, L = this, R = T.p(I), A = m(x), F = (A.utcOffset() - this.utcOffset()) * e, Y = this - A, q = function() {
452
- return T.m(L, A);
453
- };
454
- switch (R) {
455
- case y:
456
- C = q() / 12;
457
- break;
458
- case f:
459
- C = q();
460
- break;
461
- case h:
462
- C = q() / 3;
463
- break;
464
- case d:
465
- C = (Y - F) / 6048e5;
466
- break;
467
- case c:
468
- C = (Y - F) / 864e5;
469
- break;
470
- case u:
471
- C = Y / r;
472
- break;
473
- case i:
474
- C = Y / e;
475
- break;
476
- case o:
477
- C = Y / n;
478
- break;
479
- default:
480
- C = Y;
481
- }
482
- return M ? C : T.a(C);
483
- }, O.daysInMonth = function() {
484
- return this.endOf(f).$D;
485
- }, O.$locale = function() {
486
- return k[this.$L];
487
- }, O.locale = function(x, I) {
488
- if (!x) return this.$L;
489
- var M = this.clone(), C = p(x, I, !0);
490
- return C && (M.$L = C), M;
491
- }, O.clone = function() {
492
- return T.w(this.$d, this);
493
- }, O.toDate = function() {
494
- return new Date(this.valueOf());
495
- }, O.toJSON = function() {
496
- return this.isValid() ? this.toISOString() : null;
497
- }, O.toISOString = function() {
498
- return this.$d.toISOString();
499
- }, O.toString = function() {
500
- return this.$d.toUTCString();
501
- }, E;
502
- })(), H = W.prototype;
503
- return m.prototype = H, [["$ms", t], ["$s", o], ["$m", i], ["$H", u], ["$W", c], ["$M", f], ["$y", y], ["$D", S]].forEach((function(E) {
504
- H[E[1]] = function(O) {
505
- return this.$g(O, E[0], E[1]);
506
- };
507
- })), m.extend = function(E, O) {
508
- return E.$i || (E(O, W, m), E.$i = !0), m;
509
- }, m.locale = p, m.isDayjs = $, m.unix = function(E) {
510
- return m(1e3 * E);
511
- }, m.en = k[P], m.Ls = k, m.p = {}, m;
512
- }));
513
- })(at)), at.exports;
514
- }
515
- var de = fe();
516
- const N = /* @__PURE__ */ B(de);
517
- var ut = { exports: {} }, he = ut.exports, kt;
518
- function me() {
519
- return kt || (kt = 1, (function(s, a) {
520
- (function(n, e) {
521
- s.exports = e();
522
- })(he, (function() {
523
- var n, e, r = 1e3, t = 6e4, o = 36e5, i = 864e5, u = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, c = 31536e6, d = 2628e6, f = /^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/, h = { years: c, months: d, days: i, hours: o, minutes: t, seconds: r, milliseconds: 1, weeks: 6048e5 }, y = function(k) {
524
- return k instanceof z;
525
- }, S = function(k, w, $) {
526
- return new z(k, $, w.$l);
527
- }, l = function(k) {
528
- return e.p(k) + "s";
529
- }, v = function(k) {
530
- return k < 0;
531
- }, g = function(k) {
532
- return v(k) ? Math.ceil(k) : Math.floor(k);
533
- }, D = function(k) {
534
- return Math.abs(k);
535
- }, b = function(k, w) {
536
- return k ? v(k) ? { negative: !0, format: "" + D(k) + w } : { negative: !1, format: "" + k + w } : { negative: !1, format: "" };
537
- }, z = (function() {
538
- function k($, p, m) {
539
- var T = this;
540
- if (this.$d = {}, this.$l = m, $ === void 0 && (this.$ms = 0, this.parseFromMilliseconds()), p) return S($ * h[l(p)], this);
541
- if (typeof $ == "number") return this.$ms = $, this.parseFromMilliseconds(), this;
542
- if (typeof $ == "object") return Object.keys($).forEach((function(E) {
543
- T.$d[l(E)] = $[E];
544
- })), this.calMilliseconds(), this;
545
- if (typeof $ == "string") {
546
- var W = $.match(f);
547
- if (W) {
548
- var H = W.slice(2).map((function(E) {
549
- return E != null ? Number(E) : 0;
550
- }));
551
- return this.$d.years = H[0], this.$d.months = H[1], this.$d.weeks = H[2], this.$d.days = H[3], this.$d.hours = H[4], this.$d.minutes = H[5], this.$d.seconds = H[6], this.calMilliseconds(), this;
552
- }
553
- }
554
- return this;
555
- }
556
- var w = k.prototype;
557
- return w.calMilliseconds = function() {
558
- var $ = this;
559
- this.$ms = Object.keys(this.$d).reduce((function(p, m) {
560
- return p + ($.$d[m] || 0) * h[m];
561
- }), 0);
562
- }, w.parseFromMilliseconds = function() {
563
- var $ = this.$ms;
564
- this.$d.years = g($ / c), $ %= c, this.$d.months = g($ / d), $ %= d, this.$d.days = g($ / i), $ %= i, this.$d.hours = g($ / o), $ %= o, this.$d.minutes = g($ / t), $ %= t, this.$d.seconds = g($ / r), $ %= r, this.$d.milliseconds = $;
565
- }, w.toISOString = function() {
566
- var $ = b(this.$d.years, "Y"), p = b(this.$d.months, "M"), m = +this.$d.days || 0;
567
- this.$d.weeks && (m += 7 * this.$d.weeks);
568
- var T = b(m, "D"), W = b(this.$d.hours, "H"), H = b(this.$d.minutes, "M"), E = this.$d.seconds || 0;
569
- this.$d.milliseconds && (E += this.$d.milliseconds / 1e3, E = Math.round(1e3 * E) / 1e3);
570
- var O = b(E, "S"), x = $.negative || p.negative || T.negative || W.negative || H.negative || O.negative, I = W.format || H.format || O.format ? "T" : "", M = (x ? "-" : "") + "P" + $.format + p.format + T.format + I + W.format + H.format + O.format;
571
- return M === "P" || M === "-P" ? "P0D" : M;
572
- }, w.toJSON = function() {
573
- return this.toISOString();
574
- }, w.format = function($) {
575
- var p = $ || "YYYY-MM-DDTHH:mm:ss", m = { Y: this.$d.years, YY: e.s(this.$d.years, 2, "0"), YYYY: e.s(this.$d.years, 4, "0"), M: this.$d.months, MM: e.s(this.$d.months, 2, "0"), D: this.$d.days, DD: e.s(this.$d.days, 2, "0"), H: this.$d.hours, HH: e.s(this.$d.hours, 2, "0"), m: this.$d.minutes, mm: e.s(this.$d.minutes, 2, "0"), s: this.$d.seconds, ss: e.s(this.$d.seconds, 2, "0"), SSS: e.s(this.$d.milliseconds, 3, "0") };
576
- return p.replace(u, (function(T, W) {
577
- return W || String(m[T]);
578
- }));
579
- }, w.as = function($) {
580
- return this.$ms / h[l($)];
581
- }, w.get = function($) {
582
- var p = this.$ms, m = l($);
583
- return m === "milliseconds" ? p %= 1e3 : p = m === "weeks" ? g(p / h[m]) : this.$d[m], p || 0;
584
- }, w.add = function($, p, m) {
585
- var T;
586
- return T = p ? $ * h[l(p)] : y($) ? $.$ms : S($, this).$ms, S(this.$ms + T * (m ? -1 : 1), this);
587
- }, w.subtract = function($, p) {
588
- return this.add($, p, !0);
589
- }, w.locale = function($) {
590
- var p = this.clone();
591
- return p.$l = $, p;
592
- }, w.clone = function() {
593
- return S(this.$ms, this);
594
- }, w.humanize = function($) {
595
- return n().add(this.$ms, "ms").locale(this.$l).fromNow(!$);
596
- }, w.valueOf = function() {
597
- return this.asMilliseconds();
598
- }, w.milliseconds = function() {
599
- return this.get("milliseconds");
600
- }, w.asMilliseconds = function() {
601
- return this.as("milliseconds");
602
- }, w.seconds = function() {
603
- return this.get("seconds");
604
- }, w.asSeconds = function() {
605
- return this.as("seconds");
606
- }, w.minutes = function() {
607
- return this.get("minutes");
608
- }, w.asMinutes = function() {
609
- return this.as("minutes");
610
- }, w.hours = function() {
611
- return this.get("hours");
612
- }, w.asHours = function() {
613
- return this.as("hours");
614
- }, w.days = function() {
615
- return this.get("days");
616
- }, w.asDays = function() {
617
- return this.as("days");
618
- }, w.weeks = function() {
619
- return this.get("weeks");
620
- }, w.asWeeks = function() {
621
- return this.as("weeks");
622
- }, w.months = function() {
623
- return this.get("months");
624
- }, w.asMonths = function() {
625
- return this.as("months");
626
- }, w.years = function() {
627
- return this.get("years");
628
- }, w.asYears = function() {
629
- return this.as("years");
630
- }, k;
631
- })(), P = function(k, w, $) {
632
- return k.add(w.years() * $, "y").add(w.months() * $, "M").add(w.days() * $, "d").add(w.hours() * $, "h").add(w.minutes() * $, "m").add(w.seconds() * $, "s").add(w.milliseconds() * $, "ms");
633
- };
634
- return function(k, w, $) {
635
- n = $, e = $().$utils(), $.duration = function(T, W) {
636
- var H = $.locale();
637
- return S(T, { $l: H }, W);
638
- }, $.isDuration = y;
639
- var p = w.prototype.add, m = w.prototype.subtract;
640
- w.prototype.add = function(T, W) {
641
- return y(T) ? P(this, T, 1) : p.bind(this)(T, W);
642
- }, w.prototype.subtract = function(T, W) {
643
- return y(T) ? P(this, T, -1) : m.bind(this)(T, W);
644
- };
645
- };
646
- }));
647
- })(ut)), ut.exports;
648
- }
649
- var pe = me();
650
- const ge = /* @__PURE__ */ B(pe);
651
- var ct = { exports: {} }, $e = ct.exports, Tt;
652
- function ve() {
653
- return Tt || (Tt = 1, (function(s, a) {
654
- (function(n, e) {
655
- s.exports = e();
656
- })($e, (function() {
657
- return function(n, e, r) {
658
- e.prototype.isBetween = function(t, o, i, u) {
659
- var c = r(t), d = r(o), f = (u = u || "()")[0] === "(", h = u[1] === ")";
660
- return (f ? this.isAfter(c, i) : !this.isBefore(c, i)) && (h ? this.isBefore(d, i) : !this.isAfter(d, i)) || (f ? this.isBefore(c, i) : !this.isAfter(c, i)) && (h ? this.isAfter(d, i) : !this.isBefore(d, i));
661
- };
662
- };
663
- }));
664
- })(ct)), ct.exports;
665
- }
666
- var Se = ve();
667
- const ye = /* @__PURE__ */ B(Se);
668
- var lt = { exports: {} }, be = lt.exports, Et;
669
- function xe() {
670
- return Et || (Et = 1, (function(s, a) {
671
- (function(n, e) {
672
- s.exports = e();
673
- })(be, (function() {
674
- var n = "day";
675
- return function(e, r, t) {
676
- var o = function(c) {
677
- return c.add(4 - c.isoWeekday(), n);
678
- }, i = r.prototype;
679
- i.isoWeekYear = function() {
680
- return o(this).year();
681
- }, i.isoWeek = function(c) {
682
- if (!this.$utils().u(c)) return this.add(7 * (c - this.isoWeek()), n);
683
- var d, f, h, y, S = o(this), l = (d = this.isoWeekYear(), f = this.$u, h = (f ? t.utc : t)().year(d).startOf("year"), y = 4 - h.isoWeekday(), h.isoWeekday() > 4 && (y += 7), h.add(y, n));
684
- return S.diff(l, "week") + 1;
685
- }, i.isoWeekday = function(c) {
686
- return this.$utils().u(c) ? this.day() || 7 : this.day(this.day() % 7 ? c : c - 7);
687
- };
688
- var u = i.startOf;
689
- i.startOf = function(c, d) {
690
- var f = this.$utils(), h = !!f.u(d) || d;
691
- return f.p(c) === "isoweek" ? h ? this.date(this.date() - (this.isoWeekday() - 1)).startOf("day") : this.date(this.date() - 1 - (this.isoWeekday() - 1) + 7).endOf("day") : u.bind(this)(c, d);
692
- };
693
- };
694
- }));
695
- })(lt)), lt.exports;
696
- }
697
- var we = xe();
698
- const Me = /* @__PURE__ */ B(we);
699
- var ft = { exports: {} }, De = ft.exports, It;
700
- function Oe() {
701
- return It || (It = 1, (function(s, a) {
702
- (function(n, e) {
703
- s.exports = e();
704
- })(De, (function() {
705
- return function(n, e) {
706
- e.prototype.isSameOrAfter = function(r, t) {
707
- return this.isSame(r, t) || this.isAfter(r, t);
708
- };
709
- };
710
- }));
711
- })(ft)), ft.exports;
712
- }
713
- var ke = Oe();
714
- const Te = /* @__PURE__ */ B(ke);
715
- var dt = { exports: {} }, Ee = dt.exports, zt;
716
- function Ie() {
717
- return zt || (zt = 1, (function(s, a) {
718
- (function(n, e) {
719
- s.exports = e();
720
- })(Ee, (function() {
721
- return function(n, e) {
722
- e.prototype.isSameOrBefore = function(r, t) {
723
- return this.isSame(r, t) || this.isBefore(r, t);
724
- };
725
- };
726
- }));
727
- })(dt)), dt.exports;
728
- }
729
- var ze = Ie();
730
- const Ce = /* @__PURE__ */ B(ze);
731
- var ht = { exports: {} }, Le = ht.exports, Ct;
732
- function Pe() {
733
- return Ct || (Ct = 1, (function(s, a) {
734
- (function(n, e) {
735
- s.exports = e();
736
- })(Le, (function() {
737
- return function(n, e, r) {
738
- e.prototype.isToday = function() {
739
- var t = "YYYY-MM-DD", o = r();
740
- return this.format(t) === o.format(t);
741
- };
742
- };
743
- }));
744
- })(ht)), ht.exports;
745
- }
746
- var Re = Pe();
747
- const _e = /* @__PURE__ */ B(Re);
748
- var mt = { exports: {} }, We = mt.exports, Lt;
749
- function Ne() {
750
- return Lt || (Lt = 1, (function(s, a) {
751
- (function(n, e) {
752
- s.exports = e();
753
- })(We, (function() {
754
- return function(n, e, r) {
755
- var t = e.prototype, o = function(f) {
756
- return f && (f.indexOf ? f : f.s);
757
- }, i = function(f, h, y, S, l) {
758
- var v = f.name ? f : f.$locale(), g = o(v[h]), D = o(v[y]), b = g || D.map((function(P) {
759
- return P.slice(0, S);
760
- }));
761
- if (!l) return b;
762
- var z = v.weekStart;
763
- return b.map((function(P, k) {
764
- return b[(k + (z || 0)) % 7];
765
- }));
766
- }, u = function() {
767
- return r.Ls[r.locale()];
768
- }, c = function(f, h) {
769
- return f.formats[h] || (function(y) {
770
- return y.replace(/(\[[^\]]+])|(MMMM|MM|DD|dddd)/g, (function(S, l, v) {
771
- return l || v.slice(1);
772
- }));
773
- })(f.formats[h.toUpperCase()]);
774
- }, d = function() {
775
- var f = this;
776
- return { months: function(h) {
777
- return h ? h.format("MMMM") : i(f, "months");
778
- }, monthsShort: function(h) {
779
- return h ? h.format("MMM") : i(f, "monthsShort", "months", 3);
780
- }, firstDayOfWeek: function() {
781
- return f.$locale().weekStart || 0;
782
- }, weekdays: function(h) {
783
- return h ? h.format("dddd") : i(f, "weekdays");
784
- }, weekdaysMin: function(h) {
785
- return h ? h.format("dd") : i(f, "weekdaysMin", "weekdays", 2);
786
- }, weekdaysShort: function(h) {
787
- return h ? h.format("ddd") : i(f, "weekdaysShort", "weekdays", 3);
788
- }, longDateFormat: function(h) {
789
- return c(f.$locale(), h);
790
- }, meridiem: this.$locale().meridiem, ordinal: this.$locale().ordinal };
791
- };
792
- t.localeData = function() {
793
- return d.bind(this)();
794
- }, r.localeData = function() {
795
- var f = u();
796
- return { firstDayOfWeek: function() {
797
- return f.weekStart || 0;
798
- }, weekdays: function() {
799
- return r.weekdays();
800
- }, weekdaysShort: function() {
801
- return r.weekdaysShort();
802
- }, weekdaysMin: function() {
803
- return r.weekdaysMin();
804
- }, months: function() {
805
- return r.months();
806
- }, monthsShort: function() {
807
- return r.monthsShort();
808
- }, longDateFormat: function(h) {
809
- return c(f, h);
810
- }, meridiem: f.meridiem, ordinal: f.ordinal };
811
- }, r.months = function() {
812
- return i(u(), "months");
813
- }, r.monthsShort = function() {
814
- return i(u(), "monthsShort", "months", 3);
815
- }, r.weekdays = function(f) {
816
- return i(u(), "weekdays", null, null, f);
817
- }, r.weekdaysShort = function(f) {
818
- return i(u(), "weekdaysShort", "weekdays", 3, f);
819
- }, r.weekdaysMin = function(f) {
820
- return i(u(), "weekdaysMin", "weekdays", 2, f);
821
- };
822
- };
823
- }));
824
- })(mt)), mt.exports;
825
- }
826
- var Ae = Ne();
827
- const Fe = /* @__PURE__ */ B(Ae);
828
- var pt = { exports: {} }, He = pt.exports, Pt;
829
- function Ye() {
830
- return Pt || (Pt = 1, (function(s, a) {
831
- (function(n, e) {
832
- s.exports = e();
833
- })(He, (function() {
834
- return function(n, e, r) {
835
- var t = function(o, i) {
836
- if (!i || !i.length || i.length === 1 && !i[0] || i.length === 1 && Array.isArray(i[0]) && !i[0].length) return null;
837
- var u;
838
- i.length === 1 && i[0].length > 0 && (i = i[0]), u = (i = i.filter((function(d) {
839
- return d;
840
- })))[0];
841
- for (var c = 1; c < i.length; c += 1) i[c].isValid() && !i[c][o](u) || (u = i[c]);
842
- return u;
843
- };
844
- r.max = function() {
845
- var o = [].slice.call(arguments, 0);
846
- return t("isAfter", o);
847
- }, r.min = function() {
848
- var o = [].slice.call(arguments, 0);
849
- return t("isBefore", o);
850
- };
851
- };
852
- }));
853
- })(pt)), pt.exports;
854
- }
855
- var Ue = Ye();
856
- const je = /* @__PURE__ */ B(Ue);
857
- var gt = { exports: {} }, Be = gt.exports, Rt;
858
- function qe() {
859
- return Rt || (Rt = 1, (function(s, a) {
860
- (function(n, e) {
861
- s.exports = e();
862
- })(Be, (function() {
863
- var n = { year: 0, month: 1, day: 2, hour: 3, minute: 4, second: 5 }, e = {};
864
- return function(r, t, o) {
865
- var i, u = function(h, y, S) {
866
- S === void 0 && (S = {});
867
- var l = new Date(h), v = (function(g, D) {
868
- D === void 0 && (D = {});
869
- var b = D.timeZoneName || "short", z = g + "|" + b, P = e[z];
870
- return P || (P = new Intl.DateTimeFormat("en-US", { hour12: !1, timeZone: g, year: "numeric", month: "2-digit", day: "2-digit", hour: "2-digit", minute: "2-digit", second: "2-digit", timeZoneName: b }), e[z] = P), P;
871
- })(y, S);
872
- return v.formatToParts(l);
873
- }, c = function(h, y) {
874
- for (var S = u(h, y), l = [], v = 0; v < S.length; v += 1) {
875
- var g = S[v], D = g.type, b = g.value, z = n[D];
876
- z >= 0 && (l[z] = parseInt(b, 10));
877
- }
878
- var P = l[3], k = P === 24 ? 0 : P, w = l[0] + "-" + l[1] + "-" + l[2] + " " + k + ":" + l[4] + ":" + l[5] + ":000", $ = +h;
879
- return (o.utc(w).valueOf() - ($ -= $ % 1e3)) / 6e4;
880
- }, d = t.prototype;
881
- d.tz = function(h, y) {
882
- h === void 0 && (h = i);
883
- var S, l = this.utcOffset(), v = this.toDate(), g = v.toLocaleString("en-US", { timeZone: h }), D = Math.round((v - new Date(g)) / 1e3 / 60), b = 15 * -Math.round(v.getTimezoneOffset() / 15) - D;
884
- if (!Number(b)) S = this.utcOffset(0, y);
885
- else if (S = o(g, { locale: this.$L }).$set("millisecond", this.$ms).utcOffset(b, !0), y) {
886
- var z = S.utcOffset();
887
- S = S.add(l - z, "minute");
888
- }
889
- return S.$x.$timezone = h, S;
890
- }, d.offsetName = function(h) {
891
- var y = this.$x.$timezone || o.tz.guess(), S = u(this.valueOf(), y, { timeZoneName: h }).find((function(l) {
892
- return l.type.toLowerCase() === "timezonename";
893
- }));
894
- return S && S.value;
895
- };
896
- var f = d.startOf;
897
- d.startOf = function(h, y) {
898
- if (!this.$x || !this.$x.$timezone) return f.call(this, h, y);
899
- var S = o(this.format("YYYY-MM-DD HH:mm:ss:SSS"), { locale: this.$L });
900
- return f.call(S, h, y).tz(this.$x.$timezone, !0);
901
- }, o.tz = function(h, y, S) {
902
- var l = S && y, v = S || y || i, g = c(+o(), v);
903
- if (typeof h != "string") return o(h).tz(v);
904
- var D = (function(k, w, $) {
905
- var p = k - 60 * w * 1e3, m = c(p, $);
906
- if (w === m) return [p, w];
907
- var T = c(p -= 60 * (m - w) * 1e3, $);
908
- return m === T ? [p, m] : [k - 60 * Math.min(m, T) * 1e3, Math.max(m, T)];
909
- })(o.utc(h, l).valueOf(), g, v), b = D[0], z = D[1], P = o(b).utcOffset(z);
910
- return P.$x.$timezone = v, P;
911
- }, o.tz.guess = function() {
912
- return Intl.DateTimeFormat().resolvedOptions().timeZone;
913
- }, o.tz.setDefault = function(h) {
914
- i = h;
915
- };
916
- };
917
- }));
918
- })(gt)), gt.exports;
919
- }
920
- var Ve = qe();
921
- const Ge = /* @__PURE__ */ B(Ve);
922
- var $t = { exports: {} }, Xe = $t.exports, _t;
923
- function Ze() {
924
- return _t || (_t = 1, (function(s, a) {
925
- (function(n, e) {
926
- s.exports = e();
927
- })(Xe, (function() {
928
- return function(n, e, r) {
929
- r.updateLocale = function(t, o) {
930
- var i = r.Ls[t];
931
- if (i) return (o ? Object.keys(o) : []).forEach((function(u) {
932
- i[u] = o[u];
933
- })), i;
934
- };
935
- };
936
- }));
937
- })($t)), $t.exports;
938
- }
939
- var Je = Ze();
940
- const Ke = /* @__PURE__ */ B(Je);
941
- var vt = { exports: {} }, Qe = vt.exports, Wt;
942
- function tn() {
943
- return Wt || (Wt = 1, (function(s, a) {
944
- (function(n, e) {
945
- s.exports = e();
946
- })(Qe, (function() {
947
- var n = "minute", e = /[+-]\d\d(?::?\d\d)?/g, r = /([+-]|\d\d)/g;
948
- return function(t, o, i) {
949
- var u = o.prototype;
950
- i.utc = function(l) {
951
- var v = { date: l, utc: !0, args: arguments };
952
- return new o(v);
953
- }, u.utc = function(l) {
954
- var v = i(this.toDate(), { locale: this.$L, utc: !0 });
955
- return l ? v.add(this.utcOffset(), n) : v;
956
- }, u.local = function() {
957
- return i(this.toDate(), { locale: this.$L, utc: !1 });
958
- };
959
- var c = u.parse;
960
- u.parse = function(l) {
961
- l.utc && (this.$u = !0), this.$utils().u(l.$offset) || (this.$offset = l.$offset), c.call(this, l);
962
- };
963
- var d = u.init;
964
- u.init = function() {
965
- if (this.$u) {
966
- var l = this.$d;
967
- this.$y = l.getUTCFullYear(), this.$M = l.getUTCMonth(), this.$D = l.getUTCDate(), this.$W = l.getUTCDay(), this.$H = l.getUTCHours(), this.$m = l.getUTCMinutes(), this.$s = l.getUTCSeconds(), this.$ms = l.getUTCMilliseconds();
968
- } else d.call(this);
969
- };
970
- var f = u.utcOffset;
971
- u.utcOffset = function(l, v) {
972
- var g = this.$utils().u;
973
- if (g(l)) return this.$u ? 0 : g(this.$offset) ? f.call(this) : this.$offset;
974
- if (typeof l == "string" && (l = (function(P) {
975
- P === void 0 && (P = "");
976
- var k = P.match(e);
977
- if (!k) return null;
978
- var w = ("" + k[0]).match(r) || ["-", 0, 0], $ = w[0], p = 60 * +w[1] + +w[2];
979
- return p === 0 ? 0 : $ === "+" ? p : -p;
980
- })(l), l === null)) return this;
981
- var D = Math.abs(l) <= 16 ? 60 * l : l;
982
- if (D === 0) return this.utc(v);
983
- var b = this.clone();
984
- if (v) return b.$offset = D, b.$u = !1, b;
985
- var z = this.$u ? this.toDate().getTimezoneOffset() : -1 * this.utcOffset();
986
- return (b = this.local().add(D + z, n)).$offset = D, b.$x.$localOffset = z, b;
987
- };
988
- var h = u.format;
989
- u.format = function(l) {
990
- var v = l || (this.$u ? "YYYY-MM-DDTHH:mm:ss[Z]" : "");
991
- return h.call(this, v);
992
- }, u.valueOf = function() {
993
- var l = this.$utils().u(this.$offset) ? 0 : this.$offset + (this.$x.$localOffset || this.$d.getTimezoneOffset());
994
- return this.$d.valueOf() - 6e4 * l;
995
- }, u.isUTC = function() {
996
- return !!this.$u;
997
- }, u.toISOString = function() {
998
- return this.toDate().toISOString();
999
- }, u.toString = function() {
1000
- return this.toDate().toUTCString();
1001
- };
1002
- var y = u.toDate;
1003
- u.toDate = function(l) {
1004
- return l === "s" && this.$offset ? i(this.format("YYYY-MM-DD HH:mm:ss:SSS")).toDate() : y.call(this);
1005
- };
1006
- var S = u.diff;
1007
- u.diff = function(l, v, g) {
1008
- if (l && this.$u === l.$u) return S.call(this, l, v, g);
1009
- var D = this.local(), b = i(l).local();
1010
- return S.call(D, b, v, g);
1011
- };
1012
- };
1013
- }));
1014
- })(vt)), vt.exports;
1015
- }
1016
- var en = tn();
1017
- const nn = /* @__PURE__ */ B(en);
1018
- var St = { exports: {} }, rn = St.exports, Nt;
1019
- function sn() {
1020
- return Nt || (Nt = 1, (function(s, a) {
1021
- (function(n, e) {
1022
- s.exports = e();
1023
- })(rn, (function() {
1024
- return function(n, e) {
1025
- e.prototype.weekday = function(r) {
1026
- var t = this.$locale().weekStart || 0, o = this.$W, i = (o < t ? o + 7 : o) - t;
1027
- return this.$utils().u(r) ? i : this.subtract(i, "day").add(r, "day");
1028
- };
1029
- };
1030
- }));
1031
- })(St)), St.exports;
1032
- }
1033
- var on = sn();
1034
- const an = /* @__PURE__ */ B(on);
1035
- N.extend(je);
1036
- N.extend(ge);
1037
- N.extend(an);
1038
- N.extend(_e);
1039
- N.extend(nn);
1040
- N.extend(Ge);
1041
- N.extend(Te);
1042
- N.extend(Ce);
1043
- N.extend(ye);
1044
- N.extend(Fe);
1045
- N.extend(Ke);
1046
- N.extend(Me);
1047
- const At = {
1048
- minute: 1,
1049
- hour: 60,
1050
- day: 1440,
1051
- week: 1440 * 7,
1052
- month: 1440 * 30
1053
- }, Ft = 10;
1054
- function un(s, a) {
1055
- const n = it(null), e = it(null), r = it(a);
1056
- r.current = a;
1057
- const t = j((h) => h.selectedScale), o = J[t], { basePxPerDragStep: i, dragStepAmount: u, dragStepUnit: c } = o, d = (h) => {
1058
- const y = h.currentTarget.getBoundingClientRect(), S = h.clientX - y.left;
1059
- return S <= Ft ? "left" : S >= y.width - Ft ? "right" : "bar";
1060
- };
1061
- return {
1062
- onPointerDown: (h) => {
1063
- const y = d(h);
1064
- e.current = y, n.current = {
1065
- mode: y,
1066
- initialClientX: h.clientX,
1067
- initialStartDate: N(s.startDate),
1068
- initialEndDate: N(s.endDate),
1069
- initialBarWidth: s.barWidth,
1070
- dragSteps: 0,
1071
- basePxPerDragStep: i,
1072
- dragStepAmount: u,
1073
- dragStepUnit: c,
1074
- taskId: s.id
1075
- }, j.getState().setCurrentTask(s), h.currentTarget.setPointerCapture(h.pointerId);
1076
- const S = (v) => {
1077
- const g = n.current;
1078
- if (!g) return;
1079
- const D = v.clientX - g.initialClientX, b = Math.round(D / g.basePxPerDragStep);
1080
- if (b === g.dragSteps) return;
1081
- g.dragSteps = b;
1082
- const z = b * g.basePxPerDragStep, P = g.dragStepAmount * At[g.dragStepUnit], k = b * P;
1083
- let w, $, p = 0, m = 0;
1084
- switch (g.mode) {
1085
- case "bar":
1086
- w = g.initialStartDate.add(k, "minute"), $ = g.initialEndDate.add(k, "minute"), p = z, m = 0;
1087
- break;
1088
- case "left":
1089
- if (w = g.initialStartDate.add(k, "minute"), $ = g.initialEndDate, p = z, m = -z, g.initialBarWidth + m < g.basePxPerDragStep)
1090
- return;
1091
- break;
1092
- case "right":
1093
- if (w = g.initialStartDate, $ = g.initialEndDate.add(k, "minute"), p = 0, m = z, g.initialBarWidth + m < g.basePxPerDragStep)
1094
- return;
1095
- break;
1096
- default:
1097
- return;
1098
- }
1099
- const T = {
1100
- offsetX: p,
1101
- offsetWidth: m,
1102
- offsetStartDate: w,
1103
- offsetEndDate: $
1104
- };
1105
- j.getState().setDragOffset(g.taskId, T);
1106
- }, l = () => {
1107
- var P;
1108
- document.removeEventListener("pointermove", S), document.removeEventListener("pointerup", l), document.removeEventListener("pointercancel", l);
1109
- const v = n.current;
1110
- if (!v)
1111
- return;
1112
- if (v.dragSteps === 0) {
1113
- n.current = null, e.current = null, j.getState().setCurrentTask(null), j.getState().clearDragOffset(v.taskId);
1114
- return;
1115
- }
1116
- const g = j.getState().rawTasks, D = v.dragStepAmount * At[v.dragStepUnit], b = v.dragSteps * D, z = g.map((k) => {
1117
- if (k.id !== v.taskId) return k;
1118
- switch (v.mode) {
1119
- case "bar":
1120
- return {
1121
- ...k,
1122
- startDate: N(k.startDate).add(b, "minute").toISOString(),
1123
- endDate: N(k.endDate).add(b, "minute").toISOString()
1124
- };
1125
- case "left":
1126
- return {
1127
- ...k,
1128
- startDate: N(k.startDate).add(b, "minute").toISOString()
1129
- };
1130
- case "right":
1131
- return {
1132
- ...k,
1133
- endDate: N(k.endDate).add(b, "minute").toISOString()
1134
- };
1135
- default:
1136
- return k;
1137
- }
1138
- });
1139
- j.getState().setRawTasks(z), (P = r.current) == null || P.call(r, z), n.current = null, e.current = null, j.getState().setCurrentTask(null), j.getState().clearDragOffset(v.taskId);
1140
- };
1141
- document.addEventListener("pointermove", S), document.addEventListener("pointerup", l), document.addEventListener("pointercancel", l);
1142
- },
1143
- dragMode: e.current
1144
- };
1145
- }
1146
- const Ht = 8, cn = {
1147
- day: "MMM D, h A",
1148
- week: "MMM D",
1149
- month: "MMM D",
1150
- year: "MMM YYYY"
1151
- };
1152
- function ln({
1153
- currentTask: s,
1154
- onTasksChange: a
1155
- }) {
1156
- const n = it(null), { onPointerDown: e, dragMode: r } = un(s, a), [t, o] = Mt("grab"), i = j((g) => g.dragOffsets[s.id]), u = j((g) => {
1157
- var D;
1158
- return ((D = g.currentTask) == null ? void 0 : D.id) === s.id;
1159
- }), c = j((g) => g.selectedScale), d = (i == null ? void 0 : i.offsetX) ?? 0, f = (i == null ? void 0 : i.offsetWidth) ?? 0, h = s.barLeft + d, y = s.barWidth + f, S = Kt((g) => {
1160
- const D = n.current;
1161
- if (!D) return;
1162
- const b = D.getBoundingClientRect(), z = g.clientX - b.left;
1163
- z <= Ht || z >= b.width - Ht ? o("ew-resize") : o("grab");
1164
- }, []), l = cn[c], v = (g) => {
1165
- if (!i) return "";
1166
- const D = i.offsetStartDate.format(l), b = i.offsetEndDate.format(l);
1167
- switch (g) {
1168
- case "left":
1169
- return `Start: ${D}`;
1170
- case "right":
1171
- return `End: ${b}`;
1172
- case "bar":
1173
- default:
1174
- return `${D} → ${b}`;
1175
- }
1176
- };
1177
- return /* @__PURE__ */ tt(
1178
- "div",
1179
- {
1180
- ref: n,
1181
- id: `task-${s.id}`,
1182
- className: `gantt-task-bar${u ? " dragging" : ""}`,
1183
- onPointerDown: e,
1184
- onMouseMove: S,
1185
- onMouseLeave: () => o("grab"),
1186
- style: {
1187
- transform: `translateX(${h}px)`,
1188
- width: y,
1189
- height: xt / 2,
1190
- cursor: u ? "grabbing" : t
1191
- },
1192
- role: "button",
1193
- tabIndex: 0,
1194
- "aria-label": `태스크: ${s.name}`,
1195
- children: [
1196
- /* @__PURE__ */ _("span", { className: "gantt-task-name", children: s.name }),
1197
- u && i && /* @__PURE__ */ _("div", { className: "gantt-bar-tooltip", role: "status", "aria-live": "polite", children: v(r) })
1198
- ]
1199
- }
1200
- );
1201
- }
1202
- function fn(s) {
1203
- const a = [];
1204
- for (const n of s) {
1205
- const e = a[a.length - 1];
1206
- e && e.label === n.label ? e.widthPx += n.widthPx : a.push({ ...n });
1207
- }
1208
- return a;
1209
- }
1210
- function dn(s) {
1211
- let a = 0;
1212
- return s.map((n) => {
1213
- const e = { ...n, left: a };
1214
- return a += n.widthPx, e;
1215
- });
1216
- }
1217
- function hn(s) {
1218
- const a = fn(s);
1219
- return dn(a);
1220
- }
1221
- function Yt(s) {
1222
- return s.split(".").map(Number);
1223
- }
1224
- function mn(s) {
1225
- return [...s].sort((a, n) => {
1226
- const e = Yt(a.sequence), r = Yt(n.sequence), t = Math.max(e.length, r.length);
1227
- for (let o = 0; o < t; o++) {
1228
- const i = e[o] || 0, u = r[o] || 0;
1229
- if (i !== u) return i - u;
1230
- }
1231
- return 0;
1232
- });
1233
- }
1234
- function pn(s) {
1235
- return s.split(".").length - 1;
1236
- }
1237
- function gn(s, a, n) {
1238
- return mn(s).map((r, t) => {
1239
- const o = pn(r.sequence), i = t + 1, { barMarginLeftAmount: u, barWidthSize: c } = $n(
1240
- N(r.startDate),
1241
- N(r.endDate),
1242
- a,
1243
- n
1244
- );
1245
- return {
1246
- ...r,
1247
- barLeft: u,
1248
- barWidth: c,
1249
- depth: o,
1250
- order: i,
1251
- originalOrder: i
1252
- };
1253
- });
1254
- }
1255
- function $n(s, a, n, e) {
1256
- if (!n.length)
1257
- return { barMarginLeftAmount: 0, barWidthSize: 0 };
1258
- const r = J[e], { tickUnit: t, unitPerTick: o } = r;
1259
- let i = 0, u = 0, c = !1;
1260
- const d = s.valueOf(), f = a.valueOf();
1261
- for (const h of n) {
1262
- const y = h.startDate, S = y.add(o, t), l = h.widthPx, v = y.valueOf(), g = S.valueOf();
1263
- if (g <= d) {
1264
- i += l;
1265
- continue;
1266
- }
1267
- if (v >= f)
1268
- break;
1269
- const D = d > v ? s : y, b = f < g ? a : S, z = g - v, k = (b.valueOf() - D.valueOf()) / z;
1270
- if (!c && D.valueOf() > v) {
1271
- const w = (D.valueOf() - v) / z;
1272
- i += w * l;
1273
- }
1274
- u += k * l, c = !0;
1275
- }
1276
- return {
1277
- barMarginLeftAmount: i,
1278
- barWidthSize: Math.max(u, 1)
1279
- };
1280
- }
1281
- function vn(s) {
1282
- let a = 1 / 0, n = -1 / 0;
1283
- for (const e of s) {
1284
- const r = N(e.startDate).valueOf(), t = N(e.endDate).valueOf();
1285
- Number.isNaN(r) || (a = Math.min(a, r)), Number.isNaN(t) || (n = Math.max(n, t));
1286
- }
1287
- return {
1288
- minDate: N(a),
1289
- maxDate: N(n)
1290
- };
1291
- }
1292
- function Sn(s, a, n) {
1293
- const e = J[n], { tickUnit: r, unitPerTick: t } = e, o = ne * t;
1294
- return {
1295
- paddedMinDate: s.subtract(o, r),
1296
- paddedMaxDate: a.add(o, r)
1297
- };
1298
- }
1299
- function yn(s, a, n) {
1300
- const e = J[n], {
1301
- tickUnit: r,
1302
- unitPerTick: t,
1303
- basePxPerDragStep: o,
1304
- dragStepUnit: i,
1305
- dragStepAmount: u
1306
- } = e, c = [];
1307
- let d = s.startOf(r);
1308
- const f = a.valueOf(), h = o / u;
1309
- for (; d.valueOf() < f; ) {
1310
- const y = d.add(t, r), l = y.diff(d, i) * h;
1311
- c.push({
1312
- startDate: d,
1313
- widthPx: l
1314
- }), d = y;
1315
- }
1316
- return c;
1317
- }
1318
- function bn(s, a) {
1319
- const n = J[a], { labelUnit: e, formatHeaderLabel: r } = n;
1320
- if (s.length === 0) return [];
1321
- const t = [];
1322
- let o = null;
1323
- for (const i of s) {
1324
- const u = i.startDate.startOf(e), c = u.valueOf(), d = (r == null ? void 0 : r(u)) ?? u.format();
1325
- o && o.startDate.valueOf() === c ? o.widthPx += i.widthPx : (o && t.push(o), o = {
1326
- label: d,
1327
- widthPx: i.widthPx,
1328
- startDate: u
1329
- });
1330
- }
1331
- return o && t.push(o), t;
1332
- }
1333
- function xn(s, a) {
1334
- if (!s.length)
1335
- return { bottomCells: [], transformedTasks: [] };
1336
- const { minDate: n, maxDate: e } = vn(s), { paddedMinDate: r, paddedMaxDate: t } = Sn(
1337
- n,
1338
- e,
1339
- a
1340
- ), o = yn(
1341
- r,
1342
- t,
1343
- a
1344
- ), i = gn(s, o, a);
1345
- return { bottomCells: o, transformedTasks: i };
1346
- }
1347
- function wn({
1348
- bottomRowCells: s,
1349
- selectedScale: a,
1350
- width: n,
1351
- scrollRef: e
1352
- }) {
1353
- const r = J[a], [t, o] = Mt(0), i = bt(() => {
1354
- const c = bn(s, a);
1355
- return hn(c);
1356
- }, [s, a]), u = Kt(() => {
1357
- const c = e.current;
1358
- if (!c) return;
1359
- const d = c.scrollLeft;
1360
- for (let f = i.length - 1; f >= 0; f--)
1361
- if (d >= i[f].left) {
1362
- o(f);
1363
- break;
1364
- }
1365
- }, [i, e]);
1366
- return et(() => {
1367
- const c = e.current;
1368
- if (c)
1369
- return c.addEventListener("scroll", u, { passive: !0 }), u(), () => c.removeEventListener("scroll", u);
1370
- }, [u, e]), /* @__PURE__ */ _("header", { className: "gantt-header", style: { width: `${n}px` }, children: /* @__PURE__ */ tt("div", { className: "gantt-header-content", children: [
1371
- /* @__PURE__ */ _("div", { className: "gantt-top-header", children: /* @__PURE__ */ _("div", { className: "gantt-top-groups", children: i.map((c, d) => {
1372
- const f = d === t;
1373
- return /* @__PURE__ */ _(
1374
- "div",
1375
- {
1376
- className: `gantt-top-group${f ? " sticky" : ""}`,
1377
- style: {
1378
- width: `${c.widthPx}px`,
1379
- ...f && { left: 0 }
1380
- },
1381
- children: /* @__PURE__ */ _("p", { className: "gantt-top-group-label", children: c.label })
1382
- },
1383
- `${c.label}-${d}`
1384
- );
1385
- }) }) }),
1386
- /* @__PURE__ */ _("div", { className: "gantt-bottom-row", children: s.map((c, d) => {
1387
- var h;
1388
- const f = ((h = r.formatTickLabel) == null ? void 0 : h.call(r, c.startDate)) || "";
1389
- return /* @__PURE__ */ _(
1390
- "div",
1391
- {
1392
- className: "gantt-bottom-cell",
1393
- style: { width: `${c.widthPx}px` },
1394
- children: f
1395
- },
1396
- `bottom-${d}`
1397
- );
1398
- }) })
1399
- ] }) });
1400
- }
1401
- function Mn(s, a, n, e, r) {
1402
- if (n < 0 || r < 0)
1403
- return `M ${a} ${n} h ${(e - a) / 2}`;
1404
- const t = 7, o = 11, i = 25, u = 20, c = `M ${a} ${n}`, d = e - a, f = r - n, h = Math.abs(d), y = Math.abs(f), S = r <= n, l = r >= n, v = e >= a, g = e <= a, D = h > u, b = Math.abs(d / 2), z = Math.abs(f / 2);
1405
- function P() {
1406
- function p() {
1407
- return (v || g) && l && !D ? "downSmallHorizontal" : (v || g) && S && !D ? "upSmallHorizontal" : l && g ? "downLeft" : l && v ? "downRight" : S && g ? "upLeft" : S && v ? "upRight" : "";
1408
- }
1409
- let m = c;
1410
- switch (p()) {
1411
- case "downRight": {
1412
- m += ` h ${b - t}`, m += ` a ${t} ${t} 0 0 1 ${t} ${t}`, m += ` v ${f - t * 2}`, m += ` a ${t} ${t} 0 0 0 ${t} ${t}`, m += ` h ${b - t}`;
1413
- break;
1414
- }
1415
- case "upRight": {
1416
- m += ` h ${b - t}`, m += ` a ${t} ${t} 0 0 0 ${t} -${t}`, m += ` v -${y - t * 2}`, m += ` a ${t} ${t} 0 0 1 ${t} -${t}`, m += ` h ${b - t}`;
1417
- break;
1418
- }
1419
- case "downLeft":
1420
- case "downSmallHorizontal": {
1421
- const W = n + f / 2;
1422
- m += ` h ${o}`, m += ` a ${t} ${t} 0 0 1 ${t} ${t}`, m += ` v ${W - n - t * 2}`, m += ` a ${t} ${t} 0 0 1 -${t} ${t}`, m += ` h ${d - 2 * o}`, m += ` a ${t} ${t} 0 0 0 -${t} ${t}`, m += ` v ${W - n - t * 2}`, m += ` a ${t} ${t} 0 0 0 ${t} ${t}`, m += ` h ${o}`;
1423
- break;
1424
- }
1425
- case "upLeft":
1426
- case "upSmallHorizontal": {
1427
- const W = n + f / 2;
1428
- m += ` h ${o}`, m += ` a ${t} ${t} 0 0 0 ${t} -${t}`, m += ` v -${n - W - t * 2}`, m += ` a ${t} ${t} 0 0 0 -${t} -${t}`, m += ` h ${d - 2 * o}`, m += ` a ${t} ${t} 0 0 1 -${t} -${t}`, m += ` v -${n - W - t * 2}`, m += ` a ${t} ${t} 0 0 1 ${t} -${t}`, m += ` h ${o}`;
1429
- break;
1430
- }
1431
- default:
1432
- return m;
1433
- }
1434
- return m;
1435
- }
1436
- function k() {
1437
- let p = c;
1438
- return l && g ? (p += ` h ${i - o}`, p += ` a ${t} ${t} 0 0 1 ${t} ${t}`, p += ` v ${f - t * 2}`, p += ` a ${t} ${t} 0 0 1 -${t} ${t}`, p += ` h ${d - t * 2}`) : l && v ? (p += ` h ${d + i - o}`, p += ` a ${t} ${t} 0 0 1 ${t} ${t}`, p += ` v ${f - t * 2}`, p += ` a ${t} ${t} 0 0 1 -${t} ${t}`, p += ` h -${i - o}`) : S && g ? (p += ` h ${i - o}`, p += ` a ${t} ${t} 0 0 0 ${t} -${t}`, p += ` v ${f + t * 2}`, p += ` a ${t} ${t} 0 0 0 -${t} -${t}`, p += ` h ${d - i + o}`) : S && v && (p += ` h ${d + i - o}`, p += ` a ${t} ${t} 0 0 0 ${t} -${t}`, p += ` v ${f + t * 2}`, p += ` a ${t} ${t} 0 0 0 -${t} -${t}`, p += ` h -${i - o}`), p;
1439
- }
1440
- function w() {
1441
- function p() {
1442
- return (v || g) && l && !D ? "downSmallHorizontal" : (v || g) && S && !D ? "upSmallHorizontal" : l && g ? "downLeft" : l && v ? "downRight" : S && g ? "upLeft" : S && v ? "upRight" : "";
1443
- }
1444
- let m = c;
1445
- switch (p()) {
1446
- case "downRight":
1447
- case "downSmallHorizontal": {
1448
- m += ` h ${-o}`, m += ` a ${t} ${t} 0 0 0 -${t} ${t}`, m += ` v ${z - t * 2}`, m += ` a ${t} ${t} 0 0 0 ${t} ${t}`, m += ` h ${o * 2 + d}`, m += ` a ${t} ${t} 0 0 1 ${t} ${t}`, m += ` v ${z - t * 2}`, m += ` a ${t} ${t} 0 0 1 -${t} ${t}`, m += ` h ${-o}`;
1449
- break;
1450
- }
1451
- case "upRight":
1452
- case "upSmallHorizontal": {
1453
- m += ` h ${-o}`, m += ` a ${t} ${t} 0 0 1 -${t} -${t}`, m += ` v ${-(z - t * 2)}`, m += ` a ${t} ${t} 0 0 1 ${t} -${t}`, m += ` h ${o * 2 + d}`, m += ` a ${t} ${t} 0 0 0 ${t} -${t}`, m += ` v ${-(z - t * 2)}`, m += ` a ${t} ${t} 0 0 0 -${t} -${t}`, m += ` h ${-o}`;
1454
- break;
1455
- }
1456
- case "downLeft": {
1457
- m += ` h ${-b + t}`, m += ` a ${t} ${t} 0 0 0 -${t} ${t}`, m += ` v ${y - t * 2}`, m += ` a ${t} ${t} 0 0 1 -${t} ${t}`, m += ` h ${-b + t}`;
1458
- break;
1459
- }
1460
- case "upLeft": {
1461
- m += ` h ${-(b - t)}`, m += ` a ${t} ${t} 0 0 1 -${t} -${t}`, m += ` v ${-(y - t * 2)}`, m += ` a ${t} ${t} 0 0 0 -${t} -${t}`, m += ` h ${-b + t}`;
1462
- break;
1463
- }
1464
- default:
1465
- return m;
1466
- }
1467
- return m;
1468
- }
1469
- function $() {
1470
- let p = c;
1471
- return l && g ? (p += ` h ${d - i}`, p += ` a ${t} ${t} 0 0 0 -${t} ${t}`, p += ` v ${f - t * 2}`, p += ` a ${t} ${t} 0 0 0 ${t} ${t}`, p += ` h ${i}`) : l && v ? (p += ` h ${-i}`, p += ` a ${t} ${t} 0 0 0 -${t} ${t}`, p += ` v ${f - t * 2}`, p += ` a ${t} ${t} 0 0 0 ${t} ${t}`, p += ` h ${d + i}`) : S && g ? (p += ` h ${d - i}`, p += ` a ${t} ${t} 0 0 1 -${t} -${t}`, p += ` v ${f + t * 2}`, p += ` a ${t} ${t} 0 0 1 ${t} -${t}`, p += ` h ${i}`) : S && v && (p += ` h ${-i}`, p += ` a ${t} ${t} 0 0 1 -${t} -${t}`, p += ` v ${f + t * 2}`, p += ` a ${t} ${t} 0 0 1 ${t} -${t}`, p += ` h ${d + i}`), p;
1472
- }
1473
- switch (s) {
1474
- case "FS":
1475
- return P();
1476
- case "FF":
1477
- return k();
1478
- case "SF":
1479
- return w();
1480
- case "SS":
1481
- return $();
1482
- default:
1483
- return `${c} L ${e} ${r}`;
1484
- }
1485
- }
1486
- function Dn(s, a, n, e) {
1487
- const r = xt, t = s.order - 1, o = a.order - 1, i = r / 2, u = o * r + i, c = t * r + i, d = a.barLeft, f = a.barLeft + a.barWidth, h = s.barLeft + n.offsetX, y = h + s.barWidth + n.offsetWidth, S = {
1488
- FS: [f, h],
1489
- SS: [d, h],
1490
- FF: [f, y],
1491
- SF: [d, y]
1492
- }, [l, v] = S[e];
1493
- return { fromX: l, fromY: u, toX: v, toY: c };
1494
- }
1495
- function On(s, a) {
1496
- const n = [];
1497
- for (const e of s) {
1498
- const r = a[e.id] ?? { offsetX: 0, offsetWidth: 0 };
1499
- for (const t of e.dependencies ?? []) {
1500
- const o = s.find((f) => f.id === t.targetId);
1501
- if (!o) continue;
1502
- const { fromX: i, fromY: u, toX: c, toY: d } = Dn(
1503
- e,
1504
- o,
1505
- r,
1506
- t.type
1507
- );
1508
- n.push({ ...t, fromX: i, fromY: u, toX: c, toY: d });
1509
- }
1510
- }
1511
- return n;
1512
- }
1513
- function kn({
1514
- transformedTasks: s
1515
- }) {
1516
- const a = j((e) => e.dragOffsets), n = On(s, a);
1517
- return /* @__PURE__ */ tt(
1518
- "svg",
1519
- {
1520
- className: "gantt-dependency-arrows",
1521
- style: {
1522
- height: `${s.length * xt}px`
1523
- },
1524
- children: [
1525
- /* @__PURE__ */ _("defs", { children: /* @__PURE__ */ _(
1526
- "marker",
1527
- {
1528
- id: "arrowhead",
1529
- markerWidth: "5",
1530
- markerHeight: "5",
1531
- refX: "4.5",
1532
- refY: "2.5",
1533
- orient: "auto",
1534
- children: /* @__PURE__ */ _(
1535
- "polygon",
1536
- {
1537
- className: "gantt-dependency-arrow-head",
1538
- points: "0 0, 5 2.5, 0 5"
1539
- }
1540
- )
1541
- }
1542
- ) }),
1543
- n.map((e, r) => /* @__PURE__ */ _(
1544
- "path",
1545
- {
1546
- className: "gantt-dependency-arrow",
1547
- d: Mn(
1548
- e.type,
1549
- e.fromX,
1550
- e.fromY,
1551
- e.toX,
1552
- e.toY
1553
- ),
1554
- markerEnd: "url(#arrowhead)",
1555
- fill: "none"
1556
- },
1557
- `arrow-${r}`
1558
- ))
1559
- ]
1560
- }
1561
- );
1562
- }
1563
- const Z = Object.keys(J);
1564
- function Tn({
1565
- selectedScale: s,
1566
- onScaleChange: a
1567
- }) {
1568
- const n = (e, r) => {
1569
- const t = Z.indexOf(r);
1570
- if (e.key === "ArrowRight" || e.key === "ArrowDown") {
1571
- e.preventDefault();
1572
- const o = (t + 1) % Z.length;
1573
- a(Z[o]);
1574
- } else if (e.key === "ArrowLeft" || e.key === "ArrowUp") {
1575
- e.preventDefault();
1576
- const o = (t - 1 + Z.length) % Z.length;
1577
- a(Z[o]);
1578
- }
1579
- };
1580
- return /* @__PURE__ */ _(
1581
- "div",
1582
- {
1583
- className: "gantt-scale-selector",
1584
- role: "group",
1585
- "aria-label": "타임라인 스케일 선택",
1586
- children: /* @__PURE__ */ _("div", { className: "gantt-scale-control", children: Z.map((e) => {
1587
- const r = e === s;
1588
- return /* @__PURE__ */ _(
1589
- "button",
1590
- {
1591
- type: "button",
1592
- className: "gantt-scale-button",
1593
- "data-active": r,
1594
- onClick: () => a(e),
1595
- onKeyDown: (t) => n(t, e),
1596
- "aria-pressed": r,
1597
- tabIndex: r ? 0 : -1,
1598
- children: e
1599
- },
1600
- e
1601
- );
1602
- }) })
1603
- }
1604
- );
1605
- }
1606
- const Ut = (s) => Symbol.iterator in s, jt = (s) => (
1607
- // HACK: avoid checking entries type
1608
- "entries" in s
1609
- ), Bt = (s, a) => {
1610
- const n = s instanceof Map ? s : new Map(s.entries()), e = a instanceof Map ? a : new Map(a.entries());
1611
- if (n.size !== e.size)
1612
- return !1;
1613
- for (const [r, t] of n)
1614
- if (!e.has(r) || !Object.is(t, e.get(r)))
1615
- return !1;
1616
- return !0;
1617
- }, En = (s, a) => {
1618
- const n = s[Symbol.iterator](), e = a[Symbol.iterator]();
1619
- let r = n.next(), t = e.next();
1620
- for (; !r.done && !t.done; ) {
1621
- if (!Object.is(r.value, t.value))
1622
- return !1;
1623
- r = n.next(), t = e.next();
1624
- }
1625
- return !!r.done && !!t.done;
1626
- };
1627
- function In(s, a) {
1628
- return Object.is(s, a) ? !0 : typeof s != "object" || s === null || typeof a != "object" || a === null || Object.getPrototypeOf(s) !== Object.getPrototypeOf(a) ? !1 : Ut(s) && Ut(a) ? jt(s) && jt(a) ? Bt(s, a) : En(s, a) : Bt(
1629
- { entries: () => Object.entries(s) },
1630
- { entries: () => Object.entries(a) }
1631
- );
1632
- }
1633
- function zn(s) {
1634
- const a = st.useRef(void 0);
1635
- return (n) => {
1636
- const e = s(n);
1637
- return In(a.current, e) ? a.current : a.current = e;
1638
- };
1639
- }
1640
- function Cn() {
1641
- return j(
1642
- zn((s) => ({
1643
- // 상태
1644
- rawTasks: s.rawTasks,
1645
- transformedTasks: s.transformedTasks,
1646
- bottomRowCells: s.bottomRowCells,
1647
- selectedScale: s.selectedScale,
1648
- currentTask: s.currentTask,
1649
- dragOffsets: s.dragOffsets,
1650
- // 액션
1651
- setRawTasks: s.setRawTasks,
1652
- setTransformedTasks: s.setTransformedTasks,
1653
- setBottomRowCells: s.setBottomRowCells,
1654
- setSelectedScale: s.setSelectedScale,
1655
- setCurrentTask: s.setCurrentTask,
1656
- setDragOffset: s.setDragOffset,
1657
- clearDragOffset: s.clearDragOffset,
1658
- // 계산된 값
1659
- getTotalWidth: s.getTotalWidth,
1660
- getCurrentDragOffset: s.getCurrentDragOffset
1661
- }))
1662
- );
1663
- }
1664
- function Q(s, a, n) {
1665
- let e = n.initialDeps ?? [], r;
1666
- function t() {
1667
- var o, i, u, c;
1668
- let d;
1669
- n.key && ((o = n.debug) != null && o.call(n)) && (d = Date.now());
1670
- const f = s();
1671
- if (!(f.length !== e.length || f.some((S, l) => e[l] !== S)))
1672
- return r;
1673
- e = f;
1674
- let y;
1675
- if (n.key && ((i = n.debug) != null && i.call(n)) && (y = Date.now()), r = a(...f), n.key && ((u = n.debug) != null && u.call(n))) {
1676
- const S = Math.round((Date.now() - d) * 100) / 100, l = Math.round((Date.now() - y) * 100) / 100, v = l / 16, g = (D, b) => {
1677
- for (D = String(D); D.length < b; )
1678
- D = " " + D;
1679
- return D;
1680
- };
1681
- console.info(
1682
- `%c⏱ ${g(l, 5)} /${g(S, 5)} ms`,
1683
- `
1684
- font-size: .6rem;
1685
- font-weight: bold;
1686
- color: hsl(${Math.max(
1687
- 0,
1688
- Math.min(120 - 120 * v, 120)
1689
- )}deg 100% 31%);`,
1690
- n == null ? void 0 : n.key
1691
- );
1692
- }
1693
- return (c = n == null ? void 0 : n.onChange) == null || c.call(n, r), r;
1694
- }
1695
- return t.updateDeps = (o) => {
1696
- e = o;
1697
- }, t;
1698
- }
1699
- function qt(s, a) {
1700
- if (s === void 0)
1701
- throw new Error("Unexpected undefined");
1702
- return s;
1703
- }
1704
- const Ln = (s, a) => Math.abs(s - a) < 1.01, Pn = (s, a, n) => {
1705
- let e;
1706
- return function(...r) {
1707
- s.clearTimeout(e), e = s.setTimeout(() => a.apply(this, r), n);
1708
- };
1709
- }, Vt = (s) => {
1710
- const { offsetWidth: a, offsetHeight: n } = s;
1711
- return { width: a, height: n };
1712
- }, Rn = (s) => s, _n = (s) => {
1713
- const a = Math.max(s.startIndex - s.overscan, 0), n = Math.min(s.endIndex + s.overscan, s.count - 1), e = [];
1714
- for (let r = a; r <= n; r++)
1715
- e.push(r);
1716
- return e;
1717
- }, Wn = (s, a) => {
1718
- const n = s.scrollElement;
1719
- if (!n)
1720
- return;
1721
- const e = s.targetWindow;
1722
- if (!e)
1723
- return;
1724
- const r = (o) => {
1725
- const { width: i, height: u } = o;
1726
- a({ width: Math.round(i), height: Math.round(u) });
1727
- };
1728
- if (r(Vt(n)), !e.ResizeObserver)
1729
- return () => {
1730
- };
1731
- const t = new e.ResizeObserver((o) => {
1732
- const i = () => {
1733
- const u = o[0];
1734
- if (u != null && u.borderBoxSize) {
1735
- const c = u.borderBoxSize[0];
1736
- if (c) {
1737
- r({ width: c.inlineSize, height: c.blockSize });
1738
- return;
1739
- }
1740
- }
1741
- r(Vt(n));
1742
- };
1743
- s.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(i) : i();
1744
- });
1745
- return t.observe(n, { box: "border-box" }), () => {
1746
- t.unobserve(n);
1747
- };
1748
- }, Gt = {
1749
- passive: !0
1750
- }, Xt = typeof window > "u" ? !0 : "onscrollend" in window, Nn = (s, a) => {
1751
- const n = s.scrollElement;
1752
- if (!n)
1753
- return;
1754
- const e = s.targetWindow;
1755
- if (!e)
1756
- return;
1757
- let r = 0;
1758
- const t = s.options.useScrollendEvent && Xt ? () => {
1759
- } : Pn(
1760
- e,
1761
- () => {
1762
- a(r, !1);
1763
- },
1764
- s.options.isScrollingResetDelay
1765
- ), o = (d) => () => {
1766
- const { horizontal: f, isRtl: h } = s.options;
1767
- r = f ? n.scrollLeft * (h && -1 || 1) : n.scrollTop, t(), a(r, d);
1768
- }, i = o(!0), u = o(!1);
1769
- u(), n.addEventListener("scroll", i, Gt);
1770
- const c = s.options.useScrollendEvent && Xt;
1771
- return c && n.addEventListener("scrollend", u, Gt), () => {
1772
- n.removeEventListener("scroll", i), c && n.removeEventListener("scrollend", u);
1773
- };
1774
- }, An = (s, a, n) => {
1775
- if (a != null && a.borderBoxSize) {
1776
- const e = a.borderBoxSize[0];
1777
- if (e)
1778
- return Math.round(
1779
- e[n.options.horizontal ? "inlineSize" : "blockSize"]
1780
- );
1781
- }
1782
- return s[n.options.horizontal ? "offsetWidth" : "offsetHeight"];
1783
- }, Fn = (s, {
1784
- adjustments: a = 0,
1785
- behavior: n
1786
- }, e) => {
1787
- var r, t;
1788
- const o = s + a;
1789
- (t = (r = e.scrollElement) == null ? void 0 : r.scrollTo) == null || t.call(r, {
1790
- [e.options.horizontal ? "left" : "top"]: o,
1791
- behavior: n
1792
- });
1793
- };
1794
- class Hn {
1795
- constructor(a) {
1796
- this.unsubs = [], this.scrollElement = null, this.targetWindow = null, this.isScrolling = !1, this.measurementsCache = [], this.itemSizeCache = /* @__PURE__ */ new Map(), this.pendingMeasuredCacheIndexes = [], this.scrollRect = null, this.scrollOffset = null, this.scrollDirection = null, this.scrollAdjustments = 0, this.elementsCache = /* @__PURE__ */ new Map(), this.observer = /* @__PURE__ */ (() => {
1797
- let n = null;
1798
- const e = () => n || (!this.targetWindow || !this.targetWindow.ResizeObserver ? null : n = new this.targetWindow.ResizeObserver((r) => {
1799
- r.forEach((t) => {
1800
- const o = () => {
1801
- this._measureElement(t.target, t);
1802
- };
1803
- this.options.useAnimationFrameWithResizeObserver ? requestAnimationFrame(o) : o();
1804
- });
1805
- }));
1806
- return {
1807
- disconnect: () => {
1808
- var r;
1809
- (r = e()) == null || r.disconnect(), n = null;
1810
- },
1811
- observe: (r) => {
1812
- var t;
1813
- return (t = e()) == null ? void 0 : t.observe(r, { box: "border-box" });
1814
- },
1815
- unobserve: (r) => {
1816
- var t;
1817
- return (t = e()) == null ? void 0 : t.unobserve(r);
1818
- }
1819
- };
1820
- })(), this.range = null, this.setOptions = (n) => {
1821
- Object.entries(n).forEach(([e, r]) => {
1822
- typeof r > "u" && delete n[e];
1823
- }), this.options = {
1824
- debug: !1,
1825
- initialOffset: 0,
1826
- overscan: 1,
1827
- paddingStart: 0,
1828
- paddingEnd: 0,
1829
- scrollPaddingStart: 0,
1830
- scrollPaddingEnd: 0,
1831
- horizontal: !1,
1832
- getItemKey: Rn,
1833
- rangeExtractor: _n,
1834
- onChange: () => {
1835
- },
1836
- measureElement: An,
1837
- initialRect: { width: 0, height: 0 },
1838
- scrollMargin: 0,
1839
- gap: 0,
1840
- indexAttribute: "data-index",
1841
- initialMeasurementsCache: [],
1842
- lanes: 1,
1843
- isScrollingResetDelay: 150,
1844
- enabled: !0,
1845
- isRtl: !1,
1846
- useScrollendEvent: !1,
1847
- useAnimationFrameWithResizeObserver: !1,
1848
- ...n
1849
- };
1850
- }, this.notify = (n) => {
1851
- var e, r;
1852
- (r = (e = this.options).onChange) == null || r.call(e, this, n);
1853
- }, this.maybeNotify = Q(
1854
- () => (this.calculateRange(), [
1855
- this.isScrolling,
1856
- this.range ? this.range.startIndex : null,
1857
- this.range ? this.range.endIndex : null
1858
- ]),
1859
- (n) => {
1860
- this.notify(n);
1861
- },
1862
- {
1863
- key: process.env.NODE_ENV !== "production" && "maybeNotify",
1864
- debug: () => this.options.debug,
1865
- initialDeps: [
1866
- this.isScrolling,
1867
- this.range ? this.range.startIndex : null,
1868
- this.range ? this.range.endIndex : null
1869
- ]
1870
- }
1871
- ), this.cleanup = () => {
1872
- this.unsubs.filter(Boolean).forEach((n) => n()), this.unsubs = [], this.observer.disconnect(), this.scrollElement = null, this.targetWindow = null;
1873
- }, this._didMount = () => () => {
1874
- this.cleanup();
1875
- }, this._willUpdate = () => {
1876
- var n;
1877
- const e = this.options.enabled ? this.options.getScrollElement() : null;
1878
- if (this.scrollElement !== e) {
1879
- if (this.cleanup(), !e) {
1880
- this.maybeNotify();
1881
- return;
1882
- }
1883
- this.scrollElement = e, this.scrollElement && "ownerDocument" in this.scrollElement ? this.targetWindow = this.scrollElement.ownerDocument.defaultView : this.targetWindow = ((n = this.scrollElement) == null ? void 0 : n.window) ?? null, this.elementsCache.forEach((r) => {
1884
- this.observer.observe(r);
1885
- }), this._scrollToOffset(this.getScrollOffset(), {
1886
- adjustments: void 0,
1887
- behavior: void 0
1888
- }), this.unsubs.push(
1889
- this.options.observeElementRect(this, (r) => {
1890
- this.scrollRect = r, this.maybeNotify();
1891
- })
1892
- ), this.unsubs.push(
1893
- this.options.observeElementOffset(this, (r, t) => {
1894
- this.scrollAdjustments = 0, this.scrollDirection = t ? this.getScrollOffset() < r ? "forward" : "backward" : null, this.scrollOffset = r, this.isScrolling = t, this.maybeNotify();
1895
- })
1896
- );
1897
- }
1898
- }, this.getSize = () => this.options.enabled ? (this.scrollRect = this.scrollRect ?? this.options.initialRect, this.scrollRect[this.options.horizontal ? "width" : "height"]) : (this.scrollRect = null, 0), this.getScrollOffset = () => this.options.enabled ? (this.scrollOffset = this.scrollOffset ?? (typeof this.options.initialOffset == "function" ? this.options.initialOffset() : this.options.initialOffset), this.scrollOffset) : (this.scrollOffset = null, 0), this.getFurthestMeasurement = (n, e) => {
1899
- const r = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map();
1900
- for (let o = e - 1; o >= 0; o--) {
1901
- const i = n[o];
1902
- if (r.has(i.lane))
1903
- continue;
1904
- const u = t.get(
1905
- i.lane
1906
- );
1907
- if (u == null || i.end > u.end ? t.set(i.lane, i) : i.end < u.end && r.set(i.lane, !0), r.size === this.options.lanes)
1908
- break;
1909
- }
1910
- return t.size === this.options.lanes ? Array.from(t.values()).sort((o, i) => o.end === i.end ? o.index - i.index : o.end - i.end)[0] : void 0;
1911
- }, this.getMeasurementOptions = Q(
1912
- () => [
1913
- this.options.count,
1914
- this.options.paddingStart,
1915
- this.options.scrollMargin,
1916
- this.options.getItemKey,
1917
- this.options.enabled
1918
- ],
1919
- (n, e, r, t, o) => (this.pendingMeasuredCacheIndexes = [], {
1920
- count: n,
1921
- paddingStart: e,
1922
- scrollMargin: r,
1923
- getItemKey: t,
1924
- enabled: o
1925
- }),
1926
- {
1927
- key: !1
1928
- }
1929
- ), this.getMeasurements = Q(
1930
- () => [this.getMeasurementOptions(), this.itemSizeCache],
1931
- ({ count: n, paddingStart: e, scrollMargin: r, getItemKey: t, enabled: o }, i) => {
1932
- if (!o)
1933
- return this.measurementsCache = [], this.itemSizeCache.clear(), [];
1934
- this.measurementsCache.length === 0 && (this.measurementsCache = this.options.initialMeasurementsCache, this.measurementsCache.forEach((d) => {
1935
- this.itemSizeCache.set(d.key, d.size);
1936
- }));
1937
- const u = this.pendingMeasuredCacheIndexes.length > 0 ? Math.min(...this.pendingMeasuredCacheIndexes) : 0;
1938
- this.pendingMeasuredCacheIndexes = [];
1939
- const c = this.measurementsCache.slice(0, u);
1940
- for (let d = u; d < n; d++) {
1941
- const f = t(d), h = this.options.lanes === 1 ? c[d - 1] : this.getFurthestMeasurement(c, d), y = h ? h.end + this.options.gap : e + r, S = i.get(f), l = typeof S == "number" ? S : this.options.estimateSize(d), v = y + l, g = h ? h.lane : d % this.options.lanes;
1942
- c[d] = {
1943
- index: d,
1944
- start: y,
1945
- size: l,
1946
- end: v,
1947
- key: f,
1948
- lane: g
1949
- };
1950
- }
1951
- return this.measurementsCache = c, c;
1952
- },
1953
- {
1954
- key: process.env.NODE_ENV !== "production" && "getMeasurements",
1955
- debug: () => this.options.debug
1956
- }
1957
- ), this.calculateRange = Q(
1958
- () => [
1959
- this.getMeasurements(),
1960
- this.getSize(),
1961
- this.getScrollOffset(),
1962
- this.options.lanes
1963
- ],
1964
- (n, e, r, t) => this.range = n.length > 0 && e > 0 ? Yn({
1965
- measurements: n,
1966
- outerSize: e,
1967
- scrollOffset: r,
1968
- lanes: t
1969
- }) : null,
1970
- {
1971
- key: process.env.NODE_ENV !== "production" && "calculateRange",
1972
- debug: () => this.options.debug
1973
- }
1974
- ), this.getVirtualIndexes = Q(
1975
- () => {
1976
- let n = null, e = null;
1977
- const r = this.calculateRange();
1978
- return r && (n = r.startIndex, e = r.endIndex), this.maybeNotify.updateDeps([this.isScrolling, n, e]), [
1979
- this.options.rangeExtractor,
1980
- this.options.overscan,
1981
- this.options.count,
1982
- n,
1983
- e
1984
- ];
1985
- },
1986
- (n, e, r, t, o) => t === null || o === null ? [] : n({
1987
- startIndex: t,
1988
- endIndex: o,
1989
- overscan: e,
1990
- count: r
1991
- }),
1992
- {
1993
- key: process.env.NODE_ENV !== "production" && "getVirtualIndexes",
1994
- debug: () => this.options.debug
1995
- }
1996
- ), this.indexFromElement = (n) => {
1997
- const e = this.options.indexAttribute, r = n.getAttribute(e);
1998
- return r ? parseInt(r, 10) : (console.warn(
1999
- `Missing attribute name '${e}={index}' on measured element.`
2000
- ), -1);
2001
- }, this._measureElement = (n, e) => {
2002
- const r = this.indexFromElement(n), t = this.measurementsCache[r];
2003
- if (!t)
2004
- return;
2005
- const o = t.key, i = this.elementsCache.get(o);
2006
- i !== n && (i && this.observer.unobserve(i), this.observer.observe(n), this.elementsCache.set(o, n)), n.isConnected && this.resizeItem(r, this.options.measureElement(n, e, this));
2007
- }, this.resizeItem = (n, e) => {
2008
- const r = this.measurementsCache[n];
2009
- if (!r)
2010
- return;
2011
- const t = this.itemSizeCache.get(r.key) ?? r.size, o = e - t;
2012
- o !== 0 && ((this.shouldAdjustScrollPositionOnItemSizeChange !== void 0 ? this.shouldAdjustScrollPositionOnItemSizeChange(r, o, this) : r.start < this.getScrollOffset() + this.scrollAdjustments) && (process.env.NODE_ENV !== "production" && this.options.debug && console.info("correction", o), this._scrollToOffset(this.getScrollOffset(), {
2013
- adjustments: this.scrollAdjustments += o,
2014
- behavior: void 0
2015
- })), this.pendingMeasuredCacheIndexes.push(r.index), this.itemSizeCache = new Map(this.itemSizeCache.set(r.key, e)), this.notify(!1));
2016
- }, this.measureElement = (n) => {
2017
- if (!n) {
2018
- this.elementsCache.forEach((e, r) => {
2019
- e.isConnected || (this.observer.unobserve(e), this.elementsCache.delete(r));
2020
- });
2021
- return;
2022
- }
2023
- this._measureElement(n, void 0);
2024
- }, this.getVirtualItems = Q(
2025
- () => [this.getVirtualIndexes(), this.getMeasurements()],
2026
- (n, e) => {
2027
- const r = [];
2028
- for (let t = 0, o = n.length; t < o; t++) {
2029
- const i = n[t], u = e[i];
2030
- r.push(u);
2031
- }
2032
- return r;
2033
- },
2034
- {
2035
- key: process.env.NODE_ENV !== "production" && "getVirtualItems",
2036
- debug: () => this.options.debug
2037
- }
2038
- ), this.getVirtualItemForOffset = (n) => {
2039
- const e = this.getMeasurements();
2040
- if (e.length !== 0)
2041
- return qt(
2042
- e[te(
2043
- 0,
2044
- e.length - 1,
2045
- (r) => qt(e[r]).start,
2046
- n
2047
- )]
2048
- );
2049
- }, this.getOffsetForAlignment = (n, e, r = 0) => {
2050
- const t = this.getSize(), o = this.getScrollOffset();
2051
- e === "auto" && (e = n >= o + t ? "end" : "start"), e === "center" ? n += (r - t) / 2 : e === "end" && (n -= t);
2052
- const i = this.getTotalSize() + this.options.scrollMargin - t;
2053
- return Math.max(Math.min(i, n), 0);
2054
- }, this.getOffsetForIndex = (n, e = "auto") => {
2055
- n = Math.max(0, Math.min(n, this.options.count - 1));
2056
- const r = this.measurementsCache[n];
2057
- if (!r)
2058
- return;
2059
- const t = this.getSize(), o = this.getScrollOffset();
2060
- if (e === "auto")
2061
- if (r.end >= o + t - this.options.scrollPaddingEnd)
2062
- e = "end";
2063
- else if (r.start <= o + this.options.scrollPaddingStart)
2064
- e = "start";
2065
- else
2066
- return [o, e];
2067
- const i = e === "end" ? r.end + this.options.scrollPaddingEnd : r.start - this.options.scrollPaddingStart;
2068
- return [
2069
- this.getOffsetForAlignment(i, e, r.size),
2070
- e
2071
- ];
2072
- }, this.isDynamicMode = () => this.elementsCache.size > 0, this.scrollToOffset = (n, { align: e = "start", behavior: r } = {}) => {
2073
- r === "smooth" && this.isDynamicMode() && console.warn(
2074
- "The `smooth` scroll behavior is not fully supported with dynamic size."
2075
- ), this._scrollToOffset(this.getOffsetForAlignment(n, e), {
2076
- adjustments: void 0,
2077
- behavior: r
2078
- });
2079
- }, this.scrollToIndex = (n, { align: e = "auto", behavior: r } = {}) => {
2080
- r === "smooth" && this.isDynamicMode() && console.warn(
2081
- "The `smooth` scroll behavior is not fully supported with dynamic size."
2082
- ), n = Math.max(0, Math.min(n, this.options.count - 1));
2083
- let t = 0;
2084
- const o = 10, i = (c) => {
2085
- if (!this.targetWindow) return;
2086
- const d = this.getOffsetForIndex(n, c);
2087
- if (!d) {
2088
- console.warn("Failed to get offset for index:", n);
2089
- return;
2090
- }
2091
- const [f, h] = d;
2092
- this._scrollToOffset(f, { adjustments: void 0, behavior: r }), this.targetWindow.requestAnimationFrame(() => {
2093
- const y = this.getScrollOffset(), S = this.getOffsetForIndex(n, h);
2094
- if (!S) {
2095
- console.warn("Failed to get offset for index:", n);
2096
- return;
2097
- }
2098
- Ln(S[0], y) || u(h);
2099
- });
2100
- }, u = (c) => {
2101
- this.targetWindow && (t++, t < o ? (process.env.NODE_ENV !== "production" && this.options.debug && console.info("Schedule retry", t, o), this.targetWindow.requestAnimationFrame(() => i(c))) : console.warn(
2102
- `Failed to scroll to index ${n} after ${o} attempts.`
2103
- ));
2104
- };
2105
- i(e);
2106
- }, this.scrollBy = (n, { behavior: e } = {}) => {
2107
- e === "smooth" && this.isDynamicMode() && console.warn(
2108
- "The `smooth` scroll behavior is not fully supported with dynamic size."
2109
- ), this._scrollToOffset(this.getScrollOffset() + n, {
2110
- adjustments: void 0,
2111
- behavior: e
2112
- });
2113
- }, this.getTotalSize = () => {
2114
- var n;
2115
- const e = this.getMeasurements();
2116
- let r;
2117
- if (e.length === 0)
2118
- r = this.options.paddingStart;
2119
- else if (this.options.lanes === 1)
2120
- r = ((n = e[e.length - 1]) == null ? void 0 : n.end) ?? 0;
2121
- else {
2122
- const t = Array(this.options.lanes).fill(null);
2123
- let o = e.length - 1;
2124
- for (; o >= 0 && t.some((i) => i === null); ) {
2125
- const i = e[o];
2126
- t[i.lane] === null && (t[i.lane] = i.end), o--;
2127
- }
2128
- r = Math.max(...t.filter((i) => i !== null));
2129
- }
2130
- return Math.max(
2131
- r - this.options.scrollMargin + this.options.paddingEnd,
2132
- 0
2133
- );
2134
- }, this._scrollToOffset = (n, {
2135
- adjustments: e,
2136
- behavior: r
2137
- }) => {
2138
- this.options.scrollToFn(n, { behavior: r, adjustments: e }, this);
2139
- }, this.measure = () => {
2140
- this.itemSizeCache = /* @__PURE__ */ new Map(), this.notify(!1);
2141
- }, this.setOptions(a);
2142
- }
2143
- }
2144
- const te = (s, a, n, e) => {
2145
- for (; s <= a; ) {
2146
- const r = (s + a) / 2 | 0, t = n(r);
2147
- if (t < e)
2148
- s = r + 1;
2149
- else if (t > e)
2150
- a = r - 1;
2151
- else
2152
- return r;
2153
- }
2154
- return s > 0 ? s - 1 : 0;
2155
- };
2156
- function Yn({
2157
- measurements: s,
2158
- outerSize: a,
2159
- scrollOffset: n,
2160
- lanes: e
2161
- }) {
2162
- const r = s.length - 1, t = (u) => s[u].start;
2163
- if (s.length <= e)
2164
- return {
2165
- startIndex: 0,
2166
- endIndex: r
2167
- };
2168
- let o = te(
2169
- 0,
2170
- r,
2171
- t,
2172
- n
2173
- ), i = o;
2174
- if (e === 1)
2175
- for (; i < r && s[i].end < n + a; )
2176
- i++;
2177
- else if (e > 1) {
2178
- const u = Array(e).fill(0);
2179
- for (; i < r && u.some((d) => d < n + a); ) {
2180
- const d = s[i];
2181
- u[d.lane] = d.end, i++;
2182
- }
2183
- const c = Array(e).fill(n + a);
2184
- for (; o >= 0 && c.some((d) => d >= n); ) {
2185
- const d = s[o];
2186
- c[d.lane] = d.start, o--;
2187
- }
2188
- o = Math.max(0, o - o % e), i = Math.min(r, i + (e - 1 - i % e));
2189
- }
2190
- return { startIndex: o, endIndex: i };
2191
- }
2192
- const Zt = typeof document < "u" ? yt.useLayoutEffect : yt.useEffect;
2193
- function Un(s) {
2194
- const a = yt.useReducer(() => ({}), {})[1], n = {
2195
- ...s,
2196
- onChange: (r, t) => {
2197
- var o;
2198
- t ? ee(a) : a(), (o = s.onChange) == null || o.call(s, r, t);
2199
- }
2200
- }, [e] = yt.useState(
2201
- () => new Hn(n)
2202
- );
2203
- return e.setOptions(n), Zt(() => e._didMount(), []), Zt(() => e._willUpdate()), e;
2204
- }
2205
- function Jt(s) {
2206
- return Un({
2207
- observeElementRect: Wn,
2208
- observeElementOffset: Nn,
2209
- scrollToFn: Fn,
2210
- ...s
2211
- });
2212
- }
2213
- function jn({
2214
- transformedTasks: s,
2215
- bottomRowCells: a,
2216
- scrollRef: n
2217
- }) {
2218
- var d;
2219
- const e = Jt({
2220
- count: s.length,
2221
- getScrollElement: () => n.current,
2222
- estimateSize: () => xt,
2223
- overscan: 5
2224
- }), r = Jt({
2225
- horizontal: !0,
2226
- count: a.length,
2227
- getScrollElement: () => n.current,
2228
- estimateSize: (f) => {
2229
- var h;
2230
- return ((h = a[f]) == null ? void 0 : h.widthPx) ?? 32;
2231
- },
2232
- overscan: 5
2233
- }), t = r.getVirtualItems(), o = ((d = t[0]) == null ? void 0 : d.start) ?? 0, i = t[t.length - 1], u = i ? i.start + i.size : 0, c = bt(() => (f, h) => f + h >= o && f <= u, [o, u]);
2234
- return et(() => {
2235
- if (!a.length) return;
2236
- const f = requestAnimationFrame(() => {
2237
- r.measure();
2238
- });
2239
- return () => cancelAnimationFrame(f);
2240
- }, [a, r]), {
2241
- rowVirtualizer: e,
2242
- columnVirtualizer: r,
2243
- isBarVisible: c
2244
- };
2245
- }
2246
- function Bn(s, a = "gantt-container") {
2247
- const [n, e] = Mt(() => typeof window < "u" && window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light");
2248
- et(() => {
2249
- if (typeof window > "u") return;
2250
- const i = window.matchMedia("(prefers-color-scheme: dark)"), u = (c) => {
2251
- e(c.matches ? "dark" : "light");
2252
- };
2253
- return i.addEventListener("change", u), () => i.removeEventListener("change", u);
2254
- }, []);
2255
- const r = bt(() => !s || s === "system" ? n : s, [s, n]), t = bt(() => {
2256
- const i = [a];
2257
- return s && i.push(r), i.join(" ");
2258
- }, [a, s, r]);
2259
- return {
2260
- resolvedTheme: r,
2261
- containerClassName: t,
2262
- dataTheme: s ? r : void 0
2263
- };
2264
- }
2265
- const qn = 600, Vn = "100%", Gn = "month";
2266
- function Kn({
2267
- tasks: s = [],
2268
- onTasksChange: a,
2269
- height: n = qn,
2270
- width: e = Vn,
2271
- theme: r,
2272
- defaultScale: t = Gn,
2273
- className: o
2274
- }) {
2275
- const {
2276
- rawTasks: i,
2277
- transformedTasks: u,
2278
- bottomRowCells: c,
2279
- selectedScale: d,
2280
- setRawTasks: f,
2281
- setTransformedTasks: h,
2282
- setBottomRowCells: y,
2283
- setSelectedScale: S,
2284
- getTotalWidth: l
2285
- } = Cn(), v = it(null), { rowVirtualizer: g, isBarVisible: D } = jn({
2286
- transformedTasks: u,
2287
- bottomRowCells: c,
2288
- scrollRef: v
2289
- }), { containerClassName: b, dataTheme: z } = Bn(
2290
- r,
2291
- o ? `gantt-container ${o}` : "gantt-container"
2292
- );
2293
- et(() => {
2294
- t && t !== d && S(t);
2295
- }, []), et(() => {
2296
- s.length > 0 && f(s);
2297
- }, [s, f]), et(() => {
2298
- if (!i.length) return;
2299
- const { bottomCells: $, transformedTasks: p } = xn(
2300
- i,
2301
- d
2302
- );
2303
- y($), h(p);
2304
- }, [i, d, y, h]);
2305
- const P = ($) => {
2306
- S($);
2307
- }, k = l(), w = {
2308
- height: typeof n == "number" ? `${n}px` : n,
2309
- width: typeof e == "number" ? `${e}px` : e
2310
- };
2311
- return /* @__PURE__ */ tt(
2312
- "section",
2313
- {
2314
- className: b,
2315
- "data-theme": z,
2316
- style: w,
2317
- children: [
2318
- /* @__PURE__ */ _("div", { className: "gantt-toolbar", children: /* @__PURE__ */ _(
2319
- Tn,
2320
- {
2321
- selectedScale: d,
2322
- onScaleChange: P
2323
- }
2324
- ) }),
2325
- /* @__PURE__ */ _("div", { className: "gantt-main", children: /* @__PURE__ */ tt("div", { ref: v, className: "gantt-scroll-container", children: [
2326
- /* @__PURE__ */ _("div", { className: "gantt-header-wrapper", style: { width: `${k}px` }, children: /* @__PURE__ */ _(
2327
- wn,
2328
- {
2329
- bottomRowCells: c,
2330
- selectedScale: d,
2331
- width: k,
2332
- scrollRef: v
2333
- }
2334
- ) }),
2335
- /* @__PURE__ */ tt(
2336
- "div",
2337
- {
2338
- className: "gantt-content",
2339
- style: {
2340
- height: `${g.getTotalSize()}px`,
2341
- width: `${k}px`
2342
- },
2343
- children: [
2344
- /* @__PURE__ */ _("div", { className: "gantt-rows", children: g.getVirtualItems().map(($) => {
2345
- const p = u[$.index];
2346
- return /* @__PURE__ */ _(
2347
- "div",
2348
- {
2349
- className: "gantt-task-row",
2350
- style: {
2351
- height: `${$.size - 1}px`,
2352
- transform: `translateY(${$.start}px)`
2353
- }
2354
- },
2355
- `row-${p.id}`
2356
- );
2357
- }) }),
2358
- /* @__PURE__ */ _(kn, { transformedTasks: u }),
2359
- g.getVirtualItems().map(($) => {
2360
- const p = u[$.index], m = p.barLeft ?? 0, T = p.barWidth ?? 0;
2361
- return D(m, T) ? /* @__PURE__ */ _(
2362
- "div",
2363
- {
2364
- style: {
2365
- position: "absolute",
2366
- top: 0,
2367
- left: 0,
2368
- height: `${$.size - 1}px`,
2369
- transform: `translateY(${$.start}px)`,
2370
- display: "flex",
2371
- alignItems: "center"
2372
- },
2373
- children: /* @__PURE__ */ _(
2374
- ln,
2375
- {
2376
- currentTask: p,
2377
- onTasksChange: a
2378
- }
2379
- )
2380
- },
2381
- p.id
2382
- ) : null;
2383
- })
2384
- ]
2385
- }
2386
- )
2387
- ] }) })
2388
- ]
2389
- }
2390
- );
2391
- }
2392
- export {
2393
- Kn as ReactGanttChart
2394
- };