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