@rio-cloud/rio-uikit 2.3.0-beta.1 → 2.3.0-beta.2

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 (294) hide show
  1. package/DayPicker.js +6 -2
  2. package/DayPicker.js.map +1 -1
  3. package/DayPickerCalendar.d.ts +2 -0
  4. package/DayPickerCalendar.js +5 -0
  5. package/DayPickerCalendar.js.map +1 -0
  6. package/DayPickerPrototype.d.ts +2 -0
  7. package/DayPickerPrototype.js +5 -0
  8. package/DayPickerPrototype.js.map +1 -0
  9. package/TableNext.d.ts +2 -0
  10. package/TableNext.js +23 -0
  11. package/TableNext.js.map +1 -0
  12. package/TableToolbar.js +3 -2
  13. package/TableToolbar.js.map +1 -1
  14. package/components/assetTree/Tree.js +13 -13
  15. package/components/charts/Area.d.ts +5 -3
  16. package/components/charts/Area.js +4 -3
  17. package/components/charts/Area.js.map +1 -1
  18. package/components/charts/AreaChart.js.map +1 -1
  19. package/components/charts/ComposedChart.js.map +1 -1
  20. package/components/clearableInput/ClearableInput.d.ts +30 -0
  21. package/components/clearableInput/ClearableInput.js +81 -78
  22. package/components/clearableInput/ClearableInput.js.map +1 -1
  23. package/components/datepicker/DayPicker.d.ts +4 -51
  24. package/components/datepicker/DayPicker.js +264 -256
  25. package/components/datepicker/DayPicker.js.map +1 -1
  26. package/components/datepicker/DayPickerCalendar.d.ts +4 -0
  27. package/components/datepicker/DayPickerCalendar.js +129 -0
  28. package/components/datepicker/DayPickerCalendar.js.map +1 -0
  29. package/components/datepicker/DayPickerDropdown.d.ts +18 -0
  30. package/components/datepicker/DayPickerDropdown.js +75 -0
  31. package/components/datepicker/DayPickerDropdown.js.map +1 -0
  32. package/components/datepicker/DayPickerDropdownFooter.d.ts +7 -0
  33. package/components/datepicker/DayPickerDropdownFooter.js +7 -0
  34. package/components/datepicker/DayPickerDropdownFooter.js.map +1 -0
  35. package/components/datepicker/DayPickerDropdownSidebar.d.ts +8 -0
  36. package/components/datepicker/DayPickerDropdownSidebar.js +7 -0
  37. package/components/datepicker/DayPickerDropdownSidebar.js.map +1 -0
  38. package/components/datepicker/DayPickerInput.d.ts +28 -0
  39. package/components/datepicker/DayPickerInput.js +65 -0
  40. package/components/datepicker/DayPickerInput.js.map +1 -0
  41. package/components/datepicker/DayPickerPrototype.d.ts +53 -0
  42. package/components/datepicker/DayPickerPrototype.js +285 -0
  43. package/components/datepicker/DayPickerPrototype.js.map +1 -0
  44. package/components/datepicker/dayPickerRangeSelectionUtils.d.ts +15 -0
  45. package/components/datepicker/dayPickerRangeSelectionUtils.js +31 -0
  46. package/components/datepicker/dayPickerRangeSelectionUtils.js.map +1 -0
  47. package/components/datepicker/dayPickerTypes.d.ts +517 -0
  48. package/components/datepicker/dayPickerTypes.js +7 -0
  49. package/components/datepicker/dayPickerTypes.js.map +1 -0
  50. package/components/datepicker/dayPickerUtils.d.ts +10 -0
  51. package/components/datepicker/dayPickerUtils.js +92 -0
  52. package/components/datepicker/dayPickerUtils.js.map +1 -0
  53. package/components/datepicker/useDayPickerInputState.d.ts +32 -0
  54. package/components/datepicker/useDayPickerInputState.js +85 -0
  55. package/components/datepicker/useDayPickerInputState.js.map +1 -0
  56. package/components/datepicker/useStackedDayPickerCalendars.d.ts +5 -0
  57. package/components/datepicker/useStackedDayPickerCalendars.js +39 -0
  58. package/components/datepicker/useStackedDayPickerCalendars.js.map +1 -0
  59. package/components/divider/Divider.js +6 -6
  60. package/components/dropdown/ButtonDropdown.d.ts +4 -0
  61. package/components/dropdown/ButtonDropdown.js +70 -68
  62. package/components/dropdown/ButtonDropdown.js.map +1 -1
  63. package/components/dropdown/DropdownToggleButton.d.ts +1 -0
  64. package/components/dropdown/DropdownToggleButton.js +17 -15
  65. package/components/dropdown/DropdownToggleButton.js.map +1 -1
  66. package/components/fade/FadeExpander.js +17 -20
  67. package/components/fade/FadeExpander.js.map +1 -1
  68. package/components/loadMore/LoadMoreProgress.js +6 -7
  69. package/components/map/components/Map.js +3 -3
  70. package/components/map/utils/rendering.js +5 -5
  71. package/components/popover/Popover.js +4 -4
  72. package/components/radiobutton/RadioCardGroup.js +3 -3
  73. package/components/rioglyph/RioglyphIconType.d.ts +1 -1
  74. package/components/selects/Multiselect.d.ts +6 -0
  75. package/components/selects/Multiselect.js +164 -150
  76. package/components/selects/Multiselect.js.map +1 -1
  77. package/components/selects/Select.js +39 -37
  78. package/components/selects/Select.js.map +1 -1
  79. package/components/table/Table.d.ts +27 -248
  80. package/components/table/Table.js +237 -214
  81. package/components/table/Table.js.map +1 -1
  82. package/components/table/Table.types.d.ts +293 -121
  83. package/components/table/TableBody.d.ts +65 -5
  84. package/components/table/TableBody.js +132 -2
  85. package/components/table/TableBody.js.map +1 -1
  86. package/components/table/TableCardsSorting.js +25 -32
  87. package/components/table/TableCardsSorting.js.map +1 -1
  88. package/components/table/TableColumn.d.ts +13 -5
  89. package/components/table/TableColumn.js +112 -2
  90. package/components/table/TableColumn.js.map +1 -1
  91. package/components/table/TableExpandedContentRow.d.ts +7 -7
  92. package/components/table/TableExpandedContentRow.js +107 -2
  93. package/components/table/TableExpandedContentRow.js.map +1 -1
  94. package/components/table/TableExpandedRow.d.ts +9 -4
  95. package/components/table/TableExpandedRow.js +147 -2
  96. package/components/table/TableExpandedRow.js.map +1 -1
  97. package/components/table/TableExpanderButton.js +13 -11
  98. package/components/table/TableExpanderButton.js.map +1 -1
  99. package/components/table/TableFooter.d.ts +10 -6
  100. package/components/table/TableFooter.js +49 -2
  101. package/components/table/TableFooter.js.map +1 -1
  102. package/components/table/TableGroupFooterRow.d.ts +7 -7
  103. package/components/table/TableGroupFooterRow.js +27 -2
  104. package/components/table/TableGroupFooterRow.js.map +1 -1
  105. package/components/table/TableGroupRow.d.ts +7 -7
  106. package/components/table/TableGroupRow.js +33 -2
  107. package/components/table/TableGroupRow.js.map +1 -1
  108. package/components/table/TableHeader.d.ts +9 -4
  109. package/components/table/TableHeader.js +104 -2
  110. package/components/table/TableHeader.js.map +1 -1
  111. package/components/table/TableHeaderColumn.d.ts +14 -8
  112. package/components/table/TableHeaderColumn.js +78 -2
  113. package/components/table/TableHeaderColumn.js.map +1 -1
  114. package/components/table/TableHeaderRow.d.ts +1 -1
  115. package/components/table/TableHeaderRow.js +11 -2
  116. package/components/table/TableHeaderRow.js.map +1 -1
  117. package/components/table/TableRow.d.ts +9 -4
  118. package/components/table/TableRow.js +108 -2
  119. package/components/table/TableRow.js.map +1 -1
  120. package/components/table/TableSpacerRow.d.ts +3 -2
  121. package/components/table/TableSpacerRow.js +26 -2
  122. package/components/table/TableSpacerRow.js.map +1 -1
  123. package/components/table/TableToolbar.d.ts +4 -23
  124. package/components/table/TableToolbar.js +39 -28
  125. package/components/table/TableToolbar.js.map +1 -1
  126. package/components/table/TableToolbarColumn.d.ts +31 -0
  127. package/components/table/TableToolbarColumn.js +33 -0
  128. package/components/table/TableToolbarColumn.js.map +1 -0
  129. package/components/table/TableViewToggles.d.ts +3 -3
  130. package/components/table/TableViewToggles.js.map +1 -1
  131. package/components/table/context/TableInteractionContext.d.ts +26 -0
  132. package/components/table/context/TableInteractionContext.js +7 -0
  133. package/components/table/context/TableInteractionContext.js.map +1 -0
  134. package/components/table/context/TableLayoutContext.d.ts +25 -0
  135. package/components/table/context/TableLayoutContext.js +7 -0
  136. package/components/table/context/TableLayoutContext.js.map +1 -0
  137. package/components/table/context/TableRenderConfigContext.d.ts +27 -0
  138. package/components/table/context/TableRenderConfigContext.js +7 -0
  139. package/components/table/context/TableRenderConfigContext.js.map +1 -0
  140. package/components/table/context/TableRenderContext.d.ts +85 -0
  141. package/components/table/context/TableRenderContext.js +7 -0
  142. package/components/table/context/TableRenderContext.js.map +1 -0
  143. package/components/table/context/TableStructureContext.d.ts +31 -0
  144. package/components/table/context/TableStructureContext.js +17 -0
  145. package/components/table/context/TableStructureContext.js.map +1 -0
  146. package/components/table/layout/columnSizing.d.ts +2 -2
  147. package/components/table/layout/columnSizing.js.map +1 -1
  148. package/components/table/layout/useDraggableColumns.d.ts +3 -3
  149. package/components/table/layout/useDraggableColumns.js +17 -17
  150. package/components/table/layout/useDraggableColumns.js.map +1 -1
  151. package/components/table/layout/useHorizontalSectionSync.d.ts +3 -1
  152. package/components/table/layout/useHorizontalSectionSync.js +32 -28
  153. package/components/table/layout/useHorizontalSectionSync.js.map +1 -1
  154. package/components/table/layout/useMeasuredColumnMaxWidths.d.ts +3 -3
  155. package/components/table/layout/useMeasuredColumnMaxWidths.js.map +1 -1
  156. package/components/table/layout/useResizableColumns.d.ts +5 -4
  157. package/components/table/layout/useResizableColumns.js +108 -67
  158. package/components/table/layout/useResizableColumns.js.map +1 -1
  159. package/components/table/layout/useTableBodyScrollBottom.d.ts +12 -0
  160. package/components/table/layout/useTableBodyScrollBottom.js +37 -0
  161. package/components/table/layout/useTableBodyScrollBottom.js.map +1 -0
  162. package/components/table/layout/useTableLayout.d.ts +17 -6
  163. package/components/table/layout/useTableLayout.js +41 -38
  164. package/components/table/layout/useTableLayout.js.map +1 -1
  165. package/components/table/layout/useTableVirtualization.d.ts +6 -6
  166. package/components/table/layout/useTableVirtualization.js +22 -22
  167. package/components/table/layout/useTableVirtualization.js.map +1 -1
  168. package/components/table/model/resolveRowMeta.d.ts +3 -2
  169. package/components/table/model/resolveRowMeta.js.map +1 -1
  170. package/components/table/model/resolveTableClassConfig.d.ts +2 -3
  171. package/components/table/model/resolveTableClassConfig.js.map +1 -1
  172. package/components/table/model/tableView.types.d.ts +41 -0
  173. package/components/table/native/TableSettingsListItem.js +1 -1
  174. package/components/table/native/TableSettingsListItem.js.map +1 -1
  175. package/components/table/render/body/TableBodyContent.d.ts +21 -0
  176. package/components/table/render/body/TableBodyContent.js +52 -0
  177. package/components/table/render/body/TableBodyContent.js.map +1 -0
  178. package/components/table/render/body/TableEmptyRow.js +2 -2
  179. package/components/table/render/body/TableEmptyRow.js.map +1 -1
  180. package/components/table/render/header/TableBatchDropdown.d.ts +5 -1
  181. package/components/table/render/header/TableBatchDropdown.js +17 -15
  182. package/components/table/render/header/TableBatchDropdown.js.map +1 -1
  183. package/components/table/render/header/TableColumnFilter.d.ts +2 -2
  184. package/components/table/render/header/TableColumnFilter.js +16 -14
  185. package/components/table/render/header/TableColumnFilter.js.map +1 -1
  186. package/components/table/render/header/TableDraggableHeaderCell.d.ts +2 -1
  187. package/components/table/render/header/TableDraggableHeaderCell.js +44 -34
  188. package/components/table/render/header/TableDraggableHeaderCell.js.map +1 -1
  189. package/components/table/render/header/TableHeader.types.d.ts +11 -9
  190. package/components/table/render/header/TableHeaderCellContent.d.ts +2 -1
  191. package/components/table/render/header/TableHeaderCellContent.js.map +1 -1
  192. package/components/table/render/header/TableHeaderCellResizeHandle.d.ts +2 -1
  193. package/components/table/render/header/TableHeaderCellResizeHandle.js +8 -8
  194. package/components/table/render/header/TableHeaderCellResizeHandle.js.map +1 -1
  195. package/components/table/render/header/TableHeaderDragOverlay.d.ts +5 -4
  196. package/components/table/render/header/TableHeaderDragOverlay.js.map +1 -1
  197. package/components/table/render/header/TableStaticHeaderCell.d.ts +2 -1
  198. package/components/table/render/header/TableStaticHeaderCell.js +34 -22
  199. package/components/table/render/header/TableStaticHeaderCell.js.map +1 -1
  200. package/components/table/render/header/resolveAriaSort.d.ts +2 -1
  201. package/components/table/render/header/resolveAriaSort.js.map +1 -1
  202. package/components/table/render/header/resolveHeaderCellClassName.d.ts +4 -2
  203. package/components/table/render/header/resolveHeaderCellClassName.js +11 -10
  204. package/components/table/render/header/resolveHeaderCellClassName.js.map +1 -1
  205. package/components/table/render/header/resolveHeaderCellStyle.d.ts +2 -1
  206. package/components/table/render/header/resolveHeaderCellStyle.js.map +1 -1
  207. package/components/table/runtime/shouldAnimateBodyRows.d.ts +17 -0
  208. package/components/table/runtime/shouldAnimateBodyRows.js +5 -0
  209. package/components/table/runtime/shouldAnimateBodyRows.js.map +1 -0
  210. package/components/table/runtime/useRenderDraftState.d.ts +14 -0
  211. package/components/table/runtime/useRenderDraftState.js +80 -0
  212. package/components/table/runtime/useRenderDraftState.js.map +1 -0
  213. package/components/table/runtime/useResolvedRenderColumns.d.ts +43 -0
  214. package/components/table/runtime/useResolvedRenderColumns.js +113 -0
  215. package/components/table/runtime/useResolvedRenderColumns.js.map +1 -0
  216. package/components/table/runtime/useResolvedRenderHeader.d.ts +27 -0
  217. package/components/table/runtime/useResolvedRenderHeader.js +67 -0
  218. package/components/table/runtime/useResolvedRenderHeader.js.map +1 -0
  219. package/components/table/selection/useInternalTableSelectionState.d.ts +17 -0
  220. package/components/table/selection/useInternalTableSelectionState.js +28 -0
  221. package/components/table/selection/useInternalTableSelectionState.js.map +1 -0
  222. package/components/table/selection/useTableSelection.d.ts +3 -3
  223. package/components/table/selection/useTableSelection.js.map +1 -1
  224. package/components/table/shared/getCellContentOverflowClassName.d.ts +3 -0
  225. package/components/table/shared/getCellContentOverflowClassName.js +18 -0
  226. package/components/table/shared/getCellContentOverflowClassName.js.map +1 -0
  227. package/components/table/shared/getInteractiveRowProps.d.ts +3 -2
  228. package/components/table/shared/getInteractiveRowProps.js.map +1 -1
  229. package/hooks/useUrlState.js +3 -3
  230. package/package.json +16 -17
  231. package/utils/analytics/createAnalyticsOverlayTooltip.js +57 -57
  232. package/utils/analytics/createAnalyticsOverlayTooltip.js.map +1 -1
  233. package/utils/analytics/useAnalyticsOverlayDom.js +3 -3
  234. package/utils/routeUtils.d.ts +5 -2
  235. package/utils/routeUtils.js +17 -17
  236. package/utils/routeUtils.js.map +1 -1
  237. package/version.d.ts +1 -1
  238. package/version.js +1 -1
  239. package/version.js.map +1 -1
  240. package/components/table/TableCard.d.ts +0 -63
  241. package/components/table/TableCard.js +0 -150
  242. package/components/table/TableCard.js.map +0 -1
  243. package/components/table/model/buildTableViewModel.d.ts +0 -28
  244. package/components/table/model/buildTableViewModel.js +0 -221
  245. package/components/table/model/buildTableViewModel.js.map +0 -1
  246. package/components/table/model/resolveCellContent.d.ts +0 -2
  247. package/components/table/model/resolveCellContent.js +0 -5
  248. package/components/table/model/resolveCellContent.js.map +0 -1
  249. package/components/table/model/tableViewModel.types.d.ts +0 -153
  250. package/components/table/parse/parseBody.d.ts +0 -3
  251. package/components/table/parse/parseBody.js +0 -13
  252. package/components/table/parse/parseBody.js.map +0 -1
  253. package/components/table/parse/parseColumns.d.ts +0 -3
  254. package/components/table/parse/parseColumns.js +0 -81
  255. package/components/table/parse/parseColumns.js.map +0 -1
  256. package/components/table/parse/parseFooter.d.ts +0 -3
  257. package/components/table/parse/parseFooter.js +0 -39
  258. package/components/table/parse/parseFooter.js.map +0 -1
  259. package/components/table/parse/parseHeaders.d.ts +0 -4
  260. package/components/table/parse/parseHeaders.js +0 -89
  261. package/components/table/parse/parseHeaders.js.map +0 -1
  262. package/components/table/parse/parseRows.d.ts +0 -3
  263. package/components/table/parse/parseRows.js +0 -93
  264. package/components/table/parse/parseRows.js.map +0 -1
  265. package/components/table/parse/tableChildGuards.d.ts +0 -25
  266. package/components/table/parse/tableChildGuards.js +0 -29
  267. package/components/table/parse/tableChildGuards.js.map +0 -1
  268. package/components/table/render/body/TableBodyRow.d.ts +0 -16
  269. package/components/table/render/body/TableBodyRow.js +0 -84
  270. package/components/table/render/body/TableBodyRow.js.map +0 -1
  271. package/components/table/render/body/TableBodySection.d.ts +0 -20
  272. package/components/table/render/body/TableBodySection.js +0 -68
  273. package/components/table/render/body/TableBodySection.js.map +0 -1
  274. package/components/table/render/body/TableDataRow.d.ts +0 -15
  275. package/components/table/render/body/TableDataRow.js +0 -143
  276. package/components/table/render/body/TableDataRow.js.map +0 -1
  277. package/components/table/render/body/TableExpandedRow.d.ts +0 -8
  278. package/components/table/render/body/TableExpandedRow.js +0 -84
  279. package/components/table/render/body/TableExpandedRow.js.map +0 -1
  280. package/components/table/render/body/TableGroupRow.d.ts +0 -8
  281. package/components/table/render/body/TableGroupRow.js +0 -21
  282. package/components/table/render/body/TableGroupRow.js.map +0 -1
  283. package/components/table/render/body/TableSpacerRow.d.ts +0 -7
  284. package/components/table/render/body/TableSpacerRow.js +0 -15
  285. package/components/table/render/body/TableSpacerRow.js.map +0 -1
  286. package/components/table/render/footer/TableFooterCell.d.ts +0 -8
  287. package/components/table/render/footer/TableFooterCell.js +0 -31
  288. package/components/table/render/footer/TableFooterCell.js.map +0 -1
  289. package/components/table/render/footer/TableFooterSection.d.ts +0 -10
  290. package/components/table/render/footer/TableFooterSection.js +0 -28
  291. package/components/table/render/footer/TableFooterSection.js.map +0 -1
  292. package/components/table/render/header/TableHeaderSection.d.ts +0 -3
  293. package/components/table/render/header/TableHeaderSection.js +0 -104
  294. package/components/table/render/header/TableHeaderSection.js.map +0 -1
@@ -1,56 +1,59 @@
1
- import { useMeasuredColumnMaxWidths as v } from "./useMeasuredColumnMaxWidths.js";
2
- import { MIN_COLUMN_WIDTH_PX as N } from "../tableSizing.constants.js";
3
- import { toCssSize as c, getColumnTrack as R } from "./columnSizing.js";
4
- import { useHorizontalSectionSync as z } from "./useHorizontalSectionSync.js";
5
- import H from "../../../hooks/useResizeObserver.js";
6
- const u = 50, L = (r) => {
1
+ import { useMeasuredColumnMaxWidths as N } from "./useMeasuredColumnMaxWidths.js";
2
+ import { MIN_COLUMN_WIDTH_PX as O } from "../tableSizing.constants.js";
3
+ import { toCssSize as l, getColumnTrack as R } from "./columnSizing.js";
4
+ import { useHorizontalSectionSync as L } from "./useHorizontalSectionSync.js";
5
+ import $ from "../../../hooks/useResizeObserver.js";
6
+ const h = 50, B = (r) => {
7
7
  if (!r)
8
8
  return;
9
- const n = r.trim().match(/^(-?\d+(?:\.\d+)?)px$/);
10
- if (n)
11
- return Number(n[1]);
12
- }, I = (r) => {
13
- const { bodyMaxHeight: n, cardsStyle: d, columns: a, showSelectionColumn: i, style: h } = r, [l, , { inlineSize: p }] = H(), t = a.map((e, o) => ({
9
+ const a = r.trim().match(/^(-?\d+(?:\.\d+)?)px$/);
10
+ if (a)
11
+ return Number(a[1]);
12
+ }, j = (r) => {
13
+ const { bodyMaxHeight: a, cardsStyle: d, columns: n, hasFooterCells: p, rowSeparatorWidth: u, showSelectionColumn: i, style: b } = r, [c, , { inlineSize: f }] = $(), t = n.map((e, o) => ({
14
14
  column: e,
15
15
  columnIndex: o,
16
16
  areaName: `table-col-${o + 1}`
17
- })), s = p ?? l.current?.clientWidth, b = (i ? u : 0) + a.reduce((e, o) => {
17
+ })), s = f ?? c.current?.clientWidth, W = (i ? h : 0) + n.reduce((e, o) => {
18
18
  if (o.width === void 0)
19
- return e + N;
20
- const _ = L(c(o.width));
21
- return e + (_ ?? 0);
22
- }, 0), m = s !== void 0 && b > s, f = s !== void 0 ? `${s}px` : "100%", { handleBodyScroll: W, tableFooterRowRef: x, tableHeadRowRef: S } = z({
23
- enabled: !!n
24
- }), w = v({
25
- columns: a,
19
+ return e + O;
20
+ const H = B(l(o.width));
21
+ return e + (H ?? 0);
22
+ }, 0), m = s !== void 0 && W > s, S = s !== void 0 ? `${s}px` : "100%", { handleBodyScroll: w, hasHorizontalScrollOffset: x, tableFooterRowRef: C, tableHeadRowRef: M } = L({
23
+ enabled: !!a,
24
+ hasFooterCells: p
25
+ }), T = N({
26
+ columns: n,
26
27
  enabled: m,
27
- tableWrapperRef: l
28
- }), C = t.length > 0 ? [
29
- i ? `${u}px` : void 0,
30
- ...t.map(({ column: e }) => R(e, w[e.key]))
31
- ].filter(Boolean).join(" ") : "minmax(0, 1fr)", M = t.length > 0 ? `"${[
28
+ tableWrapperRef: c
29
+ }), g = t.length > 0 ? [
30
+ i ? `${h}px` : void 0,
31
+ ...t.map(({ column: e }) => R(e, T[e.key]))
32
+ ].filter(Boolean).join(" ") : "minmax(0, 1fr)", y = t.length > 0 ? `"${[
32
33
  i ? "table-selection" : void 0,
33
34
  ...t.map(({ areaName: e }) => e)
34
- ].filter(Boolean).join(" ")}"` : "none", T = c(d?.minWidth) ?? "280px", g = c(d?.maxWidth) ?? "1fr", y = {
35
- ...h ?? {},
36
- "--table-columns": C,
37
- "--table-areas": M,
38
- "--table-cards-min": T,
39
- "--table-cards-max": g,
40
- "--table-column-count": String(a.length + (i ? 1 : 0)),
41
- "--table-width": f
35
+ ].filter(Boolean).join(" ")}"` : "none", _ = l(d?.minWidth) ?? "280px", v = l(d?.maxWidth) ?? "1fr", z = {
36
+ ...b ?? {},
37
+ "--table-columns": g,
38
+ "--table-areas": y,
39
+ "--table-cards-min": _,
40
+ "--table-cards-max": v,
41
+ "--table-column-count": String(n.length + (i ? 1 : 0)),
42
+ "--table-row-separator-width": l(u),
43
+ "--table-width": S
42
44
  };
43
45
  return {
44
46
  columnsWithAreas: t,
45
- handleBodyScroll: W,
47
+ handleBodyScroll: w,
48
+ hasHorizontalScrollOffset: x,
46
49
  tableUseOverflow: m,
47
- tableWrapperRef: l,
48
- tableFooterRowRef: x,
49
- tableHeadRowRef: S,
50
- wrapperStyle: y
50
+ tableWrapperRef: c,
51
+ tableFooterRowRef: C,
52
+ tableHeadRowRef: M,
53
+ wrapperStyle: z
51
54
  };
52
55
  };
53
56
  export {
54
- I as useTableLayout
57
+ j as useTableLayout
55
58
  };
56
59
  //# sourceMappingURL=useTableLayout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTableLayout.js","sources":["../../../../src/components/table/layout/useTableLayout.ts"],"sourcesContent":["import type { CSSProperties } from 'react';\n\nimport type { TableCardsStyleSettings } from '../TableCard';\nimport type { TableColumnDefinition, TableStyle } from '../Table.types';\nimport { useMeasuredColumnMaxWidths } from './useMeasuredColumnMaxWidths';\nimport { MIN_COLUMN_WIDTH_PX } from '../tableSizing.constants';\nimport { getColumnTrack, toCssSize } from './columnSizing';\nimport { useHorizontalSectionSync } from './useHorizontalSectionSync';\nimport useResizeObserver from '../../../useResizeObserver';\n\nconst TABLE_SELECTION_COLUMN_WIDTH_PX = 50;\n\nconst parsePixelSize = (value?: string) => {\n if (!value) {\n return;\n }\n\n const match = value.trim().match(/^(-?\\d+(?:\\.\\d+)?)px$/);\n\n if (!match) {\n return;\n }\n\n return Number(match[1]);\n};\n\nexport type TableColumnWithArea<RowType extends Record<string, unknown>> = {\n column: TableColumnDefinition<RowType>;\n columnIndex: number;\n areaName: string;\n};\n\ntype UseTableLayoutProps<RowType extends Record<string, unknown>> = {\n bodyMaxHeight?: string;\n cardsStyle?: TableCardsStyleSettings;\n columns: TableColumnDefinition<RowType>[];\n showSelectionColumn?: boolean;\n style?: CSSProperties;\n};\n\nexport const useTableLayout = <RowType extends Record<string, unknown>>(props: UseTableLayoutProps<RowType>) => {\n const { bodyMaxHeight, cardsStyle, columns, showSelectionColumn, style } = props;\n const [tableWrapperRef, , { inlineSize }] = useResizeObserver<HTMLDivElement>();\n\n const columnsWithAreas: TableColumnWithArea<RowType>[] = columns.map((column, columnIndex) => ({\n column,\n columnIndex,\n areaName: `table-col-${columnIndex + 1}`,\n }));\n const wrapperWidth = inlineSize ?? tableWrapperRef.current?.clientWidth;\n const minWidthTotal =\n (showSelectionColumn ? TABLE_SELECTION_COLUMN_WIDTH_PX : 0) +\n columns.reduce((totalWidth, column) => {\n if (column.width === undefined) {\n return totalWidth + MIN_COLUMN_WIDTH_PX;\n }\n\n const columnWidth = parsePixelSize(toCssSize(column.width));\n\n return totalWidth + (columnWidth ?? 0);\n }, 0);\n const tableUseOverflow = wrapperWidth !== undefined && minWidthTotal > wrapperWidth;\n const tableWidth = wrapperWidth !== undefined ? `${wrapperWidth}px` : '100%';\n\n const { handleBodyScroll, tableFooterRowRef, tableHeadRowRef } = useHorizontalSectionSync({\n enabled: !!bodyMaxHeight,\n });\n const measuredColumnMaxWidths = useMeasuredColumnMaxWidths({\n columns,\n enabled: tableUseOverflow,\n tableWrapperRef,\n });\n\n const gridTemplateColumns =\n columnsWithAreas.length > 0\n ? [\n showSelectionColumn ? `${TABLE_SELECTION_COLUMN_WIDTH_PX}px` : undefined,\n ...columnsWithAreas.map(({ column }) => getColumnTrack(column, measuredColumnMaxWidths[column.key])),\n ]\n .filter(Boolean)\n .join(' ')\n : 'minmax(0, 1fr)';\n\n const gridTemplateAreas =\n columnsWithAreas.length > 0\n ? `\"${[\n showSelectionColumn ? 'table-selection' : undefined,\n ...columnsWithAreas.map(({ areaName }) => areaName),\n ]\n .filter(Boolean)\n .join(' ')}\"`\n : 'none';\n\n const cardsMinWidth = toCssSize(cardsStyle?.minWidth) ?? '280px';\n const cardsMaxWidth = toCssSize(cardsStyle?.maxWidth) ?? '1fr';\n\n const wrapperStyle: TableStyle = {\n ...(style ?? {}),\n '--table-columns': gridTemplateColumns,\n '--table-areas': gridTemplateAreas,\n '--table-cards-min': cardsMinWidth,\n '--table-cards-max': cardsMaxWidth,\n '--table-column-count': String(columns.length + (showSelectionColumn ? 1 : 0)),\n '--table-width': tableWidth,\n };\n\n return {\n columnsWithAreas,\n handleBodyScroll,\n tableUseOverflow,\n tableWrapperRef,\n tableFooterRowRef,\n tableHeadRowRef,\n wrapperStyle,\n };\n};\n"],"names":["TABLE_SELECTION_COLUMN_WIDTH_PX","parsePixelSize","value","match","useTableLayout","props","bodyMaxHeight","cardsStyle","columns","showSelectionColumn","style","tableWrapperRef","inlineSize","useResizeObserver","columnsWithAreas","column","columnIndex","wrapperWidth","minWidthTotal","totalWidth","MIN_COLUMN_WIDTH_PX","columnWidth","toCssSize","tableUseOverflow","tableWidth","handleBodyScroll","tableFooterRowRef","tableHeadRowRef","useHorizontalSectionSync","measuredColumnMaxWidths","useMeasuredColumnMaxWidths","gridTemplateColumns","getColumnTrack","gridTemplateAreas","areaName","cardsMinWidth","cardsMaxWidth","wrapperStyle"],"mappings":";;;;;AAUA,MAAMA,IAAkC,IAElCC,IAAiB,CAACC,MAAmB;AACvC,MAAI,CAACA;AACD;AAGJ,QAAMC,IAAQD,EAAM,KAAA,EAAO,MAAM,uBAAuB;AAExD,MAAKC;AAIL,WAAO,OAAOA,EAAM,CAAC,CAAC;AAC1B,GAgBaC,IAAiB,CAA0CC,MAAwC;AAC5G,QAAM,EAAE,eAAAC,GAAe,YAAAC,GAAY,SAAAC,GAAS,qBAAAC,GAAqB,OAAAC,MAAUL,GACrE,CAACM,GAAA,EAAmB,EAAE,YAAAC,EAAA,CAAY,IAAIC,EAAA,GAEtCC,IAAmDN,EAAQ,IAAI,CAACO,GAAQC,OAAiB;AAAA,IAC3F,QAAAD;AAAA,IACA,aAAAC;AAAA,IACA,UAAU,aAAaA,IAAc,CAAC;AAAA,EAAA,EACxC,GACIC,IAAeL,KAAcD,EAAgB,SAAS,aACtDO,KACDT,IAAsBT,IAAkC,KACzDQ,EAAQ,OAAO,CAACW,GAAYJ,MAAW;AACnC,QAAIA,EAAO,UAAU;AACjB,aAAOI,IAAaC;AAGxB,UAAMC,IAAcpB,EAAeqB,EAAUP,EAAO,KAAK,CAAC;AAE1D,WAAOI,KAAcE,KAAe;AAAA,EACxC,GAAG,CAAC,GACFE,IAAmBN,MAAiB,UAAaC,IAAgBD,GACjEO,IAAaP,MAAiB,SAAY,GAAGA,CAAY,OAAO,QAEhE,EAAE,kBAAAQ,GAAkB,mBAAAC,GAAmB,iBAAAC,EAAA,IAAoBC,EAAyB;AAAA,IACtF,SAAS,CAAC,CAACtB;AAAA,EAAA,CACd,GACKuB,IAA0BC,EAA2B;AAAA,IACvD,SAAAtB;AAAA,IACA,SAASe;AAAA,IACT,iBAAAZ;AAAA,EAAA,CACH,GAEKoB,IACFjB,EAAiB,SAAS,IACpB;AAAA,IACIL,IAAsB,GAAGT,CAA+B,OAAO;AAAA,IAC/D,GAAGc,EAAiB,IAAI,CAAC,EAAE,QAAAC,EAAA,MAAaiB,EAAejB,GAAQc,EAAwBd,EAAO,GAAG,CAAC,CAAC;AAAA,EAAA,EAElG,OAAO,OAAO,EACd,KAAK,GAAG,IACb,kBAEJkB,IACFnB,EAAiB,SAAS,IACpB,IAAI;AAAA,IACAL,IAAsB,oBAAoB;AAAA,IAC1C,GAAGK,EAAiB,IAAI,CAAC,EAAE,UAAAoB,EAAA,MAAeA,CAAQ;AAAA,EAAA,EAEjD,OAAO,OAAO,EACd,KAAK,GAAG,CAAC,MACd,QAEJC,IAAgBb,EAAUf,GAAY,QAAQ,KAAK,SACnD6B,IAAgBd,EAAUf,GAAY,QAAQ,KAAK,OAEnD8B,IAA2B;AAAA,IAC7B,GAAI3B,KAAS,CAAA;AAAA,IACb,mBAAmBqB;AAAA,IACnB,iBAAiBE;AAAA,IACjB,qBAAqBE;AAAA,IACrB,qBAAqBC;AAAA,IACrB,wBAAwB,OAAO5B,EAAQ,UAAUC,IAAsB,IAAI,EAAE;AAAA,IAC7E,iBAAiBe;AAAA,EAAA;AAGrB,SAAO;AAAA,IACH,kBAAAV;AAAA,IACA,kBAAAW;AAAA,IACA,kBAAAF;AAAA,IACA,iBAAAZ;AAAA,IACA,mBAAAe;AAAA,IACA,iBAAAC;AAAA,IACA,cAAAU;AAAA,EAAA;AAER;"}
1
+ {"version":3,"file":"useTableLayout.js","sources":["../../../../src/components/table/layout/useTableLayout.ts"],"sourcesContent":["import type { CSSProperties } from 'react';\n\nimport type { TableCardsStyleSettings, TableColumnDefinition, TableRowData } from '../Table.types';\nimport { useMeasuredColumnMaxWidths } from './useMeasuredColumnMaxWidths';\nimport { MIN_COLUMN_WIDTH_PX } from '../tableSizing.constants';\nimport { getColumnTrack, toCssSize } from './columnSizing';\nimport { useHorizontalSectionSync } from './useHorizontalSectionSync';\nimport useResizeObserver from '../../../useResizeObserver';\n\nconst TABLE_SELECTION_COLUMN_WIDTH_PX = 50;\n\nconst parsePixelSize = (value?: string) => {\n if (!value) {\n return;\n }\n\n const match = value.trim().match(/^(-?\\d+(?:\\.\\d+)?)px$/);\n\n if (!match) {\n return;\n }\n\n return Number(match[1]);\n};\n\nexport type TableColumnWithArea<RowType extends TableRowData> = {\n column: TableColumnDefinition<RowType>;\n columnIndex: number;\n areaName: string;\n};\n\ntype UseTableLayoutProps<RowType extends TableRowData> = {\n bodyMaxHeight?: string;\n cardsStyle?: TableCardsStyleSettings;\n columns: TableColumnDefinition<RowType>[];\n hasFooterCells?: boolean;\n rowSeparatorWidth?: number | string;\n showSelectionColumn?: boolean;\n style?: CSSProperties;\n};\n\ntype InternalTableStyle = CSSProperties & {\n '--table-columns'?: string;\n '--table-areas'?: string;\n '--table-cards-min'?: string;\n '--table-cards-max'?: string;\n '--table-column-count'?: string;\n '--table-row-separator-width'?: string;\n '--table-width'?: string;\n};\n\nexport const useTableLayout = <RowType extends TableRowData>(props: UseTableLayoutProps<RowType>) => {\n const { bodyMaxHeight, cardsStyle, columns, hasFooterCells, rowSeparatorWidth, showSelectionColumn, style } = props;\n const [tableWrapperRef, , { inlineSize }] = useResizeObserver<HTMLDivElement>();\n\n const columnsWithAreas: TableColumnWithArea<RowType>[] = columns.map((column, columnIndex) => ({\n column,\n columnIndex,\n areaName: `table-col-${columnIndex + 1}`,\n }));\n\n const wrapperWidth = inlineSize ?? tableWrapperRef.current?.clientWidth;\n\n const minWidthTotal =\n (showSelectionColumn ? TABLE_SELECTION_COLUMN_WIDTH_PX : 0) +\n columns.reduce((totalWidth, column) => {\n if (column.width === undefined) {\n return totalWidth + MIN_COLUMN_WIDTH_PX;\n }\n\n const columnWidth = parsePixelSize(toCssSize(column.width));\n\n return totalWidth + (columnWidth ?? 0);\n }, 0);\n\n const tableUseOverflow = wrapperWidth !== undefined && minWidthTotal > wrapperWidth;\n const tableWidth = wrapperWidth !== undefined ? `${wrapperWidth}px` : '100%';\n\n const { handleBodyScroll, hasHorizontalScrollOffset, tableFooterRowRef, tableHeadRowRef } =\n useHorizontalSectionSync({\n enabled: !!bodyMaxHeight,\n hasFooterCells,\n });\n\n const measuredColumnMaxWidths = useMeasuredColumnMaxWidths({\n columns,\n enabled: tableUseOverflow,\n tableWrapperRef,\n });\n\n const gridTemplateColumns =\n columnsWithAreas.length > 0\n ? [\n showSelectionColumn ? `${TABLE_SELECTION_COLUMN_WIDTH_PX}px` : undefined,\n ...columnsWithAreas.map(({ column }) => getColumnTrack(column, measuredColumnMaxWidths[column.key])),\n ]\n .filter(Boolean)\n .join(' ')\n : 'minmax(0, 1fr)';\n\n const gridTemplateAreas =\n columnsWithAreas.length > 0\n ? `\"${[\n showSelectionColumn ? 'table-selection' : undefined,\n ...columnsWithAreas.map(({ areaName }) => areaName),\n ]\n .filter(Boolean)\n .join(' ')}\"`\n : 'none';\n\n const cardsMinWidth = toCssSize(cardsStyle?.minWidth) ?? '280px';\n const cardsMaxWidth = toCssSize(cardsStyle?.maxWidth) ?? '1fr';\n\n const wrapperStyle: InternalTableStyle = {\n ...(style ?? {}),\n '--table-columns': gridTemplateColumns,\n '--table-areas': gridTemplateAreas,\n '--table-cards-min': cardsMinWidth,\n '--table-cards-max': cardsMaxWidth,\n '--table-column-count': String(columns.length + (showSelectionColumn ? 1 : 0)),\n '--table-row-separator-width': toCssSize(rowSeparatorWidth),\n '--table-width': tableWidth,\n };\n\n return {\n columnsWithAreas,\n handleBodyScroll,\n hasHorizontalScrollOffset,\n tableUseOverflow,\n tableWrapperRef,\n tableFooterRowRef,\n tableHeadRowRef,\n wrapperStyle,\n };\n};\n"],"names":["TABLE_SELECTION_COLUMN_WIDTH_PX","parsePixelSize","value","match","useTableLayout","props","bodyMaxHeight","cardsStyle","columns","hasFooterCells","rowSeparatorWidth","showSelectionColumn","style","tableWrapperRef","inlineSize","useResizeObserver","columnsWithAreas","column","columnIndex","wrapperWidth","minWidthTotal","totalWidth","MIN_COLUMN_WIDTH_PX","columnWidth","toCssSize","tableUseOverflow","tableWidth","handleBodyScroll","hasHorizontalScrollOffset","tableFooterRowRef","tableHeadRowRef","useHorizontalSectionSync","measuredColumnMaxWidths","useMeasuredColumnMaxWidths","gridTemplateColumns","getColumnTrack","gridTemplateAreas","areaName","cardsMinWidth","cardsMaxWidth","wrapperStyle"],"mappings":";;;;;AASA,MAAMA,IAAkC,IAElCC,IAAiB,CAACC,MAAmB;AACvC,MAAI,CAACA;AACD;AAGJ,QAAMC,IAAQD,EAAM,KAAA,EAAO,MAAM,uBAAuB;AAExD,MAAKC;AAIL,WAAO,OAAOA,EAAM,CAAC,CAAC;AAC1B,GA4BaC,IAAiB,CAA+BC,MAAwC;AACjG,QAAM,EAAE,eAAAC,GAAe,YAAAC,GAAY,SAAAC,GAAS,gBAAAC,GAAgB,mBAAAC,GAAmB,qBAAAC,GAAqB,OAAAC,MAAUP,GACxG,CAACQ,GAAA,EAAmB,EAAE,YAAAC,EAAA,CAAY,IAAIC,EAAA,GAEtCC,IAAmDR,EAAQ,IAAI,CAACS,GAAQC,OAAiB;AAAA,IAC3F,QAAAD;AAAA,IACA,aAAAC;AAAA,IACA,UAAU,aAAaA,IAAc,CAAC;AAAA,EAAA,EACxC,GAEIC,IAAeL,KAAcD,EAAgB,SAAS,aAEtDO,KACDT,IAAsBX,IAAkC,KACzDQ,EAAQ,OAAO,CAACa,GAAYJ,MAAW;AACnC,QAAIA,EAAO,UAAU;AACjB,aAAOI,IAAaC;AAGxB,UAAMC,IAActB,EAAeuB,EAAUP,EAAO,KAAK,CAAC;AAE1D,WAAOI,KAAcE,KAAe;AAAA,EACxC,GAAG,CAAC,GAEFE,IAAmBN,MAAiB,UAAaC,IAAgBD,GACjEO,IAAaP,MAAiB,SAAY,GAAGA,CAAY,OAAO,QAEhE,EAAE,kBAAAQ,GAAkB,2BAAAC,GAA2B,mBAAAC,GAAmB,iBAAAC,EAAA,IACpEC,EAAyB;AAAA,IACrB,SAAS,CAAC,CAACzB;AAAA,IACX,gBAAAG;AAAA,EAAA,CACH,GAECuB,IAA0BC,EAA2B;AAAA,IACvD,SAAAzB;AAAA,IACA,SAASiB;AAAA,IACT,iBAAAZ;AAAA,EAAA,CACH,GAEKqB,IACFlB,EAAiB,SAAS,IACpB;AAAA,IACIL,IAAsB,GAAGX,CAA+B,OAAO;AAAA,IAC/D,GAAGgB,EAAiB,IAAI,CAAC,EAAE,QAAAC,EAAA,MAAakB,EAAelB,GAAQe,EAAwBf,EAAO,GAAG,CAAC,CAAC;AAAA,EAAA,EAElG,OAAO,OAAO,EACd,KAAK,GAAG,IACb,kBAEJmB,IACFpB,EAAiB,SAAS,IACpB,IAAI;AAAA,IACAL,IAAsB,oBAAoB;AAAA,IAC1C,GAAGK,EAAiB,IAAI,CAAC,EAAE,UAAAqB,EAAA,MAAeA,CAAQ;AAAA,EAAA,EAEjD,OAAO,OAAO,EACd,KAAK,GAAG,CAAC,MACd,QAEJC,IAAgBd,EAAUjB,GAAY,QAAQ,KAAK,SACnDgC,IAAgBf,EAAUjB,GAAY,QAAQ,KAAK,OAEnDiC,IAAmC;AAAA,IACrC,GAAI5B,KAAS,CAAA;AAAA,IACb,mBAAmBsB;AAAA,IACnB,iBAAiBE;AAAA,IACjB,qBAAqBE;AAAA,IACrB,qBAAqBC;AAAA,IACrB,wBAAwB,OAAO/B,EAAQ,UAAUG,IAAsB,IAAI,EAAE;AAAA,IAC7E,+BAA+Ba,EAAUd,CAAiB;AAAA,IAC1D,iBAAiBgB;AAAA,EAAA;AAGrB,SAAO;AAAA,IACH,kBAAAV;AAAA,IACA,kBAAAW;AAAA,IACA,2BAAAC;AAAA,IACA,kBAAAH;AAAA,IACA,iBAAAZ;AAAA,IACA,mBAAAgB;AAAA,IACA,iBAAAC;AAAA,IACA,cAAAU;AAAA,EAAA;AAER;"}
@@ -1,18 +1,18 @@
1
- import { TableViewRow } from '../model/tableViewModel.types';
2
1
  type TableVirtualScrollContainer = {
3
2
  view?: HTMLDivElement | null;
4
3
  };
5
- type TableVirtualRow<RowType extends Record<string, unknown>> = {
4
+ type TableVirtualRow<RowType> = {
6
5
  index: number;
7
- row: TableViewRow<RowType>;
6
+ row: RowType;
8
7
  };
9
- type UseTableVirtualizationOptions<RowType extends Record<string, unknown>> = {
8
+ type UseTableVirtualizationOptions<RowType> = {
10
9
  enabled: boolean;
11
10
  overscan: number;
12
- rows: TableViewRow<RowType>[];
11
+ rows: RowType[];
13
12
  scrollContainer: TableVirtualScrollContainer | null;
13
+ viewportHeightFallback?: number;
14
14
  };
15
- declare const useTableVirtualization: <RowType extends Record<string, unknown>>(options: UseTableVirtualizationOptions<RowType>) => {
15
+ declare const useTableVirtualization: <RowType>(options: UseTableVirtualizationOptions<RowType>) => {
16
16
  isVirtualized: boolean;
17
17
  measureRow: (index: number, element: HTMLElement | null) => void;
18
18
  paddingBottom: number;
@@ -1,17 +1,17 @@
1
- import { useState as O, useCallback as c, useEffect as p, useMemo as V } from "react";
2
- const k = 50, T = (m, i) => m.start === i.start && m.end === i.end, F = (m) => {
3
- const { enabled: i, overscan: d, rows: r, scrollContainer: v } = m, [l, H] = O({
1
+ import { useState as M, useCallback as c, useEffect as T, useMemo as O } from "react";
2
+ const V = 50, E = (m, i) => m.start === i.start && m.end === i.end, I = (m) => {
3
+ const { enabled: i, overscan: d, rows: r, scrollContainer: v, viewportHeightFallback: w } = m, [l, H] = M({
4
4
  itemHeights: {},
5
5
  scrollTop: 0,
6
6
  viewportHeight: 0,
7
7
  visibleRange: { start: 0, end: 10 }
8
- }), b = c(() => v?.view ?? null, [v]), w = c(() => {
8
+ }), b = c(() => v?.view ?? null, [v]), f = c(() => {
9
9
  const e = Object.values(l.itemHeights);
10
- return e.length === 0 ? k : e.reduce((t, n) => t + n, 0) / e.length;
10
+ return e.length === 0 ? V : e.reduce((t, n) => t + n, 0) / e.length;
11
11
  }, [l.itemHeights]), g = c(
12
- (e) => l.itemHeights[e] ?? w(),
13
- [w, l.itemHeights]
14
- ), f = c(
12
+ (e) => l.itemHeights[e] ?? f(),
13
+ [f, l.itemHeights]
14
+ ), p = c(
15
15
  (e) => {
16
16
  let t = 0;
17
17
  for (let n = 0; n < e; n++)
@@ -19,7 +19,7 @@ const k = 50, T = (m, i) => m.start === i.start && m.end === i.end, F = (m) => {
19
19
  return t;
20
20
  },
21
21
  [g]
22
- ), E = c(() => {
22
+ ), x = c(() => {
23
23
  let e = 0;
24
24
  for (let t = 0; t < r.length; t++)
25
25
  e += g(t);
@@ -52,17 +52,17 @@ const k = 50, T = (m, i) => m.start === i.start && m.end === i.end, F = (m) => {
52
52
  const e = b();
53
53
  if (!e)
54
54
  return;
55
- const t = e.clientHeight, n = e.scrollTop, a = h(n, t);
55
+ const t = e.clientHeight || w || 0, n = e.scrollTop, a = h(n, t);
56
56
  H(
57
- (s) => s.scrollTop === n && s.viewportHeight === t && T(s.visibleRange, a) ? s : {
57
+ (s) => s.scrollTop === n && s.viewportHeight === t && E(s.visibleRange, a) ? s : {
58
58
  ...s,
59
59
  scrollTop: n,
60
60
  viewportHeight: t,
61
61
  visibleRange: a
62
62
  }
63
63
  );
64
- }, [h, b]);
65
- p(() => {
64
+ }, [h, b, w]);
65
+ T(() => {
66
66
  if (!i)
67
67
  return;
68
68
  const e = b();
@@ -73,21 +73,21 @@ const k = 50, T = (m, i) => m.start === i.start && m.end === i.end, F = (m) => {
73
73
  return t.observe(e), () => {
74
74
  e.removeEventListener("scroll", u), t.disconnect();
75
75
  };
76
- }, [i, b, u]), p(() => {
76
+ }, [i, b, u]), T(() => {
77
77
  i && H((e) => {
78
78
  const t = h(e.scrollTop, e.viewportHeight);
79
- return T(e.visibleRange, t) ? e : {
79
+ return E(e.visibleRange, t) ? e : {
80
80
  ...e,
81
81
  visibleRange: t
82
82
  };
83
83
  });
84
84
  }, [h, i, r]);
85
- const x = c(
85
+ const k = c(
86
86
  (e, t) => {
87
87
  if (!t)
88
88
  return;
89
89
  const n = t.getBoundingClientRect(), a = window.getComputedStyle(t), s = n.height + Number.parseFloat(a.marginTop || "0") + Number.parseFloat(a.marginBottom || "0");
90
- H((o) => {
90
+ s <= 0 || H((o) => {
91
91
  if (o.itemHeights[e] === s)
92
92
  return o;
93
93
  const R = {
@@ -104,22 +104,22 @@ const k = 50, T = (m, i) => m.start === i.start && m.end === i.end, F = (m) => {
104
104
  });
105
105
  },
106
106
  [h]
107
- ), z = V(
107
+ ), z = O(
108
108
  () => i ? r.slice(l.visibleRange.start, l.visibleRange.end).map((e, t) => ({
109
109
  index: l.visibleRange.start + t,
110
110
  row: e
111
111
  })) : [],
112
112
  [i, r, l.visibleRange.end, l.visibleRange.start]
113
- ), C = i ? f(l.visibleRange.start) : 0, M = i ? Math.max(0, E() - f(l.visibleRange.end)) : 0;
113
+ ), C = i ? p(l.visibleRange.start) : 0, F = i ? Math.max(0, x() - p(l.visibleRange.end)) : 0;
114
114
  return {
115
115
  isVirtualized: i,
116
- measureRow: x,
117
- paddingBottom: M,
116
+ measureRow: k,
117
+ paddingBottom: F,
118
118
  paddingTop: C,
119
119
  virtualRows: z
120
120
  };
121
121
  };
122
122
  export {
123
- F as default
123
+ I as default
124
124
  };
125
125
  //# sourceMappingURL=useTableVirtualization.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTableVirtualization.js","sources":["../../../../src/components/table/layout/useTableVirtualization.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\n\nimport type { TableViewRow } from '../model/tableViewModel.types';\n\ntype TableVirtualScrollContainer = {\n view?: HTMLDivElement | null;\n};\n\ntype TableVirtualRow<RowType extends Record<string, unknown>> = {\n index: number;\n row: TableViewRow<RowType>;\n};\n\ntype UseTableVirtualizationOptions<RowType extends Record<string, unknown>> = {\n enabled: boolean;\n overscan: number;\n rows: TableViewRow<RowType>[];\n scrollContainer: TableVirtualScrollContainer | null;\n};\n\ntype TableVirtualizationState = {\n itemHeights: Record<number, number>;\n scrollTop: number;\n viewportHeight: number;\n visibleRange: {\n start: number;\n end: number;\n };\n};\n\nconst DEFAULT_ROW_HEIGHT = 50;\n\nconst areVisibleRangesEqual = (\n left: TableVirtualizationState['visibleRange'],\n right: TableVirtualizationState['visibleRange']\n) => left.start === right.start && left.end === right.end;\n\nconst useTableVirtualization = <RowType extends Record<string, unknown>>(\n options: UseTableVirtualizationOptions<RowType>\n) => {\n const { enabled, overscan, rows, scrollContainer } = options;\n const [state, setState] = useState<TableVirtualizationState>({\n itemHeights: {},\n scrollTop: 0,\n viewportHeight: 0,\n visibleRange: { start: 0, end: 10 },\n });\n\n const getScrollElement = useCallback(() => scrollContainer?.view ?? null, [scrollContainer]);\n\n const getEstimatedRowHeight = useCallback(() => {\n const measuredHeights = Object.values(state.itemHeights);\n\n if (measuredHeights.length === 0) {\n return DEFAULT_ROW_HEIGHT;\n }\n\n return measuredHeights.reduce((sum, height) => sum + height, 0) / measuredHeights.length;\n }, [state.itemHeights]);\n\n const getRowHeight = useCallback(\n (index: number) => state.itemHeights[index] ?? getEstimatedRowHeight(),\n [getEstimatedRowHeight, state.itemHeights]\n );\n\n const getItemPosition = useCallback(\n (index: number) => {\n let position = 0;\n\n for (let currentIndex = 0; currentIndex < index; currentIndex++) {\n position += getRowHeight(currentIndex);\n }\n\n return position;\n },\n [getRowHeight]\n );\n\n const getTotalHeight = useCallback(() => {\n let totalHeight = 0;\n\n for (let index = 0; index < rows.length; index++) {\n totalHeight += getRowHeight(index);\n }\n\n return totalHeight;\n }, [getRowHeight, rows.length]);\n\n const calculateVisibleRange = useCallback(\n (scrollTop: number, viewportHeight: number) => {\n if (!enabled || rows.length === 0) {\n return { start: 0, end: rows.length };\n }\n\n let start = 0;\n let currentPosition = 0;\n\n while (start < rows.length) {\n const rowHeight = getRowHeight(start);\n\n if (currentPosition + rowHeight > scrollTop - overscan * rowHeight) {\n break;\n }\n\n currentPosition += rowHeight;\n start++;\n }\n\n let end = start;\n\n while (end < rows.length) {\n const rowHeight = getRowHeight(end);\n\n if (currentPosition > scrollTop + viewportHeight + overscan * rowHeight) {\n break;\n }\n\n currentPosition += rowHeight;\n end++;\n }\n\n return {\n start: Math.max(0, start - overscan),\n end: Math.min(rows.length, end + overscan),\n };\n },\n [enabled, getRowHeight, overscan, rows.length]\n );\n\n const handleScroll = useCallback(() => {\n const scrollElement = getScrollElement();\n\n if (!scrollElement) {\n return;\n }\n\n const viewportHeight = scrollElement.clientHeight;\n const scrollTop = scrollElement.scrollTop;\n const visibleRange = calculateVisibleRange(scrollTop, viewportHeight);\n\n setState(previousState =>\n previousState.scrollTop === scrollTop &&\n previousState.viewportHeight === viewportHeight &&\n areVisibleRangesEqual(previousState.visibleRange, visibleRange)\n ? previousState\n : {\n ...previousState,\n scrollTop,\n viewportHeight,\n visibleRange,\n }\n );\n }, [calculateVisibleRange, getScrollElement]);\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const scrollElement = getScrollElement();\n\n if (!scrollElement) {\n return;\n }\n\n handleScroll();\n scrollElement.addEventListener('scroll', handleScroll, { passive: true });\n\n const resizeObserver = new ResizeObserver(handleScroll);\n resizeObserver.observe(scrollElement);\n\n return () => {\n scrollElement.removeEventListener('scroll', handleScroll);\n resizeObserver.disconnect();\n };\n }, [enabled, getScrollElement, handleScroll]);\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n setState(previousState => {\n const visibleRange = calculateVisibleRange(previousState.scrollTop, previousState.viewportHeight);\n\n return areVisibleRangesEqual(previousState.visibleRange, visibleRange)\n ? previousState\n : {\n ...previousState,\n visibleRange,\n };\n });\n }, [calculateVisibleRange, enabled, rows]);\n\n const measureRow = useCallback(\n (index: number, element: HTMLElement | null) => {\n if (!element) {\n return;\n }\n\n const rect = element.getBoundingClientRect();\n const computedStyle = window.getComputedStyle(element);\n const height =\n rect.height +\n Number.parseFloat(computedStyle.marginTop || '0') +\n Number.parseFloat(computedStyle.marginBottom || '0');\n\n setState(previousState => {\n if (previousState.itemHeights[index] === height) {\n return previousState;\n }\n\n const nextState = {\n ...previousState,\n itemHeights: {\n ...previousState.itemHeights,\n [index]: height,\n },\n };\n\n return {\n ...nextState,\n visibleRange: calculateVisibleRange(nextState.scrollTop, nextState.viewportHeight),\n };\n });\n },\n [calculateVisibleRange]\n );\n\n const virtualRows = useMemo<TableVirtualRow<RowType>[]>(\n () =>\n enabled\n ? rows.slice(state.visibleRange.start, state.visibleRange.end).map((row, offset) => {\n const index = state.visibleRange.start + offset;\n\n return {\n index,\n row,\n };\n })\n : [],\n [enabled, rows, state.visibleRange.end, state.visibleRange.start]\n );\n\n const paddingTop = enabled ? getItemPosition(state.visibleRange.start) : 0;\n const paddingBottom = enabled ? Math.max(0, getTotalHeight() - getItemPosition(state.visibleRange.end)) : 0;\n\n return {\n isVirtualized: enabled,\n measureRow,\n paddingBottom,\n paddingTop,\n virtualRows,\n };\n};\n\nexport default useTableVirtualization;\n"],"names":["DEFAULT_ROW_HEIGHT","areVisibleRangesEqual","left","right","useTableVirtualization","options","enabled","overscan","rows","scrollContainer","state","setState","useState","getScrollElement","useCallback","getEstimatedRowHeight","measuredHeights","sum","height","getRowHeight","index","getItemPosition","position","currentIndex","getTotalHeight","totalHeight","calculateVisibleRange","scrollTop","viewportHeight","start","currentPosition","rowHeight","end","handleScroll","scrollElement","visibleRange","previousState","useEffect","resizeObserver","measureRow","element","rect","computedStyle","nextState","virtualRows","useMemo","row","offset","paddingTop","paddingBottom"],"mappings":"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"}
1
+ {"version":3,"file":"useTableVirtualization.js","sources":["../../../../src/components/table/layout/useTableVirtualization.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useState } from 'react';\n\ntype TableVirtualScrollContainer = {\n view?: HTMLDivElement | null;\n};\n\ntype TableVirtualRow<RowType> = {\n index: number;\n row: RowType;\n};\n\ntype UseTableVirtualizationOptions<RowType> = {\n enabled: boolean;\n overscan: number;\n rows: RowType[];\n scrollContainer: TableVirtualScrollContainer | null;\n viewportHeightFallback?: number;\n};\n\ntype TableVirtualizationState = {\n itemHeights: Record<number, number>;\n scrollTop: number;\n viewportHeight: number;\n visibleRange: {\n start: number;\n end: number;\n };\n};\n\nconst DEFAULT_ROW_HEIGHT = 50;\n\nconst areVisibleRangesEqual = (\n currentRange: TableVirtualizationState['visibleRange'],\n nextRange: TableVirtualizationState['visibleRange']\n) => currentRange.start === nextRange.start && currentRange.end === nextRange.end;\n\nconst useTableVirtualization = <RowType>(options: UseTableVirtualizationOptions<RowType>) => {\n const { enabled, overscan, rows, scrollContainer, viewportHeightFallback } = options;\n const [state, setState] = useState<TableVirtualizationState>({\n itemHeights: {},\n scrollTop: 0,\n viewportHeight: 0,\n visibleRange: { start: 0, end: 10 },\n });\n\n const getScrollElement = useCallback(() => scrollContainer?.view ?? null, [scrollContainer]);\n\n const getEstimatedRowHeight = useCallback(() => {\n const measuredHeights = Object.values(state.itemHeights);\n\n if (measuredHeights.length === 0) {\n return DEFAULT_ROW_HEIGHT;\n }\n\n return measuredHeights.reduce((sum, height) => sum + height, 0) / measuredHeights.length;\n }, [state.itemHeights]);\n\n const getRowHeight = useCallback(\n (index: number) => state.itemHeights[index] ?? getEstimatedRowHeight(),\n [getEstimatedRowHeight, state.itemHeights]\n );\n\n const getItemPosition = useCallback(\n (index: number) => {\n let position = 0;\n\n for (let currentIndex = 0; currentIndex < index; currentIndex++) {\n position += getRowHeight(currentIndex);\n }\n\n return position;\n },\n [getRowHeight]\n );\n\n const getTotalHeight = useCallback(() => {\n let totalHeight = 0;\n\n for (let index = 0; index < rows.length; index++) {\n totalHeight += getRowHeight(index);\n }\n\n return totalHeight;\n }, [getRowHeight, rows.length]);\n\n const calculateVisibleRange = useCallback(\n (scrollTop: number, viewportHeight: number) => {\n if (!enabled || rows.length === 0) {\n return { start: 0, end: rows.length };\n }\n\n let start = 0;\n let currentPosition = 0;\n\n while (start < rows.length) {\n const rowHeight = getRowHeight(start);\n\n if (currentPosition + rowHeight > scrollTop - overscan * rowHeight) {\n break;\n }\n\n currentPosition += rowHeight;\n start++;\n }\n\n let end = start;\n\n while (end < rows.length) {\n const rowHeight = getRowHeight(end);\n\n if (currentPosition > scrollTop + viewportHeight + overscan * rowHeight) {\n break;\n }\n\n currentPosition += rowHeight;\n end++;\n }\n\n return {\n start: Math.max(0, start - overscan),\n end: Math.min(rows.length, end + overscan),\n };\n },\n [enabled, getRowHeight, overscan, rows.length]\n );\n\n const handleScroll = useCallback(() => {\n const scrollElement = getScrollElement();\n\n if (!scrollElement) {\n return;\n }\n\n const viewportHeight = scrollElement.clientHeight || viewportHeightFallback || 0;\n const scrollTop = scrollElement.scrollTop;\n const visibleRange = calculateVisibleRange(scrollTop, viewportHeight);\n\n setState(previousState =>\n previousState.scrollTop === scrollTop &&\n previousState.viewportHeight === viewportHeight &&\n areVisibleRangesEqual(previousState.visibleRange, visibleRange)\n ? previousState\n : {\n ...previousState,\n scrollTop,\n viewportHeight,\n visibleRange,\n }\n );\n }, [calculateVisibleRange, getScrollElement, viewportHeightFallback]);\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n const scrollElement = getScrollElement();\n\n if (!scrollElement) {\n return;\n }\n\n handleScroll();\n scrollElement.addEventListener('scroll', handleScroll, { passive: true });\n\n const resizeObserver = new ResizeObserver(handleScroll);\n resizeObserver.observe(scrollElement);\n\n return () => {\n scrollElement.removeEventListener('scroll', handleScroll);\n resizeObserver.disconnect();\n };\n }, [enabled, getScrollElement, handleScroll]);\n\n useEffect(() => {\n if (!enabled) {\n return;\n }\n\n setState(previousState => {\n const visibleRange = calculateVisibleRange(previousState.scrollTop, previousState.viewportHeight);\n\n return areVisibleRangesEqual(previousState.visibleRange, visibleRange)\n ? previousState\n : {\n ...previousState,\n visibleRange,\n };\n });\n }, [calculateVisibleRange, enabled, rows]);\n\n const measureRow = useCallback(\n (index: number, element: HTMLElement | null) => {\n if (!element) {\n return;\n }\n\n const rect = element.getBoundingClientRect();\n const computedStyle = window.getComputedStyle(element);\n const height =\n rect.height +\n Number.parseFloat(computedStyle.marginTop || '0') +\n Number.parseFloat(computedStyle.marginBottom || '0');\n\n if (height <= 0) {\n return;\n }\n\n setState(previousState => {\n if (previousState.itemHeights[index] === height) {\n return previousState;\n }\n\n const nextState = {\n ...previousState,\n itemHeights: {\n ...previousState.itemHeights,\n [index]: height,\n },\n };\n\n return {\n ...nextState,\n visibleRange: calculateVisibleRange(nextState.scrollTop, nextState.viewportHeight),\n };\n });\n },\n [calculateVisibleRange]\n );\n\n const virtualRows = useMemo<TableVirtualRow<RowType>[]>(\n () =>\n enabled\n ? rows.slice(state.visibleRange.start, state.visibleRange.end).map((row, offset) => {\n const index = state.visibleRange.start + offset;\n\n return {\n index,\n row,\n };\n })\n : [],\n [enabled, rows, state.visibleRange.end, state.visibleRange.start]\n );\n\n const paddingTop = enabled ? getItemPosition(state.visibleRange.start) : 0;\n const paddingBottom = enabled ? Math.max(0, getTotalHeight() - getItemPosition(state.visibleRange.end)) : 0;\n\n return {\n isVirtualized: enabled,\n measureRow,\n paddingBottom,\n paddingTop,\n virtualRows,\n };\n};\n\nexport default useTableVirtualization;\n"],"names":["DEFAULT_ROW_HEIGHT","areVisibleRangesEqual","currentRange","nextRange","useTableVirtualization","options","enabled","overscan","rows","scrollContainer","viewportHeightFallback","state","setState","useState","getScrollElement","useCallback","getEstimatedRowHeight","measuredHeights","sum","height","getRowHeight","index","getItemPosition","position","currentIndex","getTotalHeight","totalHeight","calculateVisibleRange","scrollTop","viewportHeight","start","currentPosition","rowHeight","end","handleScroll","scrollElement","visibleRange","previousState","useEffect","resizeObserver","measureRow","element","rect","computedStyle","nextState","virtualRows","useMemo","row","offset","paddingTop","paddingBottom"],"mappings":";AA6BA,MAAMA,IAAqB,IAErBC,IAAwB,CAC1BC,GACAC,MACCD,EAAa,UAAUC,EAAU,SAASD,EAAa,QAAQC,EAAU,KAExEC,IAAyB,CAAUC,MAAoD;AACzF,QAAM,EAAE,SAAAC,GAAS,UAAAC,GAAU,MAAAC,GAAM,iBAAAC,GAAiB,wBAAAC,MAA2BL,GACvE,CAACM,GAAOC,CAAQ,IAAIC,EAAmC;AAAA,IACzD,aAAa,CAAA;AAAA,IACb,WAAW;AAAA,IACX,gBAAgB;AAAA,IAChB,cAAc,EAAE,OAAO,GAAG,KAAK,GAAA;AAAA,EAAG,CACrC,GAEKC,IAAmBC,EAAY,MAAMN,GAAiB,QAAQ,MAAM,CAACA,CAAe,CAAC,GAErFO,IAAwBD,EAAY,MAAM;AAC5C,UAAME,IAAkB,OAAO,OAAON,EAAM,WAAW;AAEvD,WAAIM,EAAgB,WAAW,IACpBjB,IAGJiB,EAAgB,OAAO,CAACC,GAAKC,MAAWD,IAAMC,GAAQ,CAAC,IAAIF,EAAgB;AAAA,EACtF,GAAG,CAACN,EAAM,WAAW,CAAC,GAEhBS,IAAeL;AAAA,IACjB,CAACM,MAAkBV,EAAM,YAAYU,CAAK,KAAKL,EAAA;AAAA,IAC/C,CAACA,GAAuBL,EAAM,WAAW;AAAA,EAAA,GAGvCW,IAAkBP;AAAA,IACpB,CAACM,MAAkB;AACf,UAAIE,IAAW;AAEf,eAASC,IAAe,GAAGA,IAAeH,GAAOG;AAC7C,QAAAD,KAAYH,EAAaI,CAAY;AAGzC,aAAOD;AAAA,IACX;AAAA,IACA,CAACH,CAAY;AAAA,EAAA,GAGXK,IAAiBV,EAAY,MAAM;AACrC,QAAIW,IAAc;AAElB,aAASL,IAAQ,GAAGA,IAAQb,EAAK,QAAQa;AACrC,MAAAK,KAAeN,EAAaC,CAAK;AAGrC,WAAOK;AAAA,EACX,GAAG,CAACN,GAAcZ,EAAK,MAAM,CAAC,GAExBmB,IAAwBZ;AAAA,IAC1B,CAACa,GAAmBC,MAA2B;AAC3C,UAAI,CAACvB,KAAWE,EAAK,WAAW;AAC5B,eAAO,EAAE,OAAO,GAAG,KAAKA,EAAK,OAAA;AAGjC,UAAIsB,IAAQ,GACRC,IAAkB;AAEtB,aAAOD,IAAQtB,EAAK,UAAQ;AACxB,cAAMwB,IAAYZ,EAAaU,CAAK;AAEpC,YAAIC,IAAkBC,IAAYJ,IAAYrB,IAAWyB;AACrD;AAGJ,QAAAD,KAAmBC,GACnBF;AAAA,MACJ;AAEA,UAAIG,IAAMH;AAEV,aAAOG,IAAMzB,EAAK,UAAQ;AACtB,cAAMwB,IAAYZ,EAAaa,CAAG;AAElC,YAAIF,IAAkBH,IAAYC,IAAiBtB,IAAWyB;AAC1D;AAGJ,QAAAD,KAAmBC,GACnBC;AAAA,MACJ;AAEA,aAAO;AAAA,QACH,OAAO,KAAK,IAAI,GAAGH,IAAQvB,CAAQ;AAAA,QACnC,KAAK,KAAK,IAAIC,EAAK,QAAQyB,IAAM1B,CAAQ;AAAA,MAAA;AAAA,IAEjD;AAAA,IACA,CAACD,GAASc,GAAcb,GAAUC,EAAK,MAAM;AAAA,EAAA,GAG3C0B,IAAenB,EAAY,MAAM;AACnC,UAAMoB,IAAgBrB,EAAA;AAEtB,QAAI,CAACqB;AACD;AAGJ,UAAMN,IAAiBM,EAAc,gBAAgBzB,KAA0B,GACzEkB,IAAYO,EAAc,WAC1BC,IAAeT,EAAsBC,GAAWC,CAAc;AAEpE,IAAAjB;AAAA,MAAS,CAAAyB,MACLA,EAAc,cAAcT,KAC5BS,EAAc,mBAAmBR,KACjC5B,EAAsBoC,EAAc,cAAcD,CAAY,IACxDC,IACA;AAAA,QACI,GAAGA;AAAA,QACH,WAAAT;AAAA,QACA,gBAAAC;AAAA,QACA,cAAAO;AAAA,MAAA;AAAA,IACJ;AAAA,EAEd,GAAG,CAACT,GAAuBb,GAAkBJ,CAAsB,CAAC;AAEpE,EAAA4B,EAAU,MAAM;AACZ,QAAI,CAAChC;AACD;AAGJ,UAAM6B,IAAgBrB,EAAA;AAEtB,QAAI,CAACqB;AACD;AAGJ,IAAAD,EAAA,GACAC,EAAc,iBAAiB,UAAUD,GAAc,EAAE,SAAS,IAAM;AAExE,UAAMK,IAAiB,IAAI,eAAeL,CAAY;AACtD,WAAAK,EAAe,QAAQJ,CAAa,GAE7B,MAAM;AACT,MAAAA,EAAc,oBAAoB,UAAUD,CAAY,GACxDK,EAAe,WAAA;AAAA,IACnB;AAAA,EACJ,GAAG,CAACjC,GAASQ,GAAkBoB,CAAY,CAAC,GAE5CI,EAAU,MAAM;AACZ,IAAKhC,KAILM,EAAS,CAAAyB,MAAiB;AACtB,YAAMD,IAAeT,EAAsBU,EAAc,WAAWA,EAAc,cAAc;AAEhG,aAAOpC,EAAsBoC,EAAc,cAAcD,CAAY,IAC/DC,IACA;AAAA,QACI,GAAGA;AAAA,QACH,cAAAD;AAAA,MAAA;AAAA,IAEd,CAAC;AAAA,EACL,GAAG,CAACT,GAAuBrB,GAASE,CAAI,CAAC;AAEzC,QAAMgC,IAAazB;AAAA,IACf,CAACM,GAAeoB,MAAgC;AAC5C,UAAI,CAACA;AACD;AAGJ,YAAMC,IAAOD,EAAQ,sBAAA,GACfE,IAAgB,OAAO,iBAAiBF,CAAO,GAC/CtB,IACFuB,EAAK,SACL,OAAO,WAAWC,EAAc,aAAa,GAAG,IAChD,OAAO,WAAWA,EAAc,gBAAgB,GAAG;AAEvD,MAAIxB,KAAU,KAIdP,EAAS,CAAAyB,MAAiB;AACtB,YAAIA,EAAc,YAAYhB,CAAK,MAAMF;AACrC,iBAAOkB;AAGX,cAAMO,IAAY;AAAA,UACd,GAAGP;AAAA,UACH,aAAa;AAAA,YACT,GAAGA,EAAc;AAAA,YACjB,CAAChB,CAAK,GAAGF;AAAA,UAAA;AAAA,QACb;AAGJ,eAAO;AAAA,UACH,GAAGyB;AAAA,UACH,cAAcjB,EAAsBiB,EAAU,WAAWA,EAAU,cAAc;AAAA,QAAA;AAAA,MAEzF,CAAC;AAAA,IACL;AAAA,IACA,CAACjB,CAAqB;AAAA,EAAA,GAGpBkB,IAAcC;AAAA,IAChB,MACIxC,IACME,EAAK,MAAMG,EAAM,aAAa,OAAOA,EAAM,aAAa,GAAG,EAAE,IAAI,CAACoC,GAAKC,OAG5D;AAAA,MACH,OAHUrC,EAAM,aAAa,QAAQqC;AAAA,MAIrC,KAAAD;AAAA,IAAA,EAEP,IACD,CAAA;AAAA,IACV,CAACzC,GAASE,GAAMG,EAAM,aAAa,KAAKA,EAAM,aAAa,KAAK;AAAA,EAAA,GAG9DsC,IAAa3C,IAAUgB,EAAgBX,EAAM,aAAa,KAAK,IAAI,GACnEuC,IAAgB5C,IAAU,KAAK,IAAI,GAAGmB,MAAmBH,EAAgBX,EAAM,aAAa,GAAG,CAAC,IAAI;AAE1G,SAAO;AAAA,IACH,eAAeL;AAAA,IACf,YAAAkC;AAAA,IACA,eAAAU;AAAA,IACA,YAAAD;AAAA,IACA,aAAAJ;AAAA,EAAA;AAER;"}
@@ -1,2 +1,3 @@
1
- export declare const resolveRowClassName: <RowType extends Record<string, unknown>>(rowClassName: string | ((row: RowType, rowIndex: number) => string) | undefined, row: RowType, rowIndex: number) => string | undefined;
2
- export declare const resolveRowKey: <RowType extends Record<string, unknown>>(row: RowType, rowIndex: number, rowKey: keyof RowType | ((row: RowType, rowIndex: number) => string | number) | undefined) => string | number;
1
+ import { TableRowData } from '../Table.types';
2
+ export declare const resolveRowClassName: <RowType extends TableRowData>(rowClassName: string | ((row: RowType, rowIndex: number) => string) | undefined, row: RowType, rowIndex: number) => string | undefined;
3
+ export declare const resolveRowKey: <RowType extends TableRowData>(row: RowType, rowIndex: number, rowKey: keyof RowType | ((row: RowType, rowIndex: number) => string | number) | undefined) => string | number;
@@ -1 +1 @@
1
- {"version":3,"file":"resolveRowMeta.js","sources":["../../../../src/components/table/model/resolveRowMeta.ts"],"sourcesContent":["export const resolveRowClassName = <RowType extends Record<string, unknown>>(\n rowClassName: string | ((row: RowType, rowIndex: number) => string) | undefined,\n row: RowType,\n rowIndex: number\n) => {\n if (typeof rowClassName === 'function') {\n return rowClassName(row, rowIndex);\n }\n\n return rowClassName;\n};\n\nexport const resolveRowKey = <RowType extends Record<string, unknown>>(\n row: RowType,\n rowIndex: number,\n rowKey: keyof RowType | ((row: RowType, rowIndex: number) => string | number) | undefined\n) => {\n if (typeof rowKey === 'function') {\n return rowKey(row, rowIndex);\n }\n\n if (rowKey) {\n const rowValue = row[rowKey];\n if (typeof rowValue === 'string' || typeof rowValue === 'number') {\n return rowValue;\n }\n }\n\n return rowIndex;\n};\n"],"names":["resolveRowClassName","rowClassName","row","rowIndex","resolveRowKey","rowKey","rowValue"],"mappings":"AAAO,MAAMA,IAAsB,CAC/BC,GACAC,GACAC,MAEI,OAAOF,KAAiB,aACjBA,EAAaC,GAAKC,CAAQ,IAG9BF,GAGEG,IAAgB,CACzBF,GACAC,GACAE,MACC;AACD,MAAI,OAAOA,KAAW;AAClB,WAAOA,EAAOH,GAAKC,CAAQ;AAG/B,MAAIE,GAAQ;AACR,UAAMC,IAAWJ,EAAIG,CAAM;AAC3B,QAAI,OAAOC,KAAa,YAAY,OAAOA,KAAa;AACpD,aAAOA;AAAA,EAEf;AAEA,SAAOH;AACX;"}
1
+ {"version":3,"file":"resolveRowMeta.js","sources":["../../../../src/components/table/model/resolveRowMeta.ts"],"sourcesContent":["import type { TableRowData } from '../Table.types';\n\nexport const resolveRowClassName = <RowType extends TableRowData>(\n rowClassName: string | ((row: RowType, rowIndex: number) => string) | undefined,\n row: RowType,\n rowIndex: number\n) => {\n if (typeof rowClassName === 'function') {\n return rowClassName(row, rowIndex);\n }\n\n return rowClassName;\n};\n\nexport const resolveRowKey = <RowType extends TableRowData>(\n row: RowType,\n rowIndex: number,\n rowKey: keyof RowType | ((row: RowType, rowIndex: number) => string | number) | undefined\n) => {\n if (typeof rowKey === 'function') {\n return rowKey(row, rowIndex);\n }\n\n if (rowKey) {\n const rowValue = row[rowKey];\n if (typeof rowValue === 'string' || typeof rowValue === 'number') {\n return rowValue;\n }\n }\n\n return rowIndex;\n};\n"],"names":["resolveRowClassName","rowClassName","row","rowIndex","resolveRowKey","rowKey","rowValue"],"mappings":"AAEO,MAAMA,IAAsB,CAC/BC,GACAC,GACAC,MAEI,OAAOF,KAAiB,aACjBA,EAAaC,GAAKC,CAAQ,IAG9BF,GAGEG,IAAgB,CACzBF,GACAC,GACAE,MACC;AACD,MAAI,OAAOA,KAAW;AAClB,WAAOA,EAAOH,GAAKC,CAAQ;AAG/B,MAAIE,GAAQ;AACR,UAAMC,IAAWJ,EAAIG,CAAM;AAC3B,QAAI,OAAOC,KAAa,YAAY,OAAOA,KAAa;AACpD,aAAOA;AAAA,EAEf;AAEA,SAAOH;AACX;"}
@@ -1,6 +1,5 @@
1
- import { TableCardsStyleSettings } from '../TableCard';
2
- import { TableViewType } from '../Table.types';
3
- import { TableViewFlags } from './tableViewModel.types';
1
+ import { TableCardsStyleSettings, TableViewType } from '../Table.types';
2
+ import { TableViewFlags } from './tableView.types';
4
3
  type TableStyleClassSwitches = {
5
4
  hasShadow: boolean;
6
5
  hasBorder: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"resolveTableClassConfig.js","sources":["../../../../src/components/table/model/resolveTableClassConfig.ts"],"sourcesContent":["import { mergeClassNameOverrides } from '../../../mergeClassNameOverrides';\nimport classNames from '../../../utils/classNames';\nimport type { TableCardsStyleSettings } from '../TableCard';\nimport type { TableViewType } from '../Table.types';\nimport type { TableViewFlags } from './tableViewModel.types';\n\ntype TableStyleClassSwitches = {\n hasShadow: boolean;\n hasBorder: boolean;\n hasRounded: boolean;\n};\n\ntype TableCardClasses = {\n rowClassName?: string;\n cellClassName?: string;\n labelClassName?: string;\n contentClassName?: string;\n};\n\ntype ResolveTableClassConfigProps = {\n viewType: TableViewType;\n hover?: boolean;\n shadow?: boolean;\n border?: boolean;\n rounded?: boolean;\n className?: string;\n cardsStyle?: TableCardsStyleSettings;\n};\n\ntype ResolveTableBaseClassNameProps = {\n viewType: TableViewType;\n condensed?: boolean;\n striped?: boolean;\n gridLines?: boolean;\n className?: string;\n tableUseOverflow: boolean;\n flags: TableViewFlags;\n hasHover: boolean;\n styleClassSwitches: TableStyleClassSwitches;\n};\n\nconst viewTypeClassNameMap: Record<TableViewType, string> = {\n TABLE: 'table-view-table',\n SINGLE_CARD: 'table-view-single-card',\n MULTI_CARDS: 'table-view-multi-cards',\n};\n\nconst splitClassNameTokens = (value?: string) =>\n value\n ?.split(' ')\n .map(classNameToken => classNameToken.trim())\n .filter(Boolean) ?? [];\n\nconst normalizeTableStyleOverrideToken = (token: string) => {\n if (token === 'shadow' || token.startsWith('shadow-')) {\n return 'shadow';\n }\n\n if (token === 'border-radius' || token.startsWith('border-radius-')) {\n return 'rounded';\n }\n\n return token;\n};\n\nexport const resolveTableStyleClassSwitches = (props: {\n shadow?: boolean;\n border?: boolean;\n rounded?: boolean;\n className?: string;\n}): TableStyleClassSwitches => {\n const { shadow, border, rounded, className } = props;\n const defaultStyleClasses = classNames(shadow && 'shadow', border && 'border', rounded && 'rounded');\n\n const overrideClasses = splitClassNameTokens(className).map(normalizeTableStyleOverrideToken).join(' ');\n const mergedStyleClasses = mergeClassNameOverrides(defaultStyleClasses, overrideClasses);\n const mergedStyleClassSet = new Set(splitClassNameTokens(mergedStyleClasses));\n\n return {\n hasShadow: !!shadow && mergedStyleClassSet.has('shadow'),\n hasBorder: !!border && mergedStyleClassSet.has('border'),\n hasRounded: !!rounded && mergedStyleClassSet.has('rounded'),\n };\n};\n\nexport const resolveTableClassConfig = (\n props: ResolveTableClassConfigProps\n): {\n hasHover: boolean;\n isTableView: boolean;\n styleClassSwitches: TableStyleClassSwitches;\n cardClasses: TableCardClasses;\n} => {\n const { viewType, hover = false, shadow = false, border = true, rounded = true, className, cardsStyle } = props;\n const isTableView = viewType === 'TABLE';\n const hasHover = hover;\n const styleClassSwitches = resolveTableStyleClassSwitches({ shadow, border, rounded, className });\n\n return {\n hasHover,\n isTableView,\n styleClassSwitches,\n cardClasses: {\n rowClassName: !isTableView\n ? classNames(\n styleClassSwitches.hasShadow && 'shadow-default',\n styleClassSwitches.hasBorder && 'border',\n cardsStyle?.className\n )\n : undefined,\n cellClassName: !isTableView ? cardsStyle?.rowClassName : undefined,\n labelClassName: !isTableView ? cardsStyle?.labelClassName : undefined,\n contentClassName: !isTableView ? cardsStyle?.contentClassName : undefined,\n },\n };\n};\n\nexport const resolveTableBaseClassName = (props: ResolveTableBaseClassNameProps) => {\n const {\n viewType,\n condensed = false,\n striped = false,\n gridLines = false,\n className,\n tableUseOverflow,\n flags,\n hasHover,\n styleClassSwitches,\n } = props;\n\n return classNames(\n 'table',\n viewTypeClassNameMap[viewType],\n hasHover && 'table-hover',\n condensed && 'table-condensed',\n flags.isTableView && gridLines && 'table-grid-lines',\n flags.isTableView && striped && 'table-striped',\n flags.isTableView && styleClassSwitches.hasShadow && 'shadow-default',\n flags.isTableView && styleClassSwitches.hasBorder && 'border',\n styleClassSwitches.hasRounded && 'table-rounded',\n flags.isTableView && (flags.hasHeader ? 'table-has-head' : 'table-no-head'),\n flags.isTableView && flags.hasFooter && 'table-has-footer',\n flags.isTableView && tableUseOverflow && 'table-allow-horizontal-overflow',\n className\n );\n};\n"],"names":["viewTypeClassNameMap","splitClassNameTokens","value","classNameToken","normalizeTableStyleOverrideToken","token","resolveTableStyleClassSwitches","props","shadow","border","rounded","className","defaultStyleClasses","classNames","overrideClasses","mergedStyleClasses","mergeClassNameOverrides","mergedStyleClassSet","resolveTableClassConfig","viewType","hover","cardsStyle","isTableView","hasHover","styleClassSwitches","resolveTableBaseClassName","condensed","striped","gridLines","tableUseOverflow","flags"],"mappings":";;AAyCA,MAAMA,IAAsD;AAAA,EACxD,OAAO;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AACjB,GAEMC,IAAuB,CAACC,MAC1BA,GACM,MAAM,GAAG,EACV,IAAI,CAAAC,MAAkBA,EAAe,MAAM,EAC3C,OAAO,OAAO,KAAK,CAAA,GAEtBC,IAAmC,CAACC,MAClCA,MAAU,YAAYA,EAAM,WAAW,SAAS,IACzC,WAGPA,MAAU,mBAAmBA,EAAM,WAAW,gBAAgB,IACvD,YAGJA,GAGEC,IAAiC,CAACC,MAKhB;AAC3B,QAAM,EAAE,QAAAC,GAAQ,QAAAC,GAAQ,SAAAC,GAAS,WAAAC,MAAcJ,GACzCK,IAAsBC,EAAWL,KAAU,UAAUC,KAAU,UAAUC,KAAW,SAAS,GAE7FI,IAAkBb,EAAqBU,CAAS,EAAE,IAAIP,CAAgC,EAAE,KAAK,GAAG,GAChGW,IAAqBC,EAAwBJ,GAAqBE,CAAe,GACjFG,IAAsB,IAAI,IAAIhB,EAAqBc,CAAkB,CAAC;AAE5E,SAAO;AAAA,IACH,WAAW,CAAC,CAACP,KAAUS,EAAoB,IAAI,QAAQ;AAAA,IACvD,WAAW,CAAC,CAACR,KAAUQ,EAAoB,IAAI,QAAQ;AAAA,IACvD,YAAY,CAAC,CAACP,KAAWO,EAAoB,IAAI,SAAS;AAAA,EAAA;AAElE,GAEaC,IAA0B,CACnCX,MAMC;AACD,QAAM,EAAE,UAAAY,GAAU,OAAAC,IAAQ,IAAO,QAAAZ,IAAS,IAAO,QAAAC,IAAS,IAAM,SAAAC,IAAU,IAAM,WAAAC,GAAW,YAAAU,EAAA,IAAed,GACpGe,IAAcH,MAAa,SAC3BI,IAAWH,GACXI,IAAqBlB,EAA+B,EAAE,QAAAE,GAAQ,QAAAC,GAAQ,SAAAC,GAAS,WAAAC,GAAW;AAEhG,SAAO;AAAA,IACH,UAAAY;AAAA,IACA,aAAAD;AAAA,IACA,oBAAAE;AAAA,IACA,aAAa;AAAA,MACT,cAAeF,IAMT,SALAT;AAAA,QACIW,EAAmB,aAAa;AAAA,QAChCA,EAAmB,aAAa;AAAA,QAChCH,GAAY;AAAA,MAAA;AAAA,MAGtB,eAAgBC,IAAyC,SAA3BD,GAAY;AAAA,MAC1C,gBAAiBC,IAA2C,SAA7BD,GAAY;AAAA,MAC3C,kBAAmBC,IAA6C,SAA/BD,GAAY;AAAA,IAAmB;AAAA,EACpE;AAER,GAEaI,IAA4B,CAAClB,MAA0C;AAChF,QAAM;AAAA,IACF,UAAAY;AAAA,IACA,WAAAO,IAAY;AAAA,IACZ,SAAAC,IAAU;AAAA,IACV,WAAAC,IAAY;AAAA,IACZ,WAAAjB;AAAA,IACA,kBAAAkB;AAAA,IACA,OAAAC;AAAA,IACA,UAAAP;AAAA,IACA,oBAAAC;AAAA,EAAA,IACAjB;AAEJ,SAAOM;AAAA,IACH;AAAA,IACAb,EAAqBmB,CAAQ;AAAA,IAC7BI,KAAY;AAAA,IACZG,KAAa;AAAA,IACbI,EAAM,eAAeF,KAAa;AAAA,IAClCE,EAAM,eAAeH,KAAW;AAAA,IAChCG,EAAM,eAAeN,EAAmB,aAAa;AAAA,IACrDM,EAAM,eAAeN,EAAmB,aAAa;AAAA,IACrDA,EAAmB,cAAc;AAAA,IACjCM,EAAM,gBAAgBA,EAAM,YAAY,mBAAmB;AAAA,IAC3DA,EAAM,eAAeA,EAAM,aAAa;AAAA,IACxCA,EAAM,eAAeD,KAAoB;AAAA,IACzClB;AAAA,EAAA;AAER;"}
1
+ {"version":3,"file":"resolveTableClassConfig.js","sources":["../../../../src/components/table/model/resolveTableClassConfig.ts"],"sourcesContent":["import { mergeClassNameOverrides } from '../../../mergeClassNameOverrides';\nimport classNames from '../../../utils/classNames';\nimport type { TableCardsStyleSettings, TableViewType } from '../Table.types';\nimport type { TableViewFlags } from './tableView.types';\n\ntype TableStyleClassSwitches = {\n hasShadow: boolean;\n hasBorder: boolean;\n hasRounded: boolean;\n};\n\ntype TableCardClasses = {\n rowClassName?: string;\n cellClassName?: string;\n labelClassName?: string;\n contentClassName?: string;\n};\n\ntype ResolveTableClassConfigProps = {\n viewType: TableViewType;\n hover?: boolean;\n shadow?: boolean;\n border?: boolean;\n rounded?: boolean;\n className?: string;\n cardsStyle?: TableCardsStyleSettings;\n};\n\ntype ResolveTableBaseClassNameProps = {\n viewType: TableViewType;\n condensed?: boolean;\n striped?: boolean;\n gridLines?: boolean;\n className?: string;\n tableUseOverflow: boolean;\n flags: TableViewFlags;\n hasHover: boolean;\n styleClassSwitches: TableStyleClassSwitches;\n};\n\nconst viewTypeClassNameMap: Record<TableViewType, string> = {\n TABLE: 'table-view-table',\n SINGLE_CARD: 'table-view-single-card',\n MULTI_CARDS: 'table-view-multi-cards',\n};\n\nconst splitClassNameTokens = (value?: string) =>\n value\n ?.split(' ')\n .map(classNameToken => classNameToken.trim())\n .filter(Boolean) ?? [];\n\nconst normalizeTableStyleOverrideToken = (token: string) => {\n if (token === 'shadow' || token.startsWith('shadow-')) {\n return 'shadow';\n }\n\n if (token === 'border-radius' || token.startsWith('border-radius-')) {\n return 'rounded';\n }\n\n return token;\n};\n\nexport const resolveTableStyleClassSwitches = (props: {\n shadow?: boolean;\n border?: boolean;\n rounded?: boolean;\n className?: string;\n}): TableStyleClassSwitches => {\n const { shadow, border, rounded, className } = props;\n const defaultStyleClasses = classNames(shadow && 'shadow', border && 'border', rounded && 'rounded');\n\n const overrideClasses = splitClassNameTokens(className).map(normalizeTableStyleOverrideToken).join(' ');\n const mergedStyleClasses = mergeClassNameOverrides(defaultStyleClasses, overrideClasses);\n const mergedStyleClassSet = new Set(splitClassNameTokens(mergedStyleClasses));\n\n return {\n hasShadow: !!shadow && mergedStyleClassSet.has('shadow'),\n hasBorder: !!border && mergedStyleClassSet.has('border'),\n hasRounded: !!rounded && mergedStyleClassSet.has('rounded'),\n };\n};\n\nexport const resolveTableClassConfig = (\n props: ResolveTableClassConfigProps\n): {\n hasHover: boolean;\n isTableView: boolean;\n styleClassSwitches: TableStyleClassSwitches;\n cardClasses: TableCardClasses;\n} => {\n const { viewType, hover = false, shadow = false, border = true, rounded = true, className, cardsStyle } = props;\n const isTableView = viewType === 'TABLE';\n const hasHover = hover;\n const styleClassSwitches = resolveTableStyleClassSwitches({ shadow, border, rounded, className });\n\n return {\n hasHover,\n isTableView,\n styleClassSwitches,\n cardClasses: {\n rowClassName: !isTableView\n ? classNames(\n styleClassSwitches.hasShadow && 'shadow-default',\n styleClassSwitches.hasBorder && 'border',\n cardsStyle?.className\n )\n : undefined,\n cellClassName: !isTableView ? cardsStyle?.rowClassName : undefined,\n labelClassName: !isTableView ? cardsStyle?.labelClassName : undefined,\n contentClassName: !isTableView ? cardsStyle?.contentClassName : undefined,\n },\n };\n};\n\nexport const resolveTableBaseClassName = (props: ResolveTableBaseClassNameProps) => {\n const {\n viewType,\n condensed = false,\n striped = false,\n gridLines = false,\n className,\n tableUseOverflow,\n flags,\n hasHover,\n styleClassSwitches,\n } = props;\n\n return classNames(\n 'table',\n viewTypeClassNameMap[viewType],\n hasHover && 'table-hover',\n condensed && 'table-condensed',\n flags.isTableView && gridLines && 'table-grid-lines',\n flags.isTableView && striped && 'table-striped',\n flags.isTableView && styleClassSwitches.hasShadow && 'shadow-default',\n flags.isTableView && styleClassSwitches.hasBorder && 'border',\n styleClassSwitches.hasRounded && 'table-rounded',\n flags.isTableView && (flags.hasHeader ? 'table-has-head' : 'table-no-head'),\n flags.isTableView && flags.hasFooter && 'table-has-footer',\n flags.isTableView && tableUseOverflow && 'table-allow-horizontal-overflow',\n className\n );\n};\n"],"names":["viewTypeClassNameMap","splitClassNameTokens","value","classNameToken","normalizeTableStyleOverrideToken","token","resolveTableStyleClassSwitches","props","shadow","border","rounded","className","defaultStyleClasses","classNames","overrideClasses","mergedStyleClasses","mergeClassNameOverrides","mergedStyleClassSet","resolveTableClassConfig","viewType","hover","cardsStyle","isTableView","hasHover","styleClassSwitches","resolveTableBaseClassName","condensed","striped","gridLines","tableUseOverflow","flags"],"mappings":";;AAwCA,MAAMA,IAAsD;AAAA,EACxD,OAAO;AAAA,EACP,aAAa;AAAA,EACb,aAAa;AACjB,GAEMC,IAAuB,CAACC,MAC1BA,GACM,MAAM,GAAG,EACV,IAAI,CAAAC,MAAkBA,EAAe,MAAM,EAC3C,OAAO,OAAO,KAAK,CAAA,GAEtBC,IAAmC,CAACC,MAClCA,MAAU,YAAYA,EAAM,WAAW,SAAS,IACzC,WAGPA,MAAU,mBAAmBA,EAAM,WAAW,gBAAgB,IACvD,YAGJA,GAGEC,IAAiC,CAACC,MAKhB;AAC3B,QAAM,EAAE,QAAAC,GAAQ,QAAAC,GAAQ,SAAAC,GAAS,WAAAC,MAAcJ,GACzCK,IAAsBC,EAAWL,KAAU,UAAUC,KAAU,UAAUC,KAAW,SAAS,GAE7FI,IAAkBb,EAAqBU,CAAS,EAAE,IAAIP,CAAgC,EAAE,KAAK,GAAG,GAChGW,IAAqBC,EAAwBJ,GAAqBE,CAAe,GACjFG,IAAsB,IAAI,IAAIhB,EAAqBc,CAAkB,CAAC;AAE5E,SAAO;AAAA,IACH,WAAW,CAAC,CAACP,KAAUS,EAAoB,IAAI,QAAQ;AAAA,IACvD,WAAW,CAAC,CAACR,KAAUQ,EAAoB,IAAI,QAAQ;AAAA,IACvD,YAAY,CAAC,CAACP,KAAWO,EAAoB,IAAI,SAAS;AAAA,EAAA;AAElE,GAEaC,IAA0B,CACnCX,MAMC;AACD,QAAM,EAAE,UAAAY,GAAU,OAAAC,IAAQ,IAAO,QAAAZ,IAAS,IAAO,QAAAC,IAAS,IAAM,SAAAC,IAAU,IAAM,WAAAC,GAAW,YAAAU,EAAA,IAAed,GACpGe,IAAcH,MAAa,SAC3BI,IAAWH,GACXI,IAAqBlB,EAA+B,EAAE,QAAAE,GAAQ,QAAAC,GAAQ,SAAAC,GAAS,WAAAC,GAAW;AAEhG,SAAO;AAAA,IACH,UAAAY;AAAA,IACA,aAAAD;AAAA,IACA,oBAAAE;AAAA,IACA,aAAa;AAAA,MACT,cAAeF,IAMT,SALAT;AAAA,QACIW,EAAmB,aAAa;AAAA,QAChCA,EAAmB,aAAa;AAAA,QAChCH,GAAY;AAAA,MAAA;AAAA,MAGtB,eAAgBC,IAAyC,SAA3BD,GAAY;AAAA,MAC1C,gBAAiBC,IAA2C,SAA7BD,GAAY;AAAA,MAC3C,kBAAmBC,IAA6C,SAA/BD,GAAY;AAAA,IAAmB;AAAA,EACpE;AAER,GAEaI,IAA4B,CAAClB,MAA0C;AAChF,QAAM;AAAA,IACF,UAAAY;AAAA,IACA,WAAAO,IAAY;AAAA,IACZ,SAAAC,IAAU;AAAA,IACV,WAAAC,IAAY;AAAA,IACZ,WAAAjB;AAAA,IACA,kBAAAkB;AAAA,IACA,OAAAC;AAAA,IACA,UAAAP;AAAA,IACA,oBAAAC;AAAA,EAAA,IACAjB;AAEJ,SAAOM;AAAA,IACH;AAAA,IACAb,EAAqBmB,CAAQ;AAAA,IAC7BI,KAAY;AAAA,IACZG,KAAa;AAAA,IACbI,EAAM,eAAeF,KAAa;AAAA,IAClCE,EAAM,eAAeH,KAAW;AAAA,IAChCG,EAAM,eAAeN,EAAmB,aAAa;AAAA,IACrDM,EAAM,eAAeN,EAAmB,aAAa;AAAA,IACrDA,EAAmB,cAAc;AAAA,IACjCM,EAAM,gBAAgBA,EAAM,YAAY,mBAAmB;AAAA,IAC3DA,EAAM,eAAeA,EAAM,aAAa;AAAA,IACxCA,EAAM,eAAeD,KAAoB;AAAA,IACzClB;AAAA,EAAA;AAER;"}
@@ -0,0 +1,41 @@
1
+ import { ReactNode } from 'react';
2
+ import { TableColumnDefinition, TableHorizontalAlign, TableRowData, TableSortDirection, TableVerticalAlign } from '../Table.types';
3
+ export type TableViewHeaderColumn<RowType extends TableRowData> = {
4
+ key: string | number;
5
+ columnKey?: string;
6
+ label: ReactNode;
7
+ icon?: string;
8
+ filter?: ReactNode;
9
+ hideLabel?: boolean;
10
+ horizontalAlign?: TableHorizontalAlign;
11
+ verticalAlign?: TableVerticalAlign;
12
+ className?: string;
13
+ headerClassName?: string;
14
+ hideOnMobile?: boolean;
15
+ draggable?: boolean;
16
+ resizeable?: boolean;
17
+ sortable?: boolean;
18
+ sortDirection?: TableSortDirection;
19
+ rowStart: number;
20
+ rowSpan: number;
21
+ columnStart: number;
22
+ colSpan: number;
23
+ source?: TableColumnDefinition<RowType>;
24
+ };
25
+ export type TableViewHeader<RowType extends TableRowData> = {
26
+ rowCount: number;
27
+ totalColumnCount: number;
28
+ columns: TableViewHeaderColumn<RowType>[];
29
+ };
30
+ export type TableViewCardClasses = {
31
+ rowClassName?: string;
32
+ cellClassName?: string;
33
+ labelClassName?: string;
34
+ contentClassName?: string;
35
+ };
36
+ export type TableViewFlags = {
37
+ hasHeader: boolean;
38
+ hasFooter: boolean;
39
+ isClickable: boolean;
40
+ isTableView: boolean;
41
+ };
@@ -60,7 +60,7 @@ const P = 1e3, U = (o, e, l) => o ? !(l[e] || "").toLowerCase().includes(o.toLow
60
60
  "data-key": e,
61
61
  ...D,
62
62
  ...L,
63
- children: i[e]
63
+ children: i?.[e]
64
64
  }
65
65
  ),
66
66
  s && /* @__PURE__ */ t("div", { className: "column-width-label", children: s.width ? `${s.width}px` : d }),
@@ -1 +1 @@
1
- {"version":3,"file":"TableSettingsListItem.js","sources":["../../../../src/components/table/native/TableSettingsListItem.tsx"],"sourcesContent":["import { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { isEmpty, noop } from 'es-toolkit/compat';\n\nimport classNames from '../../../utils/classNames';\nimport Checkbox from '../../checkbox/Checkbox';\nimport Collapse from '../../collapse/Collapse';\nimport { TableSettingsColumnDetails } from './TableSettingsColumnDetails';\nimport { TableSettingsColumnButtons } from './TableSettingsColumnButtons';\nimport type { TableSettingsItemProps } from './TableSettingsDialog';\n\nconst MAX_COLUMN_WIDTH = 1000;\n\nexport const filterColumns = (searchValue: string, column: string, columnLabelStrings: Record<string, string>) => {\n if (!searchValue) {\n return false;\n }\n const label = columnLabelStrings[column] || '';\n return !label.toLowerCase().includes(searchValue.toLowerCase());\n};\n\nexport type TableSettingsListItemProps = TableSettingsItemProps & {\n column: string;\n orderIndex: number;\n isActive: boolean;\n className?: string;\n};\n\nconst TableSettingsListItem = (props: TableSettingsListItemProps) => {\n const {\n column,\n orderIndex,\n columnLabels,\n autoLabel,\n disabledColumns = [],\n columnOrder,\n hiddenColumns = [],\n columnSearchValue,\n columnsDetails,\n columnLabelStrings = {},\n openColumnsDetails = {},\n onColumnWidthChange,\n onResetColumnWidth,\n onMoveColumn,\n onOpenDetails,\n onToggleHideColumn = noop,\n isActive = false,\n className,\n } = props;\n\n const isSortingDisabled = !isEmpty(columnSearchValue);\n\n const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } = useSortable({\n id: column,\n disabled: isSortingDisabled,\n });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n // Filter out items which don't match the search value.\n const isFiltered = filterColumns(columnSearchValue, column, columnLabelStrings);\n\n const itemClassNames = classNames('table-settings-item', className);\n\n const columnDetails = columnsDetails[column];\n\n return (\n <li\n hidden={isFiltered}\n className={itemClassNames}\n key={`table-settings-item-${column}`}\n ref={setNodeRef}\n style={style}\n >\n <div className='table-settings-item-header user-select-none' ref={setActivatorNodeRef}>\n <div className='CheckboxWrapper display-flex align-items-center padding-left-2 margin-top--3'>\n <Checkbox\n checked={!hiddenColumns.includes(column)}\n onClick={event => {\n onToggleHideColumn(column);\n event.stopPropagation();\n }}\n disabled={disabledColumns.includes(column)}\n />\n </div>\n <div\n className={`table-settings-item-label ${isSortingDisabled ? 'no-drag' : ''}`}\n data-key={column}\n {...attributes}\n {...listeners}\n >\n {columnLabels[column]}\n </div>\n {columnDetails && (\n <div className='column-width-label'>\n {columnDetails.width ? `${columnDetails.width}px` : autoLabel}\n </div>\n )}\n <TableSettingsColumnButtons\n column={column}\n index={orderIndex}\n columnDetails={columnDetails}\n columnOrder={columnOrder}\n openColumnsDetails={openColumnsDetails}\n disabled={isSortingDisabled}\n onMoveColumn={onMoveColumn}\n onOpenDetails={onOpenDetails}\n />\n </div>\n {columnDetails && !isActive && (\n <Collapse open={!!openColumnsDetails[column]}>\n <div>\n <TableSettingsColumnDetails\n {...columnDetails}\n column={column}\n maxColumnWidth={MAX_COLUMN_WIDTH}\n onColumnWidthChange={onColumnWidthChange}\n onResetColumnWidth={onResetColumnWidth}\n />\n </div>\n </Collapse>\n )}\n </li>\n );\n};\n\nexport default TableSettingsListItem;\n"],"names":["MAX_COLUMN_WIDTH","filterColumns","searchValue","column","columnLabelStrings","TableSettingsListItem","props","orderIndex","columnLabels","autoLabel","disabledColumns","columnOrder","hiddenColumns","columnSearchValue","columnsDetails","openColumnsDetails","onColumnWidthChange","onResetColumnWidth","onMoveColumn","onOpenDetails","onToggleHideColumn","noop","isActive","className","isSortingDisabled","isEmpty","attributes","listeners","setNodeRef","setActivatorNodeRef","transform","transition","useSortable","style","CSS","isFiltered","itemClassNames","classNames","columnDetails","jsxs","jsx","Checkbox","event","TableSettingsColumnButtons","Collapse","TableSettingsColumnDetails"],"mappings":"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"}
1
+ {"version":3,"file":"TableSettingsListItem.js","sources":["../../../../src/components/table/native/TableSettingsListItem.tsx"],"sourcesContent":["import { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport { isEmpty, noop } from 'es-toolkit/compat';\n\nimport classNames from '../../../utils/classNames';\nimport Checkbox from '../../checkbox/Checkbox';\nimport Collapse from '../../collapse/Collapse';\nimport { TableSettingsColumnDetails } from './TableSettingsColumnDetails';\nimport { TableSettingsColumnButtons } from './TableSettingsColumnButtons';\nimport type { TableSettingsItemProps } from './TableSettingsDialog';\n\nconst MAX_COLUMN_WIDTH = 1000;\n\nexport const filterColumns = (searchValue: string, column: string, columnLabelStrings: Record<string, string>) => {\n if (!searchValue) {\n return false;\n }\n const label = columnLabelStrings[column] || '';\n return !label.toLowerCase().includes(searchValue.toLowerCase());\n};\n\nexport type TableSettingsListItemProps = TableSettingsItemProps & {\n column: string;\n orderIndex: number;\n isActive: boolean;\n className?: string;\n};\n\nconst TableSettingsListItem = (props: TableSettingsListItemProps) => {\n const {\n column,\n orderIndex,\n columnLabels,\n autoLabel,\n disabledColumns = [],\n columnOrder,\n hiddenColumns = [],\n columnSearchValue,\n columnsDetails,\n columnLabelStrings = {},\n openColumnsDetails = {},\n onColumnWidthChange,\n onResetColumnWidth,\n onMoveColumn,\n onOpenDetails,\n onToggleHideColumn = noop,\n isActive = false,\n className,\n } = props;\n\n const isSortingDisabled = !isEmpty(columnSearchValue);\n\n const { attributes, listeners, setNodeRef, setActivatorNodeRef, transform, transition } = useSortable({\n id: column,\n disabled: isSortingDisabled,\n });\n\n const style = {\n transform: CSS.Transform.toString(transform),\n transition,\n };\n\n // Filter out items which don't match the search value.\n const isFiltered = filterColumns(columnSearchValue, column, columnLabelStrings);\n\n const itemClassNames = classNames('table-settings-item', className);\n\n const columnDetails = columnsDetails[column];\n\n return (\n <li\n hidden={isFiltered}\n className={itemClassNames}\n key={`table-settings-item-${column}`}\n ref={setNodeRef}\n style={style}\n >\n <div className='table-settings-item-header user-select-none' ref={setActivatorNodeRef}>\n <div className='CheckboxWrapper display-flex align-items-center padding-left-2 margin-top--3'>\n <Checkbox\n checked={!hiddenColumns.includes(column)}\n onClick={event => {\n onToggleHideColumn(column);\n event.stopPropagation();\n }}\n disabled={disabledColumns.includes(column)}\n />\n </div>\n <div\n className={`table-settings-item-label ${isSortingDisabled ? 'no-drag' : ''}`}\n data-key={column}\n {...attributes}\n {...listeners}\n >\n {columnLabels?.[column]}\n </div>\n {columnDetails && (\n <div className='column-width-label'>\n {columnDetails.width ? `${columnDetails.width}px` : autoLabel}\n </div>\n )}\n <TableSettingsColumnButtons\n column={column}\n index={orderIndex}\n columnDetails={columnDetails}\n columnOrder={columnOrder}\n openColumnsDetails={openColumnsDetails}\n disabled={isSortingDisabled}\n onMoveColumn={onMoveColumn}\n onOpenDetails={onOpenDetails}\n />\n </div>\n {columnDetails && !isActive && (\n <Collapse open={!!openColumnsDetails[column]}>\n <div>\n <TableSettingsColumnDetails\n {...columnDetails}\n column={column}\n maxColumnWidth={MAX_COLUMN_WIDTH}\n onColumnWidthChange={onColumnWidthChange}\n onResetColumnWidth={onResetColumnWidth}\n />\n </div>\n </Collapse>\n )}\n </li>\n );\n};\n\nexport default TableSettingsListItem;\n"],"names":["MAX_COLUMN_WIDTH","filterColumns","searchValue","column","columnLabelStrings","TableSettingsListItem","props","orderIndex","columnLabels","autoLabel","disabledColumns","columnOrder","hiddenColumns","columnSearchValue","columnsDetails","openColumnsDetails","onColumnWidthChange","onResetColumnWidth","onMoveColumn","onOpenDetails","onToggleHideColumn","noop","isActive","className","isSortingDisabled","isEmpty","attributes","listeners","setNodeRef","setActivatorNodeRef","transform","transition","useSortable","style","CSS","isFiltered","itemClassNames","classNames","columnDetails","jsxs","jsx","Checkbox","event","TableSettingsColumnButtons","Collapse","TableSettingsColumnDetails"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { MutableRefObject } from 'react';
2
+ import { TableHtmlAttributes, TableRowData } from '../../Table.types';
3
+ import { RenderBodyRow, TableRenderContextValue } from '../../context/TableRenderContext';
4
+ import { TableRenderConfigContextValue } from '../../context/TableRenderConfigContext';
5
+ export type TableBodyContentProps = {
6
+ columnCount: number;
7
+ hasDeclaredChildren: boolean;
8
+ htmlAttributes: TableHtmlAttributes;
9
+ isVirtualized: boolean;
10
+ itemsRef: MutableRefObject<HTMLDivElement | null>;
11
+ paddingBottom: number;
12
+ paddingTop: number;
13
+ renderConfigContext: TableRenderConfigContextValue<TableRowData>;
14
+ renderContext: TableRenderContextValue<TableRowData>;
15
+ shouldAnimateBodyRows: boolean;
16
+ virtualRows: Array<{
17
+ row: RenderBodyRow<TableRowData>;
18
+ }>;
19
+ };
20
+ declare const TableBodyContent: (props: TableBodyContentProps) => import("react/jsx-runtime").JSX.Element;
21
+ export default TableBodyContent;
@@ -0,0 +1,52 @@
1
+ import { jsxs as w, Fragment as g, jsx as t } from "react/jsx-runtime";
2
+ import { AnimatePresence as v } from "motion/react";
3
+ import { isValidElement as B, cloneElement as C } from "react";
4
+ import x from "./TableEmptyRow.js";
5
+ const j = (m) => {
6
+ const {
7
+ columnCount: c,
8
+ hasDeclaredChildren: u,
9
+ htmlAttributes: p,
10
+ isVirtualized: d,
11
+ itemsRef: y,
12
+ paddingBottom: i,
13
+ paddingTop: l,
14
+ renderConfigContext: h,
15
+ renderContext: o,
16
+ shouldAnimateBodyRows: f,
17
+ virtualRows: R
18
+ } = m, a = (e) => {
19
+ const n = `${e.kind}-${String(e.rowId)}`, s = o.renderBodyRow?.(e);
20
+ return B(s) ? C(s, { key: n }) : null;
21
+ }, b = (e) => {
22
+ y.current = e;
23
+ }, r = (e) => /* @__PURE__ */ t(
24
+ "div",
25
+ {
26
+ ...p,
27
+ className: "table-body",
28
+ ref: d ? b : void 0,
29
+ role: "rowgroup",
30
+ children: e
31
+ }
32
+ );
33
+ if (d)
34
+ return r(
35
+ /* @__PURE__ */ w(g, { children: [
36
+ l > 0 ? /* @__PURE__ */ t("div", { "aria-hidden": !0, className: "table-body-virtual-spacer", style: { height: l } }) : null,
37
+ R.map(({ row: e }) => a(e)),
38
+ i > 0 ? /* @__PURE__ */ t("div", { "aria-hidden": !0, className: "table-body-virtual-spacer", style: { height: i } }) : null
39
+ ] })
40
+ );
41
+ if (o.bodyRows.length > 0) {
42
+ const e = o.bodyRows.map((n) => a(n));
43
+ return r(
44
+ f ? /* @__PURE__ */ t(v, { initial: !1, children: e }) : e
45
+ );
46
+ }
47
+ return r(u ? null : /* @__PURE__ */ t(x, { columnCount: c, content: h.noRowsState }));
48
+ };
49
+ export {
50
+ j as default
51
+ };
52
+ //# sourceMappingURL=TableBodyContent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableBodyContent.js","sources":["../../../../../src/components/table/render/body/TableBodyContent.tsx"],"sourcesContent":["import { AnimatePresence } from 'motion/react';\nimport { cloneElement, isValidElement, type MutableRefObject, type ReactElement, type ReactNode } from 'react';\n\nimport type { TableHtmlAttributes, TableRowData } from '../../Table.types';\nimport type { RenderBodyRow, TableRenderContextValue } from '../../context/TableRenderContext';\nimport type { TableRenderConfigContextValue } from '../../context/TableRenderConfigContext';\nimport TableEmptyRow from './TableEmptyRow';\n\nexport type TableBodyContentProps = {\n columnCount: number;\n hasDeclaredChildren: boolean;\n htmlAttributes: TableHtmlAttributes;\n isVirtualized: boolean;\n itemsRef: MutableRefObject<HTMLDivElement | null>;\n paddingBottom: number;\n paddingTop: number;\n renderConfigContext: TableRenderConfigContextValue<TableRowData>;\n renderContext: TableRenderContextValue<TableRowData>;\n shouldAnimateBodyRows: boolean;\n virtualRows: Array<{ row: RenderBodyRow<TableRowData> }>;\n};\n\nconst TableBodyContent = (props: TableBodyContentProps) => {\n const {\n columnCount,\n hasDeclaredChildren,\n htmlAttributes,\n isVirtualized,\n itemsRef,\n paddingBottom,\n paddingTop,\n renderConfigContext,\n renderContext,\n shouldAnimateBodyRows,\n virtualRows,\n } = props;\n\n const renderResolvedBodyRow = (row: RenderBodyRow<TableRowData>) => {\n const rowKey = `${row.kind}-${String(row.rowId)}`;\n const renderedRow = renderContext.renderBodyRow?.(row);\n\n return isValidElement(renderedRow) ? cloneElement(renderedRow as ReactElement, { key: rowKey }) : null;\n };\n\n const handleItemsRef = (element: HTMLDivElement | null) => {\n itemsRef.current = element;\n };\n\n const renderBodyWrapper = (content: ReactNode) => (\n <div\n {...htmlAttributes}\n className='table-body'\n ref={isVirtualized ? handleItemsRef : undefined}\n role='rowgroup'\n >\n {content}\n </div>\n );\n\n if (isVirtualized) {\n return renderBodyWrapper(\n <>\n {paddingTop > 0 ? (\n <div aria-hidden className='table-body-virtual-spacer' style={{ height: paddingTop }} />\n ) : null}\n {virtualRows.map(({ row }) => renderResolvedBodyRow(row))}\n {paddingBottom > 0 ? (\n <div aria-hidden className='table-body-virtual-spacer' style={{ height: paddingBottom }} />\n ) : null}\n </>\n );\n }\n\n if (renderContext.bodyRows.length > 0) {\n const renderedBodyRows = renderContext.bodyRows.map(row => renderResolvedBodyRow(row));\n\n return renderBodyWrapper(\n shouldAnimateBodyRows ? (\n <AnimatePresence initial={false}>{renderedBodyRows}</AnimatePresence>\n ) : (\n renderedBodyRows\n )\n );\n }\n\n if (!hasDeclaredChildren) {\n return renderBodyWrapper(<TableEmptyRow columnCount={columnCount} content={renderConfigContext.noRowsState} />);\n }\n\n return renderBodyWrapper(null);\n};\n\nexport default TableBodyContent;\n"],"names":["TableBodyContent","props","columnCount","hasDeclaredChildren","htmlAttributes","isVirtualized","itemsRef","paddingBottom","paddingTop","renderConfigContext","renderContext","shouldAnimateBodyRows","virtualRows","renderResolvedBodyRow","row","rowKey","renderedRow","isValidElement","cloneElement","handleItemsRef","element","renderBodyWrapper","content","jsx","jsxs","Fragment","renderedBodyRows","AnimatePresence","TableEmptyRow"],"mappings":";;;;AAsBA,MAAMA,IAAmB,CAACC,MAAiC;AACvD,QAAM;AAAA,IACF,aAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,gBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,UAAAC;AAAA,IACA,eAAAC;AAAA,IACA,YAAAC;AAAA,IACA,qBAAAC;AAAA,IACA,eAAAC;AAAA,IACA,uBAAAC;AAAA,IACA,aAAAC;AAAA,EAAA,IACAX,GAEEY,IAAwB,CAACC,MAAqC;AAChE,UAAMC,IAAS,GAAGD,EAAI,IAAI,IAAI,OAAOA,EAAI,KAAK,CAAC,IACzCE,IAAcN,EAAc,gBAAgBI,CAAG;AAErD,WAAOG,EAAeD,CAAW,IAAIE,EAAaF,GAA6B,EAAE,KAAKD,EAAA,CAAQ,IAAI;AAAA,EACtG,GAEMI,IAAiB,CAACC,MAAmC;AACvD,IAAAd,EAAS,UAAUc;AAAA,EACvB,GAEMC,IAAoB,CAACC,MACvB,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACI,GAAGnB;AAAA,MACJ,WAAU;AAAA,MACV,KAAKC,IAAgBc,IAAiB;AAAA,MACtC,MAAK;AAAA,MAEJ,UAAAG;AAAA,IAAA;AAAA,EAAA;AAIT,MAAIjB;AACA,WAAOgB;AAAA,MACH,gBAAAG,EAAAC,GAAA,EACK,UAAA;AAAA,QAAAjB,IAAa,IACV,gBAAAe,EAAC,OAAA,EAAI,eAAW,IAAC,WAAU,6BAA4B,OAAO,EAAE,QAAQf,EAAA,EAAW,CAAG,IACtF;AAAA,QACHI,EAAY,IAAI,CAAC,EAAE,KAAAE,QAAUD,EAAsBC,CAAG,CAAC;AAAA,QACvDP,IAAgB,IACb,gBAAAgB,EAAC,OAAA,EAAI,eAAW,IAAC,WAAU,6BAA4B,OAAO,EAAE,QAAQhB,EAAA,GAAiB,IACzF;AAAA,MAAA,EAAA,CACR;AAAA,IAAA;AAIR,MAAIG,EAAc,SAAS,SAAS,GAAG;AACnC,UAAMgB,IAAmBhB,EAAc,SAAS,IAAI,CAAAI,MAAOD,EAAsBC,CAAG,CAAC;AAErF,WAAOO;AAAA,MACHV,IACI,gBAAAY,EAACI,GAAA,EAAgB,SAAS,IAAQ,aAAiB,IAEnDD;AAAA,IAAA;AAAA,EAGZ;AAEA,SAIOL,EAJFlB,IAIoB,OAHI,gBAAAoB,EAACK,GAAA,EAAc,aAAA1B,GAA0B,SAASO,EAAoB,aAAa,CAGnF;AACjC;"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as e } from "react/jsx-runtime";
2
- const o = ({ columnCount: l, content: a, dataIndex: t }) => /* @__PURE__ */ e("div", { className: "table-row table-row-empty", "data-index": t, role: "row", children: /* @__PURE__ */ e("div", { className: "table-cell table-empty", role: "cell", "aria-colspan": l, children: /* @__PURE__ */ e("div", { className: "table-cell-content", children: a }) }) });
2
+ const r = ({ columnCount: l, content: a, dataIndex: t }) => /* @__PURE__ */ e("div", { className: "table-row table-row-empty table-row-no-hover", "data-index": t, role: "row", children: /* @__PURE__ */ e("div", { className: "table-cell table-empty", role: "cell", "aria-colspan": l, children: /* @__PURE__ */ e("div", { className: "table-cell-content", children: a }) }) });
3
3
  export {
4
- o as default
4
+ r as default
5
5
  };
6
6
  //# sourceMappingURL=TableEmptyRow.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TableEmptyRow.js","sources":["../../../../../src/components/table/render/body/TableEmptyRow.tsx"],"sourcesContent":["type TableEmptyRowProps = {\n columnCount: number;\n content: React.ReactNode;\n dataIndex?: number;\n};\n\nconst TableEmptyRow = ({ columnCount, content, dataIndex }: TableEmptyRowProps) => (\n <div className='table-row table-row-empty' data-index={dataIndex} role='row'>\n <div className='table-cell table-empty' role='cell' aria-colspan={columnCount}>\n <div className='table-cell-content'>{content}</div>\n </div>\n </div>\n);\n\nexport default TableEmptyRow;\n"],"names":["TableEmptyRow","columnCount","content","dataIndex","jsx"],"mappings":";AAMA,MAAMA,IAAgB,CAAC,EAAE,aAAAC,GAAa,SAAAC,GAAS,WAAAC,EAAA,MAC3C,gBAAAC,EAAC,OAAA,EAAI,WAAU,6BAA4B,cAAYD,GAAW,MAAK,OACnE,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,0BAAyB,MAAK,QAAO,gBAAcH,GAC9D,UAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,sBAAsB,UAAAF,EAAA,CAAQ,GACjD,EAAA,CACJ;"}
1
+ {"version":3,"file":"TableEmptyRow.js","sources":["../../../../../src/components/table/render/body/TableEmptyRow.tsx"],"sourcesContent":["type TableEmptyRowProps = {\n columnCount: number;\n content: React.ReactNode;\n dataIndex?: number;\n};\n\nconst TableEmptyRow = ({ columnCount, content, dataIndex }: TableEmptyRowProps) => (\n <div className='table-row table-row-empty table-row-no-hover' data-index={dataIndex} role='row'>\n <div className='table-cell table-empty' role='cell' aria-colspan={columnCount}>\n <div className='table-cell-content'>{content}</div>\n </div>\n </div>\n);\n\nexport default TableEmptyRow;\n"],"names":["TableEmptyRow","columnCount","content","dataIndex","jsx"],"mappings":";AAMA,MAAMA,IAAgB,CAAC,EAAE,aAAAC,GAAa,SAAAC,GAAS,WAAAC,EAAA,MAC3C,gBAAAC,EAAC,OAAA,EAAI,WAAU,gDAA+C,cAAYD,GAAW,MAAK,OACtF,UAAA,gBAAAC,EAAC,OAAA,EAAI,WAAU,0BAAyB,MAAK,QAAO,gBAAcH,GAC9D,UAAA,gBAAAG,EAAC,OAAA,EAAI,WAAU,sBAAsB,UAAAF,EAAA,CAAQ,GACjD,EAAA,CACJ;"}