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 @@
1
+ {"version":3,"names":["lazy","Suspense","use","useEffect","useEffectEvent","useImperativeHandle","useLayoutEffect","useRef","useState","useSyncExternalStore","createGridStore","GridContext","LocaleContext","SaveContext","GridBody","messagesFor","useSaveAction","StaticRows","StatusBar","Toolbar","jsx","_jsx","jsxs","_jsxs","FindBar","then","module","default","DetailPanel","transportIds","WeakMap","nextTransportId","transportId","transport","id","get","undefined","set","isPromise","value","noSubscription","browserLocale","navigator","language","serverLocale","DataGrid","props","$","_c","store","t0","Frame","table","Error","key","initial","t1","Symbol","for","className","t2","fallback","children","OwnStore","defaultDocument","defaultSession","document","open","session","connect","t3","useControlled","part","onChange","controlled","next","report","control","t4","setDocument","setSession","t5","on","next_0","t6","toolbar","statusBar","checkboxes","columnGroups","groupHeaderHeight","wrapLines","cellText","cellStyle","drawCell","cellAction","onCellAction","detailPanel","style","ref","rowHeight","headerHeight","locale","given","messages","replaced","onDocumentChange","onSessionChange","onError","ariaLabel","detected","base","Intl","NumberFormat","t7","number","label","grid","scrollerRef","notice","setNotice","finding","setFinding","detailOpen","useGridSelectorOf","_temp","saving","status","_temp2","t8","error","reportError","t9","error_0","t10","t11","t12","dispatch","focus","current","t13","t14","t15","onClose","t16","t17","t18","t19","hooks","onFind","t20","t21","onClosed","preventScroll","t22","t23","onDone","t24","t25","t26","t27","t28","snapshot_0","snapshot","detail","selector","getSnapshot","read","subscribe","GridProvider"],"sources":["data-grid.tsx"],"sourcesContent":["import {\n type ComponentType,\n type CSSProperties,\n lazy,\n type ReactNode,\n type Ref,\n Suspense,\n use,\n useEffect,\n useEffectEvent,\n useImperativeHandle,\n useLayoutEffect,\n useRef,\n useState,\n useSyncExternalStore,\n} from \"react\";\nimport type { GridDocument, GridSession } from \"vastgrid-spec\";\nimport type { CellHooks, ColumnGroup } from \"../canvas/hooks.js\";\nimport type { Transport } from \"../core/client.js\";\nimport { createGridStore, type GridStore } from \"../core/store.js\";\nimport type { GridError, InitialView, OpenOptions } from \"../core/types.js\";\nimport { GridContext, LocaleContext, SaveContext } from \"./context.js\";\nimport type { DetailPanelProps } from \"./detail-panel.js\";\nimport { type CellActionEvent, GridBody } from \"./grid-body.js\";\nimport { type GridMessages, messagesFor } from \"./messages.js\";\nimport { useSaveAction } from \"./save.js\";\nimport { StaticRows } from \"./static-rows.js\";\nimport { StatusBar } from \"./status-bar.js\";\nimport { Toolbar } from \"./toolbar.js\";\n\n// The find bar and the detail panel load when they first open (§10 of react.md).\nconst FindBar = lazy(() => import(\"./find-bar.js\").then((module) => ({ default: module.FindBar })));\nconst DetailPanel = lazy(() => import(\"./detail-panel.js\").then((module) => ({ default: module.DetailPanel })));\n\n/** What `ref` gives (§5.5 of react.md). */\nexport interface DataGridHandle {\n store: GridStore;\n dispatch: GridStore[\"dispatch\"];\n /** Moves the focus to the grid. */\n focus(): void;\n}\n\nexport interface DataGridProps {\n /** Where the rows come from, with `table`; a new transport or table makes a new store. */\n transport?: Transport;\n /** The `ref` of the table to open (§8.2). */\n table?: string;\n /** The `read` options of `open`. */\n open?: OpenOptions;\n /** A store made outside, instead of `transport` and `table`. */\n store?: GridStore;\n /** The view and its columns (§5.1), controlled. */\n document?: GridDocument;\n defaultDocument?: GridDocument;\n onDocumentChange?: (document: GridDocument) => void;\n /** Where the person is (§5.2), controlled. */\n session?: GridSession;\n defaultSession?: GridSession;\n onSessionChange?: (session: GridSession) => void;\n /** Rows read on a server, shown before the first read; a promise streams them (§7). */\n initial?: InitialView | Promise<InitialView>;\n toolbar?: boolean;\n statusBar?: boolean;\n /** A check box for each row in the gutter, and Space to check the active row (§5.2.1). */\n checkboxes?: boolean;\n /** Groups of columns named in header rows above the column names; nested groups add rows. */\n columnGroups?: readonly ColumnGroup[];\n /** The height of each row of groups, instead of `--vg-group-header-height`. */\n groupHeaderHeight?: number;\n /** How many lines rows have while a displayed column wraps its text (2 by default). */\n wrapLines?: number;\n /** The text of a cell instead of the grid's (§5.1: functions win over the document's formats). */\n cellText?: CellHooks[\"cellText\"];\n /** The colors of a cell instead of the column's style rules. */\n cellStyle?: CellHooks[\"cellStyle\"];\n /** Draws cells on the canvas, with the grid's drawing at hand (`drawDefault`). */\n drawCell?: CellHooks[\"drawCell\"];\n /** Makes cells links or buttons; a click or Space on them calls `onCellAction`. */\n cellAction?: CellHooks[\"cellAction\"];\n onCellAction?: (event: CellActionEvent) => void;\n /** Shows the active row in the detail panel your own way, instead of a list of its columns. */\n detailPanel?: ComponentType<DetailPanelProps>;\n rowHeight?: number;\n headerHeight?: number;\n /** The language of the UI, a BCP 47 tag; the browser's by default. */\n locale?: string;\n messages?: Partial<GridMessages>;\n /** Failures that belong to no command (§4.2). */\n onError?: (error: GridError) => void;\n ref?: Ref<DataGridHandle>;\n className?: string;\n style?: CSSProperties;\n \"aria-label\"?: string;\n}\n\nconst transportIds = new WeakMap<object, number>();\nlet nextTransportId = 1;\n\n/** A number for each transport, for the key that makes a new store when the transport changes. */\nfunction transportId(transport: object) {\n let id = transportIds.get(transport);\n if (id === undefined) {\n id = nextTransportId++;\n transportIds.set(transport, id);\n }\n return id;\n}\n\nfunction isPromise<T>(value: T | Promise<T> | undefined): value is Promise<T> {\n return typeof (value as { then?: unknown } | undefined)?.then === \"function\";\n}\n\nconst noSubscription = () => () => {};\nconst browserLocale = () => navigator.language;\nconst serverLocale = () => undefined;\n\n/**\n * A data grid for tables of any size (§5.1 of react.md): it draws on a canvas, reads rows through a\n * transport as you scroll, and is driven by the commands of the specification.\n */\nexport function DataGrid(props: DataGridProps) {\n if (props.store) return <Frame {...props} store={props.store} />;\n const { transport, table } = props;\n if (!transport || table === undefined) throw new Error(\"DataGrid needs a store, or a transport and a table.\");\n const key = `${transportId(transport)}\\u0000${table}`;\n if (isPromise(props.initial)) {\n return (\n <Suspense fallback={<div className=\"vg-root\" aria-busy=\"true\" />}>\n <OwnStore key={key} {...props} transport={transport} table={table} />\n </Suspense>\n );\n }\n return <OwnStore key={key} {...props} transport={transport} table={table} />;\n}\n\n/** A grid with a store of its own, made once and connected while it is mounted. */\nfunction OwnStore(props: DataGridProps & { transport: Transport; table: string }) {\n const initial = isPromise(props.initial) ? use(props.initial) : props.initial;\n const [store] = useState(() =>\n createGridStore({\n transport: props.transport,\n table: props.table,\n ...(props.open ? { open: props.open } : {}),\n ...((props.document ?? props.defaultDocument) ? { document: props.document ?? props.defaultDocument } : {}),\n ...((props.session ?? props.defaultSession) ? { session: props.session ?? props.defaultSession } : {}),\n ...(initial ? { initial } : {}),\n }),\n );\n useEffect(() => store.connect(), [store]);\n return <Frame {...props} store={store} />;\n}\n\n/** Makes a part of the state controlled by a prop (§5.2), and reports the changes that commands make. */\nfunction useControlled<T extends GridDocument | GridSession>(\n store: GridStore,\n part: \"document\" | \"session\",\n value: T | undefined,\n onChange: ((value: T) => void) | undefined,\n) {\n const controlled = value !== undefined;\n const report = useEffectEvent((next: T) => onChange?.(next));\n useLayoutEffect(() => {\n store.control(part, controlled);\n }, [store, part, controlled]);\n // In the commit that brings the prop, before the canvas draws.\n useLayoutEffect(() => {\n if (value === undefined) return;\n if (part === \"document\") store.setDocument(value as GridDocument);\n else store.setSession(value as GridSession);\n }, [store, part, value]);\n useEffect(() => store.on(part, (next) => report(next as T)), [store, part]);\n}\n\nfunction Frame({\n store,\n toolbar = true,\n statusBar = true,\n checkboxes = false,\n columnGroups,\n groupHeaderHeight,\n wrapLines,\n cellText,\n cellStyle,\n drawCell,\n cellAction,\n onCellAction,\n detailPanel,\n className,\n style,\n ref,\n rowHeight,\n headerHeight,\n locale: given,\n messages: replaced,\n document,\n onDocumentChange,\n session,\n onSessionChange,\n onError,\n \"aria-label\": ariaLabel,\n}: DataGridProps & { store: GridStore }) {\n const detected = useSyncExternalStore(noSubscription, browserLocale, serverLocale);\n const locale = given ?? detected;\n const base = messagesFor(locale);\n const messages = replaced ? { ...base, ...replaced } : base;\n const language = { messages, locale, number: new Intl.NumberFormat(locale) };\n const label = ariaLabel ?? messages.grid;\n const scrollerRef = useRef<HTMLDivElement>(null);\n const [notice, setNotice] = useState(\"\");\n const [finding, setFinding] = useState(false);\n const detailOpen = useGridSelectorOf(store, (snapshot) => snapshot.session.detail?.open === true);\n const saving = useSaveAction(store, language, setNotice);\n const status = useGridSelectorOf(store, (snapshot) => snapshot.status);\n useControlled(store, \"document\", document, onDocumentChange);\n useControlled(store, \"session\", session, onSessionChange);\n const reportError = useEffectEvent((error: GridError) => onError?.(error));\n useEffect(() => store.on(\"error\", (error) => reportError(error)), [store]);\n useImperativeHandle(\n ref,\n () => ({\n store,\n dispatch: store.dispatch,\n focus: () => scrollerRef.current?.focus(),\n }),\n [store],\n );\n return (\n <GridContext value={store}>\n <LocaleContext value={language}>\n <SaveContext value={saving}>\n <div className={className ? `vg-root ${className}` : \"vg-root\"} style={style} data-status={status}>\n {toolbar && <Toolbar announce={setNotice} />}\n {finding && (\n <Suspense fallback={null}>\n <FindBar onClose={() => setFinding(false)} scrollerRef={scrollerRef} />\n </Suspense>\n )}\n <div className=\"vg-main\">\n <Suspense fallback={<StaticRows label={label} />}>\n <GridBody\n rowHeight={rowHeight}\n headerHeight={headerHeight}\n checkboxes={checkboxes}\n columnGroups={columnGroups}\n groupHeaderHeight={groupHeaderHeight}\n wrapLines={wrapLines}\n hooks={{ cellText, cellStyle, drawCell, cellAction }}\n onCellAction={onCellAction}\n onFind={() => setFinding(true)}\n label={label}\n scrollerRef={scrollerRef}\n announce={setNotice}\n />\n </Suspense>\n {detailOpen && (\n <Suspense fallback={null}>\n <DetailPanel\n custom={detailPanel}\n onClosed={() => scrollerRef.current?.focus({ preventScroll: true })}\n />\n </Suspense>\n )}\n </div>\n {statusBar && (\n <StatusBar announce={setNotice} onDone={() => scrollerRef.current?.focus({ preventScroll: true })} />\n )}\n <div className=\"vg-sr-only\" aria-live=\"polite\">\n {notice}\n </div>\n </div>\n </SaveContext>\n </LocaleContext>\n </GridContext>\n );\n}\n\n/** `useGridSelector` for a store given directly, before the context holds it. */\nfunction useGridSelectorOf<T>(store: GridStore, selector: (snapshot: ReturnType<GridStore[\"getSnapshot\"]>) => T): T {\n const read = () => selector(store.getSnapshot());\n return useSyncExternalStore(store.subscribe, read, read);\n}\n\n/** Gives a store to the hooks of the components inside (§5.4 of react.md). */\nexport function GridProvider({ store, children }: { store: GridStore; children?: ReactNode }) {\n return <GridContext value={store}>{children}</GridContext>;\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ import { type ComponentType } from "react";
2
+ import { type Column, type JsonValue, type RowKey } from "vastgrid-spec";
3
+ /**
4
+ * The detail panel of the active row (§5.2 of the specification, `detail`): every column of the view, hidden ones
5
+ * included, with its label and its value in full, by the column's format. It follows the active cell, reads the
6
+ * row's values that the canvas did not (`useGridRows`), and is opened and closed by `detail.open` and
7
+ * `detail.close`; the focus stays in the grid, and goes back to it when the panel is closed from inside (× or Esc).
8
+ */
9
+ export declare function DetailPanel({ custom, onClosed, }: {
10
+ custom?: ComponentType<DetailPanelProps>;
11
+ /** Called when the panel is closed from inside it, to give the focus back to the grid. */
12
+ onClosed: () => void;
13
+ }): import("react").JSX.Element | null;
14
+ /** What a host's own detail panel (`detailPanel`) gets: the active row's position, the view's columns and values. */
15
+ export interface DetailPanelProps {
16
+ row: number;
17
+ columns: readonly Column[];
18
+ values: readonly JsonValue[];
19
+ /** The row's key (§5.3), when it is read. */
20
+ rowKey: RowKey | undefined;
21
+ }
22
+ //# sourceMappingURL=detail-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detail-panel.d.ts","sourceRoot":"","sources":["../../src/react/detail-panel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAO,MAAM,OAAO,CAAC;AAChD,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,SAAS,EAAE,KAAK,MAAM,EAAU,MAAM,eAAe,CAAC;AAKjF;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,QAAQ,GACT,EAAE;IACD,MAAM,CAAC,EAAE,aAAa,CAAC,gBAAgB,CAAC,CAAC;IACzC,0FAA0F;IAC1F,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB,sCAIA;AAED,qHAAqH;AACrH,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IAC7B,6CAA6C;IAC7C,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B"}
@@ -0,0 +1,242 @@
1
+ import { c as _c } from "react/compiler-runtime";
2
+ import { use } from "react";
3
+ import { textOf } from "vastgrid-spec";
4
+ import { formatterFor } from "../core/format.js";
5
+ import { LocaleContext } from "./context.js";
6
+ import { useGridRows, useGridSelector, useGridStore } from "./hooks.js";
7
+
8
+ /**
9
+ * The detail panel of the active row (§5.2 of the specification, `detail`): every column of the view, hidden ones
10
+ * included, with its label and its value in full, by the column's format. It follows the active cell, reads the
11
+ * row's values that the canvas did not (`useGridRows`), and is opened and closed by `detail.open` and
12
+ * `detail.close`; the focus stays in the grid, and goes back to it when the panel is closed from inside (× or Esc).
13
+ */
14
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
15
+ export function DetailPanel(t0) {
16
+ const $ = _c(4);
17
+ const {
18
+ custom,
19
+ onClosed
20
+ } = t0;
21
+ const open = useGridSelector(_temp);
22
+ let t1;
23
+ if ($[0] !== custom || $[1] !== onClosed || $[2] !== open) {
24
+ t1 = open ? /*#__PURE__*/_jsx(OpenDetail, {
25
+ Custom: custom,
26
+ onClosed: onClosed
27
+ }) : null;
28
+ $[0] = custom;
29
+ $[1] = onClosed;
30
+ $[2] = open;
31
+ $[3] = t1;
32
+ } else {
33
+ t1 = $[3];
34
+ }
35
+ return t1;
36
+ }
37
+
38
+ /** What a host's own detail panel (`detailPanel`) gets: the active row's position, the view's columns and values. */
39
+ function _temp(snapshot) {
40
+ return snapshot.session.detail?.open === true;
41
+ }
42
+ function OpenDetail(t0) {
43
+ const $ = _c(37);
44
+ const {
45
+ Custom,
46
+ onClosed
47
+ } = t0;
48
+ const store = useGridStore();
49
+ const {
50
+ messages,
51
+ number,
52
+ locale
53
+ } = use(LocaleContext);
54
+ const row = useGridSelector(_temp2);
55
+ const rowCount = useGridSelector(_temp3);
56
+ const columns = useGridSelector(_temp4);
57
+ const settings = useGridSelector(_temp5);
58
+ let t1;
59
+ if ($[0] !== columns || $[1] !== rowCount) {
60
+ t1 = columns && rowCount > 0 ? columns.map(_temp6) : [];
61
+ $[0] = columns;
62
+ $[1] = rowCount;
63
+ $[2] = t1;
64
+ } else {
65
+ t1 = $[2];
66
+ }
67
+ const names = t1;
68
+ const t2 = names.length > 0 ? row + 1 : row;
69
+ let t3;
70
+ if ($[3] !== names || $[4] !== row || $[5] !== t2) {
71
+ t3 = {
72
+ start: row,
73
+ end: t2,
74
+ columns: names
75
+ };
76
+ $[3] = names;
77
+ $[4] = row;
78
+ $[5] = t2;
79
+ $[6] = t3;
80
+ } else {
81
+ t3 = $[6];
82
+ }
83
+ const [values] = useGridRows(t3);
84
+ if (!columns) {
85
+ return null;
86
+ }
87
+ let t4;
88
+ if ($[7] !== Custom || $[8] !== columns || $[9] !== locale || $[10] !== messages || $[11] !== number || $[12] !== onClosed || $[13] !== row || $[14] !== rowCount || $[15] !== settings || $[16] !== store || $[17] !== values) {
89
+ const byName = new Map((settings ?? []).map(_temp7));
90
+ const text = (value, index) => {
91
+ if (value === undefined) {
92
+ return messages.loading;
93
+ }
94
+ if (value === null) {
95
+ return "";
96
+ }
97
+ const column_0 = columns[index];
98
+ const format = byName.get(column_0.name)?.format;
99
+ return formatterFor(column_0, format, locale)?.(value) ?? textOf(value, column_0) ?? "";
100
+ };
101
+ let t5;
102
+ if ($[19] !== messages || $[20] !== number || $[21] !== row || $[22] !== rowCount) {
103
+ t5 = rowCount > 0 ? messages.detailOf(number.format(row + 1)) : messages.details;
104
+ $[19] = messages;
105
+ $[20] = number;
106
+ $[21] = row;
107
+ $[22] = rowCount;
108
+ $[23] = t5;
109
+ } else {
110
+ t5 = $[23];
111
+ }
112
+ const title = t5;
113
+ let t6;
114
+ if ($[24] !== onClosed || $[25] !== store) {
115
+ t6 = () => {
116
+ store.dispatch({
117
+ command: "detail.close"
118
+ });
119
+ onClosed();
120
+ };
121
+ $[24] = onClosed;
122
+ $[25] = store;
123
+ $[26] = t6;
124
+ } else {
125
+ t6 = $[26];
126
+ }
127
+ const close = t6;
128
+ let t7;
129
+ if ($[27] !== close) {
130
+ t7 = event => {
131
+ if (event.key !== "Escape" || event.nativeEvent.isComposing) {
132
+ return;
133
+ }
134
+ event.preventDefault();
135
+ close();
136
+ };
137
+ $[27] = close;
138
+ $[28] = t7;
139
+ } else {
140
+ t7 = $[28];
141
+ }
142
+ let t8;
143
+ if ($[29] !== title) {
144
+ t8 = /*#__PURE__*/_jsx("h2", {
145
+ className: "vg-detail__title",
146
+ children: title
147
+ });
148
+ $[29] = title;
149
+ $[30] = t8;
150
+ } else {
151
+ t8 = $[30];
152
+ }
153
+ let t9;
154
+ if ($[31] !== close || $[32] !== messages.closeDetails) {
155
+ t9 = /*#__PURE__*/_jsx("button", {
156
+ type: "button",
157
+ className: "vg-button vg-button--small",
158
+ "aria-label": messages.closeDetails,
159
+ onClick: close,
160
+ children: "\xD7"
161
+ });
162
+ $[31] = close;
163
+ $[32] = messages.closeDetails;
164
+ $[33] = t9;
165
+ } else {
166
+ t9 = $[33];
167
+ }
168
+ let t10;
169
+ if ($[34] !== t8 || $[35] !== t9) {
170
+ t10 = /*#__PURE__*/_jsxs("header", {
171
+ className: "vg-detail__header",
172
+ children: [t8, t9]
173
+ });
174
+ $[34] = t8;
175
+ $[35] = t9;
176
+ $[36] = t10;
177
+ } else {
178
+ t10 = $[36];
179
+ }
180
+ t4 = /*#__PURE__*/_jsxs("aside", {
181
+ className: "vg-detail",
182
+ "aria-label": title,
183
+ onKeyDown: t7,
184
+ children: [t10, rowCount > 0 && Custom && values?.every(_temp8) ? /*#__PURE__*/_jsx(Custom, {
185
+ row: row,
186
+ columns: columns,
187
+ values: values,
188
+ rowKey: store.rowKey(row)
189
+ }) : rowCount > 0 && Custom ? /*#__PURE__*/_jsx("p", {
190
+ className: "vg-filter__note",
191
+ children: messages.loading
192
+ }) : rowCount > 0 && /*#__PURE__*/_jsx("dl", {
193
+ className: "vg-detail__list",
194
+ children: columns.map((column_1, index_0) => /*#__PURE__*/_jsxs("div", {
195
+ className: "vg-detail__item",
196
+ children: [/*#__PURE__*/_jsx("dt", {
197
+ children: byName.get(column_1.name)?.format?.label ?? column_1.name
198
+ }), /*#__PURE__*/_jsx("dd", {
199
+ children: text(values?.[index_0], index_0)
200
+ })]
201
+ }, column_1.name))
202
+ })]
203
+ });
204
+ $[7] = Custom;
205
+ $[8] = columns;
206
+ $[9] = locale;
207
+ $[10] = messages;
208
+ $[11] = number;
209
+ $[12] = onClosed;
210
+ $[13] = row;
211
+ $[14] = rowCount;
212
+ $[15] = settings;
213
+ $[16] = store;
214
+ $[17] = values;
215
+ $[18] = t4;
216
+ } else {
217
+ t4 = $[18];
218
+ }
219
+ return t4;
220
+ }
221
+ function _temp8(value_0) {
222
+ return value_0 !== undefined;
223
+ }
224
+ function _temp7(setting) {
225
+ return [setting.name, setting];
226
+ }
227
+ function _temp6(column) {
228
+ return column.name;
229
+ }
230
+ function _temp5(snapshot_2) {
231
+ return snapshot_2.document.columns;
232
+ }
233
+ function _temp4(snapshot_1) {
234
+ return snapshot_1.view?.columns;
235
+ }
236
+ function _temp3(snapshot_0) {
237
+ return snapshot_0.view?.rowCount ?? 0;
238
+ }
239
+ function _temp2(snapshot) {
240
+ return snapshot.session.active?.row ?? 0;
241
+ }
242
+ //# sourceMappingURL=detail-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["use","textOf","formatterFor","LocaleContext","useGridRows","useGridSelector","useGridStore","jsx","_jsx","jsxs","_jsxs","DetailPanel","t0","$","_c","custom","onClosed","open","_temp","t1","OpenDetail","snapshot","session","detail","Custom","store","messages","number","locale","row","_temp2","rowCount","_temp3","columns","_temp4","settings","_temp5","map","_temp6","names","t2","length","t3","start","end","values","t4","byName","Map","_temp7","text","value","index","undefined","loading","column_0","format","get","column","name","t5","detailOf","details","title","t6","dispatch","command","close","t7","event","key","nativeEvent","isComposing","preventDefault","t8","className","children","t9","closeDetails","type","t10","onKeyDown","every","_temp8","rowKey","column_1","index_0","label","value_0","setting","snapshot_2","document","snapshot_1","view","snapshot_0","active"],"sources":["detail-panel.tsx"],"sourcesContent":["import { type ComponentType, use } from \"react\";\nimport { type Column, type JsonValue, type RowKey, textOf } from \"vastgrid-spec\";\nimport { formatterFor } from \"../core/format.js\";\nimport { LocaleContext } from \"./context.js\";\nimport { useGridRows, useGridSelector, useGridStore } from \"./hooks.js\";\n\n/**\n * The detail panel of the active row (§5.2 of the specification, `detail`): every column of the view, hidden ones\n * included, with its label and its value in full, by the column's format. It follows the active cell, reads the\n * row's values that the canvas did not (`useGridRows`), and is opened and closed by `detail.open` and\n * `detail.close`; the focus stays in the grid, and goes back to it when the panel is closed from inside (× or Esc).\n */\nexport function DetailPanel({\n custom,\n onClosed,\n}: {\n custom?: ComponentType<DetailPanelProps>;\n /** Called when the panel is closed from inside it, to give the focus back to the grid. */\n onClosed: () => void;\n}) {\n const open = useGridSelector((snapshot) => snapshot.session.detail?.open === true);\n // Closed, it follows no rows: scrolling commits nothing (§10 of react.md).\n return open ? <OpenDetail Custom={custom} onClosed={onClosed} /> : null;\n}\n\n/** What a host's own detail panel (`detailPanel`) gets: the active row's position, the view's columns and values. */\nexport interface DetailPanelProps {\n row: number;\n columns: readonly Column[];\n values: readonly JsonValue[];\n /** The row's key (§5.3), when it is read. */\n rowKey: RowKey | undefined;\n}\n\nfunction OpenDetail({ Custom, onClosed }: { Custom?: ComponentType<DetailPanelProps>; onClosed: () => void }) {\n const store = useGridStore();\n const { messages, number, locale } = use(LocaleContext);\n const row = useGridSelector((snapshot) => snapshot.session.active?.row ?? 0);\n const rowCount = useGridSelector((snapshot) => snapshot.view?.rowCount ?? 0);\n const columns = useGridSelector((snapshot) => snapshot.view?.columns);\n const settings = useGridSelector((snapshot) => snapshot.document.columns);\n const names = columns && rowCount > 0 ? columns.map((column) => column.name) : [];\n const [values] = useGridRows({ start: row, end: names.length > 0 ? row + 1 : row, columns: names });\n if (!columns) return null;\n const byName = new Map((settings ?? []).map((setting) => [setting.name, setting]));\n const text = (value: JsonValue | undefined, index: number) => {\n if (value === undefined) return messages.loading;\n if (value === null) return \"\";\n const column = columns[index];\n const format = byName.get(column.name)?.format;\n return formatterFor(column, format, locale)?.(value) ?? textOf(value, column) ?? \"\";\n };\n const title = rowCount > 0 ? messages.detailOf(number.format(row + 1)) : messages.details;\n const close = () => {\n void store.dispatch({ command: \"detail.close\" });\n onClosed();\n };\n return (\n <aside\n className=\"vg-detail\"\n aria-label={title}\n onKeyDown={(event) => {\n if (event.key !== \"Escape\" || event.nativeEvent.isComposing) return;\n event.preventDefault();\n close();\n }}\n >\n <header className=\"vg-detail__header\">\n <h2 className=\"vg-detail__title\">{title}</h2>\n <button type=\"button\" className=\"vg-button vg-button--small\" aria-label={messages.closeDetails} onClick={close}>\n ×\n </button>\n </header>\n {rowCount > 0 && Custom && values?.every((value) => value !== undefined) ? (\n <Custom row={row} columns={columns} values={values as JsonValue[]} rowKey={store.rowKey(row)} />\n ) : rowCount > 0 && Custom ? (\n <p className=\"vg-filter__note\">{messages.loading}</p>\n ) : (\n rowCount > 0 && (\n <dl className=\"vg-detail__list\">\n {columns.map((column, index) => (\n <div key={column.name} className=\"vg-detail__item\">\n <dt>{byName.get(column.name)?.format?.label ?? column.name}</dt>\n <dd>{text(values?.[index], index)}</dd>\n </div>\n ))}\n </dl>\n )\n )}\n </aside>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The toolbar's export menu (§6.6 of the specification): the rows of the view or the whole table, with the hidden
3
+ * columns or not, in one of the formats the engine exports. It runs as an Action: the button shows that it runs, and
4
+ * the outcome is announced. An export without a target is downloaded from where the transport gives it
5
+ * (`Transport.exportUrl`), or, from an engine that answers the file's bytes (`delivery` `data`), as a file made of
6
+ * them.
7
+ */
8
+ export declare function ExportMenu({ announce }: {
9
+ announce: (text: string) => void;
10
+ }): import("react").JSX.Element | null;
11
+ //# sourceMappingURL=export-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export-menu.d.ts","sourceRoot":"","sources":["../../src/react/export-menu.tsx"],"names":[],"mappings":"AAyBA;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,sCA+E5E"}