@1771technologies/lytenyte-pro 1.0.0-beta.36 → 1.0.0-beta.37

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