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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/dist/+types.d.ts +4469 -4219
  2. package/dist/cell-selection/adjust-rect-for-row-and-cell-span.js +38 -38
  3. package/dist/cell-selection/are-rects-equal.js +4 -6
  4. package/dist/cell-selection/bound-selection-rect.js +14 -14
  5. package/dist/cell-selection/cell-selection-containers.js +78 -108
  6. package/dist/cell-selection/cell-selection-driver.js +262 -250
  7. package/dist/cell-selection/cell-style-row.d.ts +6 -12
  8. package/dist/cell-selection/cell-style-row.js +79 -82
  9. package/dist/cell-selection/deselect-rect-range.js +40 -41
  10. package/dist/cell-selection/expand-cell-selection-down.d.ts +2 -5
  11. package/dist/cell-selection/expand-cell-selection-down.js +33 -29
  12. package/dist/cell-selection/expand-cell-selection-end.d.ts +2 -5
  13. package/dist/cell-selection/expand-cell-selection-end.js +34 -30
  14. package/dist/cell-selection/expand-cell-selection-start.d.ts +2 -5
  15. package/dist/cell-selection/expand-cell-selection-start.js +33 -29
  16. package/dist/cell-selection/expand-cell-selection-up.d.ts +2 -5
  17. package/dist/cell-selection/expand-cell-selection-up.js +33 -29
  18. package/dist/cell-selection/full-width-start-end-index.js +3 -3
  19. package/dist/cell-selection/get-root-cell.d.ts +1 -5
  20. package/dist/cell-selection/get-root-cell.js +79 -77
  21. package/dist/cell-selection/is-bottom-rect.js +5 -5
  22. package/dist/cell-selection/is-center-col-rect.d.ts +2 -5
  23. package/dist/cell-selection/is-center-col-rect.js +3 -5
  24. package/dist/cell-selection/is-center-rect.js +3 -3
  25. package/dist/cell-selection/is-end-rect.d.ts +2 -5
  26. package/dist/cell-selection/is-end-rect.js +2 -2
  27. package/dist/cell-selection/is-overlapping-rect.js +4 -6
  28. package/dist/cell-selection/is-start-rect.d.ts +2 -5
  29. package/dist/cell-selection/is-start-rect.js +2 -2
  30. package/dist/cell-selection/is-top-rect.js +2 -2
  31. package/dist/cell-selection/is-within-selection-rect.js +1 -1
  32. package/dist/cell-selection/split-cell-selection-rect.d.ts +6 -12
  33. package/dist/cell-selection/split-cell-selection-rect.js +47 -53
  34. package/dist/cell-selection/update-additive-cell-selection.d.ts +2 -5
  35. package/dist/cell-selection/update-additive-cell-selection.js +17 -16
  36. package/dist/cell-selection/use-edge-scroll.d.ts +6 -8
  37. package/dist/cell-selection/use-edge-scroll.js +63 -65
  38. package/dist/cells/cell-default.d.ts +1 -5
  39. package/dist/cells/cell-default.js +5 -5
  40. package/dist/cells/cell-editor.d.ts +2 -4
  41. package/dist/cells/cell-editor.js +92 -129
  42. package/dist/cells/cell.d.ts +3 -16
  43. package/dist/cells/cell.js +27 -56
  44. package/dist/column-manager/branch-lookup-context.d.ts +1 -3
  45. package/dist/column-manager/branch.d.ts +9 -17
  46. package/dist/column-manager/branch.js +46 -64
  47. package/dist/column-manager/column-manager.d.ts +8 -57
  48. package/dist/column-manager/column-manager.js +8 -8
  49. package/dist/column-manager/context.d.ts +1 -1
  50. package/dist/column-manager/label.d.ts +2 -10
  51. package/dist/column-manager/label.js +12 -11
  52. package/dist/column-manager/leaf.d.ts +2 -10
  53. package/dist/column-manager/leaf.js +49 -61
  54. package/dist/column-manager/move-handle.d.ts +6 -14
  55. package/dist/column-manager/move-handle.js +48 -52
  56. package/dist/column-manager/panel.d.ts +1 -10
  57. package/dist/column-manager/root.d.ts +3 -7
  58. package/dist/column-manager/root.js +1 -4
  59. package/dist/column-manager/use-column-manager.d.ts +5 -7
  60. package/dist/column-manager/use-column-manager.js +21 -15
  61. package/dist/column-manager/use-columns-from-context.d.ts +1 -3
  62. package/dist/column-manager/use-columns-from-context.js +18 -18
  63. package/dist/column-manager/visibility-checkbox.d.ts +6 -14
  64. package/dist/column-manager/visibility-checkbox.js +23 -36
  65. package/dist/context.d.ts +4 -4
  66. package/dist/filter-tree/branch.d.ts +8 -16
  67. package/dist/filter-tree/branch.js +13 -23
  68. package/dist/filter-tree/context.d.ts +16 -16
  69. package/dist/filter-tree/filter-tree.d.ts +8 -49
  70. package/dist/filter-tree/filter-tree.js +8 -8
  71. package/dist/filter-tree/hooks/use-filter-tree.d.ts +29 -35
  72. package/dist/filter-tree/hooks/use-filter-tree.js +92 -94
  73. package/dist/filter-tree/hooks/use-tree-item.d.ts +4 -4
  74. package/dist/filter-tree/hooks/use-tree-item.js +106 -99
  75. package/dist/filter-tree/inclusion-checkbox.d.ts +6 -14
  76. package/dist/filter-tree/inclusion-checkbox.js +9 -19
  77. package/dist/filter-tree/label.d.ts +2 -10
  78. package/dist/filter-tree/label.js +12 -11
  79. package/dist/filter-tree/leaf.d.ts +2 -10
  80. package/dist/filter-tree/leaf.js +5 -15
  81. package/dist/filter-tree/root.d.ts +7 -23
  82. package/dist/filter-tree/root.js +23 -51
  83. package/dist/grid-box/+types.d.ts +11 -11
  84. package/dist/grid-box/context.d.ts +3 -3
  85. package/dist/grid-box/grid-box.d.ts +6 -26
  86. package/dist/grid-box/grid-box.js +6 -6
  87. package/dist/grid-box/item.d.ts +5 -13
  88. package/dist/grid-box/item.js +56 -73
  89. package/dist/grid-box/panel.d.ts +1 -13
  90. package/dist/grid-box/panel.js +2 -9
  91. package/dist/grid-box/root.d.ts +5 -11
  92. package/dist/grid-box/root.js +2 -11
  93. package/dist/grid-box/use-aggregation-box-items.d.ts +13 -16
  94. package/dist/grid-box/use-aggregation-box-items.js +57 -56
  95. package/dist/grid-box/use-column-box-items.d.ts +23 -33
  96. package/dist/grid-box/use-column-box-items.js +75 -87
  97. package/dist/grid-box/use-row-group-box-items.d.ts +12 -17
  98. package/dist/grid-box/use-row-group-box-items.js +123 -120
  99. package/dist/grid-provider/context.d.ts +2 -4
  100. package/dist/grid-provider/provider.d.ts +2 -4
  101. package/dist/grid-provider/use-grid.d.ts +1 -1
  102. package/dist/grid.d.ts +14 -126
  103. package/dist/grid.js +14 -14
  104. package/dist/header/header-cell.d.ts +5 -13
  105. package/dist/header/header-cell.js +15 -41
  106. package/dist/header/header-group-cell.d.ts +2 -10
  107. package/dist/header/header-group-cell.js +8 -26
  108. package/dist/header/header-row.d.ts +2 -10
  109. package/dist/header/header-row.js +2 -2
  110. package/dist/header/header.d.ts +1 -10
  111. package/dist/header/header.js +2 -11
  112. package/dist/header/resize-handler.d.ts +6 -15
  113. package/dist/header/resize-handler.js +122 -131
  114. package/dist/header/use-drag-move.d.ts +11 -22
  115. package/dist/header/use-drag-move.js +94 -95
  116. package/dist/header/use-header-cell-renderer.d.ts +2 -9
  117. package/dist/header/use-header-cell-renderer.js +29 -25
  118. package/dist/icons/index.d.ts +1 -92
  119. package/dist/icons/index.js +1 -92
  120. package/dist/index.d.ts +5 -22
  121. package/dist/index.js +5 -22
  122. package/dist/license.js +174 -174
  123. package/dist/listbox/context.d.ts +2 -2
  124. package/dist/listbox/item.d.ts +1 -10
  125. package/dist/listbox/item.js +19 -23
  126. package/dist/listbox/panel.d.ts +1 -10
  127. package/dist/listbox/panel.js +43 -69
  128. package/dist/listbox/root.d.ts +3 -5
  129. package/dist/listbox/root.js +7 -7
  130. package/dist/root/dialog-driver.js +16 -22
  131. package/dist/root/popover-driver.js +16 -27
  132. package/dist/root/root.d.ts +3 -7
  133. package/dist/root/root.js +107 -111
  134. package/dist/row-data-source-client/+types.d.ts +17 -17
  135. package/dist/row-data-source-client/built-ins/avg.js +4 -3
  136. package/dist/row-data-source-client/built-ins/built-ins.d.ts +16 -16
  137. package/dist/row-data-source-client/built-ins/built-ins.js +16 -16
  138. package/dist/row-data-source-client/built-ins/count.js +5 -3
  139. package/dist/row-data-source-client/built-ins/first.js +1 -1
  140. package/dist/row-data-source-client/built-ins/group.js +1 -1
  141. package/dist/row-data-source-client/built-ins/last.js +1 -1
  142. package/dist/row-data-source-client/built-ins/max.js +13 -9
  143. package/dist/row-data-source-client/built-ins/min.js +13 -9
  144. package/dist/row-data-source-client/built-ins/sum.js +10 -8
  145. package/dist/row-data-source-client/filter/+types.d.ts +13 -35
  146. package/dist/row-data-source-client/filter/compute-filtered-rows.d.ts +2 -16
  147. package/dist/row-data-source-client/filter/compute-filtered-rows.js +102 -102
  148. package/dist/row-data-source-client/pivots/create-agg-model.d.ts +4 -8
  149. package/dist/row-data-source-client/pivots/create-agg-model.js +9 -8
  150. package/dist/row-data-source-client/pivots/create-pivot-columns-from-paths.d.ts +1 -6
  151. package/dist/row-data-source-client/pivots/create-pivot-columns-from-paths.js +46 -42
  152. package/dist/row-data-source-client/pivots/create-pivot-columns.d.ts +1 -6
  153. package/dist/row-data-source-client/pivots/create-pivot-columns.js +17 -16
  154. package/dist/row-data-source-client/pivots/create-pivot-tree.d.ts +1 -7
  155. package/dist/row-data-source-client/pivots/create-pivot-tree.js +19 -19
  156. package/dist/row-data-source-client/tree/client-tree.d.ts +13 -19
  157. package/dist/row-data-source-client/tree/client-tree.js +67 -64
  158. package/dist/row-data-source-client/tree/evaluator-aggregation.d.ts +1 -4
  159. package/dist/row-data-source-client/tree/evaluator-aggregation.js +6 -6
  160. package/dist/row-data-source-client/tree/evaluator-group.d.ts +1 -4
  161. package/dist/row-data-source-client/tree/evaluator-group.js +7 -6
  162. package/dist/row-data-source-client/tree/traverse.d.ts +1 -5
  163. package/dist/row-data-source-client/tree/traverse.js +18 -15
  164. package/dist/row-data-source-client/use-client-data-source-paginated.d.ts +5 -9
  165. package/dist/row-data-source-client/use-client-data-source-paginated.js +551 -566
  166. package/dist/row-data-source-client/use-client-data-source.d.ts +5 -9
  167. package/dist/row-data-source-client/use-client-data-source.js +661 -696
  168. package/dist/row-data-source-client/use-client-tree-data-source.d.ts +5 -9
  169. package/dist/row-data-source-client/use-client-tree-data-source.js +512 -523
  170. package/dist/row-data-source-server/async-tree/+types.async-tree.d.ts +33 -36
  171. package/dist/row-data-source-server/async-tree/apply-delete-action-to-tree.d.ts +1 -4
  172. package/dist/row-data-source-server/async-tree/apply-delete-action-to-tree.js +22 -18
  173. package/dist/row-data-source-server/async-tree/apply-set-action-to-tree.d.ts +1 -4
  174. package/dist/row-data-source-server/async-tree/apply-set-action-to-tree.js +25 -17
  175. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-are-unique.js +18 -18
  176. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-are-valid.js +10 -9
  177. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-fit.d.ts +1 -4
  178. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-fit.js +14 -13
  179. package/dist/row-data-source-server/async-tree/check-set-action-item-kinds.js +10 -9
  180. package/dist/row-data-source-server/async-tree/get-parent-node-by-path.d.ts +1 -4
  181. package/dist/row-data-source-server/async-tree/get-parent-node-by-path.js +13 -13
  182. package/dist/row-data-source-server/async-tree/is-set-action-a-no-op-on-node.d.ts +1 -4
  183. package/dist/row-data-source-server/async-tree/is-set-action-a-no-op-on-node.js +1 -1
  184. package/dist/row-data-source-server/async-tree/make-async-tree.js +14 -14
  185. package/dist/row-data-source-server/async-tree/maybe-apply-parent-remove-self.d.ts +1 -3
  186. package/dist/row-data-source-server/async-tree/maybe-apply-parent-remove-self.js +6 -6
  187. package/dist/row-data-source-server/async-tree/maybe-apply-resize.d.ts +1 -5
  188. package/dist/row-data-source-server/async-tree/maybe-apply-resize.js +14 -11
  189. package/dist/row-data-source-server/async-tree/maybe-apply-set-action-items.d.ts +1 -4
  190. package/dist/row-data-source-server/async-tree/maybe-apply-set-action-items.js +46 -42
  191. package/dist/row-data-source-server/range-tree/range-tree.d.ts +28 -28
  192. package/dist/row-data-source-server/range-tree/range-tree.js +48 -49
  193. package/dist/row-data-source-server/use-server-data-source.d.ts +2 -11
  194. package/dist/row-data-source-server/use-server-data-source.js +675 -688
  195. package/dist/row-data-source-server/utils/get-node-depth.js +7 -7
  196. package/dist/row-data-source-server/utils/get-node-path.js +7 -7
  197. package/dist/row-data-source-server/utils/get-request-id.js +4 -3
  198. package/dist/rows/row/context.d.ts +2 -2
  199. package/dist/rows/row/row.d.ts +3 -16
  200. package/dist/rows/row/row.js +4 -19
  201. package/dist/rows/row/use-row-context-value.d.ts +2 -5
  202. package/dist/rows/row/use-row-context-value.js +26 -23
  203. package/dist/rows/row-detail-row.d.ts +2 -4
  204. package/dist/rows/row-detail-row.js +124 -147
  205. package/dist/rows/row-full-width.d.ts +4 -12
  206. package/dist/rows/row-full-width.js +7 -35
  207. package/dist/rows/rows-container.d.ts +1 -10
  208. package/dist/rows/rows-container.js +3 -12
  209. package/dist/rows/rows-sections.d.ts +3 -30
  210. package/dist/rows/rows-sections.js +10 -42
  211. package/dist/rows/scrollers/native-scroller.d.ts +1 -3
  212. package/dist/rows/scrollers/native-scroller.js +13 -17
  213. package/dist/sort-manager/+types.d.ts +7 -14
  214. package/dist/sort-manager/context.d.ts +4 -4
  215. package/dist/sort-manager/hooks/use-sort-manager.d.ts +9 -9
  216. package/dist/sort-manager/hooks/use-sort-manager.js +49 -45
  217. package/dist/sort-manager/hooks/use-sort-row-item.d.ts +46 -57
  218. package/dist/sort-manager/hooks/use-sort-row-item.js +131 -126
  219. package/dist/sort-manager/hooks/use-sortable-column-items.d.ts +3 -6
  220. package/dist/sort-manager/hooks/use-sortable-column-items.js +10 -10
  221. package/dist/sort-manager/root.d.ts +1 -7
  222. package/dist/sort-manager/root.js +10 -10
  223. package/dist/sort-manager/sort-add.d.ts +5 -13
  224. package/dist/sort-manager/sort-add.js +8 -8
  225. package/dist/sort-manager/sort-apply.d.ts +4 -12
  226. package/dist/sort-manager/sort-apply.js +16 -16
  227. package/dist/sort-manager/sort-cancel.d.ts +4 -12
  228. package/dist/sort-manager/sort-cancel.js +19 -19
  229. package/dist/sort-manager/sort-clear.d.ts +4 -12
  230. package/dist/sort-manager/sort-clear.js +16 -15
  231. package/dist/sort-manager/sort-column-select.d.ts +6 -14
  232. package/dist/sort-manager/sort-column-select.js +14 -22
  233. package/dist/sort-manager/sort-direction-select.d.ts +6 -14
  234. package/dist/sort-manager/sort-direction-select.js +19 -27
  235. package/dist/sort-manager/sort-manager.d.ts +12 -93
  236. package/dist/sort-manager/sort-manager.js +12 -12
  237. package/dist/sort-manager/sort-remove.d.ts +4 -12
  238. package/dist/sort-manager/sort-remove.js +8 -8
  239. package/dist/sort-manager/sort-row.d.ts +2 -10
  240. package/dist/sort-manager/sort-row.js +1 -4
  241. package/dist/sort-manager/sort-rows.d.ts +1 -10
  242. package/dist/sort-manager/sort-rows.js +1 -1
  243. package/dist/sort-manager/sort-value-select.d.ts +7 -15
  244. package/dist/sort-manager/sort-value-select.js +19 -28
  245. package/dist/sort-manager/utils/sort-item-to-sort-model.d.ts +1 -4
  246. package/dist/sort-manager/utils/sort-item-to-sort-model.js +49 -46
  247. package/dist/sort-manager/utils/sort-model-to-sort-items.d.ts +1 -4
  248. package/dist/sort-manager/utils/sort-model-to-sort-items.js +44 -36
  249. package/dist/state/+types.d.ts +29 -43
  250. package/dist/state/api/column-autosize.d.ts +2 -4
  251. package/dist/state/api/column-autosize.js +63 -62
  252. package/dist/state/api/column-by-id.js +4 -4
  253. package/dist/state/api/column-field.js +20 -17
  254. package/dist/state/api/column-from-index.js +4 -4
  255. package/dist/state/api/column-group-toggle.js +8 -8
  256. package/dist/state/api/column-index.js +5 -5
  257. package/dist/state/api/column-move.js +46 -48
  258. package/dist/state/api/column-resize.js +7 -9
  259. package/dist/state/api/column-update.d.ts +2 -4
  260. package/dist/state/api/column-update.js +23 -23
  261. package/dist/state/api/dialog-frame.d.ts +4 -8
  262. package/dist/state/api/dialog-frame.js +12 -11
  263. package/dist/state/api/edit-begin.d.ts +2 -4
  264. package/dist/state/api/edit-begin.js +84 -71
  265. package/dist/state/api/edit-end.d.ts +2 -4
  266. package/dist/state/api/edit-end.js +41 -38
  267. package/dist/state/api/edit-is-cell-active.d.ts +2 -4
  268. package/dist/state/api/edit-is-cell-active.js +24 -17
  269. package/dist/state/api/edit-update.d.ts +2 -4
  270. package/dist/state/api/edit-update.js +85 -74
  271. package/dist/state/api/event-listeners.d.ts +3 -12
  272. package/dist/state/api/event-listeners.js +17 -16
  273. package/dist/state/api/export-csv.js +35 -33
  274. package/dist/state/api/export-data-rect.js +21 -21
  275. package/dist/state/api/focus-cell.d.ts +2 -4
  276. package/dist/state/api/focus-cell.js +109 -110
  277. package/dist/state/api/popover-frame.d.ts +4 -8
  278. package/dist/state/api/popover-frame.js +12 -11
  279. package/dist/state/api/position-from-element.js +6 -5
  280. package/dist/state/api/row-by-id.js +3 -3
  281. package/dist/state/api/row-by-index.js +6 -11
  282. package/dist/state/api/row-detail-is-expanded.d.ts +1 -3
  283. package/dist/state/api/row-detail-is-expanded.js +4 -4
  284. package/dist/state/api/row-detail-rendered-height.d.ts +2 -4
  285. package/dist/state/api/row-detail-rendered-height.js +12 -10
  286. package/dist/state/api/row-detail-toggle.js +30 -26
  287. package/dist/state/api/row-group-apply-expansions.d.ts +1 -3
  288. package/dist/state/api/row-group-apply-expansions.js +17 -15
  289. package/dist/state/api/row-group-column-index.d.ts +1 -3
  290. package/dist/state/api/row-group-column-index.js +12 -14
  291. package/dist/state/api/row-group-is-expanded.d.ts +1 -3
  292. package/dist/state/api/row-group-is-expanded.js +13 -11
  293. package/dist/state/api/row-group-toggle.js +5 -5
  294. package/dist/state/api/row-handle-select.d.ts +2 -4
  295. package/dist/state/api/row-handle-select.js +40 -36
  296. package/dist/state/api/row-select-all.js +15 -14
  297. package/dist/state/api/row-select.d.ts +2 -4
  298. package/dist/state/api/row-select.js +33 -30
  299. package/dist/state/api/row-selected.js +11 -10
  300. package/dist/state/api/scroll-into-view.d.ts +2 -4
  301. package/dist/state/api/scroll-into-view.js +47 -47
  302. package/dist/state/api/sort-for-column.js +7 -6
  303. package/dist/state/api/use-row-drag.js +24 -22
  304. package/dist/state/helpers/cell-row-group.d.ts +1 -5
  305. package/dist/state/helpers/cell-row-group.js +16 -18
  306. package/dist/state/helpers/column-add-row-group.d.ts +7 -18
  307. package/dist/state/helpers/column-add-row-group.js +66 -71
  308. package/dist/state/helpers/column-layout.d.ts +1 -7
  309. package/dist/state/helpers/column-layout.js +60 -60
  310. package/dist/state/helpers/column-marker.d.ts +4 -8
  311. package/dist/state/helpers/column-marker.js +34 -38
  312. package/dist/state/helpers/column-view.d.ts +15 -21
  313. package/dist/state/helpers/column-view.js +32 -56
  314. package/dist/state/helpers/edit-on-change.d.ts +10 -18
  315. package/dist/state/helpers/edit-on-change.js +25 -25
  316. package/dist/state/helpers/empty-row-data-source.js +16 -16
  317. package/dist/state/helpers/get-data-rect.d.ts +10 -20
  318. package/dist/state/helpers/get-data-rect.js +62 -67
  319. package/dist/state/helpers/get-full-width-callback.d.ts +1 -5
  320. package/dist/state/helpers/get-full-width-callback.js +6 -5
  321. package/dist/state/helpers/get-span-callback.d.ts +1 -6
  322. package/dist/state/helpers/get-span-callback.js +18 -15
  323. package/dist/state/helpers/resolve-column.d.ts +2 -6
  324. package/dist/state/helpers/resolve-column.js +23 -23
  325. package/dist/state/helpers/row-layout/get-focus-criteria.d.ts +12 -15
  326. package/dist/state/helpers/row-layout/get-focus-criteria.js +56 -57
  327. package/dist/state/helpers/row-layout/row-layout.d.ts +9 -15
  328. package/dist/state/helpers/row-layout/row-layout.js +401 -387
  329. package/dist/state/use-lytenyte.js +528 -567
  330. package/dist/tree-view/branch/branch.d.ts +11 -19
  331. package/dist/tree-view/branch/branch.js +54 -106
  332. package/dist/tree-view/branch/use-branch-keys.d.ts +1 -5
  333. package/dist/tree-view/branch/use-branch-keys.js +74 -71
  334. package/dist/tree-view/context.d.ts +17 -21
  335. package/dist/tree-view/hooks/use-tree-view-paths.d.ts +1 -7
  336. package/dist/tree-view/hooks/use-tree-view-paths.js +5 -5
  337. package/dist/tree-view/index.d.ts +7 -35
  338. package/dist/tree-view/index.js +7 -7
  339. package/dist/tree-view/leaf.d.ts +2 -10
  340. package/dist/tree-view/leaf.js +21 -30
  341. package/dist/tree-view/navigation/get-all-ids.js +3 -3
  342. package/dist/tree-view/navigation/get-first-node.js +3 -3
  343. package/dist/tree-view/navigation/get-last-node.js +3 -3
  344. package/dist/tree-view/navigation/get-next-node.js +8 -6
  345. package/dist/tree-view/navigation/get-prev-node.js +8 -6
  346. package/dist/tree-view/panel/make-handle-navigation.js +31 -23
  347. package/dist/tree-view/panel/make-handle-selection.js +77 -68
  348. package/dist/tree-view/panel/make-handle-typeahead.js +40 -34
  349. package/dist/tree-view/panel/panel.d.ts +1 -10
  350. package/dist/tree-view/panel/panel.js +20 -40
  351. package/dist/tree-view/panel/use-tree-navigation.js +52 -64
  352. package/dist/tree-view/root.d.ts +14 -20
  353. package/dist/tree-view/root.js +55 -53
  354. package/dist/tree-view/utils/get-focusable-nodes.js +2 -4
  355. package/dist/tree-view/utils/get-focused-node.js +11 -11
  356. package/dist/tree-view/utils/get-ids-between-nodes.d.ts +1 -5
  357. package/dist/tree-view/utils/get-ids-between-nodes.js +11 -10
  358. package/dist/tree-view/utils/get-panel.js +5 -5
  359. package/dist/tree-view/utils/get-parent-node.js +7 -6
  360. package/dist/tree-view/utils/get-sibling-branches.js +10 -8
  361. package/dist/tree-view/utils/get-tree-node-id.js +1 -1
  362. package/dist/tree-view/utils/is-branch-node.js +1 -1
  363. package/dist/tree-view/utils/is-leaf-node.js +1 -1
  364. package/dist/tree-view/utils/is-tree-node-disabled.js +1 -1
  365. package/dist/tree-view/utils/select-node.d.ts +1 -5
  366. package/dist/tree-view/utils/select-node.js +11 -8
  367. package/dist/tree-view/utils/toggle-all-selections.js +6 -4
  368. package/dist/tree-view/utils/toggle-selection.js +18 -15
  369. package/dist/tree-view/virtualized/force-sync-scrolling.d.ts +1 -3
  370. package/dist/tree-view/virtualized/force-sync-scrolling.js +18 -24
  371. package/dist/tree-view/virtualized/get-virtual-tree-paths.d.ts +1 -3
  372. package/dist/tree-view/virtualized/get-virtual-tree-paths.js +12 -11
  373. package/dist/tree-view/virtualized/make-virtual-tree.d.ts +21 -26
  374. package/dist/tree-view/virtualized/make-virtual-tree.js +85 -79
  375. package/dist/tree-view/virtualized/use-flattened-tree.d.ts +8 -17
  376. package/dist/tree-view/virtualized/use-flattened-tree.js +31 -30
  377. package/dist/tree-view/virtualized/use-row-start-and-end.d.ts +1 -6
  378. package/dist/tree-view/virtualized/use-row-start-and-end.js +23 -21
  379. package/dist/tree-view/virtualized/use-virtualized-tree.d.ts +15 -21
  380. package/dist/tree-view/virtualized/use-virtualized-tree.js +90 -103
  381. package/dist/utils/cycle-sorts.js +14 -12
  382. package/dist/viewport/begin-editing.d.ts +2 -6
  383. package/dist/viewport/begin-editing.js +13 -9
  384. package/dist/viewport/viewport.d.ts +1 -10
  385. package/dist/viewport/viewport.js +70 -93
  386. package/package.json +7 -7
@@ -1,22 +1,14 @@
1
1
  import { type SlotComponent } from "@1771technologies/lytenyte-react-hooks";
2
2
  export interface TreeBranchProps {
3
- readonly itemId: string;
4
- readonly labelWrap?: SlotComponent;
5
- readonly label?: SlotComponent;
6
- readonly expander?: SlotComponent<{
7
- expanded: boolean;
8
- toggle: () => void;
9
- }>;
10
- readonly transitionEnterMs?: number;
11
- readonly transitionExitMs?: number;
12
- readonly gridWrapped?: boolean;
3
+ readonly itemId: string;
4
+ readonly labelWrap?: SlotComponent;
5
+ readonly label?: SlotComponent;
6
+ readonly expander?: SlotComponent<{
7
+ expanded: boolean;
8
+ toggle: () => void;
9
+ }>;
10
+ readonly transitionEnterMs?: number;
11
+ readonly transitionExitMs?: number;
12
+ readonly gridWrapped?: boolean;
13
13
  }
14
- export declare const TreeBranch: import("react").ForwardRefExoticComponent<
15
- Omit<
16
- import("react").ClassAttributes<HTMLLIElement> &
17
- import("react").LiHTMLAttributes<HTMLLIElement> &
18
- TreeBranchProps,
19
- "ref"
20
- > &
21
- import("react").RefAttributes<HTMLLIElement>
22
- >;
14
+ export declare const TreeBranch: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLLIElement> & import("react").LiHTMLAttributes<HTMLLIElement> & TreeBranchProps, "ref"> & import("react").RefAttributes<HTMLLIElement>>;
@@ -1,115 +1,63 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { forwardRef, useEffect } from "react";
3
3
  import { depthContext, useDepth } from "../depth-provider.js";
4
- import { useEvent, useSlot, useTransitionedOpen } from "@1771technologies/lytenyte-react-hooks";
4
+ import { useEvent, useSlot, useTransitionedOpen, } from "@1771technologies/lytenyte-react-hooks";
5
5
  import { useTreeRoot } from "../context.js";
6
6
  import { useBranchKeys } from "./use-branch-keys.js";
7
- export const TreeBranch = forwardRef(function TreeBranch(
8
- {
9
- itemId,
10
- label,
11
- expander,
12
- transitionEnterMs,
13
- transitionExitMs,
14
- gridWrapped,
15
- labelWrap,
16
- ...props
17
- },
18
- forwarded,
19
- ) {
20
- const depth = useDepth();
21
- const root = useTreeRoot();
22
- // Manage the open and close state of the branch
23
- const expanded = root.expansions[itemId] ?? root.expansionDefault ?? false;
24
- const { open, shouldMount, state, toggle } = useTransitionedOpen({
25
- initial: expanded,
26
- timeEnter: transitionEnterMs ?? root.transitionEnterMs,
27
- timeExit: transitionExitMs ?? root.transitionExitMs,
28
- });
29
- const onExpansionChange = useEvent((b) => {
30
- root.onExpansionChange({
31
- ...root.expansions,
32
- [itemId]: b,
7
+ export const TreeBranch = forwardRef(function TreeBranch({ itemId, label, expander, transitionEnterMs, transitionExitMs, gridWrapped, labelWrap, ...props }, forwarded) {
8
+ const depth = useDepth();
9
+ const root = useTreeRoot();
10
+ // Manage the open and close state of the branch
11
+ const expanded = root.expansions[itemId] ?? root.expansionDefault ?? false;
12
+ const { open, shouldMount, state, toggle } = useTransitionedOpen({
13
+ initial: expanded,
14
+ timeEnter: transitionEnterMs ?? root.transitionEnterMs,
15
+ timeExit: transitionExitMs ?? root.transitionExitMs,
33
16
  });
34
- });
35
- useEffect(() => {
36
- if (expanded === open) return;
37
- toggle(expanded);
38
- }, [expanded, open, toggle]);
39
- // Component part rendering
40
- const labelRendered = useSlot({
41
- props: [],
42
- slot: label ?? _jsx("div", {}),
43
- });
44
- const expandedProps = {
45
- onClick: (e) => {
46
- e.stopPropagation();
47
- onExpansionChange(!expanded);
48
- },
49
- };
50
- const expanderRendered = useSlot({
51
- props: [expandedProps],
52
- slot: expander ?? _jsx("button", { children: ">" }),
53
- state: { toggle, expanded },
54
- });
55
- const wrapped = gridWrapped ?? root.gridWrappedBranches;
56
- const labelWrapSlot = useSlot({
57
- props: [
58
- {
59
- "data-tree-branch-label": true,
60
- children: _jsxs(_Fragment, { children: [expanderRendered, labelRendered] }),
61
- },
62
- ],
63
- slot: labelWrap ?? _jsx("div", {}),
64
- });
65
- return _jsx(depthContext.Provider, {
66
- value: depth + 1,
67
- children: _jsxs("li", {
68
- ...props,
69
- onKeyDown: useBranchKeys(itemId, root.expansionDefault ?? false, props.onKeyDown),
70
- tabIndex: -1,
71
- ref: forwarded,
72
- role: "treeitem",
73
- "aria-expanded": open,
74
- "aria-selected": root.selection.has(itemId),
75
- "aria-level": depth + 1,
76
- "data-ln-selected": root.selection.has(itemId),
77
- "data-ln-tree-node": true,
78
- "data-ln-tree-branch": true,
79
- "data-ln-tree-id": itemId,
80
- style: {
81
- ...props.style,
82
- "--ln-tree-depth": depth,
83
- },
84
- children: [
85
- labelWrapSlot,
86
- _jsx("div", {
87
- children: _jsx(Wrapped, {
88
- wrapped: wrapped,
89
- expanded: open,
90
- children:
91
- shouldMount &&
92
- _jsx("ul", {
93
- "data-tree-branch-children": true,
94
- "data-expanded": open,
95
- "data-open-state": state,
96
- role: "group",
97
- children: props.children,
98
- }),
99
- }),
100
- }),
101
- ],
102
- }),
103
- });
17
+ const onExpansionChange = useEvent((b) => {
18
+ root.onExpansionChange({
19
+ ...root.expansions,
20
+ [itemId]: b,
21
+ });
22
+ });
23
+ useEffect(() => {
24
+ if (expanded === open)
25
+ return;
26
+ toggle(expanded);
27
+ }, [expanded, open, toggle]);
28
+ // Component part rendering
29
+ const labelRendered = useSlot({
30
+ props: [],
31
+ slot: label ?? _jsx("div", {}),
32
+ });
33
+ const expandedProps = {
34
+ onClick: (e) => {
35
+ e.stopPropagation();
36
+ onExpansionChange(!expanded);
37
+ },
38
+ };
39
+ const expanderRendered = useSlot({
40
+ props: [expandedProps],
41
+ slot: expander ?? _jsx("button", { children: ">" }),
42
+ state: { toggle, expanded },
43
+ });
44
+ const wrapped = gridWrapped ?? root.gridWrappedBranches;
45
+ const labelWrapSlot = useSlot({
46
+ props: [
47
+ {
48
+ "data-tree-branch-label": true,
49
+ children: (_jsxs(_Fragment, { children: [expanderRendered, labelRendered] })),
50
+ },
51
+ ],
52
+ slot: labelWrap ?? _jsx("div", {}),
53
+ });
54
+ return (_jsx(depthContext.Provider, { value: depth + 1, children: _jsxs("li", { ...props, onKeyDown: useBranchKeys(itemId, root.expansionDefault ?? false, props.onKeyDown), tabIndex: -1, ref: forwarded, role: "treeitem", "aria-expanded": open, "aria-selected": root.selection.has(itemId), "aria-level": depth + 1, "data-ln-selected": root.selection.has(itemId), "data-ln-tree-node": true, "data-ln-tree-branch": true, "data-ln-tree-id": itemId, style: {
55
+ ...props.style,
56
+ "--ln-tree-depth": depth,
57
+ }, children: [labelWrapSlot, _jsx("div", { children: _jsx(Wrapped, { wrapped: wrapped, expanded: open, children: shouldMount && (_jsx("ul", { "data-tree-branch-children": true, "data-expanded": open, "data-open-state": state, role: "group", children: props.children })) }) })] }) }));
104
58
  });
105
59
  function Wrapped(props) {
106
- if (!props.wrapped) return _jsx(_Fragment, { children: props.children });
107
- return _jsx("div", {
108
- "data-tree-branch-grid-wrapped": true,
109
- "data-expanded": props.expanded,
110
- children: _jsx("div", {
111
- "data-tree-branch-grid-wrapped-content": true,
112
- children: props.children,
113
- }),
114
- });
60
+ if (!props.wrapped)
61
+ return _jsx(_Fragment, { children: props.children });
62
+ return (_jsx("div", { "data-tree-branch-grid-wrapped": true, "data-expanded": props.expanded, children: _jsx("div", { "data-tree-branch-grid-wrapped-content": true, children: props.children }) }));
115
63
  }
@@ -1,6 +1,2 @@
1
1
  import type { KeyboardEvent, KeyboardEventHandler } from "react";
2
- export declare function useBranchKeys(
3
- id: string,
4
- defaultExpansion: boolean,
5
- current?: KeyboardEventHandler,
6
- ): (ev: KeyboardEvent) => void;
2
+ export declare function useBranchKeys(id: string, defaultExpansion: boolean, current?: KeyboardEventHandler): (ev: KeyboardEvent) => void;
@@ -9,76 +9,79 @@ import { getSiblingBranches } from "../utils/get-sibling-branches.js";
9
9
  import { getFocusables } from "@1771technologies/lytenyte-dom-utils";
10
10
  const accepted = ["ArrowRight", "ArrowLeft", "Enter", "*"];
11
11
  export function useBranchKeys(id, defaultExpansion, current) {
12
- const ctx = useTreeRoot();
13
- const onKeyDown = useEvent((ev) => {
14
- current?.(ev);
15
- if (!accepted.includes(ev.key)) return;
16
- const isExpanded = ctx.expansions[id] ?? defaultExpansion;
17
- if (ev.key === "*") {
18
- const node = getFocusedNode();
19
- const siblings = getSiblingBranches(node);
20
- const next = { ...ctx.expansions };
21
- siblings?.forEach((c) => {
22
- next[getTreeNodeId(c)] = true;
23
- });
24
- ctx.onExpansionChange(next);
25
- ev.stopPropagation();
26
- return;
27
- }
28
- if (ev.key === "Enter") {
29
- if (ev.currentTarget !== ev.target) return;
30
- const next = { ...ctx.expansions };
31
- next[id] = !isExpanded;
32
- ctx.onExpansionChange(next);
33
- return;
34
- }
35
- if (ev.key === "ArrowRight") {
36
- const branch = getFocusedNode();
37
- if (ev.currentTarget !== branch) return;
38
- if (!isExpanded) {
39
- const next = { ...ctx.expansions };
40
- next[id] = !(next[id] ?? defaultExpansion);
41
- ctx.onExpansionChange(next);
42
- return;
43
- }
44
- const childNodes = getFocusables(branch.firstElementChild);
45
- if (childNodes.length > 1 && childNodes.at(-1) !== document.activeElement) {
46
- const current = childNodes.indexOf(document.activeElement);
47
- const index = current === -1 || current === 0 ? 1 : current + 1;
48
- childNodes[index]?.focus();
49
- return;
50
- }
51
- // Get the first focusable node.
52
- const nodes = getFocusableNodes(branch);
53
- nodes.at(0)?.focus();
54
- }
55
- if (ev.key === "ArrowLeft") {
56
- const node = getFocusedNode();
57
- // We need to collapse this node
58
- if (isBranchNode(node) && isExpanded) {
59
- // Ensure we don't collapse the node when the event bubbles and the left arrow
60
- // was pressed on a child element. Pressing left arrow on the child will focus the
61
- // parent, and then run the parent's on keydown handler.
62
- if (
63
- ev.target !== ev.currentTarget &&
64
- !ev.currentTarget.firstElementChild?.contains(document.activeElement)
65
- )
66
- return;
67
- const next = { ...ctx.expansions };
68
- const id = getTreeNodeId(node);
69
- next[id] = false;
70
- ctx.onExpansionChange(next);
71
- return;
72
- } else {
73
- const parent = getParentNode(node);
74
- if (!parent) {
75
- const focusNodes = getFocusableNodes(ctx.panel);
76
- focusNodes.at(0)?.focus();
77
- } else {
78
- parent.focus();
12
+ const ctx = useTreeRoot();
13
+ const onKeyDown = useEvent((ev) => {
14
+ current?.(ev);
15
+ if (!accepted.includes(ev.key))
16
+ return;
17
+ const isExpanded = ctx.expansions[id] ?? defaultExpansion;
18
+ if (ev.key === "*") {
19
+ const node = getFocusedNode();
20
+ const siblings = getSiblingBranches(node);
21
+ const next = { ...ctx.expansions };
22
+ siblings?.forEach((c) => {
23
+ next[getTreeNodeId(c)] = true;
24
+ });
25
+ ctx.onExpansionChange(next);
26
+ ev.stopPropagation();
27
+ return;
79
28
  }
80
- }
81
- }
82
- });
83
- return onKeyDown;
29
+ if (ev.key === "Enter") {
30
+ if (ev.currentTarget !== ev.target)
31
+ return;
32
+ const next = { ...ctx.expansions };
33
+ next[id] = !isExpanded;
34
+ ctx.onExpansionChange(next);
35
+ return;
36
+ }
37
+ if (ev.key === "ArrowRight") {
38
+ const branch = getFocusedNode();
39
+ if (ev.currentTarget !== branch)
40
+ return;
41
+ if (!isExpanded) {
42
+ const next = { ...ctx.expansions };
43
+ next[id] = !(next[id] ?? defaultExpansion);
44
+ ctx.onExpansionChange(next);
45
+ return;
46
+ }
47
+ const childNodes = getFocusables(branch.firstElementChild);
48
+ if (childNodes.length > 1 && childNodes.at(-1) !== document.activeElement) {
49
+ const current = childNodes.indexOf(document.activeElement);
50
+ const index = current === -1 || current === 0 ? 1 : current + 1;
51
+ childNodes[index]?.focus();
52
+ return;
53
+ }
54
+ // Get the first focusable node.
55
+ const nodes = getFocusableNodes(branch);
56
+ nodes.at(0)?.focus();
57
+ }
58
+ if (ev.key === "ArrowLeft") {
59
+ const node = getFocusedNode();
60
+ // We need to collapse this node
61
+ if (isBranchNode(node) && isExpanded) {
62
+ // Ensure we don't collapse the node when the event bubbles and the left arrow
63
+ // was pressed on a child element. Pressing left arrow on the child will focus the
64
+ // parent, and then run the parent's on keydown handler.
65
+ if (ev.target !== ev.currentTarget &&
66
+ !ev.currentTarget.firstElementChild?.contains(document.activeElement))
67
+ return;
68
+ const next = { ...ctx.expansions };
69
+ const id = getTreeNodeId(node);
70
+ next[id] = false;
71
+ ctx.onExpansionChange(next);
72
+ return;
73
+ }
74
+ else {
75
+ const parent = getParentNode(node);
76
+ if (!parent) {
77
+ const focusNodes = getFocusableNodes(ctx.panel);
78
+ focusNodes.at(0)?.focus();
79
+ }
80
+ else {
81
+ parent.focus();
82
+ }
83
+ }
84
+ }
85
+ });
86
+ return onKeyDown;
84
87
  }
@@ -1,26 +1,22 @@
1
1
  import { type Dispatch, type SetStateAction } from "react";
2
2
  export interface TreeViewRootContext {
3
- readonly panel: HTMLUListElement | null;
4
- readonly panelRef: Dispatch<SetStateAction<HTMLUListElement | null>>;
5
- readonly expansions: Record<string, boolean>;
6
- readonly onExpansionChange: (n: Record<string, boolean>) => void;
7
- readonly expansionDefault: boolean;
8
- readonly selectionMode: "single" | "multiple" | "none";
9
- readonly selection: Set<string>;
10
- readonly onSelectionChange: (c: Set<string>) => void;
11
- readonly selectionPivotRef: {
12
- current: string | null;
13
- };
14
- readonly transitionEnterMs: number;
15
- readonly transitionExitMs: number;
16
- readonly gridWrappedBranches: boolean;
17
- readonly onFocusChange: (el: HTMLElement | null) => void;
18
- readonly getAllIds: (panel: HTMLElement) => Set<string>;
19
- readonly getIdsBetweenNodes: (
20
- start: HTMLElement,
21
- end: HTMLElement,
22
- panel: HTMLElement,
23
- ) => string[];
3
+ readonly panel: HTMLUListElement | null;
4
+ readonly panelRef: Dispatch<SetStateAction<HTMLUListElement | null>>;
5
+ readonly expansions: Record<string, boolean>;
6
+ readonly onExpansionChange: (n: Record<string, boolean>) => void;
7
+ readonly expansionDefault: boolean;
8
+ readonly selectionMode: "single" | "multiple" | "none";
9
+ readonly selection: Set<string>;
10
+ readonly onSelectionChange: (c: Set<string>) => void;
11
+ readonly selectionPivotRef: {
12
+ current: string | null;
13
+ };
14
+ readonly transitionEnterMs: number;
15
+ readonly transitionExitMs: number;
16
+ readonly gridWrappedBranches: boolean;
17
+ readonly onFocusChange: (el: HTMLElement | null) => void;
18
+ readonly getAllIds: (panel: HTMLElement) => Set<string>;
19
+ readonly getIdsBetweenNodes: (start: HTMLElement, end: HTMLElement, panel: HTMLElement) => string[];
24
20
  }
25
21
  export declare const context: import("react").Context<TreeViewRootContext>;
26
22
  export declare const useTreeRoot: () => TreeViewRootContext;
@@ -1,8 +1,2 @@
1
1
  import { type PathProvidedItem } from "@1771technologies/lytenyte-shared";
2
- export declare function useTreeViewPaths<T extends PathProvidedItem>(
3
- paths: T[],
4
- nonAdjacentAreDistinct?: boolean,
5
- ): (
6
- | import("@1771technologies/lytenyte-shared").PathBranch<T>
7
- | import("@1771technologies/lytenyte-shared").PathLeaf<T>
8
- )[];
2
+ export declare function useTreeViewPaths<T extends PathProvidedItem>(paths: T[], nonAdjacentAreDistinct?: boolean): (import("@1771technologies/lytenyte-shared").PathBranch<T> | import("@1771technologies/lytenyte-shared").PathLeaf<T>)[];
@@ -1,9 +1,9 @@
1
1
  import { computePathTree } from "@1771technologies/lytenyte-shared";
2
2
  import { useMemo } from "react";
3
3
  export function useTreeViewPaths(paths, nonAdjacentAreDistinct) {
4
- const tree = useMemo(() => {
5
- const result = computePathTree(paths, {}, nonAdjacentAreDistinct);
6
- return [...result.children.values()];
7
- }, [nonAdjacentAreDistinct, paths]);
8
- return tree;
4
+ const tree = useMemo(() => {
5
+ const result = computePathTree(paths, {}, nonAdjacentAreDistinct);
6
+ return [...result.children.values()];
7
+ }, [nonAdjacentAreDistinct, paths]);
8
+ return tree;
9
9
  }
@@ -2,41 +2,13 @@ import { useTreeViewPaths } from "./hooks/use-tree-view-paths.js";
2
2
  import { ForceSyncScrolling } from "./virtualized/force-sync-scrolling.js";
3
3
  import { useVirtualizedTree } from "./virtualized/use-virtualized-tree.js";
4
4
  export declare const Tree: {
5
- Leaf: import("react").ForwardRefExoticComponent<
6
- Omit<
7
- import("react").ClassAttributes<HTMLLIElement> &
8
- import("react").LiHTMLAttributes<HTMLLIElement> &
9
- import("./leaf.js").TreeLeafProps,
10
- "ref"
11
- > &
12
- import("react").RefAttributes<HTMLLIElement>
13
- >;
14
- Branch: import("react").ForwardRefExoticComponent<
15
- Omit<
16
- import("react").ClassAttributes<HTMLLIElement> &
17
- import("react").LiHTMLAttributes<HTMLLIElement> &
18
- import("./index.js").TreeBranchProps,
19
- "ref"
20
- > &
21
- import("react").RefAttributes<HTMLLIElement>
22
- >;
23
- Root: import("react").ForwardRefExoticComponent<
24
- Omit<import("react").PropsWithChildren<import("./root.js").TreeRootProps>, "ref"> &
25
- import("react").RefAttributes<HTMLElement>
26
- >;
27
- Panel: import("react").ForwardRefExoticComponent<
28
- Omit<
29
- import("react").DetailedHTMLProps<
30
- import("react").HTMLAttributes<HTMLUListElement>,
31
- HTMLUListElement
32
- >,
33
- "ref"
34
- > &
35
- import("react").RefAttributes<HTMLUListElement>
36
- >;
37
- usePaths: typeof useTreeViewPaths;
38
- useVirtualTree: typeof useVirtualizedTree;
39
- ForceSyncScrolling: typeof ForceSyncScrolling;
5
+ Leaf: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLLIElement> & import("react").LiHTMLAttributes<HTMLLIElement> & import("./leaf.js").TreeLeafProps, "ref"> & import("react").RefAttributes<HTMLLIElement>>;
6
+ Branch: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLLIElement> & import("react").LiHTMLAttributes<HTMLLIElement> & import("./index.js").TreeBranchProps, "ref"> & import("react").RefAttributes<HTMLLIElement>>;
7
+ Root: import("react").ForwardRefExoticComponent<Omit<import("react").PropsWithChildren<import("./root.js").TreeRootProps>, "ref"> & import("react").RefAttributes<HTMLElement>>;
8
+ Panel: import("react").ForwardRefExoticComponent<Omit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLUListElement>, HTMLUListElement>, "ref"> & import("react").RefAttributes<HTMLUListElement>>;
9
+ usePaths: typeof useTreeViewPaths;
10
+ useVirtualTree: typeof useVirtualizedTree;
11
+ ForceSyncScrolling: typeof ForceSyncScrolling;
40
12
  };
41
13
  export type { TreeRootProps } from "./root.js";
42
14
  export type { TreeBranchProps } from "./branch/branch.js";
@@ -6,11 +6,11 @@ import { TreeRoot } from "./root.js";
6
6
  import { ForceSyncScrolling } from "./virtualized/force-sync-scrolling.js";
7
7
  import { useVirtualizedTree } from "./virtualized/use-virtualized-tree.js";
8
8
  export const Tree = {
9
- Leaf: TreeLeaf,
10
- Branch: TreeBranch,
11
- Root: TreeRoot,
12
- Panel: TreePanel,
13
- usePaths: useTreeViewPaths,
14
- useVirtualTree: useVirtualizedTree,
15
- ForceSyncScrolling,
9
+ Leaf: TreeLeaf,
10
+ Branch: TreeBranch,
11
+ Root: TreeRoot,
12
+ Panel: TreePanel,
13
+ usePaths: useTreeViewPaths,
14
+ useVirtualTree: useVirtualizedTree,
15
+ ForceSyncScrolling,
16
16
  };
@@ -1,12 +1,4 @@
1
1
  export interface TreeLeafProps {
2
- readonly itemId: string;
2
+ readonly itemId: string;
3
3
  }
4
- export declare const TreeLeaf: import("react").ForwardRefExoticComponent<
5
- Omit<
6
- import("react").ClassAttributes<HTMLLIElement> &
7
- import("react").LiHTMLAttributes<HTMLLIElement> &
8
- TreeLeafProps,
9
- "ref"
10
- > &
11
- import("react").RefAttributes<HTMLLIElement>
12
- >;
4
+ export declare const TreeLeaf: import("react").ForwardRefExoticComponent<Omit<import("react").ClassAttributes<HTMLLIElement> & import("react").LiHTMLAttributes<HTMLLIElement> & TreeLeafProps, "ref"> & import("react").RefAttributes<HTMLLIElement>>;
@@ -4,34 +4,25 @@ import { useDepth } from "./depth-provider.js";
4
4
  import { useTreeRoot } from "./context.js";
5
5
  import { getFocusables } from "@1771technologies/lytenyte-dom-utils";
6
6
  export const TreeLeaf = forwardRef(function TreeLeaf({ itemId, ...props }, forwarded) {
7
- const depth = useDepth();
8
- const root = useTreeRoot();
9
- return _jsx("li", {
10
- ...props,
11
- tabIndex: -1,
12
- "data-ln-tree-node": true,
13
- "data-ln-tree-leaf": true,
14
- "data-ln-selected": root.selection.has(itemId),
15
- "data-ln-tree-id": itemId,
16
- onKeyDown: (e) => {
17
- props.onKeyDown?.(e);
18
- if ((e.key !== "ArrowLeft" && e.key !== "ArrowRight") || e.metaKey || e.ctrlKey || e.shiftKey)
19
- return;
20
- e.preventDefault();
21
- const nodes = getFocusables(e.currentTarget);
22
- const index = nodes.indexOf(document.activeElement);
23
- if (index === -1) {
24
- nodes.at(0)?.focus();
25
- return;
26
- }
27
- if (e.key === "ArrowLeft") nodes[index === 0 ? nodes.length - 1 : index - 1].focus();
28
- else nodes[index === nodes.length - 1 ? 0 : index + 1].focus();
29
- },
30
- ref: forwarded,
31
- role: "treeitem",
32
- "aria-level": depth + 1,
33
- "aria-selected": root.selection.has(itemId),
34
- style: { ...props.style, "--tree-depth": depth },
35
- children: props.children,
36
- });
7
+ const depth = useDepth();
8
+ const root = useTreeRoot();
9
+ return (_jsx("li", { ...props, tabIndex: -1, "data-ln-tree-node": true, "data-ln-tree-leaf": true, "data-ln-selected": root.selection.has(itemId), "data-ln-tree-id": itemId, onKeyDown: (e) => {
10
+ props.onKeyDown?.(e);
11
+ if ((e.key !== "ArrowLeft" && e.key !== "ArrowRight") ||
12
+ e.metaKey ||
13
+ e.ctrlKey ||
14
+ e.shiftKey)
15
+ return;
16
+ e.preventDefault();
17
+ const nodes = getFocusables(e.currentTarget);
18
+ const index = nodes.indexOf(document.activeElement);
19
+ if (index === -1) {
20
+ nodes.at(0)?.focus();
21
+ return;
22
+ }
23
+ if (e.key === "ArrowLeft")
24
+ nodes[index === 0 ? nodes.length - 1 : index - 1].focus();
25
+ else
26
+ nodes[index === nodes.length - 1 ? 0 : index + 1].focus();
27
+ }, ref: forwarded, role: "treeitem", "aria-level": depth + 1, "aria-selected": root.selection.has(itemId), style: { ...props.style, "--tree-depth": depth }, children: props.children }));
37
28
  });
@@ -1,7 +1,7 @@
1
1
  import { getFocusableNodes } from "../utils/get-focusable-nodes.js";
2
2
  import { getTreeNodeId } from "../utils/get-tree-node-id.js";
3
3
  export function getAllIds(panel) {
4
- const focusables = getFocusableNodes(panel);
5
- const allIds = new Set(focusables.map((c) => getTreeNodeId(c)));
6
- return allIds;
4
+ const focusables = getFocusableNodes(panel);
5
+ const allIds = new Set(focusables.map((c) => getTreeNodeId(c)));
6
+ return allIds;
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import { getFocusableNodes } from "../utils/get-focusable-nodes.js";
2
2
  import { isTreeNodeDisabled } from "../utils/is-tree-node-disabled.js";
3
3
  export function getFirstNode(panel) {
4
- const focusables = getFocusableNodes(panel);
5
- const first = focusables.find((c) => !isTreeNodeDisabled(c));
6
- return first;
4
+ const focusables = getFocusableNodes(panel);
5
+ const first = focusables.find((c) => !isTreeNodeDisabled(c));
6
+ return first;
7
7
  }
@@ -1,7 +1,7 @@
1
1
  import { getFocusableNodes } from "../utils/get-focusable-nodes.js";
2
2
  import { isTreeNodeDisabled } from "../utils/is-tree-node-disabled.js";
3
3
  export function getLastNode(panel) {
4
- const focusables = getFocusableNodes(panel);
5
- const first = focusables.findLast((c) => !isTreeNodeDisabled(c));
6
- return first;
4
+ const focusables = getFocusableNodes(panel);
5
+ const first = focusables.findLast((c) => !isTreeNodeDisabled(c));
6
+ return first;
7
7
  }
@@ -2,10 +2,12 @@ import { getFocusableNodes } from "../utils/get-focusable-nodes.js";
2
2
  import { getPanel } from "../utils/get-panel.js";
3
3
  // Assumes that el is a branch or leaf node
4
4
  export function getNextNode(el) {
5
- const panel = getPanel(el);
6
- if (!panel) return;
7
- const focusables = getFocusableNodes(panel);
8
- const index = focusables.indexOf(el);
9
- if (index === -1) return;
10
- return focusables.at(index + 1);
5
+ const panel = getPanel(el);
6
+ if (!panel)
7
+ return;
8
+ const focusables = getFocusableNodes(panel);
9
+ const index = focusables.indexOf(el);
10
+ if (index === -1)
11
+ return;
12
+ return focusables.at(index + 1);
11
13
  }