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":["lazy","Suspense","use","useEffect","useEffectEvent","useId","useLayoutEffect","useRef","useState","browser","CommandError","GridCanvas","isApple","keyCommand","typesText","allState","checkedCount","checkState","AccessibleRows","cellId","CellEditor","LocaleContext","SaveContext","useGridSelector","useGridStore","jsx","_jsx","jsxs","_jsxs","ColumnMenu","then","module","default","CellMenu","pick","event","key","shiftKey","altKey","ctrlKey","metaKey","writeClipboard","data","output","tsv","html","setData","writeClipboardLater","clipboard","navigator","undefined","ClipboardItem","write","Blob","type","writeText","useClipboard","store","scroller","announce","$","_c","messages","number","t0","failure","copied","format","countCells","failed","report","t1","current","element","onBeforeCopy","document","activeElement","preventDefault","onCopy","event_0","clipboardData","outcome","dispatchSync","command","ok","error","reason","message","dispatch","later","addEventListener","onPaste","event_1","text","getData","outcome_0","removeEventListener","t2","split","reduce","count","line","length","GridBody","rowHeight","headerHeight","checkboxes","columnGroups","groupHeaderHeight","wrapLines","hooks","onCellAction","onFind","label","scrollerRef","canvas","geometry","rootRef","canvasRef","sizerRef","drag","editor","locale","saving","follow","id","rowCount","_temp","columns","_temp2","busy","_temp3","active","_temp4","menu","setMenu","totalsRow","_temp6","pressed","cellMenu","setCellMenu","t3","t4","setSizes","t5","t6","setLocale","t7","t8","setCheckboxes","t10","t9","setWrapLines","t11","t12","setColumnGroups","cellText","cellStyle","drawCell","cellAction","t13","t14","setHooks","t15","t16","root","sizer","detach","attach","draw","cancelAnimationFrame","frame","point","_temp7","t17","column","getSnapshot","displayed","name","nameOf","onPointerDown","onPointerMove","onPointerUp","toggleCheck","buttons","button","scroller_0","currentTarget","x","y","clientWidth","clientHeight","focus","preventScroll","hit","primary","mode","start","kind","last","t18","extra","pointer","pointerId","width","clientX","setPointerCapture","area","column_0","row","check","session","view","all","checked","plan","dispatchCheck","level","span","groupSpan","from","to","names","slice","map","_temp8","String","column_1","edge","columnWidth","movedWith","shift","t19","scroller_1","x_0","y_0","hit_0","Math","max","gutterWidth","min","bottom","column_2","key_0","anchor","extendTo","t20","Symbol","for","stopFollowing","t21","scroller_2","x_1","y_1","beyondY","beyondX","state","step","current_0","dy","dx","scrollTop","sign","abs","scrollLeft","requestAnimationFrame","followPointer","current_1","x_2","y_2","hit_1","action","actionAt","style","cursor","previewWidth","moving","target","dropAt","before","previewDrop","t22","event_2","current_2","releasePointerCapture","add","name_0","round","checkedUnknown","session_0","document_0","view_0","checkedRows","key_1","rowKey","session_1","document_1","state_0","keys","name_1","last_0","selection","at","rows","includes","_temp9","filter","item_2","item","x_3","names_0","columnAt","middle","columnX","index","moved","name_2","findIndex","item_3","every","item_4","i","lineX","column_3","index_0","scroller_3","rect_0","getBoundingClientRect","rect","left","top","openMenu","act","onClick","event_3","rect_1","hit_2","clientY","column_4","row_0","column_5","found","cell","onContextMenu","event_4","rect_2","hit_3","column_6","at_0","open","isSelected","row_1","column_7","active_0","some","range","Error","copySelection","scroller_4","active_1","index_1","item_5","box","cellBox","rect_3","height","openCellMenu","closeCellMenu","closeMenu","onDoubleClick","startEditing","event_5","rect_4","hit_4","name_3","outcome_1","readOnly","t23","event_6","composing","nativeEvent","isComposing","keyCode","active_2","column_8","item_6","table","capabilities","find","open_0","detail","column_9","index_2","item_7","command_0","save","onKeyDown","t24","t25","t26","t27","t28","t29","t30","t31","t32","t33","t34","t35","t36","activeColumn","item_8","activeRow","activeShown","className","t37","t38","t39","role","tabIndex","children","t40","t41","fallback","t42","t43","item_1","item_0","snapshot_3","snapshot","aggregate","_temp5","setting","total","snapshot_2","snapshot_1","pending","snapshot_0"],"sources":["grid-body.tsx"],"sourcesContent":["import {\n type KeyboardEvent,\n lazy,\n type MouseEvent,\n type PointerEvent,\n type RefObject,\n Suspense,\n use,\n useEffect,\n useEffectEvent,\n useId,\n useLayoutEffect,\n useRef,\n useState,\n} from \"react\";\nimport { browser } from \"react-dom\";\nimport { CommandError, type GridCommand, type RowKey } from \"vastgrid-spec\";\nimport type { Hit } from \"../canvas/geometry.js\";\nimport { GridCanvas } from \"../canvas/grid-canvas.js\";\nimport type { CellAction, CellHooks, ColumnGroup, GridCell } from \"../canvas/hooks.js\";\nimport { isApple, type KeyInput, keyCommand, typesText } from \"../canvas/keys.js\";\nimport { allState, checkedCount, checkState } from \"../core/checked.js\";\nimport type { GridStore } from \"../core/store.js\";\nimport { AccessibleRows, cellId } from \"./accessible-rows.js\";\nimport { CellEditor, type EditorControl } from \"./cell-editor.js\";\nimport type { CellMenuTarget } from \"./cell-menu.js\";\nimport type { MenuTarget } from \"./column-menu.js\";\nimport { LocaleContext, SaveContext } from \"./context.js\";\nimport { useGridSelector, useGridStore } from \"./hooks.js\";\n\n// The menus load when they first open (§10 of react.md).\nconst ColumnMenu = lazy(() => import(\"./column-menu.js\").then((module) => ({ default: module.ColumnMenu })));\nconst CellMenu = lazy(() => import(\"./cell-menu.js\").then((module) => ({ default: module.CellMenu })));\n\ninterface Drag {\n kind: \"cells\" | \"rows\" | \"resize\" | \"move\";\n pointer: number;\n /** The last cell or row the pointer was over, so that moves within it dispatch nothing. */\n last: string;\n /** For a resize: the column, its width and the pointer's x when the drag started. */\n column: number;\n width: number;\n x: number;\n /** For a move: the columns dragged, whether the pointer moved enough to drag, and where they would go. */\n names?: string[];\n moving?: boolean;\n before?: string | null;\n /** Shift was held when a header was pressed: a click adds a sort key. */\n shift?: boolean;\n}\n\n/** The members of a keyboard event that the grid's keys read. */\nfunction pick(event: KeyInput): KeyInput {\n return {\n key: event.key,\n shiftKey: event.shiftKey,\n altKey: event.altKey,\n ctrlKey: event.ctrlKey,\n metaKey: event.metaKey,\n };\n}\n\n/** Writes the output of `copy` (§6.6) into a clipboard. */\nfunction writeClipboard(data: DataTransfer, output: unknown) {\n const { tsv, html } = output as { tsv: string; html: string };\n data.setData(\"text/plain\", tsv);\n data.setData(\"text/html\", html);\n}\n\nasync function writeClipboardLater(output: unknown) {\n const { tsv, html } = output as { tsv: string; html: string };\n const clipboard = typeof navigator === \"undefined\" ? undefined : navigator.clipboard;\n if (!clipboard) return;\n if (typeof ClipboardItem === \"function\" && clipboard.write) {\n await clipboard.write([\n new ClipboardItem({\n \"text/plain\": new Blob([tsv], { type: \"text/plain\" }),\n \"text/html\": new Blob([html], { type: \"text/html\" }),\n }),\n ]);\n } else {\n await clipboard.writeText(tsv);\n }\n}\n\n/** Copies the selection: at once when its rows are read, after reading them otherwise. */\nfunction useClipboard(store: GridStore, scroller: RefObject<HTMLDivElement | null>, announce: (text: string) => void) {\n const { messages, number } = use(LocaleContext);\n const report = useEffectEvent((output: unknown, failure: string | null) => {\n announce(failure === null ? messages.copied(number.format(countCells(output))) : messages.failed(failure));\n });\n useEffect(() => {\n const element = scroller.current;\n if (!element) return;\n // Without selected text, browsers disable copying unless \"beforecopy\" is cancelled.\n const onBeforeCopy = (event: Event) => {\n if (document.activeElement === element) event.preventDefault();\n };\n const onCopy = (event: ClipboardEvent) => {\n if (document.activeElement !== element || !event.clipboardData) return;\n event.preventDefault();\n const outcome = store.dispatchSync({ command: \"copy\" });\n if (outcome.ok) {\n writeClipboard(event.clipboardData, outcome.output);\n report(outcome.output, null);\n return;\n }\n if (!(outcome.error instanceof CommandError) || outcome.error.reason !== \"not_loaded\") {\n report(null, outcome.error.message);\n return;\n }\n // The rows are read first; the clipboard is then written through the asynchronous API.\n void store.dispatch({ command: \"copy\" }).then(async (later) => {\n if (!later.ok) {\n report(null, later.error.message);\n return;\n }\n await writeClipboardLater(later.output);\n report(later.output, null);\n });\n };\n document.addEventListener(\"beforecopy\", onBeforeCopy);\n // Pasting writes the clipboard into the selection (§6.5.1).\n const onPaste = (event: ClipboardEvent) => {\n if (document.activeElement !== element || !event.clipboardData) return;\n event.preventDefault();\n const text = event.clipboardData.getData(\"text/plain\");\n const html = event.clipboardData.getData(\"text/html\");\n const clipboard = text ? { text } : html ? { html } : {};\n void store.dispatch({ command: \"edit.paste\" }, { clipboard }).then((outcome) => {\n if (!outcome.ok) report(null, outcome.error.message);\n });\n };\n document.addEventListener(\"copy\", onCopy);\n document.addEventListener(\"paste\", onPaste);\n return () => {\n document.removeEventListener(\"beforecopy\", onBeforeCopy);\n document.removeEventListener(\"copy\", onCopy);\n document.removeEventListener(\"paste\", onPaste);\n };\n }, [store, scroller]);\n}\n\n/** The cells of a copy: its TSV's fields. */\nfunction countCells(output: unknown) {\n const { tsv } = output as { tsv: string };\n if (tsv === \"\") return 0;\n return tsv.split(\"\\n\").reduce((count, line) => count + line.split(\"\\t\").length, 0);\n}\n\n/** A click or Space on a cell that is a link or a button (`cellAction`). */\nexport interface CellActionEvent extends GridCell {\n action: CellAction;\n /** The key of the cell's row (§5.3), when it is read. */\n key: RowKey | undefined;\n}\n\nexport interface GridBodyProps {\n rowHeight?: number;\n headerHeight?: number;\n /** A check box for each row in the gutter (§5.2.1 of the specification). */\n checkboxes?: boolean;\n columnGroups?: readonly ColumnGroup[];\n groupHeaderHeight?: number;\n wrapLines?: number;\n hooks: CellHooks;\n onCellAction?: (event: CellActionEvent) => void;\n /** Opens the find bar (⌘F or Ctrl+F). */\n onFind?: () => void;\n label: string;\n /** Receives the scroller, which has the focus of the grid. */\n scrollerRef: RefObject<HTMLDivElement | null>;\n announce: (text: string) => void;\n}\n\n/**\n * The canvas and the scroller over it (§6 of react.md): keys and pointers become commands, the canvas draws\n * the store without rendering React, and the accessibility rows follow when scrolling pauses. Rendered only in\n * the browser: on the server, the nearest Suspense boundary sends its fallback, the first rows as HTML.\n */\nexport function GridBody({\n rowHeight,\n headerHeight,\n checkboxes = false,\n columnGroups,\n groupHeaderHeight,\n wrapLines,\n hooks,\n onCellAction,\n onFind,\n label,\n scrollerRef,\n announce,\n}: GridBodyProps) {\n use(browser(\"The grid draws on a canvas, which only the browser has.\"));\n const store = useGridStore();\n const [canvas] = useState(() => new GridCanvas({ rowHeight, headerHeight }));\n const { geometry } = canvas;\n const rootRef = useRef<HTMLDivElement>(null);\n const canvasRef = useRef<HTMLCanvasElement>(null);\n const sizerRef = useRef<HTMLDivElement>(null);\n const drag = useRef<Drag | null>(null);\n const editor = useRef<EditorControl>(null);\n const { messages, locale, number } = use(LocaleContext);\n const saving = use(SaveContext);\n const follow = useRef<{ frame: number; x: number; y: number } | null>(null);\n const id = useId();\n const rowCount = useGridSelector((snapshot) => snapshot.view?.rowCount ?? 0);\n const columns = useGridSelector((snapshot) => snapshot.displayed);\n const busy = useGridSelector((snapshot) => snapshot.view === null || snapshot.pending !== null);\n const active = useGridSelector((snapshot) => snapshot.session.active);\n const [menu, setMenu] = useState<MenuTarget | null>(null);\n const totalsRow = useGridSelector(\n (snapshot) =>\n !snapshot.document.plan?.aggregate && snapshot.displayed.some((item) => item.setting.total !== undefined),\n );\n const pressed = useRef(false);\n const later = useRef<(() => void) | null>(null);\n const [cellMenu, setCellMenu] = useState<CellMenuTarget | null>(null);\n\n useLayoutEffect(() => {\n canvas.setSizes(rowHeight, headerHeight);\n }, [canvas, rowHeight, headerHeight]);\n\n useLayoutEffect(() => {\n canvas.setLocale(locale);\n }, [canvas, locale]);\n\n useLayoutEffect(() => {\n canvas.setCheckboxes(checkboxes);\n }, [canvas, checkboxes]);\n\n useLayoutEffect(() => {\n canvas.setWrapLines(wrapLines);\n }, [canvas, wrapLines]);\n\n useLayoutEffect(() => {\n canvas.setColumnGroups(columnGroups, groupHeaderHeight);\n }, [canvas, columnGroups, groupHeaderHeight]);\n\n const { cellText, cellStyle, drawCell, cellAction } = hooks;\n useLayoutEffect(() => {\n canvas.setHooks({ cellText, cellStyle, drawCell, cellAction });\n }, [canvas, cellText, cellStyle, drawCell, cellAction]);\n\n useLayoutEffect(() => {\n const root = rootRef.current;\n const element = canvasRef.current;\n const scroller = scrollerRef.current;\n const sizer = sizerRef.current;\n if (!root || !element || !scroller || !sizer) return;\n const detach = canvas.attach({ root, canvas: element, scroller, sizer }, store);\n // The first frame is drawn before the browser paints, with the rows the store already has.\n canvas.draw();\n return () => {\n if (follow.current) cancelAnimationFrame(follow.current.frame);\n follow.current = null;\n detach();\n };\n }, [canvas, store, scrollerRef]);\n\n useClipboard(store, scrollerRef, announce);\n\n const point = (event: PointerEvent<HTMLDivElement>) => {\n const rect = event.currentTarget.getBoundingClientRect();\n return { x: event.clientX - rect.left, y: event.clientY - rect.top };\n };\n\n const nameOf = (column: number) => store.getSnapshot().displayed[column]?.column.name;\n\n const onPointerDown = (event: PointerEvent<HTMLDivElement>) => {\n pressed.current = event.buttons !== 0;\n if (event.button !== 0) return;\n const scroller = event.currentTarget;\n const { x, y } = point(event);\n // Clicks on the scroll bars scroll.\n if (x > scroller.clientWidth || y > scroller.clientHeight) return;\n scroller.focus({ preventScroll: true });\n event.preventDefault();\n const hit: Hit = geometry.hit(x, y);\n const primary = isApple() ? event.metaKey : event.ctrlKey;\n const mode = event.shiftKey ? \"extend\" : primary ? \"add\" : \"replace\";\n const start = (kind: Drag[\"kind\"], last: string, extra: Partial<Drag> = {}) => {\n drag.current = { kind, pointer: event.pointerId, last, column: 0, width: 0, x: event.clientX, ...extra };\n scroller.setPointerCapture(event.pointerId);\n };\n if (hit.area === \"cell\") {\n const column = nameOf(hit.column);\n if (column === undefined) return;\n void store.dispatch({ command: \"select\", row: hit.row, column, mode });\n start(\"cells\", `${hit.row}:${hit.column}`);\n } else if (hit.area === \"gutter\" && hit.check) {\n toggleCheck(hit.row);\n } else if (hit.area === \"corner\" && hit.check) {\n const { session, document, view } = store.getSnapshot();\n const all = allState(session.checked, document.plan, view?.rowCount ?? 0);\n // The header's box checks every row of the view, or none once they all are.\n dispatchCheck(all === \"all\" ? { command: \"check.clear\" } : { command: \"check.all\" });\n } else if (hit.area === \"group\" && hit.level !== undefined) {\n // A group's header selects its columns.\n const span = canvas.groupSpan(hit.column, hit.level);\n const from = span && nameOf(span[0]);\n const to = span && nameOf(span[1]);\n if (from && to && span) {\n void store.dispatch({ command: \"select.columns\", from, to, mode });\n // Dragging a group's header moves its columns.\n const names = columns.slice(span[0], span[1] + 1).map((item) => item.column.name);\n start(\"move\", \"\", { column: span[0], names });\n }\n } else if (hit.area === \"gutter\") {\n void store.dispatch({ command: \"select.rows\", from: hit.row, to: hit.row, mode });\n start(\"rows\", String(hit.row));\n } else if (hit.area === \"corner\") {\n void store.dispatch({ command: \"select.all\" });\n } else if (hit.area === \"header\") {\n const column = nameOf(hit.column);\n if (column === undefined) return;\n // The menu opens on the click, after the pointer is up: a popover shown before closes as the pointer goes up.\n if (hit.menu) return;\n if (hit.edge) start(\"resize\", \"\", { column: hit.column, width: geometry.columnWidth(hit.column) });\n // A click sorts by the column; dragging it moves it (with the other columns selected whole with it).\n else start(\"move\", \"\", { column: hit.column, names: movedWith(column), shift: event.shiftKey });\n }\n };\n\n /** Extends the selection being dragged to the cell or the row at a point, kept within the body. */\n const extendTo = (scroller: HTMLElement, current: Drag, x: number, y: number) => {\n const hit = geometry.hit(\n Math.max(geometry.gutterWidth + 1, Math.min(scroller.clientWidth - 1, x)),\n Math.max(geometry.headerHeight + 1, Math.min(geometry.bottom - 1, y)),\n );\n if (current.kind === \"cells\" && hit.area === \"cell\") {\n const key = `${hit.row}:${hit.column}`;\n const column = nameOf(hit.column);\n if (key === current.last || column === undefined) return;\n current.last = key;\n void store.dispatch({ command: \"select\", row: hit.row, column, mode: \"extend\" });\n } else if (current.kind === \"rows\" && (hit.area === \"cell\" || hit.area === \"gutter\")) {\n const key = String(hit.row);\n if (key === current.last) return;\n current.last = key;\n const anchor = store.getSnapshot().session.anchor?.row ?? hit.row;\n void store.dispatch({ command: \"select.rows\", from: anchor, to: hit.row, mode: \"extend\" });\n }\n };\n\n const stopFollowing = () => {\n if (follow.current) cancelAnimationFrame(follow.current.frame);\n follow.current = null;\n };\n\n /** While a drag is beyond the body, scrolls towards the pointer every frame and extends the selection. */\n const followPointer = (scroller: HTMLElement, x: number, y: number) => {\n const beyondY =\n y < geometry.headerHeight ? y - geometry.headerHeight : y > geometry.bottom ? y - geometry.bottom : 0;\n const beyondX =\n x < geometry.gutterWidth ? x - geometry.gutterWidth : x > scroller.clientWidth ? x - scroller.clientWidth : 0;\n if (beyondX === 0 && beyondY === 0) {\n stopFollowing();\n return;\n }\n if (follow.current) {\n follow.current.x = x;\n follow.current.y = y;\n return;\n }\n const state = { frame: 0, x, y };\n follow.current = state;\n const step = () => {\n const current = drag.current;\n if (follow.current !== state || !current) return;\n const dy =\n state.y < geometry.headerHeight ? state.y - geometry.headerHeight : Math.max(0, state.y - geometry.bottom);\n const dx =\n state.x < geometry.gutterWidth ? state.x - geometry.gutterWidth : Math.max(0, state.x - scroller.clientWidth);\n // Faster the farther the pointer is.\n scroller.scrollTop += Math.sign(dy) * Math.min(80, Math.abs(dy) / 2 + 4);\n if (current.kind === \"cells\") scroller.scrollLeft += Math.sign(dx) * Math.min(80, Math.abs(dx) / 2 + 4);\n extendTo(scroller, current, state.x, state.y);\n state.frame = requestAnimationFrame(step);\n };\n state.frame = requestAnimationFrame(step);\n };\n\n const onPointerMove = (event: PointerEvent<HTMLDivElement>) => {\n const current = drag.current;\n const { x, y } = point(event);\n if (!current) {\n const hit = geometry.hit(x, y);\n const action = hit.area === \"cell\" ? canvas.actionAt(hit.row, hit.column)?.action : undefined;\n event.currentTarget.style.cursor =\n hit.area === \"header\" && hit.edge ? \"col-resize\" : action ? (action.cursor ?? \"pointer\") : \"\";\n return;\n }\n if (current.kind === \"resize\") {\n canvas.previewWidth(current.column, current.width + event.clientX - current.x);\n return;\n }\n if (current.kind === \"move\") {\n if (!current.moving && Math.abs(event.clientX - current.x) < 5) return;\n current.moving = true;\n const target = dropAt(x, current.names ?? []);\n current.before = target?.before;\n canvas.previewDrop(target ? target.x : null);\n return;\n }\n extendTo(event.currentTarget, current, x, y);\n followPointer(event.currentTarget, x, y);\n };\n\n const onPointerUp = (event: PointerEvent<HTMLDivElement>) => {\n pressed.current = false;\n if (later.current && event.type === \"pointerup\") later.current();\n later.current = null;\n const current = drag.current;\n if (!current || current.pointer !== event.pointerId) return;\n drag.current = null;\n stopFollowing();\n event.currentTarget.releasePointerCapture(event.pointerId);\n if (current.kind === \"move\") {\n canvas.previewDrop(null);\n const name = nameOf(current.column);\n if (!current.moving) {\n // A click on a column's name sorts by it; a click on a group's header only selected its columns.\n if (current.names?.length === 1 && name !== undefined && event.type === \"pointerup\") {\n void store.dispatch({ command: \"sort.toggle\", column: name, ...(current.shift ? { add: true } : {}) });\n }\n return;\n }\n if (current.before !== undefined && current.names && event.type === \"pointerup\") {\n void store.dispatch({ command: \"column.move\", names: current.names, before: current.before });\n }\n return;\n }\n if (current.kind !== \"resize\") return;\n const name = nameOf(current.column);\n const width = Math.max(40, Math.min(100_000, Math.round(current.width + event.clientX - current.x)));\n if (name !== undefined) {\n void store\n .dispatch({ command: \"column.resize\", name, width })\n .then(() => canvas.previewWidth(current.column, null));\n } else {\n canvas.previewWidth(current.column, null);\n }\n };\n\n /** Dispatches a command of checked rows, and announces how many rows are checked, or why it failed. */\n const dispatchCheck = (command: GridCommand) => {\n void store.dispatch(command).then((outcome) => {\n if (!outcome.ok) {\n announce(\n outcome.error instanceof CommandError && outcome.error.reason === \"unknown_state\"\n ? messages.checkedUnknown\n : messages.failed(outcome.error.message),\n );\n return;\n }\n const { session, document, view } = store.getSnapshot();\n const count = checkedCount(session.checked, document.plan, view?.rowCount ?? 0);\n announce(count === null ? messages.checkedUnknown : messages.checkedRows(number.format(count)));\n });\n };\n\n /** Checks a row of the view, or unchecks it when it is checked. */\n const toggleCheck = (row: number) => {\n const key = store.rowKey(row);\n if (!key) return;\n const { session, document } = store.getSnapshot();\n const state = checkState(session.checked, document.plan, key);\n dispatchCheck({ command: state === \"checked\" ? \"uncheck\" : \"check\", keys: [key] });\n };\n\n /** The columns a header drags: the column, or every column of a selection of whole columns that holds it. */\n const movedWith = (name: string): string[] => {\n const last = store.getSnapshot().session.selection?.at(-1);\n if (last && last.rows === \"all\" && last.columns !== \"all\" && last.columns.includes(name)) {\n return columns.map((item) => item.column.name).filter((item) => (last.columns as string[]).includes(item));\n }\n return [name];\n };\n\n /**\n * Where dragged columns would go for a pointer at `x`: before the column under it (after it past its middle), as\n * `column.move`'s `before` (null after the last), and the x of the line that shows it; undefined where they stay.\n */\n const dropAt = (x: number, names: readonly string[]): { before: string | null; x: number } | undefined => {\n if (columns.length === 0) return undefined;\n let at = geometry.columnAt(Math.max(geometry.gutterWidth, x));\n if (at < 0) at = x < geometry.gutterWidth ? 0 : columns.length - 1;\n const middle = geometry.columnX(at) + geometry.columnWidth(at) / 2;\n const index = x < middle ? at : at + 1;\n const before = index < columns.length ? columns[index].column.name : null;\n const moved = names.map((name) => columns.findIndex((item) => item.column.name === name));\n // Before one of the moved columns, or right after the last of them, they stay.\n if (before !== null && names.includes(before)) return undefined;\n if (moved.length > 0 && index === Math.max(...moved) + 1 && moved.every((item, i) => item === moved[0] + i)) {\n return undefined;\n }\n const lineX = index < columns.length ? geometry.columnX(index) : geometry.columnX(at) + geometry.columnWidth(at);\n return { before, x: lineX };\n };\n\n /** Opens the menu of a column under its header. */\n const openMenu = (column: string, index: number) => {\n const scroller = scrollerRef.current;\n if (!scroller) return;\n const rect = scroller.getBoundingClientRect();\n setMenu({\n column,\n x: rect.left + Math.max(0, geometry.columnX(index) + geometry.columnWidth(index) - 200),\n y: rect.top + geometry.headerHeight,\n });\n };\n\n const onClick = (event: MouseEvent<HTMLDivElement>) => {\n const rect = event.currentTarget.getBoundingClientRect();\n const hit = geometry.hit(event.clientX - rect.left, event.clientY - rect.top);\n const column = nameOf(hit.column);\n if (hit.area === \"header\" && hit.menu && column !== undefined) openMenu(column, hit.column);\n // A click on a link or a button of a cell acts, after selecting the cell.\n if (hit.area === \"cell\" && !event.shiftKey && !event.metaKey && !event.ctrlKey) act(hit.row, hit.column);\n };\n\n /** Calls `onCellAction` for a cell that is a link or a button. */\n const act = (row: number, column: number) => {\n const found = canvas.actionAt(row, column);\n if (!found || !onCellAction) return false;\n onCellAction({ ...found.cell, action: found.action, key: store.rowKey(row) });\n return true;\n };\n\n const onContextMenu = (event: MouseEvent<HTMLDivElement>) => {\n const rect = event.currentTarget.getBoundingClientRect();\n const hit = geometry.hit(event.clientX - rect.left, event.clientY - rect.top);\n const column = nameOf(hit.column);\n if ((hit.area !== \"header\" && hit.area !== \"cell\") || column === undefined) return;\n event.preventDefault();\n const at = { x: event.clientX, y: event.clientY };\n let open: () => void;\n if (hit.area === \"header\") {\n open = () => setMenu({ column, ...at });\n } else {\n // A cell outside the selection is selected first, as spreadsheets do.\n if (!isSelected(hit.row, column)) void store.dispatch({ command: \"select\", row: hit.row, column });\n open = () => setCellMenu({ row: hit.row, column, ...at });\n }\n // Where the menu comes as the button goes down (macOS), it opens once the button is up.\n if (pressed.current) later.current = open;\n else open();\n };\n\n /** Whether a cell is in the selection. */\n const isSelected = (row: number, column: string) => {\n const { selection, active } = store.getSnapshot().session;\n if (!selection) return active?.row === row && active.column === column;\n return selection.some(\n (range) =>\n (range.rows === \"all\" || (row >= range.rows[0] && row < range.rows[1])) &&\n (range.columns === \"all\" || range.columns.includes(column)),\n );\n };\n\n /** Copies the selection from a menu, through the asynchronous clipboard. */\n const copySelection = () => {\n void store.dispatch({ command: \"copy\" }).then(async (outcome) => {\n if (!outcome.ok) {\n announce(messages.failed(outcome.error.message));\n return;\n }\n try {\n await writeClipboardLater(outcome.output);\n announce(messages.copied(number.format(countCells(outcome.output))));\n } catch (error) {\n announce(messages.failed(error instanceof Error ? error.message : String(error)));\n }\n });\n };\n\n /** Opens the cell menu of the active cell, under it. */\n const openCellMenu = () => {\n const scroller = scrollerRef.current;\n const active = store.getSnapshot().session.active;\n if (!scroller || !active) return;\n const index = columns.findIndex((item) => item.column.name === active.column);\n if (index < 0) return;\n const box = geometry.cellBox(active.row, index);\n const rect = scroller.getBoundingClientRect();\n setCellMenu({\n row: active.row,\n column: active.column,\n x: rect.left + box.left,\n y: rect.top + box.top + box.height,\n });\n };\n\n const closeCellMenu = () => {\n setCellMenu(null);\n scrollerRef.current?.focus({ preventScroll: true });\n };\n\n const closeMenu = () => {\n setMenu(null);\n scrollerRef.current?.focus({ preventScroll: true });\n };\n\n const onDoubleClick = (event: MouseEvent<HTMLDivElement>) => {\n const rect = event.currentTarget.getBoundingClientRect();\n const hit = geometry.hit(event.clientX - rect.left, event.clientY - rect.top);\n const name = nameOf(hit.column);\n // Double-clicking a column's edge fits it to its values again; double-clicking a cell edits it.\n if (hit.area === \"header\" && hit.edge && name !== undefined)\n void store.dispatch({ command: \"column.resize\", name, width: null });\n else if (hit.area === \"cell\") startEditing(undefined);\n };\n\n /**\n * Opens the editor on the active cell (`edit.begin`, §6.5): with its value, or empty for a key that types text,\n * whose text, an IME's included, then goes into the editor, which takes the focus before the browser handles\n * the key. Tells why when the cell is not written.\n */\n const startEditing = (text: string | undefined) => {\n const outcome = store.dispatchSync(\n text === undefined ? { command: \"edit.begin\" } : { command: \"edit.begin\", text },\n );\n if (outcome.ok) {\n if (store.getSnapshot().session.editor) editor.current?.open();\n return true;\n }\n if (outcome.error instanceof CommandError && outcome.error.reason === \"read_only\") announce(messages.readOnly);\n else announce(messages.failed(outcome.error.message));\n return false;\n };\n\n const onKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n if (event.target !== event.currentTarget) return;\n // While an IME composes, keys are its own (the editor takes them, §6.6 of react.md).\n const composing = event.nativeEvent.isComposing || event.keyCode === 229;\n // Space acts on a link or a button of the active cell; otherwise it checks the active row, or unchecks it.\n if (!composing && event.key === \" \" && !event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {\n const active = store.getSnapshot().session.active;\n if (!active) return;\n const column = columns.findIndex((item) => item.column.name === active.column);\n if (act(active.row, column)) {\n event.preventDefault();\n return;\n }\n if (!checkboxes) return;\n event.preventDefault();\n toggleCheck(active.row);\n return;\n }\n // ⌘F or Ctrl+F opens the find bar, when the engine finds.\n if ((isApple() ? event.metaKey : event.ctrlKey) && (event.key === \"f\" || event.key === \"F\") && !event.altKey) {\n if (!onFind || store.getSnapshot().table?.capabilities.find !== true) return;\n event.preventDefault();\n onFind();\n return;\n }\n // Shift+F10 and the context menu key open the menu of the active cell.\n if (event.key === \"ContextMenu\" || (event.key === \"F10\" && event.shiftKey)) {\n event.preventDefault();\n openCellMenu();\n return;\n }\n // Alt+Enter opens the detail panel of the active row, or closes it.\n if (!composing && event.altKey && event.key === \"Enter\" && !event.ctrlKey && !event.metaKey && !event.shiftKey) {\n event.preventDefault();\n const open = store.getSnapshot().session.detail?.open === true;\n void store.dispatch({ command: open ? \"detail.close\" : \"detail.open\" });\n return;\n }\n // Alt+↓ opens the menu of the active cell's column.\n if (event.altKey && event.key === \"ArrowDown\" && !event.ctrlKey && !event.metaKey) {\n const column = store.getSnapshot().session.active?.column;\n const index = columns.findIndex((item) => item.column.name === column);\n if (column === undefined || index < 0) return;\n event.preventDefault();\n openMenu(column, index);\n return;\n }\n if (typesText({ ...pick(event), keyCode: event.keyCode, isComposing: event.nativeEvent.isComposing })) {\n // Not prevented: the key's text goes into the editor that now has the focus.\n if (!startEditing(\"\")) event.preventDefault();\n return;\n }\n const command = keyCommand(event, isApple());\n if (!command) return;\n if (command.command === \"save\") {\n // Without saving, the key is the browser's.\n if (!saving || store.getSnapshot().table?.capabilities.save !== true) return;\n event.preventDefault();\n saving.save();\n return;\n }\n event.preventDefault();\n void store.dispatch(command);\n };\n\n // The accessibility rows always hold the active cell (§6.4).\n const activeColumn = active ? columns.findIndex((item) => item.column.name === active.column) : 0;\n const activeRow = active?.row ?? 0;\n const activeShown = rowCount > 0 && activeColumn >= 0;\n\n return (\n <div className=\"vg-body\" ref={rootRef}>\n <canvas className=\"vg-canvas\" ref={canvasRef} />\n {/* biome-ignore lint/a11y/useSemanticElements: a canvas grid cannot use table elements; ARIA grid roles describe it. */}\n <div\n className=\"vg-scroller\"\n ref={scrollerRef}\n role=\"grid\"\n tabIndex={0}\n aria-label={label}\n aria-rowcount={rowCount + 1 + (totalsRow ? 1 : 0)}\n aria-colcount={columns.length}\n aria-multiselectable=\"true\"\n aria-busy={busy}\n aria-activedescendant={activeShown ? cellId(id, activeRow, activeColumn) : undefined}\n onKeyDown={onKeyDown}\n onPointerDown={onPointerDown}\n onPointerMove={onPointerMove}\n onPointerUp={onPointerUp}\n onPointerCancel={onPointerUp}\n onDoubleClick={onDoubleClick}\n onClick={onClick}\n onContextMenu={onContextMenu}\n >\n <div className=\"vg-sizer\" ref={sizerRef} />\n <AccessibleRows canvas={canvas} id={id} />\n </div>\n <CellEditor canvas={canvas} scrollerRef={scrollerRef} announce={announce} ref={editor} />\n {menu && (\n <Suspense fallback={null}>\n <ColumnMenu target={menu} onClose={closeMenu} />\n </Suspense>\n )}\n {cellMenu && (\n <Suspense fallback={null}>\n <CellMenu target={cellMenu} onClose={closeCellMenu} copy={copySelection} />\n </Suspense>\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The content of the toolbar's group menu, loaded when it first opens (§6.2 of the specification): the columns that the rows are grouped by and the measures of
3
+ * each group (§4.5), each change dispatched as `group.set` with the whole aggregate, or `group.clear` when nothing is
4
+ * left. It is there when the engine groups rows.
5
+ */
6
+ export default function GroupPanel(): import("react").JSX.Element | null;
7
+ //# sourceMappingURL=group-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-menu.d.ts","sourceRoot":"","sources":["../../src/react/group-menu.tsx"],"names":[],"mappings":"AASA;;;;GAIG;AACH,MAAM,CAAC,OAAO,UAAU,UAAU,uCAuMjC"}