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