@1771technologies/lytenyte-pro 1.0.0-beta.12 → 1.0.0-beta.13

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 +3969 -4155
  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 -56
  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 +535 -539
  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 +660 -682
  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 +512 -510
  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 -665
  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 -16
  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
@@ -4,73 +4,47 @@ import { useListboxContext } from "./context";
4
4
  import { useCombinedRefs } from "@1771technologies/lytenyte-react-hooks";
5
5
  import { getTabbables } from "@1771technologies/lytenyte-dom-utils";
6
6
  export const Panel = forwardRef(function Panel(props, forwarded) {
7
- const [ref, setRef] = useState();
8
- const combinedRef = useCombinedRefs(setRef, forwarded);
9
- const ctx = useListboxContext();
10
- useEffect(() => {
11
- if (!ref) return;
12
- const controller = new AbortController();
13
- const isVert = ctx.orientation === "vertical";
14
- const nextKey = isVert ? "ArrowDown" : ctx.rtl ? "ArrowLeft" : "ArrowRight";
15
- const prevKey = isVert ? "ArrowUp" : ctx.rtl ? "ArrowRight" : "ArrowLeft";
16
- ref.addEventListener(
17
- "keydown",
18
- (ev) => {
19
- if (ev.key === "Tab") {
20
- if (ref.contains(document.activeElement) || document.activeElement === ref) {
21
- ref.inert = true;
22
- setTimeout(() => {
23
- ref.inert = false;
24
- }, 10);
25
- }
26
- }
27
- if (ev.key === nextKey) {
28
- const items = getTabbables(ref).filter(
29
- (c) => c.getAttribute("data-ln-listbox-item") === "true",
30
- );
31
- const currentIndex = items.findIndex(
32
- (c) => c.contains(document.activeElement) || c === document.activeElement,
33
- );
34
- const focusItem = currentIndex === -1 ? items[0] : (items[currentIndex + 1] ?? items[0]);
35
- if (!focusItem) return;
36
- focusItem.focus();
37
- ev.preventDefault();
38
- ev.stopPropagation();
39
- }
40
- if (ev.key === prevKey) {
41
- const items = getTabbables(ref).filter(
42
- (c) => c.getAttribute("data-ln-listbox-item") === "true",
43
- );
44
- const currentIndex = items.findIndex(
45
- (c) => c.contains(document.activeElement) || c === document.activeElement,
46
- );
47
- const focusItem =
48
- currentIndex === -1 ? items.at(-1) : (items[currentIndex - 1] ?? items.at(-1));
49
- if (!focusItem) return;
50
- focusItem.focus();
51
- ev.preventDefault();
52
- ev.stopPropagation();
53
- }
54
- },
55
- { signal: controller.signal },
56
- );
57
- return () => controller.abort();
58
- }, [ctx.orientation, ctx.rtl, ref]);
59
- return _jsxs("div", {
60
- "aria-label": "Generic listbox with keyboard navigable items",
61
- ...props,
62
- ref: combinedRef,
63
- "data-ln-listbox-panel": true,
64
- role: "listbox",
65
- tabIndex: 0,
66
- children: [
67
- props.children,
68
- _jsx("div", {
69
- "aria-label": "a presentational item that can be ignored",
70
- tabIndex: 0,
71
- onFocus: () => ref?.focus(),
72
- role: "option",
73
- }),
74
- ],
75
- });
7
+ const [ref, setRef] = useState();
8
+ const combinedRef = useCombinedRefs(setRef, forwarded);
9
+ const ctx = useListboxContext();
10
+ useEffect(() => {
11
+ if (!ref)
12
+ return;
13
+ const controller = new AbortController();
14
+ const isVert = ctx.orientation === "vertical";
15
+ const nextKey = isVert ? "ArrowDown" : ctx.rtl ? "ArrowLeft" : "ArrowRight";
16
+ const prevKey = isVert ? "ArrowUp" : ctx.rtl ? "ArrowRight" : "ArrowLeft";
17
+ ref.addEventListener("keydown", (ev) => {
18
+ if (ev.key === "Tab") {
19
+ if (ref.contains(document.activeElement) || document.activeElement === ref) {
20
+ ref.inert = true;
21
+ setTimeout(() => {
22
+ ref.inert = false;
23
+ }, 10);
24
+ }
25
+ }
26
+ if (ev.key === nextKey) {
27
+ const items = getTabbables(ref).filter((c) => c.getAttribute("data-ln-listbox-item") === "true");
28
+ const currentIndex = items.findIndex((c) => c.contains(document.activeElement) || c === document.activeElement);
29
+ const focusItem = currentIndex === -1 ? items[0] : (items[currentIndex + 1] ?? items[0]);
30
+ if (!focusItem)
31
+ return;
32
+ focusItem.focus();
33
+ ev.preventDefault();
34
+ ev.stopPropagation();
35
+ }
36
+ if (ev.key === prevKey) {
37
+ const items = getTabbables(ref).filter((c) => c.getAttribute("data-ln-listbox-item") === "true");
38
+ const currentIndex = items.findIndex((c) => c.contains(document.activeElement) || c === document.activeElement);
39
+ const focusItem = currentIndex === -1 ? items.at(-1) : (items[currentIndex - 1] ?? items.at(-1));
40
+ if (!focusItem)
41
+ return;
42
+ focusItem.focus();
43
+ ev.preventDefault();
44
+ ev.stopPropagation();
45
+ }
46
+ }, { signal: controller.signal });
47
+ return () => controller.abort();
48
+ }, [ctx.orientation, ctx.rtl, ref]);
49
+ return (_jsxs("div", { "aria-label": "Generic listbox with keyboard navigable items", ...props, ref: combinedRef, "data-ln-listbox-panel": true, role: "listbox", tabIndex: 0, children: [props.children, _jsx("div", { "aria-label": "a presentational item that can be ignored", tabIndex: 0, onFocus: () => ref?.focus(), role: "option" })] }));
76
50
  });
@@ -1,8 +1,6 @@
1
1
  import { type PropsWithChildren } from "react";
2
2
  export interface RootProps {
3
- readonly orientation?: "horizontal" | "vertical";
4
- readonly rtl?: boolean;
3
+ readonly orientation?: "horizontal" | "vertical";
4
+ readonly rtl?: boolean;
5
5
  }
6
- export declare function Root(
7
- props: PropsWithChildren<RootProps>,
8
- ): import("react/jsx-runtime").JSX.Element;
6
+ export declare function Root(props: PropsWithChildren<RootProps>): import("react/jsx-runtime").JSX.Element;
@@ -2,11 +2,11 @@ import { jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useMemo } from "react";
3
3
  import { context } from "./context";
4
4
  export function Root(props) {
5
- const value = useMemo(() => {
6
- return {
7
- orientation: props.orientation ?? "vertical",
8
- rtl: props.rtl ?? false,
9
- };
10
- }, [props.orientation, props.rtl]);
11
- return _jsx(context.Provider, { value: value, children: props.children });
5
+ const value = useMemo(() => {
6
+ return {
7
+ orientation: props.orientation ?? "vertical",
8
+ rtl: props.rtl ?? false,
9
+ };
10
+ }, [props.orientation, props.rtl]);
11
+ return _jsx(context.Provider, { value: value, children: props.children });
12
12
  }
@@ -1,27 +1,21 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useGridRoot } from "../context";
3
3
  export function DialogDriver() {
4
- const grid = useGridRoot().grid;
5
- const openFrameState = grid.internal.dialogFrames.useValue();
6
- const frames = grid.state.dialogFrames.useValue();
7
- const frameIds = Object.keys(openFrameState);
8
- const openFrames = frameIds
9
- .map((c) => {
10
- const frame = frames[c];
11
- if (!frame) {
12
- console.error(`Failed to find a dialog frame with id ${c}`);
13
- return null;
14
- }
15
- return frame;
4
+ const grid = useGridRoot().grid;
5
+ const openFrameState = grid.internal.dialogFrames.useValue();
6
+ const frames = grid.state.dialogFrames.useValue();
7
+ const frameIds = Object.keys(openFrameState);
8
+ const openFrames = frameIds
9
+ .map((c) => {
10
+ const frame = frames[c];
11
+ if (!frame) {
12
+ console.error(`Failed to find a dialog frame with id ${c}`);
13
+ return null;
14
+ }
15
+ return frame;
16
16
  })
17
- .filter((c) => c);
18
- return _jsx(_Fragment, {
19
- children: openFrames.map((frame, i) => {
20
- return _jsx(
21
- frame.component,
22
- { frame: frame, grid: grid, context: openFrameState[frameIds[i]] },
23
- frameIds[i],
24
- );
25
- }),
26
- });
17
+ .filter((c) => c);
18
+ return (_jsx(_Fragment, { children: openFrames.map((frame, i) => {
19
+ return (_jsx(frame.component, { frame: frame, grid: grid, context: openFrameState[frameIds[i]] }, frameIds[i]));
20
+ }) }));
27
21
  }
@@ -1,32 +1,21 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useGridRoot } from "../context";
3
3
  export function PopoverDriver() {
4
- const grid = useGridRoot().grid;
5
- const openFrameState = grid.internal.popoverFrames.useValue();
6
- const frames = grid.state.popoverFrames.useValue();
7
- const frameIds = Object.keys(openFrameState);
8
- const openFrames = frameIds
9
- .map((c) => {
10
- const frame = frames[c];
11
- if (!frame) {
12
- console.error(`Failed to find a dialog frame with id ${c}`);
13
- return null;
14
- }
15
- return frame;
4
+ const grid = useGridRoot().grid;
5
+ const openFrameState = grid.internal.popoverFrames.useValue();
6
+ const frames = grid.state.popoverFrames.useValue();
7
+ const frameIds = Object.keys(openFrameState);
8
+ const openFrames = frameIds
9
+ .map((c) => {
10
+ const frame = frames[c];
11
+ if (!frame) {
12
+ console.error(`Failed to find a dialog frame with id ${c}`);
13
+ return null;
14
+ }
15
+ return frame;
16
16
  })
17
- .filter((c) => c);
18
- return _jsx(_Fragment, {
19
- children: openFrames.map((frame, i) => {
20
- return _jsx(
21
- frame.component,
22
- {
23
- frame: frame,
24
- grid: grid,
25
- context: openFrameState[frameIds[i]].context,
26
- target: openFrameState[frameIds[i]].target,
27
- },
28
- frameIds[i],
29
- );
30
- }),
31
- });
17
+ .filter((c) => c);
18
+ return (_jsx(_Fragment, { children: openFrames.map((frame, i) => {
19
+ return (_jsx(frame.component, { frame: frame, grid: grid, context: openFrameState[frameIds[i]].context, target: openFrameState[frameIds[i]].target }, frameIds[i]));
20
+ }) }));
32
21
  }
@@ -1,12 +1,8 @@
1
1
  import { type PropsWithChildren } from "react";
2
2
  import type { Grid, GridEvents } from "../+types";
3
3
  export type RootProps<T> = {
4
- readonly grid: Grid<T>;
4
+ readonly grid: Grid<T>;
5
5
  } & {
6
- [k in keyof GridEvents<T> as `on${Capitalize<k>}`]: GridEvents<T>[k];
6
+ [k in keyof GridEvents<T> as `on${Capitalize<k>}`]: GridEvents<T>[k];
7
7
  };
8
- export declare function Root<T = any>({
9
- grid,
10
- children,
11
- ...events
12
- }: PropsWithChildren<RootProps<T>>): import("react/jsx-runtime").JSX.Element;
8
+ export declare function Root<T = any>({ grid, children, ...events }: PropsWithChildren<RootProps<T>>): import("react/jsx-runtime").JSX.Element;
package/dist/root/root.js CHANGED
@@ -7,118 +7,114 @@ import { PopoverDriver } from "./popover-driver";
7
7
  import { CellSelectionDriver } from "../cell-selection/cell-selection-driver";
8
8
  import { hasAValidLicense } from "../license";
9
9
  export function Root({ grid, children, ...events }) {
10
- useEffect(() => {
11
- if (hasAValidLicense) return;
12
- const existing = document.getElementById("lng1771-watermark");
13
- if (existing) return;
14
- const invalidLicenseWatermark = document.createElement("div");
15
- invalidLicenseWatermark.style.position = "fixed";
16
- invalidLicenseWatermark.style.bottom = "0px";
17
- invalidLicenseWatermark.style.insetInlineEnd = "0px";
18
- invalidLicenseWatermark.style.background = "rgb(255, 167, 167)";
19
- invalidLicenseWatermark.style.color = "black";
20
- invalidLicenseWatermark.style.fontSize = "1.2rem";
21
- invalidLicenseWatermark.style.fontWeight = "bold";
22
- invalidLicenseWatermark.style.border = "1px solid black";
23
- invalidLicenseWatermark.style.padding = "16px";
24
- invalidLicenseWatermark.innerHTML = `LyteNyte Grid PRO is being used for evaluation.
10
+ useEffect(() => {
11
+ if (hasAValidLicense)
12
+ return;
13
+ const existing = document.getElementById("lng1771-watermark");
14
+ if (existing)
15
+ return;
16
+ const invalidLicenseWatermark = document.createElement("div");
17
+ invalidLicenseWatermark.style.position = "fixed";
18
+ invalidLicenseWatermark.style.bottom = "0px";
19
+ invalidLicenseWatermark.style.insetInlineEnd = "0px";
20
+ invalidLicenseWatermark.style.background = "rgb(255, 167, 167)";
21
+ invalidLicenseWatermark.style.color = "black";
22
+ invalidLicenseWatermark.style.fontSize = "1.2rem";
23
+ invalidLicenseWatermark.style.fontWeight = "bold";
24
+ invalidLicenseWatermark.style.border = "1px solid black";
25
+ invalidLicenseWatermark.style.padding = "16px";
26
+ invalidLicenseWatermark.innerHTML = `LyteNyte Grid PRO is being used for evaluation.
25
27
  <a href="https://1771Technologies.com/pricing">Click here</a> to secure your license.`;
26
- document.body.appendChild(invalidLicenseWatermark);
27
- return () => invalidLicenseWatermark.remove();
28
- }, []);
29
- const onViewportChange = useEvent((bounds) => {
30
- grid.state.viewport.set(element ?? null);
31
- grid.state.viewportHeightOuter.set(bounds.height);
32
- grid.state.viewportWidthOuter.set(bounds.width);
33
- grid.state.viewportWidthInner.set(element?.clientWidth ?? 0);
34
- grid.state.viewportHeightInner.set(element?.clientHeight ?? 0);
35
- });
36
- // Add event listeners in the standard react way
37
- useEffect(() => {
38
- const ev = Object.entries(events).map(([onName, fn]) => {
39
- if (!onName.startsWith("on")) return;
40
- const name = onName[2].toLowerCase() + onName.slice(3);
41
- return grid.api.eventAddListener(name, fn);
28
+ document.body.appendChild(invalidLicenseWatermark);
29
+ return () => invalidLicenseWatermark.remove();
30
+ }, []);
31
+ const onViewportChange = useEvent((bounds) => {
32
+ grid.state.viewport.set(element ?? null);
33
+ grid.state.viewportHeightOuter.set(bounds.height);
34
+ grid.state.viewportWidthOuter.set(bounds.width);
35
+ grid.state.viewportWidthInner.set(element?.clientWidth ?? 0);
36
+ grid.state.viewportHeightInner.set(element?.clientHeight ?? 0);
42
37
  });
43
- return () => ev.forEach((c) => c?.());
44
- // eslint-disable-next-line react-hooks/exhaustive-deps
45
- }, [Object.values(events)]);
46
- const [ref, bounds, , element] = useMeasure({
47
- onChange: onViewportChange,
48
- });
49
- // Add css variables so that we can avoid re-renders
50
- useEffect(() => {
51
- return grid.state.widthTotal.watch(() => {
52
- const vp = grid.state.viewport.get();
53
- const width = grid.state.widthTotal.get();
54
- if (!vp) return;
55
- vp.style.setProperty("--lng-vp-total-width", `${width}px`);
38
+ // Add event listeners in the standard react way
39
+ useEffect(() => {
40
+ const ev = Object.entries(events).map(([onName, fn]) => {
41
+ if (!onName.startsWith("on"))
42
+ return;
43
+ const name = onName[2].toLowerCase() + onName.slice(3);
44
+ return grid.api.eventAddListener(name, fn);
45
+ });
46
+ return () => ev.forEach((c) => c?.());
47
+ // eslint-disable-next-line react-hooks/exhaustive-deps
48
+ }, [Object.values(events)]);
49
+ const [ref, bounds, , element] = useMeasure({
50
+ onChange: onViewportChange,
56
51
  });
57
- }, [grid]);
58
- const internal = grid.internal;
59
- // Listen to size changes of the window
60
- useLayoutEffect(() => {
61
- if (!element) return;
62
- const obs = new ResizeObserver(() => {
63
- grid.state.viewport.set(element ?? null);
64
- grid.state.viewportHeightOuter.set(bounds.height);
65
- grid.state.viewportWidthOuter.set(bounds.width);
66
- grid.state.viewportWidthInner.set(element?.clientWidth ?? 0);
67
- grid.state.viewportHeightInner.set(element?.clientHeight ?? 0);
68
- });
69
- obs.observe(element);
70
- const controller = new AbortController();
71
- element.addEventListener(
72
- "scroll",
73
- () => {
74
- internal.xScroll.set(Math.abs(element.scrollLeft));
75
- internal.yScroll.set(element.scrollTop);
76
- },
77
- { signal: controller.signal },
78
- );
79
- return () => {
80
- obs.disconnect();
81
- controller.abort();
82
- };
83
- }, [
84
- bounds.height,
85
- bounds.width,
86
- element,
87
- grid.state.viewport,
88
- grid.state.viewportHeightInner,
89
- grid.state.viewportHeightOuter,
90
- grid.state.viewportWidthInner,
91
- grid.state.viewportWidthOuter,
92
- internal.xScroll,
93
- internal.yScroll,
94
- ]);
95
- useEffect(() => {
96
- return internal.focusActive.watch(() => {
97
- const editActive = internal.editActivePos.get();
98
- if (!editActive) return;
99
- const focus = internal.focusActive.get();
100
- if (focus?.kind !== "cell") {
101
- grid.api.editEnd();
102
- } else {
103
- if (grid.api.editIsCellActive({ rowIndex: focus.rowIndex, column: focus.colIndex })) return;
104
- grid.api.editEnd();
105
- }
106
- });
107
- }, [grid.api, internal.editActivePos, internal.focusActive]);
108
- const value = useMemo(() => {
109
- return {
110
- ref,
111
- grid: grid,
112
- };
113
- }, [grid, ref]);
114
- const cellSelectionMode = grid.state.cellSelectionMode.useValue();
115
- return _jsxs(RootProvider, {
116
- value: value,
117
- children: [
118
- _jsx(DialogDriver, {}),
119
- _jsx(PopoverDriver, {}),
120
- cellSelectionMode !== "none" && _jsx(CellSelectionDriver, {}),
121
- children,
122
- ],
123
- });
52
+ // Add css variables so that we can avoid re-renders
53
+ useEffect(() => {
54
+ return grid.state.widthTotal.watch(() => {
55
+ const vp = grid.state.viewport.get();
56
+ const width = grid.state.widthTotal.get();
57
+ if (!vp)
58
+ return;
59
+ vp.style.setProperty("--lng-vp-total-width", `${width}px`);
60
+ });
61
+ }, [grid]);
62
+ const internal = grid.internal;
63
+ // Listen to size changes of the window
64
+ useLayoutEffect(() => {
65
+ if (!element)
66
+ return;
67
+ const obs = new ResizeObserver(() => {
68
+ grid.state.viewport.set(element ?? null);
69
+ grid.state.viewportHeightOuter.set(bounds.height);
70
+ grid.state.viewportWidthOuter.set(bounds.width);
71
+ grid.state.viewportWidthInner.set(element?.clientWidth ?? 0);
72
+ grid.state.viewportHeightInner.set(element?.clientHeight ?? 0);
73
+ });
74
+ obs.observe(element);
75
+ const controller = new AbortController();
76
+ element.addEventListener("scroll", () => {
77
+ internal.xScroll.set(Math.abs(element.scrollLeft));
78
+ internal.yScroll.set(element.scrollTop);
79
+ }, { signal: controller.signal });
80
+ return () => {
81
+ obs.disconnect();
82
+ controller.abort();
83
+ };
84
+ }, [
85
+ bounds.height,
86
+ bounds.width,
87
+ element,
88
+ grid.state.viewport,
89
+ grid.state.viewportHeightInner,
90
+ grid.state.viewportHeightOuter,
91
+ grid.state.viewportWidthInner,
92
+ grid.state.viewportWidthOuter,
93
+ internal.xScroll,
94
+ internal.yScroll,
95
+ ]);
96
+ useEffect(() => {
97
+ return internal.focusActive.watch(() => {
98
+ const editActive = internal.editActivePos.get();
99
+ if (!editActive)
100
+ return;
101
+ const focus = internal.focusActive.get();
102
+ if (focus?.kind !== "cell") {
103
+ grid.api.editEnd();
104
+ }
105
+ else {
106
+ if (grid.api.editIsCellActive({ rowIndex: focus.rowIndex, column: focus.colIndex }))
107
+ return;
108
+ grid.api.editEnd();
109
+ }
110
+ });
111
+ }, [grid.api, internal.editActivePos, internal.focusActive]);
112
+ const value = useMemo(() => {
113
+ return {
114
+ ref,
115
+ grid: grid,
116
+ };
117
+ }, [grid, ref]);
118
+ const cellSelectionMode = grid.state.cellSelectionMode.useValue();
119
+ return (_jsxs(RootProvider, { value: value, children: [_jsx(DialogDriver, {}), _jsx(PopoverDriver, {}), cellSelectionMode !== "none" && _jsx(CellSelectionDriver, {}), children] }));
124
120
  }
@@ -1,27 +1,27 @@
1
1
  export interface GroupItem<Data> {
2
- readonly fn: (d: Data) => string | null | undefined;
2
+ readonly fn: (d: Data) => string | null | undefined;
3
3
  }
4
4
  export interface AggregationItem<Data> {
5
- readonly fn: (d: Data[]) => unknown;
6
- readonly name: string;
5
+ readonly fn: (d: Data[]) => unknown;
6
+ readonly name: string;
7
7
  }
8
8
  export interface LeafNode<Data> {
9
- readonly kind: 1;
10
- readonly id: string;
11
- readonly data: Data;
12
- readonly depth: number;
13
- readonly parent: BranchNode<Data> | null;
9
+ readonly kind: 1;
10
+ readonly id: string;
11
+ readonly data: Data;
12
+ readonly depth: number;
13
+ readonly parent: BranchNode<Data> | null;
14
14
  }
15
15
  export interface BranchNode<Data> {
16
- readonly kind: 2;
17
- readonly depth: number;
18
- readonly id: string;
19
- readonly key: string;
20
- readonly children: Map<string | null, TreeNode<Data>>;
21
- readonly data: Record<string, unknown>;
22
- readonly parent: BranchNode<Data> | null;
23
- readonly leafIds: Set<string>;
24
- readonly leafData: Data[];
16
+ readonly kind: 2;
17
+ readonly depth: number;
18
+ readonly id: string;
19
+ readonly key: string;
20
+ readonly children: Map<string | null, TreeNode<Data>>;
21
+ readonly data: Record<string, unknown>;
22
+ readonly parent: BranchNode<Data> | null;
23
+ readonly leafIds: Set<string>;
24
+ readonly leafData: Data[];
25
25
  }
26
26
  export type TreeNode<Data> = LeafNode<Data> | BranchNode<Data>;
27
27
  export type Root<Data> = Map<string | null, TreeNode<Data>>;
@@ -9,7 +9,8 @@ import { sum } from "./sum.js";
9
9
  * avg([null, null]) // Returns 0
10
10
  */
11
11
  export function avg(data) {
12
- if (!data.length) return 0;
13
- const total = sum(data);
14
- return total / data.length;
12
+ if (!data.length)
13
+ return 0;
14
+ const total = sum(data);
15
+ return total / data.length;
15
16
  }
@@ -17,22 +17,22 @@ import { sum } from "./sum.js";
17
17
  * builtIns.avg(data); // Returns 2
18
18
  */
19
19
  export declare const builtIns: {
20
- /** Calculate sum of non-null numbers in array */
21
- sum: typeof sum;
22
- /** Count non-null/undefined elements in array */
23
- count: typeof count;
24
- /** Calculate average of non-null numbers in array */
25
- avg: typeof avg;
26
- /** Get first non-null/undefined element in array */
27
- first: typeof first;
28
- /** Get last non-null/undefined element in array */
29
- last: typeof last;
30
- /** Find minimum value among non-null/undefined numbers in array */
31
- min: typeof min;
32
- /** Find maximum value among non-null/undefined numbers in array */
33
- max: typeof max;
34
- /** Return the aggregation group */
35
- group: typeof group;
20
+ /** Calculate sum of non-null numbers in array */
21
+ sum: typeof sum;
22
+ /** Count non-null/undefined elements in array */
23
+ count: typeof count;
24
+ /** Calculate average of non-null numbers in array */
25
+ avg: typeof avg;
26
+ /** Get first non-null/undefined element in array */
27
+ first: typeof first;
28
+ /** Get last non-null/undefined element in array */
29
+ last: typeof last;
30
+ /** Find minimum value among non-null/undefined numbers in array */
31
+ min: typeof min;
32
+ /** Find maximum value among non-null/undefined numbers in array */
33
+ max: typeof max;
34
+ /** Return the aggregation group */
35
+ group: typeof group;
36
36
  };
37
37
  /**
38
38
  * Set containing valid built-in function names.
@@ -17,22 +17,22 @@ import { sum } from "./sum.js";
17
17
  * builtIns.avg(data); // Returns 2
18
18
  */
19
19
  export const builtIns = {
20
- /** Calculate sum of non-null numbers in array */
21
- sum: sum,
22
- /** Count non-null/undefined elements in array */
23
- count: count,
24
- /** Calculate average of non-null numbers in array */
25
- avg: avg,
26
- /** Get first non-null/undefined element in array */
27
- first: first,
28
- /** Get last non-null/undefined element in array */
29
- last: last,
30
- /** Find minimum value among non-null/undefined numbers in array */
31
- min: min,
32
- /** Find maximum value among non-null/undefined numbers in array */
33
- max: max,
34
- /** Return the aggregation group */
35
- group: group,
20
+ /** Calculate sum of non-null numbers in array */
21
+ sum: sum,
22
+ /** Count non-null/undefined elements in array */
23
+ count: count,
24
+ /** Calculate average of non-null numbers in array */
25
+ avg: avg,
26
+ /** Get first non-null/undefined element in array */
27
+ first: first,
28
+ /** Get last non-null/undefined element in array */
29
+ last: last,
30
+ /** Find minimum value among non-null/undefined numbers in array */
31
+ min: min,
32
+ /** Find maximum value among non-null/undefined numbers in array */
33
+ max: max,
34
+ /** Return the aggregation group */
35
+ group: group,
36
36
  };
37
37
  /**
38
38
  * Set containing valid built-in function names.