@salt-ds/data-grid 0.0.0-snapshot-20230620094559

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/dist-cjs/BaseCell.css.js +6 -0
  2. package/dist-cjs/BaseCell.css.js.map +1 -0
  3. package/dist-cjs/BaseCell.js +116 -0
  4. package/dist-cjs/BaseCell.js.map +1 -0
  5. package/dist-cjs/CellEditor.js +29 -0
  6. package/dist-cjs/CellEditor.js.map +1 -0
  7. package/dist-cjs/CheckboxCell.css.js +6 -0
  8. package/dist-cjs/CheckboxCell.css.js.map +1 -0
  9. package/dist-cjs/ColumnDataContext.js +18 -0
  10. package/dist-cjs/ColumnDataContext.js.map +1 -0
  11. package/dist-cjs/ColumnDragContext.js +20 -0
  12. package/dist-cjs/ColumnDragContext.js.map +1 -0
  13. package/dist-cjs/ColumnGroup.js +32 -0
  14. package/dist-cjs/ColumnGroup.js.map +1 -0
  15. package/dist-cjs/ColumnSortContext.js +20 -0
  16. package/dist-cjs/ColumnSortContext.js.map +1 -0
  17. package/dist-cjs/CornerTag.css.js +6 -0
  18. package/dist-cjs/CornerTag.css.js.map +1 -0
  19. package/dist-cjs/CornerTag.js +23 -0
  20. package/dist-cjs/CornerTag.js.map +1 -0
  21. package/dist-cjs/CursorContext.js +20 -0
  22. package/dist-cjs/CursorContext.js.map +1 -0
  23. package/dist-cjs/DropdownCellEditor.css.js +6 -0
  24. package/dist-cjs/DropdownCellEditor.css.js.map +1 -0
  25. package/dist-cjs/DropdownCellEditor.js +82 -0
  26. package/dist-cjs/DropdownCellEditor.js.map +1 -0
  27. package/dist-cjs/EditorContext.js +20 -0
  28. package/dist-cjs/EditorContext.js.map +1 -0
  29. package/dist-cjs/Grid.css.js +6 -0
  30. package/dist-cjs/Grid.css.js.map +1 -0
  31. package/dist-cjs/Grid.js +1026 -0
  32. package/dist-cjs/Grid.js.map +1 -0
  33. package/dist-cjs/GridColumn.js +43 -0
  34. package/dist-cjs/GridColumn.js.map +1 -0
  35. package/dist-cjs/GridContext.js +20 -0
  36. package/dist-cjs/GridContext.js.map +1 -0
  37. package/dist-cjs/GroupHeaderCell.css.js +6 -0
  38. package/dist-cjs/GroupHeaderCell.css.js.map +1 -0
  39. package/dist-cjs/GroupHeaderCell.js +54 -0
  40. package/dist-cjs/GroupHeaderCell.js.map +1 -0
  41. package/dist-cjs/GroupHeaderCellValue.js +16 -0
  42. package/dist-cjs/GroupHeaderCellValue.js.map +1 -0
  43. package/dist-cjs/HeaderCell.css.js +6 -0
  44. package/dist-cjs/HeaderCell.css.js.map +1 -0
  45. package/dist-cjs/HeaderCell.js +187 -0
  46. package/dist-cjs/HeaderCell.js.map +1 -0
  47. package/dist-cjs/HeaderCellValue.js +19 -0
  48. package/dist-cjs/HeaderCellValue.js.map +1 -0
  49. package/dist-cjs/LayoutContext.js +12 -0
  50. package/dist-cjs/LayoutContext.js.map +1 -0
  51. package/dist-cjs/NumberRange.js +63 -0
  52. package/dist-cjs/NumberRange.js.map +1 -0
  53. package/dist-cjs/NumericColumn.css.js +6 -0
  54. package/dist-cjs/NumericColumn.css.js.map +1 -0
  55. package/dist-cjs/NumericColumn.js +127 -0
  56. package/dist-cjs/NumericColumn.js.map +1 -0
  57. package/dist-cjs/RowSelectionCheckboxCellValue.js +45 -0
  58. package/dist-cjs/RowSelectionCheckboxCellValue.js.map +1 -0
  59. package/dist-cjs/RowSelectionCheckboxColumn.js +39 -0
  60. package/dist-cjs/RowSelectionCheckboxColumn.js.map +1 -0
  61. package/dist-cjs/RowSelectionCheckboxHeaderCellValue.js +56 -0
  62. package/dist-cjs/RowSelectionCheckboxHeaderCellValue.js.map +1 -0
  63. package/dist-cjs/RowSelectionRadioCellValue.js +33 -0
  64. package/dist-cjs/RowSelectionRadioCellValue.js.map +1 -0
  65. package/dist-cjs/RowSelectionRadioColumn.js +34 -0
  66. package/dist-cjs/RowSelectionRadioColumn.js.map +1 -0
  67. package/dist-cjs/RowSelectionRadioHeaderCell.js +30 -0
  68. package/dist-cjs/RowSelectionRadioHeaderCell.js.map +1 -0
  69. package/dist-cjs/RowValidationStatus.js +13 -0
  70. package/dist-cjs/RowValidationStatus.js.map +1 -0
  71. package/dist-cjs/SelectionContext.js +20 -0
  72. package/dist-cjs/SelectionContext.js.map +1 -0
  73. package/dist-cjs/SizingContext.js +20 -0
  74. package/dist-cjs/SizingContext.js.map +1 -0
  75. package/dist-cjs/TextCellEditor.css.js +6 -0
  76. package/dist-cjs/TextCellEditor.css.js.map +1 -0
  77. package/dist-cjs/TextCellEditor.js +104 -0
  78. package/dist-cjs/TextCellEditor.js.map +1 -0
  79. package/dist-cjs/index.js +60 -0
  80. package/dist-cjs/index.js.map +1 -0
  81. package/dist-cjs/internal/Cell.css.js +6 -0
  82. package/dist-cjs/internal/Cell.css.js.map +1 -0
  83. package/dist-cjs/internal/Cell.js +63 -0
  84. package/dist-cjs/internal/Cell.js.map +1 -0
  85. package/dist-cjs/internal/CellMeasure.css.js +6 -0
  86. package/dist-cjs/internal/CellMeasure.css.js.map +1 -0
  87. package/dist-cjs/internal/CellMeasure.js +49 -0
  88. package/dist-cjs/internal/CellMeasure.js.map +1 -0
  89. package/dist-cjs/internal/CellStatusIcons.js +46 -0
  90. package/dist-cjs/internal/CellStatusIcons.js.map +1 -0
  91. package/dist-cjs/internal/ColumnDropTarget.css.js +6 -0
  92. package/dist-cjs/internal/ColumnDropTarget.css.js.map +1 -0
  93. package/dist-cjs/internal/ColumnDropTarget.js +36 -0
  94. package/dist-cjs/internal/ColumnDropTarget.js.map +1 -0
  95. package/dist-cjs/internal/ColumnGhost.css.js +6 -0
  96. package/dist-cjs/internal/ColumnGhost.css.js.map +1 -0
  97. package/dist-cjs/internal/ColumnGhost.js +59 -0
  98. package/dist-cjs/internal/ColumnGhost.js.map +1 -0
  99. package/dist-cjs/internal/Cursor.css.js +6 -0
  100. package/dist-cjs/internal/Cursor.css.js.map +1 -0
  101. package/dist-cjs/internal/Cursor.js +25 -0
  102. package/dist-cjs/internal/Cursor.js.map +1 -0
  103. package/dist-cjs/internal/DefaultCellValue.css.js +6 -0
  104. package/dist-cjs/internal/DefaultCellValue.css.js.map +1 -0
  105. package/dist-cjs/internal/DefaultCellValue.js +30 -0
  106. package/dist-cjs/internal/DefaultCellValue.js.map +1 -0
  107. package/dist-cjs/internal/FakeCell.css.js +6 -0
  108. package/dist-cjs/internal/FakeCell.css.js.map +1 -0
  109. package/dist-cjs/internal/FakeCell.js +27 -0
  110. package/dist-cjs/internal/FakeCell.js.map +1 -0
  111. package/dist-cjs/internal/FakeGroupCell.js +12 -0
  112. package/dist-cjs/internal/FakeGroupCell.js.map +1 -0
  113. package/dist-cjs/internal/FakeHeaderCell.js +14 -0
  114. package/dist-cjs/internal/FakeHeaderCell.js.map +1 -0
  115. package/dist-cjs/internal/GroupHeaderRow.css.js +6 -0
  116. package/dist-cjs/internal/GroupHeaderRow.css.js.map +1 -0
  117. package/dist-cjs/internal/GroupHeaderRow.js +46 -0
  118. package/dist-cjs/internal/GroupHeaderRow.js.map +1 -0
  119. package/dist-cjs/internal/HeaderRow.css.js +6 -0
  120. package/dist-cjs/internal/HeaderRow.css.js.map +1 -0
  121. package/dist-cjs/internal/HeaderRow.js +50 -0
  122. package/dist-cjs/internal/HeaderRow.js.map +1 -0
  123. package/dist-cjs/internal/LeftPart.css.js +6 -0
  124. package/dist-cjs/internal/LeftPart.css.js.map +1 -0
  125. package/dist-cjs/internal/LeftPart.js +68 -0
  126. package/dist-cjs/internal/LeftPart.js.map +1 -0
  127. package/dist-cjs/internal/MiddlePart.css.js +6 -0
  128. package/dist-cjs/internal/MiddlePart.css.js.map +1 -0
  129. package/dist-cjs/internal/MiddlePart.js +64 -0
  130. package/dist-cjs/internal/MiddlePart.js.map +1 -0
  131. package/dist-cjs/internal/RightPart.css.js +6 -0
  132. package/dist-cjs/internal/RightPart.css.js.map +1 -0
  133. package/dist-cjs/internal/RightPart.js +68 -0
  134. package/dist-cjs/internal/RightPart.js.map +1 -0
  135. package/dist-cjs/internal/Scrollable.css.js +6 -0
  136. package/dist-cjs/internal/Scrollable.css.js.map +1 -0
  137. package/dist-cjs/internal/Scrollable.js +103 -0
  138. package/dist-cjs/internal/Scrollable.js.map +1 -0
  139. package/dist-cjs/internal/TableBody.js +77 -0
  140. package/dist-cjs/internal/TableBody.js.map +1 -0
  141. package/dist-cjs/internal/TableColGroup.js +37 -0
  142. package/dist-cjs/internal/TableColGroup.js.map +1 -0
  143. package/dist-cjs/internal/TableRow.css.js +6 -0
  144. package/dist-cjs/internal/TableRow.css.js.map +1 -0
  145. package/dist-cjs/internal/TableRow.js +125 -0
  146. package/dist-cjs/internal/TableRow.js.map +1 -0
  147. package/dist-cjs/internal/TopLeftPart.css.js +6 -0
  148. package/dist-cjs/internal/TopLeftPart.css.js.map +1 -0
  149. package/dist-cjs/internal/TopLeftPart.js +58 -0
  150. package/dist-cjs/internal/TopLeftPart.js.map +1 -0
  151. package/dist-cjs/internal/TopPart.css.js +6 -0
  152. package/dist-cjs/internal/TopPart.css.js.map +1 -0
  153. package/dist-cjs/internal/TopPart.js +61 -0
  154. package/dist-cjs/internal/TopPart.js.map +1 -0
  155. package/dist-cjs/internal/TopRightPart.css.js +6 -0
  156. package/dist-cjs/internal/TopRightPart.css.js.map +1 -0
  157. package/dist-cjs/internal/TopRightPart.js +59 -0
  158. package/dist-cjs/internal/TopRightPart.js.map +1 -0
  159. package/dist-cjs/internal/gridHooks.js +916 -0
  160. package/dist-cjs/internal/gridHooks.js.map +1 -0
  161. package/dist-cjs/internal/utils.js +71 -0
  162. package/dist-cjs/internal/utils.js.map +1 -0
  163. package/dist-es/BaseCell.css.js +4 -0
  164. package/dist-es/BaseCell.css.js.map +1 -0
  165. package/dist-es/BaseCell.js +111 -0
  166. package/dist-es/BaseCell.js.map +1 -0
  167. package/dist-es/CellEditor.js +25 -0
  168. package/dist-es/CellEditor.js.map +1 -0
  169. package/dist-es/CheckboxCell.css.js +4 -0
  170. package/dist-es/CheckboxCell.css.js.map +1 -0
  171. package/dist-es/ColumnDataContext.js +13 -0
  172. package/dist-es/ColumnDataContext.js.map +1 -0
  173. package/dist-es/ColumnDragContext.js +15 -0
  174. package/dist-es/ColumnDragContext.js.map +1 -0
  175. package/dist-es/ColumnGroup.js +28 -0
  176. package/dist-es/ColumnGroup.js.map +1 -0
  177. package/dist-es/ColumnSortContext.js +15 -0
  178. package/dist-es/ColumnSortContext.js.map +1 -0
  179. package/dist-es/CornerTag.css.js +4 -0
  180. package/dist-es/CornerTag.css.js.map +1 -0
  181. package/dist-es/CornerTag.js +19 -0
  182. package/dist-es/CornerTag.js.map +1 -0
  183. package/dist-es/CursorContext.js +15 -0
  184. package/dist-es/CursorContext.js.map +1 -0
  185. package/dist-es/DropdownCellEditor.css.js +4 -0
  186. package/dist-es/DropdownCellEditor.css.js.map +1 -0
  187. package/dist-es/DropdownCellEditor.js +78 -0
  188. package/dist-es/DropdownCellEditor.js.map +1 -0
  189. package/dist-es/EditorContext.js +15 -0
  190. package/dist-es/EditorContext.js.map +1 -0
  191. package/dist-es/Grid.css.js +4 -0
  192. package/dist-es/Grid.css.js.map +1 -0
  193. package/dist-es/Grid.js +1021 -0
  194. package/dist-es/Grid.js.map +1 -0
  195. package/dist-es/GridColumn.js +39 -0
  196. package/dist-es/GridColumn.js.map +1 -0
  197. package/dist-es/GridContext.js +15 -0
  198. package/dist-es/GridContext.js.map +1 -0
  199. package/dist-es/GroupHeaderCell.css.js +4 -0
  200. package/dist-es/GroupHeaderCell.css.js.map +1 -0
  201. package/dist-es/GroupHeaderCell.js +50 -0
  202. package/dist-es/GroupHeaderCell.js.map +1 -0
  203. package/dist-es/GroupHeaderCellValue.js +12 -0
  204. package/dist-es/GroupHeaderCellValue.js.map +1 -0
  205. package/dist-es/HeaderCell.css.js +4 -0
  206. package/dist-es/HeaderCell.css.js.map +1 -0
  207. package/dist-es/HeaderCell.js +181 -0
  208. package/dist-es/HeaderCell.js.map +1 -0
  209. package/dist-es/HeaderCellValue.js +15 -0
  210. package/dist-es/HeaderCellValue.js.map +1 -0
  211. package/dist-es/LayoutContext.js +8 -0
  212. package/dist-es/LayoutContext.js.map +1 -0
  213. package/dist-es/NumberRange.js +58 -0
  214. package/dist-es/NumberRange.js.map +1 -0
  215. package/dist-es/NumericColumn.css.js +4 -0
  216. package/dist-es/NumericColumn.css.js.map +1 -0
  217. package/dist-es/NumericColumn.js +121 -0
  218. package/dist-es/NumericColumn.js.map +1 -0
  219. package/dist-es/RowSelectionCheckboxCellValue.js +41 -0
  220. package/dist-es/RowSelectionCheckboxCellValue.js.map +1 -0
  221. package/dist-es/RowSelectionCheckboxColumn.js +35 -0
  222. package/dist-es/RowSelectionCheckboxColumn.js.map +1 -0
  223. package/dist-es/RowSelectionCheckboxHeaderCellValue.js +52 -0
  224. package/dist-es/RowSelectionCheckboxHeaderCellValue.js.map +1 -0
  225. package/dist-es/RowSelectionRadioCellValue.js +29 -0
  226. package/dist-es/RowSelectionRadioCellValue.js.map +1 -0
  227. package/dist-es/RowSelectionRadioColumn.js +30 -0
  228. package/dist-es/RowSelectionRadioColumn.js.map +1 -0
  229. package/dist-es/RowSelectionRadioHeaderCell.js +26 -0
  230. package/dist-es/RowSelectionRadioHeaderCell.js.map +1 -0
  231. package/dist-es/RowValidationStatus.js +9 -0
  232. package/dist-es/RowValidationStatus.js.map +1 -0
  233. package/dist-es/SelectionContext.js +15 -0
  234. package/dist-es/SelectionContext.js.map +1 -0
  235. package/dist-es/SizingContext.js +15 -0
  236. package/dist-es/SizingContext.js.map +1 -0
  237. package/dist-es/TextCellEditor.css.js +4 -0
  238. package/dist-es/TextCellEditor.css.js.map +1 -0
  239. package/dist-es/TextCellEditor.js +100 -0
  240. package/dist-es/TextCellEditor.js.map +1 -0
  241. package/dist-es/index.js +22 -0
  242. package/dist-es/index.js.map +1 -0
  243. package/dist-es/internal/Cell.css.js +4 -0
  244. package/dist-es/internal/Cell.css.js.map +1 -0
  245. package/dist-es/internal/Cell.js +59 -0
  246. package/dist-es/internal/Cell.js.map +1 -0
  247. package/dist-es/internal/CellMeasure.css.js +4 -0
  248. package/dist-es/internal/CellMeasure.css.js.map +1 -0
  249. package/dist-es/internal/CellMeasure.js +45 -0
  250. package/dist-es/internal/CellMeasure.js.map +1 -0
  251. package/dist-es/internal/CellStatusIcons.js +40 -0
  252. package/dist-es/internal/CellStatusIcons.js.map +1 -0
  253. package/dist-es/internal/ColumnDropTarget.css.js +4 -0
  254. package/dist-es/internal/ColumnDropTarget.css.js.map +1 -0
  255. package/dist-es/internal/ColumnDropTarget.js +32 -0
  256. package/dist-es/internal/ColumnDropTarget.js.map +1 -0
  257. package/dist-es/internal/ColumnGhost.css.js +4 -0
  258. package/dist-es/internal/ColumnGhost.css.js.map +1 -0
  259. package/dist-es/internal/ColumnGhost.js +55 -0
  260. package/dist-es/internal/ColumnGhost.js.map +1 -0
  261. package/dist-es/internal/Cursor.css.js +4 -0
  262. package/dist-es/internal/Cursor.css.js.map +1 -0
  263. package/dist-es/internal/Cursor.js +21 -0
  264. package/dist-es/internal/Cursor.js.map +1 -0
  265. package/dist-es/internal/DefaultCellValue.css.js +4 -0
  266. package/dist-es/internal/DefaultCellValue.css.js.map +1 -0
  267. package/dist-es/internal/DefaultCellValue.js +26 -0
  268. package/dist-es/internal/DefaultCellValue.js.map +1 -0
  269. package/dist-es/internal/FakeCell.css.js +4 -0
  270. package/dist-es/internal/FakeCell.css.js.map +1 -0
  271. package/dist-es/internal/FakeCell.js +23 -0
  272. package/dist-es/internal/FakeCell.js.map +1 -0
  273. package/dist-es/internal/FakeGroupCell.js +8 -0
  274. package/dist-es/internal/FakeGroupCell.js.map +1 -0
  275. package/dist-es/internal/FakeHeaderCell.js +10 -0
  276. package/dist-es/internal/FakeHeaderCell.js.map +1 -0
  277. package/dist-es/internal/GroupHeaderRow.css.js +4 -0
  278. package/dist-es/internal/GroupHeaderRow.css.js.map +1 -0
  279. package/dist-es/internal/GroupHeaderRow.js +42 -0
  280. package/dist-es/internal/GroupHeaderRow.js.map +1 -0
  281. package/dist-es/internal/HeaderRow.css.js +4 -0
  282. package/dist-es/internal/HeaderRow.css.js.map +1 -0
  283. package/dist-es/internal/HeaderRow.js +46 -0
  284. package/dist-es/internal/HeaderRow.js.map +1 -0
  285. package/dist-es/internal/LeftPart.css.js +4 -0
  286. package/dist-es/internal/LeftPart.css.js.map +1 -0
  287. package/dist-es/internal/LeftPart.js +64 -0
  288. package/dist-es/internal/LeftPart.js.map +1 -0
  289. package/dist-es/internal/MiddlePart.css.js +4 -0
  290. package/dist-es/internal/MiddlePart.css.js.map +1 -0
  291. package/dist-es/internal/MiddlePart.js +60 -0
  292. package/dist-es/internal/MiddlePart.js.map +1 -0
  293. package/dist-es/internal/RightPart.css.js +4 -0
  294. package/dist-es/internal/RightPart.css.js.map +1 -0
  295. package/dist-es/internal/RightPart.js +64 -0
  296. package/dist-es/internal/RightPart.js.map +1 -0
  297. package/dist-es/internal/Scrollable.css.js +4 -0
  298. package/dist-es/internal/Scrollable.css.js.map +1 -0
  299. package/dist-es/internal/Scrollable.js +99 -0
  300. package/dist-es/internal/Scrollable.js.map +1 -0
  301. package/dist-es/internal/TableBody.js +73 -0
  302. package/dist-es/internal/TableBody.js.map +1 -0
  303. package/dist-es/internal/TableColGroup.js +32 -0
  304. package/dist-es/internal/TableColGroup.js.map +1 -0
  305. package/dist-es/internal/TableRow.css.js +4 -0
  306. package/dist-es/internal/TableRow.css.js.map +1 -0
  307. package/dist-es/internal/TableRow.js +121 -0
  308. package/dist-es/internal/TableRow.js.map +1 -0
  309. package/dist-es/internal/TopLeftPart.css.js +4 -0
  310. package/dist-es/internal/TopLeftPart.css.js.map +1 -0
  311. package/dist-es/internal/TopLeftPart.js +54 -0
  312. package/dist-es/internal/TopLeftPart.js.map +1 -0
  313. package/dist-es/internal/TopPart.css.js +4 -0
  314. package/dist-es/internal/TopPart.css.js.map +1 -0
  315. package/dist-es/internal/TopPart.js +57 -0
  316. package/dist-es/internal/TopPart.js.map +1 -0
  317. package/dist-es/internal/TopRightPart.css.js +4 -0
  318. package/dist-es/internal/TopRightPart.css.js.map +1 -0
  319. package/dist-es/internal/TopRightPart.js +55 -0
  320. package/dist-es/internal/TopRightPart.js.map +1 -0
  321. package/dist-es/internal/gridHooks.js +886 -0
  322. package/dist-es/internal/gridHooks.js.map +1 -0
  323. package/dist-es/internal/utils.js +61 -0
  324. package/dist-es/internal/utils.js.map +1 -0
  325. package/dist-types/BaseCell.d.ts +5 -0
  326. package/dist-types/CellEditor.d.ts +10 -0
  327. package/dist-types/ColumnDataContext.d.ts +7 -0
  328. package/dist-types/ColumnDragContext.d.ts +7 -0
  329. package/dist-types/ColumnGroup.d.ts +18 -0
  330. package/dist-types/ColumnSortContext.d.ts +12 -0
  331. package/dist-types/CornerTag.d.ts +5 -0
  332. package/dist-types/CursorContext.d.ts +12 -0
  333. package/dist-types/DropdownCellEditor.d.ts +8 -0
  334. package/dist-types/EditorContext.d.ts +10 -0
  335. package/dist-types/Grid.d.ts +104 -0
  336. package/dist-types/GridColumn.d.ts +165 -0
  337. package/dist-types/GridContext.d.ts +16 -0
  338. package/dist-types/GroupHeaderCell.d.ts +7 -0
  339. package/dist-types/GroupHeaderCellValue.d.ts +3 -0
  340. package/dist-types/HeaderCell.d.ts +9 -0
  341. package/dist-types/HeaderCellValue.d.ts +3 -0
  342. package/dist-types/LayoutContext.d.ts +9 -0
  343. package/dist-types/NumberRange.d.ts +15 -0
  344. package/dist-types/NumericColumn.d.ts +14 -0
  345. package/dist-types/RowSelectionCheckboxCellValue.d.ts +3 -0
  346. package/dist-types/RowSelectionCheckboxColumn.d.ts +4 -0
  347. package/dist-types/RowSelectionCheckboxHeaderCellValue.d.ts +3 -0
  348. package/dist-types/RowSelectionRadioCellValue.d.ts +3 -0
  349. package/dist-types/RowSelectionRadioColumn.d.ts +4 -0
  350. package/dist-types/RowSelectionRadioHeaderCell.d.ts +3 -0
  351. package/dist-types/RowValidationStatus.d.ts +7 -0
  352. package/dist-types/SelectionContext.d.ts +13 -0
  353. package/dist-types/SizingContext.d.ts +8 -0
  354. package/dist-types/TextCellEditor.d.ts +7 -0
  355. package/dist-types/index.d.ts +21 -0
  356. package/dist-types/internal/Cell.d.ts +8 -0
  357. package/dist-types/internal/CellMeasure.d.ts +5 -0
  358. package/dist-types/internal/CellStatusIcons.d.ts +4 -0
  359. package/dist-types/internal/ColumnDropTarget.d.ts +5 -0
  360. package/dist-types/internal/ColumnGhost.d.ts +10 -0
  361. package/dist-types/internal/Cursor.d.ts +4 -0
  362. package/dist-types/internal/DefaultCellValue.d.ts +3 -0
  363. package/dist-types/internal/FakeCell.d.ts +4 -0
  364. package/dist-types/internal/FakeGroupCell.d.ts +2 -0
  365. package/dist-types/internal/FakeHeaderCell.d.ts +2 -0
  366. package/dist-types/internal/GroupHeaderRow.d.ts +7 -0
  367. package/dist-types/internal/HeaderRow.d.ts +7 -0
  368. package/dist-types/internal/LeftPart.d.ts +15 -0
  369. package/dist-types/internal/MiddlePart.d.ts +15 -0
  370. package/dist-types/internal/RightPart.d.ts +15 -0
  371. package/dist-types/internal/Scrollable.d.ts +20 -0
  372. package/dist-types/internal/TableBody.d.ts +13 -0
  373. package/dist-types/internal/TableColGroup.d.ts +11 -0
  374. package/dist-types/internal/TableRow.d.ts +19 -0
  375. package/dist-types/internal/TopLeftPart.d.ts +10 -0
  376. package/dist-types/internal/TopPart.d.ts +11 -0
  377. package/dist-types/internal/TopRightPart.d.ts +10 -0
  378. package/dist-types/internal/gridHooks.d.ts +91 -0
  379. package/dist-types/internal/index.d.ts +21 -0
  380. package/dist-types/internal/utils.d.ts +13 -0
  381. package/package.json +42 -0
@@ -0,0 +1,1021 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { useRef, useState, useCallback, useMemo, useEffect } from 'react';
3
+ import { makePrefixer } from '@salt-ds/core';
4
+ import { useWindow } from '@salt-ds/window';
5
+ import { useComponentCssInjection } from '@salt-ds/styles';
6
+ import { clsx } from 'clsx';
7
+ import './internal/Cell.js';
8
+ import { CellMeasure } from './internal/CellMeasure.js';
9
+ import './internal/Cursor.js';
10
+ import './internal/GroupHeaderRow.js';
11
+ import './internal/HeaderRow.js';
12
+ import { LeftPart } from './internal/LeftPart.js';
13
+ import { MiddlePart } from './internal/MiddlePart.js';
14
+ import { RightPart } from './internal/RightPart.js';
15
+ import { Scrollable } from './internal/Scrollable.js';
16
+ import './internal/TableRow.js';
17
+ import { clamp, getFocusablePosition } from './internal/utils.js';
18
+ import { SelectionContext } from './SelectionContext.js';
19
+ import { EditorContext } from './EditorContext.js';
20
+ import { CursorContext } from './CursorContext.js';
21
+ import { useColumnRegistry, useSumWidth, useSum, useClientMidWidth, useBodyVisibleColumnRange, useVisibleColumnGroupRange, useHeadVisibleColumnRange, useLeftScrolledOutWidth, useClientMidHeight, useVisibleRowRange, useBodyVisibleAreaTop, useColumnRange, useSumRangeWidth, useScrollToCell, useRowSelection, useRangeSelection, useRowModels, useColumnResize, useColumnMove } from './internal/gridHooks.js';
22
+ import { TopLeftPart } from './internal/TopLeftPart.js';
23
+ import { TopPart } from './internal/TopPart.js';
24
+ import { TopRightPart } from './internal/TopRightPart.js';
25
+ import './internal/DefaultCellValue.js';
26
+ import { GridContext } from './GridContext.js';
27
+ import { SizingContext } from './SizingContext.js';
28
+ import { LayoutContext } from './LayoutContext.js';
29
+ import { ColumnDragContext } from './ColumnDragContext.js';
30
+ import { ColumnGhost } from './internal/ColumnGhost.js';
31
+ import { ColumnDropTarget } from './internal/ColumnDropTarget.js';
32
+ import { ColumnDataContext } from './ColumnDataContext.js';
33
+ import { ColumnSortContext } from './ColumnSortContext.js';
34
+ import css_248z from './Grid.css.js';
35
+
36
+ const withBaseName = makePrefixer("saltGrid");
37
+ var SortOrder = /* @__PURE__ */ ((SortOrder2) => {
38
+ SortOrder2["ASC"] = "asc";
39
+ SortOrder2["DESC"] = "desc";
40
+ SortOrder2["NONE"] = "none";
41
+ return SortOrder2;
42
+ })(SortOrder || {});
43
+ function defaultRowKeyGetter(row, index) {
44
+ return `${index}`;
45
+ }
46
+ const Grid = function Grid2(props) {
47
+ var _a, _b, _c;
48
+ const {
49
+ rowData,
50
+ zebra,
51
+ hideHeader,
52
+ columnSeparators,
53
+ pinnedSeparators = true,
54
+ className,
55
+ style,
56
+ rowKeyGetter = defaultRowKeyGetter,
57
+ children,
58
+ defaultSelectedRowIdxs,
59
+ selectedRowIdxs,
60
+ variant = "primary",
61
+ rowSelectionMode = "multi",
62
+ onRowSelected,
63
+ columnMove,
64
+ onColumnMoved,
65
+ cellSelectionMode = "none",
66
+ onVisibleRowRangeChange,
67
+ headerIsFocusable,
68
+ getRowValidationStatus
69
+ } = props;
70
+ const targetWindow = useWindow();
71
+ useComponentCssInjection({
72
+ testId: "salt-grid",
73
+ css: css_248z,
74
+ window: targetWindow
75
+ });
76
+ const rootRef = useRef(null);
77
+ const scrollableRef = useRef(null);
78
+ const middleRef = useRef(null);
79
+ const topRef = useRef(null);
80
+ const leftRef = useRef(null);
81
+ const rightRef = useRef(null);
82
+ const bottomRef = useRef(null);
83
+ const [scrollSource, setScrollSource] = useState("user");
84
+ const [scrollLeft, setScrollLeft] = useState(0);
85
+ const [scrollTop, setScrollTop] = useState(0);
86
+ const [hoverRowKey, setHoverRowKey] = useState(void 0);
87
+ const [
88
+ { clientWidth, clientHeight, scrollBarHeight, scrollBarWidth },
89
+ setDimensions
90
+ ] = useState({
91
+ clientWidth: 0,
92
+ clientHeight: 0,
93
+ scrollBarHeight: 0,
94
+ scrollBarWidth: 0
95
+ });
96
+ const [rowHeight, setRowHeight] = useState(0);
97
+ const [cursorRowIdx, setCursorRowIdx] = useState(0);
98
+ const [cursorColIdx, setCursorColIdx] = useState(0);
99
+ const [focusedPart, setFocusedPart] = useState(
100
+ headerIsFocusable ? "header" : "body"
101
+ );
102
+ const [sortByColumnId, setSortByColumnId] = useState("");
103
+ const [sortOrder, setSortOrder] = useState("none" /* NONE */);
104
+ const [editMode, setEditMode] = useState(false);
105
+ const [initialText, setInitialText] = useState(void 0);
106
+ const resizeClient = useCallback(
107
+ (dimensions) => {
108
+ setDimensions(dimensions);
109
+ },
110
+ []
111
+ );
112
+ const {
113
+ leftCols,
114
+ midCols,
115
+ rightCols,
116
+ leftGroups,
117
+ midGroups,
118
+ rightGroups,
119
+ contextValue
120
+ } = useColumnRegistry(children);
121
+ const midColsById = useMemo(
122
+ () => new Map(
123
+ midCols.map((c) => [c.info.props.id, c])
124
+ ),
125
+ [midCols]
126
+ );
127
+ const leftWidth = useSumWidth(leftCols);
128
+ const midWidth = useSumWidth(midCols);
129
+ const rightWidth = useSumWidth(rightCols);
130
+ const totalWidth = useSum([leftWidth, midWidth, rightWidth]);
131
+ const hasColumnGroups = leftGroups.length > 0 || midGroups.length > 0 || rightGroups.length > 0;
132
+ const headRowCount = hideHeader ? 0 : hasColumnGroups ? 2 : 1;
133
+ const rowCount = rowData.length;
134
+ const botRowCount = 0;
135
+ const topHeight = rowHeight * headRowCount;
136
+ const midHeight = rowCount === 0 ? 0 : rowHeight * rowCount + 1;
137
+ const botHeight = botRowCount * rowHeight;
138
+ const totalHeight = useSum([topHeight, midHeight, botHeight]);
139
+ const clientMidWidth = useClientMidWidth(clientWidth, leftWidth, rightWidth);
140
+ const midGap = Math.max(0, Math.floor(clientMidWidth - midWidth));
141
+ const bodyVisColRng = useBodyVisibleColumnRange(
142
+ midCols,
143
+ scrollLeft,
144
+ clientMidWidth
145
+ );
146
+ const midGrpByColId = useMemo(() => {
147
+ const m = /* @__PURE__ */ new Map();
148
+ for (const g of midGroups) {
149
+ for (const c of g.childrenIds) {
150
+ m.set(c, g);
151
+ }
152
+ }
153
+ return m;
154
+ }, [midGroups]);
155
+ const visColGrpRng = useVisibleColumnGroupRange(
156
+ bodyVisColRng,
157
+ midCols,
158
+ midGrpByColId,
159
+ leftGroups.length
160
+ );
161
+ const visColGrps = useMemo(() => {
162
+ return midGroups.slice(visColGrpRng.start, visColGrpRng.end);
163
+ }, [visColGrpRng, midGroups]);
164
+ const headVisColRng = useHeadVisibleColumnRange(
165
+ bodyVisColRng,
166
+ visColGrps,
167
+ midColsById,
168
+ leftCols.length
169
+ );
170
+ const bodyScrOutColWh = useLeftScrolledOutWidth(midCols, bodyVisColRng);
171
+ const headScrOutColWh = useLeftScrolledOutWidth(midCols, headVisColRng);
172
+ const bodyVisAreaLeft = useSum([leftWidth, bodyScrOutColWh]);
173
+ const headVisAreaLeft = useSum([leftWidth, headScrOutColWh]);
174
+ const clientMidHeight = useClientMidHeight(
175
+ clientHeight,
176
+ topHeight,
177
+ botHeight
178
+ );
179
+ const visRowRng = useVisibleRowRange(
180
+ scrollTop,
181
+ clientMidHeight,
182
+ rowHeight,
183
+ rowCount
184
+ );
185
+ const bodyVisAreaTop = useBodyVisibleAreaTop(rowHeight, visRowRng, topHeight);
186
+ const bodyVisibleColumns = useColumnRange(midCols, bodyVisColRng);
187
+ const headVisibleColumns = useColumnRange(midCols, headVisColRng);
188
+ const bodyVisColWh = useSumRangeWidth(midCols, bodyVisColRng);
189
+ const headVisColWh = bodyVisColWh;
190
+ const rootStyle = useMemo(
191
+ () => ({
192
+ ...style,
193
+ "--grid-total-width": `${totalWidth}px`,
194
+ "--grid-total-height": `${totalHeight}px`,
195
+ "--grid-topPart-height": `${topHeight}px`,
196
+ "--grid-leftPart-width": `${leftWidth}px`,
197
+ "--grid-rightPart-width": `${rightWidth}px`,
198
+ "--grid-bodyVisibleColumns-width": `${bodyVisColWh}px`,
199
+ "--grid-bodyVisibleArea-top": `${bodyVisAreaTop}px`,
200
+ "--grid-bodyVisibleArea-left": `${bodyVisAreaLeft}px`,
201
+ "--grid-bottomHeight": `${botHeight}px`,
202
+ "--grid-headerVisibleColumns-width": `${headVisColWh}px`,
203
+ "--grid-headerVisibleArea-left": `${headVisAreaLeft}px`,
204
+ "--grid-scrollBar-height": `${scrollBarHeight}px`,
205
+ "--grid-scrollBar-width": `${scrollBarWidth}px`
206
+ }),
207
+ [
208
+ style,
209
+ totalHeight,
210
+ totalWidth,
211
+ topHeight,
212
+ leftWidth,
213
+ rightWidth,
214
+ botHeight,
215
+ bodyVisColWh,
216
+ bodyVisAreaLeft,
217
+ bodyVisAreaTop,
218
+ headVisColWh,
219
+ headVisAreaLeft,
220
+ scrollBarHeight,
221
+ scrollBarWidth
222
+ ]
223
+ );
224
+ const onWheel = useCallback(
225
+ (event) => {
226
+ let { deltaX, deltaY, shiftKey } = event;
227
+ if (deltaX === 0 && shiftKey) {
228
+ deltaX = deltaY;
229
+ deltaY = 0;
230
+ }
231
+ const s = scrollableRef.current;
232
+ if (s) {
233
+ s.scrollLeft += deltaX;
234
+ s.scrollTop += deltaY;
235
+ }
236
+ event.preventDefault();
237
+ event.stopPropagation();
238
+ },
239
+ [scrollableRef.current]
240
+ );
241
+ const cols = useMemo(
242
+ () => [...leftCols, ...midCols, ...rightCols],
243
+ [leftCols, midCols, rightCols]
244
+ );
245
+ const colsById = useMemo(
246
+ () => new Map(
247
+ cols.map((c) => [c.info.props.id, c])
248
+ ),
249
+ [cols]
250
+ );
251
+ const getColById = useCallback(
252
+ (id) => {
253
+ return colsById.get(id);
254
+ },
255
+ [colsById]
256
+ );
257
+ const columnDataContext = useMemo(
258
+ () => ({
259
+ getColById
260
+ }),
261
+ [getColById]
262
+ );
263
+ const isSortMode = sortByColumnId && sortOrder !== "none" /* NONE */;
264
+ const onSortOrderChange = (_a = getColById(sortByColumnId)) == null ? void 0 : _a.info.props.onSortOrderChange;
265
+ const valueGetter = ((_b = getColById(sortByColumnId)) == null ? void 0 : _b.info.props.getValue) || ((r) => {
266
+ return r[sortByColumnId];
267
+ });
268
+ const customSortingFn = (_c = getColById(sortByColumnId)) == null ? void 0 : _c.info.props.customSort;
269
+ const sortedRowData = useMemo(() => {
270
+ if (!isSortMode || onSortOrderChange)
271
+ return rowData;
272
+ if (customSortingFn) {
273
+ return customSortingFn({ rowData, sortOrder });
274
+ }
275
+ const sortedData = [...rowData].sort(
276
+ (a, b) => valueGetter(a) < valueGetter(b) ? -1 : 1
277
+ );
278
+ if (sortOrder === "desc" /* DESC */) {
279
+ return sortedData.reverse();
280
+ }
281
+ return sortedData;
282
+ }, [
283
+ onSortOrderChange,
284
+ valueGetter,
285
+ customSortingFn,
286
+ isSortMode,
287
+ rowData,
288
+ sortByColumnId,
289
+ sortOrder
290
+ ]);
291
+ const onClickSortColumn = useCallback(
292
+ (colHeaderId) => {
293
+ if (sortByColumnId === colHeaderId) {
294
+ switch (sortOrder) {
295
+ case "asc" /* ASC */:
296
+ setSortOrder("desc" /* DESC */);
297
+ break;
298
+ case "desc" /* DESC */:
299
+ setSortOrder("none" /* NONE */);
300
+ break;
301
+ default:
302
+ setSortOrder("asc" /* ASC */);
303
+ }
304
+ } else {
305
+ setSortByColumnId(colHeaderId);
306
+ setSortOrder("asc" /* ASC */);
307
+ }
308
+ },
309
+ [sortByColumnId, sortOrder]
310
+ );
311
+ const columnSortContext = useMemo(
312
+ () => ({
313
+ sortByColumnId,
314
+ setSortByColumnId,
315
+ sortOrder,
316
+ setSortOrder,
317
+ onClickSortColumn
318
+ }),
319
+ [
320
+ sortByColumnId,
321
+ setSortByColumnId,
322
+ sortOrder,
323
+ setSortOrder,
324
+ onClickSortColumn
325
+ ]
326
+ );
327
+ const scroll = useCallback(
328
+ (left, top, source) => {
329
+ setScrollSource(source || "user");
330
+ if (left !== void 0) {
331
+ setScrollLeft(left);
332
+ }
333
+ if (top !== void 0) {
334
+ setScrollTop(top);
335
+ }
336
+ },
337
+ [setScrollLeft, setScrollTop, setScrollSource]
338
+ );
339
+ const scrollToCell = useScrollToCell(
340
+ visRowRng,
341
+ rowHeight,
342
+ clientMidHeight,
343
+ midCols,
344
+ bodyVisColRng,
345
+ clientMidWidth,
346
+ scroll
347
+ );
348
+ const focusCellElement = (part, rowIdx, colIdx) => {
349
+ setTimeout(() => {
350
+ var _a2;
351
+ const selector = part === "body" ? `td[data-row-index="${rowIdx}"][data-column-index="${colIdx}"]` : `th[data-column-index="${colIdx}"]`;
352
+ const nodeToFocus = (_a2 = rootRef.current) == null ? void 0 : _a2.querySelector(selector);
353
+ if (nodeToFocus) {
354
+ nodeToFocus.focus({ preventScroll: true });
355
+ } else {
356
+ console.warn(`focusCellElement can't find the element`);
357
+ }
358
+ }, 0);
359
+ };
360
+ const startEditMode = (text) => {
361
+ if (editMode || cursorRowIdx == void 0 || cursorColIdx == void 0) {
362
+ return;
363
+ }
364
+ const c = cols[cursorColIdx];
365
+ const isEditable = !!contextValue.getEditor(c.info.props.id);
366
+ if (isEditable) {
367
+ setInitialText(text);
368
+ setEditMode(true);
369
+ }
370
+ };
371
+ const endEditMode = (value) => {
372
+ if (!editMode) {
373
+ return;
374
+ }
375
+ if (cursorColIdx == void 0) {
376
+ console.error(`endEditMode: cursorColIdx is undefined in edit mode`);
377
+ return;
378
+ }
379
+ const c = cols[cursorColIdx];
380
+ const handler = c.info.props.onChange;
381
+ if (cursorRowIdx == void 0) {
382
+ console.error(`endEditMode: cursorRowIdx is undefined in edit mode`);
383
+ return;
384
+ }
385
+ if (!handler) {
386
+ console.warn(
387
+ `onChange is not specified for editable column "${c.info.props.id}".`
388
+ );
389
+ } else {
390
+ handler(sortedRowData[cursorRowIdx], cursorRowIdx, value);
391
+ }
392
+ setEditMode(false);
393
+ focusCellElement(focusedPart, cursorRowIdx, cursorColIdx);
394
+ };
395
+ const cancelEditMode = () => {
396
+ if (!editMode) {
397
+ return;
398
+ }
399
+ setEditMode(false);
400
+ if (cursorRowIdx != null && cursorColIdx != null) {
401
+ focusCellElement(focusedPart, cursorRowIdx, cursorColIdx);
402
+ }
403
+ };
404
+ const {
405
+ selRowIdxs,
406
+ isAllSelected,
407
+ isAnySelected,
408
+ selectAll,
409
+ selectRows,
410
+ unselectAll,
411
+ onMouseDown: onRowSelectionMouseDown
412
+ } = useRowSelection(
413
+ rowKeyGetter,
414
+ sortedRowData,
415
+ defaultSelectedRowIdxs,
416
+ selectedRowIdxs,
417
+ rowSelectionMode,
418
+ onRowSelected
419
+ );
420
+ const rangeSelection = useRangeSelection(cellSelectionMode);
421
+ const moveCursor = useCallback(
422
+ (part, rowIdx, colIdx) => {
423
+ if (!headerIsFocusable && part === "header") {
424
+ console.warn(
425
+ `Cannot move focus to the header. "headerIsFocusable" prop is false.`
426
+ );
427
+ return;
428
+ }
429
+ setFocusedPart(part);
430
+ colIdx = clamp(colIdx, 0, cols.length - 1);
431
+ if (part === "body") {
432
+ if (sortedRowData.length < 1 || cols.length < 1) {
433
+ return;
434
+ }
435
+ rowIdx = clamp(rowIdx, 0, sortedRowData.length - 1);
436
+ } else if (part === "header") {
437
+ rowIdx = 0;
438
+ }
439
+ setCursorRowIdx(rowIdx);
440
+ setCursorColIdx(colIdx);
441
+ scrollToCell(part, rowIdx, colIdx);
442
+ focusCellElement(part, rowIdx, colIdx);
443
+ if (part === "body") {
444
+ rangeSelection.onCursorMove({ rowIdx, colIdx });
445
+ }
446
+ },
447
+ [
448
+ setCursorRowIdx,
449
+ setCursorColIdx,
450
+ sortedRowData,
451
+ rowKeyGetter,
452
+ cols,
453
+ rootRef.current,
454
+ scrollToCell,
455
+ endEditMode,
456
+ rangeSelection.onCursorMove,
457
+ focusedPart,
458
+ headerIsFocusable
459
+ ]
460
+ );
461
+ const rows = useRowModels(rowKeyGetter, sortedRowData, visRowRng);
462
+ const isLeftRaised = scrollLeft > 0;
463
+ const isRightRaised = scrollLeft + clientMidWidth < midWidth;
464
+ const isHeaderRaised = scrollTop > 0;
465
+ const resizeColumn = useCallback(
466
+ (colIdx, width) => {
467
+ const col = cols[colIdx];
468
+ col.info.onWidthChanged(width);
469
+ },
470
+ [cols]
471
+ );
472
+ const onResizeHandleMouseDown = useColumnResize(cols, resizeColumn);
473
+ const sizingContext = useMemo(
474
+ () => ({
475
+ resizeColumn,
476
+ rowHeight,
477
+ onResizeHandleMouseDown
478
+ }),
479
+ [resizeColumn, rowHeight, onResizeHandleMouseDown]
480
+ );
481
+ const layoutContext = useMemo(
482
+ () => ({
483
+ totalHeight,
484
+ totalWidth,
485
+ clientWidth,
486
+ clientHeight
487
+ }),
488
+ [totalHeight, totalWidth]
489
+ );
490
+ const editorContext = useMemo(
491
+ () => ({
492
+ initialText,
493
+ editMode,
494
+ startEditMode,
495
+ endEditMode,
496
+ cancelEditMode
497
+ }),
498
+ [editMode, startEditMode, endEditMode, cancelEditMode, initialText]
499
+ );
500
+ const [isFocused, setFocused] = useState(false);
501
+ const onFocus = useCallback(
502
+ (event) => {
503
+ setFocused(true);
504
+ },
505
+ [setFocused]
506
+ );
507
+ const onBlur = useCallback(
508
+ (event) => {
509
+ setFocused(false);
510
+ },
511
+ [setFocused]
512
+ );
513
+ const cursorContext = useMemo(
514
+ () => ({
515
+ isFocused,
516
+ cursorRowIdx,
517
+ cursorColIdx,
518
+ moveCursor,
519
+ focusedPart,
520
+ headerIsFocusable: Boolean(headerIsFocusable)
521
+ }),
522
+ [
523
+ cursorRowIdx,
524
+ cursorColIdx,
525
+ moveCursor,
526
+ isFocused,
527
+ focusedPart,
528
+ headerIsFocusable
529
+ ]
530
+ );
531
+ const onColumnMove = (columnId, fromIndex, toIndex) => {
532
+ if (onColumnMoved && fromIndex !== toIndex) {
533
+ onColumnMoved(columnId, fromIndex, toIndex);
534
+ }
535
+ };
536
+ const {
537
+ dragState,
538
+ onColumnMoveHandleMouseDown,
539
+ activeTarget,
540
+ onColumnMoveCancel
541
+ } = useColumnMove(
542
+ columnMove,
543
+ rootRef,
544
+ leftCols,
545
+ midCols,
546
+ rightCols,
547
+ cols,
548
+ scrollLeft,
549
+ clientMidWidth,
550
+ onColumnMove
551
+ );
552
+ const columnDragContext = useMemo(
553
+ () => ({
554
+ columnMove,
555
+ onColumnMoveHandleMouseDown
556
+ }),
557
+ [columnMove, onColumnMoveHandleMouseDown]
558
+ );
559
+ const onMouseDown = (event) => {
560
+ onRowSelectionMouseDown(event);
561
+ rangeSelection.onCellMouseDown(event);
562
+ const target = event.target;
563
+ try {
564
+ const { part, rowIndex, columnIndex } = getFocusablePosition(target);
565
+ if (part === "header" && !headerIsFocusable) {
566
+ return;
567
+ }
568
+ moveCursor(part, rowIndex, columnIndex);
569
+ } catch (e) {
570
+ }
571
+ };
572
+ const onKeyUp = useCallback(
573
+ (event) => {
574
+ const { key } = event;
575
+ if (key === "Shift") {
576
+ rangeSelection.onKeyboardRangeSelectionEnd();
577
+ }
578
+ },
579
+ [rangeSelection.onKeyboardRangeSelectionEnd]
580
+ );
581
+ const editModeKeyHandler = useCallback(
582
+ (event) => {
583
+ const { key } = event;
584
+ switch (key) {
585
+ case "F2":
586
+ case "Enter":
587
+ startEditMode();
588
+ break;
589
+ case "Backspace":
590
+ startEditMode("");
591
+ break;
592
+ case "Escape":
593
+ if (editMode) {
594
+ cancelEditMode();
595
+ break;
596
+ } else {
597
+ return false;
598
+ }
599
+ default:
600
+ if (!editMode && !event.ctrlKey && !event.metaKey && !event.altKey && /^[\w\d ]$/.test(key)) {
601
+ startEditMode(key);
602
+ } else {
603
+ return false;
604
+ }
605
+ }
606
+ event.preventDefault();
607
+ event.stopPropagation();
608
+ return true;
609
+ },
610
+ [startEditMode, editMode, cancelEditMode]
611
+ );
612
+ const selectionKeyHandler = useCallback(
613
+ (event) => {
614
+ const { key } = event;
615
+ switch (key) {
616
+ case "Shift":
617
+ rangeSelection.onKeyboardRangeSelectionStart({
618
+ rowIdx: cursorRowIdx || 0,
619
+ colIdx: cursorColIdx || 0
620
+ });
621
+ break;
622
+ case " ":
623
+ if (focusedPart === "body") {
624
+ if (event.ctrlKey) {
625
+ if (cursorColIdx != void 0) {
626
+ rangeSelection.selectRange({
627
+ start: { rowIdx: 0, colIdx: cursorColIdx },
628
+ end: { rowIdx: sortedRowData.length, colIdx: cursorColIdx }
629
+ });
630
+ }
631
+ } else {
632
+ if (cursorRowIdx != void 0) {
633
+ selectRows({
634
+ rowIndex: cursorRowIdx,
635
+ isRange: false,
636
+ incremental: true,
637
+ unselectOtherRows: !event.shiftKey
638
+ });
639
+ }
640
+ }
641
+ break;
642
+ } else {
643
+ return false;
644
+ }
645
+ case "a":
646
+ if (event.ctrlKey || event.metaKey) {
647
+ rangeSelection.selectRange({
648
+ start: { rowIdx: 0, colIdx: 0 },
649
+ end: { rowIdx: sortedRowData.length, colIdx: cols.length }
650
+ });
651
+ selectAll();
652
+ return true;
653
+ } else {
654
+ return false;
655
+ }
656
+ default:
657
+ return false;
658
+ }
659
+ event.preventDefault();
660
+ event.stopPropagation();
661
+ return true;
662
+ },
663
+ [
664
+ rangeSelection.selectRange,
665
+ rangeSelection.onKeyboardRangeSelectionStart,
666
+ selectRows,
667
+ selectAll,
668
+ cursorColIdx,
669
+ cursorRowIdx,
670
+ sortedRowData.length,
671
+ cols.length,
672
+ focusedPart
673
+ ]
674
+ );
675
+ const clipboardKeyHandler = useCallback(
676
+ (event) => {
677
+ const { key } = event;
678
+ if (key === "c" && (event.ctrlKey || event.metaKey) && rangeSelection.selectedCellRange) {
679
+ const { start, end } = rangeSelection.selectedCellRange;
680
+ const c = (x, y) => x - y;
681
+ const [minRow, maxRow] = [start.rowIdx, end.rowIdx].sort(c);
682
+ const [minCol, maxCol] = [start.colIdx, end.colIdx].sort(c);
683
+ const text = [];
684
+ for (let r = minRow; r <= maxRow; ++r) {
685
+ const row = sortedRowData[r];
686
+ const rowText = [];
687
+ for (let c2 = minCol; c2 <= maxCol; ++c2) {
688
+ const col = cols[c2];
689
+ const cellValue = col.info.props.getValue(row);
690
+ rowText.push(cellValue);
691
+ }
692
+ text.push(rowText.join(" "));
693
+ }
694
+ navigator.clipboard.writeText(text.join("\n"));
695
+ event.preventDefault();
696
+ event.stopPropagation();
697
+ return true;
698
+ }
699
+ return false;
700
+ },
701
+ [rangeSelection.selectedCellRange]
702
+ );
703
+ const pageSize = Math.max(1, visRowRng.length - 1);
704
+ const navigationKeyHandler = useCallback(
705
+ (event) => {
706
+ const { key } = event;
707
+ switch (key) {
708
+ case "ArrowLeft":
709
+ moveCursor(focusedPart, cursorRowIdx, (cursorColIdx || 0) - 1);
710
+ break;
711
+ case "ArrowRight":
712
+ moveCursor(focusedPart, cursorRowIdx, (cursorColIdx || 0) + 1);
713
+ break;
714
+ case "ArrowUp":
715
+ if (cursorRowIdx === 0 && headerIsFocusable) {
716
+ moveCursor("header", 0, cursorColIdx);
717
+ } else {
718
+ moveCursor(focusedPart, (cursorRowIdx || 0) - 1, cursorColIdx);
719
+ }
720
+ break;
721
+ case "ArrowDown":
722
+ if (focusedPart === "header") {
723
+ moveCursor("body", 0, cursorColIdx);
724
+ } else {
725
+ moveCursor(focusedPart, (cursorRowIdx || 0) + 1, cursorColIdx);
726
+ }
727
+ break;
728
+ case "PageUp":
729
+ if (cursorRowIdx === 0 && headerIsFocusable) {
730
+ moveCursor("header", 0, cursorColIdx);
731
+ } else {
732
+ moveCursor(
733
+ focusedPart,
734
+ (cursorRowIdx || 0) - pageSize,
735
+ cursorColIdx
736
+ );
737
+ }
738
+ break;
739
+ case "PageDown":
740
+ if (focusedPart === "header") {
741
+ moveCursor("body", 0, cursorColIdx);
742
+ } else {
743
+ moveCursor(
744
+ focusedPart,
745
+ (cursorRowIdx || 0) + pageSize,
746
+ cursorColIdx
747
+ );
748
+ }
749
+ break;
750
+ case "Home":
751
+ if (!event.ctrlKey) {
752
+ moveCursor(focusedPart, cursorRowIdx, 0);
753
+ } else {
754
+ moveCursor(focusedPart, 0, 0);
755
+ }
756
+ break;
757
+ case "End":
758
+ if (!event.ctrlKey) {
759
+ moveCursor(focusedPart, cursorRowIdx, cols.length - 1);
760
+ } else {
761
+ moveCursor(focusedPart, sortedRowData.length - 1, cols.length - 1);
762
+ }
763
+ break;
764
+ case "Tab":
765
+ if (!event.ctrlKey && !event.metaKey && !event.altKey && editMode && cursorColIdx != null && cursorRowIdx != null) {
766
+ if (!event.shiftKey) {
767
+ if (cursorColIdx < cols.length - 1) {
768
+ moveCursor(focusedPart, cursorRowIdx, cursorColIdx + 1);
769
+ } else {
770
+ if (cursorRowIdx < sortedRowData.length - 1) {
771
+ moveCursor(focusedPart, cursorRowIdx + 1, 0);
772
+ }
773
+ }
774
+ } else {
775
+ if (cursorColIdx > 0) {
776
+ moveCursor(focusedPart, cursorRowIdx, cursorColIdx - 1);
777
+ } else {
778
+ if (cursorRowIdx > 0) {
779
+ moveCursor(focusedPart, cursorRowIdx - 1, cols.length - 1);
780
+ }
781
+ }
782
+ }
783
+ } else {
784
+ return false;
785
+ }
786
+ break;
787
+ case "Enter":
788
+ if (editMode && !event.ctrlKey && !event.metaKey && !event.altKey && !event.shiftKey) {
789
+ if (cursorRowIdx == void 0) {
790
+ moveCursor(focusedPart, 0, 0);
791
+ } else {
792
+ moveCursor(focusedPart, cursorRowIdx + 1, cursorColIdx);
793
+ }
794
+ } else {
795
+ return false;
796
+ }
797
+ break;
798
+ default:
799
+ return false;
800
+ }
801
+ event.preventDefault();
802
+ event.stopPropagation();
803
+ return true;
804
+ },
805
+ [
806
+ moveCursor,
807
+ cursorRowIdx,
808
+ cursorRowIdx,
809
+ cols.length,
810
+ sortedRowData.length,
811
+ headerIsFocusable,
812
+ pageSize
813
+ ]
814
+ );
815
+ const columnMoveKeyHandler = useCallback(
816
+ (event) => {
817
+ const { key } = event;
818
+ if (key === "Escape") {
819
+ onColumnMoveCancel();
820
+ event.preventDefault();
821
+ event.stopPropagation();
822
+ return true;
823
+ }
824
+ return false;
825
+ },
826
+ []
827
+ );
828
+ const onKeyDown = useCallback(
829
+ (event) => {
830
+ if (cursorColIdx != void 0 && cursorRowIdx != void 0) {
831
+ const column = cols[cursorColIdx];
832
+ if (column.info.props.onKeyDown) {
833
+ column.info.props.onKeyDown(event, cursorRowIdx);
834
+ }
835
+ }
836
+ if (!event.isPropagationStopped()) {
837
+ [
838
+ navigationKeyHandler,
839
+ clipboardKeyHandler,
840
+ selectionKeyHandler,
841
+ editModeKeyHandler,
842
+ columnMoveKeyHandler
843
+ ].find((handler) => {
844
+ return handler(event);
845
+ });
846
+ }
847
+ },
848
+ [
849
+ navigationKeyHandler,
850
+ clipboardKeyHandler,
851
+ selectionKeyHandler,
852
+ editModeKeyHandler,
853
+ columnMoveKeyHandler
854
+ ]
855
+ );
856
+ const selectionContext = useMemo(
857
+ () => ({
858
+ selRowIdxs,
859
+ selectRows,
860
+ isAllSelected,
861
+ isAnySelected,
862
+ selectAll,
863
+ unselectAll,
864
+ selectedCellRange: rangeSelection == null ? void 0 : rangeSelection.selectedCellRange
865
+ }),
866
+ [
867
+ selRowIdxs,
868
+ selectRows,
869
+ isAllSelected,
870
+ isAnySelected,
871
+ selectAll,
872
+ unselectAll,
873
+ rangeSelection == null ? void 0 : rangeSelection.selectedCellRange
874
+ ]
875
+ );
876
+ useEffect(() => {
877
+ if (onVisibleRowRangeChange) {
878
+ onVisibleRowRangeChange(visRowRng.start, visRowRng.end);
879
+ }
880
+ }, [onVisibleRowRangeChange, visRowRng]);
881
+ return /* @__PURE__ */ jsx(GridContext.Provider, {
882
+ value: contextValue,
883
+ children: /* @__PURE__ */ jsx(LayoutContext.Provider, {
884
+ value: layoutContext,
885
+ children: /* @__PURE__ */ jsx(SelectionContext.Provider, {
886
+ value: selectionContext,
887
+ children: /* @__PURE__ */ jsx(ColumnDragContext.Provider, {
888
+ value: columnDragContext,
889
+ children: /* @__PURE__ */ jsx(CursorContext.Provider, {
890
+ value: cursorContext,
891
+ children: /* @__PURE__ */ jsx(SizingContext.Provider, {
892
+ value: sizingContext,
893
+ children: /* @__PURE__ */ jsx(EditorContext.Provider, {
894
+ value: editorContext,
895
+ children: /* @__PURE__ */ jsx(ColumnDataContext.Provider, {
896
+ value: columnDataContext,
897
+ children: /* @__PURE__ */ jsxs(ColumnSortContext.Provider, {
898
+ value: columnSortContext,
899
+ children: [
900
+ props.children,
901
+ /* @__PURE__ */ jsxs("div", {
902
+ className: clsx(
903
+ withBaseName(),
904
+ {
905
+ [withBaseName("zebra")]: zebra,
906
+ [withBaseName("columnSeparators")]: columnSeparators,
907
+ [withBaseName("pinnedSeparators")]: pinnedSeparators,
908
+ [withBaseName("primaryBackground")]: variant === "primary",
909
+ [withBaseName("secondaryBackground")]: variant === "secondary"
910
+ },
911
+ className
912
+ ),
913
+ style: rootStyle,
914
+ ref: rootRef,
915
+ onKeyDown,
916
+ onKeyUp,
917
+ onMouseDown,
918
+ onFocus,
919
+ onBlur,
920
+ "data-name": "grid-root",
921
+ role: "grid",
922
+ "aria-colcount": cols.length,
923
+ "aria-rowcount": rowCount + headRowCount,
924
+ "aria-multiselectable": rowSelectionMode === "multi",
925
+ children: [
926
+ /* @__PURE__ */ jsx(CellMeasure, {
927
+ setRowHeight
928
+ }),
929
+ /* @__PURE__ */ jsx(Scrollable, {
930
+ resizeClient,
931
+ scrollLeft,
932
+ scrollTop,
933
+ scrollSource,
934
+ scroll,
935
+ scrollerRef: scrollableRef,
936
+ topRef,
937
+ rightRef,
938
+ bottomRef,
939
+ leftRef,
940
+ middleRef
941
+ }),
942
+ !hideHeader && leftCols.length > 0 && /* @__PURE__ */ jsx(TopLeftPart, {
943
+ onWheel,
944
+ columns: leftCols,
945
+ columnGroups: leftGroups,
946
+ rightShadow: isLeftRaised,
947
+ bottomShadow: isHeaderRaised
948
+ }),
949
+ !hideHeader && /* @__PURE__ */ jsx(TopPart, {
950
+ columns: headVisibleColumns,
951
+ columnGroups: visColGrps,
952
+ topRef,
953
+ onWheel,
954
+ midGap,
955
+ bottomShadow: isHeaderRaised
956
+ }),
957
+ !hideHeader && rightCols.length > 0 && /* @__PURE__ */ jsx(TopRightPart, {
958
+ onWheel,
959
+ columns: rightCols,
960
+ columnGroups: rightGroups,
961
+ leftShadow: isRightRaised,
962
+ bottomShadow: isHeaderRaised
963
+ }),
964
+ leftCols.length > 0 && /* @__PURE__ */ jsx(LeftPart, {
965
+ leftRef,
966
+ onWheel,
967
+ columns: leftCols,
968
+ rows,
969
+ rightShadow: isLeftRaised,
970
+ hoverOverRowKey: hoverRowKey,
971
+ setHoverOverRowKey: setHoverRowKey,
972
+ zebra,
973
+ getRowValidationStatus
974
+ }),
975
+ /* @__PURE__ */ jsx(MiddlePart, {
976
+ middleRef,
977
+ onWheel,
978
+ columns: bodyVisibleColumns,
979
+ rows,
980
+ hoverOverRowKey: hoverRowKey,
981
+ setHoverOverRowKey: setHoverRowKey,
982
+ midGap,
983
+ zebra,
984
+ getRowValidationStatus
985
+ }),
986
+ rightCols.length > 0 && /* @__PURE__ */ jsx(RightPart, {
987
+ rightRef,
988
+ onWheel,
989
+ columns: rightCols,
990
+ rows,
991
+ leftShadow: isRightRaised,
992
+ hoverOverRowKey: hoverRowKey,
993
+ setHoverOverRowKey: setHoverRowKey,
994
+ zebra,
995
+ getRowValidationStatus
996
+ }),
997
+ /* @__PURE__ */ jsx(ColumnDropTarget, {
998
+ x: activeTarget == null ? void 0 : activeTarget.x
999
+ }),
1000
+ /* @__PURE__ */ jsx(ColumnGhost, {
1001
+ columns: cols,
1002
+ rows,
1003
+ dragState,
1004
+ zebra
1005
+ })
1006
+ ]
1007
+ })
1008
+ ]
1009
+ })
1010
+ })
1011
+ })
1012
+ })
1013
+ })
1014
+ })
1015
+ })
1016
+ })
1017
+ });
1018
+ };
1019
+
1020
+ export { Grid, SortOrder };
1021
+ //# sourceMappingURL=Grid.js.map