vastgrid 0.1.1 → 0.2.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.
Files changed (312) hide show
  1. package/README.md +175 -13
  2. package/dist/canvas/geometry.d.ts +92 -0
  3. package/dist/canvas/geometry.d.ts.map +1 -0
  4. package/dist/canvas/geometry.js +197 -0
  5. package/dist/canvas/geometry.js.map +1 -0
  6. package/dist/canvas/grid-canvas.d.ts +161 -0
  7. package/dist/canvas/grid-canvas.d.ts.map +1 -0
  8. package/dist/canvas/grid-canvas.js +1146 -0
  9. package/dist/canvas/grid-canvas.js.map +1 -0
  10. package/dist/canvas/hooks.d.ts +61 -0
  11. package/dist/canvas/hooks.d.ts.map +1 -0
  12. package/dist/canvas/hooks.js +2 -0
  13. package/dist/canvas/hooks.js.map +1 -0
  14. package/dist/canvas/keys.d.ts +26 -0
  15. package/dist/canvas/keys.d.ts.map +1 -0
  16. package/dist/canvas/keys.js +133 -0
  17. package/dist/canvas/keys.js.map +1 -0
  18. package/dist/canvas/layout.d.ts +26 -0
  19. package/dist/canvas/layout.d.ts.map +1 -0
  20. package/dist/canvas/layout.js +73 -0
  21. package/dist/canvas/layout.js.map +1 -0
  22. package/dist/canvas/scroll.d.ts +31 -0
  23. package/dist/canvas/scroll.d.ts.map +1 -0
  24. package/dist/canvas/scroll.js +111 -0
  25. package/dist/canvas/scroll.js.map +1 -0
  26. package/dist/canvas/text.d.ts +23 -0
  27. package/dist/canvas/text.d.ts.map +1 -0
  28. package/dist/canvas/text.js +142 -0
  29. package/dist/canvas/text.js.map +1 -0
  30. package/dist/{theme.d.ts → canvas/theme.d.ts} +8 -0
  31. package/dist/canvas/theme.d.ts.map +1 -0
  32. package/dist/canvas/theme.js +62 -0
  33. package/dist/canvas/theme.js.map +1 -0
  34. package/dist/core/cache.d.ts +48 -0
  35. package/dist/core/cache.d.ts.map +1 -0
  36. package/dist/core/cache.js +222 -0
  37. package/dist/core/cache.js.map +1 -0
  38. package/dist/core/checked.d.ts +20 -0
  39. package/dist/core/checked.d.ts.map +1 -0
  40. package/dist/core/checked.js +61 -0
  41. package/dist/core/checked.js.map +1 -0
  42. package/dist/core/client.d.ts +33 -0
  43. package/dist/core/client.d.ts.map +1 -0
  44. package/dist/core/client.js +103 -0
  45. package/dist/core/client.js.map +1 -0
  46. package/dist/core/conditions.d.ts +48 -0
  47. package/dist/core/conditions.d.ts.map +1 -0
  48. package/dist/core/conditions.js +105 -0
  49. package/dist/core/conditions.js.map +1 -0
  50. package/dist/core/evaluate.d.ts +20 -0
  51. package/dist/core/evaluate.d.ts.map +1 -0
  52. package/dist/core/evaluate.js +210 -0
  53. package/dist/core/evaluate.js.map +1 -0
  54. package/dist/core/filters.d.ts +51 -0
  55. package/dist/core/filters.d.ts.map +1 -0
  56. package/dist/core/filters.js +303 -0
  57. package/dist/core/filters.js.map +1 -0
  58. package/dist/core/format.d.ts +14 -0
  59. package/dist/core/format.d.ts.map +1 -0
  60. package/dist/core/format.js +303 -0
  61. package/dist/core/format.js.map +1 -0
  62. package/dist/core/measures.d.ts +26 -0
  63. package/dist/core/measures.d.ts.map +1 -0
  64. package/dist/core/measures.js +105 -0
  65. package/dist/core/measures.js.map +1 -0
  66. package/dist/core/request-ids.d.ts +20 -0
  67. package/dist/core/request-ids.d.ts.map +1 -0
  68. package/dist/core/request-ids.js +55 -0
  69. package/dist/core/request-ids.js.map +1 -0
  70. package/dist/core/rows.d.ts +79 -0
  71. package/dist/core/rows.d.ts.map +1 -0
  72. package/dist/core/rows.js +173 -0
  73. package/dist/core/rows.js.map +1 -0
  74. package/dist/core/store.d.ts +233 -0
  75. package/dist/core/store.d.ts.map +1 -0
  76. package/dist/core/store.js +1162 -0
  77. package/dist/core/store.js.map +1 -0
  78. package/dist/core/totals.d.ts +24 -0
  79. package/dist/core/totals.d.ts.map +1 -0
  80. package/dist/core/totals.js +49 -0
  81. package/dist/core/totals.js.map +1 -0
  82. package/dist/core/trace.d.ts +7 -0
  83. package/dist/core/trace.d.ts.map +1 -0
  84. package/dist/core/trace.js +26 -0
  85. package/dist/core/trace.js.map +1 -0
  86. package/dist/core/transports.d.ts +50 -0
  87. package/dist/core/transports.d.ts.map +1 -0
  88. package/dist/core/transports.js +160 -0
  89. package/dist/core/transports.js.map +1 -0
  90. package/dist/core/types.d.ts +151 -0
  91. package/dist/core/types.d.ts.map +1 -0
  92. package/dist/core/types.js +45 -0
  93. package/dist/core/types.js.map +1 -0
  94. package/dist/core.d.ts +12 -0
  95. package/dist/core.d.ts.map +1 -0
  96. package/dist/core.js +11 -0
  97. package/dist/core.js.map +1 -0
  98. package/dist/index.d.ts +15 -6
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +13 -7
  101. package/dist/index.js.map +1 -1
  102. package/dist/react/accessible-rows.d.ts +13 -0
  103. package/dist/react/accessible-rows.d.ts.map +1 -0
  104. package/dist/react/accessible-rows.js +320 -0
  105. package/dist/react/accessible-rows.js.map +1 -0
  106. package/dist/react/cell-editor.d.ts +22 -0
  107. package/dist/react/cell-editor.d.ts.map +1 -0
  108. package/dist/react/cell-editor.js +431 -0
  109. package/dist/react/cell-editor.js.map +1 -0
  110. package/dist/react/cell-menu.d.ts +18 -0
  111. package/dist/react/cell-menu.d.ts.map +1 -0
  112. package/dist/react/cell-menu.js +299 -0
  113. package/dist/react/cell-menu.js.map +1 -0
  114. package/dist/react/column-menu.d.ts +16 -0
  115. package/dist/react/column-menu.d.ts.map +1 -0
  116. package/dist/react/column-menu.js +1311 -0
  117. package/dist/react/column-menu.js.map +1 -0
  118. package/dist/react/columns-menu.d.ts +7 -0
  119. package/dist/react/columns-menu.d.ts.map +1 -0
  120. package/dist/react/columns-menu.js +249 -0
  121. package/dist/react/columns-menu.js.map +1 -0
  122. package/dist/react/conditions-menu.d.ts +10 -0
  123. package/dist/react/conditions-menu.d.ts.map +1 -0
  124. package/dist/react/conditions-menu.js +795 -0
  125. package/dist/react/conditions-menu.js.map +1 -0
  126. package/dist/react/context.d.ts +29 -0
  127. package/dist/react/context.d.ts.map +1 -0
  128. package/dist/react/context.js +18 -0
  129. package/dist/react/context.js.map +1 -0
  130. package/dist/react/data-grid.d.ts +79 -0
  131. package/dist/react/data-grid.d.ts.map +1 -0
  132. package/dist/react/data-grid.js +653 -0
  133. package/dist/react/data-grid.js.map +1 -0
  134. package/dist/react/detail-panel.d.ts +22 -0
  135. package/dist/react/detail-panel.d.ts.map +1 -0
  136. package/dist/react/detail-panel.js +242 -0
  137. package/dist/react/detail-panel.js.map +1 -0
  138. package/dist/react/export-menu.d.ts +11 -0
  139. package/dist/react/export-menu.d.ts.map +1 -0
  140. package/dist/react/export-menu.js +304 -0
  141. package/dist/react/export-menu.js.map +1 -0
  142. package/dist/react/find-bar.d.ts +11 -0
  143. package/dist/react/find-bar.d.ts.map +1 -0
  144. package/dist/react/find-bar.js +303 -0
  145. package/dist/react/find-bar.js.map +1 -0
  146. package/dist/react/format-form.d.ts +12 -0
  147. package/dist/react/format-form.d.ts.map +1 -0
  148. package/dist/react/format-form.js +863 -0
  149. package/dist/react/format-form.js.map +1 -0
  150. package/dist/react/formula-menu.d.ts +6 -0
  151. package/dist/react/formula-menu.d.ts.map +1 -0
  152. package/dist/react/formula-menu.js +343 -0
  153. package/dist/react/formula-menu.js.map +1 -0
  154. package/dist/react/grid-body.d.ts +33 -0
  155. package/dist/react/grid-body.d.ts.map +1 -0
  156. package/dist/react/grid-body.js +1389 -0
  157. package/dist/react/grid-body.js.map +1 -0
  158. package/dist/react/group-menu.d.ts +7 -0
  159. package/dist/react/group-menu.d.ts.map +1 -0
  160. package/dist/react/group-menu.js +508 -0
  161. package/dist/react/group-menu.js.map +1 -0
  162. package/dist/react/hooks.d.ts +33 -0
  163. package/dist/react/hooks.d.ts.map +1 -0
  164. package/dist/react/hooks.js +161 -0
  165. package/dist/react/hooks.js.map +1 -0
  166. package/dist/react/messages.d.ts +180 -0
  167. package/dist/react/messages.d.ts.map +1 -0
  168. package/dist/react/messages.js +414 -0
  169. package/dist/react/messages.js.map +1 -0
  170. package/dist/react/save.d.ts +9 -0
  171. package/dist/react/save.d.ts.map +1 -0
  172. package/dist/react/save.js +102 -0
  173. package/dist/react/save.js.map +1 -0
  174. package/dist/react/static-rows.d.ts +9 -0
  175. package/dist/react/static-rows.d.ts.map +1 -0
  176. package/dist/react/static-rows.js +176 -0
  177. package/dist/react/static-rows.js.map +1 -0
  178. package/dist/react/status-bar.d.ts +12 -0
  179. package/dist/react/status-bar.d.ts.map +1 -0
  180. package/dist/react/status-bar.js +413 -0
  181. package/dist/react/status-bar.js.map +1 -0
  182. package/dist/react/toolbar-popover.d.ts +14 -0
  183. package/dist/react/toolbar-popover.d.ts.map +1 -0
  184. package/dist/react/toolbar-popover.js +143 -0
  185. package/dist/react/toolbar-popover.js.map +1 -0
  186. package/dist/react/toolbar.d.ts +13 -0
  187. package/dist/react/toolbar.d.ts.map +1 -0
  188. package/dist/react/toolbar.js +344 -0
  189. package/dist/react/toolbar.js.map +1 -0
  190. package/dist/server.d.ts +22 -0
  191. package/dist/server.d.ts.map +1 -0
  192. package/dist/server.js +45 -0
  193. package/dist/server.js.map +1 -0
  194. package/dist/styles.css +496 -316
  195. package/package.json +42 -17
  196. package/src/canvas/geometry.ts +197 -0
  197. package/src/canvas/grid-canvas.ts +1222 -0
  198. package/src/canvas/hooks.ts +61 -0
  199. package/src/canvas/keys.ts +96 -0
  200. package/src/canvas/layout.ts +77 -0
  201. package/src/canvas/scroll.ts +120 -0
  202. package/src/canvas/text.ts +155 -0
  203. package/src/{theme.ts → canvas/theme.ts} +14 -1
  204. package/src/core/cache.ts +247 -0
  205. package/src/core/checked.ts +64 -0
  206. package/src/core/client.ts +103 -0
  207. package/src/core/conditions.ts +89 -0
  208. package/src/core/evaluate.ts +221 -0
  209. package/src/core/filters.ts +268 -0
  210. package/src/core/format.ts +309 -0
  211. package/src/core/measures.ts +99 -0
  212. package/src/core/request-ids.ts +54 -0
  213. package/src/core/rows.ts +213 -0
  214. package/src/core/store.ts +1122 -0
  215. package/src/core/totals.ts +59 -0
  216. package/src/core/trace.ts +44 -0
  217. package/src/core/transports.ts +177 -0
  218. package/src/core/types.ts +169 -0
  219. package/src/core.ts +39 -0
  220. package/src/index.ts +24 -12
  221. package/src/react/accessible-rows.tsx +242 -0
  222. package/src/react/cell-editor.tsx +216 -0
  223. package/src/react/cell-menu.tsx +166 -0
  224. package/src/react/column-menu.tsx +619 -0
  225. package/src/react/columns-menu.tsx +116 -0
  226. package/src/react/conditions-menu.tsx +289 -0
  227. package/src/react/context.ts +33 -0
  228. package/src/react/data-grid.tsx +286 -0
  229. package/src/react/detail-panel.tsx +92 -0
  230. package/src/react/export-menu.tsx +112 -0
  231. package/src/react/find-bar.tsx +112 -0
  232. package/src/react/format-form.tsx +421 -0
  233. package/src/react/formula-menu.tsx +163 -0
  234. package/src/react/grid-body.tsx +744 -0
  235. package/src/react/group-menu.tsx +214 -0
  236. package/src/react/hooks.ts +104 -0
  237. package/src/react/messages.ts +556 -0
  238. package/src/react/save.ts +42 -0
  239. package/src/react/static-rows.tsx +59 -0
  240. package/src/react/status-bar.tsx +175 -0
  241. package/src/react/toolbar-popover.tsx +69 -0
  242. package/src/react/toolbar.tsx +152 -0
  243. package/src/server.ts +58 -0
  244. package/src/styles.css +496 -316
  245. package/dist/components/bars.d.ts +0 -14
  246. package/dist/components/bars.d.ts.map +0 -1
  247. package/dist/components/bars.js +0 -68
  248. package/dist/components/bars.js.map +0 -1
  249. package/dist/components/cell-inspector.d.ts +0 -11
  250. package/dist/components/cell-inspector.d.ts.map +0 -1
  251. package/dist/components/cell-inspector.js +0 -37
  252. package/dist/components/cell-inspector.js.map +0 -1
  253. package/dist/components/columns-panel.d.ts +0 -12
  254. package/dist/components/columns-panel.d.ts.map +0 -1
  255. package/dist/components/columns-panel.js +0 -11
  256. package/dist/components/columns-panel.js.map +0 -1
  257. package/dist/components/filter-panel.d.ts +0 -22
  258. package/dist/components/filter-panel.d.ts.map +0 -1
  259. package/dist/components/filter-panel.js +0 -169
  260. package/dist/components/filter-panel.js.map +0 -1
  261. package/dist/components/find-bar.d.ts +0 -9
  262. package/dist/components/find-bar.d.ts.map +0 -1
  263. package/dist/components/find-bar.js +0 -46
  264. package/dist/components/find-bar.js.map +0 -1
  265. package/dist/components/popover.d.ts +0 -38
  266. package/dist/components/popover.d.ts.map +0 -1
  267. package/dist/components/popover.js +0 -104
  268. package/dist/components/popover.js.map +0 -1
  269. package/dist/components/stats-panel.d.ts +0 -12
  270. package/dist/components/stats-panel.d.ts.map +0 -1
  271. package/dist/components/stats-panel.js +0 -40
  272. package/dist/components/stats-panel.js.map +0 -1
  273. package/dist/controller.d.ts +0 -227
  274. package/dist/controller.d.ts.map +0 -1
  275. package/dist/controller.js +0 -845
  276. package/dist/controller.js.map +0 -1
  277. package/dist/data-grid.d.ts +0 -51
  278. package/dist/data-grid.d.ts.map +0 -1
  279. package/dist/data-grid.js +0 -704
  280. package/dist/data-grid.js.map +0 -1
  281. package/dist/labels.d.ts +0 -9
  282. package/dist/labels.d.ts.map +0 -1
  283. package/dist/labels.js +0 -38
  284. package/dist/labels.js.map +0 -1
  285. package/dist/messages.d.ts +0 -99
  286. package/dist/messages.d.ts.map +0 -1
  287. package/dist/messages.js +0 -276
  288. package/dist/messages.js.map +0 -1
  289. package/dist/renderer.d.ts +0 -52
  290. package/dist/renderer.d.ts.map +0 -1
  291. package/dist/renderer.js +0 -522
  292. package/dist/renderer.js.map +0 -1
  293. package/dist/text.d.ts +0 -14
  294. package/dist/text.d.ts.map +0 -1
  295. package/dist/text.js +0 -63
  296. package/dist/text.js.map +0 -1
  297. package/dist/theme.d.ts.map +0 -1
  298. package/dist/theme.js +0 -54
  299. package/dist/theme.js.map +0 -1
  300. package/src/components/bars.tsx +0 -180
  301. package/src/components/cell-inspector.tsx +0 -70
  302. package/src/components/columns-panel.tsx +0 -59
  303. package/src/components/filter-panel.tsx +0 -293
  304. package/src/components/find-bar.tsx +0 -104
  305. package/src/components/popover.tsx +0 -194
  306. package/src/components/stats-panel.tsx +0 -153
  307. package/src/controller.ts +0 -945
  308. package/src/data-grid.tsx +0 -1035
  309. package/src/labels.ts +0 -46
  310. package/src/messages.ts +0 -390
  311. package/src/renderer.ts +0 -535
  312. package/src/text.ts +0 -55
@@ -1,104 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useLayoutEffect, useRef, useState, } from "react";
3
- /**
4
- * A panel positioned inside the grid's root. Closes on Escape and on pointer presses outside, and
5
- * returns focus to `returnFocus` when it closes.
6
- */
7
- export function Popover({ anchor, container, onClose, returnFocus, label, role = "dialog", className, children, initialFocus = true, }) {
8
- const ref = useRef(null);
9
- const [position, setPosition] = useState(null);
10
- const close = useRef(onClose);
11
- close.current = onClose;
12
- useLayoutEffect(() => {
13
- const element = ref.current;
14
- const root = container.current;
15
- if (!element || !root)
16
- return;
17
- const width = element.offsetWidth;
18
- const height = element.offsetHeight;
19
- const maxLeft = Math.max(4, root.clientWidth - width - 4);
20
- const below = anchor.y + (anchor.height ?? 0) + 2;
21
- const above = anchor.y - height - 2;
22
- const top = below + height <= root.clientHeight - 4 || above < 4 ? below : above;
23
- setPosition({ left: Math.min(Math.max(4, anchor.x), maxLeft), top: Math.max(4, top) });
24
- }, [anchor, container]);
25
- useEffect(() => {
26
- if (initialFocus) {
27
- const target = ref.current?.querySelector("[data-autofocus], input, button, [tabindex='0'], [role='menuitem']");
28
- target?.focus({ preventScroll: true });
29
- }
30
- const returnTo = returnFocus?.current;
31
- const element = ref.current;
32
- function onPointerDown(event) {
33
- if (element && !element.contains(event.target))
34
- close.current();
35
- }
36
- document.addEventListener("pointerdown", onPointerDown, true);
37
- return () => {
38
- document.removeEventListener("pointerdown", onPointerDown, true);
39
- // Return focus when it was inside the panel (it falls back to the body when the panel is removed),
40
- // but not when the user moved it elsewhere, for example by clicking outside.
41
- const active = document.activeElement;
42
- if (returnTo && (!active || active === document.body || element?.contains(active))) {
43
- returnTo.focus({ preventScroll: true });
44
- }
45
- };
46
- }, [initialFocus, returnFocus]);
47
- function onKeyDown(event) {
48
- if (event.key === "Escape") {
49
- event.preventDefault();
50
- event.stopPropagation();
51
- returnFocus?.current?.focus({ preventScroll: true });
52
- onClose();
53
- }
54
- }
55
- const props = {
56
- ref,
57
- className: `vg-popover${className ? ` ${className}` : ""}`,
58
- "aria-label": label,
59
- // The first render uses the anchor; the layout effect corrects the position before the browser paints.
60
- // (A hidden first render would make the panel unfocusable when the focus effect runs.)
61
- style: position ? { left: position.left, top: position.top } : { left: anchor.x, top: anchor.y },
62
- onKeyDown,
63
- };
64
- return role === "menu" ? (_jsx("div", { role: "menu", ...props, children: children })) : (_jsx("div", { role: "dialog", ...props, children: children }));
65
- }
66
- /** A menu list with arrow-key navigation. Selecting an item closes the menu. */
67
- export function MenuList({ items, onClose }) {
68
- const ref = useRef(null);
69
- function move(event, step) {
70
- const buttons = [...(ref.current?.querySelectorAll("[role^='menuitem']:not(:disabled)") ?? [])];
71
- if (buttons.length === 0)
72
- return;
73
- event.preventDefault();
74
- const index = buttons.indexOf(document.activeElement);
75
- const next = step === Number.POSITIVE_INFINITY
76
- ? buttons.length - 1
77
- : step === Number.NEGATIVE_INFINITY
78
- ? 0
79
- : (index + step + buttons.length) % buttons.length;
80
- buttons[next]?.focus();
81
- }
82
- function onKeyDown(event) {
83
- if (event.key === "ArrowDown")
84
- move(event, 1);
85
- else if (event.key === "ArrowUp")
86
- move(event, -1);
87
- else if (event.key === "Home")
88
- move(event, Number.NEGATIVE_INFINITY);
89
- else if (event.key === "End")
90
- move(event, Number.POSITIVE_INFINITY);
91
- else if (event.key === "Tab") {
92
- event.preventDefault();
93
- onClose();
94
- }
95
- }
96
- return (_jsx("div", { ref: ref, className: "vg-menu", onKeyDown: onKeyDown, children: items.map((item) => (_jsxs("div", { children: [item.separator && _jsx("hr", { className: "vg-menu__separator" }), item.checked === undefined ? (_jsxs("button", { type: "button", role: "menuitem", className: "vg-menu__item", disabled: item.disabled, onClick: () => {
97
- onClose();
98
- item.onSelect();
99
- }, children: [_jsx("span", { children: item.label }), item.shortcut && _jsx("kbd", { children: item.shortcut })] })) : (_jsxs("button", { type: "button", role: "menuitemcheckbox", "aria-checked": item.checked, className: "vg-menu__item", disabled: item.disabled, onClick: () => {
100
- onClose();
101
- item.onSelect();
102
- }, children: [_jsx("span", { children: item.label }), item.shortcut && _jsx("kbd", { children: item.shortcut })] }))] }, item.label))) }));
103
- }
104
- //# sourceMappingURL=popover.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"popover.js","sourceRoot":"","sources":["../../src/components/popover.tsx"],"names":[],"mappings":";AAAA,OAAO,EAIL,SAAS,EACT,eAAe,EACf,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AAUf;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,EACtB,MAAM,EACN,SAAS,EACT,OAAO,EACP,WAAW,EACX,KAAK,EACL,IAAI,GAAG,QAAQ,EACf,SAAS,EACT,QAAQ,EACR,YAAY,GAAG,IAAI,GAWpB;IACC,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAuC,IAAI,CAAC,CAAC;IACrF,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC9B,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IAExB,eAAe,CAAC,GAAG,EAAE;QACnB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI;YAAE,OAAO;QAC9B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC;QAClC,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;QACpC,MAAM,GAAG,GAAG,KAAK,GAAG,MAAM,IAAI,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC;QACjF,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAExB,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,aAAa,CACvC,oEAAoE,CACrE,CAAC;YACF,MAAM,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,QAAQ,GAAG,WAAW,EAAE,OAAO,CAAC;QACtC,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC5B,SAAS,aAAa,CAAC,KAAmB;YACxC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAc,CAAC;gBAAE,KAAK,CAAC,OAAO,EAAE,CAAC;QAC1E,CAAC;QACD,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;QAC9D,OAAO,GAAG,EAAE;YACV,QAAQ,CAAC,mBAAmB,CAAC,aAAa,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;YACjE,mGAAmG;YACnG,6EAA6E;YAC7E,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC;YACtC,IAAI,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,IAAI,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBACnF,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IAEhC,SAAS,SAAS,CAAC,KAAoB;QACrC,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC3B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,GAAG;QACH,SAAS,EAAE,aAAa,SAAS,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;QAC1D,YAAY,EAAE,KAAK;QACnB,uGAAuG;QACvG,uFAAuF;QACvF,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE;QAChG,SAAS;KACV,CAAC;IACF,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CACvB,cAAK,IAAI,EAAC,MAAM,KAAK,KAAK,YACvB,QAAQ,GACL,CACP,CAAC,CAAC,CAAC,CACF,cAAK,IAAI,EAAC,QAAQ,KAAK,KAAK,YACzB,QAAQ,GACL,CACP,CAAC;AACJ,CAAC;AAYD,gFAAgF;AAChF,MAAM,UAAU,QAAQ,CAAC,EAAE,KAAK,EAAE,OAAO,EAA8C;IACrF,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAEzC,SAAS,IAAI,CAAC,KAAoB,EAAE,IAAY;QAC9C,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,gBAAgB,CAAoB,mCAAmC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACnH,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QACjC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,aAAkC,CAAC,CAAC;QAC3E,MAAM,IAAI,GACR,IAAI,KAAK,MAAM,CAAC,iBAAiB;YAC/B,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,iBAAiB;gBACjC,CAAC,CAAC,CAAC;gBACH,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,SAAS,SAAS,CAAC,KAAoB;QACrC,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACzC,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;aAC7C,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM;YAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;aAChE,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK;YAAE,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;aAC/D,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC;YAC7B,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;IAED,OAAO,CAEL,cAAK,GAAG,EAAE,GAAG,EAAE,SAAS,EAAC,SAAS,EAAC,SAAS,EAAE,SAAS,YACpD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,0BACG,IAAI,CAAC,SAAS,IAAI,aAAI,SAAS,EAAC,oBAAoB,GAAG,EACvD,IAAI,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CAC5B,kBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,SAAS,EAAC,eAAe,EACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,GAAG,EAAE;wBACZ,OAAO,EAAE,CAAC;wBACV,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,aAED,yBAAO,IAAI,CAAC,KAAK,GAAQ,EACxB,IAAI,CAAC,QAAQ,IAAI,wBAAM,IAAI,CAAC,QAAQ,GAAO,IACrC,CACV,CAAC,CAAC,CAAC,CACF,kBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,kBAAkB,kBACT,IAAI,CAAC,OAAO,EAC1B,SAAS,EAAC,eAAe,EACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,OAAO,EAAE,GAAG,EAAE;wBACZ,OAAO,EAAE,CAAC;wBACV,IAAI,CAAC,QAAQ,EAAE,CAAC;oBAClB,CAAC,aAED,yBAAO,IAAI,CAAC,KAAK,GAAQ,EACxB,IAAI,CAAC,QAAQ,IAAI,wBAAM,IAAI,CAAC,QAAQ,GAAO,IACrC,CACV,KA/BO,IAAI,CAAC,KAAK,CAgCd,CACP,CAAC,GACE,CACP,CAAC;AACJ,CAAC"}
@@ -1,12 +0,0 @@
1
- import { type ColumnSchema, type ColumnStats, type ValueFormatter } from "vastgrid-core";
2
- import type { Messages } from "../messages.js";
3
- /** Statistics of one column: counts, range, distribution and the most common values. */
4
- export declare function StatsPanel({ schema, messages, formatter, count, number, load, }: {
5
- schema: ColumnSchema;
6
- messages: Messages;
7
- formatter: ValueFormatter;
8
- count: (value: number) => string;
9
- number: (value: number) => string;
10
- load: (signal: AbortSignal) => Promise<ColumnStats> | null;
11
- }): import("react").JSX.Element;
12
- //# sourceMappingURL=stats-panel.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stats-panel.d.ts","sourceRoot":"","sources":["../../src/components/stats-panel.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAgC,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACvH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAS/C,wFAAwF;AACxF,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,IAAI,GACL,EAAE;IACD,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,cAAc,CAAC;IAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IACjC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;IAClC,IAAI,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;CAC5D,+BA8HA"}
@@ -1,40 +0,0 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useEffect, useState } from "react";
3
- import { isAbortError, isTemporalType } from "vastgrid-core";
4
- function temporalLabel(seconds, type) {
5
- const date = new Date(seconds * 1000);
6
- if (Number.isNaN(date.getTime()))
7
- return String(seconds);
8
- const iso = date.toISOString();
9
- return type === "date" ? iso.slice(0, 10) : iso.slice(0, 16).replace("T", " ");
10
- }
11
- /** Statistics of one column: counts, range, distribution and the most common values. */
12
- export function StatsPanel({ schema, messages, formatter, count, number, load, }) {
13
- const [stats, setStats] = useState(null);
14
- const [error, setError] = useState(null);
15
- useEffect(() => {
16
- const controller = new AbortController();
17
- load(controller.signal)
18
- ?.then((result) => {
19
- if (!controller.signal.aborted)
20
- setStats(result);
21
- })
22
- .catch((cause) => {
23
- if (controller.signal.aborted || isAbortError(cause))
24
- return;
25
- setError(cause instanceof Error ? cause.message : String(cause));
26
- });
27
- return () => controller.abort();
28
- }, [load]);
29
- const s = messages.stats;
30
- const value = (item) => item === undefined || item === null ? "—" : formatter.format(item, schema.type);
31
- const percent = (part, whole) => whole === 0 ? "0%" : `${((part / whole) * 100).toFixed(part === 0 || part === whole ? 0 : 1)}%`;
32
- const histogram = stats?.histogram ?? null;
33
- const peak = histogram ? Math.max(1, ...histogram.map((bin) => bin.count)) : 1;
34
- const topPeak = stats?.top?.length ? Math.max(1, ...stats.top.map((item) => item.count)) : 1;
35
- const edge = (point) => (isTemporalType(schema.type) ? temporalLabel(point, schema.type) : number(point));
36
- return (_jsxs("div", { className: "vg-stats", children: [_jsxs("p", { className: "vg-panel__title", children: [schema.name, _jsxs("span", { className: "vg-panel__muted", children: [" ", "\u00B7 ", messages.types[schema.type] ?? schema.type, schema.sourceType ? ` (${schema.sourceType})` : ""] })] }), error && _jsx("p", { className: "vg-panel__error", children: error }), !stats && !error && _jsx("p", { className: "vg-panel__muted", children: messages.loading }), stats && (_jsxs(_Fragment, { children: [_jsxs("dl", { className: "vg-stats__list", children: [_jsx("dt", { children: s.rows }), _jsx("dd", { children: count(stats.rows) }), _jsx("dt", { children: s.nulls }), _jsxs("dd", { children: [count(stats.nulls), " (", percent(stats.nulls, stats.rows), ")"] }), _jsx("dt", { children: s.distinct }), _jsx("dd", { children: stats.distinct === null ? "—" : `${stats.distinctApproximate ? "≈ " : ""}${count(stats.distinct)}` }), _jsx("dt", { children: s.min }), _jsx("dd", { children: value(stats.min) }), _jsx("dt", { children: s.max }), _jsx("dd", { children: value(stats.max) }), stats.mean !== undefined && stats.mean !== null && !isTemporalType(schema.type) && (_jsxs(_Fragment, { children: [_jsx("dt", { children: s.mean }), _jsx("dd", { children: number(stats.mean) })] })), stats.stddev !== undefined && stats.stddev !== null && !isTemporalType(schema.type) && (_jsxs(_Fragment, { children: [_jsx("dt", { children: s.stddev }), _jsx("dd", { children: number(stats.stddev) })] })), stats.quantiles && (_jsxs(_Fragment, { children: [_jsx("dt", { children: s.quartiles }), _jsx("dd", { children: stats.quantiles.map((item) => (typeof item === "number" ? number(item) : value(item))).join(" / ") })] })), stats.minLength !== undefined && stats.minLength !== null && (_jsxs(_Fragment, { children: [_jsx("dt", { children: s.length }), _jsxs("dd", { children: [count(stats.minLength), " \u2013 ", count(stats.maxLength ?? stats.minLength)] })] }))] }), histogram && histogram.length > 1 && (_jsxs("figure", { className: "vg-stats__histogram", children: [_jsx("figcaption", { children: s.histogram }), _jsx("div", { className: "vg-stats__bars", children: histogram.map((bin) => (_jsx("span", { className: "vg-stats__bar", style: { height: `${Math.max(bin.count > 0 ? 3 : 0, (bin.count / peak) * 100)}%` }, title: `${edge(bin.start)} – ${edge(bin.end)}: ${count(bin.count)}` }, bin.start))) }), _jsxs("div", { className: "vg-stats__axis", children: [_jsx("span", { children: edge(histogram[0].start) }), _jsx("span", { children: edge(histogram[histogram.length - 1].end) })] })] })), stats.top && stats.top.length > 0 && (_jsxs("figure", { className: "vg-stats__top", children: [_jsx("figcaption", { children: s.top }), _jsx("ul", { children: stats.top.map((item) => (_jsxs("li", { children: [_jsx("span", { className: "vg-stats__top-bar", style: { width: `${(item.count / topPeak) * 100}%` } }), _jsx("span", { className: "vg-stats__top-label", children: item.value === null || item.value === ""
37
- ? messages.blank
38
- : formatter.format(item.value, schema.type) }), _jsx("span", { className: "vg-stats__top-count", children: count(item.count) })] }, `${typeof item.value}:${String(item.value)}`))) })] }))] }))] }));
39
- }
40
- //# sourceMappingURL=stats-panel.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"stats-panel.js","sourceRoot":"","sources":["../../src/components/stats-panel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,EAAuC,YAAY,EAAE,cAAc,EAAuB,MAAM,eAAe,CAAC;AAGvH,SAAS,aAAa,CAAC,OAAe,EAAE,IAA0B;IAChE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC/B,OAAO,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AACjF,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,UAAU,CAAC,EACzB,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,MAAM,EACN,IAAI,GAQL;IACC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAqB,IAAI,CAAC,CAAC;IAC7D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACrB,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO;gBAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnD,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACxB,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,CAAC,KAAK,CAAC;gBAAE,OAAO;YAC7D,QAAQ,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QACL,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IAEX,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC;IACzB,MAAM,KAAK,GAAG,CAAC,IAAwB,EAAE,EAAE,CACzC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,KAAa,EAAE,EAAE,CAC9C,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAClG,MAAM,SAAS,GAAG,KAAK,EAAE,SAAS,IAAI,IAAI,CAAC;IAC3C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,MAAM,OAAO,GAAG,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAElH,OAAO,CACL,eAAK,SAAS,EAAC,UAAU,aACvB,aAAG,SAAS,EAAC,iBAAiB,aAC3B,MAAM,CAAC,IAAI,EACZ,gBAAM,SAAS,EAAC,iBAAiB,aAC9B,GAAG,aACD,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,EAC5C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,IAC9C,IACL,EACH,KAAK,IAAI,YAAG,SAAS,EAAC,iBAAiB,YAAE,KAAK,GAAK,EACnD,CAAC,KAAK,IAAI,CAAC,KAAK,IAAI,YAAG,SAAS,EAAC,iBAAiB,YAAE,QAAQ,CAAC,OAAO,GAAK,EACzE,KAAK,IAAI,CACR,8BACE,cAAI,SAAS,EAAC,gBAAgB,aAC5B,uBAAK,CAAC,CAAC,IAAI,GAAM,EACjB,uBAAK,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAM,EAC5B,uBAAK,CAAC,CAAC,KAAK,GAAM,EAClB,yBACG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,QAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,SACpD,EACL,uBAAK,CAAC,CAAC,QAAQ,GAAM,EACrB,uBACG,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,GAChG,EACL,uBAAK,CAAC,CAAC,GAAG,GAAM,EAChB,uBAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAM,EAC3B,uBAAK,CAAC,CAAC,GAAG,GAAM,EAChB,uBAAK,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAM,EAC1B,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAClF,8BACE,uBAAK,CAAC,CAAC,IAAI,GAAM,EACjB,uBAAK,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAM,IAC5B,CACJ,EACA,KAAK,CAAC,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CACtF,8BACE,uBAAK,CAAC,CAAC,MAAM,GAAM,EACnB,uBAAK,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAM,IAC9B,CACJ,EACA,KAAK,CAAC,SAAS,IAAI,CAClB,8BACE,uBAAK,CAAC,CAAC,SAAS,GAAM,EACtB,uBACG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAChG,IACJ,CACJ,EACA,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,CAC5D,8BACE,uBAAK,CAAC,CAAC,MAAM,GAAM,EACnB,yBACG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,cAAK,KAAK,CAAC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,IAClE,IACJ,CACJ,IACE,EACJ,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CACpC,kBAAQ,SAAS,EAAC,qBAAqB,aACrC,+BAAa,CAAC,CAAC,SAAS,GAAc,EACtC,cAAK,SAAS,EAAC,gBAAgB,YAC5B,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACtB,eAEE,SAAS,EAAC,eAAe,EACzB,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,EAClF,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAH9D,GAAG,CAAC,KAAK,CAId,CACH,CAAC,GACE,EACN,eAAK,SAAS,EAAC,gBAAgB,aAC7B,yBAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAQ,EACvC,yBAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAQ,IACpD,IACC,CACV,EACA,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CACpC,kBAAQ,SAAS,EAAC,eAAe,aAC/B,+BAAa,CAAC,CAAC,GAAG,GAAc,EAChC,uBACG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACvB,yBACE,eAAM,SAAS,EAAC,mBAAmB,EAAC,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,GAAG,GAAG,EAAE,GAAI,EAC5F,eAAM,SAAS,EAAC,qBAAqB,YAClC,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,EAAE;gDACvC,CAAC,CAAC,QAAQ,CAAC,KAAK;gDAChB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GACxC,EACP,eAAM,SAAS,EAAC,qBAAqB,YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAQ,KAPzD,GAAG,OAAO,IAAI,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAQhD,CACN,CAAC,GACC,IACE,CACV,IACA,CACJ,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -1,227 +0,0 @@
1
- import { type CellValue, ColumnLayout, type ColumnSchema, type ColumnStats, type DistinctValues, type Filter, RowCache, ScrollAxis, SelectionModel, type SelectionSummary, type SortDirection, type TableInfo, type TableSource, ValueFormatter, type ViewInfo, type ViewQuery } from "vastgrid-core";
2
- export interface GridOptions {
3
- rowHeight: number;
4
- headerHeight: number;
5
- locale?: string;
6
- nullText: string;
7
- frozenColumns: number;
8
- minColumnWidth: number;
9
- maxAutoWidth: number;
10
- /** Cells copied at most at once. */
11
- copyLimit: number;
12
- }
13
- export interface ColumnState {
14
- /** Index in the table schema. */
15
- index: number;
16
- width: number;
17
- hidden: boolean;
18
- /** Width set by the user or fitted to the content, not to be changed automatically. */
19
- sized: boolean;
20
- }
21
- export type HitZone = "corner" | "header" | "gutter" | "cell" | "outside";
22
- export interface Hit {
23
- zone: HitZone;
24
- /** Row in the view, or -1. */
25
- row: number;
26
- /** Visible column, or -1. */
27
- col: number;
28
- /** Visible column whose right edge is under the pointer (for resizing), or -1. */
29
- resize: number;
30
- /** The pointer is over the header's menu button. */
31
- menu: boolean;
32
- }
33
- export declare class CopyTooLargeError extends Error {
34
- readonly limit: number;
35
- constructor(limit: number);
36
- }
37
- /**
38
- * State and behavior of one grid: the table and its view, columns, selection, scrolling and the row
39
- * cache. It is independent of React; the component forwards DOM events here and draws with
40
- * `CanvasRenderer`. Frequent changes (scrolling, hover) only request a frame; changes that the React
41
- * UI shows bump `version` and notify subscribers.
42
- */
43
- export declare class GridController {
44
- readonly source: TableSource;
45
- readonly options: GridOptions;
46
- readonly cache: RowCache;
47
- readonly selection: SelectionModel;
48
- readonly scrollX: ScrollAxis;
49
- readonly scrollY: ScrollAxis;
50
- formatter: ValueFormatter;
51
- /** Changes whenever `formatter` is replaced, so that cached display text is rebuilt. */
52
- formatVersion: number;
53
- info: TableInfo | null;
54
- loadError: string | null;
55
- query: ViewQuery;
56
- view: ViewInfo;
57
- viewPending: boolean;
58
- viewError: string | null;
59
- columns: ColumnState[];
60
- visible: ColumnState[];
61
- layout: ColumnLayout;
62
- frozen: number;
63
- frozenWidth: number;
64
- gutterWidth: number;
65
- width: number;
66
- height: number;
67
- hover: Hit | null;
68
- /** The visible column being resized, for drawing the guide. */
69
- resizing: number;
70
- findText: string;
71
- findCaseSensitive: boolean;
72
- summary: SelectionSummary | null;
73
- summaryPending: boolean;
74
- /** Increments on every change shown by the React UI. */
75
- version: number;
76
- /** Measures text in the cell or header font; set by the renderer. */
77
- measure: ((text: string, header: boolean) => number) | null;
78
- private scroller;
79
- private sizer;
80
- private readonly stateListeners;
81
- private readonly renderListeners;
82
- private lifecycle;
83
- private viewAbort;
84
- private summaryAbort;
85
- private summaryTimer;
86
- private autoSized;
87
- private disposed;
88
- private polling;
89
- private activeValue;
90
- constructor(source: TableSource, options: GridOptions);
91
- /** Changes the locale and the text for blanks. */
92
- setFormat(locale: string | undefined, nullText: string): void;
93
- subscribe: (listener: () => void) => () => void;
94
- getVersion: () => number;
95
- onRender(listener: () => void): () => void;
96
- emit(): void;
97
- requestRender(): void;
98
- attach(scroller: HTMLElement, sizer: HTMLElement): void;
99
- /** Starts reading the table. Safe to call again after `stop()`. */
100
- start(): void;
101
- /** Reads the table again (for example after the file changed). */
102
- reload(): void;
103
- /** Stops loading and cancels requests. `start()` resumes. */
104
- stop(): void;
105
- dispose(): void;
106
- private poll;
107
- private applyInfo;
108
- get status(): import("vastgrid-core").TableStatus;
109
- get schema(): ColumnSchema[];
110
- /** Rows in the current view. */
111
- get rowCount(): number;
112
- /** Rows that can be read now (less than `rowCount` while a table loads). */
113
- get readableRows(): number;
114
- get totalRows(): number | null;
115
- columnSchema(col: number): ColumnSchema | undefined;
116
- get bodyHeight(): number;
117
- /** Row labels: the position in the original table for views, otherwise the row number. */
118
- rowLabel(row: number): number | null;
119
- updateLayout(): void;
120
- /** Sizes the native scroll content and applies the current positions. */
121
- syncSizer(): void;
122
- setViewport(width: number, height: number): void;
123
- handleScroll(): void;
124
- /** Visible rows `[first, last)`. */
125
- visibleRows(): [number, number];
126
- /** Visible scrollable columns `[first, last]` (inclusive), or `[0, -1]`. */
127
- visibleScrollColumns(): [number, number];
128
- /** Screen x of a visible column's left edge. */
129
- columnX(col: number): number;
130
- rowY(row: number): number;
131
- /** The visible column at screen x, or -1. */
132
- columnAt(x: number): number;
133
- rowAt(y: number): number;
134
- hitTest(x: number, y: number): Hit;
135
- scrollToVirtual(left: number | null, top: number | null): void;
136
- /** Scrolls the least amount that shows the cell. */
137
- ensureVisible(row: number, col: number): void;
138
- /** Rows a page key moves. */
139
- get pageRows(): number;
140
- selectionChanged(scrollTo?: {
141
- row: number;
142
- col: number;
143
- }): void;
144
- private scheduleSummary;
145
- /** The selection as row ranges of schema columns. */
146
- selectionRanges(): {
147
- start: number;
148
- end: number;
149
- columns: number[];
150
- }[];
151
- value(row: number, col: number): CellValue | undefined;
152
- /** Reads a cell with a large text limit, for showing its full value. */
153
- fullValue(row: number, col: number, signal?: AbortSignal): Promise<CellValue>;
154
- /** Builds clipboard text from values per column. */
155
- private clipboardText;
156
- /**
157
- * The current range's values from the cache, or null when some are not loaded, may have been cut
158
- * for display, or the range is large.
159
- */
160
- private cachedRange;
161
- /** Clipboard text for the current range when every cell is loaded; otherwise null (use `copySelection`). */
162
- copySelectionSync(options: {
163
- headers?: boolean;
164
- markdown?: boolean;
165
- }): {
166
- text: string;
167
- html: null;
168
- cells: number;
169
- } | {
170
- text: string;
171
- html: string;
172
- cells: number;
173
- } | null;
174
- /** Copies the current range as TSV and HTML (or Markdown), reading cells that are not loaded. */
175
- copySelection(options: {
176
- headers?: boolean;
177
- markdown?: boolean;
178
- }, signal?: AbortSignal): Promise<{
179
- text: string;
180
- html: string | null;
181
- cells: number;
182
- }>;
183
- setQuery(query: ViewQuery): Promise<void>;
184
- /**
185
- * Creates a view, asking once more when the source cancelled it without being asked to: a server
186
- * cancels the build when it closes the table (for example because the file changed), and the next
187
- * request opens the table again.
188
- */
189
- private createView;
190
- sortBy(col: number, direction: SortDirection, add?: boolean): void;
191
- clearSort(): void;
192
- /** Replaces the filter of a schema column (`null` removes it). */
193
- setFilter(column: number, filter: Filter | null): Promise<void>;
194
- /** Keeps the rows whose value in the cell's column is the cell's value (or all others, with `exclude`). */
195
- filterByValue(row: number, col: number, exclude?: boolean): Promise<void>;
196
- filterOf(column: number): Filter | null;
197
- clearFilters(): void;
198
- setSearch(search: string): void;
199
- sortOf(column: number): {
200
- direction: SortDirection;
201
- order: number;
202
- } | null;
203
- private changeColumns;
204
- resizeColumn(col: number, width: number): void;
205
- hideColumn(col: number): void;
206
- setColumnHidden(index: number, hidden: boolean): void;
207
- showAllColumns(): void;
208
- freezeUpTo(col: number): void;
209
- /** Moves a visible column before another visible column. */
210
- moveColumn(from: number, to: number): void;
211
- /** Width that fits the header and the loaded values of a column. */
212
- fittedWidth(col: number): number;
213
- autoFit(col: number): void;
214
- /**
215
- * Widens columns whose numbers did not fit (numbers are never cut, since a cut number reads as a
216
- * different number). Called by the renderer with the widths it needed; columns the user sized
217
- * keep their width.
218
- */
219
- growColumns(widths: Map<number, number>): void;
220
- /** Fits columns to the first loaded rows once, unless the user sized them. */
221
- private autoSize;
222
- stats(col: number, signal?: AbortSignal): Promise<ColumnStats> | null;
223
- distinct(column: number, search: string, signal?: AbortSignal): Promise<DistinctValues> | null;
224
- /** Moves to the next cell containing `text`. Returns whether one was found. */
225
- find(text: string, direction: 1 | -1, caseSensitive: boolean, signal?: AbortSignal): Promise<boolean>;
226
- }
227
- //# sourceMappingURL=controller.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../src/controller.ts"],"names":[],"mappings":"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"}