@cube-dev/ui-kit 0.190.2 → 0.190.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (594) hide show
  1. package/dist/CHANGELOG.md +6 -0
  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/ItemActionsWrapper.js +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/actions-run.js +1 -1
  38. package/dist/components/actions/index.js +1 -1
  39. package/dist/components/actions/use-action.js +1 -1
  40. package/dist/components/actions/use-anchored-menu.js +1 -1
  41. package/dist/components/actions/use-context-menu.js +1 -1
  42. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  43. package/dist/components/content/Alert/Alert.js +1 -1
  44. package/dist/components/content/Alert/use-alert.js +1 -1
  45. package/dist/components/content/Avatar/Avatar.js +1 -1
  46. package/dist/components/content/Badge/Badge.js +1 -1
  47. package/dist/components/content/Card/Card.js +1 -1
  48. package/dist/components/content/Content.js +1 -1
  49. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  50. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  51. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  52. package/dist/components/content/Divider.js +1 -1
  53. package/dist/components/content/Footer.js +1 -1
  54. package/dist/components/content/Header.js +1 -1
  55. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  56. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  57. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  58. package/dist/components/content/Item/Item.js +391 -338
  59. package/dist/components/content/Item/Item.js.map +1 -1
  60. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  61. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  62. package/dist/components/content/Layout/GridLayout.js +1 -1
  63. package/dist/components/content/Layout/Layout.js +1 -1
  64. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  65. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  66. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  67. package/dist/components/content/Layout/LayoutContent.js +1 -1
  68. package/dist/components/content/Layout/LayoutContext.js +1 -1
  69. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  70. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  71. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  72. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  73. package/dist/components/content/Layout/LayoutPane.js +1 -1
  74. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  75. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  76. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  77. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  78. package/dist/components/content/Layout/index.js +1 -1
  79. package/dist/components/content/Layout/utils.js +1 -1
  80. package/dist/components/content/Paragraph.js +1 -1
  81. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  82. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  83. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  84. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  85. package/dist/components/content/Result/Result.js +1 -1
  86. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  87. package/dist/components/content/Tag/Tag.js +1 -1
  88. package/dist/components/content/Text.js +1 -1
  89. package/dist/components/content/TextItem/TextItem.js +1 -1
  90. package/dist/components/content/Title.js +1 -1
  91. package/dist/components/content/Tree/Tree.js +1 -1
  92. package/dist/components/content/Tree/TreeNode.js +1 -1
  93. package/dist/components/content/Tree/styled.js +1 -1
  94. package/dist/components/content/Tree/tree-index.js +1 -1
  95. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  96. package/dist/components/content/Tree/use-load-data.js +1 -1
  97. package/dist/components/content/highlightText.js +1 -1
  98. package/dist/components/content/use-auto-tooltip.js +1 -1
  99. package/dist/components/data/DataTable/DataTable.js +1 -1
  100. package/dist/components/data/ItemTable/ItemTable.js +439 -352
  101. package/dist/components/data/ItemTable/ItemTable.js.map +1 -1
  102. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  103. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  104. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  105. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  106. package/dist/components/data/ItemTable/use-item-table-column-widths.js +97 -0
  107. package/dist/components/data/ItemTable/use-item-table-column-widths.js.map +1 -0
  108. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +144 -0
  109. package/dist/components/data/ItemTable/use-item-table-drag-drop.js.map +1 -0
  110. package/dist/components/data/ItemTable/use-item-table-pagination.js +143 -0
  111. package/dist/components/data/ItemTable/use-item-table-pagination.js.map +1 -0
  112. package/dist/components/data/ItemTable/use-item-table-selection.js +141 -0
  113. package/dist/components/data/ItemTable/use-item-table-selection.js.map +1 -0
  114. package/dist/components/data/ItemTable/use-item-table-sort.js +135 -0
  115. package/dist/components/data/ItemTable/use-item-table-sort.js.map +1 -0
  116. package/dist/components/data/ItemTable/use-item-table-tree-model.js +107 -0
  117. package/dist/components/data/ItemTable/use-item-table-tree-model.js.map +1 -0
  118. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  119. package/dist/components/data/TableBase/RowCollection.js +1 -1
  120. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  121. package/dist/components/data/TableBase/TableRow.js +1 -1
  122. package/dist/components/data/TableBase/TableView.js +96 -297
  123. package/dist/components/data/TableBase/TableView.js.map +1 -1
  124. package/dist/components/data/TableBase/TreeGridTable.js +142 -0
  125. package/dist/components/data/TableBase/TreeGridTable.js.map +1 -0
  126. package/dist/components/data/TableBase/column-header.js +94 -0
  127. package/dist/components/data/TableBase/column-header.js.map +1 -0
  128. package/dist/components/data/TableBase/column-menu.js +1 -1
  129. package/dist/components/data/TableBase/column-styles.js +1 -1
  130. package/dist/components/data/TableBase/column-tint.js +1 -1
  131. package/dist/components/data/TableBase/row-menu.js +1 -1
  132. package/dist/components/data/TableBase/styled.js +3 -2
  133. package/dist/components/data/TableBase/styled.js.map +1 -1
  134. package/dist/components/data/TableBase/table-tree.js +1 -1
  135. package/dist/components/data/TableBase/types.js +1 -1
  136. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  137. package/dist/components/data/TableBase/use-column-menu.js +166 -0
  138. package/dist/components/data/TableBase/use-column-menu.js.map +1 -0
  139. package/dist/components/data/TableBase/use-column-order.js +1 -1
  140. package/dist/components/data/TableBase/use-container-width.js +1 -1
  141. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  142. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  143. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  144. package/dist/components/data/TableBase/use-table-search.js +1 -1
  145. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  146. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  147. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  148. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  149. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  150. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  151. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  152. package/dist/components/fields/Checkbox/context.js +1 -1
  153. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  154. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  155. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  156. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  157. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  158. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  159. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  160. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  161. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  162. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  163. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  164. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  165. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  166. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  167. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  168. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  169. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  170. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  171. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  172. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  173. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  174. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  175. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  176. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  177. package/dist/components/fields/DatePicker/period.js +1 -1
  178. package/dist/components/fields/DatePicker/props.js +1 -1
  179. package/dist/components/fields/DatePicker/utils.js +1 -1
  180. package/dist/components/fields/FileInput/FileInput.js +1 -1
  181. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  182. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  183. package/dist/components/fields/Input/Input.js +1 -1
  184. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  185. package/dist/components/fields/ListBox/ListBox.js +1 -1
  186. package/dist/components/fields/ListBox/optionId.js +1 -1
  187. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  188. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  189. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  190. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  191. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  192. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  193. package/dist/components/fields/Picker/Picker.js +1 -1
  194. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  195. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  196. package/dist/components/fields/RadioGroup/context.js +1 -1
  197. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  198. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  199. package/dist/components/fields/Select/Select.js +1 -1
  200. package/dist/components/fields/Slider/Gradation.js +1 -1
  201. package/dist/components/fields/Slider/HueSlider.js +1 -1
  202. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  203. package/dist/components/fields/Slider/Slider.js +1 -1
  204. package/dist/components/fields/Slider/SliderBase.js +1 -1
  205. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  206. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  207. package/dist/components/fields/Slider/elements.js +1 -1
  208. package/dist/components/fields/Slider/index.js +1 -1
  209. package/dist/components/fields/Switch/Switch.js +1 -1
  210. package/dist/components/fields/TagInput/TagInput.js +768 -723
  211. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  212. package/dist/components/fields/TagInput/TagList.js +1 -1
  213. package/dist/components/fields/TagInput/useActiveOption.js +122 -0
  214. package/dist/components/fields/TagInput/useActiveOption.js.map +1 -0
  215. package/dist/components/fields/TagInput/useTagError.js +95 -0
  216. package/dist/components/fields/TagInput/useTagError.js.map +1 -0
  217. package/dist/components/fields/TextArea/TextArea.js +1 -1
  218. package/dist/components/fields/TextInput/TextInput.js +1 -1
  219. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  220. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  221. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  222. package/dist/components/fields/TriggerActions.js +1 -1
  223. package/dist/components/fields/color/ColorPanel.js +1 -1
  224. package/dist/components/fields/color/channels.js +1 -1
  225. package/dist/components/fields/color/color.js +1 -1
  226. package/dist/components/fields/color/context.js +1 -1
  227. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  228. package/dist/components/form/Form/Field.js +1 -1
  229. package/dist/components/form/Form/Form.js +1 -1
  230. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  231. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  232. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  233. package/dist/components/form/Form/SubmitError.js +1 -1
  234. package/dist/components/form/Form/backend.js +1 -1
  235. package/dist/components/form/Form/index.js +1 -1
  236. package/dist/components/form/Form/modern/actions.js +1 -1
  237. package/dist/components/form/Form/modern/context.js +1 -1
  238. package/dist/components/form/Form/modern/controller.js +1 -1
  239. package/dist/components/form/Form/modern/field-binding.js +1 -1
  240. package/dist/components/form/Form/modern/field.js +1 -1
  241. package/dist/components/form/Form/modern/react.js +1 -1
  242. package/dist/components/form/Form/modern/store.js +1 -1
  243. package/dist/components/form/Form/modern/validation.js +1 -1
  244. package/dist/components/form/Form/modern/values.js +1 -1
  245. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  246. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  247. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  248. package/dist/components/form/Form/use-field/use-field.js +1 -1
  249. package/dist/components/form/Form/use-form.js +1 -1
  250. package/dist/components/form/Form/validation.js +1 -1
  251. package/dist/components/form/Label.js +1 -1
  252. package/dist/components/form/legacy-tooltip.js +1 -1
  253. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  254. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  255. package/dist/components/form/validation/use-validation-props.js +1 -1
  256. package/dist/components/form/wrapper.js +1 -1
  257. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  258. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  259. package/dist/components/layout/Board/Board.js +1 -1
  260. package/dist/components/layout/Board/BoardProvider.js +1 -1
  261. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  262. package/dist/components/layout/Board/Widget.js +1 -1
  263. package/dist/components/layout/Board/WidgetHost.js +1 -1
  264. package/dist/components/layout/Board/board-context.js +1 -1
  265. package/dist/components/layout/Board/board-store.js +1 -1
  266. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  267. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  268. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  269. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  270. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  271. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  272. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  273. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  274. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  275. package/dist/components/layout/Board/index.js +1 -1
  276. package/dist/components/layout/Board/responsive-utils.js +1 -1
  277. package/dist/components/layout/Board/use-board-layout.js +1 -1
  278. package/dist/components/layout/Board/use-board-registry.js +1 -1
  279. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  280. package/dist/components/layout/Board/use-board-selection.js +1 -1
  281. package/dist/components/layout/Flex.js +1 -1
  282. package/dist/components/layout/Flow.js +1 -1
  283. package/dist/components/layout/Grid.js +1 -1
  284. package/dist/components/layout/Panel.js +1 -1
  285. package/dist/components/layout/Prefix.js +1 -1
  286. package/dist/components/layout/ResizablePanel.js +1 -1
  287. package/dist/components/layout/Space.js +1 -1
  288. package/dist/components/layout/Suffix.js +1 -1
  289. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  290. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  291. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  292. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  293. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  294. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  295. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  296. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  297. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  298. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  299. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  300. package/dist/components/navigation/Tabs/styled.js +1 -1
  301. package/dist/components/navigation/Tabs/types.js +1 -1
  302. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  303. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  304. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  305. package/dist/components/other/Calendar/Calendar.js +1 -1
  306. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  307. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  308. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  309. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  310. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  311. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  312. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  313. package/dist/components/other/Calendar/styled.js +1 -1
  314. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  315. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  316. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  317. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  318. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  319. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  320. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  321. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  322. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  323. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  324. package/dist/components/overlays/Dialog/context.js +1 -1
  325. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  326. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  327. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  328. package/dist/components/overlays/Modal/Modal.js +1 -1
  329. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  330. package/dist/components/overlays/Modal/Overlay.js +1 -1
  331. package/dist/components/overlays/Modal/Popover.js +1 -1
  332. package/dist/components/overlays/Modal/Tray.js +1 -1
  333. package/dist/components/overlays/Modal/Underlay.js +1 -1
  334. package/dist/components/overlays/Notifications/Notification.js +1 -1
  335. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  336. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  337. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  338. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  339. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  340. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  341. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  342. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  343. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  344. package/dist/components/overlays/Notifications/index.js +1 -1
  345. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  346. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  347. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  348. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  349. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  350. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  351. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  352. package/dist/components/overlays/Toast/index.js +1 -1
  353. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  354. package/dist/components/overlays/Toast/useToast.js +1 -1
  355. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  356. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  357. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  358. package/dist/components/overlays/Tooltip/context.js +1 -1
  359. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  360. package/dist/components/portal/Portal.js +1 -1
  361. package/dist/components/portal/PortalProvider.js +1 -1
  362. package/dist/components/portal/usePortal.js +1 -1
  363. package/dist/components/shared/DraggableCollection.js +1 -1
  364. package/dist/components/shared/InvalidIcon.js +1 -1
  365. package/dist/components/shared/ValidIcon.js +1 -1
  366. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  367. package/dist/components/status/Spin/Cube.js +1 -1
  368. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  369. package/dist/components/status/Spin/Spin.js +1 -1
  370. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  371. package/dist/data/item-themes.js +1 -1
  372. package/dist/data/themes.js +1 -1
  373. package/dist/eslint-plugin/defaults.generated.js +1 -1
  374. package/dist/eslint-plugin/index.js +1 -1
  375. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  376. package/dist/i18n/I18nProvider.js +1 -1
  377. package/dist/i18n/createFormatter.js +1 -1
  378. package/dist/i18n/index.js +1 -1
  379. package/dist/i18n/instance.js +1 -1
  380. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  381. package/dist/i18n/locales/en-US/uikit.js +1 -1
  382. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  383. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  384. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  385. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  386. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  387. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  388. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  389. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  390. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  391. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  392. package/dist/i18n/locales.js +1 -1
  393. package/dist/i18n/useFormatter.js +1 -1
  394. package/dist/i18n/useI18n.js +1 -1
  395. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  396. package/dist/icons/AdjustmentsIcon.js +1 -1
  397. package/dist/icons/AiIcon.js +1 -1
  398. package/dist/icons/AreaChartIcon.js +1 -1
  399. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  400. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  401. package/dist/icons/BackwardIcon.js +1 -1
  402. package/dist/icons/BarChartIcon.js +1 -1
  403. package/dist/icons/BellFilledIcon.js +1 -1
  404. package/dist/icons/BellIcon.js +1 -1
  405. package/dist/icons/BooleanIcon.js +1 -1
  406. package/dist/icons/CalendarEditIcon.js +1 -1
  407. package/dist/icons/CalendarIcon.js +1 -1
  408. package/dist/icons/CaretDownIcon.js +1 -1
  409. package/dist/icons/CaretUpIcon.js +1 -1
  410. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  411. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  412. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  413. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  414. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  415. package/dist/icons/ChartBarLineIcon.js +1 -1
  416. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  417. package/dist/icons/ChartBarStackedIcon.js +1 -1
  418. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  419. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  420. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  421. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  422. package/dist/icons/ChartBubbleIcon.js +1 -1
  423. package/dist/icons/ChartDonut2Icon.js +1 -1
  424. package/dist/icons/ChartFunnelIcon.js +1 -1
  425. package/dist/icons/ChartHeatmapIcon.js +1 -1
  426. package/dist/icons/ChartKPIIcon.js +1 -1
  427. package/dist/icons/ChartPie2Icon.js +1 -1
  428. package/dist/icons/ChartScatterIcon.js +1 -1
  429. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  430. package/dist/icons/CheckCircleIcon.js +1 -1
  431. package/dist/icons/CheckIcon.js +1 -1
  432. package/dist/icons/CircleFilledIcon.js +1 -1
  433. package/dist/icons/ClearIcon.js +1 -1
  434. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  435. package/dist/icons/CloseCircleIcon.js +1 -1
  436. package/dist/icons/CloseIcon.js +1 -1
  437. package/dist/icons/CodeIcon.js +1 -1
  438. package/dist/icons/ColumnTotalIcon.js +1 -1
  439. package/dist/icons/CopyIcon.js +1 -1
  440. package/dist/icons/CountIcon.js +1 -1
  441. package/dist/icons/CubeIcon.js +1 -1
  442. package/dist/icons/CubePauseIcon.js +1 -1
  443. package/dist/icons/CubePlayIcon.js +1 -1
  444. package/dist/icons/CurrencyDollarIcon.js +1 -1
  445. package/dist/icons/DangerIcon.js +1 -1
  446. package/dist/icons/DashboardIcon.js +1 -1
  447. package/dist/icons/DatabaseIcon.js +1 -1
  448. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  449. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  450. package/dist/icons/DirectionIcon.js +1 -1
  451. package/dist/icons/DonutIcon.js +1 -1
  452. package/dist/icons/DownIcon.js +1 -1
  453. package/dist/icons/EditIcon.js +1 -1
  454. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  455. package/dist/icons/ExclamationCircleIcon.js +1 -1
  456. package/dist/icons/ExclamationIcon.js +1 -1
  457. package/dist/icons/EyeIcon.js +1 -1
  458. package/dist/icons/EyeInvisibleIcon.js +1 -1
  459. package/dist/icons/FilterIcon.js +1 -1
  460. package/dist/icons/FolderFilledIcon.js +1 -1
  461. package/dist/icons/FolderIcon.js +1 -1
  462. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  463. package/dist/icons/FolderOpenIcon.js +1 -1
  464. package/dist/icons/ForwardIcon.js +1 -1
  465. package/dist/icons/GripVerticalIcon.js +1 -1
  466. package/dist/icons/HierarchyIcon.js +1 -1
  467. package/dist/icons/HierarchyOpenIcon.js +1 -1
  468. package/dist/icons/Icon.js +1 -1
  469. package/dist/icons/InfoCircleIcon.js +1 -1
  470. package/dist/icons/InfoIcon.js +1 -1
  471. package/dist/icons/KeyIcon.js +1 -1
  472. package/dist/icons/LeftIcon.js +1 -1
  473. package/dist/icons/LineChartIcon.js +1 -1
  474. package/dist/icons/LoadingIcon.js +1 -1
  475. package/dist/icons/LockFilledIcon.js +1 -1
  476. package/dist/icons/LockIcon.js +1 -1
  477. package/dist/icons/MoreIcon.js +1 -1
  478. package/dist/icons/NotAllowedIcon.js +1 -1
  479. package/dist/icons/Number123Icon.js +1 -1
  480. package/dist/icons/NumberIcon.js +1 -1
  481. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  482. package/dist/icons/PauseCircleIcon.js +1 -1
  483. package/dist/icons/PauseIcon.js +1 -1
  484. package/dist/icons/PercentageIcon.js +1 -1
  485. package/dist/icons/PieChartIcon.js +1 -1
  486. package/dist/icons/PipetteIcon.js +1 -1
  487. package/dist/icons/PlayCircleIcon.js +1 -1
  488. package/dist/icons/PlayIcon.js +1 -1
  489. package/dist/icons/PlusIcon.js +1 -1
  490. package/dist/icons/ProgressBarIcon.js +1 -1
  491. package/dist/icons/ReloadIcon.js +1 -1
  492. package/dist/icons/ReportIcon.js +1 -1
  493. package/dist/icons/ReturnIcon.js +1 -1
  494. package/dist/icons/RightIcon.js +1 -1
  495. package/dist/icons/RowTotalsIcon.js +1 -1
  496. package/dist/icons/SchemeIcon.js +1 -1
  497. package/dist/icons/SearchIcon.js +1 -1
  498. package/dist/icons/SemanticQueryIcon.js +1 -1
  499. package/dist/icons/SettingsIcon.js +1 -1
  500. package/dist/icons/ShieldFilledIcon.js +1 -1
  501. package/dist/icons/ShieldIcon.js +1 -1
  502. package/dist/icons/SlashIcon.js +1 -1
  503. package/dist/icons/SparklesIcon.js +1 -1
  504. package/dist/icons/SqlIcon.js +1 -1
  505. package/dist/icons/StatsIcon.js +1 -1
  506. package/dist/icons/StopIcon.js +1 -1
  507. package/dist/icons/StringIcon.js +1 -1
  508. package/dist/icons/SubtotalsIcon.js +1 -1
  509. package/dist/icons/SwitchIcon.js +1 -1
  510. package/dist/icons/TableIcon.js +1 -1
  511. package/dist/icons/ThumbsDownIcon.js +1 -1
  512. package/dist/icons/ThumbsUpIcon.js +1 -1
  513. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  514. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  515. package/dist/icons/ThunderboltIcon.js +1 -1
  516. package/dist/icons/TimeIcon.js +1 -1
  517. package/dist/icons/TrashIcon.js +1 -1
  518. package/dist/icons/UnlockIcon.js +1 -1
  519. package/dist/icons/UpIcon.js +1 -1
  520. package/dist/icons/UserGroupIcon.js +1 -1
  521. package/dist/icons/UserIcon.js +1 -1
  522. package/dist/icons/UserLockIcon.js +1 -1
  523. package/dist/icons/ViewIcon.js +1 -1
  524. package/dist/icons/WarningFilledIcon.js +1 -1
  525. package/dist/icons/WarningIcon.js +1 -1
  526. package/dist/icons/wrap-icon.js +1 -1
  527. package/dist/index.js +1 -1
  528. package/dist/probe/canonicalize.js +1 -1
  529. package/dist/probe/css.js +1 -1
  530. package/dist/probe/index.js +1 -1
  531. package/dist/provider.js +1 -1
  532. package/dist/providers/TrackingProvider.js +1 -1
  533. package/dist/providers/navigationAdapter.default.js +1 -1
  534. package/dist/tokens/all-tokens.js +1 -1
  535. package/dist/tokens/base.js +1 -1
  536. package/dist/tokens/color-seed.js +1 -1
  537. package/dist/tokens/color-theme.js +1 -1
  538. package/dist/tokens/colors.js +1 -1
  539. package/dist/tokens/layout.js +1 -1
  540. package/dist/tokens/lazy-styles.js +1 -1
  541. package/dist/tokens/legacy-color.js +1 -1
  542. package/dist/tokens/palette-config.js +1 -1
  543. package/dist/tokens/palette.js +1 -1
  544. package/dist/tokens/resolve.js +1 -1
  545. package/dist/tokens/shadows.js +1 -1
  546. package/dist/tokens/sizes.js +1 -1
  547. package/dist/tokens/spacing.js +1 -1
  548. package/dist/tokens/typography.js +1 -1
  549. package/dist/utils/ResizeSensor.js +1 -1
  550. package/dist/utils/colors.js +1 -1
  551. package/dist/utils/dotize.js +1 -1
  552. package/dist/utils/is-dev-env.js +1 -1
  553. package/dist/utils/modules.js +1 -1
  554. package/dist/utils/promise.js +1 -1
  555. package/dist/utils/raf.js +1 -1
  556. package/dist/utils/random.js +1 -1
  557. package/dist/utils/range.js +1 -1
  558. package/dist/utils/react/RenderCache.js +1 -1
  559. package/dist/utils/react/Slots.js +1 -1
  560. package/dist/utils/react/chain.js +1 -1
  561. package/dist/utils/react/disabledProps.js +1 -1
  562. package/dist/utils/react/escapePropagation.js +1 -1
  563. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  564. package/dist/utils/react/index.js +1 -1
  565. package/dist/utils/react/interactions.js +1 -1
  566. package/dist/utils/react/isTextOnly.js +1 -1
  567. package/dist/utils/react/mapProps.js +1 -1
  568. package/dist/utils/react/mergeProps.js +1 -1
  569. package/dist/utils/react/nullableValue.js +1 -1
  570. package/dist/utils/react/programmaticFocus.js +1 -1
  571. package/dist/utils/react/resolveIcon.js +1 -1
  572. package/dist/utils/react/sharedStore.js +1 -1
  573. package/dist/utils/react/useBufferedValue.js +1 -1
  574. package/dist/utils/react/useCombinedRefs.js +1 -1
  575. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  576. package/dist/utils/react/useEventBus.js +1 -1
  577. package/dist/utils/react/useId.js +1 -1
  578. package/dist/utils/react/useIsDarwin.js +1 -1
  579. package/dist/utils/react/useKeySymbols.js +1 -1
  580. package/dist/utils/react/useLayoutEffect.js +1 -1
  581. package/dist/utils/react/useLocalStorage.js +1 -1
  582. package/dist/utils/react/useMergeStyles.js +1 -1
  583. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  584. package/dist/utils/react/usePopoverSync.js +1 -1
  585. package/dist/utils/react/useQaProps.js +1 -1
  586. package/dist/utils/react/useScheme.js +1 -1
  587. package/dist/utils/react/useViewportSize.js +1 -1
  588. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  589. package/dist/utils/selection.js +1 -1
  590. package/dist/utils/styles.js +1 -1
  591. package/dist/utils/tree.js +1 -1
  592. package/dist/utils/warnings.js +1 -1
  593. package/dist/version.js +2 -2
  594. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ItemTable.js","names":["useCollator","useControlledState","CONTAINER_STYLES","forwardRef","useMemo","useRef","useState","useEvent","useWarn","useI18n","useCombinedRefs","extractStyles","mergeStyleLayers","clampPage","getPageInfo","DraggableCollection","ROW_MENU_COLUMN_KEY","ROW_MENU_COLUMN_WIDTH","buildTableTree","filterTableTree","flattenTableTree","isTableTreeDescendant","reindexTableTree","sortTableTree","TableView","useContainerWidth","freezeColumnWidths","getColumnText","useTableColumns","matchesTableSearch","useTableSearch","SELECTION_COLUMN_KEY","SELECTION_COLUMN_WIDTH","useTableSelection","compareByColumn","useTableSort","useTableStorage","useTableTreeState","ItemTableBulkBar","ItemTableDragPreview","ItemTableFooter","ItemTableChromeProvider","ItemTableSearch","ItemTableToolbar","Key","ForwardedRef","ReactElement","ReactNode","CubeTableColumnLayout","CubeTableRowContext","CubeTableSort","CubeItemTableProps","EMPTY_WIDTHS","Record","defaultGetRowKey","rowKey","row","T","index","value","ItemTable","props","ref","HTMLDivElement","data","columns","getRowKey","getRowChildren","treeColumnKey","expandedKeys","defaultExpandedKeys","onExpand","isLoading","loadingIndicator","selectionMode","bulkActions","rowLink","onRowAction","rowMenu","rowContextMenu","onRowMenuAction","rowMenuTriggerProps","bulkBarPlacement","bulkBarStyles","selectedKeys","selectedKeysProp","defaultSelectedKeys","onSelectionChange","selectAllMode","isRowSelectable","selectionTooltip","disabledKeys","treeSelectionBehavior","skeletonRowCount","emptyLabel","noResultsLabel","error","isFiltered","toolbar","isSearchable","searchMode","searchPlaceholder","searchValue","searchValueProp","defaultSearchValue","onSearchChange","searchDelay","searchFilter","filters","actions","onRefresh","paginationMode","pageSize","pageSizeProp","defaultPageSize","autoHidePagination","onLoadMore","hasMore","isLoadingMore","loadMoreMargin","storageKey","persist","isReorderable","onReorder","dropOnRow","getItemDragInfo","isResizable","columnWidths","columnWidthsProp","defaultColumnWidths","onColumnResize","columnContextMenu","onColumnMenuAction","columnMenuTriggerProps","columnMenuProps","onPageSizeChange","pageSizeOptions","page","pageProp","defaultPage","onPageChange","total","totalProp","totalPages","hasNextPage","summary","footer","footerStart","footerCenter","footerEnd","sortMode","sort","sortProp","defaultSort","onSortChange","shape","size","rowHeight","headerHeight","isStriped","isHeaderHidden","isHeaderSticky","isAutoHeight","isVirtualized","virtualizeThreshold","overscan","getRowProps","ariaLabel","qa","mods","styles","headerStyles","headerCellStyles","headerPreset","toolbarStyles","searchStyles","footerStyles","bodyStyles","rowStyles","cellStyles","isRowMoveAnimated","t","localRef","rootRef","scrollerEl","setScrollerEl","containerWidth","rootStyles","resolvedGetRowKey","treeModel","duplicateKeys","length","key","args","cyclicKeys","resolvedTreeColumnKey","undefined","visibleColumns","filter","column","isHidden","some","setSearchValue","searchedRows","query","isSearching","rows","mode","defaultValue","onChange","delay","searchedTree","roots","forcedExpandedKeys","Set","node","sourceIndex","storage","sortedRows","toggleSort","setColumnSort","resolvedSortMode","map","has","initial","next","write","collator","numeric","sensitivity","treeSortMode","isSortable","processedTreeRoots","find","entry","columnKey","a","b","result","direction","setPageSizeState","setPageState","isInfinite","isPaginated","isServerPaginated","pageInfo","setPage","setPageSize","flatVisibleRows","slice","pageTreeRoots","treeState","allNodesByKey","byKey","Map","getTextValue","String","visibleTreeEntries","visibleEntries","visibleRows","visibleRowKeys","pageTreeEntries","filteredTreeEntries","selectionTree","childrenOf","parentOf","forEach","set","children","child","parentKey","rootKeys","behavior","resolvedSelectionMode","selection","rowKeys","pageRows","pageRowKeys","filteredRows","filteredRowKeys","tree","resolveRowMenu","ctx","trailingColumns","width","medium","align","const","leadingColumns","isEnabled","ownColumnWidths","setOwnColumnWidths","draftColumnWidths","setDraftColumnWidths","draftColumnWidthsRef","baseColumnWidths","layoutRef","handleColumnResize","base","current","Math","round","handleColumnResizeEnd","layout","hasBulkSelection","selectedCount","bulkBar","isBulkBarInToolbar","hasToolbar","toolbarNode","smallestPageSize","min","isPaginationUseless","showPagination","hasFooter","footerNode","bodyRef","HTMLTableSectionElement","handleReorder","nextKeys","get","renderTable","dragState","dropState","collectionProps","isDragEnabled","state","ariaProps","nodes","visibleNodes","entries","rowByKeyForDrop","handleItemDrop","targetKey","draggedKeys","target","draggedKeySet","topmostDraggedKeys","parent","dragged","isAllowed","onDrop","renderDragPreview","keys","shouldAcceptItemDrop","isTarget","table","collection","selectionManager","selectedRows","clearSelection","_ItemTable","Object","assign","displayName","Search","Toolbar","BulkBar"],"sources":["../../../../src/components/data/ItemTable/ItemTable.tsx"],"sourcesContent":["import { useCollator } from '@react-aria/i18n';\nimport { useControlledState } from '@react-stately/utils';\nimport { CONTAINER_STYLES } from '@tenphi/tasty';\nimport { forwardRef, useMemo, useRef, useState } from 'react';\n\nimport { useEvent, useWarn } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\nimport { useCombinedRefs } from '../../../utils/react';\nimport { extractStyles, mergeStyleLayers } from '../../../utils/styles';\nimport { clampPage, getPageInfo } from '../../navigation/Pagination';\nimport { DraggableCollection } from '../../shared/DraggableCollection';\nimport {\n ROW_MENU_COLUMN_KEY,\n ROW_MENU_COLUMN_WIDTH,\n} from '../TableBase/row-menu';\nimport {\n buildTableTree,\n filterTableTree,\n flattenTableTree,\n isTableTreeDescendant,\n reindexTableTree,\n sortTableTree,\n} from '../TableBase/table-tree';\nimport { TableView } from '../TableBase/TableView';\nimport { useContainerWidth } from '../TableBase/use-container-width';\nimport {\n freezeColumnWidths,\n getColumnText,\n useTableColumns,\n} from '../TableBase/use-table-columns';\nimport {\n matchesTableSearch,\n useTableSearch,\n} from '../TableBase/use-table-search';\nimport {\n SELECTION_COLUMN_KEY,\n SELECTION_COLUMN_WIDTH,\n useTableSelection,\n} from '../TableBase/use-table-selection';\nimport { compareByColumn, useTableSort } from '../TableBase/use-table-sort';\nimport { useTableStorage } from '../TableBase/use-table-storage';\nimport { useTableTreeState } from '../TableBase/use-table-tree-state';\n\nimport { ItemTableBulkBar } from './ItemTableBulkBar';\nimport { ItemTableDragPreview } from './ItemTableDragPreview';\nimport { ItemTableFooter } from './ItemTableFooter';\nimport {\n ItemTableChromeProvider,\n ItemTableSearch,\n ItemTableToolbar,\n} from './ItemTableToolbar';\n\nimport type { Key } from '@react-types/shared';\nimport type { ForwardedRef, ReactElement, ReactNode } from 'react';\nimport type {\n CubeTableColumnLayout,\n CubeTableRowContext,\n CubeTableSort,\n} from '../TableBase/types';\nimport type { CubeItemTableProps } from './types';\n\n/** Stable identity, so the uncontrolled default does not change every render. */\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\nfunction ItemTable<T = any>(\n props: CubeItemTableProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n): ReactElement {\n const {\n data,\n columns,\n rowKey = 'id',\n getRowKey,\n getRowChildren,\n treeColumnKey,\n expandedKeys,\n defaultExpandedKeys,\n onExpand,\n isLoading = false,\n loadingIndicator = 'overlay',\n selectionMode,\n bulkActions,\n rowLink,\n onRowAction,\n rowMenu,\n rowContextMenu = false,\n onRowMenuAction,\n rowMenuTriggerProps,\n bulkBarPlacement = 'floating',\n bulkBarStyles,\n selectedKeys: selectedKeysProp,\n defaultSelectedKeys,\n onSelectionChange,\n selectAllMode = 'page',\n isRowSelectable,\n selectionTooltip,\n disabledKeys,\n treeSelectionBehavior = 'cascade',\n skeletonRowCount = 6,\n emptyLabel,\n noResultsLabel,\n error,\n isFiltered,\n toolbar,\n isSearchable = false,\n searchMode = 'client',\n searchPlaceholder,\n searchValue: searchValueProp,\n defaultSearchValue,\n onSearchChange,\n searchDelay = 500,\n searchFilter,\n filters,\n actions,\n onRefresh,\n paginationMode = 'client',\n pageSize: pageSizeProp,\n defaultPageSize = 50,\n autoHidePagination = true,\n onLoadMore,\n hasMore,\n isLoadingMore,\n loadMoreMargin,\n storageKey,\n persist,\n isReorderable = false,\n onReorder,\n dropOnRow,\n getItemDragInfo,\n isResizable = false,\n columnWidths: columnWidthsProp,\n defaultColumnWidths,\n onColumnResize,\n columnContextMenu,\n onColumnMenuAction,\n columnMenuTriggerProps,\n columnMenuProps,\n onPageSizeChange,\n pageSizeOptions = [10, 20, 50, 100, 500],\n page: pageProp,\n defaultPage,\n onPageChange,\n total: totalProp,\n totalPages,\n hasNextPage,\n summary = true,\n footer,\n footerStart,\n footerCenter,\n footerEnd,\n sortMode,\n sort: sortProp,\n defaultSort,\n onSortChange,\n shape = 'plain',\n size = 'medium',\n rowHeight,\n headerHeight,\n isStriped = false,\n isHeaderHidden = false,\n isHeaderSticky = true,\n isAutoHeight = false,\n isVirtualized = 'auto',\n virtualizeThreshold = 50,\n overscan = 20,\n getRowProps,\n ariaLabel,\n qa,\n mods,\n styles,\n headerStyles,\n headerCellStyles,\n headerPreset = 'c3',\n toolbarStyles,\n searchStyles,\n footerStyles,\n bodyStyles,\n rowStyles,\n cellStyles,\n isRowMoveAnimated,\n } = props;\n\n const { t } = useI18n();\n\n const localRef = useRef<HTMLDivElement>(null);\n const rootRef = useCombinedRefs(ref, localRef);\n\n // Held in state, not a ref: the virtualized path's scroller is created by\n // Virtuoso and arrives through a callback, and the column layout has to\n // re-derive once it does.\n const [scrollerEl, setScrollerEl] = useState<HTMLDivElement | null>(null);\n const containerWidth = useContainerWidth(scrollerEl);\n\n // Style props (`height`, `maxHeight`, `margin`, …) land on the root frame.\n // `height` matters most: there is no page-scroll mode, so bounding the table\n // is what turns the body into a scroller and pins the header.\n const rootStyles = mergeStyleLayers(\n extractStyles(props, CONTAINER_STYLES),\n styles,\n );\n\n const resolvedGetRowKey = useMemo(\n () => getRowKey ?? defaultGetRowKey<T>(rowKey),\n [getRowKey, rowKey],\n );\n\n const treeModel = useMemo(\n () =>\n getRowChildren\n ? buildTableTree(data, getRowChildren, resolvedGetRowKey)\n : null,\n [data, getRowChildren, resolvedGetRowKey],\n );\n\n useWarn(treeModel != null && treeModel.duplicateKeys.length > 0, {\n key: ['item-table-tree-duplicate-keys'],\n args: [\n 'ItemTable:',\n 'Tree row keys must be unique across the complete hierarchy. Duplicate rows were ignored.',\n ],\n });\n useWarn(treeModel != null && treeModel.cyclicKeys.length > 0, {\n key: ['item-table-tree-cyclic-keys'],\n args: [\n 'ItemTable:',\n 'Tree data contains a cycle. Cyclic descendants were ignored.',\n ],\n });\n useWarn(treeModel != null && isReorderable, {\n key: ['item-table-tree-reorder-unsupported'],\n args: [\n 'ItemTable:',\n '`isReorderable` is ignored in tree mode. Use `dropOnRow` for folder-style moves.',\n ],\n });\n\n const resolvedTreeColumnKey = useMemo(() => {\n if (!treeModel) return undefined;\n const visibleColumns = columns.filter((column) => !column.isHidden);\n return visibleColumns.some((column) => column.key === treeColumnKey)\n ? treeColumnKey\n : visibleColumns[0]?.key;\n }, [treeModel, columns, treeColumnKey]);\n\n useWarn(\n treeModel != null &&\n treeColumnKey != null &&\n resolvedTreeColumnKey !== treeColumnKey,\n {\n key: ['item-table-tree-column-invalid', treeColumnKey],\n args: [\n 'ItemTable:',\n '`treeColumnKey` must identify a visible data column. Falling back to the first visible column.',\n ],\n },\n );\n\n const {\n searchValue,\n setSearchValue,\n searchedRows,\n query,\n isFiltered: isSearching,\n } = useTableSearch<T>({\n columns,\n rows: data,\n // Tree filtering needs to preserve ancestors and descendants, so the flat\n // hook owns only the controlled/debounced value in this mode.\n mode: treeModel ? 'server' : searchMode,\n value: searchValueProp,\n defaultValue: defaultSearchValue,\n onChange: onSearchChange,\n delay: searchDelay,\n filter: searchFilter,\n });\n\n const searchedTree = useMemo(() => {\n if (!treeModel) return null;\n if (searchMode !== 'client' || !query) {\n return { roots: treeModel.roots, forcedExpandedKeys: new Set<Key>() };\n }\n\n return filterTableTree(treeModel.roots, (node) =>\n searchFilter\n ? searchFilter(node.row, query)\n : matchesTableSearch(columns, node.row, node.sourceIndex, query),\n );\n }, [treeModel, searchMode, query, searchFilter, columns]);\n\n const storage = useTableStorage(storageKey, persist);\n\n const {\n sort,\n sortedRows,\n toggleSort,\n setColumnSort,\n mode: resolvedSortMode,\n } = useTableSort<T>({\n columns,\n rows: treeModel\n ? searchedTree?.roots.map((node) => node.row) ?? []\n : searchedRows,\n mode: treeModel ? 'server' : sortMode,\n sort: sortProp,\n // Only restore what the table owns: a controlled `sort` belongs to the page,\n // and overriding it here would fight the page's own source of truth.\n defaultSort:\n sortProp === undefined && storage.has('sort')\n ? storage.initial.sort ?? defaultSort\n : defaultSort,\n onSortChange: useEvent((next: CubeTableSort | null) => {\n if (sortProp === undefined) storage.write({ sort: next });\n onSortChange?.(next);\n }),\n });\n\n const collator = useCollator({ numeric: true, sensitivity: 'base' });\n const treeSortMode = treeModel\n ? sortMode ??\n (columns.some((column) => column.isSortable) ? 'client' : 'off')\n : resolvedSortMode;\n const processedTreeRoots = useMemo(() => {\n const roots = searchedTree?.roots ?? [];\n if (treeSortMode !== 'client' || !sort) return roots;\n const column = columns.find((entry) => entry.key === sort.columnKey);\n if (!column) return roots;\n\n return sortTableTree(roots, (a, b) => {\n const result = compareByColumn(\n column,\n collator,\n a.row,\n a.sourceIndex,\n b.row,\n b.sourceIndex,\n );\n return result * (sort.direction === 'asc' ? 1 : -1);\n });\n }, [searchedTree, treeSortMode, sort, columns, collator]);\n\n // Search → sort → paginate. Paging last, so a page always reflects the rows\n // the user is actually looking at.\n //\n // Deliberately not `usePagination`: that hook owns an in-memory array, and in\n // server mode `data` is a single page. Deriving the bounds from it would clamp\n // the page to 1 and swallow every page change.\n const [pageSize, setPageSizeState] = useControlledState<number>(\n pageSizeProp as number,\n pageSizeProp === undefined && storage.has('pageSize')\n ? storage.initial.pageSize ?? defaultPageSize\n : defaultPageSize,\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 isInfinite = paginationMode === 'infinite';\n // Infinite scroll replaces the page control rather than adding to it.\n const isPaginated = paginationMode !== 'off' && !isInfinite;\n const isServerPaginated = paginationMode === 'server';\n const total = isServerPaginated\n ? totalProp ?? 0\n : treeModel\n ? processedTreeRoots.length\n : 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\n if (pageSizeProp === undefined) storage.write({ pageSize: next });\n\n // The old page index points at different rows under a new page size, so\n // staying on it would silently move the user.\n setPageState(1);\n });\n\n const flatVisibleRows =\n paginationMode === 'client'\n ? sortedRows.slice(\n (pageInfo.page - 1) * pageSize,\n pageInfo.page * pageSize,\n )\n : sortedRows;\n\n const pageTreeRoots = useMemo(\n () =>\n reindexTableTree(\n paginationMode === 'client'\n ? processedTreeRoots.slice(\n (pageInfo.page - 1) * pageSize,\n pageInfo.page * pageSize,\n )\n : processedTreeRoots,\n ),\n [processedTreeRoots, paginationMode, pageInfo.page, pageSize],\n );\n\n const treeState = useTableTreeState<T>({\n roots: pageTreeRoots,\n allNodesByKey: treeModel?.byKey ?? new Map(),\n expandedKeys,\n defaultExpandedKeys,\n forcedExpandedKeys: searchedTree?.forcedExpandedKeys,\n disabledKeys,\n getTextValue: (node) => {\n const column = columns.find(\n (entry) => entry.key === resolvedTreeColumnKey,\n );\n return column\n ? getColumnText(column, node.row, node.sourceIndex) ?? String(node.key)\n : String(node.key);\n },\n onExpand,\n ariaLabel,\n });\n\n const visibleTreeEntries = treeModel ? treeState.visibleEntries : [];\n const visibleRows = treeModel\n ? visibleTreeEntries.map((entry) => entry.row)\n : flatVisibleRows;\n const visibleRowKeys = treeModel\n ? visibleTreeEntries.map((entry) => entry.key)\n : undefined;\n const pageTreeEntries = treeModel ? flattenTableTree(pageTreeRoots) : [];\n const filteredTreeEntries = treeModel\n ? flattenTableTree(processedTreeRoots)\n : [];\n const selectionTree = useMemo(() => {\n if (!treeModel) return undefined;\n\n // Selection follows the tree the user can currently act on. In\n // particular, a search that retains only an ancestor path must not let a\n // checked ancestor reach siblings that the search removed.\n const childrenOf = new Map<Key, Key[]>();\n const parentOf = new Map<Key, Key | null>();\n\n flattenTableTree(processedTreeRoots).forEach((node) => {\n childrenOf.set(\n node.key,\n node.children.map((child) => child.key),\n );\n parentOf.set(node.key, node.parentKey);\n });\n\n return {\n rootKeys: processedTreeRoots.map((node) => node.key),\n childrenOf,\n parentOf,\n behavior: treeSelectionBehavior,\n };\n }, [treeModel, processedTreeRoots, treeSelectionBehavior]);\n\n // A bulk action with no way to select rows is a contradiction, so supplying\n // any implies multiple selection unless the consumer says otherwise.\n const resolvedSelectionMode =\n selectionMode ?? (bulkActions?.length ? 'multiple' : 'none');\n\n const selection = useTableSelection<T>({\n rows: visibleRows,\n rowKeys: visibleRowKeys,\n pageRows: treeModel\n ? pageTreeEntries.map((entry) => entry.row)\n : visibleRows,\n pageRowKeys: treeModel\n ? pageTreeEntries.map((entry) => entry.key)\n : undefined,\n // The wider set the header checkbox can reach under\n // `selectAllMode=\"filtered\"`. In server mode the client only ever holds one\n // page, so the two coincide.\n filteredRows: treeModel\n ? (paginationMode === 'client'\n ? filteredTreeEntries\n : pageTreeEntries\n ).map((entry) => entry.row)\n : paginationMode === 'client'\n ? sortedRows\n : visibleRows,\n filteredRowKeys: treeModel\n ? (paginationMode === 'client'\n ? filteredTreeEntries\n : pageTreeEntries\n ).map((entry) => entry.key)\n : undefined,\n getRowKey: resolvedGetRowKey,\n selectionMode: resolvedSelectionMode,\n selectedKeys: selectedKeysProp,\n defaultSelectedKeys,\n onSelectionChange,\n selectAllMode,\n isRowSelectable,\n disabledKeys,\n tree: selectionTree,\n });\n\n // A `ReactNode` menu applies to every row; a function decides per row. The\n // renderer only ever sees the function form.\n const resolveRowMenu = useMemo(\n () =>\n rowMenu == null\n ? undefined\n : typeof rowMenu === 'function'\n ? (rowMenu as (\n row: T,\n ctx: CubeTableRowContext<T>,\n ) => ReactNode | null)\n : () => rowMenu as ReactNode,\n [rowMenu],\n );\n\n const trailingColumns = useMemo(\n () =>\n resolveRowMenu && rowContextMenu === true\n ? [\n {\n key: ROW_MENU_COLUMN_KEY,\n width:\n ROW_MENU_COLUMN_WIDTH[size] ?? ROW_MENU_COLUMN_WIDTH.medium,\n align: 'center' as const,\n },\n ]\n : undefined,\n [resolveRowMenu, rowContextMenu, size],\n );\n\n const leadingColumns = useMemo(\n () =>\n selection.isEnabled\n ? [\n {\n key: SELECTION_COLUMN_KEY,\n width:\n SELECTION_COLUMN_WIDTH[size] ?? SELECTION_COLUMN_WIDTH.medium,\n align: 'center' as const,\n },\n ]\n : undefined,\n [selection.isEnabled, size],\n );\n\n /**\n * Column widths, in three layers.\n *\n * The draft exists because a resize has to be visible *while* it happens, and\n * a controlled `columnWidths` cannot be: the consumer only learns the new\n * width from `onColumnResize`, which fires when the gesture ends. Without a\n * draft a controlled table simply would not move under the pointer.\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\n /**\n * The same draft, in a ref.\n *\n * A keyboard resize runs `useMove`'s whole start → move → end cycle inside\n * one key press, so the end handler would read the state from before the\n * move. The ref is what it actually settles on; the state exists only to\n * trigger the render.\n */\n const draftColumnWidthsRef = useRef<Record<string, number> | null>(null);\n\n const baseColumnWidths = columnWidthsProp ?? ownColumnWidths;\n const columnWidths = draftColumnWidths ?? baseColumnWidths;\n\n /** `layout` is computed below; `useEvent` only reads this when a drag runs. */\n const layoutRef = useRef<CubeTableColumnLayout<T> | null>(null);\n\n const handleColumnResize = useEvent((key: string, width: number) => {\n // First move of a drag freezes every column, so this changes exactly one\n // width instead of re-splitting the flex pool. See `freezeColumnWidths`.\n const base =\n draftColumnWidthsRef.current ??\n freezeColumnWidths(layoutRef.current, baseColumnWidths);\n\n draftColumnWidthsRef.current = { ...base, [key]: Math.round(width) };\n setDraftColumnWidths(draftColumnWidthsRef.current);\n });\n\n // Once at the end: a callback per pixel would be unusable, and persisting\n // every frame would hammer `localStorage`.\n const handleColumnResizeEnd = useEvent((key: string) => {\n const next = draftColumnWidthsRef.current ?? baseColumnWidths;\n\n if (columnWidthsProp === undefined) {\n setOwnColumnWidths(next);\n storage.write({ columnWidths: next });\n }\n\n onColumnResize?.(key, next[key], next);\n\n // The prop (or `ownColumnWidths`) is the source of truth again. A\n // controlled consumer that ignores the callback reverts, which is what\n // being controlled means.\n draftColumnWidthsRef.current = null;\n setDraftColumnWidths(null);\n });\n\n const layout = useTableColumns<T>({\n columns,\n containerWidth,\n columnWidths,\n leadingColumns,\n trailingColumns,\n });\n\n layoutRef.current = layout;\n\n const hasBulkSelection =\n bulkActions != null &&\n bulkActions.length > 0 &&\n selection.selectedCount > 0;\n\n const bulkBar = hasBulkSelection ? (\n <ItemTableBulkBar<T>\n actions={bulkActions!}\n placement={bulkBarPlacement}\n styles={bulkBarStyles}\n />\n ) : null;\n\n const isBulkBarInToolbar = bulkBar != null && bulkBarPlacement === 'toolbar';\n\n const hasToolbar =\n toolbar !== undefined ||\n isSearchable ||\n filters != null ||\n actions != null ||\n onRefresh != null ||\n isBulkBarInToolbar;\n\n const toolbarNode = hasToolbar\n ? toolbar ?? (\n <ItemTableToolbar\n isSearchable={isSearchable}\n filters={filters}\n // The bar takes the actions group rather than sitting beside it: the\n // two compete for the same space, and while rows are selected the\n // bulk actions are what the user is reaching for.\n actions={isBulkBarInToolbar ? bulkBar : actions}\n isLoading={isLoading}\n styles={toolbarStyles}\n searchStyles={searchStyles}\n onRefresh={onRefresh}\n />\n )\n : null;\n\n /**\n * Pagination that cannot do anything is noise: one page of five rows still\n * renders \"1–5 of 5\", a page-size selector whose every option shows the same\n * five rows, and a solitary \"1\" button.\n *\n * \"Cannot do anything\" is both conditions together — a single page *and* a\n * total that even the smallest page size would not split. A 15-row single\n * page stays, because choosing \"10 / page\" would genuinely paginate it.\n */\n const smallestPageSize = pageSizeOptions?.length\n ? Math.min(...pageSizeOptions)\n : pageSize;\n\n const isPaginationUseless =\n autoHidePagination &&\n !hasNextPage &&\n pageInfo.totalPages <= 1 &&\n total <= smallestPageSize;\n\n const showPagination = isPaginated && !isPaginationUseless;\n\n const hasFooter =\n footer !== undefined ||\n showPagination ||\n footerStart != null ||\n footerCenter != null ||\n footerEnd != null;\n\n const footerNode = hasFooter\n ? footer ?? (\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 )\n : null;\n\n const bodyRef = useRef<HTMLTableSectionElement>(null);\n\n const rowKeys = useMemo(\n () =>\n visibleRows.map((row, index) =>\n String(visibleRowKeys?.[index] ?? resolvedGetRowKey(row, index)),\n ),\n [visibleRows, visibleRowKeys, resolvedGetRowKey],\n );\n\n const handleReorder = useEvent((nextKeys: string[]) => {\n const byKey = new Map(\n visibleRows.map((row, index) => [\n String(resolvedGetRowKey(row, index)),\n row,\n ]),\n );\n\n onReorder?.(\n nextKeys,\n nextKeys\n .map((key) => byKey.get(key))\n .filter((row): row is T => row !== undefined),\n );\n });\n\n /**\n * `DraggableCollection` owns the React Aria drag/drop hooks and hands the two\n * states down. It is only mounted when reordering is on, so a plain table\n * pays nothing for it.\n *\n * `RowCollection` and the `SelectionManager` from `useTableSelection` satisfy\n * its structural `state` contract unchanged — both exist even when selection\n * itself is off.\n */\n const renderTable = (\n dragState?: any,\n dropState?: any,\n collectionProps?: Record<string, any>,\n ) => (\n <TableView<T>\n rootRef={rootRef}\n dragState={dragState}\n dropState={dropState}\n collectionProps={collectionProps}\n bodyRef={bodyRef}\n qa={qa || 'ItemTable'}\n rows={visibleRows}\n rowKeys={visibleRowKeys}\n // `aria-rowindex` is document-absolute by contract: on page 3 a screen\n // reader should hear \"row 51 of 240\", not \"row 1 of 25\". Infinite scroll\n // never offsets — every loaded row is already in `visibleRows`.\n // `isPaginated` already excludes infinite scroll, where every loaded row\n // is in `visibleRows` and there is no page to offset by.\n rowIndexOffset={\n treeModel ? 0 : isPaginated ? (pageInfo.page - 1) * pageSize : 0\n }\n totalRowCount={treeModel ? visibleRows.length : total}\n getRowKey={resolvedGetRowKey}\n layout={layout}\n onScrollerRef={setScrollerEl}\n size={size}\n shape={shape}\n rowHeight={rowHeight}\n headerHeight={headerHeight}\n isHeaderHidden={isHeaderHidden}\n isHeaderSticky={isHeaderSticky}\n isAutoHeight={isAutoHeight}\n isVirtualized={isVirtualized}\n virtualizeThreshold={virtualizeThreshold}\n overscan={overscan}\n isStriped={isStriped}\n isRowMoveAnimated={isRowMoveAnimated}\n isLoading={isLoading}\n loadingIndicator={loadingIndicator}\n selection={selection}\n selectionTooltip={selectionTooltip}\n rowLink={rowLink}\n onRowAction={onRowAction}\n onLoadMore={isInfinite ? onLoadMore : undefined}\n hasMore={hasMore}\n isLoadingMore={isLoadingMore}\n loadMoreMargin={loadMoreMargin}\n isReorderable={isDragEnabled}\n isResizable={isResizable}\n onColumnResize={handleColumnResize}\n onColumnResizeEnd={handleColumnResizeEnd}\n rowMenu={resolveRowMenu}\n rowContextMenu={rowContextMenu}\n onRowMenuAction={onRowMenuAction}\n rowMenuTriggerProps={rowMenuTriggerProps}\n skeletonRowCount={skeletonRowCount}\n emptyLabel={emptyLabel ?? t('itemTable.noItems', 'No items')}\n noResultsLabel={\n noResultsLabel ?? t('itemTable.noResults', 'No results found')\n }\n error={error}\n toolbar={toolbarNode}\n footer={footerNode}\n isFiltered={isFiltered ?? isSearching}\n sortMode={treeSortMode}\n sort={sort}\n onColumnSort={toggleSort}\n onColumnSortChange={setColumnSort}\n columnContextMenu={columnContextMenu}\n onColumnMenuAction={onColumnMenuAction}\n columnMenuTriggerProps={columnMenuTriggerProps}\n columnMenuProps={columnMenuProps}\n getRowProps={getRowProps}\n ariaLabel={ariaLabel}\n styles={rootStyles}\n headerStyles={headerStyles}\n headerCellStyles={headerCellStyles}\n headerPreset={headerPreset}\n bodyStyles={bodyStyles}\n rowStyles={rowStyles}\n cellStyles={cellStyles}\n mods={mods}\n overlay={bulkBarPlacement === 'floating' ? bulkBar : null}\n tree={\n treeModel\n ? {\n state: treeState.state,\n ariaProps: treeState.ariaProps,\n nodes: treeState.visibleNodes,\n entries: visibleTreeEntries,\n columnKey: resolvedTreeColumnKey!,\n }\n : undefined\n }\n />\n );\n\n const rowByKeyForDrop = useMemo(() => {\n const map = new Map<string, T>();\n\n visibleRows.forEach((row, index) =>\n map.set(\n String(visibleRowKeys?.[index] ?? resolvedGetRowKey(row, index)),\n row,\n ),\n );\n\n return map;\n }, [visibleRows, visibleRowKeys, resolvedGetRowKey]);\n\n const handleItemDrop = useEvent((targetKey: Key, draggedKeys: Key[]) => {\n if (!dropOnRow) return;\n\n const target = rowByKeyForDrop.get(String(targetKey));\n\n if (!target) return;\n\n const draggedKeySet = new Set(draggedKeys);\n const topmostDraggedKeys = treeModel\n ? draggedKeys.filter((key) => {\n let parent = treeModel.parentOf.get(key);\n while (parent != null) {\n if (draggedKeySet.has(parent)) return false;\n parent = treeModel.parentOf.get(parent);\n }\n return true;\n })\n : draggedKeys;\n\n if (\n treeModel &&\n topmostDraggedKeys.some((key) =>\n isTableTreeDescendant(treeModel, targetKey, key),\n )\n ) {\n return;\n }\n\n const dragged = topmostDraggedKeys\n .map((key) => rowByKeyForDrop.get(String(key)))\n // A row cannot be dropped on itself.\n .filter((row): row is T => row !== undefined && row !== target);\n\n if (!dragged.length) return;\n if (dropOnRow.isAllowed && !dropOnRow.isAllowed(dragged, target)) return;\n\n void dropOnRow.onDrop(dragged, target);\n });\n\n const renderDragPreview = useEvent((keys: Key[]) => (\n <ItemTableDragPreview<T>\n rows={keys\n .map((key) => rowByKeyForDrop.get(String(key)))\n .filter((row): row is T => row !== undefined)}\n getItemDragInfo={getItemDragInfo!}\n />\n ));\n\n const shouldAcceptItemDrop = useEvent((targetKey: Key) => {\n const target = rowByKeyForDrop.get(String(targetKey));\n\n return target != null && (dropOnRow?.isTarget(target) ?? false);\n });\n\n // Dropping onto a row and reordering both need the drag machinery.\n const isDragEnabled = (!treeModel && isReorderable) || dropOnRow != null;\n\n const table = isDragEnabled ? (\n <DraggableCollection\n state={{\n collection: selection.collection,\n selectionManager: selection.selectionManager as any,\n disabledKeys: new Set(disabledKeys ?? []),\n }}\n // The element that directly contains the rows. React Aria's\n // `ListDropTargetDelegate` measures the drop position from this element's\n // children, so pointing it at the table root would leave every drop\n // unresolvable — the row lifts but never lands.\n listRef={bodyRef}\n orderedKeys={rowKeys}\n orientation=\"vertical\"\n onReorder={!treeModel && isReorderable ? handleReorder : undefined}\n onItemDrop={dropOnRow ? handleItemDrop : undefined}\n shouldAcceptItemDrop={dropOnRow ? shouldAcceptItemDrop : undefined}\n renderPreview={getItemDragInfo ? renderDragPreview : undefined}\n >\n {(dragState, dropState, collectionProps) =>\n renderTable(dragState, dropState, collectionProps)\n }\n </DraggableCollection>\n ) : (\n renderTable()\n );\n\n // The provider always wraps, so `ItemTable.Search` works from a custom\n // `toolbar` as well as from the built-in one.\n return (\n <ItemTableChromeProvider\n value={{\n searchValue,\n setSearchValue,\n searchPlaceholder,\n isLoading,\n onRefresh,\n selectedKeys: selection.selectedKeys,\n selectedRows: selection.selectedRows,\n selectedCount: selection.selectedCount,\n clearSelection: selection.clearSelection,\n }}\n >\n {table}\n </ItemTableChromeProvider>\n );\n}\n\nconst _ItemTable = Object.assign(\n forwardRef(ItemTable) as unknown as (<T = any>(\n props: CubeItemTableProps<T> & { ref?: ForwardedRef<HTMLDivElement> },\n ) => ReactElement) & { displayName?: string },\n {\n /** The table's search input, bound to the table's own state. */\n Search: ItemTableSearch,\n /** The default toolbar row, for rebuilding it around extra content. */\n Toolbar: ItemTableToolbar,\n /** The selection action bar, for placing it outside the default chrome. */\n BulkBar: ItemTableBulkBar,\n },\n);\n\n_ItemTable.displayName = 'ItemTable';\n\nexport { _ItemTable as ItemTable };\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DA,MAAMoD,eAAuC,EAAE;AAE/C,SAASE,iBAAoBC,QAAgB;AAC3C,SAAQC,KAAQE,UAAuB;EACrC,MAAMC,QAASH,MAAcD;AAE7B,SAAOI,SAAS,OAAOD,QAASC;;;AAIpC,SAASC,UACPC,OACAC,KACc;CACd,MAAM,EACJE,MACAC,SACAV,SAAS,MACTW,WACAC,gBACAC,eACAC,cACAC,qBACAC,UACAC,YAAY,OACZC,mBAAmB,WACnBC,eACAC,aACAC,SACAC,aACAC,SACAC,iBAAiB,OACjBC,iBACAC,qBACAC,mBAAmB,YACnBC,eACAC,cAAcC,kBACdC,qBACAC,mBACAC,gBAAgB,QAChBC,iBACAC,kBACAC,cACAC,wBAAwB,WACxBC,mBAAmB,GACnBC,YACAC,gBACAC,OACAC,YACAC,SACAC,eAAe,OACfC,aAAa,UACbC,mBACAC,aAAaC,iBACbC,oBACAC,gBACAC,cAAc,KACdC,cACAC,SACAC,SACAC,WACAC,iBAAiB,UACjBC,UAAUC,cACVC,kBAAkB,IAClBC,qBAAqB,MACrBC,YACAC,SACAC,eACAC,gBACAC,YACAC,SACAC,gBAAgB,OAChBC,WACAC,WACAC,iBACAC,cAAc,OACdC,cAAcC,kBACdC,qBACAC,gBACAC,mBACAC,oBACAC,wBACAC,iBACAC,kBACAC,kBAAkB;EAAC;EAAI;EAAI;EAAI;EAAK;EAAI,EACxCC,MAAMC,UACNC,aACAC,cACAC,OAAOC,WACPC,YACAC,aACAC,UAAU,MACVC,QACAC,aACAC,cACAC,WACAC,UACAC,MAAMC,UACNC,aACAC,cACAC,QAAQ,SACRC,OAAO,UACPC,WACAC,cACAC,YAAY,OACZC,iBAAiB,OACjBC,iBAAiB,MACjBC,eAAe,OACfC,gBAAgB,QAChBC,sBAAsB,IACtBC,WAAW,IACXC,aACAC,WACAC,IACAC,MACAC,QACAC,cACAC,kBACAC,eAAe,MACfC,eACAC,cACAC,cACAC,YACAC,WACAC,YACAC,sBACEvH;CAEJ,MAAM,EAAEwH,MAAM5K,SAAS;CAGvB,MAAM8K,UAAU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"}
1
+ {"version":3,"file":"ItemTable.js","names":["CONTAINER_STYLES","forwardRef","useMemo","useRef","useState","useI18n","useCombinedRefs","extractStyles","mergeStyleLayers","DraggableCollection","ROW_MENU_COLUMN_KEY","ROW_MENU_COLUMN_WIDTH","filterTableTree","TableView","useContainerWidth","getColumnText","matchesTableSearch","useTableSearch","SELECTION_COLUMN_KEY","SELECTION_COLUMN_WIDTH","useTableStorage","useTableTreeState","ItemTableBulkBar","ItemTableFooter","ItemTableChromeProvider","ItemTableSearch","ItemTableToolbar","useItemTableColumnWidths","useItemTableDragDrop","useItemTablePagination","useItemTableSelection","useItemTableSort","useItemTableTreeModel","Key","ForwardedRef","ReactElement","ReactNode","CubeTableRowContext","CubeItemTableProps","defaultGetRowKey","rowKey","row","T","index","value","ItemTable","props","ref","$","_c","data","columns","t0","getRowKey","getRowChildren","treeColumnKey","expandedKeys","defaultExpandedKeys","onExpand","isLoading","t1","loadingIndicator","t2","selectionMode","bulkActions","rowLink","onRowAction","rowMenu","rowContextMenu","t3","onRowMenuAction","rowMenuTriggerProps","bulkBarPlacement","t4","bulkBarStyles","selectedKeys","selectedKeysProp","defaultSelectedKeys","onSelectionChange","selectAllMode","t5","isRowSelectable","selectionTooltip","disabledKeys","treeSelectionBehavior","t6","skeletonRowCount","t7","emptyLabel","noResultsLabel","error","isFiltered","toolbar","isSearchable","t8","searchMode","t9","searchPlaceholder","searchValue","searchValueProp","defaultSearchValue","onSearchChange","searchDelay","t10","searchFilter","filters","actions","onRefresh","paginationMode","t11","pageSize","pageSizeProp","defaultPageSize","t12","autoHidePagination","t13","onLoadMore","hasMore","isLoadingMore","loadMoreMargin","storageKey","persist","isReorderable","t14","onReorder","dropOnRow","getItemDragInfo","isResizable","t15","columnWidths","columnWidthsProp","defaultColumnWidths","onColumnResize","columnContextMenu","onColumnMenuAction","columnMenuTriggerProps","columnMenuProps","onPageSizeChange","pageSizeOptions","t16","page","pageProp","defaultPage","onPageChange","total","totalProp","totalPages","hasNextPage","summary","t17","footer","footerStart","footerCenter","footerEnd","sortMode","sort","sortProp","defaultSort","onSortChange","shape","t18","size","t19","rowHeight","headerHeight","isStriped","t20","isHeaderHidden","t21","isHeaderSticky","t22","isAutoHeight","t23","isVirtualized","t24","virtualizeThreshold","t25","overscan","t26","getRowProps","ariaLabel","qa","mods","styles","headerStyles","headerCellStyles","headerPreset","t27","toolbarStyles","searchStyles","footerStyles","bodyStyles","rowStyles","cellStyles","isRowMoveAnimated","undefined","t28","t","localRef","rootRef","scrollerEl","setScrollerEl","containerWidth","t29","rootStyles","t30","resolvedGetRowKey","t31","treeModel","resolvedTreeColumnKey","t32","t33","rows","mode","defaultValue","onChange","delay","filter","setSearchValue","searchedRows","query","isSearching","t34","bb0","t35","Symbol","for","Set","t36","roots","forcedExpandedKeys","node","sourceIndex","searchedTree","storage","tree","sortedRows","sortedTreeRoots","resolvedSortMode","toggleSort","setColumnSort","t37","treeRoots","isTree","autoHide","pagination","t38","byKey","Map","t39","t40","node_0","column","find","entry","key","String","t41","pageTreeRoots","allNodesByKey","getTextValue","treeState","visibleTreeEntries","visibleEntries","visibleRows","map","_temp","pageRows","visibleRowKeys","_temp2","selection","rowKeys","t42","ctx","resolveRowMenu","t43","width","medium","align","const","trailingColumns","t44","isEnabled","leadingColumns","t45","layout","handleColumnResize","handleColumnResizeEnd","hasBulkSelection","length","selectedCount","t46","bulkBar","isBulkBarInToolbar","hasToolbar","t47","toolbarNode","hasFooter","control","t48","footerNode","bodyRef","drag","renderTable","dragState","dropState","collectionProps","isPaginated","isInfinite","state","ariaProps","nodes","visibleNodes","entries","columnKey","table","collection","selectionManager","orderedKeys","onItemDrop","shouldAcceptItemDrop","renderPreview","dragState_0","dropState_0","collectionProps_0","t49","clearSelection","selectedRows","t50","entry_1","entry_0","_ItemTable","Object","assign","HTMLDivElement","displayName","Search","Toolbar","BulkBar"],"sources":["../../../../src/components/data/ItemTable/ItemTable.tsx"],"sourcesContent":["import { CONTAINER_STYLES } from '@tenphi/tasty';\nimport { forwardRef, useMemo, useRef, useState } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { useCombinedRefs } from '../../../utils/react';\nimport { extractStyles, mergeStyleLayers } from '../../../utils/styles';\nimport { DraggableCollection } from '../../shared/DraggableCollection';\nimport {\n ROW_MENU_COLUMN_KEY,\n ROW_MENU_COLUMN_WIDTH,\n} from '../TableBase/row-menu';\nimport { filterTableTree } from '../TableBase/table-tree';\nimport { TableView } from '../TableBase/TableView';\nimport { useContainerWidth } from '../TableBase/use-container-width';\nimport { getColumnText } from '../TableBase/use-table-columns';\nimport {\n matchesTableSearch,\n useTableSearch,\n} from '../TableBase/use-table-search';\nimport {\n SELECTION_COLUMN_KEY,\n SELECTION_COLUMN_WIDTH,\n} from '../TableBase/use-table-selection';\nimport { useTableStorage } from '../TableBase/use-table-storage';\nimport { useTableTreeState } from '../TableBase/use-table-tree-state';\n\nimport { ItemTableBulkBar } from './ItemTableBulkBar';\nimport { ItemTableFooter } from './ItemTableFooter';\nimport {\n ItemTableChromeProvider,\n ItemTableSearch,\n ItemTableToolbar,\n} from './ItemTableToolbar';\nimport { useItemTableColumnWidths } from './use-item-table-column-widths';\nimport { useItemTableDragDrop } from './use-item-table-drag-drop';\nimport { useItemTablePagination } from './use-item-table-pagination';\nimport { useItemTableSelection } from './use-item-table-selection';\nimport { useItemTableSort } from './use-item-table-sort';\nimport { useItemTableTreeModel } from './use-item-table-tree-model';\n\nimport type { Key } from '@react-types/shared';\nimport type { ForwardedRef, ReactElement, ReactNode } from 'react';\nimport type { CubeTableRowContext } from '../TableBase/types';\nimport type { CubeItemTableProps } from './types';\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\nfunction ItemTable<T = any>(\n props: CubeItemTableProps<T>,\n ref: ForwardedRef<HTMLDivElement>,\n): ReactElement {\n const {\n data,\n columns,\n rowKey = 'id',\n getRowKey,\n getRowChildren,\n treeColumnKey,\n expandedKeys,\n defaultExpandedKeys,\n onExpand,\n isLoading = false,\n loadingIndicator = 'overlay',\n selectionMode,\n bulkActions,\n rowLink,\n onRowAction,\n rowMenu,\n rowContextMenu = false,\n onRowMenuAction,\n rowMenuTriggerProps,\n bulkBarPlacement = 'floating',\n bulkBarStyles,\n selectedKeys: selectedKeysProp,\n defaultSelectedKeys,\n onSelectionChange,\n selectAllMode = 'page',\n isRowSelectable,\n selectionTooltip,\n disabledKeys,\n treeSelectionBehavior = 'cascade',\n skeletonRowCount = 6,\n emptyLabel,\n noResultsLabel,\n error,\n isFiltered,\n toolbar,\n isSearchable = false,\n searchMode = 'client',\n searchPlaceholder,\n searchValue: searchValueProp,\n defaultSearchValue,\n onSearchChange,\n searchDelay = 500,\n searchFilter,\n filters,\n actions,\n onRefresh,\n paginationMode = 'client',\n pageSize: pageSizeProp,\n defaultPageSize = 50,\n autoHidePagination = true,\n onLoadMore,\n hasMore,\n isLoadingMore,\n loadMoreMargin,\n storageKey,\n persist,\n isReorderable = false,\n onReorder,\n dropOnRow,\n getItemDragInfo,\n isResizable = false,\n columnWidths: columnWidthsProp,\n defaultColumnWidths,\n onColumnResize,\n columnContextMenu,\n onColumnMenuAction,\n columnMenuTriggerProps,\n columnMenuProps,\n onPageSizeChange,\n pageSizeOptions = [10, 20, 50, 100, 500],\n page: pageProp,\n defaultPage,\n onPageChange,\n total: totalProp,\n totalPages,\n hasNextPage,\n summary = true,\n footer,\n footerStart,\n footerCenter,\n footerEnd,\n sortMode,\n sort: sortProp,\n defaultSort,\n onSortChange,\n shape = 'plain',\n size = 'medium',\n rowHeight,\n headerHeight,\n isStriped = false,\n isHeaderHidden = false,\n isHeaderSticky = true,\n isAutoHeight = false,\n isVirtualized = 'auto',\n virtualizeThreshold = 50,\n overscan = 20,\n getRowProps,\n ariaLabel,\n qa,\n mods,\n styles,\n headerStyles,\n headerCellStyles,\n headerPreset = 'c3',\n toolbarStyles,\n searchStyles,\n footerStyles,\n bodyStyles,\n rowStyles,\n cellStyles,\n isRowMoveAnimated,\n } = props;\n\n const { t } = useI18n();\n\n const localRef = useRef<HTMLDivElement>(null);\n const rootRef = useCombinedRefs(ref, localRef);\n\n // Held in state, not a ref: the virtualized path's scroller is created by\n // Virtuoso and arrives through a callback, and the column layout has to\n // re-derive once it does.\n const [scrollerEl, setScrollerEl] = useState<HTMLDivElement | null>(null);\n const containerWidth = useContainerWidth(scrollerEl);\n\n // Style props (`height`, `maxHeight`, `margin`, …) land on the root frame.\n // `height` matters most: there is no page-scroll mode, so bounding the table\n // is what turns the body into a scroller and pins the header.\n const rootStyles = mergeStyleLayers(\n extractStyles(props, CONTAINER_STYLES),\n styles,\n );\n\n const resolvedGetRowKey = useMemo(\n () => getRowKey ?? defaultGetRowKey<T>(rowKey),\n [getRowKey, rowKey],\n );\n\n const { treeModel, treeColumnKey: resolvedTreeColumnKey } =\n useItemTableTreeModel<T>({\n data,\n columns,\n getRowKey: resolvedGetRowKey,\n getRowChildren,\n treeColumnKey,\n isReorderable,\n });\n\n const {\n searchValue,\n setSearchValue,\n searchedRows,\n query,\n isFiltered: isSearching,\n } = useTableSearch<T>({\n columns,\n rows: data,\n // Tree filtering needs to preserve ancestors and descendants, so the flat\n // hook owns only the controlled/debounced value in this mode.\n mode: treeModel ? 'server' : searchMode,\n value: searchValueProp,\n defaultValue: defaultSearchValue,\n onChange: onSearchChange,\n delay: searchDelay,\n filter: searchFilter,\n });\n\n const searchedTree = useMemo(() => {\n if (!treeModel) return null;\n if (searchMode !== 'client' || !query) {\n return { roots: treeModel.roots, forcedExpandedKeys: new Set<Key>() };\n }\n\n return filterTableTree(treeModel.roots, (node) =>\n searchFilter\n ? searchFilter(node.row, query)\n : matchesTableSearch(columns, node.row, node.sourceIndex, query),\n );\n }, [treeModel, searchMode, query, searchFilter, columns]);\n\n const storage = useTableStorage(storageKey, persist);\n\n const {\n sort,\n sortedRows,\n sortedTreeRoots,\n mode: resolvedSortMode,\n toggleSort,\n setColumnSort,\n } = useItemTableSort<T>({\n columns,\n rows: searchedRows,\n tree: searchedTree,\n mode: sortMode,\n sort: sortProp,\n defaultSort,\n onSortChange,\n storage,\n });\n\n // Search → sort → paginate. Paging last, so a page always reflects the rows\n // the user is actually looking at.\n const pagination = useItemTablePagination<T>({\n mode: paginationMode,\n rows: sortedRows,\n treeRoots: sortedTreeRoots,\n isTree: treeModel != null,\n pageSize: pageSizeProp,\n defaultPageSize,\n onPageSizeChange,\n pageSizeOptions,\n page: pageProp,\n defaultPage,\n onPageChange,\n total: totalProp,\n totalPages,\n hasNextPage,\n summary,\n autoHide: autoHidePagination,\n storage,\n });\n\n const treeState = useTableTreeState<T>({\n roots: pagination.pageTreeRoots,\n allNodesByKey: treeModel?.byKey ?? new Map(),\n expandedKeys,\n defaultExpandedKeys,\n forcedExpandedKeys: searchedTree?.forcedExpandedKeys,\n disabledKeys,\n getTextValue: (node) => {\n const column = columns.find(\n (entry) => entry.key === resolvedTreeColumnKey,\n );\n return column\n ? getColumnText(column, node.row, node.sourceIndex) ?? String(node.key)\n : String(node.key);\n },\n onExpand,\n ariaLabel,\n });\n\n const visibleTreeEntries = treeModel ? treeState.visibleEntries : [];\n const visibleRows = treeModel\n ? visibleTreeEntries.map((entry) => entry.row)\n : pagination.pageRows;\n const visibleRowKeys = treeModel\n ? visibleTreeEntries.map((entry) => entry.key)\n : undefined;\n\n const selection = useItemTableSelection<T>({\n rows: visibleRows,\n rowKeys: visibleRowKeys,\n sortedRows,\n isTree: treeModel != null,\n sortedTreeRoots,\n pageTreeRoots: pagination.pageTreeRoots,\n paginationMode,\n getRowKey: resolvedGetRowKey,\n selectionMode,\n bulkActions,\n selectedKeys: selectedKeysProp,\n defaultSelectedKeys,\n onSelectionChange,\n selectAllMode,\n isRowSelectable,\n disabledKeys,\n treeSelectionBehavior,\n });\n\n // A `ReactNode` menu applies to every row; a function decides per row. The\n // renderer only ever sees the function form.\n const resolveRowMenu = useMemo(\n () =>\n rowMenu == null\n ? undefined\n : typeof rowMenu === 'function'\n ? (rowMenu as (\n row: T,\n ctx: CubeTableRowContext<T>,\n ) => ReactNode | null)\n : () => rowMenu as ReactNode,\n [rowMenu],\n );\n\n const trailingColumns = useMemo(\n () =>\n resolveRowMenu && rowContextMenu === true\n ? [\n {\n key: ROW_MENU_COLUMN_KEY,\n width:\n ROW_MENU_COLUMN_WIDTH[size] ?? ROW_MENU_COLUMN_WIDTH.medium,\n align: 'center' as const,\n },\n ]\n : undefined,\n [resolveRowMenu, rowContextMenu, size],\n );\n\n const leadingColumns = useMemo(\n () =>\n selection.isEnabled\n ? [\n {\n key: SELECTION_COLUMN_KEY,\n width:\n SELECTION_COLUMN_WIDTH[size] ?? SELECTION_COLUMN_WIDTH.medium,\n align: 'center' as const,\n },\n ]\n : undefined,\n [selection.isEnabled, size],\n );\n\n const { layout, handleColumnResize, handleColumnResizeEnd } =\n useItemTableColumnWidths<T>({\n columns,\n containerWidth,\n leadingColumns,\n trailingColumns,\n columnWidths: columnWidthsProp,\n defaultColumnWidths,\n onColumnResize,\n storage,\n });\n\n const hasBulkSelection =\n bulkActions != null &&\n bulkActions.length > 0 &&\n selection.selectedCount > 0;\n\n const bulkBar = hasBulkSelection ? (\n <ItemTableBulkBar<T>\n actions={bulkActions!}\n placement={bulkBarPlacement}\n styles={bulkBarStyles}\n />\n ) : null;\n\n const isBulkBarInToolbar = bulkBar != null && bulkBarPlacement === 'toolbar';\n\n const hasToolbar =\n toolbar !== undefined ||\n isSearchable ||\n filters != null ||\n actions != null ||\n onRefresh != null ||\n isBulkBarInToolbar;\n\n const toolbarNode = hasToolbar\n ? toolbar ?? (\n <ItemTableToolbar\n isSearchable={isSearchable}\n filters={filters}\n // The bar takes the actions group rather than sitting beside it: the\n // two compete for the same space, and while rows are selected the\n // bulk actions are what the user is reaching for.\n actions={isBulkBarInToolbar ? bulkBar : actions}\n isLoading={isLoading}\n styles={toolbarStyles}\n searchStyles={searchStyles}\n onRefresh={onRefresh}\n />\n )\n : null;\n\n const hasFooter =\n footer !== undefined ||\n pagination.control != null ||\n footerStart != null ||\n footerCenter != null ||\n footerEnd != null;\n\n const footerNode = hasFooter\n ? footer ?? (\n <ItemTableFooter\n start={footerStart}\n center={footerCenter}\n end={footerEnd}\n styles={footerStyles}\n pagination={pagination.control}\n />\n )\n : null;\n\n const bodyRef = useRef<HTMLTableSectionElement>(null);\n\n const drag = useItemTableDragDrop<T>({\n rows: visibleRows,\n rowKeys: visibleRowKeys,\n getRowKey: resolvedGetRowKey,\n treeModel,\n isReorderable,\n onReorder,\n dropOnRow,\n getItemDragInfo,\n });\n\n /**\n * `DraggableCollection` owns the React Aria drag/drop hooks and hands the two\n * states down. It is only mounted when reordering is on, so a plain table\n * pays nothing for it.\n *\n * `RowCollection` and the `SelectionManager` from `useTableSelection` satisfy\n * its structural `state` contract unchanged — both exist even when selection\n * itself is off.\n */\n const renderTable = (\n dragState?: any,\n dropState?: any,\n collectionProps?: Record<string, any>,\n ) => (\n <TableView<T>\n rootRef={rootRef}\n dragState={dragState}\n dropState={dropState}\n collectionProps={collectionProps}\n bodyRef={bodyRef}\n qa={qa || 'ItemTable'}\n rows={visibleRows}\n rowKeys={visibleRowKeys}\n // `aria-rowindex` is document-absolute by contract: on page 3 a screen\n // reader should hear \"row 51 of 240\", not \"row 1 of 25\". Infinite scroll\n // never offsets — every loaded row is already in `visibleRows`.\n // `isPaginated` already excludes infinite scroll, where every loaded row\n // is in `visibleRows` and there is no page to offset by.\n rowIndexOffset={\n treeModel\n ? 0\n : pagination.isPaginated\n ? (pagination.page - 1) * pagination.pageSize\n : 0\n }\n totalRowCount={treeModel ? visibleRows.length : pagination.total}\n getRowKey={resolvedGetRowKey}\n layout={layout}\n onScrollerRef={setScrollerEl}\n size={size}\n shape={shape}\n rowHeight={rowHeight}\n headerHeight={headerHeight}\n isHeaderHidden={isHeaderHidden}\n isHeaderSticky={isHeaderSticky}\n isAutoHeight={isAutoHeight}\n isVirtualized={isVirtualized}\n virtualizeThreshold={virtualizeThreshold}\n overscan={overscan}\n isStriped={isStriped}\n isRowMoveAnimated={isRowMoveAnimated}\n isLoading={isLoading}\n loadingIndicator={loadingIndicator}\n selection={selection}\n selectionTooltip={selectionTooltip}\n rowLink={rowLink}\n onRowAction={onRowAction}\n onLoadMore={pagination.isInfinite ? onLoadMore : undefined}\n hasMore={hasMore}\n isLoadingMore={isLoadingMore}\n loadMoreMargin={loadMoreMargin}\n isReorderable={drag.isEnabled}\n isResizable={isResizable}\n onColumnResize={handleColumnResize}\n onColumnResizeEnd={handleColumnResizeEnd}\n rowMenu={resolveRowMenu}\n rowContextMenu={rowContextMenu}\n onRowMenuAction={onRowMenuAction}\n rowMenuTriggerProps={rowMenuTriggerProps}\n skeletonRowCount={skeletonRowCount}\n emptyLabel={emptyLabel ?? t('itemTable.noItems', 'No items')}\n noResultsLabel={\n noResultsLabel ?? t('itemTable.noResults', 'No results found')\n }\n error={error}\n toolbar={toolbarNode}\n footer={footerNode}\n isFiltered={isFiltered ?? isSearching}\n sortMode={resolvedSortMode}\n sort={sort}\n onColumnSort={toggleSort}\n onColumnSortChange={setColumnSort}\n columnContextMenu={columnContextMenu}\n onColumnMenuAction={onColumnMenuAction}\n columnMenuTriggerProps={columnMenuTriggerProps}\n columnMenuProps={columnMenuProps}\n getRowProps={getRowProps}\n ariaLabel={ariaLabel}\n styles={rootStyles}\n headerStyles={headerStyles}\n headerCellStyles={headerCellStyles}\n headerPreset={headerPreset}\n bodyStyles={bodyStyles}\n rowStyles={rowStyles}\n cellStyles={cellStyles}\n mods={mods}\n overlay={bulkBarPlacement === 'floating' ? bulkBar : null}\n tree={\n treeModel\n ? {\n state: treeState.state,\n ariaProps: treeState.ariaProps,\n nodes: treeState.visibleNodes,\n entries: visibleTreeEntries,\n columnKey: resolvedTreeColumnKey!,\n }\n : undefined\n }\n />\n );\n\n const table = drag.isEnabled ? (\n <DraggableCollection\n state={{\n collection: selection.collection,\n selectionManager: selection.selectionManager as any,\n disabledKeys: new Set(disabledKeys ?? []),\n }}\n // The element that directly contains the rows. React Aria's\n // `ListDropTargetDelegate` measures the drop position from this element's\n // children, so pointing it at the table root would leave every drop\n // unresolvable — the row lifts but never lands.\n listRef={bodyRef}\n orderedKeys={drag.orderedKeys}\n orientation=\"vertical\"\n onReorder={drag.onReorder}\n onItemDrop={drag.onItemDrop}\n shouldAcceptItemDrop={drag.shouldAcceptItemDrop}\n renderPreview={drag.renderPreview}\n >\n {(dragState, dropState, collectionProps) =>\n renderTable(dragState, dropState, collectionProps)\n }\n </DraggableCollection>\n ) : (\n renderTable()\n );\n\n // The provider always wraps, so `ItemTable.Search` works from a custom\n // `toolbar` as well as from the built-in one.\n return (\n <ItemTableChromeProvider\n value={{\n searchValue,\n setSearchValue,\n searchPlaceholder,\n isLoading,\n onRefresh,\n selectedKeys: selection.selectedKeys,\n selectedRows: selection.selectedRows,\n selectedCount: selection.selectedCount,\n clearSelection: selection.clearSelection,\n }}\n >\n {table}\n </ItemTableChromeProvider>\n );\n}\n\nconst _ItemTable = Object.assign(\n forwardRef(ItemTable) as unknown as (<T = any>(\n props: CubeItemTableProps<T> & { ref?: ForwardedRef<HTMLDivElement> },\n ) => ReactElement) & { displayName?: string },\n {\n /** The table's search input, bound to the table's own state. */\n Search: ItemTableSearch,\n /** The default toolbar row, for rebuilding it around extra content. */\n Toolbar: ItemTableToolbar,\n /** The selection action bar, for placing it outside the default chrome. */\n BulkBar: ItemTableBulkBar,\n },\n);\n\n_ItemTable.displayName = 'ItemTable';\n\nexport { _ItemTable as ItemTable };\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.3 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { _Text } from "../../content/Text.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.3 | Cube Dev Team */
2
2
  import { _Text } from "../../content/Text.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.3 | Cube Dev Team */
2
2
  import { _Pagination } from "../../navigation/Pagination/Pagination.js";
3
3
  import { c } from "react-compiler-runtime";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.2 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.3 | Cube Dev Team */
2
2
  import { useI18n } from "../../../i18n/useI18n.js";
3
3
  import { Button } from "../../actions/index.js";
4
4
  import { ReloadIcon } from "../../../icons/ReloadIcon.js";
@@ -0,0 +1,97 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.3 | Cube Dev Team */
2
+ import { useEvent } from "../../../_internal/hooks/use-event.js";
3
+ import { freezeColumnWidths, useTableColumns } from "../TableBase/use-table-columns.js";
4
+ import { c } from "react-compiler-runtime";
5
+ import { useRef, useState } from "react";
6
+
7
+ //#region src/components/data/ItemTable/use-item-table-column-widths.ts
8
+ /** Stable identity, so the uncontrolled default does not change every render. */
9
+ const EMPTY_WIDTHS = {};
10
+ /**
11
+ * The column layout, with the widths a user resized: controlled or owned (and
12
+ * then persisted), plus the draft a resize gesture paints until it ends.
13
+ */
14
+ function useItemTableColumnWidths(t0) {
15
+ const $ = c(22);
16
+ const { columns, containerWidth, leadingColumns, trailingColumns, columnWidths: columnWidthsProp, defaultColumnWidths, onColumnResize, storage } = t0;
17
+ let t1;
18
+ if ($[0] !== columnWidthsProp || $[1] !== defaultColumnWidths || $[2] !== storage) {
19
+ t1 = () => (columnWidthsProp === void 0 && storage.has("columnWidths") ? storage.initial.columnWidths ?? defaultColumnWidths : defaultColumnWidths) ?? EMPTY_WIDTHS;
20
+ $[0] = columnWidthsProp;
21
+ $[1] = defaultColumnWidths;
22
+ $[2] = storage;
23
+ $[3] = t1;
24
+ } else t1 = $[3];
25
+ const [ownColumnWidths, setOwnColumnWidths] = useState(t1);
26
+ const [draftColumnWidths, setDraftColumnWidths] = useState(null);
27
+ const draftColumnWidthsRef = useRef(null);
28
+ const baseColumnWidths = columnWidthsProp ?? ownColumnWidths;
29
+ const columnWidths = draftColumnWidths ?? baseColumnWidths;
30
+ let t2;
31
+ if ($[4] !== columnWidths || $[5] !== columns || $[6] !== containerWidth || $[7] !== leadingColumns || $[8] !== trailingColumns) {
32
+ t2 = {
33
+ columns,
34
+ containerWidth,
35
+ columnWidths,
36
+ leadingColumns,
37
+ trailingColumns
38
+ };
39
+ $[4] = columnWidths;
40
+ $[5] = columns;
41
+ $[6] = containerWidth;
42
+ $[7] = leadingColumns;
43
+ $[8] = trailingColumns;
44
+ $[9] = t2;
45
+ } else t2 = $[9];
46
+ const layout = useTableColumns(t2);
47
+ let t3;
48
+ if ($[10] !== baseColumnWidths || $[11] !== layout) {
49
+ t3 = (key, width) => {
50
+ draftColumnWidthsRef.current = {
51
+ ...draftColumnWidthsRef.current ?? freezeColumnWidths(layout, baseColumnWidths),
52
+ [key]: Math.round(width)
53
+ };
54
+ setDraftColumnWidths(draftColumnWidthsRef.current);
55
+ };
56
+ $[10] = baseColumnWidths;
57
+ $[11] = layout;
58
+ $[12] = t3;
59
+ } else t3 = $[12];
60
+ const handleColumnResize = useEvent(t3);
61
+ let t4;
62
+ if ($[13] !== baseColumnWidths || $[14] !== columnWidthsProp || $[15] !== onColumnResize || $[16] !== storage) {
63
+ t4 = (key_0) => {
64
+ const next = draftColumnWidthsRef.current ?? baseColumnWidths;
65
+ if (columnWidthsProp === void 0) {
66
+ setOwnColumnWidths(next);
67
+ storage.write({ columnWidths: next });
68
+ }
69
+ onColumnResize?.(key_0, next[key_0], next);
70
+ draftColumnWidthsRef.current = null;
71
+ setDraftColumnWidths(null);
72
+ };
73
+ $[13] = baseColumnWidths;
74
+ $[14] = columnWidthsProp;
75
+ $[15] = onColumnResize;
76
+ $[16] = storage;
77
+ $[17] = t4;
78
+ } else t4 = $[17];
79
+ const handleColumnResizeEnd = useEvent(t4);
80
+ let t5;
81
+ if ($[18] !== handleColumnResize || $[19] !== handleColumnResizeEnd || $[20] !== layout) {
82
+ t5 = {
83
+ layout,
84
+ handleColumnResize,
85
+ handleColumnResizeEnd
86
+ };
87
+ $[18] = handleColumnResize;
88
+ $[19] = handleColumnResizeEnd;
89
+ $[20] = layout;
90
+ $[21] = t5;
91
+ } else t5 = $[21];
92
+ return t5;
93
+ }
94
+
95
+ //#endregion
96
+ export { useItemTableColumnWidths };
97
+ //# sourceMappingURL=use-item-table-column-widths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-item-table-column-widths.js","names":["useRef","useState","useEvent","freezeColumnWidths","useTableColumns","UseTableColumnsOptions","useTableStorage","CubeItemTableProps","EMPTY_WIDTHS","Record","UseItemTableColumnWidthsOptions","Omit","T","Pick","storage","ReturnType","useItemTableColumnWidths","t0","$","_c","columns","containerWidth","leadingColumns","trailingColumns","columnWidths","columnWidthsProp","defaultColumnWidths","onColumnResize","t1","undefined","has","initial","ownColumnWidths","setOwnColumnWidths","draftColumnWidths","setDraftColumnWidths","draftColumnWidthsRef","baseColumnWidths","t2","layout","t3","key","width","base","current","Math","round","handleColumnResize","t4","key_0","next","write","handleColumnResizeEnd","t5"],"sources":["../../../../src/components/data/ItemTable/use-item-table-column-widths.ts"],"sourcesContent":["import { useRef, useState } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport {\n freezeColumnWidths,\n useTableColumns,\n} from '../TableBase/use-table-columns';\n\nimport type { UseTableColumnsOptions } from '../TableBase/use-table-columns';\nimport type { useTableStorage } from '../TableBase/use-table-storage';\nimport type { CubeItemTableProps } from './types';\n\n/** Stable identity, so the uncontrolled default does not change every render. */\nconst EMPTY_WIDTHS: Record<string, number> = {};\n\nexport interface UseItemTableColumnWidthsOptions<T>\n extends Omit<UseTableColumnsOptions<T>, 'columnWidths'>,\n Pick<\n CubeItemTableProps<T>,\n 'columnWidths' | 'defaultColumnWidths' | 'onColumnResize'\n > {\n storage: ReturnType<typeof useTableStorage>;\n}\n\n/**\n * The column layout, with the widths a user resized: controlled or owned (and\n * then persisted), plus the draft a resize gesture paints until it ends.\n */\nexport function useItemTableColumnWidths<T>({\n columns,\n containerWidth,\n leadingColumns,\n trailingColumns,\n columnWidths: columnWidthsProp,\n defaultColumnWidths,\n onColumnResize,\n storage,\n}: UseItemTableColumnWidthsOptions<T>) {\n /**\n * Column widths, in three layers.\n *\n * The draft exists because a resize has to be visible *while* it happens, and\n * a controlled `columnWidths` cannot be: the consumer only learns the new\n * width from `onColumnResize`, which fires when the gesture ends. Without a\n * draft a controlled table simply would not move under the pointer.\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\n /**\n * The same draft, in a ref.\n *\n * A keyboard resize runs `useMove`'s whole start → move → end cycle inside\n * one key press, so the end handler would read the state from before the\n * move. The ref is what it actually settles on; the state exists only to\n * trigger the render.\n */\n const draftColumnWidthsRef = useRef<Record<string, number> | null>(null);\n\n const baseColumnWidths = columnWidthsProp ?? ownColumnWidths;\n const columnWidths = draftColumnWidths ?? baseColumnWidths;\n\n const layout = useTableColumns<T>({\n columns,\n containerWidth,\n columnWidths,\n leadingColumns,\n trailingColumns,\n });\n\n const handleColumnResize = useEvent((key: string, width: number) => {\n // First move of a drag freezes every column, so this changes exactly one\n // width instead of re-splitting the flex pool. See `freezeColumnWidths`.\n const base =\n draftColumnWidthsRef.current ??\n freezeColumnWidths(layout, baseColumnWidths);\n\n draftColumnWidthsRef.current = { ...base, [key]: Math.round(width) };\n setDraftColumnWidths(draftColumnWidthsRef.current);\n });\n\n // Once at the end: a callback per pixel would be unusable, and persisting\n // every frame would hammer `localStorage`.\n const handleColumnResizeEnd = useEvent((key: string) => {\n const next = draftColumnWidthsRef.current ?? baseColumnWidths;\n\n if (columnWidthsProp === undefined) {\n setOwnColumnWidths(next);\n storage.write({ columnWidths: next });\n }\n\n onColumnResize?.(key, next[key], next);\n\n // The prop (or `ownColumnWidths`) is the source of truth again. A\n // controlled consumer that ignores the callback reverts, which is what\n // being controlled means.\n draftColumnWidthsRef.current = null;\n setDraftColumnWidths(null);\n });\n\n return { layout, handleColumnResize, handleColumnResizeEnd };\n}\n"],"mappings":";;;;;;;;AAaA,MAAMQ,eAAuC,EAAE;;;;;AAe/C,SAAOQ,yBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAqC,MAAA,EAAAC,SAAAC,gBAAAC,gBAAAC,iBAAAC,cAAAC,kBAAAC,qBAAAC,gBAAAb,YAAAG;CASP,IAAAW;AAAA,KAAAV,EAAA,OAAAO,oBAAAP,EAAA,OAAAQ,uBAAAR,EAAA,OAAAJ,SAAA;AAYjCc,cACGH,qBAAqBI,UAAaf,QAAOgB,IAAK,eAExB,GADnBhB,QAAOiB,QAAQP,gBAAfE,sBADHA,wBAADlB;AAEwCU,IAAA,KAAAO;AAAAP,IAAA,KAAAQ;AAAAR,IAAA,KAAAJ;AAAAI,IAAA,KAAAU;OAAAA,MAAAV,EAAA;CAN5C,MAAA,CAAAc,iBAAAC,sBAA8ChC,SAG5C2B,GAID;CACD,MAAA,CAAAM,mBAAAC,wBAAkDlC,SAGxC,KAAK;CAUf,MAAAmC,uBAA6BpC,OAAsC,KAAK;CAExE,MAAAqC,mBAAyBZ,oBAAAO;CACzB,MAAAR,eAAqBU,qBAAAG;CAAsC,IAAAC;AAAA,KAAApB,EAAA,OAAAM,gBAAAN,EAAA,OAAAE,WAAAF,EAAA,OAAAG,kBAAAH,EAAA,OAAAI,kBAAAJ,EAAA,OAAAK,iBAAA;AAEzBe,OAAA;GAAAlB;GAAAC;GAAAG;GAAAF;GAAAC;GAMjC;AAAAL,IAAA,KAAAM;AAAAN,IAAA,KAAAE;AAAAF,IAAA,KAAAG;AAAAH,IAAA,KAAAI;AAAAJ,IAAA,KAAAK;AAAAL,IAAA,KAAAoB;OAAAA,MAAApB,EAAA;CAND,MAAAqB,SAAenC,gBAAmBkC,GAMhC;CAAC,IAAAE;AAAA,KAAAtB,EAAA,QAAAmB,oBAAAnB,EAAA,QAAAqB,QAAA;AAEiCC,QAAAC,KAAAC,UAAA;AAOlCN,wBAAoBQ,UAAW;IAAA,GAH7BR,qBAAoBQ,WACpBzC,mBAAmBoC,QAAQF,iBAAiB;KAEHI,MAAMI,KAAIC,MAAOJ,MAAK;IAArC;AAC5BP,wBAAqBC,qBAAoBQ,QAAS;;AACnD1B,IAAA,MAAAmB;AAAAnB,IAAA,MAAAqB;AAAArB,IAAA,MAAAsB;OAAAA,MAAAtB,EAAA;CATD,MAAA6B,qBAA2B7C,SAASsC,GASlC;CAAC,IAAAQ;AAAA,KAAA9B,EAAA,QAAAmB,oBAAAnB,EAAA,QAAAO,oBAAAP,EAAA,QAAAS,kBAAAT,EAAA,QAAAJ,SAAA;AAIoCkC,QAAAC,UAAA;GACrC,MAAAC,OAAad,qBAAoBQ,WAApBP;AAEb,OAAIZ,qBAAqBI,QAAS;AAChCI,uBAAmBiB,KAAK;AACxBpC,YAAOqC,MAAO,EAAA3B,cAAgB0B,MAAM,CAAC;;AAGvCvB,oBAAiBc,OAAKS,KAAKT,QAAMS,KAAK;AAKtCd,wBAAoBQ,UAAW;AAC/BT,wBAAqB,KAAK;;AAC3BjB,IAAA,MAAAmB;AAAAnB,IAAA,MAAAO;AAAAP,IAAA,MAAAS;AAAAT,IAAA,MAAAJ;AAAAI,IAAA,MAAA8B;OAAAA,MAAA9B,EAAA;CAfD,MAAAkC,wBAA8BlD,SAAS8C,GAerC;CAAC,IAAAK;AAAA,KAAAnC,EAAA,QAAA6B,sBAAA7B,EAAA,QAAAkC,yBAAAlC,EAAA,QAAAqB,QAAA;AAEIc,OAAA;GAAAd;GAAAQ;GAAAK;GAAqD;AAAAlC,IAAA,MAAA6B;AAAA7B,IAAA,MAAAkC;AAAAlC,IAAA,MAAAqB;AAAArB,IAAA,MAAAmC;OAAAA,MAAAnC,EAAA;AAAA,QAArDmC"}
@@ -0,0 +1,144 @@
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.3 | Cube Dev Team */
2
+ import { useEvent } from "../../../_internal/hooks/use-event.js";
3
+ import { isTableTreeDescendant } from "../TableBase/table-tree.js";
4
+ import { ItemTableDragPreview } from "./ItemTableDragPreview.js";
5
+ import { c } from "react-compiler-runtime";
6
+ import { jsx } from "react/jsx-runtime";
7
+
8
+ //#region src/components/data/ItemTable/use-item-table-drag-drop.tsx
9
+ /** The dragged keys whose ancestors are not being dragged as well. */
10
+ function getTopmostKeys(keys, parentOf) {
11
+ const keySet = new Set(keys);
12
+ return keys.filter((key) => {
13
+ let parent = parentOf.get(key);
14
+ while (parent != null) {
15
+ if (keySet.has(parent)) return false;
16
+ parent = parentOf.get(parent);
17
+ }
18
+ return true;
19
+ });
20
+ }
21
+ /**
22
+ * Row drag and drop: reordering flat rows, dropping rows onto a row, and the
23
+ * preview under the cursor. Returns the props `DraggableCollection` takes for
24
+ * them, each handler `undefined` while its feature is off, and whether any
25
+ * feature is on.
26
+ */
27
+ function useItemTableDragDrop(t0) {
28
+ const $ = c(32);
29
+ const { rows, rowKeys, getRowKey, treeModel, isReorderable, onReorder, dropOnRow, getItemDragInfo } = t0;
30
+ let t1;
31
+ if ($[0] !== getRowKey || $[1] !== rowKeys || $[2] !== rows) {
32
+ let t2;
33
+ if ($[4] !== getRowKey || $[5] !== rowKeys) {
34
+ t2 = (row, index) => String(rowKeys?.[index] ?? getRowKey(row, index));
35
+ $[4] = getRowKey;
36
+ $[5] = rowKeys;
37
+ $[6] = t2;
38
+ } else t2 = $[6];
39
+ t1 = rows.map(t2);
40
+ $[0] = getRowKey;
41
+ $[1] = rowKeys;
42
+ $[2] = rows;
43
+ $[3] = t1;
44
+ } else t1 = $[3];
45
+ const orderedKeys = t1;
46
+ let t2;
47
+ if ($[7] !== getRowKey || $[8] !== onReorder || $[9] !== rows) {
48
+ t2 = (nextKeys) => {
49
+ const byKey = new Map(rows.map((row_0, index_0) => [String(getRowKey(row_0, index_0)), row_0]));
50
+ onReorder?.(nextKeys, nextKeys.map((key) => byKey.get(key)).filter(_temp));
51
+ };
52
+ $[7] = getRowKey;
53
+ $[8] = onReorder;
54
+ $[9] = rows;
55
+ $[10] = t2;
56
+ } else t2 = $[10];
57
+ const handleReorder = useEvent(t2);
58
+ let map;
59
+ if ($[11] !== getRowKey || $[12] !== rowKeys || $[13] !== rows) {
60
+ map = /* @__PURE__ */ new Map();
61
+ rows.forEach((row_2, index_1) => map.set(String(rowKeys?.[index_1] ?? getRowKey(row_2, index_1)), row_2));
62
+ $[11] = getRowKey;
63
+ $[12] = rowKeys;
64
+ $[13] = rows;
65
+ $[14] = map;
66
+ } else map = $[14];
67
+ const rowByKeyForDrop = map;
68
+ let t3;
69
+ if ($[15] !== dropOnRow || $[16] !== rowByKeyForDrop || $[17] !== treeModel) {
70
+ t3 = (targetKey, draggedKeys) => {
71
+ if (!dropOnRow) return;
72
+ const target = rowByKeyForDrop.get(String(targetKey));
73
+ if (!target) return;
74
+ const topmostDraggedKeys = treeModel ? getTopmostKeys(draggedKeys, treeModel.parentOf) : draggedKeys;
75
+ if (treeModel && topmostDraggedKeys.some((key_0) => isTableTreeDescendant(treeModel, targetKey, key_0))) return;
76
+ const dragged = topmostDraggedKeys.map((key_1) => rowByKeyForDrop.get(String(key_1))).filter((row_3) => row_3 !== void 0 && row_3 !== target);
77
+ if (!dragged.length) return;
78
+ if (dropOnRow.isAllowed && !dropOnRow.isAllowed(dragged, target)) return;
79
+ dropOnRow.onDrop(dragged, target);
80
+ };
81
+ $[15] = dropOnRow;
82
+ $[16] = rowByKeyForDrop;
83
+ $[17] = treeModel;
84
+ $[18] = t3;
85
+ } else t3 = $[18];
86
+ const handleItemDrop = useEvent(t3);
87
+ let t4;
88
+ if ($[19] !== getItemDragInfo || $[20] !== rowByKeyForDrop) {
89
+ t4 = (keys) => /* @__PURE__ */ jsx(ItemTableDragPreview, {
90
+ rows: keys.map((key_2) => rowByKeyForDrop.get(String(key_2))).filter(_temp2),
91
+ getItemDragInfo
92
+ });
93
+ $[19] = getItemDragInfo;
94
+ $[20] = rowByKeyForDrop;
95
+ $[21] = t4;
96
+ } else t4 = $[21];
97
+ const renderDragPreview = useEvent(t4);
98
+ let t5;
99
+ if ($[22] !== dropOnRow || $[23] !== rowByKeyForDrop) {
100
+ t5 = (targetKey_0) => {
101
+ const target_0 = rowByKeyForDrop.get(String(targetKey_0));
102
+ return target_0 != null && (dropOnRow?.isTarget(target_0) ?? false);
103
+ };
104
+ $[22] = dropOnRow;
105
+ $[23] = rowByKeyForDrop;
106
+ $[24] = t5;
107
+ } else t5 = $[24];
108
+ const shouldAcceptItemDrop = useEvent(t5);
109
+ const canReorder = !treeModel && isReorderable;
110
+ const t6 = canReorder || dropOnRow != null;
111
+ const t7 = canReorder ? handleReorder : void 0;
112
+ const t8 = dropOnRow ? handleItemDrop : void 0;
113
+ const t9 = dropOnRow ? shouldAcceptItemDrop : void 0;
114
+ const t10 = getItemDragInfo ? renderDragPreview : void 0;
115
+ let t11;
116
+ if ($[25] !== orderedKeys || $[26] !== t10 || $[27] !== t6 || $[28] !== t7 || $[29] !== t8 || $[30] !== t9) {
117
+ t11 = {
118
+ isEnabled: t6,
119
+ orderedKeys,
120
+ onReorder: t7,
121
+ onItemDrop: t8,
122
+ shouldAcceptItemDrop: t9,
123
+ renderPreview: t10
124
+ };
125
+ $[25] = orderedKeys;
126
+ $[26] = t10;
127
+ $[27] = t6;
128
+ $[28] = t7;
129
+ $[29] = t8;
130
+ $[30] = t9;
131
+ $[31] = t11;
132
+ } else t11 = $[31];
133
+ return t11;
134
+ }
135
+ function _temp2(row_4) {
136
+ return row_4 !== void 0;
137
+ }
138
+ function _temp(row_1) {
139
+ return row_1 !== void 0;
140
+ }
141
+
142
+ //#endregion
143
+ export { useItemTableDragDrop };
144
+ //# sourceMappingURL=use-item-table-drag-drop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-item-table-drag-drop.js","names":["useMemo","useEvent","isTableTreeDescendant","ItemTableDragPreview","Key","TableTreeModel","CubeItemTableProps","UseItemTableDragDropOptions","Pick","T","rows","rowKeys","getRowKey","row","index","treeModel","isReorderable","getTopmostKeys","keys","parentOf","ReadonlyMap","keySet","Set","filter","key","parent","get","has","useItemTableDragDrop","t0","$","_c","onReorder","dropOnRow","getItemDragInfo","t1","t2","String","map","orderedKeys","nextKeys","byKey","Map","row_0","index_0","_temp","handleReorder","forEach","row_2","index_1","set","rowByKeyForDrop","t3","targetKey","draggedKeys","target","topmostDraggedKeys","some","key_0","dragged","key_1","row_3","undefined","length","isAllowed","onDrop","handleItemDrop","t4","key_2","_temp2","renderDragPreview","t5","targetKey_0","target_0","isTarget","shouldAcceptItemDrop","canReorder","t6","t7","t8","t9","t10","t11","isEnabled","onItemDrop","renderPreview","row_4","row_1"],"sources":["../../../../src/components/data/ItemTable/use-item-table-drag-drop.tsx"],"sourcesContent":["import { useMemo } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks/use-event';\nimport { isTableTreeDescendant } from '../TableBase/table-tree';\n\nimport { ItemTableDragPreview } from './ItemTableDragPreview';\n\nimport type { Key } from '@react-types/shared';\nimport type { TableTreeModel } from '../TableBase/table-tree';\nimport type { CubeItemTableProps } from './types';\n\nexport interface UseItemTableDragDropOptions<T>\n extends Pick<\n CubeItemTableProps<T>,\n 'onReorder' | 'dropOnRow' | 'getItemDragInfo'\n > {\n /** The rows on screen, in order. */\n rows: readonly T[];\n /** Keys parallel to `rows` in tree mode; flat rows use `getRowKey`. */\n rowKeys?: readonly Key[];\n getRowKey: (row: T, index: number) => Key;\n treeModel: TableTreeModel<T> | null;\n isReorderable: boolean;\n}\n\n/** The dragged keys whose ancestors are not being dragged as well. */\nfunction getTopmostKeys(\n keys: Key[],\n parentOf: ReadonlyMap<Key, Key | null>,\n): Key[] {\n const keySet = new Set(keys);\n\n return keys.filter((key) => {\n let parent = parentOf.get(key);\n while (parent != null) {\n if (keySet.has(parent)) return false;\n parent = parentOf.get(parent);\n }\n return true;\n });\n}\n\n/**\n * Row drag and drop: reordering flat rows, dropping rows onto a row, and the\n * preview under the cursor. Returns the props `DraggableCollection` takes for\n * them, each handler `undefined` while its feature is off, and whether any\n * feature is on.\n */\nexport function useItemTableDragDrop<T>({\n rows,\n rowKeys,\n getRowKey,\n treeModel,\n isReorderable,\n onReorder,\n dropOnRow,\n getItemDragInfo,\n}: UseItemTableDragDropOptions<T>) {\n const orderedKeys = useMemo(\n () =>\n rows.map((row, index) =>\n String(rowKeys?.[index] ?? getRowKey(row, index)),\n ),\n [rows, rowKeys, getRowKey],\n );\n\n const handleReorder = useEvent((nextKeys: string[]) => {\n const byKey = new Map(\n rows.map((row, index) => [String(getRowKey(row, index)), row]),\n );\n\n onReorder?.(\n nextKeys,\n nextKeys\n .map((key) => byKey.get(key))\n .filter((row): row is T => row !== undefined),\n );\n });\n\n const rowByKeyForDrop = useMemo(() => {\n const map = new Map<string, T>();\n\n rows.forEach((row, index) =>\n map.set(String(rowKeys?.[index] ?? getRowKey(row, index)), row),\n );\n\n return map;\n }, [rows, rowKeys, getRowKey]);\n\n const handleItemDrop = useEvent((targetKey: Key, draggedKeys: Key[]) => {\n if (!dropOnRow) return;\n\n const target = rowByKeyForDrop.get(String(targetKey));\n\n if (!target) return;\n\n const topmostDraggedKeys = treeModel\n ? getTopmostKeys(draggedKeys, treeModel.parentOf)\n : draggedKeys;\n\n if (\n treeModel &&\n topmostDraggedKeys.some((key) =>\n isTableTreeDescendant(treeModel, targetKey, key),\n )\n ) {\n return;\n }\n\n const dragged = topmostDraggedKeys\n .map((key) => rowByKeyForDrop.get(String(key)))\n // A row cannot be dropped on itself.\n .filter((row): row is T => row !== undefined && row !== target);\n\n if (!dragged.length) return;\n if (dropOnRow.isAllowed && !dropOnRow.isAllowed(dragged, target)) return;\n\n void dropOnRow.onDrop(dragged, target);\n });\n\n const renderDragPreview = useEvent((keys: Key[]) => (\n <ItemTableDragPreview<T>\n rows={keys\n .map((key) => rowByKeyForDrop.get(String(key)))\n .filter((row): row is T => row !== undefined)}\n getItemDragInfo={getItemDragInfo!}\n />\n ));\n\n const shouldAcceptItemDrop = useEvent((targetKey: Key) => {\n const target = rowByKeyForDrop.get(String(targetKey));\n\n return target != null && (dropOnRow?.isTarget(target) ?? false);\n });\n\n const canReorder = !treeModel && isReorderable;\n\n return {\n // Dropping onto a row and reordering both need the drag machinery.\n isEnabled: canReorder || dropOnRow != null,\n orderedKeys,\n onReorder: canReorder ? handleReorder : undefined,\n onItemDrop: dropOnRow ? handleItemDrop : undefined,\n shouldAcceptItemDrop: dropOnRow ? shouldAcceptItemDrop : undefined,\n renderPreview: getItemDragInfo ? renderDragPreview : undefined,\n };\n}\n"],"mappings":";;;;;;;;;AA0BA,SAASiB,eACPC,MACAC,UACO;CACP,MAAME,SAAS,IAAIC,IAAIJ,KAAK;AAE5B,QAAOA,KAAKK,QAAQC,QAAQ;EAC1B,IAAIC,SAASN,SAASO,IAAIF,IAAI;AAC9B,SAAOC,UAAU,MAAM;AACrB,OAAIJ,OAAOM,IAAIF,OAAO,CAAE,QAAO;AAC/BA,YAASN,SAASO,IAAID,OAAO;;AAE/B,SAAO;GACP;;;;;;;;AASJ,SAAOG,qBAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,GAAA;CAAiC,MAAA,EAAArB,MAAAC,SAAAC,WAAAG,WAAAC,eAAAgB,WAAAC,WAAAC,oBAAAL;CASP,IAAAM;AAAA,KAAAL,EAAA,OAAAlB,aAAAkB,EAAA,OAAAnB,WAAAmB,EAAA,OAAApB,MAAA;EAAA,IAAA0B;AAAA,MAAAN,EAAA,OAAAlB,aAAAkB,EAAA,OAAAnB,SAAA;AAGlByB,SAAAvB,KAAAC,UACPuB,OAAO1B,UAAUG,UAAUF,UAAUC,KAAKC,MAAM,CAAC;AAAAgB,KAAA,KAAAlB;AAAAkB,KAAA,KAAAnB;AAAAmB,KAAA,KAAAM;QAAAA,MAAAN,EAAA;AADnDK,OAAAzB,KAAI4B,IAAKF,GAER;AAAAN,IAAA,KAAAlB;AAAAkB,IAAA,KAAAnB;AAAAmB,IAAA,KAAApB;AAAAoB,IAAA,KAAAK;OAAAA,MAAAL,EAAA;CAJL,MAAAS,cAEIJ;CAIF,IAAAC;AAAA,KAAAN,EAAA,OAAAlB,aAAAkB,EAAA,OAAAE,aAAAF,EAAA,OAAApB,MAAA;AAE6B0B,QAAAI,aAAA;GAC7B,MAAAC,QAAc,IAAIC,IAChBhC,KAAI4B,KAAKK,OAAAC,YAAgB,CAACP,OAAOzB,UAAUC,OAAKC,QAAM,CAAC,EAAED,MAAI,CAC/D,CAAC;AAEDmB,eACEQ,UACAA,SAAQF,KACDd,QAASiB,MAAKf,IAAKF,IAAI,CAAC,CAAAD,OACrBsB,MACZ,CAAC;;AACFf,IAAA,KAAAlB;AAAAkB,IAAA,KAAAE;AAAAF,IAAA,KAAApB;AAAAoB,IAAA,MAAAM;OAAAA,MAAAN,EAAA;CAXD,MAAAgB,gBAAsB7C,SAASmC,GAW7B;CAAC,IAAAE;AAAA,KAAAR,EAAA,QAAAlB,aAAAkB,EAAA,QAAAnB,WAAAmB,EAAA,QAAApB,MAAA;AAGD4B,wBAAY,IAAII,KAAgB;AAEhChC,OAAIqC,SAASC,OAAAC,YACXX,IAAGY,IAAKb,OAAO1B,UAAUG,YAAUF,UAAUC,OAAKC,QAAM,CAAC,EAAED,MAC7D,CAAC;AAAAiB,IAAA,MAAAlB;AAAAkB,IAAA,MAAAnB;AAAAmB,IAAA,MAAApB;AAAAoB,IAAA,MAAAQ;OAAAA,OAAAR,EAAA;CALH,MAAAqB,kBAOEb;CAC6B,IAAAc;AAAA,KAAAtB,EAAA,QAAAG,aAAAH,EAAA,QAAAqB,mBAAArB,EAAA,QAAAf,WAAA;AAECqC,QAAAC,WAAAC,gBAAA;AAC9B,OAAI,CAACrB,UAAS;GAEd,MAAAsB,SAAeJ,gBAAezB,IAAKW,OAAOgB,UAAU,CAAC;AAErD,OAAI,CAACE,OAAM;GAEX,MAAAC,qBAA2BzC,YACvBE,eAAeqC,aAAavC,UAASI,SAC1B,GAFYmC;AAI3B,OACEvC,aACAyC,mBAAkBC,MAAMC,UACtBxD,sBAAsBa,WAAWsC,WAAW7B,MAC9C,CAAC,CAAA;GAKH,MAAAmC,UAAgBH,mBAAkBlB,KAC3BsB,UAAST,gBAAezB,IAAKW,OAAOb,MAAI,CAAC,CAAC,CAAAD,QAEvCsC,UAAmBhD,UAAQiD,UAAajD,UAAQ0C,OAAO;AAEjE,OAAI,CAACI,QAAOI,OAAO;AACnB,OAAI9B,UAAS+B,aAAT,CAAwB/B,UAAS+B,UAAWL,SAASJ,OAAO,CAAA;AAE3DtB,aAASgC,OAAQN,SAASJ,OAAO;;AACvCzB,IAAA,MAAAG;AAAAH,IAAA,MAAAqB;AAAArB,IAAA,MAAAf;AAAAe,IAAA,MAAAsB;OAAAA,MAAAtB,EAAA;CA7BD,MAAAoC,iBAAuBjE,SAASmD,GA6B9B;CAAC,IAAAe;AAAA,KAAArC,EAAA,QAAAI,mBAAAJ,EAAA,QAAAqB,iBAAA;AAEgCgB,QAAAjD,SACjC,oBAAC;GACO,MAAAA,KAAIoB,KACH8B,UAASjB,gBAAezB,IAAKW,OAAOb,MAAI,CAAC,CAAC,CAAAD,OACvC8C,OAAoC;GAC7BnC;IAEpB;AAAAJ,IAAA,MAAAI;AAAAJ,IAAA,MAAAqB;AAAArB,IAAA,MAAAqC;OAAAA,MAAArC,EAAA;CAPD,MAAAwC,oBAA0BrE,SAASkE,GAOjC;CAAC,IAAAI;AAAA,KAAAzC,EAAA,QAAAG,aAAAH,EAAA,QAAAqB,iBAAA;AAEmCoB,QAAAC,gBAAA;GACpC,MAAAC,WAAetB,gBAAezB,IAAKW,OAAOgB,YAAU,CAAC;AAAC,UAE/CE,YAAU,SAAStB,WAASyC,SAAWnB,SAAgB,IAApC;;AAC3BzB,IAAA,MAAAG;AAAAH,IAAA,MAAAqB;AAAArB,IAAA,MAAAyC;OAAAA,MAAAzC,EAAA;CAJD,MAAA6C,uBAA6B1E,SAASsE,GAIpC;CAEF,MAAAK,aAAmB,CAAC7D,aAADC;CAIN,MAAA6D,KAAAD,cAAc3C,aAAa;CAE3B,MAAA6C,KAAAF,aAAA9B,gBAAAgB;CACC,MAAAiB,KAAA9C,YAAAiC,iBAAAJ;CACU,MAAAkB,KAAA/C,YAAA0C,uBAAAb;CACP,MAAAmB,MAAA/C,kBAAAoC,oBAAAR;CAA+C,IAAAoB;AAAA,KAAApD,EAAA,QAAAS,eAAAT,EAAA,QAAAmD,OAAAnD,EAAA,QAAA+C,MAAA/C,EAAA,QAAAgD,MAAAhD,EAAA,QAAAiD,MAAAjD,EAAA,QAAAkD,IAAA;AAPzDE,QAAA;GAAAC,WAEMN;GAA+BtC;GAAAP,WAE/B8C;GAAsCM,YACrCL;GAAsCJ,sBAC5BK;GAA4CK,eACnDJ;GAChB;AAAAnD,IAAA,MAAAS;AAAAT,IAAA,MAAAmD;AAAAnD,IAAA,MAAA+C;AAAA/C,IAAA,MAAAgD;AAAAhD,IAAA,MAAAiD;AAAAjD,IAAA,MAAAkD;AAAAlD,IAAA,MAAAoD;OAAAA,OAAApD,EAAA;AAAA,QARMoD;;AAzFF,SAAAb,OAAAiB,OAAA;AAAA,QA4E4BzE,UAAQiD;;AA5EpC,SAAAjB,MAAA0C,OAAA;AAAA,QA2B4B1E,UAAQiD"}