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