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

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 +4155 -3957
  2. package/dist/cell-selection/adjust-rect-for-row-and-cell-span.js +38 -38
  3. package/dist/cell-selection/are-rects-equal.js +6 -4
  4. package/dist/cell-selection/bound-selection-rect.js +14 -14
  5. package/dist/cell-selection/cell-selection-containers.js +108 -78
  6. package/dist/cell-selection/cell-selection-driver.js +250 -262
  7. package/dist/cell-selection/cell-style-row.d.ts +12 -6
  8. package/dist/cell-selection/cell-style-row.js +82 -79
  9. package/dist/cell-selection/deselect-rect-range.js +41 -40
  10. package/dist/cell-selection/expand-cell-selection-down.d.ts +5 -2
  11. package/dist/cell-selection/expand-cell-selection-down.js +29 -33
  12. package/dist/cell-selection/expand-cell-selection-end.d.ts +5 -2
  13. package/dist/cell-selection/expand-cell-selection-end.js +30 -34
  14. package/dist/cell-selection/expand-cell-selection-start.d.ts +5 -2
  15. package/dist/cell-selection/expand-cell-selection-start.js +29 -33
  16. package/dist/cell-selection/expand-cell-selection-up.d.ts +5 -2
  17. package/dist/cell-selection/expand-cell-selection-up.js +29 -33
  18. package/dist/cell-selection/full-width-start-end-index.js +3 -3
  19. package/dist/cell-selection/get-root-cell.d.ts +5 -1
  20. package/dist/cell-selection/get-root-cell.js +77 -79
  21. package/dist/cell-selection/is-bottom-rect.js +5 -5
  22. package/dist/cell-selection/is-center-col-rect.d.ts +5 -2
  23. package/dist/cell-selection/is-center-col-rect.js +5 -3
  24. package/dist/cell-selection/is-center-rect.js +3 -3
  25. package/dist/cell-selection/is-end-rect.d.ts +5 -2
  26. package/dist/cell-selection/is-end-rect.js +2 -2
  27. package/dist/cell-selection/is-overlapping-rect.js +6 -4
  28. package/dist/cell-selection/is-start-rect.d.ts +5 -2
  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 +12 -6
  33. package/dist/cell-selection/split-cell-selection-rect.js +53 -47
  34. package/dist/cell-selection/update-additive-cell-selection.d.ts +5 -2
  35. package/dist/cell-selection/update-additive-cell-selection.js +18 -19
  36. package/dist/cell-selection/use-edge-scroll.d.ts +8 -6
  37. package/dist/cell-selection/use-edge-scroll.js +65 -63
  38. package/dist/cells/cell-default.d.ts +5 -1
  39. package/dist/cells/cell-default.js +5 -5
  40. package/dist/cells/cell-editor.d.ts +4 -2
  41. package/dist/cells/cell-editor.js +121 -86
  42. package/dist/cells/cell.d.ts +16 -3
  43. package/dist/cells/cell.js +56 -27
  44. package/dist/column-manager/branch-lookup-context.d.ts +3 -1
  45. package/dist/column-manager/branch.d.ts +12 -4
  46. package/dist/column-manager/branch.js +39 -29
  47. package/dist/column-manager/column-manager.d.ts +58 -9
  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 +10 -2
  51. package/dist/column-manager/label.js +11 -12
  52. package/dist/column-manager/leaf.d.ts +10 -2
  53. package/dist/column-manager/leaf.js +42 -32
  54. package/dist/column-manager/move-handle.d.ts +14 -6
  55. package/dist/column-manager/move-handle.js +54 -50
  56. package/dist/column-manager/root.d.ts +9 -3
  57. package/dist/column-manager/root.js +26 -13
  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 +14 -6
  62. package/dist/column-manager/visibility-checkbox.js +36 -23
  63. package/dist/context.d.ts +4 -4
  64. package/dist/filter-tree/branch.d.ts +13 -5
  65. package/dist/filter-tree/branch.js +23 -13
  66. package/dist/filter-tree/context.d.ts +16 -16
  67. package/dist/filter-tree/filter-tree.d.ts +49 -8
  68. package/dist/filter-tree/filter-tree.js +8 -8
  69. package/dist/filter-tree/hooks/use-filter-tree.d.ts +35 -29
  70. package/dist/filter-tree/hooks/use-filter-tree.js +94 -92
  71. package/dist/filter-tree/hooks/use-tree-item.d.ts +4 -4
  72. package/dist/filter-tree/hooks/use-tree-item.js +99 -106
  73. package/dist/filter-tree/inclusion-checkbox.d.ts +14 -6
  74. package/dist/filter-tree/inclusion-checkbox.js +19 -9
  75. package/dist/filter-tree/label.d.ts +10 -2
  76. package/dist/filter-tree/label.js +11 -12
  77. package/dist/filter-tree/leaf.d.ts +10 -2
  78. package/dist/filter-tree/leaf.js +15 -5
  79. package/dist/filter-tree/root.d.ts +23 -7
  80. package/dist/filter-tree/root.js +51 -23
  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 +26 -6
  84. package/dist/grid-box/grid-box.js +6 -6
  85. package/dist/grid-box/item.d.ts +11 -3
  86. package/dist/grid-box/item.js +29 -26
  87. package/dist/grid-box/panel.d.ts +13 -1
  88. package/dist/grid-box/panel.js +9 -2
  89. package/dist/grid-box/root.d.ts +11 -5
  90. package/dist/grid-box/root.js +11 -2
  91. package/dist/grid-box/use-aggregation-box-items.d.ts +16 -13
  92. package/dist/grid-box/use-aggregation-box-items.js +54 -55
  93. package/dist/grid-box/use-column-box-items.d.ts +31 -21
  94. package/dist/grid-box/use-column-box-items.js +90 -78
  95. package/dist/grid-box/use-row-group-box-items.d.ts +17 -12
  96. package/dist/grid-box/use-row-group-box-items.js +116 -124
  97. package/dist/grid-provider/context.d.ts +4 -2
  98. package/dist/grid-provider/provider.d.ts +4 -2
  99. package/dist/grid-provider/use-grid.d.ts +1 -1
  100. package/dist/grid.d.ts +150 -26
  101. package/dist/grid.js +38 -26
  102. package/dist/header/header-cell.d.ts +13 -5
  103. package/dist/header/header-cell.js +41 -15
  104. package/dist/header/header-group-cell.d.ts +10 -2
  105. package/dist/header/header-group-cell.js +21 -6
  106. package/dist/header/header-row.d.ts +10 -2
  107. package/dist/header/header-row.js +2 -2
  108. package/dist/header/header.d.ts +10 -1
  109. package/dist/header/header.js +11 -2
  110. package/dist/header/resize-handler.d.ts +15 -6
  111. package/dist/header/resize-handler.js +128 -118
  112. package/dist/header/use-drag-move.d.ts +22 -11
  113. package/dist/header/use-drag-move.js +83 -87
  114. package/dist/header/use-header-cell-renderer.d.ts +9 -2
  115. package/dist/header/use-header-cell-renderer.js +24 -29
  116. package/dist/icons/index.d.ts +92 -1
  117. package/dist/icons/index.js +92 -1
  118. package/dist/license.js +174 -174
  119. package/dist/listbox/context.d.ts +2 -2
  120. package/dist/listbox/item.d.ts +10 -1
  121. package/dist/listbox/item.js +23 -19
  122. package/dist/listbox/panel.d.ts +10 -1
  123. package/dist/listbox/panel.js +69 -43
  124. package/dist/listbox/root.d.ts +5 -3
  125. package/dist/listbox/root.js +7 -7
  126. package/dist/root/dialog-driver.js +22 -16
  127. package/dist/root/popover-driver.js +27 -16
  128. package/dist/root/root.d.ts +7 -3
  129. package/dist/root/root.js +111 -107
  130. package/dist/row-data-source-client/+types.d.ts +17 -17
  131. package/dist/row-data-source-client/built-ins/avg.js +3 -4
  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 +3 -5
  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 +9 -13
  139. package/dist/row-data-source-client/built-ins/min.js +9 -13
  140. package/dist/row-data-source-client/built-ins/sum.js +8 -10
  141. package/dist/row-data-source-client/filter/+types.d.ts +35 -13
  142. package/dist/row-data-source-client/filter/compute-filtered-rows.d.ts +16 -2
  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 +8 -4
  145. package/dist/row-data-source-client/pivots/create-agg-model.js +8 -9
  146. package/dist/row-data-source-client/pivots/create-pivot-columns-from-paths.d.ts +6 -1
  147. package/dist/row-data-source-client/pivots/create-pivot-columns-from-paths.js +42 -46
  148. package/dist/row-data-source-client/pivots/create-pivot-columns.d.ts +6 -1
  149. package/dist/row-data-source-client/pivots/create-pivot-columns.js +16 -17
  150. package/dist/row-data-source-client/pivots/create-pivot-tree.d.ts +7 -1
  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 +19 -13
  153. package/dist/row-data-source-client/tree/client-tree.js +64 -67
  154. package/dist/row-data-source-client/tree/evaluator-aggregation.d.ts +4 -1
  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 +4 -1
  157. package/dist/row-data-source-client/tree/evaluator-group.js +6 -7
  158. package/dist/row-data-source-client/tree/traverse.d.ts +5 -1
  159. package/dist/row-data-source-client/tree/traverse.js +15 -18
  160. package/dist/row-data-source-client/use-client-data-source-paginated.d.ts +9 -5
  161. package/dist/row-data-source-client/use-client-data-source-paginated.js +539 -522
  162. package/dist/row-data-source-client/use-client-data-source.d.ts +9 -5
  163. package/dist/row-data-source-client/use-client-data-source.js +682 -647
  164. package/dist/row-data-source-client/use-client-tree-data-source.d.ts +9 -5
  165. package/dist/row-data-source-client/use-client-tree-data-source.js +510 -499
  166. package/dist/row-data-source-server/async-tree/+types.async-tree.d.ts +36 -33
  167. package/dist/row-data-source-server/async-tree/apply-delete-action-to-tree.d.ts +4 -1
  168. package/dist/row-data-source-server/async-tree/apply-delete-action-to-tree.js +18 -22
  169. package/dist/row-data-source-server/async-tree/apply-set-action-to-tree.d.ts +4 -1
  170. package/dist/row-data-source-server/async-tree/apply-set-action-to-tree.js +17 -25
  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 +9 -10
  173. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-fit.d.ts +4 -1
  174. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-fit.js +13 -14
  175. package/dist/row-data-source-server/async-tree/check-set-action-item-kinds.js +9 -10
  176. package/dist/row-data-source-server/async-tree/get-parent-node-by-path.d.ts +4 -1
  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 +4 -1
  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 +3 -1
  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 +5 -1
  184. package/dist/row-data-source-server/async-tree/maybe-apply-resize.js +11 -14
  185. package/dist/row-data-source-server/async-tree/maybe-apply-set-action-items.d.ts +4 -1
  186. package/dist/row-data-source-server/async-tree/maybe-apply-set-action-items.js +42 -46
  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 +49 -48
  189. package/dist/row-data-source-server/use-server-data-source.d.ts +11 -2
  190. package/dist/row-data-source-server/use-server-data-source.js +665 -652
  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 +3 -4
  194. package/dist/rows/row/context.d.ts +2 -2
  195. package/dist/rows/row/row.d.ts +16 -3
  196. package/dist/rows/row/row.js +19 -4
  197. package/dist/rows/row/use-row-context-value.d.ts +5 -2
  198. package/dist/rows/row/use-row-context-value.js +23 -26
  199. package/dist/rows/row-detail-row.d.ts +4 -2
  200. package/dist/rows/row-detail-row.js +147 -124
  201. package/dist/rows/row-full-width.d.ts +12 -4
  202. package/dist/rows/row-full-width.js +35 -7
  203. package/dist/rows/rows-container.d.ts +10 -1
  204. package/dist/rows/rows-container.js +12 -3
  205. package/dist/rows/rows-sections.d.ts +30 -3
  206. package/dist/rows/rows-sections.js +42 -10
  207. package/dist/rows/scrollers/native-scroller.d.ts +3 -1
  208. package/dist/rows/scrollers/native-scroller.js +17 -13
  209. package/dist/sort-manager/+types.d.ts +14 -7
  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 +45 -49
  213. package/dist/sort-manager/hooks/use-sort-row-item.d.ts +57 -46
  214. package/dist/sort-manager/hooks/use-sort-row-item.js +126 -131
  215. package/dist/sort-manager/hooks/use-sortable-column-items.d.ts +6 -3
  216. package/dist/sort-manager/hooks/use-sortable-column-items.js +10 -10
  217. package/dist/sort-manager/root.d.ts +7 -1
  218. package/dist/sort-manager/root.js +10 -10
  219. package/dist/sort-manager/sort-add.d.ts +13 -5
  220. package/dist/sort-manager/sort-add.js +8 -8
  221. package/dist/sort-manager/sort-apply.d.ts +12 -4
  222. package/dist/sort-manager/sort-apply.js +16 -16
  223. package/dist/sort-manager/sort-cancel.d.ts +12 -4
  224. package/dist/sort-manager/sort-cancel.js +19 -19
  225. package/dist/sort-manager/sort-clear.d.ts +12 -4
  226. package/dist/sort-manager/sort-clear.js +15 -16
  227. package/dist/sort-manager/sort-column-select.d.ts +14 -6
  228. package/dist/sort-manager/sort-column-select.js +26 -15
  229. package/dist/sort-manager/sort-direction-select.d.ts +14 -6
  230. package/dist/sort-manager/sort-direction-select.js +27 -19
  231. package/dist/sort-manager/sort-manager.d.ts +93 -12
  232. package/dist/sort-manager/sort-manager.js +12 -12
  233. package/dist/sort-manager/sort-remove.d.ts +12 -4
  234. package/dist/sort-manager/sort-remove.js +8 -8
  235. package/dist/sort-manager/sort-row.d.ts +10 -2
  236. package/dist/sort-manager/sort-row.js +4 -1
  237. package/dist/sort-manager/sort-rows.d.ts +10 -1
  238. package/dist/sort-manager/sort-rows.js +1 -1
  239. package/dist/sort-manager/sort-value-select.d.ts +15 -7
  240. package/dist/sort-manager/sort-value-select.js +28 -19
  241. package/dist/sort-manager/utils/sort-item-to-sort-model.d.ts +4 -1
  242. package/dist/sort-manager/utils/sort-item-to-sort-model.js +46 -49
  243. package/dist/sort-manager/utils/sort-model-to-sort-items.d.ts +4 -1
  244. package/dist/sort-manager/utils/sort-model-to-sort-items.js +36 -44
  245. package/dist/state/+types.d.ts +41 -28
  246. package/dist/state/api/column-autosize.d.ts +4 -2
  247. package/dist/state/api/column-autosize.js +62 -63
  248. package/dist/state/api/column-by-id.js +4 -4
  249. package/dist/state/api/column-field.js +17 -20
  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 +48 -46
  254. package/dist/state/api/column-resize.js +9 -7
  255. package/dist/state/api/column-update.js +11 -11
  256. package/dist/state/api/dialog-frame.d.ts +8 -4
  257. package/dist/state/api/dialog-frame.js +11 -12
  258. package/dist/state/api/edit-begin.d.ts +4 -2
  259. package/dist/state/api/edit-begin.js +71 -84
  260. package/dist/state/api/edit-end.d.ts +4 -2
  261. package/dist/state/api/edit-end.js +38 -41
  262. package/dist/state/api/edit-is-cell-active.d.ts +4 -2
  263. package/dist/state/api/edit-is-cell-active.js +17 -24
  264. package/dist/state/api/edit-update.d.ts +4 -2
  265. package/dist/state/api/edit-update.js +74 -85
  266. package/dist/state/api/event-listeners.d.ts +12 -3
  267. package/dist/state/api/event-listeners.js +16 -17
  268. package/dist/state/api/export-csv.js +33 -35
  269. package/dist/state/api/export-data-rect.js +21 -21
  270. package/dist/state/api/focus-cell.d.ts +4 -2
  271. package/dist/state/api/focus-cell.js +110 -109
  272. package/dist/state/api/popover-frame.d.ts +8 -4
  273. package/dist/state/api/popover-frame.js +11 -12
  274. package/dist/state/api/position-from-element.js +5 -6
  275. package/dist/state/api/row-by-id.js +3 -3
  276. package/dist/state/api/row-by-index.js +11 -6
  277. package/dist/state/api/row-detail-is-expanded.d.ts +3 -1
  278. package/dist/state/api/row-detail-is-expanded.js +4 -4
  279. package/dist/state/api/row-detail-rendered-height.d.ts +4 -2
  280. package/dist/state/api/row-detail-rendered-height.js +10 -12
  281. package/dist/state/api/row-detail-toggle.js +26 -30
  282. package/dist/state/api/row-group-apply-expansions.d.ts +3 -1
  283. package/dist/state/api/row-group-apply-expansions.js +15 -17
  284. package/dist/state/api/row-group-column-index.d.ts +3 -1
  285. package/dist/state/api/row-group-column-index.js +14 -12
  286. package/dist/state/api/row-group-is-expanded.d.ts +3 -1
  287. package/dist/state/api/row-group-is-expanded.js +11 -13
  288. package/dist/state/api/row-group-toggle.js +5 -5
  289. package/dist/state/api/row-handle-select.d.ts +4 -2
  290. package/dist/state/api/row-handle-select.js +36 -40
  291. package/dist/state/api/row-select-all.js +14 -15
  292. package/dist/state/api/row-select.d.ts +4 -2
  293. package/dist/state/api/row-select.js +30 -33
  294. package/dist/state/api/row-selected.js +10 -11
  295. package/dist/state/api/scroll-into-view.d.ts +4 -2
  296. package/dist/state/api/scroll-into-view.js +47 -47
  297. package/dist/state/api/sort-for-column.js +6 -7
  298. package/dist/state/api/use-row-drag.js +22 -24
  299. package/dist/state/helpers/cell-row-group.d.ts +5 -1
  300. package/dist/state/helpers/cell-row-group.js +18 -16
  301. package/dist/state/helpers/column-add-row-group.d.ts +16 -6
  302. package/dist/state/helpers/column-add-row-group.js +63 -58
  303. package/dist/state/helpers/column-layout.d.ts +7 -1
  304. package/dist/state/helpers/column-layout.js +60 -60
  305. package/dist/state/helpers/column-marker.d.ts +8 -4
  306. package/dist/state/helpers/column-marker.js +38 -34
  307. package/dist/state/helpers/column-view.d.ts +21 -15
  308. package/dist/state/helpers/column-view.js +56 -32
  309. package/dist/state/helpers/edit-on-change.d.ts +18 -10
  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 +20 -10
  313. package/dist/state/helpers/get-data-rect.js +67 -62
  314. package/dist/state/helpers/get-full-width-callback.d.ts +5 -1
  315. package/dist/state/helpers/get-full-width-callback.js +5 -6
  316. package/dist/state/helpers/get-span-callback.d.ts +6 -1
  317. package/dist/state/helpers/get-span-callback.js +15 -18
  318. package/dist/state/helpers/resolve-column.d.ts +6 -2
  319. package/dist/state/helpers/resolve-column.js +18 -18
  320. package/dist/state/helpers/row-layout/get-focus-criteria.d.ts +15 -12
  321. package/dist/state/helpers/row-layout/get-focus-criteria.js +57 -56
  322. package/dist/state/helpers/row-layout/row-layout.d.ts +15 -9
  323. package/dist/state/helpers/row-layout/row-layout.js +387 -401
  324. package/dist/state/use-lytenyte.js +556 -516
  325. package/dist/tree-view/branch/branch.d.ts +16 -8
  326. package/dist/tree-view/branch/branch.js +104 -52
  327. package/dist/tree-view/branch/use-branch-keys.d.ts +5 -1
  328. package/dist/tree-view/branch/use-branch-keys.js +71 -74
  329. package/dist/tree-view/context.d.ts +21 -17
  330. package/dist/tree-view/hooks/use-tree-view-paths.d.ts +6 -1
  331. package/dist/tree-view/hooks/use-tree-view-paths.js +5 -5
  332. package/dist/tree-view/index.d.ts +35 -7
  333. package/dist/tree-view/index.js +7 -7
  334. package/dist/tree-view/leaf.d.ts +10 -2
  335. package/dist/tree-view/leaf.js +29 -20
  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 +6 -8
  340. package/dist/tree-view/navigation/get-prev-node.js +6 -8
  341. package/dist/tree-view/panel/make-handle-navigation.js +23 -31
  342. package/dist/tree-view/panel/make-handle-selection.js +68 -77
  343. package/dist/tree-view/panel/make-handle-typeahead.js +34 -40
  344. package/dist/tree-view/panel/panel.d.ts +10 -1
  345. package/dist/tree-view/panel/panel.js +40 -20
  346. package/dist/tree-view/panel/use-tree-navigation.js +64 -52
  347. package/dist/tree-view/root.d.ts +20 -14
  348. package/dist/tree-view/root.js +53 -55
  349. package/dist/tree-view/utils/get-focusable-nodes.js +4 -2
  350. package/dist/tree-view/utils/get-focused-node.js +11 -11
  351. package/dist/tree-view/utils/get-ids-between-nodes.d.ts +5 -1
  352. package/dist/tree-view/utils/get-ids-between-nodes.js +10 -11
  353. package/dist/tree-view/utils/get-panel.js +5 -5
  354. package/dist/tree-view/utils/get-parent-node.js +6 -7
  355. package/dist/tree-view/utils/get-sibling-branches.js +8 -10
  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 +5 -1
  361. package/dist/tree-view/utils/select-node.js +8 -11
  362. package/dist/tree-view/utils/toggle-all-selections.js +4 -6
  363. package/dist/tree-view/utils/toggle-selection.js +15 -18
  364. package/dist/tree-view/virtualized/force-sync-scrolling.d.ts +3 -1
  365. package/dist/tree-view/virtualized/force-sync-scrolling.js +24 -18
  366. package/dist/tree-view/virtualized/get-virtual-tree-paths.d.ts +3 -1
  367. package/dist/tree-view/virtualized/get-virtual-tree-paths.js +11 -12
  368. package/dist/tree-view/virtualized/make-virtual-tree.d.ts +26 -21
  369. package/dist/tree-view/virtualized/make-virtual-tree.js +79 -85
  370. package/dist/tree-view/virtualized/use-flattened-tree.d.ts +17 -8
  371. package/dist/tree-view/virtualized/use-flattened-tree.js +30 -31
  372. package/dist/tree-view/virtualized/use-row-start-and-end.d.ts +6 -1
  373. package/dist/tree-view/virtualized/use-row-start-and-end.js +21 -23
  374. package/dist/tree-view/virtualized/use-virtualized-tree.d.ts +21 -15
  375. package/dist/tree-view/virtualized/use-virtualized-tree.js +103 -90
  376. package/dist/utils/cycle-sorts.js +12 -14
  377. package/dist/viewport/begin-editing.d.ts +6 -2
  378. package/dist/viewport/begin-editing.js +9 -13
  379. package/dist/viewport/viewport.d.ts +10 -1
  380. package/dist/viewport/viewport.js +93 -70
  381. package/package.json +7 -7
@@ -4,47 +4,73 @@ 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)
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" })] }));
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
+ });
50
76
  });
@@ -1,6 +1,8 @@
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(props: PropsWithChildren<RootProps>): import("react/jsx-runtime").JSX.Element;
6
+ export declare function Root(
7
+ props: PropsWithChildren<RootProps>,
8
+ ): 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,21 +1,27 @@
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, { children: openFrames.map((frame, i) => {
19
- return (_jsx(frame.component, { frame: frame, grid: grid, context: openFrameState[frameIds[i]] }, frameIds[i]));
20
- }) }));
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
+ });
21
27
  }
@@ -1,21 +1,32 @@
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, { 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
- }) }));
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
+ });
21
32
  }
@@ -1,8 +1,12 @@
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>({ grid, children, ...events }: PropsWithChildren<RootProps<T>>): import("react/jsx-runtime").JSX.Element;
8
+ export declare function Root<T = any>({
9
+ grid,
10
+ children,
11
+ ...events
12
+ }: PropsWithChildren<RootProps<T>>): import("react/jsx-runtime").JSX.Element;
package/dist/root/root.js CHANGED
@@ -7,114 +7,118 @@ 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)
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.
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.
27
25
  <a href="https://1771Technologies.com/pricing">Click here</a> to secure your license.`;
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);
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);
37
42
  });
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,
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`);
51
56
  });
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] }));
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
+ });
120
124
  }
@@ -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,8 +9,7 @@ import { sum } from "./sum.js";
9
9
  * avg([null, null]) // Returns 0
10
10
  */
11
11
  export function avg(data) {
12
- if (!data.length)
13
- return 0;
14
- const total = sum(data);
15
- return total / data.length;
12
+ if (!data.length) return 0;
13
+ const total = sum(data);
14
+ return total / data.length;
16
15
  }
@@ -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.