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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (386) hide show
  1. package/dist/+types.d.ts +4469 -4219
  2. package/dist/cell-selection/adjust-rect-for-row-and-cell-span.js +38 -38
  3. package/dist/cell-selection/are-rects-equal.js +4 -6
  4. package/dist/cell-selection/bound-selection-rect.js +14 -14
  5. package/dist/cell-selection/cell-selection-containers.js +78 -108
  6. package/dist/cell-selection/cell-selection-driver.js +262 -250
  7. package/dist/cell-selection/cell-style-row.d.ts +6 -12
  8. package/dist/cell-selection/cell-style-row.js +79 -82
  9. package/dist/cell-selection/deselect-rect-range.js +40 -41
  10. package/dist/cell-selection/expand-cell-selection-down.d.ts +2 -5
  11. package/dist/cell-selection/expand-cell-selection-down.js +33 -29
  12. package/dist/cell-selection/expand-cell-selection-end.d.ts +2 -5
  13. package/dist/cell-selection/expand-cell-selection-end.js +34 -30
  14. package/dist/cell-selection/expand-cell-selection-start.d.ts +2 -5
  15. package/dist/cell-selection/expand-cell-selection-start.js +33 -29
  16. package/dist/cell-selection/expand-cell-selection-up.d.ts +2 -5
  17. package/dist/cell-selection/expand-cell-selection-up.js +33 -29
  18. package/dist/cell-selection/full-width-start-end-index.js +3 -3
  19. package/dist/cell-selection/get-root-cell.d.ts +1 -5
  20. package/dist/cell-selection/get-root-cell.js +79 -77
  21. package/dist/cell-selection/is-bottom-rect.js +5 -5
  22. package/dist/cell-selection/is-center-col-rect.d.ts +2 -5
  23. package/dist/cell-selection/is-center-col-rect.js +3 -5
  24. package/dist/cell-selection/is-center-rect.js +3 -3
  25. package/dist/cell-selection/is-end-rect.d.ts +2 -5
  26. package/dist/cell-selection/is-end-rect.js +2 -2
  27. package/dist/cell-selection/is-overlapping-rect.js +4 -6
  28. package/dist/cell-selection/is-start-rect.d.ts +2 -5
  29. package/dist/cell-selection/is-start-rect.js +2 -2
  30. package/dist/cell-selection/is-top-rect.js +2 -2
  31. package/dist/cell-selection/is-within-selection-rect.js +1 -1
  32. package/dist/cell-selection/split-cell-selection-rect.d.ts +6 -12
  33. package/dist/cell-selection/split-cell-selection-rect.js +47 -53
  34. package/dist/cell-selection/update-additive-cell-selection.d.ts +2 -5
  35. package/dist/cell-selection/update-additive-cell-selection.js +17 -16
  36. package/dist/cell-selection/use-edge-scroll.d.ts +6 -8
  37. package/dist/cell-selection/use-edge-scroll.js +63 -65
  38. package/dist/cells/cell-default.d.ts +1 -5
  39. package/dist/cells/cell-default.js +5 -5
  40. package/dist/cells/cell-editor.d.ts +2 -4
  41. package/dist/cells/cell-editor.js +92 -129
  42. package/dist/cells/cell.d.ts +3 -16
  43. package/dist/cells/cell.js +27 -56
  44. package/dist/column-manager/branch-lookup-context.d.ts +1 -3
  45. package/dist/column-manager/branch.d.ts +9 -17
  46. package/dist/column-manager/branch.js +46 -64
  47. package/dist/column-manager/column-manager.d.ts +8 -57
  48. package/dist/column-manager/column-manager.js +8 -8
  49. package/dist/column-manager/context.d.ts +1 -1
  50. package/dist/column-manager/label.d.ts +2 -10
  51. package/dist/column-manager/label.js +12 -11
  52. package/dist/column-manager/leaf.d.ts +2 -10
  53. package/dist/column-manager/leaf.js +49 -61
  54. package/dist/column-manager/move-handle.d.ts +6 -14
  55. package/dist/column-manager/move-handle.js +48 -52
  56. package/dist/column-manager/panel.d.ts +1 -10
  57. package/dist/column-manager/root.d.ts +3 -7
  58. package/dist/column-manager/root.js +1 -4
  59. package/dist/column-manager/use-column-manager.d.ts +5 -7
  60. package/dist/column-manager/use-column-manager.js +21 -15
  61. package/dist/column-manager/use-columns-from-context.d.ts +1 -3
  62. package/dist/column-manager/use-columns-from-context.js +18 -18
  63. package/dist/column-manager/visibility-checkbox.d.ts +6 -14
  64. package/dist/column-manager/visibility-checkbox.js +23 -36
  65. package/dist/context.d.ts +4 -4
  66. package/dist/filter-tree/branch.d.ts +8 -16
  67. package/dist/filter-tree/branch.js +13 -23
  68. package/dist/filter-tree/context.d.ts +16 -16
  69. package/dist/filter-tree/filter-tree.d.ts +8 -49
  70. package/dist/filter-tree/filter-tree.js +8 -8
  71. package/dist/filter-tree/hooks/use-filter-tree.d.ts +29 -35
  72. package/dist/filter-tree/hooks/use-filter-tree.js +92 -94
  73. package/dist/filter-tree/hooks/use-tree-item.d.ts +4 -4
  74. package/dist/filter-tree/hooks/use-tree-item.js +106 -99
  75. package/dist/filter-tree/inclusion-checkbox.d.ts +6 -14
  76. package/dist/filter-tree/inclusion-checkbox.js +9 -19
  77. package/dist/filter-tree/label.d.ts +2 -10
  78. package/dist/filter-tree/label.js +12 -11
  79. package/dist/filter-tree/leaf.d.ts +2 -10
  80. package/dist/filter-tree/leaf.js +5 -15
  81. package/dist/filter-tree/root.d.ts +7 -23
  82. package/dist/filter-tree/root.js +23 -51
  83. package/dist/grid-box/+types.d.ts +11 -11
  84. package/dist/grid-box/context.d.ts +3 -3
  85. package/dist/grid-box/grid-box.d.ts +6 -26
  86. package/dist/grid-box/grid-box.js +6 -6
  87. package/dist/grid-box/item.d.ts +5 -13
  88. package/dist/grid-box/item.js +56 -73
  89. package/dist/grid-box/panel.d.ts +1 -13
  90. package/dist/grid-box/panel.js +2 -9
  91. package/dist/grid-box/root.d.ts +5 -11
  92. package/dist/grid-box/root.js +2 -11
  93. package/dist/grid-box/use-aggregation-box-items.d.ts +13 -16
  94. package/dist/grid-box/use-aggregation-box-items.js +57 -56
  95. package/dist/grid-box/use-column-box-items.d.ts +23 -33
  96. package/dist/grid-box/use-column-box-items.js +75 -87
  97. package/dist/grid-box/use-row-group-box-items.d.ts +12 -17
  98. package/dist/grid-box/use-row-group-box-items.js +123 -120
  99. package/dist/grid-provider/context.d.ts +2 -4
  100. package/dist/grid-provider/provider.d.ts +2 -4
  101. package/dist/grid-provider/use-grid.d.ts +1 -1
  102. package/dist/grid.d.ts +14 -126
  103. package/dist/grid.js +14 -14
  104. package/dist/header/header-cell.d.ts +5 -13
  105. package/dist/header/header-cell.js +15 -41
  106. package/dist/header/header-group-cell.d.ts +2 -10
  107. package/dist/header/header-group-cell.js +8 -26
  108. package/dist/header/header-row.d.ts +2 -10
  109. package/dist/header/header-row.js +2 -2
  110. package/dist/header/header.d.ts +1 -10
  111. package/dist/header/header.js +2 -11
  112. package/dist/header/resize-handler.d.ts +6 -15
  113. package/dist/header/resize-handler.js +122 -131
  114. package/dist/header/use-drag-move.d.ts +11 -22
  115. package/dist/header/use-drag-move.js +94 -95
  116. package/dist/header/use-header-cell-renderer.d.ts +2 -9
  117. package/dist/header/use-header-cell-renderer.js +29 -25
  118. package/dist/icons/index.d.ts +1 -92
  119. package/dist/icons/index.js +1 -92
  120. package/dist/index.d.ts +5 -22
  121. package/dist/index.js +5 -22
  122. package/dist/license.js +174 -174
  123. package/dist/listbox/context.d.ts +2 -2
  124. package/dist/listbox/item.d.ts +1 -10
  125. package/dist/listbox/item.js +19 -23
  126. package/dist/listbox/panel.d.ts +1 -10
  127. package/dist/listbox/panel.js +43 -69
  128. package/dist/listbox/root.d.ts +3 -5
  129. package/dist/listbox/root.js +7 -7
  130. package/dist/root/dialog-driver.js +16 -22
  131. package/dist/root/popover-driver.js +16 -27
  132. package/dist/root/root.d.ts +3 -7
  133. package/dist/root/root.js +107 -111
  134. package/dist/row-data-source-client/+types.d.ts +17 -17
  135. package/dist/row-data-source-client/built-ins/avg.js +4 -3
  136. package/dist/row-data-source-client/built-ins/built-ins.d.ts +16 -16
  137. package/dist/row-data-source-client/built-ins/built-ins.js +16 -16
  138. package/dist/row-data-source-client/built-ins/count.js +5 -3
  139. package/dist/row-data-source-client/built-ins/first.js +1 -1
  140. package/dist/row-data-source-client/built-ins/group.js +1 -1
  141. package/dist/row-data-source-client/built-ins/last.js +1 -1
  142. package/dist/row-data-source-client/built-ins/max.js +13 -9
  143. package/dist/row-data-source-client/built-ins/min.js +13 -9
  144. package/dist/row-data-source-client/built-ins/sum.js +10 -8
  145. package/dist/row-data-source-client/filter/+types.d.ts +13 -35
  146. package/dist/row-data-source-client/filter/compute-filtered-rows.d.ts +2 -16
  147. package/dist/row-data-source-client/filter/compute-filtered-rows.js +102 -102
  148. package/dist/row-data-source-client/pivots/create-agg-model.d.ts +4 -8
  149. package/dist/row-data-source-client/pivots/create-agg-model.js +9 -8
  150. package/dist/row-data-source-client/pivots/create-pivot-columns-from-paths.d.ts +1 -6
  151. package/dist/row-data-source-client/pivots/create-pivot-columns-from-paths.js +46 -42
  152. package/dist/row-data-source-client/pivots/create-pivot-columns.d.ts +1 -6
  153. package/dist/row-data-source-client/pivots/create-pivot-columns.js +17 -16
  154. package/dist/row-data-source-client/pivots/create-pivot-tree.d.ts +1 -7
  155. package/dist/row-data-source-client/pivots/create-pivot-tree.js +19 -19
  156. package/dist/row-data-source-client/tree/client-tree.d.ts +13 -19
  157. package/dist/row-data-source-client/tree/client-tree.js +67 -64
  158. package/dist/row-data-source-client/tree/evaluator-aggregation.d.ts +1 -4
  159. package/dist/row-data-source-client/tree/evaluator-aggregation.js +6 -6
  160. package/dist/row-data-source-client/tree/evaluator-group.d.ts +1 -4
  161. package/dist/row-data-source-client/tree/evaluator-group.js +7 -6
  162. package/dist/row-data-source-client/tree/traverse.d.ts +1 -5
  163. package/dist/row-data-source-client/tree/traverse.js +18 -15
  164. package/dist/row-data-source-client/use-client-data-source-paginated.d.ts +5 -9
  165. package/dist/row-data-source-client/use-client-data-source-paginated.js +551 -566
  166. package/dist/row-data-source-client/use-client-data-source.d.ts +5 -9
  167. package/dist/row-data-source-client/use-client-data-source.js +661 -696
  168. package/dist/row-data-source-client/use-client-tree-data-source.d.ts +5 -9
  169. package/dist/row-data-source-client/use-client-tree-data-source.js +512 -523
  170. package/dist/row-data-source-server/async-tree/+types.async-tree.d.ts +33 -36
  171. package/dist/row-data-source-server/async-tree/apply-delete-action-to-tree.d.ts +1 -4
  172. package/dist/row-data-source-server/async-tree/apply-delete-action-to-tree.js +22 -18
  173. package/dist/row-data-source-server/async-tree/apply-set-action-to-tree.d.ts +1 -4
  174. package/dist/row-data-source-server/async-tree/apply-set-action-to-tree.js +25 -17
  175. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-are-unique.js +18 -18
  176. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-are-valid.js +10 -9
  177. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-fit.d.ts +1 -4
  178. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-fit.js +14 -13
  179. package/dist/row-data-source-server/async-tree/check-set-action-item-kinds.js +10 -9
  180. package/dist/row-data-source-server/async-tree/get-parent-node-by-path.d.ts +1 -4
  181. package/dist/row-data-source-server/async-tree/get-parent-node-by-path.js +13 -13
  182. package/dist/row-data-source-server/async-tree/is-set-action-a-no-op-on-node.d.ts +1 -4
  183. package/dist/row-data-source-server/async-tree/is-set-action-a-no-op-on-node.js +1 -1
  184. package/dist/row-data-source-server/async-tree/make-async-tree.js +14 -14
  185. package/dist/row-data-source-server/async-tree/maybe-apply-parent-remove-self.d.ts +1 -3
  186. package/dist/row-data-source-server/async-tree/maybe-apply-parent-remove-self.js +6 -6
  187. package/dist/row-data-source-server/async-tree/maybe-apply-resize.d.ts +1 -5
  188. package/dist/row-data-source-server/async-tree/maybe-apply-resize.js +14 -11
  189. package/dist/row-data-source-server/async-tree/maybe-apply-set-action-items.d.ts +1 -4
  190. package/dist/row-data-source-server/async-tree/maybe-apply-set-action-items.js +46 -42
  191. package/dist/row-data-source-server/range-tree/range-tree.d.ts +28 -28
  192. package/dist/row-data-source-server/range-tree/range-tree.js +48 -49
  193. package/dist/row-data-source-server/use-server-data-source.d.ts +2 -11
  194. package/dist/row-data-source-server/use-server-data-source.js +675 -688
  195. package/dist/row-data-source-server/utils/get-node-depth.js +7 -7
  196. package/dist/row-data-source-server/utils/get-node-path.js +7 -7
  197. package/dist/row-data-source-server/utils/get-request-id.js +4 -3
  198. package/dist/rows/row/context.d.ts +2 -2
  199. package/dist/rows/row/row.d.ts +3 -16
  200. package/dist/rows/row/row.js +4 -19
  201. package/dist/rows/row/use-row-context-value.d.ts +2 -5
  202. package/dist/rows/row/use-row-context-value.js +26 -23
  203. package/dist/rows/row-detail-row.d.ts +2 -4
  204. package/dist/rows/row-detail-row.js +124 -147
  205. package/dist/rows/row-full-width.d.ts +4 -12
  206. package/dist/rows/row-full-width.js +7 -35
  207. package/dist/rows/rows-container.d.ts +1 -10
  208. package/dist/rows/rows-container.js +3 -12
  209. package/dist/rows/rows-sections.d.ts +3 -30
  210. package/dist/rows/rows-sections.js +10 -42
  211. package/dist/rows/scrollers/native-scroller.d.ts +1 -3
  212. package/dist/rows/scrollers/native-scroller.js +13 -17
  213. package/dist/sort-manager/+types.d.ts +7 -14
  214. package/dist/sort-manager/context.d.ts +4 -4
  215. package/dist/sort-manager/hooks/use-sort-manager.d.ts +9 -9
  216. package/dist/sort-manager/hooks/use-sort-manager.js +49 -45
  217. package/dist/sort-manager/hooks/use-sort-row-item.d.ts +46 -57
  218. package/dist/sort-manager/hooks/use-sort-row-item.js +131 -126
  219. package/dist/sort-manager/hooks/use-sortable-column-items.d.ts +3 -6
  220. package/dist/sort-manager/hooks/use-sortable-column-items.js +10 -10
  221. package/dist/sort-manager/root.d.ts +1 -7
  222. package/dist/sort-manager/root.js +10 -10
  223. package/dist/sort-manager/sort-add.d.ts +5 -13
  224. package/dist/sort-manager/sort-add.js +8 -8
  225. package/dist/sort-manager/sort-apply.d.ts +4 -12
  226. package/dist/sort-manager/sort-apply.js +16 -16
  227. package/dist/sort-manager/sort-cancel.d.ts +4 -12
  228. package/dist/sort-manager/sort-cancel.js +19 -19
  229. package/dist/sort-manager/sort-clear.d.ts +4 -12
  230. package/dist/sort-manager/sort-clear.js +16 -15
  231. package/dist/sort-manager/sort-column-select.d.ts +6 -14
  232. package/dist/sort-manager/sort-column-select.js +14 -22
  233. package/dist/sort-manager/sort-direction-select.d.ts +6 -14
  234. package/dist/sort-manager/sort-direction-select.js +19 -27
  235. package/dist/sort-manager/sort-manager.d.ts +12 -93
  236. package/dist/sort-manager/sort-manager.js +12 -12
  237. package/dist/sort-manager/sort-remove.d.ts +4 -12
  238. package/dist/sort-manager/sort-remove.js +8 -8
  239. package/dist/sort-manager/sort-row.d.ts +2 -10
  240. package/dist/sort-manager/sort-row.js +1 -4
  241. package/dist/sort-manager/sort-rows.d.ts +1 -10
  242. package/dist/sort-manager/sort-rows.js +1 -1
  243. package/dist/sort-manager/sort-value-select.d.ts +7 -15
  244. package/dist/sort-manager/sort-value-select.js +19 -28
  245. package/dist/sort-manager/utils/sort-item-to-sort-model.d.ts +1 -4
  246. package/dist/sort-manager/utils/sort-item-to-sort-model.js +49 -46
  247. package/dist/sort-manager/utils/sort-model-to-sort-items.d.ts +1 -4
  248. package/dist/sort-manager/utils/sort-model-to-sort-items.js +44 -36
  249. package/dist/state/+types.d.ts +29 -43
  250. package/dist/state/api/column-autosize.d.ts +2 -4
  251. package/dist/state/api/column-autosize.js +63 -62
  252. package/dist/state/api/column-by-id.js +4 -4
  253. package/dist/state/api/column-field.js +20 -17
  254. package/dist/state/api/column-from-index.js +4 -4
  255. package/dist/state/api/column-group-toggle.js +8 -8
  256. package/dist/state/api/column-index.js +5 -5
  257. package/dist/state/api/column-move.js +46 -48
  258. package/dist/state/api/column-resize.js +7 -9
  259. package/dist/state/api/column-update.d.ts +2 -4
  260. package/dist/state/api/column-update.js +23 -23
  261. package/dist/state/api/dialog-frame.d.ts +4 -8
  262. package/dist/state/api/dialog-frame.js +12 -11
  263. package/dist/state/api/edit-begin.d.ts +2 -4
  264. package/dist/state/api/edit-begin.js +84 -71
  265. package/dist/state/api/edit-end.d.ts +2 -4
  266. package/dist/state/api/edit-end.js +41 -38
  267. package/dist/state/api/edit-is-cell-active.d.ts +2 -4
  268. package/dist/state/api/edit-is-cell-active.js +24 -17
  269. package/dist/state/api/edit-update.d.ts +2 -4
  270. package/dist/state/api/edit-update.js +85 -74
  271. package/dist/state/api/event-listeners.d.ts +3 -12
  272. package/dist/state/api/event-listeners.js +17 -16
  273. package/dist/state/api/export-csv.js +35 -33
  274. package/dist/state/api/export-data-rect.js +21 -21
  275. package/dist/state/api/focus-cell.d.ts +2 -4
  276. package/dist/state/api/focus-cell.js +109 -110
  277. package/dist/state/api/popover-frame.d.ts +4 -8
  278. package/dist/state/api/popover-frame.js +12 -11
  279. package/dist/state/api/position-from-element.js +6 -5
  280. package/dist/state/api/row-by-id.js +3 -3
  281. package/dist/state/api/row-by-index.js +6 -11
  282. package/dist/state/api/row-detail-is-expanded.d.ts +1 -3
  283. package/dist/state/api/row-detail-is-expanded.js +4 -4
  284. package/dist/state/api/row-detail-rendered-height.d.ts +2 -4
  285. package/dist/state/api/row-detail-rendered-height.js +12 -10
  286. package/dist/state/api/row-detail-toggle.js +30 -26
  287. package/dist/state/api/row-group-apply-expansions.d.ts +1 -3
  288. package/dist/state/api/row-group-apply-expansions.js +17 -15
  289. package/dist/state/api/row-group-column-index.d.ts +1 -3
  290. package/dist/state/api/row-group-column-index.js +12 -14
  291. package/dist/state/api/row-group-is-expanded.d.ts +1 -3
  292. package/dist/state/api/row-group-is-expanded.js +13 -11
  293. package/dist/state/api/row-group-toggle.js +5 -5
  294. package/dist/state/api/row-handle-select.d.ts +2 -4
  295. package/dist/state/api/row-handle-select.js +40 -36
  296. package/dist/state/api/row-select-all.js +15 -14
  297. package/dist/state/api/row-select.d.ts +2 -4
  298. package/dist/state/api/row-select.js +33 -30
  299. package/dist/state/api/row-selected.js +11 -10
  300. package/dist/state/api/scroll-into-view.d.ts +2 -4
  301. package/dist/state/api/scroll-into-view.js +47 -47
  302. package/dist/state/api/sort-for-column.js +7 -6
  303. package/dist/state/api/use-row-drag.js +24 -22
  304. package/dist/state/helpers/cell-row-group.d.ts +1 -5
  305. package/dist/state/helpers/cell-row-group.js +16 -18
  306. package/dist/state/helpers/column-add-row-group.d.ts +7 -18
  307. package/dist/state/helpers/column-add-row-group.js +66 -71
  308. package/dist/state/helpers/column-layout.d.ts +1 -7
  309. package/dist/state/helpers/column-layout.js +60 -60
  310. package/dist/state/helpers/column-marker.d.ts +4 -8
  311. package/dist/state/helpers/column-marker.js +34 -38
  312. package/dist/state/helpers/column-view.d.ts +15 -21
  313. package/dist/state/helpers/column-view.js +32 -56
  314. package/dist/state/helpers/edit-on-change.d.ts +10 -18
  315. package/dist/state/helpers/edit-on-change.js +25 -25
  316. package/dist/state/helpers/empty-row-data-source.js +16 -16
  317. package/dist/state/helpers/get-data-rect.d.ts +10 -20
  318. package/dist/state/helpers/get-data-rect.js +62 -67
  319. package/dist/state/helpers/get-full-width-callback.d.ts +1 -5
  320. package/dist/state/helpers/get-full-width-callback.js +6 -5
  321. package/dist/state/helpers/get-span-callback.d.ts +1 -6
  322. package/dist/state/helpers/get-span-callback.js +18 -15
  323. package/dist/state/helpers/resolve-column.d.ts +2 -6
  324. package/dist/state/helpers/resolve-column.js +23 -23
  325. package/dist/state/helpers/row-layout/get-focus-criteria.d.ts +12 -15
  326. package/dist/state/helpers/row-layout/get-focus-criteria.js +56 -57
  327. package/dist/state/helpers/row-layout/row-layout.d.ts +9 -15
  328. package/dist/state/helpers/row-layout/row-layout.js +401 -387
  329. package/dist/state/use-lytenyte.js +528 -567
  330. package/dist/tree-view/branch/branch.d.ts +11 -19
  331. package/dist/tree-view/branch/branch.js +54 -106
  332. package/dist/tree-view/branch/use-branch-keys.d.ts +1 -5
  333. package/dist/tree-view/branch/use-branch-keys.js +74 -71
  334. package/dist/tree-view/context.d.ts +17 -21
  335. package/dist/tree-view/hooks/use-tree-view-paths.d.ts +1 -7
  336. package/dist/tree-view/hooks/use-tree-view-paths.js +5 -5
  337. package/dist/tree-view/index.d.ts +7 -35
  338. package/dist/tree-view/index.js +7 -7
  339. package/dist/tree-view/leaf.d.ts +2 -10
  340. package/dist/tree-view/leaf.js +21 -30
  341. package/dist/tree-view/navigation/get-all-ids.js +3 -3
  342. package/dist/tree-view/navigation/get-first-node.js +3 -3
  343. package/dist/tree-view/navigation/get-last-node.js +3 -3
  344. package/dist/tree-view/navigation/get-next-node.js +8 -6
  345. package/dist/tree-view/navigation/get-prev-node.js +8 -6
  346. package/dist/tree-view/panel/make-handle-navigation.js +31 -23
  347. package/dist/tree-view/panel/make-handle-selection.js +77 -68
  348. package/dist/tree-view/panel/make-handle-typeahead.js +40 -34
  349. package/dist/tree-view/panel/panel.d.ts +1 -10
  350. package/dist/tree-view/panel/panel.js +20 -40
  351. package/dist/tree-view/panel/use-tree-navigation.js +52 -64
  352. package/dist/tree-view/root.d.ts +14 -20
  353. package/dist/tree-view/root.js +55 -53
  354. package/dist/tree-view/utils/get-focusable-nodes.js +2 -4
  355. package/dist/tree-view/utils/get-focused-node.js +11 -11
  356. package/dist/tree-view/utils/get-ids-between-nodes.d.ts +1 -5
  357. package/dist/tree-view/utils/get-ids-between-nodes.js +11 -10
  358. package/dist/tree-view/utils/get-panel.js +5 -5
  359. package/dist/tree-view/utils/get-parent-node.js +7 -6
  360. package/dist/tree-view/utils/get-sibling-branches.js +10 -8
  361. package/dist/tree-view/utils/get-tree-node-id.js +1 -1
  362. package/dist/tree-view/utils/is-branch-node.js +1 -1
  363. package/dist/tree-view/utils/is-leaf-node.js +1 -1
  364. package/dist/tree-view/utils/is-tree-node-disabled.js +1 -1
  365. package/dist/tree-view/utils/select-node.d.ts +1 -5
  366. package/dist/tree-view/utils/select-node.js +11 -8
  367. package/dist/tree-view/utils/toggle-all-selections.js +6 -4
  368. package/dist/tree-view/utils/toggle-selection.js +18 -15
  369. package/dist/tree-view/virtualized/force-sync-scrolling.d.ts +1 -3
  370. package/dist/tree-view/virtualized/force-sync-scrolling.js +18 -24
  371. package/dist/tree-view/virtualized/get-virtual-tree-paths.d.ts +1 -3
  372. package/dist/tree-view/virtualized/get-virtual-tree-paths.js +12 -11
  373. package/dist/tree-view/virtualized/make-virtual-tree.d.ts +21 -26
  374. package/dist/tree-view/virtualized/make-virtual-tree.js +85 -79
  375. package/dist/tree-view/virtualized/use-flattened-tree.d.ts +8 -17
  376. package/dist/tree-view/virtualized/use-flattened-tree.js +31 -30
  377. package/dist/tree-view/virtualized/use-row-start-and-end.d.ts +1 -6
  378. package/dist/tree-view/virtualized/use-row-start-and-end.js +23 -21
  379. package/dist/tree-view/virtualized/use-virtualized-tree.d.ts +15 -21
  380. package/dist/tree-view/virtualized/use-virtualized-tree.js +90 -103
  381. package/dist/utils/cycle-sorts.js +14 -12
  382. package/dist/viewport/begin-editing.d.ts +2 -6
  383. package/dist/viewport/begin-editing.js +13 -9
  384. package/dist/viewport/viewport.d.ts +1 -10
  385. package/dist/viewport/viewport.js +70 -93
  386. package/package.json +7 -7
@@ -2,13 +2,7 @@ import { Fragment as _Fragment, jsx as _jsx } from "react/jsx-runtime";
2
2
  import { useEffect } from "react";
3
3
  import { useGridRoot } from "../context";
4
4
  import { useEdgeScroll } from "./use-edge-scroll";
5
- import {
6
- equal,
7
- getClientX,
8
- getClientY,
9
- getRelativeXPosition,
10
- getRelativeYPosition,
11
- } from "@1771technologies/lytenyte-js-utils";
5
+ import { equal, getClientX, getClientY, getRelativeXPosition, getRelativeYPosition, } from "@1771technologies/lytenyte-js-utils";
12
6
  import { getNearestFocusable, getPositionFromFocusable } from "@1771technologies/lytenyte-shared";
13
7
  import { isHTMLElement } from "@1771technologies/lytenyte-dom-utils";
14
8
  import { updateAdditiveCellSelection } from "./update-additive-cell-selection";
@@ -19,250 +13,268 @@ import { expandCellSelectionEnd } from "./expand-cell-selection-end";
19
13
  import { expandCellSelectionDown } from "./expand-cell-selection-down";
20
14
  import { expandCellSelectionUp } from "./expand-cell-selection-up";
21
15
  function isNormalClick(event) {
22
- return event.button === 0 && !event.altKey;
16
+ return event.button === 0 && !event.altKey;
23
17
  }
24
18
  export function CellSelectionDriver() {
25
- const cx = useGridRoot();
26
- const grid = cx.grid;
27
- const viewport = cx.grid.state.viewport.useValue();
28
- const mode = cx.grid.state.cellSelectionMode.useValue();
29
- const { cancelX, cancelY, edgeScrollX, edgeScrollY } = useEdgeScroll(cx.grid);
30
- useEffect(() => {
31
- if (!viewport || mode === "none") return;
32
- const isMultiRange = mode === "multi-range";
33
- let isAdditive = false;
34
- let startSelection = null;
35
- let pointerStartX = 0;
36
- let pointerStartY = 0;
37
- let lastRect = null;
38
- let animFrame = null;
39
- const pointerMove = (event) => {
40
- if (animFrame) cancelAnimationFrame(animFrame);
41
- animFrame = requestAnimationFrame(() => {
42
- animFrame = null;
43
- const clientX = getClientX(event);
44
- const clientY = getClientY(event);
45
- const target = event.target;
46
- if (!isHTMLElement(target)) return;
47
- const focusable = getNearestFocusable(target);
48
- if (!focusable) return;
49
- const position = getPositionFromFocusable(focusable);
50
- if (position.kind !== "cell" && position.kind !== "full-width") return;
51
- const rowIndex = position.rowIndex;
52
- const columnIndex = position.colIndex;
53
- if (pointerStartX != null && pointerStartY != null) {
54
- const moveDeltaX = Math.abs(pointerStartX - clientX);
55
- const moveDeltaY = Math.abs(pointerStartY - clientY);
56
- if (moveDeltaX < 20 && moveDeltaY < 20) return;
57
- pointerStartX = null;
58
- pointerStartY = null;
59
- }
60
- if (!startSelection) return;
61
- const meta = grid.state.columnMeta.get();
62
- const startCount = meta.columnVisibleStartCount;
63
- const firstEnd = meta.columnVisibleCenterCount + startCount;
64
- const ds = grid.state.rowDataStore;
65
- const topCount = ds.rowTopCount.get();
66
- const centerCount = ds.rowCenterCount.get();
67
- const firstEndRow = centerCount + topCount;
68
- const relativeX = getRelativeXPosition(viewport, clientX);
69
- const isRtl = grid.state.rtl.get();
70
- const visualX = isRtl ? relativeX.right : relativeX.left;
71
- const startColSection =
72
- startSelection.columnStart < startCount
73
- ? "start"
74
- : startSelection.columnStart >= firstEnd
75
- ? "end"
76
- : "center";
77
- const colSection =
78
- columnIndex < startCount ? "start" : columnIndex >= firstEnd ? "end" : "center";
79
- const rowSection = rowIndex < topCount ? "top" : rowIndex >= firstEnd ? "bottom" : "center";
80
- const startRowSection =
81
- startSelection.rowStart < topCount
82
- ? "top"
83
- : startSelection.rowStart >= firstEndRow
84
- ? "bottom"
85
- : "center";
86
- const isSameColPin = startColSection === colSection;
87
- const isSameRowPin = startRowSection === rowSection;
88
- edgeScrollX(visualX, isRtl);
89
- const relativeY = getRelativeYPosition(viewport, clientY);
90
- edgeScrollY(relativeY.top);
91
- const scrollY = viewport.scrollTop;
92
- if (!isSameRowPin && rowIndex < topCount && scrollY > 0) return;
93
- const maxScroll = viewport.scrollHeight - viewport.clientHeight - 4;
94
- if (!isSameRowPin && rowIndex > topCount + centerCount - 1 && scrollY < maxScroll) return;
95
- const scrollX = Math.abs(viewport.scrollLeft);
96
- if (!isSameColPin && columnIndex < startCount && scrollX > 0) return;
97
- const maxScrollX = viewport.scrollWidth - viewport.clientWidth - 4;
98
- if (!isSameColPin && columnIndex >= firstEnd && scrollX < maxScrollX) return;
99
- const startRow = rowIndex < startSelection.rowStart ? rowIndex : startSelection.rowStart;
100
- const endRow = rowIndex < startSelection.rowStart ? startSelection.rowEnd : rowIndex + 1;
101
- const startCol =
102
- columnIndex < startSelection.columnStart ? columnIndex : startSelection.columnStart;
103
- const endCol =
104
- columnIndex < startSelection.columnStart ? startSelection.columnEnd : columnIndex + 1;
105
- const active = [
106
- { rowStart: startRow, rowEnd: endRow, columnStart: startCol, columnEnd: endCol },
107
- ];
108
- if (isAdditive) {
109
- updateAdditiveCellSelection(grid, active[0]);
110
- } else {
111
- grid.state.cellSelections.set(active);
112
- }
113
- lastRect = active[0];
114
- });
115
- };
116
- const pointerDown = (event) => {
117
- if (!isNormalClick(event)) {
118
- document.removeEventListener("pointermove", pointerMove);
119
- event.preventDefault();
120
- return;
121
- }
122
- isAdditive = isMultiRange && (event.ctrlKey || event.metaKey);
123
- const target = event.target;
124
- if (!isHTMLElement(target)) return;
125
- const focusable = getNearestFocusable(target);
126
- if (!focusable) return;
127
- const position = getPositionFromFocusable(focusable);
128
- if (position.kind !== "cell" && position.kind !== "full-width") return;
129
- const rowIndex = position.rowIndex;
130
- const columnIndex = position.colIndex;
131
- // If the columnIndex or rowIndex is null then we haven't clicked a valid cell position.
132
- // This ends the row selection.
133
- if (columnIndex == null || rowIndex == null) {
134
- grid.state.cellSelections.set([]);
135
- grid.internal.cellSelectionPivot.set(null);
136
- return;
137
- }
138
- const isSelected = grid.state.cellSelections
139
- .get()
140
- .some((c) => isWithinSelectionRect(c, rowIndex, columnIndex));
141
- const isDeselect = isAdditive && isSelected;
142
- pointerStartX = event.clientX;
143
- pointerStartY = event.clientY;
144
- startSelection = {
145
- columnStart: columnIndex,
146
- columnEnd: columnIndex + 1,
147
- rowStart: rowIndex,
148
- rowEnd: rowIndex + 1,
149
- };
150
- // If shift key down we select an area. We can only select an area if a pivot has been established.
151
- // The pivot will always expand the last cell selection rect if there are multiple ones.
152
- const pivot = grid.internal.cellSelectionPivot.get();
153
- if (event.shiftKey && pivot) {
154
- const active = { ...pivot };
155
- active.columnStart = Math.min(columnIndex, active.columnStart);
156
- active.columnEnd = Math.max(columnIndex + 1, active.columnEnd);
157
- active.rowStart = Math.min(rowIndex, active.rowStart);
158
- active.rowEnd = Math.max(rowIndex + 1, active.rowEnd);
159
- grid.state.cellSelections.set([active]);
160
- // We need to prevent the default otherwise the cell to go to will be
161
- // focused. This leads to awkward behavior around the cell selection pivot
162
- event.preventDefault();
163
- return;
164
- }
165
- // We need to prevent the default for multi
166
- if (mode === "multi-range" && (event.metaKey || event.ctrlKey)) {
167
- event.preventDefault();
168
- }
169
- if (!isDeselect && grid.state.cellSelections.get().length <= 1)
170
- grid.internal.cellSelectionPivot.set(startSelection);
171
- grid.internal.cellSelectionIsDeselect.set(isDeselect);
172
- if (isAdditive) {
173
- updateAdditiveCellSelection(grid, startSelection);
174
- } else {
175
- grid.state.cellSelections.set([startSelection]);
176
- }
177
- lastRect = startSelection;
178
- document.addEventListener("pointermove", pointerMove);
179
- document.addEventListener("contextmenu", pointerUp);
180
- document.addEventListener("pointerup", pointerUp);
181
- };
182
- const pointerUp = () => {
183
- startSelection = null;
184
- if (isAdditive) {
185
- const isDeselect = grid.internal.cellSelectionIsDeselect.get();
186
- const rects = isDeselect
187
- ? grid.state.cellSelections.get().flatMap((r) => deselectRectRange(r, lastRect))
188
- : [...grid.state.cellSelections.get(), lastRect];
189
- grid.state.cellSelections.set(rects);
190
- grid.internal.cellSelectionAdditiveRects.set(null);
191
- grid.internal.cellSelectionIsDeselect.set(false);
192
- isAdditive = false;
193
- }
194
- cancelX();
195
- cancelY();
196
- document.removeEventListener("pointerup", pointerUp);
197
- document.removeEventListener("contextmenu", pointerUp);
198
- document.removeEventListener("pointermove", pointerMove);
199
- };
200
- viewport.addEventListener("pointerdown", pointerDown);
201
- const handleKey = (ev) => {
202
- const rtl = grid.state.rtl.get();
203
- const start = rtl ? "ArrowRight" : "ArrowLeft";
204
- const end = rtl ? "ArrowLeft" : "ArrowRight";
205
- if (!ev.shiftKey) return;
206
- let handled = false;
207
- if (ev.key === start) {
208
- expandCellSelectionStart(grid, ev.ctrlKey || ev.metaKey);
209
- handled = true;
210
- } else if (ev.key === end) {
211
- expandCellSelectionEnd(grid, ev.ctrlKey || ev.metaKey);
212
- handled = true;
213
- } else if (ev.key === "ArrowDown") {
214
- expandCellSelectionDown(grid, ev.ctrlKey || ev.metaKey);
215
- handled = true;
216
- } else if (ev.key === "ArrowUp") {
217
- expandCellSelectionUp(grid, ev.ctrlKey || ev.metaKey);
218
- handled = true;
219
- }
220
- if (handled) {
221
- ev.preventDefault();
222
- ev.stopPropagation();
223
- }
224
- };
225
- viewport.addEventListener("keydown", handleKey);
226
- return () => {
227
- viewport.removeEventListener("pointerdown", pointerDown);
228
- viewport.removeEventListener("keydown", handleKey);
229
- };
230
- }, [cancelX, cancelY, edgeScrollX, edgeScrollY, grid, mode, viewport]);
231
- useEffect(() => {
232
- let prev = null;
233
- return grid.internal.focusActive.watch(() => {
234
- const focus = grid.internal.focusActive.get();
235
- // If the focus is null, then we should just return. This keeps the existing selection
236
- // in place - for things like copy and paste.
237
- if (!focus) return;
238
- if (equal(prev, focus)) return;
239
- prev = focus;
240
- if (focus?.kind !== "cell" && focus?.kind !== "full-width") {
241
- grid.state.cellSelections.set([]);
242
- grid.internal.cellSelectionPivot.set(null);
243
- grid.internal.cellSelectionAdditiveRects.set([]);
244
- } else {
245
- grid.state.cellSelections.set([
246
- {
247
- rowStart: focus.rowIndex,
248
- rowEnd: focus.rowIndex + 1,
249
- columnStart: focus.colIndex,
250
- columnEnd: focus.colIndex + 1,
251
- },
252
- ]);
253
- grid.internal.cellSelectionPivot.set({
254
- rowStart: focus.rowIndex,
255
- rowEnd: focus.rowIndex + 1,
256
- columnStart: focus.colIndex,
257
- columnEnd: focus.colIndex + 1,
19
+ const cx = useGridRoot();
20
+ const grid = cx.grid;
21
+ const viewport = cx.grid.state.viewport.useValue();
22
+ const mode = cx.grid.state.cellSelectionMode.useValue();
23
+ const { cancelX, cancelY, edgeScrollX, edgeScrollY } = useEdgeScroll(cx.grid);
24
+ useEffect(() => {
25
+ if (!viewport || mode === "none")
26
+ return;
27
+ const isMultiRange = mode === "multi-range";
28
+ let isAdditive = false;
29
+ let startSelection = null;
30
+ let pointerStartX = 0;
31
+ let pointerStartY = 0;
32
+ let lastRect = null;
33
+ let animFrame = null;
34
+ const pointerMove = (event) => {
35
+ if (animFrame)
36
+ cancelAnimationFrame(animFrame);
37
+ animFrame = requestAnimationFrame(() => {
38
+ animFrame = null;
39
+ const clientX = getClientX(event);
40
+ const clientY = getClientY(event);
41
+ const target = event.target;
42
+ if (!isHTMLElement(target))
43
+ return;
44
+ const focusable = getNearestFocusable(target);
45
+ if (!focusable)
46
+ return;
47
+ const position = getPositionFromFocusable(focusable);
48
+ if (position.kind !== "cell" && position.kind !== "full-width")
49
+ return;
50
+ const rowIndex = position.rowIndex;
51
+ const columnIndex = position.colIndex;
52
+ if (pointerStartX != null && pointerStartY != null) {
53
+ const moveDeltaX = Math.abs(pointerStartX - clientX);
54
+ const moveDeltaY = Math.abs(pointerStartY - clientY);
55
+ if (moveDeltaX < 20 && moveDeltaY < 20)
56
+ return;
57
+ pointerStartX = null;
58
+ pointerStartY = null;
59
+ }
60
+ if (!startSelection)
61
+ return;
62
+ const meta = grid.state.columnMeta.get();
63
+ const startCount = meta.columnVisibleStartCount;
64
+ const firstEnd = meta.columnVisibleCenterCount + startCount;
65
+ const ds = grid.state.rowDataStore;
66
+ const topCount = ds.rowTopCount.get();
67
+ const centerCount = ds.rowCenterCount.get();
68
+ const firstEndRow = centerCount + topCount;
69
+ const relativeX = getRelativeXPosition(viewport, clientX);
70
+ const isRtl = grid.state.rtl.get();
71
+ const visualX = isRtl ? relativeX.right : relativeX.left;
72
+ const startColSection = startSelection.columnStart < startCount
73
+ ? "start"
74
+ : startSelection.columnStart >= firstEnd
75
+ ? "end"
76
+ : "center";
77
+ const colSection = columnIndex < startCount ? "start" : columnIndex >= firstEnd ? "end" : "center";
78
+ const rowSection = rowIndex < topCount ? "top" : rowIndex >= firstEnd ? "bottom" : "center";
79
+ const startRowSection = startSelection.rowStart < topCount
80
+ ? "top"
81
+ : startSelection.rowStart >= firstEndRow
82
+ ? "bottom"
83
+ : "center";
84
+ const isSameColPin = startColSection === colSection;
85
+ const isSameRowPin = startRowSection === rowSection;
86
+ edgeScrollX(visualX, isRtl);
87
+ const relativeY = getRelativeYPosition(viewport, clientY);
88
+ edgeScrollY(relativeY.top);
89
+ const scrollY = viewport.scrollTop;
90
+ if (!isSameRowPin && rowIndex < topCount && scrollY > 0)
91
+ return;
92
+ const maxScroll = viewport.scrollHeight - viewport.clientHeight - 4;
93
+ if (!isSameRowPin && rowIndex > topCount + centerCount - 1 && scrollY < maxScroll)
94
+ return;
95
+ const scrollX = Math.abs(viewport.scrollLeft);
96
+ if (!isSameColPin && columnIndex < startCount && scrollX > 0)
97
+ return;
98
+ const maxScrollX = viewport.scrollWidth - viewport.clientWidth - 4;
99
+ if (!isSameColPin && columnIndex >= firstEnd && scrollX < maxScrollX)
100
+ return;
101
+ const startRow = rowIndex < startSelection.rowStart ? rowIndex : startSelection.rowStart;
102
+ const endRow = rowIndex < startSelection.rowStart ? startSelection.rowEnd : rowIndex + 1;
103
+ const startCol = columnIndex < startSelection.columnStart ? columnIndex : startSelection.columnStart;
104
+ const endCol = columnIndex < startSelection.columnStart ? startSelection.columnEnd : columnIndex + 1;
105
+ const active = [
106
+ { rowStart: startRow, rowEnd: endRow, columnStart: startCol, columnEnd: endCol },
107
+ ];
108
+ if (isAdditive) {
109
+ updateAdditiveCellSelection(grid, active[0]);
110
+ }
111
+ else {
112
+ grid.state.cellSelections.set(active);
113
+ }
114
+ lastRect = active[0];
115
+ });
116
+ };
117
+ const pointerDown = (event) => {
118
+ if (!isNormalClick(event)) {
119
+ document.removeEventListener("pointermove", pointerMove);
120
+ event.preventDefault();
121
+ return;
122
+ }
123
+ isAdditive = isMultiRange && (event.ctrlKey || event.metaKey);
124
+ const target = event.target;
125
+ if (!isHTMLElement(target))
126
+ return;
127
+ const focusable = getNearestFocusable(target);
128
+ if (!focusable)
129
+ return;
130
+ const position = getPositionFromFocusable(focusable);
131
+ if (position.kind !== "cell" && position.kind !== "full-width")
132
+ return;
133
+ const rowIndex = position.rowIndex;
134
+ const columnIndex = position.colIndex;
135
+ // If the columnIndex or rowIndex is null then we haven't clicked a valid cell position.
136
+ // This ends the row selection.
137
+ if (columnIndex == null || rowIndex == null) {
138
+ grid.state.cellSelections.set([]);
139
+ grid.internal.cellSelectionPivot.set(null);
140
+ return;
141
+ }
142
+ const isSelected = grid.state.cellSelections
143
+ .get()
144
+ .some((c) => isWithinSelectionRect(c, rowIndex, columnIndex));
145
+ const isDeselect = isAdditive && isSelected;
146
+ pointerStartX = event.clientX;
147
+ pointerStartY = event.clientY;
148
+ startSelection = {
149
+ columnStart: columnIndex,
150
+ columnEnd: columnIndex + 1,
151
+ rowStart: rowIndex,
152
+ rowEnd: rowIndex + 1,
153
+ };
154
+ // If shift key down we select an area. We can only select an area if a pivot has been established.
155
+ // The pivot will always expand the last cell selection rect if there are multiple ones.
156
+ const pivot = grid.internal.cellSelectionPivot.get();
157
+ if (event.shiftKey && pivot) {
158
+ const active = { ...pivot };
159
+ active.columnStart = Math.min(columnIndex, active.columnStart);
160
+ active.columnEnd = Math.max(columnIndex + 1, active.columnEnd);
161
+ active.rowStart = Math.min(rowIndex, active.rowStart);
162
+ active.rowEnd = Math.max(rowIndex + 1, active.rowEnd);
163
+ grid.state.cellSelections.set([active]);
164
+ // We need to prevent the default otherwise the cell to go to will be
165
+ // focused. This leads to awkward behavior around the cell selection pivot
166
+ event.preventDefault();
167
+ return;
168
+ }
169
+ // We need to prevent the default for multi
170
+ if (mode === "multi-range" && (event.metaKey || event.ctrlKey)) {
171
+ event.preventDefault();
172
+ }
173
+ if (!isDeselect && grid.state.cellSelections.get().length <= 1)
174
+ grid.internal.cellSelectionPivot.set(startSelection);
175
+ grid.internal.cellSelectionIsDeselect.set(isDeselect);
176
+ if (isAdditive) {
177
+ updateAdditiveCellSelection(grid, startSelection);
178
+ }
179
+ else {
180
+ grid.state.cellSelections.set([startSelection]);
181
+ }
182
+ lastRect = startSelection;
183
+ document.addEventListener("pointermove", pointerMove);
184
+ document.addEventListener("contextmenu", pointerUp);
185
+ document.addEventListener("pointerup", pointerUp);
186
+ };
187
+ const pointerUp = () => {
188
+ startSelection = null;
189
+ if (isAdditive) {
190
+ const isDeselect = grid.internal.cellSelectionIsDeselect.get();
191
+ const rects = isDeselect
192
+ ? grid.state.cellSelections.get().flatMap((r) => deselectRectRange(r, lastRect))
193
+ : [...grid.state.cellSelections.get(), lastRect];
194
+ grid.state.cellSelections.set(rects);
195
+ grid.internal.cellSelectionAdditiveRects.set(null);
196
+ grid.internal.cellSelectionIsDeselect.set(false);
197
+ isAdditive = false;
198
+ }
199
+ cancelX();
200
+ cancelY();
201
+ document.removeEventListener("pointerup", pointerUp);
202
+ document.removeEventListener("contextmenu", pointerUp);
203
+ document.removeEventListener("pointermove", pointerMove);
204
+ };
205
+ viewport.addEventListener("pointerdown", pointerDown);
206
+ const handleKey = (ev) => {
207
+ const rtl = grid.state.rtl.get();
208
+ const start = rtl ? "ArrowRight" : "ArrowLeft";
209
+ const end = rtl ? "ArrowLeft" : "ArrowRight";
210
+ if (!ev.shiftKey)
211
+ return;
212
+ let handled = false;
213
+ if (ev.key === start) {
214
+ expandCellSelectionStart(grid, ev.ctrlKey || ev.metaKey);
215
+ handled = true;
216
+ }
217
+ else if (ev.key === end) {
218
+ expandCellSelectionEnd(grid, ev.ctrlKey || ev.metaKey);
219
+ handled = true;
220
+ }
221
+ else if (ev.key === "ArrowDown") {
222
+ expandCellSelectionDown(grid, ev.ctrlKey || ev.metaKey);
223
+ handled = true;
224
+ }
225
+ else if (ev.key === "ArrowUp") {
226
+ expandCellSelectionUp(grid, ev.ctrlKey || ev.metaKey);
227
+ handled = true;
228
+ }
229
+ if (handled) {
230
+ ev.preventDefault();
231
+ ev.stopPropagation();
232
+ }
233
+ };
234
+ viewport.addEventListener("keydown", handleKey);
235
+ return () => {
236
+ viewport.removeEventListener("pointerdown", pointerDown);
237
+ viewport.removeEventListener("keydown", handleKey);
238
+ };
239
+ }, [cancelX, cancelY, edgeScrollX, edgeScrollY, grid, mode, viewport]);
240
+ useEffect(() => {
241
+ let prev = null;
242
+ return grid.internal.focusActive.watch(() => {
243
+ const focus = grid.internal.focusActive.get();
244
+ // If the focus is null, then we should just return. This keeps the existing selection
245
+ // in place - for things like copy and paste.
246
+ if (!focus)
247
+ return;
248
+ if (equal(prev, focus))
249
+ return;
250
+ prev = focus;
251
+ if (focus?.kind !== "cell" && focus?.kind !== "full-width") {
252
+ grid.state.cellSelections.set([]);
253
+ grid.internal.cellSelectionPivot.set(null);
254
+ grid.internal.cellSelectionAdditiveRects.set([]);
255
+ }
256
+ else {
257
+ grid.state.cellSelections.set([
258
+ {
259
+ rowStart: focus.rowIndex,
260
+ rowEnd: focus.rowIndex + 1,
261
+ columnStart: focus.colIndex,
262
+ columnEnd: focus.colIndex + 1,
263
+ },
264
+ ]);
265
+ grid.internal.cellSelectionPivot.set({
266
+ rowStart: focus.rowIndex,
267
+ rowEnd: focus.rowIndex + 1,
268
+ columnStart: focus.colIndex,
269
+ columnEnd: focus.colIndex + 1,
270
+ });
271
+ }
258
272
  });
259
- }
260
- });
261
- }, [
262
- grid.internal.cellSelectionAdditiveRects,
263
- grid.internal.cellSelectionPivot,
264
- grid.internal.focusActive,
265
- grid.state.cellSelections,
266
- ]);
267
- return _jsx(_Fragment, {});
273
+ }, [
274
+ grid.internal.cellSelectionAdditiveRects,
275
+ grid.internal.cellSelectionPivot,
276
+ grid.internal.focusActive,
277
+ grid.state.cellSelections,
278
+ ]);
279
+ return _jsx(_Fragment, {});
268
280
  }
@@ -1,14 +1,8 @@
1
1
  import type { DataRect } from "../+types";
2
- export declare function CellStyleRow({
3
- rect,
4
- isRowPinnedTop,
5
- isDeselect,
6
- isRowPinnedBottom,
7
- isPivot,
8
- }: {
9
- rect: DataRect;
10
- isRowPinnedTop?: boolean;
11
- isDeselect?: boolean;
12
- isRowPinnedBottom?: boolean;
13
- isPivot?: boolean;
2
+ export declare function CellStyleRow({ rect, isRowPinnedTop, isDeselect, isRowPinnedBottom, isPivot, }: {
3
+ rect: DataRect;
4
+ isRowPinnedTop?: boolean;
5
+ isDeselect?: boolean;
6
+ isRowPinnedBottom?: boolean;
7
+ isPivot?: boolean;
14
8
  }): import("react/jsx-runtime").JSX.Element;