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,508 @@
|
|
|
1
|
+
import { c as _c } from "react/compiler-runtime";
|
|
2
|
+
import { use, useState, useTransition } from "react";
|
|
3
|
+
import { MEASURES, measureTakes } from "vastgrid-spec";
|
|
4
|
+
import { measureName, offers, rowColumns } from "../core/measures.js";
|
|
5
|
+
import { LocaleContext } from "./context.js";
|
|
6
|
+
import { useGridSelector, useGridStore } from "./hooks.js";
|
|
7
|
+
|
|
8
|
+
/** The measures the menu offers; `quantile` needs a `p`, which it does not ask for. */
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
10
|
+
const OFFERED = MEASURES.filter(fn => fn !== "quantile");
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The content of the toolbar's group menu, loaded when it first opens (§6.2 of the specification): the columns that the rows are grouped by and the measures of
|
|
14
|
+
* each group (§4.5), each change dispatched as `group.set` with the whole aggregate, or `group.clear` when nothing is
|
|
15
|
+
* left. It is there when the engine groups rows.
|
|
16
|
+
*/
|
|
17
|
+
export default function GroupPanel() {
|
|
18
|
+
const $ = _c(88);
|
|
19
|
+
const store = useGridStore();
|
|
20
|
+
const {
|
|
21
|
+
messages
|
|
22
|
+
} = use(LocaleContext);
|
|
23
|
+
const table = useGridSelector(_temp);
|
|
24
|
+
const plan = useGridSelector(_temp2);
|
|
25
|
+
const [fn, setFn] = useState("sum");
|
|
26
|
+
const [column, setColumn] = useState("");
|
|
27
|
+
const [error, setError] = useState(null);
|
|
28
|
+
const [pending, startDispatch] = useTransition();
|
|
29
|
+
if (!table || !offers(table.capabilities, "count")) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
let addMeasure;
|
|
33
|
+
let canAdd;
|
|
34
|
+
let dispatch;
|
|
35
|
+
let t0;
|
|
36
|
+
let t1;
|
|
37
|
+
let t10;
|
|
38
|
+
let t11;
|
|
39
|
+
let t12;
|
|
40
|
+
let t13;
|
|
41
|
+
let t14;
|
|
42
|
+
let t2;
|
|
43
|
+
let t3;
|
|
44
|
+
let t4;
|
|
45
|
+
let t5;
|
|
46
|
+
let t6;
|
|
47
|
+
let t7;
|
|
48
|
+
let t8;
|
|
49
|
+
let t9;
|
|
50
|
+
if ($[0] !== column || $[1] !== fn || $[2] !== messages || $[3] !== pending || $[4] !== plan || $[5] !== store || $[6] !== table) {
|
|
51
|
+
const aggregate = plan?.aggregate ?? {
|
|
52
|
+
keys: [],
|
|
53
|
+
measures: []
|
|
54
|
+
};
|
|
55
|
+
const rows = rowColumns(plan, table);
|
|
56
|
+
let t15;
|
|
57
|
+
if ($[25] !== table.capabilities) {
|
|
58
|
+
t15 = name => offers(table.capabilities, name);
|
|
59
|
+
$[25] = table.capabilities;
|
|
60
|
+
$[26] = t15;
|
|
61
|
+
} else {
|
|
62
|
+
t15 = $[26];
|
|
63
|
+
}
|
|
64
|
+
const measures = OFFERED.filter(t15);
|
|
65
|
+
const columnsFor = name_0 => rows.filter(item => measureTakes(name_0, item));
|
|
66
|
+
const target = column === "" ? undefined : rows.find(item_0 => item_0.name === column);
|
|
67
|
+
canAdd = target ? measureTakes(fn, target) : fn === "count";
|
|
68
|
+
let t16;
|
|
69
|
+
if ($[27] !== store) {
|
|
70
|
+
t16 = command => startDispatch(async () => {
|
|
71
|
+
const outcome = await store.dispatch(command);
|
|
72
|
+
setError(outcome.ok ? null : outcome.error.message);
|
|
73
|
+
});
|
|
74
|
+
$[27] = store;
|
|
75
|
+
$[28] = t16;
|
|
76
|
+
} else {
|
|
77
|
+
t16 = $[28];
|
|
78
|
+
}
|
|
79
|
+
dispatch = t16;
|
|
80
|
+
let t17;
|
|
81
|
+
if ($[29] !== dispatch) {
|
|
82
|
+
t17 = next => dispatch(next.keys.length === 0 && next.measures.length === 0 ? {
|
|
83
|
+
command: "group.clear"
|
|
84
|
+
} : {
|
|
85
|
+
command: "group.set",
|
|
86
|
+
aggregate: next
|
|
87
|
+
});
|
|
88
|
+
$[29] = dispatch;
|
|
89
|
+
$[30] = t17;
|
|
90
|
+
} else {
|
|
91
|
+
t17 = $[30];
|
|
92
|
+
}
|
|
93
|
+
const set = t17;
|
|
94
|
+
const pivots = table.capabilities.plan?.pivot !== false;
|
|
95
|
+
const pivot = aggregate.pivot?.columns ?? [];
|
|
96
|
+
const setPivot = columns => {
|
|
97
|
+
const {
|
|
98
|
+
pivot: _pivot,
|
|
99
|
+
...rest
|
|
100
|
+
} = aggregate;
|
|
101
|
+
const measures_0 = columns.length > 0 && rest.measures.length === 0 ? [{
|
|
102
|
+
name: measureName("count", undefined, new Set(rest.keys)),
|
|
103
|
+
fn: "count"
|
|
104
|
+
}] : rest.measures;
|
|
105
|
+
set(columns.length > 0 ? {
|
|
106
|
+
...rest,
|
|
107
|
+
measures: measures_0,
|
|
108
|
+
pivot: {
|
|
109
|
+
columns
|
|
110
|
+
}
|
|
111
|
+
} : rest);
|
|
112
|
+
};
|
|
113
|
+
const taken = () => new Set([...aggregate.keys, ...aggregate.measures.map(_temp3)]);
|
|
114
|
+
addMeasure = () => {
|
|
115
|
+
if (!canAdd) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const name_1 = measureName(fn, target?.name, taken());
|
|
119
|
+
set({
|
|
120
|
+
...aggregate,
|
|
121
|
+
measures: [...aggregate.measures, {
|
|
122
|
+
name: name_1,
|
|
123
|
+
fn,
|
|
124
|
+
...(target ? {
|
|
125
|
+
column: target.name
|
|
126
|
+
} : {})
|
|
127
|
+
}]
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
let t18;
|
|
131
|
+
if ($[31] !== messages.groupKeys) {
|
|
132
|
+
t18 = /*#__PURE__*/_jsx("legend", {
|
|
133
|
+
children: messages.groupKeys
|
|
134
|
+
});
|
|
135
|
+
$[31] = messages.groupKeys;
|
|
136
|
+
$[32] = t18;
|
|
137
|
+
} else {
|
|
138
|
+
t18 = $[32];
|
|
139
|
+
}
|
|
140
|
+
let t19;
|
|
141
|
+
if ($[33] !== messages.addKey) {
|
|
142
|
+
t19 = /*#__PURE__*/_jsx("option", {
|
|
143
|
+
value: "",
|
|
144
|
+
children: messages.addKey
|
|
145
|
+
});
|
|
146
|
+
$[33] = messages.addKey;
|
|
147
|
+
$[34] = t19;
|
|
148
|
+
} else {
|
|
149
|
+
t19 = $[34];
|
|
150
|
+
}
|
|
151
|
+
t13 = /*#__PURE__*/_jsxs("fieldset", {
|
|
152
|
+
className: "vg-groups__part",
|
|
153
|
+
disabled: pending,
|
|
154
|
+
children: [t18, /*#__PURE__*/_jsx("ul", {
|
|
155
|
+
className: "vg-groups__list",
|
|
156
|
+
children: aggregate.keys.map(key => /*#__PURE__*/_jsxs("li", {
|
|
157
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
158
|
+
children: key
|
|
159
|
+
}), /*#__PURE__*/_jsx("button", {
|
|
160
|
+
type: "button",
|
|
161
|
+
className: "vg-button vg-button--small",
|
|
162
|
+
"aria-label": messages.remove(key),
|
|
163
|
+
onClick: () => set({
|
|
164
|
+
...aggregate,
|
|
165
|
+
keys: aggregate.keys.filter(other => other !== key)
|
|
166
|
+
}),
|
|
167
|
+
children: "\xD7"
|
|
168
|
+
})]
|
|
169
|
+
}, key))
|
|
170
|
+
}), /*#__PURE__*/_jsxs("select", {
|
|
171
|
+
className: "vg-input",
|
|
172
|
+
"aria-label": messages.addKey,
|
|
173
|
+
value: "",
|
|
174
|
+
onChange: event => {
|
|
175
|
+
const key_0 = event.target.value;
|
|
176
|
+
if (!key_0) {
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
const measures_1 = plan?.aggregate ? aggregate.measures : [{
|
|
180
|
+
name: measureName("count", undefined, new Set([key_0])),
|
|
181
|
+
fn: "count"
|
|
182
|
+
}];
|
|
183
|
+
set({
|
|
184
|
+
...aggregate,
|
|
185
|
+
keys: [...aggregate.keys, key_0],
|
|
186
|
+
measures: measures_1
|
|
187
|
+
});
|
|
188
|
+
},
|
|
189
|
+
children: [t19, rows.filter(item_1 => !aggregate.keys.includes(item_1.name) && measureTakes("min", item_1)).map(_temp4)]
|
|
190
|
+
})]
|
|
191
|
+
});
|
|
192
|
+
t14 = pivots && /*#__PURE__*/_jsxs("fieldset", {
|
|
193
|
+
className: "vg-groups__part",
|
|
194
|
+
disabled: pending,
|
|
195
|
+
children: [/*#__PURE__*/_jsx("legend", {
|
|
196
|
+
children: messages.pivotBy
|
|
197
|
+
}), /*#__PURE__*/_jsx("ul", {
|
|
198
|
+
className: "vg-groups__list",
|
|
199
|
+
children: pivot.map(name_2 => /*#__PURE__*/_jsxs("li", {
|
|
200
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
201
|
+
children: name_2
|
|
202
|
+
}), /*#__PURE__*/_jsx("button", {
|
|
203
|
+
type: "button",
|
|
204
|
+
className: "vg-button vg-button--small",
|
|
205
|
+
"aria-label": messages.remove(name_2),
|
|
206
|
+
onClick: () => setPivot(pivot.filter(other_0 => other_0 !== name_2)),
|
|
207
|
+
children: "\xD7"
|
|
208
|
+
})]
|
|
209
|
+
}, name_2))
|
|
210
|
+
}), /*#__PURE__*/_jsxs("select", {
|
|
211
|
+
className: "vg-input",
|
|
212
|
+
"aria-label": messages.pivotBy,
|
|
213
|
+
value: "",
|
|
214
|
+
onChange: event_0 => {
|
|
215
|
+
if (event_0.target.value) {
|
|
216
|
+
setPivot([...pivot, event_0.target.value]);
|
|
217
|
+
}
|
|
218
|
+
},
|
|
219
|
+
children: [/*#__PURE__*/_jsx("option", {
|
|
220
|
+
value: "",
|
|
221
|
+
children: messages.addPivot
|
|
222
|
+
}), rows.filter(item_3 => !aggregate.keys.includes(item_3.name) && !pivot.includes(item_3.name) && measureTakes("min", item_3)).map(_temp5)]
|
|
223
|
+
})]
|
|
224
|
+
});
|
|
225
|
+
t9 = "vg-groups__part";
|
|
226
|
+
t10 = pending;
|
|
227
|
+
if ($[35] !== messages.measures) {
|
|
228
|
+
t11 = /*#__PURE__*/_jsx("legend", {
|
|
229
|
+
children: messages.measures
|
|
230
|
+
});
|
|
231
|
+
$[35] = messages.measures;
|
|
232
|
+
$[36] = t11;
|
|
233
|
+
} else {
|
|
234
|
+
t11 = $[36];
|
|
235
|
+
}
|
|
236
|
+
t12 = /*#__PURE__*/_jsx("ul", {
|
|
237
|
+
className: "vg-groups__list",
|
|
238
|
+
children: aggregate.measures.map(measure_0 => /*#__PURE__*/_jsxs("li", {
|
|
239
|
+
children: [/*#__PURE__*/_jsx("span", {
|
|
240
|
+
children: measure_0.name
|
|
241
|
+
}), /*#__PURE__*/_jsx("button", {
|
|
242
|
+
type: "button",
|
|
243
|
+
className: "vg-button vg-button--small",
|
|
244
|
+
"aria-label": messages.remove(measure_0.name),
|
|
245
|
+
onClick: () => set({
|
|
246
|
+
...aggregate,
|
|
247
|
+
measures: aggregate.measures.filter(other_1 => other_1.name !== measure_0.name)
|
|
248
|
+
}),
|
|
249
|
+
children: "\xD7"
|
|
250
|
+
})]
|
|
251
|
+
}, measure_0.name))
|
|
252
|
+
});
|
|
253
|
+
t7 = "vg-groups__add";
|
|
254
|
+
const t20 = messages.measures;
|
|
255
|
+
let t21;
|
|
256
|
+
if ($[37] === Symbol.for("react.memo_cache_sentinel")) {
|
|
257
|
+
t21 = event_1 => setFn(event_1.target.value);
|
|
258
|
+
$[37] = t21;
|
|
259
|
+
} else {
|
|
260
|
+
t21 = $[37];
|
|
261
|
+
}
|
|
262
|
+
let t22;
|
|
263
|
+
if ($[38] !== messages.measureNames) {
|
|
264
|
+
t22 = name_3 => /*#__PURE__*/_jsx("option", {
|
|
265
|
+
value: name_3,
|
|
266
|
+
children: messages.measureNames[name_3]
|
|
267
|
+
}, name_3);
|
|
268
|
+
$[38] = messages.measureNames;
|
|
269
|
+
$[39] = t22;
|
|
270
|
+
} else {
|
|
271
|
+
t22 = $[39];
|
|
272
|
+
}
|
|
273
|
+
const t23 = measures.map(t22);
|
|
274
|
+
if ($[40] !== fn || $[41] !== messages.measures || $[42] !== t23) {
|
|
275
|
+
t8 = /*#__PURE__*/_jsx("select", {
|
|
276
|
+
className: "vg-input",
|
|
277
|
+
"aria-label": t20,
|
|
278
|
+
value: fn,
|
|
279
|
+
onChange: t21,
|
|
280
|
+
children: t23
|
|
281
|
+
});
|
|
282
|
+
$[40] = fn;
|
|
283
|
+
$[41] = messages.measures;
|
|
284
|
+
$[42] = t23;
|
|
285
|
+
$[43] = t8;
|
|
286
|
+
} else {
|
|
287
|
+
t8 = $[43];
|
|
288
|
+
}
|
|
289
|
+
t0 = "vg-input";
|
|
290
|
+
t1 = messages.measureColumn;
|
|
291
|
+
t2 = column;
|
|
292
|
+
if ($[44] === Symbol.for("react.memo_cache_sentinel")) {
|
|
293
|
+
t3 = event_2 => setColumn(event_2.target.value);
|
|
294
|
+
$[44] = t3;
|
|
295
|
+
} else {
|
|
296
|
+
t3 = $[44];
|
|
297
|
+
}
|
|
298
|
+
if ($[45] !== fn || $[46] !== messages.allRows) {
|
|
299
|
+
t4 = fn === "count" && /*#__PURE__*/_jsx("option", {
|
|
300
|
+
value: "",
|
|
301
|
+
children: messages.allRows
|
|
302
|
+
});
|
|
303
|
+
$[45] = fn;
|
|
304
|
+
$[46] = messages.allRows;
|
|
305
|
+
$[47] = t4;
|
|
306
|
+
} else {
|
|
307
|
+
t4 = $[47];
|
|
308
|
+
}
|
|
309
|
+
if ($[48] !== column || $[49] !== fn || $[50] !== messages.measureColumn) {
|
|
310
|
+
t5 = fn !== "count" && column === "" && /*#__PURE__*/_jsx("option", {
|
|
311
|
+
value: "",
|
|
312
|
+
children: messages.measureColumn
|
|
313
|
+
});
|
|
314
|
+
$[48] = column;
|
|
315
|
+
$[49] = fn;
|
|
316
|
+
$[50] = messages.measureColumn;
|
|
317
|
+
$[51] = t5;
|
|
318
|
+
} else {
|
|
319
|
+
t5 = $[51];
|
|
320
|
+
}
|
|
321
|
+
t6 = columnsFor(fn).map(_temp6);
|
|
322
|
+
$[0] = column;
|
|
323
|
+
$[1] = fn;
|
|
324
|
+
$[2] = messages;
|
|
325
|
+
$[3] = pending;
|
|
326
|
+
$[4] = plan;
|
|
327
|
+
$[5] = store;
|
|
328
|
+
$[6] = table;
|
|
329
|
+
$[7] = addMeasure;
|
|
330
|
+
$[8] = canAdd;
|
|
331
|
+
$[9] = dispatch;
|
|
332
|
+
$[10] = t0;
|
|
333
|
+
$[11] = t1;
|
|
334
|
+
$[12] = t10;
|
|
335
|
+
$[13] = t11;
|
|
336
|
+
$[14] = t12;
|
|
337
|
+
$[15] = t13;
|
|
338
|
+
$[16] = t14;
|
|
339
|
+
$[17] = t2;
|
|
340
|
+
$[18] = t3;
|
|
341
|
+
$[19] = t4;
|
|
342
|
+
$[20] = t5;
|
|
343
|
+
$[21] = t6;
|
|
344
|
+
$[22] = t7;
|
|
345
|
+
$[23] = t8;
|
|
346
|
+
$[24] = t9;
|
|
347
|
+
} else {
|
|
348
|
+
addMeasure = $[7];
|
|
349
|
+
canAdd = $[8];
|
|
350
|
+
dispatch = $[9];
|
|
351
|
+
t0 = $[10];
|
|
352
|
+
t1 = $[11];
|
|
353
|
+
t10 = $[12];
|
|
354
|
+
t11 = $[13];
|
|
355
|
+
t12 = $[14];
|
|
356
|
+
t13 = $[15];
|
|
357
|
+
t14 = $[16];
|
|
358
|
+
t2 = $[17];
|
|
359
|
+
t3 = $[18];
|
|
360
|
+
t4 = $[19];
|
|
361
|
+
t5 = $[20];
|
|
362
|
+
t6 = $[21];
|
|
363
|
+
t7 = $[22];
|
|
364
|
+
t8 = $[23];
|
|
365
|
+
t9 = $[24];
|
|
366
|
+
}
|
|
367
|
+
let t15;
|
|
368
|
+
if ($[52] !== t0 || $[53] !== t1 || $[54] !== t2 || $[55] !== t3 || $[56] !== t4 || $[57] !== t5 || $[58] !== t6) {
|
|
369
|
+
t15 = /*#__PURE__*/_jsxs("select", {
|
|
370
|
+
className: t0,
|
|
371
|
+
"aria-label": t1,
|
|
372
|
+
value: t2,
|
|
373
|
+
onChange: t3,
|
|
374
|
+
children: [t4, t5, t6]
|
|
375
|
+
});
|
|
376
|
+
$[52] = t0;
|
|
377
|
+
$[53] = t1;
|
|
378
|
+
$[54] = t2;
|
|
379
|
+
$[55] = t3;
|
|
380
|
+
$[56] = t4;
|
|
381
|
+
$[57] = t5;
|
|
382
|
+
$[58] = t6;
|
|
383
|
+
$[59] = t15;
|
|
384
|
+
} else {
|
|
385
|
+
t15 = $[59];
|
|
386
|
+
}
|
|
387
|
+
const t16 = !canAdd;
|
|
388
|
+
let t17;
|
|
389
|
+
if ($[60] !== addMeasure || $[61] !== messages.addMeasure || $[62] !== t16) {
|
|
390
|
+
t17 = /*#__PURE__*/_jsx("button", {
|
|
391
|
+
type: "button",
|
|
392
|
+
className: "vg-button",
|
|
393
|
+
disabled: t16,
|
|
394
|
+
onClick: addMeasure,
|
|
395
|
+
children: messages.addMeasure
|
|
396
|
+
});
|
|
397
|
+
$[60] = addMeasure;
|
|
398
|
+
$[61] = messages.addMeasure;
|
|
399
|
+
$[62] = t16;
|
|
400
|
+
$[63] = t17;
|
|
401
|
+
} else {
|
|
402
|
+
t17 = $[63];
|
|
403
|
+
}
|
|
404
|
+
let t18;
|
|
405
|
+
if ($[64] !== t15 || $[65] !== t17 || $[66] !== t7 || $[67] !== t8) {
|
|
406
|
+
t18 = /*#__PURE__*/_jsxs("div", {
|
|
407
|
+
className: t7,
|
|
408
|
+
children: [t8, t15, t17]
|
|
409
|
+
});
|
|
410
|
+
$[64] = t15;
|
|
411
|
+
$[65] = t17;
|
|
412
|
+
$[66] = t7;
|
|
413
|
+
$[67] = t8;
|
|
414
|
+
$[68] = t18;
|
|
415
|
+
} else {
|
|
416
|
+
t18 = $[68];
|
|
417
|
+
}
|
|
418
|
+
let t19;
|
|
419
|
+
if ($[69] !== t10 || $[70] !== t11 || $[71] !== t12 || $[72] !== t18 || $[73] !== t9) {
|
|
420
|
+
t19 = /*#__PURE__*/_jsxs("fieldset", {
|
|
421
|
+
className: t9,
|
|
422
|
+
disabled: t10,
|
|
423
|
+
children: [t11, t12, t18]
|
|
424
|
+
});
|
|
425
|
+
$[69] = t10;
|
|
426
|
+
$[70] = t11;
|
|
427
|
+
$[71] = t12;
|
|
428
|
+
$[72] = t18;
|
|
429
|
+
$[73] = t9;
|
|
430
|
+
$[74] = t19;
|
|
431
|
+
} else {
|
|
432
|
+
t19 = $[74];
|
|
433
|
+
}
|
|
434
|
+
let t20;
|
|
435
|
+
if ($[75] !== error) {
|
|
436
|
+
t20 = error !== null && /*#__PURE__*/_jsx("p", {
|
|
437
|
+
role: "alert",
|
|
438
|
+
className: "vg-filter__error",
|
|
439
|
+
children: error
|
|
440
|
+
});
|
|
441
|
+
$[75] = error;
|
|
442
|
+
$[76] = t20;
|
|
443
|
+
} else {
|
|
444
|
+
t20 = $[76];
|
|
445
|
+
}
|
|
446
|
+
let t21;
|
|
447
|
+
if ($[77] !== dispatch || $[78] !== messages.ungroup || $[79] !== pending || $[80] !== plan?.aggregate) {
|
|
448
|
+
t21 = plan?.aggregate && /*#__PURE__*/_jsx("button", {
|
|
449
|
+
type: "button",
|
|
450
|
+
className: "vg-menu__item",
|
|
451
|
+
disabled: pending,
|
|
452
|
+
onClick: () => dispatch({
|
|
453
|
+
command: "group.clear"
|
|
454
|
+
}),
|
|
455
|
+
children: messages.ungroup
|
|
456
|
+
});
|
|
457
|
+
$[77] = dispatch;
|
|
458
|
+
$[78] = messages.ungroup;
|
|
459
|
+
$[79] = pending;
|
|
460
|
+
$[80] = plan?.aggregate;
|
|
461
|
+
$[81] = t21;
|
|
462
|
+
} else {
|
|
463
|
+
t21 = $[81];
|
|
464
|
+
}
|
|
465
|
+
let t22;
|
|
466
|
+
if ($[82] !== t13 || $[83] !== t14 || $[84] !== t19 || $[85] !== t20 || $[86] !== t21) {
|
|
467
|
+
t22 = /*#__PURE__*/_jsxs(_Fragment, {
|
|
468
|
+
children: [t13, t14, t19, t20, t21]
|
|
469
|
+
});
|
|
470
|
+
$[82] = t13;
|
|
471
|
+
$[83] = t14;
|
|
472
|
+
$[84] = t19;
|
|
473
|
+
$[85] = t20;
|
|
474
|
+
$[86] = t21;
|
|
475
|
+
$[87] = t22;
|
|
476
|
+
} else {
|
|
477
|
+
t22 = $[87];
|
|
478
|
+
}
|
|
479
|
+
return t22;
|
|
480
|
+
}
|
|
481
|
+
function _temp6(item_5) {
|
|
482
|
+
return /*#__PURE__*/_jsx("option", {
|
|
483
|
+
value: item_5.name,
|
|
484
|
+
children: item_5.name
|
|
485
|
+
}, item_5.name);
|
|
486
|
+
}
|
|
487
|
+
function _temp5(item_4) {
|
|
488
|
+
return /*#__PURE__*/_jsx("option", {
|
|
489
|
+
value: item_4.name,
|
|
490
|
+
children: item_4.name
|
|
491
|
+
}, item_4.name);
|
|
492
|
+
}
|
|
493
|
+
function _temp4(item_2) {
|
|
494
|
+
return /*#__PURE__*/_jsx("option", {
|
|
495
|
+
value: item_2.name,
|
|
496
|
+
children: item_2.name
|
|
497
|
+
}, item_2.name);
|
|
498
|
+
}
|
|
499
|
+
function _temp3(measure) {
|
|
500
|
+
return measure.name;
|
|
501
|
+
}
|
|
502
|
+
function _temp2(snapshot_0) {
|
|
503
|
+
return snapshot_0.document.plan;
|
|
504
|
+
}
|
|
505
|
+
function _temp(snapshot) {
|
|
506
|
+
return snapshot.table;
|
|
507
|
+
}
|
|
508
|
+
//# sourceMappingURL=group-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["use","useState","useTransition","MEASURES","measureTakes","measureName","offers","rowColumns","LocaleContext","useGridSelector","useGridStore","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","OFFERED","filter","fn","GroupPanel","$","_c","store","messages","table","_temp","plan","_temp2","setFn","column","setColumn","error","setError","pending","startDispatch","capabilities","addMeasure","canAdd","dispatch","t0","t1","t10","t11","t12","t13","t14","t2","t3","t4","t5","t6","t7","t8","t9","aggregate","keys","measures","rows","t15","name","columnsFor","name_0","item","target","undefined","find","item_0","t16","command","outcome","ok","message","t17","next","length","set","pivots","pivot","columns","setPivot","_pivot","rest","measures_0","Set","taken","map","_temp3","name_1","t18","groupKeys","children","t19","addKey","value","className","key","type","remove","onClick","other","onChange","event","key_0","measures_1","item_1","includes","_temp4","pivotBy","name_2","other_0","event_0","addPivot","item_3","_temp5","measure_0","measure","other_1","t20","t21","Symbol","for","event_1","t22","measureNames","name_3","t23","measureColumn","event_2","allRows","_temp6","disabled","role","ungroup","item_5","item_4","item_2","snapshot_0","snapshot","document"],"sources":["group-menu.tsx"],"sourcesContent":["import { use, useState, useTransition } from \"react\";\nimport { type Aggregate, type GridCommand, MEASURES, type MeasureName, measureTakes } from \"vastgrid-spec\";\nimport { measureName, offers, rowColumns } from \"../core/measures.js\";\nimport { LocaleContext } from \"./context.js\";\nimport { useGridSelector, useGridStore } from \"./hooks.js\";\n\n/** The measures the menu offers; `quantile` needs a `p`, which it does not ask for. */\nconst OFFERED = MEASURES.filter((fn) => fn !== \"quantile\");\n\n/**\n * The content of the toolbar's group menu, loaded when it first opens (§6.2 of the specification): the columns that the rows are grouped by and the measures of\n * each group (§4.5), each change dispatched as `group.set` with the whole aggregate, or `group.clear` when nothing is\n * left. It is there when the engine groups rows.\n */\nexport default function GroupPanel() {\n const store = useGridStore();\n const { messages } = use(LocaleContext);\n const table = useGridSelector((snapshot) => snapshot.table);\n const plan = useGridSelector((snapshot) => snapshot.document.plan);\n const [fn, setFn] = useState<MeasureName>(\"sum\");\n const [column, setColumn] = useState(\"\");\n const [error, setError] = useState<string | null>(null);\n const [pending, startDispatch] = useTransition();\n if (!table || !offers(table.capabilities, \"count\")) return null;\n\n const aggregate: Aggregate = plan?.aggregate ?? { keys: [], measures: [] };\n const rows = rowColumns(plan, table);\n const measures = OFFERED.filter((name) => offers(table.capabilities, name));\n const columnsFor = (name: MeasureName) => rows.filter((item) => measureTakes(name, item));\n const target = column === \"\" ? undefined : rows.find((item) => item.name === column);\n const canAdd = target ? measureTakes(fn, target) : fn === \"count\";\n\n const dispatch = (command: GridCommand) =>\n startDispatch(async () => {\n const outcome = await store.dispatch(command);\n setError(outcome.ok ? null : outcome.error.message);\n });\n const set = (next: Aggregate) =>\n dispatch(\n next.keys.length === 0 && next.measures.length === 0\n ? { command: \"group.clear\" }\n : { command: \"group.set\", aggregate: next },\n );\n const pivots = table.capabilities.plan?.pivot !== false;\n const pivot = aggregate.pivot?.columns ?? [];\n // A pivot makes a column per value of its columns and measure (§4.6), so it needs a measure: rows are counted.\n const setPivot = (columns: string[]) => {\n const { pivot: _pivot, ...rest } = aggregate;\n const measures =\n columns.length > 0 && rest.measures.length === 0\n ? [{ name: measureName(\"count\", undefined, new Set(rest.keys)), fn: \"count\" as const }]\n : rest.measures;\n set(columns.length > 0 ? { ...rest, measures, pivot: { columns } } : rest);\n };\n const taken = () => new Set([...aggregate.keys, ...aggregate.measures.map((measure) => measure.name)]);\n const addMeasure = () => {\n if (!canAdd) return;\n const name = measureName(fn, target?.name, taken());\n set({ ...aggregate, measures: [...aggregate.measures, { name, fn, ...(target ? { column: target.name } : {}) }] });\n };\n\n return (\n <>\n <fieldset className=\"vg-groups__part\" disabled={pending}>\n <legend>{messages.groupKeys}</legend>\n <ul className=\"vg-groups__list\">\n {aggregate.keys.map((key) => (\n <li key={key}>\n <span>{key}</span>\n <button\n type=\"button\"\n className=\"vg-button vg-button--small\"\n aria-label={messages.remove(key)}\n onClick={() => set({ ...aggregate, keys: aggregate.keys.filter((other) => other !== key) })}\n >\n ×\n </button>\n </li>\n ))}\n </ul>\n <select\n className=\"vg-input\"\n aria-label={messages.addKey}\n value=\"\"\n onChange={(event) => {\n const key = event.target.value;\n if (!key) return;\n // Rows grouped for the first time are counted.\n const measures = plan?.aggregate\n ? aggregate.measures\n : [{ name: measureName(\"count\", undefined, new Set([key])), fn: \"count\" as const }];\n set({ ...aggregate, keys: [...aggregate.keys, key], measures });\n }}\n >\n <option value=\"\">{messages.addKey}</option>\n {rows\n // Keys are the columns whose values order (§3.9), as `min` takes them.\n .filter((item) => !aggregate.keys.includes(item.name) && measureTakes(\"min\", item))\n .map((item) => (\n <option key={item.name} value={item.name}>\n {item.name}\n </option>\n ))}\n </select>\n </fieldset>\n {pivots && (\n <fieldset className=\"vg-groups__part\" disabled={pending}>\n <legend>{messages.pivotBy}</legend>\n <ul className=\"vg-groups__list\">\n {pivot.map((name) => (\n <li key={name}>\n <span>{name}</span>\n <button\n type=\"button\"\n className=\"vg-button vg-button--small\"\n aria-label={messages.remove(name)}\n onClick={() => setPivot(pivot.filter((other) => other !== name))}\n >\n ×\n </button>\n </li>\n ))}\n </ul>\n <select\n className=\"vg-input\"\n aria-label={messages.pivotBy}\n value=\"\"\n onChange={(event) => {\n if (event.target.value) setPivot([...pivot, event.target.value]);\n }}\n >\n <option value=\"\">{messages.addPivot}</option>\n {rows\n .filter(\n (item) =>\n !aggregate.keys.includes(item.name) && !pivot.includes(item.name) && measureTakes(\"min\", item),\n )\n .map((item) => (\n <option key={item.name} value={item.name}>\n {item.name}\n </option>\n ))}\n </select>\n </fieldset>\n )}\n <fieldset className=\"vg-groups__part\" disabled={pending}>\n <legend>{messages.measures}</legend>\n <ul className=\"vg-groups__list\">\n {aggregate.measures.map((measure) => (\n <li key={measure.name}>\n <span>{measure.name}</span>\n <button\n type=\"button\"\n className=\"vg-button vg-button--small\"\n aria-label={messages.remove(measure.name)}\n onClick={() =>\n set({ ...aggregate, measures: aggregate.measures.filter((other) => other.name !== measure.name) })\n }\n >\n ×\n </button>\n </li>\n ))}\n </ul>\n <div className=\"vg-groups__add\">\n <select\n className=\"vg-input\"\n aria-label={messages.measures}\n value={fn}\n onChange={(event) => setFn(event.target.value as MeasureName)}\n >\n {measures.map((name) => (\n <option key={name} value={name}>\n {messages.measureNames[name]}\n </option>\n ))}\n </select>\n <select\n className=\"vg-input\"\n aria-label={messages.measureColumn}\n value={column}\n onChange={(event) => setColumn(event.target.value)}\n >\n {fn === \"count\" && <option value=\"\">{messages.allRows}</option>}\n {fn !== \"count\" && column === \"\" && <option value=\"\">{messages.measureColumn}</option>}\n {columnsFor(fn).map((item) => (\n <option key={item.name} value={item.name}>\n {item.name}\n </option>\n ))}\n </select>\n <button type=\"button\" className=\"vg-button\" disabled={!canAdd} onClick={addMeasure}>\n {messages.addMeasure}\n </button>\n </div>\n </fieldset>\n {error !== null && (\n <p role=\"alert\" className=\"vg-filter__error\">\n {error}\n </p>\n )}\n {plan?.aggregate && (\n <button\n type=\"button\"\n className=\"vg-menu__item\"\n disabled={pending}\n onClick={() => dispatch({ command: \"group.clear\" })}\n >\n {messages.ungroup}\n </button>\n )}\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { JsonValue } from "vastgrid-spec";
|
|
2
|
+
import { type GridStore, type GridStoreOptions } from "../core/store.js";
|
|
3
|
+
import type { GridSnapshot } from "../core/types.js";
|
|
4
|
+
/** The store of the nearest `DataGrid` or `GridProvider`. */
|
|
5
|
+
export declare function useGridStore(): GridStore;
|
|
6
|
+
/** Whether two values are the same, or objects or arrays whose members are the same (`Object.is`). */
|
|
7
|
+
export declare function shallowEqual<T>(a: T, b: T): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* A part of the store's snapshot (§5.3 of react.md). The component renders again only when the selected value
|
|
10
|
+
* changes by `isEqual` (`Object.is` by default). Selectors run on every change of the store: they are cheap and
|
|
11
|
+
* make no new objects unless `isEqual` compares them (`shallowEqual`).
|
|
12
|
+
*/
|
|
13
|
+
export declare function useGridSelector<T>(selector: (snapshot: GridSnapshot) => T, isEqual?: (a: T, b: T) => boolean): T;
|
|
14
|
+
/** The store's `dispatch`: the same function on every render. */
|
|
15
|
+
export declare function useGridDispatch(): GridStore["dispatch"];
|
|
16
|
+
/** A store for the life of the component: made once from the first options, connected while it is mounted. */
|
|
17
|
+
export declare function useCreateGridStore(options: GridStoreOptions): GridStore;
|
|
18
|
+
/**
|
|
19
|
+
* Values of rows `[start, end)` of the view on screen, for cells that React renders (a detail panel, an overlay):
|
|
20
|
+
* one array per row, with undefined for values not read yet. Reads them when they are missing, and renders again
|
|
21
|
+
* when rows arrive.
|
|
22
|
+
*/
|
|
23
|
+
export declare function useGridRows(range: {
|
|
24
|
+
start: number;
|
|
25
|
+
end: number;
|
|
26
|
+
columns: readonly string[];
|
|
27
|
+
}): (JsonValue | undefined)[][];
|
|
28
|
+
/**
|
|
29
|
+
* Reads rows of the store's cache. The cache changes inside the store, so the version of its rows is an argument:
|
|
30
|
+
* memoization (React Compiler's included) reads them again when it changes.
|
|
31
|
+
*/
|
|
32
|
+
export declare function readRows(store: GridStore, _version: number, start: number, end: number, columns: readonly string[]): (JsonValue | undefined)[][];
|
|
33
|
+
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/react/hooks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,6DAA6D;AAC7D,wBAAgB,YAAY,IAAI,SAAS,CAIxC;AAED,sGAAsG;AACtG,wBAAgB,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,OAAO,CAUnD;AAkBD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,QAAQ,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,CAAC,EACvC,OAAO,GAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,OAAmB,GAC3C,CAAC,CAKH;AAED,iEAAiE;AACjE,wBAAgB,eAAe,IAAI,SAAS,CAAC,UAAU,CAAC,CAEvD;AAED,8GAA8G;AAC9G,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAIvE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,EAAE,CAS9B;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,SAAS,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,SAAS,MAAM,EAAE,GACzB,CAAC,SAAS,GAAG,SAAS,CAAC,EAAE,EAAE,CAI7B"}
|