@object-ui/plugin-gantt 17.6.0 → 18.0.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.
@@ -1,5 +1,6 @@
1
- import { WorkingCalendar } from './scheduling';
2
- import { NormShiftSegments } from './shifts';
1
+ import { WorkingCalendar } from './scheduling.js';
2
+ import { NormShiftSegments } from './shifts.js';
3
+ import { makeTzShift } from './tzShift.js';
3
4
  /**
4
5
  * ObjectUI
5
6
  * Copyright (c) 2024-present ObjectStack Inc.
@@ -52,6 +53,14 @@ export interface GanttTask {
52
53
  id: string | number;
53
54
  title: string;
54
55
  start: Date;
56
+ /**
57
+ * The EXCLUSIVE end of the bar's half-open span `[start, end)`: the bar is
58
+ * drawn and scheduled up to this instant, and the task list, the tooltip, a
59
+ * drag's preview and the inline editor name the last day it runs through
60
+ * (objectui#11141). `ObjectGantt` hands a stored date-only end over as the
61
+ * next day's local midnight (`toDisplayEndDate`, `@object-ui/core`), so a
62
+ * task ending `2024-01-15` is drawn, and named, through the 15th.
63
+ */
55
64
  end: Date;
56
65
  progress: number;
57
66
  color?: string;
@@ -117,21 +126,7 @@ export type GanttViewMode = 'day' | 'week' | 'month' | 'quarter' | 'year';
117
126
  */
118
127
  export declare const NOMINAL_DAYS: Record<GanttViewMode, number>;
119
128
  export declare const MS_PER_DAY: number;
120
- /**
121
- * "Shifted clock" for business-time-zone rendering: translate
122
- * real instants into a display space where the browser's local clock reads
123
- * the CONFIGURED zone's wall time. All existing local-clock logic — shift
124
- * bands, day columns, snapping, the today line, date labels — then renders
125
- * that zone correctly for every viewer; writes translate back so persisted
126
- * data stays real instants. Per-instant offsets keep DST zones close;
127
- * fixed-offset zones (Asia/Shanghai) are exact.
128
- */
129
- export declare function makeTzShift(timeZone?: string): {
130
- delta: number;
131
- to: (d: Date) => Date;
132
- from: (d: Date) => Date;
133
- now: () => Date;
134
- };
129
+ export { makeTzShift };
135
130
  /** Floor a date to the start of its column unit (Monday for weeks). */
136
131
  export declare function startOfUnit(date: Date, mode: GanttViewMode): Date;
137
132
  /** Add whole column units; month/quarter clamp the day (Jan 31 + 1mo = Feb 28). */
@@ -222,7 +217,9 @@ export interface GanttViewProps {
222
217
  /**
223
218
  * Working calendar for duration math. When set, auto-schedule and critical
224
219
  * path count working days only — weekends (`skipWeekends`) and any `holidays`
225
- * (ISO `yyyy-mm-dd` UTC keys) are skipped rather than consumed.
220
+ * (ISO `yyyy-mm-dd` calendar-day keys, read on the chart's own calendar: the
221
+ * viewer's, or the business `timeZone`'s when one is set) are skipped rather
222
+ * than consumed.
226
223
  */
227
224
  workingCalendar?: WorkingCalendar;
228
225
  /**
@@ -326,9 +323,17 @@ export interface GanttViewProps {
326
323
  * 'Asia/Shanghai'. The chart's calendar math — shift bands, day columns,
327
324
  * drag snapping, the today line, start/end labels — renders this zone's
328
325
  * wall time for EVERY viewer instead of the browser's; without it, a
329
- * viewer in another zone sees bands and dates misaligned. Writes
330
- * still persist real instants. Note: dates handed to `onBeforeTaskUpdate`
331
- * are in this display space (durations/deltas are unaffected).
326
+ * viewer in another zone sees bands and dates misaligned. Dates handed to
327
+ * `onTaskUpdate` are translated back out of this display space into real
328
+ * instants. A date-only value is a day rather than an instant, so the host
329
+ * translates both ways itself (objectui#10866): `ObjectGantt` hands a day in
330
+ * as the instant the shim maps exactly onto its local midnight, so it is
331
+ * drawn from that midnight here, and writes a `date` field back as the day
332
+ * of the display date the emitted instant was translated from, recovered
333
+ * exactly (`invertTo` / `invertFrom` in `./tzShift`, which say why the shim's
334
+ * own round trip is not exact around a DST change). Note: dates handed to
335
+ * `onBeforeTaskUpdate` are in this display space (durations/deltas are
336
+ * unaffected).
332
337
  */
333
338
  timeZone?: string;
334
339
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"GanttView.d.ts","sourceRoot":"","sources":["../src/GanttView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GanttView.d.ts","sourceRoot":"","sources":["../src/GanttView.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { default as React } from 'react';
2
- import { ObjectGridSchema, DataSource } from '@object-ui/types';
3
- import { GanttTask, GanttDependency, GanttTaskType } from './GanttView';
2
+ import { ObjectGanttSchema, DataSource, GanttConfig } from '@object-ui/types';
3
+ import { GanttTask, GanttDependency, GanttTaskType } from './GanttView.js';
4
+ import { ShiftSegmentsConfig } from './shifts.js';
4
5
  /**
5
6
  * One quick-filter dimension. Generic by design: the page configures
6
7
  * which record fields become filter dropdowns; the plugin resolves each one's
@@ -22,15 +23,158 @@ export interface QuickFilterDef {
22
23
  label?: string;
23
24
  }>;
24
25
  }
26
+ /**
27
+ * The members this renderer states ON TOP of {@link GanttConfig} — twelve, as
28
+ * measured against the shipped `GanttConfig` on `main` (objectui#6471; the card
29
+ * counted eleven before objectui#6051/#6472 landed part of the lift).
30
+ *
31
+ * All twelve RESTATE a key `GanttConfig` already declares, and since
32
+ * objectstack#15469 closed the schema all twelve — `timeSegments` included —
33
+ * arrive from the spec's `GanttConfigSchema` (29 keys); every one is mutually
34
+ * assignable with its twin. That includes
35
+ * `quickFilters` and `timeSegments`, which objectui#6471 called load-bearing
36
+ * NARROWINGS: measured on `main` they narrow nothing. What those two still do is
37
+ * NAME this plugin's runtime types (`QuickFilterDef[]` /
38
+ * {@link ShiftSegmentsConfig}), so a spec bump that moves either side surfaces as
39
+ * a decision. `ObjectGantt.configPin.test.ts` holds that measurement — read it
40
+ * there rather than re-deriving it here.
41
+ *
42
+ * ## Why a member is kept rather than deleted — TWO reasons, either sufficient
43
+ *
44
+ * 1. PROSE, where there is any. The spec emits no per-member docs
45
+ * (`z.input<typeof GanttConfigSchema>` carries none) and JSDoc cannot be
46
+ * attached to a member a type merely inherits, so for most members the
47
+ * docblock below is the fullest description of what this renderer DOES with
48
+ * the key. It does NOT reach every member: four are bare here —
49
+ * `parentField`, `baselineEndField`, `assigneeField`, `effortField` — the last
50
+ * three covered by a neighbour's docblock, `parentField` by nothing. Nor is
51
+ * this prose unique any more: since objectui#6472 the flattened face
52
+ * (`ObjectGanttSchema` in `@object-ui/types`) documents all twelve, and
53
+ * objectui#6561 expanded `parentField`'s entry there.
54
+ *
55
+ * 2. PIN OPERAND — this reason reaches EVERY member, and for `parentField` it is
56
+ * the only one. The pin below is derived over `keyof GanttConfigRestated`: a
57
+ * member that exists is compared against its twin, and a member that is
58
+ * deleted simply stops being compared.
59
+ *
60
+ * ⛔ So the test for whether a member may be deleted is NOT "does it carry its
61
+ * own JSDoc". Applied to `parentField` that test answers "deletable", and it is
62
+ * wrong. Deleting `parentField` is not silent — it fails three assertions in
63
+ * `ObjectGantt.configPin.test.ts`: the `RESTATED` census, the non-vacuity control
64
+ * that names it, and the fixture. But all three fail INSIDE the pin, which is the
65
+ * file a reader edits to turn a red build green; follow those errors and the tree
66
+ * goes green with one member fewer under the pin. Delete a member here only when
67
+ * its twin on `GanttConfig` goes with it.
68
+ *
69
+ * ⚠️ NAMED rather than inlined into the intersection above, and that is the
70
+ * whole mechanism: inside `GanttConfigEx` there is nothing left to compare,
71
+ * because `GanttConfigEx[K]` is ALREADY `GanttConfig[K] & <local>[K]` and is
72
+ * therefore assignable to `GanttConfig[K]` by construction — an assertion written
73
+ * against `GanttConfigEx` passes no matter how far the two declarations drift.
74
+ * Naming the local half is what gives `ObjectGantt.configPin.test.ts` two
75
+ * independent operands, so a spec bump that re-types one of the twelve breaks the
76
+ * build at the pin instead of silently intersecting the old type back in.
77
+ */
78
+ export type GanttConfigRestated = {
79
+ parentField?: string;
80
+ /**
81
+ * Record field whose value maps onto a node kind (see {@link normalizeTaskType}):
82
+ * `task` / `summary` (project/phase) / `milestone` / `group`. `group` (or
83
+ * `folder`) renders a pure tree header with NO bar — for project / product
84
+ * style levels that only group, never schedule.
85
+ */
86
+ typeField?: string;
87
+ /** Baseline (planned) start/end fields → planned-vs-actual reference bars. */
88
+ baselineStartField?: string;
89
+ baselineEndField?: string;
90
+ /**
91
+ * Dynamic Group by. When set, leaf tasks are bucketed by this
92
+ * field and rendered under one synthesized summary row per distinct value
93
+ * (replacing the parent hierarchy). Select options / lookups resolve to their
94
+ * display label, matching list/kanban grouping.
95
+ */
96
+ groupByField?: string;
97
+ /**
98
+ * Resource / Workload view. When true, the chart renders a
99
+ * per-resource load histogram instead of the timeline grid: each task loads
100
+ * its `assigneeField` resource by `effortField` units (default 1) over its
101
+ * span, and any column whose summed load exceeds `capacity` is flagged as
102
+ * over-allocated. `assigneeField` is required for this view to bucket by.
103
+ */
104
+ resourceView?: boolean;
105
+ assigneeField?: string;
106
+ effortField?: string;
107
+ /** Per-resource capacity ceiling (default 1). Loads above this flag overload. */
108
+ capacity?: number;
109
+ /**
110
+ * Quick filters. A row of multi-select dropdowns rendered above the
111
+ * chart; each narrows the visible task bars by one dimension. Options resolve
112
+ * from the object schema (select options or lookup reference records) so the
113
+ * lists are the full domain, not just values present in the current data.
114
+ */
115
+ quickFilters?: QuickFilterDef[];
116
+ /**
117
+ * When true (default), filtering recomputes the timeline range so it zooms to
118
+ * the filtered tasks' interval. Set false to keep the range pinned to the full
119
+ * (unfiltered) task set while filtering only hides bars.
120
+ */
121
+ autoZoomToFilter?: boolean;
122
+ /**
123
+ * Shift segmentation. When set, the day-mode timeline splits each shift-day
124
+ * (starting at `dayStart`) into the configured bands (day | night | …):
125
+ * a two-tier header (date over band), per-band column tints, and
126
+ * drag/resize snapping to band boundaries. Pure config data — no shift concept
127
+ * is hardcoded. `label` is display text the caller has already localized.
128
+ * Off by default → existing gantts are unchanged. Example:
129
+ * `{ dayStart: '08:00', bands: [
130
+ * { key: 'day', label: 'Day shift', start: '08:00', end: '20:00' },
131
+ * { key: 'night', label: 'Night shift', start: '20:00', end: '08:00' } ] }`.
132
+ */
133
+ timeSegments?: ShiftSegmentsConfig;
134
+ };
25
135
  /** Map a record's type value onto a GanttTaskType (undefined = infer). */
26
136
  export declare function normalizeTaskType(raw: unknown): GanttTaskType | undefined;
27
137
  export declare function normalizeDependencies(raw: unknown): GanttDependency[];
28
138
  export interface ObjectGanttProps {
29
- schema: ObjectGridSchema;
139
+ /**
140
+ * The gantt node. Typed as {@link ObjectGanttSchema} (objectui#5903) — the
141
+ * declaration this component's schema reads actually resolve against.
142
+ *
143
+ * It used to be `ObjectGridSchema`, and that is why ten genuine reads had to
144
+ * be spelled `(schema as any).K`: the keys are not grid keys, so the only
145
+ * thing that admitted them was `BaseSchema`'s index signature, under a cast
146
+ * that hid even that. Removing the casts without moving the type would have
147
+ * changed nothing — the reads would still land on the index signature.
148
+ *
149
+ * objectui#6051 declared what the FLAT branch reads: the 24 flattened
150
+ * `GanttConfig` keys `getGanttConfig`'s first branch consumes, plus the
151
+ * `staticData` / `filter` / `sort` the fetch path reads. The grid-style
152
+ * `{ gantt: { … } }` block kept working exactly as before and was still read
153
+ * through the index signature — declaring it was the one change that would not
154
+ * have been additive, so it was severed to objectui#6475, which has since
155
+ * declared it (`gantt?: GanttConfig`). The registered
156
+ * renderer (`index.tsx`) still passes `schema: any`, so no runtime shape is
157
+ * turned away either way.
158
+ */
159
+ schema: ObjectGanttSchema;
30
160
  dataSource?: DataSource;
31
161
  className?: string;
32
162
  onTaskClick?: (record: any) => void;
33
- onRowClick?: (record: any) => void;
163
+ /**
164
+ * TWO parameters since objectui#9357, and the second is not decoration: this
165
+ * prop reaches `useNavigationOverlay` as its `onRowClick`, and `handleClick`
166
+ * invokes it as `onRowClick(record, event)` — the modifier payload a host
167
+ * needs to implement Cmd/Ctrl/middle-click for itself. Declaring one
168
+ * parameter hid the second on the ONE line a host reads. Spelled `any` and
169
+ * not `HandleClickModifiers` for the reason objectui#9341 measured on
170
+ * `ObjectKanbanSchema.onCardClick`: that interface lives in
171
+ * `@object-ui/react`, the published twins in `@object-ui/types` may not name
172
+ * it, and a host that discovered the payload from the implementation
173
+ * annotated it `React.MouseEvent` — which a narrower declaration refuses
174
+ * contravariantly. `BaseSchema`'s own `onClick` / `onChange` / `onSubmit`
175
+ * already use this spelling for exactly this situation.
176
+ */
177
+ onRowClick?: (record: any, event?: any) => void;
34
178
  onEdit?: (record: any) => void;
35
179
  onDelete?: (record: any) => void;
36
180
  /**
@@ -41,5 +185,49 @@ export interface ObjectGanttProps {
41
185
  */
42
186
  onBeforeTaskUpdate?: (task: GanttTask, changes: Partial<Pick<GanttTask, 'title' | 'start' | 'end' | 'progress'>>) => boolean | Promise<boolean>;
43
187
  }
188
+ /**
189
+ * `keyof T` with the string / number INDEX SIGNATURE stripped out.
190
+ *
191
+ * Load-bearing, not tidiness. `GanttConfig` derives from the spec's
192
+ * `GanttConfigSchema`, which carries an index signature, so a bare
193
+ * `keyof GanttConfig` widens to `string` — and every guard written against it
194
+ * (the `satisfies` below, the coverage pin in
195
+ * `ObjectGantt.blockPrecedence.test.tsx`) then constrains NOTHING while looking
196
+ * exactly like a guard that does. That is the same blind instrument
197
+ * objectui#6051's declaration pin records: an index signature absorbs precisely
198
+ * the evidence a type annotation would have produced. Measured here — the pin
199
+ * came back `string` before this alias existed.
200
+ */
201
+ type KnownKeys<T> = keyof {
202
+ [K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
203
+ };
204
+ /** The DECLARED members of `GanttConfig` — its index signature removed. */
205
+ export type KnownGanttConfigKey = KnownKeys<GanttConfig>;
206
+ /**
207
+ * The FLAT spelling of `GanttConfig`'s keys — what `getGanttConfig`'s flat
208
+ * branch reads, and what `ObjectView` / `ListView` EMIT.
209
+ *
210
+ * Both flatteners build an `object-gantt` schema by spreading `options.gantt`'s
211
+ * CONTENTS at the top level (`plugin-view/src/ObjectView.tsx` `case 'gantt'`,
212
+ * `plugin-list/src/ListView.tsx` `case 'gantt'`); the product carries these keys
213
+ * and NO `gantt` key at all. That is an internal transport form, not a second
214
+ * authoring surface — and it is why the precedence flip below strands neither
215
+ * producer.
216
+ *
217
+ * DERIVED from `GanttConfigSchema` in full — the same zod object the block
218
+ * branch validates against — so a key added to the spec reaches the shadow
219
+ * diagnostic without a second edit (the discipline `FLAT_MAP_CONFIG_KEYS` set in
220
+ * objectui#5177). Until objectstack#15469 that derivation covered only part of
221
+ * the vocabulary and a second literal, `GANTT_CONFIG_EXTENSION_KEYS`, named the
222
+ * ten keys the renderer read through the schema's then-open `.passthrough()`
223
+ * window. The spec now declares all ten, so the list is one source again and the
224
+ * literal is retired (objectui#7845) — keeping it would have made every one of
225
+ * the ten a DUPLICATE entry here, which is what the no-duplicates pin in
226
+ * `ObjectGantt.blockPrecedence.test.tsx` measured. `dependencyField` is the
227
+ * legacy singular alias the flat branch still reads beside `dependenciesField`;
228
+ * it is not a `GanttConfig` key, so it is named on its own.
229
+ */
230
+ export declare const FLAT_GANTT_CONFIG_KEYS: ("summaryExtent" | "timeZone" | "viewMode" | "defaultCollapsedDepth" | "dependencyTypes" | "exportFileName" | "interactions" | "capacity" | "startDateField" | "endDateField" | "titleField" | "progressField" | "dependenciesField" | "colorField" | "parentField" | "typeField" | "baselineStartField" | "baselineEndField" | "groupByField" | "resourceView" | "assigneeField" | "effortField" | "tooltipFields" | "quickFilters" | "autoZoomToFilter" | "borderColorField" | "lockField" | "objectField" | "timeSegments" | "dependencyField")[];
44
231
  export declare const ObjectGantt: React.FC<ObjectGanttProps>;
232
+ export {};
45
233
  //# sourceMappingURL=ObjectGantt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectGantt.d.ts","sourceRoot":"","sources":["../src/ObjectGantt.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAwE,MAAM,OAAO,CAAC;AAE7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAyB,MAAM,kBAAkB,CAAC;AAiC5F,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,eAAe,EAA8C,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAO9I;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtE;AA6ID,0EAA0E;AAC1E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAUzE;AAiBD,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,EAAE,CAqBrE;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,gBAAgB,CAAC;IACzB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACpC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CACnB,IAAI,EAAE,SAAS,EACf,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,UAAU,CAAC,CAAC,KACtE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC;AA2GD,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,EAAE,CAAC,gBAAgB,CAisClD,CAAC"}
1
+ {"version":3,"file":"ObjectGantt.d.ts","sourceRoot":"","sources":["../src/ObjectGantt.tsx"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { GanttTask, GanttViewMode } from './GanttView';
1
+ import { GanttTask, GanttViewMode } from './GanttView.js';
2
2
  /**
3
3
  * ObjectUI
4
4
  * Copyright (c) 2024-present ObjectStack Inc.
@@ -1 +1 @@
1
- {"version":3,"file":"ResourceWorkload.d.ts","sourceRoot":"","sources":["../src/ResourceWorkload.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAmD,MAAM,aAAa,CAAC;AAIlH,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,wEAAwE;IACxE,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK;QAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9E,+DAA+D;IAC/D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,MAAM,CAAC;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC9C,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,uCAAuC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAY,EACZ,QAAgB,EAChB,eAA8B,EAC9B,SAAS,GACV,EAAE,qBAAqB,qBAuIvB"}
1
+ {"version":3,"file":"ResourceWorkload.d.ts","sourceRoot":"","sources":["../src/ResourceWorkload.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;GAQG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,aAAa,EAAyB,MAAM,aAAa,CAAC;AAKxF,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,wEAAwE;IACxE,QAAQ,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK;QAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC9E,+DAA+D;IAC/D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,MAAM,CAAC;IACrC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC;IAC9C,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,uCAAuC;IACvC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAsBD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAY,EACZ,QAAgB,EAChB,eAA8B,EAC9B,SAAS,GACV,EAAE,qBAAqB,qBA0IvB"}
package/dist/index.d.ts CHANGED
@@ -1,19 +1,61 @@
1
1
  import { default as React } from 'react';
2
- import { ObjectGantt } from './ObjectGantt';
2
+ import { ObjectGantt } from './ObjectGantt.js';
3
3
  export { ObjectGantt };
4
- export type { ObjectGanttProps, QuickFilterDef } from './ObjectGantt';
5
- export { QuickFilterBar } from './QuickFilterBar';
6
- export type { QuickFilterBarProps, QuickFilterField, QuickFilterOption, QuickFilterLabels, } from './QuickFilterBar';
7
- export { GanttView } from './GanttView';
8
- export type { GanttViewProps, GanttTask, GanttTaskType, GanttViewMode, GanttDependency, GanttDependencyObject, GanttLinkType, GanttMarker, } from './GanttView';
9
- export { normalizeDependencies, normalizeTaskType } from './ObjectGantt';
10
- export { normalizeShiftSegments, parseHHMM, shiftDayStart, bandAt } from './shifts';
11
- export type { ShiftSegmentsConfig, ShiftBandConfig, NormShiftSegments, NormShiftBand, } from './shifts';
12
- export { ResourceWorkload } from './ResourceWorkload';
13
- export type { ResourceWorkloadProps } from './ResourceWorkload';
14
- export { computeWorkload } from './workload';
15
- export type { WorkloadColumn, WorkloadOptions, ResourceCell, ResourceLoad, } from './workload';
4
+ export type { ObjectGanttProps, QuickFilterDef } from './ObjectGantt.js';
5
+ export { QuickFilterBar } from './QuickFilterBar.js';
6
+ export type { QuickFilterBarProps, QuickFilterField, QuickFilterOption, QuickFilterLabels, } from './QuickFilterBar.js';
7
+ export { GanttView } from './GanttView.js';
8
+ export type { GanttViewProps, GanttTask, GanttTaskType, GanttViewMode, GanttDependency, GanttDependencyObject, GanttLinkType, GanttMarker, } from './GanttView.js';
9
+ export { normalizeDependencies, normalizeTaskType } from './ObjectGantt.js';
10
+ export { normalizeShiftSegments, parseHHMM, shiftDayStart, bandAt } from './shifts.js';
11
+ export type { ShiftSegmentsConfig, ShiftBandConfig, NormShiftSegments, NormShiftBand, } from './shifts.js';
12
+ export { ResourceWorkload } from './ResourceWorkload.js';
13
+ export type { ResourceWorkloadProps } from './ResourceWorkload.js';
14
+ export { computeWorkload } from './workload.js';
15
+ export type { WorkloadColumn, WorkloadOptions, ResourceCell, ResourceLoad, } from './workload.js';
16
16
  export declare const ObjectGanttRenderer: React.FC<{
17
17
  schema: any;
18
18
  }>;
19
+ /**
20
+ * ⛔ The bare `gantt` node type key is RETIRED (objectui#8008, maintainer
21
+ * ruling 2026-09-09, route 3). `object-gantt` is the one spelling this plugin
22
+ * serves.
23
+ *
24
+ * ## What was here, and why it went
25
+ *
26
+ * `ComponentRegistry.register('gantt', ObjectGanttRenderer, { namespace:
27
+ * 'view', ... })` — a second key on the SAME renderer, which stored both
28
+ * `view:gantt` and the bare `gantt` fallback. The declared face admitted only
29
+ * one of the two: `ObjectGanttSchema.type` is the literal `'object-gantt'`, so
30
+ * an author who annotated their node could not write the key the registry
31
+ * accepted (`TS2322`), while an author who left the literal bare got no
32
+ * checking at all. Two published faces, opposite verdicts.
33
+ *
34
+ * ## Why unregistering is the whole retirement here — measured, not assumed
35
+ *
36
+ * ⚠️ `BaseSchemaCore` ends `.passthrough()` (and `BaseSchema` closed with
37
+ * `[key: string]: any` until objectui#8347), so a dropped MEMBER KEY is KEPT,
38
+ * not refused, on the zod face (the objectui#7664 failure). That hazard does not reach a TYPE NAME on this
39
+ * surface, and the reason is structural rather than lucky: no schema face in
40
+ * `@object-ui/types` ever declared `gantt` as a component node type — measured
41
+ * whole-repo, zero declarations, against a firing control of two for
42
+ * `object-gantt` (`objectql.ts` + its Zod mirror). There is no arm to convert
43
+ * into a named refusal, so unregistering IS the retirement.
44
+ *
45
+ * ⇒ Registration-only retirement. Contrast the `kanban` sibling in the same
46
+ * batch (objectui#8802), which DID have a declared arm and therefore got a
47
+ * named refusal rather than a deletion.
48
+ *
49
+ * ## ⛔ Two layers, and only one of them moved
50
+ *
51
+ * The string `gantt` also names a STORED `NamedListView.type` — the value
52
+ * `CreateViewDialog` writes and every tenant's database holds. That layer is
53
+ * untouched: `packages/plugin-view/src/ObjectView.tsx`'s `switch (viewType)`
54
+ * maps the stored `gantt` view type onto the node type it emits, and it already
55
+ * emits `object-gantt`. ⇒ Every gantt view any user ever created through the
56
+ * console already renders through the surviving spelling; this retirement moves
57
+ * zero stored documents.
58
+ *
59
+ * Pinned in `src/__tests__/bare-gantt-node-key-retired-8008.test.ts`.
60
+ */
19
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,cAAc,EACd,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACpF,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,aAAa,GACd,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,YAAY,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC;AAyBpB,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,CAiBzD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,CAAC;AACvB,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,YAAY,EACV,cAAc,EACd,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EAAE,sBAAsB,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACpF,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,aAAa,GACd,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,YAAY,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,YAAY,GACb,MAAM,YAAY,CAAC;AAgCpB,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,CA2BxD,CAAC;AAqFH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG"}