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":["use","useState","useTransition","columnsOf","formulaText","joinParts","partsOf","FilterTextError","filterParts","operatorsFor","readFilter","takesNoValue","isNumeric","LocaleContext","useGridSelector","useGridStore","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","TEMPORAL","Set","nextRule","ruleId","draftOf","rule","fallback","names","when","name","read","size","filter","kind","operator","first","second","id","column","kept","color","background","description","whenOf","columns","find","item","undefined","error","knownCurrency","code","Intl","NumberFormat","style","currency","formulaOf","expr","JSON","stringify","FormatForm","t0","$","_c","setting","onDone","store","messages","view","_temp","t1","format","label","setLabel","align","setAlign","wrap","setWrap","setStyle","number","setCurrency","digits","setDigits","fractionDigits","String","grouping","setGrouping","pattern","setPattern","date","t2","styles","map","rules","setRules","setError","pending","startApply","t3","numeric","t4","type","has","temporal","t5","next","outcome","dispatch","command","ok","message","t6","invalidCondition","invalidCurrency","event","preventDefault","rule_0","push","trim","fraction","Math","min","max","round","Number","toUpperCase","isNaN","next_0","length","cleaned","Object","fromEntries","entries","_temp2","keys","submit","t7","Symbol","for","patch","current","rule_1","change","t8","formatOf","t9","t10","className","children","t11","columnLabel","t12","event_0","target","value","t13","placeholder","onChange","t14","t15","alignment","t16","event_1","t17","alignments","auto","t18","left","t19","center","t20","right","t21","t22","t23","event_2","checked","t24","t25","wrapText","t26","t27","numberFormat","numberStyles","event_3","none","decimal","percent","event_4","event_5","event_6","t28","datePattern","event_7","t29","conditionalColors","t30","backgroundColor","condition","conditionColumn","maximum","minimum","operators","removeRule","ruleDescription","textColor","t31","rule_2","event_8","next_1","item_0","kinds","includes","_temp3","event_9","item_2","event_10","event_11","event_12","event_13","event_14","event_15","event_16","onClick","current_0","item_3","current_1","t32","addRule","t33","t34","role","t35","t36","clearFormat","t37","apply","t38","t39","item_1","snapshot"],"sources":["format-form.tsx"],"sourcesContent":["import { type FormEvent, use, useState, useTransition } from \"react\";\nimport {\n type Column,\n type ColumnFormat,\n type ColumnSetting,\n columnsOf,\n type Expr,\n formulaText,\n joinParts,\n type NumberFormat,\n partsOf,\n type StyleRule,\n} from \"vastgrid-spec\";\nimport {\n type ColumnFilter,\n type FilterOperator,\n FilterTextError,\n filterParts,\n operatorsFor,\n readFilter,\n takesNoValue,\n} from \"../core/filters.js\";\nimport { isNumeric } from \"../core/format.js\";\nimport { LocaleContext } from \"./context.js\";\nimport { useGridSelector, useGridStore } from \"./hooks.js\";\n\nconst TEMPORAL = new Set([\"date\", \"time\", \"timestamp\", \"timestamptz\"]);\n\n/** A style rule as the form edits it: a condition on one column, or a `when` it does not take apart. */\ninterface RuleDraft {\n id: number;\n column: string;\n filter: ColumnFilter & { kind: \"condition\" };\n /** A `when` that is not one condition on one column: kept as it is. */\n kept?: Expr;\n color: string | null;\n background: string | null;\n description: string;\n}\n\nlet nextRule = 1;\n\nfunction ruleId() {\n return nextRule++;\n}\n\nfunction draftOf(rule: StyleRule, fallback: string): RuleDraft {\n const names = columnsOf(rule.when);\n const [name] = names;\n const read = names.size === 1 ? readFilter(partsOf(rule.when), name) : null;\n const filter =\n read !== null && read !== \"other\" && read.kind === \"condition\"\n ? read\n : ({ kind: \"condition\", operator: \"eq\", first: \"\", second: \"\" } as const);\n return {\n id: ruleId(),\n column: read !== null && read !== \"other\" && read.kind === \"condition\" ? name : fallback,\n filter,\n ...(read !== null && read !== \"other\" && read.kind === \"condition\" ? {} : { kept: rule.when }),\n color: rule.color ?? null,\n background: rule.background ?? null,\n description: rule.description ?? \"\",\n };\n}\n\n/** The `when` of a rule, or null when its text is not a value of its column; undefined without text. */\nfunction whenOf(rule: RuleDraft, columns: readonly Column[]): Expr | null | undefined {\n if (rule.kept) return rule.kept;\n const column = columns.find((item) => item.name === rule.column);\n if (!column) return undefined;\n try {\n return joinParts(filterParts(rule.filter, column));\n } catch (error) {\n if (error instanceof FilterTextError) return null;\n throw error;\n }\n}\n\n/** Whether Intl formats a currency code. */\nfunction knownCurrency(code: string) {\n try {\n new Intl.NumberFormat(undefined, { style: \"currency\", currency: code });\n return true;\n } catch {\n return false;\n }\n}\n\nfunction formulaOf(expr: Expr) {\n try {\n return formulaText(expr);\n } catch {\n return JSON.stringify(expr);\n }\n}\n\n/**\n * A column's format (§5.1 of the specification): its label, alignment and wrapping, the number or date format of its\n * type, and rules of conditional colors, each a condition on a column of the view with a text color, a background\n * and what they mean. Applying dispatches `column.format`; Clear removes the format.\n */\nexport function FormatForm({\n column,\n setting,\n onDone,\n}: {\n column: Column;\n setting: ColumnSetting;\n onDone: () => void;\n}) {\n const store = useGridStore();\n const { messages } = use(LocaleContext);\n const view = useGridSelector((snapshot) => snapshot.view?.columns ?? []);\n const format = setting.format ?? {};\n const [label, setLabel] = useState(format.label ?? \"\");\n const [align, setAlign] = useState<ColumnFormat[\"align\"] | \"\">(format.align ?? \"\");\n const [wrap, setWrap] = useState(format.wrap === true);\n const [style, setStyle] = useState<NumberFormat[\"style\"] | \"\">(\n format.number ? (format.number.style ?? \"decimal\") : \"\",\n );\n const [currency, setCurrency] = useState(format.number?.currency ?? \"\");\n const [digits, setDigits] = useState(\n format.number?.fractionDigits === undefined ? \"\" : String(format.number.fractionDigits),\n );\n const [grouping, setGrouping] = useState(format.number?.grouping !== false);\n const [pattern, setPattern] = useState(format.date?.pattern ?? \"\");\n const [rules, setRules] = useState(() => (format.styles ?? []).map((rule) => draftOf(rule, column.name)));\n const [error, setError] = useState<string | null>(null);\n const [pending, startApply] = useTransition();\n const numeric = isNumeric(column);\n const temporal = TEMPORAL.has(column.type);\n\n const dispatch = (next: ColumnFormat | null) =>\n startApply(async () => {\n const outcome = await store.dispatch({ command: \"column.format\", name: column.name, format: next });\n if (!outcome.ok) {\n setError(outcome.error.message);\n return;\n }\n onDone();\n });\n\n const submit = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n if (style === \"currency\" && !knownCurrency(currency)) {\n setError(messages.invalidCurrency);\n return;\n }\n const styles: StyleRule[] = [];\n for (const rule of rules) {\n const when = whenOf(rule, view);\n if (when === null) {\n setError(messages.invalidCondition);\n return;\n }\n if (when === undefined || (!rule.color && !rule.background)) continue;\n styles.push({\n when,\n ...(rule.color ? { color: rule.color } : {}),\n ...(rule.background ? { background: rule.background } : {}),\n ...(rule.description.trim() ? { description: rule.description.trim() } : {}),\n });\n }\n const fraction = digits.trim() === \"\" ? undefined : Math.min(20, Math.max(0, Math.round(Number(digits))));\n const number: NumberFormat | undefined =\n numeric && style\n ? {\n style,\n ...(style === \"currency\" ? { currency: currency.toUpperCase() } : {}),\n ...(fraction === undefined || Number.isNaN(fraction) ? {} : { fractionDigits: fraction }),\n ...(grouping ? {} : { grouping: false }),\n }\n : undefined;\n const next: ColumnFormat = {\n ...format,\n ...(label.trim() ? { label: label.trim() } : { label: undefined }),\n align: align === \"\" ? undefined : align,\n wrap: wrap ? true : undefined,\n number: numeric ? number : format.number,\n date: temporal ? (pattern.trim() ? { ...format.date, pattern: pattern.trim() } : undefined) : format.date,\n styles: styles.length > 0 ? styles : undefined,\n };\n const cleaned = Object.fromEntries(Object.entries(next).filter(([, value]) => value !== undefined)) as ColumnFormat;\n dispatch(Object.keys(cleaned).length > 0 ? cleaned : null);\n };\n\n const change = (id: number, patch: Partial<RuleDraft>) =>\n setRules((current) => current.map((rule) => (rule.id === id ? { ...rule, ...patch } : rule)));\n\n return (\n <form className=\"vg-filter vg-format\" onSubmit={submit} aria-label={messages.formatOf(column.name)}>\n <p className=\"vg-filter__title\">{messages.formatOf(column.name)}</p>\n <label className=\"vg-format__field\">\n <span>{messages.columnLabel}</span>\n <input\n className=\"vg-input\"\n value={label}\n placeholder={column.name}\n onChange={(event) => setLabel(event.target.value)}\n />\n </label>\n <label className=\"vg-format__field\">\n <span>{messages.alignment}</span>\n <select className=\"vg-input\" value={align} onChange={(event) => setAlign(event.target.value as typeof align)}>\n <option value=\"\">{messages.alignments.auto}</option>\n <option value=\"left\">{messages.alignments.left}</option>\n <option value=\"center\">{messages.alignments.center}</option>\n <option value=\"right\">{messages.alignments.right}</option>\n </select>\n </label>\n <label className=\"vg-filter__value\">\n <input type=\"checkbox\" checked={wrap} onChange={(event) => setWrap(event.target.checked)} />\n <span>{messages.wrapText}</span>\n </label>\n {numeric && (\n <fieldset className=\"vg-format__group\">\n <legend>{messages.numberFormat}</legend>\n <select\n className=\"vg-input\"\n aria-label={messages.numberFormat}\n value={style}\n onChange={(event) => setStyle(event.target.value as typeof style)}\n >\n <option value=\"\">{messages.numberStyles.none}</option>\n <option value=\"decimal\">{messages.numberStyles.decimal}</option>\n <option value=\"percent\">{messages.numberStyles.percent}</option>\n <option value=\"currency\">{messages.numberStyles.currency}</option>\n </select>\n {style === \"currency\" && (\n <input\n className=\"vg-input\"\n aria-label={messages.currency}\n placeholder=\"JPY\"\n value={currency}\n onChange={(event) => setCurrency(event.target.value)}\n />\n )}\n {style !== \"\" && (\n <>\n <input\n className=\"vg-input\"\n type=\"number\"\n min={0}\n max={20}\n aria-label={messages.fractionDigits}\n placeholder={messages.fractionDigits}\n value={digits}\n onChange={(event) => setDigits(event.target.value)}\n />\n <label className=\"vg-filter__value\">\n <input type=\"checkbox\" checked={grouping} onChange={(event) => setGrouping(event.target.checked)} />\n <span>{messages.grouping}</span>\n </label>\n </>\n )}\n </fieldset>\n )}\n {temporal && (\n <label className=\"vg-format__field\">\n <span>{messages.datePattern}</span>\n <input\n className=\"vg-input\"\n placeholder=\"yyyy/MM/dd HH:mm\"\n value={pattern}\n onChange={(event) => setPattern(event.target.value)}\n />\n </label>\n )}\n <fieldset className=\"vg-format__group\">\n <legend>{messages.conditionalColors}</legend>\n {rules.map((rule) => {\n const target = view.find((item) => item.name === rule.column);\n const operators = target ? operatorsFor(target.type) : [];\n return (\n <div key={rule.id} className=\"vg-format__rule\">\n {rule.kept ? (\n <code className=\"vg-conditions__expression\">{formulaOf(rule.kept)}</code>\n ) : (\n <div className=\"vg-conditions__row\">\n <select\n className=\"vg-input\"\n aria-label={messages.conditionColumn}\n value={rule.column}\n onChange={(event) => {\n const next = view.find((item) => item.name === event.target.value);\n if (!next) return;\n const kinds = operatorsFor(next.type);\n const operator = kinds.includes(rule.filter.operator) ? rule.filter.operator : kinds[0];\n change(rule.id, { column: next.name, filter: { ...rule.filter, operator } });\n }}\n >\n {view.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={rule.filter.operator}\n onChange={(event) =>\n change(rule.id, { filter: { ...rule.filter, operator: event.target.value as FilterOperator } })\n }\n >\n {operators.map((item) => (\n <option key={item} value={item}>\n {messages.operators[item]}\n </option>\n ))}\n </select>\n {!takesNoValue(rule.filter.operator) && (\n <input\n className=\"vg-input\"\n aria-label={rule.filter.operator === \"between\" ? messages.minimum : messages.value}\n placeholder={rule.filter.operator === \"between\" ? messages.minimum : messages.value}\n value={rule.filter.first}\n onChange={(event) => change(rule.id, { filter: { ...rule.filter, first: event.target.value } })}\n />\n )}\n {rule.filter.operator === \"between\" && (\n <input\n className=\"vg-input\"\n aria-label={messages.maximum}\n placeholder={messages.maximum}\n value={rule.filter.second}\n onChange={(event) => change(rule.id, { filter: { ...rule.filter, second: event.target.value } })}\n />\n )}\n </div>\n )}\n <div className=\"vg-conditions__row\">\n <label className=\"vg-filter__value\">\n <input\n type=\"checkbox\"\n checked={rule.color !== null}\n onChange={(event) => change(rule.id, { color: event.target.checked ? \"#b42318\" : null })}\n />\n <span>{messages.textColor}</span>\n </label>\n {rule.color !== null && (\n <input\n type=\"color\"\n aria-label={messages.textColor}\n value={rule.color}\n onChange={(event) => change(rule.id, { color: event.target.value })}\n />\n )}\n <label className=\"vg-filter__value\">\n <input\n type=\"checkbox\"\n checked={rule.background !== null}\n onChange={(event) => change(rule.id, { background: event.target.checked ? \"#fde68a\" : null })}\n />\n <span>{messages.backgroundColor}</span>\n </label>\n {rule.background !== null && (\n <input\n type=\"color\"\n aria-label={messages.backgroundColor}\n value={rule.background}\n onChange={(event) => change(rule.id, { background: event.target.value })}\n />\n )}\n </div>\n <div className=\"vg-conditions__row\">\n <input\n className=\"vg-input\"\n aria-label={messages.ruleDescription}\n placeholder={messages.ruleDescription}\n value={rule.description}\n onChange={(event) => change(rule.id, { description: event.target.value })}\n />\n <button\n type=\"button\"\n className=\"vg-button vg-button--small\"\n aria-label={messages.removeRule}\n onClick={() => setRules((current) => current.filter((item) => item.id !== rule.id))}\n >\n ×\n </button>\n </div>\n </div>\n );\n })}\n <button\n type=\"button\"\n className=\"vg-button vg-button--small\"\n onClick={() =>\n setRules((current) => [\n ...current,\n {\n id: ruleId(),\n column: column.name,\n filter: { kind: \"condition\", operator: operatorsFor(column.type)[0], first: \"\", second: \"\" },\n color: null,\n background: \"#fde68a\",\n description: \"\",\n },\n ])\n }\n >\n {messages.addRule}\n </button>\n </fieldset>\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={() => dispatch(null)}>\n {messages.clearFormat}\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,6 @@
1
+ /**
2
+ * The content of the toolbar's formula menu, loaded when it first opens: the derived columns of the plan (§4.1) as formulas (§4.11), which can be changed,
3
+ * renamed and removed, and a form that adds one. It is there when the engine derives columns.
4
+ */
5
+ export default function FormulaPanel(): import("react").JSX.Element | null;
6
+ //# sourceMappingURL=formula-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formula-menu.d.ts","sourceRoot":"","sources":["../../src/react/formula-menu.tsx"],"names":[],"mappings":"AA8HA;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,uCAgCnC"}
@@ -0,0 +1,343 @@
1
+ import { c as _c } from "react/compiler-runtime";
2
+ import { use, useId, useRef, useState, useTransition } from "react";
3
+ import { checkPlan, compileFormula, FormulaError, formulaText, planOptions } from "vastgrid-spec";
4
+ import { LocaleContext } from "./context.js";
5
+ import { useGridSelector, useGridStore } from "./hooks.js";
6
+
7
+ /** The text of a derived column's expression as a formula (§4.11), or its JSON when it has none. */
8
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
9
+ function textOf(derived) {
10
+ try {
11
+ return formulaText(derived.expr);
12
+ } catch {
13
+ return JSON.stringify(derived.expr);
14
+ }
15
+ }
16
+
17
+ /**
18
+ * One derived column, or a new one when `derived` is null: its name and formula, compiled against the columns
19
+ * before it (§4.11) and dispatched as `derive.add` or `derive.update` (§6.2.2). A formula that does not compile is
20
+ * not dispatched: its error is shown, and the characters at fault are selected.
21
+ */
22
+ function FormulaForm(t0) {
23
+ const $ = _c(41);
24
+ const {
25
+ derived,
26
+ columns,
27
+ options
28
+ } = t0;
29
+ const store = useGridStore();
30
+ const {
31
+ messages
32
+ } = use(LocaleContext);
33
+ const [name, setName] = useState(derived?.name ?? "");
34
+ let t1;
35
+ if ($[0] !== derived) {
36
+ t1 = derived ? textOf(derived) : "";
37
+ $[0] = derived;
38
+ $[1] = t1;
39
+ } else {
40
+ t1 = $[1];
41
+ }
42
+ const [text, setText] = useState(t1);
43
+ const [error, setError] = useState(null);
44
+ const [pending, startDispatch] = useTransition();
45
+ const formulaRef = useRef(null);
46
+ const errorId = useId();
47
+ let t2;
48
+ if ($[2] !== store) {
49
+ t2 = (command, reset) => startDispatch(async () => {
50
+ const outcome = await store.dispatch(command);
51
+ if (!outcome.ok) {
52
+ setError(outcome.error.message);
53
+ return;
54
+ }
55
+ setError(null);
56
+ if (reset) {
57
+ setName("");
58
+ setText("");
59
+ }
60
+ });
61
+ $[2] = store;
62
+ $[3] = t2;
63
+ } else {
64
+ t2 = $[3];
65
+ }
66
+ const run = t2;
67
+ let t3;
68
+ if ($[4] !== columns || $[5] !== derived || $[6] !== name || $[7] !== options || $[8] !== run || $[9] !== text) {
69
+ t3 = event => {
70
+ event.preventDefault();
71
+ let expr;
72
+ ;
73
+ try {
74
+ expr = compileFormula(text, columns, options).expr;
75
+ } catch (t4) {
76
+ const failure = t4;
77
+ if (!(failure instanceof FormulaError)) {
78
+ throw failure;
79
+ }
80
+ setError(failure.message);
81
+ const input = formulaRef.current;
82
+ input?.focus();
83
+ input?.setSelectionRange(failure.start, Math.max(failure.start, failure.end));
84
+ return;
85
+ }
86
+ if (derived === null) {
87
+ run({
88
+ command: "derive.add",
89
+ name,
90
+ expr
91
+ }, true);
92
+ } else {
93
+ run({
94
+ command: "derive.update",
95
+ name: derived.name,
96
+ expr,
97
+ ...(name === derived.name ? {} : {
98
+ rename: name
99
+ })
100
+ }, false);
101
+ }
102
+ };
103
+ $[4] = columns;
104
+ $[5] = derived;
105
+ $[6] = name;
106
+ $[7] = options;
107
+ $[8] = run;
108
+ $[9] = text;
109
+ $[10] = t3;
110
+ } else {
111
+ t3 = $[10];
112
+ }
113
+ const submit = t3;
114
+ const t4 = derived?.name ?? messages.newFormula;
115
+ let t5;
116
+ if ($[11] === Symbol.for("react.memo_cache_sentinel")) {
117
+ t5 = event_0 => setName(event_0.target.value);
118
+ $[11] = t5;
119
+ } else {
120
+ t5 = $[11];
121
+ }
122
+ let t6;
123
+ if ($[12] !== messages.formulaName || $[13] !== name) {
124
+ t6 = /*#__PURE__*/_jsx("input", {
125
+ className: "vg-input vg-formulas__name",
126
+ "aria-label": messages.formulaName,
127
+ placeholder: messages.formulaName,
128
+ required: true,
129
+ value: name,
130
+ onChange: t5
131
+ });
132
+ $[12] = messages.formulaName;
133
+ $[13] = name;
134
+ $[14] = t6;
135
+ } else {
136
+ t6 = $[14];
137
+ }
138
+ const t7 = error !== null;
139
+ const t8 = error === null ? undefined : errorId;
140
+ let t9;
141
+ if ($[15] === Symbol.for("react.memo_cache_sentinel")) {
142
+ t9 = event_1 => setText(event_1.target.value);
143
+ $[15] = t9;
144
+ } else {
145
+ t9 = $[15];
146
+ }
147
+ let t10;
148
+ if ($[16] !== messages.formula || $[17] !== messages.formulaExample || $[18] !== t7 || $[19] !== t8 || $[20] !== text) {
149
+ t10 = /*#__PURE__*/_jsx("input", {
150
+ ref: formulaRef,
151
+ className: "vg-input vg-formulas__formula",
152
+ "aria-label": messages.formula,
153
+ "aria-invalid": t7,
154
+ "aria-describedby": t8,
155
+ placeholder: messages.formulaExample,
156
+ required: true,
157
+ spellCheck: false,
158
+ value: text,
159
+ onChange: t9
160
+ });
161
+ $[16] = messages.formula;
162
+ $[17] = messages.formulaExample;
163
+ $[18] = t7;
164
+ $[19] = t8;
165
+ $[20] = text;
166
+ $[21] = t10;
167
+ } else {
168
+ t10 = $[21];
169
+ }
170
+ const t11 = derived === null ? messages.addFormula : messages.applyFormula;
171
+ let t12;
172
+ if ($[22] !== pending || $[23] !== t11) {
173
+ t12 = /*#__PURE__*/_jsx("button", {
174
+ type: "submit",
175
+ className: "vg-button",
176
+ disabled: pending,
177
+ children: t11
178
+ });
179
+ $[22] = pending;
180
+ $[23] = t11;
181
+ $[24] = t12;
182
+ } else {
183
+ t12 = $[24];
184
+ }
185
+ let t13;
186
+ if ($[25] !== derived || $[26] !== messages.removeFormula || $[27] !== pending || $[28] !== run) {
187
+ t13 = derived !== null && /*#__PURE__*/_jsx("button", {
188
+ type: "button",
189
+ className: "vg-button",
190
+ disabled: pending,
191
+ onClick: () => run({
192
+ command: "derive.remove",
193
+ name: derived.name
194
+ }, false),
195
+ children: messages.removeFormula
196
+ });
197
+ $[25] = derived;
198
+ $[26] = messages.removeFormula;
199
+ $[27] = pending;
200
+ $[28] = run;
201
+ $[29] = t13;
202
+ } else {
203
+ t13 = $[29];
204
+ }
205
+ let t14;
206
+ if ($[30] !== error || $[31] !== errorId) {
207
+ t14 = error !== null && /*#__PURE__*/_jsx("p", {
208
+ id: errorId,
209
+ role: "alert",
210
+ className: "vg-formulas__error",
211
+ children: error
212
+ });
213
+ $[30] = error;
214
+ $[31] = errorId;
215
+ $[32] = t14;
216
+ } else {
217
+ t14 = $[32];
218
+ }
219
+ let t15;
220
+ if ($[33] !== submit || $[34] !== t10 || $[35] !== t12 || $[36] !== t13 || $[37] !== t14 || $[38] !== t4 || $[39] !== t6) {
221
+ t15 = /*#__PURE__*/_jsxs("form", {
222
+ className: "vg-formulas__row",
223
+ onSubmit: submit,
224
+ "aria-label": t4,
225
+ children: [t6, t10, t12, t13, t14]
226
+ });
227
+ $[33] = submit;
228
+ $[34] = t10;
229
+ $[35] = t12;
230
+ $[36] = t13;
231
+ $[37] = t14;
232
+ $[38] = t4;
233
+ $[39] = t6;
234
+ $[40] = t15;
235
+ } else {
236
+ t15 = $[40];
237
+ }
238
+ return t15;
239
+ }
240
+
241
+ /**
242
+ * The content of the toolbar's formula menu, loaded when it first opens: the derived columns of the plan (§4.1) as formulas (§4.11), which can be changed,
243
+ * renamed and removed, and a form that adds one. It is there when the engine derives columns.
244
+ */
245
+ export default function FormulaPanel() {
246
+ const $ = _c(21);
247
+ const table = useGridSelector(_temp);
248
+ const derive = useGridSelector(_temp2);
249
+ if (!table || table.capabilities.plan?.derive === false) {
250
+ return null;
251
+ }
252
+ let list;
253
+ let options;
254
+ let rows;
255
+ let scopes;
256
+ if ($[0] !== derive || $[1] !== table.capabilities || $[2] !== table.columns) {
257
+ options = planOptions(table.capabilities);
258
+ list = derive ?? [];
259
+ scopes = [];
260
+ rows = table.columns;
261
+ for (const [index, derived] of list.entries()) {
262
+ scopes.push(rows);
263
+ try {
264
+ rows = checkPlan({
265
+ derive: list.slice(0, index + 1)
266
+ }, table.columns, options).rows;
267
+ } catch {
268
+ rows = [...rows, {
269
+ name: derived.name,
270
+ type: "string"
271
+ }];
272
+ }
273
+ }
274
+ $[0] = derive;
275
+ $[1] = table.capabilities;
276
+ $[2] = table.columns;
277
+ $[3] = list;
278
+ $[4] = options;
279
+ $[5] = rows;
280
+ $[6] = scopes;
281
+ } else {
282
+ list = $[3];
283
+ options = $[4];
284
+ rows = $[5];
285
+ scopes = $[6];
286
+ }
287
+ let t0;
288
+ if ($[7] !== list || $[8] !== options || $[9] !== scopes) {
289
+ let t1;
290
+ if ($[11] !== options || $[12] !== scopes) {
291
+ t1 = (derived_0, index_0) => /*#__PURE__*/_jsx(FormulaForm, {
292
+ derived: derived_0,
293
+ columns: scopes[index_0],
294
+ options: options
295
+ }, `${derived_0.name}\u0000${textOf(derived_0)}`);
296
+ $[11] = options;
297
+ $[12] = scopes;
298
+ $[13] = t1;
299
+ } else {
300
+ t1 = $[13];
301
+ }
302
+ t0 = list.map(t1);
303
+ $[7] = list;
304
+ $[8] = options;
305
+ $[9] = scopes;
306
+ $[10] = t0;
307
+ } else {
308
+ t0 = $[10];
309
+ }
310
+ let t1;
311
+ if ($[14] !== list.length || $[15] !== options || $[16] !== rows) {
312
+ t1 = /*#__PURE__*/_jsx(FormulaForm, {
313
+ derived: null,
314
+ columns: rows,
315
+ options: options
316
+ }, list.length);
317
+ $[14] = list.length;
318
+ $[15] = options;
319
+ $[16] = rows;
320
+ $[17] = t1;
321
+ } else {
322
+ t1 = $[17];
323
+ }
324
+ let t2;
325
+ if ($[18] !== t0 || $[19] !== t1) {
326
+ t2 = /*#__PURE__*/_jsxs(_Fragment, {
327
+ children: [t0, t1]
328
+ });
329
+ $[18] = t0;
330
+ $[19] = t1;
331
+ $[20] = t2;
332
+ } else {
333
+ t2 = $[20];
334
+ }
335
+ return t2;
336
+ }
337
+ function _temp2(snapshot_0) {
338
+ return snapshot_0.document.plan?.derive;
339
+ }
340
+ function _temp(snapshot) {
341
+ return snapshot.table;
342
+ }
343
+ //# sourceMappingURL=formula-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["use","useId","useRef","useState","useTransition","checkPlan","compileFormula","FormulaError","formulaText","planOptions","LocaleContext","useGridSelector","useGridStore","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","textOf","derived","expr","JSON","stringify","FormulaForm","t0","$","_c","columns","options","store","messages","name","setName","t1","text","setText","error","setError","pending","startDispatch","formulaRef","errorId","t2","command","reset","outcome","dispatch","ok","message","run","t3","event","preventDefault","t4","failure","input","current","focus","setSelectionRange","start","Math","max","end","rename","submit","newFormula","t5","Symbol","for","event_0","target","value","t6","formulaName","className","placeholder","required","onChange","t7","t8","undefined","t9","event_1","t10","formula","formulaExample","spellCheck","t11","addFormula","applyFormula","t12","type","children","t13","removeFormula","onClick","t14","role","t15","FormulaPanel","table","_temp","derive","_temp2","capabilities","plan","list","rows","scopes","index","entries","push","slice","derived_0","index_0","map","length","snapshot_0","snapshot","document"],"sources":["formula-menu.tsx"],"sourcesContent":["import { type FormEvent, use, useId, useRef, useState, useTransition } from \"react\";\nimport {\n type CheckOptions,\n type Column,\n checkPlan,\n compileFormula,\n type Derived,\n FormulaError,\n formulaText,\n type GridCommand,\n planOptions,\n} from \"vastgrid-spec\";\nimport { LocaleContext } from \"./context.js\";\nimport { useGridSelector, useGridStore } from \"./hooks.js\";\n\n/** The text of a derived column's expression as a formula (§4.11), or its JSON when it has none. */\nfunction textOf(derived: Derived): string {\n try {\n return formulaText(derived.expr);\n } catch {\n return JSON.stringify(derived.expr);\n }\n}\n\n/**\n * One derived column, or a new one when `derived` is null: its name and formula, compiled against the columns\n * before it (§4.11) and dispatched as `derive.add` or `derive.update` (§6.2.2). A formula that does not compile is\n * not dispatched: its error is shown, and the characters at fault are selected.\n */\nfunction FormulaForm({\n derived,\n columns,\n options,\n}: {\n derived: Derived | null;\n columns: readonly Column[];\n options: CheckOptions;\n}) {\n const store = useGridStore();\n const { messages } = use(LocaleContext);\n const [name, setName] = useState(derived?.name ?? \"\");\n const [text, setText] = useState(derived ? textOf(derived) : \"\");\n const [error, setError] = useState<string | null>(null);\n const [pending, startDispatch] = useTransition();\n const formulaRef = useRef<HTMLInputElement>(null);\n const errorId = useId();\n\n const run = (command: GridCommand, reset: boolean) =>\n startDispatch(async () => {\n const outcome = await store.dispatch(command);\n if (!outcome.ok) {\n setError(outcome.error.message);\n return;\n }\n setError(null);\n if (reset) {\n setName(\"\");\n setText(\"\");\n }\n });\n\n const submit = (event: FormEvent<HTMLFormElement>) => {\n event.preventDefault();\n let expr: Derived[\"expr\"];\n try {\n expr = compileFormula(text, columns, options).expr;\n } catch (failure) {\n if (!(failure instanceof FormulaError)) throw failure;\n setError(failure.message);\n const input = formulaRef.current;\n input?.focus();\n input?.setSelectionRange(failure.start, Math.max(failure.start, failure.end));\n return;\n }\n if (derived === null) run({ command: \"derive.add\", name, expr }, true);\n else\n run(\n { command: \"derive.update\", name: derived.name, expr, ...(name === derived.name ? {} : { rename: name }) },\n false,\n );\n };\n\n return (\n <form className=\"vg-formulas__row\" onSubmit={submit} aria-label={derived?.name ?? messages.newFormula}>\n <input\n className=\"vg-input vg-formulas__name\"\n aria-label={messages.formulaName}\n placeholder={messages.formulaName}\n required\n value={name}\n onChange={(event) => setName(event.target.value)}\n />\n <input\n ref={formulaRef}\n className=\"vg-input vg-formulas__formula\"\n aria-label={messages.formula}\n aria-invalid={error !== null}\n aria-describedby={error === null ? undefined : errorId}\n placeholder={messages.formulaExample}\n required\n spellCheck={false}\n value={text}\n onChange={(event) => setText(event.target.value)}\n />\n <button type=\"submit\" className=\"vg-button\" disabled={pending}>\n {derived === null ? messages.addFormula : messages.applyFormula}\n </button>\n {derived !== null && (\n <button\n type=\"button\"\n className=\"vg-button\"\n disabled={pending}\n onClick={() => run({ command: \"derive.remove\", name: derived.name }, false)}\n >\n {messages.removeFormula}\n </button>\n )}\n {error !== null && (\n <p id={errorId} role=\"alert\" className=\"vg-formulas__error\">\n {error}\n </p>\n )}\n </form>\n );\n}\n\n/**\n * The content of the toolbar's formula menu, loaded when it first opens: the derived columns of the plan (§4.1) as formulas (§4.11), which can be changed,\n * renamed and removed, and a form that adds one. It is there when the engine derives columns.\n */\nexport default function FormulaPanel() {\n const table = useGridSelector((snapshot) => snapshot.table);\n const derive = useGridSelector((snapshot) => snapshot.document.plan?.derive);\n if (!table || table.capabilities.plan?.derive === false) return null;\n const options = planOptions(table.capabilities);\n const list = derive ?? [];\n // Each formula uses the table's columns and the derived columns before it.\n const scopes: Column[][] = [];\n let rows: Column[] = table.columns;\n for (const [index, derived] of list.entries()) {\n scopes.push(rows);\n try {\n rows = checkPlan({ derive: list.slice(0, index + 1) }, table.columns, options).rows;\n } catch {\n rows = [...rows, { name: derived.name, type: \"string\" }];\n }\n }\n\n return (\n <>\n {list.map((derived, index) => (\n // A formula changed elsewhere (an agent, undo) shows anew.\n <FormulaForm\n key={`${derived.name}\\u0000${textOf(derived)}`}\n derived={derived}\n columns={scopes[index]}\n options={options}\n />\n ))}\n <FormulaForm key={list.length} derived={null} columns={rows} options={options} />\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,33 @@
1
+ import { type RefObject } from "react";
2
+ import { type RowKey } from "vastgrid-spec";
3
+ import type { CellAction, CellHooks, ColumnGroup, GridCell } from "../canvas/hooks.js";
4
+ /** A click or Space on a cell that is a link or a button (`cellAction`). */
5
+ export interface CellActionEvent extends GridCell {
6
+ action: CellAction;
7
+ /** The key of the cell's row (§5.3), when it is read. */
8
+ key: RowKey | undefined;
9
+ }
10
+ export interface GridBodyProps {
11
+ rowHeight?: number;
12
+ headerHeight?: number;
13
+ /** A check box for each row in the gutter (§5.2.1 of the specification). */
14
+ checkboxes?: boolean;
15
+ columnGroups?: readonly ColumnGroup[];
16
+ groupHeaderHeight?: number;
17
+ wrapLines?: number;
18
+ hooks: CellHooks;
19
+ onCellAction?: (event: CellActionEvent) => void;
20
+ /** Opens the find bar (⌘F or Ctrl+F). */
21
+ onFind?: () => void;
22
+ label: string;
23
+ /** Receives the scroller, which has the focus of the grid. */
24
+ scrollerRef: RefObject<HTMLDivElement | null>;
25
+ announce: (text: string) => void;
26
+ }
27
+ /**
28
+ * The canvas and the scroller over it (§6 of react.md): keys and pointers become commands, the canvas draws
29
+ * the store without rendering React, and the accessibility rows follow when scrolling pauses. Rendered only in
30
+ * the browser: on the server, the nearest Suspense boundary sends its fallback, the first rows as HTML.
31
+ */
32
+ export declare function GridBody({ rowHeight, headerHeight, checkboxes, columnGroups, groupHeaderHeight, wrapLines, hooks, onCellAction, onFind, label, scrollerRef, announce, }: GridBodyProps): import("react").JSX.Element;
33
+ //# sourceMappingURL=grid-body.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid-body.d.ts","sourceRoot":"","sources":["../../src/react/grid-body.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EASf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAkC,KAAK,MAAM,EAAE,MAAM,eAAe,CAAC;AAG5E,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAmIvF,4EAA4E;AAC5E,MAAM,WAAW,eAAgB,SAAQ,QAAQ;IAC/C,MAAM,EAAE,UAAU,CAAC;IACnB,yDAAyD;IACzD,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACtC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAChD,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,8DAA8D;IAC9D,WAAW,EAAE,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC9C,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EACvB,SAAS,EACT,YAAY,EACZ,UAAkB,EAClB,YAAY,EACZ,iBAAiB,EACjB,SAAS,EACT,KAAK,EACL,YAAY,EACZ,MAAM,EACN,KAAK,EACL,WAAW,EACX,QAAQ,GACT,EAAE,aAAa,+BAsiBf"}