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.
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 +150 -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 +43 -18
  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 +168 -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 -67
  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 -17
  258. package/dist/components/filter-panel.d.ts.map +0 -1
  259. package/dist/components/filter-panel.js +0 -165
  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 -218
  274. package/dist/controller.d.ts.map +0 -1
  275. package/dist/controller.js +0 -788
  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 -698
  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 -179
  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 -290
  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 -887
  308. package/src/data-grid.tsx +0 -1029
  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
@@ -0,0 +1,653 @@
1
+ import { c as _c } from "react/compiler-runtime";
2
+ import { lazy, Suspense, use, useEffect, useEffectEvent, useImperativeHandle, useLayoutEffect, useRef, useState, useSyncExternalStore } from "react";
3
+ import { createGridStore } from "../core/store.js";
4
+ import { GridContext, LocaleContext, SaveContext } from "./context.js";
5
+ import { GridBody } from "./grid-body.js";
6
+ import { messagesFor } from "./messages.js";
7
+ import { useSaveAction } from "./save.js";
8
+ import { StaticRows } from "./static-rows.js";
9
+ import { StatusBar } from "./status-bar.js";
10
+ import { Toolbar } from "./toolbar.js";
11
+
12
+ // The find bar and the detail panel load when they first open (§10 of react.md).
13
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
+ const FindBar = /*#__PURE__*/lazy(() => import("./find-bar.js").then(module => ({
15
+ default: module.FindBar
16
+ })));
17
+ const DetailPanel = /*#__PURE__*/lazy(() => import("./detail-panel.js").then(module => ({
18
+ default: module.DetailPanel
19
+ })));
20
+
21
+ /** What `ref` gives (§5.5 of react.md). */
22
+
23
+ const transportIds = new WeakMap();
24
+ let nextTransportId = 1;
25
+
26
+ /** A number for each transport, for the key that makes a new store when the transport changes. */
27
+ function transportId(transport) {
28
+ let id = transportIds.get(transport);
29
+ if (id === undefined) {
30
+ id = nextTransportId++;
31
+ transportIds.set(transport, id);
32
+ }
33
+ return id;
34
+ }
35
+ function isPromise(value) {
36
+ return typeof value?.then === "function";
37
+ }
38
+ const noSubscription = () => () => {};
39
+ const browserLocale = () => navigator.language;
40
+ const serverLocale = () => undefined;
41
+
42
+ /**
43
+ * A data grid for tables of any size (§5.1 of react.md): it draws on a canvas, reads rows through a
44
+ * transport as you scroll, and is driven by the commands of the specification.
45
+ */
46
+ export function DataGrid(props) {
47
+ const $ = _c(15);
48
+ if (props.store) {
49
+ let t0;
50
+ if ($[0] !== props) {
51
+ t0 = /*#__PURE__*/_jsx(Frame, {
52
+ ...props,
53
+ store: props.store
54
+ });
55
+ $[0] = props;
56
+ $[1] = t0;
57
+ } else {
58
+ t0 = $[1];
59
+ }
60
+ return t0;
61
+ }
62
+ const {
63
+ transport,
64
+ table
65
+ } = props;
66
+ if (!transport || table === undefined) {
67
+ throw new Error("DataGrid needs a store, or a transport and a table.");
68
+ }
69
+ let t0;
70
+ if ($[2] !== transport) {
71
+ t0 = transportId(transport);
72
+ $[2] = transport;
73
+ $[3] = t0;
74
+ } else {
75
+ t0 = $[3];
76
+ }
77
+ const key = `${t0}\u0000${table}`;
78
+ if (isPromise(props.initial)) {
79
+ let t1;
80
+ if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
81
+ t1 = /*#__PURE__*/_jsx("div", {
82
+ className: "vg-root",
83
+ "aria-busy": "true"
84
+ });
85
+ $[4] = t1;
86
+ } else {
87
+ t1 = $[4];
88
+ }
89
+ let t2;
90
+ if ($[5] !== key || $[6] !== props || $[7] !== table || $[8] !== transport) {
91
+ t2 = /*#__PURE__*/_jsx(Suspense, {
92
+ fallback: t1,
93
+ children: /*#__PURE__*/_jsx(OwnStore, {
94
+ ...props,
95
+ transport: transport,
96
+ table: table
97
+ }, key)
98
+ });
99
+ $[5] = key;
100
+ $[6] = props;
101
+ $[7] = table;
102
+ $[8] = transport;
103
+ $[9] = t2;
104
+ } else {
105
+ t2 = $[9];
106
+ }
107
+ return t2;
108
+ }
109
+ let t1;
110
+ if ($[10] !== key || $[11] !== props || $[12] !== table || $[13] !== transport) {
111
+ t1 = /*#__PURE__*/_jsx(OwnStore, {
112
+ ...props,
113
+ transport: transport,
114
+ table: table
115
+ }, key);
116
+ $[10] = key;
117
+ $[11] = props;
118
+ $[12] = table;
119
+ $[13] = transport;
120
+ $[14] = t1;
121
+ } else {
122
+ t1 = $[14];
123
+ }
124
+ return t1;
125
+ }
126
+
127
+ /** A grid with a store of its own, made once and connected while it is mounted. */
128
+ function OwnStore(props) {
129
+ const $ = _c(15);
130
+ const initial = isPromise(props.initial) ? use(props.initial) : props.initial;
131
+ let t0;
132
+ if ($[0] !== initial || $[1] !== props.defaultDocument || $[2] !== props.defaultSession || $[3] !== props.document || $[4] !== props.open || $[5] !== props.session || $[6] !== props.table || $[7] !== props.transport) {
133
+ t0 = () => createGridStore({
134
+ transport: props.transport,
135
+ table: props.table,
136
+ ...(props.open ? {
137
+ open: props.open
138
+ } : {}),
139
+ ...(props.document ?? props.defaultDocument ? {
140
+ document: props.document ?? props.defaultDocument
141
+ } : {}),
142
+ ...(props.session ?? props.defaultSession ? {
143
+ session: props.session ?? props.defaultSession
144
+ } : {}),
145
+ ...(initial ? {
146
+ initial
147
+ } : {})
148
+ });
149
+ $[0] = initial;
150
+ $[1] = props.defaultDocument;
151
+ $[2] = props.defaultSession;
152
+ $[3] = props.document;
153
+ $[4] = props.open;
154
+ $[5] = props.session;
155
+ $[6] = props.table;
156
+ $[7] = props.transport;
157
+ $[8] = t0;
158
+ } else {
159
+ t0 = $[8];
160
+ }
161
+ const [store] = useState(t0);
162
+ let t1;
163
+ let t2;
164
+ if ($[9] !== store) {
165
+ t1 = () => store.connect();
166
+ t2 = [store];
167
+ $[9] = store;
168
+ $[10] = t1;
169
+ $[11] = t2;
170
+ } else {
171
+ t1 = $[10];
172
+ t2 = $[11];
173
+ }
174
+ useEffect(t1, t2);
175
+ let t3;
176
+ if ($[12] !== props || $[13] !== store) {
177
+ t3 = /*#__PURE__*/_jsx(Frame, {
178
+ ...props,
179
+ store: store
180
+ });
181
+ $[12] = props;
182
+ $[13] = store;
183
+ $[14] = t3;
184
+ } else {
185
+ t3 = $[14];
186
+ }
187
+ return t3;
188
+ }
189
+
190
+ /** Makes a part of the state controlled by a prop (§5.2), and reports the changes that commands make. */
191
+ function useControlled(store, part, value, onChange) {
192
+ const $ = _c(19);
193
+ const controlled = value !== undefined;
194
+ let t0;
195
+ if ($[0] !== onChange) {
196
+ t0 = next => onChange?.(next);
197
+ $[0] = onChange;
198
+ $[1] = t0;
199
+ } else {
200
+ t0 = $[1];
201
+ }
202
+ const report = useEffectEvent(t0);
203
+ let t1;
204
+ let t2;
205
+ if ($[2] !== controlled || $[3] !== part || $[4] !== store) {
206
+ t1 = () => {
207
+ store.control(part, controlled);
208
+ };
209
+ t2 = [store, part, controlled];
210
+ $[2] = controlled;
211
+ $[3] = part;
212
+ $[4] = store;
213
+ $[5] = t1;
214
+ $[6] = t2;
215
+ } else {
216
+ t1 = $[5];
217
+ t2 = $[6];
218
+ }
219
+ useLayoutEffect(t1, t2);
220
+ let t3;
221
+ let t4;
222
+ if ($[7] !== part || $[8] !== store || $[9] !== value) {
223
+ t3 = () => {
224
+ if (value === undefined) {
225
+ return;
226
+ }
227
+ if (part === "document") {
228
+ store.setDocument(value);
229
+ } else {
230
+ store.setSession(value);
231
+ }
232
+ };
233
+ t4 = [store, part, value];
234
+ $[7] = part;
235
+ $[8] = store;
236
+ $[9] = value;
237
+ $[10] = t3;
238
+ $[11] = t4;
239
+ } else {
240
+ t3 = $[10];
241
+ t4 = $[11];
242
+ }
243
+ useLayoutEffect(t3, t4);
244
+ let t5;
245
+ if ($[12] !== part || $[13] !== report || $[14] !== store) {
246
+ t5 = () => store.on(part, next_0 => report(next_0));
247
+ $[12] = part;
248
+ $[13] = report;
249
+ $[14] = store;
250
+ $[15] = t5;
251
+ } else {
252
+ t5 = $[15];
253
+ }
254
+ let t6;
255
+ if ($[16] !== part || $[17] !== store) {
256
+ t6 = [store, part];
257
+ $[16] = part;
258
+ $[17] = store;
259
+ $[18] = t6;
260
+ } else {
261
+ t6 = $[18];
262
+ }
263
+ useEffect(t5, t6);
264
+ }
265
+ function Frame(t0) {
266
+ const $ = _c(74);
267
+ const {
268
+ store,
269
+ toolbar: t1,
270
+ statusBar: t2,
271
+ checkboxes: t3,
272
+ columnGroups,
273
+ groupHeaderHeight,
274
+ wrapLines,
275
+ cellText,
276
+ cellStyle,
277
+ drawCell,
278
+ cellAction,
279
+ onCellAction,
280
+ detailPanel,
281
+ className,
282
+ style,
283
+ ref,
284
+ rowHeight,
285
+ headerHeight,
286
+ locale: given,
287
+ messages: replaced,
288
+ document,
289
+ onDocumentChange,
290
+ session,
291
+ onSessionChange,
292
+ onError,
293
+ "aria-label": ariaLabel
294
+ } = t0;
295
+ const toolbar = t1 === undefined ? true : t1;
296
+ const statusBar = t2 === undefined ? true : t2;
297
+ const checkboxes = t3 === undefined ? false : t3;
298
+ const detected = useSyncExternalStore(noSubscription, browserLocale, serverLocale);
299
+ const locale = given ?? detected;
300
+ let t4;
301
+ if ($[0] !== locale) {
302
+ t4 = messagesFor(locale);
303
+ $[0] = locale;
304
+ $[1] = t4;
305
+ } else {
306
+ t4 = $[1];
307
+ }
308
+ const base = t4;
309
+ let t5;
310
+ if ($[2] !== base || $[3] !== replaced) {
311
+ t5 = replaced ? {
312
+ ...base,
313
+ ...replaced
314
+ } : base;
315
+ $[2] = base;
316
+ $[3] = replaced;
317
+ $[4] = t5;
318
+ } else {
319
+ t5 = $[4];
320
+ }
321
+ const messages = t5;
322
+ let t6;
323
+ if ($[5] !== locale) {
324
+ t6 = new Intl.NumberFormat(locale);
325
+ $[5] = locale;
326
+ $[6] = t6;
327
+ } else {
328
+ t6 = $[6];
329
+ }
330
+ let t7;
331
+ if ($[7] !== locale || $[8] !== messages || $[9] !== t6) {
332
+ t7 = {
333
+ messages,
334
+ locale,
335
+ number: t6
336
+ };
337
+ $[7] = locale;
338
+ $[8] = messages;
339
+ $[9] = t6;
340
+ $[10] = t7;
341
+ } else {
342
+ t7 = $[10];
343
+ }
344
+ const language = t7;
345
+ const label = ariaLabel ?? messages.grid;
346
+ const scrollerRef = useRef(null);
347
+ const [notice, setNotice] = useState("");
348
+ const [finding, setFinding] = useState(false);
349
+ const detailOpen = useGridSelectorOf(store, _temp);
350
+ const saving = useSaveAction(store, language, setNotice);
351
+ const status = useGridSelectorOf(store, _temp2);
352
+ useControlled(store, "document", document, onDocumentChange);
353
+ useControlled(store, "session", session, onSessionChange);
354
+ let t8;
355
+ if ($[11] !== onError) {
356
+ t8 = error => onError?.(error);
357
+ $[11] = onError;
358
+ $[12] = t8;
359
+ } else {
360
+ t8 = $[12];
361
+ }
362
+ const reportError = useEffectEvent(t8);
363
+ let t9;
364
+ if ($[13] !== reportError || $[14] !== store) {
365
+ t9 = () => store.on("error", error_0 => reportError(error_0));
366
+ $[13] = reportError;
367
+ $[14] = store;
368
+ $[15] = t9;
369
+ } else {
370
+ t9 = $[15];
371
+ }
372
+ let t10;
373
+ if ($[16] !== store) {
374
+ t10 = [store];
375
+ $[16] = store;
376
+ $[17] = t10;
377
+ } else {
378
+ t10 = $[17];
379
+ }
380
+ useEffect(t9, t10);
381
+ let t11;
382
+ let t12;
383
+ if ($[18] !== store) {
384
+ t11 = () => ({
385
+ store,
386
+ dispatch: store.dispatch,
387
+ focus: () => scrollerRef.current?.focus()
388
+ });
389
+ t12 = [store];
390
+ $[18] = store;
391
+ $[19] = t11;
392
+ $[20] = t12;
393
+ } else {
394
+ t11 = $[19];
395
+ t12 = $[20];
396
+ }
397
+ useImperativeHandle(ref, t11, t12);
398
+ const t13 = className ? `vg-root ${className}` : "vg-root";
399
+ let t14;
400
+ if ($[21] !== toolbar) {
401
+ t14 = toolbar && /*#__PURE__*/_jsx(Toolbar, {
402
+ announce: setNotice
403
+ });
404
+ $[21] = toolbar;
405
+ $[22] = t14;
406
+ } else {
407
+ t14 = $[22];
408
+ }
409
+ let t15;
410
+ if ($[23] !== finding) {
411
+ t15 = finding && /*#__PURE__*/_jsx(Suspense, {
412
+ fallback: null,
413
+ children: /*#__PURE__*/_jsx(FindBar, {
414
+ onClose: () => setFinding(false),
415
+ scrollerRef: scrollerRef
416
+ })
417
+ });
418
+ $[23] = finding;
419
+ $[24] = t15;
420
+ } else {
421
+ t15 = $[24];
422
+ }
423
+ let t16;
424
+ if ($[25] !== label) {
425
+ t16 = /*#__PURE__*/_jsx(StaticRows, {
426
+ label: label
427
+ });
428
+ $[25] = label;
429
+ $[26] = t16;
430
+ } else {
431
+ t16 = $[26];
432
+ }
433
+ let t17;
434
+ if ($[27] !== cellAction || $[28] !== cellStyle || $[29] !== cellText || $[30] !== drawCell) {
435
+ t17 = {
436
+ cellText,
437
+ cellStyle,
438
+ drawCell,
439
+ cellAction
440
+ };
441
+ $[27] = cellAction;
442
+ $[28] = cellStyle;
443
+ $[29] = cellText;
444
+ $[30] = drawCell;
445
+ $[31] = t17;
446
+ } else {
447
+ t17 = $[31];
448
+ }
449
+ let t18;
450
+ if ($[32] === Symbol.for("react.memo_cache_sentinel")) {
451
+ t18 = () => setFinding(true);
452
+ $[32] = t18;
453
+ } else {
454
+ t18 = $[32];
455
+ }
456
+ let t19;
457
+ if ($[33] !== checkboxes || $[34] !== columnGroups || $[35] !== groupHeaderHeight || $[36] !== headerHeight || $[37] !== label || $[38] !== onCellAction || $[39] !== rowHeight || $[40] !== t17 || $[41] !== wrapLines) {
458
+ t19 = /*#__PURE__*/_jsx(GridBody, {
459
+ rowHeight: rowHeight,
460
+ headerHeight: headerHeight,
461
+ checkboxes: checkboxes,
462
+ columnGroups: columnGroups,
463
+ groupHeaderHeight: groupHeaderHeight,
464
+ wrapLines: wrapLines,
465
+ hooks: t17,
466
+ onCellAction: onCellAction,
467
+ onFind: t18,
468
+ label: label,
469
+ scrollerRef: scrollerRef,
470
+ announce: setNotice
471
+ });
472
+ $[33] = checkboxes;
473
+ $[34] = columnGroups;
474
+ $[35] = groupHeaderHeight;
475
+ $[36] = headerHeight;
476
+ $[37] = label;
477
+ $[38] = onCellAction;
478
+ $[39] = rowHeight;
479
+ $[40] = t17;
480
+ $[41] = wrapLines;
481
+ $[42] = t19;
482
+ } else {
483
+ t19 = $[42];
484
+ }
485
+ let t20;
486
+ if ($[43] !== t16 || $[44] !== t19) {
487
+ t20 = /*#__PURE__*/_jsx(Suspense, {
488
+ fallback: t16,
489
+ children: t19
490
+ });
491
+ $[43] = t16;
492
+ $[44] = t19;
493
+ $[45] = t20;
494
+ } else {
495
+ t20 = $[45];
496
+ }
497
+ let t21;
498
+ if ($[46] !== detailOpen || $[47] !== detailPanel) {
499
+ t21 = detailOpen && /*#__PURE__*/_jsx(Suspense, {
500
+ fallback: null,
501
+ children: /*#__PURE__*/_jsx(DetailPanel, {
502
+ custom: detailPanel,
503
+ onClosed: () => scrollerRef.current?.focus({
504
+ preventScroll: true
505
+ })
506
+ })
507
+ });
508
+ $[46] = detailOpen;
509
+ $[47] = detailPanel;
510
+ $[48] = t21;
511
+ } else {
512
+ t21 = $[48];
513
+ }
514
+ let t22;
515
+ if ($[49] !== t20 || $[50] !== t21) {
516
+ t22 = /*#__PURE__*/_jsxs("div", {
517
+ className: "vg-main",
518
+ children: [t20, t21]
519
+ });
520
+ $[49] = t20;
521
+ $[50] = t21;
522
+ $[51] = t22;
523
+ } else {
524
+ t22 = $[51];
525
+ }
526
+ let t23;
527
+ if ($[52] !== statusBar) {
528
+ t23 = statusBar && /*#__PURE__*/_jsx(StatusBar, {
529
+ announce: setNotice,
530
+ onDone: () => scrollerRef.current?.focus({
531
+ preventScroll: true
532
+ })
533
+ });
534
+ $[52] = statusBar;
535
+ $[53] = t23;
536
+ } else {
537
+ t23 = $[53];
538
+ }
539
+ let t24;
540
+ if ($[54] !== notice) {
541
+ t24 = /*#__PURE__*/_jsx("div", {
542
+ className: "vg-sr-only",
543
+ "aria-live": "polite",
544
+ children: notice
545
+ });
546
+ $[54] = notice;
547
+ $[55] = t24;
548
+ } else {
549
+ t24 = $[55];
550
+ }
551
+ let t25;
552
+ if ($[56] !== status || $[57] !== style || $[58] !== t13 || $[59] !== t14 || $[60] !== t15 || $[61] !== t22 || $[62] !== t23 || $[63] !== t24) {
553
+ t25 = /*#__PURE__*/_jsxs("div", {
554
+ className: t13,
555
+ style: style,
556
+ "data-status": status,
557
+ children: [t14, t15, t22, t23, t24]
558
+ });
559
+ $[56] = status;
560
+ $[57] = style;
561
+ $[58] = t13;
562
+ $[59] = t14;
563
+ $[60] = t15;
564
+ $[61] = t22;
565
+ $[62] = t23;
566
+ $[63] = t24;
567
+ $[64] = t25;
568
+ } else {
569
+ t25 = $[64];
570
+ }
571
+ let t26;
572
+ if ($[65] !== saving || $[66] !== t25) {
573
+ t26 = /*#__PURE__*/_jsx(SaveContext, {
574
+ value: saving,
575
+ children: t25
576
+ });
577
+ $[65] = saving;
578
+ $[66] = t25;
579
+ $[67] = t26;
580
+ } else {
581
+ t26 = $[67];
582
+ }
583
+ let t27;
584
+ if ($[68] !== language || $[69] !== t26) {
585
+ t27 = /*#__PURE__*/_jsx(LocaleContext, {
586
+ value: language,
587
+ children: t26
588
+ });
589
+ $[68] = language;
590
+ $[69] = t26;
591
+ $[70] = t27;
592
+ } else {
593
+ t27 = $[70];
594
+ }
595
+ let t28;
596
+ if ($[71] !== store || $[72] !== t27) {
597
+ t28 = /*#__PURE__*/_jsx(GridContext, {
598
+ value: store,
599
+ children: t27
600
+ });
601
+ $[71] = store;
602
+ $[72] = t27;
603
+ $[73] = t28;
604
+ } else {
605
+ t28 = $[73];
606
+ }
607
+ return t28;
608
+ }
609
+
610
+ /** `useGridSelector` for a store given directly, before the context holds it. */
611
+ function _temp2(snapshot_0) {
612
+ return snapshot_0.status;
613
+ }
614
+ function _temp(snapshot) {
615
+ return snapshot.session.detail?.open === true;
616
+ }
617
+ function useGridSelectorOf(store, selector) {
618
+ const $ = _c(3);
619
+ let t0;
620
+ if ($[0] !== selector || $[1] !== store) {
621
+ t0 = () => selector(store.getSnapshot());
622
+ $[0] = selector;
623
+ $[1] = store;
624
+ $[2] = t0;
625
+ } else {
626
+ t0 = $[2];
627
+ }
628
+ const read = t0;
629
+ return useSyncExternalStore(store.subscribe, read, read);
630
+ }
631
+
632
+ /** Gives a store to the hooks of the components inside (§5.4 of react.md). */
633
+ export function GridProvider(t0) {
634
+ const $ = _c(3);
635
+ const {
636
+ store,
637
+ children
638
+ } = t0;
639
+ let t1;
640
+ if ($[0] !== children || $[1] !== store) {
641
+ t1 = /*#__PURE__*/_jsx(GridContext, {
642
+ value: store,
643
+ children: children
644
+ });
645
+ $[0] = children;
646
+ $[1] = store;
647
+ $[2] = t1;
648
+ } else {
649
+ t1 = $[2];
650
+ }
651
+ return t1;
652
+ }
653
+ //# sourceMappingURL=data-grid.js.map