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
@@ -0,0 +1 @@
1
+ {"version":3,"names":["use","useState","useTransition","formulaText","ConditionError","nodeId","readConditions","writeConditions","operatorsFor","takesNoValue","rowColumns","LocaleContext","useGridSelector","useGridStore","jsx","_jsx","jsxs","_jsxs","changed","group","id","change","items","flatMap","item","next","kind","newCondition","columns","column","name","filter","operator","type","first","second","expressionText","expr","JSON","stringify","ConditionRow","t0","$","_c","node","invalid","messages","onChange","set","t1","t2","t3","t4","t5","t6","t7","condition","conditionColumn","operators","t8","find","t9","current","t10","t11","t12","event","item_0","target","value","kept","includes","current_0","t13","map","_temp","className","children","event_0","t14","item_2","minimum","placeholder","event_1","maximum","event_2","_temp2","removeCondition","onClick","item_1","GroupBlock","top","op","matchAll","matchAny","matchLabel","noConditions","length","_temp3","added","addCondition","added_0","current_1","addGroup","removeGroup","_temp4","t15","ConditionsPanel","close","store","table","_temp5","plan","_temp6","getSnapshot","document","where","draft","setDraft","setInvalid","error","setError","pending","startApply","invalidCondition","failure","outcome","dispatch","command","ok","message","apply","preventDefault","Symbol","for","role","clearConditions","onSubmit","snapshot_0","snapshot"],"sources":["conditions-menu.tsx"],"sourcesContent":["import { use, useState, useTransition } from \"react\";\nimport { type Column, type Expr, formulaText } from \"vastgrid-spec\";\nimport { ConditionError, type ConditionNode, nodeId, readConditions, writeConditions } from \"../core/conditions.js\";\nimport { type FilterOperator, operatorsFor, takesNoValue } from \"../core/filters.js\";\nimport { rowColumns } from \"../core/measures.js\";\nimport { LocaleContext } from \"./context.js\";\nimport { useGridSelector, useGridStore } from \"./hooks.js\";\nimport type { GridMessages } from \"./messages.js\";\n\ntype Group = ConditionNode & { kind: \"group\" };\n\n/** A tree with one node changed, or removed when `change` gives null. */\nfunction changed(group: Group, id: number, change: (node: ConditionNode) => ConditionNode | null): Group {\n const items = group.items.flatMap((item): ConditionNode[] => {\n if (item.id === id) {\n const next = change(item);\n return next ? [next] : [];\n }\n return item.kind === \"group\" ? [changed(item, id, change)] : [item];\n });\n return group.id === id ? ((change(group) as Group | null) ?? { ...group, items: [] }) : { ...group, items };\n}\n\n/** A condition on the first column, with the first operator of its type. */\nfunction newCondition(columns: readonly Column[]): ConditionNode {\n const column = columns[0];\n return {\n kind: \"condition\",\n id: nodeId(),\n column: column?.name ?? \"\",\n filter: { kind: \"condition\", operator: column ? operatorsFor(column.type)[0] : \"eq\", first: \"\", second: \"\" },\n };\n}\n\n/** An expression as a formula (§4.11), or its JSON when it has none. */\nfunction expressionText(expr: Expr): string {\n try {\n return formulaText(expr);\n } catch {\n return JSON.stringify(expr);\n }\n}\n\ninterface NodeProps {\n node: ConditionNode;\n columns: readonly Column[];\n invalid: number | null;\n messages: GridMessages;\n onChange: (id: number, change: (node: ConditionNode) => ConditionNode | null) => void;\n}\n\n/** A condition: its column, operator and texts. */\nfunction ConditionRow({ node, columns, invalid, messages, onChange }: NodeProps & { node: { kind: \"condition\" } }) {\n const column = columns.find((item) => item.name === node.column);\n const operators = column ? operatorsFor(column.type) : [];\n const { operator, first, second } = node.filter;\n // Changes apply to the node as the draft holds it when they apply.\n const set = (filter: Partial<typeof node.filter>) =>\n onChange(node.id, (current) =>\n current.kind === \"condition\" ? { ...current, filter: { ...current.filter, ...filter } } : current,\n );\n return (\n <li className=\"vg-conditions__row\">\n <select\n className=\"vg-input\"\n aria-label={messages.conditionColumn}\n value={node.column}\n onChange={(event) => {\n const next = columns.find((item) => item.name === event.target.value);\n if (!next) return;\n const kept = operatorsFor(next.type).includes(operator) ? operator : operatorsFor(next.type)[0];\n onChange(node.id, (current) =>\n current.kind === \"condition\"\n ? { ...current, column: next.name, filter: { ...current.filter, operator: kept } }\n : current,\n );\n }}\n >\n {columns.map((item) => (\n <option key={item.name} value={item.name}>\n {item.name}\n </option>\n ))}\n </select>\n <select\n className=\"vg-input\"\n aria-label={messages.condition}\n value={operator}\n onChange={(event) => set({ operator: event.target.value as FilterOperator })}\n >\n {operators.map((item) => (\n <option key={item} value={item}>\n {messages.operators[item]}\n </option>\n ))}\n </select>\n {!takesNoValue(operator) && (\n <input\n className=\"vg-input\"\n aria-label={operator === \"between\" ? messages.minimum : messages.value}\n placeholder={operator === \"between\" ? messages.minimum : messages.value}\n aria-invalid={invalid === node.id}\n value={first}\n onChange={(event) => set({ first: event.target.value })}\n />\n )}\n {operator === \"between\" && (\n <input\n className=\"vg-input\"\n aria-label={messages.maximum}\n placeholder={messages.maximum}\n aria-invalid={invalid === node.id}\n value={second}\n onChange={(event) => set({ second: event.target.value })}\n />\n )}\n <button\n type=\"button\"\n className=\"vg-button vg-button--small\"\n aria-label={messages.removeCondition}\n onClick={() => onChange(node.id, () => null)}\n >\n ×\n </button>\n </li>\n );\n}\n\n/** A group: whether all of its items hold or one of them, its items, and buttons that add to it. */\nfunction GroupBlock({ node, columns, invalid, messages, onChange, top }: NodeProps & { node: Group; top?: boolean }) {\n return (\n <fieldset className={top ? \"vg-conditions__group vg-conditions__group--top\" : \"vg-conditions__group\"}>\n <legend>\n <select\n className=\"vg-input\"\n aria-label={messages.matchLabel}\n value={node.op}\n onChange={(event) => {\n const op = event.target.value as \"and\" | \"or\";\n onChange(node.id, (current) => (current.kind === \"group\" ? { ...current, op } : current));\n }}\n >\n <option value=\"and\">{messages.matchAll}</option>\n <option value=\"or\">{messages.matchAny}</option>\n </select>\n </legend>\n {node.items.length === 0 && top && <p className=\"vg-filter__note\">{messages.noConditions}</p>}\n <ul className=\"vg-conditions__items\">\n {node.items.map((item) =>\n item.kind === \"group\" ? (\n <li key={item.id}>\n <GroupBlock node={item} columns={columns} invalid={invalid} messages={messages} onChange={onChange} />\n </li>\n ) : item.kind === \"condition\" ? (\n <ConditionRow\n key={item.id}\n node={item}\n columns={columns}\n invalid={invalid}\n messages={messages}\n onChange={onChange}\n />\n ) : (\n <li key={item.id} className=\"vg-conditions__row\">\n <code className=\"vg-conditions__expression\">{expressionText(item.expr)}</code>\n <button\n type=\"button\"\n className=\"vg-button vg-button--small\"\n aria-label={messages.removeCondition}\n onClick={() => onChange(item.id, () => null)}\n >\n ×\n </button>\n </li>\n ),\n )}\n </ul>\n <div className=\"vg-conditions__add\">\n <button\n type=\"button\"\n className=\"vg-button vg-button--small\"\n onClick={() => {\n const added = newCondition(columns);\n onChange(node.id, (current) =>\n current.kind === \"group\" ? { ...current, items: [...current.items, added] } : current,\n );\n }}\n >\n {messages.addCondition}\n </button>\n <button\n type=\"button\"\n className=\"vg-button vg-button--small\"\n onClick={() => {\n const added: ConditionNode = {\n kind: \"group\",\n id: nodeId(),\n op: node.op === \"and\" ? \"or\" : \"and\",\n items: [newCondition(columns)],\n };\n onChange(node.id, (current) =>\n current.kind === \"group\" ? { ...current, items: [...current.items, added] } : current,\n );\n }}\n >\n {messages.addGroup}\n </button>\n {!top && (\n <button type=\"button\" className=\"vg-button vg-button--small\" onClick={() => onChange(node.id, () => null)}>\n {messages.removeGroup}\n </button>\n )}\n </div>\n </fieldset>\n );\n}\n\n/**\n * The content of the toolbar's conditions menu (§6.2.1 of the specification): every condition of the plan, those\n * across columns included, as groups of conditions that all hold or one of which holds, nested. It reads `where`\n * when it opens, and applying dispatches `filter.set`, which keeps the search. Expressions that it does not take\n * apart are shown as formulas and kept, or removed. The toolbar loads it when the menu first opens.\n */\nexport default function ConditionsPanel({ close }: { close: () => void }) {\n const store = useGridStore();\n const { messages } = use(LocaleContext);\n const table = useGridSelector((snapshot) => snapshot.table);\n const plan = useGridSelector((snapshot) => snapshot.document.plan);\n // The conditions as they are when the menu opens, an agent's or the column menu's included.\n const [draft, setDraft] = useState<Group>(() => readConditions(store.getSnapshot().document.plan?.where));\n const [invalid, setInvalid] = useState<number | null>(null);\n const [error, setError] = useState<string | null>(null);\n const [pending, startApply] = useTransition();\n if (!table) return null;\n const columns = rowColumns(plan, table);\n\n const apply = (group: Group) => {\n let where: Expr | null;\n try {\n where = writeConditions(group, columns);\n } catch (failure) {\n if (!(failure instanceof ConditionError)) throw failure;\n setInvalid(failure.node);\n setError(messages.invalidCondition);\n return;\n }\n startApply(async () => {\n const outcome = await store.dispatch({ command: \"filter.set\", where });\n if (!outcome.ok) {\n setError(outcome.error.message);\n return;\n }\n setInvalid(null);\n setError(null);\n close();\n });\n };\n\n return (\n <form\n onSubmit={(event) => {\n event.preventDefault();\n apply(draft);\n }}\n >\n <GroupBlock\n top\n node={draft}\n columns={columns}\n invalid={invalid}\n messages={messages}\n onChange={(target, change) => setDraft((current) => changed(current, target, change))}\n />\n {error !== null && (\n <p role=\"alert\" className=\"vg-filter__error\">\n {error}\n </p>\n )}\n <div className=\"vg-filter__actions\">\n <button type=\"button\" className=\"vg-button\" disabled={pending} onClick={() => apply({ ...draft, items: [] })}>\n {messages.clearConditions}\n </button>\n <button type=\"submit\" className=\"vg-button vg-button--primary\" disabled={pending}>\n {messages.apply}\n </button>\n </div>\n </form>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,29 @@
1
+ import type { GridStore } from "../core/store.js";
2
+ import { type GridMessages } from "./messages.js";
3
+ /** The store of the nearest `DataGrid` or `GridProvider`. */
4
+ export declare const GridContext: import("react").Context<GridStore | null>;
5
+ /** The UI's texts and number formats of the nearest `DataGrid`. */
6
+ export interface GridLocale {
7
+ messages: GridMessages;
8
+ locale: string | undefined;
9
+ number: Intl.NumberFormat;
10
+ }
11
+ export declare const LocaleContext: import("react").Context<GridLocale>;
12
+ /** Saving in the nearest `DataGrid` (§6.2 of react.md): an Action, with its pending state and last outcome. */
13
+ export interface GridSave {
14
+ /** Saves the written cells (the `save` command); a save asked for while one runs waits for it. */
15
+ save: () => void;
16
+ pending: boolean;
17
+ /**
18
+ * The text of the last save's outcome, and the revision and edits version it is about: shown until the cells or
19
+ * the revision change.
20
+ */
21
+ outcome: {
22
+ text: string;
23
+ failed: boolean;
24
+ revision: string | null;
25
+ version: number;
26
+ } | null;
27
+ }
28
+ export declare const SaveContext: import("react").Context<GridSave | null>;
29
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/react/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,eAAe,CAAC;AAE/D,6DAA6D;AAC7D,eAAO,MAAM,WAAW,2CAAwC,CAAC;AAEjE,mEAAmE;AACnE,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC;CAC3B;AAED,eAAO,MAAM,aAAa,qCAIxB,CAAC;AAEH,+GAA+G;AAC/G,MAAM,WAAW,QAAQ;IACvB,kGAAkG;IAClG,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC7F;AAED,eAAO,MAAM,WAAW,0CAAuC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import { createContext } from "react";
2
+ import { messagesFor } from "./messages.js";
3
+
4
+ /** The store of the nearest `DataGrid` or `GridProvider`. */
5
+ export const GridContext = /*#__PURE__*/createContext(null);
6
+
7
+ /** The UI's texts and number formats of the nearest `DataGrid`. */
8
+
9
+ export const LocaleContext = /*#__PURE__*/createContext({
10
+ messages: messagesFor(undefined),
11
+ locale: undefined,
12
+ number: new Intl.NumberFormat("en")
13
+ });
14
+
15
+ /** Saving in the nearest `DataGrid` (§6.2 of react.md): an Action, with its pending state and last outcome. */
16
+
17
+ export const SaveContext = /*#__PURE__*/createContext(null);
18
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","messagesFor","GridContext","LocaleContext","messages","undefined","locale","number","Intl","NumberFormat","SaveContext"],"sources":["context.ts"],"sourcesContent":["import { createContext } from \"react\";\nimport type { GridStore } from \"../core/store.js\";\nimport { type GridMessages, messagesFor } from \"./messages.js\";\n\n/** The store of the nearest `DataGrid` or `GridProvider`. */\nexport const GridContext = createContext<GridStore | null>(null);\n\n/** The UI's texts and number formats of the nearest `DataGrid`. */\nexport interface GridLocale {\n messages: GridMessages;\n locale: string | undefined;\n number: Intl.NumberFormat;\n}\n\nexport const LocaleContext = createContext<GridLocale>({\n messages: messagesFor(undefined),\n locale: undefined,\n number: new Intl.NumberFormat(\"en\"),\n});\n\n/** Saving in the nearest `DataGrid` (§6.2 of react.md): an Action, with its pending state and last outcome. */\nexport interface GridSave {\n /** Saves the written cells (the `save` command); a save asked for while one runs waits for it. */\n save: () => void;\n pending: boolean;\n /**\n * The text of the last save's outcome, and the revision and edits version it is about: shown until the cells or\n * the revision change.\n */\n outcome: { text: string; failed: boolean; revision: string | null; version: number } | null;\n}\n\nexport const SaveContext = createContext<GridSave | null>(null);\n"],"mappings":"AAAA,SAASA,aAAa,QAAQ,OAAO;AAErC,SAA4BC,WAAW,QAAQ,eAAe;;AAE9D;AACA,OAAO,MAAMC,WAAW,gBAAGF,aAAa,CAAmB,IAAI,CAAC;;AAEhE;;AAOA,OAAO,MAAMG,aAAa,gBAAGH,aAAa,CAAa;EACrDI,QAAQ,EAAEH,WAAW,CAACI,SAAS,CAAC;EAChCC,MAAM,EAAED,SAAS;EACjBE,MAAM,EAAE,IAAIC,IAAI,CAACC,YAAY,CAAC,IAAI;AACpC,CAAC,CAAC;;AAEF;;AAYA,OAAO,MAAMC,WAAW,gBAAGV,aAAa,CAAkB,IAAI,CAAC","ignoreList":[]}
@@ -0,0 +1,79 @@
1
+ import { type ComponentType, type CSSProperties, type ReactNode, type Ref } from "react";
2
+ import type { GridDocument, GridSession } from "vastgrid-spec";
3
+ import type { CellHooks, ColumnGroup } from "../canvas/hooks.js";
4
+ import type { Transport } from "../core/client.js";
5
+ import { type GridStore } from "../core/store.js";
6
+ import type { GridError, InitialView, OpenOptions } from "../core/types.js";
7
+ import type { DetailPanelProps } from "./detail-panel.js";
8
+ import { type CellActionEvent } from "./grid-body.js";
9
+ import { type GridMessages } from "./messages.js";
10
+ /** What `ref` gives (§5.5 of react.md). */
11
+ export interface DataGridHandle {
12
+ store: GridStore;
13
+ dispatch: GridStore["dispatch"];
14
+ /** Moves the focus to the grid. */
15
+ focus(): void;
16
+ }
17
+ export interface DataGridProps {
18
+ /** Where the rows come from, with `table`; a new transport or table makes a new store. */
19
+ transport?: Transport;
20
+ /** The `ref` of the table to open (§8.2). */
21
+ table?: string;
22
+ /** The `read` options of `open`. */
23
+ open?: OpenOptions;
24
+ /** A store made outside, instead of `transport` and `table`. */
25
+ store?: GridStore;
26
+ /** The view and its columns (§5.1), controlled. */
27
+ document?: GridDocument;
28
+ defaultDocument?: GridDocument;
29
+ onDocumentChange?: (document: GridDocument) => void;
30
+ /** Where the person is (§5.2), controlled. */
31
+ session?: GridSession;
32
+ defaultSession?: GridSession;
33
+ onSessionChange?: (session: GridSession) => void;
34
+ /** Rows read on a server, shown before the first read; a promise streams them (§7). */
35
+ initial?: InitialView | Promise<InitialView>;
36
+ toolbar?: boolean;
37
+ statusBar?: boolean;
38
+ /** A check box for each row in the gutter, and Space to check the active row (§5.2.1). */
39
+ checkboxes?: boolean;
40
+ /** Groups of columns named in header rows above the column names; nested groups add rows. */
41
+ columnGroups?: readonly ColumnGroup[];
42
+ /** The height of each row of groups, instead of `--vg-group-header-height`. */
43
+ groupHeaderHeight?: number;
44
+ /** How many lines rows have while a displayed column wraps its text (2 by default). */
45
+ wrapLines?: number;
46
+ /** The text of a cell instead of the grid's (§5.1: functions win over the document's formats). */
47
+ cellText?: CellHooks["cellText"];
48
+ /** The colors of a cell instead of the column's style rules. */
49
+ cellStyle?: CellHooks["cellStyle"];
50
+ /** Draws cells on the canvas, with the grid's drawing at hand (`drawDefault`). */
51
+ drawCell?: CellHooks["drawCell"];
52
+ /** Makes cells links or buttons; a click or Space on them calls `onCellAction`. */
53
+ cellAction?: CellHooks["cellAction"];
54
+ onCellAction?: (event: CellActionEvent) => void;
55
+ /** Shows the active row in the detail panel your own way, instead of a list of its columns. */
56
+ detailPanel?: ComponentType<DetailPanelProps>;
57
+ rowHeight?: number;
58
+ headerHeight?: number;
59
+ /** The language of the UI, a BCP 47 tag; the browser's by default. */
60
+ locale?: string;
61
+ messages?: Partial<GridMessages>;
62
+ /** Failures that belong to no command (§4.2). */
63
+ onError?: (error: GridError) => void;
64
+ ref?: Ref<DataGridHandle>;
65
+ className?: string;
66
+ style?: CSSProperties;
67
+ "aria-label"?: string;
68
+ }
69
+ /**
70
+ * A data grid for tables of any size (§5.1 of react.md): it draws on a canvas, reads rows through a
71
+ * transport as you scroll, and is driven by the commands of the specification.
72
+ */
73
+ export declare function DataGrid(props: DataGridProps): import("react").JSX.Element;
74
+ /** Gives a store to the hooks of the components inside (§5.4 of react.md). */
75
+ export declare function GridProvider({ store, children }: {
76
+ store: GridStore;
77
+ children?: ReactNode;
78
+ }): import("react").JSX.Element;
79
+ //# sourceMappingURL=data-grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-grid.d.ts","sourceRoot":"","sources":["../../src/react/data-grid.tsx"],"names":[],"mappings":"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"}