@cube-dev/ui-kit 0.0.0-canary-6334c8a → 0.0.0-canary-b27ca71

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 (513) hide show
  1. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.js +1 -1
  19. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  21. package/dist/components/actions/ButtonSplit/context.js +1 -1
  22. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  23. package/dist/components/actions/CommandMenu/styled.js +1 -1
  24. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  25. package/dist/components/actions/ItemActionContext.js +1 -1
  26. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  27. package/dist/components/actions/Link/Link.js +1 -1
  28. package/dist/components/actions/Menu/Menu.js +1 -1
  29. package/dist/components/actions/Menu/MenuItem.js +1 -1
  30. package/dist/components/actions/Menu/MenuSection.js +1 -1
  31. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  32. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  34. package/dist/components/actions/Menu/context.js +1 -1
  35. package/dist/components/actions/Menu/styled.js +1 -1
  36. package/dist/components/actions/index.js +1 -1
  37. package/dist/components/actions/use-action.js +1 -1
  38. package/dist/components/actions/use-anchored-menu.js +1 -1
  39. package/dist/components/actions/use-context-menu.js +1 -1
  40. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  41. package/dist/components/content/Alert/Alert.js +1 -1
  42. package/dist/components/content/Alert/use-alert.js +1 -1
  43. package/dist/components/content/Avatar/Avatar.js +1 -1
  44. package/dist/components/content/Badge/Badge.js +1 -1
  45. package/dist/components/content/Card/Card.js +1 -1
  46. package/dist/components/content/Content.js +1 -1
  47. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  48. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  49. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  50. package/dist/components/content/Divider.js +1 -1
  51. package/dist/components/content/Footer.js +1 -1
  52. package/dist/components/content/Header.js +1 -1
  53. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  54. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  55. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  56. package/dist/components/content/Item/Item.js +1 -1
  57. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  58. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  59. package/dist/components/content/Layout/GridLayout.js +1 -1
  60. package/dist/components/content/Layout/Layout.js +1 -1
  61. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  62. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  63. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  64. package/dist/components/content/Layout/LayoutContent.js +1 -1
  65. package/dist/components/content/Layout/LayoutContext.js +1 -1
  66. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  67. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  68. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  69. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  70. package/dist/components/content/Layout/LayoutPane.js +1 -1
  71. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  72. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  74. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  75. package/dist/components/content/Layout/index.js +1 -1
  76. package/dist/components/content/Layout/utils.js +1 -1
  77. package/dist/components/content/Paragraph.js +1 -1
  78. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  79. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  80. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  81. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  82. package/dist/components/content/Result/Result.js +1 -1
  83. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  84. package/dist/components/content/Tag/Tag.js +1 -1
  85. package/dist/components/content/Text.js +1 -1
  86. package/dist/components/content/TextItem/TextItem.js +1 -1
  87. package/dist/components/content/Title.js +1 -1
  88. package/dist/components/content/Tree/Tree.js +1 -1
  89. package/dist/components/content/Tree/TreeNode.js +1 -1
  90. package/dist/components/content/Tree/styled.js +1 -1
  91. package/dist/components/content/Tree/tree-index.js +1 -1
  92. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  93. package/dist/components/content/Tree/use-load-data.js +1 -1
  94. package/dist/components/content/highlightText.js +1 -1
  95. package/dist/components/content/use-auto-tooltip.js +1 -1
  96. package/dist/components/data/DataTable/DataTable.js +5 -4
  97. package/dist/components/data/DataTable/DataTable.js.map +1 -1
  98. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  99. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  100. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  101. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  102. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  103. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  104. package/dist/components/data/TableBase/RowCollection.js +1 -1
  105. package/dist/components/data/TableBase/TableRow.js +1 -1
  106. package/dist/components/data/TableBase/TableView.js +27 -24
  107. package/dist/components/data/TableBase/TableView.js.map +1 -1
  108. package/dist/components/data/TableBase/row-menu.js +1 -1
  109. package/dist/components/data/TableBase/styled.js +1 -1
  110. package/dist/components/data/TableBase/types.d.ts +0 -13
  111. package/dist/components/data/TableBase/types.js +31 -0
  112. package/dist/components/data/TableBase/types.js.map +1 -0
  113. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  114. package/dist/components/data/TableBase/use-cell-selection.js.map +1 -1
  115. package/dist/components/data/TableBase/use-container-width.js +1 -1
  116. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  117. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  118. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  119. package/dist/components/data/TableBase/use-table-search.js +1 -1
  120. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  121. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  122. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  123. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  124. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  125. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  126. package/dist/components/fields/Checkbox/context.js +1 -1
  127. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  128. package/dist/components/fields/ColorPicker/ColorPickerPanel.js +1 -1
  129. package/dist/components/fields/ColorPicker/channels.js +1 -1
  130. package/dist/components/fields/ColorPicker/color.js +1 -1
  131. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  132. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  133. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  134. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  135. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  136. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  137. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  138. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  139. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  140. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  141. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  142. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  143. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  144. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  145. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  146. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  147. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  148. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  149. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  150. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  151. package/dist/components/fields/DatePicker/period.js +1 -1
  152. package/dist/components/fields/DatePicker/props.js +1 -1
  153. package/dist/components/fields/DatePicker/utils.js +1 -1
  154. package/dist/components/fields/FileInput/FileInput.js +1 -1
  155. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  156. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  157. package/dist/components/fields/Input/Input.js +1 -1
  158. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  159. package/dist/components/fields/ListBox/ListBox.js +1 -1
  160. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  161. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  162. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  163. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  164. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  165. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  166. package/dist/components/fields/Picker/Picker.js +1 -1
  167. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  168. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  169. package/dist/components/fields/RadioGroup/context.js +1 -1
  170. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  171. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  172. package/dist/components/fields/Select/Select.js +1 -1
  173. package/dist/components/fields/Slider/Gradation.js +1 -1
  174. package/dist/components/fields/Slider/HueSlider.js +1 -1
  175. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  176. package/dist/components/fields/Slider/Slider.js +1 -1
  177. package/dist/components/fields/Slider/SliderBase.js +1 -1
  178. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  179. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  180. package/dist/components/fields/Slider/elements.js +1 -1
  181. package/dist/components/fields/Slider/index.js +1 -1
  182. package/dist/components/fields/Switch/Switch.js +1 -1
  183. package/dist/components/fields/TextArea/TextArea.js +1 -1
  184. package/dist/components/fields/TextInput/TextInput.js +1 -1
  185. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  186. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  187. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  188. package/dist/components/form/Form/Field.js +1 -1
  189. package/dist/components/form/Form/Form.js +1 -1
  190. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  191. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  192. package/dist/components/form/Form/SubmitError.js +1 -1
  193. package/dist/components/form/Form/index.js +1 -1
  194. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  195. package/dist/components/form/Form/use-field/use-field.js +1 -1
  196. package/dist/components/form/Form/use-form.js +1 -1
  197. package/dist/components/form/Form/validation.js +1 -1
  198. package/dist/components/form/Label.js +1 -1
  199. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  200. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  201. package/dist/components/form/validation/use-validation-props.js +1 -1
  202. package/dist/components/form/wrapper.js +1 -1
  203. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  204. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  205. package/dist/components/layout/Board/Board.js +1 -1
  206. package/dist/components/layout/Board/BoardProvider.js +1 -1
  207. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  208. package/dist/components/layout/Board/Widget.js +1 -1
  209. package/dist/components/layout/Board/WidgetHost.js +1 -1
  210. package/dist/components/layout/Board/board-context.js +1 -1
  211. package/dist/components/layout/Board/board-store.js +1 -1
  212. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  213. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  214. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  215. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  216. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  217. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  218. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  219. package/dist/components/layout/Board/index.js +1 -1
  220. package/dist/components/layout/Board/responsive-utils.js +1 -1
  221. package/dist/components/layout/Board/use-board-layout.js +1 -1
  222. package/dist/components/layout/Board/use-board-registry.js +1 -1
  223. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  224. package/dist/components/layout/Board/use-board-selection.js +1 -1
  225. package/dist/components/layout/Flex.js +1 -1
  226. package/dist/components/layout/Flow.js +1 -1
  227. package/dist/components/layout/Grid.js +1 -1
  228. package/dist/components/layout/Panel.js +1 -1
  229. package/dist/components/layout/Prefix.js +1 -1
  230. package/dist/components/layout/ResizablePanel.js +1 -1
  231. package/dist/components/layout/Space.js +1 -1
  232. package/dist/components/layout/Suffix.js +1 -1
  233. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  234. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  235. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  236. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  237. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  238. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  239. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  240. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  241. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  242. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  243. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  244. package/dist/components/navigation/Tabs/styled.js +1 -1
  245. package/dist/components/navigation/Tabs/types.js +1 -1
  246. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  247. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  248. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  249. package/dist/components/other/Calendar/Calendar.js +1 -1
  250. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  251. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  252. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  253. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  254. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  255. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  256. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  257. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  258. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  259. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  260. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  261. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  262. package/dist/components/overlays/Dialog/context.js +1 -1
  263. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  264. package/dist/components/overlays/Modal/Modal.js +1 -1
  265. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  266. package/dist/components/overlays/Modal/Overlay.js +1 -1
  267. package/dist/components/overlays/Modal/Popover.js +1 -1
  268. package/dist/components/overlays/Modal/Tray.js +1 -1
  269. package/dist/components/overlays/Modal/Underlay.js +1 -1
  270. package/dist/components/overlays/Notifications/Notification.js +1 -1
  271. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  272. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  273. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  274. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  275. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  276. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  277. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  278. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  279. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  280. package/dist/components/overlays/Notifications/index.js +1 -1
  281. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  282. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  283. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  284. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  285. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  286. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  287. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  288. package/dist/components/overlays/Toast/index.js +1 -1
  289. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  290. package/dist/components/overlays/Toast/useToast.js +1 -1
  291. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  292. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  293. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  294. package/dist/components/overlays/Tooltip/context.js +1 -1
  295. package/dist/components/portal/Portal.js +1 -1
  296. package/dist/components/portal/PortalProvider.js +1 -1
  297. package/dist/components/portal/usePortal.js +1 -1
  298. package/dist/components/shared/DraggableCollection.js +1 -1
  299. package/dist/components/shared/InvalidIcon.js +1 -1
  300. package/dist/components/shared/ValidIcon.js +1 -1
  301. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  302. package/dist/components/status/Spin/Cube.js +1 -1
  303. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  304. package/dist/components/status/Spin/Spin.js +1 -1
  305. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  306. package/dist/data/item-themes.js +1 -1
  307. package/dist/data/themes.js +1 -1
  308. package/dist/eslint-plugin/defaults.generated.js +1 -1
  309. package/dist/eslint-plugin/index.js +1 -1
  310. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  311. package/dist/i18n/I18nProvider.js +1 -1
  312. package/dist/i18n/createFormatter.js +1 -1
  313. package/dist/i18n/index.js +1 -1
  314. package/dist/i18n/instance.js +1 -1
  315. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  316. package/dist/i18n/locales/en-US/uikit.js +1 -1
  317. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  318. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  319. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  320. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  321. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  322. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  323. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  324. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  325. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  326. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  327. package/dist/i18n/locales.js +1 -1
  328. package/dist/i18n/useFormatter.js +1 -1
  329. package/dist/i18n/useI18n.js +1 -1
  330. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  331. package/dist/icons/AdjustmentsIcon.js +1 -1
  332. package/dist/icons/AiIcon.js +1 -1
  333. package/dist/icons/AreaChartIcon.js +1 -1
  334. package/dist/icons/BackwardIcon.js +1 -1
  335. package/dist/icons/BarChartIcon.js +1 -1
  336. package/dist/icons/BellFilledIcon.js +1 -1
  337. package/dist/icons/BellIcon.js +1 -1
  338. package/dist/icons/BooleanIcon.js +1 -1
  339. package/dist/icons/CalendarEditIcon.js +1 -1
  340. package/dist/icons/CalendarIcon.js +1 -1
  341. package/dist/icons/CaretDownIcon.js +1 -1
  342. package/dist/icons/CaretUpIcon.js +1 -1
  343. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  344. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  345. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  346. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  347. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  348. package/dist/icons/ChartBarLineIcon.js +1 -1
  349. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  350. package/dist/icons/ChartBarStackedIcon.js +1 -1
  351. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  352. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  353. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  354. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  355. package/dist/icons/ChartBubbleIcon.js +1 -1
  356. package/dist/icons/ChartDonut2Icon.js +1 -1
  357. package/dist/icons/ChartFunnelIcon.js +1 -1
  358. package/dist/icons/ChartHeatmapIcon.js +1 -1
  359. package/dist/icons/ChartKPIIcon.js +1 -1
  360. package/dist/icons/ChartPie2Icon.js +1 -1
  361. package/dist/icons/ChartScatterIcon.js +1 -1
  362. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  363. package/dist/icons/CheckCircleIcon.js +1 -1
  364. package/dist/icons/CheckIcon.js +1 -1
  365. package/dist/icons/CircleFilledIcon.js +1 -1
  366. package/dist/icons/ClearIcon.js +1 -1
  367. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  368. package/dist/icons/CloseCircleIcon.js +1 -1
  369. package/dist/icons/CloseIcon.js +1 -1
  370. package/dist/icons/CodeIcon.js +1 -1
  371. package/dist/icons/ColumnTotalIcon.js +1 -1
  372. package/dist/icons/CopyIcon.js +1 -1
  373. package/dist/icons/CountIcon.js +1 -1
  374. package/dist/icons/CubeIcon.js +1 -1
  375. package/dist/icons/CubePauseIcon.js +1 -1
  376. package/dist/icons/CubePlayIcon.js +1 -1
  377. package/dist/icons/CurrencyDollarIcon.js +1 -1
  378. package/dist/icons/DangerIcon.js +1 -1
  379. package/dist/icons/DashboardIcon.js +1 -1
  380. package/dist/icons/DatabaseIcon.js +1 -1
  381. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  382. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  383. package/dist/icons/DirectionIcon.js +1 -1
  384. package/dist/icons/DonutIcon.js +1 -1
  385. package/dist/icons/DownIcon.js +1 -1
  386. package/dist/icons/EditIcon.js +1 -1
  387. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  388. package/dist/icons/ExclamationCircleIcon.js +1 -1
  389. package/dist/icons/ExclamationIcon.js +1 -1
  390. package/dist/icons/EyeIcon.js +1 -1
  391. package/dist/icons/EyeInvisibleIcon.js +1 -1
  392. package/dist/icons/FilterIcon.js +1 -1
  393. package/dist/icons/FolderFilledIcon.js +1 -1
  394. package/dist/icons/FolderIcon.js +1 -1
  395. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  396. package/dist/icons/FolderOpenIcon.js +1 -1
  397. package/dist/icons/ForwardIcon.js +1 -1
  398. package/dist/icons/GripVerticalIcon.js +1 -1
  399. package/dist/icons/HierarchyIcon.js +1 -1
  400. package/dist/icons/HierarchyOpenIcon.js +1 -1
  401. package/dist/icons/Icon.js +1 -1
  402. package/dist/icons/InfoCircleIcon.js +1 -1
  403. package/dist/icons/InfoIcon.js +1 -1
  404. package/dist/icons/KeyIcon.js +1 -1
  405. package/dist/icons/LeftIcon.js +1 -1
  406. package/dist/icons/LineChartIcon.js +1 -1
  407. package/dist/icons/LoadingIcon.js +1 -1
  408. package/dist/icons/LockFilledIcon.js +1 -1
  409. package/dist/icons/LockIcon.js +1 -1
  410. package/dist/icons/MoreIcon.js +1 -1
  411. package/dist/icons/NotAllowedIcon.js +1 -1
  412. package/dist/icons/Number123Icon.js +1 -1
  413. package/dist/icons/NumberIcon.js +1 -1
  414. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  415. package/dist/icons/PauseCircleIcon.js +1 -1
  416. package/dist/icons/PauseIcon.js +1 -1
  417. package/dist/icons/PercentageIcon.js +1 -1
  418. package/dist/icons/PieChartIcon.js +1 -1
  419. package/dist/icons/PipetteIcon.js +1 -1
  420. package/dist/icons/PlayCircleIcon.js +1 -1
  421. package/dist/icons/PlayIcon.js +1 -1
  422. package/dist/icons/PlusIcon.js +1 -1
  423. package/dist/icons/ProgressBarIcon.js +1 -1
  424. package/dist/icons/ReloadIcon.js +1 -1
  425. package/dist/icons/ReportIcon.js +1 -1
  426. package/dist/icons/ReturnIcon.js +1 -1
  427. package/dist/icons/RightIcon.js +1 -1
  428. package/dist/icons/RowTotalsIcon.js +1 -1
  429. package/dist/icons/SchemeIcon.js +1 -1
  430. package/dist/icons/SearchIcon.js +1 -1
  431. package/dist/icons/SemanticQueryIcon.js +1 -1
  432. package/dist/icons/SettingsIcon.js +1 -1
  433. package/dist/icons/ShieldFilledIcon.js +1 -1
  434. package/dist/icons/ShieldIcon.js +1 -1
  435. package/dist/icons/SlashIcon.js +1 -1
  436. package/dist/icons/SparklesIcon.js +1 -1
  437. package/dist/icons/SqlIcon.js +1 -1
  438. package/dist/icons/StatsIcon.js +1 -1
  439. package/dist/icons/StopIcon.js +1 -1
  440. package/dist/icons/StringIcon.js +1 -1
  441. package/dist/icons/SubtotalsIcon.js +1 -1
  442. package/dist/icons/SwitchIcon.js +1 -1
  443. package/dist/icons/TableIcon.js +1 -1
  444. package/dist/icons/ThumbsDownIcon.js +1 -1
  445. package/dist/icons/ThumbsUpIcon.js +1 -1
  446. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  447. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  448. package/dist/icons/ThunderboltIcon.js +1 -1
  449. package/dist/icons/TimeIcon.js +1 -1
  450. package/dist/icons/TrashIcon.js +1 -1
  451. package/dist/icons/UnlockIcon.js +1 -1
  452. package/dist/icons/UpIcon.js +1 -1
  453. package/dist/icons/UserGroupIcon.js +1 -1
  454. package/dist/icons/UserIcon.js +1 -1
  455. package/dist/icons/UserLockIcon.js +1 -1
  456. package/dist/icons/ViewIcon.js +1 -1
  457. package/dist/icons/WarningFilledIcon.js +1 -1
  458. package/dist/icons/WarningIcon.js +1 -1
  459. package/dist/icons/wrap-icon.js +1 -1
  460. package/dist/index.js +1 -1
  461. package/dist/provider.js +1 -1
  462. package/dist/providers/TrackingProvider.js +1 -1
  463. package/dist/providers/navigationAdapter.default.js +1 -1
  464. package/dist/tokens/base.js +1 -1
  465. package/dist/tokens/colors.js +1 -1
  466. package/dist/tokens/index.js +1 -1
  467. package/dist/tokens/layout.js +1 -1
  468. package/dist/tokens/lazy-styles.js +1 -1
  469. package/dist/tokens/palette-config.js +1 -1
  470. package/dist/tokens/palette.js +1 -1
  471. package/dist/tokens/shadows.js +1 -1
  472. package/dist/tokens/sizes.js +1 -1
  473. package/dist/tokens/spacing.js +1 -1
  474. package/dist/tokens/typography.js +1 -1
  475. package/dist/utils/ResizeSensor.js +1 -1
  476. package/dist/utils/is-dev-env.js +1 -1
  477. package/dist/utils/modules.js +1 -1
  478. package/dist/utils/promise.js +1 -1
  479. package/dist/utils/raf.js +1 -1
  480. package/dist/utils/random.js +1 -1
  481. package/dist/utils/range.js +1 -1
  482. package/dist/utils/react/RenderCache.js +1 -1
  483. package/dist/utils/react/Slots.js +1 -1
  484. package/dist/utils/react/chain.js +1 -1
  485. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  486. package/dist/utils/react/index.js +1 -1
  487. package/dist/utils/react/interactions.js +1 -1
  488. package/dist/utils/react/isTextOnly.js +1 -1
  489. package/dist/utils/react/mapProps.js +1 -1
  490. package/dist/utils/react/mergeProps.js +1 -1
  491. package/dist/utils/react/nullableValue.js +1 -1
  492. package/dist/utils/react/resolveIcon.js +1 -1
  493. package/dist/utils/react/sharedStore.js +1 -1
  494. package/dist/utils/react/useBufferedValue.js +1 -1
  495. package/dist/utils/react/useCombinedRefs.js +1 -1
  496. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  497. package/dist/utils/react/useEventBus.js +1 -1
  498. package/dist/utils/react/useId.js +1 -1
  499. package/dist/utils/react/useIsDarwin.js +1 -1
  500. package/dist/utils/react/useKeySymbols.js +1 -1
  501. package/dist/utils/react/useLayoutEffect.js +1 -1
  502. package/dist/utils/react/useLocalStorage.js +1 -1
  503. package/dist/utils/react/useMergeStyles.js +1 -1
  504. package/dist/utils/react/usePopoverSync.js +1 -1
  505. package/dist/utils/react/useQaProps.js +1 -1
  506. package/dist/utils/react/useViewportSize.js +1 -1
  507. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  508. package/dist/utils/selection.js +1 -1
  509. package/dist/utils/styles.js +1 -1
  510. package/dist/utils/tree.js +1 -1
  511. package/dist/utils/warnings.js +1 -1
  512. package/dist/version.js +2 -2
  513. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { Prism as RendererPrism } from "prism-react-renderer";
3
3
 
4
4
  //#region src/components/content/PrismCode/prismSetup.tsx
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { _PrismCode } from "../PrismCode/PrismCode.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
  import { diffLines } from "diff";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeProps } from "../../../utils/react/mergeProps.js";
4
4
  import { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { Space } from "../../layout/Space.js";
3
3
  import { Grid } from "../../layout/Grid.js";
4
4
  import { Flow } from "../../layout/Flow.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { _Item } from "../Item/Item.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { CloseIcon } from "../../../icons/CloseIcon.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useSlotProps } from "../../utils/react/Slots.js";
4
4
  import { BASE_STYLES, COLOR_STYLES, TEXT_STYLES, filterBaseProps, tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { TEXT_PROP_MAP, _Text } from "../Text.js";
4
4
  import { highlightText } from "../highlightText.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useSlotProps } from "../../utils/react/Slots.js";
4
4
  import { TEXT_PROP_MAP } from "./Text.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { _Item } from "../Item/Item.js";
3
3
  import { Action } from "../../actions/Action/Action.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  //#region src/components/content/Tree/tree-index.ts
3
3
  function buildTreeIndex(treeData) {
4
4
  const byKey = /* @__PURE__ */ new Map();
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useMemo, useState } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useRef, useState } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { _Text } from "./Text.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { TooltipProvider } from "../overlays/Tooltip/TooltipProvider.js";
3
3
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,14 +1,15 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
5
5
  import { useI18n } from "../../../i18n/useI18n.js";
6
6
  import { clampPage, getPageInfo } from "../../navigation/Pagination/use-pagination.js";
7
7
  import { ItemTableFooter } from "../ItemTable/ItemTableFooter.js";
8
+ import { selectionRowKey } from "../TableBase/types.js";
9
+ import { useCellSelection } from "../TableBase/use-cell-selection.js";
8
10
  import { useTableColumns } from "../TableBase/use-table-columns.js";
9
11
  import { ROW_NUMBER_COLUMN_KEY } from "../TableBase/use-table-selection.js";
10
12
  import { TableView } from "../TableBase/TableView.js";
11
- import { useCellSelection } from "../TableBase/use-cell-selection.js";
12
13
  import { useContainerWidth } from "../TableBase/use-container-width.js";
13
14
  import { useTableSorts } from "../TableBase/use-table-sorts.js";
14
15
  import { useTableStorage } from "../TableBase/use-table-storage.js";
@@ -131,9 +132,9 @@ function DataTable(props, ref) {
131
132
  pinnedBottomRows
132
133
  ]);
133
134
  const selectionRowKeys = useMemo(() => [
134
- ...(pinnedTopRows ?? []).map(resolvedGetRowKey),
135
+ ...(pinnedTopRows ?? []).map((row, index) => selectionRowKey("pinnedTop", resolvedGetRowKey(row, index))),
135
136
  ...visibleRows.map(resolvedGetRowKey),
136
- ...(pinnedBottomRows ?? []).map(resolvedGetRowKey)
137
+ ...(pinnedBottomRows ?? []).map((row, index) => selectionRowKey("pinnedBottom", resolvedGetRowKey(row, index)))
137
138
  ], [
138
139
  pinnedTopRows,
139
140
  visibleRows,
@@ -1 +1 @@
1
- {"version":3,"file":"DataTable.js","names":[],"sources":["../../../../src/components/data/DataTable/DataTable.tsx"],"sourcesContent":["import { useControlledState } from '@react-stately/utils';\nimport { CONTAINER_STYLES } from '@tenphi/tasty';\nimport { forwardRef, useMemo, useRef, useState } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\nimport { useCombinedRefs } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { clampPage, getPageInfo } from '../../navigation/Pagination';\nimport { ItemTableFooter } from '../ItemTable/ItemTableFooter';\nimport { TableView } from '../TableBase/TableView';\nimport { useCellSelection } from '../TableBase/use-cell-selection';\nimport { useContainerWidth } from '../TableBase/use-container-width';\nimport { useTableColumns } from '../TableBase/use-table-columns';\nimport { ROW_NUMBER_COLUMN_KEY } from '../TableBase/use-table-selection';\nimport { useTableSorts } from '../TableBase/use-table-sorts';\nimport { useTableStorage } from '../TableBase/use-table-storage';\n\nimport type { Key } from '@react-types/shared';\nimport type { ForwardedRef, ReactElement } from 'react';\nimport type { CubeTableRowSection } from '../TableBase/types';\nimport type { CubeDataTableColumn, CubeDataTableProps } from './types';\n\n/** Wide enough for five digits at the dense default. */\nconst ROW_NUMBER_WIDTH = 56;\n\nconst EMPTY_WIDTHS: Record<string, number> = {};\n\nfunction defaultGetRowKey<T>(rowKey: string) {\n return (row: T, index: number): Key => {\n const value = (row as any)?.[rowKey];\n\n return value == null ? index : (value as Key);\n };\n}\n\n/**\n * A grid for query results.\n *\n * The same engine as `ItemTable` — one `TableView`, one column layout, one\n * value pipeline — with the defaults an analytical grid wants rather than a\n * list's: denser type, banded rows, resizable columns, multi-column sort, and\n * rows pinned for totals.\n *\n * It knows nothing about Cube. Measures, dimensions, pivots and drill-downs\n * reach it as ordinary columns, `render` output and `column.header.menu`\n * content, which is what keeps the ~34 kB of Cloud's column-header menu in\n * Cloud.\n */\nfunction DataTable<T = any>(\n props: CubeDataTableProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n data,\n columns,\n rowKey = 'id',\n getRowKey,\n pinnedTopRows,\n pinnedBottomRows,\n isLoading = false,\n loadingIndicator = 'overlay',\n skeletonRowCount,\n error,\n emptyLabel,\n noResultsLabel,\n isFiltered,\n shape = 'plain',\n // Denser than `ItemTable`'s `medium`: a result grid is read as a block, and\n // more rows on screen is the point of it.\n size = 'small',\n rowHeight,\n headerHeight,\n isStriped = true,\n isHeaderHidden,\n isHeaderSticky,\n showRowNumbers = false,\n sortMode,\n sorts: sortsProp,\n defaultSorts,\n onSortsChange,\n paginationMode = 'client',\n page: pageProp,\n defaultPage,\n onPageChange,\n pageSize: pageSizeProp,\n defaultPageSize = 100,\n onPageSizeChange,\n pageSizeOptions,\n total: totalProp,\n totalPages,\n hasNextPage,\n summary = true,\n autoHidePagination = true,\n footerStart,\n footerCenter,\n footerEnd,\n cellSelectionMode = 'range',\n isCellSelectable,\n selectedCellRange,\n defaultSelectedCellRange,\n onCellRangeChange,\n isRowMoveAnimated,\n isResizable = true,\n columnWidths: columnWidthsProp,\n defaultColumnWidths,\n onColumnResize,\n isVirtualized,\n virtualizeThreshold,\n overscan,\n getRowProps,\n storageKey,\n styles,\n headerStyles,\n headerCellStyles,\n bodyStyles,\n rowStyles,\n cellStyles,\n footerStyles,\n ariaLabel,\n qa,\n mods,\n ...rest\n } = props;\n\n const localRef = useRef<HTMLDivElement>(null);\n const rootRef = useCombinedRefs(ref, localRef);\n const [scrollerEl, setScrollerEl] = useState<HTMLElement | null>(null);\n const containerWidth = useContainerWidth(scrollerEl);\n\n const storage = useTableStorage(storageKey);\n\n /**\n * `dataType` is presentational, so it is folded into the column here rather\n * than reaching the renderer: `number` right-aligns and takes tabular figures\n * so digits line up down the column.\n */\n const resolvedColumns = useMemo(\n () =>\n columns.map((column) => {\n const isNumeric = column.dataType === 'number';\n\n return {\n ...column,\n align: column.align ?? (isNumeric ? 'end' : 'start'),\n cellStyles: isNumeric\n ? {\n fontVariantNumeric: 'tabular-nums',\n ...(typeof column.cellStyles === 'object'\n ? column.cellStyles\n : null),\n }\n : column.cellStyles,\n } as CubeDataTableColumn<T>;\n }),\n [columns],\n );\n\n const {\n sorts,\n sortedRows,\n toggleSort,\n mode: resolvedSortMode,\n } = useTableSorts<T>({\n columns: resolvedColumns,\n rows: data,\n mode: sortMode,\n sorts: sortsProp,\n defaultSorts,\n onSortsChange,\n });\n\n const [pageSize, setPageSizeState] = useControlledState<number>(\n pageSizeProp as number,\n (pageSizeProp === undefined && storage.has('pageSize')\n ? storage.initial.pageSize ?? defaultPageSize\n : defaultPageSize) as number,\n onPageSizeChange as (value: number) => void,\n );\n const [page, setPageState] = useControlledState<number>(\n pageProp as number,\n defaultPage ?? 1,\n onPageChange as (value: number) => void,\n );\n\n const isPaginated = paginationMode !== 'off';\n const isServerPaginated = paginationMode === 'server';\n const total = isServerPaginated ? totalProp ?? 0 : sortedRows.length;\n\n const pageInfo = getPageInfo({\n page,\n pageSize,\n total,\n totalPages: isServerPaginated ? totalPages : undefined,\n });\n\n const setPage = useEvent((next: number) =>\n setPageState(clampPage(next, pageInfo.totalPages)),\n );\n const setPageSize = useEvent((next: number) => {\n setPageSizeState(next);\n setPageState(1);\n\n if (pageSizeProp === undefined) storage.write({ pageSize: next });\n });\n\n const visibleRows =\n paginationMode === 'client'\n ? sortedRows.slice(\n (pageInfo.page - 1) * pageSize,\n pageInfo.page * pageSize,\n )\n : sortedRows;\n\n const [ownColumnWidths, setOwnColumnWidths] = useState<\n Record<string, number>\n >(\n () =>\n (columnWidthsProp === undefined && storage.has('columnWidths')\n ? storage.initial.columnWidths ?? defaultColumnWidths\n : defaultColumnWidths) ?? EMPTY_WIDTHS,\n );\n const [draftColumnWidths, setDraftColumnWidths] = useState<Record<\n string,\n number\n > | null>(null);\n const draftRef = useRef<Record<string, number> | null>(null);\n\n const baseColumnWidths = columnWidthsProp ?? ownColumnWidths;\n const columnWidths = draftColumnWidths ?? baseColumnWidths;\n\n const handleColumnResize = useEvent((key: string, width: number) => {\n draftRef.current = {\n ...(draftRef.current ?? baseColumnWidths),\n [key]: Math.round(width),\n };\n setDraftColumnWidths(draftRef.current);\n });\n\n const handleColumnResizeEnd = useEvent((key: string) => {\n const next = draftRef.current ?? baseColumnWidths;\n\n if (columnWidthsProp === undefined) {\n setOwnColumnWidths(next);\n storage.write({ columnWidths: next });\n }\n\n onColumnResize?.(key, next[key], next);\n draftRef.current = null;\n setDraftColumnWidths(null);\n });\n\n const leadingColumns = useMemo(\n () =>\n showRowNumbers\n ? [{ key: ROW_NUMBER_COLUMN_KEY, width: ROW_NUMBER_WIDTH }]\n : undefined,\n [showRowNumbers],\n );\n\n const layout = useTableColumns<T>({\n columns: resolvedColumns,\n containerWidth,\n columnWidths,\n leadingColumns,\n });\n\n const { t } = useI18n();\n\n const resolvedGetRowKey = useMemo(\n () => getRowKey ?? defaultGetRowKey<T>(rowKey),\n [getRowKey, rowKey],\n );\n\n // Every row a range can reach, in the order they appear on screen. Pinned rows\n // are in it: a total is a figure like any other, and having to copy it\n // separately from the column it sums is the wrong trade.\n //\n // The keys are built here rather than inside the hook so they cannot disagree\n // with the ones the renderer stamps — a pinned row is keyed by its own index\n // within its group, exactly as `renderPinnedRow` keys it.\n const selectionRows = useMemo(\n () => [\n ...(pinnedTopRows ?? []),\n ...visibleRows,\n ...(pinnedBottomRows ?? []),\n ],\n [pinnedTopRows, visibleRows, pinnedBottomRows],\n );\n const selectionRowKeys = useMemo(\n () => [\n ...(pinnedTopRows ?? []).map(resolvedGetRowKey),\n ...visibleRows.map(resolvedGetRowKey),\n ...(pinnedBottomRows ?? []).map(resolvedGetRowKey),\n ],\n [pinnedTopRows, visibleRows, pinnedBottomRows, resolvedGetRowKey],\n );\n\n // The hook works in one flat row order; the section a row belongs to is a\n // property of where it sits in that order, so it is resolved here rather than\n // asking the consumer to track it.\n const resolveCellSelectable = useEvent(\n (row: T, rowKey: Key, columnKey: string) => {\n if (!isCellSelectable) return true;\n\n const index = selectionRowKeys.indexOf(rowKey);\n const topCount = pinnedTopRows?.length ?? 0;\n const section: CubeTableRowSection =\n index < topCount\n ? 'pinnedTop'\n : index < topCount + visibleRows.length\n ? 'body'\n : 'pinnedBottom';\n\n return isCellSelectable({ row, rowKey, columnKey, section });\n },\n );\n\n const cellSelection = useCellSelection<T>({\n mode: cellSelectionMode,\n columns: layout.columns,\n rows: selectionRows,\n rowKeys: selectionRowKeys,\n isCellSelectable: isCellSelectable ? resolveCellSelectable : undefined,\n range: selectedCellRange,\n defaultRange: defaultSelectedCellRange,\n onRangeChange: onCellRangeChange,\n });\n\n // Same as `ItemTable`: style props (`height`, `maxHeight`, `margin`, …) land\n // on the root frame. `height` is the one that matters — there is no\n // page-scroll mode, so bounding the grid is what turns the body into a\n // scroller, pins the header, and lets virtualization engage at all.\n const rootStyles = { ...extractStyles(props, CONTAINER_STYLES), ...styles };\n\n const smallestPageSize = pageSizeOptions?.length\n ? Math.min(...pageSizeOptions)\n : pageSize;\n\n const showPagination =\n isPaginated &&\n !(\n autoHidePagination &&\n !hasNextPage &&\n pageInfo.totalPages <= 1 &&\n total <= smallestPageSize\n );\n\n const hasFooter =\n showPagination ||\n footerStart != null ||\n footerCenter != null ||\n footerEnd != null;\n\n return (\n <TableView<T>\n {...rest}\n rootRef={rootRef}\n qa={qa || 'DataTable'}\n rows={visibleRows}\n pinnedTopRows={pinnedTopRows}\n pinnedBottomRows={pinnedBottomRows}\n // Continuous across pages: row 101 is row 101, not row 1 of page two.\n //\n // Server mode counts too — the page and its size are known there just the\n // same, and `rows` is that page. Only `'off'` starts at 1, because then\n // there is no page to be on.\n rowNumberOffset={\n paginationMode === 'off' ? 0 : (pageInfo.page - 1) * pageSize\n }\n // The same offset drives `aria-rowindex`, which is document-absolute by\n // contract — a screen reader on page 3 should hear \"row 51 of 240\", not\n // \"row 1 of 25\".\n rowIndexOffset={\n paginationMode === 'off' ? 0 : (pageInfo.page - 1) * pageSize\n }\n totalRowCount={total}\n layout={layout}\n // Always on, unlike `ItemTable`. A result grid is read down a column, and\n // once the values are wide and right-aligned the rule is what keeps a\n // figure attached to its column — which is why Cloud's ag-grid theme sets\n // `columnBorder` for `DataTable` and not for the list grids.\n hasColumnDividers\n cellSelection={cellSelection}\n getRowKey={resolvedGetRowKey}\n onScrollerRef={setScrollerEl}\n isLoading={isLoading}\n loadingIndicator={loadingIndicator}\n skeletonRowCount={skeletonRowCount}\n error={error}\n // Same localized fallbacks as `ItemTable`: a grid that has finished\n // loading and shows an unexplained blank rectangle reads as broken.\n emptyLabel={emptyLabel ?? t('itemTable.noItems', 'No items')}\n noResultsLabel={\n noResultsLabel ?? t('itemTable.noResults', 'No results found')\n }\n isFiltered={isFiltered}\n shape={shape}\n size={size}\n rowHeight={rowHeight}\n headerHeight={headerHeight}\n isStriped={isStriped}\n isRowMoveAnimated={isRowMoveAnimated}\n isHeaderHidden={isHeaderHidden}\n isHeaderSticky={isHeaderSticky}\n // The header shows the column name at body size — a result grid has no\n // room for the uppercase caption a list header uses.\n // `t4` throughout: a result grid is read as a block, and one step down\n // from the list preset fits noticeably more on screen without losing\n // legibility. The header takes the medium weight of the same step.\n contentPreset=\"t4\"\n headerPreset=\"t4m\"\n sortMode={resolvedSortMode}\n sorts={sorts}\n onColumnSort={toggleSort}\n isVirtualized={isVirtualized}\n virtualizeThreshold={virtualizeThreshold}\n overscan={overscan}\n isResizable={isResizable}\n onColumnResize={handleColumnResize}\n onColumnResizeEnd={handleColumnResizeEnd}\n getRowProps={getRowProps}\n ariaLabel={ariaLabel}\n styles={rootStyles}\n headerStyles={headerStyles}\n headerCellStyles={headerCellStyles}\n bodyStyles={bodyStyles}\n rowStyles={rowStyles}\n cellStyles={cellStyles}\n mods={mods}\n footer={\n hasFooter ? (\n <ItemTableFooter\n start={footerStart}\n center={footerCenter}\n end={footerEnd}\n styles={footerStyles}\n pagination={\n showPagination\n ? {\n page: pageInfo.page,\n pageSize,\n total,\n totalPages: pageInfo.totalPages,\n pageSizeOptions,\n summary,\n hasNextPage,\n onPageChange: setPage,\n onPageSizeChange: setPageSize,\n }\n : undefined\n }\n />\n ) : null\n }\n />\n );\n}\n\nconst _DataTable = forwardRef(DataTable) as unknown as (<T = any>(\n props: CubeDataTableProps<T> & { ref?: ForwardedRef<HTMLDivElement> },\n) => ReactElement) & { displayName?: string };\n\n_DataTable.displayName = 'DataTable';\n\nexport { _DataTable as DataTable };\n"],"mappings":"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"}
1
+ {"version":3,"file":"DataTable.js","names":[],"sources":["../../../../src/components/data/DataTable/DataTable.tsx"],"sourcesContent":["import { useControlledState } from '@react-stately/utils';\nimport { CONTAINER_STYLES } from '@tenphi/tasty';\nimport { forwardRef, useMemo, useRef, useState } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\nimport { useCombinedRefs } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\nimport { clampPage, getPageInfo } from '../../navigation/Pagination';\nimport { ItemTableFooter } from '../ItemTable/ItemTableFooter';\nimport { TableView } from '../TableBase/TableView';\nimport { selectionRowKey } from '../TableBase/types';\nimport { useCellSelection } from '../TableBase/use-cell-selection';\nimport { useContainerWidth } from '../TableBase/use-container-width';\nimport { useTableColumns } from '../TableBase/use-table-columns';\nimport { ROW_NUMBER_COLUMN_KEY } from '../TableBase/use-table-selection';\nimport { useTableSorts } from '../TableBase/use-table-sorts';\nimport { useTableStorage } from '../TableBase/use-table-storage';\n\nimport type { Key } from '@react-types/shared';\nimport type { ForwardedRef, ReactElement } from 'react';\nimport type { CubeTableRowSection } from '../TableBase/types';\nimport type { CubeDataTableColumn, CubeDataTableProps } from './types';\n\n/** Wide enough for five digits at the dense default. */\nconst ROW_NUMBER_WIDTH = 56;\n\nconst EMPTY_WIDTHS: Record<string, number> = {};\n\nfunction defaultGetRowKey<T>(rowKey: string) {\n return (row: T, index: number): Key => {\n const value = (row as any)?.[rowKey];\n\n return value == null ? index : (value as Key);\n };\n}\n\n/**\n * A grid for query results.\n *\n * The same engine as `ItemTable` — one `TableView`, one column layout, one\n * value pipeline — with the defaults an analytical grid wants rather than a\n * list's: denser type, banded rows, resizable columns, multi-column sort, and\n * rows pinned for totals.\n *\n * It knows nothing about Cube. Measures, dimensions, pivots and drill-downs\n * reach it as ordinary columns, `render` output and `column.header.menu`\n * content, which is what keeps the ~34 kB of Cloud's column-header menu in\n * Cloud.\n */\nfunction DataTable<T = any>(\n props: CubeDataTableProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n) {\n const {\n data,\n columns,\n rowKey = 'id',\n getRowKey,\n pinnedTopRows,\n pinnedBottomRows,\n isLoading = false,\n loadingIndicator = 'overlay',\n skeletonRowCount,\n error,\n emptyLabel,\n noResultsLabel,\n isFiltered,\n shape = 'plain',\n // Denser than `ItemTable`'s `medium`: a result grid is read as a block, and\n // more rows on screen is the point of it.\n size = 'small',\n rowHeight,\n headerHeight,\n isStriped = true,\n isHeaderHidden,\n isHeaderSticky,\n showRowNumbers = false,\n sortMode,\n sorts: sortsProp,\n defaultSorts,\n onSortsChange,\n paginationMode = 'client',\n page: pageProp,\n defaultPage,\n onPageChange,\n pageSize: pageSizeProp,\n defaultPageSize = 100,\n onPageSizeChange,\n pageSizeOptions,\n total: totalProp,\n totalPages,\n hasNextPage,\n summary = true,\n autoHidePagination = true,\n footerStart,\n footerCenter,\n footerEnd,\n cellSelectionMode = 'range',\n isCellSelectable,\n selectedCellRange,\n defaultSelectedCellRange,\n onCellRangeChange,\n isRowMoveAnimated,\n isResizable = true,\n columnWidths: columnWidthsProp,\n defaultColumnWidths,\n onColumnResize,\n isVirtualized,\n virtualizeThreshold,\n overscan,\n getRowProps,\n storageKey,\n styles,\n headerStyles,\n headerCellStyles,\n bodyStyles,\n rowStyles,\n cellStyles,\n footerStyles,\n ariaLabel,\n qa,\n mods,\n ...rest\n } = props;\n\n const localRef = useRef<HTMLDivElement>(null);\n const rootRef = useCombinedRefs(ref, localRef);\n const [scrollerEl, setScrollerEl] = useState<HTMLElement | null>(null);\n const containerWidth = useContainerWidth(scrollerEl);\n\n const storage = useTableStorage(storageKey);\n\n /**\n * `dataType` is presentational, so it is folded into the column here rather\n * than reaching the renderer: `number` right-aligns and takes tabular figures\n * so digits line up down the column.\n */\n const resolvedColumns = useMemo(\n () =>\n columns.map((column) => {\n const isNumeric = column.dataType === 'number';\n\n return {\n ...column,\n align: column.align ?? (isNumeric ? 'end' : 'start'),\n cellStyles: isNumeric\n ? {\n fontVariantNumeric: 'tabular-nums',\n ...(typeof column.cellStyles === 'object'\n ? column.cellStyles\n : null),\n }\n : column.cellStyles,\n } as CubeDataTableColumn<T>;\n }),\n [columns],\n );\n\n const {\n sorts,\n sortedRows,\n toggleSort,\n mode: resolvedSortMode,\n } = useTableSorts<T>({\n columns: resolvedColumns,\n rows: data,\n mode: sortMode,\n sorts: sortsProp,\n defaultSorts,\n onSortsChange,\n });\n\n const [pageSize, setPageSizeState] = useControlledState<number>(\n pageSizeProp as number,\n (pageSizeProp === undefined && storage.has('pageSize')\n ? storage.initial.pageSize ?? defaultPageSize\n : defaultPageSize) as number,\n onPageSizeChange as (value: number) => void,\n );\n const [page, setPageState] = useControlledState<number>(\n pageProp as number,\n defaultPage ?? 1,\n onPageChange as (value: number) => void,\n );\n\n const isPaginated = paginationMode !== 'off';\n const isServerPaginated = paginationMode === 'server';\n const total = isServerPaginated ? totalProp ?? 0 : sortedRows.length;\n\n const pageInfo = getPageInfo({\n page,\n pageSize,\n total,\n totalPages: isServerPaginated ? totalPages : undefined,\n });\n\n const setPage = useEvent((next: number) =>\n setPageState(clampPage(next, pageInfo.totalPages)),\n );\n const setPageSize = useEvent((next: number) => {\n setPageSizeState(next);\n setPageState(1);\n\n if (pageSizeProp === undefined) storage.write({ pageSize: next });\n });\n\n const visibleRows =\n paginationMode === 'client'\n ? sortedRows.slice(\n (pageInfo.page - 1) * pageSize,\n pageInfo.page * pageSize,\n )\n : sortedRows;\n\n const [ownColumnWidths, setOwnColumnWidths] = useState<\n Record<string, number>\n >(\n () =>\n (columnWidthsProp === undefined && storage.has('columnWidths')\n ? storage.initial.columnWidths ?? defaultColumnWidths\n : defaultColumnWidths) ?? EMPTY_WIDTHS,\n );\n const [draftColumnWidths, setDraftColumnWidths] = useState<Record<\n string,\n number\n > | null>(null);\n const draftRef = useRef<Record<string, number> | null>(null);\n\n const baseColumnWidths = columnWidthsProp ?? ownColumnWidths;\n const columnWidths = draftColumnWidths ?? baseColumnWidths;\n\n const handleColumnResize = useEvent((key: string, width: number) => {\n draftRef.current = {\n ...(draftRef.current ?? baseColumnWidths),\n [key]: Math.round(width),\n };\n setDraftColumnWidths(draftRef.current);\n });\n\n const handleColumnResizeEnd = useEvent((key: string) => {\n const next = draftRef.current ?? baseColumnWidths;\n\n if (columnWidthsProp === undefined) {\n setOwnColumnWidths(next);\n storage.write({ columnWidths: next });\n }\n\n onColumnResize?.(key, next[key], next);\n draftRef.current = null;\n setDraftColumnWidths(null);\n });\n\n const leadingColumns = useMemo(\n () =>\n showRowNumbers\n ? [{ key: ROW_NUMBER_COLUMN_KEY, width: ROW_NUMBER_WIDTH }]\n : undefined,\n [showRowNumbers],\n );\n\n const layout = useTableColumns<T>({\n columns: resolvedColumns,\n containerWidth,\n columnWidths,\n leadingColumns,\n });\n\n const { t } = useI18n();\n\n const resolvedGetRowKey = useMemo(\n () => getRowKey ?? defaultGetRowKey<T>(rowKey),\n [getRowKey, rowKey],\n );\n\n // Every row a range can reach, in the order they appear on screen. Pinned rows\n // are in it: a total is a figure like any other, and having to copy it\n // separately from the column it sums is the wrong trade.\n //\n // The keys are built here rather than inside the hook so they cannot disagree\n // with the ones the renderer stamps — a pinned row is keyed by its own index\n // within its group, exactly as `renderPinnedRow` keys it.\n const selectionRows = useMemo(\n () => [\n ...(pinnedTopRows ?? []),\n ...visibleRows,\n ...(pinnedBottomRows ?? []),\n ],\n [pinnedTopRows, visibleRows, pinnedBottomRows],\n );\n const selectionRowKeys = useMemo(\n () => [\n // Section-qualified, matching what the renderer stamps: the same record\n // is routinely pinned at both edges, and one flat key space collapsed the\n // two into whichever came first.\n ...(pinnedTopRows ?? []).map((row, index) =>\n selectionRowKey('pinnedTop', resolvedGetRowKey(row, index)),\n ),\n ...visibleRows.map(resolvedGetRowKey),\n ...(pinnedBottomRows ?? []).map((row, index) =>\n selectionRowKey('pinnedBottom', resolvedGetRowKey(row, index)),\n ),\n ],\n [pinnedTopRows, visibleRows, pinnedBottomRows, resolvedGetRowKey],\n );\n\n // The hook works in one flat row order; the section a row belongs to is a\n // property of where it sits in that order, so it is resolved here rather than\n // asking the consumer to track it.\n const resolveCellSelectable = useEvent(\n (row: T, rowKey: Key, columnKey: string) => {\n if (!isCellSelectable) return true;\n\n const index = selectionRowKeys.indexOf(rowKey);\n const topCount = pinnedTopRows?.length ?? 0;\n const section: CubeTableRowSection =\n index < topCount\n ? 'pinnedTop'\n : index < topCount + visibleRows.length\n ? 'body'\n : 'pinnedBottom';\n\n return isCellSelectable({ row, rowKey, columnKey, section });\n },\n );\n\n const cellSelection = useCellSelection<T>({\n mode: cellSelectionMode,\n columns: layout.columns,\n rows: selectionRows,\n rowKeys: selectionRowKeys,\n isCellSelectable: isCellSelectable ? resolveCellSelectable : undefined,\n range: selectedCellRange,\n defaultRange: defaultSelectedCellRange,\n onRangeChange: onCellRangeChange,\n });\n\n // Same as `ItemTable`: style props (`height`, `maxHeight`, `margin`, …) land\n // on the root frame. `height` is the one that matters — there is no\n // page-scroll mode, so bounding the grid is what turns the body into a\n // scroller, pins the header, and lets virtualization engage at all.\n const rootStyles = { ...extractStyles(props, CONTAINER_STYLES), ...styles };\n\n const smallestPageSize = pageSizeOptions?.length\n ? Math.min(...pageSizeOptions)\n : pageSize;\n\n const showPagination =\n isPaginated &&\n !(\n autoHidePagination &&\n !hasNextPage &&\n pageInfo.totalPages <= 1 &&\n total <= smallestPageSize\n );\n\n const hasFooter =\n showPagination ||\n footerStart != null ||\n footerCenter != null ||\n footerEnd != null;\n\n return (\n <TableView<T>\n {...rest}\n rootRef={rootRef}\n qa={qa || 'DataTable'}\n rows={visibleRows}\n pinnedTopRows={pinnedTopRows}\n pinnedBottomRows={pinnedBottomRows}\n // Continuous across pages: row 101 is row 101, not row 1 of page two.\n //\n // Server mode counts too — the page and its size are known there just the\n // same, and `rows` is that page. Only `'off'` starts at 1, because then\n // there is no page to be on.\n rowNumberOffset={\n paginationMode === 'off' ? 0 : (pageInfo.page - 1) * pageSize\n }\n // The same offset drives `aria-rowindex`, which is document-absolute by\n // contract — a screen reader on page 3 should hear \"row 51 of 240\", not\n // \"row 1 of 25\".\n rowIndexOffset={\n paginationMode === 'off' ? 0 : (pageInfo.page - 1) * pageSize\n }\n totalRowCount={total}\n layout={layout}\n // Always on, unlike `ItemTable`. A result grid is read down a column, and\n // once the values are wide and right-aligned the rule is what keeps a\n // figure attached to its column — which is why Cloud's ag-grid theme sets\n // `columnBorder` for `DataTable` and not for the list grids.\n hasColumnDividers\n cellSelection={cellSelection}\n getRowKey={resolvedGetRowKey}\n onScrollerRef={setScrollerEl}\n isLoading={isLoading}\n loadingIndicator={loadingIndicator}\n skeletonRowCount={skeletonRowCount}\n error={error}\n // Same localized fallbacks as `ItemTable`: a grid that has finished\n // loading and shows an unexplained blank rectangle reads as broken.\n emptyLabel={emptyLabel ?? t('itemTable.noItems', 'No items')}\n noResultsLabel={\n noResultsLabel ?? t('itemTable.noResults', 'No results found')\n }\n isFiltered={isFiltered}\n shape={shape}\n size={size}\n rowHeight={rowHeight}\n headerHeight={headerHeight}\n isStriped={isStriped}\n isRowMoveAnimated={isRowMoveAnimated}\n isHeaderHidden={isHeaderHidden}\n isHeaderSticky={isHeaderSticky}\n // The header shows the column name at body size — a result grid has no\n // room for the uppercase caption a list header uses.\n // `t4` throughout: a result grid is read as a block, and one step down\n // from the list preset fits noticeably more on screen without losing\n // legibility. The header takes the medium weight of the same step.\n contentPreset=\"t4\"\n headerPreset=\"t4m\"\n sortMode={resolvedSortMode}\n sorts={sorts}\n onColumnSort={toggleSort}\n isVirtualized={isVirtualized}\n virtualizeThreshold={virtualizeThreshold}\n overscan={overscan}\n isResizable={isResizable}\n onColumnResize={handleColumnResize}\n onColumnResizeEnd={handleColumnResizeEnd}\n getRowProps={getRowProps}\n ariaLabel={ariaLabel}\n styles={rootStyles}\n headerStyles={headerStyles}\n headerCellStyles={headerCellStyles}\n bodyStyles={bodyStyles}\n rowStyles={rowStyles}\n cellStyles={cellStyles}\n mods={mods}\n footer={\n hasFooter ? (\n <ItemTableFooter\n start={footerStart}\n center={footerCenter}\n end={footerEnd}\n styles={footerStyles}\n pagination={\n showPagination\n ? {\n page: pageInfo.page,\n pageSize,\n total,\n totalPages: pageInfo.totalPages,\n pageSizeOptions,\n summary,\n hasNextPage,\n onPageChange: setPage,\n onPageSizeChange: setPageSize,\n }\n : undefined\n }\n />\n ) : null\n }\n />\n );\n}\n\nconst _DataTable = forwardRef(DataTable) as unknown as (<T = any>(\n props: CubeDataTableProps<T> & { ref?: ForwardedRef<HTMLDivElement> },\n) => ReactElement) & { displayName?: string };\n\n_DataTable.displayName = 'DataTable';\n\nexport { _DataTable as DataTable };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { _Text } from "../../content/Text.js";
4
4
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { _Text } from "../../content/Text.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { _Pagination } from "../../navigation/Pagination/Pagination.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { useI18n } from "../../../i18n/useI18n.js";
3
3
  import { ReloadIcon } from "../../../icons/ReloadIcon.js";
4
4
  import { Button } from "../../actions/index.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { useRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  //#region src/components/data/TableBase/RowCollection.ts
3
3
  /**
4
4
  * A `Collection<Node<T>>` over a plain row array.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { useRef } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-6334c8a | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-b27ca71 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
4
4
  import { TextItem } from "../../content/TextItem/TextItem.js";
@@ -18,6 +18,8 @@ import { ColumnResizer } from "./ColumnResizer.js";
18
18
  import { ROW_MENU_COLUMN_KEY, isMenuEmpty, normalizeMenuAction } from "./row-menu.js";
19
19
  import { TableElement, TableHeaderItem } from "./styled.js";
20
20
  import { TableRow, TableRowDropIndicator } from "./TableRow.js";
21
+ import { selectionRowKey } from "./types.js";
22
+ import { toTsv } from "./use-cell-selection.js";
21
23
  import { useRowMoveAnimation } from "./use-row-move-animation.js";
22
24
  import { useScrollability } from "./use-scrollability.js";
23
25
  import { getColumnText, getColumnValue } from "./use-table-columns.js";
@@ -35,8 +37,8 @@ import { useVirtualizer } from "@tanstack/react-virtual";
35
37
  * of every field; the HTML flavour is what makes a value that looks like a date
36
38
  * stay the text it was on screen.
37
39
  */
38
- function toClipboardHtml(tsv) {
39
- return `<table>${tsv.split("\n").map((line) => `<tr>${line.split(" ").map((cell) => `<td>${escapeHtml(cell)}</td>`).join("")}</tr>`).join("")}</table>`;
40
+ function toClipboardHtml(matrix) {
41
+ return `<table>${matrix.map((row) => `<tr>${row.map((cell) => `<td>${escapeHtml(cell)}</td>`).join("")}</tr>`).join("")}</table>`;
40
42
  }
41
43
  function escapeHtml(value) {
42
44
  return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
@@ -131,21 +133,6 @@ function TableView(props) {
131
133
  rowHeight,
132
134
  headerHeight
133
135
  ]);
134
- if (columnCount === 0 && isLoading) return /* @__PURE__ */ jsxs(TableElement, {
135
- ref: rootRef,
136
- qa: qa || "Table",
137
- styles: mergedStyles,
138
- mods: {
139
- size,
140
- shape,
141
- ...mods
142
- },
143
- children: [toolbar, /* @__PURE__ */ jsx("div", {
144
- "data-element": "Scroller",
145
- ref: handleScrollerRef,
146
- children: /* @__PURE__ */ jsx(Skeleton, { layout: "table" })
147
- })]
148
- });
149
136
  /**
150
137
  * Whether a cell is inside the current range.
151
138
  *
@@ -447,6 +434,7 @@ function TableView(props) {
447
434
  }, column.key);
448
435
  }
449
436
  function renderCell(column, row, rowIndex, rowKey, isLastRow, pinnedEdge) {
437
+ const rangeKey = selectionRowKey(sectionOf(pinnedEdge), rowKey);
450
438
  if (column.key === SELECTION_COLUMN_KEY) return renderSelectionCell(column, row, rowIndex, rowKey, isLastRow, pinnedEdge);
451
439
  if (column.key === ROW_NUMBER_COLUMN_KEY) return /* @__PURE__ */ jsx("td", {
452
440
  "data-element": "Cell",
@@ -490,9 +478,9 @@ function TableView(props) {
490
478
  "data-pinned": pinnedEdge,
491
479
  "data-last-column": lastColumnFlag(column),
492
480
  "data-corner": bottomCornerFlag(column, rowIndex, isLastRow, pinnedEdge),
493
- "data-cell-selected": isCellSelected(rowKey, column.key) ? "" : void 0,
481
+ "data-cell-selected": isCellSelected(rangeKey, column.key) ? "" : void 0,
494
482
  ...column.isRowHeader ? { scope: "row" } : { role: "gridcell" },
495
- ...cellSelectionProps(rowKey, column.key, pinnedEdge),
483
+ ...cellSelectionProps(rangeKey, column.key, pinnedEdge),
496
484
  "aria-colindex": column.ariaColIndex,
497
485
  style: {
498
486
  ...pinStyle(column),
@@ -798,6 +786,21 @@ function TableView(props) {
798
786
  renderSpacerRow(paddingBottom, "bottom")
799
787
  ] });
800
788
  else bodyContent = rows.map((row, index) => withDropIndicators(row, index));
789
+ if (columnCount === 0 && isLoading) return /* @__PURE__ */ jsxs(TableElement, {
790
+ ref: rootRef,
791
+ qa: qa || "Table",
792
+ styles: mergedStyles,
793
+ mods: {
794
+ size,
795
+ shape,
796
+ ...mods
797
+ },
798
+ children: [toolbar, /* @__PURE__ */ jsx("div", {
799
+ "data-element": "Scroller",
800
+ ref: handleScrollerRef,
801
+ children: /* @__PURE__ */ jsx(Skeleton, { layout: "table" })
802
+ })]
803
+ });
801
804
  return /* @__PURE__ */ jsxs(TableElement, {
802
805
  ref: rootRef,
803
806
  qa: qa || "Table",
@@ -853,11 +856,11 @@ function TableView(props) {
853
856
  },
854
857
  onCopy: (event) => {
855
858
  if (!cellSelection?.range) return;
856
- const text = cellSelection.getSelectionText((column, row, rowIndex) => column.isStructural ? "" : getColumnText(column, row, rowIndex) ?? "");
857
- if (!text) return;
859
+ const matrix = cellSelection.getSelectionMatrix((column, row, rowIndex) => column.isStructural ? "" : getColumnText(column, row, rowIndex) ?? "");
860
+ if (!matrix.length) return;
858
861
  event.preventDefault();
859
- event.clipboardData.setData("text/plain", text);
860
- event.clipboardData.setData("text/html", toClipboardHtml(text));
862
+ event.clipboardData.setData("text/plain", toTsv(matrix));
863
+ event.clipboardData.setData("text/html", toClipboardHtml(matrix));
861
864
  toast.success({
862
865
  title: t("itemTable.copiedToClipboard", "Copied to clipboard"),
863
866
  description: t("itemTable.copiedCells", "{{count}} cells copied", { count: cellSelection.cellCount })