@1771technologies/lytenyte-pro 1.0.0-beta.10 → 1.0.0-beta.11

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 (381) hide show
  1. package/dist/+types.d.ts +3957 -4135
  2. package/dist/cell-selection/adjust-rect-for-row-and-cell-span.js +38 -38
  3. package/dist/cell-selection/are-rects-equal.js +4 -6
  4. package/dist/cell-selection/bound-selection-rect.js +14 -14
  5. package/dist/cell-selection/cell-selection-containers.js +78 -108
  6. package/dist/cell-selection/cell-selection-driver.js +262 -250
  7. package/dist/cell-selection/cell-style-row.d.ts +6 -12
  8. package/dist/cell-selection/cell-style-row.js +79 -82
  9. package/dist/cell-selection/deselect-rect-range.js +40 -41
  10. package/dist/cell-selection/expand-cell-selection-down.d.ts +2 -5
  11. package/dist/cell-selection/expand-cell-selection-down.js +33 -29
  12. package/dist/cell-selection/expand-cell-selection-end.d.ts +2 -5
  13. package/dist/cell-selection/expand-cell-selection-end.js +34 -30
  14. package/dist/cell-selection/expand-cell-selection-start.d.ts +2 -5
  15. package/dist/cell-selection/expand-cell-selection-start.js +33 -29
  16. package/dist/cell-selection/expand-cell-selection-up.d.ts +2 -5
  17. package/dist/cell-selection/expand-cell-selection-up.js +33 -29
  18. package/dist/cell-selection/full-width-start-end-index.js +3 -3
  19. package/dist/cell-selection/get-root-cell.d.ts +1 -5
  20. package/dist/cell-selection/get-root-cell.js +79 -77
  21. package/dist/cell-selection/is-bottom-rect.js +5 -5
  22. package/dist/cell-selection/is-center-col-rect.d.ts +2 -5
  23. package/dist/cell-selection/is-center-col-rect.js +3 -5
  24. package/dist/cell-selection/is-center-rect.js +3 -3
  25. package/dist/cell-selection/is-end-rect.d.ts +2 -5
  26. package/dist/cell-selection/is-end-rect.js +2 -2
  27. package/dist/cell-selection/is-overlapping-rect.js +4 -6
  28. package/dist/cell-selection/is-start-rect.d.ts +2 -5
  29. package/dist/cell-selection/is-start-rect.js +2 -2
  30. package/dist/cell-selection/is-top-rect.js +2 -2
  31. package/dist/cell-selection/is-within-selection-rect.js +1 -1
  32. package/dist/cell-selection/split-cell-selection-rect.d.ts +6 -12
  33. package/dist/cell-selection/split-cell-selection-rect.js +47 -53
  34. package/dist/cell-selection/update-additive-cell-selection.d.ts +2 -5
  35. package/dist/cell-selection/update-additive-cell-selection.js +19 -18
  36. package/dist/cell-selection/use-edge-scroll.d.ts +6 -8
  37. package/dist/cell-selection/use-edge-scroll.js +63 -65
  38. package/dist/cells/cell-default.d.ts +1 -5
  39. package/dist/cells/cell-default.js +5 -5
  40. package/dist/cells/cell-editor.d.ts +2 -4
  41. package/dist/cells/cell-editor.js +86 -121
  42. package/dist/cells/cell.d.ts +3 -16
  43. package/dist/cells/cell.js +27 -55
  44. package/dist/column-manager/branch-lookup-context.d.ts +1 -3
  45. package/dist/column-manager/branch.d.ts +4 -12
  46. package/dist/column-manager/branch.js +29 -39
  47. package/dist/column-manager/column-manager.d.ts +9 -58
  48. package/dist/column-manager/column-manager.js +9 -9
  49. package/dist/column-manager/context.d.ts +1 -1
  50. package/dist/column-manager/label.d.ts +2 -10
  51. package/dist/column-manager/label.js +12 -11
  52. package/dist/column-manager/leaf.d.ts +2 -10
  53. package/dist/column-manager/leaf.js +32 -42
  54. package/dist/column-manager/move-handle.d.ts +6 -14
  55. package/dist/column-manager/move-handle.js +50 -54
  56. package/dist/column-manager/root.d.ts +3 -9
  57. package/dist/column-manager/root.js +13 -26
  58. package/dist/column-manager/use-column-manager.d.ts +12 -12
  59. package/dist/column-manager/use-column-manager.js +20 -20
  60. package/dist/column-manager/use-columns-from-context.js +18 -18
  61. package/dist/column-manager/visibility-checkbox.d.ts +6 -14
  62. package/dist/column-manager/visibility-checkbox.js +23 -36
  63. package/dist/context.d.ts +4 -4
  64. package/dist/filter-tree/branch.d.ts +5 -13
  65. package/dist/filter-tree/branch.js +13 -23
  66. package/dist/filter-tree/context.d.ts +16 -16
  67. package/dist/filter-tree/filter-tree.d.ts +8 -49
  68. package/dist/filter-tree/filter-tree.js +8 -8
  69. package/dist/filter-tree/hooks/use-filter-tree.d.ts +29 -35
  70. package/dist/filter-tree/hooks/use-filter-tree.js +92 -94
  71. package/dist/filter-tree/hooks/use-tree-item.d.ts +4 -4
  72. package/dist/filter-tree/hooks/use-tree-item.js +106 -99
  73. package/dist/filter-tree/inclusion-checkbox.d.ts +6 -14
  74. package/dist/filter-tree/inclusion-checkbox.js +9 -19
  75. package/dist/filter-tree/label.d.ts +2 -10
  76. package/dist/filter-tree/label.js +12 -11
  77. package/dist/filter-tree/leaf.d.ts +2 -10
  78. package/dist/filter-tree/leaf.js +5 -15
  79. package/dist/filter-tree/root.d.ts +7 -23
  80. package/dist/filter-tree/root.js +23 -51
  81. package/dist/grid-box/+types.d.ts +9 -9
  82. package/dist/grid-box/context.d.ts +3 -3
  83. package/dist/grid-box/grid-box.d.ts +6 -26
  84. package/dist/grid-box/grid-box.js +6 -6
  85. package/dist/grid-box/item.d.ts +3 -11
  86. package/dist/grid-box/item.js +26 -29
  87. package/dist/grid-box/panel.d.ts +1 -13
  88. package/dist/grid-box/panel.js +2 -9
  89. package/dist/grid-box/root.d.ts +5 -11
  90. package/dist/grid-box/root.js +2 -11
  91. package/dist/grid-box/use-aggregation-box-items.d.ts +13 -16
  92. package/dist/grid-box/use-aggregation-box-items.js +55 -54
  93. package/dist/grid-box/use-column-box-items.d.ts +21 -31
  94. package/dist/grid-box/use-column-box-items.js +78 -90
  95. package/dist/grid-box/use-row-group-box-items.d.ts +12 -17
  96. package/dist/grid-box/use-row-group-box-items.js +124 -116
  97. package/dist/grid-provider/context.d.ts +2 -4
  98. package/dist/grid-provider/provider.d.ts +2 -4
  99. package/dist/grid-provider/use-grid.d.ts +1 -1
  100. package/dist/grid.d.ts +26 -150
  101. package/dist/grid.js +26 -38
  102. package/dist/header/header-cell.d.ts +5 -13
  103. package/dist/header/header-cell.js +15 -41
  104. package/dist/header/header-group-cell.d.ts +2 -10
  105. package/dist/header/header-group-cell.js +6 -21
  106. package/dist/header/header-row.d.ts +2 -10
  107. package/dist/header/header-row.js +2 -2
  108. package/dist/header/header.d.ts +1 -10
  109. package/dist/header/header.js +2 -11
  110. package/dist/header/resize-handler.d.ts +6 -15
  111. package/dist/header/resize-handler.js +118 -128
  112. package/dist/header/use-drag-move.d.ts +11 -22
  113. package/dist/header/use-drag-move.js +87 -83
  114. package/dist/header/use-header-cell-renderer.d.ts +2 -9
  115. package/dist/header/use-header-cell-renderer.js +29 -24
  116. package/dist/icons/index.d.ts +1 -92
  117. package/dist/icons/index.js +1 -92
  118. package/dist/license.js +174 -174
  119. package/dist/listbox/context.d.ts +2 -2
  120. package/dist/listbox/item.d.ts +1 -10
  121. package/dist/listbox/item.js +19 -23
  122. package/dist/listbox/panel.d.ts +1 -10
  123. package/dist/listbox/panel.js +43 -69
  124. package/dist/listbox/root.d.ts +3 -5
  125. package/dist/listbox/root.js +7 -7
  126. package/dist/root/dialog-driver.js +16 -22
  127. package/dist/root/popover-driver.js +16 -27
  128. package/dist/root/root.d.ts +3 -7
  129. package/dist/root/root.js +107 -111
  130. package/dist/row-data-source-client/+types.d.ts +17 -17
  131. package/dist/row-data-source-client/built-ins/avg.js +4 -3
  132. package/dist/row-data-source-client/built-ins/built-ins.d.ts +16 -16
  133. package/dist/row-data-source-client/built-ins/built-ins.js +16 -16
  134. package/dist/row-data-source-client/built-ins/count.js +5 -3
  135. package/dist/row-data-source-client/built-ins/first.js +1 -1
  136. package/dist/row-data-source-client/built-ins/group.js +1 -1
  137. package/dist/row-data-source-client/built-ins/last.js +1 -1
  138. package/dist/row-data-source-client/built-ins/max.js +13 -9
  139. package/dist/row-data-source-client/built-ins/min.js +13 -9
  140. package/dist/row-data-source-client/built-ins/sum.js +10 -8
  141. package/dist/row-data-source-client/filter/+types.d.ts +13 -35
  142. package/dist/row-data-source-client/filter/compute-filtered-rows.d.ts +2 -16
  143. package/dist/row-data-source-client/filter/compute-filtered-rows.js +102 -102
  144. package/dist/row-data-source-client/pivots/create-agg-model.d.ts +4 -8
  145. package/dist/row-data-source-client/pivots/create-agg-model.js +9 -8
  146. package/dist/row-data-source-client/pivots/create-pivot-columns-from-paths.d.ts +1 -6
  147. package/dist/row-data-source-client/pivots/create-pivot-columns-from-paths.js +46 -42
  148. package/dist/row-data-source-client/pivots/create-pivot-columns.d.ts +1 -6
  149. package/dist/row-data-source-client/pivots/create-pivot-columns.js +17 -16
  150. package/dist/row-data-source-client/pivots/create-pivot-tree.d.ts +1 -7
  151. package/dist/row-data-source-client/pivots/create-pivot-tree.js +19 -19
  152. package/dist/row-data-source-client/tree/client-tree.d.ts +13 -19
  153. package/dist/row-data-source-client/tree/client-tree.js +67 -64
  154. package/dist/row-data-source-client/tree/evaluator-aggregation.d.ts +1 -4
  155. package/dist/row-data-source-client/tree/evaluator-aggregation.js +6 -6
  156. package/dist/row-data-source-client/tree/evaluator-group.d.ts +1 -4
  157. package/dist/row-data-source-client/tree/evaluator-group.js +7 -6
  158. package/dist/row-data-source-client/tree/traverse.d.ts +1 -5
  159. package/dist/row-data-source-client/tree/traverse.js +18 -15
  160. package/dist/row-data-source-client/use-client-data-source-paginated.d.ts +5 -9
  161. package/dist/row-data-source-client/use-client-data-source-paginated.js +523 -523
  162. package/dist/row-data-source-client/use-client-data-source.d.ts +5 -9
  163. package/dist/row-data-source-client/use-client-data-source.js +647 -665
  164. package/dist/row-data-source-client/use-client-tree-data-source.d.ts +5 -9
  165. package/dist/row-data-source-client/use-client-tree-data-source.js +500 -494
  166. package/dist/row-data-source-server/async-tree/+types.async-tree.d.ts +33 -36
  167. package/dist/row-data-source-server/async-tree/apply-delete-action-to-tree.d.ts +1 -4
  168. package/dist/row-data-source-server/async-tree/apply-delete-action-to-tree.js +22 -18
  169. package/dist/row-data-source-server/async-tree/apply-set-action-to-tree.d.ts +1 -4
  170. package/dist/row-data-source-server/async-tree/apply-set-action-to-tree.js +25 -17
  171. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-are-unique.js +18 -18
  172. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-are-valid.js +10 -9
  173. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-fit.d.ts +1 -4
  174. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-fit.js +14 -13
  175. package/dist/row-data-source-server/async-tree/check-set-action-item-kinds.js +10 -9
  176. package/dist/row-data-source-server/async-tree/get-parent-node-by-path.d.ts +1 -4
  177. package/dist/row-data-source-server/async-tree/get-parent-node-by-path.js +13 -13
  178. package/dist/row-data-source-server/async-tree/is-set-action-a-no-op-on-node.d.ts +1 -4
  179. package/dist/row-data-source-server/async-tree/is-set-action-a-no-op-on-node.js +1 -1
  180. package/dist/row-data-source-server/async-tree/make-async-tree.js +14 -14
  181. package/dist/row-data-source-server/async-tree/maybe-apply-parent-remove-self.d.ts +1 -3
  182. package/dist/row-data-source-server/async-tree/maybe-apply-parent-remove-self.js +6 -6
  183. package/dist/row-data-source-server/async-tree/maybe-apply-resize.d.ts +1 -5
  184. package/dist/row-data-source-server/async-tree/maybe-apply-resize.js +14 -11
  185. package/dist/row-data-source-server/async-tree/maybe-apply-set-action-items.d.ts +1 -4
  186. package/dist/row-data-source-server/async-tree/maybe-apply-set-action-items.js +46 -42
  187. package/dist/row-data-source-server/range-tree/range-tree.d.ts +28 -28
  188. package/dist/row-data-source-server/range-tree/range-tree.js +48 -49
  189. package/dist/row-data-source-server/use-server-data-source.d.ts +2 -11
  190. package/dist/row-data-source-server/use-server-data-source.js +652 -662
  191. package/dist/row-data-source-server/utils/get-node-depth.js +7 -7
  192. package/dist/row-data-source-server/utils/get-node-path.js +7 -7
  193. package/dist/row-data-source-server/utils/get-request-id.js +4 -3
  194. package/dist/rows/row/context.d.ts +2 -2
  195. package/dist/rows/row/row.d.ts +3 -16
  196. package/dist/rows/row/row.js +4 -19
  197. package/dist/rows/row/use-row-context-value.d.ts +2 -5
  198. package/dist/rows/row/use-row-context-value.js +26 -23
  199. package/dist/rows/row-detail-row.d.ts +2 -4
  200. package/dist/rows/row-detail-row.js +124 -147
  201. package/dist/rows/row-full-width.d.ts +4 -12
  202. package/dist/rows/row-full-width.js +7 -35
  203. package/dist/rows/rows-container.d.ts +1 -10
  204. package/dist/rows/rows-container.js +3 -12
  205. package/dist/rows/rows-sections.d.ts +3 -30
  206. package/dist/rows/rows-sections.js +10 -42
  207. package/dist/rows/scrollers/native-scroller.d.ts +1 -3
  208. package/dist/rows/scrollers/native-scroller.js +13 -17
  209. package/dist/sort-manager/+types.d.ts +7 -14
  210. package/dist/sort-manager/context.d.ts +4 -4
  211. package/dist/sort-manager/hooks/use-sort-manager.d.ts +9 -9
  212. package/dist/sort-manager/hooks/use-sort-manager.js +49 -45
  213. package/dist/sort-manager/hooks/use-sort-row-item.d.ts +46 -57
  214. package/dist/sort-manager/hooks/use-sort-row-item.js +131 -126
  215. package/dist/sort-manager/hooks/use-sortable-column-items.d.ts +3 -6
  216. package/dist/sort-manager/hooks/use-sortable-column-items.js +10 -10
  217. package/dist/sort-manager/root.d.ts +1 -7
  218. package/dist/sort-manager/root.js +10 -10
  219. package/dist/sort-manager/sort-add.d.ts +5 -13
  220. package/dist/sort-manager/sort-add.js +8 -8
  221. package/dist/sort-manager/sort-apply.d.ts +4 -12
  222. package/dist/sort-manager/sort-apply.js +16 -16
  223. package/dist/sort-manager/sort-cancel.d.ts +4 -12
  224. package/dist/sort-manager/sort-cancel.js +19 -19
  225. package/dist/sort-manager/sort-clear.d.ts +4 -12
  226. package/dist/sort-manager/sort-clear.js +16 -15
  227. package/dist/sort-manager/sort-column-select.d.ts +6 -14
  228. package/dist/sort-manager/sort-column-select.js +15 -26
  229. package/dist/sort-manager/sort-direction-select.d.ts +6 -14
  230. package/dist/sort-manager/sort-direction-select.js +19 -27
  231. package/dist/sort-manager/sort-manager.d.ts +12 -93
  232. package/dist/sort-manager/sort-manager.js +12 -12
  233. package/dist/sort-manager/sort-remove.d.ts +4 -12
  234. package/dist/sort-manager/sort-remove.js +8 -8
  235. package/dist/sort-manager/sort-row.d.ts +2 -10
  236. package/dist/sort-manager/sort-row.js +1 -4
  237. package/dist/sort-manager/sort-rows.d.ts +1 -10
  238. package/dist/sort-manager/sort-rows.js +1 -1
  239. package/dist/sort-manager/sort-value-select.d.ts +7 -15
  240. package/dist/sort-manager/sort-value-select.js +19 -28
  241. package/dist/sort-manager/utils/sort-item-to-sort-model.d.ts +1 -4
  242. package/dist/sort-manager/utils/sort-item-to-sort-model.js +49 -46
  243. package/dist/sort-manager/utils/sort-model-to-sort-items.d.ts +1 -4
  244. package/dist/sort-manager/utils/sort-model-to-sort-items.js +44 -36
  245. package/dist/state/+types.d.ts +28 -41
  246. package/dist/state/api/column-autosize.d.ts +2 -4
  247. package/dist/state/api/column-autosize.js +63 -62
  248. package/dist/state/api/column-by-id.js +4 -4
  249. package/dist/state/api/column-field.js +20 -17
  250. package/dist/state/api/column-from-index.js +4 -4
  251. package/dist/state/api/column-group-toggle.js +8 -8
  252. package/dist/state/api/column-index.js +5 -5
  253. package/dist/state/api/column-move.js +46 -48
  254. package/dist/state/api/column-resize.js +7 -9
  255. package/dist/state/api/column-update.js +11 -11
  256. package/dist/state/api/dialog-frame.d.ts +4 -8
  257. package/dist/state/api/dialog-frame.js +12 -11
  258. package/dist/state/api/edit-begin.d.ts +2 -4
  259. package/dist/state/api/edit-begin.js +84 -71
  260. package/dist/state/api/edit-end.d.ts +2 -4
  261. package/dist/state/api/edit-end.js +41 -38
  262. package/dist/state/api/edit-is-cell-active.d.ts +2 -4
  263. package/dist/state/api/edit-is-cell-active.js +24 -17
  264. package/dist/state/api/edit-update.d.ts +2 -4
  265. package/dist/state/api/edit-update.js +85 -74
  266. package/dist/state/api/event-listeners.d.ts +3 -12
  267. package/dist/state/api/event-listeners.js +17 -16
  268. package/dist/state/api/export-csv.js +35 -33
  269. package/dist/state/api/export-data-rect.js +21 -21
  270. package/dist/state/api/focus-cell.d.ts +2 -4
  271. package/dist/state/api/focus-cell.js +109 -110
  272. package/dist/state/api/popover-frame.d.ts +4 -8
  273. package/dist/state/api/popover-frame.js +12 -11
  274. package/dist/state/api/position-from-element.js +6 -5
  275. package/dist/state/api/row-by-id.js +3 -3
  276. package/dist/state/api/row-by-index.js +6 -11
  277. package/dist/state/api/row-detail-is-expanded.d.ts +1 -3
  278. package/dist/state/api/row-detail-is-expanded.js +4 -4
  279. package/dist/state/api/row-detail-rendered-height.d.ts +2 -4
  280. package/dist/state/api/row-detail-rendered-height.js +12 -10
  281. package/dist/state/api/row-detail-toggle.js +30 -26
  282. package/dist/state/api/row-group-apply-expansions.d.ts +1 -3
  283. package/dist/state/api/row-group-apply-expansions.js +17 -15
  284. package/dist/state/api/row-group-column-index.d.ts +1 -3
  285. package/dist/state/api/row-group-column-index.js +12 -14
  286. package/dist/state/api/row-group-is-expanded.d.ts +1 -3
  287. package/dist/state/api/row-group-is-expanded.js +13 -11
  288. package/dist/state/api/row-group-toggle.js +5 -5
  289. package/dist/state/api/row-handle-select.d.ts +2 -4
  290. package/dist/state/api/row-handle-select.js +40 -36
  291. package/dist/state/api/row-select-all.js +15 -14
  292. package/dist/state/api/row-select.d.ts +2 -4
  293. package/dist/state/api/row-select.js +33 -30
  294. package/dist/state/api/row-selected.js +11 -10
  295. package/dist/state/api/scroll-into-view.d.ts +2 -4
  296. package/dist/state/api/scroll-into-view.js +47 -47
  297. package/dist/state/api/sort-for-column.js +7 -6
  298. package/dist/state/api/use-row-drag.js +24 -22
  299. package/dist/state/helpers/cell-row-group.d.ts +1 -5
  300. package/dist/state/helpers/cell-row-group.js +16 -18
  301. package/dist/state/helpers/column-add-row-group.d.ts +6 -16
  302. package/dist/state/helpers/column-add-row-group.js +58 -63
  303. package/dist/state/helpers/column-layout.d.ts +1 -7
  304. package/dist/state/helpers/column-layout.js +60 -60
  305. package/dist/state/helpers/column-marker.d.ts +4 -8
  306. package/dist/state/helpers/column-marker.js +34 -38
  307. package/dist/state/helpers/column-view.d.ts +15 -21
  308. package/dist/state/helpers/column-view.js +32 -56
  309. package/dist/state/helpers/edit-on-change.d.ts +10 -18
  310. package/dist/state/helpers/edit-on-change.js +24 -24
  311. package/dist/state/helpers/empty-row-data-source.js +16 -15
  312. package/dist/state/helpers/get-data-rect.d.ts +10 -20
  313. package/dist/state/helpers/get-data-rect.js +62 -67
  314. package/dist/state/helpers/get-full-width-callback.d.ts +1 -5
  315. package/dist/state/helpers/get-full-width-callback.js +6 -5
  316. package/dist/state/helpers/get-span-callback.d.ts +1 -6
  317. package/dist/state/helpers/get-span-callback.js +18 -15
  318. package/dist/state/helpers/resolve-column.d.ts +2 -6
  319. package/dist/state/helpers/resolve-column.js +18 -18
  320. package/dist/state/helpers/row-layout/get-focus-criteria.d.ts +12 -15
  321. package/dist/state/helpers/row-layout/get-focus-criteria.js +56 -57
  322. package/dist/state/helpers/row-layout/row-layout.d.ts +9 -15
  323. package/dist/state/helpers/row-layout/row-layout.js +401 -387
  324. package/dist/state/use-lytenyte.js +516 -556
  325. package/dist/tree-view/branch/branch.d.ts +8 -16
  326. package/dist/tree-view/branch/branch.js +52 -104
  327. package/dist/tree-view/branch/use-branch-keys.d.ts +1 -5
  328. package/dist/tree-view/branch/use-branch-keys.js +74 -71
  329. package/dist/tree-view/context.d.ts +17 -21
  330. package/dist/tree-view/hooks/use-tree-view-paths.d.ts +1 -6
  331. package/dist/tree-view/hooks/use-tree-view-paths.js +5 -5
  332. package/dist/tree-view/index.d.ts +7 -35
  333. package/dist/tree-view/index.js +7 -7
  334. package/dist/tree-view/leaf.d.ts +2 -10
  335. package/dist/tree-view/leaf.js +20 -29
  336. package/dist/tree-view/navigation/get-all-ids.js +3 -3
  337. package/dist/tree-view/navigation/get-first-node.js +3 -3
  338. package/dist/tree-view/navigation/get-last-node.js +3 -3
  339. package/dist/tree-view/navigation/get-next-node.js +8 -6
  340. package/dist/tree-view/navigation/get-prev-node.js +8 -6
  341. package/dist/tree-view/panel/make-handle-navigation.js +31 -23
  342. package/dist/tree-view/panel/make-handle-selection.js +77 -68
  343. package/dist/tree-view/panel/make-handle-typeahead.js +40 -34
  344. package/dist/tree-view/panel/panel.d.ts +1 -10
  345. package/dist/tree-view/panel/panel.js +20 -40
  346. package/dist/tree-view/panel/use-tree-navigation.js +52 -64
  347. package/dist/tree-view/root.d.ts +14 -20
  348. package/dist/tree-view/root.js +55 -53
  349. package/dist/tree-view/utils/get-focusable-nodes.js +2 -4
  350. package/dist/tree-view/utils/get-focused-node.js +11 -11
  351. package/dist/tree-view/utils/get-ids-between-nodes.d.ts +1 -5
  352. package/dist/tree-view/utils/get-ids-between-nodes.js +11 -10
  353. package/dist/tree-view/utils/get-panel.js +5 -5
  354. package/dist/tree-view/utils/get-parent-node.js +7 -6
  355. package/dist/tree-view/utils/get-sibling-branches.js +10 -8
  356. package/dist/tree-view/utils/get-tree-node-id.js +1 -1
  357. package/dist/tree-view/utils/is-branch-node.js +1 -1
  358. package/dist/tree-view/utils/is-leaf-node.js +1 -1
  359. package/dist/tree-view/utils/is-tree-node-disabled.js +1 -1
  360. package/dist/tree-view/utils/select-node.d.ts +1 -5
  361. package/dist/tree-view/utils/select-node.js +11 -8
  362. package/dist/tree-view/utils/toggle-all-selections.js +6 -4
  363. package/dist/tree-view/utils/toggle-selection.js +18 -15
  364. package/dist/tree-view/virtualized/force-sync-scrolling.d.ts +1 -3
  365. package/dist/tree-view/virtualized/force-sync-scrolling.js +18 -24
  366. package/dist/tree-view/virtualized/get-virtual-tree-paths.d.ts +1 -3
  367. package/dist/tree-view/virtualized/get-virtual-tree-paths.js +12 -11
  368. package/dist/tree-view/virtualized/make-virtual-tree.d.ts +21 -26
  369. package/dist/tree-view/virtualized/make-virtual-tree.js +85 -79
  370. package/dist/tree-view/virtualized/use-flattened-tree.d.ts +8 -17
  371. package/dist/tree-view/virtualized/use-flattened-tree.js +31 -30
  372. package/dist/tree-view/virtualized/use-row-start-and-end.d.ts +1 -6
  373. package/dist/tree-view/virtualized/use-row-start-and-end.js +23 -21
  374. package/dist/tree-view/virtualized/use-virtualized-tree.d.ts +15 -21
  375. package/dist/tree-view/virtualized/use-virtualized-tree.js +90 -103
  376. package/dist/utils/cycle-sorts.js +14 -12
  377. package/dist/viewport/begin-editing.d.ts +2 -6
  378. package/dist/viewport/begin-editing.js +13 -9
  379. package/dist/viewport/viewport.d.ts +1 -10
  380. package/dist/viewport/viewport.js +70 -93
  381. package/package.json +7 -7
@@ -2,15 +2,7 @@ import { atom, createStore } from "@1771technologies/atom";
2
2
  import {} from "../+types.js";
3
3
  import { useRef } from "react";
4
4
  import { makeColumnView } from "./helpers/column-view.js";
5
- import {
6
- applyLayoutUpdate,
7
- computeBounds,
8
- computeColumnPositions,
9
- computeRowPositions,
10
- DEFAULT_PREVIOUS_LAYOUT,
11
- makeGridAtom,
12
- makeRowDataStore,
13
- } from "@1771technologies/lytenyte-shared";
5
+ import { applyLayoutUpdate, computeBounds, computeColumnPositions, computeRowPositions, DEFAULT_PREVIOUS_LAYOUT, makeGridAtom, makeRowDataStore, } from "@1771technologies/lytenyte-shared";
14
6
  import { makeRowLayout } from "./helpers/row-layout/row-layout.js";
15
7
  import { equal } from "@1771technologies/lytenyte-js-utils";
16
8
  import { makeColumnLayout } from "./helpers/column-layout.js";
@@ -60,560 +52,528 @@ import { boundSelectionRect } from "../cell-selection/bound-selection-rect.js";
60
52
  const DEFAULT_HEADER_HEIGHT = 40;
61
53
  const COLUMN_GROUP_JOIN_DELIMITER = "-->";
62
54
  export function makeLyteNyte(p) {
63
- const store = createStore();
64
- /**
65
- * Primitive ATOMS and State
66
- */
67
- const rtl = atom(p.rtl ?? false);
68
- const columns = atom(p.columns ?? []);
69
- const base = atom(p.columnBase ?? {});
70
- const gridId = atom(p.gridId);
71
- const headerHeight = atom(p.headerHeight ?? DEFAULT_HEADER_HEIGHT);
72
- const headerGroupHeight = atom(p.headerGroupHeight ?? DEFAULT_HEADER_HEIGHT);
73
- const columnSizeToFit = atom(p.columnSizeToFit ?? false);
74
- const viewport = atom(null);
75
- const viewportHeightInner = atom(0);
76
- const viewportHeightOuter = atom(0);
77
- const viewportWidthInner = atom(0);
78
- const viewportWidthOuter = atom(0);
79
- const columnGroupJoinDelimiter = atom(p.columnGroupJoinDelimiter ?? COLUMN_GROUP_JOIN_DELIMITER);
80
- const columnGroupExpansions = atom(p.columnGroupExpansions ?? {});
81
- const columnGroupDefaultExpansion = atom(p.columnGroupDefaultExpansion ?? true);
82
- const rowDataSource = atom(emptyRowDataSource);
83
- const rowHeight = atom(p.rowHeight ?? 40);
84
- const rowAutoHeightGuess = atom(p.rowAutoHeightGuess ?? 40);
85
- const rowScanDistance = atom(p.rowScanDistance ?? 100);
86
- const colScanDistance = atom(p.colScanDistance ?? 100);
87
- const rowOverscanTop = atom(p.rowOverscanTop ?? 10);
88
- const rowOverscanBottom = atom(p.rowOverscanBottom ?? 10);
89
- const colOverScanStart = atom(p.colOverscanStart ?? 2);
90
- const colOverscanEnd = atom(p.colOverscanEnd ?? 2);
91
- const xScroll = atom(0);
92
- const yScroll = atom(0);
93
- const cellRenderers = atom(p.cellRenderers ?? {});
94
- const rowFullWidthPredicate = atom({ fn: p.rowFullWidthPredicate ?? (() => false) });
95
- const rowFullWidthRenderer = atom({ fn: p.rowFullWidthRenderer ?? (() => "Not defined") });
96
- const sortModel = atom(p.sortModel ?? []);
97
- const filterModel = atom(p.filterModel ?? {});
98
- const filterInModel = atom(p.filterInModel ?? {});
99
- const rowGroupModel = atom(p.rowGroupModel ?? []);
100
- const aggModel = atom(p.aggModel ?? {});
101
- const rowGroupDisplayMode = atom(p.rowGroupDisplayMode ?? "single-column");
102
- const rowGroupDefaultExpansion = atom(p.rowGroupDefaultExpansion ?? false);
103
- const rowGroupExpansions = atom(p.rowGroupExpansions ?? {});
104
- const rowGroupColumn = atom(p.rowGroupColumn ?? {});
105
- const headerCellRenderers = atom(p.headerCellRenderers ?? {});
106
- const floatingCellRenderers = atom(p.floatingCellRenderers ?? {});
107
- const floatingRowEnabled = atom(p.floatingRowEnabled ?? false);
108
- const floatingRowHeight = atom(p.floatingRowHeight ?? 40);
109
- const editRenderers = atom(p.editRenderers ?? {});
110
- const editRowValidatorFn = atom({ fn: p.editRowValidatorFn ?? (() => true) });
111
- const editClickActivator = atom(p.editClickActivator ?? "single");
112
- const editCellMode = atom(p.editCellMode ?? "readonly");
113
- const columnMarker = atom(p.columnMarker ?? {});
114
- const columnMarkerEnabled = atom(p.columnMarkerEnabled ?? false);
115
- const columnDoubleClickToAutosize = atom(p.columnDoubleClickToAutosize ?? true);
116
- const rowDetailHeight = atom(p.rowDetailHeight ?? 300);
117
- const rowDetailAutoHeightGuess = atom(p.rowDetailAutoHeightGuess ?? 300);
118
- const rowDetailExpansions = atom(p.rowDetailExpansions ?? new Set());
119
- const rowDetailRenderer = atom({ fn: p.rowDetailRenderer ?? (() => "Not defined") });
120
- const rowSelectedIds = atom(p.rowSelectedIds ?? new Set());
121
- const rowSelectionMode = atom(p.rowSelectionMode ?? "none");
122
- const rowSelectChildren = atom(p.rowSelectChildren ?? false);
123
- const rowSelectionActivator = atom(p.rowSelectionActivator ?? "single-click");
124
- const virtualizeRows = atom(p.virtualizeRows ?? true);
125
- const virtualizeCols = atom(p.virtualizeCols ?? true);
126
- const quickSearch = atom(p.quickSearch ?? null);
127
- const quickSearchSensitivity = atom(p.quickSearchSensitivity ?? "case-insensitive");
128
- const columnPivotMode = atom(p.columnPivotMode ?? false);
129
- const columnPivotModel = atom(
130
- p.columnPivotModel ?? {
131
- columns: [],
132
- filters: {},
133
- filtersIn: {},
134
- rows: [],
135
- sorts: [],
136
- values: [],
137
- },
138
- );
139
- const columnPivotColumns = atom([]);
140
- const columnPivotColumnGroupExpansions = atom({});
141
- const columnPivotRowGroupExpansions = atom({});
142
- const cellSelections = atom(p.cellSelections ?? []);
143
- const cellSelectionMode = atom(p.cellSelectionMode ?? "none");
144
- const internal_cellSelectionPivot = atom(null);
145
- const internal_cellSelectionAdditive = atom(null);
146
- const internal_cellSelectionSplits = atom((g) => {
147
- const selections = g(cellSelections);
148
- const topCount = g(rdsAtoms.topCount);
149
- const centerCount = g(rdsAtoms.rowCenterCount);
150
- const meta = g(columnMeta);
151
- return selections.flatMap((rect) => {
152
- return splitCellSelectionRect({
153
- rect,
154
- rowTopCount: topCount,
155
- rowCenterCount: centerCount,
156
- colStartCount: meta.columnVisibleStartCount,
157
- colCenterCount: meta.columnVisibleCenterCount,
158
- });
55
+ const store = createStore();
56
+ /**
57
+ * Primitive ATOMS and State
58
+ */
59
+ const rtl = atom(p.rtl ?? false);
60
+ const columns = atom(p.columns ?? []);
61
+ const base = atom(p.columnBase ?? {});
62
+ const gridId = atom(p.gridId);
63
+ const headerHeight = atom(p.headerHeight ?? DEFAULT_HEADER_HEIGHT);
64
+ const headerGroupHeight = atom(p.headerGroupHeight ?? DEFAULT_HEADER_HEIGHT);
65
+ const columnSizeToFit = atom(p.columnSizeToFit ?? false);
66
+ const viewport = atom(null);
67
+ const viewportHeightInner = atom(0);
68
+ const viewportHeightOuter = atom(0);
69
+ const viewportWidthInner = atom(0);
70
+ const viewportWidthOuter = atom(0);
71
+ const columnGroupJoinDelimiter = atom(p.columnGroupJoinDelimiter ?? COLUMN_GROUP_JOIN_DELIMITER);
72
+ const columnGroupExpansions = atom(p.columnGroupExpansions ?? {});
73
+ const columnGroupDefaultExpansion = atom(p.columnGroupDefaultExpansion ?? true);
74
+ const rowDataSource = atom(emptyRowDataSource);
75
+ const rowHeight = atom(p.rowHeight ?? 40);
76
+ const rowAutoHeightGuess = atom(p.rowAutoHeightGuess ?? 40);
77
+ const rowScanDistance = atom(p.rowScanDistance ?? 100);
78
+ const colScanDistance = atom(p.colScanDistance ?? 100);
79
+ const rowOverscanTop = atom(p.rowOverscanTop ?? 10);
80
+ const rowOverscanBottom = atom(p.rowOverscanBottom ?? 10);
81
+ const colOverScanStart = atom(p.colOverscanStart ?? 2);
82
+ const colOverscanEnd = atom(p.colOverscanEnd ?? 2);
83
+ const xScroll = atom(0);
84
+ const yScroll = atom(0);
85
+ const cellRenderers = atom(p.cellRenderers ?? {});
86
+ const rowFullWidthPredicate = atom({ fn: p.rowFullWidthPredicate ?? (() => false) });
87
+ const rowFullWidthRenderer = atom({ fn: p.rowFullWidthRenderer ?? (() => "Not defined") });
88
+ const sortModel = atom(p.sortModel ?? []);
89
+ const filterModel = atom(p.filterModel ?? {});
90
+ const filterInModel = atom(p.filterInModel ?? {});
91
+ const rowGroupModel = atom(p.rowGroupModel ?? []);
92
+ const aggModel = atom(p.aggModel ?? {});
93
+ const rowGroupDisplayMode = atom(p.rowGroupDisplayMode ?? "single-column");
94
+ const rowGroupDefaultExpansion = atom(p.rowGroupDefaultExpansion ?? false);
95
+ const rowGroupExpansions = atom(p.rowGroupExpansions ?? {});
96
+ const rowGroupColumn = atom(p.rowGroupColumn ?? {});
97
+ const headerCellRenderers = atom(p.headerCellRenderers ?? {});
98
+ const floatingCellRenderers = atom(p.floatingCellRenderers ?? {});
99
+ const floatingRowEnabled = atom(p.floatingRowEnabled ?? false);
100
+ const floatingRowHeight = atom(p.floatingRowHeight ?? 40);
101
+ const editRenderers = atom(p.editRenderers ?? {});
102
+ const editRowValidatorFn = atom({ fn: p.editRowValidatorFn ?? (() => true) });
103
+ const editClickActivator = atom(p.editClickActivator ?? "single");
104
+ const editCellMode = atom(p.editCellMode ?? "readonly");
105
+ const columnMarker = atom(p.columnMarker ?? {});
106
+ const columnMarkerEnabled = atom(p.columnMarkerEnabled ?? false);
107
+ const columnDoubleClickToAutosize = atom(p.columnDoubleClickToAutosize ?? true);
108
+ const rowDetailHeight = atom(p.rowDetailHeight ?? 300);
109
+ const rowDetailAutoHeightGuess = atom(p.rowDetailAutoHeightGuess ?? 300);
110
+ const rowDetailExpansions = atom(p.rowDetailExpansions ?? new Set());
111
+ const rowDetailRenderer = atom({ fn: p.rowDetailRenderer ?? (() => "Not defined") });
112
+ const rowSelectedIds = atom(p.rowSelectedIds ?? new Set());
113
+ const rowSelectionMode = atom(p.rowSelectionMode ?? "none");
114
+ const rowSelectChildren = atom(p.rowSelectChildren ?? false);
115
+ const rowSelectionActivator = atom(p.rowSelectionActivator ?? "single-click");
116
+ const virtualizeRows = atom(p.virtualizeRows ?? true);
117
+ const virtualizeCols = atom(p.virtualizeCols ?? true);
118
+ const quickSearch = atom(p.quickSearch ?? null);
119
+ const quickSearchSensitivity = atom(p.quickSearchSensitivity ?? "case-insensitive");
120
+ const columnPivotMode = atom(p.columnPivotMode ?? false);
121
+ const columnPivotModel = atom(p.columnPivotModel ??
122
+ {
123
+ columns: [],
124
+ filters: {},
125
+ filtersIn: {},
126
+ rows: [],
127
+ sorts: [],
128
+ values: [],
129
+ });
130
+ const columnPivotColumns = atom([]);
131
+ const columnPivotColumnGroupExpansions = atom({});
132
+ const columnPivotRowGroupExpansions = atom({});
133
+ const cellSelections = atom(p.cellSelections ?? []);
134
+ const cellSelectionMode = atom(p.cellSelectionMode ?? "none");
135
+ const internal_cellSelectionPivot = atom(null);
136
+ const internal_cellSelectionAdditive = atom(null);
137
+ const internal_cellSelectionSplits = atom((g) => {
138
+ const selections = g(cellSelections);
139
+ const topCount = g(rdsAtoms.topCount);
140
+ const centerCount = g(rdsAtoms.rowCenterCount);
141
+ const meta = g(columnMeta);
142
+ return selections.flatMap((rect) => {
143
+ return splitCellSelectionRect({
144
+ rect,
145
+ rowTopCount: topCount,
146
+ rowCenterCount: centerCount,
147
+ colStartCount: meta.columnVisibleStartCount,
148
+ colCenterCount: meta.columnVisibleCenterCount,
149
+ });
150
+ });
159
151
  });
160
- });
161
- const dialogFrame = atom(p.dialogFrames ?? {});
162
- const popoverFrame = atom(p.popoverFrames ?? {});
163
- const internal_rowSelectionPivot = atom(null);
164
- const internal_rowSelectionLastWasDeselect = atom(false);
165
- const rowSelectionPivot = atom((g) => g(internal_rowSelectionPivot));
166
- const internal_draggingHeader = atom(null);
167
- const internal_rowAutoHeightCache = atom({});
168
- const internal_rowDetailHeightCache = atom({});
169
- const internal_focusActive = atom(null);
170
- const internal_focusPrevCol = atom(null);
171
- const internal_focusPrevRow = atom(null);
172
- const internal_editActivePosition = atom(null);
173
- const internal_editData = atom(null);
174
- const internal_editValidation = atom(true);
175
- const internal_dialogFrames = atom({});
176
- const internal_popoverFrames = atom({});
177
- const layoutMap = atom((g) => {
178
- g(rdsAtoms.bottomCount);
179
- g(rdsAtoms.rowCenterCount);
180
- g(rdsAtoms.topCount);
181
- g(rdsAtoms.snapshotKey);
182
- g(rowDataSource);
183
- g(rowGroupModel);
184
- g(sortModel);
185
- g(filterModel);
186
- g(filterInModel);
187
- g(aggModel);
188
- return new Map();
189
- });
190
- /**
191
- * VIEW BOUNDS
192
- */
193
- let prevBounds = null;
194
- const bounds = atom((g) => {
195
- const vpWidth = g(viewportWidthInner);
196
- const vpHeight = g(viewportHeightInner);
197
- const scrollTop = g(yScroll);
198
- const scrollLeft = g(xScroll);
199
- const xPos = g(xPositions);
200
- const yPos = g(yPositions);
201
- const topCount = g(rdsAtoms.topCount);
202
- const bottomCount = g(rdsAtoms.bottomCount);
203
- const start = g(startCount);
204
- const end = g(endCount);
205
- const bounds = computeBounds({
206
- viewportWidth: vpWidth,
207
- viewportHeight: vpHeight,
208
- scrollTop,
209
- scrollLeft,
210
- xPositions: xPos,
211
- yPositions: yPos,
212
- topCount,
213
- bottomCount,
214
- startCount: start,
215
- endCount: end,
216
- rowOverscanTop: g(rowOverscanTop),
217
- rowOverscanBottom: g(rowOverscanBottom),
218
- colOverscanStart: g(colOverScanStart),
219
- colOverscanEnd: g(colOverscanEnd),
152
+ const dialogFrame = atom(p.dialogFrames ?? {});
153
+ const popoverFrame = atom(p.popoverFrames ?? {});
154
+ const internal_rowSelectionPivot = atom(null);
155
+ const internal_rowSelectionLastWasDeselect = atom(false);
156
+ const rowSelectionPivot = atom((g) => g(internal_rowSelectionPivot));
157
+ const internal_draggingHeader = atom(null);
158
+ const internal_rowAutoHeightCache = atom({});
159
+ const internal_rowDetailHeightCache = atom({});
160
+ const internal_focusActive = atom(null);
161
+ const internal_focusPrevCol = atom(null);
162
+ const internal_focusPrevRow = atom(null);
163
+ const internal_editActivePosition = atom(null);
164
+ const internal_editData = atom(null);
165
+ const internal_editValidation = atom(true);
166
+ const internal_dialogFrames = atom({});
167
+ const internal_popoverFrames = atom({});
168
+ const layoutMap = atom((g) => {
169
+ g(rdsAtoms.bottomCount);
170
+ g(rdsAtoms.rowCenterCount);
171
+ g(rdsAtoms.topCount);
172
+ g(rdsAtoms.snapshotKey);
173
+ g(rowDataSource);
174
+ g(rowGroupModel);
175
+ g(sortModel);
176
+ g(filterModel);
177
+ g(filterInModel);
178
+ g(aggModel);
179
+ return new Map();
220
180
  });
221
- if (equal(prevBounds, bounds)) return prevBounds;
222
- prevBounds = bounds;
223
- return bounds;
224
- });
225
- /**
226
- * COLUMN VIEW
227
- * Compute the column layout. This impacts both the row layout and header layout. Column layout
228
- * is impacted by the column definitions, the group expansions, the row group display mode.
229
- */
230
- const columnView = atom((g) => {
231
- const pivotMode = g(columnPivotMode);
232
- let cols;
233
- if (pivotMode) {
234
- const model = g(columnPivotModel);
235
- cols = columnAddRowGroup({
236
- columns: g(columnPivotColumns),
237
- rowGroupDisplayMode: "single-column",
238
- rowGroupModel: model.rows.filter((c) => c.active ?? true).map((c) => c.field),
239
- rowGroupTemplate: g(rowGroupColumn),
240
- });
241
- } else {
242
- cols = columnAddRowGroup({
243
- columns: g(columns),
244
- rowGroupDisplayMode: g(rowGroupDisplayMode),
245
- rowGroupModel: g(rowGroupModel),
246
- rowGroupTemplate: g(rowGroupColumn),
247
- });
248
- }
249
- const colsWithMarker = columnHandleMarker({
250
- columns: cols,
251
- marker: g(columnMarker),
252
- markerEnabled: g(columnMarkerEnabled),
181
+ /**
182
+ * VIEW BOUNDS
183
+ */
184
+ let prevBounds = null;
185
+ const bounds = atom((g) => {
186
+ const vpWidth = g(viewportWidthInner);
187
+ const vpHeight = g(viewportHeightInner);
188
+ const scrollTop = g(yScroll);
189
+ const scrollLeft = g(xScroll);
190
+ const xPos = g(xPositions);
191
+ const yPos = g(yPositions);
192
+ const topCount = g(rdsAtoms.topCount);
193
+ const bottomCount = g(rdsAtoms.bottomCount);
194
+ const start = g(startCount);
195
+ const end = g(endCount);
196
+ const bounds = computeBounds({
197
+ viewportWidth: vpWidth,
198
+ viewportHeight: vpHeight,
199
+ scrollTop,
200
+ scrollLeft,
201
+ xPositions: xPos,
202
+ yPositions: yPos,
203
+ topCount,
204
+ bottomCount,
205
+ startCount: start,
206
+ endCount: end,
207
+ rowOverscanTop: g(rowOverscanTop),
208
+ rowOverscanBottom: g(rowOverscanBottom),
209
+ colOverscanStart: g(colOverScanStart),
210
+ colOverscanEnd: g(colOverscanEnd),
211
+ });
212
+ if (equal(prevBounds, bounds))
213
+ return prevBounds;
214
+ prevBounds = bounds;
215
+ return bounds;
253
216
  });
254
- const view = makeColumnView({
255
- columns: colsWithMarker,
256
- base: g(base),
257
- groupExpansionDefault: g(columnGroupDefaultExpansion),
258
- groupExpansions: g(columnGroupExpansions),
259
- groupJoinDelimiter: g(columnGroupJoinDelimiter),
217
+ /**
218
+ * COLUMN VIEW
219
+ * Compute the column layout. This impacts both the row layout and header layout. Column layout
220
+ * is impacted by the column definitions, the group expansions, the row group display mode.
221
+ */
222
+ const columnView = atom((g) => {
223
+ const pivotMode = g(columnPivotMode);
224
+ let cols;
225
+ if (pivotMode) {
226
+ const model = g(columnPivotModel);
227
+ cols = columnAddRowGroup({
228
+ columns: g(columnPivotColumns),
229
+ rowGroupDisplayMode: "single-column",
230
+ rowGroupModel: model.rows.filter((c) => c.active ?? true).map((c) => c.field),
231
+ rowGroupTemplate: g(rowGroupColumn),
232
+ });
233
+ }
234
+ else {
235
+ cols = columnAddRowGroup({
236
+ columns: g(columns),
237
+ rowGroupDisplayMode: g(rowGroupDisplayMode),
238
+ rowGroupModel: g(rowGroupModel),
239
+ rowGroupTemplate: g(rowGroupColumn),
240
+ });
241
+ }
242
+ const colsWithMarker = columnHandleMarker({
243
+ columns: cols,
244
+ marker: g(columnMarker),
245
+ markerEnabled: g(columnMarkerEnabled),
246
+ });
247
+ const view = makeColumnView({
248
+ columns: colsWithMarker,
249
+ base: g(base),
250
+ groupExpansionDefault: g(columnGroupDefaultExpansion),
251
+ groupExpansions: g(columnGroupExpansions),
252
+ groupJoinDelimiter: g(columnGroupJoinDelimiter),
253
+ });
254
+ return view;
260
255
  });
261
- return view;
262
- });
263
- /**
264
- * COMPUTE ATOMS
265
- */
266
- const headerLayout = atom((g) => {
267
- const view = g(columnView);
268
- const layout = makeColumnLayout(
269
- view.combinedView,
270
- view.meta,
271
- g(bounds),
272
- g(internal_focusActive),
273
- g(floatingRowEnabled),
274
- );
275
- const dragged = g(internal_draggingHeader);
276
- // When dragging a group column, we may end up removing that group column when joining
277
- // the group with other columns in the same group (if they are separated). We want to ensure
278
- // the group remains mounted until after the drag. Hence we check if there would've been a merge
279
- // and add the dragged element to the layout. Once the drag ends the element will be removed. The
280
- // isHiddenMove is important for this.
281
- if (dragged) {
282
- const row = dragged.rowStart;
283
- const has = layout[row].findIndex(
284
- (c) => c.kind === "group" && c.idOccurrence === dragged.idOccurrence,
285
- );
286
- if (has === -1) {
287
- layout[row].push({ ...dragged, isHiddenMove: true });
288
- }
289
- }
290
- return { maxCol: view.maxCol, maxRow: view.maxRow, layout: layout };
291
- });
292
- const columnGroupMeta = atom((g) => g(columnView).meta);
293
- const columnMeta = atom((g) => {
294
- const view = g(columnView);
295
- return {
296
- columnLookup: view.lookup,
297
- columnsVisible: view.visibleColumns,
298
- columnVisibleCenterCount: view.centerCount,
299
- columnVisibleEndCount: view.endCount,
300
- columnVisibleStartCount: view.startCount,
301
- };
302
- });
303
- const xPositions = atom((g) => {
304
- const view = g(columnView);
305
- return computeColumnPositions(
306
- view.visibleColumns,
307
- g(base),
308
- g(viewportWidthInner),
309
- g(columnSizeToFit),
310
- );
311
- });
312
- const widthTotal = atom((get) => get(xPositions).at(-1));
313
- const headerHeightTotal = atom((g) => {
314
- const groupHHeight = g(headerGroupHeight);
315
- const hHeight = g(headerHeight);
316
- const view = g(columnView);
317
- const floating = g(floatingRowEnabled);
318
- const floatingHeight = g(floatingRowHeight);
319
- return (view.maxRow - 1) * groupHHeight + hHeight + (floating ? floatingHeight : 0);
320
- });
321
- const startCount = atom((g) => g(columnView).startCount);
322
- const endCount = atom((g) => g(columnView).endCount);
323
- /** ROWS */
324
- const rowByIndex = makeGridAtom(
325
- atom((g) => g(rowDataSource).rowByIndex),
326
- store,
327
- );
328
- const { store: rowDataStore, atoms: rdsAtoms } = makeRowDataStore(store, rowByIndex);
329
- const yPositions = atom((g) => {
330
- const rowCount = g(rdsAtoms.rowCount);
331
- const innerHeight = g(viewportHeightInner);
332
- const detailExpansions = g(rowDetailExpansions);
333
- g(internal_rowDetailHeightCache);
334
- const rds = g(rowDataSource);
335
- const rows = Object.fromEntries(
336
- [...detailExpansions]
337
- .map((x) => rds.rowToIndex(x))
338
- .filter((x) => x != null)
339
- .map((x) => [x, api.rowByIndex(x)]),
340
- );
341
- return computeRowPositions(
342
- rowCount,
343
- g(rowHeight),
344
- g(rowAutoHeightGuess),
345
- g(internal_rowAutoHeightCache),
346
- (i) => {
347
- const row = rows[i];
348
- if (!row || !api.rowDetailIsExpanded(row)) return 0;
349
- return api.rowDetailRenderedHeight(row);
350
- },
351
- innerHeight,
352
- );
353
- });
354
- const heightTotal = atom((g) => g(yPositions).at(-1));
355
- let prevLayout = DEFAULT_PREVIOUS_LAYOUT;
356
- const rowView = atom((g) => {
357
- let n = g(bounds);
358
- if (!g(virtualizeRows)) {
359
- n = { ...n, rowCenterStart: n.rowTopEnd, rowCenterEnd: n.rowCenterLast };
360
- }
361
- if (!g(virtualizeCols)) {
362
- n = { ...n, colCenterStart: n.colStartEnd, colCenterEnd: n.colCenterLast };
363
- }
364
- const rowScan = g(rowScanDistance);
365
- const colScan = g(colScanDistance);
366
- const columns = g(columnMeta).columnsVisible;
367
- const rds = g(rowDataSource);
368
- applyLayoutUpdate({
369
- computeColSpan: getSpanFn(rds, grid, columns, "col"),
370
- computeRowSpan: getSpanFn(rds, grid, columns, "row"),
371
- colScanDistance: colScan,
372
- rowScanDistance: rowScan,
373
- invalidated: true,
374
- isFullWidth: getFullWidthCallback(rds, g(rowFullWidthPredicate).fn, grid),
375
- isRowCutoff: (r) => {
376
- const row = rds.rowByIndex(r);
377
- return !row || row.kind === "branch";
378
- },
379
- layoutMap: g(layoutMap),
380
- nextLayout: n,
381
- prevLayout,
256
+ /**
257
+ * COMPUTE ATOMS
258
+ */
259
+ const headerLayout = atom((g) => {
260
+ const view = g(columnView);
261
+ const layout = makeColumnLayout(view.combinedView, view.meta, g(bounds), g(internal_focusActive), g(floatingRowEnabled));
262
+ const dragged = g(internal_draggingHeader);
263
+ // When dragging a group column, we may end up removing that group column when joining
264
+ // the group with other columns in the same group (if they are separated). We want to ensure
265
+ // the group remains mounted until after the drag. Hence we check if there would've been a merge
266
+ // and add the dragged element to the layout. Once the drag ends the element will be removed. The
267
+ // isHiddenMove is important for this.
268
+ if (dragged) {
269
+ const row = dragged.rowStart;
270
+ const has = layout[row].findIndex((c) => c.kind === "group" && c.idOccurrence === dragged.idOccurrence);
271
+ if (has === -1) {
272
+ layout[row].push({ ...dragged, isHiddenMove: true });
273
+ }
274
+ }
275
+ return { maxCol: view.maxCol, maxRow: view.maxRow, layout: layout };
382
276
  });
383
- prevLayout = n;
384
- const topCount = g(rdsAtoms.topCount);
385
- const botCount = g(rdsAtoms.bottomCount);
386
- const rowCount = g(rdsAtoms.rowCount);
387
- const yPos = g(yPositions);
388
- const botStart = rowCount - botCount;
389
- const focus = g(internal_focusActive);
390
- const view = makeRowLayout({
391
- layout: n,
392
- layoutMap: g(layoutMap),
393
- rds: rowDataStore,
394
- columns,
395
- focus: g(internal_focusActive),
277
+ const columnGroupMeta = atom((g) => g(columnView).meta);
278
+ const columnMeta = atom((g) => {
279
+ const view = g(columnView);
280
+ return {
281
+ columnLookup: view.lookup,
282
+ columnsVisible: view.visibleColumns,
283
+ columnVisibleCenterCount: view.centerCount,
284
+ columnVisibleEndCount: view.endCount,
285
+ columnVisibleStartCount: view.startCount,
286
+ };
396
287
  });
397
- const topHeight = yPos[topCount];
398
- const botHeight = yPos.at(-1) - yPos[botStart];
399
- const centerHeight = yPos.at(-1) - topHeight - botHeight;
400
- return {
401
- ...view,
402
- rowFocusedIndex:
403
- focus?.kind === "cell" || focus?.kind === "full-width"
404
- ? focus.rowIndex < topCount || focus.rowIndex >= rowCount - botCount
405
- ? null
406
- : focus.rowIndex
407
- : null,
408
- rowTopTotalHeight: topHeight,
409
- rowBottomTotalHeight: botHeight,
410
- rowCenterTotalHeight: centerHeight,
411
- rowFirstCenter: n.rowCenterStart,
412
- };
413
- });
414
- /**
415
- * STATE VIEW AND API
416
- */
417
- const gridView = atom((g) => {
418
- return {
419
- header: g(headerLayout),
420
- rows: g(rowView),
288
+ const xPositions = atom((g) => {
289
+ const view = g(columnView);
290
+ return computeColumnPositions(view.visibleColumns, g(base), g(viewportWidthInner), g(columnSizeToFit));
291
+ });
292
+ const widthTotal = atom((get) => get(xPositions).at(-1));
293
+ const headerHeightTotal = atom((g) => {
294
+ const groupHHeight = g(headerGroupHeight);
295
+ const hHeight = g(headerHeight);
296
+ const view = g(columnView);
297
+ const floating = g(floatingRowEnabled);
298
+ const floatingHeight = g(floatingRowHeight);
299
+ return (view.maxRow - 1) * groupHHeight + hHeight + (floating ? floatingHeight : 0);
300
+ });
301
+ const startCount = atom((g) => g(columnView).startCount);
302
+ const endCount = atom((g) => g(columnView).endCount);
303
+ /** ROWS */
304
+ const rowByIndex = makeGridAtom(atom((g) => g(rowDataSource).rowByIndex), store);
305
+ const { store: rowDataStore, atoms: rdsAtoms } = makeRowDataStore(store, rowByIndex);
306
+ const yPositions = atom((g) => {
307
+ const rowCount = g(rdsAtoms.rowCount);
308
+ const innerHeight = g(viewportHeightInner);
309
+ const detailExpansions = g(rowDetailExpansions);
310
+ g(internal_rowDetailHeightCache);
311
+ const rds = g(rowDataSource);
312
+ const rows = Object.fromEntries([...detailExpansions]
313
+ .map((x) => rds.rowToIndex(x))
314
+ .filter((x) => x != null)
315
+ .map((x) => [x, api.rowByIndex(x)]));
316
+ return computeRowPositions(rowCount, g(rowHeight), g(rowAutoHeightGuess), g(internal_rowAutoHeightCache), (i) => {
317
+ const row = rows[i];
318
+ if (!row || !api.rowDetailIsExpanded(row))
319
+ return 0;
320
+ return api.rowDetailRenderedHeight(row);
321
+ }, innerHeight);
322
+ });
323
+ const heightTotal = atom((g) => g(yPositions).at(-1));
324
+ let prevLayout = DEFAULT_PREVIOUS_LAYOUT;
325
+ const rowView = atom((g) => {
326
+ let n = g(bounds);
327
+ if (!g(virtualizeRows)) {
328
+ n = { ...n, rowCenterStart: n.rowTopEnd, rowCenterEnd: n.rowCenterLast };
329
+ }
330
+ if (!g(virtualizeCols)) {
331
+ n = { ...n, colCenterStart: n.colStartEnd, colCenterEnd: n.colCenterLast };
332
+ }
333
+ const rowScan = g(rowScanDistance);
334
+ const colScan = g(colScanDistance);
335
+ const columns = g(columnMeta).columnsVisible;
336
+ const rds = g(rowDataSource);
337
+ applyLayoutUpdate({
338
+ computeColSpan: getSpanFn(rds, grid, columns, "col"),
339
+ computeRowSpan: getSpanFn(rds, grid, columns, "row"),
340
+ colScanDistance: colScan,
341
+ rowScanDistance: rowScan,
342
+ invalidated: true,
343
+ isFullWidth: getFullWidthCallback(rds, g(rowFullWidthPredicate).fn, grid),
344
+ isRowCutoff: (r) => {
345
+ const row = rds.rowByIndex(r);
346
+ return !row || row.kind === "branch";
347
+ },
348
+ layoutMap: g(layoutMap),
349
+ nextLayout: n,
350
+ prevLayout,
351
+ });
352
+ prevLayout = n;
353
+ const topCount = g(rdsAtoms.topCount);
354
+ const botCount = g(rdsAtoms.bottomCount);
355
+ const rowCount = g(rdsAtoms.rowCount);
356
+ const yPos = g(yPositions);
357
+ const botStart = rowCount - botCount;
358
+ const focus = g(internal_focusActive);
359
+ const view = makeRowLayout({
360
+ layout: n,
361
+ layoutMap: g(layoutMap),
362
+ rds: rowDataStore,
363
+ columns,
364
+ focus: g(internal_focusActive),
365
+ });
366
+ const topHeight = yPos[topCount];
367
+ const botHeight = yPos.at(-1) - yPos[botStart];
368
+ const centerHeight = yPos.at(-1) - topHeight - botHeight;
369
+ return {
370
+ ...view,
371
+ rowFocusedIndex: focus?.kind === "cell" || focus?.kind === "full-width"
372
+ ? focus.rowIndex < topCount || focus.rowIndex >= rowCount - botCount
373
+ ? null
374
+ : focus.rowIndex
375
+ : null,
376
+ rowTopTotalHeight: topHeight,
377
+ rowBottomTotalHeight: botHeight,
378
+ rowCenterTotalHeight: centerHeight,
379
+ rowFirstCenter: n.rowCenterStart,
380
+ };
381
+ });
382
+ /**
383
+ * STATE VIEW AND API
384
+ */
385
+ const gridView = atom((g) => {
386
+ return {
387
+ header: g(headerLayout),
388
+ rows: g(rowView),
389
+ };
390
+ });
391
+ const state = {
392
+ rtl: makeGridAtom(rtl, store),
393
+ columns: makeGridAtom(columns, store),
394
+ columnMeta: makeGridAtom(columnMeta, store),
395
+ columnBase: makeGridAtom(base, store),
396
+ columnGroupExpansions: makeGridAtom(columnGroupExpansions, store),
397
+ columnGroupDefaultExpansion: makeGridAtom(columnGroupDefaultExpansion, store),
398
+ columnGroupJoinDelimiter: makeGridAtom(columnGroupJoinDelimiter, store),
399
+ columnGroupMeta: makeGridAtom(columnGroupMeta, store),
400
+ columnSizeToFit: makeGridAtom(columnSizeToFit, store),
401
+ gridId: makeGridAtom(gridId, store),
402
+ widthTotal: makeGridAtom(widthTotal, store),
403
+ heightTotal: makeGridAtom(heightTotal, store),
404
+ headerHeight: makeGridAtom(headerHeight, store),
405
+ headerGroupHeight: makeGridAtom(headerGroupHeight, store),
406
+ viewport: makeGridAtom(viewport, store),
407
+ viewportHeightInner: makeGridAtom(viewportHeightInner, store),
408
+ viewportHeightOuter: makeGridAtom(viewportHeightOuter, store),
409
+ viewportWidthInner: makeGridAtom(viewportWidthInner, store),
410
+ viewportWidthOuter: makeGridAtom(viewportWidthOuter, store),
411
+ xPositions: makeGridAtom(xPositions, store),
412
+ yPositions: makeGridAtom(yPositions, store),
413
+ rowDataStore,
414
+ rowDataSource: makeGridAtom(rowDataSource, store),
415
+ rowAutoHeightGuess: makeGridAtom(rowAutoHeightGuess, store),
416
+ rowHeight: makeGridAtom(rowHeight, store),
417
+ rowScanDistance: makeGridAtom(rowScanDistance, store),
418
+ colScanDistance: makeGridAtom(colScanDistance, store),
419
+ colOverscanStart: makeGridAtom(colOverScanStart, store),
420
+ colOverscanEnd: makeGridAtom(colOverscanEnd, store),
421
+ rowOverscanTop: makeGridAtom(rowOverscanTop, store),
422
+ rowOverscanBottom: makeGridAtom(rowOverscanBottom, store),
423
+ rowFullWidthPredicate: makeGridAtom(rowFullWidthPredicate, store),
424
+ rowFullWidthRenderer: makeGridAtom(rowFullWidthRenderer, store),
425
+ cellRenderers: makeGridAtom(cellRenderers, store),
426
+ sortModel: makeGridAtom(sortModel, store),
427
+ filterModel: makeGridAtom(filterModel, store),
428
+ filterInModel: makeGridAtom(filterInModel, store),
429
+ rowGroupModel: makeGridAtom(rowGroupModel, store),
430
+ aggModel: makeGridAtom(aggModel, store),
431
+ rowGroupColumn: makeGridAtom(rowGroupColumn, store),
432
+ rowGroupDefaultExpansion: makeGridAtom(rowGroupDefaultExpansion, store),
433
+ rowGroupDisplayMode: makeGridAtom(rowGroupDisplayMode, store),
434
+ rowGroupExpansions: makeGridAtom(rowGroupExpansions, store),
435
+ headerCellRenderers: makeGridAtom(headerCellRenderers, store),
436
+ floatingCellRenderers: makeGridAtom(floatingCellRenderers, store),
437
+ floatingRowEnabled: makeGridAtom(floatingRowEnabled, store),
438
+ floatingRowHeight: makeGridAtom(floatingRowHeight, store),
439
+ editRenderers: makeGridAtom(editRenderers, store),
440
+ editCellMode: makeGridAtom(editCellMode, store),
441
+ editClickActivator: makeGridAtom(editClickActivator, store),
442
+ editRowValidatorFn: makeGridAtom(editRowValidatorFn, store),
443
+ editActivePosition: makeGridAtom(atom((g) => g(internal_editActivePosition)), store),
444
+ columnMarker: makeGridAtom(columnMarker, store),
445
+ columnMarkerEnabled: makeGridAtom(columnMarkerEnabled, store),
446
+ columnDoubleClickToAutosize: makeGridAtom(columnDoubleClickToAutosize, store),
447
+ rowDetailExpansions: makeGridAtom(rowDetailExpansions, store),
448
+ rowDetailHeight: makeGridAtom(rowDetailHeight, store),
449
+ rowDetailRenderer: makeGridAtom(rowDetailRenderer, store),
450
+ rowDetailAutoHeightGuess: makeGridAtom(rowDetailAutoHeightGuess, store),
451
+ rowSelectedIds: makeGridAtom(rowSelectedIds, store),
452
+ rowSelectionMode: makeGridAtom(rowSelectionMode, store),
453
+ rowSelectionPivot: makeGridAtom(rowSelectionPivot, store),
454
+ rowSelectionActivator: makeGridAtom(rowSelectionActivator, store),
455
+ rowSelectChildren: makeGridAtom(rowSelectChildren, store),
456
+ viewBounds: makeGridAtom(bounds, store),
457
+ virtualizeRows: makeGridAtom(virtualizeRows, store),
458
+ virtualizeCols: makeGridAtom(virtualizeCols, store),
459
+ quickSearch: makeGridAtom(quickSearch, store),
460
+ quickSearchSensitivity: makeGridAtom(quickSearchSensitivity, store),
461
+ columnPivotMode: makeGridAtom(columnPivotMode, store),
462
+ columnPivotColumns: makeGridAtom(columnPivotColumns, store),
463
+ columnPivotModel: makeGridAtom(columnPivotModel, store),
464
+ columnPivotColumnGroupExpansions: makeGridAtom(columnPivotColumnGroupExpansions, store),
465
+ columnPivotRowGroupExpansions: makeGridAtom(columnPivotRowGroupExpansions, store),
466
+ dialogFrames: makeGridAtom(dialogFrame, store),
467
+ popoverFrames: makeGridAtom(popoverFrame, store),
468
+ cellSelections: makeGridAtom(cellSelections, store),
469
+ cellSelectionMode: makeGridAtom(cellSelectionMode, store),
421
470
  };
422
- });
423
- const state = {
424
- rtl: makeGridAtom(rtl, store),
425
- columns: makeGridAtom(columns, store),
426
- columnMeta: makeGridAtom(columnMeta, store),
427
- columnBase: makeGridAtom(base, store),
428
- columnGroupExpansions: makeGridAtom(columnGroupExpansions, store),
429
- columnGroupDefaultExpansion: makeGridAtom(columnGroupDefaultExpansion, store),
430
- columnGroupJoinDelimiter: makeGridAtom(columnGroupJoinDelimiter, store),
431
- columnGroupMeta: makeGridAtom(columnGroupMeta, store),
432
- columnSizeToFit: makeGridAtom(columnSizeToFit, store),
433
- gridId: makeGridAtom(gridId, store),
434
- widthTotal: makeGridAtom(widthTotal, store),
435
- heightTotal: makeGridAtom(heightTotal, store),
436
- headerHeight: makeGridAtom(headerHeight, store),
437
- headerGroupHeight: makeGridAtom(headerGroupHeight, store),
438
- viewport: makeGridAtom(viewport, store),
439
- viewportHeightInner: makeGridAtom(viewportHeightInner, store),
440
- viewportHeightOuter: makeGridAtom(viewportHeightOuter, store),
441
- viewportWidthInner: makeGridAtom(viewportWidthInner, store),
442
- viewportWidthOuter: makeGridAtom(viewportWidthOuter, store),
443
- xPositions: makeGridAtom(xPositions, store),
444
- yPositions: makeGridAtom(yPositions, store),
445
- rowDataStore,
446
- rowDataSource: makeGridAtom(rowDataSource, store),
447
- rowAutoHeightGuess: makeGridAtom(rowAutoHeightGuess, store),
448
- rowHeight: makeGridAtom(rowHeight, store),
449
- rowScanDistance: makeGridAtom(rowScanDistance, store),
450
- colScanDistance: makeGridAtom(colScanDistance, store),
451
- colOverscanStart: makeGridAtom(colOverScanStart, store),
452
- colOverscanEnd: makeGridAtom(colOverscanEnd, store),
453
- rowOverscanTop: makeGridAtom(rowOverscanTop, store),
454
- rowOverscanBottom: makeGridAtom(rowOverscanBottom, store),
455
- rowFullWidthPredicate: makeGridAtom(rowFullWidthPredicate, store),
456
- rowFullWidthRenderer: makeGridAtom(rowFullWidthRenderer, store),
457
- cellRenderers: makeGridAtom(cellRenderers, store),
458
- sortModel: makeGridAtom(sortModel, store),
459
- filterModel: makeGridAtom(filterModel, store),
460
- filterInModel: makeGridAtom(filterInModel, store),
461
- rowGroupModel: makeGridAtom(rowGroupModel, store),
462
- aggModel: makeGridAtom(aggModel, store),
463
- rowGroupColumn: makeGridAtom(rowGroupColumn, store),
464
- rowGroupDefaultExpansion: makeGridAtom(rowGroupDefaultExpansion, store),
465
- rowGroupDisplayMode: makeGridAtom(rowGroupDisplayMode, store),
466
- rowGroupExpansions: makeGridAtom(rowGroupExpansions, store),
467
- headerCellRenderers: makeGridAtom(headerCellRenderers, store),
468
- floatingCellRenderers: makeGridAtom(floatingCellRenderers, store),
469
- floatingRowEnabled: makeGridAtom(floatingRowEnabled, store),
470
- floatingRowHeight: makeGridAtom(floatingRowHeight, store),
471
- editRenderers: makeGridAtom(editRenderers, store),
472
- editCellMode: makeGridAtom(editCellMode, store),
473
- editClickActivator: makeGridAtom(editClickActivator, store),
474
- editRowValidatorFn: makeGridAtom(editRowValidatorFn, store),
475
- editActivePosition: makeGridAtom(
476
- atom((g) => g(internal_editActivePosition)),
477
- store,
478
- ),
479
- columnMarker: makeGridAtom(columnMarker, store),
480
- columnMarkerEnabled: makeGridAtom(columnMarkerEnabled, store),
481
- columnDoubleClickToAutosize: makeGridAtom(columnDoubleClickToAutosize, store),
482
- rowDetailExpansions: makeGridAtom(rowDetailExpansions, store),
483
- rowDetailHeight: makeGridAtom(rowDetailHeight, store),
484
- rowDetailRenderer: makeGridAtom(rowDetailRenderer, store),
485
- rowDetailAutoHeightGuess: makeGridAtom(rowDetailAutoHeightGuess, store),
486
- rowSelectedIds: makeGridAtom(rowSelectedIds, store),
487
- rowSelectionMode: makeGridAtom(rowSelectionMode, store),
488
- rowSelectionPivot: makeGridAtom(rowSelectionPivot, store),
489
- rowSelectionActivator: makeGridAtom(rowSelectionActivator, store),
490
- rowSelectChildren: makeGridAtom(rowSelectChildren, store),
491
- viewBounds: makeGridAtom(bounds, store),
492
- virtualizeRows: makeGridAtom(virtualizeRows, store),
493
- virtualizeCols: makeGridAtom(virtualizeCols, store),
494
- quickSearch: makeGridAtom(quickSearch, store),
495
- quickSearchSensitivity: makeGridAtom(quickSearchSensitivity, store),
496
- columnPivotMode: makeGridAtom(columnPivotMode, store),
497
- columnPivotColumns: makeGridAtom(columnPivotColumns, store),
498
- columnPivotModel: makeGridAtom(columnPivotModel, store),
499
- columnPivotColumnGroupExpansions: makeGridAtom(columnPivotColumnGroupExpansions, store),
500
- columnPivotRowGroupExpansions: makeGridAtom(columnPivotRowGroupExpansions, store),
501
- dialogFrames: makeGridAtom(dialogFrame, store),
502
- popoverFrames: makeGridAtom(popoverFrame, store),
503
- cellSelections: makeGridAtom(cellSelections, store),
504
- cellSelectionMode: makeGridAtom(cellSelectionMode, store),
505
- };
506
- const api = {};
507
- const grid = { state, view: makeGridAtom(gridView, store), api };
508
- const listeners = makeEventListeners();
509
- Object.assign(api, {
510
- columnField: makeColumnField(grid),
511
- columnFromIndex: makeColumnFromIndex(grid),
512
- columnIndex: makeColumnIndex(grid),
513
- columnById: makeColumnById(grid),
514
- columnResize: makeColumnResize(grid),
515
- columnUpdate: makeColumnUpdate(grid),
516
- columnMove: makeColumnMove(grid),
517
- sortForColumn: makeSortForColumn(grid),
518
- rowIsGroup: (r) => r.kind === "branch",
519
- rowIsLeaf: (r) => r.kind === "leaf",
520
- eventAddListener: listeners.eventAddListener,
521
- eventRemoveListener: listeners.eventRemoveListener,
522
- eventFire: listeners.eventFire,
523
- rowGroupColumnIndex: makeRowGroupColumnIndex(grid),
524
- rowGroupIsExpanded: makeRowGroupIsExpanded(grid),
525
- rowGroupToggle: makeRowGroupToggle(grid),
526
- rowGroupApplyExpansions: makeRowGroupApplyExpansions(grid),
527
- scrollIntoView: makeScrollIntoView(grid),
528
- editBegin: makeEditBegin(grid),
529
- editEnd: makeEditEnd(grid),
530
- editIsCellActive: makeEditIsCellActive(grid),
531
- editUpdate: makeEditUpdate(grid),
532
- focusCell: makeFocusCell(grid),
533
- rowById: makeRowById(grid),
534
- rowByIndex: makeRowByIndex(grid),
535
- rowDetailIsExpanded: makeRowDetailIsExpanded(grid),
536
- rowDetailRenderedHeight: makeRowDetailRenderedHeight(grid),
537
- rowDetailToggle: makeRowDetailToggle(grid),
538
- rowSelect: makeRowSelect(grid),
539
- rowSelectAll: makeRowSelectAll(grid),
540
- rowSelected: makeRowSelected(grid),
541
- rowHandleSelect: makeRowHandleSelect(grid),
542
- columnToggleGroup: makeColumnGroupToggle(grid),
543
- columnAutosize: makeColumnAutosize(grid),
544
- useRowDrag: makeUseRowDrag(grid),
545
- exportCsv: makeExportCsv(grid),
546
- exportCsvFile: makeExportCsvFile(grid),
547
- exportDataRect: makeExportDataRect(grid),
548
- dialogFrameClose: makeDialogFrameClose(grid),
549
- dialogFrameOpen: makeDialogFrameOpen(grid),
550
- popoverFrameClose: makePopoverFrameClose(grid),
551
- popoverFrameOpen: makePopoverFrameOpen(grid),
552
- positionFromElement: makePositionFromElement(),
553
- });
554
- Object.assign(grid, {
555
- internal: {
556
- headerCols: makeGridAtom(
557
- atom((g) => g(columnView).maxCol),
558
- store,
559
- ),
560
- headerRows: makeGridAtom(
561
- atom((g) => g(columnView).maxRow),
562
- store,
563
- ),
564
- headerHeightTotal: makeGridAtom(headerHeightTotal, store),
565
- xScroll: makeGridAtom(xScroll, store),
566
- yScroll: makeGridAtom(yScroll, store),
567
- refreshKey: makeGridAtom(rdsAtoms.snapshotKey, store),
568
- layout: makeGridAtom(layoutMap, store),
569
- focusActive: makeGridAtom(internal_focusActive, store),
570
- focusPrevColIndex: makeGridAtom(internal_focusPrevCol, store),
571
- focusPrevRowIndex: makeGridAtom(internal_focusPrevRow, store),
572
- editActivePos: makeGridAtom(internal_editActivePosition, store),
573
- editData: makeGridAtom(internal_editData, store),
574
- editValidation: makeGridAtom(internal_editValidation, store),
575
- rowAutoHeightCache: makeGridAtom(internal_rowAutoHeightCache, store),
576
- rowDetailAutoHeightCache: makeGridAtom(internal_rowDetailHeightCache, store),
577
- rowSelectedIds: rowSelectedIds,
578
- rowSelectionPivot: makeGridAtom(internal_rowSelectionPivot, store),
579
- rowSelectionLastWasDeselect: makeGridAtom(internal_rowSelectionLastWasDeselect, store),
580
- draggingHeader: makeGridAtom(internal_draggingHeader, store),
581
- dialogFrames: makeGridAtom(internal_dialogFrames, store),
582
- popoverFrames: makeGridAtom(internal_popoverFrames, store),
583
- cellSelectionPivot: makeGridAtom(internal_cellSelectionPivot, store),
584
- cellSelectionAdditiveRects: makeGridAtom(internal_cellSelectionAdditive, store),
585
- cellSelectionIsDeselect: makeGridAtom(atom(false), store),
586
- cellSelectionSplits: makeGridAtom(internal_cellSelectionSplits, store),
587
- store: store,
588
- },
589
- });
590
- store.sub(rowDataSource, () => {
591
- store.get(rowDataSource).init(grid);
592
- });
593
- store.set(rowDataSource, p.rowDataSource ?? emptyRowDataSource);
594
- // Ensure cell selections are bounded.
595
- store.sub(cellSelections, () => {
596
- const selections = store.get(cellSelections);
597
- const safeSelections = selections.map((c) => boundSelectionRect(grid, c));
598
- if (equal(selections, safeSelections)) return;
599
- store.set(cellSelections, safeSelections);
600
- });
601
- store.sub(rdsAtoms.rowCount, () => {
602
- const selections = store.get(cellSelections);
603
- const safeSelections = selections.map((c) => boundSelectionRect(grid, c));
604
- store.set(cellSelections, safeSelections);
605
- });
606
- store.sub(columnMeta, () => {
607
- const selections = store.get(cellSelections);
608
- const safeSelections = selections.map((c) => boundSelectionRect(grid, c));
609
- store.set(cellSelections, safeSelections);
610
- });
611
- return grid;
471
+ const api = {};
472
+ const grid = { state, view: makeGridAtom(gridView, store), api };
473
+ const listeners = makeEventListeners();
474
+ Object.assign(api, {
475
+ columnField: makeColumnField(grid),
476
+ columnFromIndex: makeColumnFromIndex(grid),
477
+ columnIndex: makeColumnIndex(grid),
478
+ columnById: makeColumnById(grid),
479
+ columnResize: makeColumnResize(grid),
480
+ columnUpdate: makeColumnUpdate(grid),
481
+ columnMove: makeColumnMove(grid),
482
+ sortForColumn: makeSortForColumn(grid),
483
+ rowIsGroup: (r) => r.kind === "branch",
484
+ rowIsLeaf: (r) => r.kind === "leaf",
485
+ eventAddListener: listeners.eventAddListener,
486
+ eventRemoveListener: listeners.eventRemoveListener,
487
+ eventFire: listeners.eventFire,
488
+ rowGroupColumnIndex: makeRowGroupColumnIndex(grid),
489
+ rowGroupIsExpanded: makeRowGroupIsExpanded(grid),
490
+ rowGroupToggle: makeRowGroupToggle(grid),
491
+ rowGroupApplyExpansions: makeRowGroupApplyExpansions(grid),
492
+ scrollIntoView: makeScrollIntoView(grid),
493
+ editBegin: makeEditBegin(grid),
494
+ editEnd: makeEditEnd(grid),
495
+ editIsCellActive: makeEditIsCellActive(grid),
496
+ editUpdate: makeEditUpdate(grid),
497
+ focusCell: makeFocusCell(grid),
498
+ rowById: makeRowById(grid),
499
+ rowByIndex: makeRowByIndex(grid),
500
+ rowDetailIsExpanded: makeRowDetailIsExpanded(grid),
501
+ rowDetailRenderedHeight: makeRowDetailRenderedHeight(grid),
502
+ rowDetailToggle: makeRowDetailToggle(grid),
503
+ rowSelect: makeRowSelect(grid),
504
+ rowSelectAll: makeRowSelectAll(grid),
505
+ rowSelected: makeRowSelected(grid),
506
+ rowHandleSelect: makeRowHandleSelect(grid),
507
+ columnToggleGroup: makeColumnGroupToggle(grid),
508
+ columnAutosize: makeColumnAutosize(grid),
509
+ useRowDrag: makeUseRowDrag(grid),
510
+ exportCsv: makeExportCsv(grid),
511
+ exportCsvFile: makeExportCsvFile(grid),
512
+ exportDataRect: makeExportDataRect(grid),
513
+ dialogFrameClose: makeDialogFrameClose(grid),
514
+ dialogFrameOpen: makeDialogFrameOpen(grid),
515
+ popoverFrameClose: makePopoverFrameClose(grid),
516
+ popoverFrameOpen: makePopoverFrameOpen(grid),
517
+ positionFromElement: makePositionFromElement(),
518
+ });
519
+ Object.assign(grid, {
520
+ internal: {
521
+ headerCols: makeGridAtom(atom((g) => g(columnView).maxCol), store),
522
+ headerRows: makeGridAtom(atom((g) => g(columnView).maxRow), store),
523
+ headerHeightTotal: makeGridAtom(headerHeightTotal, store),
524
+ xScroll: makeGridAtom(xScroll, store),
525
+ yScroll: makeGridAtom(yScroll, store),
526
+ refreshKey: makeGridAtom(rdsAtoms.snapshotKey, store),
527
+ layout: makeGridAtom(layoutMap, store),
528
+ focusActive: makeGridAtom(internal_focusActive, store),
529
+ focusPrevColIndex: makeGridAtom(internal_focusPrevCol, store),
530
+ focusPrevRowIndex: makeGridAtom(internal_focusPrevRow, store),
531
+ editActivePos: makeGridAtom(internal_editActivePosition, store),
532
+ editData: makeGridAtom(internal_editData, store),
533
+ editValidation: makeGridAtom(internal_editValidation, store),
534
+ rowAutoHeightCache: makeGridAtom(internal_rowAutoHeightCache, store),
535
+ rowDetailAutoHeightCache: makeGridAtom(internal_rowDetailHeightCache, store),
536
+ rowSelectedIds: rowSelectedIds,
537
+ rowSelectionPivot: makeGridAtom(internal_rowSelectionPivot, store),
538
+ rowSelectionLastWasDeselect: makeGridAtom(internal_rowSelectionLastWasDeselect, store),
539
+ draggingHeader: makeGridAtom(internal_draggingHeader, store),
540
+ dialogFrames: makeGridAtom(internal_dialogFrames, store),
541
+ popoverFrames: makeGridAtom(internal_popoverFrames, store),
542
+ cellSelectionPivot: makeGridAtom(internal_cellSelectionPivot, store),
543
+ cellSelectionAdditiveRects: makeGridAtom(internal_cellSelectionAdditive, store),
544
+ cellSelectionIsDeselect: makeGridAtom(atom(false), store),
545
+ cellSelectionSplits: makeGridAtom(internal_cellSelectionSplits, store),
546
+ store: store,
547
+ },
548
+ });
549
+ store.sub(rowDataSource, () => {
550
+ store.get(rowDataSource).init(grid);
551
+ });
552
+ store.set(rowDataSource, p.rowDataSource ?? emptyRowDataSource);
553
+ // Ensure cell selections are bounded.
554
+ store.sub(cellSelections, () => {
555
+ const selections = store.get(cellSelections);
556
+ const safeSelections = selections.map((c) => boundSelectionRect(grid, c));
557
+ if (equal(selections, safeSelections))
558
+ return;
559
+ store.set(cellSelections, safeSelections);
560
+ });
561
+ store.sub(rdsAtoms.rowCount, () => {
562
+ const selections = store.get(cellSelections);
563
+ const safeSelections = selections.map((c) => boundSelectionRect(grid, c));
564
+ store.set(cellSelections, safeSelections);
565
+ });
566
+ store.sub(columnMeta, () => {
567
+ const selections = store.get(cellSelections);
568
+ const safeSelections = selections.map((c) => boundSelectionRect(grid, c));
569
+ store.set(cellSelections, safeSelections);
570
+ });
571
+ return grid;
612
572
  }
613
573
  export function useLyteNyte(p) {
614
- const m = useRef(null);
615
- if (!m.current) {
616
- m.current = makeLyteNyte(p);
617
- }
618
- return m.current;
574
+ const m = useRef(null);
575
+ if (!m.current) {
576
+ m.current = makeLyteNyte(p);
577
+ }
578
+ return m.current;
619
579
  }