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

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 +4203 -4009
  2. package/dist/cell-selection/adjust-rect-for-row-and-cell-span.js +38 -38
  3. package/dist/cell-selection/are-rects-equal.js +6 -4
  4. package/dist/cell-selection/bound-selection-rect.js +14 -14
  5. package/dist/cell-selection/cell-selection-containers.js +108 -78
  6. package/dist/cell-selection/cell-selection-driver.js +250 -262
  7. package/dist/cell-selection/cell-style-row.d.ts +12 -6
  8. package/dist/cell-selection/cell-style-row.js +82 -79
  9. package/dist/cell-selection/deselect-rect-range.js +41 -40
  10. package/dist/cell-selection/expand-cell-selection-down.d.ts +5 -2
  11. package/dist/cell-selection/expand-cell-selection-down.js +29 -33
  12. package/dist/cell-selection/expand-cell-selection-end.d.ts +5 -2
  13. package/dist/cell-selection/expand-cell-selection-end.js +30 -34
  14. package/dist/cell-selection/expand-cell-selection-start.d.ts +5 -2
  15. package/dist/cell-selection/expand-cell-selection-start.js +29 -33
  16. package/dist/cell-selection/expand-cell-selection-up.d.ts +5 -2
  17. package/dist/cell-selection/expand-cell-selection-up.js +29 -33
  18. package/dist/cell-selection/full-width-start-end-index.js +3 -3
  19. package/dist/cell-selection/get-root-cell.d.ts +5 -1
  20. package/dist/cell-selection/get-root-cell.js +77 -79
  21. package/dist/cell-selection/is-bottom-rect.js +5 -5
  22. package/dist/cell-selection/is-center-col-rect.d.ts +5 -2
  23. package/dist/cell-selection/is-center-col-rect.js +5 -3
  24. package/dist/cell-selection/is-center-rect.js +3 -3
  25. package/dist/cell-selection/is-end-rect.d.ts +5 -2
  26. package/dist/cell-selection/is-end-rect.js +2 -2
  27. package/dist/cell-selection/is-overlapping-rect.js +6 -4
  28. package/dist/cell-selection/is-start-rect.d.ts +5 -2
  29. package/dist/cell-selection/is-start-rect.js +2 -2
  30. package/dist/cell-selection/is-top-rect.js +2 -2
  31. package/dist/cell-selection/is-within-selection-rect.js +1 -1
  32. package/dist/cell-selection/split-cell-selection-rect.d.ts +12 -6
  33. package/dist/cell-selection/split-cell-selection-rect.js +53 -47
  34. package/dist/cell-selection/update-additive-cell-selection.d.ts +5 -2
  35. package/dist/cell-selection/update-additive-cell-selection.js +16 -17
  36. package/dist/cell-selection/use-edge-scroll.d.ts +8 -6
  37. package/dist/cell-selection/use-edge-scroll.js +65 -63
  38. package/dist/cells/cell-default.d.ts +5 -1
  39. package/dist/cells/cell-default.js +5 -5
  40. package/dist/cells/cell-editor.d.ts +4 -2
  41. package/dist/cells/cell-editor.js +129 -92
  42. package/dist/cells/cell.d.ts +16 -3
  43. package/dist/cells/cell.js +56 -27
  44. package/dist/column-manager/branch-lookup-context.d.ts +3 -1
  45. package/dist/column-manager/branch.d.ts +17 -9
  46. package/dist/column-manager/branch.js +64 -46
  47. package/dist/column-manager/column-manager.d.ts +57 -8
  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 +10 -2
  51. package/dist/column-manager/label.js +11 -12
  52. package/dist/column-manager/leaf.d.ts +10 -2
  53. package/dist/column-manager/leaf.js +61 -49
  54. package/dist/column-manager/move-handle.d.ts +14 -6
  55. package/dist/column-manager/move-handle.js +52 -48
  56. package/dist/column-manager/panel.d.ts +10 -1
  57. package/dist/column-manager/root.d.ts +7 -3
  58. package/dist/column-manager/root.js +4 -1
  59. package/dist/column-manager/use-column-manager.d.ts +6 -3
  60. package/dist/column-manager/use-column-manager.js +14 -15
  61. package/dist/column-manager/use-columns-from-context.d.ts +3 -1
  62. package/dist/column-manager/use-columns-from-context.js +18 -18
  63. package/dist/column-manager/visibility-checkbox.d.ts +14 -6
  64. package/dist/column-manager/visibility-checkbox.js +36 -23
  65. package/dist/context.d.ts +4 -4
  66. package/dist/filter-tree/branch.d.ts +16 -5
  67. package/dist/filter-tree/branch.js +23 -13
  68. package/dist/filter-tree/context.d.ts +16 -16
  69. package/dist/filter-tree/filter-tree.d.ts +49 -8
  70. package/dist/filter-tree/filter-tree.js +8 -8
  71. package/dist/filter-tree/hooks/use-filter-tree.d.ts +35 -29
  72. package/dist/filter-tree/hooks/use-filter-tree.js +94 -92
  73. package/dist/filter-tree/hooks/use-tree-item.d.ts +4 -4
  74. package/dist/filter-tree/hooks/use-tree-item.js +99 -106
  75. package/dist/filter-tree/inclusion-checkbox.d.ts +14 -6
  76. package/dist/filter-tree/inclusion-checkbox.js +19 -9
  77. package/dist/filter-tree/label.d.ts +10 -2
  78. package/dist/filter-tree/label.js +11 -12
  79. package/dist/filter-tree/leaf.d.ts +10 -2
  80. package/dist/filter-tree/leaf.js +15 -5
  81. package/dist/filter-tree/root.d.ts +23 -7
  82. package/dist/filter-tree/root.js +51 -23
  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 +26 -6
  86. package/dist/grid-box/grid-box.js +6 -6
  87. package/dist/grid-box/item.d.ts +13 -5
  88. package/dist/grid-box/item.js +73 -56
  89. package/dist/grid-box/panel.d.ts +13 -1
  90. package/dist/grid-box/panel.js +9 -2
  91. package/dist/grid-box/root.d.ts +11 -5
  92. package/dist/grid-box/root.js +11 -2
  93. package/dist/grid-box/use-aggregation-box-items.d.ts +16 -13
  94. package/dist/grid-box/use-aggregation-box-items.js +56 -57
  95. package/dist/grid-box/use-column-box-items.d.ts +33 -23
  96. package/dist/grid-box/use-column-box-items.js +87 -75
  97. package/dist/grid-box/use-row-group-box-items.d.ts +17 -12
  98. package/dist/grid-box/use-row-group-box-items.js +120 -123
  99. package/dist/grid-provider/context.d.ts +4 -2
  100. package/dist/grid-provider/provider.d.ts +4 -2
  101. package/dist/grid-provider/use-grid.d.ts +1 -1
  102. package/dist/grid.d.ts +126 -14
  103. package/dist/grid.js +14 -14
  104. package/dist/header/header-cell.d.ts +13 -5
  105. package/dist/header/header-cell.js +41 -15
  106. package/dist/header/header-group-cell.d.ts +10 -2
  107. package/dist/header/header-group-cell.js +26 -8
  108. package/dist/header/header-row.d.ts +10 -2
  109. package/dist/header/header-row.js +2 -2
  110. package/dist/header/header.d.ts +10 -1
  111. package/dist/header/header.js +11 -2
  112. package/dist/header/resize-handler.d.ts +15 -6
  113. package/dist/header/resize-handler.js +131 -122
  114. package/dist/header/use-drag-move.d.ts +22 -11
  115. package/dist/header/use-drag-move.js +95 -94
  116. package/dist/header/use-header-cell-renderer.d.ts +9 -2
  117. package/dist/header/use-header-cell-renderer.js +25 -29
  118. package/dist/icons/index.d.ts +92 -1
  119. package/dist/icons/index.js +92 -1
  120. package/dist/index.d.ts +22 -5
  121. package/dist/index.js +22 -5
  122. package/dist/license.js +174 -174
  123. package/dist/listbox/context.d.ts +2 -2
  124. package/dist/listbox/item.d.ts +10 -1
  125. package/dist/listbox/item.js +23 -19
  126. package/dist/listbox/panel.d.ts +10 -1
  127. package/dist/listbox/panel.js +69 -43
  128. package/dist/listbox/root.d.ts +5 -3
  129. package/dist/listbox/root.js +7 -7
  130. package/dist/root/dialog-driver.js +22 -16
  131. package/dist/root/popover-driver.js +27 -16
  132. package/dist/root/root.d.ts +7 -3
  133. package/dist/root/root.js +111 -107
  134. package/dist/row-data-source-client/+types.d.ts +17 -17
  135. package/dist/row-data-source-client/built-ins/avg.js +3 -4
  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 +3 -5
  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 +9 -13
  143. package/dist/row-data-source-client/built-ins/min.js +9 -13
  144. package/dist/row-data-source-client/built-ins/sum.js +8 -10
  145. package/dist/row-data-source-client/filter/+types.d.ts +35 -13
  146. package/dist/row-data-source-client/filter/compute-filtered-rows.d.ts +16 -2
  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 +8 -4
  149. package/dist/row-data-source-client/pivots/create-agg-model.js +8 -9
  150. package/dist/row-data-source-client/pivots/create-pivot-columns-from-paths.d.ts +6 -1
  151. package/dist/row-data-source-client/pivots/create-pivot-columns-from-paths.js +42 -46
  152. package/dist/row-data-source-client/pivots/create-pivot-columns.d.ts +6 -1
  153. package/dist/row-data-source-client/pivots/create-pivot-columns.js +16 -17
  154. package/dist/row-data-source-client/pivots/create-pivot-tree.d.ts +7 -1
  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 +19 -13
  157. package/dist/row-data-source-client/tree/client-tree.js +64 -67
  158. package/dist/row-data-source-client/tree/evaluator-aggregation.d.ts +4 -1
  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 +4 -1
  161. package/dist/row-data-source-client/tree/evaluator-group.js +6 -7
  162. package/dist/row-data-source-client/tree/traverse.d.ts +5 -1
  163. package/dist/row-data-source-client/tree/traverse.js +15 -18
  164. package/dist/row-data-source-client/use-client-data-source-paginated.d.ts +9 -5
  165. package/dist/row-data-source-client/use-client-data-source-paginated.js +566 -551
  166. package/dist/row-data-source-client/use-client-data-source.d.ts +9 -5
  167. package/dist/row-data-source-client/use-client-data-source.js +696 -661
  168. package/dist/row-data-source-client/use-client-tree-data-source.d.ts +9 -5
  169. package/dist/row-data-source-client/use-client-tree-data-source.js +523 -512
  170. package/dist/row-data-source-server/async-tree/+types.async-tree.d.ts +36 -33
  171. package/dist/row-data-source-server/async-tree/apply-delete-action-to-tree.d.ts +4 -1
  172. package/dist/row-data-source-server/async-tree/apply-delete-action-to-tree.js +18 -22
  173. package/dist/row-data-source-server/async-tree/apply-set-action-to-tree.d.ts +4 -1
  174. package/dist/row-data-source-server/async-tree/apply-set-action-to-tree.js +17 -25
  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 +9 -10
  177. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-fit.d.ts +4 -1
  178. package/dist/row-data-source-server/async-tree/check-set-action-item-keys-fit.js +13 -14
  179. package/dist/row-data-source-server/async-tree/check-set-action-item-kinds.js +9 -10
  180. package/dist/row-data-source-server/async-tree/get-parent-node-by-path.d.ts +4 -1
  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 +4 -1
  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 +3 -1
  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 +5 -1
  188. package/dist/row-data-source-server/async-tree/maybe-apply-resize.js +11 -14
  189. package/dist/row-data-source-server/async-tree/maybe-apply-set-action-items.d.ts +4 -1
  190. package/dist/row-data-source-server/async-tree/maybe-apply-set-action-items.js +42 -46
  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 +49 -48
  193. package/dist/row-data-source-server/use-server-data-source.d.ts +11 -2
  194. package/dist/row-data-source-server/use-server-data-source.js +688 -675
  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 +3 -4
  198. package/dist/rows/row/context.d.ts +2 -2
  199. package/dist/rows/row/row.d.ts +16 -3
  200. package/dist/rows/row/row.js +19 -4
  201. package/dist/rows/row/use-row-context-value.d.ts +5 -2
  202. package/dist/rows/row/use-row-context-value.js +23 -26
  203. package/dist/rows/row-detail-row.d.ts +4 -2
  204. package/dist/rows/row-detail-row.js +147 -124
  205. package/dist/rows/row-full-width.d.ts +12 -4
  206. package/dist/rows/row-full-width.js +35 -7
  207. package/dist/rows/rows-container.d.ts +10 -1
  208. package/dist/rows/rows-container.js +12 -3
  209. package/dist/rows/rows-sections.d.ts +30 -3
  210. package/dist/rows/rows-sections.js +42 -10
  211. package/dist/rows/scrollers/native-scroller.d.ts +3 -1
  212. package/dist/rows/scrollers/native-scroller.js +17 -13
  213. package/dist/sort-manager/+types.d.ts +14 -7
  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 +45 -49
  217. package/dist/sort-manager/hooks/use-sort-row-item.d.ts +57 -46
  218. package/dist/sort-manager/hooks/use-sort-row-item.js +126 -131
  219. package/dist/sort-manager/hooks/use-sortable-column-items.d.ts +6 -3
  220. package/dist/sort-manager/hooks/use-sortable-column-items.js +10 -10
  221. package/dist/sort-manager/root.d.ts +7 -1
  222. package/dist/sort-manager/root.js +10 -10
  223. package/dist/sort-manager/sort-add.d.ts +13 -5
  224. package/dist/sort-manager/sort-add.js +8 -8
  225. package/dist/sort-manager/sort-apply.d.ts +12 -4
  226. package/dist/sort-manager/sort-apply.js +16 -16
  227. package/dist/sort-manager/sort-cancel.d.ts +12 -4
  228. package/dist/sort-manager/sort-cancel.js +19 -19
  229. package/dist/sort-manager/sort-clear.d.ts +12 -4
  230. package/dist/sort-manager/sort-clear.js +15 -16
  231. package/dist/sort-manager/sort-column-select.d.ts +14 -6
  232. package/dist/sort-manager/sort-column-select.js +22 -14
  233. package/dist/sort-manager/sort-direction-select.d.ts +14 -6
  234. package/dist/sort-manager/sort-direction-select.js +27 -19
  235. package/dist/sort-manager/sort-manager.d.ts +93 -12
  236. package/dist/sort-manager/sort-manager.js +12 -12
  237. package/dist/sort-manager/sort-remove.d.ts +12 -4
  238. package/dist/sort-manager/sort-remove.js +8 -8
  239. package/dist/sort-manager/sort-row.d.ts +10 -2
  240. package/dist/sort-manager/sort-row.js +4 -1
  241. package/dist/sort-manager/sort-rows.d.ts +10 -1
  242. package/dist/sort-manager/sort-rows.js +1 -1
  243. package/dist/sort-manager/sort-value-select.d.ts +15 -7
  244. package/dist/sort-manager/sort-value-select.js +28 -19
  245. package/dist/sort-manager/utils/sort-item-to-sort-model.d.ts +4 -1
  246. package/dist/sort-manager/utils/sort-item-to-sort-model.js +46 -49
  247. package/dist/sort-manager/utils/sort-model-to-sort-items.d.ts +4 -1
  248. package/dist/sort-manager/utils/sort-model-to-sort-items.js +36 -44
  249. package/dist/state/+types.d.ts +43 -29
  250. package/dist/state/api/column-autosize.d.ts +4 -2
  251. package/dist/state/api/column-autosize.js +62 -63
  252. package/dist/state/api/column-by-id.js +4 -4
  253. package/dist/state/api/column-field.js +17 -20
  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 +48 -46
  258. package/dist/state/api/column-resize.js +9 -7
  259. package/dist/state/api/column-update.d.ts +4 -2
  260. package/dist/state/api/column-update.js +23 -23
  261. package/dist/state/api/dialog-frame.d.ts +8 -4
  262. package/dist/state/api/dialog-frame.js +11 -12
  263. package/dist/state/api/edit-begin.d.ts +4 -2
  264. package/dist/state/api/edit-begin.js +71 -84
  265. package/dist/state/api/edit-end.d.ts +4 -2
  266. package/dist/state/api/edit-end.js +38 -41
  267. package/dist/state/api/edit-is-cell-active.d.ts +4 -2
  268. package/dist/state/api/edit-is-cell-active.js +17 -24
  269. package/dist/state/api/edit-update.d.ts +4 -2
  270. package/dist/state/api/edit-update.js +74 -85
  271. package/dist/state/api/event-listeners.d.ts +12 -3
  272. package/dist/state/api/event-listeners.js +16 -17
  273. package/dist/state/api/export-csv.js +33 -35
  274. package/dist/state/api/export-data-rect.js +21 -21
  275. package/dist/state/api/focus-cell.d.ts +4 -2
  276. package/dist/state/api/focus-cell.js +110 -109
  277. package/dist/state/api/popover-frame.d.ts +8 -4
  278. package/dist/state/api/popover-frame.js +11 -12
  279. package/dist/state/api/position-from-element.js +5 -6
  280. package/dist/state/api/row-by-id.js +3 -3
  281. package/dist/state/api/row-by-index.js +11 -6
  282. package/dist/state/api/row-detail-is-expanded.d.ts +3 -1
  283. package/dist/state/api/row-detail-is-expanded.js +4 -4
  284. package/dist/state/api/row-detail-rendered-height.d.ts +4 -2
  285. package/dist/state/api/row-detail-rendered-height.js +10 -12
  286. package/dist/state/api/row-detail-toggle.js +26 -30
  287. package/dist/state/api/row-group-apply-expansions.d.ts +3 -1
  288. package/dist/state/api/row-group-apply-expansions.js +15 -17
  289. package/dist/state/api/row-group-column-index.d.ts +3 -1
  290. package/dist/state/api/row-group-column-index.js +14 -12
  291. package/dist/state/api/row-group-is-expanded.d.ts +3 -1
  292. package/dist/state/api/row-group-is-expanded.js +11 -13
  293. package/dist/state/api/row-group-toggle.js +5 -5
  294. package/dist/state/api/row-handle-select.d.ts +4 -2
  295. package/dist/state/api/row-handle-select.js +36 -40
  296. package/dist/state/api/row-select-all.js +14 -15
  297. package/dist/state/api/row-select.d.ts +4 -2
  298. package/dist/state/api/row-select.js +30 -33
  299. package/dist/state/api/row-selected.js +10 -11
  300. package/dist/state/api/scroll-into-view.d.ts +4 -2
  301. package/dist/state/api/scroll-into-view.js +47 -47
  302. package/dist/state/api/sort-for-column.js +6 -7
  303. package/dist/state/api/use-row-drag.js +22 -24
  304. package/dist/state/helpers/cell-row-group.d.ts +5 -1
  305. package/dist/state/helpers/cell-row-group.js +18 -16
  306. package/dist/state/helpers/column-add-row-group.d.ts +18 -7
  307. package/dist/state/helpers/column-add-row-group.js +71 -66
  308. package/dist/state/helpers/column-layout.d.ts +7 -1
  309. package/dist/state/helpers/column-layout.js +60 -60
  310. package/dist/state/helpers/column-marker.d.ts +8 -4
  311. package/dist/state/helpers/column-marker.js +38 -34
  312. package/dist/state/helpers/column-view.d.ts +21 -15
  313. package/dist/state/helpers/column-view.js +56 -32
  314. package/dist/state/helpers/edit-on-change.d.ts +18 -10
  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 +20 -10
  318. package/dist/state/helpers/get-data-rect.js +67 -62
  319. package/dist/state/helpers/get-full-width-callback.d.ts +5 -1
  320. package/dist/state/helpers/get-full-width-callback.js +5 -6
  321. package/dist/state/helpers/get-span-callback.d.ts +6 -1
  322. package/dist/state/helpers/get-span-callback.js +15 -18
  323. package/dist/state/helpers/resolve-column.d.ts +6 -2
  324. package/dist/state/helpers/resolve-column.js +23 -23
  325. package/dist/state/helpers/row-layout/get-focus-criteria.d.ts +15 -12
  326. package/dist/state/helpers/row-layout/get-focus-criteria.js +57 -56
  327. package/dist/state/helpers/row-layout/row-layout.d.ts +15 -9
  328. package/dist/state/helpers/row-layout/row-layout.js +387 -401
  329. package/dist/state/use-lytenyte.js +567 -528
  330. package/dist/tree-view/branch/branch.d.ts +19 -11
  331. package/dist/tree-view/branch/branch.js +106 -54
  332. package/dist/tree-view/branch/use-branch-keys.d.ts +5 -1
  333. package/dist/tree-view/branch/use-branch-keys.js +71 -74
  334. package/dist/tree-view/context.d.ts +21 -17
  335. package/dist/tree-view/hooks/use-tree-view-paths.d.ts +7 -1
  336. package/dist/tree-view/hooks/use-tree-view-paths.js +5 -5
  337. package/dist/tree-view/index.d.ts +35 -7
  338. package/dist/tree-view/index.js +7 -7
  339. package/dist/tree-view/leaf.d.ts +10 -2
  340. package/dist/tree-view/leaf.js +30 -21
  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 +6 -8
  345. package/dist/tree-view/navigation/get-prev-node.js +6 -8
  346. package/dist/tree-view/panel/make-handle-navigation.js +23 -31
  347. package/dist/tree-view/panel/make-handle-selection.js +68 -77
  348. package/dist/tree-view/panel/make-handle-typeahead.js +34 -40
  349. package/dist/tree-view/panel/panel.d.ts +10 -1
  350. package/dist/tree-view/panel/panel.js +40 -20
  351. package/dist/tree-view/panel/use-tree-navigation.js +64 -52
  352. package/dist/tree-view/root.d.ts +20 -14
  353. package/dist/tree-view/root.js +53 -55
  354. package/dist/tree-view/utils/get-focusable-nodes.js +4 -2
  355. package/dist/tree-view/utils/get-focused-node.js +11 -11
  356. package/dist/tree-view/utils/get-ids-between-nodes.d.ts +5 -1
  357. package/dist/tree-view/utils/get-ids-between-nodes.js +10 -11
  358. package/dist/tree-view/utils/get-panel.js +5 -5
  359. package/dist/tree-view/utils/get-parent-node.js +6 -7
  360. package/dist/tree-view/utils/get-sibling-branches.js +8 -10
  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 +5 -1
  366. package/dist/tree-view/utils/select-node.js +8 -11
  367. package/dist/tree-view/utils/toggle-all-selections.js +4 -6
  368. package/dist/tree-view/utils/toggle-selection.js +15 -18
  369. package/dist/tree-view/virtualized/force-sync-scrolling.d.ts +3 -1
  370. package/dist/tree-view/virtualized/force-sync-scrolling.js +24 -18
  371. package/dist/tree-view/virtualized/get-virtual-tree-paths.d.ts +3 -1
  372. package/dist/tree-view/virtualized/get-virtual-tree-paths.js +11 -12
  373. package/dist/tree-view/virtualized/make-virtual-tree.d.ts +26 -21
  374. package/dist/tree-view/virtualized/make-virtual-tree.js +79 -85
  375. package/dist/tree-view/virtualized/use-flattened-tree.d.ts +17 -8
  376. package/dist/tree-view/virtualized/use-flattened-tree.js +30 -31
  377. package/dist/tree-view/virtualized/use-row-start-and-end.d.ts +6 -1
  378. package/dist/tree-view/virtualized/use-row-start-and-end.js +21 -23
  379. package/dist/tree-view/virtualized/use-virtualized-tree.d.ts +21 -15
  380. package/dist/tree-view/virtualized/use-virtualized-tree.js +103 -90
  381. package/dist/utils/cycle-sorts.js +12 -14
  382. package/dist/viewport/begin-editing.d.ts +6 -2
  383. package/dist/viewport/begin-editing.js +9 -13
  384. package/dist/viewport/viewport.d.ts +10 -1
  385. package/dist/viewport/viewport.js +93 -70
  386. package/package.json +7 -7
@@ -2,7 +2,13 @@ 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 { equal, getClientX, getClientY, getRelativeXPosition, getRelativeYPosition, } from "@1771technologies/lytenyte-js-utils";
5
+ import {
6
+ equal,
7
+ getClientX,
8
+ getClientY,
9
+ getRelativeXPosition,
10
+ getRelativeYPosition,
11
+ } from "@1771technologies/lytenyte-js-utils";
6
12
  import { getNearestFocusable, getPositionFromFocusable } from "@1771technologies/lytenyte-shared";
7
13
  import { isHTMLElement } from "@1771technologies/lytenyte-dom-utils";
8
14
  import { updateAdditiveCellSelection } from "./update-additive-cell-selection";
@@ -13,268 +19,250 @@ import { expandCellSelectionEnd } from "./expand-cell-selection-end";
13
19
  import { expandCellSelectionDown } from "./expand-cell-selection-down";
14
20
  import { expandCellSelectionUp } from "./expand-cell-selection-up";
15
21
  function isNormalClick(event) {
16
- return event.button === 0 && !event.altKey;
22
+ return event.button === 0 && !event.altKey;
17
23
  }
18
24
  export function CellSelectionDriver() {
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
- }
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,
272
258
  });
273
- }, [
274
- grid.internal.cellSelectionAdditiveRects,
275
- grid.internal.cellSelectionPivot,
276
- grid.internal.focusActive,
277
- grid.state.cellSelections,
278
- ]);
279
- return _jsx(_Fragment, {});
259
+ }
260
+ });
261
+ }, [
262
+ grid.internal.cellSelectionAdditiveRects,
263
+ grid.internal.cellSelectionPivot,
264
+ grid.internal.focusActive,
265
+ grid.state.cellSelections,
266
+ ]);
267
+ return _jsx(_Fragment, {});
280
268
  }
@@ -1,8 +1,14 @@
1
1
  import type { DataRect } from "../+types";
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;
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;
8
14
  }): import("react/jsx-runtime").JSX.Element;