@object-ui/plugin-gantt 17.5.0 → 17.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +3259 -0
- package/README.md +637 -137
- package/dist/GanttView.d.ts +65 -55
- package/dist/GanttView.d.ts.map +1 -1
- package/dist/ObjectGantt.d.ts +193 -6
- package/dist/ObjectGantt.d.ts.map +1 -1
- package/dist/QuickFilterBar.d.ts +16 -4
- package/dist/QuickFilterBar.d.ts.map +1 -1
- package/dist/ResourceWorkload.d.ts +2 -2
- package/dist/ResourceWorkload.d.ts.map +1 -1
- package/dist/index.d.ts +55 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1974 -1686
- package/dist/index.umd.cjs +12 -12
- package/dist/scheduling.d.ts +17 -9
- package/dist/scheduling.d.ts.map +1 -1
- package/dist/shifts.d.ts +16 -13
- package/dist/shifts.d.ts.map +1 -1
- package/dist/tzShift.d.ts +55 -0
- package/dist/tzShift.d.ts.map +1 -0
- package/dist/useGanttTranslation.d.ts.map +1 -1
- package/dist/workload.d.ts +1 -1
- package/package.json +17 -14
- package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/GanttView.d.ts
CHANGED
|
@@ -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,13 +53,21 @@ 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;
|
|
58
67
|
/**
|
|
59
|
-
* Per-task alert stroke
|
|
68
|
+
* Per-task alert stroke. When set, the bar/milestone/summary
|
|
60
69
|
* is outlined in this color (border + 2px halo) without touching its fill —
|
|
61
|
-
* e.g. red for
|
|
70
|
+
* e.g. red for overdue, amber for due-soon, unset for normal. Maps from the view's
|
|
62
71
|
* `borderColorField` in ObjectGantt. The critical-path overlay, when active,
|
|
63
72
|
* takes precedence on the rows it marks.
|
|
64
73
|
*/
|
|
@@ -70,16 +79,17 @@ export interface GanttTask {
|
|
|
70
79
|
/**
|
|
71
80
|
* Node kind. Defaults to a leaf `task` (or `summary` automatically when it has
|
|
72
81
|
* children). Set `'group'` to render a pure tree header — expandable/collapsible
|
|
73
|
-
* like a summary but with NO timeline bar (
|
|
82
|
+
* like a summary but with NO timeline bar (for project / product style pure
|
|
83
|
+
* grouping levels: a tree on the left, no bar on the right).
|
|
74
84
|
* Its children still render their own bars normally.
|
|
75
85
|
*/
|
|
76
86
|
type?: GanttTaskType;
|
|
77
87
|
/**
|
|
78
|
-
* Per-node lock (
|
|
88
|
+
* Per-node lock (view-only / click-through). When true this row is view-only: its bar can't be
|
|
79
89
|
* dragged/resized, progress can't be dragged, no dependency can be drawn from
|
|
80
90
|
* it, and inline-edit / context-menu edit+delete are hidden. Clicking the bar
|
|
81
91
|
* (onTaskClick — open drawer / jump) still works. Independent of the global
|
|
82
|
-
* `readOnly`; use to lock individual levels (e.g.
|
|
92
|
+
* `readOnly`; use to lock individual levels (e.g. work orders) while others stay
|
|
83
93
|
* editable. Maps from the view's `lockField` in ObjectGantt.
|
|
84
94
|
*/
|
|
85
95
|
locked?: boolean;
|
|
@@ -90,7 +100,7 @@ export interface GanttTask {
|
|
|
90
100
|
baselineStart?: Date;
|
|
91
101
|
baselineEnd?: Date;
|
|
92
102
|
/**
|
|
93
|
-
* Extra label/value rows for the hover tooltip
|
|
103
|
+
* Extra label/value rows for the hover tooltip, in display order.
|
|
94
104
|
* Populated from the view's `tooltipFields` config (resolved + formatted by
|
|
95
105
|
* ObjectGantt). When present they replace the default date·duration·progress
|
|
96
106
|
* line in the tooltip.
|
|
@@ -106,7 +116,7 @@ export interface GanttTask {
|
|
|
106
116
|
*/
|
|
107
117
|
hasOwnDates?: boolean;
|
|
108
118
|
}
|
|
109
|
-
/** Timeline granularity — one column per day, week, month, or
|
|
119
|
+
/** Timeline granularity — one column per day, week, month, quarter, or year. */
|
|
110
120
|
export type GanttViewMode = 'day' | 'week' | 'month' | 'quarter' | 'year';
|
|
111
121
|
/**
|
|
112
122
|
* Nominal days represented by one column at each granularity. Sets the zoom
|
|
@@ -116,21 +126,7 @@ export type GanttViewMode = 'day' | 'week' | 'month' | 'quarter' | 'year';
|
|
|
116
126
|
*/
|
|
117
127
|
export declare const NOMINAL_DAYS: Record<GanttViewMode, number>;
|
|
118
128
|
export declare const MS_PER_DAY: number;
|
|
119
|
-
|
|
120
|
-
* "Shifted clock" for business-time-zone rendering (业务时区渲染): translate
|
|
121
|
-
* real instants into a display space where the browser's local clock reads
|
|
122
|
-
* the CONFIGURED zone's wall time. All existing local-clock logic — shift
|
|
123
|
-
* bands, day columns, snapping, the today line, date labels — then renders
|
|
124
|
-
* that zone correctly for every viewer; writes translate back so persisted
|
|
125
|
-
* data stays real instants. Per-instant offsets keep DST zones close;
|
|
126
|
-
* fixed-offset zones (Asia/Shanghai) are exact.
|
|
127
|
-
*/
|
|
128
|
-
export declare function makeTzShift(timeZone?: string): {
|
|
129
|
-
delta: number;
|
|
130
|
-
to: (d: Date) => Date;
|
|
131
|
-
from: (d: Date) => Date;
|
|
132
|
-
now: () => Date;
|
|
133
|
-
};
|
|
129
|
+
export { makeTzShift };
|
|
134
130
|
/** Floor a date to the start of its column unit (Monday for weeks). */
|
|
135
131
|
export declare function startOfUnit(date: Date, mode: GanttViewMode): Date;
|
|
136
132
|
/** Add whole column units; month/quarter clamp the day (Jan 31 + 1mo = Feb 28). */
|
|
@@ -142,7 +138,7 @@ export interface GanttMarker {
|
|
|
142
138
|
color?: string;
|
|
143
139
|
}
|
|
144
140
|
/**
|
|
145
|
-
* Per-interaction switches
|
|
141
|
+
* Per-interaction switches — the DHTMLX `drag_move` / `drag_resize` /
|
|
146
142
|
* `drag_progress` / `drag_links` model. Each defaults to true; flipping one off
|
|
147
143
|
* hides that affordance everywhere while the others keep working. They only
|
|
148
144
|
* NARROW what the write callbacks / `readOnly` / row locks already allow —
|
|
@@ -185,7 +181,8 @@ export interface GanttViewProps {
|
|
|
185
181
|
onBeforeDependencyCreate?: (source: GanttTask, target: GanttTask, type: GanttLinkType) => boolean;
|
|
186
182
|
/**
|
|
187
183
|
* Enables dependency removal: right-clicking a dependency link opens a menu
|
|
188
|
-
* with "
|
|
184
|
+
* with a "Remove dependency" entry (`gantt.menu.removeDependency`) and a type
|
|
185
|
+
* switch. Called with the source/target tasks of the
|
|
189
186
|
* removed link (target no longer depends on source).
|
|
190
187
|
*/
|
|
191
188
|
onDependencyDelete?: (source: GanttTask, target: GanttTask) => void;
|
|
@@ -200,17 +197,18 @@ export interface GanttViewProps {
|
|
|
200
197
|
inlineEdit?: boolean;
|
|
201
198
|
/**
|
|
202
199
|
* Show the "auto-schedule" toolbar button. Clicking it runs a one-shot
|
|
203
|
-
* dependency-driven reschedule of the whole project (
|
|
200
|
+
* dependency-driven reschedule of the whole project (forward-only): every successor is
|
|
204
201
|
* pushed later until its link constraints hold, preserving durations, and the
|
|
205
202
|
* resulting date changes are emitted via `onTaskUpdate`. Requires onTaskUpdate.
|
|
206
203
|
*/
|
|
207
204
|
autoSchedule?: boolean;
|
|
208
205
|
/**
|
|
209
|
-
* After a bar drag/resize, validate the move against dependency constraints
|
|
210
|
-
*
|
|
206
|
+
* After a bar drag/resize, validate the move against dependency constraints.
|
|
207
|
+
* If the new position would violate a link — the task moved
|
|
211
208
|
* earlier than a predecessor allows, or its move pushes successors past their
|
|
212
|
-
* constraints — a confirmation prompts to
|
|
213
|
-
*
|
|
209
|
+
* constraints — a confirmation prompts to "Auto-reschedule"
|
|
210
|
+
* (`gantt.conflict.confirm` — cascade-reschedule the affected tasks,
|
|
211
|
+
* preserving durations) or keep the overlap. Requires
|
|
214
212
|
* onTaskUpdate and only fires when links exist. Ignored in readOnly.
|
|
215
213
|
*/
|
|
216
214
|
rescheduleOnConflict?: boolean;
|
|
@@ -219,13 +217,15 @@ export interface GanttViewProps {
|
|
|
219
217
|
/**
|
|
220
218
|
* Working calendar for duration math. When set, auto-schedule and critical
|
|
221
219
|
* path count working days only — weekends (`skipWeekends`) and any `holidays`
|
|
222
|
-
* (ISO `yyyy-mm-dd`
|
|
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.
|
|
223
223
|
*/
|
|
224
224
|
workingCalendar?: WorkingCalendar;
|
|
225
225
|
/**
|
|
226
|
-
* Shift segmentation
|
|
227
|
-
* `day`, each day column is replaced by one column per band (
|
|
228
|
-
* the upper header tier shows the
|
|
226
|
+
* Shift segmentation. When set AND the active granularity is
|
|
227
|
+
* `day`, each day column is replaced by one column per band (day | night | …),
|
|
228
|
+
* and the upper header tier shows the shift-day (starting at `dayStart`, e.g.
|
|
229
229
|
* 08:00). Drag/resize then snaps to band boundaries instead of whole days.
|
|
230
230
|
* Off by default → existing gantts are unaffected (parity with `folding`).
|
|
231
231
|
* Mutually exclusive with weekend/holiday folding (segmenting wins).
|
|
@@ -244,7 +244,7 @@ export interface GanttViewProps {
|
|
|
244
244
|
*/
|
|
245
245
|
readOnly?: boolean;
|
|
246
246
|
/**
|
|
247
|
-
* Mobile read-only
|
|
247
|
+
* Mobile read-only. When true, the chart auto-enters read-only
|
|
248
248
|
* mode on narrow viewports (< 640px) so touch users get a clean, scrollable
|
|
249
249
|
* thumbnail of the schedule instead of error-prone drag editing — equivalent
|
|
250
250
|
* to `readOnly` but scoped to small screens. Wider viewports are unaffected.
|
|
@@ -252,7 +252,7 @@ export interface GanttViewProps {
|
|
|
252
252
|
*/
|
|
253
253
|
mobileReadOnly?: boolean;
|
|
254
254
|
/**
|
|
255
|
-
* Dynamic grouping accessor
|
|
255
|
+
* Dynamic grouping accessor. When provided, leaf tasks are
|
|
256
256
|
* bucketed by the returned `key` and rendered beneath one synthesized summary
|
|
257
257
|
* row per group — the original `parent` hierarchy is replaced by the grouping.
|
|
258
258
|
* Return `null` to drop a task into the "ungrouped" bucket. Grouping is purely
|
|
@@ -266,18 +266,19 @@ export interface GanttViewProps {
|
|
|
266
266
|
/** Label for the bucket collecting tasks whose `groupBy` returns null. */
|
|
267
267
|
ungroupedLabel?: string;
|
|
268
268
|
/**
|
|
269
|
-
* Auto-collapse tree nodes at or below this depth on first render
|
|
269
|
+
* Auto-collapse tree nodes at or below this depth on first render.
|
|
270
270
|
* Depth is 0-indexed: roots are 0, their children 1, etc. Every node whose
|
|
271
271
|
* depth is `>= defaultCollapsedDepth` AND which has children is seeded into the
|
|
272
272
|
* collapsed set once, so its subtree starts hidden. The user can still expand
|
|
273
|
-
* any of them — this only sets the initial state. Example: a
|
|
274
|
-
* tree where
|
|
275
|
-
*
|
|
273
|
+
* any of them — this only sets the initial state. Example: a
|
|
274
|
+
* project→product→production-plan→work-order tree where the production plan
|
|
275
|
+
* sits at depth 2 uses `defaultCollapsedDepth={2}` to start
|
|
276
|
+
* with every production plan (and its work-order children) folded. Omit (or pass a depth past
|
|
276
277
|
* the deepest node) to start fully expanded.
|
|
277
278
|
*/
|
|
278
279
|
defaultCollapsedDepth?: number;
|
|
279
280
|
/**
|
|
280
|
-
* How a summary bar's span is computed
|
|
281
|
+
* How a summary bar's span is computed. `'children'` (default)
|
|
281
282
|
* rolls up from the children — min start / max end / duration-weighted
|
|
282
283
|
* progress — ignoring the summary task's own dates. `'self'` draws the bar
|
|
283
284
|
* from the task's OWN start/end/progress; tasks flagged `hasOwnDates: false`
|
|
@@ -289,18 +290,19 @@ export interface GanttViewProps {
|
|
|
289
290
|
/**
|
|
290
291
|
* Persist the user's layout tweaks (granularity + column/task-list widths)
|
|
291
292
|
* to `localStorage` under this key. On mount the saved layout is restored;
|
|
292
|
-
* the "
|
|
293
|
+
* the "Save layout" toolbar button (`gantt.toolbar.saveLayout`) writes the
|
|
294
|
+
* current layout. Omit to disable
|
|
293
295
|
* persistence. The button still appears when `onLayoutChange` is set.
|
|
294
296
|
*/
|
|
295
297
|
persistLayoutKey?: string;
|
|
296
298
|
/**
|
|
297
|
-
* Notified when the user saves the current layout
|
|
299
|
+
* Notified when the user saves the current layout. Receives the
|
|
298
300
|
* snapshot `{ viewMode, columnWidth, taskListCollapsed }`. Use this to persist
|
|
299
301
|
* layout in your own store instead of (or alongside) `persistLayoutKey`.
|
|
300
302
|
*/
|
|
301
303
|
onLayoutChange?: (layout: GanttLayout) => void;
|
|
302
304
|
/**
|
|
303
|
-
* Show a manual refresh button in the toolbar (
|
|
305
|
+
* Show a manual refresh button in the toolbar (`gantt.toolbar.refresh`). The host re-reads
|
|
304
306
|
* its data source so server-computed fields (rollups, alert colors) and
|
|
305
307
|
* other users' edits reach the chart without a full page reload. Omit to
|
|
306
308
|
* hide the button (e.g. inline `value` data has nothing to re-read).
|
|
@@ -311,30 +313,38 @@ export interface GanttViewProps {
|
|
|
311
313
|
/**
|
|
312
314
|
* Whether the data source can persist dependency LINK TYPES (fs/ss/ff/sf).
|
|
313
315
|
* Default true. Set false when dependencies are stored as bare predecessor
|
|
314
|
-
* ids (
|
|
316
|
+
* ids (predecessor ids only, no type slot) — the link context menu then hides the type
|
|
315
317
|
* switcher (a switch would be silently reverted on refetch) and drag-created
|
|
316
318
|
* links are always FS regardless of which endpoints were connected.
|
|
317
319
|
*/
|
|
318
320
|
dependencyTypes?: boolean;
|
|
319
321
|
/**
|
|
320
|
-
* Business time zone for rendering
|
|
322
|
+
* Business time zone for rendering, an IANA name like
|
|
321
323
|
* 'Asia/Shanghai'. The chart's calendar math — shift bands, day columns,
|
|
322
324
|
* drag snapping, the today line, start/end labels — renders this zone's
|
|
323
325
|
* wall time for EVERY viewer instead of the browser's; without it, a
|
|
324
|
-
* viewer in another zone sees bands and dates
|
|
325
|
-
*
|
|
326
|
-
*
|
|
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).
|
|
327
337
|
*/
|
|
328
338
|
timeZone?: string;
|
|
329
339
|
/**
|
|
330
|
-
* Base name for exported files
|
|
331
|
-
* "
|
|
340
|
+
* Base name for exported files, e.g. the view or object label —
|
|
341
|
+
* "Shift Plan Gantt" exports as `Shift Plan Gantt-20260719-1530.png`. Falls back
|
|
332
342
|
* to "gantt". The timestamp suffix keeps repeated exports from silently
|
|
333
343
|
* overwriting each other in the Downloads folder.
|
|
334
344
|
*/
|
|
335
345
|
exportFileName?: string;
|
|
336
346
|
/**
|
|
337
|
-
* Per-interaction switches
|
|
347
|
+
* Per-interaction switches. Omit for all-on. See
|
|
338
348
|
* {@link GanttInteractions}: e.g. `{ resize: false }` keeps bars movable and
|
|
339
349
|
* links drawable but pins every duration; `{ link: false }` removes the
|
|
340
350
|
* dependency drag-dots and the create/delete menu entries. Subject to
|
|
@@ -352,7 +362,7 @@ export interface GanttViewProps {
|
|
|
352
362
|
*/
|
|
353
363
|
onBeforeTaskUpdate?: (task: GanttTask, changes: Partial<Pick<GanttTask, 'title' | 'start' | 'end' | 'progress'>>) => boolean | Promise<boolean>;
|
|
354
364
|
}
|
|
355
|
-
/** Persisted layout snapshot written by the "
|
|
365
|
+
/** Persisted layout snapshot written by the "Save layout" toolbar button. */
|
|
356
366
|
export interface GanttLayout {
|
|
357
367
|
viewMode: GanttViewMode;
|
|
358
368
|
/** Effective day-column width in px, or null when auto-fit. */
|
|
@@ -361,7 +371,7 @@ export interface GanttLayout {
|
|
|
361
371
|
/** User-dragged task-list (name column) width in px, or null when auto-sized. */
|
|
362
372
|
taskListWidth?: number | null;
|
|
363
373
|
/**
|
|
364
|
-
* Ids of rows the user had collapsed when saving
|
|
374
|
+
* Ids of rows the user had collapsed when saving. Present (even
|
|
365
375
|
* empty) means the saved expand/collapse state wins over
|
|
366
376
|
* `defaultCollapsedDepth`; absent (older snapshots) leaves the default.
|
|
367
377
|
*/
|
package/dist/GanttView.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GanttView.d.ts","sourceRoot":"","sources":["../src/GanttView.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AA8B9B,OAAO,EAAqF,KAAK,eAAe,EAAiD,MAAM,cAAc,CAAA;AACrL,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"GanttView.d.ts","sourceRoot":"","sources":["../src/GanttView.tsx"],"names":[],"mappings":"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"}
|
package/dist/ObjectGantt.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
|
-
import {
|
|
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
|
-
* One quick-filter dimension
|
|
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
|
|
7
8
|
* options from the object schema (select options / lookup reference records) so
|
|
8
9
|
* no business field names are baked into the (MIT) plugin.
|
|
@@ -14,7 +15,7 @@ export interface QuickFilterDef {
|
|
|
14
15
|
label?: string;
|
|
15
16
|
/**
|
|
16
17
|
* Explicit option override. Highest priority — use for fixed enums that are
|
|
17
|
-
* not modeled as select options (e.g.
|
|
18
|
+
* not modeled as select options (e.g. a work-order category). Plain strings become
|
|
18
19
|
* value === label; objects allow a distinct display label.
|
|
19
20
|
*/
|
|
20
21
|
options?: Array<string | {
|
|
@@ -22,15 +23,157 @@ 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
|
-
|
|
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 keeps working exactly as before and is still read
|
|
153
|
+
* through the index signature — declaring it is the one change that would not
|
|
154
|
+
* have been additive, and it is severed to objectui#6475. The registered
|
|
155
|
+
* renderer (`index.tsx`) still passes `schema: any`, so no runtime shape is
|
|
156
|
+
* turned away either way.
|
|
157
|
+
*/
|
|
158
|
+
schema: ObjectGanttSchema;
|
|
30
159
|
dataSource?: DataSource;
|
|
31
160
|
className?: string;
|
|
32
161
|
onTaskClick?: (record: any) => void;
|
|
33
|
-
|
|
162
|
+
/**
|
|
163
|
+
* TWO parameters since objectui#9357, and the second is not decoration: this
|
|
164
|
+
* prop reaches `useNavigationOverlay` as its `onRowClick`, and `handleClick`
|
|
165
|
+
* invokes it as `onRowClick(record, event)` — the modifier payload a host
|
|
166
|
+
* needs to implement Cmd/Ctrl/middle-click for itself. Declaring one
|
|
167
|
+
* parameter hid the second on the ONE line a host reads. Spelled `any` and
|
|
168
|
+
* not `HandleClickModifiers` for the reason objectui#9341 measured on
|
|
169
|
+
* `ObjectKanbanSchema.onCardClick`: that interface lives in
|
|
170
|
+
* `@object-ui/react`, the published twins in `@object-ui/types` may not name
|
|
171
|
+
* it, and a host that discovered the payload from the implementation
|
|
172
|
+
* annotated it `React.MouseEvent` — which a narrower declaration refuses
|
|
173
|
+
* contravariantly. `BaseSchema`'s own `onClick` / `onChange` / `onSubmit`
|
|
174
|
+
* already use this spelling for exactly this situation.
|
|
175
|
+
*/
|
|
176
|
+
onRowClick?: (record: any, event?: any) => void;
|
|
34
177
|
onEdit?: (record: any) => void;
|
|
35
178
|
onDelete?: (record: any) => void;
|
|
36
179
|
/**
|
|
@@ -41,5 +184,49 @@ export interface ObjectGanttProps {
|
|
|
41
184
|
*/
|
|
42
185
|
onBeforeTaskUpdate?: (task: GanttTask, changes: Partial<Pick<GanttTask, 'title' | 'start' | 'end' | 'progress'>>) => boolean | Promise<boolean>;
|
|
43
186
|
}
|
|
187
|
+
/**
|
|
188
|
+
* `keyof T` with the string / number INDEX SIGNATURE stripped out.
|
|
189
|
+
*
|
|
190
|
+
* Load-bearing, not tidiness. `GanttConfig` derives from the spec's
|
|
191
|
+
* `GanttConfigSchema`, which carries an index signature, so a bare
|
|
192
|
+
* `keyof GanttConfig` widens to `string` — and every guard written against it
|
|
193
|
+
* (the `satisfies` below, the coverage pin in
|
|
194
|
+
* `ObjectGantt.blockPrecedence.test.tsx`) then constrains NOTHING while looking
|
|
195
|
+
* exactly like a guard that does. That is the same blind instrument
|
|
196
|
+
* objectui#6051's declaration pin records: an index signature absorbs precisely
|
|
197
|
+
* the evidence a type annotation would have produced. Measured here — the pin
|
|
198
|
+
* came back `string` before this alias existed.
|
|
199
|
+
*/
|
|
200
|
+
type KnownKeys<T> = keyof {
|
|
201
|
+
[K in keyof T as string extends K ? never : number extends K ? never : K]: T[K];
|
|
202
|
+
};
|
|
203
|
+
/** The DECLARED members of `GanttConfig` — its index signature removed. */
|
|
204
|
+
export type KnownGanttConfigKey = KnownKeys<GanttConfig>;
|
|
205
|
+
/**
|
|
206
|
+
* The FLAT spelling of `GanttConfig`'s keys — what `getGanttConfig`'s flat
|
|
207
|
+
* branch reads, and what `ObjectView` / `ListView` EMIT.
|
|
208
|
+
*
|
|
209
|
+
* Both flatteners build an `object-gantt` schema by spreading `options.gantt`'s
|
|
210
|
+
* CONTENTS at the top level (`plugin-view/src/ObjectView.tsx` `case 'gantt'`,
|
|
211
|
+
* `plugin-list/src/ListView.tsx` `case 'gantt'`); the product carries these keys
|
|
212
|
+
* and NO `gantt` key at all. That is an internal transport form, not a second
|
|
213
|
+
* authoring surface — and it is why the precedence flip below strands neither
|
|
214
|
+
* producer.
|
|
215
|
+
*
|
|
216
|
+
* DERIVED from `GanttConfigSchema` in full — the same zod object the block
|
|
217
|
+
* branch validates against — so a key added to the spec reaches the shadow
|
|
218
|
+
* diagnostic without a second edit (the discipline `FLAT_MAP_CONFIG_KEYS` set in
|
|
219
|
+
* objectui#5177). Until objectstack#15469 that derivation covered only part of
|
|
220
|
+
* the vocabulary and a second literal, `GANTT_CONFIG_EXTENSION_KEYS`, named the
|
|
221
|
+
* ten keys the renderer read through the schema's then-open `.passthrough()`
|
|
222
|
+
* window. The spec now declares all ten, so the list is one source again and the
|
|
223
|
+
* literal is retired (objectui#7845) — keeping it would have made every one of
|
|
224
|
+
* the ten a DUPLICATE entry here, which is what the no-duplicates pin in
|
|
225
|
+
* `ObjectGantt.blockPrecedence.test.tsx` measured. `dependencyField` is the
|
|
226
|
+
* legacy singular alias the flat branch still reads beside `dependenciesField`;
|
|
227
|
+
* it is not a `GanttConfig` key, so it is named on its own.
|
|
228
|
+
*/
|
|
229
|
+
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
230
|
export declare const ObjectGantt: React.FC<ObjectGanttProps>;
|
|
231
|
+
export {};
|
|
45
232
|
//# 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,
|
|
1
|
+
{"version":3,"file":"ObjectGantt.d.ts","sourceRoot":"","sources":["../src/ObjectGantt.tsx"],"names":[],"mappings":"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"}
|
package/dist/QuickFilterBar.d.ts
CHANGED
|
@@ -13,14 +13,26 @@ export interface QuickFilterField {
|
|
|
13
13
|
/** Full option list (already resolved by the owner). */
|
|
14
14
|
options: QuickFilterOption[];
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* Display strings for the bar. Every member is optional: `all`, `clear` and
|
|
18
|
+
* `empty` fall back to English defaults and an omitted `resultSummary` simply
|
|
19
|
+
* hides the summary, so a label is only ever *supplied* by the owner.
|
|
20
|
+
* The owning `ObjectGantt` passes translated values resolved from the
|
|
21
|
+
* `gantt.quickFilter.*` bundle namespace (objectstack#5427); the `Host:` key
|
|
22
|
+
* noted on each member is where that value comes from.
|
|
23
|
+
*/
|
|
16
24
|
export interface QuickFilterLabels {
|
|
17
|
-
/**
|
|
25
|
+
/** Select-all toggle and empty-selection trigger text. Host: `gantt.quickFilter.all`. */
|
|
18
26
|
all?: string;
|
|
19
|
-
/**
|
|
27
|
+
/** Clears every dimension. Host: `gantt.quickFilter.clear`. */
|
|
20
28
|
clear?: string;
|
|
21
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Builds the "showing N / M" summary; omit to hide the summary.
|
|
31
|
+
* Host: `gantt.quickFilter.resultSummary` (single-brace `{shown}` / `{total}`
|
|
32
|
+
* placeholders, resolved at the call site by a literal `.replace`).
|
|
33
|
+
*/
|
|
22
34
|
resultSummary?: (shown: number, total: number) => string;
|
|
23
|
-
/** Placeholder shown when a dimension resolved zero options. */
|
|
35
|
+
/** Placeholder shown when a dimension resolved zero options. Host: `gantt.quickFilter.empty`. */
|
|
24
36
|
empty?: string;
|
|
25
37
|
}
|
|
26
38
|
export interface QuickFilterBarProps {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"QuickFilterBar.d.ts","sourceRoot":"","sources":["../src/QuickFilterBar.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AACH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,
|
|
1
|
+
{"version":3,"file":"QuickFilterBar.d.ts","sourceRoot":"","sources":["../src/QuickFilterBar.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;GAYG;AACH,OAAO,KAAsC,MAAM,OAAO,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,yFAAyF;IACzF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACzD,iGAAiG;IACjG,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IAC5B,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAChC,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACpD,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4MD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+CxD,CAAC"}
|
|
@@ -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.
|
|
@@ -7,7 +7,7 @@ import { GanttTask, GanttViewMode } from './GanttView';
|
|
|
7
7
|
* LICENSE file in the root directory of this source tree.
|
|
8
8
|
*/
|
|
9
9
|
/**
|
|
10
|
-
* Resource / Workload view
|
|
10
|
+
* Resource / Workload view.
|
|
11
11
|
*
|
|
12
12
|
* A per-resource load histogram aligned to the same time columns the Gantt grid
|
|
13
13
|
* uses. Each resource gets a row; each column draws a bar whose height ∝ the
|
|
@@ -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,
|
|
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"}
|