@toclocoinc/lattice-grid 1.68.0 → 1.68.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/angular/package.json +1 -1
- package/docs/API.html +5315 -3774
- package/docs/api-detail.html +4 -4
- package/lattice-grid.d.ts +3357 -1
- package/lattice-grid.esm.min.js +9 -7
- package/lattice-grid.min.cjs +9 -7
- package/lattice-grid.min.js +9 -7
- package/modules/ai.d.ts +64 -1
- package/modules/ai.esm.min.js +3 -3
- package/modules/ai.min.cjs +3 -3
- package/modules/ai.min.js +3 -3
- package/modules/angular.d.ts +1 -1
- package/modules/angular.esm.min.js +3 -3
- package/modules/angular.min.cjs +3 -3
- package/modules/angular.min.js +3 -3
- package/modules/chart-alluvial.d.ts +1 -1
- package/modules/chart-alluvial.esm.min.js +1 -1
- package/modules/chart-alluvial.min.cjs +1 -1
- package/modules/chart-alluvial.min.js +1 -1
- package/modules/chart-arc.d.ts +1 -1
- package/modules/chart-arc.esm.min.js +1 -1
- package/modules/chart-arc.min.cjs +1 -1
- package/modules/chart-arc.min.js +1 -1
- package/modules/chart-bubblemap.d.ts +1 -1
- package/modules/chart-bubblemap.esm.min.js +1 -1
- package/modules/chart-bubblemap.min.cjs +1 -1
- package/modules/chart-bubblemap.min.js +1 -1
- package/modules/chart-bump.d.ts +1 -1
- package/modules/chart-bump.esm.min.js +1 -1
- package/modules/chart-bump.min.cjs +1 -1
- package/modules/chart-bump.min.js +1 -1
- package/modules/chart-calendar.d.ts +1 -1
- package/modules/chart-calendar.esm.min.js +1 -1
- package/modules/chart-calendar.min.cjs +1 -1
- package/modules/chart-calendar.min.js +1 -1
- package/modules/chart-decomposition.d.ts +1 -1
- package/modules/chart-decomposition.esm.min.js +1 -1
- package/modules/chart-decomposition.min.cjs +1 -1
- package/modules/chart-decomposition.min.js +1 -1
- package/modules/chart-diverging.d.ts +1 -1
- package/modules/chart-diverging.esm.min.js +1 -1
- package/modules/chart-diverging.min.cjs +1 -1
- package/modules/chart-diverging.min.js +1 -1
- package/modules/chart-dumbbell.d.ts +1 -1
- package/modules/chart-dumbbell.esm.min.js +1 -1
- package/modules/chart-dumbbell.min.cjs +1 -1
- package/modules/chart-dumbbell.min.js +1 -1
- package/modules/chart-fan.d.ts +1 -1
- package/modules/chart-fan.esm.min.js +1 -1
- package/modules/chart-fan.min.cjs +1 -1
- package/modules/chart-fan.min.js +1 -1
- package/modules/chart-hexbin.d.ts +1 -1
- package/modules/chart-hexbin.esm.min.js +1 -1
- package/modules/chart-hexbin.min.cjs +1 -1
- package/modules/chart-hexbin.min.js +1 -1
- package/modules/chart-hexmap.d.ts +1 -1
- package/modules/chart-hexmap.esm.min.js +1 -1
- package/modules/chart-hexmap.min.cjs +1 -1
- package/modules/chart-hexmap.min.js +1 -1
- package/modules/chart-icicle.d.ts +1 -1
- package/modules/chart-icicle.esm.min.js +1 -1
- package/modules/chart-icicle.min.cjs +1 -1
- package/modules/chart-icicle.min.js +1 -1
- package/modules/chart-markermap.d.ts +1 -1
- package/modules/chart-markermap.esm.min.js +1 -1
- package/modules/chart-markermap.min.cjs +1 -1
- package/modules/chart-markermap.min.js +1 -1
- package/modules/chart-parallel.d.ts +1 -1
- package/modules/chart-parallel.esm.min.js +1 -1
- package/modules/chart-parallel.min.cjs +1 -1
- package/modules/chart-parallel.min.js +1 -1
- package/modules/chart-ridgeline.d.ts +1 -1
- package/modules/chart-ridgeline.esm.min.js +1 -1
- package/modules/chart-ridgeline.min.cjs +1 -1
- package/modules/chart-ridgeline.min.js +1 -1
- package/modules/chart-roc.d.ts +1 -1
- package/modules/chart-roc.esm.min.js +1 -1
- package/modules/chart-roc.min.cjs +1 -1
- package/modules/chart-roc.min.js +1 -1
- package/modules/chart-slope.d.ts +1 -1
- package/modules/chart-slope.esm.min.js +1 -1
- package/modules/chart-slope.min.cjs +1 -1
- package/modules/chart-slope.min.js +1 -1
- package/modules/chart-splom.d.ts +1 -1
- package/modules/chart-splom.esm.min.js +1 -1
- package/modules/chart-splom.min.cjs +1 -1
- package/modules/chart-splom.min.js +1 -1
- package/modules/chart-waffle.d.ts +1 -1
- package/modules/chart-waffle.esm.min.js +1 -1
- package/modules/chart-waffle.min.cjs +1 -1
- package/modules/chart-waffle.min.js +1 -1
- package/modules/charts.d.ts +16 -1
- package/modules/charts.esm.min.js +17 -10
- package/modules/charts.min.cjs +17 -10
- package/modules/charts.min.js +17 -10
- package/modules/data-router.d.ts +227 -1
- package/modules/data-router.esm.min.js +3 -3
- package/modules/data-router.min.cjs +3 -3
- package/modules/data-router.min.js +3 -3
- package/modules/devtools.d.ts +1 -1
- package/modules/devtools.esm.min.js +1 -1
- package/modules/devtools.min.cjs +1 -1
- package/modules/devtools.min.js +1 -1
- package/modules/dhtmlx-compat.d.ts +1 -1
- package/modules/dhtmlx-compat.esm.min.js +3 -3
- package/modules/dhtmlx-compat.min.cjs +3 -3
- package/modules/dhtmlx-compat.min.js +3 -3
- package/modules/gantt.d.ts +302 -1
- package/modules/gantt.esm.min.js +3 -3
- package/modules/gantt.min.cjs +3 -3
- package/modules/gantt.min.js +3 -3
- package/modules/geo-europe-nuts.d.ts +1 -1
- package/modules/geo-europe-nuts.esm.min.js +1 -1
- package/modules/geo-uk.d.ts +1 -1
- package/modules/geo-uk.esm.min.js +1 -1
- package/modules/geo-us-states.d.ts +1 -1
- package/modules/geo-us-states.esm.min.js +1 -1
- package/modules/geo-world-110m.d.ts +1 -1
- package/modules/geo-world-110m.esm.min.js +1 -1
- package/modules/geo-world-50m.d.ts +1 -1
- package/modules/geo-world-50m.esm.min.js +1 -1
- package/modules/htmx.d.ts +1 -1
- package/modules/htmx.esm.min.js +9 -7
- package/modules/htmx.min.cjs +9 -7
- package/modules/htmx.min.js +9 -7
- package/modules/kanban.d.ts +233 -1
- package/modules/kanban.esm.min.js +3 -3
- package/modules/kanban.min.cjs +3 -3
- package/modules/kanban.min.js +3 -3
- package/modules/kpi.d.ts +171 -1
- package/modules/kpi.esm.min.js +4 -4
- package/modules/kpi.min.cjs +4 -4
- package/modules/kpi.min.js +4 -4
- package/modules/layout.d.ts +117 -1
- package/modules/layout.esm.min.js +3 -3
- package/modules/layout.min.cjs +3 -3
- package/modules/layout.min.js +3 -3
- package/modules/mock-socket.d.ts +6 -1
- package/modules/mock-socket.esm.min.js +1 -1
- package/modules/mock-socket.min.cjs +1 -1
- package/modules/mock-socket.min.js +1 -1
- package/modules/react.d.ts +14 -1
- package/modules/react.esm.min.js +3 -3
- package/modules/react.min.cjs +3 -3
- package/modules/react.min.js +3 -3
- package/modules/svelte.d.ts +1 -1
- package/modules/svelte.esm.min.js +3 -3
- package/modules/svelte.min.cjs +3 -3
- package/modules/svelte.min.js +3 -3
- package/modules/tabs.d.ts +30 -1
- package/modules/tabs.esm.min.js +3 -3
- package/modules/tabs.min.cjs +3 -3
- package/modules/tabs.min.js +3 -3
- package/modules/vue.d.ts +8 -1
- package/modules/vue.esm.min.js +3 -3
- package/modules/vue.min.cjs +3 -3
- package/modules/vue.min.js +3 -3
- package/modules/webcomponent.d.ts +113 -1
- package/modules/webcomponent.esm.min.js +9 -7
- package/modules/webcomponent.min.cjs +9 -7
- package/modules/webcomponent.min.js +9 -7
- package/package.json +1 -1
package/modules/kpi.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.68.
|
|
2
|
+
* Lattice Grid 1.68.1, kpi module type declarations
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
@@ -20,21 +20,47 @@ type KPIFormat =
|
|
|
20
20
|
* below it critical; `lowerIsBetter` mirrors it. Colour is a host concern.
|
|
21
21
|
*/
|
|
22
22
|
interface KPIThresholds {
|
|
23
|
+
/**
|
|
24
|
+
* The cut point between good and warning. With the default `higherIsBetter`, a value at
|
|
25
|
+
* or above it is good.
|
|
26
|
+
*/
|
|
23
27
|
warn: number;
|
|
28
|
+
/**
|
|
29
|
+
* The cut point between warning and critical. With `higherIsBetter`, a value at or
|
|
30
|
+
* above it (but below `warn`) is a warning and anything below it is critical.
|
|
31
|
+
*/
|
|
24
32
|
critical: number;
|
|
33
|
+
/**
|
|
34
|
+
* Which way is good. `higherIsBetter` (the default) grades upwards from the cut points;
|
|
35
|
+
* `lowerIsBetter` mirrors them, so a small value is the healthy one.
|
|
36
|
+
*/
|
|
25
37
|
direction?: 'higherIsBetter' | 'lowerIsBetter';
|
|
26
38
|
}
|
|
27
39
|
|
|
28
40
|
/** An explicit band: the `status` of the first band whose half-open `[min, max)` contains the value. */
|
|
29
41
|
interface KPIBand {
|
|
42
|
+
/** The lower bound, inclusive. Omitted, the band reaches down without limit. */
|
|
30
43
|
min?: number;
|
|
44
|
+
/** The upper bound, exclusive. Omitted, the band reaches up without limit. */
|
|
31
45
|
max?: number;
|
|
46
|
+
/**
|
|
47
|
+
* The status a value inside this band reports. The first matching band in the list
|
|
48
|
+
* wins, so order them from the narrowest.
|
|
49
|
+
*/
|
|
32
50
|
status: 'good' | 'warn' | 'critical';
|
|
33
51
|
}
|
|
34
52
|
|
|
35
53
|
/** An optional sparkline series: the `y` field plotted in order of the `x` field (or insertion). */
|
|
36
54
|
interface KPISparkline {
|
|
55
|
+
/**
|
|
56
|
+
* The field the points are ordered by. Omitted, the rows are plotted in the order the
|
|
57
|
+
* panel holds them.
|
|
58
|
+
*/
|
|
37
59
|
x?: string;
|
|
60
|
+
/**
|
|
61
|
+
* The value plotted — a field name or a function of the row. Anything that is not a
|
|
62
|
+
* finite number is dropped, and a series with no finite points renders no sparkline.
|
|
63
|
+
*/
|
|
38
64
|
y: string | ((row: KPIRow) => unknown);
|
|
39
65
|
}
|
|
40
66
|
|
|
@@ -165,18 +191,37 @@ interface KPINodeModel {
|
|
|
165
191
|
key: string;
|
|
166
192
|
/** The tile id, or null on a synthesised level. */
|
|
167
193
|
id: string | null;
|
|
194
|
+
/**
|
|
195
|
+
* What the node is called: the tile's own label, or the path segment a synthesised
|
|
196
|
+
* level came from.
|
|
197
|
+
*/
|
|
168
198
|
label: string;
|
|
169
199
|
/** Depth, 0 at the top level. */
|
|
170
200
|
level: number;
|
|
171
201
|
/** Its place among its siblings, from 1, and how many there are. */
|
|
172
202
|
posinset: number;
|
|
203
|
+
/**
|
|
204
|
+
* How many siblings the node sits among — the other half of the screen-reader's "3 of
|
|
205
|
+
* 7".
|
|
206
|
+
*/
|
|
173
207
|
setsize: number;
|
|
208
|
+
/** Whether the node has anything beneath it. A leaf is never expandable. */
|
|
174
209
|
hasChildren: boolean;
|
|
210
|
+
/**
|
|
211
|
+
* Whether the branch is currently open. Always false for a leaf; a collapsed branch's
|
|
212
|
+
* children are not rendered, because its worst status is already on the node that is.
|
|
213
|
+
*/
|
|
175
214
|
expanded: boolean;
|
|
215
|
+
/** The node's children, in order, each a full node model. */
|
|
176
216
|
children: KPINodeModel[];
|
|
177
217
|
/** The node's own tile, or null on a synthesised level. */
|
|
178
218
|
tile: KPITileModel | null;
|
|
219
|
+
/**
|
|
220
|
+
* The node's own reading, from its tile. Null on a synthesised level — no value is
|
|
221
|
+
* invented for a branch from its children.
|
|
222
|
+
*/
|
|
179
223
|
value: unknown;
|
|
224
|
+
/** The node's reading as text, formatted by its tile. Null on a synthesised level. */
|
|
180
225
|
formatted: string | null;
|
|
181
226
|
/** The node's own status. */
|
|
182
227
|
status: 'good' | 'warn' | 'critical' | 'unknown' | null;
|
|
@@ -190,11 +235,21 @@ interface KPINodeModel {
|
|
|
190
235
|
|
|
191
236
|
/** A computed tile, as it appears in the model. */
|
|
192
237
|
interface KPITileModel {
|
|
238
|
+
/** The tile's identity — its configured `id`, else its label, else its index. */
|
|
193
239
|
id: string;
|
|
240
|
+
/** The tile's accessible name, as configured. */
|
|
194
241
|
label: string;
|
|
195
242
|
/** `'stat'` for an aggregate tile, `'clock'` for a clock tile. */
|
|
196
243
|
kind: 'stat' | 'clock';
|
|
244
|
+
/**
|
|
245
|
+
* How the value was reduced: `sum`, `avg`, `min`, `max`, `count`, `countDistinct` or
|
|
246
|
+
* `custom`.
|
|
247
|
+
*/
|
|
197
248
|
aggregation: string;
|
|
249
|
+
/**
|
|
250
|
+
* The row field the aggregation read. Undefined for a `count` or custom tile that names
|
|
251
|
+
* none, and on a clock tile.
|
|
252
|
+
*/
|
|
198
253
|
field?: string;
|
|
199
254
|
/** For a clock tile, the read instant as epoch milliseconds. */
|
|
200
255
|
value: unknown;
|
|
@@ -216,27 +271,64 @@ interface KPITileModel {
|
|
|
216
271
|
* normally. `null` means the tile has no thresholds or bands configured.
|
|
217
272
|
*/
|
|
218
273
|
status: 'good' | 'warn' | 'critical' | 'unknown' | null;
|
|
274
|
+
/**
|
|
275
|
+
* The tile's target, as configured. It also extends the meter's scale when it falls
|
|
276
|
+
* outside the bands. Undefined on a clock tile.
|
|
277
|
+
*/
|
|
219
278
|
target?: number;
|
|
279
|
+
/** The comparison value the movement line is measured from, as configured. */
|
|
220
280
|
baseline?: number;
|
|
281
|
+
/** `value − baseline`. Null when the tile has no baseline or measured no number. */
|
|
221
282
|
delta: number | null;
|
|
283
|
+
/**
|
|
284
|
+
* The delta as a fraction of the baseline. Null when there is no delta, and when the
|
|
285
|
+
* baseline is zero — a percentage of nothing is not reported as infinity.
|
|
286
|
+
*/
|
|
222
287
|
deltaPercent: number | null;
|
|
288
|
+
/**
|
|
289
|
+
* The delta rendered with the tile's own number format. Undefined when there is no
|
|
290
|
+
* delta.
|
|
291
|
+
*/
|
|
223
292
|
deltaFormatted?: string;
|
|
224
293
|
/** What the movement line prints; see `KPIStatTile.delta`. Always present once `baseline` is. */
|
|
225
294
|
deltaMode?: 'absolute' | 'relative' | 'both';
|
|
295
|
+
/**
|
|
296
|
+
* How many of the panel's rows this tile's filter admitted — its own membership, which
|
|
297
|
+
* may be 0 while the panel holds rows. Always 0 on a clock tile.
|
|
298
|
+
*/
|
|
226
299
|
count: number;
|
|
300
|
+
/**
|
|
301
|
+
* The tile's trend series, as the finite numbers it plots, in `x` order. Null when the
|
|
302
|
+
* tile declares no sparkline and when no row yielded a finite value.
|
|
303
|
+
*/
|
|
227
304
|
sparkline: number[] | null;
|
|
228
305
|
}
|
|
229
306
|
|
|
230
307
|
/** The payload every tile event carries. */
|
|
231
308
|
interface KPIEvent {
|
|
309
|
+
/** The tile model the event is about. */
|
|
232
310
|
tile: KPITileModel;
|
|
311
|
+
/** That tile's id, for a host that only needs to switch on it. */
|
|
233
312
|
id: string;
|
|
313
|
+
/**
|
|
314
|
+
* The DOM event behind this one — a click, double-click, context-menu gesture or the
|
|
315
|
+
* Enter/Space keypress that stands in for a click.
|
|
316
|
+
*/
|
|
234
317
|
originalEvent?: unknown;
|
|
235
318
|
}
|
|
236
319
|
|
|
237
320
|
/** KPI panel configuration. */
|
|
238
321
|
interface KPIConfig {
|
|
322
|
+
/**
|
|
323
|
+
* The rows the tiles reduce over. Use this or `grid`; passing both leaves the panel on
|
|
324
|
+
* the array.
|
|
325
|
+
*/
|
|
239
326
|
rows?: KPIRow[];
|
|
327
|
+
/**
|
|
328
|
+
* A Lattice grid to follow instead of `rows`: the panel reads the grid's displayed rows
|
|
329
|
+
* and re-reads them whenever the grid settles, so it never disagrees with the table
|
|
330
|
+
* beneath it. On a bound panel `rows.apply` and `setRows` are ignored with a warning.
|
|
331
|
+
*/
|
|
240
332
|
grid?: unknown;
|
|
241
333
|
/**
|
|
242
334
|
* Row identity (a field or fn, returning a string or number); default
|
|
@@ -253,9 +345,20 @@ interface KPIConfig {
|
|
|
253
345
|
* confident zero. Ignored on a panel over a plain `rows` array.
|
|
254
346
|
*/
|
|
255
347
|
fields?: string[];
|
|
348
|
+
/** The tiles to show, in display order: aggregate stat tiles, or clock tiles. */
|
|
256
349
|
tiles?: KPITile[];
|
|
350
|
+
/**
|
|
351
|
+
* How many tile columns to aim for. Tiles shrink to fit rather than overflow the host,
|
|
352
|
+
* so a narrow panel settles on fewer. Unset, the layout fits as many as the width
|
|
353
|
+
* allows.
|
|
354
|
+
*/
|
|
257
355
|
columns?: number;
|
|
356
|
+
/** The panel's accessible name. Unset, the panel carries none. */
|
|
258
357
|
ariaLabel?: string;
|
|
358
|
+
/**
|
|
359
|
+
* The placeholder printed where a tile has no number — an unknown tile, or one whose
|
|
360
|
+
* aggregation returned nothing. Defaults to an em dash.
|
|
361
|
+
*/
|
|
259
362
|
nullText?: string;
|
|
260
363
|
/**
|
|
261
364
|
* The default locale a clock tile formats in when the tile itself declares
|
|
@@ -276,17 +379,41 @@ interface KPIConfig {
|
|
|
276
379
|
* the shape; a key it does not carry falls back to English.
|
|
277
380
|
*/
|
|
278
381
|
messages?: { t(key: string, params?: Record<string, unknown>): string };
|
|
382
|
+
/**
|
|
383
|
+
* Called when a tile is clicked (or activated from the keyboard), with the same payload
|
|
384
|
+
* as the `tile:click` event. Both fire.
|
|
385
|
+
*/
|
|
279
386
|
onTileClick?: (event: KPIEvent) => void;
|
|
387
|
+
/** Called when a tile is double-clicked, alongside the `tile:dblclick` event. */
|
|
280
388
|
onTileDblClick?: (event: KPIEvent) => void;
|
|
389
|
+
/** Called on a tile's context-menu gesture, alongside the `tile:contextmenu` event. */
|
|
281
390
|
onTileContextMenu?: (event: KPIEvent) => void;
|
|
391
|
+
/**
|
|
392
|
+
* Called when a branch of a hierarchical panel opens or closes, with the node's key,
|
|
393
|
+
* its new state and the node model. Alongside the `node:toggle` event.
|
|
394
|
+
*/
|
|
282
395
|
onNodeToggle?: (event: { key: string; expanded: boolean; node?: KPINodeModel }) => void;
|
|
396
|
+
/**
|
|
397
|
+
* Called after every recompute, with the freshly built model — the hook for mirroring
|
|
398
|
+
* the panel's numbers somewhere else. Alongside the `change` event.
|
|
399
|
+
*/
|
|
283
400
|
onChange?: (event: { model: { tiles: KPITileModel[]; nodes?: KPINodeModel[] } }) => void;
|
|
284
401
|
}
|
|
285
402
|
|
|
286
403
|
/** The keyed-diff consumer surface a KPI panel shares with a grid, so a Data Router routes to it directly. */
|
|
287
404
|
interface KPIRows {
|
|
405
|
+
/**
|
|
406
|
+
* Apply a keyed diff: `add` and `update` upsert a row by its key, `remove` drops one.
|
|
407
|
+
* Only the rows in the diff touch each tile's running total, so a live feed costs
|
|
408
|
+
* nothing per unchanged row. Ignored with a warning on a grid-bound panel.
|
|
409
|
+
*/
|
|
288
410
|
apply(change: { add?: KPIRow[]; update?: KPIRow[]; remove?: unknown[] }): void;
|
|
411
|
+
/** Visit every row the panel holds, with its key. */
|
|
289
412
|
forEach(fn: (row: KPIRow, key: unknown) => void): void;
|
|
413
|
+
/**
|
|
414
|
+
* How many rows the panel holds. This is the panel's emptiness test: with none, every
|
|
415
|
+
* stat tile reports `unknown` rather than a healthy zero.
|
|
416
|
+
*/
|
|
290
417
|
readonly count: number;
|
|
291
418
|
}
|
|
292
419
|
|
|
@@ -297,14 +424,25 @@ interface KPIRows {
|
|
|
297
424
|
* updating each tile incrementally from the routed delta.
|
|
298
425
|
*/
|
|
299
426
|
interface KPI {
|
|
427
|
+
/** The element the panel renders into, or null for a headless panel. */
|
|
300
428
|
readonly el: unknown | null;
|
|
301
429
|
/** The resolved row identity; see `KPIConfig.rowKey`. */
|
|
302
430
|
readonly rowKey: string | ((row: KPIRow) => string | number);
|
|
303
431
|
/** Whether the panel renders as a hierarchy rather than a flat tile grid. */
|
|
304
432
|
readonly tree: boolean;
|
|
433
|
+
/**
|
|
434
|
+
* The keyed-diff consumer surface, the same shape a grid exposes — this is what makes a
|
|
435
|
+
* panel a Data Router target.
|
|
436
|
+
*/
|
|
305
437
|
rows: KPIRows;
|
|
438
|
+
/** Every tile model, in configured order. */
|
|
306
439
|
tiles(): KPITileModel[];
|
|
440
|
+
/** One tile model by id, or undefined when no tile has that id. */
|
|
307
441
|
tile(id: string): KPITileModel | undefined;
|
|
442
|
+
/**
|
|
443
|
+
* A tile's computed value. Null for an unknown id, and for a tile that measured
|
|
444
|
+
* nothing.
|
|
445
|
+
*/
|
|
308
446
|
value(id: string): unknown;
|
|
309
447
|
/** The top-level nodes of the hierarchy. Empty on a flat panel. */
|
|
310
448
|
nodes(): KPINodeModel[];
|
|
@@ -312,15 +450,47 @@ interface KPI {
|
|
|
312
450
|
node(key: string): KPINodeModel | undefined;
|
|
313
451
|
/** The nodes on screen: the roots, plus the children of every open branch. */
|
|
314
452
|
visibleNodes(): KPINodeModel[];
|
|
453
|
+
/**
|
|
454
|
+
* Open a branch of a hierarchical panel by node key, re-render, and fire `node:toggle`.
|
|
455
|
+
* A key that is already open changes nothing.
|
|
456
|
+
*/
|
|
315
457
|
expand(key: string): KPI;
|
|
458
|
+
/** Close a branch by node key, re-render, and fire `node:toggle`. */
|
|
316
459
|
collapse(key: string): KPI;
|
|
460
|
+
/** Flip a branch between open and closed, firing `node:toggle` on the change. */
|
|
317
461
|
toggle(key: string): KPI;
|
|
462
|
+
/**
|
|
463
|
+
* Replace the source rows and recompute, and make that array the source again so a
|
|
464
|
+
* later `refresh()` re-reads it. Ignored with a warning on a grid-bound panel.
|
|
465
|
+
*/
|
|
318
466
|
setRows(rows: KPIRow[]): KPI;
|
|
467
|
+
/**
|
|
468
|
+
* Recompute every tile and re-render. A bound panel re-reads the grid now rather than
|
|
469
|
+
* at the end of the turn; a configured panel re-reads its array; once rows have arrived
|
|
470
|
+
* through `rows.apply` nothing is re-read, so a routed feed is never thrown away.
|
|
471
|
+
*/
|
|
319
472
|
refresh(): KPI;
|
|
473
|
+
/**
|
|
474
|
+
* The restorable state: the rows the panel holds, and — on a hierarchical panel only —
|
|
475
|
+
* which branches are open.
|
|
476
|
+
*/
|
|
320
477
|
getState(): object;
|
|
478
|
+
/**
|
|
479
|
+
* Restore a snapshot from `getState`. A snapshot without `expanded` leaves the
|
|
480
|
+
* expansion alone rather than collapsing the rail.
|
|
481
|
+
*/
|
|
321
482
|
setState(snapshot: object): KPI;
|
|
483
|
+
/**
|
|
484
|
+
* Register an event handler; returns a function that removes it. An unrecognised event
|
|
485
|
+
* name is warned about once.
|
|
486
|
+
*/
|
|
322
487
|
on(name: string, fn: (event: KPIEvent) => void): () => void;
|
|
488
|
+
/** Remove a handler registered with `on`. */
|
|
323
489
|
off(name: string, fn: (event: KPIEvent) => void): void;
|
|
490
|
+
/**
|
|
491
|
+
* Drop every listener, stop following the bound grid, stop any clock tile ticking, and
|
|
492
|
+
* empty the element (removing only the class the panel added).
|
|
493
|
+
*/
|
|
324
494
|
destroy(): void;
|
|
325
495
|
}
|
|
326
496
|
|
package/modules/kpi.esm.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.68.
|
|
2
|
+
* Lattice Grid 1.68.1, kpi module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
@@ -52,12 +52,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
|
|
|
52
52
|
Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
|
|
53
53
|
Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
|
|
54
54
|
Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
|
|
55
|
-
const STAMPED_VERSION="1.68.
|
|
55
|
+
const STAMPED_VERSION="1.68.1";
|
|
56
56
|
async function resolveVersion(){
|
|
57
57
|
if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
|
|
58
58
|
return STAMPED_VERSION;
|
|
59
59
|
}
|
|
60
|
-
const VERSION="1.68.
|
|
60
|
+
const VERSION="1.68.1";
|
|
61
61
|
const warned=new Set();
|
|
62
62
|
const WARNED_LIMIT=2000;
|
|
63
63
|
function rememberWarned(key){
|
|
@@ -5596,7 +5596,7 @@ const columns=this.#columnList();
|
|
|
5596
5596
|
const parts=[];
|
|
5597
5597
|
const hidden=this.#ctx.columnHidden;
|
|
5598
5598
|
for(const column of columns){
|
|
5599
|
-
if(column.
|
|
5599
|
+
if(column.quickFilter===false)continue;
|
|
5600
5600
|
if(isFunction(hidden)&&hidden(column.id))continue;
|
|
5601
5601
|
const custom=column.value&&isFunction(column.value.quickFilterText)
|
|
5602
5602
|
?column.value.quickFilterText({value:undefined,data,row:null,column,colId:column.id,grid:null,context:this.#state('context',null)})
|
package/modules/kpi.min.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.68.
|
|
2
|
+
* Lattice Grid 1.68.1, kpi module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
|
|
|
54
54
|
Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
|
|
55
55
|
Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
|
|
56
56
|
Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
|
|
57
|
-
const STAMPED_VERSION="1.68.
|
|
57
|
+
const STAMPED_VERSION="1.68.1";
|
|
58
58
|
async function resolveVersion(){
|
|
59
59
|
if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
|
|
60
60
|
return STAMPED_VERSION;
|
|
61
61
|
}
|
|
62
|
-
const VERSION="1.68.
|
|
62
|
+
const VERSION="1.68.1";
|
|
63
63
|
const warned=new Set();
|
|
64
64
|
const WARNED_LIMIT=2000;
|
|
65
65
|
function rememberWarned(key){
|
|
@@ -5598,7 +5598,7 @@ const columns=this.#columnList();
|
|
|
5598
5598
|
const parts=[];
|
|
5599
5599
|
const hidden=this.#ctx.columnHidden;
|
|
5600
5600
|
for(const column of columns){
|
|
5601
|
-
if(column.
|
|
5601
|
+
if(column.quickFilter===false)continue;
|
|
5602
5602
|
if(isFunction(hidden)&&hidden(column.id))continue;
|
|
5603
5603
|
const custom=column.value&&isFunction(column.value.quickFilterText)
|
|
5604
5604
|
?column.value.quickFilterText({value:undefined,data,row:null,column,colId:column.id,grid:null,context:this.#state('context',null)})
|
package/modules/kpi.min.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.68.
|
|
2
|
+
* Lattice Grid 1.68.1, kpi module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
|
|
|
54
54
|
Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
|
|
55
55
|
Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
|
|
56
56
|
Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
|
|
57
|
-
const STAMPED_VERSION="1.68.
|
|
57
|
+
const STAMPED_VERSION="1.68.1";
|
|
58
58
|
async function resolveVersion(){
|
|
59
59
|
if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
|
|
60
60
|
return STAMPED_VERSION;
|
|
61
61
|
}
|
|
62
|
-
const VERSION="1.68.
|
|
62
|
+
const VERSION="1.68.1";
|
|
63
63
|
const warned=new Set();
|
|
64
64
|
const WARNED_LIMIT=2000;
|
|
65
65
|
function rememberWarned(key){
|
|
@@ -5598,7 +5598,7 @@ const columns=this.#columnList();
|
|
|
5598
5598
|
const parts=[];
|
|
5599
5599
|
const hidden=this.#ctx.columnHidden;
|
|
5600
5600
|
for(const column of columns){
|
|
5601
|
-
if(column.
|
|
5601
|
+
if(column.quickFilter===false)continue;
|
|
5602
5602
|
if(isFunction(hidden)&&hidden(column.id))continue;
|
|
5603
5603
|
const custom=column.value&&isFunction(column.value.quickFilterText)
|
|
5604
5604
|
?column.value.quickFilterText({value:undefined,data,row:null,column,colId:column.id,grid:null,context:this.#state('context',null)})
|
package/modules/layout.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.68.
|
|
2
|
+
* Lattice Grid 1.68.1, layout module type declarations
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
@@ -70,38 +70,82 @@ interface LayoutWindow {
|
|
|
70
70
|
* read correctly and round-trip wrongly, so it is reported as it is.
|
|
71
71
|
*/
|
|
72
72
|
interface LayoutInteractive {
|
|
73
|
+
/**
|
|
74
|
+
* Whether dragging a window to another cell is currently allowed for the layout as a
|
|
75
|
+
* whole. Undefined means nothing has been locked or unlocked, so each window's own flag
|
|
76
|
+
* decides.
|
|
77
|
+
*/
|
|
73
78
|
movable: boolean | undefined;
|
|
79
|
+
/**
|
|
80
|
+
* Whether dragging a window's edge is currently allowed for the layout as a whole, on
|
|
81
|
+
* the same terms as `movable`.
|
|
82
|
+
*/
|
|
74
83
|
resizable: boolean | undefined;
|
|
84
|
+
/**
|
|
85
|
+
* Whether the close control is currently allowed for the layout as a whole, on the same
|
|
86
|
+
* terms as `movable`.
|
|
87
|
+
*/
|
|
75
88
|
closable: boolean | undefined;
|
|
76
89
|
}
|
|
77
90
|
|
|
78
91
|
/** The plain, JSON-safe arrangement `getLayout()` returns and `setLayout()` takes. */
|
|
79
92
|
interface LayoutSnapshot {
|
|
93
|
+
/**
|
|
94
|
+
* How many cell columns the layout had when the snapshot was taken. Informational on
|
|
95
|
+
* the way back in: `setLayout` reads only `windows`, and clamps each placement to the
|
|
96
|
+
* layout it is restored into.
|
|
97
|
+
*/
|
|
80
98
|
columns: number;
|
|
99
|
+
/** How many cell rows the layout had when the snapshot was taken; informational too. */
|
|
81
100
|
rows: number;
|
|
101
|
+
/**
|
|
102
|
+
* Each window's id and its cell placement. Position and size only: titles, content and
|
|
103
|
+
* capabilities stay with the configuration.
|
|
104
|
+
*/
|
|
82
105
|
windows: { id: string; xPos: number; yPos: number; xSize: number; ySize: number }[];
|
|
83
106
|
}
|
|
84
107
|
|
|
85
108
|
/** A cell placement, as carried on the move and resize events. */
|
|
86
109
|
interface LayoutPlacement {
|
|
110
|
+
/** The window's left-hand column, counted from 1. */
|
|
87
111
|
xPos: number;
|
|
112
|
+
/** The window's top row, counted from 1. */
|
|
88
113
|
yPos: number;
|
|
114
|
+
/** How many columns wide the window is; at least 1, and never more than the layout has. */
|
|
89
115
|
xSize: number;
|
|
116
|
+
/** How many rows tall the window is; at least 1. */
|
|
90
117
|
ySize: number;
|
|
91
118
|
}
|
|
92
119
|
|
|
93
120
|
/** The payload of `window:moved`, `beforeWindowMove`, `beforeWindowResize`. */
|
|
94
121
|
interface LayoutMoveEvent {
|
|
122
|
+
/** Which window moved or was asked to move. */
|
|
95
123
|
id: string;
|
|
124
|
+
/**
|
|
125
|
+
* Where the window was before the gesture. A move that would change nothing is not
|
|
126
|
+
* reported at all.
|
|
127
|
+
*/
|
|
96
128
|
from: LayoutPlacement;
|
|
97
129
|
/** Where the window was asked to go. */
|
|
98
130
|
to: LayoutPlacement;
|
|
99
131
|
/** Where it actually ended up, which under `compact: 'vertical'` may differ. */
|
|
100
132
|
landed?: LayoutPlacement;
|
|
133
|
+
/**
|
|
134
|
+
* Who caused it: `user` for a drag, `api` for a call, `init` for the opening
|
|
135
|
+
* arrangement. Defaults to `user`.
|
|
136
|
+
*/
|
|
101
137
|
origin?: 'api' | 'user' | 'init';
|
|
138
|
+
/**
|
|
139
|
+
* Why it was cancelled — whatever was passed to `preventDefault`, `prevented` when
|
|
140
|
+
* nothing was, or `error` when a handler threw. Null while nothing has cancelled it.
|
|
141
|
+
*/
|
|
102
142
|
reason?: string | null;
|
|
103
143
|
/** Cancel the action (only meaningful on a `before*` event). */
|
|
104
144
|
preventDefault?: (reason?: string) => void;
|
|
145
|
+
/**
|
|
146
|
+
* True once a handler has cancelled the action. Read it in a later handler to see that
|
|
147
|
+
* an earlier one already refused.
|
|
148
|
+
*/
|
|
105
149
|
defaultPrevented?: boolean;
|
|
106
150
|
}
|
|
107
151
|
|
|
@@ -111,32 +155,65 @@ interface LayoutMoveEvent {
|
|
|
111
155
|
* changes size, including on the opening frame; never with a zero box.
|
|
112
156
|
*/
|
|
113
157
|
interface LayoutResizeEvent {
|
|
158
|
+
/** Which window changed size. */
|
|
114
159
|
id: string;
|
|
160
|
+
/**
|
|
161
|
+
* The id of the window's content container, so a host can find the element it mounted
|
|
162
|
+
* into. Defaults to the window id plus `-body`.
|
|
163
|
+
*/
|
|
115
164
|
payloadId: string;
|
|
116
165
|
/** The payload container itself, so a host can act on it directly. */
|
|
117
166
|
payload: HTMLElement;
|
|
167
|
+
/**
|
|
168
|
+
* The content box's width in CSS pixels, measured — not a cell count. A change under a
|
|
169
|
+
* pixel is not reported.
|
|
170
|
+
*/
|
|
118
171
|
width: number;
|
|
172
|
+
/** The content box's height in CSS pixels, on the same terms as `width`. */
|
|
119
173
|
height: number;
|
|
174
|
+
/** The window's left-hand column at the time of the measurement. */
|
|
120
175
|
xPos: number;
|
|
176
|
+
/** The window's top row at the time of the measurement. */
|
|
121
177
|
yPos: number;
|
|
178
|
+
/** How many columns wide the window now is. */
|
|
122
179
|
xSize: number;
|
|
180
|
+
/** How many rows tall the window now is. */
|
|
123
181
|
ySize: number;
|
|
124
182
|
}
|
|
125
183
|
|
|
126
184
|
/** The payload of `window:closed` and `beforeWindowClose`. */
|
|
127
185
|
interface LayoutCloseEvent {
|
|
186
|
+
/** Which window was closed, or is about to be. */
|
|
128
187
|
id: string;
|
|
188
|
+
/**
|
|
189
|
+
* The id of its content container — the handle for tearing down whatever was mounted
|
|
190
|
+
* inside.
|
|
191
|
+
*/
|
|
129
192
|
payloadId: string;
|
|
130
193
|
/** The payload container, handed back so the host can destroy what it mounted. */
|
|
131
194
|
payload?: HTMLElement;
|
|
195
|
+
/** Who caused it: `user` for the close control, `api` for a call. Defaults to `user`. */
|
|
132
196
|
origin?: 'api' | 'user';
|
|
197
|
+
/**
|
|
198
|
+
* Why the close was refused — the reason given to `preventDefault`, `prevented` when
|
|
199
|
+
* none was, or `error` when a handler threw.
|
|
200
|
+
*/
|
|
133
201
|
reason?: string | null;
|
|
202
|
+
/**
|
|
203
|
+
* Refuse the close, optionally saying why. Only `beforeWindowClose` is cancellable; by
|
|
204
|
+
* `window:closed` the window has gone.
|
|
205
|
+
*/
|
|
134
206
|
preventDefault?: (reason?: string) => void;
|
|
207
|
+
/** True once a handler has refused the close. */
|
|
135
208
|
defaultPrevented?: boolean;
|
|
136
209
|
}
|
|
137
210
|
|
|
138
211
|
/** The payload of `layout:changed`: the whole arrangement, plus what moved it. */
|
|
139
212
|
interface LayoutChangedEvent extends LayoutSnapshot {
|
|
213
|
+
/**
|
|
214
|
+
* What moved the arrangement: `move`, `resize`, `close`, `add`, `minimise`, `restore`,
|
|
215
|
+
* `setLayout` or `init`.
|
|
216
|
+
*/
|
|
140
217
|
cause: string;
|
|
141
218
|
}
|
|
142
219
|
|
|
@@ -196,15 +273,44 @@ interface LayoutConfig {
|
|
|
196
273
|
ariaLabel?: string;
|
|
197
274
|
/** A message catalogue, e.g. `grid.messages`; built-in English seeds otherwise. */
|
|
198
275
|
messages?: { t(key: string, params?: Record<string, unknown>): string };
|
|
276
|
+
/** Called after a window has moved, alongside the `window:moved` event. */
|
|
199
277
|
onWindowMoved?: (event: LayoutMoveEvent) => void;
|
|
278
|
+
/**
|
|
279
|
+
* Called when a window's measured content box changes, alongside `window:resized` —
|
|
280
|
+
* including on the opening frame.
|
|
281
|
+
*/
|
|
200
282
|
onWindowResized?: (event: LayoutResizeEvent) => void;
|
|
283
|
+
/**
|
|
284
|
+
* Called after a window has closed, with its content container handed back so the host
|
|
285
|
+
* can destroy what it mounted. Alongside `window:closed`.
|
|
286
|
+
*/
|
|
201
287
|
onWindowClosed?: (event: LayoutCloseEvent) => void;
|
|
288
|
+
/**
|
|
289
|
+
* Called whenever the arrangement settles, with the whole snapshot and what caused it —
|
|
290
|
+
* the hook for persisting a dashboard. Alongside `layout:changed`.
|
|
291
|
+
*/
|
|
202
292
|
onLayoutChanged?: (event: LayoutChangedEvent) => void;
|
|
293
|
+
/**
|
|
294
|
+
* Called before a move is applied. Return `false`, call `preventDefault(reason)`, or
|
|
295
|
+
* throw, to refuse it; return a promise and the move waits for it. Alongside the
|
|
296
|
+
* `beforeWindowMove` event.
|
|
297
|
+
*/
|
|
203
298
|
onBeforeWindowMove?: (event: LayoutMoveEvent) => boolean | void | Promise<boolean>;
|
|
299
|
+
/** Called before a resize is applied, on the same terms as `onBeforeWindowMove`. */
|
|
204
300
|
onBeforeWindowResize?: (event: LayoutMoveEvent) => boolean | void | Promise<boolean>;
|
|
301
|
+
/**
|
|
302
|
+
* Called before a window closes, on the same terms as `onBeforeWindowMove`. This is
|
|
303
|
+
* where an unsaved-changes prompt belongs.
|
|
304
|
+
*/
|
|
205
305
|
onBeforeWindowClose?: (event: LayoutCloseEvent) => boolean | void | Promise<boolean>;
|
|
306
|
+
/**
|
|
307
|
+
* Called when a move was refused, with the reason on the payload. Alongside
|
|
308
|
+
* `windowMove:cancelled`.
|
|
309
|
+
*/
|
|
206
310
|
onWindowMoveCancelled?: (event: LayoutMoveEvent) => void;
|
|
311
|
+
/** Called when a resize was refused. Alongside `windowResize:cancelled`. */
|
|
207
312
|
onWindowResizeCancelled?: (event: LayoutMoveEvent) => void;
|
|
313
|
+
/** Called when a close was refused. Alongside `windowClose:cancelled`. */
|
|
208
314
|
onWindowCloseCancelled?: (event: LayoutCloseEvent) => void;
|
|
209
315
|
}
|
|
210
316
|
|
|
@@ -219,6 +325,10 @@ interface LayoutConfig {
|
|
|
219
325
|
* cannot know what one is.
|
|
220
326
|
*/
|
|
221
327
|
interface Layout {
|
|
328
|
+
/**
|
|
329
|
+
* The element the layout was mounted on. It carries the layout's host class, which is
|
|
330
|
+
* also how a second `createLayout` on the same element is refused.
|
|
331
|
+
*/
|
|
222
332
|
readonly el: HTMLElement;
|
|
223
333
|
/** The window ids, in mount order. */
|
|
224
334
|
windows(): string[];
|
|
@@ -315,6 +425,11 @@ interface Layout {
|
|
|
315
425
|
getInteractive(): LayoutInteractive;
|
|
316
426
|
/** Re-measure every window and emit `window:resized` for those that changed. */
|
|
317
427
|
refresh(): number;
|
|
428
|
+
/**
|
|
429
|
+
* Subscribe to a layout event, or to `'*'` for every past-tense one; returns a function
|
|
430
|
+
* that unsubscribes. Only an explicit `before…` subscription can cancel an action — the
|
|
431
|
+
* `'*'` stream never gates.
|
|
432
|
+
*/
|
|
318
433
|
on(
|
|
319
434
|
name: 'window:moved' | 'window:resized' | 'window:closed' | 'layout:changed'
|
|
320
435
|
| 'beforeWindowMove' | 'beforeWindowResize' | 'beforeWindowClose'
|
|
@@ -322,6 +437,7 @@ interface Layout {
|
|
|
322
437
|
| '*' | string,
|
|
323
438
|
fn: (event: any) => unknown,
|
|
324
439
|
): () => void;
|
|
440
|
+
/** Remove a handler registered with `on`. */
|
|
325
441
|
off(name: string, fn: (event: any) => unknown): void;
|
|
326
442
|
/** Tear the layout down; whatever the host mounted in a payload is the host's to destroy. */
|
|
327
443
|
destroy(): void;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.68.
|
|
2
|
+
* Lattice Grid 1.68.1, layout module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
@@ -52,12 +52,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
|
|
|
52
52
|
Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
|
|
53
53
|
Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
|
|
54
54
|
Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
|
|
55
|
-
const STAMPED_VERSION="1.68.
|
|
55
|
+
const STAMPED_VERSION="1.68.1";
|
|
56
56
|
async function resolveVersion(){
|
|
57
57
|
if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
|
|
58
58
|
return STAMPED_VERSION;
|
|
59
59
|
}
|
|
60
|
-
const VERSION="1.68.
|
|
60
|
+
const VERSION="1.68.1";
|
|
61
61
|
const warned=new Set();
|
|
62
62
|
const WARNED_LIMIT=2000;
|
|
63
63
|
function rememberWarned(key){
|
package/modules/layout.min.cjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* Lattice Grid 1.68.
|
|
2
|
+
* Lattice Grid 1.68.1, layout module
|
|
3
3
|
* Copyright (c) 2026 TOCLOCO Inc. All rights reserved.
|
|
4
4
|
* https://latticegrid.dev
|
|
5
5
|
*/
|
|
@@ -54,12 +54,12 @@ Object.defineProperty(__exports,"frameBatched",{enumerable:true,get:function(){r
|
|
|
54
54
|
Object.defineProperty(__exports,"settleDebounce",{enumerable:true,get:function(){return settleDebounce;}});
|
|
55
55
|
Object.defineProperty(__exports,"whenIdle",{enumerable:true,get:function(){return whenIdle;}});
|
|
56
56
|
Object.defineProperty(__exports,"uid",{enumerable:true,get:function(){return uid;}});
|
|
57
|
-
const STAMPED_VERSION="1.68.
|
|
57
|
+
const STAMPED_VERSION="1.68.1";
|
|
58
58
|
async function resolveVersion(){
|
|
59
59
|
if(STAMPED_VERSION!=='0.0.0-source')return STAMPED_VERSION;
|
|
60
60
|
return STAMPED_VERSION;
|
|
61
61
|
}
|
|
62
|
-
const VERSION="1.68.
|
|
62
|
+
const VERSION="1.68.1";
|
|
63
63
|
const warned=new Set();
|
|
64
64
|
const WARNED_LIMIT=2000;
|
|
65
65
|
function rememberWarned(key){
|