@salt-ds/data-grid 1.0.0

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 (370) hide show
  1. package/dist-cjs/node_modules/style-inject/dist/style-inject.es.js +31 -0
  2. package/dist-cjs/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
  3. package/dist-cjs/packages/grid/src/BaseCell.css.js +9 -0
  4. package/dist-cjs/packages/grid/src/BaseCell.css.js.map +1 -0
  5. package/dist-cjs/packages/grid/src/BaseCell.js +81 -0
  6. package/dist-cjs/packages/grid/src/BaseCell.js.map +1 -0
  7. package/dist-cjs/packages/grid/src/CellEditor.js +29 -0
  8. package/dist-cjs/packages/grid/src/CellEditor.js.map +1 -0
  9. package/dist-cjs/packages/grid/src/CheckboxCell.css.js +9 -0
  10. package/dist-cjs/packages/grid/src/CheckboxCell.css.js.map +1 -0
  11. package/dist-cjs/packages/grid/src/ColumnDataContext.js +18 -0
  12. package/dist-cjs/packages/grid/src/ColumnDataContext.js.map +1 -0
  13. package/dist-cjs/packages/grid/src/ColumnDragContext.js +20 -0
  14. package/dist-cjs/packages/grid/src/ColumnDragContext.js.map +1 -0
  15. package/dist-cjs/packages/grid/src/ColumnGroup.js +32 -0
  16. package/dist-cjs/packages/grid/src/ColumnGroup.js.map +1 -0
  17. package/dist-cjs/packages/grid/src/CornerTag.css.js +9 -0
  18. package/dist-cjs/packages/grid/src/CornerTag.css.js.map +1 -0
  19. package/dist-cjs/packages/grid/src/CornerTag.js +15 -0
  20. package/dist-cjs/packages/grid/src/CornerTag.js.map +1 -0
  21. package/dist-cjs/packages/grid/src/CursorContext.js +20 -0
  22. package/dist-cjs/packages/grid/src/CursorContext.js.map +1 -0
  23. package/dist-cjs/packages/grid/src/DropdownCellEditor.css.js +9 -0
  24. package/dist-cjs/packages/grid/src/DropdownCellEditor.css.js.map +1 -0
  25. package/dist-cjs/packages/grid/src/DropdownCellEditor.js +75 -0
  26. package/dist-cjs/packages/grid/src/DropdownCellEditor.js.map +1 -0
  27. package/dist-cjs/packages/grid/src/EditorContext.js +20 -0
  28. package/dist-cjs/packages/grid/src/EditorContext.js.map +1 -0
  29. package/dist-cjs/packages/grid/src/Grid.css.js +9 -0
  30. package/dist-cjs/packages/grid/src/Grid.css.js.map +1 -0
  31. package/dist-cjs/packages/grid/src/Grid.js +938 -0
  32. package/dist-cjs/packages/grid/src/Grid.js.map +1 -0
  33. package/dist-cjs/packages/grid/src/GridColumn.js +43 -0
  34. package/dist-cjs/packages/grid/src/GridColumn.js.map +1 -0
  35. package/dist-cjs/packages/grid/src/GridContext.js +20 -0
  36. package/dist-cjs/packages/grid/src/GridContext.js.map +1 -0
  37. package/dist-cjs/packages/grid/src/GroupHeaderCell.css.js +9 -0
  38. package/dist-cjs/packages/grid/src/GroupHeaderCell.css.js.map +1 -0
  39. package/dist-cjs/packages/grid/src/GroupHeaderCell.js +50 -0
  40. package/dist-cjs/packages/grid/src/GroupHeaderCell.js.map +1 -0
  41. package/dist-cjs/packages/grid/src/GroupHeaderCellValue.js +16 -0
  42. package/dist-cjs/packages/grid/src/GroupHeaderCellValue.js.map +1 -0
  43. package/dist-cjs/packages/grid/src/HeaderCell.css.js +9 -0
  44. package/dist-cjs/packages/grid/src/HeaderCell.css.js.map +1 -0
  45. package/dist-cjs/packages/grid/src/HeaderCell.js +120 -0
  46. package/dist-cjs/packages/grid/src/HeaderCell.js.map +1 -0
  47. package/dist-cjs/packages/grid/src/HeaderCellValue.js +19 -0
  48. package/dist-cjs/packages/grid/src/HeaderCellValue.js.map +1 -0
  49. package/dist-cjs/packages/grid/src/LayoutContext.js +12 -0
  50. package/dist-cjs/packages/grid/src/LayoutContext.js.map +1 -0
  51. package/dist-cjs/packages/grid/src/NumberRange.js +63 -0
  52. package/dist-cjs/packages/grid/src/NumberRange.js.map +1 -0
  53. package/dist-cjs/packages/grid/src/NumericColumn.css.js +9 -0
  54. package/dist-cjs/packages/grid/src/NumericColumn.css.js.map +1 -0
  55. package/dist-cjs/packages/grid/src/NumericColumn.js +108 -0
  56. package/dist-cjs/packages/grid/src/NumericColumn.js.map +1 -0
  57. package/dist-cjs/packages/grid/src/RowSelectionCheckboxCellValue.js +37 -0
  58. package/dist-cjs/packages/grid/src/RowSelectionCheckboxCellValue.js.map +1 -0
  59. package/dist-cjs/packages/grid/src/RowSelectionCheckboxColumn.js +32 -0
  60. package/dist-cjs/packages/grid/src/RowSelectionCheckboxColumn.js.map +1 -0
  61. package/dist-cjs/packages/grid/src/RowSelectionCheckboxHeaderCellValue.js +48 -0
  62. package/dist-cjs/packages/grid/src/RowSelectionCheckboxHeaderCellValue.js.map +1 -0
  63. package/dist-cjs/packages/grid/src/RowSelectionRadioCellValue.js +25 -0
  64. package/dist-cjs/packages/grid/src/RowSelectionRadioCellValue.js.map +1 -0
  65. package/dist-cjs/packages/grid/src/RowSelectionRadioColumn.js +30 -0
  66. package/dist-cjs/packages/grid/src/RowSelectionRadioColumn.js.map +1 -0
  67. package/dist-cjs/packages/grid/src/RowSelectionRadioHeaderCell.js +26 -0
  68. package/dist-cjs/packages/grid/src/RowSelectionRadioHeaderCell.js.map +1 -0
  69. package/dist-cjs/packages/grid/src/SelectionContext.js +20 -0
  70. package/dist-cjs/packages/grid/src/SelectionContext.js.map +1 -0
  71. package/dist-cjs/packages/grid/src/SizingContext.js +20 -0
  72. package/dist-cjs/packages/grid/src/SizingContext.js.map +1 -0
  73. package/dist-cjs/packages/grid/src/TextCellEditor.css.js +9 -0
  74. package/dist-cjs/packages/grid/src/TextCellEditor.css.js.map +1 -0
  75. package/dist-cjs/packages/grid/src/TextCellEditor.js +85 -0
  76. package/dist-cjs/packages/grid/src/TextCellEditor.js.map +1 -0
  77. package/dist-cjs/packages/grid/src/index.js +59 -0
  78. package/dist-cjs/packages/grid/src/index.js.map +1 -0
  79. package/dist-cjs/packages/grid/src/internal/Cell.css.js +9 -0
  80. package/dist-cjs/packages/grid/src/internal/Cell.css.js.map +1 -0
  81. package/dist-cjs/packages/grid/src/internal/Cell.js +59 -0
  82. package/dist-cjs/packages/grid/src/internal/Cell.js.map +1 -0
  83. package/dist-cjs/packages/grid/src/internal/CellMeasure.css.js +9 -0
  84. package/dist-cjs/packages/grid/src/internal/CellMeasure.css.js.map +1 -0
  85. package/dist-cjs/packages/grid/src/internal/CellMeasure.js +41 -0
  86. package/dist-cjs/packages/grid/src/internal/CellMeasure.js.map +1 -0
  87. package/dist-cjs/packages/grid/src/internal/ColumnDropTarget.css.js +9 -0
  88. package/dist-cjs/packages/grid/src/internal/ColumnDropTarget.css.js.map +1 -0
  89. package/dist-cjs/packages/grid/src/internal/ColumnDropTarget.js +28 -0
  90. package/dist-cjs/packages/grid/src/internal/ColumnDropTarget.js.map +1 -0
  91. package/dist-cjs/packages/grid/src/internal/ColumnGhost.css.js +9 -0
  92. package/dist-cjs/packages/grid/src/internal/ColumnGhost.css.js.map +1 -0
  93. package/dist-cjs/packages/grid/src/internal/ColumnGhost.js +51 -0
  94. package/dist-cjs/packages/grid/src/internal/ColumnGhost.js.map +1 -0
  95. package/dist-cjs/packages/grid/src/internal/Cursor.css.js +9 -0
  96. package/dist-cjs/packages/grid/src/internal/Cursor.css.js.map +1 -0
  97. package/dist-cjs/packages/grid/src/internal/Cursor.js +17 -0
  98. package/dist-cjs/packages/grid/src/internal/Cursor.js.map +1 -0
  99. package/dist-cjs/packages/grid/src/internal/DefaultCellValue.css.js +9 -0
  100. package/dist-cjs/packages/grid/src/internal/DefaultCellValue.css.js.map +1 -0
  101. package/dist-cjs/packages/grid/src/internal/DefaultCellValue.js +26 -0
  102. package/dist-cjs/packages/grid/src/internal/DefaultCellValue.js.map +1 -0
  103. package/dist-cjs/packages/grid/src/internal/FakeCell.css.js +9 -0
  104. package/dist-cjs/packages/grid/src/internal/FakeCell.css.js.map +1 -0
  105. package/dist-cjs/packages/grid/src/internal/FakeCell.js +19 -0
  106. package/dist-cjs/packages/grid/src/internal/FakeCell.js.map +1 -0
  107. package/dist-cjs/packages/grid/src/internal/FakeGroupCell.js +12 -0
  108. package/dist-cjs/packages/grid/src/internal/FakeGroupCell.js.map +1 -0
  109. package/dist-cjs/packages/grid/src/internal/FakeHeaderCell.js +14 -0
  110. package/dist-cjs/packages/grid/src/internal/FakeHeaderCell.js.map +1 -0
  111. package/dist-cjs/packages/grid/src/internal/GroupHeaderRow.css.js +9 -0
  112. package/dist-cjs/packages/grid/src/internal/GroupHeaderRow.css.js.map +1 -0
  113. package/dist-cjs/packages/grid/src/internal/GroupHeaderRow.js +38 -0
  114. package/dist-cjs/packages/grid/src/internal/GroupHeaderRow.js.map +1 -0
  115. package/dist-cjs/packages/grid/src/internal/HeaderRow.css.js +9 -0
  116. package/dist-cjs/packages/grid/src/internal/HeaderRow.css.js.map +1 -0
  117. package/dist-cjs/packages/grid/src/internal/HeaderRow.js +42 -0
  118. package/dist-cjs/packages/grid/src/internal/HeaderRow.js.map +1 -0
  119. package/dist-cjs/packages/grid/src/internal/LeftPart.css.js +9 -0
  120. package/dist-cjs/packages/grid/src/internal/LeftPart.css.js.map +1 -0
  121. package/dist-cjs/packages/grid/src/internal/LeftPart.js +62 -0
  122. package/dist-cjs/packages/grid/src/internal/LeftPart.js.map +1 -0
  123. package/dist-cjs/packages/grid/src/internal/MiddlePart.css.js +9 -0
  124. package/dist-cjs/packages/grid/src/internal/MiddlePart.css.js.map +1 -0
  125. package/dist-cjs/packages/grid/src/internal/MiddlePart.js +54 -0
  126. package/dist-cjs/packages/grid/src/internal/MiddlePart.js.map +1 -0
  127. package/dist-cjs/packages/grid/src/internal/RightPart.css.js +9 -0
  128. package/dist-cjs/packages/grid/src/internal/RightPart.css.js.map +1 -0
  129. package/dist-cjs/packages/grid/src/internal/RightPart.js +62 -0
  130. package/dist-cjs/packages/grid/src/internal/RightPart.js.map +1 -0
  131. package/dist-cjs/packages/grid/src/internal/Scrollable.css.js +9 -0
  132. package/dist-cjs/packages/grid/src/internal/Scrollable.css.js.map +1 -0
  133. package/dist-cjs/packages/grid/src/internal/Scrollable.js +89 -0
  134. package/dist-cjs/packages/grid/src/internal/Scrollable.js.map +1 -0
  135. package/dist-cjs/packages/grid/src/internal/TableBody.js +70 -0
  136. package/dist-cjs/packages/grid/src/internal/TableBody.js.map +1 -0
  137. package/dist-cjs/packages/grid/src/internal/TableColGroup.js +37 -0
  138. package/dist-cjs/packages/grid/src/internal/TableColGroup.js.map +1 -0
  139. package/dist-cjs/packages/grid/src/internal/TableRow.css.js +9 -0
  140. package/dist-cjs/packages/grid/src/internal/TableRow.css.js.map +1 -0
  141. package/dist-cjs/packages/grid/src/internal/TableRow.js +99 -0
  142. package/dist-cjs/packages/grid/src/internal/TableRow.js.map +1 -0
  143. package/dist-cjs/packages/grid/src/internal/TopLeftPart.css.js +9 -0
  144. package/dist-cjs/packages/grid/src/internal/TopLeftPart.css.js.map +1 -0
  145. package/dist-cjs/packages/grid/src/internal/TopLeftPart.js +54 -0
  146. package/dist-cjs/packages/grid/src/internal/TopLeftPart.js.map +1 -0
  147. package/dist-cjs/packages/grid/src/internal/TopPart.css.js +9 -0
  148. package/dist-cjs/packages/grid/src/internal/TopPart.css.js.map +1 -0
  149. package/dist-cjs/packages/grid/src/internal/TopPart.js +57 -0
  150. package/dist-cjs/packages/grid/src/internal/TopPart.js.map +1 -0
  151. package/dist-cjs/packages/grid/src/internal/TopRightPart.css.js +9 -0
  152. package/dist-cjs/packages/grid/src/internal/TopRightPart.css.js.map +1 -0
  153. package/dist-cjs/packages/grid/src/internal/TopRightPart.js +55 -0
  154. package/dist-cjs/packages/grid/src/internal/TopRightPart.js.map +1 -0
  155. package/dist-cjs/packages/grid/src/internal/gridHooks.js +916 -0
  156. package/dist-cjs/packages/grid/src/internal/gridHooks.js.map +1 -0
  157. package/dist-cjs/packages/grid/src/internal/utils.js +71 -0
  158. package/dist-cjs/packages/grid/src/internal/utils.js.map +1 -0
  159. package/dist-es/node_modules/style-inject/dist/style-inject.es.js +29 -0
  160. package/dist-es/node_modules/style-inject/dist/style-inject.es.js.map +1 -0
  161. package/dist-es/packages/grid/src/BaseCell.css.js +7 -0
  162. package/dist-es/packages/grid/src/BaseCell.css.js.map +1 -0
  163. package/dist-es/packages/grid/src/BaseCell.js +72 -0
  164. package/dist-es/packages/grid/src/BaseCell.js.map +1 -0
  165. package/dist-es/packages/grid/src/CellEditor.js +25 -0
  166. package/dist-es/packages/grid/src/CellEditor.js.map +1 -0
  167. package/dist-es/packages/grid/src/CheckboxCell.css.js +7 -0
  168. package/dist-es/packages/grid/src/CheckboxCell.css.js.map +1 -0
  169. package/dist-es/packages/grid/src/ColumnDataContext.js +13 -0
  170. package/dist-es/packages/grid/src/ColumnDataContext.js.map +1 -0
  171. package/dist-es/packages/grid/src/ColumnDragContext.js +15 -0
  172. package/dist-es/packages/grid/src/ColumnDragContext.js.map +1 -0
  173. package/dist-es/packages/grid/src/ColumnGroup.js +28 -0
  174. package/dist-es/packages/grid/src/ColumnGroup.js.map +1 -0
  175. package/dist-es/packages/grid/src/CornerTag.css.js +7 -0
  176. package/dist-es/packages/grid/src/CornerTag.css.js.map +1 -0
  177. package/dist-es/packages/grid/src/CornerTag.js +11 -0
  178. package/dist-es/packages/grid/src/CornerTag.js.map +1 -0
  179. package/dist-es/packages/grid/src/CursorContext.js +15 -0
  180. package/dist-es/packages/grid/src/CursorContext.js.map +1 -0
  181. package/dist-es/packages/grid/src/DropdownCellEditor.css.js +7 -0
  182. package/dist-es/packages/grid/src/DropdownCellEditor.css.js.map +1 -0
  183. package/dist-es/packages/grid/src/DropdownCellEditor.js +71 -0
  184. package/dist-es/packages/grid/src/DropdownCellEditor.js.map +1 -0
  185. package/dist-es/packages/grid/src/EditorContext.js +15 -0
  186. package/dist-es/packages/grid/src/EditorContext.js.map +1 -0
  187. package/dist-es/packages/grid/src/Grid.css.js +7 -0
  188. package/dist-es/packages/grid/src/Grid.css.js.map +1 -0
  189. package/dist-es/packages/grid/src/Grid.js +930 -0
  190. package/dist-es/packages/grid/src/Grid.js.map +1 -0
  191. package/dist-es/packages/grid/src/GridColumn.js +39 -0
  192. package/dist-es/packages/grid/src/GridColumn.js.map +1 -0
  193. package/dist-es/packages/grid/src/GridContext.js +15 -0
  194. package/dist-es/packages/grid/src/GridContext.js.map +1 -0
  195. package/dist-es/packages/grid/src/GroupHeaderCell.css.js +7 -0
  196. package/dist-es/packages/grid/src/GroupHeaderCell.css.js.map +1 -0
  197. package/dist-es/packages/grid/src/GroupHeaderCell.js +42 -0
  198. package/dist-es/packages/grid/src/GroupHeaderCell.js.map +1 -0
  199. package/dist-es/packages/grid/src/GroupHeaderCellValue.js +12 -0
  200. package/dist-es/packages/grid/src/GroupHeaderCellValue.js.map +1 -0
  201. package/dist-es/packages/grid/src/HeaderCell.css.js +7 -0
  202. package/dist-es/packages/grid/src/HeaderCell.css.js.map +1 -0
  203. package/dist-es/packages/grid/src/HeaderCell.js +110 -0
  204. package/dist-es/packages/grid/src/HeaderCell.js.map +1 -0
  205. package/dist-es/packages/grid/src/HeaderCellValue.js +15 -0
  206. package/dist-es/packages/grid/src/HeaderCellValue.js.map +1 -0
  207. package/dist-es/packages/grid/src/LayoutContext.js +8 -0
  208. package/dist-es/packages/grid/src/LayoutContext.js.map +1 -0
  209. package/dist-es/packages/grid/src/NumberRange.js +58 -0
  210. package/dist-es/packages/grid/src/NumberRange.js.map +1 -0
  211. package/dist-es/packages/grid/src/NumericColumn.css.js +7 -0
  212. package/dist-es/packages/grid/src/NumericColumn.css.js.map +1 -0
  213. package/dist-es/packages/grid/src/NumericColumn.js +102 -0
  214. package/dist-es/packages/grid/src/NumericColumn.js.map +1 -0
  215. package/dist-es/packages/grid/src/RowSelectionCheckboxCellValue.js +33 -0
  216. package/dist-es/packages/grid/src/RowSelectionCheckboxCellValue.js.map +1 -0
  217. package/dist-es/packages/grid/src/RowSelectionCheckboxColumn.js +28 -0
  218. package/dist-es/packages/grid/src/RowSelectionCheckboxColumn.js.map +1 -0
  219. package/dist-es/packages/grid/src/RowSelectionCheckboxHeaderCellValue.js +44 -0
  220. package/dist-es/packages/grid/src/RowSelectionCheckboxHeaderCellValue.js.map +1 -0
  221. package/dist-es/packages/grid/src/RowSelectionRadioCellValue.js +21 -0
  222. package/dist-es/packages/grid/src/RowSelectionRadioCellValue.js.map +1 -0
  223. package/dist-es/packages/grid/src/RowSelectionRadioColumn.js +26 -0
  224. package/dist-es/packages/grid/src/RowSelectionRadioColumn.js.map +1 -0
  225. package/dist-es/packages/grid/src/RowSelectionRadioHeaderCell.js +18 -0
  226. package/dist-es/packages/grid/src/RowSelectionRadioHeaderCell.js.map +1 -0
  227. package/dist-es/packages/grid/src/SelectionContext.js +15 -0
  228. package/dist-es/packages/grid/src/SelectionContext.js.map +1 -0
  229. package/dist-es/packages/grid/src/SizingContext.js +15 -0
  230. package/dist-es/packages/grid/src/SizingContext.js.map +1 -0
  231. package/dist-es/packages/grid/src/TextCellEditor.css.js +7 -0
  232. package/dist-es/packages/grid/src/TextCellEditor.css.js.map +1 -0
  233. package/dist-es/packages/grid/src/TextCellEditor.js +81 -0
  234. package/dist-es/packages/grid/src/TextCellEditor.js.map +1 -0
  235. package/dist-es/packages/grid/src/index.js +22 -0
  236. package/dist-es/packages/grid/src/index.js.map +1 -0
  237. package/dist-es/packages/grid/src/internal/Cell.css.js +7 -0
  238. package/dist-es/packages/grid/src/internal/Cell.css.js.map +1 -0
  239. package/dist-es/packages/grid/src/internal/Cell.js +51 -0
  240. package/dist-es/packages/grid/src/internal/Cell.js.map +1 -0
  241. package/dist-es/packages/grid/src/internal/CellMeasure.css.js +7 -0
  242. package/dist-es/packages/grid/src/internal/CellMeasure.css.js.map +1 -0
  243. package/dist-es/packages/grid/src/internal/CellMeasure.js +37 -0
  244. package/dist-es/packages/grid/src/internal/CellMeasure.js.map +1 -0
  245. package/dist-es/packages/grid/src/internal/ColumnDropTarget.css.js +7 -0
  246. package/dist-es/packages/grid/src/internal/ColumnDropTarget.css.js.map +1 -0
  247. package/dist-es/packages/grid/src/internal/ColumnDropTarget.js +24 -0
  248. package/dist-es/packages/grid/src/internal/ColumnDropTarget.js.map +1 -0
  249. package/dist-es/packages/grid/src/internal/ColumnGhost.css.js +7 -0
  250. package/dist-es/packages/grid/src/internal/ColumnGhost.css.js.map +1 -0
  251. package/dist-es/packages/grid/src/internal/ColumnGhost.js +47 -0
  252. package/dist-es/packages/grid/src/internal/ColumnGhost.js.map +1 -0
  253. package/dist-es/packages/grid/src/internal/Cursor.css.js +7 -0
  254. package/dist-es/packages/grid/src/internal/Cursor.css.js.map +1 -0
  255. package/dist-es/packages/grid/src/internal/Cursor.js +13 -0
  256. package/dist-es/packages/grid/src/internal/Cursor.js.map +1 -0
  257. package/dist-es/packages/grid/src/internal/DefaultCellValue.css.js +7 -0
  258. package/dist-es/packages/grid/src/internal/DefaultCellValue.css.js.map +1 -0
  259. package/dist-es/packages/grid/src/internal/DefaultCellValue.js +18 -0
  260. package/dist-es/packages/grid/src/internal/DefaultCellValue.js.map +1 -0
  261. package/dist-es/packages/grid/src/internal/FakeCell.css.js +7 -0
  262. package/dist-es/packages/grid/src/internal/FakeCell.css.js.map +1 -0
  263. package/dist-es/packages/grid/src/internal/FakeCell.js +15 -0
  264. package/dist-es/packages/grid/src/internal/FakeCell.js.map +1 -0
  265. package/dist-es/packages/grid/src/internal/FakeGroupCell.js +8 -0
  266. package/dist-es/packages/grid/src/internal/FakeGroupCell.js.map +1 -0
  267. package/dist-es/packages/grid/src/internal/FakeHeaderCell.js +10 -0
  268. package/dist-es/packages/grid/src/internal/FakeHeaderCell.js.map +1 -0
  269. package/dist-es/packages/grid/src/internal/GroupHeaderRow.css.js +7 -0
  270. package/dist-es/packages/grid/src/internal/GroupHeaderRow.css.js.map +1 -0
  271. package/dist-es/packages/grid/src/internal/GroupHeaderRow.js +34 -0
  272. package/dist-es/packages/grid/src/internal/GroupHeaderRow.js.map +1 -0
  273. package/dist-es/packages/grid/src/internal/HeaderRow.css.js +7 -0
  274. package/dist-es/packages/grid/src/internal/HeaderRow.css.js.map +1 -0
  275. package/dist-es/packages/grid/src/internal/HeaderRow.js +38 -0
  276. package/dist-es/packages/grid/src/internal/HeaderRow.js.map +1 -0
  277. package/dist-es/packages/grid/src/internal/LeftPart.css.js +7 -0
  278. package/dist-es/packages/grid/src/internal/LeftPart.css.js.map +1 -0
  279. package/dist-es/packages/grid/src/internal/LeftPart.js +54 -0
  280. package/dist-es/packages/grid/src/internal/LeftPart.js.map +1 -0
  281. package/dist-es/packages/grid/src/internal/MiddlePart.css.js +7 -0
  282. package/dist-es/packages/grid/src/internal/MiddlePart.css.js.map +1 -0
  283. package/dist-es/packages/grid/src/internal/MiddlePart.js +50 -0
  284. package/dist-es/packages/grid/src/internal/MiddlePart.js.map +1 -0
  285. package/dist-es/packages/grid/src/internal/RightPart.css.js +7 -0
  286. package/dist-es/packages/grid/src/internal/RightPart.css.js.map +1 -0
  287. package/dist-es/packages/grid/src/internal/RightPart.js +54 -0
  288. package/dist-es/packages/grid/src/internal/RightPart.js.map +1 -0
  289. package/dist-es/packages/grid/src/internal/Scrollable.css.js +7 -0
  290. package/dist-es/packages/grid/src/internal/Scrollable.css.js.map +1 -0
  291. package/dist-es/packages/grid/src/internal/Scrollable.js +85 -0
  292. package/dist-es/packages/grid/src/internal/Scrollable.js.map +1 -0
  293. package/dist-es/packages/grid/src/internal/TableBody.js +66 -0
  294. package/dist-es/packages/grid/src/internal/TableBody.js.map +1 -0
  295. package/dist-es/packages/grid/src/internal/TableColGroup.js +32 -0
  296. package/dist-es/packages/grid/src/internal/TableColGroup.js.map +1 -0
  297. package/dist-es/packages/grid/src/internal/TableRow.css.js +7 -0
  298. package/dist-es/packages/grid/src/internal/TableRow.css.js.map +1 -0
  299. package/dist-es/packages/grid/src/internal/TableRow.js +91 -0
  300. package/dist-es/packages/grid/src/internal/TableRow.js.map +1 -0
  301. package/dist-es/packages/grid/src/internal/TopLeftPart.css.js +7 -0
  302. package/dist-es/packages/grid/src/internal/TopLeftPart.css.js.map +1 -0
  303. package/dist-es/packages/grid/src/internal/TopLeftPart.js +46 -0
  304. package/dist-es/packages/grid/src/internal/TopLeftPart.js.map +1 -0
  305. package/dist-es/packages/grid/src/internal/TopPart.css.js +7 -0
  306. package/dist-es/packages/grid/src/internal/TopPart.css.js.map +1 -0
  307. package/dist-es/packages/grid/src/internal/TopPart.js +49 -0
  308. package/dist-es/packages/grid/src/internal/TopPart.js.map +1 -0
  309. package/dist-es/packages/grid/src/internal/TopRightPart.css.js +7 -0
  310. package/dist-es/packages/grid/src/internal/TopRightPart.css.js.map +1 -0
  311. package/dist-es/packages/grid/src/internal/TopRightPart.js +47 -0
  312. package/dist-es/packages/grid/src/internal/TopRightPart.js.map +1 -0
  313. package/dist-es/packages/grid/src/internal/gridHooks.js +886 -0
  314. package/dist-es/packages/grid/src/internal/gridHooks.js.map +1 -0
  315. package/dist-es/packages/grid/src/internal/utils.js +61 -0
  316. package/dist-es/packages/grid/src/internal/utils.js.map +1 -0
  317. package/dist-types/BaseCell.d.ts +6 -0
  318. package/dist-types/CellEditor.d.ts +10 -0
  319. package/dist-types/ColumnDataContext.d.ts +7 -0
  320. package/dist-types/ColumnDragContext.d.ts +7 -0
  321. package/dist-types/ColumnGroup.d.ts +18 -0
  322. package/dist-types/CornerTag.d.ts +6 -0
  323. package/dist-types/CursorContext.d.ts +12 -0
  324. package/dist-types/DropdownCellEditor.d.ts +9 -0
  325. package/dist-types/EditorContext.d.ts +10 -0
  326. package/dist-types/Grid.d.ts +99 -0
  327. package/dist-types/GridColumn.d.ts +113 -0
  328. package/dist-types/GridContext.d.ts +16 -0
  329. package/dist-types/GroupHeaderCell.d.ts +8 -0
  330. package/dist-types/GroupHeaderCellValue.d.ts +3 -0
  331. package/dist-types/HeaderCell.d.ts +10 -0
  332. package/dist-types/HeaderCellValue.d.ts +3 -0
  333. package/dist-types/LayoutContext.d.ts +9 -0
  334. package/dist-types/NumberRange.d.ts +15 -0
  335. package/dist-types/NumericColumn.d.ts +15 -0
  336. package/dist-types/RowSelectionCheckboxCellValue.d.ts +4 -0
  337. package/dist-types/RowSelectionCheckboxColumn.d.ts +4 -0
  338. package/dist-types/RowSelectionCheckboxHeaderCellValue.d.ts +4 -0
  339. package/dist-types/RowSelectionRadioCellValue.d.ts +4 -0
  340. package/dist-types/RowSelectionRadioColumn.d.ts +4 -0
  341. package/dist-types/RowSelectionRadioHeaderCell.d.ts +4 -0
  342. package/dist-types/SelectionContext.d.ts +13 -0
  343. package/dist-types/SizingContext.d.ts +8 -0
  344. package/dist-types/TextCellEditor.d.ts +8 -0
  345. package/dist-types/index.d.ts +21 -0
  346. package/dist-types/internal/Cell.d.ts +9 -0
  347. package/dist-types/internal/CellMeasure.d.ts +6 -0
  348. package/dist-types/internal/ColumnDropTarget.d.ts +6 -0
  349. package/dist-types/internal/ColumnGhost.d.ts +11 -0
  350. package/dist-types/internal/Cursor.d.ts +5 -0
  351. package/dist-types/internal/DefaultCellValue.d.ts +4 -0
  352. package/dist-types/internal/FakeCell.d.ts +5 -0
  353. package/dist-types/internal/FakeGroupCell.d.ts +2 -0
  354. package/dist-types/internal/FakeHeaderCell.d.ts +2 -0
  355. package/dist-types/internal/GroupHeaderRow.d.ts +8 -0
  356. package/dist-types/internal/HeaderRow.d.ts +8 -0
  357. package/dist-types/internal/LeftPart.d.ts +14 -0
  358. package/dist-types/internal/MiddlePart.d.ts +14 -0
  359. package/dist-types/internal/RightPart.d.ts +14 -0
  360. package/dist-types/internal/Scrollable.d.ts +16 -0
  361. package/dist-types/internal/TableBody.d.ts +11 -0
  362. package/dist-types/internal/TableColGroup.d.ts +11 -0
  363. package/dist-types/internal/TableRow.d.ts +19 -0
  364. package/dist-types/internal/TopLeftPart.d.ts +11 -0
  365. package/dist-types/internal/TopPart.d.ts +12 -0
  366. package/dist-types/internal/TopRightPart.d.ts +11 -0
  367. package/dist-types/internal/gridHooks.d.ts +91 -0
  368. package/dist-types/internal/index.d.ts +21 -0
  369. package/dist-types/internal/utils.d.ts +13 -0
  370. package/package.json +41 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gridHooks.js","sources":["../src/internal/gridHooks.tsx"],"sourcesContent":["import React, {\n Children,\n FocusEventHandler,\n isValidElement,\n MouseEventHandler,\n ReactNode,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport {\n GridCellSelectionMode,\n GridColumnGroupModel,\n GridColumnModel,\n GridColumnMoveHandler,\n GridRowModel,\n GridRowSelectionMode,\n RowKeyGetter,\n} from \"../Grid\";\nimport { ColumnGroupProps } from \"../ColumnGroup\";\nimport { NumberRange } from \"../NumberRange\";\nimport { GridColumnInfo, GridColumnPin } from \"../GridColumn\";\nimport {\n getAttribute,\n getCellPosition,\n makeMapAdder,\n makeMapDeleter,\n} from \"./utils\";\nimport { GridContext } from \"../GridContext\";\nimport { CellEditorInfo } from \"../CellEditor\";\nimport { useControlled } from \"@salt-ds/core\";\nimport { FocusedPart } from \"../CursorContext\";\n\n// Attaches active onWheel event to a table element\n// Grid needs to prevent default onWheel event handling for situations when a\n// scrollable grid is on a scrollable page. Page should not scroll when the grid\n// is being scrolled.\nexport function useActiveOnWheel(onWheel: EventListener) {\n const tableRef = useRef<HTMLTableElement>(null);\n\n useEffect(() => {\n const table = tableRef.current;\n if (table && onWheel) {\n table.addEventListener(\"wheel\", onWheel, { passive: false });\n return () => {\n table.removeEventListener(\"wheel\", onWheel);\n };\n }\n }, [tableRef.current]);\n\n return tableRef;\n}\n\n// Total width of the given columns.\nfunction sumWidth<T>(columns: GridColumnModel<T>[]) {\n return columns.reduce((p, x) => p + x.info.width, 0);\n}\n\n// Returns total width of the given columns wrapped in useMemo.\nexport function useSumWidth<T>(columns: GridColumnModel<T>[]) {\n return useMemo(() => sumWidth(columns), [columns]);\n}\n\n// Memoized sum of the given numbers.\nexport function useSum(source: number[]) {\n return useMemo(() => source.reduce((p, x) => p + x, 0), source);\n}\n\n// Sum width of the given range of columns.\nfunction sumRangeWidth<T>(columns: GridColumnModel<T>[], range: NumberRange) {\n let w = 0;\n range.forEach((i) => {\n w += columns[i].info.width;\n });\n return w;\n}\n\n// Sum width of the given range of columns wrapped in useMemo.\nexport function useSumRangeWidth<T>(\n columns: GridColumnModel<T>[],\n range: NumberRange\n) {\n return useMemo(() => sumRangeWidth(columns, range), [columns, range]);\n}\n\n// Range memoization using Rng.equals comparator.\nfunction useMemoRng(fn: () => NumberRange, deps: any[]) {\n const prevRef = useRef<NumberRange>(NumberRange.empty);\n const range = useMemo(fn, deps);\n if (!NumberRange.equals(prevRef.current, range)) {\n prevRef.current = range;\n }\n return prevRef.current;\n}\n\n// Visible range of columns within the body.\nexport function useBodyVisibleColumnRange<T>(\n midColumns: GridColumnModel<T>[],\n scrollLeft: number,\n clientMidWidth: number\n): NumberRange {\n return useMemoRng(() => {\n if (clientMidWidth === 0 || midColumns.length === 0) {\n return NumberRange.empty;\n }\n let width = scrollLeft;\n let start = 0;\n for (let i = 0; i < midColumns.length; ++i) {\n const colWidth = midColumns[i].info.width;\n if (width > colWidth) {\n width -= colWidth;\n } else {\n start = i;\n width += clientMidWidth;\n break;\n }\n }\n let end = start + 1;\n for (let i = start; i < midColumns.length; ++i) {\n const colWidth = midColumns[i].info.width;\n width -= colWidth;\n end = i + 1;\n if (width <= 0) {\n break;\n }\n }\n if (end > midColumns.length) {\n end = midColumns.length;\n }\n return new NumberRange(start, end);\n }, [midColumns, scrollLeft, clientMidWidth]);\n}\n\n// Client width of the middle (scrollable) part of the grid.\nexport function useClientMidWidth(\n clientWidth: number,\n leftWidth: number,\n rightWidth: number\n) {\n return useMemo(\n () => clientWidth - leftWidth - rightWidth,\n [clientWidth, leftWidth, rightWidth]\n );\n}\n\n// Client height of the middle part of the grid.\nexport function useClientMidHeight(\n clientHeight: number,\n topHeight: number,\n botHeight: number\n) {\n return useMemo(\n () => clientHeight - topHeight - botHeight,\n [clientHeight, topHeight, botHeight]\n );\n}\n\n// Y coordinate of the visible area within the virtual space.\nexport function useBodyVisibleAreaTop<T>(\n rowHeight: number,\n visibleRowRange: NumberRange,\n topHeight: number\n) {\n return useMemo(() => {\n let top = topHeight + visibleRowRange.start * rowHeight;\n if (visibleRowRange.start > 0) {\n top += 1; // First row (row #0) has an extra border\n }\n return top;\n }, [rowHeight, visibleRowRange, topHeight]);\n}\n\n// Visible range of rows.\nexport function useVisibleRowRange(\n scrollTop: number,\n clientMidHeight: number,\n rowHeight: number,\n rowCount: number\n) {\n return useMemoRng(() => {\n if (rowHeight < 1) {\n return NumberRange.empty;\n }\n const firstRowHeight = rowHeight + 1; // First row has an extra 1px\n const start =\n scrollTop > firstRowHeight\n ? 1 + Math.floor((scrollTop - firstRowHeight) / rowHeight)\n : 0;\n let endPos = scrollTop + clientMidHeight;\n if (start === 0) {\n endPos -= 1;\n }\n const end = Math.min(\n rowCount,\n Math.max(start, Math.ceil(endPos / rowHeight))\n );\n return new NumberRange(start, end);\n }, [scrollTop, clientMidHeight, rowHeight, rowCount]);\n}\n\nexport function useColumnRange<T>(\n columns: GridColumnModel<T>[],\n range: NumberRange\n): GridColumnModel<T>[] {\n return useMemo(() => columns.slice(range.start, range.end), [columns, range]);\n}\n\n// Total width of the columns scrolled out to the left of the visible area.\nexport function useLeftScrolledOutWidth<T>(\n midColumns: GridColumnModel<T>[],\n bodyVisibleColumnRange: NumberRange\n) {\n return useMemo(() => {\n let w = 0;\n for (let i = 0; i < bodyVisibleColumnRange.start; ++i) {\n w += midColumns[i].info.width;\n }\n return w;\n }, [midColumns, bodyVisibleColumnRange]);\n}\n\n// Row positions by row keys.\nexport function useRowIdxByKey<T>(rowKeyGetter: RowKeyGetter<T>, rowData: T[]) {\n return useMemo(() => {\n return new Map<string, number>(\n rowData.map((r, i) => [rowKeyGetter(r, i), i])\n );\n }, [rowData, rowKeyGetter]);\n}\n\nexport type SetState<T> = (v: T | ((p: T) => T)) => void;\n\n// Row models for the visible rows.\nexport function useRowModels<T>(\n getKey: RowKeyGetter<T>,\n rowData: T[],\n visibleRowRange: NumberRange\n) {\n return useMemo(() => {\n const rows: GridRowModel<T>[] = [];\n visibleRowRange.forEach((i) => {\n const key = getKey(rowData[i], i);\n rows.push({ data: rowData[i], key, index: i });\n });\n return rows;\n }, [getKey, rowData, visibleRowRange]);\n}\n\n// Creates column group models.\nexport const useColumnGroups = (\n grpPs: ColumnGroupProps[],\n startIdx: number\n): GridColumnGroupModel[] =>\n useMemo(\n () =>\n grpPs.map((data, i) => {\n const childrenIds = Children.toArray(data.children)\n .map((child) => {\n if (!isValidElement(child)) {\n return undefined;\n }\n return child.props.id;\n })\n .filter((x) => x !== undefined) as string[];\n const colSpan = childrenIds.length;\n\n return {\n data,\n index: i + startIdx,\n childrenIds,\n colSpan,\n columnSeparator: \"regular\",\n rowSeparator: \"regular\",\n };\n }),\n [grpPs, startIdx]\n );\n\n// Visible range of column groups.\nexport function useVisibleColumnGroupRange<T>(\n bodyVisColRng: NumberRange,\n midCols: GridColumnModel<T>[],\n midGrpByColId: Map<string, GridColumnGroupModel>,\n leftGrpCount: number\n): NumberRange {\n return useMemoRng(() => {\n if (bodyVisColRng.length === 0) {\n return NumberRange.empty;\n }\n const firstVisibleCol = midCols[bodyVisColRng.start];\n const lastVisibleCol = midCols[bodyVisColRng.end - 1];\n const firstVisibleGroup = midGrpByColId.get(firstVisibleCol.info.props.id);\n const lastVisibleGroup = midGrpByColId.get(lastVisibleCol.info.props.id);\n if (!firstVisibleGroup || !lastVisibleGroup) {\n return NumberRange.empty;\n }\n return new NumberRange(\n firstVisibleGroup.index - leftGrpCount,\n lastVisibleGroup.index + 1 - leftGrpCount\n );\n }, [bodyVisColRng, midCols, midGrpByColId, leftGrpCount]);\n}\n\nexport function last<T>(source: T[]): T {\n return source[source.length - 1];\n}\n\n// Range of columns visible in the header.\nexport function useHeadVisibleColumnRange<T>(\n bodyVisColRng: NumberRange,\n visColGrps: GridColumnGroupModel[],\n midColsById: Map<string, GridColumnModel<T>>,\n leftColCount: number\n) {\n return useMemoRng(() => {\n if (visColGrps.length === 0) {\n return bodyVisColRng;\n }\n const firstVisibleGroup = visColGrps[0];\n const lastVisibleGroup = last(visColGrps);\n const firstColId = firstVisibleGroup.childrenIds[0];\n const lastColId = last(lastVisibleGroup.childrenIds);\n const firstColIdx = midColsById.get(firstColId)?.index;\n const lastColIdx = midColsById.get(lastColId)?.index;\n if (firstColIdx === undefined || lastColIdx === undefined) {\n return NumberRange.empty;\n }\n return new NumberRange(\n firstColIdx - leftColCount,\n lastColIdx + 1 - leftColCount\n );\n }, [bodyVisColRng, visColGrps, midColsById, leftColCount]);\n}\n\n// Creates column models.\nexport function useCols<T>(\n colInfos: GridColumnInfo<T>[],\n startIdx: number,\n groups: GridColumnGroupModel[]\n): GridColumnModel<T>[] {\n return useMemo(() => {\n const edgeColIds = new Set<string>();\n groups.forEach((g) => {\n edgeColIds.add(last(g.childrenIds));\n });\n const columnModels: GridColumnModel<T>[] = colInfos.map((info, i) => ({\n info,\n index: i + startIdx,\n separator: edgeColIds.has(info.props.id) ? \"groupEdge\" : \"regular\",\n }));\n return columnModels;\n }, [colInfos, startIdx, groups]);\n}\n\n// Returns a function that scrolls the grid to the given cell.\nexport function useScrollToCell<T>(\n visRowRng: NumberRange,\n rowHeight: number,\n clientMidHeight: number,\n midCols: GridColumnModel<T>[],\n bodyVisColRng: NumberRange,\n clientMidWidth: number,\n scroll: (left?: number, top?: number, source?: \"user\" | \"table\") => void\n) {\n return useCallback(\n (part: FocusedPart, rowIdx: number, colIdx: number) => {\n if (part !== \"body\") {\n return; // TODO\n }\n let x: number | undefined = undefined;\n let y: number | undefined = undefined;\n if (rowIdx <= visRowRng.start) {\n // First row is 1px wider than other rows (additional top border)\n y = rowIdx === 0 ? 0 : 1 + rowHeight * rowIdx;\n } else if (rowIdx >= visRowRng.end - 1) {\n const extraBorder = rowIdx > 0 ? 1 : 0;\n y = Math.max(\n 0,\n rowHeight * rowIdx + extraBorder - clientMidHeight + rowHeight\n );\n }\n const isMidCol =\n midCols.length > 0 &&\n colIdx >= midCols[0].index &&\n colIdx <= last(midCols).index;\n if (isMidCol) {\n const midColIdx = colIdx - midCols[0].index;\n if (midColIdx <= bodyVisColRng.start) {\n let w = 0;\n for (let i = 0; i < midColIdx; ++i) {\n w += midCols[i].info.width;\n }\n x = w;\n } else if (midColIdx >= bodyVisColRng.end - 1) {\n let w = 0;\n for (let i = 0; i <= midColIdx; ++i) {\n w += midCols[i].info.width;\n }\n x = Math.max(0, w - clientMidWidth);\n }\n }\n if (x !== undefined || y !== undefined) {\n scroll(x, y, \"table\");\n }\n },\n [\n visRowRng,\n rowHeight,\n clientMidHeight,\n midCols,\n bodyVisColRng,\n clientMidWidth,\n scroll,\n ]\n );\n}\n\nconst MIN_COLUMN_WIDTH = 10;\n\n// Returns onMouseDown handler to be attached to column resize handlers.\n// TODO There might be some problems if column is removed while it is being resized\nexport function useColumnResize<T>(\n cols: GridColumnModel<T>[],\n resizeColumn: (columnIndex: number, width: number) => void\n) {\n const columnResizeDataRef = useRef<{\n startX: number;\n startY: number;\n eventsUnsubscription: () => void;\n columnIndex: number;\n initialColumnWidth: number;\n minWidth: number;\n resizeColumn: (columnIndex: number, width: number) => void;\n }>();\n\n const onMouseUp = useCallback(() => {\n columnResizeDataRef.current?.eventsUnsubscription();\n columnResizeDataRef.current = undefined;\n }, []);\n\n const onMouseMove = useCallback((event: MouseEvent) => {\n const x = event.screenX;\n const { startX, columnIndex, initialColumnWidth, minWidth } =\n columnResizeDataRef.current!;\n const shift = x - startX;\n let width = Math.max(minWidth, initialColumnWidth + shift);\n columnResizeDataRef.current!.resizeColumn(columnIndex, Math.round(width));\n }, []);\n\n return useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n const targetElement = event.target as HTMLElement;\n const [columnIndexAttribute, thElement] = getAttribute(\n targetElement,\n \"data-column-index\"\n );\n\n const columnIndex = parseInt(columnIndexAttribute, 10);\n\n document.addEventListener(\"mouseup\", onMouseUp);\n document.addEventListener(\"mousemove\", onMouseMove);\n\n const initialColumnWidth = thElement.getBoundingClientRect().width;\n\n columnResizeDataRef.current = {\n startX: event.screenX,\n startY: event.screenY,\n eventsUnsubscription: () => {\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.removeEventListener(\"mousemove\", onMouseMove);\n },\n columnIndex,\n initialColumnWidth,\n resizeColumn,\n minWidth: cols[columnIndex].info.props.minWidth || MIN_COLUMN_WIDTH,\n };\n\n event.preventDefault();\n },\n [resizeColumn]\n );\n}\n\n// Map values to array.\nexport function useFlatten<T>(map: Map<number, T>): T[] {\n return useMemo(() => {\n const entries = [...map.entries()].filter(([index, value]) => !!value);\n entries.sort((a, b) => a[0] - b[0]);\n return entries.map((x) => x[1]);\n }, [map]);\n}\n\nfunction useColMap<T>() {\n return useState<Map<number, GridColumnInfo<T>>>(new Map());\n}\n\nfunction useGrpMap() {\n return useState<Map<number, ColumnGroupProps>>(new Map());\n}\n\n// Instances of TableColumn and TableColumnGroup register/unregister themselves\n// using onColumnAdded, onColumnRemoved, onColumnGroupAdded, onColumnGroupRemoved\n// taken from context\n// The order of columns/groups is based on the order of \"children\" (Grid.props children)\nexport function useColumnRegistry<T>(children: ReactNode) {\n const [leftColMap, setLeftColMap] = useColMap<T>();\n const [rightColMap, setRightColMap] = useColMap<T>();\n const [midColMap, setMidColMap] = useColMap<T>();\n\n const [leftGrpMap, setLeftGrpMap] = useGrpMap();\n const [rightGrpMap, setRightGrpMap] = useGrpMap();\n const [midGrpMap, setMidGrpMap] = useGrpMap();\n\n const [editorMap, setEditorMap] = useState<Map<string, CellEditorInfo<T>>>(\n new Map()\n );\n\n const leftColInfos = useFlatten(leftColMap);\n const rightColInfos = useFlatten(rightColMap);\n const midColInfos = useFlatten(midColMap);\n\n const leftGrpPs = useFlatten(leftGrpMap);\n const rightGrpPs = useFlatten(rightGrpMap);\n const midGrpPs = useFlatten(midGrpMap);\n\n const leftGroups = useColumnGroups(leftGrpPs, 0);\n const midGroups = useColumnGroups(midGrpPs, leftGroups.length);\n const rightGroups = useColumnGroups(\n rightGrpPs,\n leftGroups.length + midGroups.length\n );\n if (leftGroups.length > 0) {\n last(leftGroups).columnSeparator = \"pinned\";\n }\n if (rightGroups.length > 0 && midGroups.length > 0) {\n last(midGroups).columnSeparator = \"pinned\";\n }\n\n const leftCols: GridColumnModel<T>[] = useCols(leftColInfos, 0, leftGroups);\n const midCols: GridColumnModel<T>[] = useCols(\n midColInfos,\n leftCols.length,\n midGroups\n );\n const rightCols: GridColumnModel<T>[] = useCols(\n rightColInfos,\n leftCols.length + midCols.length,\n rightGroups\n );\n if (leftCols.length > 0) {\n last(leftCols).separator = \"pinned\";\n }\n if (rightCols.length > 0 && midCols.length > 0) {\n last(midCols).separator = \"pinned\";\n }\n\n const chPosById = useRef<Map<string, number>>(new Map());\n\n const indexChildren = () => {\n const m = new Map<string, number>();\n let i = 0;\n const indexChildrenRec = (c: ReactNode) => {\n if (!c) {\n return;\n }\n Children.forEach(c, (x) => {\n if (isValidElement(x) && x.props.id !== undefined) {\n m.set(x.props.id, i);\n i++;\n indexChildrenRec(x.props.children);\n }\n });\n };\n indexChildrenRec(children);\n return m;\n };\n chPosById.current = indexChildren();\n\n const getChildIndex = useCallback((id: string): number => {\n const idx = chPosById.current.get(id);\n if (idx === undefined) {\n console.log(`Unknown child id \"${id}\"`);\n console.log(\n `Known ids: ${Array.from(chPosById.current.keys())\n .map((x) => `\"${x}\"`)\n .join(\", \")}`\n );\n throw new Error(`Unknown child id: \"${id}\"`);\n }\n return idx;\n }, []);\n\n const getColMapSet = (pinned?: GridColumnPin) =>\n pinned === \"left\"\n ? setLeftColMap\n : pinned === \"right\"\n ? setRightColMap\n : setMidColMap;\n\n const onColumnAdded = useCallback((columnInfo: GridColumnInfo<T>) => {\n // console.log(\n // `Column added: \"${columnInfo.props.id}\"; pinned: ${columnInfo.props.pinned}`\n // );\n const { id, pinned } = columnInfo.props;\n const index = getChildIndex(id);\n getColMapSet(pinned)(makeMapAdder(index, columnInfo));\n }, []);\n\n const onColumnRemoved = useCallback(\n (index: number, columnInfo: GridColumnInfo<T>) => {\n const { id, pinned } = columnInfo.props;\n getColMapSet(pinned)(makeMapDeleter(index));\n // console.log(`Column removed: \"${columnInfo.props.id}\"`);\n },\n []\n );\n\n const getGrpMapSet = (pinned?: GridColumnPin) =>\n pinned === \"left\"\n ? setLeftGrpMap\n : pinned === \"right\"\n ? setRightGrpMap\n : setMidGrpMap;\n\n const onColumnGroupAdded = useCallback((colGroupProps: ColumnGroupProps) => {\n const { id, pinned } = colGroupProps;\n getGrpMapSet(pinned)(makeMapAdder(getChildIndex(id), colGroupProps));\n // console.log(`Group added: \"${colGroupProps.name}\"`);\n }, []);\n\n const onColumnGroupRemoved = useCallback(\n (index: number, colGroupProps: ColumnGroupProps) => {\n const { id, pinned } = colGroupProps;\n getGrpMapSet(pinned)(makeMapDeleter(index));\n // console.log(`Group removed: \"${colGroupProps.name}\"`);\n },\n []\n );\n\n const onEditorAdded = useCallback((info: CellEditorInfo<T>) => {\n const { columnId } = info;\n setEditorMap(makeMapAdder(columnId, info));\n // console.log(`Editor added for column ${columnId}`);\n }, []);\n\n const onEditorRemoved = useCallback((info: CellEditorInfo<T>) => {\n const { columnId } = info;\n setEditorMap(makeMapDeleter(columnId));\n // console.log(`Editor removed for column ${columnId}`);\n }, []);\n\n const getEditor = useCallback(\n (columnId: string) => editorMap.get(columnId),\n [editorMap]\n );\n\n const contextValue: GridContext<T> = useMemo(\n () => ({\n getChildIndex,\n onColumnAdded,\n onColumnRemoved,\n onColumnGroupAdded,\n onColumnGroupRemoved,\n onEditorAdded,\n onEditorRemoved,\n getEditor,\n }),\n [\n getChildIndex,\n onColumnAdded,\n onColumnRemoved,\n onColumnGroupAdded,\n onColumnGroupRemoved,\n onEditorAdded,\n onEditorRemoved,\n getEditor,\n ]\n );\n\n return {\n leftCols,\n midCols,\n rightCols,\n leftGroups,\n midGroups,\n rightGroups,\n contextValue,\n };\n}\n\nexport type SelectRowsOptions = {\n rowIndex: number;\n isRange?: boolean;\n // Update selection incrementally based on previous state.\n // If rowIndex is selected then unselect it, otherwise select it.\n // This is what happens when the user clicks a row selection checkbox.\n // Shift + Space is another case when this behaviour is used.\n incremental?: boolean;\n // Unusual behaviour, applied on space keypress on a non-checkbox cell\n // The row is toggled, other rows unselected.\n unselectOtherRows?: boolean;\n};\n\n// Returns functions related to row selection.\n// TODO test use case when selection mode changes\nexport function useRowSelection<T>(\n rowKeyGetter: RowKeyGetter<T>,\n rowData: T[],\n defaultSelectedRowIdxs?: number[],\n selectedRowIdxs?: number[],\n rowSelectionMode?: GridRowSelectionMode,\n onRowSelected?: (selectedRowIdxs: number[]) => void\n) {\n const selectedRowIdxsProp = useMemo(() => {\n if (selectedRowIdxs == undefined) {\n return undefined;\n }\n return new Set(selectedRowIdxs);\n }, [selectedRowIdxs]);\n\n const defaultSelectedRowIdxsProp = useMemo(() => {\n if (defaultSelectedRowIdxs == undefined) {\n return new Set([]);\n }\n return new Set(defaultSelectedRowIdxs);\n }, [defaultSelectedRowIdxs]);\n\n const [selRowIdxs, setSelRowIdxs] = useControlled({\n controlled: selectedRowIdxsProp,\n default: defaultSelectedRowIdxsProp,\n name: \"useRowSelection\",\n state: \"selRowIdxs\",\n });\n\n const [lastSelRowIdx, setLastSelRowIdx] = useState<number | undefined>(\n undefined\n );\n\n useEffect(() => {\n if (\n (rowSelectionMode === \"none\" && selRowIdxs.size > 0) ||\n (rowSelectionMode === \"single\" && selRowIdxs.size > 1)\n ) {\n setSelRowIdxs(new Set());\n }\n }, [rowSelectionMode, selRowIdxs, setSelRowIdxs]);\n\n const selectRows = useCallback(\n ({\n rowIndex,\n isRange = false,\n incremental = false,\n unselectOtherRows = false,\n }: SelectRowsOptions) => {\n const idxFrom =\n rowSelectionMode === \"multi\" && lastSelRowIdx !== undefined && isRange\n ? lastSelRowIdx\n : undefined;\n\n let nextSelRowIdxs: Set<number> | undefined = undefined;\n let nextLastSelRowIdx: number | undefined = undefined;\n\n if (idxFrom === undefined) {\n if (unselectOtherRows) {\n if (incremental && selRowIdxs.has(rowIndex)) {\n nextSelRowIdxs = new Set<number>([]);\n nextLastSelRowIdx = undefined;\n } else {\n nextSelRowIdxs = new Set<number>([rowIndex]);\n nextLastSelRowIdx = rowIndex;\n }\n } else {\n if (incremental && rowSelectionMode === \"multi\") {\n nextSelRowIdxs = new Set<number>(selRowIdxs);\n if (nextSelRowIdxs.has(rowIndex)) {\n nextSelRowIdxs.delete(rowIndex);\n nextLastSelRowIdx = undefined;\n } else {\n nextSelRowIdxs.add(rowIndex);\n nextLastSelRowIdx = rowIndex;\n }\n } else {\n nextSelRowIdxs = new Set([rowIndex]);\n nextLastSelRowIdx = rowIndex;\n }\n }\n } else {\n const s = incremental ? new Set<number>(selRowIdxs) : new Set<number>();\n const idxs = [rowIndex, idxFrom];\n idxs.sort((a, b) => a - b);\n const rowIdxs: number[] = [];\n for (let i = idxs[0]; i <= idxs[1]; ++i) {\n rowIdxs.push(i);\n }\n if (selRowIdxs.has(rowIndex)) {\n rowIdxs.forEach((k) => s.delete(k));\n } else {\n rowIdxs.forEach((k) => s.add(k));\n }\n nextSelRowIdxs = s;\n nextLastSelRowIdx = rowIndex;\n }\n\n setSelRowIdxs(nextSelRowIdxs);\n setLastSelRowIdx(nextLastSelRowIdx);\n if (onRowSelected) {\n onRowSelected(Array.from(nextSelRowIdxs.keys()));\n }\n },\n [\n selRowIdxs,\n lastSelRowIdx,\n setSelRowIdxs,\n setLastSelRowIdx,\n rowData,\n rowKeyGetter,\n onRowSelected,\n ]\n );\n\n const isAllSelected = selRowIdxs.size === rowData.length;\n const isAnySelected = selRowIdxs.size > 0;\n\n const selectAll = useCallback(() => {\n const allRowIdxs = [...new Array(rowData.length).keys()].map((_, i) => i);\n setSelRowIdxs(new Set(allRowIdxs));\n if (onRowSelected) {\n onRowSelected(allRowIdxs);\n }\n }, [rowData, setSelRowIdxs]);\n\n const unselectAll = useCallback(() => {\n setSelRowIdxs(new Set());\n if (onRowSelected) {\n onRowSelected([]);\n }\n }, [setSelRowIdxs]);\n\n const onMouseDown = useCallback(\n (event: React.MouseEvent<HTMLDivElement>) => {\n if (rowSelectionMode === \"none\") {\n return;\n }\n const target = event.target as HTMLElement;\n try {\n const [rowIndex] = getCellPosition(target);\n selectRows({\n rowIndex,\n isRange: event.shiftKey,\n incremental: event.metaKey || event.ctrlKey,\n });\n } catch (e) {}\n },\n [selectRows, rowSelectionMode]\n );\n\n return {\n onMouseDown,\n selRowIdxs,\n isAllSelected,\n isAnySelected,\n selectRows,\n selectAll,\n unselectAll,\n };\n}\n\nexport interface ColumnDragState {\n columnIndex: number;\n x: number;\n y: number;\n}\n\nconst COLUMN_DRAG_TOLERANCE = 10;\n\nexport interface Target {\n columnIndex: number;\n x: number;\n}\n\n// Returns onMouseDown handler to be attached to column headers (or any element\n// working as a drag-and-drop handle for moving columns)\n// Also returns dragState and active target (the drop target nearest to current\n// mouse positions.\nexport function useColumnMove<T = any>(\n columnMove: boolean | undefined,\n rootRef: RefObject<HTMLDivElement>,\n leftCols: GridColumnModel<T>[],\n midCols: GridColumnModel<T>[],\n rightCols: GridColumnModel<T>[],\n cols: GridColumnModel<T>[],\n scrollLeft: number,\n clientMidWidth: number,\n onColumnMove: GridColumnMoveHandler\n) {\n const moveRef = useRef<{\n unsubscribe: () => void;\n startScreenX: number;\n startScreenY: number;\n startHeaderX: number;\n startHeaderY: number;\n\n columnIndex: number;\n columnId: string;\n dragTriggered: boolean;\n onColumnMove: GridColumnMoveHandler;\n }>();\n\n const activeTargetRef = useRef<Target | undefined>(undefined);\n\n const [dragState, setDragState] = useState<ColumnDragState | undefined>(\n undefined\n );\n\n const columnDragStart = useCallback(\n (columnIndex: number, x: number, y: number) => {\n setDragState({ columnIndex, x, y });\n },\n [setDragState]\n );\n\n const columnDrag = useCallback(\n (x: number, y: number) => {\n setDragState((old) => {\n return { ...old!, x, y };\n });\n },\n [setDragState]\n );\n\n const columnDrop = useCallback(() => {\n const toIndex = activeTargetRef.current?.columnIndex;\n const fromIndex = moveRef.current?.columnIndex;\n const columnId = moveRef.current?.columnId;\n const handler = moveRef.current?.onColumnMove;\n if (\n toIndex !== undefined &&\n fromIndex !== undefined &&\n handler !== undefined &&\n columnId !== undefined\n ) {\n handler(columnId, fromIndex, toIndex);\n }\n setDragState(undefined);\n }, [setDragState]);\n\n const onMouseUp = useCallback(() => {\n if (moveRef.current?.dragTriggered) {\n columnDrop();\n }\n moveRef.current?.unsubscribe();\n moveRef.current = undefined;\n }, [columnDrop]);\n\n const onMouseMove = useCallback(\n (event: MouseEvent) => {\n const {\n columnIndex,\n startHeaderX,\n startHeaderY,\n startScreenX,\n startScreenY,\n dragTriggered,\n } = moveRef.current!;\n\n const shiftX = event.screenX - startScreenX;\n const shiftY = event.screenY - startScreenY;\n const x = startHeaderX + shiftX;\n const y = startHeaderY + shiftY;\n\n if (!dragTriggered) {\n if (\n Math.sqrt(shiftX * shiftX + shiftY * shiftY) > COLUMN_DRAG_TOLERANCE\n ) {\n moveRef.current!.dragTriggered = true;\n columnDragStart(columnIndex, x, y);\n }\n } else {\n columnDrag(x, y);\n }\n },\n [columnDrag]\n );\n\n const onColumnMoveHandleMouseDown: MouseEventHandler<HTMLDivElement> =\n useCallback(\n (event) => {\n const [columnIndexAttribute, thElement] = getAttribute(\n event.target as HTMLElement,\n \"data-column-index\"\n );\n const rootElement = rootRef.current!;\n\n document.addEventListener(\"mouseup\", onMouseUp);\n document.addEventListener(\"mousemove\", onMouseMove);\n\n const columnIndex = parseInt(columnIndexAttribute, 10);\n const columnId = cols[columnIndex].info.props.id;\n\n const thRect = thElement.getBoundingClientRect();\n const rootRect = rootElement!.getBoundingClientRect();\n\n const x = thRect.x - rootRect.x;\n const y = thRect.y - rootRect.y;\n\n moveRef.current = {\n unsubscribe: () => {\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.removeEventListener(\"mousemove\", onMouseMove);\n },\n startScreenX: event.screenX,\n startScreenY: event.screenY,\n startHeaderX: x,\n startHeaderY: y,\n columnIndex,\n columnId,\n dragTriggered: false,\n onColumnMove,\n };\n\n event.preventDefault();\n },\n [columnDragStart, cols]\n );\n\n const onColumnMoveCancel = useCallback(() => {\n setDragState(undefined);\n moveRef.current?.unsubscribe();\n moveRef.current = undefined;\n }, [setDragState]);\n\n const targets = useMemo(() => {\n if (!dragState) {\n return undefined;\n }\n let ts: Target[] = [];\n let x = 0;\n leftCols.forEach((c, i) => {\n ts.push({ columnIndex: c.index, x });\n x += c.info.width;\n });\n let w = scrollLeft;\n let i = 0;\n while (w > 0 && i < midCols.length) {\n w -= midCols[i].info.width;\n i++;\n }\n x -= w;\n w += clientMidWidth;\n while (w > 0 && i < midCols.length) {\n const c = midCols[i];\n ts.push({ columnIndex: c.index, x });\n x += c.info.width;\n w -= c.info.width;\n i++;\n }\n if (rightCols.length > 0) {\n x += w;\n rightCols.forEach((c, i) => {\n ts.push({ columnIndex: c.index, x });\n x += c.info.width;\n });\n ts.push({ columnIndex: last(rightCols).index + 1, x });\n } else {\n ts.push({ columnIndex: last(midCols).index + 1, x });\n }\n return ts;\n }, [dragState, leftCols, midCols, rightCols, scrollLeft, clientMidWidth]);\n\n const activeTargetIdx = useMemo(() => {\n const x = dragState?.x;\n if (x === undefined || targets === undefined || targets.length < 1) {\n return undefined;\n }\n let i = 0;\n while (i < targets.length && targets[i].x < x) {\n i++;\n }\n if (i === 0) {\n return 0;\n }\n if (i >= targets.length) {\n return targets.length - 1;\n }\n return targets[i].x - x < x - targets[i - 1].x ? i : i - 1;\n }, [targets, dragState?.x]);\n\n const activeTarget =\n activeTargetIdx === undefined ? undefined : targets![activeTargetIdx];\n\n activeTargetRef.current = activeTarget;\n\n return {\n onColumnMoveHandleMouseDown,\n dragState,\n activeTarget,\n onColumnMoveCancel,\n };\n}\n\nexport interface CellPosition {\n rowIdx: number;\n colIdx: number;\n}\n\nexport interface CellRange {\n start: CellPosition;\n end: CellPosition;\n}\n\nexport function cellPositionEquals(a: CellPosition, b: CellPosition) {\n return a.rowIdx === b.rowIdx && a.colIdx === b.colIdx;\n}\n\nexport function cellRangeEquals(\n a: CellRange | undefined,\n b: CellRange | undefined\n) {\n if (!a) {\n return !b;\n }\n return (\n !!b &&\n cellPositionEquals(a.start, b.start) &&\n cellPositionEquals(a.end, b.end)\n );\n}\n\n// TODO test the use case when cellSelectionMode changes during dnd.\n// Cell range selection. This is experimental.\nexport function useRangeSelection(cellSelectionMode?: GridCellSelectionMode) {\n const mouseSelectionRef = useRef<{\n unsubscribe: () => void;\n start: CellPosition;\n }>();\n\n const keyboardSelectionRef = useRef<{\n start: CellPosition;\n }>();\n\n if (cellSelectionMode !== \"range\") {\n if (mouseSelectionRef.current) {\n mouseSelectionRef.current.unsubscribe();\n mouseSelectionRef.current = undefined;\n }\n if (keyboardSelectionRef.current) {\n keyboardSelectionRef.current = undefined;\n }\n }\n\n const [selectedCellRange, setSelectedCellRange] = useState<\n CellRange | undefined\n >(undefined);\n\n const onMouseMove = useCallback((event: MouseEvent) => {\n const { clientX, clientY } = event;\n const element = document.elementFromPoint(clientX, clientY) as HTMLElement;\n try {\n const [rowIdx, colIdx] = getCellPosition(element);\n\n setSelectedCellRange((old) => {\n const { start } = mouseSelectionRef.current!;\n const p: CellRange = { start, end: { rowIdx, colIdx } };\n return cellRangeEquals(old, p) ? old : p;\n });\n } catch (exc) {}\n }, []);\n\n const onMouseUp = useCallback((event: MouseEvent) => {\n if (!mouseSelectionRef.current) {\n throw new Error(`useRangeSelection state is not initialized`);\n }\n mouseSelectionRef.current.unsubscribe();\n mouseSelectionRef.current = undefined;\n }, []);\n\n const onCellMouseDown = useCallback(\n (event: React.MouseEvent) => {\n if (cellSelectionMode !== \"range\") {\n return;\n }\n const target = event.target as HTMLElement;\n try {\n const [rowIdx, colIdx] = getCellPosition(target);\n document.addEventListener(\"mouseup\", onMouseUp);\n document.addEventListener(\"mousemove\", onMouseMove);\n const pos: CellPosition = { rowIdx, colIdx };\n mouseSelectionRef.current = {\n start: pos,\n unsubscribe: () => {\n document.removeEventListener(\"mouseup\", onMouseUp);\n document.removeEventListener(\"mousemove\", onMouseMove);\n },\n };\n setSelectedCellRange({ start: pos, end: pos });\n } catch (exc) {}\n },\n [cellSelectionMode]\n );\n\n const onKeyboardRangeSelectionStart = useCallback((pos: CellPosition) => {\n keyboardSelectionRef.current = {\n start: pos,\n };\n }, []);\n\n const onKeyboardRangeSelectionEnd = useCallback(() => {\n keyboardSelectionRef.current = undefined;\n }, []);\n\n const onCursorMove = useCallback((pos: CellPosition) => {\n if (!keyboardSelectionRef.current) {\n return;\n }\n setSelectedCellRange((old) => {\n if (!keyboardSelectionRef.current) {\n return old;\n }\n const { start } = keyboardSelectionRef.current;\n const p: CellRange = { start, end: pos };\n return cellRangeEquals(old, p) ? old : p;\n });\n }, []);\n\n const selectRange = useCallback((range: CellRange) => {\n if (cellSelectionMode !== \"range\") {\n return;\n }\n setSelectedCellRange(range);\n }, []);\n\n return {\n selectedCellRange,\n onCellMouseDown,\n onKeyboardRangeSelectionStart,\n onKeyboardRangeSelectionEnd,\n onCursorMove,\n selectRange,\n };\n}\n\nexport function useFocusableContent<T extends HTMLElement>() {\n const ref = useRef<T>(null);\n const [isFocusableContent, setFocusableContent] = useState<boolean>(false);\n\n const onFocus: FocusEventHandler<T> = (event) => {\n if (event.target === ref.current) {\n const nestedInteractive = ref.current.querySelector(`[tabindex=\"0\"]`);\n if (nestedInteractive) {\n (nestedInteractive as HTMLElement).focus();\n setFocusableContent(true);\n }\n }\n };\n\n return { ref, isFocusableContent, onFocus };\n}\n"],"names":["i"],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ function getAttribute(element, attributeName) {
2
+ if (!element || !element.hasAttribute) {
3
+ throw new Error(`Attribute "${attributeName}" not found`);
4
+ }
5
+ if (element.hasAttribute(attributeName)) {
6
+ return [element.getAttribute(attributeName), element];
7
+ }
8
+ return getAttribute(element.parentNode, attributeName);
9
+ }
10
+ function getRowKeyAttribute(element) {
11
+ const [rowKey] = getAttribute(element, "data-row-key");
12
+ return rowKey;
13
+ }
14
+ function getFocusablePosition(element) {
15
+ const [columnIndexAttr, cellElement] = getAttribute(
16
+ element,
17
+ "data-column-index"
18
+ );
19
+ const columnIndex = parseInt(columnIndexAttr, 10);
20
+ const role = cellElement.getAttribute("role");
21
+ if (role === "columnheader") {
22
+ return { part: "header", columnIndex, rowIndex: 0 };
23
+ }
24
+ const [rowIndexAttr] = getAttribute(element, "data-row-index");
25
+ const rowIndex = parseInt(rowIndexAttr, 10);
26
+ return { part: "body", rowIndex, columnIndex };
27
+ }
28
+ function getCellPosition(element) {
29
+ const [rowIndexAttr] = getAttribute(element, "data-row-index");
30
+ const [columnIndexAttr] = getAttribute(element, "data-column-index");
31
+ const rowIndex = parseInt(rowIndexAttr, 10);
32
+ const columnIndex = parseInt(columnIndexAttr, 10);
33
+ return [rowIndex, columnIndex];
34
+ }
35
+ const addMapItem = (old, k, v) => {
36
+ const m = new Map(old);
37
+ m.set(k, v);
38
+ return m;
39
+ };
40
+ const makeMapAdder = (k, v) => (old) => addMapItem(old, k, v);
41
+ const deleteMapItem = (old, k) => {
42
+ const m = new Map(old);
43
+ m.delete(k);
44
+ return m;
45
+ };
46
+ const makeMapDeleter = (k) => (old) => deleteMapItem(old, k);
47
+ const clamp = (x, min, max) => {
48
+ if (x == void 0) {
49
+ x = 0;
50
+ }
51
+ if (x < min) {
52
+ return min;
53
+ }
54
+ if (x > max) {
55
+ return max;
56
+ }
57
+ return x;
58
+ };
59
+
60
+ export { clamp, getAttribute, getCellPosition, getFocusablePosition, getRowKeyAttribute, makeMapAdder, makeMapDeleter };
61
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sources":["../src/internal/utils.ts"],"sourcesContent":["import { FocusedPart } from \"../CursorContext\";\n\nexport function getAttribute(\n element: HTMLElement,\n attributeName: string\n): [string, HTMLElement] {\n if (!element || !element.hasAttribute) {\n throw new Error(`Attribute \"${attributeName}\" not found`);\n }\n if (element.hasAttribute(attributeName)) {\n return [element.getAttribute(attributeName) as string, element];\n }\n return getAttribute(element.parentNode as HTMLElement, attributeName);\n}\n\nexport function getRowIndexAttribute(element: HTMLElement): number {\n const [attribute] = getAttribute(element, \"data-row-index\");\n return parseInt(attribute, 10);\n}\n\nexport function getRowKeyAttribute(element: HTMLElement): string {\n const [rowKey] = getAttribute(element, \"data-row-key\");\n return rowKey;\n}\n\nexport function getFocusablePosition(element: HTMLElement): {\n part: FocusedPart;\n columnIndex: number;\n rowIndex: number;\n} {\n const [columnIndexAttr, cellElement] = getAttribute(\n element,\n \"data-column-index\"\n );\n const columnIndex = parseInt(columnIndexAttr, 10);\n const role = cellElement.getAttribute(\"role\");\n if (role === \"columnheader\") {\n return { part: \"header\", columnIndex, rowIndex: 0 };\n }\n const [rowIndexAttr] = getAttribute(element, \"data-row-index\");\n const rowIndex = parseInt(rowIndexAttr, 10);\n return { part: \"body\", rowIndex, columnIndex };\n}\n\nexport function getCellPosition(element: HTMLElement): [number, number] {\n const [rowIndexAttr] = getAttribute(element, \"data-row-index\");\n const [columnIndexAttr] = getAttribute(element, \"data-column-index\");\n const rowIndex = parseInt(rowIndexAttr, 10);\n const columnIndex = parseInt(columnIndexAttr, 10);\n return [rowIndex, columnIndex];\n}\n\nconst addMapItem = <K, V>(old: Map<K, V>, k: K, v: V): Map<K, V> => {\n const m = new Map(old);\n m.set(k, v);\n return m;\n};\n\nexport const makeMapAdder =\n <K, V>(k: K, v: V) =>\n (old: Map<K, V>) =>\n addMapItem(old, k, v);\n\nconst deleteMapItem = <K, V>(old: Map<K, V>, k: K): Map<K, V> => {\n const m = new Map(old);\n m.delete(k);\n return m;\n};\n\nexport const makeMapDeleter =\n <K, V>(k: K) =>\n (old: Map<K, V>) =>\n deleteMapItem(old, k);\n\nexport const clamp = (x: number | undefined, min: number, max: number) => {\n if (x == undefined) {\n x = 0;\n }\n if (x < min) {\n return min;\n }\n if (x > max) {\n return max;\n }\n return x;\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import "./BaseCell.css";
3
+ import { GridCellProps } from "./GridColumn";
4
+ import { GridColumnModel } from "./Grid";
5
+ export declare function getCellId<T>(rowKey: string, column: GridColumnModel<T>): string;
6
+ export declare function BaseCell<T>(props: GridCellProps<T>): JSX.Element;
@@ -0,0 +1,10 @@
1
+ import { ReactNode } from "react";
2
+ export interface CellEditorInfo<T> {
3
+ columnId: string;
4
+ children: ReactNode;
5
+ }
6
+ export interface CellEditorProps<T> {
7
+ columnId?: string;
8
+ children: ReactNode;
9
+ }
10
+ export declare function CellEditor<T>(props: CellEditorProps<T>): null;
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ import type { GridColumnModel } from "./Grid";
3
+ export interface ColumnDataContext<T> {
4
+ getColById: (id: string) => GridColumnModel<T> | undefined;
5
+ }
6
+ export declare const ColumnDataContext: import("react").Context<ColumnDataContext<any> | undefined>;
7
+ export declare const useColumnDataContext: () => ColumnDataContext<any>;
@@ -0,0 +1,7 @@
1
+ import { MouseEventHandler } from "react";
2
+ export interface ColumnDragContext {
3
+ columnMove?: boolean;
4
+ onColumnMoveHandleMouseDown: MouseEventHandler<HTMLDivElement>;
5
+ }
6
+ export declare const ColumnDragContext: import("react").Context<ColumnDragContext | undefined>;
7
+ export declare const useColumnDragContext: () => ColumnDragContext;
@@ -0,0 +1,18 @@
1
+ import { ComponentType, ReactNode } from "react";
2
+ import { GridColumnPin } from "./GridColumn";
3
+ import { GridColumnGroupModel } from "./Grid";
4
+ export interface ColumnGroupCellProps {
5
+ group: GridColumnGroupModel;
6
+ }
7
+ export interface ColumnGroupCellValueProps {
8
+ group: GridColumnGroupModel;
9
+ }
10
+ export interface ColumnGroupProps {
11
+ children: ReactNode;
12
+ name: string;
13
+ id: string;
14
+ pinned?: GridColumnPin;
15
+ headerComponent?: ComponentType<ColumnGroupCellProps>;
16
+ headerValueComponent?: ComponentType<ColumnGroupCellValueProps>;
17
+ }
18
+ export declare function ColumnGroup(props: ColumnGroupProps): JSX.Element;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import "./CornerTag.css";
3
+ export interface CornerTagProps {
4
+ focusOnly?: boolean;
5
+ }
6
+ export declare function CornerTag(props: CornerTagProps): JSX.Element;
@@ -0,0 +1,12 @@
1
+ /// <reference types="react" />
2
+ export declare type FocusedPart = "header" | "body";
3
+ export interface CursorContext {
4
+ isFocused: boolean;
5
+ cursorRowIdx: number | undefined;
6
+ cursorColIdx: number | undefined;
7
+ moveCursor: (part: FocusedPart, rowIdx: number, colIdx: number) => void;
8
+ focusedPart: FocusedPart;
9
+ headerIsFocusable: boolean;
10
+ }
11
+ export declare const CursorContext: import("react").Context<CursorContext | undefined>;
12
+ export declare const useCursorContext: () => CursorContext;
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ import "./DropdownCellEditor.css";
3
+ import { GridColumnModel, GridRowModel } from "./Grid";
4
+ export interface DropdownCellEditorProps<T> {
5
+ options: string[];
6
+ row?: GridRowModel<T>;
7
+ column?: GridColumnModel<T>;
8
+ }
9
+ export declare function DropdownCellEditor<T>(props: DropdownCellEditorProps<T>): JSX.Element;
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ export interface EditorContext {
3
+ initialText?: string;
4
+ editMode?: boolean;
5
+ startEditMode: () => void;
6
+ endEditMode: (value: string) => void;
7
+ cancelEditMode: () => void;
8
+ }
9
+ export declare const EditorContext: import("react").Context<EditorContext | undefined>;
10
+ export declare const useEditorContext: () => EditorContext;
@@ -0,0 +1,99 @@
1
+ import { CSSProperties, ReactNode } from "react";
2
+ import { GridColumnInfo } from "./GridColumn";
3
+ import "./Grid.css";
4
+ import { ColumnGroupProps } from "./ColumnGroup";
5
+ export declare type ColumnSeparatorType = "regular" | "none" | "groupEdge" | "pinned";
6
+ export declare type ColumnGroupRowSeparatorType = "first" | "regular" | "last";
7
+ export declare type ColumnGroupColumnSeparatorType = "regular" | "none" | "pinned";
8
+ export declare type GridRowSelectionMode = "single" | "multi" | "none";
9
+ export declare type GridCellSelectionMode = "range" | "none";
10
+ export declare type RowKeyGetter<T> = (row: T, index: number) => string;
11
+ export declare type GridColumnMoveHandler = (columnId: string, fromIndex: number, toIndex: number) => void;
12
+ export interface GridProps<T = any> {
13
+ /**
14
+ * At least 1 children is expected, options are `ColumnGroup` or `GridColumn`.
15
+ * */
16
+ children: ReactNode;
17
+ /**
18
+ * If `true`, zebra stripes are enabled (odd/even rows have alternate colours)
19
+ * */
20
+ zebra?: boolean;
21
+ /**
22
+ * If `true`, grid header is hidden.
23
+ * */
24
+ hideHeader?: boolean;
25
+ /**
26
+ * If `true`, column separators are rendered.
27
+ * */
28
+ columnSeparators?: boolean;
29
+ /**
30
+ * If `true`, separators are rendered between pinned and unpinned columns.
31
+ * */
32
+ pinnedSeparators?: boolean;
33
+ /**
34
+ * Row data objects. Sparse arrays are supported.
35
+ * */
36
+ rowData: T[];
37
+ /**
38
+ * Should return unique string for a given row data object.
39
+ * If rowData is sparse then this function should work with undefined row data
40
+ * objects and create keys based on row index. `(row: T, index: number) => string`
41
+ * */
42
+ rowKeyGetter?: RowKeyGetter<T>;
43
+ /**
44
+ * Rows with these indices are selected by default.
45
+ * */
46
+ defaultSelectedRowIdxs?: number[];
47
+ /**
48
+ * Selected row indices for controlled mode.
49
+ * */
50
+ selectedRowIdxs?: number[];
51
+ className?: string;
52
+ style?: CSSProperties;
53
+ /**
54
+ * The variant to use. Options are `primary` and `secondary`. Default value is
55
+ * `primary`. `secondary` variant changes grid background to reduce contrast.
56
+ * */
57
+ variant?: "primary" | "secondary";
58
+ /**
59
+ * Options are `single`, `multi` and `none`.
60
+ * */
61
+ rowSelectionMode?: GridRowSelectionMode;
62
+ onRowSelected?: (selectedRowIdxs: number[]) => void;
63
+ /**
64
+ * If `true`, user will be able to move columns using drag and drop.
65
+ * */
66
+ columnMove?: boolean;
67
+ /**
68
+ * Accepts `(columnId: string, fromIndex: number, toIndex: number) => void`
69
+ * */
70
+ onColumnMoved?: GridColumnMoveHandler;
71
+ /**
72
+ * Options are `range` and `none`.
73
+ * */
74
+ cellSelectionMode?: GridCellSelectionMode;
75
+ onVisibleRowRangeChange?: (start: number, end: number) => void;
76
+ /**
77
+ * If `true`, keyboard navigation is enabled for the header.
78
+ * */
79
+ headerIsFocusable?: boolean;
80
+ }
81
+ export interface GridRowModel<T> {
82
+ key: string;
83
+ index: number;
84
+ data: T;
85
+ }
86
+ export interface GridColumnModel<T> {
87
+ index: number;
88
+ separator: ColumnSeparatorType;
89
+ info: GridColumnInfo<T>;
90
+ }
91
+ export interface GridColumnGroupModel {
92
+ index: number;
93
+ data: ColumnGroupProps;
94
+ childrenIds: string[];
95
+ rowSeparator: ColumnGroupRowSeparatorType;
96
+ columnSeparator: ColumnGroupColumnSeparatorType;
97
+ colSpan: number;
98
+ }
99
+ export declare const Grid: <T>(props: GridProps<T>) => JSX.Element;
@@ -0,0 +1,113 @@
1
+ import { ComponentType, CSSProperties, KeyboardEvent, ReactNode } from "react";
2
+ import { GridColumnModel, GridRowModel } from "./Grid";
3
+ export declare type GridColumnPin = "left" | "right" | null;
4
+ export interface GridCellProps<T> {
5
+ row: GridRowModel<T>;
6
+ column: GridColumnModel<T>;
7
+ className?: string;
8
+ style?: CSSProperties;
9
+ isFocused?: boolean;
10
+ isSelected?: boolean;
11
+ isEditable?: boolean;
12
+ children?: ReactNode;
13
+ }
14
+ export interface GridCellValueProps<T, U = any> {
15
+ row: GridRowModel<T>;
16
+ column: GridColumnModel<T>;
17
+ isFocused?: boolean;
18
+ value?: U;
19
+ }
20
+ export interface HeaderCellProps<T> {
21
+ column: GridColumnModel<T>;
22
+ children: ReactNode;
23
+ isFocused?: boolean;
24
+ }
25
+ export interface GridHeaderValueProps<T> {
26
+ column: GridColumnModel<T>;
27
+ isFocused?: boolean;
28
+ }
29
+ export interface GridEditorProps<T> {
30
+ row: GridRowModel<T>;
31
+ column: GridColumnModel<T>;
32
+ }
33
+ export interface GridColumnProps<T = any> {
34
+ /**
35
+ * Unique identifier of the column.
36
+ * */
37
+ id: string;
38
+ /**
39
+ * Name is displayed on the column header by default.
40
+ * */
41
+ name?: string;
42
+ /**
43
+ * Default width of the column in `px`.
44
+ * */
45
+ defaultWidth?: number;
46
+ /**
47
+ * Min width of the column.
48
+ * */
49
+ minWidth?: number;
50
+ /**
51
+ * Callback invoked when the user resizes the column.
52
+ * */
53
+ onWidthChanged?: (width: number) => void;
54
+ /**
55
+ * Whether the column should be pinned `left` or `right`. By default columns
56
+ * are unpinned. Accepts `"left" | "right" | null`.
57
+ * */
58
+ pinned?: GridColumnPin;
59
+ /**
60
+ * Text align for the header and cells.
61
+ * */
62
+ align?: "left" | "right";
63
+ /**
64
+ * Component to render for every cell in the column. Useful when major
65
+ * customization is needed. Use this only if `cellValueComponent` is not
66
+ * sufficient. Default implementation of cell component takes care of
67
+ * selection, hover, focus and other basic grid features.
68
+ * */
69
+ cellComponent?: ComponentType<GridCellProps<T>>;
70
+ /**
71
+ * Component to render inside every cell. This is the preferred way of
72
+ * customizing grid cells.
73
+ * */
74
+ cellValueComponent?: ComponentType<GridCellValueProps<T>>;
75
+ /**
76
+ * Cell value getter. Should return the value to be displayed in the cell
77
+ * for the given row data item.
78
+ * */
79
+ getValue?: (rowData: T) => any;
80
+ /**
81
+ * CSS class to be applied to the column header.
82
+ * Useful for minor customizations
83
+ * */
84
+ headerClassName?: string;
85
+ /**
86
+ * Custom header component. Use this when `headerValueComponent` doesn't
87
+ * provide enough flexibility.
88
+ * */
89
+ headerComponent?: ComponentType<HeaderCellProps<T>>;
90
+ /**
91
+ * Renders the content of the column header. This is the preferred way of
92
+ * customizing column headers.
93
+ * */
94
+ headerValueComponent?: ComponentType<GridHeaderValueProps<T>>;
95
+ /**
96
+ * A callback to be invoked when the user modifies a cell value.
97
+ * */
98
+ onChange?: (row: T, rowIndex: number, value: string) => void;
99
+ /**
100
+ * A callback to be invoked on key down when the focus is in this column.
101
+ */
102
+ onKeyDown?: (event: KeyboardEvent<HTMLDivElement>, rowIndex: number) => void;
103
+ /**
104
+ * Children is optional, and accepts non-rendered elements i.e. `CellEditor`
105
+ */
106
+ children?: ReactNode;
107
+ }
108
+ export interface GridColumnInfo<T> {
109
+ width: number;
110
+ onWidthChanged: (width: number) => void;
111
+ props: GridColumnProps<T>;
112
+ }
113
+ export declare const GridColumn: <T = any>(props: GridColumnProps<T>) => JSX.Element;
@@ -0,0 +1,16 @@
1
+ /// <reference types="react" />
2
+ import type { GridColumnInfo } from "./GridColumn";
3
+ import type { ColumnGroupProps } from "./ColumnGroup";
4
+ import type { CellEditorInfo } from "./CellEditor";
5
+ export interface GridContext<T> {
6
+ getChildIndex: (columnId: string) => number;
7
+ onColumnAdded: (columnInfo: GridColumnInfo<T>) => void;
8
+ onColumnRemoved: (index: number, columnInfo: GridColumnInfo<T>) => void;
9
+ onColumnGroupAdded: (colGroupProps: ColumnGroupProps) => void;
10
+ onColumnGroupRemoved: (index: number, colGroupProps: ColumnGroupProps) => void;
11
+ onEditorAdded: (editorInfo: CellEditorInfo<T>) => void;
12
+ onEditorRemoved: (editorInfo: CellEditorInfo<T>) => void;
13
+ getEditor: (columnId: string) => CellEditorInfo<T> | undefined;
14
+ }
15
+ export declare const GridContext: import("react").Context<GridContext<any> | undefined>;
16
+ export declare const useGridContext: () => GridContext<any>;
@@ -0,0 +1,8 @@
1
+ import "./GroupHeaderCell.css";
2
+ import { GridColumnGroupModel } from "./Grid";
3
+ import { ReactNode } from "react";
4
+ export interface GroupHeaderCellProps {
5
+ group: GridColumnGroupModel;
6
+ children: ReactNode;
7
+ }
8
+ export declare function GroupHeaderCell(props: GroupHeaderCellProps): JSX.Element;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { ColumnGroupCellValueProps } from "./ColumnGroup";
3
+ export declare function GroupHeaderCellValue(props: ColumnGroupCellValueProps): JSX.Element;
@@ -0,0 +1,10 @@
1
+ /// <reference types="react" />
2
+ import "./HeaderCell.css";
3
+ import { ColumnSeparatorType } from "./Grid";
4
+ import { HeaderCellProps } from "./GridColumn";
5
+ export interface HeaderCellSeparatorProps {
6
+ separatorType: ColumnSeparatorType;
7
+ }
8
+ export declare function HeaderCellSeparator(props: HeaderCellSeparatorProps): JSX.Element;
9
+ export declare function HeaderCell<T>(props: HeaderCellProps<T>): JSX.Element;
10
+ export declare function AutoSizeHeaderCell<T>(props: HeaderCellProps<T>): JSX.Element;
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import { GridHeaderValueProps } from "./GridColumn";
3
+ export declare function HeaderCellValue<T>(props: GridHeaderValueProps<T>): JSX.Element;
@@ -0,0 +1,9 @@
1
+ /// <reference types="react" />
2
+ export interface LayoutContext {
3
+ totalWidth: number;
4
+ totalHeight: number;
5
+ clientWidth: number;
6
+ clientHeight: number;
7
+ }
8
+ export declare const LayoutContext: import("react").Context<LayoutContext | undefined>;
9
+ export declare const useLayoutContext: () => LayoutContext;
@@ -0,0 +1,15 @@
1
+ export declare function range(...args: [number] | [number, number] | [number, number, number]): number[];
2
+ export declare class NumberRange {
3
+ readonly start: number;
4
+ readonly end: number;
5
+ constructor(start: number, end: number);
6
+ get length(): number;
7
+ map<T>(fn: (i: number) => T): T[];
8
+ forEach(fn: (i: number) => void): void;
9
+ [Symbol.iterator](): Generator<number, void, unknown>;
10
+ static equals(a: NumberRange | undefined, b: NumberRange | undefined): boolean;
11
+ update(start: number, end: number): NumberRange;
12
+ static empty: NumberRange;
13
+ toString(): string;
14
+ contains(n: number): boolean;
15
+ }