vastgrid 0.1.0 → 0.2.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/README.md +175 -13
- package/dist/canvas/geometry.d.ts +92 -0
- package/dist/canvas/geometry.d.ts.map +1 -0
- package/dist/canvas/geometry.js +197 -0
- package/dist/canvas/geometry.js.map +1 -0
- package/dist/canvas/grid-canvas.d.ts +161 -0
- package/dist/canvas/grid-canvas.d.ts.map +1 -0
- package/dist/canvas/grid-canvas.js +1146 -0
- package/dist/canvas/grid-canvas.js.map +1 -0
- package/dist/canvas/hooks.d.ts +61 -0
- package/dist/canvas/hooks.d.ts.map +1 -0
- package/dist/canvas/hooks.js +2 -0
- package/dist/canvas/hooks.js.map +1 -0
- package/dist/canvas/keys.d.ts +26 -0
- package/dist/canvas/keys.d.ts.map +1 -0
- package/dist/canvas/keys.js +133 -0
- package/dist/canvas/keys.js.map +1 -0
- package/dist/canvas/layout.d.ts +26 -0
- package/dist/canvas/layout.d.ts.map +1 -0
- package/dist/canvas/layout.js +73 -0
- package/dist/canvas/layout.js.map +1 -0
- package/dist/canvas/scroll.d.ts +31 -0
- package/dist/canvas/scroll.d.ts.map +1 -0
- package/dist/canvas/scroll.js +111 -0
- package/dist/canvas/scroll.js.map +1 -0
- package/dist/canvas/text.d.ts +23 -0
- package/dist/canvas/text.d.ts.map +1 -0
- package/dist/canvas/text.js +142 -0
- package/dist/canvas/text.js.map +1 -0
- package/dist/{theme.d.ts → canvas/theme.d.ts} +8 -0
- package/dist/canvas/theme.d.ts.map +1 -0
- package/dist/canvas/theme.js +62 -0
- package/dist/canvas/theme.js.map +1 -0
- package/dist/core/cache.d.ts +48 -0
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +222 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/checked.d.ts +20 -0
- package/dist/core/checked.d.ts.map +1 -0
- package/dist/core/checked.js +61 -0
- package/dist/core/checked.js.map +1 -0
- package/dist/core/client.d.ts +33 -0
- package/dist/core/client.d.ts.map +1 -0
- package/dist/core/client.js +103 -0
- package/dist/core/client.js.map +1 -0
- package/dist/core/conditions.d.ts +48 -0
- package/dist/core/conditions.d.ts.map +1 -0
- package/dist/core/conditions.js +105 -0
- package/dist/core/conditions.js.map +1 -0
- package/dist/core/evaluate.d.ts +20 -0
- package/dist/core/evaluate.d.ts.map +1 -0
- package/dist/core/evaluate.js +210 -0
- package/dist/core/evaluate.js.map +1 -0
- package/dist/core/filters.d.ts +51 -0
- package/dist/core/filters.d.ts.map +1 -0
- package/dist/core/filters.js +303 -0
- package/dist/core/filters.js.map +1 -0
- package/dist/core/format.d.ts +14 -0
- package/dist/core/format.d.ts.map +1 -0
- package/dist/core/format.js +303 -0
- package/dist/core/format.js.map +1 -0
- package/dist/core/measures.d.ts +26 -0
- package/dist/core/measures.d.ts.map +1 -0
- package/dist/core/measures.js +105 -0
- package/dist/core/measures.js.map +1 -0
- package/dist/core/request-ids.d.ts +20 -0
- package/dist/core/request-ids.d.ts.map +1 -0
- package/dist/core/request-ids.js +55 -0
- package/dist/core/request-ids.js.map +1 -0
- package/dist/core/rows.d.ts +79 -0
- package/dist/core/rows.d.ts.map +1 -0
- package/dist/core/rows.js +173 -0
- package/dist/core/rows.js.map +1 -0
- package/dist/core/store.d.ts +233 -0
- package/dist/core/store.d.ts.map +1 -0
- package/dist/core/store.js +1162 -0
- package/dist/core/store.js.map +1 -0
- package/dist/core/totals.d.ts +24 -0
- package/dist/core/totals.d.ts.map +1 -0
- package/dist/core/totals.js +49 -0
- package/dist/core/totals.js.map +1 -0
- package/dist/core/trace.d.ts +7 -0
- package/dist/core/trace.d.ts.map +1 -0
- package/dist/core/trace.js +26 -0
- package/dist/core/trace.js.map +1 -0
- package/dist/core/transports.d.ts +50 -0
- package/dist/core/transports.d.ts.map +1 -0
- package/dist/core/transports.js +160 -0
- package/dist/core/transports.js.map +1 -0
- package/dist/core/types.d.ts +150 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +45 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core.d.ts +12 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/core.js +11 -0
- package/dist/core.js.map +1 -0
- package/dist/index.d.ts +15 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +13 -7
- package/dist/index.js.map +1 -1
- package/dist/react/accessible-rows.d.ts +13 -0
- package/dist/react/accessible-rows.d.ts.map +1 -0
- package/dist/react/accessible-rows.js +320 -0
- package/dist/react/accessible-rows.js.map +1 -0
- package/dist/react/cell-editor.d.ts +22 -0
- package/dist/react/cell-editor.d.ts.map +1 -0
- package/dist/react/cell-editor.js +431 -0
- package/dist/react/cell-editor.js.map +1 -0
- package/dist/react/cell-menu.d.ts +18 -0
- package/dist/react/cell-menu.d.ts.map +1 -0
- package/dist/react/cell-menu.js +299 -0
- package/dist/react/cell-menu.js.map +1 -0
- package/dist/react/column-menu.d.ts +16 -0
- package/dist/react/column-menu.d.ts.map +1 -0
- package/dist/react/column-menu.js +1311 -0
- package/dist/react/column-menu.js.map +1 -0
- package/dist/react/columns-menu.d.ts +7 -0
- package/dist/react/columns-menu.d.ts.map +1 -0
- package/dist/react/columns-menu.js +249 -0
- package/dist/react/columns-menu.js.map +1 -0
- package/dist/react/conditions-menu.d.ts +10 -0
- package/dist/react/conditions-menu.d.ts.map +1 -0
- package/dist/react/conditions-menu.js +795 -0
- package/dist/react/conditions-menu.js.map +1 -0
- package/dist/react/context.d.ts +29 -0
- package/dist/react/context.d.ts.map +1 -0
- package/dist/react/context.js +18 -0
- package/dist/react/context.js.map +1 -0
- package/dist/react/data-grid.d.ts +79 -0
- package/dist/react/data-grid.d.ts.map +1 -0
- package/dist/react/data-grid.js +653 -0
- package/dist/react/data-grid.js.map +1 -0
- package/dist/react/detail-panel.d.ts +22 -0
- package/dist/react/detail-panel.d.ts.map +1 -0
- package/dist/react/detail-panel.js +242 -0
- package/dist/react/detail-panel.js.map +1 -0
- package/dist/react/export-menu.d.ts +11 -0
- package/dist/react/export-menu.d.ts.map +1 -0
- package/dist/react/export-menu.js +304 -0
- package/dist/react/export-menu.js.map +1 -0
- package/dist/react/find-bar.d.ts +11 -0
- package/dist/react/find-bar.d.ts.map +1 -0
- package/dist/react/find-bar.js +303 -0
- package/dist/react/find-bar.js.map +1 -0
- package/dist/react/format-form.d.ts +12 -0
- package/dist/react/format-form.d.ts.map +1 -0
- package/dist/react/format-form.js +863 -0
- package/dist/react/format-form.js.map +1 -0
- package/dist/react/formula-menu.d.ts +6 -0
- package/dist/react/formula-menu.d.ts.map +1 -0
- package/dist/react/formula-menu.js +343 -0
- package/dist/react/formula-menu.js.map +1 -0
- package/dist/react/grid-body.d.ts +33 -0
- package/dist/react/grid-body.d.ts.map +1 -0
- package/dist/react/grid-body.js +1389 -0
- package/dist/react/grid-body.js.map +1 -0
- package/dist/react/group-menu.d.ts +7 -0
- package/dist/react/group-menu.d.ts.map +1 -0
- package/dist/react/group-menu.js +508 -0
- package/dist/react/group-menu.js.map +1 -0
- package/dist/react/hooks.d.ts +33 -0
- package/dist/react/hooks.d.ts.map +1 -0
- package/dist/react/hooks.js +161 -0
- package/dist/react/hooks.js.map +1 -0
- package/dist/react/messages.d.ts +180 -0
- package/dist/react/messages.d.ts.map +1 -0
- package/dist/react/messages.js +414 -0
- package/dist/react/messages.js.map +1 -0
- package/dist/react/save.d.ts +9 -0
- package/dist/react/save.d.ts.map +1 -0
- package/dist/react/save.js +102 -0
- package/dist/react/save.js.map +1 -0
- package/dist/react/static-rows.d.ts +9 -0
- package/dist/react/static-rows.d.ts.map +1 -0
- package/dist/react/static-rows.js +176 -0
- package/dist/react/static-rows.js.map +1 -0
- package/dist/react/status-bar.d.ts +12 -0
- package/dist/react/status-bar.d.ts.map +1 -0
- package/dist/react/status-bar.js +413 -0
- package/dist/react/status-bar.js.map +1 -0
- package/dist/react/toolbar-popover.d.ts +14 -0
- package/dist/react/toolbar-popover.d.ts.map +1 -0
- package/dist/react/toolbar-popover.js +143 -0
- package/dist/react/toolbar-popover.js.map +1 -0
- package/dist/react/toolbar.d.ts +13 -0
- package/dist/react/toolbar.d.ts.map +1 -0
- package/dist/react/toolbar.js +344 -0
- package/dist/react/toolbar.js.map +1 -0
- package/dist/server.d.ts +22 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +45 -0
- package/dist/server.js.map +1 -0
- package/dist/styles.css +496 -316
- package/package.json +43 -18
- package/src/canvas/geometry.ts +197 -0
- package/src/canvas/grid-canvas.ts +1222 -0
- package/src/canvas/hooks.ts +61 -0
- package/src/canvas/keys.ts +96 -0
- package/src/canvas/layout.ts +77 -0
- package/src/canvas/scroll.ts +120 -0
- package/src/canvas/text.ts +155 -0
- package/src/{theme.ts → canvas/theme.ts} +14 -1
- package/src/core/cache.ts +247 -0
- package/src/core/checked.ts +64 -0
- package/src/core/client.ts +103 -0
- package/src/core/conditions.ts +89 -0
- package/src/core/evaluate.ts +221 -0
- package/src/core/filters.ts +268 -0
- package/src/core/format.ts +309 -0
- package/src/core/measures.ts +99 -0
- package/src/core/request-ids.ts +54 -0
- package/src/core/rows.ts +213 -0
- package/src/core/store.ts +1122 -0
- package/src/core/totals.ts +59 -0
- package/src/core/trace.ts +44 -0
- package/src/core/transports.ts +177 -0
- package/src/core/types.ts +168 -0
- package/src/core.ts +39 -0
- package/src/index.ts +24 -12
- package/src/react/accessible-rows.tsx +242 -0
- package/src/react/cell-editor.tsx +216 -0
- package/src/react/cell-menu.tsx +166 -0
- package/src/react/column-menu.tsx +619 -0
- package/src/react/columns-menu.tsx +116 -0
- package/src/react/conditions-menu.tsx +289 -0
- package/src/react/context.ts +33 -0
- package/src/react/data-grid.tsx +286 -0
- package/src/react/detail-panel.tsx +92 -0
- package/src/react/export-menu.tsx +112 -0
- package/src/react/find-bar.tsx +112 -0
- package/src/react/format-form.tsx +421 -0
- package/src/react/formula-menu.tsx +163 -0
- package/src/react/grid-body.tsx +744 -0
- package/src/react/group-menu.tsx +214 -0
- package/src/react/hooks.ts +104 -0
- package/src/react/messages.ts +556 -0
- package/src/react/save.ts +42 -0
- package/src/react/static-rows.tsx +59 -0
- package/src/react/status-bar.tsx +175 -0
- package/src/react/toolbar-popover.tsx +69 -0
- package/src/react/toolbar.tsx +152 -0
- package/src/server.ts +58 -0
- package/src/styles.css +496 -316
- package/dist/components/bars.d.ts +0 -14
- package/dist/components/bars.d.ts.map +0 -1
- package/dist/components/bars.js +0 -67
- package/dist/components/bars.js.map +0 -1
- package/dist/components/cell-inspector.d.ts +0 -11
- package/dist/components/cell-inspector.d.ts.map +0 -1
- package/dist/components/cell-inspector.js +0 -37
- package/dist/components/cell-inspector.js.map +0 -1
- package/dist/components/columns-panel.d.ts +0 -12
- package/dist/components/columns-panel.d.ts.map +0 -1
- package/dist/components/columns-panel.js +0 -11
- package/dist/components/columns-panel.js.map +0 -1
- package/dist/components/filter-panel.d.ts +0 -17
- package/dist/components/filter-panel.d.ts.map +0 -1
- package/dist/components/filter-panel.js +0 -165
- package/dist/components/filter-panel.js.map +0 -1
- package/dist/components/find-bar.d.ts +0 -9
- package/dist/components/find-bar.d.ts.map +0 -1
- package/dist/components/find-bar.js +0 -46
- package/dist/components/find-bar.js.map +0 -1
- package/dist/components/popover.d.ts +0 -38
- package/dist/components/popover.d.ts.map +0 -1
- package/dist/components/popover.js +0 -104
- package/dist/components/popover.js.map +0 -1
- package/dist/components/stats-panel.d.ts +0 -12
- package/dist/components/stats-panel.d.ts.map +0 -1
- package/dist/components/stats-panel.js +0 -40
- package/dist/components/stats-panel.js.map +0 -1
- package/dist/controller.d.ts +0 -218
- package/dist/controller.d.ts.map +0 -1
- package/dist/controller.js +0 -788
- package/dist/controller.js.map +0 -1
- package/dist/data-grid.d.ts +0 -51
- package/dist/data-grid.d.ts.map +0 -1
- package/dist/data-grid.js +0 -698
- package/dist/data-grid.js.map +0 -1
- package/dist/labels.d.ts +0 -9
- package/dist/labels.d.ts.map +0 -1
- package/dist/labels.js +0 -38
- package/dist/labels.js.map +0 -1
- package/dist/messages.d.ts +0 -99
- package/dist/messages.d.ts.map +0 -1
- package/dist/messages.js +0 -276
- package/dist/messages.js.map +0 -1
- package/dist/renderer.d.ts +0 -52
- package/dist/renderer.d.ts.map +0 -1
- package/dist/renderer.js +0 -522
- package/dist/renderer.js.map +0 -1
- package/dist/text.d.ts +0 -14
- package/dist/text.d.ts.map +0 -1
- package/dist/text.js +0 -63
- package/dist/text.js.map +0 -1
- package/dist/theme.d.ts.map +0 -1
- package/dist/theme.js +0 -54
- package/dist/theme.js.map +0 -1
- package/src/components/bars.tsx +0 -179
- package/src/components/cell-inspector.tsx +0 -70
- package/src/components/columns-panel.tsx +0 -59
- package/src/components/filter-panel.tsx +0 -290
- package/src/components/find-bar.tsx +0 -104
- package/src/components/popover.tsx +0 -194
- package/src/components/stats-panel.tsx +0 -153
- package/src/controller.ts +0 -887
- package/src/data-grid.tsx +0 -1029
- package/src/labels.ts +0 -46
- package/src/messages.ts +0 -390
- package/src/renderer.ts +0 -535
- package/src/text.ts +0 -55
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { c as _c } from "react/compiler-runtime";
|
|
2
|
+
import { textOf } from "vastgrid-spec";
|
|
3
|
+
import { readRows, useGridSelector, useGridStore } from "./hooks.js";
|
|
4
|
+
|
|
5
|
+
/** Rows that the server sends as HTML at most. */
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
const MAX_ROWS = 100;
|
|
8
|
+
function alignOf(column) {
|
|
9
|
+
return column.type === "integer" || column.type === "bigint" || column.type === "decimal" || column.type === "float" ? "vg-static__number" : undefined;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* What the server sends in place of the canvas (§7 of react.md): the first rows that the store has, from
|
|
14
|
+
* `initial`, as an HTML table that is readable before any script runs; without rows, an empty body that is
|
|
15
|
+
* busy. It has the size of the body, so that the canvas replaces it without moving anything.
|
|
16
|
+
*/
|
|
17
|
+
export function StaticRows(t0) {
|
|
18
|
+
const $ = _c(30);
|
|
19
|
+
const {
|
|
20
|
+
label
|
|
21
|
+
} = t0;
|
|
22
|
+
const store = useGridStore();
|
|
23
|
+
const view = useGridSelector(_temp);
|
|
24
|
+
const columns = useGridSelector(_temp2);
|
|
25
|
+
if (!view) {
|
|
26
|
+
let t1;
|
|
27
|
+
if ($[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
28
|
+
t1 = /*#__PURE__*/_jsx("div", {
|
|
29
|
+
className: "vg-body",
|
|
30
|
+
"aria-busy": "true"
|
|
31
|
+
});
|
|
32
|
+
$[0] = t1;
|
|
33
|
+
} else {
|
|
34
|
+
t1 = $[0];
|
|
35
|
+
}
|
|
36
|
+
return t1;
|
|
37
|
+
}
|
|
38
|
+
let t1;
|
|
39
|
+
let t2;
|
|
40
|
+
let t3;
|
|
41
|
+
let t4;
|
|
42
|
+
let t5;
|
|
43
|
+
let t6;
|
|
44
|
+
let t7;
|
|
45
|
+
if ($[1] !== columns || $[2] !== label || $[3] !== store || $[4] !== view.rowCount) {
|
|
46
|
+
const names = columns.map(_temp3);
|
|
47
|
+
const read = readRows(store, 0, 0, Math.min(view.rowCount, MAX_ROWS), names);
|
|
48
|
+
const loaded = read.findIndex(_temp5);
|
|
49
|
+
const rows = loaded < 0 ? read : read.slice(0, loaded);
|
|
50
|
+
t6 = "vg-body";
|
|
51
|
+
t7 = "true";
|
|
52
|
+
t2 = "vg-static";
|
|
53
|
+
t3 = label;
|
|
54
|
+
t4 = view.rowCount + 1;
|
|
55
|
+
let t8;
|
|
56
|
+
if ($[12] !== columns) {
|
|
57
|
+
t8 = columns.map(_temp6);
|
|
58
|
+
$[12] = columns;
|
|
59
|
+
$[13] = t8;
|
|
60
|
+
} else {
|
|
61
|
+
t8 = $[13];
|
|
62
|
+
}
|
|
63
|
+
if ($[14] !== t8) {
|
|
64
|
+
t5 = /*#__PURE__*/_jsx("thead", {
|
|
65
|
+
children: /*#__PURE__*/_jsx("tr", {
|
|
66
|
+
children: t8
|
|
67
|
+
})
|
|
68
|
+
});
|
|
69
|
+
$[14] = t8;
|
|
70
|
+
$[15] = t5;
|
|
71
|
+
} else {
|
|
72
|
+
t5 = $[15];
|
|
73
|
+
}
|
|
74
|
+
let t9;
|
|
75
|
+
if ($[16] !== columns) {
|
|
76
|
+
t9 = (values_0, row) => /*#__PURE__*/_jsx("tr", {
|
|
77
|
+
children: values_0.map((value_0, index) => {
|
|
78
|
+
const column = columns[index].column;
|
|
79
|
+
return /*#__PURE__*/_jsx("td", {
|
|
80
|
+
className: alignOf(column),
|
|
81
|
+
children: value_0 === undefined || value_0 === null ? "" : textOf(value_0, column) ?? ""
|
|
82
|
+
}, column.name);
|
|
83
|
+
})
|
|
84
|
+
}, row);
|
|
85
|
+
$[16] = columns;
|
|
86
|
+
$[17] = t9;
|
|
87
|
+
} else {
|
|
88
|
+
t9 = $[17];
|
|
89
|
+
}
|
|
90
|
+
t1 = rows.map(t9);
|
|
91
|
+
$[1] = columns;
|
|
92
|
+
$[2] = label;
|
|
93
|
+
$[3] = store;
|
|
94
|
+
$[4] = view.rowCount;
|
|
95
|
+
$[5] = t1;
|
|
96
|
+
$[6] = t2;
|
|
97
|
+
$[7] = t3;
|
|
98
|
+
$[8] = t4;
|
|
99
|
+
$[9] = t5;
|
|
100
|
+
$[10] = t6;
|
|
101
|
+
$[11] = t7;
|
|
102
|
+
} else {
|
|
103
|
+
t1 = $[5];
|
|
104
|
+
t2 = $[6];
|
|
105
|
+
t3 = $[7];
|
|
106
|
+
t4 = $[8];
|
|
107
|
+
t5 = $[9];
|
|
108
|
+
t6 = $[10];
|
|
109
|
+
t7 = $[11];
|
|
110
|
+
}
|
|
111
|
+
let t8;
|
|
112
|
+
if ($[18] !== t1) {
|
|
113
|
+
t8 = /*#__PURE__*/_jsx("tbody", {
|
|
114
|
+
children: t1
|
|
115
|
+
});
|
|
116
|
+
$[18] = t1;
|
|
117
|
+
$[19] = t8;
|
|
118
|
+
} else {
|
|
119
|
+
t8 = $[19];
|
|
120
|
+
}
|
|
121
|
+
let t9;
|
|
122
|
+
if ($[20] !== t2 || $[21] !== t3 || $[22] !== t4 || $[23] !== t5 || $[24] !== t8) {
|
|
123
|
+
t9 = /*#__PURE__*/_jsxs("table", {
|
|
124
|
+
className: t2,
|
|
125
|
+
"aria-label": t3,
|
|
126
|
+
"aria-rowcount": t4,
|
|
127
|
+
children: [t5, t8]
|
|
128
|
+
});
|
|
129
|
+
$[20] = t2;
|
|
130
|
+
$[21] = t3;
|
|
131
|
+
$[22] = t4;
|
|
132
|
+
$[23] = t5;
|
|
133
|
+
$[24] = t8;
|
|
134
|
+
$[25] = t9;
|
|
135
|
+
} else {
|
|
136
|
+
t9 = $[25];
|
|
137
|
+
}
|
|
138
|
+
let t10;
|
|
139
|
+
if ($[26] !== t6 || $[27] !== t7 || $[28] !== t9) {
|
|
140
|
+
t10 = /*#__PURE__*/_jsx("div", {
|
|
141
|
+
className: t6,
|
|
142
|
+
"aria-busy": t7,
|
|
143
|
+
children: t9
|
|
144
|
+
});
|
|
145
|
+
$[26] = t6;
|
|
146
|
+
$[27] = t7;
|
|
147
|
+
$[28] = t9;
|
|
148
|
+
$[29] = t10;
|
|
149
|
+
} else {
|
|
150
|
+
t10 = $[29];
|
|
151
|
+
}
|
|
152
|
+
return t10;
|
|
153
|
+
}
|
|
154
|
+
function _temp6(item_0) {
|
|
155
|
+
return /*#__PURE__*/_jsx("th", {
|
|
156
|
+
scope: "col",
|
|
157
|
+
className: alignOf(item_0.column),
|
|
158
|
+
children: item_0.setting.format?.label ?? item_0.column.name
|
|
159
|
+
}, item_0.column.name);
|
|
160
|
+
}
|
|
161
|
+
function _temp5(values) {
|
|
162
|
+
return values.every(_temp4);
|
|
163
|
+
}
|
|
164
|
+
function _temp4(value) {
|
|
165
|
+
return value === undefined;
|
|
166
|
+
}
|
|
167
|
+
function _temp3(item) {
|
|
168
|
+
return item.column.name;
|
|
169
|
+
}
|
|
170
|
+
function _temp2(snapshot_0) {
|
|
171
|
+
return snapshot_0.displayed;
|
|
172
|
+
}
|
|
173
|
+
function _temp(snapshot) {
|
|
174
|
+
return snapshot.view;
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=static-rows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["textOf","readRows","useGridSelector","useGridStore","jsx","_jsx","jsxs","_jsxs","MAX_ROWS","alignOf","column","type","undefined","StaticRows","t0","$","_c","label","store","view","_temp","columns","_temp2","t1","Symbol","for","className","t2","t3","t4","t5","t6","t7","rowCount","names","map","_temp3","read","Math","min","loaded","findIndex","_temp5","rows","slice","t8","_temp6","children","t9","values_0","row","values","value_0","index","value","name","t10","item_0","scope","item","setting","format","every","_temp4","snapshot_0","snapshot","displayed"],"sources":["static-rows.tsx"],"sourcesContent":["import { type Column, textOf } from \"vastgrid-spec\";\nimport { readRows, useGridSelector, useGridStore } from \"./hooks.js\";\n\n/** Rows that the server sends as HTML at most. */\nconst MAX_ROWS = 100;\n\nfunction alignOf(column: Column) {\n return column.type === \"integer\" || column.type === \"bigint\" || column.type === \"decimal\" || column.type === \"float\"\n ? \"vg-static__number\"\n : undefined;\n}\n\n/**\n * What the server sends in place of the canvas (§7 of react.md): the first rows that the store has, from\n * `initial`, as an HTML table that is readable before any script runs; without rows, an empty body that is\n * busy. It has the size of the body, so that the canvas replaces it without moving anything.\n */\nexport function StaticRows({ label }: { label: string }) {\n const store = useGridStore();\n const view = useGridSelector((snapshot) => snapshot.view);\n const columns = useGridSelector((snapshot) => snapshot.displayed);\n if (!view) return <div className=\"vg-body\" aria-busy=\"true\" />;\n const names = columns.map((item) => item.column.name);\n // The rows that the store has from the start of the view, which `initial` gave.\n const read = readRows(store, 0, 0, Math.min(view.rowCount, MAX_ROWS), names);\n const loaded = read.findIndex((values) => values.every((value) => value === undefined));\n const rows = loaded < 0 ? read : read.slice(0, loaded);\n return (\n <div className=\"vg-body\" aria-busy=\"true\">\n <table className=\"vg-static\" aria-label={label} aria-rowcount={view.rowCount + 1}>\n <thead>\n <tr>\n {columns.map((item) => (\n <th key={item.column.name} scope=\"col\" className={alignOf(item.column)}>\n {item.setting.format?.label ?? item.column.name}\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {rows.map((values, row) => (\n // Rows of a view have no other identity here: the server renders them once.\n // biome-ignore lint/suspicious/noArrayIndexKey: the rows are the view's first rows, in order.\n <tr key={row}>\n {values.map((value, index) => {\n const column = columns[index].column;\n return (\n <td key={column.name} className={alignOf(column)}>\n {value === undefined || value === null ? \"\" : (textOf(value, column) ?? \"\")}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
interface StatusBarProps {
|
|
2
|
+
announce: (text: string) => void;
|
|
3
|
+
/** Gives the focus back to the grid, once a button that had it is gone. */
|
|
4
|
+
onDone: () => void;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* The status bar: the active cell, the sum of the selection, what the grid is doing (saving and the outcome of the
|
|
8
|
+
* last save included) or that the file changed on disk, a write that failed, the cells not saved yet and the rows.
|
|
9
|
+
*/
|
|
10
|
+
export declare function StatusBar({ announce, onDone }: StatusBarProps): import("react").JSX.Element;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=status-bar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"status-bar.d.ts","sourceRoot":"","sources":["../../src/react/status-bar.tsx"],"names":[],"mappings":"AAsDA,UAAU,cAAc;IACtB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,2EAA2E;IAC3E,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AA+CD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,cAAc,+BAiE7D"}
|
|
@@ -0,0 +1,413 @@
|
|
|
1
|
+
import { c as _c } from "react/compiler-runtime";
|
|
2
|
+
import { use, useEffect, useState } from "react";
|
|
3
|
+
import { checkedCount } from "../core/checked.js";
|
|
4
|
+
import { LocaleContext, SaveContext } from "./context.js";
|
|
5
|
+
import { useGridSelector, useGridStore } from "./hooks.js";
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
/** How long the selection must stay before it is summed. */
|
|
8
|
+
const SUMMARY_DELAY = 150;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* The count and sum of a selection of one range of several cells (`summarize`, §8.2), read once the selection has
|
|
12
|
+
* stayed for a moment, so that holding a key or dragging never waits for it; null otherwise.
|
|
13
|
+
*/
|
|
14
|
+
function useSummary(store, selection) {
|
|
15
|
+
const $ = _c(7);
|
|
16
|
+
const [result, setResult] = useState(null);
|
|
17
|
+
const summarizes = useGridSelector(_temp);
|
|
18
|
+
const range = selection?.length === 1 ? selection[0] : undefined;
|
|
19
|
+
const several = range !== undefined && (range.rows === "all" || range.rows[1] - range.rows[0] > 1 || range.columns === "all" || range.columns.length > 1);
|
|
20
|
+
let t0;
|
|
21
|
+
let t1;
|
|
22
|
+
if ($[0] !== range || $[1] !== selection || $[2] !== several || $[3] !== store || $[4] !== summarizes) {
|
|
23
|
+
t0 = () => {
|
|
24
|
+
if (!summarizes || !several || !selection || !range) {
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const abort = new AbortController();
|
|
28
|
+
const timer = setTimeout(() => {
|
|
29
|
+
const snapshot_0 = store.getSnapshot();
|
|
30
|
+
const rowCount = snapshot_0.view?.rowCount ?? 0;
|
|
31
|
+
const rows = range.rows === "all" ? [0, rowCount] : [range.rows[0], range.rows[1]];
|
|
32
|
+
const columns = range.columns === "all" ? snapshot_0.displayed.map(_temp2) : range.columns;
|
|
33
|
+
store.summarize([rows], columns, abort.signal).then(summary => setResult({
|
|
34
|
+
selection,
|
|
35
|
+
summary
|
|
36
|
+
})).catch(_temp3);
|
|
37
|
+
}, SUMMARY_DELAY);
|
|
38
|
+
return () => {
|
|
39
|
+
clearTimeout(timer);
|
|
40
|
+
abort.abort();
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
t1 = [store, summarizes, several, selection, range];
|
|
44
|
+
$[0] = range;
|
|
45
|
+
$[1] = selection;
|
|
46
|
+
$[2] = several;
|
|
47
|
+
$[3] = store;
|
|
48
|
+
$[4] = summarizes;
|
|
49
|
+
$[5] = t0;
|
|
50
|
+
$[6] = t1;
|
|
51
|
+
} else {
|
|
52
|
+
t0 = $[5];
|
|
53
|
+
t1 = $[6];
|
|
54
|
+
}
|
|
55
|
+
useEffect(t0, t1);
|
|
56
|
+
return result && result.selection === selection ? result.summary : null;
|
|
57
|
+
}
|
|
58
|
+
function _temp3() {}
|
|
59
|
+
function _temp2(item) {
|
|
60
|
+
return item.column.name;
|
|
61
|
+
}
|
|
62
|
+
function _temp(snapshot) {
|
|
63
|
+
return snapshot.table?.capabilities.summarize === true;
|
|
64
|
+
}
|
|
65
|
+
function format(number, value) {
|
|
66
|
+
if (typeof value === "number") return number.format(value);
|
|
67
|
+
return typeof value === "string" ? value : "";
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* The last write that failed (§6.6 of react.md): why, with Retry (Overwrite after a conflict) while the table
|
|
71
|
+
* has the revision its rows were read at, and Discard. Both give the focus back to the grid.
|
|
72
|
+
*/
|
|
73
|
+
function FailedWrite(t0) {
|
|
74
|
+
const $ = _c(28);
|
|
75
|
+
const {
|
|
76
|
+
announce,
|
|
77
|
+
onDone
|
|
78
|
+
} = t0;
|
|
79
|
+
const store = useGridStore();
|
|
80
|
+
const {
|
|
81
|
+
messages
|
|
82
|
+
} = use(LocaleContext);
|
|
83
|
+
const failed = useGridSelector(_temp4);
|
|
84
|
+
const revision = useGridSelector(_temp5);
|
|
85
|
+
if (!failed) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
const retry = failed.revision === revision ? failed.retry : null;
|
|
89
|
+
let t1;
|
|
90
|
+
if ($[0] !== failed.error.code || $[1] !== failed.error.message || $[2] !== failed.retry || $[3] !== messages || $[4] !== retry) {
|
|
91
|
+
t1 = failed.error.code === "revision_changed" || failed.retry !== null && retry === null ? messages.writeRevisionChanged : failed.error.code === "edit_conflict" ? messages.writeConflict : messages.writeFailed(failed.error.message);
|
|
92
|
+
$[0] = failed.error.code;
|
|
93
|
+
$[1] = failed.error.message;
|
|
94
|
+
$[2] = failed.retry;
|
|
95
|
+
$[3] = messages;
|
|
96
|
+
$[4] = retry;
|
|
97
|
+
$[5] = t1;
|
|
98
|
+
} else {
|
|
99
|
+
t1 = $[5];
|
|
100
|
+
}
|
|
101
|
+
const text = t1;
|
|
102
|
+
let t2;
|
|
103
|
+
if ($[6] !== announce || $[7] !== messages || $[8] !== onDone || $[9] !== store) {
|
|
104
|
+
t2 = () => {
|
|
105
|
+
onDone();
|
|
106
|
+
store.retryWrite().then(outcome => {
|
|
107
|
+
if (!outcome.ok && !store.getSnapshot().failedWrite) {
|
|
108
|
+
announce(messages.writeFailed(outcome.error.message));
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
};
|
|
112
|
+
$[6] = announce;
|
|
113
|
+
$[7] = messages;
|
|
114
|
+
$[8] = onDone;
|
|
115
|
+
$[9] = store;
|
|
116
|
+
$[10] = t2;
|
|
117
|
+
} else {
|
|
118
|
+
t2 = $[10];
|
|
119
|
+
}
|
|
120
|
+
const send = t2;
|
|
121
|
+
let t3;
|
|
122
|
+
if ($[11] !== text) {
|
|
123
|
+
t3 = /*#__PURE__*/_jsx("span", {
|
|
124
|
+
className: "vg-statusbar__error",
|
|
125
|
+
children: text
|
|
126
|
+
});
|
|
127
|
+
$[11] = text;
|
|
128
|
+
$[12] = t3;
|
|
129
|
+
} else {
|
|
130
|
+
t3 = $[12];
|
|
131
|
+
}
|
|
132
|
+
let t4;
|
|
133
|
+
if ($[13] !== messages.overwrite || $[14] !== messages.retry || $[15] !== retry || $[16] !== send) {
|
|
134
|
+
t4 = retry && /*#__PURE__*/_jsx("button", {
|
|
135
|
+
type: "button",
|
|
136
|
+
className: "vg-button vg-button--small",
|
|
137
|
+
onClick: send,
|
|
138
|
+
children: retry === "overwrite" ? messages.overwrite : messages.retry
|
|
139
|
+
});
|
|
140
|
+
$[13] = messages.overwrite;
|
|
141
|
+
$[14] = messages.retry;
|
|
142
|
+
$[15] = retry;
|
|
143
|
+
$[16] = send;
|
|
144
|
+
$[17] = t4;
|
|
145
|
+
} else {
|
|
146
|
+
t4 = $[17];
|
|
147
|
+
}
|
|
148
|
+
let t5;
|
|
149
|
+
if ($[18] !== onDone || $[19] !== store) {
|
|
150
|
+
t5 = () => {
|
|
151
|
+
onDone();
|
|
152
|
+
store.discardWrite();
|
|
153
|
+
};
|
|
154
|
+
$[18] = onDone;
|
|
155
|
+
$[19] = store;
|
|
156
|
+
$[20] = t5;
|
|
157
|
+
} else {
|
|
158
|
+
t5 = $[20];
|
|
159
|
+
}
|
|
160
|
+
let t6;
|
|
161
|
+
if ($[21] !== messages.discard || $[22] !== t5) {
|
|
162
|
+
t6 = /*#__PURE__*/_jsx("button", {
|
|
163
|
+
type: "button",
|
|
164
|
+
className: "vg-button vg-button--small",
|
|
165
|
+
onClick: t5,
|
|
166
|
+
children: messages.discard
|
|
167
|
+
});
|
|
168
|
+
$[21] = messages.discard;
|
|
169
|
+
$[22] = t5;
|
|
170
|
+
$[23] = t6;
|
|
171
|
+
} else {
|
|
172
|
+
t6 = $[23];
|
|
173
|
+
}
|
|
174
|
+
let t7;
|
|
175
|
+
if ($[24] !== t3 || $[25] !== t4 || $[26] !== t6) {
|
|
176
|
+
t7 = /*#__PURE__*/_jsxs("span", {
|
|
177
|
+
className: "vg-statusbar__failed",
|
|
178
|
+
role: "alert",
|
|
179
|
+
children: [t3, t4, t6]
|
|
180
|
+
});
|
|
181
|
+
$[24] = t3;
|
|
182
|
+
$[25] = t4;
|
|
183
|
+
$[26] = t6;
|
|
184
|
+
$[27] = t7;
|
|
185
|
+
} else {
|
|
186
|
+
t7 = $[27];
|
|
187
|
+
}
|
|
188
|
+
return t7;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* The status bar: the active cell, the sum of the selection, what the grid is doing (saving and the outcome of the
|
|
193
|
+
* last save included) or that the file changed on disk, a write that failed, the cells not saved yet and the rows.
|
|
194
|
+
*/
|
|
195
|
+
function _temp5(snapshot_0) {
|
|
196
|
+
return snapshot_0.table?.revision;
|
|
197
|
+
}
|
|
198
|
+
function _temp4(snapshot) {
|
|
199
|
+
return snapshot.failedWrite;
|
|
200
|
+
}
|
|
201
|
+
export function StatusBar(t0) {
|
|
202
|
+
const $ = _c(49);
|
|
203
|
+
const {
|
|
204
|
+
announce,
|
|
205
|
+
onDone
|
|
206
|
+
} = t0;
|
|
207
|
+
const store = useGridStore();
|
|
208
|
+
const {
|
|
209
|
+
messages,
|
|
210
|
+
number
|
|
211
|
+
} = use(LocaleContext);
|
|
212
|
+
const saving = use(SaveContext);
|
|
213
|
+
const saves = useGridSelector(_temp6);
|
|
214
|
+
const edits = useGridSelector(_temp7);
|
|
215
|
+
const revision = useGridSelector(_temp8);
|
|
216
|
+
const fileChanged = useGridSelector(_temp9);
|
|
217
|
+
const rowCount = useGridSelector(_temp0);
|
|
218
|
+
const building = useGridSelector(_temp1);
|
|
219
|
+
const pending = useGridSelector(_temp10);
|
|
220
|
+
const failedWrite = useGridSelector(_temp11);
|
|
221
|
+
const error = useGridSelector(_temp12);
|
|
222
|
+
const active = useGridSelector(_temp13);
|
|
223
|
+
const selection = useGridSelector(_temp14);
|
|
224
|
+
const summary = useSummary(store, selection);
|
|
225
|
+
const checked = useGridSelector(_temp15);
|
|
226
|
+
let t1;
|
|
227
|
+
if ($[0] !== building || $[1] !== edits || $[2] !== error || $[3] !== fileChanged || $[4] !== messages || $[5] !== pending || $[6] !== revision || $[7] !== rowCount || $[8] !== saving) {
|
|
228
|
+
t1 = error ? messages.failed(error.message) : rowCount === undefined ? messages.loading : saving?.pending ? messages.saving : saving?.outcome && edits && revision === saving.outcome.revision && edits.version <= saving.outcome.version ? saving.outcome.text : fileChanged ? messages.changedOnDisk : pending || building ? messages.reading : "";
|
|
229
|
+
$[0] = building;
|
|
230
|
+
$[1] = edits;
|
|
231
|
+
$[2] = error;
|
|
232
|
+
$[3] = fileChanged;
|
|
233
|
+
$[4] = messages;
|
|
234
|
+
$[5] = pending;
|
|
235
|
+
$[6] = revision;
|
|
236
|
+
$[7] = rowCount;
|
|
237
|
+
$[8] = saving;
|
|
238
|
+
$[9] = t1;
|
|
239
|
+
} else {
|
|
240
|
+
t1 = $[9];
|
|
241
|
+
}
|
|
242
|
+
const doing = t1;
|
|
243
|
+
let t2;
|
|
244
|
+
if ($[10] !== active || $[11] !== messages || $[12] !== number || $[13] !== rowCount) {
|
|
245
|
+
t2 = active && rowCount !== undefined && rowCount > 0 ? messages.cell(number.format(active.row + 1), active.column) : "";
|
|
246
|
+
$[10] = active;
|
|
247
|
+
$[11] = messages;
|
|
248
|
+
$[12] = number;
|
|
249
|
+
$[13] = rowCount;
|
|
250
|
+
$[14] = t2;
|
|
251
|
+
} else {
|
|
252
|
+
t2 = $[14];
|
|
253
|
+
}
|
|
254
|
+
let t3;
|
|
255
|
+
if ($[15] !== t2) {
|
|
256
|
+
t3 = /*#__PURE__*/_jsx("span", {
|
|
257
|
+
className: "vg-statusbar__cell",
|
|
258
|
+
children: t2
|
|
259
|
+
});
|
|
260
|
+
$[15] = t2;
|
|
261
|
+
$[16] = t3;
|
|
262
|
+
} else {
|
|
263
|
+
t3 = $[16];
|
|
264
|
+
}
|
|
265
|
+
let t4;
|
|
266
|
+
if ($[17] === Symbol.for("react.memo_cache_sentinel")) {
|
|
267
|
+
t4 = /*#__PURE__*/_jsx("span", {
|
|
268
|
+
className: "vg-toolbar__spacer"
|
|
269
|
+
});
|
|
270
|
+
$[17] = t4;
|
|
271
|
+
} else {
|
|
272
|
+
t4 = $[17];
|
|
273
|
+
}
|
|
274
|
+
let t5;
|
|
275
|
+
if ($[18] !== messages || $[19] !== number || $[20] !== summary) {
|
|
276
|
+
t5 = summary && /*#__PURE__*/_jsxs("span", {
|
|
277
|
+
className: "vg-statusbar__summary",
|
|
278
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
279
|
+
children: messages.count(number.format(summary.count))
|
|
280
|
+
}), summary.numericCount > 0 && /*#__PURE__*/_jsx("span", {
|
|
281
|
+
children: messages.sum(format(number, summary.sum))
|
|
282
|
+
}), summary.numericCount > 0 && /*#__PURE__*/_jsx("span", {
|
|
283
|
+
children: messages.average(format(number, summary.average))
|
|
284
|
+
})]
|
|
285
|
+
});
|
|
286
|
+
$[18] = messages;
|
|
287
|
+
$[19] = number;
|
|
288
|
+
$[20] = summary;
|
|
289
|
+
$[21] = t5;
|
|
290
|
+
} else {
|
|
291
|
+
t5 = $[21];
|
|
292
|
+
}
|
|
293
|
+
let t6;
|
|
294
|
+
if ($[22] !== announce || $[23] !== doing || $[24] !== failedWrite || $[25] !== onDone) {
|
|
295
|
+
t6 = failedWrite ? /*#__PURE__*/_jsx(FailedWrite, {
|
|
296
|
+
announce: announce,
|
|
297
|
+
onDone: onDone
|
|
298
|
+
}) : /*#__PURE__*/_jsx("span", {
|
|
299
|
+
className: "vg-statusbar__muted",
|
|
300
|
+
role: "status",
|
|
301
|
+
children: doing
|
|
302
|
+
});
|
|
303
|
+
$[22] = announce;
|
|
304
|
+
$[23] = doing;
|
|
305
|
+
$[24] = failedWrite;
|
|
306
|
+
$[25] = onDone;
|
|
307
|
+
$[26] = t6;
|
|
308
|
+
} else {
|
|
309
|
+
t6 = $[26];
|
|
310
|
+
}
|
|
311
|
+
let t7;
|
|
312
|
+
if ($[27] !== checked || $[28] !== messages || $[29] !== number) {
|
|
313
|
+
t7 = checked !== 0 && /*#__PURE__*/_jsx("span", {
|
|
314
|
+
className: "vg-statusbar__checked",
|
|
315
|
+
children: checked === null ? messages.checkedUnknown : messages.checkedRows(number.format(checked))
|
|
316
|
+
});
|
|
317
|
+
$[27] = checked;
|
|
318
|
+
$[28] = messages;
|
|
319
|
+
$[29] = number;
|
|
320
|
+
$[30] = t7;
|
|
321
|
+
} else {
|
|
322
|
+
t7 = $[30];
|
|
323
|
+
}
|
|
324
|
+
let t8;
|
|
325
|
+
if ($[31] !== edits || $[32] !== messages || $[33] !== number || $[34] !== saves) {
|
|
326
|
+
t8 = saves && edits && edits.cells > 0 && /*#__PURE__*/_jsx("span", {
|
|
327
|
+
className: "vg-statusbar__unsaved",
|
|
328
|
+
children: messages.unsaved(number.format(edits.cells))
|
|
329
|
+
});
|
|
330
|
+
$[31] = edits;
|
|
331
|
+
$[32] = messages;
|
|
332
|
+
$[33] = number;
|
|
333
|
+
$[34] = saves;
|
|
334
|
+
$[35] = t8;
|
|
335
|
+
} else {
|
|
336
|
+
t8 = $[35];
|
|
337
|
+
}
|
|
338
|
+
let t9;
|
|
339
|
+
if ($[36] !== messages || $[37] !== number || $[38] !== rowCount) {
|
|
340
|
+
t9 = rowCount === undefined ? "" : messages.rows(number.format(rowCount));
|
|
341
|
+
$[36] = messages;
|
|
342
|
+
$[37] = number;
|
|
343
|
+
$[38] = rowCount;
|
|
344
|
+
$[39] = t9;
|
|
345
|
+
} else {
|
|
346
|
+
t9 = $[39];
|
|
347
|
+
}
|
|
348
|
+
let t10;
|
|
349
|
+
if ($[40] !== t9) {
|
|
350
|
+
t10 = /*#__PURE__*/_jsx("span", {
|
|
351
|
+
className: "vg-toolbar__count",
|
|
352
|
+
children: t9
|
|
353
|
+
});
|
|
354
|
+
$[40] = t9;
|
|
355
|
+
$[41] = t10;
|
|
356
|
+
} else {
|
|
357
|
+
t10 = $[41];
|
|
358
|
+
}
|
|
359
|
+
let t11;
|
|
360
|
+
if ($[42] !== t10 || $[43] !== t3 || $[44] !== t5 || $[45] !== t6 || $[46] !== t7 || $[47] !== t8) {
|
|
361
|
+
t11 = /*#__PURE__*/_jsxs("div", {
|
|
362
|
+
className: "vg-statusbar",
|
|
363
|
+
children: [t3, t4, t5, t6, t7, t8, t10]
|
|
364
|
+
});
|
|
365
|
+
$[42] = t10;
|
|
366
|
+
$[43] = t3;
|
|
367
|
+
$[44] = t5;
|
|
368
|
+
$[45] = t6;
|
|
369
|
+
$[46] = t7;
|
|
370
|
+
$[47] = t8;
|
|
371
|
+
$[48] = t11;
|
|
372
|
+
} else {
|
|
373
|
+
t11 = $[48];
|
|
374
|
+
}
|
|
375
|
+
return t11;
|
|
376
|
+
}
|
|
377
|
+
function _temp15(snapshot_10) {
|
|
378
|
+
return checkedCount(snapshot_10.session.checked, snapshot_10.document.plan, snapshot_10.view?.rowCount ?? 0);
|
|
379
|
+
}
|
|
380
|
+
function _temp14(snapshot_9) {
|
|
381
|
+
return snapshot_9.session.selection;
|
|
382
|
+
}
|
|
383
|
+
function _temp13(snapshot_8) {
|
|
384
|
+
return snapshot_8.session.active;
|
|
385
|
+
}
|
|
386
|
+
function _temp12(snapshot_7) {
|
|
387
|
+
return snapshot_7.error;
|
|
388
|
+
}
|
|
389
|
+
function _temp11(snapshot_6) {
|
|
390
|
+
return snapshot_6.failedWrite !== null;
|
|
391
|
+
}
|
|
392
|
+
function _temp10(snapshot_5) {
|
|
393
|
+
return snapshot_5.pending !== null;
|
|
394
|
+
}
|
|
395
|
+
function _temp1(snapshot_4) {
|
|
396
|
+
return snapshot_4.view?.status === "building";
|
|
397
|
+
}
|
|
398
|
+
function _temp0(snapshot_3) {
|
|
399
|
+
return snapshot_3.view?.rowCount;
|
|
400
|
+
}
|
|
401
|
+
function _temp9(snapshot_2) {
|
|
402
|
+
return snapshot_2.table?.fileChanged === true;
|
|
403
|
+
}
|
|
404
|
+
function _temp8(snapshot_1) {
|
|
405
|
+
return snapshot_1.table?.revision;
|
|
406
|
+
}
|
|
407
|
+
function _temp7(snapshot_0) {
|
|
408
|
+
return snapshot_0.table?.edits;
|
|
409
|
+
}
|
|
410
|
+
function _temp6(snapshot) {
|
|
411
|
+
return snapshot.table?.capabilities.save === true;
|
|
412
|
+
}
|
|
413
|
+
//# sourceMappingURL=status-bar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["use","useEffect","useState","checkedCount","LocaleContext","SaveContext","useGridSelector","useGridStore","jsx","_jsx","jsxs","_jsxs","SUMMARY_DELAY","useSummary","store","selection","$","_c","result","setResult","summarizes","_temp","range","length","undefined","several","rows","columns","t0","t1","abort","AbortController","timer","setTimeout","snapshot_0","getSnapshot","rowCount","snapshot","view","displayed","map","_temp2","summarize","signal","then","summary","catch","_temp3","clearTimeout","item","column","name","table","capabilities","format","number","value","FailedWrite","announce","onDone","messages","failed","_temp4","revision","_temp5","retry","error","code","message","writeRevisionChanged","writeConflict","writeFailed","text","t2","retryWrite","outcome","ok","failedWrite","send","t3","className","children","t4","overwrite","type","t5","discardWrite","t6","discard","onClick","t7","role","StatusBar","saving","saves","_temp6","edits","_temp7","_temp8","fileChanged","_temp9","_temp0","building","_temp1","pending","_temp10","_temp11","_temp12","active","_temp13","_temp14","checked","_temp15","loading","version","changedOnDisk","reading","doing","cell","row","Symbol","for","count","numericCount","sum","average","checkedUnknown","checkedRows","t8","cells","unsaved","t9","t10","t11","snapshot_10","session","document","plan","snapshot_9","snapshot_8","snapshot_7","snapshot_6","snapshot_5","snapshot_4","status","snapshot_3","snapshot_2","snapshot_1","save"],"sources":["status-bar.tsx"],"sourcesContent":["import { use, useEffect, useState } from \"react\";\nimport type { CellRange } from \"vastgrid-spec\";\nimport { checkedCount } from \"../core/checked.js\";\nimport type { GridStore } from \"../core/store.js\";\nimport { LocaleContext, SaveContext } from \"./context.js\";\nimport { useGridSelector, useGridStore } from \"./hooks.js\";\n\ninterface Summary {\n count: number;\n numericCount: number;\n sum: unknown;\n average: unknown;\n}\n\n/** How long the selection must stay before it is summed. */\nconst SUMMARY_DELAY = 150;\n\n/**\n * The count and sum of a selection of one range of several cells (`summarize`, §8.2), read once the selection has\n * stayed for a moment, so that holding a key or dragging never waits for it; null otherwise.\n */\nfunction useSummary(store: GridStore, selection: readonly CellRange[] | undefined): Summary | null {\n const [result, setResult] = useState<{ selection: readonly CellRange[]; summary: Summary } | null>(null);\n const summarizes = useGridSelector((snapshot) => snapshot.table?.capabilities.summarize === true);\n const range = selection?.length === 1 ? selection[0] : undefined;\n const several =\n range !== undefined &&\n (range.rows === \"all\" || range.rows[1] - range.rows[0] > 1 || range.columns === \"all\" || range.columns.length > 1);\n useEffect(() => {\n if (!summarizes || !several || !selection || !range) return;\n const abort = new AbortController();\n const timer = setTimeout(() => {\n const snapshot = store.getSnapshot();\n const rowCount = snapshot.view?.rowCount ?? 0;\n const rows: [number, number] = range.rows === \"all\" ? [0, rowCount] : [range.rows[0], range.rows[1]];\n const columns = range.columns === \"all\" ? snapshot.displayed.map((item) => item.column.name) : range.columns;\n store\n .summarize([rows], columns, abort.signal)\n .then((summary) => setResult({ selection, summary }))\n .catch(() => {});\n }, SUMMARY_DELAY);\n return () => {\n clearTimeout(timer);\n abort.abort();\n };\n }, [store, summarizes, several, selection, range]);\n return result && result.selection === selection ? result.summary : null;\n}\n\nfunction format(number: Intl.NumberFormat, value: unknown) {\n if (typeof value === \"number\") return number.format(value);\n return typeof value === \"string\" ? value : \"\";\n}\n\ninterface StatusBarProps {\n announce: (text: string) => void;\n /** Gives the focus back to the grid, once a button that had it is gone. */\n onDone: () => void;\n}\n\n/**\n * The last write that failed (§6.6 of react.md): why, with Retry (Overwrite after a conflict) while the table\n * has the revision its rows were read at, and Discard. Both give the focus back to the grid.\n */\nfunction FailedWrite({ announce, onDone }: StatusBarProps) {\n const store = useGridStore();\n const { messages } = use(LocaleContext);\n const failed = useGridSelector((snapshot) => snapshot.failedWrite);\n const revision = useGridSelector((snapshot) => snapshot.table?.revision);\n if (!failed) return null;\n const retry = failed.revision === revision ? failed.retry : null;\n const text =\n failed.error.code === \"revision_changed\" || (failed.retry !== null && retry === null)\n ? messages.writeRevisionChanged\n : failed.error.code === \"edit_conflict\"\n ? messages.writeConflict\n : messages.writeFailed(failed.error.message);\n const send = () => {\n onDone();\n void store.retryWrite().then((outcome) => {\n if (!outcome.ok && !store.getSnapshot().failedWrite) announce(messages.writeFailed(outcome.error.message));\n });\n };\n return (\n <span className=\"vg-statusbar__failed\" role=\"alert\">\n <span className=\"vg-statusbar__error\">{text}</span>\n {retry && (\n <button type=\"button\" className=\"vg-button vg-button--small\" onClick={send}>\n {retry === \"overwrite\" ? messages.overwrite : messages.retry}\n </button>\n )}\n <button\n type=\"button\"\n className=\"vg-button vg-button--small\"\n onClick={() => {\n onDone();\n store.discardWrite();\n }}\n >\n {messages.discard}\n </button>\n </span>\n );\n}\n\n/**\n * The status bar: the active cell, the sum of the selection, what the grid is doing (saving and the outcome of the\n * last save included) or that the file changed on disk, a write that failed, the cells not saved yet and the rows.\n */\nexport function StatusBar({ announce, onDone }: StatusBarProps) {\n const store = useGridStore();\n const { messages, number } = use(LocaleContext);\n const saving = use(SaveContext);\n const saves = useGridSelector((snapshot) => snapshot.table?.capabilities.save === true);\n const edits = useGridSelector((snapshot) => snapshot.table?.edits);\n const revision = useGridSelector((snapshot) => snapshot.table?.revision);\n const fileChanged = useGridSelector((snapshot) => snapshot.table?.fileChanged === true);\n const rowCount = useGridSelector((snapshot) => snapshot.view?.rowCount);\n const building = useGridSelector((snapshot) => snapshot.view?.status === \"building\");\n const pending = useGridSelector((snapshot) => snapshot.pending !== null);\n const failedWrite = useGridSelector((snapshot) => snapshot.failedWrite !== null);\n const error = useGridSelector((snapshot) => snapshot.error);\n const active = useGridSelector((snapshot) => snapshot.session.active);\n const selection = useGridSelector((snapshot) => snapshot.session.selection);\n const summary = useSummary(store, selection);\n const checked = useGridSelector((snapshot) =>\n checkedCount(snapshot.session.checked, snapshot.document.plan, snapshot.view?.rowCount ?? 0),\n );\n const doing = error\n ? messages.failed(error.message)\n : rowCount === undefined\n ? messages.loading\n : saving?.pending\n ? messages.saving\n : saving?.outcome && edits && revision === saving.outcome.revision && edits.version <= saving.outcome.version\n ? saving.outcome.text\n : fileChanged\n ? messages.changedOnDisk\n : pending || building\n ? messages.reading\n : \"\";\n return (\n <div className=\"vg-statusbar\">\n <span className=\"vg-statusbar__cell\">\n {active && rowCount !== undefined && rowCount > 0\n ? messages.cell(number.format(active.row + 1), active.column)\n : \"\"}\n </span>\n <span className=\"vg-toolbar__spacer\" />\n {summary && (\n <span className=\"vg-statusbar__summary\">\n <span>{messages.count(number.format(summary.count))}</span>\n {summary.numericCount > 0 && <span>{messages.sum(format(number, summary.sum))}</span>}\n {summary.numericCount > 0 && <span>{messages.average(format(number, summary.average))}</span>}\n </span>\n )}\n {failedWrite ? (\n <FailedWrite announce={announce} onDone={onDone} />\n ) : (\n <span className=\"vg-statusbar__muted\" role=\"status\">\n {doing}\n </span>\n )}\n {checked !== 0 && (\n <span className=\"vg-statusbar__checked\">\n {checked === null ? messages.checkedUnknown : messages.checkedRows(number.format(checked))}\n </span>\n )}\n {saves && edits && edits.cells > 0 && (\n <span className=\"vg-statusbar__unsaved\">{messages.unsaved(number.format(edits.cells))}</span>\n )}\n <span className=\"vg-toolbar__count\">{rowCount === undefined ? \"\" : messages.rows(number.format(rowCount))}</span>\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|