@salt-ds/data-grid 1.0.4-alpha.1 → 1.0.4-alpha.3

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 (417) hide show
  1. package/dist-cjs/{packages/grid/src/BaseCell.css.js → BaseCell.css.js} +0 -3
  2. package/{dist-es/packages/grid/src → dist-cjs}/BaseCell.css.js.map +1 -1
  3. package/dist-cjs/{packages/grid/src/BaseCell.js → BaseCell.js} +9 -2
  4. package/dist-cjs/BaseCell.js.map +1 -0
  5. package/dist-cjs/{packages/grid/src/CheckboxCell.css.js → CheckboxCell.css.js} +0 -3
  6. package/{dist-es/packages/grid/src → dist-cjs}/CheckboxCell.css.js.map +1 -1
  7. package/dist-cjs/{packages/grid/src/CornerTag.css.js → CornerTag.css.js} +0 -3
  8. package/{dist-es/packages/grid/src → dist-cjs}/CornerTag.css.js.map +1 -1
  9. package/dist-cjs/{packages/grid/src/CornerTag.js → CornerTag.js} +9 -1
  10. package/dist-cjs/CornerTag.js.map +1 -0
  11. package/dist-cjs/{packages/grid/src/DropdownCellEditor.css.js → DropdownCellEditor.css.js} +0 -3
  12. package/{dist-es/packages/grid/src → dist-cjs}/DropdownCellEditor.css.js.map +1 -1
  13. package/dist-cjs/{packages/grid/src/DropdownCellEditor.js → DropdownCellEditor.js} +11 -4
  14. package/dist-cjs/DropdownCellEditor.js.map +1 -0
  15. package/dist-cjs/{packages/grid/src/Grid.css.js → Grid.css.js} +0 -3
  16. package/{dist-es/packages/grid/src → dist-cjs}/Grid.css.js.map +1 -1
  17. package/dist-cjs/{packages/grid/src/Grid.js → Grid.js} +10 -3
  18. package/dist-cjs/Grid.js.map +1 -0
  19. package/dist-cjs/{packages/grid/src/GroupHeaderCell.css.js → GroupHeaderCell.css.js} +0 -3
  20. package/{dist-es/packages/grid/src → dist-cjs}/GroupHeaderCell.css.js.map +1 -1
  21. package/dist-cjs/{packages/grid/src/GroupHeaderCell.js → GroupHeaderCell.js} +9 -1
  22. package/dist-cjs/GroupHeaderCell.js.map +1 -0
  23. package/dist-cjs/{packages/grid/src/HeaderCell.css.js → HeaderCell.css.js} +0 -3
  24. package/{dist-es/packages/grid/src → dist-cjs}/HeaderCell.css.js.map +1 -1
  25. package/dist-cjs/{packages/grid/src/HeaderCell.js → HeaderCell.js} +11 -4
  26. package/dist-cjs/HeaderCell.js.map +1 -0
  27. package/dist-cjs/{packages/grid/src/NumericColumn.css.js → NumericColumn.css.js} +0 -3
  28. package/{dist-es/packages/grid/src → dist-cjs}/NumericColumn.css.js.map +1 -1
  29. package/dist-cjs/{packages/grid/src/NumericColumn.js → NumericColumn.js} +10 -3
  30. package/dist-cjs/NumericColumn.js.map +1 -0
  31. package/dist-cjs/{packages/grid/src/RowSelectionCheckboxCellValue.js → RowSelectionCheckboxCellValue.js} +9 -1
  32. package/dist-cjs/RowSelectionCheckboxCellValue.js.map +1 -0
  33. package/dist-cjs/{packages/grid/src/RowSelectionCheckboxHeaderCellValue.js → RowSelectionCheckboxHeaderCellValue.js} +10 -2
  34. package/dist-cjs/RowSelectionCheckboxHeaderCellValue.js.map +1 -0
  35. package/dist-cjs/{packages/grid/src/RowSelectionRadioCellValue.js → RowSelectionRadioCellValue.js} +9 -1
  36. package/dist-cjs/RowSelectionRadioCellValue.js.map +1 -0
  37. package/dist-cjs/{packages/grid/src/RowSelectionRadioHeaderCell.js → RowSelectionRadioHeaderCell.js} +11 -3
  38. package/dist-cjs/RowSelectionRadioHeaderCell.js.map +1 -0
  39. package/dist-cjs/{packages/grid/src/TextCellEditor.css.js → TextCellEditor.css.js} +0 -3
  40. package/{dist-es/packages/grid/src → dist-cjs}/TextCellEditor.css.js.map +1 -1
  41. package/dist-cjs/{packages/grid/src/TextCellEditor.js → TextCellEditor.js} +9 -2
  42. package/dist-cjs/TextCellEditor.js.map +1 -0
  43. package/dist-cjs/{packages/grid/src/internal → internal}/Cell.css.js +0 -3
  44. package/{dist-es/packages/grid/src → dist-cjs}/internal/Cell.css.js.map +1 -1
  45. package/dist-cjs/{packages/grid/src/internal → internal}/Cell.js +9 -1
  46. package/dist-cjs/internal/Cell.js.map +1 -0
  47. package/dist-cjs/{packages/grid/src/internal → internal}/CellMeasure.css.js +0 -3
  48. package/{dist-es/packages/grid/src → dist-cjs}/internal/CellMeasure.css.js.map +1 -1
  49. package/dist-cjs/{packages/grid/src/internal → internal}/CellMeasure.js +9 -1
  50. package/dist-cjs/internal/CellMeasure.js.map +1 -0
  51. package/dist-cjs/{packages/grid/src/internal → internal}/ColumnDropTarget.css.js +0 -3
  52. package/{dist-es/packages/grid/src → dist-cjs}/internal/ColumnDropTarget.css.js.map +1 -1
  53. package/dist-cjs/{packages/grid/src/internal → internal}/ColumnDropTarget.js +9 -1
  54. package/dist-cjs/internal/ColumnDropTarget.js.map +1 -0
  55. package/dist-cjs/{packages/grid/src/internal → internal}/ColumnGhost.css.js +0 -3
  56. package/{dist-es/packages/grid/src → dist-cjs}/internal/ColumnGhost.css.js.map +1 -1
  57. package/dist-cjs/{packages/grid/src/internal → internal}/ColumnGhost.js +10 -2
  58. package/dist-cjs/internal/ColumnGhost.js.map +1 -0
  59. package/dist-cjs/{packages/grid/src/internal → internal}/Cursor.css.js +0 -3
  60. package/{dist-es/packages/grid/src → dist-cjs}/internal/Cursor.css.js.map +1 -1
  61. package/dist-cjs/{packages/grid/src/internal → internal}/Cursor.js +9 -1
  62. package/dist-cjs/internal/Cursor.js.map +1 -0
  63. package/dist-cjs/{packages/grid/src/internal → internal}/DefaultCellValue.css.js +0 -3
  64. package/{dist-es/packages/grid/src → dist-cjs}/internal/DefaultCellValue.css.js.map +1 -1
  65. package/dist-cjs/{packages/grid/src/internal → internal}/DefaultCellValue.js +9 -1
  66. package/dist-cjs/internal/DefaultCellValue.js.map +1 -0
  67. package/dist-cjs/{packages/grid/src/internal → internal}/FakeCell.css.js +0 -3
  68. package/{dist-es/packages/grid/src → dist-cjs}/internal/FakeCell.css.js.map +1 -1
  69. package/dist-cjs/{packages/grid/src/internal → internal}/FakeCell.js +9 -1
  70. package/dist-cjs/internal/FakeCell.js.map +1 -0
  71. package/dist-cjs/{packages/grid/src/internal → internal}/GroupHeaderRow.css.js +0 -3
  72. package/{dist-es/packages/grid/src → dist-cjs}/internal/GroupHeaderRow.css.js.map +1 -1
  73. package/dist-cjs/{packages/grid/src/internal → internal}/GroupHeaderRow.js +11 -3
  74. package/dist-cjs/internal/GroupHeaderRow.js.map +1 -0
  75. package/dist-cjs/{packages/grid/src/internal → internal}/HeaderRow.css.js +0 -3
  76. package/{dist-es/packages/grid/src → dist-cjs}/internal/HeaderRow.css.js.map +1 -1
  77. package/dist-cjs/{packages/grid/src/internal → internal}/HeaderRow.js +10 -2
  78. package/dist-cjs/internal/HeaderRow.js.map +1 -0
  79. package/dist-cjs/{packages/grid/src/internal → internal}/LeftPart.css.js +0 -3
  80. package/{dist-es/packages/grid/src → dist-cjs}/internal/LeftPart.css.js.map +1 -1
  81. package/dist-cjs/{packages/grid/src/internal → internal}/LeftPart.js +11 -3
  82. package/dist-cjs/internal/LeftPart.js.map +1 -0
  83. package/dist-cjs/{packages/grid/src/internal → internal}/MiddlePart.css.js +0 -3
  84. package/{dist-es/packages/grid/src → dist-cjs}/internal/MiddlePart.css.js.map +1 -1
  85. package/dist-cjs/{packages/grid/src/internal → internal}/MiddlePart.js +10 -2
  86. package/dist-cjs/internal/MiddlePart.js.map +1 -0
  87. package/dist-cjs/{packages/grid/src/internal → internal}/RightPart.css.js +0 -3
  88. package/{dist-es/packages/grid/src → dist-cjs}/internal/RightPart.css.js.map +1 -1
  89. package/dist-cjs/{packages/grid/src/internal → internal}/RightPart.js +11 -3
  90. package/dist-cjs/internal/RightPart.js.map +1 -0
  91. package/dist-cjs/{packages/grid/src/internal → internal}/Scrollable.css.js +0 -3
  92. package/{dist-es/packages/grid/src → dist-cjs}/internal/Scrollable.css.js.map +1 -1
  93. package/dist-cjs/{packages/grid/src/internal → internal}/Scrollable.js +9 -1
  94. package/dist-cjs/internal/Scrollable.js.map +1 -0
  95. package/dist-cjs/{packages/grid/src/internal → internal}/TableRow.css.js +0 -3
  96. package/{dist-es/packages/grid/src → dist-cjs}/internal/TableRow.css.js.map +1 -1
  97. package/dist-cjs/{packages/grid/src/internal → internal}/TableRow.js +13 -5
  98. package/dist-cjs/internal/TableRow.js.map +1 -0
  99. package/dist-cjs/{packages/grid/src/internal → internal}/TopLeftPart.css.js +0 -3
  100. package/{dist-es/packages/grid/src → dist-cjs}/internal/TopLeftPart.css.js.map +1 -1
  101. package/dist-cjs/{packages/grid/src/internal → internal}/TopLeftPart.js +12 -4
  102. package/dist-cjs/internal/TopLeftPart.js.map +1 -0
  103. package/dist-cjs/{packages/grid/src/internal → internal}/TopPart.css.js +0 -3
  104. package/{dist-es/packages/grid/src → dist-cjs}/internal/TopPart.css.js.map +1 -1
  105. package/dist-cjs/{packages/grid/src/internal → internal}/TopPart.js +11 -3
  106. package/dist-cjs/internal/TopPart.js.map +1 -0
  107. package/dist-cjs/{packages/grid/src/internal → internal}/TopRightPart.css.js +0 -3
  108. package/{dist-es/packages/grid/src → dist-cjs}/internal/TopRightPart.css.js.map +1 -1
  109. package/dist-cjs/{packages/grid/src/internal → internal}/TopRightPart.js +10 -2
  110. package/dist-cjs/internal/TopRightPart.js.map +1 -0
  111. package/dist-es/{packages/grid/src/BaseCell.css.js → BaseCell.css.js} +0 -3
  112. package/{dist-cjs/packages/grid/src → dist-es}/BaseCell.css.js.map +1 -1
  113. package/dist-es/{packages/grid/src/BaseCell.js → BaseCell.js} +9 -2
  114. package/dist-es/BaseCell.js.map +1 -0
  115. package/dist-es/{packages/grid/src/CheckboxCell.css.js → CheckboxCell.css.js} +0 -3
  116. package/{dist-cjs/packages/grid/src → dist-es}/CheckboxCell.css.js.map +1 -1
  117. package/dist-es/{packages/grid/src/CornerTag.css.js → CornerTag.css.js} +0 -3
  118. package/{dist-cjs/packages/grid/src → dist-es}/CornerTag.css.js.map +1 -1
  119. package/dist-es/CornerTag.js +19 -0
  120. package/dist-es/CornerTag.js.map +1 -0
  121. package/dist-es/{packages/grid/src/DropdownCellEditor.css.js → DropdownCellEditor.css.js} +0 -3
  122. package/{dist-cjs/packages/grid/src → dist-es}/DropdownCellEditor.css.js.map +1 -1
  123. package/dist-es/{packages/grid/src/DropdownCellEditor.js → DropdownCellEditor.js} +11 -4
  124. package/dist-es/DropdownCellEditor.js.map +1 -0
  125. package/dist-es/{packages/grid/src/Grid.css.js → Grid.css.js} +0 -3
  126. package/{dist-cjs/packages/grid/src → dist-es}/Grid.css.js.map +1 -1
  127. package/dist-es/{packages/grid/src/Grid.js → Grid.js} +10 -3
  128. package/dist-es/Grid.js.map +1 -0
  129. package/dist-es/{packages/grid/src/GroupHeaderCell.css.js → GroupHeaderCell.css.js} +0 -3
  130. package/{dist-cjs/packages/grid/src → dist-es}/GroupHeaderCell.css.js.map +1 -1
  131. package/dist-es/{packages/grid/src/GroupHeaderCell.js → GroupHeaderCell.js} +9 -1
  132. package/dist-es/GroupHeaderCell.js.map +1 -0
  133. package/dist-es/{packages/grid/src/HeaderCell.css.js → HeaderCell.css.js} +0 -3
  134. package/{dist-cjs/packages/grid/src → dist-es}/HeaderCell.css.js.map +1 -1
  135. package/dist-es/{packages/grid/src/HeaderCell.js → HeaderCell.js} +11 -4
  136. package/dist-es/HeaderCell.js.map +1 -0
  137. package/dist-es/{packages/grid/src/NumericColumn.css.js → NumericColumn.css.js} +0 -3
  138. package/{dist-cjs/packages/grid/src → dist-es}/NumericColumn.css.js.map +1 -1
  139. package/dist-es/{packages/grid/src/NumericColumn.js → NumericColumn.js} +10 -3
  140. package/dist-es/NumericColumn.js.map +1 -0
  141. package/dist-es/{packages/grid/src/RowSelectionCheckboxCellValue.js → RowSelectionCheckboxCellValue.js} +9 -1
  142. package/dist-es/RowSelectionCheckboxCellValue.js.map +1 -0
  143. package/dist-es/{packages/grid/src/RowSelectionCheckboxHeaderCellValue.js → RowSelectionCheckboxHeaderCellValue.js} +10 -2
  144. package/dist-es/RowSelectionCheckboxHeaderCellValue.js.map +1 -0
  145. package/dist-es/{packages/grid/src/RowSelectionRadioCellValue.js → RowSelectionRadioCellValue.js} +9 -1
  146. package/dist-es/RowSelectionRadioCellValue.js.map +1 -0
  147. package/dist-es/{packages/grid/src/RowSelectionRadioHeaderCell.js → RowSelectionRadioHeaderCell.js} +11 -3
  148. package/dist-es/RowSelectionRadioHeaderCell.js.map +1 -0
  149. package/dist-es/{packages/grid/src/TextCellEditor.css.js → TextCellEditor.css.js} +0 -3
  150. package/{dist-cjs/packages/grid/src → dist-es}/TextCellEditor.css.js.map +1 -1
  151. package/dist-es/{packages/grid/src/TextCellEditor.js → TextCellEditor.js} +9 -2
  152. package/dist-es/TextCellEditor.js.map +1 -0
  153. package/dist-es/{packages/grid/src/internal → internal}/Cell.css.js +0 -3
  154. package/{dist-cjs/packages/grid/src → dist-es}/internal/Cell.css.js.map +1 -1
  155. package/dist-es/{packages/grid/src/internal → internal}/Cell.js +9 -1
  156. package/dist-es/internal/Cell.js.map +1 -0
  157. package/dist-es/{packages/grid/src/internal → internal}/CellMeasure.css.js +0 -3
  158. package/{dist-cjs/packages/grid/src → dist-es}/internal/CellMeasure.css.js.map +1 -1
  159. package/dist-es/{packages/grid/src/internal → internal}/CellMeasure.js +9 -1
  160. package/dist-es/internal/CellMeasure.js.map +1 -0
  161. package/dist-es/{packages/grid/src/internal → internal}/ColumnDropTarget.css.js +0 -3
  162. package/{dist-cjs/packages/grid/src → dist-es}/internal/ColumnDropTarget.css.js.map +1 -1
  163. package/dist-es/{packages/grid/src/internal → internal}/ColumnDropTarget.js +9 -1
  164. package/dist-es/internal/ColumnDropTarget.js.map +1 -0
  165. package/dist-es/{packages/grid/src/internal → internal}/ColumnGhost.css.js +0 -3
  166. package/{dist-cjs/packages/grid/src → dist-es}/internal/ColumnGhost.css.js.map +1 -1
  167. package/dist-es/{packages/grid/src/internal → internal}/ColumnGhost.js +10 -2
  168. package/dist-es/internal/ColumnGhost.js.map +1 -0
  169. package/dist-es/{packages/grid/src/internal → internal}/Cursor.css.js +0 -3
  170. package/{dist-cjs/packages/grid/src → dist-es}/internal/Cursor.css.js.map +1 -1
  171. package/dist-es/{packages/grid/src/internal → internal}/Cursor.js +9 -1
  172. package/dist-es/internal/Cursor.js.map +1 -0
  173. package/dist-es/{packages/grid/src/internal → internal}/DefaultCellValue.css.js +0 -3
  174. package/{dist-cjs/packages/grid/src → dist-es}/internal/DefaultCellValue.css.js.map +1 -1
  175. package/dist-es/{packages/grid/src/internal → internal}/DefaultCellValue.js +9 -1
  176. package/dist-es/internal/DefaultCellValue.js.map +1 -0
  177. package/dist-es/{packages/grid/src/internal → internal}/FakeCell.css.js +0 -3
  178. package/{dist-cjs/packages/grid/src → dist-es}/internal/FakeCell.css.js.map +1 -1
  179. package/dist-es/{packages/grid/src/internal → internal}/FakeCell.js +9 -1
  180. package/dist-es/internal/FakeCell.js.map +1 -0
  181. package/dist-es/{packages/grid/src/internal → internal}/GroupHeaderRow.css.js +0 -3
  182. package/{dist-cjs/packages/grid/src → dist-es}/internal/GroupHeaderRow.css.js.map +1 -1
  183. package/dist-es/{packages/grid/src/internal → internal}/GroupHeaderRow.js +11 -3
  184. package/dist-es/internal/GroupHeaderRow.js.map +1 -0
  185. package/dist-es/{packages/grid/src/internal → internal}/HeaderRow.css.js +0 -3
  186. package/{dist-cjs/packages/grid/src → dist-es}/internal/HeaderRow.css.js.map +1 -1
  187. package/dist-es/{packages/grid/src/internal → internal}/HeaderRow.js +10 -2
  188. package/dist-es/internal/HeaderRow.js.map +1 -0
  189. package/dist-es/{packages/grid/src/internal → internal}/LeftPart.css.js +0 -3
  190. package/{dist-cjs/packages/grid/src → dist-es}/internal/LeftPart.css.js.map +1 -1
  191. package/dist-es/{packages/grid/src/internal → internal}/LeftPart.js +11 -3
  192. package/dist-es/internal/LeftPart.js.map +1 -0
  193. package/dist-es/{packages/grid/src/internal → internal}/MiddlePart.css.js +0 -3
  194. package/{dist-cjs/packages/grid/src → dist-es}/internal/MiddlePart.css.js.map +1 -1
  195. package/dist-es/{packages/grid/src/internal → internal}/MiddlePart.js +10 -2
  196. package/dist-es/internal/MiddlePart.js.map +1 -0
  197. package/dist-es/{packages/grid/src/internal → internal}/RightPart.css.js +0 -3
  198. package/{dist-cjs/packages/grid/src → dist-es}/internal/RightPart.css.js.map +1 -1
  199. package/dist-es/{packages/grid/src/internal → internal}/RightPart.js +11 -3
  200. package/dist-es/internal/RightPart.js.map +1 -0
  201. package/dist-es/{packages/grid/src/internal → internal}/Scrollable.css.js +0 -3
  202. package/{dist-cjs/packages/grid/src → dist-es}/internal/Scrollable.css.js.map +1 -1
  203. package/dist-es/{packages/grid/src/internal → internal}/Scrollable.js +9 -1
  204. package/dist-es/internal/Scrollable.js.map +1 -0
  205. package/dist-es/{packages/grid/src/internal → internal}/TableRow.css.js +0 -3
  206. package/{dist-cjs/packages/grid/src → dist-es}/internal/TableRow.css.js.map +1 -1
  207. package/dist-es/{packages/grid/src/internal → internal}/TableRow.js +13 -5
  208. package/dist-es/internal/TableRow.js.map +1 -0
  209. package/dist-es/{packages/grid/src/internal → internal}/TopLeftPart.css.js +0 -3
  210. package/{dist-cjs/packages/grid/src → dist-es}/internal/TopLeftPart.css.js.map +1 -1
  211. package/dist-es/{packages/grid/src/internal → internal}/TopLeftPart.js +12 -4
  212. package/dist-es/internal/TopLeftPart.js.map +1 -0
  213. package/dist-es/{packages/grid/src/internal → internal}/TopPart.css.js +0 -3
  214. package/{dist-cjs/packages/grid/src → dist-es}/internal/TopPart.css.js.map +1 -1
  215. package/dist-es/{packages/grid/src/internal → internal}/TopPart.js +11 -3
  216. package/dist-es/internal/TopPart.js.map +1 -0
  217. package/dist-es/{packages/grid/src/internal → internal}/TopRightPart.css.js +0 -3
  218. package/{dist-cjs/packages/grid/src → dist-es}/internal/TopRightPart.css.js.map +1 -1
  219. package/dist-es/{packages/grid/src/internal → internal}/TopRightPart.js +10 -2
  220. package/dist-es/internal/TopRightPart.js.map +1 -0
  221. package/dist-types/BaseCell.d.ts +0 -1
  222. package/dist-types/CornerTag.d.ts +0 -1
  223. package/dist-types/DropdownCellEditor.d.ts +1 -2
  224. package/dist-types/Grid.d.ts +0 -1
  225. package/dist-types/GroupHeaderCell.d.ts +1 -2
  226. package/dist-types/HeaderCell.d.ts +0 -1
  227. package/dist-types/NumericColumn.d.ts +1 -2
  228. package/dist-types/RowSelectionCheckboxCellValue.d.ts +0 -1
  229. package/dist-types/RowSelectionCheckboxHeaderCellValue.d.ts +0 -1
  230. package/dist-types/RowSelectionRadioCellValue.d.ts +0 -1
  231. package/dist-types/RowSelectionRadioHeaderCell.d.ts +0 -1
  232. package/dist-types/TextCellEditor.d.ts +0 -1
  233. package/dist-types/internal/Cell.d.ts +0 -1
  234. package/dist-types/internal/CellMeasure.d.ts +0 -1
  235. package/dist-types/internal/ColumnDropTarget.d.ts +0 -1
  236. package/dist-types/internal/ColumnGhost.d.ts +1 -2
  237. package/dist-types/internal/Cursor.d.ts +0 -1
  238. package/dist-types/internal/DefaultCellValue.d.ts +0 -1
  239. package/dist-types/internal/FakeCell.d.ts +0 -1
  240. package/dist-types/internal/GroupHeaderRow.d.ts +0 -1
  241. package/dist-types/internal/HeaderRow.d.ts +0 -1
  242. package/dist-types/internal/LeftPart.d.ts +0 -1
  243. package/dist-types/internal/MiddlePart.d.ts +0 -1
  244. package/dist-types/internal/RightPart.d.ts +1 -2
  245. package/dist-types/internal/Scrollable.d.ts +0 -1
  246. package/dist-types/internal/TableRow.d.ts +0 -1
  247. package/dist-types/internal/TopLeftPart.d.ts +0 -1
  248. package/dist-types/internal/TopPart.d.ts +0 -1
  249. package/dist-types/internal/TopRightPart.d.ts +0 -1
  250. package/package.json +10 -11
  251. package/dist-cjs/node_modules/style-inject/dist/style-inject.es.js +0 -31
  252. package/dist-cjs/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
  253. package/dist-cjs/packages/grid/src/BaseCell.js.map +0 -1
  254. package/dist-cjs/packages/grid/src/CornerTag.js.map +0 -1
  255. package/dist-cjs/packages/grid/src/DropdownCellEditor.js.map +0 -1
  256. package/dist-cjs/packages/grid/src/Grid.js.map +0 -1
  257. package/dist-cjs/packages/grid/src/GroupHeaderCell.js.map +0 -1
  258. package/dist-cjs/packages/grid/src/HeaderCell.js.map +0 -1
  259. package/dist-cjs/packages/grid/src/NumericColumn.js.map +0 -1
  260. package/dist-cjs/packages/grid/src/RowSelectionCheckboxCellValue.js.map +0 -1
  261. package/dist-cjs/packages/grid/src/RowSelectionCheckboxHeaderCellValue.js.map +0 -1
  262. package/dist-cjs/packages/grid/src/RowSelectionRadioCellValue.js.map +0 -1
  263. package/dist-cjs/packages/grid/src/RowSelectionRadioHeaderCell.js.map +0 -1
  264. package/dist-cjs/packages/grid/src/TextCellEditor.js.map +0 -1
  265. package/dist-cjs/packages/grid/src/internal/Cell.js.map +0 -1
  266. package/dist-cjs/packages/grid/src/internal/CellMeasure.js.map +0 -1
  267. package/dist-cjs/packages/grid/src/internal/ColumnDropTarget.js.map +0 -1
  268. package/dist-cjs/packages/grid/src/internal/ColumnGhost.js.map +0 -1
  269. package/dist-cjs/packages/grid/src/internal/Cursor.js.map +0 -1
  270. package/dist-cjs/packages/grid/src/internal/DefaultCellValue.js.map +0 -1
  271. package/dist-cjs/packages/grid/src/internal/FakeCell.js.map +0 -1
  272. package/dist-cjs/packages/grid/src/internal/GroupHeaderRow.js.map +0 -1
  273. package/dist-cjs/packages/grid/src/internal/HeaderRow.js.map +0 -1
  274. package/dist-cjs/packages/grid/src/internal/LeftPart.js.map +0 -1
  275. package/dist-cjs/packages/grid/src/internal/MiddlePart.js.map +0 -1
  276. package/dist-cjs/packages/grid/src/internal/RightPart.js.map +0 -1
  277. package/dist-cjs/packages/grid/src/internal/Scrollable.js.map +0 -1
  278. package/dist-cjs/packages/grid/src/internal/TableRow.js.map +0 -1
  279. package/dist-cjs/packages/grid/src/internal/TopLeftPart.js.map +0 -1
  280. package/dist-cjs/packages/grid/src/internal/TopPart.js.map +0 -1
  281. package/dist-cjs/packages/grid/src/internal/TopRightPart.js.map +0 -1
  282. package/dist-es/node_modules/style-inject/dist/style-inject.es.js +0 -29
  283. package/dist-es/node_modules/style-inject/dist/style-inject.es.js.map +0 -1
  284. package/dist-es/packages/grid/src/BaseCell.js.map +0 -1
  285. package/dist-es/packages/grid/src/CornerTag.js +0 -11
  286. package/dist-es/packages/grid/src/CornerTag.js.map +0 -1
  287. package/dist-es/packages/grid/src/DropdownCellEditor.js.map +0 -1
  288. package/dist-es/packages/grid/src/Grid.js.map +0 -1
  289. package/dist-es/packages/grid/src/GroupHeaderCell.js.map +0 -1
  290. package/dist-es/packages/grid/src/HeaderCell.js.map +0 -1
  291. package/dist-es/packages/grid/src/NumericColumn.js.map +0 -1
  292. package/dist-es/packages/grid/src/RowSelectionCheckboxCellValue.js.map +0 -1
  293. package/dist-es/packages/grid/src/RowSelectionCheckboxHeaderCellValue.js.map +0 -1
  294. package/dist-es/packages/grid/src/RowSelectionRadioCellValue.js.map +0 -1
  295. package/dist-es/packages/grid/src/RowSelectionRadioHeaderCell.js.map +0 -1
  296. package/dist-es/packages/grid/src/TextCellEditor.js.map +0 -1
  297. package/dist-es/packages/grid/src/internal/Cell.js.map +0 -1
  298. package/dist-es/packages/grid/src/internal/CellMeasure.js.map +0 -1
  299. package/dist-es/packages/grid/src/internal/ColumnDropTarget.js.map +0 -1
  300. package/dist-es/packages/grid/src/internal/ColumnGhost.js.map +0 -1
  301. package/dist-es/packages/grid/src/internal/Cursor.js.map +0 -1
  302. package/dist-es/packages/grid/src/internal/DefaultCellValue.js.map +0 -1
  303. package/dist-es/packages/grid/src/internal/FakeCell.js.map +0 -1
  304. package/dist-es/packages/grid/src/internal/GroupHeaderRow.js.map +0 -1
  305. package/dist-es/packages/grid/src/internal/HeaderRow.js.map +0 -1
  306. package/dist-es/packages/grid/src/internal/LeftPart.js.map +0 -1
  307. package/dist-es/packages/grid/src/internal/MiddlePart.js.map +0 -1
  308. package/dist-es/packages/grid/src/internal/RightPart.js.map +0 -1
  309. package/dist-es/packages/grid/src/internal/Scrollable.js.map +0 -1
  310. package/dist-es/packages/grid/src/internal/TableRow.js.map +0 -1
  311. package/dist-es/packages/grid/src/internal/TopLeftPart.js.map +0 -1
  312. package/dist-es/packages/grid/src/internal/TopPart.js.map +0 -1
  313. package/dist-es/packages/grid/src/internal/TopRightPart.js.map +0 -1
  314. /package/dist-cjs/{packages/grid/src/CellEditor.js → CellEditor.js} +0 -0
  315. /package/dist-cjs/{packages/grid/src/CellEditor.js.map → CellEditor.js.map} +0 -0
  316. /package/dist-cjs/{packages/grid/src/ColumnDataContext.js → ColumnDataContext.js} +0 -0
  317. /package/dist-cjs/{packages/grid/src/ColumnDataContext.js.map → ColumnDataContext.js.map} +0 -0
  318. /package/dist-cjs/{packages/grid/src/ColumnDragContext.js → ColumnDragContext.js} +0 -0
  319. /package/dist-cjs/{packages/grid/src/ColumnDragContext.js.map → ColumnDragContext.js.map} +0 -0
  320. /package/dist-cjs/{packages/grid/src/ColumnGroup.js → ColumnGroup.js} +0 -0
  321. /package/dist-cjs/{packages/grid/src/ColumnGroup.js.map → ColumnGroup.js.map} +0 -0
  322. /package/dist-cjs/{packages/grid/src/ColumnSortContext.js → ColumnSortContext.js} +0 -0
  323. /package/dist-cjs/{packages/grid/src/ColumnSortContext.js.map → ColumnSortContext.js.map} +0 -0
  324. /package/dist-cjs/{packages/grid/src/CursorContext.js → CursorContext.js} +0 -0
  325. /package/dist-cjs/{packages/grid/src/CursorContext.js.map → CursorContext.js.map} +0 -0
  326. /package/dist-cjs/{packages/grid/src/EditorContext.js → EditorContext.js} +0 -0
  327. /package/dist-cjs/{packages/grid/src/EditorContext.js.map → EditorContext.js.map} +0 -0
  328. /package/dist-cjs/{packages/grid/src/GridColumn.js → GridColumn.js} +0 -0
  329. /package/dist-cjs/{packages/grid/src/GridColumn.js.map → GridColumn.js.map} +0 -0
  330. /package/dist-cjs/{packages/grid/src/GridContext.js → GridContext.js} +0 -0
  331. /package/dist-cjs/{packages/grid/src/GridContext.js.map → GridContext.js.map} +0 -0
  332. /package/dist-cjs/{packages/grid/src/GroupHeaderCellValue.js → GroupHeaderCellValue.js} +0 -0
  333. /package/dist-cjs/{packages/grid/src/GroupHeaderCellValue.js.map → GroupHeaderCellValue.js.map} +0 -0
  334. /package/dist-cjs/{packages/grid/src/HeaderCellValue.js → HeaderCellValue.js} +0 -0
  335. /package/dist-cjs/{packages/grid/src/HeaderCellValue.js.map → HeaderCellValue.js.map} +0 -0
  336. /package/dist-cjs/{packages/grid/src/LayoutContext.js → LayoutContext.js} +0 -0
  337. /package/dist-cjs/{packages/grid/src/LayoutContext.js.map → LayoutContext.js.map} +0 -0
  338. /package/dist-cjs/{packages/grid/src/NumberRange.js → NumberRange.js} +0 -0
  339. /package/dist-cjs/{packages/grid/src/NumberRange.js.map → NumberRange.js.map} +0 -0
  340. /package/dist-cjs/{packages/grid/src/RowSelectionCheckboxColumn.js → RowSelectionCheckboxColumn.js} +0 -0
  341. /package/dist-cjs/{packages/grid/src/RowSelectionCheckboxColumn.js.map → RowSelectionCheckboxColumn.js.map} +0 -0
  342. /package/dist-cjs/{packages/grid/src/RowSelectionRadioColumn.js → RowSelectionRadioColumn.js} +0 -0
  343. /package/dist-cjs/{packages/grid/src/RowSelectionRadioColumn.js.map → RowSelectionRadioColumn.js.map} +0 -0
  344. /package/dist-cjs/{packages/grid/src/RowValidationStatus.js → RowValidationStatus.js} +0 -0
  345. /package/dist-cjs/{packages/grid/src/RowValidationStatus.js.map → RowValidationStatus.js.map} +0 -0
  346. /package/dist-cjs/{packages/grid/src/SelectionContext.js → SelectionContext.js} +0 -0
  347. /package/dist-cjs/{packages/grid/src/SelectionContext.js.map → SelectionContext.js.map} +0 -0
  348. /package/dist-cjs/{packages/grid/src/SizingContext.js → SizingContext.js} +0 -0
  349. /package/dist-cjs/{packages/grid/src/SizingContext.js.map → SizingContext.js.map} +0 -0
  350. /package/dist-cjs/{packages/grid/src/index.js → index.js} +0 -0
  351. /package/dist-cjs/{packages/grid/src/index.js.map → index.js.map} +0 -0
  352. /package/dist-cjs/{packages/grid/src/internal → internal}/CellStatusIcons.js +0 -0
  353. /package/dist-cjs/{packages/grid/src/internal → internal}/CellStatusIcons.js.map +0 -0
  354. /package/dist-cjs/{packages/grid/src/internal → internal}/FakeGroupCell.js +0 -0
  355. /package/dist-cjs/{packages/grid/src/internal → internal}/FakeGroupCell.js.map +0 -0
  356. /package/dist-cjs/{packages/grid/src/internal → internal}/FakeHeaderCell.js +0 -0
  357. /package/dist-cjs/{packages/grid/src/internal → internal}/FakeHeaderCell.js.map +0 -0
  358. /package/dist-cjs/{packages/grid/src/internal → internal}/TableBody.js +0 -0
  359. /package/dist-cjs/{packages/grid/src/internal → internal}/TableBody.js.map +0 -0
  360. /package/dist-cjs/{packages/grid/src/internal → internal}/TableColGroup.js +0 -0
  361. /package/dist-cjs/{packages/grid/src/internal → internal}/TableColGroup.js.map +0 -0
  362. /package/dist-cjs/{packages/grid/src/internal → internal}/gridHooks.js +0 -0
  363. /package/dist-cjs/{packages/grid/src/internal → internal}/gridHooks.js.map +0 -0
  364. /package/dist-cjs/{packages/grid/src/internal → internal}/utils.js +0 -0
  365. /package/dist-cjs/{packages/grid/src/internal → internal}/utils.js.map +0 -0
  366. /package/dist-es/{packages/grid/src/CellEditor.js → CellEditor.js} +0 -0
  367. /package/dist-es/{packages/grid/src/CellEditor.js.map → CellEditor.js.map} +0 -0
  368. /package/dist-es/{packages/grid/src/ColumnDataContext.js → ColumnDataContext.js} +0 -0
  369. /package/dist-es/{packages/grid/src/ColumnDataContext.js.map → ColumnDataContext.js.map} +0 -0
  370. /package/dist-es/{packages/grid/src/ColumnDragContext.js → ColumnDragContext.js} +0 -0
  371. /package/dist-es/{packages/grid/src/ColumnDragContext.js.map → ColumnDragContext.js.map} +0 -0
  372. /package/dist-es/{packages/grid/src/ColumnGroup.js → ColumnGroup.js} +0 -0
  373. /package/dist-es/{packages/grid/src/ColumnGroup.js.map → ColumnGroup.js.map} +0 -0
  374. /package/dist-es/{packages/grid/src/ColumnSortContext.js → ColumnSortContext.js} +0 -0
  375. /package/dist-es/{packages/grid/src/ColumnSortContext.js.map → ColumnSortContext.js.map} +0 -0
  376. /package/dist-es/{packages/grid/src/CursorContext.js → CursorContext.js} +0 -0
  377. /package/dist-es/{packages/grid/src/CursorContext.js.map → CursorContext.js.map} +0 -0
  378. /package/dist-es/{packages/grid/src/EditorContext.js → EditorContext.js} +0 -0
  379. /package/dist-es/{packages/grid/src/EditorContext.js.map → EditorContext.js.map} +0 -0
  380. /package/dist-es/{packages/grid/src/GridColumn.js → GridColumn.js} +0 -0
  381. /package/dist-es/{packages/grid/src/GridColumn.js.map → GridColumn.js.map} +0 -0
  382. /package/dist-es/{packages/grid/src/GridContext.js → GridContext.js} +0 -0
  383. /package/dist-es/{packages/grid/src/GridContext.js.map → GridContext.js.map} +0 -0
  384. /package/dist-es/{packages/grid/src/GroupHeaderCellValue.js → GroupHeaderCellValue.js} +0 -0
  385. /package/dist-es/{packages/grid/src/GroupHeaderCellValue.js.map → GroupHeaderCellValue.js.map} +0 -0
  386. /package/dist-es/{packages/grid/src/HeaderCellValue.js → HeaderCellValue.js} +0 -0
  387. /package/dist-es/{packages/grid/src/HeaderCellValue.js.map → HeaderCellValue.js.map} +0 -0
  388. /package/dist-es/{packages/grid/src/LayoutContext.js → LayoutContext.js} +0 -0
  389. /package/dist-es/{packages/grid/src/LayoutContext.js.map → LayoutContext.js.map} +0 -0
  390. /package/dist-es/{packages/grid/src/NumberRange.js → NumberRange.js} +0 -0
  391. /package/dist-es/{packages/grid/src/NumberRange.js.map → NumberRange.js.map} +0 -0
  392. /package/dist-es/{packages/grid/src/RowSelectionCheckboxColumn.js → RowSelectionCheckboxColumn.js} +0 -0
  393. /package/dist-es/{packages/grid/src/RowSelectionCheckboxColumn.js.map → RowSelectionCheckboxColumn.js.map} +0 -0
  394. /package/dist-es/{packages/grid/src/RowSelectionRadioColumn.js → RowSelectionRadioColumn.js} +0 -0
  395. /package/dist-es/{packages/grid/src/RowSelectionRadioColumn.js.map → RowSelectionRadioColumn.js.map} +0 -0
  396. /package/dist-es/{packages/grid/src/RowValidationStatus.js → RowValidationStatus.js} +0 -0
  397. /package/dist-es/{packages/grid/src/RowValidationStatus.js.map → RowValidationStatus.js.map} +0 -0
  398. /package/dist-es/{packages/grid/src/SelectionContext.js → SelectionContext.js} +0 -0
  399. /package/dist-es/{packages/grid/src/SelectionContext.js.map → SelectionContext.js.map} +0 -0
  400. /package/dist-es/{packages/grid/src/SizingContext.js → SizingContext.js} +0 -0
  401. /package/dist-es/{packages/grid/src/SizingContext.js.map → SizingContext.js.map} +0 -0
  402. /package/dist-es/{packages/grid/src/index.js → index.js} +0 -0
  403. /package/dist-es/{packages/grid/src/index.js.map → index.js.map} +0 -0
  404. /package/dist-es/{packages/grid/src/internal → internal}/CellStatusIcons.js +0 -0
  405. /package/dist-es/{packages/grid/src/internal → internal}/CellStatusIcons.js.map +0 -0
  406. /package/dist-es/{packages/grid/src/internal → internal}/FakeGroupCell.js +0 -0
  407. /package/dist-es/{packages/grid/src/internal → internal}/FakeGroupCell.js.map +0 -0
  408. /package/dist-es/{packages/grid/src/internal → internal}/FakeHeaderCell.js +0 -0
  409. /package/dist-es/{packages/grid/src/internal → internal}/FakeHeaderCell.js.map +0 -0
  410. /package/dist-es/{packages/grid/src/internal → internal}/TableBody.js +0 -0
  411. /package/dist-es/{packages/grid/src/internal → internal}/TableBody.js.map +0 -0
  412. /package/dist-es/{packages/grid/src/internal → internal}/TableColGroup.js +0 -0
  413. /package/dist-es/{packages/grid/src/internal → internal}/TableColGroup.js.map +0 -0
  414. /package/dist-es/{packages/grid/src/internal → internal}/gridHooks.js +0 -0
  415. /package/dist-es/{packages/grid/src/internal → internal}/gridHooks.js.map +0 -0
  416. /package/dist-es/{packages/grid/src/internal → internal}/utils.js +0 -0
  417. /package/dist-es/{packages/grid/src/internal → internal}/utils.js.map +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"file":"Scrollable.js","sources":["../src/internal/Scrollable.tsx"],"sourcesContent":["import { RefObject, UIEventHandler, useEffect } from \"react\";\nimport \"./Scrollable.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nconst withBaseName = makePrefixer(\"saltGridScrollable\");\n\nexport interface ScrollableProps<T> {\n resizeClient: (params: {\n clientWidth: number;\n clientHeight: number;\n scrollBarWidth: number;\n scrollBarHeight: number;\n }) => void;\n\n scrollLeft: number;\n scrollTop: number;\n scrollSource: \"user\" | \"table\";\n scroll: (left?: number, top?: number, source?: \"user\" | \"table\") => void;\n\n scrollerRef: RefObject<HTMLDivElement>;\n middleRef: RefObject<HTMLDivElement>;\n topRef: RefObject<HTMLDivElement>;\n leftRef: RefObject<HTMLDivElement>;\n rightRef: RefObject<HTMLDivElement>;\n bottomRef: RefObject<HTMLDivElement>;\n}\n\n// Provides scrollbars for the grid. Synchronizes scrolling across all parts\n// (pinned and unpinned).\nexport function Scrollable<T>(props: ScrollableProps<T>) {\n const {\n scrollerRef,\n middleRef,\n topRef,\n leftRef,\n rightRef,\n bottomRef,\n resizeClient,\n scrollLeft,\n scrollTop,\n scrollSource,\n } = props;\n\n const onScroll: UIEventHandler<HTMLDivElement> = (event) => {\n if (!scrollerRef.current) {\n return;\n }\n const { scrollLeft, scrollTop } = scrollerRef.current;\n const top = topRef.current;\n const bottom = bottomRef.current;\n if (top) {\n top.scrollLeft = scrollLeft;\n }\n if (bottom) {\n bottom.scrollLeft = scrollLeft;\n }\n const left = leftRef.current;\n if (left) {\n left.scrollTop = scrollTop;\n }\n const right = rightRef.current;\n if (right) {\n right.scrollTop = scrollTop;\n }\n const middle = middleRef.current;\n if (middle) {\n middle.scrollTop = scrollTop;\n middle.scrollLeft = scrollLeft;\n }\n props.scroll(scrollLeft, scrollTop, \"user\");\n };\n\n useEffect(() => {\n if (!scrollerRef.current) {\n return;\n }\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { offsetWidth, offsetHeight, clientWidth, clientHeight } =\n entry.target as HTMLDivElement;\n const scrollBarWidth = offsetWidth - clientWidth;\n const scrollBarHeight = offsetHeight - clientHeight;\n resizeClient({\n clientWidth,\n clientHeight,\n scrollBarWidth,\n scrollBarHeight,\n });\n });\n\n resizeObserver.observe(scrollerRef.current);\n return () => resizeObserver.disconnect();\n }, [resizeClient, scrollerRef]);\n\n useEffect(() => {\n if (!scrollerRef.current) {\n return;\n }\n if (scrollSource === \"table\") {\n if (scrollLeft !== scrollerRef.current.scrollLeft) {\n scrollerRef.current.scrollLeft = scrollLeft;\n }\n if (scrollTop !== scrollerRef.current.scrollTop) {\n scrollerRef.current.scrollTop = scrollTop;\n }\n }\n }, [scrollLeft, scrollTop, scrollSource, scrollerRef]);\n\n return (\n <div\n ref={scrollerRef}\n className={withBaseName()}\n onScroll={onScroll}\n data-testid=\"grid-scrollable\"\n >\n <div className={withBaseName(\"space\")} />\n </div>\n );\n}\n"],"names":["makePrefixer","scrollLeft","scrollTop","useEffect","jsx"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TableRow.js","sources":["../src/internal/TableRow.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n isValidElement,\n MouseEventHandler,\n} from \"react\";\nimport \"./TableRow.css\";\nimport { BaseCell } from \"../BaseCell\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { GridColumnModel, GridRowModel } from \"../Grid\";\nimport { FakeCell } from \"./FakeCell\";\nimport { DefaultCellValue } from \"./DefaultCellValue\";\nimport { useGridContext } from \"../GridContext\";\nimport { CellValidationState } from \"../GridColumn\";\nimport { RowValidationStatusContext } from \"../RowValidationStatus\";\n\nconst withBaseName = makePrefixer(\"saltGridTableRow\");\n\nexport interface TableRowProps<T> {\n row: GridRowModel<T>;\n isSelected?: boolean;\n isHoverOver?: boolean;\n zebra?: boolean;\n columns: GridColumnModel<T>[];\n cursorColIdx?: number;\n onMouseEnter?: MouseEventHandler<HTMLTableRowElement>;\n onMouseLeave?: MouseEventHandler<HTMLTableRowElement>;\n gap?: number;\n editorColIdx?: number;\n isCellSelected?: (rowIdx: number, colIdx: number) => boolean;\n headerIsFocusable?: boolean;\n validationStatus?: CellValidationState;\n}\n\nexport function TableRow<T>(props: TableRowProps<T>) {\n const {\n row,\n isSelected,\n zebra,\n isHoverOver,\n columns,\n onMouseEnter,\n onMouseLeave,\n cursorColIdx,\n gap,\n editorColIdx,\n isCellSelected,\n headerIsFocusable,\n validationStatus: rowValidationStatus,\n } = props;\n\n const grid = useGridContext();\n\n if (!row.key) {\n throw new Error(`Invalid row`);\n }\n\n const ariaRowIndex = headerIsFocusable ? row.index + 2 : row.index + 1;\n\n return (\n <tr\n aria-rowindex={ariaRowIndex}\n aria-selected={isSelected ? true : undefined}\n className={clsx(withBaseName(), {\n [withBaseName(\"zebra\")]: zebra,\n [withBaseName(\"hover\")]: isHoverOver,\n [withBaseName(\"selected\")]: isSelected,\n [withBaseName(\"first\")]: row.index === 0,\n [withBaseName(`validationStatus-${rowValidationStatus}`)]:\n rowValidationStatus,\n })}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n data-row-index={row.index}\n data-row-key={row.key}\n role=\"row\"\n >\n {columns.map((column, i) => {\n const colKey = column.info.props.id;\n const editorInfo = grid.getEditor(column.info.props.id);\n const isEditable = !!editorInfo;\n\n if (editorColIdx === column.index) {\n if (isEditable) {\n if (isValidElement(editorInfo.children)) {\n const editorElement = Children.only(editorInfo.children);\n return cloneElement(editorElement, {\n key: colKey,\n row,\n column,\n } as any);\n }\n }\n }\n\n const Cell = column.info.props.cellComponent || BaseCell;\n const CellValue =\n column.info.props.cellValueComponent || DefaultCellValue;\n const value =\n column.info.props.getValue && row.data\n ? column.info.props.getValue(row.data)\n : null;\n const isFocused = cursorColIdx === column.index;\n const isSelected =\n isCellSelected && isCellSelected(row.index, column.index);\n const validationFnArg = {\n row,\n column,\n isFocused,\n value,\n };\n const validationStatus =\n column.info.props.getValidationStatus?.(validationFnArg);\n const validationMessage =\n validationStatus &&\n column.info.props.getValidationMessage?.(validationFnArg);\n\n return (\n <RowValidationStatusContext.Provider\n value={{ status: rowValidationStatus }}\n >\n <Cell\n key={colKey}\n row={row}\n column={column}\n isFocused={isFocused}\n isSelected={isSelected}\n isEditable={isEditable}\n validationStatus={validationStatus}\n validationMessage={validationMessage}\n validationType={column.info.props.validationType}\n value={value}\n align={column.info.props.align}\n >\n <CellValue\n column={column}\n row={row}\n value={value}\n isFocused={isFocused}\n validationStatus={validationStatus}\n validationMessage={validationMessage}\n validationType={column.info.props.validationType}\n />\n </Cell>\n </RowValidationStatusContext.Provider>\n );\n })}\n {gap !== undefined && gap > 0 ? <FakeCell row={row} /> : null}\n </tr>\n );\n}\n"],"names":["makePrefixer","useGridContext","jsxs","clsx","isValidElement","Children","cloneElement","BaseCell","DefaultCellValue","isSelected","jsx","RowValidationStatusContext","FakeCell"],"mappings":";;;;;;;;;;;;;;;AAiBA,MAAM,YAAA,GAAeA,kBAAa,kBAAkB,CAAA,CAAA;AAkB7C,SAAS,SAAY,KAAyB,EAAA;AACnD,EAAM,MAAA;AAAA,IACJ,GAAA;AAAA,IACA,UAAA;AAAA,IACA,KAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,YAAA;AAAA,IACA,GAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,iBAAA;AAAA,IACA,gBAAkB,EAAA,mBAAA;AAAA,GAChB,GAAA,KAAA,CAAA;AAEJ,EAAA,MAAM,OAAOC,0BAAe,EAAA,CAAA;AAE5B,EAAI,IAAA,CAAC,IAAI,GAAK,EAAA;AACZ,IAAM,MAAA,IAAI,MAAM,CAAa,WAAA,CAAA,CAAA,CAAA;AAAA,GAC/B;AAEA,EAAA,MAAM,eAAe,iBAAoB,GAAA,GAAA,CAAI,KAAQ,GAAA,CAAA,GAAI,IAAI,KAAQ,GAAA,CAAA,CAAA;AAErE,EAAA,uBACGC,eAAA,CAAA,IAAA,EAAA;AAAA,IACC,eAAe,EAAA,YAAA;AAAA,IACf,eAAA,EAAe,aAAa,IAAO,GAAA,KAAA,CAAA;AAAA,IACnC,SAAA,EAAWC,SAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,OAAO,CAAI,GAAA,KAAA;AAAA,MACzB,CAAC,YAAa,CAAA,OAAO,CAAI,GAAA,WAAA;AAAA,MACzB,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,UAAA;AAAA,MAC5B,CAAC,YAAA,CAAa,OAAO,CAAA,GAAI,IAAI,KAAU,KAAA,CAAA;AAAA,MACvC,CAAC,YAAA,CAAa,CAAoB,iBAAA,EAAA,mBAAA,CAAA,CAAqB,CACrD,GAAA,mBAAA;AAAA,KACH,CAAA;AAAA,IACD,YAAA;AAAA,IACA,YAAA;AAAA,IACA,kBAAgB,GAAI,CAAA,KAAA;AAAA,IACpB,gBAAc,GAAI,CAAA,GAAA;AAAA,IAClB,IAAK,EAAA,KAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,MAAQ,OAAA,CAAA,GAAA,CAAI,CAAC,MAAA,EAAQ,CAAM,KAAA;AA9ElC,QAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AA+EQ,QAAM,MAAA,MAAA,GAAS,MAAO,CAAA,IAAA,CAAK,KAAM,CAAA,EAAA,CAAA;AACjC,QAAA,MAAM,aAAa,IAAK,CAAA,SAAA,CAAU,MAAO,CAAA,IAAA,CAAK,MAAM,EAAE,CAAA,CAAA;AACtD,QAAM,MAAA,UAAA,GAAa,CAAC,CAAC,UAAA,CAAA;AAErB,QAAI,IAAA,YAAA,KAAiB,OAAO,KAAO,EAAA;AACjC,UAAA,IAAI,UAAY,EAAA;AACd,YAAI,IAAAC,oBAAA,CAAe,UAAW,CAAA,QAAQ,CAAG,EAAA;AACvC,cAAA,MAAM,aAAgB,GAAAC,cAAA,CAAS,IAAK,CAAA,UAAA,CAAW,QAAQ,CAAA,CAAA;AACvD,cAAA,OAAOC,mBAAa,aAAe,EAAA;AAAA,gBACjC,GAAK,EAAA,MAAA;AAAA,gBACL,GAAA;AAAA,gBACA,MAAA;AAAA,eACM,CAAA,CAAA;AAAA,aACV;AAAA,WACF;AAAA,SACF;AAEA,QAAA,MAAM,IAAO,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,aAAiB,IAAAC,iBAAA,CAAA;AAChD,QAAA,MAAM,SACJ,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,kBAAsB,IAAAC,iCAAA,CAAA;AAC1C,QAAA,MAAM,KACJ,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,QAAY,IAAA,GAAA,CAAI,IAC9B,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,QAAS,CAAA,GAAA,CAAI,IAAI,CACnC,GAAA,IAAA,CAAA;AACN,QAAM,MAAA,SAAA,GAAY,iBAAiB,MAAO,CAAA,KAAA,CAAA;AAC1C,QAAA,MAAMC,cACJ,cAAkB,IAAA,cAAA,CAAe,GAAI,CAAA,KAAA,EAAO,OAAO,KAAK,CAAA,CAAA;AAC1D,QAAA,MAAM,eAAkB,GAAA;AAAA,UACtB,GAAA;AAAA,UACA,MAAA;AAAA,UACA,SAAA;AAAA,UACA,KAAA;AAAA,SACF,CAAA;AACA,QAAA,MAAM,gBACJ,GAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,EAAM,wBAAlB,IAAwC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,eAAA,CAAA,CAAA;AAC1C,QAAA,MAAM,oBACJ,gBACA,KAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,EAAM,yBAAlB,IAAyC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAA,EAAA,EAAA,eAAA,CAAA,CAAA,CAAA;AAE3C,QACE,uBAAAC,cAAA,CAACC,+CAA2B,QAA3B,EAAA;AAAA,UACC,KAAA,EAAO,EAAE,MAAA,EAAQ,mBAAoB,EAAA;AAAA,UAErC,QAAC,kBAAAD,cAAA,CAAA,IAAA,EAAA;AAAA,YAEC,GAAA;AAAA,YACA,MAAA;AAAA,YACA,SAAA;AAAA,YACA,UAAYD,EAAAA,WAAAA;AAAA,YACZ,UAAA;AAAA,YACA,gBAAA;AAAA,YACA,iBAAA;AAAA,YACA,cAAA,EAAgB,MAAO,CAAA,IAAA,CAAK,KAAM,CAAA,cAAA;AAAA,YAClC,KAAA;AAAA,YACA,KAAA,EAAO,MAAO,CAAA,IAAA,CAAK,KAAM,CAAA,KAAA;AAAA,YAEzB,QAAC,kBAAAC,cAAA,CAAA,SAAA,EAAA;AAAA,cACC,MAAA;AAAA,cACA,GAAA;AAAA,cACA,KAAA;AAAA,cACA,SAAA;AAAA,cACA,gBAAA;AAAA,cACA,iBAAA;AAAA,cACA,cAAA,EAAgB,MAAO,CAAA,IAAA,CAAK,KAAM,CAAA,cAAA;AAAA,aACpC,CAAA;AAAA,WAAA,EApBK,MAqBP,CAAA;AAAA,SACF,CAAA,CAAA;AAAA,OAEH,CAAA;AAAA,MACA,GAAQ,KAAA,KAAA,CAAA,IAAa,GAAM,GAAA,CAAA,mBAAKA,cAAA,CAAAE,iBAAA,EAAA;AAAA,QAAS,GAAA;AAAA,OAAU,CAAK,GAAA,IAAA;AAAA,KAAA;AAAA,GAC3D,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TopLeftPart.js","sources":["../src/internal/TopLeftPart.tsx"],"sourcesContent":["import \"./TopLeftPart.css\";\nimport { TableColGroup } from \"./TableColGroup\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { GridColumnGroupModel, GridColumnModel } from \"../Grid\";\nimport { GroupHeaderRow } from \"./GroupHeaderRow\";\nimport { clsx } from \"clsx\";\nimport { useActiveOnWheel } from \"./gridHooks\";\n\nconst withBaseName = makePrefixer(\"saltGridTopLeftPart\");\n\nexport interface TopLeftPartProps<T> {\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n columnGroups: GridColumnGroupModel[];\n rightShadow?: boolean;\n bottomShadow?: boolean;\n}\n\nexport function TopLeftPart<T>(props: TopLeftPartProps<T>) {\n const { onWheel, columns, columnGroups, rightShadow, bottomShadow } = props;\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"rightShadow\")]: rightShadow,\n [withBaseName(\"bottomShadow\")]: bottomShadow,\n })}\n data-testid=\"grid-top-left-part\"\n >\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} />\n <thead>\n <GroupHeaderRow groups={columnGroups} />\n <HeaderRow columns={columns} />\n </thead>\n </table>\n </div>\n );\n}\n"],"names":["makePrefixer","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","GroupHeaderRow","HeaderRow"],"mappings":";;;;;;;;;;;;;AASA,MAAM,YAAA,GAAeA,kBAAa,qBAAqB,CAAA,CAAA;AAUhD,SAAS,YAAe,KAA4B,EAAA;AACzD,EAAA,MAAM,EAAE,OAAS,EAAA,OAAA,EAAS,YAAc,EAAA,WAAA,EAAa,cAAiB,GAAA,KAAA,CAAA;AAEtE,EAAM,MAAA,QAAA,GAAWC,2BAAiB,OAAO,CAAA,CAAA;AAEzC,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EAAWC,SAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,aAAa,CAAI,GAAA,WAAA;AAAA,MAC/B,CAAC,YAAa,CAAA,cAAc,CAAI,GAAA,YAAA;AAAA,KACjC,CAAA;AAAA,IACD,aAAY,EAAA,oBAAA;AAAA,IAEZ,QAAC,kBAAAC,eAAA,CAAA,OAAA,EAAA;AAAA,MAAM,GAAK,EAAA,QAAA;AAAA,MAAU,IAAK,EAAA,cAAA;AAAA,MACzB,QAAA,EAAA;AAAA,wBAACF,cAAA,CAAAG,2BAAA,EAAA;AAAA,UAAc,OAAA;AAAA,SAAkB,CAAA;AAAA,wBAChCD,eAAA,CAAA,OAAA,EAAA;AAAA,UACC,QAAA,EAAA;AAAA,4BAACF,cAAA,CAAAI,6BAAA,EAAA;AAAA,cAAe,MAAQ,EAAA,YAAA;AAAA,aAAc,CAAA;AAAA,4BACrCJ,cAAA,CAAAK,mBAAA,EAAA;AAAA,cAAU,OAAA;AAAA,aAAkB,CAAA;AAAA,WAAA;AAAA,SAC/B,CAAA;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TopPart.js","sources":["../src/internal/TopPart.tsx"],"sourcesContent":["import { RefObject } from \"react\";\nimport { TableColGroup } from \"./TableColGroup\";\nimport \"./TopPart.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { GridColumnGroupModel, GridColumnModel } from \"../Grid\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport { GroupHeaderRow } from \"./GroupHeaderRow\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport { clsx } from \"clsx\";\n\nconst withBaseName = makePrefixer(\"saltGridTopPart\");\n\nexport interface TopPartProps<T> {\n topRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n columnGroups: GridColumnGroupModel[];\n midGap: number;\n bottomShadow?: boolean;\n}\n\nexport function TopPart<T>(props: TopPartProps<T>) {\n const { topRef, onWheel, columns, columnGroups, midGap, bottomShadow } =\n props;\n\n const tableRef = useActiveOnWheel(onWheel);\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"bottomShadow\")]: bottomShadow,\n })}\n ref={topRef}\n data-testid=\"grid-top-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} gap={midGap} />\n <thead>\n <GroupHeaderRow groups={columnGroups} gap={midGap} />\n <HeaderRow columns={columns} gap={midGap} />\n </thead>\n </table>\n </div>\n </div>\n );\n}\n"],"names":["makePrefixer","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","GroupHeaderRow","HeaderRow"],"mappings":";;;;;;;;;;;;;AAUA,MAAM,YAAA,GAAeA,kBAAa,iBAAiB,CAAA,CAAA;AAW5C,SAAS,QAAW,KAAwB,EAAA;AACjD,EAAA,MAAM,EAAE,MAAQ,EAAA,OAAA,EAAS,SAAS,YAAc,EAAA,MAAA,EAAQ,cACtD,GAAA,KAAA,CAAA;AAEF,EAAM,MAAA,QAAA,GAAWC,2BAAiB,OAAO,CAAA,CAAA;AAEzC,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EAAWC,SAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,cAAc,CAAI,GAAA,YAAA;AAAA,KACjC,CAAA;AAAA,IACD,GAAK,EAAA,MAAA;AAAA,IACL,aAAY,EAAA,eAAA;AAAA,IAEZ,QAAC,kBAAAD,cAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,MAClC,QAAC,kBAAAE,eAAA,CAAA,OAAA,EAAA;AAAA,QAAM,GAAK,EAAA,QAAA;AAAA,QAAU,IAAK,EAAA,cAAA;AAAA,QACzB,QAAA,EAAA;AAAA,0BAACF,cAAA,CAAAG,2BAAA,EAAA;AAAA,YAAc,OAAA;AAAA,YAAkB,GAAK,EAAA,MAAA;AAAA,WAAQ,CAAA;AAAA,0BAC7CD,eAAA,CAAA,OAAA,EAAA;AAAA,YACC,QAAA,EAAA;AAAA,8BAACF,cAAA,CAAAI,6BAAA,EAAA;AAAA,gBAAe,MAAQ,EAAA,YAAA;AAAA,gBAAc,GAAK,EAAA,MAAA;AAAA,eAAQ,CAAA;AAAA,8BAClDJ,cAAA,CAAAK,mBAAA,EAAA;AAAA,gBAAU,OAAA;AAAA,gBAAkB,GAAK,EAAA,MAAA;AAAA,eAAQ,CAAA;AAAA,aAAA;AAAA,WAC5C,CAAA;AAAA,SAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TopRightPart.js","sources":["../src/internal/TopRightPart.tsx"],"sourcesContent":["import { TableColGroup } from \"./TableColGroup\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport \"./TopRightPart.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { GridColumnGroupModel, GridColumnModel } from \"../Grid\";\nimport { GroupHeaderRow } from \"./GroupHeaderRow\";\nimport { clsx } from \"clsx\";\nimport { useActiveOnWheel } from \"./gridHooks\";\n\nconst withBaseName = makePrefixer(\"saltGridTopRightPart\");\n\nexport interface TopRightPartProps<T> {\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n columnGroups: GridColumnGroupModel[];\n leftShadow?: boolean;\n bottomShadow?: boolean;\n}\n\nexport function TopRightPart<T>(props: TopRightPartProps<T>) {\n const { onWheel, columns, columnGroups, leftShadow, bottomShadow } = props;\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"leftShadow\")]: leftShadow,\n [withBaseName(\"bottomShadow\")]: bottomShadow,\n })}\n data-testid=\"grid-top-right-part\"\n >\n <table\n className={withBaseName(\"table\")}\n ref={tableRef}\n role=\"presentation\"\n >\n <TableColGroup columns={columns} />\n <thead>\n <GroupHeaderRow groups={columnGroups} />\n <HeaderRow columns={columns} />\n {/*TODO Do we need a toolbar?*/}\n {/*{showToolbar ? <HeaderToolbarRow columns={rightColumns} /> : null}*/}\n </thead>\n </table>\n </div>\n );\n}\n"],"names":["makePrefixer","useActiveOnWheel","jsx","clsx","jsxs","TableColGroup","GroupHeaderRow","HeaderRow"],"mappings":";;;;;;;;;;;;;AASA,MAAM,YAAA,GAAeA,kBAAa,sBAAsB,CAAA,CAAA;AAUjD,SAAS,aAAgB,KAA6B,EAAA;AAC3D,EAAA,MAAM,EAAE,OAAS,EAAA,OAAA,EAAS,YAAc,EAAA,UAAA,EAAY,cAAiB,GAAA,KAAA,CAAA;AAErE,EAAM,MAAA,QAAA,GAAWC,2BAAiB,OAAO,CAAA,CAAA;AAEzC,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACGC,cAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EAAWC,SAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,YAAY,CAAI,GAAA,UAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,cAAc,CAAI,GAAA,YAAA;AAAA,KACjC,CAAA;AAAA,IACD,aAAY,EAAA,qBAAA;AAAA,IAEZ,QAAC,kBAAAC,eAAA,CAAA,OAAA,EAAA;AAAA,MACC,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,MAC/B,GAAK,EAAA,QAAA;AAAA,MACL,IAAK,EAAA,cAAA;AAAA,MAEL,QAAA,EAAA;AAAA,wBAACF,cAAA,CAAAG,2BAAA,EAAA;AAAA,UAAc,OAAA;AAAA,SAAkB,CAAA;AAAA,wBAChCD,eAAA,CAAA,OAAA,EAAA;AAAA,UACC,QAAA,EAAA;AAAA,4BAACF,cAAA,CAAAI,6BAAA,EAAA;AAAA,cAAe,MAAQ,EAAA,YAAA;AAAA,aAAc,CAAA;AAAA,4BACrCJ,cAAA,CAAAK,mBAAA,EAAA;AAAA,cAAU,OAAA;AAAA,aAAkB,CAAA;AAAA,WAAA;AAAA,SAG/B,CAAA;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1,29 +0,0 @@
1
- function styleInject(css, ref) {
2
- if ( ref === void 0 ) ref = {};
3
- var insertAt = ref.insertAt;
4
-
5
- if (!css || typeof document === 'undefined') { return; }
6
-
7
- var head = document.head || document.getElementsByTagName('head')[0];
8
- var style = document.createElement('style');
9
- style.type = 'text/css';
10
-
11
- if (insertAt === 'top') {
12
- if (head.firstChild) {
13
- head.insertBefore(style, head.firstChild);
14
- } else {
15
- head.appendChild(style);
16
- }
17
- } else {
18
- head.appendChild(style);
19
- }
20
-
21
- if (style.styleSheet) {
22
- style.styleSheet.cssText = css;
23
- } else {
24
- style.appendChild(document.createTextNode(css));
25
- }
26
- }
27
-
28
- export { styleInject as default };
29
- //# sourceMappingURL=style-inject.es.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"style-inject.es.js","sources":["../../../node_modules/style-inject/dist/style-inject.es.js"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n"],"names":[],"mappings":"AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;AACjC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;AAC9B;AACA,EAAE,IAAI,CAAC,GAAG,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO,EAAE;AAC1D;AACA,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;AAC9C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU,CAAC;AAC1B;AACA,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAChD,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC9B,KAAK;AACL,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,GAAG;AACH;AACA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;AACnC,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;AACpD,GAAG;AACH;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"BaseCell.js","sources":["../src/BaseCell.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport \"./BaseCell.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { GridCellProps } from \"./GridColumn\";\nimport { GridColumnModel } from \"./Grid\";\nimport { Cell, Cursor, useFocusableContent } from \"./internal\";\nimport { CornerTag } from \"./CornerTag\";\nimport {\n CellErrorIcon,\n CellSuccessIcon,\n CellWarningIcon,\n} from \"./internal/CellStatusIcons\";\n\nconst withBaseName = makePrefixer(\"saltGridBaseCell\");\n\nexport function getCellId<T>(rowKey: string, column: GridColumnModel<T>) {\n return `R${rowKey}C${column.info.props.id}`;\n}\n\nconst icons = {\n warning: CellWarningIcon,\n error: CellErrorIcon,\n success: CellSuccessIcon,\n};\n\n// Default component for grid cells. Provides selection, on-hover highlighting,\n// cursor etc.\nexport function BaseCell<T>(props: GridCellProps<T>) {\n const {\n column,\n className,\n row,\n style,\n isFocused,\n isSelected,\n isEditable,\n children,\n validationStatus,\n validationMessage,\n validationType = \"light\",\n align,\n } = props;\n\n const { ref, isFocusableContent, onFocus } =\n useFocusableContent<HTMLTableCellElement>();\n const cellId = getCellId(row.key, column);\n const hasValidation = !!validationStatus;\n const hasValidationMessage = !!validationMessage || hasValidation;\n const validationMessageId = `${cellId}-statusMessage`;\n return (\n <Cell\n ref={ref}\n id={cellId}\n data-row-index={row.index}\n data-column-index={column.index}\n data-testid={isFocused ? \"grid-cell-focused\" : undefined}\n // aria-colindex uses one-based array indexing\n aria-colindex={column.index + 1}\n role=\"gridcell\"\n separator={column.separator}\n isSelected={isSelected}\n isEditable={isEditable}\n className={clsx(className, {\n [withBaseName(\"hasValidation\")]: hasValidation,\n [withBaseName(`status-${validationStatus as string}`)]:\n validationStatus,\n })}\n style={style}\n tabIndex={isFocused && !isFocusableContent ? 0 : -1}\n onFocus={onFocus}\n aria-invalid={validationStatus === \"error\" || undefined}\n aria-describedby={hasValidationMessage ? validationMessageId : undefined}\n >\n {hasValidationMessage ? (\n <div\n id={validationMessageId}\n className=\"salt-visuallyHidden\"\n aria-hidden\n role=\"status\"\n >\n {validationMessage\n ? validationMessage\n : `Cell validation state is ${validationStatus as string}`}\n </div>\n ) : null}\n <div className={clsx(withBaseName(\"valueContainer\"))}>{children}</div>\n {hasValidation && validationType === \"strong\" ? (\n <div\n className={clsx(withBaseName(\"statusContainer\"), {\n [withBaseName(`statusContainer-align-${align as string}`)]: align,\n })}\n >\n {icons[validationStatus]}\n </div>\n ) : null}\n {isFocused && isEditable && <CornerTag focusOnly={true} />}\n {isFocused && !isFocusableContent && <Cursor />}\n </Cell>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- import { jsx } from 'react/jsx-runtime';
2
- import './CornerTag.css.js';
3
-
4
- function CornerTag(props) {
5
- return /* @__PURE__ */ jsx("div", {
6
- className: props.focusOnly ? "saltGridCornerTag-focusOnly" : "saltGridCornerTag"
7
- });
8
- }
9
-
10
- export { CornerTag };
11
- //# sourceMappingURL=CornerTag.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CornerTag.js","sources":["../src/CornerTag.tsx"],"sourcesContent":["import \"./CornerTag.css\";\n\nexport interface CornerTagProps {\n focusOnly?: boolean; // Show when the parent is focused, hide when not\n}\n\nexport function CornerTag(props: CornerTagProps) {\n return (\n <div\n className={\n props.focusOnly ? \"saltGridCornerTag-focusOnly\" : \"saltGridCornerTag\"\n }\n />\n );\n}\n"],"names":[],"mappings":";;;AAMO,SAAS,UAAU,KAAuB,EAAA;AAC/C,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EACE,KAAM,CAAA,SAAA,GAAY,6BAAgC,GAAA,mBAAA;AAAA,GAEtD,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DropdownCellEditor.js","sources":["../src/DropdownCellEditor.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { useEditorContext } from \"./EditorContext\";\nimport { Dropdown, SelectionChangeHandler } from \"@salt-ds/lab\";\nimport \"./DropdownCellEditor.css\";\nimport { useEffect, useRef } from \"react\";\n\nimport { GridColumnModel, GridRowModel } from \"./Grid\";\nimport { CornerTag } from \"./CornerTag\";\nimport { Cell } from \"./internal\";\n\nconst withBaseName = makePrefixer(\"saltGridDropdownCellEditor\");\n\nexport interface DropdownCellEditorProps<T> {\n options: string[];\n // Row and column are provided by the grid. See TableRow.tsx\n row?: GridRowModel<T>;\n column?: GridColumnModel<T>;\n}\n\nexport function DropdownCellEditor<T>(props: DropdownCellEditorProps<T>) {\n const { options, column, row } = props;\n const triggerRef = useRef<HTMLDivElement>(null);\n\n const value = column!.info.props.getValue!(row!.data);\n\n const { endEditMode } = useEditorContext();\n\n const onSelectionChange: SelectionChangeHandler = (event, item) => {\n if (item) {\n endEditMode(item);\n }\n };\n\n useEffect(() => {\n if (triggerRef.current) {\n triggerRef.current.focus();\n }\n }, [triggerRef.current]);\n\n const triggerComponent = (\n <div\n tabIndex={0}\n ref={triggerRef}\n className={withBaseName(\"currentValue\")}\n data-testid=\"grid-cell-editor-trigger\"\n >\n {value}\n </div>\n );\n\n return (\n <Cell separator={column?.separator} className={withBaseName()}>\n <div className={withBaseName(\"dropdownContainer\")}>\n <Dropdown\n isOpen={true}\n source={options}\n defaultSelected={value}\n onSelectionChange={onSelectionChange}\n triggerComponent={triggerComponent}\n width={column!.info.width! - 5}\n />\n </div>\n <CornerTag />\n </Cell>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,MAAM,YAAA,GAAe,aAAa,4BAA4B,CAAA,CAAA;AASvD,SAAS,mBAAsB,KAAmC,EAAA;AACvE,EAAA,MAAM,EAAE,OAAA,EAAS,MAAQ,EAAA,GAAA,EAAQ,GAAA,KAAA,CAAA;AACjC,EAAM,MAAA,UAAA,GAAa,OAAuB,IAAI,CAAA,CAAA;AAE9C,EAAA,MAAM,QAAQ,MAAQ,CAAA,IAAA,CAAK,KAAM,CAAA,QAAA,CAAU,IAAK,IAAI,CAAA,CAAA;AAEpD,EAAM,MAAA,EAAE,WAAY,EAAA,GAAI,gBAAiB,EAAA,CAAA;AAEzC,EAAM,MAAA,iBAAA,GAA4C,CAAC,KAAA,EAAO,IAAS,KAAA;AACjE,IAAA,IAAI,IAAM,EAAA;AACR,MAAA,WAAA,CAAY,IAAI,CAAA,CAAA;AAAA,KAClB;AAAA,GACF,CAAA;AAEA,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,WAAW,OAAS,EAAA;AACtB,MAAA,UAAA,CAAW,QAAQ,KAAM,EAAA,CAAA;AAAA,KAC3B;AAAA,GACC,EAAA,CAAC,UAAW,CAAA,OAAO,CAAC,CAAA,CAAA;AAEvB,EAAA,MAAM,mCACH,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,QAAU,EAAA,CAAA;AAAA,IACV,GAAK,EAAA,UAAA;AAAA,IACL,SAAA,EAAW,aAAa,cAAc,CAAA;AAAA,IACtC,aAAY,EAAA,0BAAA;AAAA,IAEX,QAAA,EAAA,KAAA;AAAA,GACH,CAAA,CAAA;AAGF,EAAA,uBACG,IAAA,CAAA,IAAA,EAAA;AAAA,IAAK,WAAW,MAAQ,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,MAAA,CAAA,SAAA;AAAA,IAAW,WAAW,YAAa,EAAA;AAAA,IAC1D,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAA,EAAW,aAAa,mBAAmB,CAAA;AAAA,QAC9C,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA;AAAA,UACC,MAAQ,EAAA,IAAA;AAAA,UACR,MAAQ,EAAA,OAAA;AAAA,UACR,eAAiB,EAAA,KAAA;AAAA,UACjB,iBAAA;AAAA,UACA,gBAAA;AAAA,UACA,KAAA,EAAO,MAAQ,CAAA,IAAA,CAAK,KAAS,GAAA,CAAA;AAAA,SAC/B,CAAA;AAAA,OACF,CAAA;AAAA,0BACC,SAAU,EAAA,EAAA,CAAA;AAAA,KAAA;AAAA,GACb,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Grid.js","sources":["../src/Grid.tsx"],"sourcesContent":["import React, {\n CSSProperties,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEventHandler,\n ReactNode,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport {\n CellValidationState,\n GridColumnInfo,\n GridColumnProps,\n} from \"./GridColumn\";\nimport { GridContext } from \"./GridContext\";\nimport { clsx } from \"clsx\";\nimport {\n CellMeasure,\n clamp,\n getFocusablePosition,\n LeftPart,\n MiddlePart,\n RightPart,\n Scrollable,\n ScrollableProps,\n TopLeftPart,\n TopPart,\n TopRightPart,\n useBodyVisibleAreaTop,\n useBodyVisibleColumnRange,\n useClientMidHeight,\n useClientMidWidth,\n useColumnMove,\n useColumnRange,\n useColumnRegistry,\n useColumnResize,\n useHeadVisibleColumnRange,\n useLeftScrolledOutWidth,\n useRangeSelection,\n useRowModels,\n useRowSelection,\n useScrollToCell,\n useSum,\n useSumRangeWidth,\n useSumWidth,\n useVisibleColumnGroupRange,\n useVisibleRowRange,\n} from \"./internal\";\nimport \"./Grid.css\";\nimport { SelectionContext } from \"./SelectionContext\";\nimport { SizingContext } from \"./SizingContext\";\nimport { LayoutContext } from \"./LayoutContext\";\nimport { EditorContext } from \"./EditorContext\"; // TODO remove\nimport { CursorContext, FocusedPart } from \"./CursorContext\";\nimport { ColumnGroupProps } from \"./ColumnGroup\";\nimport { ColumnDragContext } from \"./ColumnDragContext\";\nimport { ColumnGhost } from \"./internal/ColumnGhost\";\nimport { ColumnDropTarget } from \"./internal/ColumnDropTarget\";\nimport { ColumnDataContext } from \"./ColumnDataContext\";\nimport { ColumnSortContext } from \"./ColumnSortContext\";\n\nconst withBaseName = makePrefixer(\"saltGrid\");\n\nexport type ColumnSeparatorType = \"regular\" | \"none\" | \"groupEdge\" | \"pinned\";\nexport type ColumnGroupRowSeparatorType = \"first\" | \"regular\" | \"last\";\nexport type ColumnGroupColumnSeparatorType = \"regular\" | \"none\" | \"pinned\";\nexport type GridRowSelectionMode = \"single\" | \"multi\" | \"none\";\nexport type GridCellSelectionMode = \"range\" | \"none\";\n\nexport enum SortOrder {\n ASC = \"asc\",\n DESC = \"desc\",\n NONE = \"none\",\n}\n\nexport type RowKeyGetter<T> = (row: T, index: number) => string;\n\nexport type GridColumnMoveHandler = (\n columnId: string,\n fromIndex: number,\n toIndex: number\n) => void;\n\nexport interface GridProps<T = any> {\n /**\n * At least 1 children is expected, options are `ColumnGroup` or `GridColumn`.\n * */\n children: ReactNode;\n /**\n * If `true`, zebra stripes are enabled (odd/even rows have alternate colours)\n * */\n zebra?: boolean;\n /**\n * If `true`, grid header is hidden.\n * */\n hideHeader?: boolean;\n /**\n * If `true`, column separators are rendered.\n * */\n columnSeparators?: boolean;\n /**\n * If `true`, separators are rendered between pinned and unpinned columns.\n * */\n pinnedSeparators?: boolean;\n /**\n * Row data objects. Sparse arrays are supported.\n * */\n rowData: T[];\n /**\n * Should return unique string for a given row data object.\n * If rowData is sparse then this function should work with undefined row data\n * objects and create keys based on row index. `(row: T, index: number) => string`\n * */\n rowKeyGetter?: RowKeyGetter<T>;\n /**\n * Rows with these indices are selected by default.\n * */\n defaultSelectedRowIdxs?: number[];\n /**\n * Selected row indices for controlled mode.\n * */\n selectedRowIdxs?: number[];\n className?: string;\n style?: CSSProperties;\n /**\n * The variant to use. Options are `primary` and `secondary`. Default value is\n * `primary`. `secondary` variant changes grid background to reduce contrast.\n * */\n variant?: \"primary\" | \"secondary\";\n /**\n * Options are `single`, `multi` and `none`.\n * */\n rowSelectionMode?: GridRowSelectionMode;\n onRowSelected?: (selectedRowIdxs: number[]) => void;\n /**\n * If `true`, user will be able to move columns using drag and drop.\n * */\n columnMove?: boolean;\n /**\n * Accepts `(columnId: string, fromIndex: number, toIndex: number) => void`\n * */\n onColumnMoved?: GridColumnMoveHandler;\n /**\n * Options are `range` and `none`.\n * */\n cellSelectionMode?: GridCellSelectionMode;\n onVisibleRowRangeChange?: (start: number, end: number) => void;\n /**\n * If `true`, keyboard navigation is enabled for the header.\n * */\n headerIsFocusable?: boolean;\n\n getRowValidationStatus?: (\n row: GridRowModel<T>\n ) => CellValidationState | undefined;\n}\n\nexport interface GridRowModel<T> {\n key: string;\n index: number;\n data: T;\n}\n\nexport interface GridColumnModel<T> {\n index: number;\n separator: ColumnSeparatorType;\n\n info: GridColumnInfo<T>;\n}\n\nexport interface GridColumnGroupModel {\n index: number;\n data: ColumnGroupProps;\n childrenIds: string[];\n rowSeparator: ColumnGroupRowSeparatorType;\n columnSeparator: ColumnGroupColumnSeparatorType;\n colSpan: number;\n}\n\nfunction defaultRowKeyGetter<T>(row: T, index: number): string {\n return `${index}`;\n}\n\nexport const Grid = function Grid<T>(props: GridProps<T>) {\n const {\n rowData,\n zebra,\n hideHeader,\n columnSeparators,\n pinnedSeparators = true,\n className,\n style,\n rowKeyGetter = defaultRowKeyGetter,\n children,\n defaultSelectedRowIdxs,\n selectedRowIdxs,\n variant = \"primary\",\n rowSelectionMode = \"multi\",\n onRowSelected,\n columnMove,\n onColumnMoved,\n cellSelectionMode = \"none\",\n onVisibleRowRangeChange,\n headerIsFocusable,\n getRowValidationStatus,\n } = props;\n\n const rootRef = useRef<HTMLDivElement>(null);\n const scrollableRef = useRef<HTMLDivElement>(null);\n const middleRef = useRef<HTMLDivElement>(null);\n const topRef = useRef<HTMLDivElement>(null);\n const leftRef = useRef<HTMLDivElement>(null);\n const rightRef = useRef<HTMLDivElement>(null);\n const bottomRef = useRef<HTMLDivElement>(null);\n\n // What caused the latest scroll change. User means the UI (mouse events), table means the component initiated scrolling (scrollToCell was called for example)\n const [scrollSource, setScrollSource] = useState<\"user\" | \"table\">(\"user\");\n const [scrollLeft, setScrollLeft] = useState<number>(0);\n const [scrollTop, setScrollTop] = useState<number>(0);\n\n const [hoverRowKey, setHoverRowKey] = useState<string | undefined>(undefined);\n\n const [\n { clientWidth, clientHeight, scrollBarHeight, scrollBarWidth },\n setDimensions,\n ] = useState({\n clientWidth: 0,\n clientHeight: 0,\n scrollBarHeight: 0,\n scrollBarWidth: 0,\n });\n\n const [rowHeight, setRowHeight] = useState<number>(0);\n\n const [cursorRowIdx, setCursorRowIdx] = useState<number>(0);\n const [cursorColIdx, setCursorColIdx] = useState<number>(0);\n const [focusedPart, setFocusedPart] = useState<FocusedPart>(\n headerIsFocusable ? \"header\" : \"body\"\n );\n\n const [sortByColumnId, setSortByColumnId] =\n useState<GridColumnProps[\"id\"]>(\"\");\n const [sortOrder, setSortOrder] = useState<SortOrder>(SortOrder.NONE);\n\n const [editMode, setEditMode] = useState<boolean>(false);\n const [initialText, setInitialText] = useState<string | undefined>(undefined);\n\n const resizeClient: ScrollableProps<T>[\"resizeClient\"] = useCallback(\n (dimensions) => {\n setDimensions(dimensions);\n },\n []\n );\n\n const {\n leftCols, // Columns pinned to left\n midCols, // Scrollable columns\n rightCols, // Columns pinned to right\n leftGroups,\n midGroups,\n rightGroups,\n contextValue,\n } = useColumnRegistry<T>(children);\n\n const midColsById = useMemo(\n () =>\n new Map<string, GridColumnModel<T>>(\n midCols.map((c) => [c.info.props.id, c] as [string, GridColumnModel<T>])\n ),\n [midCols]\n );\n\n // Width of all columns pinned to left\n const leftWidth = useSumWidth(leftCols);\n // Width of all scrollable columns\n const midWidth = useSumWidth(midCols);\n // Width of all columns pinned to right\n const rightWidth = useSumWidth(rightCols);\n // Total width of all columns\n const totalWidth = useSum([leftWidth, midWidth, rightWidth]);\n\n const hasColumnGroups =\n leftGroups.length > 0 || midGroups.length > 0 || rightGroups.length > 0;\n\n const headRowCount = hideHeader ? 0 : hasColumnGroups ? 2 : 1; // TODO multiple group levels\n const rowCount = rowData.length;\n\n // Footer is not implemented yet.\n const botRowCount = 0; // TODO\n // Height of the header\n const topHeight = rowHeight * headRowCount;\n // Height of the middle part (virtual height)\n const midHeight = rowCount === 0 ? 0 : rowHeight * rowCount + 1;\n // Height of the footer\n const botHeight = botRowCount * rowHeight;\n // Total height of the grid (virtual)\n const totalHeight = useSum([topHeight, midHeight, botHeight]);\n // Client width of the middle part of the grid (viewport)\n const clientMidWidth = useClientMidWidth(clientWidth, leftWidth, rightWidth);\n // Unused width in the middle part, to be filled by an empty column with fake cells.\n const midGap = Math.max(0, Math.floor(clientMidWidth - midWidth));\n\n // Range of unpinned columns visible in the body of the grid (pinned columns are always visible).\n const bodyVisColRng = useBodyVisibleColumnRange(\n midCols,\n scrollLeft,\n clientMidWidth\n );\n\n const midGrpByColId = useMemo(() => {\n const m = new Map<string, GridColumnGroupModel>();\n for (const g of midGroups) {\n for (const c of g.childrenIds) {\n m.set(c, g);\n }\n }\n return m;\n }, [midGroups]);\n\n // Range of visible column groups.\n const visColGrpRng = useVisibleColumnGroupRange(\n bodyVisColRng,\n midCols,\n midGrpByColId,\n leftGroups.length\n );\n\n const visColGrps = useMemo(() => {\n return midGroups.slice(visColGrpRng.start, visColGrpRng.end);\n }, [visColGrpRng, midGroups]);\n\n const headVisColRng = useHeadVisibleColumnRange(\n bodyVisColRng,\n visColGrps,\n midColsById,\n leftCols.length\n );\n\n const bodyScrOutColWh = useLeftScrolledOutWidth(midCols, bodyVisColRng);\n const headScrOutColWh = useLeftScrolledOutWidth(midCols, headVisColRng);\n\n const bodyVisAreaLeft = useSum([leftWidth, bodyScrOutColWh]);\n const headVisAreaLeft = useSum([leftWidth, headScrOutColWh]);\n const clientMidHeight = useClientMidHeight(\n clientHeight,\n topHeight,\n botHeight\n );\n const visRowRng = useVisibleRowRange(\n scrollTop,\n clientMidHeight,\n rowHeight,\n rowCount\n );\n\n const bodyVisAreaTop = useBodyVisibleAreaTop(rowHeight, visRowRng, topHeight);\n\n const bodyVisibleColumns = useColumnRange(midCols, bodyVisColRng);\n const headVisibleColumns = useColumnRange(midCols, headVisColRng);\n const bodyVisColWh = useSumRangeWidth(midCols, bodyVisColRng);\n\n const headVisColWh = bodyVisColWh; // TODO implement groups\n\n const rootStyle = useMemo(\n () => ({\n ...style,\n \"--grid-total-width\": `${totalWidth}px`,\n \"--grid-total-height\": `${totalHeight}px`,\n \"--grid-topPart-height\": `${topHeight}px`,\n \"--grid-leftPart-width\": `${leftWidth}px`,\n \"--grid-rightPart-width\": `${rightWidth}px`,\n \"--grid-bodyVisibleColumns-width\": `${bodyVisColWh}px`,\n \"--grid-bodyVisibleArea-top\": `${bodyVisAreaTop}px`,\n \"--grid-bodyVisibleArea-left\": `${bodyVisAreaLeft}px`,\n \"--grid-bottomHeight\": `${botHeight}px`,\n \"--grid-headerVisibleColumns-width\": `${headVisColWh}px`,\n \"--grid-headerVisibleArea-left\": `${headVisAreaLeft}px`,\n \"--grid-scrollBar-height\": `${scrollBarHeight}px`,\n \"--grid-scrollBar-width\": `${scrollBarWidth}px`,\n }),\n [\n style,\n totalHeight,\n totalWidth,\n topHeight,\n leftWidth,\n rightWidth,\n botHeight,\n bodyVisColWh,\n bodyVisAreaLeft,\n bodyVisAreaTop,\n headVisColWh,\n headVisAreaLeft,\n scrollBarHeight,\n scrollBarWidth,\n ]\n );\n\n const onWheel: EventListener = useCallback(\n (event) => {\n let { deltaX, deltaY, shiftKey } = event as WheelEvent;\n if (deltaX === 0 && shiftKey) {\n deltaX = deltaY;\n deltaY = 0;\n }\n const s = scrollableRef.current;\n if (s) {\n s.scrollLeft += deltaX;\n s.scrollTop += deltaY;\n }\n event.preventDefault();\n event.stopPropagation();\n },\n [scrollableRef.current]\n );\n\n const cols = useMemo(\n () => [...leftCols, ...midCols, ...rightCols],\n [leftCols, midCols, rightCols]\n );\n\n const colsById = useMemo(\n () =>\n new Map<string, GridColumnModel<T>>(\n cols.map((c) => [c.info.props.id, c] as [string, GridColumnModel<T>])\n ),\n [cols]\n );\n\n const getColById = useCallback(\n (id: string) => {\n return colsById.get(id);\n },\n [colsById]\n );\n\n const columnDataContext: ColumnDataContext<T> = useMemo(\n () => ({\n getColById,\n }),\n [getColById]\n );\n\n const isSortMode = sortByColumnId && sortOrder !== SortOrder.NONE;\n\n const onSortOrderChange =\n getColById(sortByColumnId)?.info.props.onSortOrderChange;\n\n const valueGetter =\n getColById(sortByColumnId)?.info.props.getValue ||\n ((r: T) => {\n return r[sortByColumnId as keyof typeof r];\n });\n\n const customSortingFn = getColById(sortByColumnId)?.info.props.customSort;\n\n const sortedRowData = useMemo(() => {\n if (!isSortMode || onSortOrderChange) return rowData;\n\n if (customSortingFn) {\n return customSortingFn({ rowData, sortOrder });\n }\n\n const sortedData = [...rowData].sort((a, b) =>\n valueGetter(a) < valueGetter(b) ? -1 : 1\n );\n\n if (sortOrder === SortOrder.DESC) {\n return sortedData.reverse();\n }\n\n return sortedData;\n }, [\n onSortOrderChange,\n valueGetter,\n customSortingFn,\n isSortMode,\n rowData,\n sortByColumnId,\n sortOrder,\n ]);\n\n const onClickSortColumn = useCallback(\n (colHeaderId: GridColumnProps[\"id\"]) => {\n if (sortByColumnId === colHeaderId) {\n switch (sortOrder) {\n case SortOrder.ASC:\n setSortOrder(SortOrder.DESC);\n break;\n case SortOrder.DESC:\n setSortOrder(SortOrder.NONE);\n break;\n default:\n setSortOrder(SortOrder.ASC);\n }\n } else {\n setSortByColumnId(colHeaderId);\n setSortOrder(SortOrder.ASC);\n }\n },\n [sortByColumnId, sortOrder]\n );\n\n const columnSortContext: ColumnSortContext = useMemo(\n () => ({\n sortByColumnId,\n setSortByColumnId,\n sortOrder,\n setSortOrder,\n onClickSortColumn,\n }),\n [\n sortByColumnId,\n setSortByColumnId,\n sortOrder,\n setSortOrder,\n onClickSortColumn,\n ]\n );\n\n const scroll = useCallback(\n (left?: number, top?: number, source?: \"user\" | \"table\") => {\n setScrollSource(source || \"user\");\n if (left !== undefined) {\n setScrollLeft(left);\n }\n if (top !== undefined) {\n setScrollTop(top);\n }\n },\n [setScrollLeft, setScrollTop, setScrollSource]\n );\n\n const scrollToCell = useScrollToCell(\n visRowRng,\n rowHeight,\n clientMidHeight,\n midCols,\n bodyVisColRng,\n clientMidWidth,\n scroll\n );\n\n const focusCellElement = (\n part: FocusedPart,\n rowIdx: number,\n colIdx: number\n ) => {\n setTimeout(() => {\n const selector =\n part === \"body\"\n ? `td[data-row-index=\"${rowIdx}\"][data-column-index=\"${colIdx}\"]`\n : `th[data-column-index=\"${colIdx}\"]`;\n const nodeToFocus = rootRef.current?.querySelector(selector);\n if (nodeToFocus) {\n (nodeToFocus as HTMLElement).focus({ preventScroll: true });\n } else {\n console.warn(`focusCellElement can't find the element`);\n }\n }, 0);\n };\n\n const startEditMode = (text?: string) => {\n if (editMode || cursorRowIdx == undefined || cursorColIdx == undefined) {\n return;\n }\n const c = cols[cursorColIdx];\n const isEditable = !!contextValue.getEditor(c.info.props.id);\n if (isEditable) {\n setInitialText(text);\n setEditMode(true);\n }\n };\n\n const endEditMode = (value: string) => {\n if (!editMode) {\n return;\n }\n if (cursorColIdx == undefined) {\n console.error(`endEditMode: cursorColIdx is undefined in edit mode`);\n return;\n }\n const c = cols[cursorColIdx];\n const handler = c.info.props.onChange;\n if (cursorRowIdx == undefined) {\n console.error(`endEditMode: cursorRowIdx is undefined in edit mode`);\n return;\n }\n if (!handler) {\n console.warn(\n `onChange is not specified for editable column \"${c.info.props.id}\".`\n );\n } else {\n handler(sortedRowData[cursorRowIdx], cursorRowIdx, value);\n }\n setEditMode(false);\n focusCellElement(focusedPart, cursorRowIdx, cursorColIdx);\n };\n\n const cancelEditMode = () => {\n if (!editMode) {\n return;\n }\n setEditMode(false);\n if (cursorRowIdx != null && cursorColIdx != null) {\n focusCellElement(focusedPart, cursorRowIdx, cursorColIdx);\n }\n };\n\n const {\n selRowIdxs,\n isAllSelected,\n isAnySelected,\n selectAll,\n selectRows,\n unselectAll,\n onMouseDown: onRowSelectionMouseDown,\n } = useRowSelection(\n rowKeyGetter,\n sortedRowData,\n defaultSelectedRowIdxs,\n selectedRowIdxs,\n rowSelectionMode,\n onRowSelected\n );\n\n const rangeSelection = useRangeSelection(cellSelectionMode);\n\n const moveCursor = useCallback(\n (part: FocusedPart, rowIdx: number, colIdx: number) => {\n if (!headerIsFocusable && part === \"header\") {\n console.warn(\n `Cannot move focus to the header. \"headerIsFocusable\" prop is false.`\n );\n return;\n }\n setFocusedPart(part);\n colIdx = clamp(colIdx, 0, cols.length - 1);\n if (part === \"body\") {\n if (sortedRowData.length < 1 || cols.length < 1) {\n return;\n }\n rowIdx = clamp(rowIdx, 0, sortedRowData.length - 1);\n } else if (part === \"header\") {\n rowIdx = 0; // There is only one row in the header currently\n }\n setCursorRowIdx(rowIdx);\n setCursorColIdx(colIdx);\n scrollToCell(part, rowIdx, colIdx);\n focusCellElement(part, rowIdx, colIdx);\n if (part === \"body\") {\n rangeSelection.onCursorMove({ rowIdx, colIdx });\n }\n },\n [\n setCursorRowIdx,\n setCursorColIdx,\n sortedRowData,\n rowKeyGetter,\n cols,\n rootRef.current,\n scrollToCell,\n endEditMode,\n rangeSelection.onCursorMove,\n focusedPart,\n headerIsFocusable,\n ]\n );\n\n const rows = useRowModels(rowKeyGetter, sortedRowData, visRowRng);\n\n const isLeftRaised = scrollLeft > 0;\n const isRightRaised = scrollLeft + clientMidWidth < midWidth;\n const isHeaderRaised = scrollTop > 0;\n\n const resizeColumn = useCallback(\n (colIdx: number, width: number) => {\n const col = cols[colIdx];\n col.info.onWidthChanged(width);\n },\n [cols]\n );\n\n const onResizeHandleMouseDown = useColumnResize(cols, resizeColumn);\n\n const sizingContext: SizingContext = useMemo(\n () => ({\n resizeColumn,\n rowHeight,\n onResizeHandleMouseDown,\n }),\n [resizeColumn, rowHeight, onResizeHandleMouseDown]\n );\n\n const layoutContext: LayoutContext = useMemo(\n () => ({\n totalHeight,\n totalWidth,\n clientWidth,\n clientHeight,\n }),\n [totalHeight, totalWidth]\n );\n\n const editorContext: EditorContext = useMemo(\n () => ({\n initialText,\n editMode,\n startEditMode,\n endEditMode,\n cancelEditMode,\n }),\n [editMode, startEditMode, endEditMode, cancelEditMode, initialText]\n );\n\n const [isFocused, setFocused] = useState<boolean>(false);\n\n const onFocus = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n setFocused(true);\n },\n [setFocused]\n );\n\n const onBlur = useCallback(\n (event: React.FocusEvent<HTMLDivElement>) => {\n setFocused(false);\n },\n [setFocused]\n );\n\n const cursorContext: CursorContext = useMemo(\n () => ({\n isFocused,\n cursorRowIdx,\n cursorColIdx,\n moveCursor,\n focusedPart,\n headerIsFocusable: Boolean(headerIsFocusable),\n }),\n [\n cursorRowIdx,\n cursorColIdx,\n moveCursor,\n isFocused,\n focusedPart,\n headerIsFocusable,\n ]\n );\n\n const onColumnMove: GridColumnMoveHandler = (\n columnId,\n fromIndex,\n toIndex\n ) => {\n if (onColumnMoved && fromIndex !== toIndex) {\n onColumnMoved(columnId, fromIndex, toIndex);\n }\n };\n\n const {\n dragState,\n onColumnMoveHandleMouseDown,\n activeTarget,\n onColumnMoveCancel,\n } = useColumnMove(\n columnMove,\n rootRef,\n leftCols,\n midCols,\n rightCols,\n cols,\n scrollLeft,\n clientMidWidth,\n onColumnMove\n );\n\n const columnDragContext: ColumnDragContext = useMemo(\n () => ({\n columnMove,\n onColumnMoveHandleMouseDown,\n }),\n [columnMove, onColumnMoveHandleMouseDown]\n );\n\n const onMouseDown: MouseEventHandler<HTMLDivElement> = (event) => {\n onRowSelectionMouseDown(event);\n rangeSelection.onCellMouseDown(event);\n\n const target = event.target as HTMLElement;\n try {\n const { part, rowIndex, columnIndex } = getFocusablePosition(target);\n if (part === \"header\" && !headerIsFocusable) {\n return;\n }\n moveCursor(part, rowIndex, columnIndex);\n } catch (e) {\n // TODO\n }\n };\n\n const onKeyUp: KeyboardEventHandler<HTMLDivElement> = useCallback(\n (event) => {\n const { key } = event;\n if (key === \"Shift\") {\n rangeSelection.onKeyboardRangeSelectionEnd();\n }\n },\n [rangeSelection.onKeyboardRangeSelectionEnd]\n );\n\n const editModeKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n switch (key) {\n case \"F2\":\n case \"Enter\":\n startEditMode();\n break;\n case \"Backspace\":\n startEditMode(\"\");\n break;\n case \"Escape\":\n if (editMode) {\n cancelEditMode();\n break;\n } else {\n return false;\n }\n default:\n if (\n !editMode &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n /^[\\w\\d ]$/.test(key)\n ) {\n startEditMode(key);\n } else {\n return false;\n }\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n },\n [startEditMode, editMode, cancelEditMode]\n );\n\n const selectionKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n switch (key) {\n case \"Shift\":\n rangeSelection.onKeyboardRangeSelectionStart({\n rowIdx: cursorRowIdx || 0,\n colIdx: cursorColIdx || 0,\n });\n break;\n case \" \":\n if (focusedPart === \"body\") {\n if (event.ctrlKey) {\n if (cursorColIdx != undefined) {\n rangeSelection.selectRange({\n start: { rowIdx: 0, colIdx: cursorColIdx },\n end: { rowIdx: sortedRowData.length, colIdx: cursorColIdx },\n });\n }\n } else {\n if (cursorRowIdx != undefined) {\n selectRows({\n rowIndex: cursorRowIdx,\n isRange: false,\n incremental: true,\n unselectOtherRows: !event.shiftKey,\n });\n }\n }\n break;\n } else {\n return false;\n }\n case \"a\":\n if (event.ctrlKey || event.metaKey) {\n rangeSelection.selectRange({\n start: { rowIdx: 0, colIdx: 0 },\n end: { rowIdx: sortedRowData.length, colIdx: cols.length },\n });\n selectAll();\n return true;\n } else {\n return false;\n }\n default:\n return false;\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n },\n [\n rangeSelection.selectRange,\n rangeSelection.onKeyboardRangeSelectionStart,\n selectRows,\n selectAll,\n cursorColIdx,\n cursorRowIdx,\n sortedRowData.length,\n cols.length,\n focusedPart,\n ]\n );\n\n const clipboardKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n if (\n key === \"c\" &&\n (event.ctrlKey || event.metaKey) &&\n rangeSelection.selectedCellRange\n ) {\n const { start, end } = rangeSelection.selectedCellRange;\n const c = (x: number, y: number) => x - y;\n const [minRow, maxRow] = [start.rowIdx, end.rowIdx].sort(c);\n const [minCol, maxCol] = [start.colIdx, end.colIdx].sort(c);\n const text: string[] = [];\n for (let r = minRow; r <= maxRow; ++r) {\n const row = sortedRowData[r];\n const rowText: string[] = [];\n for (let c = minCol; c <= maxCol; ++c) {\n const col = cols[c]!;\n const cellValue = col.info.props.getValue!(row);\n rowText.push(cellValue);\n }\n text.push(rowText.join(\"\\t\"));\n }\n navigator.clipboard.writeText(text.join(\"\\n\"));\n event.preventDefault();\n event.stopPropagation();\n return true;\n }\n return false;\n },\n [rangeSelection.selectedCellRange]\n );\n\n const pageSize = Math.max(1, visRowRng.length - 1);\n\n const navigationKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n switch (key) {\n case \"ArrowLeft\":\n moveCursor(focusedPart, cursorRowIdx, (cursorColIdx || 0) - 1);\n break;\n case \"ArrowRight\":\n moveCursor(focusedPart, cursorRowIdx, (cursorColIdx || 0) + 1);\n break;\n case \"ArrowUp\":\n if (cursorRowIdx === 0 && headerIsFocusable) {\n moveCursor(\"header\", 0, cursorColIdx);\n } else {\n moveCursor(focusedPart, (cursorRowIdx || 0) - 1, cursorColIdx);\n }\n break;\n case \"ArrowDown\":\n if (focusedPart === \"header\") {\n moveCursor(\"body\", 0, cursorColIdx);\n } else {\n moveCursor(focusedPart, (cursorRowIdx || 0) + 1, cursorColIdx);\n }\n break;\n case \"PageUp\":\n if (cursorRowIdx === 0 && headerIsFocusable) {\n moveCursor(\"header\", 0, cursorColIdx);\n } else {\n moveCursor(\n focusedPart,\n (cursorRowIdx || 0) - pageSize,\n cursorColIdx\n );\n }\n break;\n case \"PageDown\":\n if (focusedPart === \"header\") {\n moveCursor(\"body\", 0, cursorColIdx);\n } else {\n moveCursor(\n focusedPart,\n (cursorRowIdx || 0) + pageSize,\n cursorColIdx\n );\n }\n break;\n case \"Home\":\n if (!event.ctrlKey) {\n moveCursor(focusedPart, cursorRowIdx, 0);\n } else {\n moveCursor(focusedPart, 0, 0);\n }\n break;\n case \"End\":\n if (!event.ctrlKey) {\n moveCursor(focusedPart, cursorRowIdx, cols.length - 1);\n } else {\n moveCursor(focusedPart, sortedRowData.length - 1, cols.length - 1);\n }\n break;\n case \"Tab\":\n if (\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n editMode &&\n cursorColIdx != null &&\n cursorRowIdx != null\n ) {\n if (!event.shiftKey) {\n if (cursorColIdx < cols.length - 1) {\n moveCursor(focusedPart, cursorRowIdx, cursorColIdx + 1);\n } else {\n if (cursorRowIdx < sortedRowData.length - 1) {\n moveCursor(focusedPart, cursorRowIdx + 1, 0);\n }\n }\n } else {\n if (cursorColIdx > 0) {\n moveCursor(focusedPart, cursorRowIdx, cursorColIdx - 1);\n } else {\n if (cursorRowIdx > 0) {\n moveCursor(focusedPart, cursorRowIdx - 1, cols.length - 1);\n }\n }\n }\n } else {\n return false;\n }\n break;\n case \"Enter\":\n if (\n editMode &&\n !event.ctrlKey &&\n !event.metaKey &&\n !event.altKey &&\n !event.shiftKey\n ) {\n if (cursorRowIdx == undefined) {\n moveCursor(focusedPart, 0, 0);\n } else {\n moveCursor(focusedPart, cursorRowIdx + 1, cursorColIdx);\n }\n } else {\n return false;\n }\n break;\n default:\n return false;\n }\n event.preventDefault();\n event.stopPropagation();\n return true;\n },\n [\n moveCursor,\n cursorRowIdx,\n cursorRowIdx,\n cols.length,\n sortedRowData.length,\n headerIsFocusable,\n pageSize,\n ]\n );\n\n const columnMoveKeyHandler = useCallback(\n (event: KeyboardEvent<HTMLDivElement>) => {\n const { key } = event;\n if (key === \"Escape\") {\n onColumnMoveCancel();\n event.preventDefault();\n event.stopPropagation();\n return true;\n }\n return false;\n },\n []\n );\n\n const onKeyDown: KeyboardEventHandler<HTMLDivElement> = useCallback(\n (event) => {\n if (cursorColIdx != undefined && cursorRowIdx != undefined) {\n const column = cols[cursorColIdx];\n if (column.info.props.onKeyDown) {\n column.info.props.onKeyDown(event, cursorRowIdx);\n }\n }\n if (!event.isPropagationStopped()) {\n // each handler returns true or false\n // if the event is handled and should not be handled by anything else return true\n // if the event is not handled and we should keep trying other handlers return false\n [\n navigationKeyHandler,\n clipboardKeyHandler,\n selectionKeyHandler,\n editModeKeyHandler,\n columnMoveKeyHandler,\n ].find((handler) => {\n return handler(event);\n });\n }\n },\n [\n navigationKeyHandler,\n clipboardKeyHandler,\n selectionKeyHandler,\n editModeKeyHandler,\n columnMoveKeyHandler,\n ]\n );\n\n const selectionContext: SelectionContext = useMemo(\n () => ({\n selRowIdxs,\n selectRows,\n isAllSelected,\n isAnySelected,\n selectAll,\n unselectAll,\n selectedCellRange: rangeSelection?.selectedCellRange,\n }),\n [\n selRowIdxs,\n selectRows,\n isAllSelected,\n isAnySelected,\n selectAll,\n unselectAll,\n rangeSelection?.selectedCellRange,\n ]\n );\n\n useEffect(() => {\n if (onVisibleRowRangeChange) {\n onVisibleRowRangeChange(visRowRng.start, visRowRng.end);\n }\n }, [onVisibleRowRangeChange, visRowRng]);\n\n return (\n <GridContext.Provider value={contextValue}>\n <LayoutContext.Provider value={layoutContext}>\n <SelectionContext.Provider value={selectionContext}>\n <ColumnDragContext.Provider value={columnDragContext}>\n <CursorContext.Provider value={cursorContext}>\n <SizingContext.Provider value={sizingContext}>\n <EditorContext.Provider value={editorContext}>\n <ColumnDataContext.Provider value={columnDataContext}>\n <ColumnSortContext.Provider value={columnSortContext}>\n {props.children}\n <div\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"zebra\")]: zebra,\n [withBaseName(\"columnSeparators\")]:\n columnSeparators,\n [withBaseName(\"pinnedSeparators\")]:\n pinnedSeparators,\n [withBaseName(\"primaryBackground\")]:\n variant === \"primary\",\n [withBaseName(\"secondaryBackground\")]:\n variant === \"secondary\",\n },\n className\n )}\n style={rootStyle}\n ref={rootRef}\n onKeyDown={onKeyDown}\n onKeyUp={onKeyUp}\n onMouseDown={onMouseDown}\n onFocus={onFocus}\n onBlur={onBlur}\n data-name=\"grid-root\"\n role=\"grid\"\n aria-colcount={cols.length}\n aria-rowcount={rowCount + headRowCount}\n aria-multiselectable={rowSelectionMode === \"multi\"}\n >\n <CellMeasure setRowHeight={setRowHeight} />\n <Scrollable\n resizeClient={resizeClient}\n scrollLeft={scrollLeft}\n scrollTop={scrollTop}\n scrollSource={scrollSource}\n scroll={scroll}\n scrollerRef={scrollableRef}\n topRef={topRef}\n rightRef={rightRef}\n bottomRef={bottomRef}\n leftRef={leftRef}\n middleRef={middleRef}\n />\n {!hideHeader && leftCols.length > 0 && (\n <TopLeftPart\n onWheel={onWheel}\n columns={leftCols}\n columnGroups={leftGroups}\n rightShadow={isLeftRaised}\n bottomShadow={isHeaderRaised}\n />\n )}\n {!hideHeader && (\n <TopPart\n columns={headVisibleColumns}\n columnGroups={visColGrps}\n topRef={topRef}\n onWheel={onWheel}\n midGap={midGap}\n bottomShadow={isHeaderRaised}\n />\n )}\n {!hideHeader && rightCols.length > 0 && (\n <TopRightPart\n onWheel={onWheel}\n columns={rightCols}\n columnGroups={rightGroups}\n leftShadow={isRightRaised}\n bottomShadow={isHeaderRaised}\n />\n )}\n {leftCols.length > 0 && (\n <LeftPart\n leftRef={leftRef}\n onWheel={onWheel}\n columns={leftCols}\n rows={rows}\n rightShadow={isLeftRaised}\n hoverOverRowKey={hoverRowKey}\n setHoverOverRowKey={setHoverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n )}\n <MiddlePart\n middleRef={middleRef}\n onWheel={onWheel}\n columns={bodyVisibleColumns}\n rows={rows}\n hoverOverRowKey={hoverRowKey}\n setHoverOverRowKey={setHoverRowKey}\n midGap={midGap}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n {rightCols.length > 0 && (\n <RightPart\n rightRef={rightRef}\n onWheel={onWheel}\n columns={rightCols}\n rows={rows}\n leftShadow={isRightRaised}\n hoverOverRowKey={hoverRowKey}\n setHoverOverRowKey={setHoverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n )}\n <ColumnDropTarget x={activeTarget?.x} />\n <ColumnGhost\n columns={cols}\n rows={rows}\n dragState={dragState}\n zebra={zebra}\n />\n </div>\n </ColumnSortContext.Provider>\n </ColumnDataContext.Provider>\n </EditorContext.Provider>\n </SizingContext.Provider>\n </CursorContext.Provider>\n </ColumnDragContext.Provider>\n </SelectionContext.Provider>\n </LayoutContext.Provider>\n </GridContext.Provider>\n );\n};\n"],"names":["SortOrder","Grid","_a","c"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GroupHeaderCell.js","sources":["../src/GroupHeaderCell.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport \"./GroupHeaderCell.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { GridColumnGroupModel } from \"./Grid\";\nimport { ReactNode } from \"react\";\nimport { useColumnDataContext } from \"./ColumnDataContext\";\n\nconst withBaseName = makePrefixer(\"saltGridGroupHeaderCell\");\n\nexport interface GroupHeaderCellProps {\n group: GridColumnGroupModel;\n children: ReactNode;\n}\n\nexport function GroupHeaderCell(props: GroupHeaderCellProps) {\n const { group } = props;\n const { colSpan, columnSeparator, rowSeparator } = group;\n const { getColById } = useColumnDataContext();\n const firstChild = getColById(group.childrenIds[0]);\n\n return (\n <th\n className={withBaseName()}\n colSpan={colSpan}\n aria-colspan={colSpan}\n aria-colindex={(firstChild?.index ?? 0) + 1}\n data-testid=\"column-group-header\"\n data-group-index={group.index}\n role=\"columnheader\"\n >\n {props.children}\n <div\n className={clsx({\n [withBaseName(\"rowSeparator\")]: rowSeparator === \"regular\",\n [withBaseName(\"firstGroupRowSeparator\")]: rowSeparator === \"first\",\n [withBaseName(\"lastGroupRowSeparator\")]: rowSeparator === \"last\",\n })}\n />\n {columnSeparator === \"regular\" ? (\n <div className={withBaseName(\"columnSeparator\")} />\n ) : null}\n {columnSeparator === \"pinned\" ? (\n <div className={withBaseName(\"pinnedSeparator\")} />\n ) : null}\n </th>\n );\n}\n"],"names":[],"mappings":";;;;;;AAOA,MAAM,YAAA,GAAe,aAAa,yBAAyB,CAAA,CAAA;AAOpD,SAAS,gBAAgB,KAA6B,EAAA;AAd7D,EAAA,IAAA,EAAA,CAAA;AAeE,EAAM,MAAA,EAAE,OAAU,GAAA,KAAA,CAAA;AAClB,EAAA,MAAM,EAAE,OAAA,EAAS,eAAiB,EAAA,YAAA,EAAiB,GAAA,KAAA,CAAA;AACnD,EAAM,MAAA,EAAE,UAAW,EAAA,GAAI,oBAAqB,EAAA,CAAA;AAC5C,EAAA,MAAM,UAAa,GAAA,UAAA,CAAW,KAAM,CAAA,WAAA,CAAY,CAAE,CAAA,CAAA,CAAA;AAElD,EAAA,uBACG,IAAA,CAAA,IAAA,EAAA;AAAA,IACC,WAAW,YAAa,EAAA;AAAA,IACxB,OAAA;AAAA,IACA,cAAc,EAAA,OAAA;AAAA,IACd,eAAgB,EAAA,CAAA,CAAA,EAAA,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,KAAZ,KAAA,IAAA,GAAA,EAAA,GAAqB,CAAK,IAAA,CAAA;AAAA,IAC1C,aAAY,EAAA,qBAAA;AAAA,IACZ,oBAAkB,KAAM,CAAA,KAAA;AAAA,IACxB,IAAK,EAAA,cAAA;AAAA,IAEJ,QAAA,EAAA;AAAA,MAAM,KAAA,CAAA,QAAA;AAAA,sBACN,GAAA,CAAA,KAAA,EAAA;AAAA,QACC,WAAW,IAAK,CAAA;AAAA,UACd,CAAC,YAAA,CAAa,cAAc,CAAA,GAAI,YAAiB,KAAA,SAAA;AAAA,UACjD,CAAC,YAAA,CAAa,wBAAwB,CAAA,GAAI,YAAiB,KAAA,OAAA;AAAA,UAC3D,CAAC,YAAA,CAAa,uBAAuB,CAAA,GAAI,YAAiB,KAAA,MAAA;AAAA,SAC3D,CAAA;AAAA,OACH,CAAA;AAAA,MACC,eAAA,KAAoB,4BAClB,GAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,OAAG,CAC/C,GAAA,IAAA;AAAA,MACH,eAAA,KAAoB,2BAClB,GAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,OAAG,CAC/C,GAAA,IAAA;AAAA,KAAA;AAAA,GACN,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"HeaderCell.js","sources":["../src/HeaderCell.tsx"],"sourcesContent":["import \"./HeaderCell.css\";\nimport { KeyboardEventHandler, useRef } from \"react\";\nimport {\n FlexContentAlignment,\n makePrefixer,\n useIsomorphicLayoutEffect,\n} from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { ColumnSeparatorType, SortOrder } from \"./Grid\";\nimport { useSizingContext } from \"./SizingContext\";\nimport { useColumnDragContext } from \"./ColumnDragContext\";\nimport { Cursor, useFocusableContent } from \"./internal\";\nimport { HeaderCellProps } from \"./GridColumn\";\nimport { useColumnSortContext } from \"./ColumnSortContext\";\nimport { ArrowDownIcon, ArrowUpIcon } from \"@salt-ds/icons\";\n\nconst withBaseName = makePrefixer(\"saltGridHeaderCell\");\n\nexport interface HeaderCellSeparatorProps {\n separatorType: ColumnSeparatorType;\n}\n\nexport function HeaderCellSeparator(props: HeaderCellSeparatorProps) {\n const className = withBaseName([props.separatorType, \"Separator\"].join(\"\"));\n return <div className={className} />;\n}\n\ntype AriaSortProps = \"none\" | \"ascending\" | \"descending\";\n\nexport function HeaderCell<T>(props: HeaderCellProps<T>) {\n const { column, children, isFocused } = props;\n const { separator } = column;\n const { align, id, headerClassName, sortable, onSortOrderChange } =\n column.info.props;\n const { onResizeHandleMouseDown } = useSizingContext();\n\n const { columnMove, onColumnMoveHandleMouseDown } = useColumnDragContext();\n const onMouseDown = columnMove ? onColumnMoveHandleMouseDown : undefined;\n\n const { ref, isFocusableContent, onFocus } =\n useFocusableContent<HTMLTableHeaderCellElement>();\n\n const {\n onClickSortColumn,\n setSortByColumnId,\n sortOrder,\n sortByColumnId,\n setSortOrder,\n } = useColumnSortContext();\n\n const valueAlignRight = align === \"right\";\n\n interface HeaderCellSortingIconProps {\n justify: FlexContentAlignment;\n }\n\n const HeaderCellSortingIcon = ({ justify }: HeaderCellSortingIconProps) => {\n const className = withBaseName(\"sortingIcon\");\n const icon = (\n <div\n className={clsx(className, {\n [withBaseName(\"sortingIconStart\")]: justify === \"start\",\n [withBaseName(\"sortingIconEnd\")]: justify === \"end\",\n })}\n aria-hidden\n >\n {sortOrder === SortOrder.ASC && <ArrowUpIcon />}\n {sortOrder === SortOrder.DESC && <ArrowDownIcon />}\n </div>\n );\n\n return icon;\n };\n\n const ariaSortMap = {\n asc: \"ascending\",\n desc: \"descending\",\n none: \"none\",\n };\n\n const ariaSort = ariaSortMap[sortOrder] as AriaSortProps;\n\n const order =\n sortOrder === SortOrder.ASC\n ? SortOrder.DESC\n : sortOrder === SortOrder.DESC\n ? SortOrder.NONE\n : SortOrder.ASC;\n\n const withSortOrder = sortOrder !== SortOrder.NONE && sortByColumnId === id;\n\n const onClick = () => {\n if (onSortOrderChange) {\n setSortByColumnId(id);\n setSortOrder(order);\n onSortOrderChange({ sortOrder: order });\n return;\n }\n setSortByColumnId(id);\n onClickSortColumn(id);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLTableHeaderCellElement> = (\n event\n ) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n onClick();\n }\n };\n\n return (\n <th\n ref={ref}\n aria-colindex={column.index + 1}\n data-column-index={column.index}\n className={clsx(withBaseName(), headerClassName, {\n [withBaseName(\"sortable\")]: sortable,\n })}\n role=\"columnheader\"\n data-testid=\"column-header\"\n tabIndex={isFocused && !isFocusableContent ? 0 : -1}\n onFocus={onFocus}\n onClick={sortable ? onClick : undefined}\n onKeyDown={sortable ? onKeyDown : undefined}\n aria-sort={sortByColumnId === id && sortable ? ariaSort : undefined}\n aria-label={column.info.props[\"aria-label\"]}\n >\n {sortByColumnId === id && sortable && valueAlignRight && (\n <HeaderCellSortingIcon justify=\"start\" />\n )}\n <div\n className={clsx(withBaseName(\"valueContainer\"), {\n [withBaseName(\"alignRight\")]: valueAlignRight,\n // both classNames below needed to ensure header cell title & sort icon do not overlap when column resized to be smaller\n [withBaseName(\"alignRightWithSortOrder\")]:\n valueAlignRight && withSortOrder,\n [withBaseName(\"alignLeftWithSortOrder\")]:\n !valueAlignRight && withSortOrder,\n })}\n onMouseDown={onMouseDown}\n >\n {children}\n </div>\n {sortByColumnId === id && sortable && !valueAlignRight && (\n <HeaderCellSortingIcon justify=\"end\" />\n )}\n <HeaderCellSeparator separatorType={separator} />\n <div\n data-testid={`column-${column.index}-resize-handle`}\n className={withBaseName(\"resizeHandle\")}\n onMouseDown={onResizeHandleMouseDown}\n />\n {isFocused && !isFocusableContent && <Cursor />}\n </th>\n );\n}\n\nexport function AutoSizeHeaderCell<T>(props: HeaderCellProps<T>) {\n const { column, children, isFocused } = props;\n const { separator } = column;\n const valueContainerRef = useRef<HTMLDivElement>(null);\n const { resizeColumn } = useSizingContext();\n\n const { ref, isFocusableContent, onFocus } =\n useFocusableContent<HTMLTableHeaderCellElement>();\n\n useIsomorphicLayoutEffect(() => {\n const width = valueContainerRef.current\n ? valueContainerRef.current.offsetWidth\n : undefined;\n if (width != undefined && width !== column.info.width) {\n resizeColumn(column.index, width);\n }\n });\n\n return (\n <th\n ref={ref}\n aria-colindex={column.index + 1}\n data-column-index={column.index}\n className={withBaseName()}\n role=\"columnheader\"\n data-testid=\"column-header\"\n tabIndex={isFocused && !isFocusableContent ? 0 : -1}\n onFocus={onFocus}\n >\n <div className={withBaseName(\"autosizeContainer\")}>\n <div\n ref={valueContainerRef}\n className={withBaseName(\"measuredContent\")}\n >\n {children}\n </div>\n </div>\n <HeaderCellSeparator separatorType={separator} />\n {isFocused && !isFocusableContent && <Cursor />}\n </th>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,MAAM,YAAA,GAAe,aAAa,oBAAoB,CAAA,CAAA;AAM/C,SAAS,oBAAoB,KAAiC,EAAA;AACnE,EAAM,MAAA,SAAA,GAAY,aAAa,CAAC,KAAA,CAAM,eAAe,WAAW,CAAA,CAAE,IAAK,CAAA,EAAE,CAAC,CAAA,CAAA;AAC1E,EAAA,uBAAQ,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,SAAA;AAAA,GAAsB,CAAA,CAAA;AACpC,CAAA;AAIO,SAAS,WAAc,KAA2B,EAAA;AACvD,EAAA,MAAM,EAAE,MAAA,EAAQ,QAAU,EAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AACxC,EAAM,MAAA,EAAE,WAAc,GAAA,MAAA,CAAA;AACtB,EAAM,MAAA,EAAE,OAAO,EAAI,EAAA,eAAA,EAAiB,UAAU,iBAAkB,EAAA,GAC9D,OAAO,IAAK,CAAA,KAAA,CAAA;AACd,EAAM,MAAA,EAAE,uBAAwB,EAAA,GAAI,gBAAiB,EAAA,CAAA;AAErD,EAAA,MAAM,EAAE,UAAA,EAAY,2BAA4B,EAAA,GAAI,oBAAqB,EAAA,CAAA;AACzE,EAAM,MAAA,WAAA,GAAc,aAAa,2BAA8B,GAAA,KAAA,CAAA,CAAA;AAE/D,EAAA,MAAM,EAAE,GAAA,EAAK,kBAAoB,EAAA,OAAA,KAC/B,mBAAgD,EAAA,CAAA;AAElD,EAAM,MAAA;AAAA,IACJ,iBAAA;AAAA,IACA,iBAAA;AAAA,IACA,SAAA;AAAA,IACA,cAAA;AAAA,IACA,YAAA;AAAA,MACE,oBAAqB,EAAA,CAAA;AAEzB,EAAA,MAAM,kBAAkB,KAAU,KAAA,OAAA,CAAA;AAMlC,EAAA,MAAM,qBAAwB,GAAA,CAAC,EAAE,OAAA,EAA0C,KAAA;AACzE,IAAM,MAAA,SAAA,GAAY,aAAa,aAAa,CAAA,CAAA;AAC5C,IAAA,MAAM,uBACH,IAAA,CAAA,KAAA,EAAA;AAAA,MACC,SAAA,EAAW,KAAK,SAAW,EAAA;AAAA,QACzB,CAAC,YAAA,CAAa,kBAAkB,CAAA,GAAI,OAAY,KAAA,OAAA;AAAA,QAChD,CAAC,YAAA,CAAa,gBAAgB,CAAA,GAAI,OAAY,KAAA,KAAA;AAAA,OAC/C,CAAA;AAAA,MACD,aAAW,EAAA,IAAA;AAAA,MAEV,QAAA,EAAA;AAAA,QAAc,SAAA,KAAA,SAAA,CAAU,GAAO,oBAAA,GAAA,CAAC,WAAY,EAAA,EAAA,CAAA;AAAA,QAC5C,SAAc,KAAA,SAAA,CAAU,IAAQ,oBAAA,GAAA,CAAC,aAAc,EAAA,EAAA,CAAA;AAAA,OAAA;AAAA,KAClD,CAAA,CAAA;AAGF,IAAO,OAAA,IAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAA,MAAM,WAAc,GAAA;AAAA,IAClB,GAAK,EAAA,WAAA;AAAA,IACL,IAAM,EAAA,YAAA;AAAA,IACN,IAAM,EAAA,MAAA;AAAA,GACR,CAAA;AAEA,EAAA,MAAM,WAAW,WAAY,CAAA,SAAA,CAAA,CAAA;AAE7B,EAAM,MAAA,KAAA,GACJ,SAAc,KAAA,SAAA,CAAU,GACpB,GAAA,SAAA,CAAU,IACV,GAAA,SAAA,KAAc,SAAU,CAAA,IAAA,GACxB,SAAU,CAAA,IAAA,GACV,SAAU,CAAA,GAAA,CAAA;AAEhB,EAAA,MAAM,aAAgB,GAAA,SAAA,KAAc,SAAU,CAAA,IAAA,IAAQ,cAAmB,KAAA,EAAA,CAAA;AAEzE,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,IAAI,iBAAmB,EAAA;AACrB,MAAA,iBAAA,CAAkB,EAAE,CAAA,CAAA;AACpB,MAAA,YAAA,CAAa,KAAK,CAAA,CAAA;AAClB,MAAkB,iBAAA,CAAA,EAAE,SAAW,EAAA,KAAA,EAAO,CAAA,CAAA;AACtC,MAAA,OAAA;AAAA,KACF;AACA,IAAA,iBAAA,CAAkB,EAAE,CAAA,CAAA;AACpB,IAAA,iBAAA,CAAkB,EAAE,CAAA,CAAA;AAAA,GACtB,CAAA;AAEA,EAAM,MAAA,SAAA,GAA8D,CAClE,KACG,KAAA;AACH,IAAA,IAAI,KAAM,CAAA,GAAA,KAAQ,OAAW,IAAA,KAAA,CAAM,QAAQ,GAAK,EAAA;AAC9C,MAAQ,OAAA,EAAA,CAAA;AAAA,KACV;AAAA,GACF,CAAA;AAEA,EAAA,uBACG,IAAA,CAAA,IAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,eAAA,EAAe,OAAO,KAAQ,GAAA,CAAA;AAAA,IAC9B,qBAAmB,MAAO,CAAA,KAAA;AAAA,IAC1B,SAAW,EAAA,IAAA,CAAK,YAAa,EAAA,EAAG,eAAiB,EAAA;AAAA,MAC/C,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,QAAA;AAAA,KAC7B,CAAA;AAAA,IACD,IAAK,EAAA,cAAA;AAAA,IACL,aAAY,EAAA,eAAA;AAAA,IACZ,QAAU,EAAA,SAAA,IAAa,CAAC,kBAAA,GAAqB,CAAI,GAAA,CAAA,CAAA;AAAA,IACjD,OAAA;AAAA,IACA,OAAA,EAAS,WAAW,OAAU,GAAA,KAAA,CAAA;AAAA,IAC9B,SAAA,EAAW,WAAW,SAAY,GAAA,KAAA,CAAA;AAAA,IAClC,WAAW,EAAA,cAAA,KAAmB,EAAM,IAAA,QAAA,GAAW,QAAW,GAAA,KAAA,CAAA;AAAA,IAC1D,YAAA,EAAY,MAAO,CAAA,IAAA,CAAK,KAAM,CAAA,YAAA,CAAA;AAAA,IAE7B,QAAA,EAAA;AAAA,MAAmB,cAAA,KAAA,EAAA,IAAM,QAAY,IAAA,eAAA,oBACnC,GAAA,CAAA,qBAAA,EAAA;AAAA,QAAsB,OAAQ,EAAA,OAAA;AAAA,OAAQ,CAAA;AAAA,sBAExC,GAAA,CAAA,KAAA,EAAA;AAAA,QACC,SAAW,EAAA,IAAA,CAAK,YAAa,CAAA,gBAAgB,CAAG,EAAA;AAAA,UAC9C,CAAC,YAAa,CAAA,YAAY,CAAI,GAAA,eAAA;AAAA,UAE9B,CAAC,YAAA,CAAa,yBAAyB,CAAA,GACrC,eAAmB,IAAA,aAAA;AAAA,UACrB,CAAC,YAAA,CAAa,wBAAwB,CAAA,GACpC,CAAC,eAAmB,IAAA,aAAA;AAAA,SACvB,CAAA;AAAA,QACD,WAAA;AAAA,QAEC,QAAA;AAAA,OACH,CAAA;AAAA,MACC,cAAmB,KAAA,EAAA,IAAM,QAAY,IAAA,CAAC,mCACpC,GAAA,CAAA,qBAAA,EAAA;AAAA,QAAsB,OAAQ,EAAA,KAAA;AAAA,OAAM,CAAA;AAAA,sBAEtC,GAAA,CAAA,mBAAA,EAAA;AAAA,QAAoB,aAAe,EAAA,SAAA;AAAA,OAAW,CAAA;AAAA,sBAC9C,GAAA,CAAA,KAAA,EAAA;AAAA,QACC,aAAA,EAAa,UAAU,MAAO,CAAA,KAAA,CAAA,cAAA,CAAA;AAAA,QAC9B,SAAA,EAAW,aAAa,cAAc,CAAA;AAAA,QACtC,WAAa,EAAA,uBAAA;AAAA,OACf,CAAA;AAAA,MACC,SAAa,IAAA,CAAC,kBAAsB,oBAAA,GAAA,CAAC,MAAO,EAAA,EAAA,CAAA;AAAA,KAAA;AAAA,GAC/C,CAAA,CAAA;AAEJ,CAAA;AAEO,SAAS,mBAAsB,KAA2B,EAAA;AAC/D,EAAA,MAAM,EAAE,MAAA,EAAQ,QAAU,EAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AACxC,EAAM,MAAA,EAAE,WAAc,GAAA,MAAA,CAAA;AACtB,EAAM,MAAA,iBAAA,GAAoB,OAAuB,IAAI,CAAA,CAAA;AACrD,EAAM,MAAA,EAAE,YAAa,EAAA,GAAI,gBAAiB,EAAA,CAAA;AAE1C,EAAA,MAAM,EAAE,GAAA,EAAK,kBAAoB,EAAA,OAAA,KAC/B,mBAAgD,EAAA,CAAA;AAElD,EAAA,yBAAA,CAA0B,MAAM;AAC9B,IAAA,MAAM,KAAQ,GAAA,iBAAA,CAAkB,OAC5B,GAAA,iBAAA,CAAkB,QAAQ,WAC1B,GAAA,KAAA,CAAA,CAAA;AACJ,IAAA,IAAI,KAAS,IAAA,KAAA,CAAA,IAAa,KAAU,KAAA,MAAA,CAAO,KAAK,KAAO,EAAA;AACrD,MAAa,YAAA,CAAA,MAAA,CAAO,OAAO,KAAK,CAAA,CAAA;AAAA,KAClC;AAAA,GACD,CAAA,CAAA;AAED,EAAA,uBACG,IAAA,CAAA,IAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,eAAA,EAAe,OAAO,KAAQ,GAAA,CAAA;AAAA,IAC9B,qBAAmB,MAAO,CAAA,KAAA;AAAA,IAC1B,WAAW,YAAa,EAAA;AAAA,IACxB,IAAK,EAAA,cAAA;AAAA,IACL,aAAY,EAAA,eAAA;AAAA,IACZ,QAAU,EAAA,SAAA,IAAa,CAAC,kBAAA,GAAqB,CAAI,GAAA,CAAA,CAAA;AAAA,IACjD,OAAA;AAAA,IAEA,QAAA,EAAA;AAAA,sBAAC,GAAA,CAAA,KAAA,EAAA;AAAA,QAAI,SAAA,EAAW,aAAa,mBAAmB,CAAA;AAAA,QAC9C,QAAC,kBAAA,GAAA,CAAA,KAAA,EAAA;AAAA,UACC,GAAK,EAAA,iBAAA;AAAA,UACL,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,UAExC,QAAA;AAAA,SACH,CAAA;AAAA,OACF,CAAA;AAAA,sBACC,GAAA,CAAA,mBAAA,EAAA;AAAA,QAAoB,aAAe,EAAA,SAAA;AAAA,OAAW,CAAA;AAAA,MAC9C,SAAa,IAAA,CAAC,kBAAsB,oBAAA,GAAA,CAAC,MAAO,EAAA,EAAA,CAAA;AAAA,KAAA;AAAA,GAC/C,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"NumericColumn.js","sources":["../src/NumericColumn.tsx"],"sourcesContent":["import { GridCellValueProps, GridColumn, GridColumnProps } from \"./GridColumn\";\nimport \"./NumericColumn.css\";\nimport { GridColumnModel, GridRowModel } from \"./Grid\";\nimport {\n ChangeEventHandler,\n KeyboardEventHandler,\n ReactNode,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport { useEditorContext } from \"./EditorContext\";\nimport { CornerTag } from \"./CornerTag\";\nimport { Cell } from \"./internal\";\n\nexport interface NumericColumnProps<T> extends GridColumnProps<T> {\n precision: number;\n}\n\nfunction isNumber(value: any): value is number {\n return typeof value === \"number\" && Number.isFinite(value);\n}\n\nexport function NumericCellValue<T>(props: GridCellValueProps<T>) {\n const { column, value } = props;\n const columnProps = column.info.props as NumericColumnProps<T>;\n const { precision } = columnProps;\n const text = isNumber(value) ? value.toFixed(precision) : \"\";\n return <div className=\"saltGridNumericCellValue\">{text}</div>;\n}\n\nexport interface NumericEditorProps<T> {\n row?: GridRowModel<T>;\n column?: GridColumnModel<T>;\n children?: ReactNode;\n}\n\nexport function NumericCellEditor<T>(props: NumericEditorProps<T>) {\n const { column, row } = props;\n const inputRef = useRef<HTMLInputElement>(null);\n\n const { endEditMode, cancelEditMode, initialText } = useEditorContext();\n\n const [editorText, setEditorText] = useState<string>(\n initialText != null ? initialText : column!.info.props.getValue!(row!.data)\n );\n\n const initialSelectionRef = useRef(!!initialText);\n\n const onChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n setEditorText(e.target.value);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n if (event.key === \"Enter\") {\n endEditMode(editorText);\n return;\n }\n if (event.key === \"Escape\") {\n cancelEditMode();\n return;\n }\n if (event.key === \"Tab\") {\n endEditMode(editorText);\n event.preventDefault();\n return;\n }\n event.stopPropagation();\n };\n\n useEffect(() => {\n if (inputRef.current && !initialSelectionRef.current) {\n inputRef.current.select();\n initialSelectionRef.current = true;\n }\n }, [inputRef.current]);\n\n useEffect(() => {\n const input = inputRef.current;\n const focusOut = (event: FocusEvent) => {\n if (!input?.contains(event.target as Node)) {\n endEditMode(editorText);\n }\n };\n\n // This uses the capture phase to detect clicks outside the input to avoid a race condition where the component gets unmounted when edit mode ends.\n document?.addEventListener(\"mousedown\", focusOut, true);\n\n return () => {\n document?.removeEventListener(\"mousedown\", focusOut, true);\n };\n }, [endEditMode, editorText]);\n\n return (\n <Cell separator={column?.separator} className=\"saltGridNumericCellEditor\">\n <div className=\"saltGridNumericCellEditor-inputContainer\">\n <input\n ref={inputRef}\n data-testid=\"grid-cell-editor-input\"\n autoFocus={true}\n value={editorText}\n onChange={onChange}\n onKeyDown={onKeyDown}\n />\n </div>\n <CornerTag />\n </Cell>\n );\n}\n\nexport function NumericColumn<T>(props: NumericColumnProps<T>) {\n return (\n <GridColumn\n {...props}\n align={\"right\"}\n cellValueComponent={NumericCellValue}\n >\n {props.children}\n </GridColumn>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowSelectionCheckboxCellValue.js","sources":["../src/RowSelectionCheckboxCellValue.tsx"],"sourcesContent":["import { Checkbox } from \"@salt-ds/core\";\nimport { GridCellValueProps } from \"./GridColumn\";\nimport { useSelectionContext } from \"./SelectionContext\";\nimport \"./CheckboxCell.css\";\nimport { MouseEventHandler } from \"react\";\nimport { useCursorContext } from \"./CursorContext\";\n\nexport function RowSelectionCheckboxCellValue<T>(props: GridCellValueProps<T>) {\n const { row, column, isFocused } = props;\n const { selRowIdxs, selectRows } = useSelectionContext();\n const { moveCursor } = useCursorContext();\n\n const isSelected = selRowIdxs.has(row.index);\n\n const onMouseDown: MouseEventHandler<HTMLDivElement> = (event) => {\n selectRows({ rowIndex: row.index, incremental: true });\n moveCursor(\"body\", row.index, column.index);\n event.preventDefault();\n event.stopPropagation();\n };\n\n return (\n <div className=\"saltGridCheckboxContainer\" onMouseDown={onMouseDown}>\n <Checkbox\n data-testid=\"grid-row-selection-checkbox\"\n inputProps={{\n \"aria-label\": \"Select Row\",\n tabIndex: isFocused ? 0 : -1,\n }}\n checked={isSelected}\n />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;AAOO,SAAS,8BAAiC,KAA8B,EAAA;AAC7E,EAAA,MAAM,EAAE,GAAA,EAAK,MAAQ,EAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AACnC,EAAA,MAAM,EAAE,UAAA,EAAY,UAAW,EAAA,GAAI,mBAAoB,EAAA,CAAA;AACvD,EAAM,MAAA,EAAE,UAAW,EAAA,GAAI,gBAAiB,EAAA,CAAA;AAExC,EAAA,MAAM,UAAa,GAAA,UAAA,CAAW,GAAI,CAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AAE3C,EAAM,MAAA,WAAA,GAAiD,CAAC,KAAU,KAAA;AAChE,IAAA,UAAA,CAAW,EAAE,QAAU,EAAA,GAAA,CAAI,KAAO,EAAA,WAAA,EAAa,MAAM,CAAA,CAAA;AACrD,IAAA,UAAA,CAAW,MAAQ,EAAA,GAAA,CAAI,KAAO,EAAA,MAAA,CAAO,KAAK,CAAA,CAAA;AAC1C,IAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,IAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AAAA,GACxB,CAAA;AAEA,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,SAAU,EAAA,2BAAA;AAAA,IAA4B,WAAA;AAAA,IACzC,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA;AAAA,MACC,aAAY,EAAA,6BAAA;AAAA,MACZ,UAAY,EAAA;AAAA,QACV,YAAc,EAAA,YAAA;AAAA,QACd,QAAA,EAAU,YAAY,CAAI,GAAA,CAAA,CAAA;AAAA,OAC5B;AAAA,MACA,OAAS,EAAA,UAAA;AAAA,KACX,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowSelectionCheckboxHeaderCellValue.js","sources":["../src/RowSelectionCheckboxHeaderCellValue.tsx"],"sourcesContent":["import { useSelectionContext } from \"./SelectionContext\";\nimport { KeyboardEventHandler, MouseEventHandler } from \"react\";\nimport { Checkbox } from \"@salt-ds/core\";\nimport \"./CheckboxCell.css\";\nimport { GridHeaderValueProps } from \"./GridColumn\";\n\nexport function RowSelectionCheckboxHeaderCellValue<T>(\n props: GridHeaderValueProps<T>\n) {\n const { isFocused } = props;\n\n const { selectAll, unselectAll, isAllSelected, isAnySelected } =\n useSelectionContext();\n\n const onMousedown: MouseEventHandler<HTMLDivElement> = (event) => {\n if (isAllSelected) {\n unselectAll();\n } else {\n selectAll();\n }\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLDivElement> = (event) => {\n if (event.key === \" \") {\n if (isAllSelected) {\n unselectAll();\n } else {\n selectAll();\n }\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n return (\n <div\n onMouseDown={onMousedown}\n className=\"saltGridCheckboxContainer\"\n onKeyDown={onKeyDown}\n >\n <Checkbox\n data-testid=\"grid-row-select-all-checkbox\"\n inputProps={{\n \"aria-label\": \"Select All\",\n tabIndex: isFocused ? 0 : -1,\n }}\n checked={isAllSelected}\n indeterminate={!isAllSelected && isAnySelected}\n />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;AAMO,SAAS,oCACd,KACA,EAAA;AACA,EAAM,MAAA,EAAE,WAAc,GAAA,KAAA,CAAA;AAEtB,EAAA,MAAM,EAAE,SAAW,EAAA,WAAA,EAAa,aAAe,EAAA,aAAA,KAC7C,mBAAoB,EAAA,CAAA;AAEtB,EAAM,MAAA,WAAA,GAAiD,CAAC,KAAU,KAAA;AAChE,IAAA,IAAI,aAAe,EAAA;AACjB,MAAY,WAAA,EAAA,CAAA;AAAA,KACP,MAAA;AACL,MAAU,SAAA,EAAA,CAAA;AAAA,KACZ;AAAA,GACF,CAAA;AAEA,EAAM,MAAA,SAAA,GAAkD,CAAC,KAAU,KAAA;AACjE,IAAI,IAAA,KAAA,CAAM,QAAQ,GAAK,EAAA;AACrB,MAAA,IAAI,aAAe,EAAA;AACjB,QAAY,WAAA,EAAA,CAAA;AAAA,OACP,MAAA;AACL,QAAU,SAAA,EAAA,CAAA;AAAA,OACZ;AACA,MAAA,KAAA,CAAM,cAAe,EAAA,CAAA;AACrB,MAAA,KAAA,CAAM,eAAgB,EAAA,CAAA;AAAA,KACxB;AAAA,GACF,CAAA;AAEA,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,WAAa,EAAA,WAAA;AAAA,IACb,SAAU,EAAA,2BAAA;AAAA,IACV,SAAA;AAAA,IAEA,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA;AAAA,MACC,aAAY,EAAA,8BAAA;AAAA,MACZ,UAAY,EAAA;AAAA,QACV,YAAc,EAAA,YAAA;AAAA,QACd,QAAA,EAAU,YAAY,CAAI,GAAA,CAAA,CAAA;AAAA,OAC5B;AAAA,MACA,OAAS,EAAA,aAAA;AAAA,MACT,aAAA,EAAe,CAAC,aAAiB,IAAA,aAAA;AAAA,KACnC,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowSelectionRadioCellValue.js","sources":["../src/RowSelectionRadioCellValue.tsx"],"sourcesContent":["import { RadioButton } from \"@salt-ds/core\";\nimport { GridCellValueProps } from \"./GridColumn\";\nimport { useSelectionContext } from \"./SelectionContext\";\nimport \"./CheckboxCell.css\";\n\nexport function RowSelectionRadioCellValue<T>(props: GridCellValueProps<T>) {\n const { row, isFocused } = props;\n const { selRowIdxs } = useSelectionContext();\n\n const isSelected = selRowIdxs.has(row.index);\n\n return (\n <div className=\"saltGridCheckboxContainer\">\n <RadioButton\n checked={isSelected}\n data-testid=\"grid-row-selection-radiobox\"\n tabIndex={isFocused ? 0 : -1}\n />\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;AAKO,SAAS,2BAA8B,KAA8B,EAAA;AAC1E,EAAM,MAAA,EAAE,GAAK,EAAA,SAAA,EAAc,GAAA,KAAA,CAAA;AAC3B,EAAM,MAAA,EAAE,UAAW,EAAA,GAAI,mBAAoB,EAAA,CAAA;AAE3C,EAAA,MAAM,UAAa,GAAA,UAAA,CAAW,GAAI,CAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AAE3C,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,SAAU,EAAA,2BAAA;AAAA,IACb,QAAC,kBAAA,GAAA,CAAA,WAAA,EAAA;AAAA,MACC,OAAS,EAAA,UAAA;AAAA,MACT,aAAY,EAAA,6BAAA;AAAA,MACZ,QAAA,EAAU,YAAY,CAAI,GAAA,CAAA,CAAA;AAAA,KAC5B,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RowSelectionRadioHeaderCell.js","sources":["../src/RowSelectionRadioHeaderCell.tsx"],"sourcesContent":["import { AutoSizeHeaderCell } from \"./HeaderCell\";\nimport { RadioButtonIcon } from \"@salt-ds/core\";\nimport \"./CheckboxCell.css\";\nimport { clsx } from \"clsx\";\nimport { HeaderCellProps } from \"./GridColumn\";\n\nexport function RowSelectionRadioHeaderCell<T>(props: HeaderCellProps<T>) {\n return (\n <AutoSizeHeaderCell {...props}>\n <div className={clsx(\"saltGridCheckboxContainer\", \"saltGrid-hidden\")}>\n <RadioButtonIcon />\n </div>\n </AutoSizeHeaderCell>\n );\n}\n"],"names":[],"mappings":";;;;;;AAMO,SAAS,4BAA+B,KAA2B,EAAA;AACxE,EAAA,uBACG,GAAA,CAAA,kBAAA,EAAA;AAAA,IAAoB,GAAG,KAAA;AAAA,IACtB,QAAC,kBAAA,GAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,IAAK,CAAA,2BAAA,EAA6B,iBAAiB,CAAA;AAAA,MACjE,8BAAC,eAAgB,EAAA,EAAA,CAAA;AAAA,KACnB,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TextCellEditor.js","sources":["../src/TextCellEditor.tsx"],"sourcesContent":["import {\n ChangeEventHandler,\n KeyboardEventHandler,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport \"./TextCellEditor.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { useEditorContext } from \"./EditorContext\";\nimport { GridColumnModel, GridRowModel } from \"./Grid\";\nimport { CornerTag } from \"./CornerTag\";\nimport { Cell } from \"./internal\";\n\nconst withBaseName = makePrefixer(\"saltGridTextCellEditor\");\n\nexport interface TextCellEditorProps<T> {\n row?: GridRowModel<T>;\n column?: GridColumnModel<T>;\n}\n\nexport function TextCellEditor<T>(props: TextCellEditorProps<T>) {\n const { column, row } = props;\n const inputRef = useRef<HTMLInputElement>(null);\n\n const { endEditMode, cancelEditMode, initialText } = useEditorContext();\n\n const [editorText, setEditorText] = useState<string>(\n initialText != null ? initialText : column!.info.props.getValue!(row!.data)\n );\n\n const initialSelectionRef = useRef(!!initialText);\n\n const onChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n setEditorText(e.target.value);\n };\n\n const onKeyDown: KeyboardEventHandler<HTMLInputElement> = (event) => {\n if (event.key === \"Enter\") {\n endEditMode(editorText);\n return;\n }\n if (event.key === \"Escape\") {\n cancelEditMode();\n return;\n }\n if (event.key === \"Tab\") {\n endEditMode(editorText);\n event.preventDefault();\n return;\n }\n event.stopPropagation();\n };\n\n useEffect(() => {\n if (inputRef.current && !initialSelectionRef.current) {\n inputRef.current.select();\n initialSelectionRef.current = true;\n }\n }, [inputRef.current]);\n\n useEffect(() => {\n const input = inputRef.current;\n const focusOut = (event: FocusEvent) => {\n if (!input?.contains(event.target as Node)) {\n endEditMode(editorText);\n }\n };\n\n // This uses the capture phase to detect clicks outside the input to avoid a race condition where the component gets unmounted when edit mode ends.\n document?.addEventListener(\"mousedown\", focusOut, true);\n\n return () => {\n document?.removeEventListener(\"mousedown\", focusOut, true);\n };\n }, [endEditMode, editorText]);\n\n return (\n <Cell separator={column?.separator} className={withBaseName()}>\n <div className={withBaseName(\"inputContainer\")}>\n <input\n data-testid=\"grid-cell-editor-input\"\n ref={inputRef}\n autoFocus={true}\n value={editorText}\n onChange={onChange}\n onKeyDown={onKeyDown}\n />\n </div>\n <CornerTag />\n </Cell>\n );\n}\n"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cell.js","sources":["../src/internal/Cell.tsx"],"sourcesContent":["import { makePrefixer } from \"@salt-ds/core\";\nimport { forwardRef, HTMLAttributes } from \"react\";\nimport { clsx } from \"clsx\";\nimport \"./Cell.css\";\nimport { ColumnSeparatorType } from \"../Grid\";\n\nexport interface CellProps extends HTMLAttributes<HTMLTableCellElement> {\n isSelected?: boolean;\n isEditable?: boolean;\n separator?: ColumnSeparatorType;\n}\n\nconst withBaseName = makePrefixer(\"saltGridCell\");\n\nexport const Cell = forwardRef<HTMLTableCellElement, CellProps>(\n function CellFrame(props, ref) {\n const {\n children,\n separator,\n isSelected,\n isEditable,\n className,\n ...tdProps\n } = props;\n return (\n <td\n ref={ref}\n className={clsx(\n withBaseName(),\n {\n [withBaseName(\"selected\")]: isSelected,\n [withBaseName(\"editable\")]: isEditable,\n [withBaseName(\"regularSeparator\")]:\n separator === \"regular\" || separator === \"groupEdge\",\n [withBaseName(\"pinnedSeparator\")]: separator === \"pinned\",\n },\n className\n )}\n {...tdProps}\n >\n <div className={withBaseName(\"body\")}>{props.children}</div>\n <div className={withBaseName(\"columnSeparator\")} />\n <div className={withBaseName(\"rowSeparator\")} />\n <div className={withBaseName(\"topSeparator\")} />\n </td>\n );\n }\n);\n"],"names":[],"mappings":";;;;;;AAYA,MAAM,YAAA,GAAe,aAAa,cAAc,CAAA,CAAA;AAEzC,MAAM,IAAO,GAAA,UAAA;AAAA,EAClB,SAAS,SAAU,CAAA,KAAA,EAAO,GAAK,EAAA;AAC7B,IAAM,MAAA;AAAA,MACJ,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,SAAA;AAAA,MACG,GAAA,OAAA;AAAA,KACD,GAAA,KAAA,CAAA;AACJ,IAAA,uBACG,IAAA,CAAA,IAAA,EAAA;AAAA,MACC,GAAA;AAAA,MACA,SAAW,EAAA,IAAA;AAAA,QACT,YAAa,EAAA;AAAA,QACb;AAAA,UACE,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,UAAA;AAAA,UAC5B,CAAC,YAAa,CAAA,UAAU,CAAI,GAAA,UAAA;AAAA,UAC5B,CAAC,YAAa,CAAA,kBAAkB,CAC9B,GAAA,SAAA,KAAc,aAAa,SAAc,KAAA,WAAA;AAAA,UAC3C,CAAC,YAAA,CAAa,iBAAiB,CAAA,GAAI,SAAc,KAAA,QAAA;AAAA,SACnD;AAAA,QACA,SAAA;AAAA,OACF;AAAA,MACC,GAAG,OAAA;AAAA,MAEJ,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAA,EAAW,aAAa,MAAM,CAAA;AAAA,UAAI,QAAM,EAAA,KAAA,CAAA,QAAA;AAAA,SAAS,CAAA;AAAA,wBACrD,GAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAA,EAAW,aAAa,iBAAiB,CAAA;AAAA,SAAG,CAAA;AAAA,wBAChD,GAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAA,EAAW,aAAa,cAAc,CAAA;AAAA,SAAG,CAAA;AAAA,wBAC7C,GAAA,CAAA,KAAA,EAAA;AAAA,UAAI,SAAA,EAAW,aAAa,cAAc,CAAA;AAAA,SAAG,CAAA;AAAA,OAAA;AAAA,KAChD,CAAA,CAAA;AAAA,GAEJ;AACF;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CellMeasure.js","sources":["../src/internal/CellMeasure.tsx"],"sourcesContent":["import \"./CellMeasure.css\";\nimport { useEffect, useRef } from \"react\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nconst withBaseName = makePrefixer(\"saltGridCellMeasure\");\n\nexport interface CellMeasureProps<T> {\n setRowHeight: (rowHeight: number) => void;\n}\n\n// Renders a cell in invisible location, measures its height and provides it to\n// the grid.\nexport function CellMeasure<T>(props: CellMeasureProps<T>) {\n const rowRef = useRef<HTMLTableRowElement>(null);\n const heightRef = useRef<number>(-1);\n\n const { setRowHeight } = props;\n\n useEffect(() => {\n if (rowRef.current) {\n const height = rowRef.current.getBoundingClientRect().height;\n if (heightRef.current !== height) {\n // console.log(`Row height changing to ${height}px`);\n heightRef.current = height;\n setRowHeight(height);\n }\n }\n });\n\n return (\n <div className={withBaseName()}>\n <table aria-hidden>\n <thead>\n <tr ref={rowRef}>\n <th>Invisible Cell</th>\n </tr>\n </thead>\n </table>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;AAIA,MAAM,YAAA,GAAe,aAAa,qBAAqB,CAAA,CAAA;AAQhD,SAAS,YAAe,KAA4B,EAAA;AACzD,EAAM,MAAA,MAAA,GAAS,OAA4B,IAAI,CAAA,CAAA;AAC/C,EAAM,MAAA,SAAA,GAAY,OAAe,CAAE,CAAA,CAAA,CAAA;AAEnC,EAAM,MAAA,EAAE,cAAiB,GAAA,KAAA,CAAA;AAEzB,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,OAAO,OAAS,EAAA;AAClB,MAAA,MAAM,MAAS,GAAA,MAAA,CAAO,OAAQ,CAAA,qBAAA,EAAwB,CAAA,MAAA,CAAA;AACtD,MAAI,IAAA,SAAA,CAAU,YAAY,MAAQ,EAAA;AAEhC,QAAA,SAAA,CAAU,OAAU,GAAA,MAAA,CAAA;AACpB,QAAA,YAAA,CAAa,MAAM,CAAA,CAAA;AAAA,OACrB;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,WAAW,YAAa,EAAA;AAAA,IAC3B,QAAC,kBAAA,GAAA,CAAA,OAAA,EAAA;AAAA,MAAM,aAAW,EAAA,IAAA;AAAA,MAChB,QAAC,kBAAA,GAAA,CAAA,OAAA,EAAA;AAAA,QACC,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA;AAAA,UAAG,GAAK,EAAA,MAAA;AAAA,UACP,QAAC,kBAAA,GAAA,CAAA,IAAA,EAAA;AAAA,YAAG,QAAA,EAAA,gBAAA;AAAA,WAAc,CAAA;AAAA,SACpB,CAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ColumnDropTarget.js","sources":["../src/internal/ColumnDropTarget.tsx"],"sourcesContent":["import { useMemo } from \"react\";\nimport \"./ColumnDropTarget.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nconst withBaseName = makePrefixer(\"saltGridColumnDropTarget\");\n\nexport interface ColumnDropTargetProps {\n x?: number;\n}\n\n// When the user drags a column, this component is used to show the potential\n// drop target. Experimental feature. No UX yet.\nexport function ColumnDropTarget(props: ColumnDropTargetProps) {\n const { x = 0 } = props;\n\n const style = useMemo(() => {\n return {\n left: `${x - 2}px`,\n };\n }, [x]);\n\n if (props.x === undefined) {\n return null;\n }\n\n return <div className={withBaseName()} style={style} />;\n}\n"],"names":[],"mappings":";;;;;AAIA,MAAM,YAAA,GAAe,aAAa,0BAA0B,CAAA,CAAA;AAQrD,SAAS,iBAAiB,KAA8B,EAAA;AAC7D,EAAM,MAAA,EAAE,CAAI,GAAA,CAAA,EAAM,GAAA,KAAA,CAAA;AAElB,EAAM,MAAA,KAAA,GAAQ,QAAQ,MAAM;AAC1B,IAAO,OAAA;AAAA,MACL,IAAA,EAAM,GAAG,CAAI,GAAA,CAAA,CAAA,EAAA,CAAA;AAAA,KACf,CAAA;AAAA,GACF,EAAG,CAAC,CAAC,CAAC,CAAA,CAAA;AAEN,EAAI,IAAA,KAAA,CAAM,MAAM,KAAW,CAAA,EAAA;AACzB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBAAQ,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,WAAW,YAAa,EAAA;AAAA,IAAG,KAAA;AAAA,GAAc,CAAA,CAAA;AACvD;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"ColumnGhost.js","sources":["../src/internal/ColumnGhost.tsx"],"sourcesContent":["import { CSSProperties } from \"react\";\nimport \"./ColumnGhost.css\";\nimport { TableColGroup } from \"./TableColGroup\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport { TableBody } from \"./TableBody\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { ColumnDragState } from \"./gridHooks\";\nimport { GridColumnModel, GridRowModel } from \"../Grid\";\n\nconst withBaseName = makePrefixer(\"saltGridColumnGhost\");\n\nexport interface ColumnGhostProps<T> {\n dragState?: ColumnDragState;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n zebra?: boolean;\n}\n\n// When the user drags a column this component renders a partially transparent\n// copy of the dragged column.\nexport function ColumnGhost<T = any>(props: ColumnGhostProps<T>) {\n if (!props.dragState) {\n return null;\n }\n\n const { columnIndex, x, y } = props.dragState;\n const { columns, rows, zebra } = props;\n const movingColumn = columns[columnIndex];\n\n const style: CSSProperties = {\n left: x,\n top: y,\n };\n\n return (\n <div className={withBaseName()} style={style}>\n <table aria-hidden>\n <TableColGroup columns={[movingColumn]} />\n <thead>\n <HeaderRow columns={[movingColumn]} />\n </thead>\n <TableBody\n columns={[movingColumn]}\n rows={rows}\n setHoverRowKey={() => {}}\n zebra={zebra}\n />\n </table>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;AASA,MAAM,YAAA,GAAe,aAAa,qBAAqB,CAAA,CAAA;AAWhD,SAAS,YAAqB,KAA4B,EAAA;AAC/D,EAAI,IAAA,CAAC,MAAM,SAAW,EAAA;AACpB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,EAAE,WAAA,EAAa,CAAG,EAAA,CAAA,KAAM,KAAM,CAAA,SAAA,CAAA;AACpC,EAAA,MAAM,EAAE,OAAA,EAAS,IAAM,EAAA,KAAA,EAAU,GAAA,KAAA,CAAA;AACjC,EAAA,MAAM,eAAe,OAAQ,CAAA,WAAA,CAAA,CAAA;AAE7B,EAAA,MAAM,KAAuB,GAAA;AAAA,IAC3B,IAAM,EAAA,CAAA;AAAA,IACN,GAAK,EAAA,CAAA;AAAA,GACP,CAAA;AAEA,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,WAAW,YAAa,EAAA;AAAA,IAAG,KAAA;AAAA,IAC9B,QAAC,kBAAA,IAAA,CAAA,OAAA,EAAA;AAAA,MAAM,aAAW,EAAA,IAAA;AAAA,MAChB,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,aAAA,EAAA;AAAA,UAAc,OAAA,EAAS,CAAC,YAAY,CAAA;AAAA,SAAG,CAAA;AAAA,wBACvC,GAAA,CAAA,OAAA,EAAA;AAAA,UACC,QAAC,kBAAA,GAAA,CAAA,SAAA,EAAA;AAAA,YAAU,OAAA,EAAS,CAAC,YAAY,CAAA;AAAA,WAAG,CAAA;AAAA,SACtC,CAAA;AAAA,wBACC,GAAA,CAAA,SAAA,EAAA;AAAA,UACC,OAAA,EAAS,CAAC,YAAY,CAAA;AAAA,UACtB,IAAA;AAAA,UACA,gBAAgB,MAAM;AAAA,WAAC;AAAA,UACvB,KAAA;AAAA,SACF,CAAA;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Cursor.js","sources":["../src/internal/Cursor.tsx"],"sourcesContent":["import \"./Cursor.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nconst withBaseName = makePrefixer(\"saltGridCursor\");\n\nexport interface CursorProps {}\n\n// This is probably obsolete. Cursor is rendered using cell borders now.\nexport function Cursor(props: CursorProps) {\n return <div className={withBaseName()} />;\n}\n"],"names":[],"mappings":";;;;AAGA,MAAM,YAAA,GAAe,aAAa,gBAAgB,CAAA,CAAA;AAK3C,SAAS,OAAO,KAAoB,EAAA;AACzC,EAAA,uBAAQ,GAAA,CAAA,KAAA,EAAA;AAAA,IAAI,WAAW,YAAa,EAAA;AAAA,GAAG,CAAA,CAAA;AACzC;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"DefaultCellValue.js","sources":["../src/internal/DefaultCellValue.tsx"],"sourcesContent":["import { ReactNode } from \"react\";\nimport { GridCellValueProps } from \"../GridColumn\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport \"./DefaultCellValue.css\";\n\nconst withBaseName = makePrefixer(\"saltGridDefaultCellValue\");\n\n// Default component for cell value wrappers. Rendered as a child of cell\n// components (<td>s)\nexport function DefaultCellValue<T>(props: GridCellValueProps<T>) {\n const { value } = props;\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"alignRight\")]: props.column.info.props.align === \"right\",\n })}\n >\n {value as ReactNode}\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;AAMA,MAAM,YAAA,GAAe,aAAa,0BAA0B,CAAA,CAAA;AAIrD,SAAS,iBAAoB,KAA8B,EAAA;AAChE,EAAM,MAAA,EAAE,OAAU,GAAA,KAAA,CAAA;AAClB,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EAAW,IAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,aAAa,YAAY,CAAA,GAAI,MAAM,MAAO,CAAA,IAAA,CAAK,MAAM,KAAU,KAAA,OAAA;AAAA,KACjE,CAAA;AAAA,IAEA,QAAA,EAAA,KAAA;AAAA,GACH,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"FakeCell.js","sources":["../src/internal/FakeCell.tsx"],"sourcesContent":["import { GridCellProps } from \"../GridColumn\";\nimport \"./FakeCell.css\";\nimport { Cell } from \"./Cell\";\n\nexport type FakeCellProps<T> = Pick<GridCellProps<T>, \"row\">;\n\n// When there is unused space (total width of all columns is less than the\n// available client width of the grid) a column with fake cells is rendered to\n// fill this space. Zebra and row selection/hover highlighting is applied to\n// this column. Fake cells can't have keyboard focus or render any values.\nexport function FakeCell<T>(props: FakeCellProps<T>) {\n const { row } = props;\n return (\n <Cell\n className=\"saltGridFakeCell\"\n data-row-index={row.index}\n data-column-index={-1}\n />\n );\n}\n"],"names":[],"mappings":";;;;AAUO,SAAS,SAAY,KAAyB,EAAA;AACnD,EAAM,MAAA,EAAE,KAAQ,GAAA,KAAA,CAAA;AAChB,EAAA,uBACG,GAAA,CAAA,IAAA,EAAA;AAAA,IACC,SAAU,EAAA,kBAAA;AAAA,IACV,kBAAgB,GAAI,CAAA,KAAA;AAAA,IACpB,mBAAmB,EAAA,CAAA,CAAA;AAAA,GACrB,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"GroupHeaderRow.js","sources":["../src/internal/GroupHeaderRow.tsx"],"sourcesContent":["import \"./GroupHeaderRow.css\";\nimport { GroupHeaderCell } from \"../GroupHeaderCell\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { GridColumnGroupModel } from \"../Grid\";\nimport { FakeGroupCell } from \"./FakeGroupCell\";\nimport { GroupHeaderCellValue } from \"../GroupHeaderCellValue\";\n\nconst withBaseName = makePrefixer(\"saltGridGroupHeaderRow\");\n\nexport interface GroupHeaderRowProps<T> {\n groups: GridColumnGroupModel[];\n gap?: number;\n}\n\nexport function GroupHeaderRow<T>(props: GroupHeaderRowProps<T>) {\n const { groups, gap } = props;\n\n if (groups.length === 0) {\n return null;\n }\n return (\n <tr className={withBaseName()} role=\"row\">\n {groups.map((group) => {\n const Cell = group.data.headerComponent || GroupHeaderCell;\n const CellValue =\n group.data.headerValueComponent || GroupHeaderCellValue;\n return (\n <Cell key={group.data.id} group={group}>\n <CellValue group={group} />\n </Cell>\n );\n })}\n {gap !== undefined && gap > 0 ? <FakeGroupCell /> : null}\n </tr>\n );\n}\n"],"names":[],"mappings":";;;;;;;AAOA,MAAM,YAAA,GAAe,aAAa,wBAAwB,CAAA,CAAA;AAOnD,SAAS,eAAkB,KAA+B,EAAA;AAC/D,EAAM,MAAA,EAAE,MAAQ,EAAA,GAAA,EAAQ,GAAA,KAAA,CAAA;AAExB,EAAI,IAAA,MAAA,CAAO,WAAW,CAAG,EAAA;AACvB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACA,EAAA,uBACG,IAAA,CAAA,IAAA,EAAA;AAAA,IAAG,WAAW,YAAa,EAAA;AAAA,IAAG,IAAK,EAAA,KAAA;AAAA,IACjC,QAAA,EAAA;AAAA,MAAO,MAAA,CAAA,GAAA,CAAI,CAAC,KAAU,KAAA;AACrB,QAAM,MAAA,IAAA,GAAO,KAAM,CAAA,IAAA,CAAK,eAAmB,IAAA,eAAA,CAAA;AAC3C,QAAM,MAAA,SAAA,GACJ,KAAM,CAAA,IAAA,CAAK,oBAAwB,IAAA,oBAAA,CAAA;AACrC,QAAA,uBACG,GAAA,CAAA,IAAA,EAAA;AAAA,UAAyB,KAAA;AAAA,UACxB,QAAC,kBAAA,GAAA,CAAA,SAAA,EAAA;AAAA,YAAU,KAAA;AAAA,WAAc,CAAA;AAAA,SADhB,EAAA,KAAA,CAAM,KAAK,EAEtB,CAAA,CAAA;AAAA,OAEH,CAAA;AAAA,MACA,QAAQ,KAAa,CAAA,IAAA,GAAA,GAAM,CAAI,mBAAA,GAAA,CAAC,iBAAc,CAAK,GAAA,IAAA;AAAA,KAAA;AAAA,GACtD,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"HeaderRow.js","sources":["../src/internal/HeaderRow.tsx"],"sourcesContent":["import \"./HeaderRow.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { GridColumnModel } from \"../Grid\";\nimport { HeaderCell } from \"../HeaderCell\";\nimport { HeaderCellValue } from \"../HeaderCellValue\";\nimport { FakeHeaderCell } from \"./FakeHeaderCell\";\nimport { useCursorContext } from \"../CursorContext\";\n\nconst withBaseName = makePrefixer(\"saltGridHeaderRow\");\n\nexport interface HeaderRowProps<T> {\n columns: GridColumnModel<T>[];\n gap?: number;\n}\n\nexport function HeaderRow<T>(props: HeaderRowProps<T>) {\n const { columns, gap } = props;\n const { cursorColIdx, focusedPart, headerIsFocusable } = useCursorContext();\n\n const ariaRowIndex = headerIsFocusable ? 1 : undefined;\n\n return (\n <tr className={withBaseName()} role=\"row\" aria-rowindex={ariaRowIndex}>\n {columns.map((column) => {\n const Cell = column.info.props.headerComponent || HeaderCell;\n const CellValue =\n column.info.props.headerValueComponent || HeaderCellValue;\n const isFocused =\n focusedPart === \"header\" && cursorColIdx === column.index;\n return (\n <Cell\n key={column.info.props.id}\n column={column}\n isFocused={isFocused}\n >\n <CellValue column={column} isFocused={isFocused} />\n </Cell>\n );\n })}\n {gap !== undefined && gap > 0 ? <FakeHeaderCell /> : null}\n </tr>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAQA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA,CAAA;AAO9C,SAAS,UAAa,KAA0B,EAAA;AACrD,EAAM,MAAA,EAAE,OAAS,EAAA,GAAA,EAAQ,GAAA,KAAA,CAAA;AACzB,EAAA,MAAM,EAAE,YAAA,EAAc,WAAa,EAAA,iBAAA,KAAsB,gBAAiB,EAAA,CAAA;AAE1E,EAAM,MAAA,YAAA,GAAe,oBAAoB,CAAI,GAAA,KAAA,CAAA,CAAA;AAE7C,EAAA,uBACG,IAAA,CAAA,IAAA,EAAA;AAAA,IAAG,WAAW,YAAa,EAAA;AAAA,IAAG,IAAK,EAAA,KAAA;AAAA,IAAM,eAAe,EAAA,YAAA;AAAA,IACtD,QAAA,EAAA;AAAA,MAAQ,OAAA,CAAA,GAAA,CAAI,CAAC,MAAW,KAAA;AACvB,QAAA,MAAM,IAAO,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,eAAmB,IAAA,UAAA,CAAA;AAClD,QAAA,MAAM,SACJ,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,oBAAwB,IAAA,eAAA,CAAA;AAC5C,QAAA,MAAM,SACJ,GAAA,WAAA,KAAgB,QAAY,IAAA,YAAA,KAAiB,MAAO,CAAA,KAAA,CAAA;AACtD,QAAA,uBACG,GAAA,CAAA,IAAA,EAAA;AAAA,UAEC,MAAA;AAAA,UACA,SAAA;AAAA,UAEA,QAAC,kBAAA,GAAA,CAAA,SAAA,EAAA;AAAA,YAAU,MAAA;AAAA,YAAgB,SAAA;AAAA,WAAsB,CAAA;AAAA,SAJ5C,EAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,EAKzB,CAAA,CAAA;AAAA,OAEH,CAAA;AAAA,MACA,QAAQ,KAAa,CAAA,IAAA,GAAA,GAAM,CAAI,mBAAA,GAAA,CAAC,kBAAe,CAAK,GAAA,IAAA;AAAA,KAAA;AAAA,GACvD,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"LeftPart.js","sources":["../src/internal/LeftPart.tsx"],"sourcesContent":["import { clsx } from \"clsx\";\nimport { TableColGroup } from \"./TableColGroup\";\nimport { TableBody } from \"./TableBody\";\nimport { RefObject } from \"react\";\nimport \"./LeftPart.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { GridColumnModel, GridRowModel } from \"../Grid\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport { CellValidationState } from \"../GridColumn\";\n\nconst withBaseName = makePrefixer(\"saltGridLeftPart\");\n\nexport interface LeftPartProps<T> {\n leftRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n rightShadow?: boolean;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>\n ) => CellValidationState | undefined;\n}\n\nexport function LeftPart<T>(props: LeftPartProps<T>) {\n const {\n leftRef,\n onWheel,\n rightShadow,\n columns,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n ref={leftRef}\n className={clsx(withBaseName(), {\n [withBaseName(\"rightShadow\")]: rightShadow,\n })}\n >\n <div className={withBaseName(\"space\")} data-testid=\"grid-left-part\">\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAUA,MAAM,YAAA,GAAe,aAAa,kBAAkB,CAAA,CAAA;AAgB7C,SAAS,SAAY,KAAyB,EAAA;AACnD,EAAM,MAAA;AAAA,IACJ,OAAA;AAAA,IACA,OAAA;AAAA,IACA,WAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,KAAA;AAAA,IACA,sBAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAM,MAAA,QAAA,GAAW,iBAAiB,OAAO,CAAA,CAAA;AAEzC,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,GAAK,EAAA,OAAA;AAAA,IACL,SAAA,EAAW,IAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,aAAa,CAAI,GAAA,WAAA;AAAA,KAChC,CAAA;AAAA,IAED,QAAC,kBAAA,GAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,MAAG,aAAY,EAAA,gBAAA;AAAA,MACjD,QAAC,kBAAA,IAAA,CAAA,OAAA,EAAA;AAAA,QAAM,GAAK,EAAA,QAAA;AAAA,QAAU,IAAK,EAAA,cAAA;AAAA,QACzB,QAAA,EAAA;AAAA,0BAAC,GAAA,CAAA,aAAA,EAAA;AAAA,YAAc,OAAA;AAAA,WAAkB,CAAA;AAAA,0BAChC,GAAA,CAAA,SAAA,EAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAa,EAAA,eAAA;AAAA,YACb,cAAgB,EAAA,kBAAA;AAAA,YAChB,KAAA;AAAA,YACA,sBAAA;AAAA,WACF,CAAA;AAAA,SAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"MiddlePart.js","sources":["../src/internal/MiddlePart.tsx"],"sourcesContent":["import { RefObject } from \"react\";\nimport { TableColGroup } from \"./TableColGroup\";\nimport { TableBody } from \"./TableBody\";\nimport \"./MiddlePart.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { GridColumnModel, GridRowModel } from \"../Grid\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport { CellValidationState } from \"../GridColumn\";\n\nconst withBaseName = makePrefixer(\"saltGridMiddlePart\");\n\nexport interface MiddlePartProps<T> {\n middleRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n midGap: number;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>\n ) => CellValidationState | undefined;\n}\n\nexport function MiddlePart<T>(props: MiddlePartProps<T>) {\n const {\n middleRef,\n onWheel,\n columns,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n midGap,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const tableRef = useActiveOnWheel(onWheel);\n\n return (\n <div\n ref={middleRef}\n className={withBaseName()}\n data-testid=\"grid-middle-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} gap={midGap} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n gap={midGap}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;AASA,MAAM,YAAA,GAAe,aAAa,oBAAoB,CAAA,CAAA;AAgB/C,SAAS,WAAc,KAA2B,EAAA;AACvD,EAAM,MAAA;AAAA,IACJ,SAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,MAAA;AAAA,IACA,KAAA;AAAA,IACA,sBAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAM,MAAA,QAAA,GAAW,iBAAiB,OAAO,CAAA,CAAA;AAEzC,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,GAAK,EAAA,SAAA;AAAA,IACL,WAAW,YAAa,EAAA;AAAA,IACxB,aAAY,EAAA,kBAAA;AAAA,IAEZ,QAAC,kBAAA,GAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,MAClC,QAAC,kBAAA,IAAA,CAAA,OAAA,EAAA;AAAA,QAAM,GAAK,EAAA,QAAA;AAAA,QAAU,IAAK,EAAA,cAAA;AAAA,QACzB,QAAA,EAAA;AAAA,0BAAC,GAAA,CAAA,aAAA,EAAA;AAAA,YAAc,OAAA;AAAA,YAAkB,GAAK,EAAA,MAAA;AAAA,WAAQ,CAAA;AAAA,0BAC7C,GAAA,CAAA,SAAA,EAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAa,EAAA,eAAA;AAAA,YACb,cAAgB,EAAA,kBAAA;AAAA,YAChB,GAAK,EAAA,MAAA;AAAA,YACL,KAAA;AAAA,YACA,sBAAA;AAAA,WACF,CAAA;AAAA,SAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"RightPart.js","sources":["../src/internal/RightPart.tsx"],"sourcesContent":["import { RefObject } from \"react\";\nimport { clsx } from \"clsx\";\nimport { TableColGroup } from \"./TableColGroup\";\nimport { TableBody } from \"./TableBody\";\nimport \"./RightPart.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { GridColumnModel, GridRowModel } from \"../Grid\";\nimport { useActiveOnWheel } from \"./gridHooks\";\nimport { CellValidationState } from \"../GridColumn\";\n\nconst withBaseName = makePrefixer(\"saltGridRightPart\");\n\nexport interface RightPartProps<T> {\n rightRef: RefObject<HTMLDivElement>;\n onWheel: EventListener;\n leftShadow?: boolean;\n columns: GridColumnModel<T>[];\n rows: GridRowModel<T>[];\n hoverOverRowKey?: string;\n setHoverOverRowKey: (key: string | undefined) => void;\n zebra?: boolean;\n getRowValidationStatus?: (\n row: GridRowModel<T>\n ) => CellValidationState | undefined;\n}\n\nexport function RightPart<T>(props: RightPartProps<T>) {\n const {\n rightRef,\n onWheel,\n columns,\n leftShadow,\n rows,\n hoverOverRowKey,\n setHoverOverRowKey,\n zebra,\n getRowValidationStatus,\n } = props;\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n ref={rightRef}\n className={clsx(withBaseName(), {\n [withBaseName(\"leftShadow\")]: leftShadow,\n })}\n data-testid=\"grid-right-part\"\n >\n <div className={withBaseName(\"space\")}>\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} />\n <TableBody\n columns={columns}\n rows={rows}\n hoverRowKey={hoverOverRowKey}\n setHoverRowKey={setHoverOverRowKey}\n zebra={zebra}\n getRowValidationStatus={getRowValidationStatus}\n />\n </table>\n </div>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;AAUA,MAAM,YAAA,GAAe,aAAa,mBAAmB,CAAA,CAAA;AAgB9C,SAAS,UAAa,KAA0B,EAAA;AACrD,EAAM,MAAA;AAAA,IACJ,QAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,UAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA,kBAAA;AAAA,IACA,KAAA;AAAA,IACA,sBAAA;AAAA,GACE,GAAA,KAAA,CAAA;AAEJ,EAAM,MAAA,QAAA,GAAW,iBAAiB,OAAO,CAAA,CAAA;AAEzC,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,GAAK,EAAA,QAAA;AAAA,IACL,SAAA,EAAW,IAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,YAAY,CAAI,GAAA,UAAA;AAAA,KAC/B,CAAA;AAAA,IACD,aAAY,EAAA,iBAAA;AAAA,IAEZ,QAAC,kBAAA,GAAA,CAAA,KAAA,EAAA;AAAA,MAAI,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,MAClC,QAAC,kBAAA,IAAA,CAAA,OAAA,EAAA;AAAA,QAAM,GAAK,EAAA,QAAA;AAAA,QAAU,IAAK,EAAA,cAAA;AAAA,QACzB,QAAA,EAAA;AAAA,0BAAC,GAAA,CAAA,aAAA,EAAA;AAAA,YAAc,OAAA;AAAA,WAAkB,CAAA;AAAA,0BAChC,GAAA,CAAA,SAAA,EAAA;AAAA,YACC,OAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAa,EAAA,eAAA;AAAA,YACb,cAAgB,EAAA,kBAAA;AAAA,YAChB,KAAA;AAAA,YACA,sBAAA;AAAA,WACF,CAAA;AAAA,SAAA;AAAA,OACF,CAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"Scrollable.js","sources":["../src/internal/Scrollable.tsx"],"sourcesContent":["import { RefObject, UIEventHandler, useEffect } from \"react\";\nimport \"./Scrollable.css\";\nimport { makePrefixer } from \"@salt-ds/core\";\n\nconst withBaseName = makePrefixer(\"saltGridScrollable\");\n\nexport interface ScrollableProps<T> {\n resizeClient: (params: {\n clientWidth: number;\n clientHeight: number;\n scrollBarWidth: number;\n scrollBarHeight: number;\n }) => void;\n\n scrollLeft: number;\n scrollTop: number;\n scrollSource: \"user\" | \"table\";\n scroll: (left?: number, top?: number, source?: \"user\" | \"table\") => void;\n\n scrollerRef: RefObject<HTMLDivElement>;\n middleRef: RefObject<HTMLDivElement>;\n topRef: RefObject<HTMLDivElement>;\n leftRef: RefObject<HTMLDivElement>;\n rightRef: RefObject<HTMLDivElement>;\n bottomRef: RefObject<HTMLDivElement>;\n}\n\n// Provides scrollbars for the grid. Synchronizes scrolling across all parts\n// (pinned and unpinned).\nexport function Scrollable<T>(props: ScrollableProps<T>) {\n const {\n scrollerRef,\n middleRef,\n topRef,\n leftRef,\n rightRef,\n bottomRef,\n resizeClient,\n scrollLeft,\n scrollTop,\n scrollSource,\n } = props;\n\n const onScroll: UIEventHandler<HTMLDivElement> = (event) => {\n if (!scrollerRef.current) {\n return;\n }\n const { scrollLeft, scrollTop } = scrollerRef.current;\n const top = topRef.current;\n const bottom = bottomRef.current;\n if (top) {\n top.scrollLeft = scrollLeft;\n }\n if (bottom) {\n bottom.scrollLeft = scrollLeft;\n }\n const left = leftRef.current;\n if (left) {\n left.scrollTop = scrollTop;\n }\n const right = rightRef.current;\n if (right) {\n right.scrollTop = scrollTop;\n }\n const middle = middleRef.current;\n if (middle) {\n middle.scrollTop = scrollTop;\n middle.scrollLeft = scrollLeft;\n }\n props.scroll(scrollLeft, scrollTop, \"user\");\n };\n\n useEffect(() => {\n if (!scrollerRef.current) {\n return;\n }\n const resizeObserver = new ResizeObserver(([entry]) => {\n const { offsetWidth, offsetHeight, clientWidth, clientHeight } =\n entry.target as HTMLDivElement;\n const scrollBarWidth = offsetWidth - clientWidth;\n const scrollBarHeight = offsetHeight - clientHeight;\n resizeClient({\n clientWidth,\n clientHeight,\n scrollBarWidth,\n scrollBarHeight,\n });\n });\n\n resizeObserver.observe(scrollerRef.current);\n return () => resizeObserver.disconnect();\n }, [resizeClient, scrollerRef]);\n\n useEffect(() => {\n if (!scrollerRef.current) {\n return;\n }\n if (scrollSource === \"table\") {\n if (scrollLeft !== scrollerRef.current.scrollLeft) {\n scrollerRef.current.scrollLeft = scrollLeft;\n }\n if (scrollTop !== scrollerRef.current.scrollTop) {\n scrollerRef.current.scrollTop = scrollTop;\n }\n }\n }, [scrollLeft, scrollTop, scrollSource, scrollerRef]);\n\n return (\n <div\n ref={scrollerRef}\n className={withBaseName()}\n onScroll={onScroll}\n data-testid=\"grid-scrollable\"\n >\n <div className={withBaseName(\"space\")} />\n </div>\n );\n}\n"],"names":["scrollLeft","scrollTop"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TableRow.js","sources":["../src/internal/TableRow.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n isValidElement,\n MouseEventHandler,\n} from \"react\";\nimport \"./TableRow.css\";\nimport { BaseCell } from \"../BaseCell\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { clsx } from \"clsx\";\nimport { GridColumnModel, GridRowModel } from \"../Grid\";\nimport { FakeCell } from \"./FakeCell\";\nimport { DefaultCellValue } from \"./DefaultCellValue\";\nimport { useGridContext } from \"../GridContext\";\nimport { CellValidationState } from \"../GridColumn\";\nimport { RowValidationStatusContext } from \"../RowValidationStatus\";\n\nconst withBaseName = makePrefixer(\"saltGridTableRow\");\n\nexport interface TableRowProps<T> {\n row: GridRowModel<T>;\n isSelected?: boolean;\n isHoverOver?: boolean;\n zebra?: boolean;\n columns: GridColumnModel<T>[];\n cursorColIdx?: number;\n onMouseEnter?: MouseEventHandler<HTMLTableRowElement>;\n onMouseLeave?: MouseEventHandler<HTMLTableRowElement>;\n gap?: number;\n editorColIdx?: number;\n isCellSelected?: (rowIdx: number, colIdx: number) => boolean;\n headerIsFocusable?: boolean;\n validationStatus?: CellValidationState;\n}\n\nexport function TableRow<T>(props: TableRowProps<T>) {\n const {\n row,\n isSelected,\n zebra,\n isHoverOver,\n columns,\n onMouseEnter,\n onMouseLeave,\n cursorColIdx,\n gap,\n editorColIdx,\n isCellSelected,\n headerIsFocusable,\n validationStatus: rowValidationStatus,\n } = props;\n\n const grid = useGridContext();\n\n if (!row.key) {\n throw new Error(`Invalid row`);\n }\n\n const ariaRowIndex = headerIsFocusable ? row.index + 2 : row.index + 1;\n\n return (\n <tr\n aria-rowindex={ariaRowIndex}\n aria-selected={isSelected ? true : undefined}\n className={clsx(withBaseName(), {\n [withBaseName(\"zebra\")]: zebra,\n [withBaseName(\"hover\")]: isHoverOver,\n [withBaseName(\"selected\")]: isSelected,\n [withBaseName(\"first\")]: row.index === 0,\n [withBaseName(`validationStatus-${rowValidationStatus}`)]:\n rowValidationStatus,\n })}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n data-row-index={row.index}\n data-row-key={row.key}\n role=\"row\"\n >\n {columns.map((column, i) => {\n const colKey = column.info.props.id;\n const editorInfo = grid.getEditor(column.info.props.id);\n const isEditable = !!editorInfo;\n\n if (editorColIdx === column.index) {\n if (isEditable) {\n if (isValidElement(editorInfo.children)) {\n const editorElement = Children.only(editorInfo.children);\n return cloneElement(editorElement, {\n key: colKey,\n row,\n column,\n } as any);\n }\n }\n }\n\n const Cell = column.info.props.cellComponent || BaseCell;\n const CellValue =\n column.info.props.cellValueComponent || DefaultCellValue;\n const value =\n column.info.props.getValue && row.data\n ? column.info.props.getValue(row.data)\n : null;\n const isFocused = cursorColIdx === column.index;\n const isSelected =\n isCellSelected && isCellSelected(row.index, column.index);\n const validationFnArg = {\n row,\n column,\n isFocused,\n value,\n };\n const validationStatus =\n column.info.props.getValidationStatus?.(validationFnArg);\n const validationMessage =\n validationStatus &&\n column.info.props.getValidationMessage?.(validationFnArg);\n\n return (\n <RowValidationStatusContext.Provider\n value={{ status: rowValidationStatus }}\n >\n <Cell\n key={colKey}\n row={row}\n column={column}\n isFocused={isFocused}\n isSelected={isSelected}\n isEditable={isEditable}\n validationStatus={validationStatus}\n validationMessage={validationMessage}\n validationType={column.info.props.validationType}\n value={value}\n align={column.info.props.align}\n >\n <CellValue\n column={column}\n row={row}\n value={value}\n isFocused={isFocused}\n validationStatus={validationStatus}\n validationMessage={validationMessage}\n validationType={column.info.props.validationType}\n />\n </Cell>\n </RowValidationStatusContext.Provider>\n );\n })}\n {gap !== undefined && gap > 0 ? <FakeCell row={row} /> : null}\n </tr>\n );\n}\n"],"names":["isSelected"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"TopLeftPart.js","sources":["../src/internal/TopLeftPart.tsx"],"sourcesContent":["import \"./TopLeftPart.css\";\nimport { TableColGroup } from \"./TableColGroup\";\nimport { HeaderRow } from \"./HeaderRow\";\nimport { makePrefixer } from \"@salt-ds/core\";\nimport { GridColumnGroupModel, GridColumnModel } from \"../Grid\";\nimport { GroupHeaderRow } from \"./GroupHeaderRow\";\nimport { clsx } from \"clsx\";\nimport { useActiveOnWheel } from \"./gridHooks\";\n\nconst withBaseName = makePrefixer(\"saltGridTopLeftPart\");\n\nexport interface TopLeftPartProps<T> {\n onWheel: EventListener;\n columns: GridColumnModel<T>[];\n columnGroups: GridColumnGroupModel[];\n rightShadow?: boolean;\n bottomShadow?: boolean;\n}\n\nexport function TopLeftPart<T>(props: TopLeftPartProps<T>) {\n const { onWheel, columns, columnGroups, rightShadow, bottomShadow } = props;\n\n const tableRef = useActiveOnWheel(onWheel);\n\n if (columns.length === 0) {\n return null;\n }\n\n return (\n <div\n className={clsx(withBaseName(), {\n [withBaseName(\"rightShadow\")]: rightShadow,\n [withBaseName(\"bottomShadow\")]: bottomShadow,\n })}\n data-testid=\"grid-top-left-part\"\n >\n <table ref={tableRef} role=\"presentation\">\n <TableColGroup columns={columns} />\n <thead>\n <GroupHeaderRow groups={columnGroups} />\n <HeaderRow columns={columns} />\n </thead>\n </table>\n </div>\n );\n}\n"],"names":[],"mappings":";;;;;;;;;AASA,MAAM,YAAA,GAAe,aAAa,qBAAqB,CAAA,CAAA;AAUhD,SAAS,YAAe,KAA4B,EAAA;AACzD,EAAA,MAAM,EAAE,OAAS,EAAA,OAAA,EAAS,YAAc,EAAA,WAAA,EAAa,cAAiB,GAAA,KAAA,CAAA;AAEtE,EAAM,MAAA,QAAA,GAAW,iBAAiB,OAAO,CAAA,CAAA;AAEzC,EAAI,IAAA,OAAA,CAAQ,WAAW,CAAG,EAAA;AACxB,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AAEA,EAAA,uBACG,GAAA,CAAA,KAAA,EAAA;AAAA,IACC,SAAA,EAAW,IAAK,CAAA,YAAA,EAAgB,EAAA;AAAA,MAC9B,CAAC,YAAa,CAAA,aAAa,CAAI,GAAA,WAAA;AAAA,MAC/B,CAAC,YAAa,CAAA,cAAc,CAAI,GAAA,YAAA;AAAA,KACjC,CAAA;AAAA,IACD,aAAY,EAAA,oBAAA;AAAA,IAEZ,QAAC,kBAAA,IAAA,CAAA,OAAA,EAAA;AAAA,MAAM,GAAK,EAAA,QAAA;AAAA,MAAU,IAAK,EAAA,cAAA;AAAA,MACzB,QAAA,EAAA;AAAA,wBAAC,GAAA,CAAA,aAAA,EAAA;AAAA,UAAc,OAAA;AAAA,SAAkB,CAAA;AAAA,wBAChC,IAAA,CAAA,OAAA,EAAA;AAAA,UACC,QAAA,EAAA;AAAA,4BAAC,GAAA,CAAA,cAAA,EAAA;AAAA,cAAe,MAAQ,EAAA,YAAA;AAAA,aAAc,CAAA;AAAA,4BACrC,GAAA,CAAA,SAAA,EAAA;AAAA,cAAU,OAAA;AAAA,aAAkB,CAAA;AAAA,WAAA;AAAA,SAC/B,CAAA;AAAA,OAAA;AAAA,KACF,CAAA;AAAA,GACF,CAAA,CAAA;AAEJ;;;;"}