@cube-dev/ui-kit 0.168.1 → 0.169.1

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 (683) hide show
  1. package/dist/CHANGELOG.md +30 -0
  2. package/dist/_internal/hooks/use-chained-callback.js +1 -1
  3. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  4. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  5. package/dist/_internal/hooks/use-event.js +1 -1
  6. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  7. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  8. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  9. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  10. package/dist/_internal/hooks/use-warn.js +1 -1
  11. package/dist/components/Block.js +1 -1
  12. package/dist/components/CollectionItem.js +1 -1
  13. package/dist/components/GlobalStyles.js +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/Root.js.map +1 -1
  18. package/dist/components/actions/Action/Action.js +1 -1
  19. package/dist/components/actions/Banner/Banner.js +1 -1
  20. package/dist/components/actions/Button/Button.d.ts +1 -0
  21. package/dist/components/actions/Button/Button.js +1 -1
  22. package/dist/components/actions/Button/Button.js.map +1 -1
  23. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  24. package/dist/components/actions/ButtonSplit/ButtonSplit.js +2 -2
  25. package/dist/components/actions/ButtonSplit/context.js +1 -1
  26. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  27. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  28. package/dist/components/actions/CommandMenu/styled.js +1 -1
  29. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  30. package/dist/components/actions/ItemActionContext.js +1 -1
  31. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  32. package/dist/components/actions/Link/Link.js +1 -1
  33. package/dist/components/actions/Menu/Menu.js +1 -1
  34. package/dist/components/actions/Menu/MenuItem.js +2 -2
  35. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  36. package/dist/components/actions/Menu/MenuSection.js +1 -1
  37. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  38. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  39. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  40. package/dist/components/actions/Menu/context.js +1 -1
  41. package/dist/components/actions/Menu/styled.js +1 -1
  42. package/dist/components/actions/index.js +1 -1
  43. package/dist/components/actions/use-action.js +1 -1
  44. package/dist/components/actions/use-anchored-menu.js +1 -1
  45. package/dist/components/actions/use-context-menu.js +1 -1
  46. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  47. package/dist/components/content/Alert/Alert.js +1 -1
  48. package/dist/components/content/Alert/use-alert.js +1 -1
  49. package/dist/components/content/Avatar/Avatar.js +1 -1
  50. package/dist/components/content/Badge/Badge.js +1 -1
  51. package/dist/components/content/Card/Card.js +1 -1
  52. package/dist/components/content/Content.js +1 -1
  53. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  54. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
  55. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  56. package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
  57. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  58. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  59. package/dist/components/content/Divider.js +1 -1
  60. package/dist/components/content/Footer.js +1 -1
  61. package/dist/components/content/Header.js +1 -1
  62. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  63. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  64. package/dist/components/content/InfoBadge/InfoBadge.js.map +1 -1
  65. package/dist/components/content/InlineInput/InlineInput.d.ts +5 -0
  66. package/dist/components/content/InlineInput/InlineInput.js +3 -2
  67. package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
  68. package/dist/components/content/Item/Item.js +1 -1
  69. package/dist/components/content/Item/Item.js.map +1 -1
  70. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  71. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  72. package/dist/components/content/Layout/GridLayout.js +1 -1
  73. package/dist/components/content/Layout/Layout.js +1 -1
  74. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  75. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  76. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  77. package/dist/components/content/Layout/LayoutContent.js +1 -1
  78. package/dist/components/content/Layout/LayoutContext.js +1 -1
  79. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  80. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  81. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  82. package/dist/components/content/Layout/LayoutHeader.js +2 -2
  83. package/dist/components/content/Layout/LayoutPane.js +1 -1
  84. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  85. package/dist/components/content/Layout/LayoutPanelHeader.js +2 -2
  86. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  87. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  88. package/dist/components/content/Layout/index.js +1 -1
  89. package/dist/components/content/Layout/utils.js +1 -1
  90. package/dist/components/content/Paragraph.js +1 -1
  91. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  92. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  93. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  94. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  95. package/dist/components/content/Result/Result.js +1 -1
  96. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  97. package/dist/components/content/Tag/Tag.js +1 -1
  98. package/dist/components/content/Tag/Tag.js.map +1 -1
  99. package/dist/components/content/Text.d.ts +14 -14
  100. package/dist/components/content/Text.js +1 -1
  101. package/dist/components/content/TextItem/TextItem.js +1 -1
  102. package/dist/components/content/Title.js +1 -1
  103. package/dist/components/content/Tree/Tree.js +1 -1
  104. package/dist/components/content/Tree/TreeNode.js +2 -2
  105. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  106. package/dist/components/content/Tree/styled.js +1 -1
  107. package/dist/components/content/Tree/tree-index.js +1 -1
  108. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  109. package/dist/components/content/Tree/use-load-data.js +1 -1
  110. package/dist/components/content/highlightText.js +1 -1
  111. package/dist/components/content/use-auto-tooltip.js +1 -1
  112. package/dist/components/data/DataTable/DataTable.js +1 -1
  113. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  114. package/dist/components/data/ItemTable/ItemTableBulkBar.js +2 -2
  115. package/dist/components/data/ItemTable/ItemTableBulkBar.js.map +1 -1
  116. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  117. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  118. package/dist/components/data/ItemTable/ItemTableToolbar.js +2 -2
  119. package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
  120. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  121. package/dist/components/data/TableBase/RowCollection.js +1 -1
  122. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  123. package/dist/components/data/TableBase/TableRow.js +1 -1
  124. package/dist/components/data/TableBase/TableView.js +4 -4
  125. package/dist/components/data/TableBase/TableView.js.map +1 -1
  126. package/dist/components/data/TableBase/column-menu.js +1 -1
  127. package/dist/components/data/TableBase/column-tint.js +1 -1
  128. package/dist/components/data/TableBase/row-menu.js +1 -1
  129. package/dist/components/data/TableBase/styled.d.ts +2 -1
  130. package/dist/components/data/TableBase/styled.js +1 -1
  131. package/dist/components/data/TableBase/table-tree.js +1 -1
  132. package/dist/components/data/TableBase/types.js +1 -1
  133. package/dist/components/data/TableBase/use-cell-selection.d.ts +1 -0
  134. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  135. package/dist/components/data/TableBase/use-column-order.js +1 -1
  136. package/dist/components/data/TableBase/use-container-width.js +1 -1
  137. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  138. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  139. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  140. package/dist/components/data/TableBase/use-table-search.js +1 -1
  141. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  142. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  143. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  144. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  145. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  146. package/dist/components/fields/Checkbox/Checkbox.js +2 -2
  147. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  148. package/dist/components/fields/Checkbox/CheckboxGroup.js +2 -2
  149. package/dist/components/fields/Checkbox/context.js +1 -1
  150. package/dist/components/fields/ColorInput/ColorInput.js +4 -4
  151. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  152. package/dist/components/fields/ColorPicker/ColorPicker.js +2 -2
  153. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  154. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  155. package/dist/components/fields/ComboBox/ComboBox.js +5 -3
  156. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  157. package/dist/components/fields/CommandTextArea/CommandTextArea.js +4 -4
  158. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +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 +2 -2
  164. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  165. package/dist/components/fields/DatePicker/DatePickerButton.js.map +1 -1
  166. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  167. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  168. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  169. package/dist/components/fields/DatePicker/DateRangePicker.js +2 -2
  170. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +2 -2
  171. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  172. package/dist/components/fields/DatePicker/PeriodPicker.js +2 -2
  173. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  174. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  175. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  176. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  177. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  178. package/dist/components/fields/DatePicker/period.js +1 -1
  179. package/dist/components/fields/DatePicker/props.js +1 -1
  180. package/dist/components/fields/DatePicker/utils.js +1 -1
  181. package/dist/components/fields/FileInput/FileInput.js +1 -1
  182. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  183. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  184. package/dist/components/fields/FilterPicker/FilterPicker.js +3 -3
  185. package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
  186. package/dist/components/fields/Input/Input.js +1 -1
  187. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  188. package/dist/components/fields/ListBox/ListBox.js +2 -2
  189. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  190. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  191. package/dist/components/fields/ListBoxPopover/index.d.ts +1 -0
  192. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  193. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +2 -0
  194. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  195. package/dist/components/fields/NumberInput/NumberInput.js +4 -7
  196. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  197. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  198. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  199. package/dist/components/fields/PasswordInput/PasswordInput.js +4 -7
  200. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  201. package/dist/components/fields/Picker/Picker.js +3 -3
  202. package/dist/components/fields/Picker/Picker.js.map +1 -1
  203. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  204. package/dist/components/fields/RadioGroup/RadioGroup.js +2 -2
  205. package/dist/components/fields/RadioGroup/context.js +1 -1
  206. package/dist/components/fields/SearchComboBox/SearchComboBox.js +3 -3
  207. package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
  208. package/dist/components/fields/SearchInput/SearchInput.js +5 -8
  209. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  210. package/dist/components/fields/Select/Select.js +2 -2
  211. package/dist/components/fields/Select/Select.js.map +1 -1
  212. package/dist/components/fields/Slider/Gradation.js +1 -1
  213. package/dist/components/fields/Slider/HueSlider.js +1 -1
  214. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  215. package/dist/components/fields/Slider/Slider.js +1 -1
  216. package/dist/components/fields/Slider/SliderBase.js +1 -1
  217. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  218. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  219. package/dist/components/fields/Slider/elements.js +1 -1
  220. package/dist/components/fields/Slider/index.js +1 -1
  221. package/dist/components/fields/Switch/Switch.js +2 -2
  222. package/dist/components/fields/Switch/Switch.js.map +1 -1
  223. package/dist/components/fields/TextArea/TextArea.js +4 -7
  224. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  225. package/dist/components/fields/TextInput/TextInput.js +4 -4
  226. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  227. package/dist/components/fields/TextInput/TextInputBase.d.ts +9 -0
  228. package/dist/components/fields/TextInput/TextInputBase.js +4 -3
  229. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  230. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  231. package/dist/components/fields/TextInputMapper/TextInputMapper.d.ts +5 -0
  232. package/dist/components/fields/TextInputMapper/TextInputMapper.js +3 -3
  233. package/dist/components/fields/TextInputMapper/TextInputMapper.js.map +1 -1
  234. package/dist/components/fields/color/ColorPanel.js +1 -1
  235. package/dist/components/fields/color/channels.js +1 -1
  236. package/dist/components/fields/color/color.js +1 -1
  237. package/dist/components/fields/color/context.js +1 -1
  238. package/dist/components/form/FieldWrapper/FieldWrapper.js +6 -3
  239. package/dist/components/form/FieldWrapper/FieldWrapper.js.map +1 -1
  240. package/dist/components/form/Form/Field.js +1 -1
  241. package/dist/components/form/Form/Form.js +1 -1
  242. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  243. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  244. package/dist/components/form/Form/SubmitError.js +1 -1
  245. package/dist/components/form/Form/index.js +1 -1
  246. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  247. package/dist/components/form/Form/use-field/use-field.js +1 -1
  248. package/dist/components/form/Form/use-form.js +1 -1
  249. package/dist/components/form/Form/validation.js +1 -1
  250. package/dist/components/form/Label.d.ts +28 -1
  251. package/dist/components/form/Label.js +35 -16
  252. package/dist/components/form/Label.js.map +1 -1
  253. package/dist/components/form/index.d.ts +1 -1
  254. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  255. package/dist/components/form/validation/ValidationIndicator.js.map +1 -1
  256. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  257. package/dist/components/form/validation/use-validation-props.js +1 -1
  258. package/dist/components/form/wrapper.js +1 -1
  259. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  260. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  261. package/dist/components/layout/Board/Board.js +1 -1
  262. package/dist/components/layout/Board/BoardProvider.js +1 -1
  263. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  264. package/dist/components/layout/Board/Widget.js +1 -1
  265. package/dist/components/layout/Board/WidgetHost.js +1 -1
  266. package/dist/components/layout/Board/board-context.js +1 -1
  267. package/dist/components/layout/Board/board-store.js +1 -1
  268. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  269. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  270. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  271. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  272. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  273. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  274. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  275. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  276. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  277. package/dist/components/layout/Board/index.js +1 -1
  278. package/dist/components/layout/Board/responsive-utils.js +1 -1
  279. package/dist/components/layout/Board/use-board-layout.js +1 -1
  280. package/dist/components/layout/Board/use-board-registry.js +1 -1
  281. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  282. package/dist/components/layout/Board/use-board-selection.js +1 -1
  283. package/dist/components/layout/Flex.js +1 -1
  284. package/dist/components/layout/Flow.js +1 -1
  285. package/dist/components/layout/Grid.js +1 -1
  286. package/dist/components/layout/Panel.js +1 -1
  287. package/dist/components/layout/Prefix.js +1 -1
  288. package/dist/components/layout/ResizablePanel.js +1 -1
  289. package/dist/components/layout/Space.js +1 -1
  290. package/dist/components/layout/Suffix.js +1 -1
  291. package/dist/components/navigation/Pagination/Pagination.js +4 -4
  292. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  293. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  294. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  295. package/dist/components/navigation/Tabs/TabButton.js +3 -3
  296. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  297. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  298. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  299. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  300. package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
  301. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  302. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  303. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  304. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  305. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  306. package/dist/components/navigation/Tabs/styled.js +1 -1
  307. package/dist/components/navigation/Tabs/types.js +1 -1
  308. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  309. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  310. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  311. package/dist/components/other/Calendar/Calendar.js +1 -1
  312. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  313. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  314. package/dist/components/other/Calendar/CalendarHeader.js +2 -2
  315. package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
  316. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  317. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  318. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  319. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  320. package/dist/components/other/Calendar/styled.js +1 -1
  321. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  322. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  323. package/dist/components/overlays/AlertDialog/AlertDialog.d.ts +0 -1
  324. package/dist/components/overlays/AlertDialog/AlertDialog.js +2 -2
  325. package/dist/components/overlays/AlertDialog/AlertDialog.js.map +1 -1
  326. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  327. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  328. package/dist/components/overlays/AlertDialog/AlertDialogZone.js.map +1 -1
  329. package/dist/components/overlays/Dialog/Dialog.js +2 -2
  330. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  331. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  332. package/dist/components/overlays/Dialog/DialogForm.js +2 -2
  333. package/dist/components/overlays/Dialog/DialogTrigger.js +3 -2
  334. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  335. package/dist/components/overlays/Dialog/context.js +1 -1
  336. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  337. package/dist/components/overlays/Modal/Modal.d.ts +2 -1
  338. package/dist/components/overlays/Modal/Modal.js +1 -1
  339. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  340. package/dist/components/overlays/Modal/Overlay.d.ts +1 -0
  341. package/dist/components/overlays/Modal/Overlay.js +1 -1
  342. package/dist/components/overlays/Modal/Popover.js +1 -1
  343. package/dist/components/overlays/Modal/Tray.js +1 -1
  344. package/dist/components/overlays/Modal/Underlay.js +1 -1
  345. package/dist/components/overlays/Modal/types.d.ts +1 -0
  346. package/dist/components/overlays/Notifications/Notification.js +1 -1
  347. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  348. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  349. package/dist/components/overlays/Notifications/NotificationContext.d.ts +2 -0
  350. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  351. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  352. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  353. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  354. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  355. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  356. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  357. package/dist/components/overlays/Notifications/index.js +1 -1
  358. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  359. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  360. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  361. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  362. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  363. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  364. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  365. package/dist/components/overlays/Toast/index.js +1 -1
  366. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  367. package/dist/components/overlays/Toast/useToast.js +3 -3
  368. package/dist/components/overlays/Toast/useToast.js.map +1 -1
  369. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  370. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  371. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  372. package/dist/components/overlays/Tooltip/context.js +1 -1
  373. package/dist/components/portal/Portal.js +1 -1
  374. package/dist/components/portal/PortalProvider.d.ts +2 -0
  375. package/dist/components/portal/PortalProvider.js +1 -1
  376. package/dist/components/portal/index.d.ts +1 -0
  377. package/dist/components/portal/usePortal.js +1 -1
  378. package/dist/components/shared/DraggableCollection.js +1 -1
  379. package/dist/components/shared/InvalidIcon.js +1 -1
  380. package/dist/components/shared/InvalidIcon.js.map +1 -1
  381. package/dist/components/shared/ValidIcon.js +1 -1
  382. package/dist/components/shared/ValidIcon.js.map +1 -1
  383. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  384. package/dist/components/status/Spin/Cube.js +1 -1
  385. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  386. package/dist/components/status/Spin/Spin.js +1 -1
  387. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  388. package/dist/data/item-themes.js +1 -1
  389. package/dist/data/themes.js +1 -1
  390. package/dist/eslint-plugin/defaults.generated.js +5 -1
  391. package/dist/eslint-plugin/defaults.generated.js.map +1 -1
  392. package/dist/eslint-plugin/index.js +1 -1
  393. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  394. package/dist/i18n/I18nProvider.js +1 -1
  395. package/dist/i18n/createFormatter.js +1 -1
  396. package/dist/i18n/index.js +1 -1
  397. package/dist/i18n/instance.js +1 -1
  398. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  399. package/dist/i18n/locales/en-US/uikit.js +1 -1
  400. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  401. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  402. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  403. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  404. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  405. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  406. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  407. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  408. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  409. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  410. package/dist/i18n/locales.js +1 -1
  411. package/dist/i18n/useFormatter.js +1 -1
  412. package/dist/i18n/useI18n.js +1 -1
  413. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  414. package/dist/icons/AdjustmentsIcon.js +1 -1
  415. package/dist/icons/AiIcon.js +1 -1
  416. package/dist/icons/AreaChartIcon.js +1 -1
  417. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  418. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  419. package/dist/icons/BackwardIcon.js +1 -1
  420. package/dist/icons/BarChartIcon.js +1 -1
  421. package/dist/icons/BellFilledIcon.js +1 -1
  422. package/dist/icons/BellIcon.js +1 -1
  423. package/dist/icons/BooleanIcon.js +1 -1
  424. package/dist/icons/CalendarEditIcon.js +1 -1
  425. package/dist/icons/CalendarIcon.js +1 -1
  426. package/dist/icons/CaretDownIcon.js +1 -1
  427. package/dist/icons/CaretUpIcon.js +1 -1
  428. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  429. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  430. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  431. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  432. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  433. package/dist/icons/ChartBarLineIcon.js +1 -1
  434. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  435. package/dist/icons/ChartBarStackedIcon.js +1 -1
  436. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  437. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  438. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  439. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  440. package/dist/icons/ChartBubbleIcon.js +1 -1
  441. package/dist/icons/ChartDonut2Icon.js +1 -1
  442. package/dist/icons/ChartFunnelIcon.js +1 -1
  443. package/dist/icons/ChartHeatmapIcon.js +1 -1
  444. package/dist/icons/ChartKPIIcon.js +1 -1
  445. package/dist/icons/ChartPie2Icon.js +1 -1
  446. package/dist/icons/ChartScatterIcon.js +1 -1
  447. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  448. package/dist/icons/CheckCircleIcon.js +1 -1
  449. package/dist/icons/CheckIcon.js +1 -1
  450. package/dist/icons/CircleFilledIcon.js +1 -1
  451. package/dist/icons/ClearIcon.js +1 -1
  452. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  453. package/dist/icons/CloseCircleIcon.js +1 -1
  454. package/dist/icons/CloseIcon.js +1 -1
  455. package/dist/icons/CodeIcon.js +1 -1
  456. package/dist/icons/ColumnTotalIcon.js +1 -1
  457. package/dist/icons/CopyIcon.js +1 -1
  458. package/dist/icons/CountIcon.js +1 -1
  459. package/dist/icons/CubeIcon.js +1 -1
  460. package/dist/icons/CubePauseIcon.js +1 -1
  461. package/dist/icons/CubePlayIcon.js +1 -1
  462. package/dist/icons/CurrencyDollarIcon.js +1 -1
  463. package/dist/icons/DangerIcon.js +1 -1
  464. package/dist/icons/DashboardIcon.js +1 -1
  465. package/dist/icons/DatabaseIcon.js +1 -1
  466. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  467. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  468. package/dist/icons/DirectionIcon.js +1 -1
  469. package/dist/icons/DonutIcon.js +1 -1
  470. package/dist/icons/DownIcon.js +1 -1
  471. package/dist/icons/EditIcon.js +1 -1
  472. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  473. package/dist/icons/ExclamationCircleIcon.js +1 -1
  474. package/dist/icons/ExclamationIcon.js +1 -1
  475. package/dist/icons/EyeIcon.js +1 -1
  476. package/dist/icons/EyeInvisibleIcon.js +1 -1
  477. package/dist/icons/FilterIcon.js +1 -1
  478. package/dist/icons/FolderFilledIcon.js +1 -1
  479. package/dist/icons/FolderIcon.js +1 -1
  480. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  481. package/dist/icons/FolderOpenIcon.js +1 -1
  482. package/dist/icons/ForwardIcon.js +1 -1
  483. package/dist/icons/GripVerticalIcon.js +1 -1
  484. package/dist/icons/HierarchyIcon.js +1 -1
  485. package/dist/icons/HierarchyOpenIcon.js +1 -1
  486. package/dist/icons/Icon.js +1 -1
  487. package/dist/icons/InfoCircleIcon.js +1 -1
  488. package/dist/icons/InfoIcon.js +1 -1
  489. package/dist/icons/KeyIcon.js +1 -1
  490. package/dist/icons/LeftIcon.js +1 -1
  491. package/dist/icons/LineChartIcon.js +1 -1
  492. package/dist/icons/LoadingIcon.js +1 -1
  493. package/dist/icons/LockFilledIcon.js +1 -1
  494. package/dist/icons/LockIcon.js +1 -1
  495. package/dist/icons/MoreIcon.js +1 -1
  496. package/dist/icons/NotAllowedIcon.js +1 -1
  497. package/dist/icons/Number123Icon.js +1 -1
  498. package/dist/icons/NumberIcon.js +1 -1
  499. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  500. package/dist/icons/PauseCircleIcon.js +1 -1
  501. package/dist/icons/PauseIcon.js +1 -1
  502. package/dist/icons/PercentageIcon.js +1 -1
  503. package/dist/icons/PieChartIcon.js +1 -1
  504. package/dist/icons/PipetteIcon.js +1 -1
  505. package/dist/icons/PlayCircleIcon.js +1 -1
  506. package/dist/icons/PlayIcon.js +1 -1
  507. package/dist/icons/PlusIcon.js +1 -1
  508. package/dist/icons/ProgressBarIcon.js +1 -1
  509. package/dist/icons/ReloadIcon.js +1 -1
  510. package/dist/icons/ReportIcon.js +1 -1
  511. package/dist/icons/ReturnIcon.js +1 -1
  512. package/dist/icons/RightIcon.js +1 -1
  513. package/dist/icons/RowTotalsIcon.js +1 -1
  514. package/dist/icons/SchemeIcon.js +1 -1
  515. package/dist/icons/SearchIcon.js +1 -1
  516. package/dist/icons/SemanticQueryIcon.js +1 -1
  517. package/dist/icons/SettingsIcon.js +1 -1
  518. package/dist/icons/ShieldFilledIcon.js +1 -1
  519. package/dist/icons/ShieldIcon.js +1 -1
  520. package/dist/icons/SlashIcon.js +1 -1
  521. package/dist/icons/SparklesIcon.js +1 -1
  522. package/dist/icons/SqlIcon.js +1 -1
  523. package/dist/icons/StatsIcon.js +1 -1
  524. package/dist/icons/StopIcon.js +1 -1
  525. package/dist/icons/StringIcon.js +1 -1
  526. package/dist/icons/SubtotalsIcon.js +1 -1
  527. package/dist/icons/SwitchIcon.js +1 -1
  528. package/dist/icons/TableIcon.js +1 -1
  529. package/dist/icons/ThumbsDownIcon.js +1 -1
  530. package/dist/icons/ThumbsUpIcon.js +1 -1
  531. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  532. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  533. package/dist/icons/ThunderboltIcon.js +1 -1
  534. package/dist/icons/TimeIcon.js +1 -1
  535. package/dist/icons/TrashIcon.js +1 -1
  536. package/dist/icons/UnlockIcon.js +1 -1
  537. package/dist/icons/UpIcon.js +1 -1
  538. package/dist/icons/UserGroupIcon.js +1 -1
  539. package/dist/icons/UserIcon.js +1 -1
  540. package/dist/icons/UserLockIcon.js +1 -1
  541. package/dist/icons/ViewIcon.js +1 -1
  542. package/dist/icons/WarningFilledIcon.js +1 -1
  543. package/dist/icons/WarningIcon.js +1 -1
  544. package/dist/icons/wrap-icon.js +1 -1
  545. package/dist/index.d.ts +2 -2
  546. package/dist/index.js +147 -147
  547. package/dist/probe/canonicalize.js +1 -1
  548. package/dist/probe/css.js +1 -1
  549. package/dist/probe/index.js +1 -1
  550. package/dist/provider.js +1 -1
  551. package/dist/providers/TrackingProvider.js +1 -1
  552. package/dist/providers/navigationAdapter.default.js +1 -1
  553. package/dist/tokens/all-tokens.js +1 -1
  554. package/dist/tokens/base.js +1 -1
  555. package/dist/tokens/color-seed.js +1 -1
  556. package/dist/tokens/color-theme.js +1 -1
  557. package/dist/tokens/colors.js +1 -1
  558. package/dist/tokens/layout.js +1 -1
  559. package/dist/tokens/lazy-styles.js +1 -1
  560. package/dist/tokens/palette-config.js +1 -1
  561. package/dist/tokens/palette.js +1 -1
  562. package/dist/tokens/resolve.js +1 -1
  563. package/dist/tokens/shadows.js +1 -1
  564. package/dist/tokens/sizes.js +1 -1
  565. package/dist/tokens/spacing.js +1 -1
  566. package/dist/tokens/typography.js +1 -1
  567. package/dist/utils/ResizeSensor.js +1 -1
  568. package/dist/utils/is-dev-env.js +1 -1
  569. package/dist/utils/modules.js +1 -1
  570. package/dist/utils/promise.js +1 -1
  571. package/dist/utils/raf.js +1 -1
  572. package/dist/utils/random.js +1 -1
  573. package/dist/utils/range.js +1 -1
  574. package/dist/utils/react/RenderCache.js +1 -1
  575. package/dist/utils/react/Slots.js +1 -1
  576. package/dist/utils/react/chain.js +1 -1
  577. package/dist/utils/react/disabledProps.js +1 -1
  578. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  579. package/dist/utils/react/index.js +1 -1
  580. package/dist/utils/react/interactions.js +1 -1
  581. package/dist/utils/react/isTextOnly.js +1 -1
  582. package/dist/utils/react/mapProps.js +1 -1
  583. package/dist/utils/react/mergeProps.js +1 -1
  584. package/dist/utils/react/nullableValue.js +1 -1
  585. package/dist/utils/react/resolveIcon.js +1 -1
  586. package/dist/utils/react/sharedStore.js +1 -1
  587. package/dist/utils/react/useBufferedValue.js +1 -1
  588. package/dist/utils/react/useCombinedRefs.js +1 -1
  589. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  590. package/dist/utils/react/useEventBus.js +1 -1
  591. package/dist/utils/react/useId.js +1 -1
  592. package/dist/utils/react/useIsDarwin.js +1 -1
  593. package/dist/utils/react/useKeySymbols.js +1 -1
  594. package/dist/utils/react/useLayoutEffect.js +1 -1
  595. package/dist/utils/react/useLocalStorage.js +1 -1
  596. package/dist/utils/react/useMergeStyles.js +1 -1
  597. package/dist/utils/react/usePopoverSync.js +1 -1
  598. package/dist/utils/react/useQaProps.js +1 -1
  599. package/dist/utils/react/useViewportSize.js +1 -1
  600. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  601. package/dist/utils/selection.js +1 -1
  602. package/dist/utils/styles.js +1 -1
  603. package/dist/utils/tree.js +1 -1
  604. package/dist/utils/warnings.js +1 -1
  605. package/dist/version.js +2 -2
  606. package/docs/BaseProperties.md +1 -0
  607. package/docs/components/Block.md +2 -2
  608. package/docs/components/CollectionItem.md +2 -2
  609. package/docs/components/GridProvider.md +2 -2
  610. package/docs/components/actions/Action.md +2 -2
  611. package/docs/components/actions/Banner.md +2 -2
  612. package/docs/components/actions/Button.md +2 -2
  613. package/docs/components/actions/ButtonGroup.md +2 -2
  614. package/docs/components/actions/ButtonSplit.md +2 -2
  615. package/docs/components/actions/CommandMenu.md +2 -2
  616. package/docs/components/actions/Link.md +2 -2
  617. package/docs/components/actions/Menu.md +2 -2
  618. package/docs/components/actions/use-anchored-menu.md +2 -2
  619. package/docs/components/actions/use-context-menu.md +2 -2
  620. package/docs/components/content/ActiveZone.md +2 -2
  621. package/docs/components/content/Alert.md +15 -4
  622. package/docs/components/content/Avatar.md +2 -2
  623. package/docs/components/content/Card.md +2 -2
  624. package/docs/components/content/Content.md +2 -2
  625. package/docs/components/content/CopyPasteBlock.md +1 -1
  626. package/docs/components/content/CopySnippet.md +2 -2
  627. package/docs/components/content/Disclosure.md +1 -1
  628. package/docs/components/content/Divider.md +2 -2
  629. package/docs/components/content/Footer.md +2 -2
  630. package/docs/components/content/Header.md +2 -2
  631. package/docs/components/content/HotKeys.md +2 -2
  632. package/docs/components/content/InlineInput.md +1 -0
  633. package/docs/components/content/Item.md +8 -1
  634. package/docs/components/content/Layout.md +1 -1
  635. package/docs/components/content/Paragraph.md +2 -2
  636. package/docs/components/content/Placeholder.md +2 -2
  637. package/docs/components/content/Result.md +2 -2
  638. package/docs/components/content/Skeleton.md +2 -2
  639. package/docs/components/content/Title.md +2 -2
  640. package/docs/components/data/DataTable.md +4 -6
  641. package/docs/components/data/ItemTable.md +4 -6
  642. package/docs/components/fields/Checkbox.md +2 -2
  643. package/docs/components/fields/ComboBox.md +1 -1
  644. package/docs/components/fields/DatePicker.md +2 -2
  645. package/docs/components/fields/FileInput.md +2 -2
  646. package/docs/components/fields/FilterListBox.md +1 -1
  647. package/docs/components/fields/FilterPicker.md +1 -1
  648. package/docs/components/fields/HueSlider.md +1 -1
  649. package/docs/components/fields/ListBox.md +1 -1
  650. package/docs/components/fields/NumberInput.md +3 -3
  651. package/docs/components/fields/PasswordInput.md +3 -3
  652. package/docs/components/fields/Picker.md +1 -1
  653. package/docs/components/fields/RadioGroup.md +2 -2
  654. package/docs/components/fields/SearchInput.md +3 -3
  655. package/docs/components/fields/Select.md +1 -1
  656. package/docs/components/fields/Slider.md +1 -1
  657. package/docs/components/fields/Switch.md +1 -1
  658. package/docs/components/fields/TextArea.md +3 -3
  659. package/docs/components/fields/TextInput.md +3 -3
  660. package/docs/components/fields/TextInputMapper.md +2 -2
  661. package/docs/components/form/Field.md +2 -2
  662. package/docs/components/form/Form.md +2 -2
  663. package/docs/components/layout/Board.md +1 -1
  664. package/docs/components/layout/Flex.md +2 -2
  665. package/docs/components/layout/Flow.md +2 -2
  666. package/docs/components/layout/Grid.md +2 -2
  667. package/docs/components/layout/Panel.md +2 -2
  668. package/docs/components/layout/Prefix.md +2 -2
  669. package/docs/components/layout/ResizablePanel.md +2 -2
  670. package/docs/components/layout/Space.md +2 -2
  671. package/docs/components/layout/Suffix.md +2 -2
  672. package/docs/components/organisms/StatsCard.md +2 -2
  673. package/docs/components/overlays/AlertDialog.md +2 -2
  674. package/docs/components/overlays/Dialog.md +1 -1
  675. package/docs/components/overlays/DialogContainer.md +1 -1
  676. package/docs/components/overlays/DialogForm.md +1 -1
  677. package/docs/components/overlays/DialogTrigger.md +1 -1
  678. package/docs/components/overlays/Tooltip.md +2 -2
  679. package/docs/components/overlays/TooltipProvider.md +2 -2
  680. package/docs/components/overlays/TooltipTrigger.md +2 -2
  681. package/docs/components/status/LoadingAnimation.md +2 -2
  682. package/docs/components/status/Spin.md +2 -2
  683. package/package.json +4 -1
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNode.js","names":["Menu","mergeProps","Checkbox","MenuTrigger"],"sources":["../../../../src/components/content/Tree/TreeNode.tsx"],"sourcesContent":["import { Children, memo, useMemo, useRef, useState } from 'react';\nimport { useHover, useTreeItem } from 'react-aria';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\nimport { DirectionIcon, LoadingIcon, MoreIcon } from '../../../icons';\nimport { mergeProps, mergeRefs } from '../../../utils/react';\nimport { CubeItemActionProps, ItemAction } from '../../actions/ItemAction';\nimport { CubeMenuProps, Menu, MenuTrigger } from '../../actions/Menu';\nimport { useContextMenu } from '../../actions/use-context-menu';\nimport { Checkbox } from '../../fields/Checkbox/Checkbox';\n\nimport {\n TreeNodeCheckboxWrapper,\n TreeNodeRow,\n TreeNodeToggle,\n TreeNodeTogglePlaceholder,\n TreeRowItem,\n} from './styled';\n\nimport type { Key, Node } from '@react-types/shared';\nimport type { Styles } from '@tenphi/tasty';\nimport type {\n CSSProperties,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n Ref,\n SyntheticEvent,\n} from 'react';\nimport type { TreeState } from 'react-stately';\nimport type {\n CubeTreeNodeData,\n TreeContextMenu,\n TreeItemProps,\n TreeNodeState,\n} from './types';\n\nconst stopPropagation = (e: SyntheticEvent) => {\n e.stopPropagation();\n};\n\n/** Check whether a `menu` ReactNode actually contains anything. */\nfunction isMenuEmpty(menu: ReactNode): boolean {\n if (menu === null || menu === undefined || menu === false) return true;\n return Children.toArray(menu).length === 0;\n}\n\nexport interface TreeNodeProps {\n node: Node<CubeTreeNodeData>;\n /** The original `CubeTreeNodeData` for this row, looked up by key. */\n data: CubeTreeNodeData;\n state: TreeState<CubeTreeNodeData>;\n\n /** Whether the tree as a whole renders checkboxes. */\n isCheckable: boolean;\n /** Whether this row is currently expanded. */\n isExpanded: boolean;\n /** Whether the row is in an indeterminate (half-checked) state. */\n isIndeterminate: boolean;\n /** Whether the row is fully checked. */\n isChecked: boolean;\n /** Whether `loadData` is currently fetching this row's children. */\n isLoading: boolean;\n\n /** Toggle this row's checkbox (cascades). */\n onToggleChecked: (key: string) => void;\n\n /** Row size passed to the underlying Item. */\n size?: string;\n\n /** Per-node Item customization (static object or callback). */\n itemProps?:\n | TreeItemProps\n | ((data: CubeTreeNodeData, state: TreeNodeState) => TreeItemProps);\n\n /** Styles applied to the visible row (`TreeRowItem`). */\n rowStyles?: Styles;\n\n /** Inline style for virtualizer absolute positioning. */\n virtualStyle?: CSSProperties;\n /** Ref callback from `@tanstack/react-virtual` to measure row height. */\n virtualRef?: (element: HTMLElement | null) => void;\n /** Virtual index for `data-index` attribute. */\n virtualIndex?: number;\n\n /** Tree-wide menu default (resolved against `data.menu`). */\n menu?:\n | ReactNode\n | ((data: CubeTreeNodeData, state: TreeNodeState) => ReactNode | null);\n /** Tree-wide `contextMenu` default. */\n contextMenu?: TreeContextMenu;\n /** Tree-wide `onAction` callback. */\n onAction?: (action: string, key: Key) => void;\n /** Forwarded to every per-row `MenuTrigger`. */\n menuTriggerProps?: Partial<CubeItemActionProps>;\n /** Forwarded to every per-row `Menu`. */\n menuProps?: Partial<CubeMenuProps<object>>;\n}\n\nfunction TreeNodeInner(props: TreeNodeProps) {\n const { t } = useI18n();\n const {\n node,\n data,\n state,\n isCheckable,\n isExpanded,\n isIndeterminate,\n isChecked,\n isLoading,\n onToggleChecked,\n size,\n itemProps,\n rowStyles,\n virtualStyle,\n virtualRef,\n virtualIndex,\n menu: treeMenu,\n contextMenu: treeContextMenu,\n onAction: treeOnAction,\n menuTriggerProps,\n menuProps,\n } = props;\n\n const rowRef = useRef<HTMLDivElement>(null);\n\n const { rowProps, gridCellProps, expandButtonProps, isPressed } = useTreeItem(\n { node },\n state,\n rowRef,\n );\n\n const isDisabled = state.disabledKeys.has(node.key);\n const isSelected = state.selectionManager.isSelected(node.key);\n\n // `useTreeItem` doesn't track hover; we need it for the `hovered` mod.\n const { hoverProps, isHovered } = useHover({ isDisabled });\n // React Aria's treegrid uses roving tabindex, so no `data-focused`\n // attribute lands on the row — mirror it as a mod manually.\n const isFocused =\n state.selectionManager.isFocused &&\n state.selectionManager.focusedKey === node.key;\n // For lazy rows with no children yet, still render a toggle unless\n // explicitly marked as leaf.\n const isLeaf =\n data.isLeaf === true || (data.isLeaf !== false && !node.hasChildNodes);\n const isRowCheckable = isCheckable && data.isCheckable !== false;\n\n const nodeState: TreeNodeState = {\n isExpanded,\n isSelected,\n isChecked,\n isIndeterminate,\n isLeaf,\n };\n\n // ---- Menu resolution (per-node override > tree-level) --------------------\n\n const effectiveMenuChildren: ReactNode =\n data.menu === null\n ? null\n : data.menu !== undefined\n ? data.menu\n : typeof treeMenu === 'function'\n ? treeMenu(data, nodeState)\n : treeMenu ?? null;\n const hasMenu = !isMenuEmpty(effectiveMenuChildren);\n\n const effectiveContextMenu: TreeContextMenu =\n data.contextMenu ?? treeContextMenu ?? false;\n // The menu is exposed only when the consumer opts in via\n // `contextMenu`. When `contextMenu` is `false` (default) we render\n // nothing, even if `menu` is provided — this matches the plan and\n // keeps default rows visually clean.\n const menuExposed =\n hasMenu &&\n (effectiveContextMenu === true || effectiveContextMenu === 'context-only');\n const contextMenuOnly = effectiveContextMenu === 'context-only';\n\n // Controlled state for menu trigger (enables keyboard opening with Shift+F10)\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n const handleMenuAction = useEvent((action: Key) => {\n // Strip the \".$\" prefix that React adds via Children.toArray/map.\n const actionStr = String(action);\n const normalizedAction = actionStr.startsWith('.$')\n ? actionStr.slice(2)\n : actionStr;\n data.onAction?.(normalizedAction);\n treeOnAction?.(normalizedAction, node.key);\n // Forward to the consumer-supplied `menuProps.onAction` so users\n // who pass extra `Menu` props through `menuProps` still receive\n // the action stream alongside the tree-level callback.\n menuProps?.onAction?.(normalizedAction);\n });\n\n const rowContextMenu = useContextMenu<HTMLDivElement, CubeMenuProps<object>>(\n Menu,\n { placement: 'bottom start' },\n {\n ...menuProps,\n onAction: handleMenuAction,\n children: effectiveMenuChildren,\n },\n );\n\n // ---- Checkbox ------------------------------------------------------------\n\n const handleCheckboxChange = useEvent(() => {\n onToggleChecked(String(node.key));\n });\n\n const handleWrapperClick = useEvent((e: MouseEvent<HTMLElement>) => {\n e.stopPropagation();\n if (isDisabled || data.isCheckboxDisabled) return;\n // The inner <Checkbox> label toggles on direct click; skip to avoid a double toggle.\n if ((e.target as HTMLElement).closest('[data-qa=\"CheckboxWrapper\"]'))\n return;\n onToggleChecked(String(node.key));\n });\n\n // ---- Keyboard ------------------------------------------------------------\n\n // Composed keydown handler. Runs BEFORE `rowProps.onKeyDown` from\n // `useTreeItem` so we can short-circuit the default react-aria\n // behavior for our own shortcuts (Shift+F10 menu open, Space\n // checkbox toggle). Returns `true` when the event was handled and\n // react-aria's keydown must NOT run; returns `false` to chain to\n // react-aria's handler.\n const handleKeyDown = useEvent((e: KeyboardEvent) => {\n // Space toggles the checkbox first when checkable. We DON'T claim\n // the event (return `false`) so react-aria's onKeyDown still runs\n // afterwards and the focused row also selects — matching the\n // pre-refactor behavior when handlers were chained via\n // `mergeProps`. `preventDefault` is kept to suppress page scroll.\n if (\n e.key === ' ' &&\n isRowCheckable &&\n !isDisabled &&\n !data.isCheckboxDisabled\n ) {\n e.preventDefault();\n onToggleChecked(String(node.key));\n return false;\n }\n\n // Shift+F10 opens the row menu (standard accessibility shortcut).\n if (e.key === 'F10' && e.shiftKey && menuExposed) {\n e.preventDefault();\n e.stopPropagation();\n if (contextMenuOnly) {\n rowContextMenu.open();\n } else {\n setIsMenuOpen(true);\n }\n return true;\n }\n\n return false;\n });\n\n // Wrapper that delegates to react-aria's default keydown only when\n // our handler did not claim the event. Replaces (rather than\n // chains with) `rowProps.onKeyDown` so the order of handlers is\n // strictly: our shortcuts → react-aria default.\n const composedKeyDown = useEvent((e: KeyboardEvent<HTMLDivElement>) => {\n if (handleKeyDown(e)) return;\n rowProps.onKeyDown?.(e as unknown as globalThis.KeyboardEvent);\n });\n\n // ---- Mods ----------------------------------------------------------------\n\n const sharedMods = useMemo(\n () => ({\n checked: isChecked,\n indeterminate: isIndeterminate,\n expanded: isExpanded,\n loading: isLoading,\n leaf: isLeaf,\n 'has-checkbox': isRowCheckable,\n 'has-menu': menuExposed,\n }),\n [\n isChecked,\n isIndeterminate,\n isExpanded,\n isLoading,\n isLeaf,\n isRowCheckable,\n menuExposed,\n ],\n );\n\n const rowMods = useMemo(\n () => ({ ...sharedMods, disabled: isDisabled }),\n [sharedMods, isDisabled],\n );\n\n const itemMods = useMemo(\n () => ({\n ...sharedMods,\n focused: isFocused,\n hovered: isHovered,\n pressed: isPressed,\n }),\n [sharedMods, isFocused, isHovered, isPressed],\n );\n\n const rowStyle = useMemo<CSSProperties>(\n () => ({\n ['--tree-level' as keyof CSSProperties]: String(node.level ?? 0),\n ...virtualStyle,\n }),\n [node.level, virtualStyle],\n );\n\n // Only emit `aria-checked` when the tree is in checkable mode.\n const ariaChecked: 'mixed' | 'true' | 'false' | undefined = isRowCheckable\n ? isIndeterminate\n ? 'mixed'\n : isChecked\n ? 'true'\n : 'false'\n : undefined;\n\n // ---- Compose row props ---------------------------------------------------\n\n // Merge react-aria + hover props but EXCLUDE `onKeyDown` from the\n // chain — `composedKeyDown` already wraps `rowProps.onKeyDown` and\n // must run first so our Shift+F10 / Space-checkbox shortcuts can\n // short-circuit the default react-aria behavior.\n const finalRowProps = {\n ...mergeProps(rowProps, hoverProps),\n 'aria-checked': ariaChecked,\n onKeyDown: composedKeyDown,\n };\n\n // ---- Toggle (chevron) and checkbox slots --------------------------------\n\n // Leaf rows get a placeholder so sibling indents align.\n const toggleNode = isLeaf ? (\n <TreeNodeTogglePlaceholder aria-hidden data-element=\"Toggle\" />\n ) : (\n <TreeNodeToggle {...expandButtonProps} tabIndex={-1} data-element=\"Toggle\">\n {isLoading ? (\n <LoadingIcon />\n ) : (\n <DirectionIcon to={isExpanded ? 'bottom' : 'right'} />\n )}\n </TreeNodeToggle>\n );\n\n const checkboxNode = isRowCheckable ? (\n <TreeNodeCheckboxWrapper\n data-element=\"Checkbox\"\n role=\"presentation\"\n onClick={handleWrapperClick}\n onKeyDown={stopPropagation}\n >\n <Checkbox\n isSelected={isChecked}\n isIndeterminate={isIndeterminate}\n isDisabled={isDisabled || data.isCheckboxDisabled}\n aria-label={\n typeof data.title === 'string' ? data.title : String(node.key)\n }\n onChange={handleCheckboxChange}\n />\n </TreeNodeCheckboxWrapper>\n ) : null;\n\n // ---- Resolve user-supplied per-node Item props --------------------------\n\n const resolvedItemProps =\n typeof itemProps === 'function' ? itemProps(data, nodeState) : itemProps;\n const {\n prefix: userPrefix,\n actions: userActions,\n ...restUserProps\n } = resolvedItemProps ?? {};\n\n const composedPrefix =\n checkboxNode || userPrefix ? (\n <>\n {checkboxNode}\n {userPrefix}\n </>\n ) : null;\n\n // ---- Built-in overflow `⋮` action ---------------------------------------\n\n const menuAction =\n menuExposed && !contextMenuOnly ? (\n <MenuTrigger isOpen={isMenuOpen} onOpenChange={setIsMenuOpen}>\n <ItemAction\n tabIndex={-1}\n icon={<MoreIcon />}\n aria-label={t('tree.actions', 'Actions')}\n {...menuTriggerProps}\n />\n <Menu {...menuProps} onAction={handleMenuAction}>\n {effectiveMenuChildren}\n </Menu>\n </MenuTrigger>\n ) : null;\n\n // Compose with user-supplied actions (user actions render first).\n const composedActions =\n userActions || menuAction ? (\n <>\n {userActions}\n {menuAction}\n </>\n ) : undefined;\n\n // ---- Refs / context-menu wiring -----------------------------------------\n\n // When the context menu is enabled for this row, attach the hook's\n // `targetRef` to the row so right-clicks land on the correct anchor.\n const refs = useMemo(() => {\n const list: Ref<HTMLDivElement>[] = [rowRef];\n if (virtualRef) list.push(virtualRef);\n if (menuExposed) list.push(rowContextMenu.targetRef);\n return mergeRefs(...list);\n }, [virtualRef, menuExposed, rowContextMenu.targetRef]);\n\n return (\n <TreeNodeRow\n {...finalRowProps}\n ref={refs}\n mods={rowMods}\n style={rowStyle}\n data-element=\"Row\"\n data-qa-key={String(node.key)}\n data-index={virtualIndex}\n >\n <TreeRowItem\n {...gridCellProps}\n {...restUserProps}\n size={size}\n isSelected={isSelected}\n isDisabled={isDisabled}\n mods={itemMods}\n icon={toggleNode}\n prefix={composedPrefix}\n actions={composedActions}\n styles={rowStyles}\n >\n {data.title}\n </TreeRowItem>\n {menuExposed && rowContextMenu.rendered}\n </TreeNodeRow>\n );\n}\n\nexport const TreeNode = memo(TreeNodeInner);\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAsCA,MAAM,mBAAmB,MAAsB;AAC7C,GAAE,iBAAiB;;;AAIrB,SAAS,YAAY,MAA0B;AAC7C,KAAI,SAAS,QAAQ,SAAS,UAAa,SAAS,MAAO,QAAO;AAClE,QAAO,SAAS,QAAQ,KAAK,CAAC,WAAW;;AAuD3C,SAAS,cAAc,OAAsB;CAC3C,MAAM,EAAE,MAAM,SAAS;CACvB,MAAM,EACJ,MACA,MACA,OACA,aACA,YACA,iBACA,WACA,WACA,iBACA,MACA,WACA,WACA,cACA,YACA,cACA,MAAM,UACN,aAAa,iBACb,UAAU,cACV,kBACA,cACE;CAEJ,MAAM,SAAS,OAAuB,KAAK;CAE3C,MAAM,EAAE,UAAU,eAAe,mBAAmB,cAAc,YAChE,EAAE,MAAM,EACR,OACA,OACD;CAED,MAAM,aAAa,MAAM,aAAa,IAAI,KAAK,IAAI;CACnD,MAAM,aAAa,MAAM,iBAAiB,WAAW,KAAK,IAAI;CAG9D,MAAM,EAAE,YAAY,cAAc,SAAS,EAAE,YAAY,CAAC;CAG1D,MAAM,YACJ,MAAM,iBAAiB,aACvB,MAAM,iBAAiB,eAAe,KAAK;CAG7C,MAAM,SACJ,KAAK,WAAW,QAAS,KAAK,WAAW,SAAS,CAAC,KAAK;CAC1D,MAAM,iBAAiB,eAAe,KAAK,gBAAgB;CAE3D,MAAM,YAA2B;EAC/B;EACA;EACA;EACA;EACA;EACD;CAID,MAAM,wBACJ,KAAK,SAAS,OACV,OACA,KAAK,SAAS,SACZ,KAAK,OACL,OAAO,aAAa,aAClB,SAAS,MAAM,UAAU,GACzB,YAAY;CACtB,MAAM,UAAU,CAAC,YAAY,sBAAsB;CAEnD,MAAM,uBACJ,KAAK,eAAe,mBAAmB;CAKzC,MAAM,cACJ,YACC,yBAAyB,QAAQ,yBAAyB;CAC7D,MAAM,kBAAkB,yBAAyB;CAGjD,MAAM,CAAC,YAAY,iBAAiB,SAAS,MAAM;CAEnD,MAAM,mBAAmB,UAAU,WAAgB;EAEjD,MAAM,YAAY,OAAO,OAAO;EAChC,MAAM,mBAAmB,UAAU,WAAW,KAAK,GAC/C,UAAU,MAAM,EAAE,GAClB;AACJ,OAAK,WAAW,iBAAiB;AACjC,iBAAe,kBAAkB,KAAK,IAAI;AAI1C,aAAW,WAAW,iBAAiB;GACvC;CAEF,MAAM,iBAAiB,eACrBA,QACA,EAAE,WAAW,gBAAgB,EAC7B;EACE,GAAG;EACH,UAAU;EACV,UAAU;EACX,CACF;CAID,MAAM,uBAAuB,eAAe;AAC1C,kBAAgB,OAAO,KAAK,IAAI,CAAC;GACjC;CAEF,MAAM,qBAAqB,UAAU,MAA+B;AAClE,IAAE,iBAAiB;AACnB,MAAI,cAAc,KAAK,mBAAoB;AAE3C,MAAK,EAAE,OAAuB,QAAQ,gCAA8B,CAClE;AACF,kBAAgB,OAAO,KAAK,IAAI,CAAC;GACjC;CAUF,MAAM,gBAAgB,UAAU,MAAqB;AAMnD,MACE,EAAE,QAAQ,OACV,kBACA,CAAC,cACD,CAAC,KAAK,oBACN;AACA,KAAE,gBAAgB;AAClB,mBAAgB,OAAO,KAAK,IAAI,CAAC;AACjC,UAAO;;AAIT,MAAI,EAAE,QAAQ,SAAS,EAAE,YAAY,aAAa;AAChD,KAAE,gBAAgB;AAClB,KAAE,iBAAiB;AACnB,OAAI,gBACF,gBAAe,MAAM;OAErB,eAAc,KAAK;AAErB,UAAO;;AAGT,SAAO;GACP;CAMF,MAAM,kBAAkB,UAAU,MAAqC;AACrE,MAAI,cAAc,EAAE,CAAE;AACtB,WAAS,YAAY,EAAyC;GAC9D;CAIF,MAAM,aAAa,eACV;EACL,SAAS;EACT,eAAe;EACf,UAAU;EACV,SAAS;EACT,MAAM;EACN,gBAAgB;EAChB,YAAY;EACb,GACD;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACD,CACF;CAED,MAAM,UAAU,eACP;EAAE,GAAG;EAAY,UAAU;EAAY,GAC9C,CAAC,YAAY,WAAW,CACzB;CAED,MAAM,WAAW,eACR;EACL,GAAG;EACH,SAAS;EACT,SAAS;EACT,SAAS;EACV,GACD;EAAC;EAAY;EAAW;EAAW;EAAU,CAC9C;CAED,MAAM,WAAW,eACR;GACJ,iBAAwC,OAAO,KAAK,SAAS,EAAE;EAChE,GAAG;EACJ,GACD,CAAC,KAAK,OAAO,aAAa,CAC3B;CAGD,MAAM,cAAsD,iBACxD,kBACE,UACA,YACE,SACA,UACJ;CAQJ,MAAM,gBAAgB;EACpB,GAAGC,aAAW,UAAU,WAAW;EACnC,gBAAgB;EAChB,WAAW;EACZ;CAKD,MAAM,aAAa,SACjB,oBAAC;EAA0B;EAAY,gBAAa;GAAW,GAE/D,oBAAC;EAAe,GAAI;EAAmB,UAAU;EAAI,gBAAa;YAC/D,YACC,oBAAC,gBAAc,GAEf,oBAAC,iBAAc,IAAI,aAAa,WAAW,UAAW;GAEzC;CAGnB,MAAM,eAAe,iBACnB,oBAAC;EACC,gBAAa;EACb,MAAK;EACL,SAAS;EACT,WAAW;YAEX,oBAACC;GACC,YAAY;GACK;GACjB,YAAY,cAAc,KAAK;GAC/B,cACE,OAAO,KAAK,UAAU,WAAW,KAAK,QAAQ,OAAO,KAAK,IAAI;GAEhE,UAAU;IACV;GACsB,GACxB;CAMJ,MAAM,EACJ,QAAQ,YACR,SAAS,aACT,GAAG,mBAJH,OAAO,cAAc,aAAa,UAAU,MAAM,UAAU,GAAG,cAKxC,EAAE;CAE3B,MAAM,iBACJ,gBAAgB,aACd,8CACG,cACA,cACA,GACD;CAIN,MAAM,aACJ,eAAe,CAAC,kBACd,qBAACC;EAAY,QAAQ;EAAY,cAAc;aAC7C,oBAAC;GACC,UAAU;GACV,MAAM,oBAAC,aAAW;GAClB,cAAY,EAAE,gBAAgB,UAAU;GACxC,GAAI;IACJ,EACF,oBAACH;GAAK,GAAI;GAAW,UAAU;aAC5B;IACI;GACK,GACZ;CAGN,MAAM,kBACJ,eAAe,aACb,8CACG,aACA,cACA,GACD;CAMN,MAAM,OAAO,cAAc;EACzB,MAAM,OAA8B,CAAC,OAAO;AAC5C,MAAI,WAAY,MAAK,KAAK,WAAW;AACrC,MAAI,YAAa,MAAK,KAAK,eAAe,UAAU;AACpD,SAAO,UAAU,GAAG,KAAK;IACxB;EAAC;EAAY;EAAa,eAAe;EAAU,CAAC;AAEvD,QACE,qBAAC;EACC,GAAI;EACJ,KAAK;EACL,MAAM;EACN,OAAO;EACP,gBAAa;EACb,eAAa,OAAO,KAAK,IAAI;EAC7B,cAAY;aAEZ,oBAAC;GACC,GAAI;GACJ,GAAI;GACE;GACM;GACA;GACZ,MAAM;GACN,MAAM;GACN,QAAQ;GACR,SAAS;GACT,QAAQ;aAEP,KAAK;IACM,EACb,eAAe,eAAe;GACnB;;AAIlB,MAAa,WAAW,KAAK,cAAc"}
1
+ {"version":3,"file":"TreeNode.js","names":["Menu","mergeProps","Checkbox","MenuTrigger"],"sources":["../../../../src/components/content/Tree/TreeNode.tsx"],"sourcesContent":["import { Children, memo, useMemo, useRef, useState } from 'react';\nimport { useHover, useTreeItem } from 'react-aria';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\nimport { DirectionIcon } from '../../../icons/DirectionIcon';\nimport { LoadingIcon } from '../../../icons/LoadingIcon';\nimport { MoreIcon } from '../../../icons/MoreIcon';\nimport { mergeProps, mergeRefs } from '../../../utils/react';\nimport { CubeItemActionProps, ItemAction } from '../../actions/ItemAction';\nimport { CubeMenuProps, Menu, MenuTrigger } from '../../actions/Menu';\nimport { useContextMenu } from '../../actions/use-context-menu';\nimport { Checkbox } from '../../fields/Checkbox/Checkbox';\n\nimport {\n TreeNodeCheckboxWrapper,\n TreeNodeRow,\n TreeNodeToggle,\n TreeNodeTogglePlaceholder,\n TreeRowItem,\n} from './styled';\n\nimport type { Key, Node } from '@react-types/shared';\nimport type { Styles } from '@tenphi/tasty';\nimport type {\n CSSProperties,\n KeyboardEvent,\n MouseEvent,\n ReactNode,\n Ref,\n SyntheticEvent,\n} from 'react';\nimport type { TreeState } from 'react-stately';\nimport type {\n CubeTreeNodeData,\n TreeContextMenu,\n TreeItemProps,\n TreeNodeState,\n} from './types';\n\nconst stopPropagation = (e: SyntheticEvent) => {\n e.stopPropagation();\n};\n\n/** Check whether a `menu` ReactNode actually contains anything. */\nfunction isMenuEmpty(menu: ReactNode): boolean {\n if (menu === null || menu === undefined || menu === false) return true;\n return Children.toArray(menu).length === 0;\n}\n\nexport interface TreeNodeProps {\n node: Node<CubeTreeNodeData>;\n /** The original `CubeTreeNodeData` for this row, looked up by key. */\n data: CubeTreeNodeData;\n state: TreeState<CubeTreeNodeData>;\n\n /** Whether the tree as a whole renders checkboxes. */\n isCheckable: boolean;\n /** Whether this row is currently expanded. */\n isExpanded: boolean;\n /** Whether the row is in an indeterminate (half-checked) state. */\n isIndeterminate: boolean;\n /** Whether the row is fully checked. */\n isChecked: boolean;\n /** Whether `loadData` is currently fetching this row's children. */\n isLoading: boolean;\n\n /** Toggle this row's checkbox (cascades). */\n onToggleChecked: (key: string) => void;\n\n /** Row size passed to the underlying Item. */\n size?: string;\n\n /** Per-node Item customization (static object or callback). */\n itemProps?:\n | TreeItemProps\n | ((data: CubeTreeNodeData, state: TreeNodeState) => TreeItemProps);\n\n /** Styles applied to the visible row (`TreeRowItem`). */\n rowStyles?: Styles;\n\n /** Inline style for virtualizer absolute positioning. */\n virtualStyle?: CSSProperties;\n /** Ref callback from `@tanstack/react-virtual` to measure row height. */\n virtualRef?: (element: HTMLElement | null) => void;\n /** Virtual index for `data-index` attribute. */\n virtualIndex?: number;\n\n /** Tree-wide menu default (resolved against `data.menu`). */\n menu?:\n | ReactNode\n | ((data: CubeTreeNodeData, state: TreeNodeState) => ReactNode | null);\n /** Tree-wide `contextMenu` default. */\n contextMenu?: TreeContextMenu;\n /** Tree-wide `onAction` callback. */\n onAction?: (action: string, key: Key) => void;\n /** Forwarded to every per-row `MenuTrigger`. */\n menuTriggerProps?: Partial<CubeItemActionProps>;\n /** Forwarded to every per-row `Menu`. */\n menuProps?: Partial<CubeMenuProps<object>>;\n}\n\nfunction TreeNodeInner(props: TreeNodeProps) {\n const { t } = useI18n();\n const {\n node,\n data,\n state,\n isCheckable,\n isExpanded,\n isIndeterminate,\n isChecked,\n isLoading,\n onToggleChecked,\n size,\n itemProps,\n rowStyles,\n virtualStyle,\n virtualRef,\n virtualIndex,\n menu: treeMenu,\n contextMenu: treeContextMenu,\n onAction: treeOnAction,\n menuTriggerProps,\n menuProps,\n } = props;\n\n const rowRef = useRef<HTMLDivElement>(null);\n\n const { rowProps, gridCellProps, expandButtonProps, isPressed } = useTreeItem(\n { node },\n state,\n rowRef,\n );\n\n const isDisabled = state.disabledKeys.has(node.key);\n const isSelected = state.selectionManager.isSelected(node.key);\n\n // `useTreeItem` doesn't track hover; we need it for the `hovered` mod.\n const { hoverProps, isHovered } = useHover({ isDisabled });\n // React Aria's treegrid uses roving tabindex, so no `data-focused`\n // attribute lands on the row — mirror it as a mod manually.\n const isFocused =\n state.selectionManager.isFocused &&\n state.selectionManager.focusedKey === node.key;\n // For lazy rows with no children yet, still render a toggle unless\n // explicitly marked as leaf.\n const isLeaf =\n data.isLeaf === true || (data.isLeaf !== false && !node.hasChildNodes);\n const isRowCheckable = isCheckable && data.isCheckable !== false;\n\n const nodeState: TreeNodeState = {\n isExpanded,\n isSelected,\n isChecked,\n isIndeterminate,\n isLeaf,\n };\n\n // ---- Menu resolution (per-node override > tree-level) --------------------\n\n const effectiveMenuChildren: ReactNode =\n data.menu === null\n ? null\n : data.menu !== undefined\n ? data.menu\n : typeof treeMenu === 'function'\n ? treeMenu(data, nodeState)\n : treeMenu ?? null;\n const hasMenu = !isMenuEmpty(effectiveMenuChildren);\n\n const effectiveContextMenu: TreeContextMenu =\n data.contextMenu ?? treeContextMenu ?? false;\n // The menu is exposed only when the consumer opts in via\n // `contextMenu`. When `contextMenu` is `false` (default) we render\n // nothing, even if `menu` is provided — this matches the plan and\n // keeps default rows visually clean.\n const menuExposed =\n hasMenu &&\n (effectiveContextMenu === true || effectiveContextMenu === 'context-only');\n const contextMenuOnly = effectiveContextMenu === 'context-only';\n\n // Controlled state for menu trigger (enables keyboard opening with Shift+F10)\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n\n const handleMenuAction = useEvent((action: Key) => {\n // Strip the \".$\" prefix that React adds via Children.toArray/map.\n const actionStr = String(action);\n const normalizedAction = actionStr.startsWith('.$')\n ? actionStr.slice(2)\n : actionStr;\n data.onAction?.(normalizedAction);\n treeOnAction?.(normalizedAction, node.key);\n // Forward to the consumer-supplied `menuProps.onAction` so users\n // who pass extra `Menu` props through `menuProps` still receive\n // the action stream alongside the tree-level callback.\n menuProps?.onAction?.(normalizedAction);\n });\n\n const rowContextMenu = useContextMenu<HTMLDivElement, CubeMenuProps<object>>(\n Menu,\n { placement: 'bottom start' },\n {\n ...menuProps,\n onAction: handleMenuAction,\n children: effectiveMenuChildren,\n },\n );\n\n // ---- Checkbox ------------------------------------------------------------\n\n const handleCheckboxChange = useEvent(() => {\n onToggleChecked(String(node.key));\n });\n\n const handleWrapperClick = useEvent((e: MouseEvent<HTMLElement>) => {\n e.stopPropagation();\n if (isDisabled || data.isCheckboxDisabled) return;\n // The inner <Checkbox> label toggles on direct click; skip to avoid a double toggle.\n if ((e.target as HTMLElement).closest('[data-qa=\"CheckboxWrapper\"]'))\n return;\n onToggleChecked(String(node.key));\n });\n\n // ---- Keyboard ------------------------------------------------------------\n\n // Composed keydown handler. Runs BEFORE `rowProps.onKeyDown` from\n // `useTreeItem` so we can short-circuit the default react-aria\n // behavior for our own shortcuts (Shift+F10 menu open, Space\n // checkbox toggle). Returns `true` when the event was handled and\n // react-aria's keydown must NOT run; returns `false` to chain to\n // react-aria's handler.\n const handleKeyDown = useEvent((e: KeyboardEvent) => {\n // Space toggles the checkbox first when checkable. We DON'T claim\n // the event (return `false`) so react-aria's onKeyDown still runs\n // afterwards and the focused row also selects — matching the\n // pre-refactor behavior when handlers were chained via\n // `mergeProps`. `preventDefault` is kept to suppress page scroll.\n if (\n e.key === ' ' &&\n isRowCheckable &&\n !isDisabled &&\n !data.isCheckboxDisabled\n ) {\n e.preventDefault();\n onToggleChecked(String(node.key));\n return false;\n }\n\n // Shift+F10 opens the row menu (standard accessibility shortcut).\n if (e.key === 'F10' && e.shiftKey && menuExposed) {\n e.preventDefault();\n e.stopPropagation();\n if (contextMenuOnly) {\n rowContextMenu.open();\n } else {\n setIsMenuOpen(true);\n }\n return true;\n }\n\n return false;\n });\n\n // Wrapper that delegates to react-aria's default keydown only when\n // our handler did not claim the event. Replaces (rather than\n // chains with) `rowProps.onKeyDown` so the order of handlers is\n // strictly: our shortcuts → react-aria default.\n const composedKeyDown = useEvent((e: KeyboardEvent<HTMLDivElement>) => {\n if (handleKeyDown(e)) return;\n rowProps.onKeyDown?.(e as unknown as globalThis.KeyboardEvent);\n });\n\n // ---- Mods ----------------------------------------------------------------\n\n const sharedMods = useMemo(\n () => ({\n checked: isChecked,\n indeterminate: isIndeterminate,\n expanded: isExpanded,\n loading: isLoading,\n leaf: isLeaf,\n 'has-checkbox': isRowCheckable,\n 'has-menu': menuExposed,\n }),\n [\n isChecked,\n isIndeterminate,\n isExpanded,\n isLoading,\n isLeaf,\n isRowCheckable,\n menuExposed,\n ],\n );\n\n const rowMods = useMemo(\n () => ({ ...sharedMods, disabled: isDisabled }),\n [sharedMods, isDisabled],\n );\n\n const itemMods = useMemo(\n () => ({\n ...sharedMods,\n focused: isFocused,\n hovered: isHovered,\n pressed: isPressed,\n }),\n [sharedMods, isFocused, isHovered, isPressed],\n );\n\n const rowStyle = useMemo<CSSProperties>(\n () => ({\n ['--tree-level' as keyof CSSProperties]: String(node.level ?? 0),\n ...virtualStyle,\n }),\n [node.level, virtualStyle],\n );\n\n // Only emit `aria-checked` when the tree is in checkable mode.\n const ariaChecked: 'mixed' | 'true' | 'false' | undefined = isRowCheckable\n ? isIndeterminate\n ? 'mixed'\n : isChecked\n ? 'true'\n : 'false'\n : undefined;\n\n // ---- Compose row props ---------------------------------------------------\n\n // Merge react-aria + hover props but EXCLUDE `onKeyDown` from the\n // chain — `composedKeyDown` already wraps `rowProps.onKeyDown` and\n // must run first so our Shift+F10 / Space-checkbox shortcuts can\n // short-circuit the default react-aria behavior.\n const finalRowProps = {\n ...mergeProps(rowProps, hoverProps),\n 'aria-checked': ariaChecked,\n onKeyDown: composedKeyDown,\n };\n\n // ---- Toggle (chevron) and checkbox slots --------------------------------\n\n // Leaf rows get a placeholder so sibling indents align.\n const toggleNode = isLeaf ? (\n <TreeNodeTogglePlaceholder aria-hidden data-element=\"Toggle\" />\n ) : (\n <TreeNodeToggle {...expandButtonProps} tabIndex={-1} data-element=\"Toggle\">\n {isLoading ? (\n <LoadingIcon />\n ) : (\n <DirectionIcon to={isExpanded ? 'bottom' : 'right'} />\n )}\n </TreeNodeToggle>\n );\n\n const checkboxNode = isRowCheckable ? (\n <TreeNodeCheckboxWrapper\n data-element=\"Checkbox\"\n role=\"presentation\"\n onClick={handleWrapperClick}\n onKeyDown={stopPropagation}\n >\n <Checkbox\n isSelected={isChecked}\n isIndeterminate={isIndeterminate}\n isDisabled={isDisabled || data.isCheckboxDisabled}\n aria-label={\n typeof data.title === 'string' ? data.title : String(node.key)\n }\n onChange={handleCheckboxChange}\n />\n </TreeNodeCheckboxWrapper>\n ) : null;\n\n // ---- Resolve user-supplied per-node Item props --------------------------\n\n const resolvedItemProps =\n typeof itemProps === 'function' ? itemProps(data, nodeState) : itemProps;\n const {\n prefix: userPrefix,\n actions: userActions,\n ...restUserProps\n } = resolvedItemProps ?? {};\n\n const composedPrefix =\n checkboxNode || userPrefix ? (\n <>\n {checkboxNode}\n {userPrefix}\n </>\n ) : null;\n\n // ---- Built-in overflow `⋮` action ---------------------------------------\n\n const menuAction =\n menuExposed && !contextMenuOnly ? (\n <MenuTrigger isOpen={isMenuOpen} onOpenChange={setIsMenuOpen}>\n <ItemAction\n tabIndex={-1}\n icon={<MoreIcon />}\n aria-label={t('tree.actions', 'Actions')}\n {...menuTriggerProps}\n />\n <Menu {...menuProps} onAction={handleMenuAction}>\n {effectiveMenuChildren}\n </Menu>\n </MenuTrigger>\n ) : null;\n\n // Compose with user-supplied actions (user actions render first).\n const composedActions =\n userActions || menuAction ? (\n <>\n {userActions}\n {menuAction}\n </>\n ) : undefined;\n\n // ---- Refs / context-menu wiring -----------------------------------------\n\n // When the context menu is enabled for this row, attach the hook's\n // `targetRef` to the row so right-clicks land on the correct anchor.\n const refs = useMemo(() => {\n const list: Ref<HTMLDivElement>[] = [rowRef];\n if (virtualRef) list.push(virtualRef);\n if (menuExposed) list.push(rowContextMenu.targetRef);\n return mergeRefs(...list);\n }, [virtualRef, menuExposed, rowContextMenu.targetRef]);\n\n return (\n <TreeNodeRow\n {...finalRowProps}\n ref={refs}\n mods={rowMods}\n style={rowStyle}\n data-element=\"Row\"\n data-qa-key={String(node.key)}\n data-index={virtualIndex}\n >\n <TreeRowItem\n {...gridCellProps}\n {...restUserProps}\n size={size}\n isSelected={isSelected}\n isDisabled={isDisabled}\n mods={itemMods}\n icon={toggleNode}\n prefix={composedPrefix}\n actions={composedActions}\n styles={rowStyles}\n >\n {data.title}\n </TreeRowItem>\n {menuExposed && rowContextMenu.rendered}\n </TreeNodeRow>\n );\n}\n\nexport const TreeNode = memo(TreeNodeInner);\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { _Item } from "../Item/Item.js";
3
3
  import { Action } from "../../actions/Action/Action.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  //#region src/components/content/Tree/tree-index.ts
3
3
  function buildTreeIndex(treeData) {
4
4
  const byKey = /* @__PURE__ */ new Map();
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useMemo, useState } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { useRef, useState } from "react";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { _Text } from "./Text.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { TooltipProvider } from "../overlays/Tooltip/TooltipProvider.js";
3
3
  import { useCallback, useEffect, useMemo, useRef, useState } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,9 +1,9 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | 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";
5
- import { CloseIcon } from "../../../icons/CloseIcon.js";
6
5
  import { Button } from "../../actions/index.js";
6
+ import { CloseIcon } from "../../../icons/CloseIcon.js";
7
7
  import { useItemTableChrome } from "./ItemTableToolbar.js";
8
8
  import { tasty } from "@tenphi/tasty";
9
9
  import { useState } from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"ItemTableBulkBar.js","names":["Text"],"sources":["../../../../src/components/data/ItemTable/ItemTableBulkBar.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { useState } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\nimport { CloseIcon } from '../../../icons';\nimport { Button } from '../../actions';\nimport { Text } from '../../content/Text';\n\nimport { useItemTableChrome } from './ItemTableToolbar';\n\nimport type { Styles } from '@tenphi/tasty';\nimport type { CubeTableBulkAction } from './types';\n\nconst BarElement = tasty({\n qa: 'ItemTableBulkBar',\n as: 'div',\n styles: {\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n boxSizing: 'border-box',\n\n /**\n * `floating` lifts the bar out of the grid and centres it over the body, so\n * it never changes the table's height — a bar that pushed the rows down\n * would move the very row the user is about to click.\n */\n position: { '': 'static', floating: 'absolute' },\n inset: { '': 'auto', floating: 'auto auto 2x 50%' },\n translate: { '': false, floating: '-50% 0' },\n zIndex: { '': 'auto', floating: 10 },\n // A raised surface rather than an inverted \"toast\": `#dark` flips to a light\n // colour under the dark theme, which would put white text on a light bar.\n fill: { '': '#clear', floating: '#surface' },\n color: '#surface-text',\n border: { '': false, floating: true },\n radius: { '': 0, floating: '1cr' },\n shadow: { '': false, floating: '0 1x 3x #shadow' },\n padding: { '': 0, floating: '1x 1.5x' },\n width: { '': 'auto', floating: 'max (100% - 4x)' },\n },\n});\n\nexport interface ItemTableBulkBarProps<T = any> {\n actions: CubeTableBulkAction<T>[];\n /** @default 'floating' */\n placement?: 'floating' | 'toolbar';\n styles?: Styles;\n}\n\n/**\n * The action bar shown while rows are selected.\n *\n * Reads the selection from context rather than props, so a consumer rebuilding\n * the toolbar can drop `<ItemTable.BulkBar>` wherever it likes and still have\n * one owner of the selection.\n */\nexport function ItemTableBulkBar<T = any>(props: ItemTableBulkBarProps<T>) {\n const { actions, placement = 'floating', styles } = props;\n const { t } = useI18n();\n const chrome = useItemTableChrome('ItemTable.BulkBar');\n const { selectedRows, selectedCount, clearSelection } = chrome;\n\n // Per-action, so one slow request cannot disable the others.\n const [loadingKeys, setLoadingKeys] = useState<Record<string, boolean>>({});\n\n const run = useEvent(async (action: CubeTableBulkAction<T>) => {\n const setLoading = (value: boolean) =>\n setLoadingKeys((current) => ({ ...current, [action.key]: value }));\n\n try {\n await action.onAction(selectedRows as T[], { setLoading });\n\n // Deselecting is the default because the rows an action just deleted or\n // moved are usually gone; an action that only reads keeps the selection\n // by opting out.\n if (action.deselectAfter !== false) clearSelection();\n } finally {\n setLoading(false);\n }\n });\n\n if (selectedCount === 0) return null;\n\n return (\n <BarElement\n role=\"toolbar\"\n aria-label={t('itemTable.bulkActions', 'Bulk actions')}\n styles={styles}\n mods={{ floating: placement === 'floating' }}\n >\n <Text nowrap>\n {t('itemTable.selectedCount', '{{count}} selected', {\n count: selectedCount,\n })}\n </Text>\n\n {actions.map((action) => {\n const isDisabled = action.isDisabled?.(selectedRows as T[]) ?? false;\n\n return (\n <Button\n key={action.key}\n size=\"small\"\n type={action.type ?? 'outline'}\n theme={action.theme}\n icon={action.icon}\n isDisabled={isDisabled}\n isLoading={loadingKeys[action.key]}\n // The button's own prop rather than a wrapping `TooltipProvider`:\n // that is what lets it stay hoverable while disabled, which is the\n // only state this tooltip is shown in.\n tooltip={\n isDisabled && action.disabledTooltip\n ? action.disabledTooltip\n : undefined\n }\n onPress={() => run(action)}\n >\n {action.label}\n </Button>\n );\n })}\n\n <Button\n size=\"small\"\n type=\"clear\"\n icon={<CloseIcon />}\n aria-label={t('itemTable.clearSelection', 'Clear selection')}\n onPress={clearSelection}\n />\n </BarElement>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAcA,MAAM,aAAa,MAAM;CACvB,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,MAAM;EACN,KAAK;EACL,YAAY;EACZ,WAAW;EAOX,UAAU;GAAE,IAAI;GAAU,UAAU;GAAY;EAChD,OAAO;GAAE,IAAI;GAAQ,UAAU;GAAoB;EACnD,WAAW;GAAE,IAAI;GAAO,UAAU;GAAU;EAC5C,QAAQ;GAAE,IAAI;GAAQ,UAAU;GAAI;EAGpC,MAAM;GAAE,IAAI;GAAU,UAAU;GAAY;EAC5C,OAAO;EACP,QAAQ;GAAE,IAAI;GAAO,UAAU;GAAM;EACrC,QAAQ;GAAE,IAAI;GAAG,UAAU;GAAO;EAClC,QAAQ;GAAE,IAAI;GAAO,UAAU;GAAmB;EAClD,SAAS;GAAE,IAAI;GAAG,UAAU;GAAW;EACvC,OAAO;GAAE,IAAI;GAAQ,UAAU;GAAmB;EACnD;CACF,CAAC;;;;;;;;AAgBF,SAAgB,iBAA0B,OAAiC;CACzE,MAAM,EAAE,SAAS,YAAY,YAAY,WAAW;CACpD,MAAM,EAAE,MAAM,SAAS;CAEvB,MAAM,EAAE,cAAc,eAAe,mBADtB,mBAAmB,oBAAoB;CAItD,MAAM,CAAC,aAAa,kBAAkB,SAAkC,EAAE,CAAC;CAE3E,MAAM,MAAM,SAAS,OAAO,WAAmC;EAC7D,MAAM,cAAc,UAClB,gBAAgB,aAAa;GAAE,GAAG;IAAU,OAAO,MAAM;GAAO,EAAE;AAEpE,MAAI;AACF,SAAM,OAAO,SAAS,cAAqB,EAAE,YAAY,CAAC;AAK1D,OAAI,OAAO,kBAAkB,MAAO,iBAAgB;YAC5C;AACR,cAAW,MAAM;;GAEnB;AAEF,KAAI,kBAAkB,EAAG,QAAO;AAEhC,QACE,qBAAC;EACC,MAAK;EACL,cAAY,EAAE,yBAAyB,eAAe;EAC9C;EACR,MAAM,EAAE,UAAU,cAAc,YAAY;;GAE5C,oBAACA;IAAK;cACH,EAAE,2BAA2B,sBAAsB,EAClD,OAAO,eACR,CAAC;KACG;GAEN,QAAQ,KAAK,WAAW;IACvB,MAAM,aAAa,OAAO,aAAa,aAAoB,IAAI;AAE/D,WACE,oBAAC;KAEC,MAAK;KACL,MAAM,OAAO,QAAQ;KACrB,OAAO,OAAO;KACd,MAAM,OAAO;KACD;KACZ,WAAW,YAAY,OAAO;KAI9B,SACE,cAAc,OAAO,kBACjB,OAAO,kBACP;KAEN,eAAe,IAAI,OAAO;eAEzB,OAAO;OAjBH,OAAO,IAkBL;KAEX;GAEF,oBAAC;IACC,MAAK;IACL,MAAK;IACL,MAAM,oBAAC,cAAY;IACnB,cAAY,EAAE,4BAA4B,kBAAkB;IAC5D,SAAS;KACT;;GACS"}
1
+ {"version":3,"file":"ItemTableBulkBar.js","names":["Text"],"sources":["../../../../src/components/data/ItemTable/ItemTableBulkBar.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { useState } from 'react';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { Button } from '../../actions';\nimport { Text } from '../../content/Text';\n\nimport { useItemTableChrome } from './ItemTableToolbar';\n\nimport type { Styles } from '@tenphi/tasty';\nimport type { CubeTableBulkAction } from './types';\n\nconst BarElement = tasty({\n qa: 'ItemTableBulkBar',\n as: 'div',\n styles: {\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n boxSizing: 'border-box',\n\n /**\n * `floating` lifts the bar out of the grid and centres it over the body, so\n * it never changes the table's height — a bar that pushed the rows down\n * would move the very row the user is about to click.\n */\n position: { '': 'static', floating: 'absolute' },\n inset: { '': 'auto', floating: 'auto auto 2x 50%' },\n translate: { '': false, floating: '-50% 0' },\n zIndex: { '': 'auto', floating: 10 },\n // A raised surface rather than an inverted \"toast\": `#dark` flips to a light\n // colour under the dark theme, which would put white text on a light bar.\n fill: { '': '#clear', floating: '#surface' },\n color: '#surface-text',\n border: { '': false, floating: true },\n radius: { '': 0, floating: '1cr' },\n shadow: { '': false, floating: '0 1x 3x #shadow' },\n padding: { '': 0, floating: '1x 1.5x' },\n width: { '': 'auto', floating: 'max (100% - 4x)' },\n },\n});\n\nexport interface ItemTableBulkBarProps<T = any> {\n actions: CubeTableBulkAction<T>[];\n /** @default 'floating' */\n placement?: 'floating' | 'toolbar';\n styles?: Styles;\n}\n\n/**\n * The action bar shown while rows are selected.\n *\n * Reads the selection from context rather than props, so a consumer rebuilding\n * the toolbar can drop `<ItemTable.BulkBar>` wherever it likes and still have\n * one owner of the selection.\n */\nexport function ItemTableBulkBar<T = any>(props: ItemTableBulkBarProps<T>) {\n const { actions, placement = 'floating', styles } = props;\n const { t } = useI18n();\n const chrome = useItemTableChrome('ItemTable.BulkBar');\n const { selectedRows, selectedCount, clearSelection } = chrome;\n\n // Per-action, so one slow request cannot disable the others.\n const [loadingKeys, setLoadingKeys] = useState<Record<string, boolean>>({});\n\n const run = useEvent(async (action: CubeTableBulkAction<T>) => {\n const setLoading = (value: boolean) =>\n setLoadingKeys((current) => ({ ...current, [action.key]: value }));\n\n try {\n await action.onAction(selectedRows as T[], { setLoading });\n\n // Deselecting is the default because the rows an action just deleted or\n // moved are usually gone; an action that only reads keeps the selection\n // by opting out.\n if (action.deselectAfter !== false) clearSelection();\n } finally {\n setLoading(false);\n }\n });\n\n if (selectedCount === 0) return null;\n\n return (\n <BarElement\n role=\"toolbar\"\n aria-label={t('itemTable.bulkActions', 'Bulk actions')}\n styles={styles}\n mods={{ floating: placement === 'floating' }}\n >\n <Text nowrap>\n {t('itemTable.selectedCount', '{{count}} selected', {\n count: selectedCount,\n })}\n </Text>\n\n {actions.map((action) => {\n const isDisabled = action.isDisabled?.(selectedRows as T[]) ?? false;\n\n return (\n <Button\n key={action.key}\n size=\"small\"\n type={action.type ?? 'outline'}\n theme={action.theme}\n icon={action.icon}\n isDisabled={isDisabled}\n isLoading={loadingKeys[action.key]}\n // The button's own prop rather than a wrapping `TooltipProvider`:\n // that is what lets it stay hoverable while disabled, which is the\n // only state this tooltip is shown in.\n tooltip={\n isDisabled && action.disabledTooltip\n ? action.disabledTooltip\n : undefined\n }\n onPress={() => run(action)}\n >\n {action.label}\n </Button>\n );\n })}\n\n <Button\n size=\"small\"\n type=\"clear\"\n icon={<CloseIcon />}\n aria-label={t('itemTable.clearSelection', 'Clear selection')}\n onPress={clearSelection}\n />\n </BarElement>\n );\n}\n"],"mappings":";;;;;;;;;;;;AAcA,MAAM,aAAa,MAAM;CACvB,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,MAAM;EACN,KAAK;EACL,YAAY;EACZ,WAAW;EAOX,UAAU;GAAE,IAAI;GAAU,UAAU;GAAY;EAChD,OAAO;GAAE,IAAI;GAAQ,UAAU;GAAoB;EACnD,WAAW;GAAE,IAAI;GAAO,UAAU;GAAU;EAC5C,QAAQ;GAAE,IAAI;GAAQ,UAAU;GAAI;EAGpC,MAAM;GAAE,IAAI;GAAU,UAAU;GAAY;EAC5C,OAAO;EACP,QAAQ;GAAE,IAAI;GAAO,UAAU;GAAM;EACrC,QAAQ;GAAE,IAAI;GAAG,UAAU;GAAO;EAClC,QAAQ;GAAE,IAAI;GAAO,UAAU;GAAmB;EAClD,SAAS;GAAE,IAAI;GAAG,UAAU;GAAW;EACvC,OAAO;GAAE,IAAI;GAAQ,UAAU;GAAmB;EACnD;CACF,CAAC;;;;;;;;AAgBF,SAAgB,iBAA0B,OAAiC;CACzE,MAAM,EAAE,SAAS,YAAY,YAAY,WAAW;CACpD,MAAM,EAAE,MAAM,SAAS;CAEvB,MAAM,EAAE,cAAc,eAAe,mBADtB,mBAAmB,oBAAoB;CAItD,MAAM,CAAC,aAAa,kBAAkB,SAAkC,EAAE,CAAC;CAE3E,MAAM,MAAM,SAAS,OAAO,WAAmC;EAC7D,MAAM,cAAc,UAClB,gBAAgB,aAAa;GAAE,GAAG;IAAU,OAAO,MAAM;GAAO,EAAE;AAEpE,MAAI;AACF,SAAM,OAAO,SAAS,cAAqB,EAAE,YAAY,CAAC;AAK1D,OAAI,OAAO,kBAAkB,MAAO,iBAAgB;YAC5C;AACR,cAAW,MAAM;;GAEnB;AAEF,KAAI,kBAAkB,EAAG,QAAO;AAEhC,QACE,qBAAC;EACC,MAAK;EACL,cAAY,EAAE,yBAAyB,eAAe;EAC9C;EACR,MAAM,EAAE,UAAU,cAAc,YAAY;;GAE5C,oBAACA;IAAK;cACH,EAAE,2BAA2B,sBAAsB,EAClD,OAAO,eACR,CAAC;KACG;GAEN,QAAQ,KAAK,WAAW;IACvB,MAAM,aAAa,OAAO,aAAa,aAAoB,IAAI;AAE/D,WACE,oBAAC;KAEC,MAAK;KACL,MAAM,OAAO,QAAQ;KACrB,OAAO,OAAO;KACd,MAAM,OAAO;KACD;KACZ,WAAW,YAAY,OAAO;KAI9B,SACE,cAAc,OAAO,kBACjB,OAAO,kBACP;KAEN,eAAe,IAAI,OAAO;eAEzB,OAAO;OAjBH,OAAO,IAkBL;KAEX;GAEF,oBAAC;IACC,MAAK;IACL,MAAK;IACL,MAAM,oBAAC,cAAY;IACnB,cAAY,EAAE,4BAA4B,kBAAkB;IAC5D,SAAS;KACT;;GACS"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { _Text } from "../../content/Text.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { _Pagination } from "../../navigation/Pagination/Pagination.js";
3
3
  import { tasty } from "@tenphi/tasty";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,7 +1,7 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { useI18n } from "../../../i18n/useI18n.js";
3
- import { ReloadIcon } from "../../../icons/ReloadIcon.js";
4
3
  import { Button } from "../../actions/index.js";
4
+ import { ReloadIcon } from "../../../icons/ReloadIcon.js";
5
5
  import { SearchInput } from "../../fields/SearchInput/SearchInput.js";
6
6
  import { tasty } from "@tenphi/tasty";
7
7
  import { createContext, useContext } from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"ItemTableToolbar.js","names":[],"sources":["../../../../src/components/data/ItemTable/ItemTableToolbar.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { createContext, useContext } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { ReloadIcon } from '../../../icons';\nimport { Button } from '../../actions';\nimport { SearchInput } from '../../fields/SearchInput';\n\nimport type { Key } from '@react-types/shared';\nimport type { Styles } from '@tenphi/tasty';\nimport type { ReactNode } from 'react';\n\n/**\n * Lets `ItemTable.Search` (and future chrome pieces) read the table's state\n * without prop drilling, so a consumer can rebuild the toolbar from parts and\n * still have exactly one owner of the search term.\n */\nexport interface CubeItemTableChromeState<T = any> {\n searchValue: string;\n setSearchValue: (value: string) => void;\n searchPlaceholder?: string;\n isLoading: boolean;\n onRefresh?: () => void;\n /** `'all'` is the sentinel, so `selectedCount` is what the UI should show. */\n selectedKeys: Key[] | 'all';\n selectedRows: T[];\n selectedCount: number;\n clearSelection: () => void;\n}\n\nconst ChromeContext = createContext<CubeItemTableChromeState | null>(null);\n\nexport const ItemTableChromeProvider = ChromeContext.Provider;\n\nexport function useItemTableChrome(component: string) {\n const context = useContext(ChromeContext);\n\n if (!context) {\n throw new Error(\n `${component} must be rendered inside an ItemTable — it reads the table's search state from context.`,\n );\n }\n\n return context;\n}\n\nconst ToolbarElement = tasty({\n qa: 'ItemTableToolbar',\n as: 'div',\n styles: {\n gridRow: 1,\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n placeContent: 'space-between',\n padding: '1x',\n border: '1bw #border bottom',\n\n // Left group: search, then filters.\n Start: {\n $: '>',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n width: 'min 0',\n },\n // Right group: arbitrary consumer actions, then refresh.\n End: {\n $: '>',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n },\n },\n});\n\nconst SearchElement = tasty(SearchInput, {\n qa: 'ItemTableSearchInput',\n styles: { width: 'max 300px' },\n});\n\n/** The table's search input, bound to the table's own state. */\nexport function ItemTableSearch(props: {\n placeholder?: string;\n styles?: Styles;\n qa?: string;\n}) {\n const { searchValue, setSearchValue, searchPlaceholder } =\n useItemTableChrome('ItemTable.Search');\n const { t } = useI18n();\n\n return (\n <SearchElement\n qa={props.qa}\n size=\"small\"\n isClearable\n aria-label={t('itemTable.search', 'Search')}\n placeholder={\n props.placeholder ??\n searchPlaceholder ??\n t('itemTable.searchPlaceholder', 'Search...')\n }\n value={searchValue}\n styles={props.styles}\n onChange={setSearchValue}\n />\n );\n}\n\nexport interface ItemTableToolbarProps {\n isSearchable?: boolean;\n filters?: ReactNode;\n actions?: ReactNode;\n onRefresh?: () => void;\n isLoading?: boolean;\n styles?: Styles;\n searchStyles?: Styles;\n}\n\nexport function ItemTableToolbar({\n isSearchable,\n filters,\n actions,\n onRefresh,\n isLoading,\n styles,\n searchStyles,\n}: ItemTableToolbarProps) {\n const { t } = useI18n();\n\n return (\n <ToolbarElement styles={styles} role=\"toolbar\">\n <div data-element=\"Start\">\n {isSearchable ? <ItemTableSearch styles={searchStyles} /> : null}\n {filters}\n </div>\n <div data-element=\"End\">\n {actions}\n {onRefresh ? (\n <Button\n qa=\"ItemTableRefreshButton\"\n size=\"small\"\n icon={<ReloadIcon />}\n isLoading={isLoading}\n aria-label={t('itemTable.refresh', 'Refresh')}\n onPress={onRefresh}\n />\n ) : null}\n </div>\n </ToolbarElement>\n );\n}\n"],"mappings":";;;;;;;;;;AA8BA,MAAM,gBAAgB,cAA+C,KAAK;AAE1E,MAAa,0BAA0B,cAAc;AAErD,SAAgB,mBAAmB,WAAmB;CACpD,MAAM,UAAU,WAAW,cAAc;AAEzC,KAAI,CAAC,QACH,OAAM,IAAI,MACR,GAAG,UAAU,yFACd;AAGH,QAAO;;AAGT,MAAM,iBAAiB,MAAM;CAC3B,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,SAAS;EACT,MAAM;EACN,KAAK;EACL,YAAY;EACZ,cAAc;EACd,SAAS;EACT,QAAQ;EAGR,OAAO;GACL,GAAG;GACH,SAAS;GACT,MAAM;GACN,KAAK;GACL,YAAY;GACZ,OAAO;GACR;EAED,KAAK;GACH,GAAG;GACH,SAAS;GACT,MAAM;GACN,KAAK;GACL,YAAY;GACb;EACF;CACF,CAAC;AAEF,MAAM,gBAAgB,MAAM,aAAa;CACvC,IAAI;CACJ,QAAQ,EAAE,OAAO,aAAa;CAC/B,CAAC;;AAGF,SAAgB,gBAAgB,OAI7B;CACD,MAAM,EAAE,aAAa,gBAAgB,sBACnC,mBAAmB,mBAAmB;CACxC,MAAM,EAAE,MAAM,SAAS;AAEvB,QACE,oBAAC;EACC,IAAI,MAAM;EACV,MAAK;EACL;EACA,cAAY,EAAE,oBAAoB,SAAS;EAC3C,aACE,MAAM,eACN,qBACA,EAAE,+BAA+B,YAAY;EAE/C,OAAO;EACP,QAAQ,MAAM;EACd,UAAU;GACV;;AAcN,SAAgB,iBAAiB,EAC/B,cACA,SACA,SACA,WACA,WACA,QACA,gBACwB;CACxB,MAAM,EAAE,MAAM,SAAS;AAEvB,QACE,qBAAC;EAAuB;EAAQ,MAAK;aACnC,qBAAC;GAAI,gBAAa;cACf,eAAe,oBAAC,mBAAgB,QAAQ,eAAgB,GAAG,MAC3D;IACG,EACN,qBAAC;GAAI,gBAAa;cACf,SACA,YACC,oBAAC;IACC,IAAG;IACH,MAAK;IACL,MAAM,oBAAC,eAAa;IACT;IACX,cAAY,EAAE,qBAAqB,UAAU;IAC7C,SAAS;KACT,GACA;IACA;GACS"}
1
+ {"version":3,"file":"ItemTableToolbar.js","names":[],"sources":["../../../../src/components/data/ItemTable/ItemTableToolbar.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport { createContext, useContext } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { ReloadIcon } from '../../../icons/ReloadIcon';\nimport { Button } from '../../actions';\nimport { SearchInput } from '../../fields/SearchInput';\n\nimport type { Key } from '@react-types/shared';\nimport type { Styles } from '@tenphi/tasty';\nimport type { ReactNode } from 'react';\n\n/**\n * Lets `ItemTable.Search` (and future chrome pieces) read the table's state\n * without prop drilling, so a consumer can rebuild the toolbar from parts and\n * still have exactly one owner of the search term.\n */\nexport interface CubeItemTableChromeState<T = any> {\n searchValue: string;\n setSearchValue: (value: string) => void;\n searchPlaceholder?: string;\n isLoading: boolean;\n onRefresh?: () => void;\n /** `'all'` is the sentinel, so `selectedCount` is what the UI should show. */\n selectedKeys: Key[] | 'all';\n selectedRows: T[];\n selectedCount: number;\n clearSelection: () => void;\n}\n\nconst ChromeContext = createContext<CubeItemTableChromeState | null>(null);\n\nexport const ItemTableChromeProvider = ChromeContext.Provider;\n\nexport function useItemTableChrome(component: string) {\n const context = useContext(ChromeContext);\n\n if (!context) {\n throw new Error(\n `${component} must be rendered inside an ItemTable — it reads the table's search state from context.`,\n );\n }\n\n return context;\n}\n\nconst ToolbarElement = tasty({\n qa: 'ItemTableToolbar',\n as: 'div',\n styles: {\n gridRow: 1,\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n placeContent: 'space-between',\n padding: '1x',\n border: '1bw #border bottom',\n\n // Left group: search, then filters.\n Start: {\n $: '>',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n width: 'min 0',\n },\n // Right group: arbitrary consumer actions, then refresh.\n End: {\n $: '>',\n display: 'flex',\n flow: 'row',\n gap: '1x',\n placeItems: 'center',\n },\n },\n});\n\nconst SearchElement = tasty(SearchInput, {\n qa: 'ItemTableSearchInput',\n styles: { width: 'max 300px' },\n});\n\n/** The table's search input, bound to the table's own state. */\nexport function ItemTableSearch(props: {\n placeholder?: string;\n styles?: Styles;\n qa?: string;\n}) {\n const { searchValue, setSearchValue, searchPlaceholder } =\n useItemTableChrome('ItemTable.Search');\n const { t } = useI18n();\n\n return (\n <SearchElement\n qa={props.qa}\n size=\"small\"\n isClearable\n aria-label={t('itemTable.search', 'Search')}\n placeholder={\n props.placeholder ??\n searchPlaceholder ??\n t('itemTable.searchPlaceholder', 'Search...')\n }\n value={searchValue}\n styles={props.styles}\n onChange={setSearchValue}\n />\n );\n}\n\nexport interface ItemTableToolbarProps {\n isSearchable?: boolean;\n filters?: ReactNode;\n actions?: ReactNode;\n onRefresh?: () => void;\n isLoading?: boolean;\n styles?: Styles;\n searchStyles?: Styles;\n}\n\nexport function ItemTableToolbar({\n isSearchable,\n filters,\n actions,\n onRefresh,\n isLoading,\n styles,\n searchStyles,\n}: ItemTableToolbarProps) {\n const { t } = useI18n();\n\n return (\n <ToolbarElement styles={styles} role=\"toolbar\">\n <div data-element=\"Start\">\n {isSearchable ? <ItemTableSearch styles={searchStyles} /> : null}\n {filters}\n </div>\n <div data-element=\"End\">\n {actions}\n {onRefresh ? (\n <Button\n qa=\"ItemTableRefreshButton\"\n size=\"small\"\n icon={<ReloadIcon />}\n isLoading={isLoading}\n aria-label={t('itemTable.refresh', 'Refresh')}\n onPress={onRefresh}\n />\n ) : null}\n </div>\n </ToolbarElement>\n );\n}\n"],"mappings":";;;;;;;;;;AA8BA,MAAM,gBAAgB,cAA+C,KAAK;AAE1E,MAAa,0BAA0B,cAAc;AAErD,SAAgB,mBAAmB,WAAmB;CACpD,MAAM,UAAU,WAAW,cAAc;AAEzC,KAAI,CAAC,QACH,OAAM,IAAI,MACR,GAAG,UAAU,yFACd;AAGH,QAAO;;AAGT,MAAM,iBAAiB,MAAM;CAC3B,IAAI;CACJ,IAAI;CACJ,QAAQ;EACN,SAAS;EACT,SAAS;EACT,MAAM;EACN,KAAK;EACL,YAAY;EACZ,cAAc;EACd,SAAS;EACT,QAAQ;EAGR,OAAO;GACL,GAAG;GACH,SAAS;GACT,MAAM;GACN,KAAK;GACL,YAAY;GACZ,OAAO;GACR;EAED,KAAK;GACH,GAAG;GACH,SAAS;GACT,MAAM;GACN,KAAK;GACL,YAAY;GACb;EACF;CACF,CAAC;AAEF,MAAM,gBAAgB,MAAM,aAAa;CACvC,IAAI;CACJ,QAAQ,EAAE,OAAO,aAAa;CAC/B,CAAC;;AAGF,SAAgB,gBAAgB,OAI7B;CACD,MAAM,EAAE,aAAa,gBAAgB,sBACnC,mBAAmB,mBAAmB;CACxC,MAAM,EAAE,MAAM,SAAS;AAEvB,QACE,oBAAC;EACC,IAAI,MAAM;EACV,MAAK;EACL;EACA,cAAY,EAAE,oBAAoB,SAAS;EAC3C,aACE,MAAM,eACN,qBACA,EAAE,+BAA+B,YAAY;EAE/C,OAAO;EACP,QAAQ,MAAM;EACd,UAAU;GACV;;AAcN,SAAgB,iBAAiB,EAC/B,cACA,SACA,SACA,WACA,WACA,QACA,gBACwB;CACxB,MAAM,EAAE,MAAM,SAAS;AAEvB,QACE,qBAAC;EAAuB;EAAQ,MAAK;aACnC,qBAAC;GAAI,gBAAa;cACf,eAAe,oBAAC,mBAAgB,QAAQ,eAAgB,GAAG,MAC3D;IACG,EACN,qBAAC;GAAI,gBAAa;cACf,SACA,YACC,oBAAC;IACC,IAAG;IACH,MAAK;IACL,MAAM,oBAAC,eAAa;IACT;IACX,cAAY,EAAE,qBAAqB,UAAU;IAC7C,SAAS;KACT,GACA;IACA;GACS"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { useRef } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  //#region src/components/data/TableBase/RowCollection.ts
3
3
  /**
4
4
  * A `Collection<Node<T>>` over a plain row array.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { useEffect, useRef, useState } from "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useRef } from "react";
@@ -1,14 +1,11 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.168.1 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.169.1 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
5
5
  import { TextItem } from "../../content/TextItem/TextItem.js";
6
6
  import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
7
7
  import { useI18n } from "../../../i18n/useI18n.js";
8
- import { ArrowNarrowDownIcon } from "../../../icons/ArrowNarrowDownIcon.js";
9
- import { ArrowNarrowUpIcon } from "../../../icons/ArrowNarrowUpIcon.js";
10
8
  import { DirectionIcon } from "../../../icons/DirectionIcon.js";
11
- import { MoreIcon } from "../../../icons/MoreIcon.js";
12
9
  import { _MenuTrigger } from "../../actions/Menu/MenuTrigger.js";
13
10
  import { __Menu } from "../../actions/Menu/Menu.js";
14
11
  import { Action } from "../../actions/Action/Action.js";
@@ -17,9 +14,12 @@ import { useToast } from "../../overlays/Toast/useToast.js";
17
14
  import { usePaletteVersion } from "../../../tokens/palette-config.js";
18
15
  import { SIZES, SIZE_NAME_TO_KEY } from "../../../tokens/sizes.js";
19
16
  import { getColorTheme, useColorTheme } from "../../../tokens/color-theme.js";
17
+ import { MoreIcon } from "../../../icons/MoreIcon.js";
20
18
  import { __Checkbox } from "../../fields/Checkbox/Checkbox.js";
21
19
  import { Placeholder } from "../../content/Placeholder/Placeholder.js";
22
20
  import { Skeleton } from "../../content/Skeleton/Skeleton.js";
21
+ import { ArrowNarrowDownIcon } from "../../../icons/ArrowNarrowDownIcon.js";
22
+ import { ArrowNarrowUpIcon } from "../../../icons/ArrowNarrowUpIcon.js";
23
23
  import { ROW_MENU_COLUMN_KEY, isMenuEmpty, normalizeMenuAction } from "./row-menu.js";
24
24
  import { COLUMN_MENU_SORT_DIRECTION, isColumnMenuSortKey, processColumnMenuItems } from "./column-menu.js";
25
25
  import { buildColumnTints, tintSlot } from "./column-tint.js";