@cube-dev/ui-kit 0.190.7 → 0.190.8

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 (720) hide show
  1. package/dist/CHANGELOG.md +8 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.d.ts +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/actions/Action/Action.d.ts +2 -2
  18. package/dist/components/actions/Action/Action.js +1 -1
  19. package/dist/components/actions/Action/Action.js.map +1 -1
  20. package/dist/components/actions/Banner/Banner.js +1 -1
  21. package/dist/components/actions/Button/Button.d.ts +2 -2
  22. package/dist/components/actions/Button/Button.js +1 -1
  23. package/dist/components/actions/Button/Button.js.map +1 -1
  24. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  25. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  26. package/dist/components/actions/ButtonSplit/context.js +1 -1
  27. package/dist/components/actions/CommandMenu/CommandMenu.d.ts +18 -5
  28. package/dist/components/actions/CommandMenu/CommandMenu.js +207 -197
  29. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  30. package/dist/components/actions/CommandMenu/styled.js +1 -1
  31. package/dist/components/actions/ItemAction/ItemAction.d.ts +2 -1
  32. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  33. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  34. package/dist/components/actions/ItemActionContext.js +1 -1
  35. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  36. package/dist/components/actions/ItemButton/ItemButton.d.ts +3 -3
  37. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  38. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  39. package/dist/components/actions/Link/Link.d.ts +1 -1
  40. package/dist/components/actions/Link/Link.js +1 -1
  41. package/dist/components/actions/Menu/Menu.d.ts +20 -5
  42. package/dist/components/actions/Menu/Menu.js +51 -41
  43. package/dist/components/actions/Menu/Menu.js.map +1 -1
  44. package/dist/components/actions/Menu/MenuItem.js +1 -1
  45. package/dist/components/actions/Menu/MenuItem.js.map +1 -1
  46. package/dist/components/actions/Menu/MenuSection.js +2 -3
  47. package/dist/components/actions/Menu/MenuSection.js.map +1 -1
  48. package/dist/components/actions/Menu/MenuTrigger.d.ts +42 -3
  49. package/dist/components/actions/Menu/MenuTrigger.js +22 -22
  50. package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
  51. package/dist/components/actions/Menu/SubMenuTrigger.js +4 -4
  52. package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
  53. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  54. package/dist/components/actions/Menu/context.d.ts +2 -2
  55. package/dist/components/actions/Menu/context.js +1 -1
  56. package/dist/components/actions/Menu/context.js.map +1 -1
  57. package/dist/components/actions/Menu/styled.js +1 -1
  58. package/dist/components/actions/Menu/styled.js.map +1 -1
  59. package/dist/components/actions/actions-run.js +1 -1
  60. package/dist/components/actions/index.d.ts +1 -1
  61. package/dist/components/actions/index.js +1 -1
  62. package/dist/components/actions/use-action.d.ts +4 -5
  63. package/dist/components/actions/use-action.js +3 -2
  64. package/dist/components/actions/use-action.js.map +1 -1
  65. package/dist/components/actions/use-anchored-menu.js +1 -1
  66. package/dist/components/actions/use-context-menu.js +1 -1
  67. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  68. package/dist/components/content/Alert/Alert.js +1 -1
  69. package/dist/components/content/Alert/use-alert.js +1 -1
  70. package/dist/components/content/Avatar/Avatar.js +1 -1
  71. package/dist/components/content/Badge/Badge.js +1 -1
  72. package/dist/components/content/Card/Card.js +1 -1
  73. package/dist/components/content/Content.js +1 -1
  74. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +2 -2
  75. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
  76. package/dist/components/content/CopySnippet/CopySnippet.d.ts +964 -6
  77. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  78. package/dist/components/content/Disclosure/Disclosure.d.ts +1 -1
  79. package/dist/components/content/Disclosure/Disclosure.js +69 -67
  80. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  81. package/dist/components/content/Divider.js +1 -1
  82. package/dist/components/content/Footer.js +1 -1
  83. package/dist/components/content/Header.js +1 -1
  84. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  85. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  86. package/dist/components/content/InlineInput/InlineInput.d.ts +2 -2
  87. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  88. package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
  89. package/dist/components/content/Item/Item.d.ts +3 -3
  90. package/dist/components/content/Item/Item.js +1 -1
  91. package/dist/components/content/Item/Item.js.map +1 -1
  92. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  93. package/dist/components/content/ItemCard/ItemCard.d.ts +1 -1
  94. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  95. package/dist/components/content/Layout/GridLayout.js +1 -1
  96. package/dist/components/content/Layout/Layout.js +1 -1
  97. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  98. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  99. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  100. package/dist/components/content/Layout/LayoutContent.js +1 -1
  101. package/dist/components/content/Layout/LayoutContext.js +1 -1
  102. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  103. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  104. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  105. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  106. package/dist/components/content/Layout/LayoutPane.js +1 -1
  107. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  108. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  109. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  110. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  111. package/dist/components/content/Layout/index.js +1 -1
  112. package/dist/components/content/Layout/utils.js +1 -1
  113. package/dist/components/content/Paragraph.js +1 -1
  114. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  115. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  116. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  117. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  118. package/dist/components/content/Result/Result.d.ts +2 -2
  119. package/dist/components/content/Result/Result.js +1 -1
  120. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  121. package/dist/components/content/Tag/Tag.js +1 -1
  122. package/dist/components/content/Text.d.ts +14 -14
  123. package/dist/components/content/Text.js +1 -1
  124. package/dist/components/content/TextItem/TextItem.d.ts +2 -2
  125. package/dist/components/content/TextItem/TextItem.js +1 -1
  126. package/dist/components/content/TextItem/TextItem.js.map +1 -1
  127. package/dist/components/content/Title.js +1 -1
  128. package/dist/components/content/Tree/Tree.js +1 -1
  129. package/dist/components/content/Tree/TreeNode.js +1 -1
  130. package/dist/components/content/Tree/TreeNode.js.map +1 -1
  131. package/dist/components/content/Tree/styled.js +1 -1
  132. package/dist/components/content/Tree/tree-index.js +1 -1
  133. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  134. package/dist/components/content/Tree/use-load-data.js +1 -1
  135. package/dist/components/content/highlightText.js +1 -1
  136. package/dist/components/content/use-auto-tooltip.d.ts +1 -1
  137. package/dist/components/content/use-auto-tooltip.js +1 -1
  138. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  139. package/dist/components/data/DataTable/DataTable.js +1 -1
  140. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  141. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  142. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  143. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  144. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  145. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  146. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  147. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  148. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  149. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  150. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  151. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  152. package/dist/components/data/TableBase/RowCollection.js +1 -1
  153. package/dist/components/data/TableBase/TableHeaderCell.js +3 -2
  154. package/dist/components/data/TableBase/TableHeaderCell.js.map +1 -1
  155. package/dist/components/data/TableBase/TableRow.js +2 -2
  156. package/dist/components/data/TableBase/TableRow.js.map +1 -1
  157. package/dist/components/data/TableBase/TableView.js +1 -1
  158. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  159. package/dist/components/data/TableBase/column-header.js +1 -1
  160. package/dist/components/data/TableBase/column-menu.d.ts +2 -1
  161. package/dist/components/data/TableBase/column-menu.js +1 -1
  162. package/dist/components/data/TableBase/column-menu.js.map +1 -1
  163. package/dist/components/data/TableBase/column-styles.js +1 -1
  164. package/dist/components/data/TableBase/column-tint.js +1 -1
  165. package/dist/components/data/TableBase/row-menu.js +1 -1
  166. package/dist/components/data/TableBase/styled.d.ts +3 -1
  167. package/dist/components/data/TableBase/styled.js +1 -1
  168. package/dist/components/data/TableBase/table-tree.js +1 -1
  169. package/dist/components/data/TableBase/types.js +1 -1
  170. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  171. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  172. package/dist/components/data/TableBase/use-column-order.js +1 -1
  173. package/dist/components/data/TableBase/use-container-width.js +1 -1
  174. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  175. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  176. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  177. package/dist/components/data/TableBase/use-table-search.js +1 -1
  178. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  179. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  180. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  181. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  182. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  183. package/dist/components/fields/Checkbox/Checkbox.d.ts +7 -14
  184. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  185. package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
  186. package/dist/components/fields/Checkbox/CheckboxGroup.d.ts +4 -2
  187. package/dist/components/fields/Checkbox/CheckboxGroup.js +7 -7
  188. package/dist/components/fields/Checkbox/CheckboxGroup.js.map +1 -1
  189. package/dist/components/fields/Checkbox/context.js +1 -1
  190. package/dist/components/fields/ColorInput/ColorInput.js +34 -29
  191. package/dist/components/fields/ColorInput/ColorInput.js.map +1 -1
  192. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  193. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  194. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  195. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  196. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  197. package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +10 -5
  198. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  199. package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
  200. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  201. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  202. package/dist/components/fields/DatePicker/DateInput.js +3 -3
  203. package/dist/components/fields/DatePicker/DateInput.js.map +1 -1
  204. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  205. package/dist/components/fields/DatePicker/DatePicker.d.ts +2 -2
  206. package/dist/components/fields/DatePicker/DatePicker.js +4 -4
  207. package/dist/components/fields/DatePicker/DatePicker.js.map +1 -1
  208. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  209. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  210. package/dist/components/fields/DatePicker/DatePickerInput.js +8 -5
  211. package/dist/components/fields/DatePicker/DatePickerInput.js.map +1 -1
  212. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  213. package/dist/components/fields/DatePicker/DateRangePicker.d.ts +1 -1
  214. package/dist/components/fields/DatePicker/DateRangePicker.js +76 -72
  215. package/dist/components/fields/DatePicker/DateRangePicker.js.map +1 -1
  216. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.d.ts +1 -1
  217. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +357 -323
  218. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js.map +1 -1
  219. package/dist/components/fields/DatePicker/MonthPicker.d.ts +1 -1
  220. package/dist/components/fields/DatePicker/MonthPicker.js +3 -3
  221. package/dist/components/fields/DatePicker/PeriodPicker.d.ts +6 -5
  222. package/dist/components/fields/DatePicker/PeriodPicker.js +6 -5
  223. package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
  224. package/dist/components/fields/DatePicker/QuarterPicker.d.ts +1 -1
  225. package/dist/components/fields/DatePicker/QuarterPicker.js +3 -3
  226. package/dist/components/fields/DatePicker/TimeInput.d.ts +3 -3
  227. package/dist/components/fields/DatePicker/TimeInput.js +10 -5
  228. package/dist/components/fields/DatePicker/TimeInput.js.map +1 -1
  229. package/dist/components/fields/DatePicker/WeekPicker.d.ts +1 -1
  230. package/dist/components/fields/DatePicker/WeekPicker.js +3 -3
  231. package/dist/components/fields/DatePicker/YearPicker.d.ts +1 -1
  232. package/dist/components/fields/DatePicker/YearPicker.js +3 -3
  233. package/dist/components/fields/DatePicker/index.d.ts +1 -1
  234. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  235. package/dist/components/fields/DatePicker/period.js +1 -1
  236. package/dist/components/fields/DatePicker/props.js +1 -1
  237. package/dist/components/fields/DatePicker/props.js.map +1 -1
  238. package/dist/components/fields/DatePicker/utils.js +1 -1
  239. package/dist/components/fields/FileInput/FileInput.d.ts +2 -6
  240. package/dist/components/fields/FileInput/FileInput.js +1 -1
  241. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  242. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  243. package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
  244. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  245. package/dist/components/fields/Input/Input.js +1 -1
  246. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  247. package/dist/components/fields/ListBox/ListBox.d.ts +1 -1
  248. package/dist/components/fields/ListBox/ListBox.js +5 -10
  249. package/dist/components/fields/ListBox/ListBox.js.map +1 -1
  250. package/dist/components/fields/ListBox/optionId.js +1 -1
  251. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +125 -93
  252. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
  253. package/dist/components/fields/ListBoxPopover/index.d.ts +1 -1
  254. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  255. package/dist/components/fields/ListBoxPopover/useCompositeFocus.d.ts +48 -1
  256. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  257. package/dist/components/fields/NumberInput/NumberInput.d.ts +6 -3
  258. package/dist/components/fields/NumberInput/NumberInput.js +98 -59
  259. package/dist/components/fields/NumberInput/NumberInput.js.map +1 -1
  260. package/dist/components/fields/NumberInput/StepButton.js +1 -3
  261. package/dist/components/fields/NumberInput/StepButton.js.map +1 -1
  262. package/dist/components/fields/PasswordInput/PasswordInput.d.ts +5 -2
  263. package/dist/components/fields/PasswordInput/PasswordInput.js +7 -7
  264. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  265. package/dist/components/fields/Picker/Picker.js +1 -1
  266. package/dist/components/fields/RadioGroup/Radio.d.ts +596 -17
  267. package/dist/components/fields/RadioGroup/Radio.js +114 -111
  268. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  269. package/dist/components/fields/RadioGroup/RadioGroup.d.ts +5 -3
  270. package/dist/components/fields/RadioGroup/RadioGroup.js +8 -8
  271. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  272. package/dist/components/fields/RadioGroup/context.js +1 -1
  273. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  274. package/dist/components/fields/SearchInput/SearchInput.d.ts +5 -3
  275. package/dist/components/fields/SearchInput/SearchInput.js +2 -2
  276. package/dist/components/fields/SearchInput/SearchInput.js.map +1 -1
  277. package/dist/components/fields/Select/Select.d.ts +5 -4
  278. package/dist/components/fields/Select/Select.js +3 -3
  279. package/dist/components/fields/Select/Select.js.map +1 -1
  280. package/dist/components/fields/Slider/Gradation.js +1 -1
  281. package/dist/components/fields/Slider/HueSlider.d.ts +1 -1
  282. package/dist/components/fields/Slider/HueSlider.js +1 -1
  283. package/dist/components/fields/Slider/RangeSlider.d.ts +1 -1
  284. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  285. package/dist/components/fields/Slider/Slider.d.ts +1 -1
  286. package/dist/components/fields/Slider/Slider.js +1 -1
  287. package/dist/components/fields/Slider/SliderBase.js +1 -1
  288. package/dist/components/fields/Slider/SliderBase.js.map +1 -1
  289. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  290. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  291. package/dist/components/fields/Slider/elements.js +1 -1
  292. package/dist/components/fields/Slider/index.js +1 -1
  293. package/dist/components/fields/Switch/Switch.d.ts +3 -7
  294. package/dist/components/fields/Switch/Switch.js +7 -7
  295. package/dist/components/fields/Switch/Switch.js.map +1 -1
  296. package/dist/components/fields/TagInput/TagInput.js +2 -2
  297. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  298. package/dist/components/fields/TagInput/TagList.js +1 -1
  299. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  300. package/dist/components/fields/TagInput/useTagError.js +1 -1
  301. package/dist/components/fields/TextArea/TextArea.d.ts +11 -3
  302. package/dist/components/fields/TextArea/TextArea.js +7 -8
  303. package/dist/components/fields/TextArea/TextArea.js.map +1 -1
  304. package/dist/components/fields/TextInput/TextInput.d.ts +10 -3
  305. package/dist/components/fields/TextInput/TextInput.js +7 -8
  306. package/dist/components/fields/TextInput/TextInput.js.map +1 -1
  307. package/dist/components/fields/TextInput/TextInputBase.d.ts +7 -5
  308. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  309. package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
  310. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  311. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  312. package/dist/components/fields/TriggerActions.js +1 -1
  313. package/dist/components/fields/color/ColorPanel.js +1 -1
  314. package/dist/components/fields/color/channels.js +1 -1
  315. package/dist/components/fields/color/color.js +1 -1
  316. package/dist/components/fields/color/context.js +1 -1
  317. package/dist/components/fields/index.d.ts +1 -1
  318. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  319. package/dist/components/form/Form/Field.js +1 -1
  320. package/dist/components/form/Form/Form.js +1 -1
  321. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  322. package/dist/components/form/Form/ResetButton/ResetButton.d.ts +2 -2
  323. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  324. package/dist/components/form/Form/ResetButton/ResetButton.js.map +1 -1
  325. package/dist/components/form/Form/SubmitButton/SubmitButton.d.ts +2 -2
  326. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  327. package/dist/components/form/Form/SubmitButton/SubmitButton.js.map +1 -1
  328. package/dist/components/form/Form/SubmitError.js +1 -1
  329. package/dist/components/form/Form/backend.js +1 -1
  330. package/dist/components/form/Form/index.d.ts +2 -2
  331. package/dist/components/form/Form/index.js +1 -1
  332. package/dist/components/form/Form/modern/actions.js +1 -1
  333. package/dist/components/form/Form/modern/context.js +1 -1
  334. package/dist/components/form/Form/modern/controller.js +1 -1
  335. package/dist/components/form/Form/modern/field-binding.js +1 -1
  336. package/dist/components/form/Form/modern/field.js +1 -1
  337. package/dist/components/form/Form/modern/react.js +1 -1
  338. package/dist/components/form/Form/modern/store.js +1 -1
  339. package/dist/components/form/Form/modern/validation.js +1 -1
  340. package/dist/components/form/Form/modern/values.js +1 -1
  341. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  342. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  343. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  344. package/dist/components/form/Form/use-field/use-field.js +1 -1
  345. package/dist/components/form/Form/use-form.js +1 -1
  346. package/dist/components/form/Form/validation.js +1 -1
  347. package/dist/components/form/Label.js +1 -1
  348. package/dist/components/form/legacy-tooltip.js +1 -1
  349. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  350. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  351. package/dist/components/form/validation/use-validation-props.js +1 -1
  352. package/dist/components/form/wrapper.js +1 -1
  353. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  354. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  355. package/dist/components/layout/Board/Board.js +1 -1
  356. package/dist/components/layout/Board/BoardProvider.js +1 -1
  357. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  358. package/dist/components/layout/Board/Widget.js +1 -1
  359. package/dist/components/layout/Board/WidgetHost.js +1 -1
  360. package/dist/components/layout/Board/board-context.js +1 -1
  361. package/dist/components/layout/Board/board-store.js +1 -1
  362. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  363. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  364. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  365. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  366. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  367. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  368. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  369. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  370. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  371. package/dist/components/layout/Board/index.js +1 -1
  372. package/dist/components/layout/Board/responsive-utils.js +1 -1
  373. package/dist/components/layout/Board/use-board-layout.js +1 -1
  374. package/dist/components/layout/Board/use-board-registry.js +1 -1
  375. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  376. package/dist/components/layout/Board/use-board-selection.js +1 -1
  377. package/dist/components/layout/Flex.js +1 -1
  378. package/dist/components/layout/Flow.js +1 -1
  379. package/dist/components/layout/Grid.js +1 -1
  380. package/dist/components/layout/Panel.js +1 -1
  381. package/dist/components/layout/Prefix.js +1 -1
  382. package/dist/components/layout/ResizablePanel.js +1 -1
  383. package/dist/components/layout/Space.js +1 -1
  384. package/dist/components/layout/Suffix.js +1 -1
  385. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  386. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  387. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  388. package/dist/components/navigation/Tabs/TabButton.js +387 -379
  389. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  390. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  391. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  392. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  393. package/dist/components/navigation/Tabs/Tabs.d.ts +2 -2
  394. package/dist/components/navigation/Tabs/Tabs.js +2 -2
  395. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  396. package/dist/components/navigation/Tabs/TabsAction.d.ts +1 -1
  397. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  398. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  399. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  400. package/dist/components/navigation/Tabs/styled.js +1 -1
  401. package/dist/components/navigation/Tabs/types.js +1 -1
  402. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  403. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  404. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  405. package/dist/components/other/Calendar/Calendar.js +1 -1
  406. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  407. package/dist/components/other/Calendar/CalendarGrid.js +50 -45
  408. package/dist/components/other/Calendar/CalendarGrid.js.map +1 -1
  409. package/dist/components/other/Calendar/CalendarHeader.js +2 -2
  410. package/dist/components/other/Calendar/CalendarHeader.js.map +1 -1
  411. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  412. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  413. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  414. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  415. package/dist/components/other/Calendar/RangeCalendar.js.map +1 -1
  416. package/dist/components/other/Calendar/styled.js +1 -1
  417. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  418. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  419. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  420. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  421. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  422. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  423. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  424. package/dist/components/overlays/Dialog/DialogForm.d.ts +1 -1
  425. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  426. package/dist/components/overlays/Dialog/DialogForm.js.map +1 -1
  427. package/dist/components/overlays/Dialog/DialogTrigger.d.ts +1 -1
  428. package/dist/components/overlays/Dialog/DialogTrigger.js +25 -24
  429. package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
  430. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  431. package/dist/components/overlays/Dialog/context.js +1 -1
  432. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  433. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  434. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  435. package/dist/components/overlays/Modal/Modal.js +1 -1
  436. package/dist/components/overlays/Modal/Modal.js.map +1 -1
  437. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  438. package/dist/components/overlays/Modal/Overlay.d.ts +1 -2
  439. package/dist/components/overlays/Modal/Overlay.js +1 -1
  440. package/dist/components/overlays/Modal/Overlay.js.map +1 -1
  441. package/dist/components/overlays/Modal/Popover.d.ts +2 -1
  442. package/dist/components/overlays/Modal/Popover.js +1 -1
  443. package/dist/components/overlays/Modal/Popover.js.map +1 -1
  444. package/dist/components/overlays/Modal/Tray.d.ts +2 -2
  445. package/dist/components/overlays/Modal/Tray.js +1 -1
  446. package/dist/components/overlays/Modal/Tray.js.map +1 -1
  447. package/dist/components/overlays/Modal/Underlay.js +1 -1
  448. package/dist/components/overlays/Modal/index.d.ts +1 -1
  449. package/dist/components/overlays/Modal/types.d.ts +2 -1
  450. package/dist/components/overlays/Notifications/Notification.js +1 -1
  451. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  452. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  453. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  454. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  455. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  456. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  457. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  458. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  459. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  460. package/dist/components/overlays/Notifications/index.js +1 -1
  461. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  462. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  463. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  464. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  465. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  466. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  467. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  468. package/dist/components/overlays/Toast/index.js +1 -1
  469. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  470. package/dist/components/overlays/Toast/useToast.js +1 -1
  471. package/dist/components/overlays/Tooltip/Tooltip.js +2 -5
  472. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  473. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  474. package/dist/components/overlays/Tooltip/TooltipTrigger.js +2 -5
  475. package/dist/components/overlays/Tooltip/TooltipTrigger.js.map +1 -1
  476. package/dist/components/overlays/Tooltip/context.js +1 -1
  477. package/dist/components/overlays/Tooltip/context.js.map +1 -1
  478. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  479. package/dist/components/portal/Portal.js +1 -1
  480. package/dist/components/portal/PortalProvider.js +1 -1
  481. package/dist/components/portal/usePortal.js +1 -1
  482. package/dist/components/shared/DraggableCollection.js +11 -6
  483. package/dist/components/shared/DraggableCollection.js.map +1 -1
  484. package/dist/components/shared/InvalidIcon.js +1 -1
  485. package/dist/components/shared/ValidIcon.js +1 -1
  486. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  487. package/dist/components/status/Spin/Cube.js +1 -1
  488. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  489. package/dist/components/status/Spin/Spin.js +1 -1
  490. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  491. package/dist/data/item-themes.js +1 -1
  492. package/dist/data/themes.js +1 -1
  493. package/dist/eslint-plugin/defaults.generated.js +1 -1
  494. package/dist/eslint-plugin/index.js +1 -1
  495. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  496. package/dist/i18n/I18nProvider.js +1 -1
  497. package/dist/i18n/createFormatter.js +1 -1
  498. package/dist/i18n/index.js +1 -1
  499. package/dist/i18n/instance.js +1 -1
  500. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  501. package/dist/i18n/locales/en-US/uikit.js +1 -1
  502. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  503. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  504. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  505. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  506. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  507. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  508. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  509. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  510. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  511. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  512. package/dist/i18n/locales.js +1 -1
  513. package/dist/i18n/useFormatter.js +1 -1
  514. package/dist/i18n/useI18n.js +1 -1
  515. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  516. package/dist/icons/AdjustmentsIcon.js +1 -1
  517. package/dist/icons/AiIcon.js +1 -1
  518. package/dist/icons/AreaChartIcon.js +1 -1
  519. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  520. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  521. package/dist/icons/BackwardIcon.js +1 -1
  522. package/dist/icons/BarChartIcon.js +1 -1
  523. package/dist/icons/BellFilledIcon.js +1 -1
  524. package/dist/icons/BellIcon.js +1 -1
  525. package/dist/icons/BooleanIcon.js +1 -1
  526. package/dist/icons/CalendarEditIcon.js +1 -1
  527. package/dist/icons/CalendarIcon.js +1 -1
  528. package/dist/icons/CaretDownIcon.js +1 -1
  529. package/dist/icons/CaretUpIcon.js +1 -1
  530. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  531. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  532. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  533. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  534. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  535. package/dist/icons/ChartBarLineIcon.js +1 -1
  536. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  537. package/dist/icons/ChartBarStackedIcon.js +1 -1
  538. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  539. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  540. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  541. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  542. package/dist/icons/ChartBubbleIcon.js +1 -1
  543. package/dist/icons/ChartDonut2Icon.js +1 -1
  544. package/dist/icons/ChartFunnelIcon.js +1 -1
  545. package/dist/icons/ChartHeatmapIcon.js +1 -1
  546. package/dist/icons/ChartKPIIcon.js +1 -1
  547. package/dist/icons/ChartPie2Icon.js +1 -1
  548. package/dist/icons/ChartScatterIcon.js +1 -1
  549. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  550. package/dist/icons/CheckCircleIcon.js +1 -1
  551. package/dist/icons/CheckIcon.js +1 -1
  552. package/dist/icons/CircleFilledIcon.js +1 -1
  553. package/dist/icons/ClearIcon.js +1 -1
  554. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  555. package/dist/icons/CloseCircleIcon.js +1 -1
  556. package/dist/icons/CloseIcon.js +1 -1
  557. package/dist/icons/CodeIcon.js +1 -1
  558. package/dist/icons/ColumnTotalIcon.js +1 -1
  559. package/dist/icons/CopyIcon.js +1 -1
  560. package/dist/icons/CountIcon.js +1 -1
  561. package/dist/icons/CubeIcon.js +1 -1
  562. package/dist/icons/CubePauseIcon.js +1 -1
  563. package/dist/icons/CubePlayIcon.js +1 -1
  564. package/dist/icons/CurrencyDollarIcon.js +1 -1
  565. package/dist/icons/DangerIcon.js +1 -1
  566. package/dist/icons/DashboardIcon.js +1 -1
  567. package/dist/icons/DatabaseIcon.js +1 -1
  568. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  569. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  570. package/dist/icons/DirectionIcon.js +1 -1
  571. package/dist/icons/DonutIcon.js +1 -1
  572. package/dist/icons/DownIcon.js +1 -1
  573. package/dist/icons/EditIcon.js +1 -1
  574. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  575. package/dist/icons/ExclamationCircleIcon.js +1 -1
  576. package/dist/icons/ExclamationIcon.js +1 -1
  577. package/dist/icons/EyeIcon.js +1 -1
  578. package/dist/icons/EyeInvisibleIcon.js +1 -1
  579. package/dist/icons/FilterIcon.js +1 -1
  580. package/dist/icons/FolderFilledIcon.js +1 -1
  581. package/dist/icons/FolderIcon.js +1 -1
  582. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  583. package/dist/icons/FolderOpenIcon.js +1 -1
  584. package/dist/icons/ForwardIcon.js +1 -1
  585. package/dist/icons/GripVerticalIcon.js +1 -1
  586. package/dist/icons/HierarchyIcon.js +1 -1
  587. package/dist/icons/HierarchyOpenIcon.js +1 -1
  588. package/dist/icons/Icon.js +1 -1
  589. package/dist/icons/InfoCircleIcon.js +1 -1
  590. package/dist/icons/InfoIcon.js +1 -1
  591. package/dist/icons/KeyIcon.js +1 -1
  592. package/dist/icons/LeftIcon.js +1 -1
  593. package/dist/icons/LineChartIcon.js +1 -1
  594. package/dist/icons/LoadingIcon.js +1 -1
  595. package/dist/icons/LockFilledIcon.js +1 -1
  596. package/dist/icons/LockIcon.js +1 -1
  597. package/dist/icons/MoreIcon.js +1 -1
  598. package/dist/icons/NotAllowedIcon.js +1 -1
  599. package/dist/icons/Number123Icon.js +1 -1
  600. package/dist/icons/NumberIcon.js +1 -1
  601. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  602. package/dist/icons/PauseCircleIcon.js +1 -1
  603. package/dist/icons/PauseIcon.js +1 -1
  604. package/dist/icons/PercentageIcon.js +1 -1
  605. package/dist/icons/PieChartIcon.js +1 -1
  606. package/dist/icons/PipetteIcon.js +1 -1
  607. package/dist/icons/PlayCircleIcon.js +1 -1
  608. package/dist/icons/PlayIcon.js +1 -1
  609. package/dist/icons/PlusIcon.js +1 -1
  610. package/dist/icons/ProgressBarIcon.js +1 -1
  611. package/dist/icons/ReloadIcon.js +1 -1
  612. package/dist/icons/ReportIcon.js +1 -1
  613. package/dist/icons/ReturnIcon.js +1 -1
  614. package/dist/icons/RightIcon.js +1 -1
  615. package/dist/icons/RowTotalsIcon.js +1 -1
  616. package/dist/icons/SchemeIcon.js +1 -1
  617. package/dist/icons/SearchIcon.js +1 -1
  618. package/dist/icons/SemanticQueryIcon.js +1 -1
  619. package/dist/icons/SettingsIcon.js +1 -1
  620. package/dist/icons/ShieldFilledIcon.js +1 -1
  621. package/dist/icons/ShieldIcon.js +1 -1
  622. package/dist/icons/SlashIcon.js +1 -1
  623. package/dist/icons/SparklesIcon.js +1 -1
  624. package/dist/icons/SqlIcon.js +1 -1
  625. package/dist/icons/StatsIcon.js +1 -1
  626. package/dist/icons/StopIcon.js +1 -1
  627. package/dist/icons/StringIcon.js +1 -1
  628. package/dist/icons/SubtotalsIcon.js +1 -1
  629. package/dist/icons/SwitchIcon.js +1 -1
  630. package/dist/icons/TableIcon.js +1 -1
  631. package/dist/icons/ThumbsDownIcon.js +1 -1
  632. package/dist/icons/ThumbsUpIcon.js +1 -1
  633. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  634. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  635. package/dist/icons/ThunderboltIcon.js +1 -1
  636. package/dist/icons/TimeIcon.js +1 -1
  637. package/dist/icons/TrashIcon.js +1 -1
  638. package/dist/icons/UnlockIcon.js +1 -1
  639. package/dist/icons/UpIcon.js +1 -1
  640. package/dist/icons/UserGroupIcon.js +1 -1
  641. package/dist/icons/UserIcon.js +1 -1
  642. package/dist/icons/UserLockIcon.js +1 -1
  643. package/dist/icons/ViewIcon.js +1 -1
  644. package/dist/icons/WarningFilledIcon.js +1 -1
  645. package/dist/icons/WarningIcon.js +1 -1
  646. package/dist/icons/wrap-icon.js +1 -1
  647. package/dist/index.d.ts +18 -18
  648. package/dist/index.js +3 -3
  649. package/dist/probe/canonicalize.js +1 -1
  650. package/dist/probe/css.js +1 -1
  651. package/dist/probe/index.js +1 -1
  652. package/dist/provider.js +1 -1
  653. package/dist/providers/TrackingProvider.js +1 -1
  654. package/dist/providers/navigationAdapter.default.js +1 -1
  655. package/dist/shared/form.d.ts +4 -21
  656. package/dist/tokens/all-tokens.js +1 -1
  657. package/dist/tokens/base.js +1 -1
  658. package/dist/tokens/color-seed.js +1 -1
  659. package/dist/tokens/color-theme.js +1 -1
  660. package/dist/tokens/colors.js +1 -1
  661. package/dist/tokens/layout.js +1 -1
  662. package/dist/tokens/lazy-styles.js +1 -1
  663. package/dist/tokens/legacy-color.js +1 -1
  664. package/dist/tokens/palette-config.js +1 -1
  665. package/dist/tokens/palette.js +1 -1
  666. package/dist/tokens/resolve.js +1 -1
  667. package/dist/tokens/shadows.js +1 -1
  668. package/dist/tokens/sizes.js +1 -1
  669. package/dist/tokens/spacing.js +1 -1
  670. package/dist/tokens/typography.js +1 -1
  671. package/dist/utils/ResizeSensor.js +1 -1
  672. package/dist/utils/colors.js +1 -1
  673. package/dist/utils/dotize.js +1 -1
  674. package/dist/utils/is-dev-env.js +1 -1
  675. package/dist/utils/modules.js +1 -1
  676. package/dist/utils/promise.js +1 -1
  677. package/dist/utils/raf.js +1 -1
  678. package/dist/utils/random.js +1 -1
  679. package/dist/utils/range.js +1 -1
  680. package/dist/utils/react/RenderCache.js +1 -1
  681. package/dist/utils/react/Slots.js +1 -1
  682. package/dist/utils/react/chain.js +1 -1
  683. package/dist/utils/react/disabledProps.js +1 -1
  684. package/dist/utils/react/escapePropagation.js +1 -1
  685. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  686. package/dist/utils/react/index.js +1 -1
  687. package/dist/utils/react/interactions.js +1 -1
  688. package/dist/utils/react/isTextOnly.js +1 -1
  689. package/dist/utils/react/mapProps.js +1 -1
  690. package/dist/utils/react/mapProps.js.map +1 -1
  691. package/dist/utils/react/mergeProps.js +1 -1
  692. package/dist/utils/react/nullableValue.d.ts +2 -2
  693. package/dist/utils/react/nullableValue.js +1 -1
  694. package/dist/utils/react/nullableValue.js.map +1 -1
  695. package/dist/utils/react/programmaticFocus.js +1 -1
  696. package/dist/utils/react/resolveIcon.js +1 -1
  697. package/dist/utils/react/sharedStore.js +1 -1
  698. package/dist/utils/react/useBufferedValue.js +1 -1
  699. package/dist/utils/react/useCombinedRefs.js +1 -1
  700. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  701. package/dist/utils/react/useEventBus.js +1 -1
  702. package/dist/utils/react/useId.js +1 -1
  703. package/dist/utils/react/useIsDarwin.js +1 -1
  704. package/dist/utils/react/useKeySymbols.js +1 -1
  705. package/dist/utils/react/useLayoutEffect.js +1 -1
  706. package/dist/utils/react/useLocalStorage.js +1 -1
  707. package/dist/utils/react/useMergeStyles.js +1 -1
  708. package/dist/utils/react/useOverlayEscapeGuard.js +12 -1
  709. package/dist/utils/react/useOverlayEscapeGuard.js.map +1 -1
  710. package/dist/utils/react/usePopoverSync.js +1 -1
  711. package/dist/utils/react/useQaProps.js +1 -1
  712. package/dist/utils/react/useScheme.js +1 -1
  713. package/dist/utils/react/useViewportSize.js +1 -1
  714. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  715. package/dist/utils/selection.js +1 -1
  716. package/dist/utils/styles.js +1 -1
  717. package/dist/utils/tree.js +1 -1
  718. package/dist/utils/warnings.js +1 -1
  719. package/dist/version.js +2 -2
  720. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"TextItem.js","names":["BASE_STYLES","COLOR_STYLES","filterBaseProps","Styles","tasty","TEXT_STYLES","forwardRef","HTMLAttributes","RefObject","OverlayProps","extractStyles","highlightText","CubeTextProps","Text","TEXT_PROP_MAP","AutoTooltipValue","useAutoTooltip","STYLE_LIST","const","CubeTextItemProps","highlight","highlightCaseSensitive","highlightStyles","tooltip","tooltipPlacement","TextItemElement","qa","styles","display","verticalAlign","width","whiteSpace","overflow","textOverflow","TextItem","HTMLElement","props","ref","$","_c","children","t0","t1","t2","restProps","undefined","t3","labelRef","renderWithTooltip","t4","processedChildren","renderElement","tooltipTriggerProps","tooltipRef","handleRef","element","current","eventProps","displayName"],"sources":["../../../../src/components/content/TextItem/TextItem.tsx"],"sourcesContent":["import {\n BASE_STYLES,\n COLOR_STYLES,\n filterBaseProps,\n Styles,\n tasty,\n TEXT_STYLES,\n} from '@tenphi/tasty';\nimport { forwardRef, HTMLAttributes, RefObject } from 'react';\nimport { OverlayProps } from 'react-aria';\n\nimport { extractStyles } from '../../../utils/styles';\nimport { highlightText } from '../highlightText';\nimport { CubeTextProps, Text, TEXT_PROP_MAP } from '../Text';\nimport { AutoTooltipValue, useAutoTooltip } from '../use-auto-tooltip';\n\nconst STYLE_LIST = [...BASE_STYLES, ...TEXT_STYLES, ...COLOR_STYLES] as const;\n\nexport interface CubeTextItemProps extends CubeTextProps {\n /**\n * String to highlight within children.\n * Only works when children is a plain string.\n */\n highlight?: string;\n /**\n * Whether highlight matching is case-sensitive.\n * @default false\n */\n highlightCaseSensitive?: boolean;\n /**\n * Custom styles for highlighted text.\n */\n highlightStyles?: Styles;\n /**\n * Tooltip content and configuration:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows children as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n * @default true\n */\n tooltip?: AutoTooltipValue;\n /**\n * Default tooltip placement.\n * @default \"top\"\n */\n tooltipPlacement?: OverlayProps['placement'];\n}\n\nconst TextItemElement = tasty(Text, {\n qa: 'TextItem',\n styles: {\n display: 'inline-block',\n verticalAlign: 'bottom',\n width: 'max 100%',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n});\n\nexport const TextItem = forwardRef<HTMLElement, CubeTextItemProps>(\n function TextItem(props, ref) {\n const {\n children,\n highlight,\n highlightCaseSensitive = false,\n highlightStyles,\n tooltip = true,\n tooltipPlacement = 'top',\n ...restProps\n } = props;\n\n // Extract style props (preset, color, etc.) to pass via styles prop\n const styles = extractStyles(restProps, STYLE_LIST, {}, TEXT_PROP_MAP);\n\n const { labelRef, renderWithTooltip } = useAutoTooltip({\n tooltip,\n children,\n });\n\n // Process children with highlight if applicable\n const processedChildren =\n typeof children === 'string' && highlight\n ? highlightText(\n children,\n highlight,\n highlightCaseSensitive,\n highlightStyles,\n )\n : children;\n\n const renderElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n // Merge refs\n const handleRef = (element: HTMLElement | null) => {\n // Set component forwarded ref\n if (typeof ref === 'function') {\n ref(element);\n } else if (ref) {\n (ref as any).current = element;\n }\n // Set tooltip ref\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Set label ref for overflow detection\n labelRef(element);\n };\n\n return (\n <TextItemElement\n {...filterBaseProps(restProps, { eventProps: true })}\n {...tooltipTriggerProps}\n ref={handleRef}\n styles={styles}\n >\n {processedChildren}\n </TextItemElement>\n );\n };\n\n return renderWithTooltip(renderElement, tooltipPlacement);\n },\n);\n\nTextItem.displayName = 'TextItem';\n"],"mappings":";;;;;;;;;;;AAgBA,MAAMiB,aAAa;CAAC,GAAGjB;CAAa,GAAGK;CAAa,GAAGJ;CAAa;AAgCpE,MAAMwB,kBAAkBrB,MAAMS,OAAM;CAClCa,IAAI;CACJC,QAAQ;EACNC,SAAS;EACTC,eAAe;EACfC,OAAO;EACPC,YAAY;EACZC,UAAU;EACVC,cAAc;EAChB;CACD,CAAC;AAEF,MAAaC,WAAW5B,WACtB,SAAA4B,SAAAE,OAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CACE,MAAA,EAAAC,UAAApB,WAAAC,wBAAAoB,IAAAnB,iBAAAC,SAAAmB,IAAAlB,kBAAAmB,IAAA,GAAAC,cAQIR;CALF,MAAAf,yBAAAoB,OAAAI,SAAA,QAAAJ;CAEA,MAAAlB,UAAAmB,OAAAG,SAAA,OAAAH;CACA,MAAAlB,mBAAAmB,OAAAE,SAAA,QAAAF;CAKF,MAAAhB,SAAejB,cAAckC,WAAW3B,YAAY,EAAE,EAAEH,cAAc;CAAC,IAAAgC;AAAA,KAAAR,EAAA,OAAAE,YAAAF,EAAA,OAAAf,SAAA;AAEhBuB,OAAA;GAAAvB;GAAAiB;GAGtD;AAAAF,IAAA,KAAAE;AAAAF,IAAA,KAAAf;AAAAe,IAAA,KAAAQ;OAAAA,MAAAR,EAAA;CAHD,MAAA,EAAAS,UAAAC,sBAAwChC,eAAe8B,GAGrD;CAAC,IAAAG;AAAA,KAAAX,EAAA,OAAAE,YAAAF,EAAA,OAAAlB,aAAAkB,EAAA,OAAAjB,0BAAAiB,EAAA,OAAAhB,iBAAA;AAID2B,OAAA,OAAOT,aAAa,YAApBpB,YACIT,cACE6B,UACApB,WACAC,wBACAC,gBAEM,GAPZkB;AAOYF,IAAA,KAAAE;AAAAF,IAAA,KAAAlB;AAAAkB,IAAA,KAAAjB;AAAAiB,IAAA,KAAAhB;AAAAgB,IAAA,KAAAW;OAAAA,MAAAX,EAAA;CARd,MAAAY,oBACED;CASF,MAAAE,iBAAsBC,qBAAAC,eAAA;EAKpB,MAAAC,aAAkBC,YAAA;AAEhB,OAAI,OAAOlB,QAAQ,WACjBA,KAAIkB,QAAQ;YACHlB,IACT,CAACA,IAAUmB,UAAYD;AAGzB,OAAIF,WACF,CAACA,WAAiBG,UAAYD;AAGhCR,YAASQ,QAAQ;;AACjB,SAGA,oBAAC;GAAe,GACVrD,gBAAgB0C,WAAW,EAAAa,YAAc,MAAM,CAAC;GAAA,GAChDL;GACCE,KAAAA;GACG3B;aAEPuB;IACe;;AAEpB,QAEKF,kBAAkBG,eAAe3B,iBAAiB;EAE5D;AAEDU,SAASwB,cAAc"}
1
+ {"version":3,"file":"TextItem.js","names":["BASE_STYLES","COLOR_STYLES","filterBaseProps","Styles","tasty","TEXT_STYLES","forwardRef","HTMLAttributes","RefObject","PositionProps","extractStyles","highlightText","CubeTextProps","Text","TEXT_PROP_MAP","AutoTooltipValue","useAutoTooltip","STYLE_LIST","const","CubeTextItemProps","highlight","highlightCaseSensitive","highlightStyles","tooltip","tooltipPlacement","TextItemElement","qa","styles","display","verticalAlign","width","whiteSpace","overflow","textOverflow","TextItem","HTMLElement","props","ref","$","_c","children","t0","t1","t2","restProps","undefined","t3","labelRef","renderWithTooltip","t4","processedChildren","renderElement","tooltipTriggerProps","tooltipRef","handleRef","element","current","eventProps","displayName"],"sources":["../../../../src/components/content/TextItem/TextItem.tsx"],"sourcesContent":["import {\n BASE_STYLES,\n COLOR_STYLES,\n filterBaseProps,\n Styles,\n tasty,\n TEXT_STYLES,\n} from '@tenphi/tasty';\nimport { forwardRef, HTMLAttributes, RefObject } from 'react';\nimport { PositionProps } from 'react-aria';\n\nimport { extractStyles } from '../../../utils/styles';\nimport { highlightText } from '../highlightText';\nimport { CubeTextProps, Text, TEXT_PROP_MAP } from '../Text';\nimport { AutoTooltipValue, useAutoTooltip } from '../use-auto-tooltip';\n\nconst STYLE_LIST = [...BASE_STYLES, ...TEXT_STYLES, ...COLOR_STYLES] as const;\n\nexport interface CubeTextItemProps extends CubeTextProps {\n /**\n * String to highlight within children.\n * Only works when children is a plain string.\n */\n highlight?: string;\n /**\n * Whether highlight matching is case-sensitive.\n * @default false\n */\n highlightCaseSensitive?: boolean;\n /**\n * Custom styles for highlighted text.\n */\n highlightStyles?: Styles;\n /**\n * Tooltip content and configuration:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows children as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n * @default true\n */\n tooltip?: AutoTooltipValue;\n /**\n * Default tooltip placement.\n * @default \"top\"\n */\n tooltipPlacement?: PositionProps['placement'];\n}\n\nconst TextItemElement = tasty(Text, {\n qa: 'TextItem',\n styles: {\n display: 'inline-block',\n verticalAlign: 'bottom',\n width: 'max 100%',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n },\n});\n\nexport const TextItem = forwardRef<HTMLElement, CubeTextItemProps>(\n function TextItem(props, ref) {\n const {\n children,\n highlight,\n highlightCaseSensitive = false,\n highlightStyles,\n tooltip = true,\n tooltipPlacement = 'top',\n ...restProps\n } = props;\n\n // Extract style props (preset, color, etc.) to pass via styles prop\n const styles = extractStyles(restProps, STYLE_LIST, {}, TEXT_PROP_MAP);\n\n const { labelRef, renderWithTooltip } = useAutoTooltip({\n tooltip,\n children,\n });\n\n // Process children with highlight if applicable\n const processedChildren =\n typeof children === 'string' && highlight\n ? highlightText(\n children,\n highlight,\n highlightCaseSensitive,\n highlightStyles,\n )\n : children;\n\n const renderElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n // Merge refs\n const handleRef = (element: HTMLElement | null) => {\n // Set component forwarded ref\n if (typeof ref === 'function') {\n ref(element);\n } else if (ref) {\n (ref as any).current = element;\n }\n // Set tooltip ref\n if (tooltipRef) {\n (tooltipRef as any).current = element;\n }\n // Set label ref for overflow detection\n labelRef(element);\n };\n\n return (\n <TextItemElement\n {...filterBaseProps(restProps, { eventProps: true })}\n {...tooltipTriggerProps}\n ref={handleRef}\n styles={styles}\n >\n {processedChildren}\n </TextItemElement>\n );\n };\n\n return renderWithTooltip(renderElement, tooltipPlacement);\n },\n);\n\nTextItem.displayName = 'TextItem';\n"],"mappings":";;;;;;;;;;;AAgBA,MAAMiB,aAAa;CAAC,GAAGjB;CAAa,GAAGK;CAAa,GAAGJ;CAAa;AAgCpE,MAAMwB,kBAAkBrB,MAAMS,OAAM;CAClCa,IAAI;CACJC,QAAQ;EACNC,SAAS;EACTC,eAAe;EACfC,OAAO;EACPC,YAAY;EACZC,UAAU;EACVC,cAAc;EAChB;CACD,CAAC;AAEF,MAAaC,WAAW5B,WACtB,SAAA4B,SAAAE,OAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CACE,MAAA,EAAAC,UAAApB,WAAAC,wBAAAoB,IAAAnB,iBAAAC,SAAAmB,IAAAlB,kBAAAmB,IAAA,GAAAC,cAQIR;CALF,MAAAf,yBAAAoB,OAAAI,SAAA,QAAAJ;CAEA,MAAAlB,UAAAmB,OAAAG,SAAA,OAAAH;CACA,MAAAlB,mBAAAmB,OAAAE,SAAA,QAAAF;CAKF,MAAAhB,SAAejB,cAAckC,WAAW3B,YAAY,EAAE,EAAEH,cAAc;CAAC,IAAAgC;AAAA,KAAAR,EAAA,OAAAE,YAAAF,EAAA,OAAAf,SAAA;AAEhBuB,OAAA;GAAAvB;GAAAiB;GAGtD;AAAAF,IAAA,KAAAE;AAAAF,IAAA,KAAAf;AAAAe,IAAA,KAAAQ;OAAAA,MAAAR,EAAA;CAHD,MAAA,EAAAS,UAAAC,sBAAwChC,eAAe8B,GAGrD;CAAC,IAAAG;AAAA,KAAAX,EAAA,OAAAE,YAAAF,EAAA,OAAAlB,aAAAkB,EAAA,OAAAjB,0BAAAiB,EAAA,OAAAhB,iBAAA;AAID2B,OAAA,OAAOT,aAAa,YAApBpB,YACIT,cACE6B,UACApB,WACAC,wBACAC,gBAEM,GAPZkB;AAOYF,IAAA,KAAAE;AAAAF,IAAA,KAAAlB;AAAAkB,IAAA,KAAAjB;AAAAiB,IAAA,KAAAhB;AAAAgB,IAAA,KAAAW;OAAAA,MAAAX,EAAA;CARd,MAAAY,oBACED;CASF,MAAAE,iBAAsBC,qBAAAC,eAAA;EAKpB,MAAAC,aAAkBC,YAAA;AAEhB,OAAI,OAAOlB,QAAQ,WACjBA,KAAIkB,QAAQ;YACHlB,IACT,CAACA,IAAUmB,UAAYD;AAGzB,OAAIF,WACF,CAACA,WAAiBG,UAAYD;AAGhCR,YAASQ,QAAQ;;AACjB,SAGA,oBAAC;GAAe,GACVrD,gBAAgB0C,WAAW,EAAAa,YAAc,MAAM,CAAC;GAAA,GAChDL;GACCE,KAAAA;GACG3B;aAEPuB;IACe;;AAEpB,QAEKF,kBAAkBG,eAAe3B,iBAAiB;EAE5D;AAEDU,SAASwB,cAAc"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { extractStyles } from "../../utils/styles.js";
3
3
  import { useSlotProps } from "../../utils/react/Slots.js";
4
4
  import { TEXT_PROP_MAP } from "./Text.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { extractStyles } from "../../../utils/styles.js";
3
3
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useEvent } from "../../../_internal/hooks/use-event.js";
@@ -1 +1 @@
1
- {"version":3,"file":"TreeNode.js","names":["Children","memo","useMemo","useRef","useState","useHover","useTreeItem","useEvent","useI18n","DirectionIcon","LoadingIcon","MoreIcon","mergeProps","mergeRefs","allowEscapeToPropagate","CubeItemActionProps","ItemAction","CubeMenuProps","Menu","MenuTrigger","useContextMenu","Checkbox","TreeNodeCheckboxWrapper","TreeNodeRow","TreeNodeToggle","TreeNodeTogglePlaceholder","TreeRowItem","Key","Node","Styles","CSSProperties","KeyboardEvent","MouseEvent","ReactNode","Ref","TreeState","CubeTreeNodeData","TreeContextMenu","TreeItemProps","TreeNodeState","isMenuEmpty","menu","undefined","toArray","length","TreeNodeProps","node","data","state","isCheckable","isExpanded","isIndeterminate","isChecked","isLoading","onToggleChecked","key","size","itemProps","rowStyles","virtualStyle","virtualRef","element","HTMLElement","virtualIndex","contextMenu","onAction","action","menuTriggerProps","Partial","menuProps","TreeNodeInner","props","t","treeMenu","treeContextMenu","treeOnAction","rowRef","HTMLDivElement","isLeaf","hasChildNodes","rowProps","gridCellProps","expandButtonProps","isPressed","hasChildItems","isDisabled","disabledKeys","has","isSelected","selectionManager","hoverProps","isHovered","isFocused","focusedKey","isRowCheckable","nodeState","effectiveMenuChildren","hasMenu","effectiveContextMenu","menuExposed","contextMenuOnly","isMenuOpen","setIsMenuOpen","handleMenuAction","actionStr","String","normalizedAction","startsWith","slice","rowContextMenu","placement","children","handleCheckboxChange","handleWrapperClick","e","stopPropagation","isCheckboxDisabled","target","closest","handleKeyDown","preventDefault","shiftKey","open","composedKeyDown","onKeyDown","globalThis","sharedMods","checked","indeterminate","expanded","loading","leaf","rowMods","disabled","itemMods","focused","hovered","pressed","rowStyle","level","ariaChecked","finalRowProps","toggleNode","checkboxNode","title","resolvedItemProps","prefix","userPrefix","actions","userActions","restUserProps","composedPrefix","menuAction","composedActions","refs","list","push","targetRef","rendered","TreeNode"],"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 { allowEscapeToPropagate } from '../../../utils/react/escapePropagation';\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} from 'react';\nimport type { TreeState } from 'react-stately';\nimport type {\n CubeTreeNodeData,\n TreeContextMenu,\n TreeItemProps,\n TreeNodeState,\n} from './types';\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 // 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\n // React Aria counts a row as a parent only with more than one child (it\n // expects the row's content first). `hasChildItems` makes single-child and\n // lazy rows expandable: `aria-expanded` and arrow-key expansion.\n const { rowProps, gridCellProps, expandButtonProps, isPressed } = useTreeItem(\n { node, hasChildItems: !isLeaf },\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 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 // Hold the checkbox's keys here, but let Escape reach a surrounding overlay.\n onKeyDown={allowEscapeToPropagate}\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
+ {"version":3,"file":"TreeNode.js","names":["Children","memo","useMemo","useRef","useState","useHover","useTreeItem","useEvent","useI18n","DirectionIcon","LoadingIcon","MoreIcon","mergeProps","mergeRefs","allowEscapeToPropagate","CubeItemActionProps","ItemAction","CubeMenuProps","Menu","MenuTrigger","useContextMenu","Checkbox","TreeNodeCheckboxWrapper","TreeNodeRow","TreeNodeToggle","TreeNodeTogglePlaceholder","TreeRowItem","Key","Node","Styles","CSSProperties","KeyboardEvent","MouseEvent","ReactNode","Ref","TreeState","CubeTreeNodeData","TreeContextMenu","TreeItemProps","TreeNodeState","isMenuEmpty","menu","undefined","toArray","length","TreeNodeProps","node","data","state","isCheckable","isExpanded","isIndeterminate","isChecked","isLoading","onToggleChecked","key","size","itemProps","rowStyles","virtualStyle","virtualRef","element","HTMLElement","virtualIndex","contextMenu","onAction","action","menuTriggerProps","Partial","menuProps","TreeNodeInner","props","t","treeMenu","treeContextMenu","treeOnAction","rowRef","HTMLDivElement","isLeaf","hasChildNodes","rowProps","gridCellProps","expandButtonProps","isPressed","hasChildItems","isDisabled","disabledKeys","has","isSelected","selectionManager","hoverProps","isHovered","isFocused","focusedKey","isRowCheckable","nodeState","effectiveMenuChildren","hasMenu","effectiveContextMenu","menuExposed","contextMenuOnly","isMenuOpen","setIsMenuOpen","handleMenuAction","actionStr","String","normalizedAction","startsWith","slice","rowContextMenu","placement","children","handleCheckboxChange","handleWrapperClick","e","stopPropagation","isCheckboxDisabled","target","closest","handleKeyDown","preventDefault","shiftKey","open","composedKeyDown","onKeyDown","sharedMods","checked","indeterminate","expanded","loading","leaf","rowMods","disabled","itemMods","focused","hovered","pressed","rowStyle","level","ariaChecked","finalRowProps","toggleNode","checkboxNode","title","resolvedItemProps","prefix","userPrefix","actions","userActions","restUserProps","composedPrefix","menuAction","composedActions","refs","list","push","targetRef","rendered","TreeNode"],"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 { allowEscapeToPropagate } from '../../../utils/react/escapePropagation';\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} from 'react';\nimport type { TreeState } from 'react-stately';\nimport type {\n CubeTreeNodeData,\n TreeContextMenu,\n TreeItemProps,\n TreeNodeState,\n} from './types';\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 // 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\n // React Aria counts a row as a parent only with more than one child (it\n // expects the row's content first). `hasChildItems` makes single-child and\n // lazy rows expandable: `aria-expanded` and arrow-key expansion.\n const { rowProps, gridCellProps, expandButtonProps, isPressed } = useTreeItem(\n { node, hasChildItems: !isLeaf },\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 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);\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 // Hold the checkbox's keys here, but let Escape reach a surrounding overlay.\n onKeyDown={allowEscapeToPropagate}\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.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | 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.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | 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.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { c } from "react-compiler-runtime";
4
4
  import { useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { isDevEnvOrTest } from "../../../utils/is-dev-env.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { _Text } from "./Text.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -2,7 +2,7 @@
2
2
  import { CubeTooltipProviderProps } from "../overlays/Tooltip/TooltipProvider.js";
3
3
  import { HTMLAttributes, ReactNode, Ref, RefObject } from "react";
4
4
  import "react/jsx-runtime";
5
- import { OverlayProps } from "react-aria";
5
+ import { PositionProps } from "react-aria";
6
6
 
7
7
  //#region src/components/content/use-auto-tooltip.d.ts
8
8
  type AutoTooltipValue = string | boolean | (Omit<CubeTooltipProviderProps, 'children'> & {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { TooltipProvider } from "../overlays/Tooltip/TooltipProvider.js";
3
3
  import { c } from "react-compiler-runtime";
4
4
  import { useEffect, useRef, useState } from "react";
@@ -1 +1 @@
1
- {"version":3,"file":"use-auto-tooltip.js","names":["HTMLAttributes","ReactNode","Ref","RefObject","useCallback","useEffect","useRef","useState","OverlayProps","flushSync","CubeTooltipProviderProps","TooltipProvider","Props","AutoTooltipValue","Omit","auto","UseAutoTooltipOptions","tooltip","children","description","labelProps","isDynamicLabel","labelRef","HTMLElement","descriptionRef","assignRef","ref","element","current","pendingOverflowChecks","Set","runOverflowChecks","checks","Array","from","clear","check","queueOverflowCheck","size","queueMicrotask","add","allowsAutoTooltip","title","undefined","Truncation","getAutoTitle","truncation","resolveTooltip","isOverflowed","autoTitle","hasAutoContent","isDisabled","tooltipProps","isTruncated","scrollWidth","clientWidth","measureTruncation","label","isLabelCut","isDescriptionCut","MeasuredNodes","observer","ResizeObserver","observeMeasuredNodes","measured","onResize","disconnect","observe","useAutoTooltip","t0","$","_c","t1","labelRefOption","descriptionRefOption","t2","allowsAuto","isLabelMeasured","isDescriptionMeasured","isAutoTooltipEnabled","externalLabelRef","setTruncation","t3","Symbol","for","measuredRef","verdictRef","t4","value","setVerdict","t5","description_0","checkOverflow","t6","scheduleOverflowCheck","t7","t8","t9","part","attachMeasuredNode","t10","element_0","handleLabelElementRef","t11","element_1","handleDescriptionElementRef","t12","finalLabelProps","_labelPropsRef","t13","resolvedTooltip","isTooltipActive","t14","renderElement","defaultTooltipPlacement","triggerProps","renderWithTooltip","t15","t16","t17","hasTooltip"],"sources":["../../../src/components/content/use-auto-tooltip.tsx"],"sourcesContent":["import {\n HTMLAttributes,\n ReactNode,\n Ref,\n RefObject,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { OverlayProps } from 'react-aria';\nimport { flushSync } from 'react-dom';\n\nimport {\n CubeTooltipProviderProps,\n TooltipProvider,\n} from '../overlays/Tooltip/TooltipProvider';\n\nimport type { Props } from '../../props';\n\nexport type AutoTooltipValue =\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n\nexport interface UseAutoTooltipOptions {\n tooltip: AutoTooltipValue | undefined;\n children: ReactNode;\n /**\n * Secondary text that truncates alongside the label, such as `Item`'s\n * description. A string description is measured with the label, and the auto\n * tooltip shows whichever of the two is cut off.\n */\n description?: ReactNode;\n labelProps?: Props;\n isDynamicLabel?: boolean;\n /**\n * The caller's own ref to the label element. The hook owns the label's ref\n * (it measures the node), so a caller that also needs the node hands its ref\n * over here rather than attaching a second one.\n */\n labelRef?: Ref<HTMLElement>;\n /** The caller's own ref to the description element, as `labelRef`. */\n descriptionRef?: Ref<HTMLElement>;\n}\n\nfunction assignRef(ref: unknown, element: HTMLElement | null) {\n if (typeof ref === 'function') {\n ref(element);\n } else if (ref) {\n (ref as { current: HTMLElement | null }).current = element;\n }\n}\n\n/** Overflow checks queued for the end of the current task, from every label. */\nconst pendingOverflowChecks = new Set<() => void>();\n\n/**\n * Runs every queued check in one pass and commits the verdicts that changed in\n * one synchronous render.\n *\n * All reads happen before React touches the DOM again, so they share one\n * layout. `flushSync` applies the verdicts, and the `TooltipProvider` remounts\n * they cause, before paint and before any other task, so code that looks the\n * label up after this task gets the node the verdict leaves in place, not one\n * about to be replaced. Outside a React commit this is an ordinary sync\n * render, not a nested update.\n */\nfunction runOverflowChecks() {\n const checks = Array.from(pendingOverflowChecks);\n\n pendingOverflowChecks.clear();\n\n flushSync(() => {\n for (const check of checks) check();\n });\n}\n\nfunction queueOverflowCheck(check: () => void) {\n if (!pendingOverflowChecks.size) queueMicrotask(runOverflowChecks);\n\n pendingOverflowChecks.add(check);\n}\n\n/**\n * Whether the tooltip value asks to detect overflow on its own. What it\n * measures is decided separately: overflow detection measures text, so only a\n * string label or description takes part.\n */\nfunction allowsAutoTooltip(tooltip: AutoTooltipValue | undefined): boolean {\n // Boolean true enables auto overflow detection\n if (tooltip === true) return true;\n if (typeof tooltip === 'object') {\n // If title is provided and auto is explicitly true, enable auto overflow detection\n if (tooltip.title) {\n return tooltip.auto === true;\n }\n\n // If no title is provided, default to auto=true unless explicitly disabled\n return tooltip.auto !== undefined ? !!tooltip.auto : true;\n }\n return false;\n}\n\n/** Which measured parts are cut off. */\ntype Truncation = 'none' | 'label' | 'description' | 'both';\n\n/**\n * What the auto tooltip shows: the text that is cut off, and nothing the row\n * already shows in full. When both parts are, the description goes below the\n * label as the tooltip's `Description`, styled as secondary text.\n */\nfunction getAutoTitle(\n children: ReactNode,\n description: ReactNode,\n truncation: Truncation,\n): ReactNode {\n if (truncation === 'description') return description;\n if (truncation === 'both') {\n return (\n <>\n {children}\n <div data-element=\"Description\">{description}</div>\n </>\n );\n }\n\n // The label is cut off, or nothing is and the tooltip stays mounted but\n // disabled for a dynamic label.\n return children;\n}\n\n/**\n * The `TooltipProvider` props a tooltip resolves to, or `null` when no tooltip\n * is rendered at all.\n */\nfunction resolveTooltip({\n tooltip,\n children,\n description,\n labelProps,\n isDynamicLabel,\n truncation,\n}: Omit<UseAutoTooltipOptions, 'labelRef' | 'descriptionRef'> & {\n truncation: Truncation;\n}): Omit<CubeTooltipProviderProps, 'children'> | null {\n if (!tooltip) return null;\n\n // String tooltip - simple case\n if (typeof tooltip === 'string') {\n return { title: tooltip };\n }\n\n const isOverflowed = truncation !== 'none';\n const autoTitle = getAutoTitle(children, description, truncation);\n const hasAutoContent =\n !!(autoTitle || labelProps) && (isOverflowed || isDynamicLabel);\n\n // Boolean tooltip - auto tooltip on overflow\n if (tooltip === true) {\n if (!hasAutoContent) return null;\n\n return {\n title: autoTitle,\n isDisabled: !isOverflowed && isDynamicLabel,\n };\n }\n\n // Object tooltip - advanced configuration\n const { auto, ...tooltipProps } = tooltip;\n\n // If title is provided and auto is not explicitly true, always show the tooltip\n if (tooltipProps.title && auto !== true) {\n return tooltipProps;\n }\n\n // If title is provided with auto=true, OR no title but auto behavior enabled\n if (!hasAutoContent) return null;\n\n return {\n title: tooltipProps.title ?? autoTitle,\n isDisabled:\n !isOverflowed && isDynamicLabel && tooltipProps.isDisabled !== true,\n ...tooltipProps,\n };\n}\n\n/** Whether a measured node's text is cut off. */\nfunction isTruncated(element: HTMLElement | null): boolean {\n return !!element && element.scrollWidth > element.clientWidth;\n}\n\nfunction measureTruncation(\n label: HTMLElement | null,\n description: HTMLElement | null,\n): Truncation {\n const isLabelCut = isTruncated(label);\n const isDescriptionCut = isTruncated(description);\n\n if (isLabelCut) return isDescriptionCut ? 'both' : 'label';\n\n return isDescriptionCut ? 'description' : 'none';\n}\n\ninterface MeasuredNodes {\n label: HTMLElement | null;\n description: HTMLElement | null;\n observer: ResizeObserver | null;\n}\n\n/**\n * Points the hook's one observer at the nodes now measured, so a row with a\n * label and a description still costs a single observer. It re-points by\n * disconnecting and observing again rather than with `unobserve`: those are\n * the only two calls the hook has ever made, so a consumer's test stub that\n * implements just them keeps working.\n */\nfunction observeMeasuredNodes(measured: MeasuredNodes, onResize: () => void) {\n try {\n measured.observer?.disconnect();\n } catch {\n // do nothing\n }\n\n const { label, description } = measured;\n\n if (!label && !description) return;\n\n measured.observer ??= new ResizeObserver(() => onResize());\n\n if (label) measured.observer.observe(label);\n if (description) measured.observer.observe(description);\n}\n\nexport function useAutoTooltip({\n tooltip,\n children,\n description,\n labelProps,\n isDynamicLabel = false,\n labelRef: labelRefOption,\n descriptionRef: descriptionRefOption,\n}: UseAutoTooltipOptions) {\n const allowsAuto = allowsAutoTooltip(tooltip);\n const isLabelMeasured = allowsAuto && typeof children === 'string';\n const isDescriptionMeasured = allowsAuto && typeof description === 'string';\n const isAutoTooltipEnabled = isLabelMeasured || isDescriptionMeasured;\n\n // Track overflow for auto tooltip (only when enabled)\n const externalLabelRef = (labelProps as any)?.ref;\n const [truncation, setTruncation] = useState<Truncation>('none');\n // The nodes being measured, and the one observer watching all of them.\n const measuredRef = useRef<MeasuredNodes>({\n label: null,\n description: null,\n observer: null,\n });\n\n const verdictRef = useRef<Truncation>('none');\n\n /**\n * Sets the verdict only when it changes. React skips an unchanged `setState`\n * only while the component has no other update queued; otherwise the no-op is\n * enqueued like any other update. From an effect flushed inside a sync commit\n * that is a pending update, and a nested one — see the mount effect below.\n * Mirroring the verdict makes every unchanged write free, whatever else the\n * component has queued.\n */\n const setVerdict = useCallback((value: Truncation) => {\n if (verdictRef.current === value) return;\n\n verdictRef.current = value;\n setTruncation(value);\n }, []);\n\n const checkOverflow = useCallback(() => {\n const { label, description } = measuredRef.current;\n\n if (!label && !description) return;\n\n setVerdict(measureTruncation(label, description));\n }, [setVerdict]);\n\n /**\n * Measure once the current task has finished, not inside it.\n *\n * A microtask runs after React's whole commit — every mutation, layout effect\n * and ref attachment — and before paint. Every label on the page therefore\n * reads after all of them have written, so the reads collapse into one style\n * and layout flush instead of forcing one each, mid-commit. Reading straight\n * from the callback ref is what cost 122ms of `get scrollWidth` in one Cloud\n * profile, more than the entire style engine.\n *\n * A microtask rather than the observer's first delivery: observer callbacks\n * are part of the rendering steps, so a runner that is not producing frames —\n * a background tab, or a headless browser running many stories at once — can\n * delay them past the point something asks whether the tooltip is active.\n * Microtasks do not depend on a frame. See `runOverflowChecks` for how the\n * verdicts are applied.\n */\n const scheduleOverflowCheck = useCallback(() => {\n queueOverflowCheck(checkOverflow);\n }, [checkOverflow]);\n\n useEffect(() => {\n if (isAutoTooltipEnabled) {\n // Queued, not measured here. React 19 flushes a sync commit's passive\n // effects before the commit returns, so a verdict set from this effect\n // leaves that commit with an update pending — a nested update. A list\n // that commits each row on its own (ag-grid-react wraps every new row in\n // `flushSync`) then gains one per row, and React throws \"Maximum update\n // depth exceeded\" once the count passes 50. The queued check runs after\n // the commit and still before paint. The callback refs have usually\n // queued it already, so this call is absorbed. It matters when what is\n // measured changes without a node re-attaching — the description stops\n // being a string, say, while the label stays.\n scheduleOverflowCheck();\n\n return;\n }\n\n // Clearing here rather than in the callback ref, which cannot be trusted\n // to do it. Flipping `isAutoTooltipEnabled` changes the ref's identity, so\n // React detaches with the PREVIOUS callback — the one that still believes\n // auto tooltips are on, and therefore keeps the last verdict — and only\n // attaches the new one if the label still exists. When `children` stops\n // being a string the label unmounts, so the new callback never runs and a\n // stale verdict would keep an auto tooltip mounted over content that is no\n // longer text. That is the default `Button` path, where `tooltip` is `true`.\n setVerdict('none');\n }, [\n isAutoTooltipEnabled,\n isLabelMeasured,\n isDescriptionMeasured,\n scheduleOverflowCheck,\n setVerdict,\n ]);\n\n // The callback refs own the observer: React hands them `null` when a node\n // goes away. An unmount effect must not repeat that. React 18 Strict Mode\n // replays effects without re-attaching refs, so the replay would drop the\n // nodes and observer for good and strand the queued check.\n const attachMeasuredNode = useCallback(\n (part: 'label' | 'description', element: HTMLElement | null) => {\n const measured = measuredRef.current;\n\n measured[part] = element;\n // The observer covers every later size change.\n observeMeasuredNodes(measured, checkOverflow);\n\n // No node to measure. Leave the previous verdict alone rather than\n // clearing it: turning the verdict on mounts `TooltipProvider`, which\n // remounts the label underneath it, so React detaches the old node and\n // attaches a new one within that commit. Clearing here would unmount the\n // provider, remount the label, measure it, mount the provider again — a\n // loop that never settles.\n if (!element) return;\n\n // Do NOT measure synchronously here — see `scheduleOverflowCheck`. This\n // covers the node the ref just handed us, including the fresh one React\n // creates when `TooltipProvider` mounts and remounts the element.\n scheduleOverflowCheck();\n },\n [checkOverflow, scheduleOverflowCheck],\n );\n\n const handleLabelElementRef = useCallback(\n (element: HTMLElement | null) => {\n // Notify the external refs\n assignRef(externalLabelRef, element);\n assignRef(labelRefOption, element);\n\n attachMeasuredNode('label', isLabelMeasured ? element : null);\n },\n [externalLabelRef, labelRefOption, isLabelMeasured, attachMeasuredNode],\n );\n\n const handleDescriptionElementRef = useCallback(\n (element: HTMLElement | null) => {\n assignRef(descriptionRefOption, element);\n\n attachMeasuredNode('description', isDescriptionMeasured ? element : null);\n },\n [descriptionRefOption, isDescriptionMeasured, attachMeasuredNode],\n );\n\n const { ref: _labelPropsRef, ...finalLabelProps } = labelProps || {};\n\n // Resolved once so that both the rendering below and `isTooltipActive` speak\n // about the same tooltip.\n const resolvedTooltip = resolveTooltip({\n tooltip,\n children,\n description,\n labelProps,\n isDynamicLabel,\n truncation,\n });\n\n /** Whether a tooltip is rendered and able to open. */\n const isTooltipActive =\n !!resolvedTooltip && resolvedTooltip.isDisabled !== true;\n\n const renderWithTooltip = (\n renderElement: (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => ReactNode,\n defaultTooltipPlacement: OverlayProps['placement'],\n ) => {\n if (!resolvedTooltip) return renderElement();\n\n return (\n <TooltipProvider placement={defaultTooltipPlacement} {...resolvedTooltip}>\n {(triggerProps, ref) => renderElement(triggerProps, ref)}\n </TooltipProvider>\n );\n };\n\n return {\n labelRef: handleLabelElementRef,\n descriptionRef: handleDescriptionElementRef,\n labelProps: finalLabelProps,\n isOverflowed: truncation !== 'none',\n isAutoTooltipEnabled,\n hasTooltip: !!tooltip,\n isTooltipActive,\n renderWithTooltip,\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"use-auto-tooltip.js","names":["HTMLAttributes","ReactNode","Ref","RefObject","useCallback","useEffect","useRef","useState","PositionProps","flushSync","CubeTooltipProviderProps","TooltipProvider","Props","AutoTooltipValue","Omit","auto","UseAutoTooltipOptions","tooltip","children","description","labelProps","isDynamicLabel","labelRef","HTMLElement","descriptionRef","assignRef","ref","element","current","pendingOverflowChecks","Set","runOverflowChecks","checks","Array","from","clear","check","queueOverflowCheck","size","queueMicrotask","add","allowsAutoTooltip","title","undefined","Truncation","getAutoTitle","truncation","resolveTooltip","isOverflowed","autoTitle","hasAutoContent","isDisabled","tooltipProps","isTruncated","scrollWidth","clientWidth","measureTruncation","label","isLabelCut","isDescriptionCut","MeasuredNodes","observer","ResizeObserver","observeMeasuredNodes","measured","onResize","disconnect","observe","useAutoTooltip","t0","$","_c","t1","labelRefOption","descriptionRefOption","t2","allowsAuto","isLabelMeasured","isDescriptionMeasured","isAutoTooltipEnabled","externalLabelRef","setTruncation","t3","Symbol","for","measuredRef","verdictRef","t4","value","setVerdict","t5","description_0","checkOverflow","t6","scheduleOverflowCheck","t7","t8","t9","part","attachMeasuredNode","t10","element_0","handleLabelElementRef","t11","element_1","handleDescriptionElementRef","t12","finalLabelProps","_labelPropsRef","t13","resolvedTooltip","isTooltipActive","t14","renderElement","defaultTooltipPlacement","triggerProps","renderWithTooltip","t15","t16","t17","hasTooltip"],"sources":["../../../src/components/content/use-auto-tooltip.tsx"],"sourcesContent":["import {\n HTMLAttributes,\n ReactNode,\n Ref,\n RefObject,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { PositionProps } from 'react-aria';\nimport { flushSync } from 'react-dom';\n\nimport {\n CubeTooltipProviderProps,\n TooltipProvider,\n} from '../overlays/Tooltip/TooltipProvider';\n\nimport type { Props } from '../../props';\n\nexport type AutoTooltipValue =\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n\nexport interface UseAutoTooltipOptions {\n tooltip: AutoTooltipValue | undefined;\n children: ReactNode;\n /**\n * Secondary text that truncates alongside the label, such as `Item`'s\n * description. A string description is measured with the label, and the auto\n * tooltip shows whichever of the two is cut off.\n */\n description?: ReactNode;\n labelProps?: Props;\n isDynamicLabel?: boolean;\n /**\n * The caller's own ref to the label element. The hook owns the label's ref\n * (it measures the node), so a caller that also needs the node hands its ref\n * over here rather than attaching a second one.\n */\n labelRef?: Ref<HTMLElement>;\n /** The caller's own ref to the description element, as `labelRef`. */\n descriptionRef?: Ref<HTMLElement>;\n}\n\nfunction assignRef(ref: unknown, element: HTMLElement | null) {\n if (typeof ref === 'function') {\n ref(element);\n } else if (ref) {\n (ref as { current: HTMLElement | null }).current = element;\n }\n}\n\n/** Overflow checks queued for the end of the current task, from every label. */\nconst pendingOverflowChecks = new Set<() => void>();\n\n/**\n * Runs every queued check in one pass and commits the verdicts that changed in\n * one synchronous render.\n *\n * All reads happen before React touches the DOM again, so they share one\n * layout. `flushSync` applies the verdicts, and the `TooltipProvider` remounts\n * they cause, before paint and before any other task, so code that looks the\n * label up after this task gets the node the verdict leaves in place, not one\n * about to be replaced. Outside a React commit this is an ordinary sync\n * render, not a nested update.\n */\nfunction runOverflowChecks() {\n const checks = Array.from(pendingOverflowChecks);\n\n pendingOverflowChecks.clear();\n\n flushSync(() => {\n for (const check of checks) check();\n });\n}\n\nfunction queueOverflowCheck(check: () => void) {\n if (!pendingOverflowChecks.size) queueMicrotask(runOverflowChecks);\n\n pendingOverflowChecks.add(check);\n}\n\n/**\n * Whether the tooltip value asks to detect overflow on its own. What it\n * measures is decided separately: overflow detection measures text, so only a\n * string label or description takes part.\n */\nfunction allowsAutoTooltip(tooltip: AutoTooltipValue | undefined): boolean {\n // Boolean true enables auto overflow detection\n if (tooltip === true) return true;\n if (typeof tooltip === 'object') {\n // If title is provided and auto is explicitly true, enable auto overflow detection\n if (tooltip.title) {\n return tooltip.auto === true;\n }\n\n // If no title is provided, default to auto=true unless explicitly disabled\n return tooltip.auto !== undefined ? !!tooltip.auto : true;\n }\n return false;\n}\n\n/** Which measured parts are cut off. */\ntype Truncation = 'none' | 'label' | 'description' | 'both';\n\n/**\n * What the auto tooltip shows: the text that is cut off, and nothing the row\n * already shows in full. When both parts are, the description goes below the\n * label as the tooltip's `Description`, styled as secondary text.\n */\nfunction getAutoTitle(\n children: ReactNode,\n description: ReactNode,\n truncation: Truncation,\n): ReactNode {\n if (truncation === 'description') return description;\n if (truncation === 'both') {\n return (\n <>\n {children}\n <div data-element=\"Description\">{description}</div>\n </>\n );\n }\n\n // The label is cut off, or nothing is and the tooltip stays mounted but\n // disabled for a dynamic label.\n return children;\n}\n\n/**\n * The `TooltipProvider` props a tooltip resolves to, or `null` when no tooltip\n * is rendered at all.\n */\nfunction resolveTooltip({\n tooltip,\n children,\n description,\n labelProps,\n isDynamicLabel,\n truncation,\n}: Omit<UseAutoTooltipOptions, 'labelRef' | 'descriptionRef'> & {\n truncation: Truncation;\n}): Omit<CubeTooltipProviderProps, 'children'> | null {\n if (!tooltip) return null;\n\n // String tooltip - simple case\n if (typeof tooltip === 'string') {\n return { title: tooltip };\n }\n\n const isOverflowed = truncation !== 'none';\n const autoTitle = getAutoTitle(children, description, truncation);\n const hasAutoContent =\n !!(autoTitle || labelProps) && (isOverflowed || isDynamicLabel);\n\n // Boolean tooltip - auto tooltip on overflow\n if (tooltip === true) {\n if (!hasAutoContent) return null;\n\n return {\n title: autoTitle,\n isDisabled: !isOverflowed && isDynamicLabel,\n };\n }\n\n // Object tooltip - advanced configuration\n const { auto, ...tooltipProps } = tooltip;\n\n // If title is provided and auto is not explicitly true, always show the tooltip\n if (tooltipProps.title && auto !== true) {\n return tooltipProps;\n }\n\n // If title is provided with auto=true, OR no title but auto behavior enabled\n if (!hasAutoContent) return null;\n\n return {\n title: tooltipProps.title ?? autoTitle,\n isDisabled:\n !isOverflowed && isDynamicLabel && tooltipProps.isDisabled !== true,\n ...tooltipProps,\n };\n}\n\n/** Whether a measured node's text is cut off. */\nfunction isTruncated(element: HTMLElement | null): boolean {\n return !!element && element.scrollWidth > element.clientWidth;\n}\n\nfunction measureTruncation(\n label: HTMLElement | null,\n description: HTMLElement | null,\n): Truncation {\n const isLabelCut = isTruncated(label);\n const isDescriptionCut = isTruncated(description);\n\n if (isLabelCut) return isDescriptionCut ? 'both' : 'label';\n\n return isDescriptionCut ? 'description' : 'none';\n}\n\ninterface MeasuredNodes {\n label: HTMLElement | null;\n description: HTMLElement | null;\n observer: ResizeObserver | null;\n}\n\n/**\n * Points the hook's one observer at the nodes now measured, so a row with a\n * label and a description still costs a single observer. It re-points by\n * disconnecting and observing again rather than with `unobserve`: those are\n * the only two calls the hook has ever made, so a consumer's test stub that\n * implements just them keeps working.\n */\nfunction observeMeasuredNodes(measured: MeasuredNodes, onResize: () => void) {\n try {\n measured.observer?.disconnect();\n } catch {\n // do nothing\n }\n\n const { label, description } = measured;\n\n if (!label && !description) return;\n\n measured.observer ??= new ResizeObserver(() => onResize());\n\n if (label) measured.observer.observe(label);\n if (description) measured.observer.observe(description);\n}\n\nexport function useAutoTooltip({\n tooltip,\n children,\n description,\n labelProps,\n isDynamicLabel = false,\n labelRef: labelRefOption,\n descriptionRef: descriptionRefOption,\n}: UseAutoTooltipOptions) {\n const allowsAuto = allowsAutoTooltip(tooltip);\n const isLabelMeasured = allowsAuto && typeof children === 'string';\n const isDescriptionMeasured = allowsAuto && typeof description === 'string';\n const isAutoTooltipEnabled = isLabelMeasured || isDescriptionMeasured;\n\n // Track overflow for auto tooltip (only when enabled)\n const externalLabelRef = (labelProps as any)?.ref;\n const [truncation, setTruncation] = useState<Truncation>('none');\n // The nodes being measured, and the one observer watching all of them.\n const measuredRef = useRef<MeasuredNodes>({\n label: null,\n description: null,\n observer: null,\n });\n\n const verdictRef = useRef<Truncation>('none');\n\n /**\n * Sets the verdict only when it changes. React skips an unchanged `setState`\n * only while the component has no other update queued; otherwise the no-op is\n * enqueued like any other update. From an effect flushed inside a sync commit\n * that is a pending update, and a nested one — see the mount effect below.\n * Mirroring the verdict makes every unchanged write free, whatever else the\n * component has queued.\n */\n const setVerdict = useCallback((value: Truncation) => {\n if (verdictRef.current === value) return;\n\n verdictRef.current = value;\n setTruncation(value);\n }, []);\n\n const checkOverflow = useCallback(() => {\n const { label, description } = measuredRef.current;\n\n if (!label && !description) return;\n\n setVerdict(measureTruncation(label, description));\n }, [setVerdict]);\n\n /**\n * Measure once the current task has finished, not inside it.\n *\n * A microtask runs after React's whole commit — every mutation, layout effect\n * and ref attachment — and before paint. Every label on the page therefore\n * reads after all of them have written, so the reads collapse into one style\n * and layout flush instead of forcing one each, mid-commit. Reading straight\n * from the callback ref is what cost 122ms of `get scrollWidth` in one Cloud\n * profile, more than the entire style engine.\n *\n * A microtask rather than the observer's first delivery: observer callbacks\n * are part of the rendering steps, so a runner that is not producing frames —\n * a background tab, or a headless browser running many stories at once — can\n * delay them past the point something asks whether the tooltip is active.\n * Microtasks do not depend on a frame. See `runOverflowChecks` for how the\n * verdicts are applied.\n */\n const scheduleOverflowCheck = useCallback(() => {\n queueOverflowCheck(checkOverflow);\n }, [checkOverflow]);\n\n useEffect(() => {\n if (isAutoTooltipEnabled) {\n // Queued, not measured here. React 19 flushes a sync commit's passive\n // effects before the commit returns, so a verdict set from this effect\n // leaves that commit with an update pending — a nested update. A list\n // that commits each row on its own (ag-grid-react wraps every new row in\n // `flushSync`) then gains one per row, and React throws \"Maximum update\n // depth exceeded\" once the count passes 50. The queued check runs after\n // the commit and still before paint. The callback refs have usually\n // queued it already, so this call is absorbed. It matters when what is\n // measured changes without a node re-attaching — the description stops\n // being a string, say, while the label stays.\n scheduleOverflowCheck();\n\n return;\n }\n\n // Clearing here rather than in the callback ref, which cannot be trusted\n // to do it. Flipping `isAutoTooltipEnabled` changes the ref's identity, so\n // React detaches with the PREVIOUS callback — the one that still believes\n // auto tooltips are on, and therefore keeps the last verdict — and only\n // attaches the new one if the label still exists. When `children` stops\n // being a string the label unmounts, so the new callback never runs and a\n // stale verdict would keep an auto tooltip mounted over content that is no\n // longer text. That is the default `Button` path, where `tooltip` is `true`.\n setVerdict('none');\n }, [\n isAutoTooltipEnabled,\n isLabelMeasured,\n isDescriptionMeasured,\n scheduleOverflowCheck,\n setVerdict,\n ]);\n\n // The callback refs own the observer: React hands them `null` when a node\n // goes away. An unmount effect must not repeat that. React 18 Strict Mode\n // replays effects without re-attaching refs, so the replay would drop the\n // nodes and observer for good and strand the queued check.\n const attachMeasuredNode = useCallback(\n (part: 'label' | 'description', element: HTMLElement | null) => {\n const measured = measuredRef.current;\n\n measured[part] = element;\n // The observer covers every later size change.\n observeMeasuredNodes(measured, checkOverflow);\n\n // No node to measure. Leave the previous verdict alone rather than\n // clearing it: turning the verdict on mounts `TooltipProvider`, which\n // remounts the label underneath it, so React detaches the old node and\n // attaches a new one within that commit. Clearing here would unmount the\n // provider, remount the label, measure it, mount the provider again — a\n // loop that never settles.\n if (!element) return;\n\n // Do NOT measure synchronously here — see `scheduleOverflowCheck`. This\n // covers the node the ref just handed us, including the fresh one React\n // creates when `TooltipProvider` mounts and remounts the element.\n scheduleOverflowCheck();\n },\n [checkOverflow, scheduleOverflowCheck],\n );\n\n const handleLabelElementRef = useCallback(\n (element: HTMLElement | null) => {\n // Notify the external refs\n assignRef(externalLabelRef, element);\n assignRef(labelRefOption, element);\n\n attachMeasuredNode('label', isLabelMeasured ? element : null);\n },\n [externalLabelRef, labelRefOption, isLabelMeasured, attachMeasuredNode],\n );\n\n const handleDescriptionElementRef = useCallback(\n (element: HTMLElement | null) => {\n assignRef(descriptionRefOption, element);\n\n attachMeasuredNode('description', isDescriptionMeasured ? element : null);\n },\n [descriptionRefOption, isDescriptionMeasured, attachMeasuredNode],\n );\n\n const { ref: _labelPropsRef, ...finalLabelProps } = labelProps || {};\n\n // Resolved once so that both the rendering below and `isTooltipActive` speak\n // about the same tooltip.\n const resolvedTooltip = resolveTooltip({\n tooltip,\n children,\n description,\n labelProps,\n isDynamicLabel,\n truncation,\n });\n\n /** Whether a tooltip is rendered and able to open. */\n const isTooltipActive =\n !!resolvedTooltip && resolvedTooltip.isDisabled !== true;\n\n const renderWithTooltip = (\n renderElement: (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => ReactNode,\n defaultTooltipPlacement: PositionProps['placement'],\n ) => {\n if (!resolvedTooltip) return renderElement();\n\n return (\n <TooltipProvider placement={defaultTooltipPlacement} {...resolvedTooltip}>\n {(triggerProps, ref) => renderElement(triggerProps, ref)}\n </TooltipProvider>\n );\n };\n\n return {\n labelRef: handleLabelElementRef,\n descriptionRef: handleDescriptionElementRef,\n labelProps: finalLabelProps,\n isOverflowed: truncation !== 'none',\n isAutoTooltipEnabled,\n hasTooltip: !!tooltip,\n isTooltipActive,\n renderWithTooltip,\n };\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { extractStyles, mergeStyleLayers } 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.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { extractStyles, mergeStyleLayers } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { _Text } from "../../content/Text.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { _Text } from "../../content/Text.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { _Pagination } from "../../navigation/Pagination/Pagination.js";
3
3
  import { c } from "react-compiler-runtime";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { useI18n } from "../../../i18n/useI18n.js";
3
3
  import { Button } from "../../actions/index.js";
4
4
  import { ReloadIcon } from "../../../icons/ReloadIcon.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { freezeColumnWidths, useTableColumns } from "../TableBase/use-table-columns.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { isTableTreeDescendant } from "../TableBase/table-tree.js";
4
4
  import { ItemTableDragPreview } from "./ItemTableDragPreview.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { clampPage, getPageInfo } from "../../navigation/Pagination/use-pagination.js";
4
4
  import { reindexTableTree } from "../TableBase/table-tree.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { flattenTableTree } from "../TableBase/table-tree.js";
3
3
  import { useTableSelection } from "../TableBase/use-table-selection.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { sortTableTree } from "../TableBase/table-tree.js";
4
4
  import { compareByColumn, useTableSort } from "../TableBase/use-table-sort.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { useWarn } from "../../../_internal/hooks/use-warn.js";
3
3
  import { buildTableTree } from "../TableBase/table-tree.js";
4
4
  import { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | 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 { c } from "react-compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | 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.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { c } from "react-compiler-runtime";
4
4
  import { useEffect, useRef, useState } from "react";
@@ -53,7 +53,8 @@ function DraggableHeaderCell(props) {
53
53
  $[1] = hasAction;
54
54
  $[2] = t0;
55
55
  } else t0 = $[2];
56
- const { dragProps, isDragging } = useDraggableItem(t0, dragState);
56
+ const { dragProps } = useDraggableItem(t0, dragState);
57
+ const isDragging = dragState.isDragging(columnKey);
57
58
  let t1;
58
59
  if ($[3] !== dragProps || $[4] !== props.cellProps) {
59
60
  t1 = mergeProps$1(props.cellProps, dragProps, { onDragStartCapture: _temp });
@@ -1 +1 @@
1
- {"version":3,"file":"TableHeaderCell.js","names":["useEffect","useRef","useState","useDraggableItem","useDropIndicator","mergeProps","ReactNode","DraggableCollectionState","DroppableCollectionState","NO_DRAG_SELECTOR","TableHeaderCellProps","columnKey","cellProps","Record","hasAction","isLastDraggable","dragState","dropState","children","HeaderCell","props","$","_c","extra","t0","DraggableHeaderCell","key","dragProps","isDragging","t1","onDragStartCapture","_temp","t2","undefined","t3","t4","t5","t6","t7","event","target","HTMLElement","closest","preventDefault","stopPropagation","TableHeaderCell","ColumnDropIndicatorProps","dropPosition","ColumnDropIndicator","ref","type","dropIndicatorProps","isHidden","isDropTarget","forceUpdate","row","current","ResizeObserver","observer","_temp2","observe","disconnect","Symbol","for","n"],"sources":["../../../../src/components/data/TableBase/TableHeaderCell.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { useDraggableItem, useDropIndicator } from 'react-aria';\n\nimport { mergeProps } from '../../../utils/react';\n\nimport type { ReactNode } from 'react';\nimport type {\n DraggableCollectionState,\n DroppableCollectionState,\n} from 'react-stately';\n\n/**\n * Controls inside the header that own their own press, and must never start a\n * column drag.\n *\n * Drag-source resolution walks the DOM tree, not the React event path, so\n * `Item`'s `Actions` slot calling `stopPropagation` does nothing here — the\n * `<th>` is still the drag source as far as the browser is concerned. Only\n * `preventDefault` on `dragstart` stops it, which is what the capture handler\n * below does.\n */\nconst NO_DRAG_SELECTOR =\n '[data-element=\"Resizer\"], [data-element=\"Actions\"], a, button, input, select, textarea, [role=\"button\"], [role=\"menuitem\"]';\n\nexport interface TableHeaderCellProps {\n columnKey: string;\n /** Everything the renderer already computed: mods, ARIA, handlers, styles. */\n cellProps: Record<string, any>;\n /** Whether the header itself responds to Enter — i.e. it sorts. */\n hasAction: boolean;\n isLastDraggable: boolean;\n dragState?: DraggableCollectionState;\n dropState?: DroppableCollectionState;\n children: ReactNode;\n}\n\nfunction HeaderCell(\n props: TableHeaderCellProps & { extra?: Record<string, any> },\n) {\n const { cellProps, extra, children } = props;\n\n return (\n <th {...cellProps} {...extra}>\n {children}\n </th>\n );\n}\n\n/**\n * A header cell inside a collection that accepts drags.\n *\n * Split from the plain one so the drag hooks can be called unconditionally —\n * they are hooks, and whether a table reorders its columns is a prop.\n */\nfunction DraggableHeaderCell(props: TableHeaderCellProps) {\n const { columnKey, hasAction, isLastDraggable, dragState, dropState } = props;\n\n const { dragProps, isDragging } = useDraggableItem(\n // `hasAction` re-gates React Aria's Enter/Space capture behind Alt, so plain\n // Enter still reaches the header's own sort handler instead of starting a\n // keyboard drag session.\n { key: columnKey, hasAction },\n dragState as DraggableCollectionState,\n );\n\n return (\n <HeaderCell\n {...props}\n extra={{\n // `dragProps` last for `draggable`, which is a value rather than a\n // handler — `mergeProps` chains handlers but takes the later value. The\n // sort `onClick` survives: `useDraggableItem` only deletes its own.\n ...mergeProps(props.cellProps, dragProps, {\n // Capture, so this runs before React Aria's own `onDragStart` on the\n // same node and can cancel it.\n onDragStartCapture: (event: any) => {\n if ((event.target as HTMLElement)?.closest?.(NO_DRAG_SELECTOR)) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n }),\n 'data-draggable': '',\n 'data-dragging': isDragging ? '' : undefined,\n }}\n >\n <ColumnDropIndicator\n columnKey={columnKey}\n dropPosition=\"before\"\n dropState={dropState as DroppableCollectionState}\n />\n {props.children}\n {isLastDraggable ? (\n <ColumnDropIndicator\n columnKey={columnKey}\n dropPosition=\"after\"\n dropState={dropState as DroppableCollectionState}\n />\n ) : null}\n </HeaderCell>\n );\n}\n\nexport function TableHeaderCell(props: TableHeaderCellProps) {\n return props.dragState && props.dropState ? (\n <DraggableHeaderCell {...props} />\n ) : (\n <HeaderCell {...props} />\n );\n}\n\ninterface ColumnDropIndicatorProps {\n columnKey: string;\n dropPosition: 'before' | 'after';\n dropState: DroppableCollectionState;\n}\n\n/**\n * The line showing where a dragged column would land.\n *\n * Lives INSIDE the `<th>`, absolutely positioned on one of its edges — a `<tr>`\n * may only contain `<th>`/`<td>`, so there is nowhere between two header cells\n * to put it. Being absolute also means mounting one cannot shift the layout,\n * which is the bug class the row indicator had to be careful about.\n *\n * `useDropIndicator` reports `isHidden` unless this is the active target, so a\n * table merely capable of reordering keeps its exact DOM until a drag starts.\n */\nfunction ColumnDropIndicator({\n columnKey,\n dropPosition,\n dropState,\n}: ColumnDropIndicatorProps) {\n const ref = useRef<HTMLDivElement>(null);\n const { dropIndicatorProps, isHidden, isDropTarget } = useDropIndicator(\n { target: { type: 'item', key: columnKey, dropPosition } },\n dropState,\n ref,\n );\n\n /**\n * Re-register the drop targets when the header's geometry changes.\n *\n * React Aria's `ListDropTargetDelegate` measures every `[data-key]` at the\n * moment a drag starts. A column resized mid-drag — or a scrollbar appearing —\n * leaves those rects stale, and the drop lands in the wrong place. Same trick\n * `TabDropIndicator` uses.\n */\n const [, forceUpdate] = useState(0);\n\n useEffect(() => {\n const row = ref.current?.closest('[data-element=\"HeadRow\"]');\n\n if (!row || typeof ResizeObserver === 'undefined') return;\n\n const observer = new ResizeObserver(() => forceUpdate((n) => n + 1));\n\n observer.observe(row);\n\n return () => observer.disconnect();\n }, []);\n\n if (isHidden) return null;\n\n return (\n <div\n {...dropIndicatorProps}\n ref={ref}\n data-element=\"ColumnDropIndicator\"\n data-position={dropPosition}\n data-drop-target={isDropTarget ? '' : undefined}\n />\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"TableHeaderCell.js","names":["useEffect","useRef","useState","useDraggableItem","useDropIndicator","mergeProps","ReactNode","DraggableCollectionState","DroppableCollectionState","NO_DRAG_SELECTOR","TableHeaderCellProps","columnKey","cellProps","Record","hasAction","isLastDraggable","dragState","dropState","children","HeaderCell","props","$","_c","extra","t0","DraggableHeaderCell","key","dragProps","isDragging","t1","onDragStartCapture","_temp","t2","undefined","t3","t4","t5","t6","t7","event","target","HTMLElement","closest","preventDefault","stopPropagation","TableHeaderCell","ColumnDropIndicatorProps","dropPosition","ColumnDropIndicator","ref","type","dropIndicatorProps","isHidden","isDropTarget","forceUpdate","row","current","ResizeObserver","observer","_temp2","observe","disconnect","Symbol","for","n"],"sources":["../../../../src/components/data/TableBase/TableHeaderCell.tsx"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { useDraggableItem, useDropIndicator } from 'react-aria';\n\nimport { mergeProps } from '../../../utils/react';\n\nimport type { ReactNode } from 'react';\nimport type {\n DraggableCollectionState,\n DroppableCollectionState,\n} from 'react-stately';\n\n/**\n * Controls inside the header that own their own press, and must never start a\n * column drag.\n *\n * Drag-source resolution walks the DOM tree, not the React event path, so\n * `Item`'s `Actions` slot calling `stopPropagation` does nothing here — the\n * `<th>` is still the drag source as far as the browser is concerned. Only\n * `preventDefault` on `dragstart` stops it, which is what the capture handler\n * below does.\n */\nconst NO_DRAG_SELECTOR =\n '[data-element=\"Resizer\"], [data-element=\"Actions\"], a, button, input, select, textarea, [role=\"button\"], [role=\"menuitem\"]';\n\nexport interface TableHeaderCellProps {\n columnKey: string;\n /** Everything the renderer already computed: mods, ARIA, handlers, styles. */\n cellProps: Record<string, any>;\n /** Whether the header itself responds to Enter — i.e. it sorts. */\n hasAction: boolean;\n isLastDraggable: boolean;\n dragState?: DraggableCollectionState;\n dropState?: DroppableCollectionState;\n children: ReactNode;\n}\n\nfunction HeaderCell(\n props: TableHeaderCellProps & { extra?: Record<string, any> },\n) {\n const { cellProps, extra, children } = props;\n\n return (\n <th {...cellProps} {...extra}>\n {children}\n </th>\n );\n}\n\n/**\n * A header cell inside a collection that accepts drags.\n *\n * Split from the plain one so the drag hooks can be called unconditionally —\n * they are hooks, and whether a table reorders its columns is a prop.\n */\nfunction DraggableHeaderCell(props: TableHeaderCellProps) {\n const { columnKey, hasAction, isLastDraggable, dragState, dropState } = props;\n\n const { dragProps } = useDraggableItem(\n // `hasAction` re-gates React Aria's Enter/Space capture behind Alt, so plain\n // Enter still reaches the header's own sort handler instead of starting a\n // keyboard drag session.\n { key: columnKey, hasAction },\n dragState as DraggableCollectionState,\n );\n const isDragging = dragState!.isDragging(columnKey);\n\n return (\n <HeaderCell\n {...props}\n extra={{\n // `dragProps` last for `draggable`, which is a value rather than a\n // handler — `mergeProps` chains handlers but takes the later value. The\n // sort `onClick` survives: `useDraggableItem` only deletes its own.\n ...mergeProps(props.cellProps, dragProps, {\n // Capture, so this runs before React Aria's own `onDragStart` on the\n // same node and can cancel it.\n onDragStartCapture: (event: any) => {\n if ((event.target as HTMLElement)?.closest?.(NO_DRAG_SELECTOR)) {\n event.preventDefault();\n event.stopPropagation();\n }\n },\n }),\n 'data-draggable': '',\n 'data-dragging': isDragging ? '' : undefined,\n }}\n >\n <ColumnDropIndicator\n columnKey={columnKey}\n dropPosition=\"before\"\n dropState={dropState as DroppableCollectionState}\n />\n {props.children}\n {isLastDraggable ? (\n <ColumnDropIndicator\n columnKey={columnKey}\n dropPosition=\"after\"\n dropState={dropState as DroppableCollectionState}\n />\n ) : null}\n </HeaderCell>\n );\n}\n\nexport function TableHeaderCell(props: TableHeaderCellProps) {\n return props.dragState && props.dropState ? (\n <DraggableHeaderCell {...props} />\n ) : (\n <HeaderCell {...props} />\n );\n}\n\ninterface ColumnDropIndicatorProps {\n columnKey: string;\n dropPosition: 'before' | 'after';\n dropState: DroppableCollectionState;\n}\n\n/**\n * The line showing where a dragged column would land.\n *\n * Lives INSIDE the `<th>`, absolutely positioned on one of its edges — a `<tr>`\n * may only contain `<th>`/`<td>`, so there is nowhere between two header cells\n * to put it. Being absolute also means mounting one cannot shift the layout,\n * which is the bug class the row indicator had to be careful about.\n *\n * `useDropIndicator` reports `isHidden` unless this is the active target, so a\n * table merely capable of reordering keeps its exact DOM until a drag starts.\n */\nfunction ColumnDropIndicator({\n columnKey,\n dropPosition,\n dropState,\n}: ColumnDropIndicatorProps) {\n const ref = useRef<HTMLDivElement>(null);\n const { dropIndicatorProps, isHidden, isDropTarget } = useDropIndicator(\n { target: { type: 'item', key: columnKey, dropPosition } },\n dropState,\n ref,\n );\n\n /**\n * Re-register the drop targets when the header's geometry changes.\n *\n * React Aria's `ListDropTargetDelegate` measures every `[data-key]` at the\n * moment a drag starts. A column resized mid-drag — or a scrollbar appearing —\n * leaves those rects stale, and the drop lands in the wrong place. Same trick\n * `TabDropIndicator` uses.\n */\n const [, forceUpdate] = useState(0);\n\n useEffect(() => {\n const row = ref.current?.closest('[data-element=\"HeadRow\"]');\n\n if (!row || typeof ResizeObserver === 'undefined') return;\n\n const observer = new ResizeObserver(() => forceUpdate((n) => n + 1));\n\n observer.observe(row);\n\n return () => observer.disconnect();\n }, []);\n\n if (isHidden) return null;\n\n return (\n <div\n {...dropIndicatorProps}\n ref={ref}\n data-element=\"ColumnDropIndicator\"\n data-position={dropPosition}\n data-drop-target={isDropTarget ? '' : undefined}\n />\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.190.8 | 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 { c } from "react-compiler-runtime";
@@ -84,7 +84,7 @@ function DraggableRow(props) {
84
84
  $[5] = props.rowProps;
85
85
  $[6] = t2;
86
86
  } else t2 = $[6];
87
- const t3 = dragResult.isDragging ? "" : void 0;
87
+ const t3 = dragState.isDragging(rowKey) ? "" : void 0;
88
88
  const t4 = isOnTarget ? "" : void 0;
89
89
  let t5;
90
90
  if ($[7] !== t2 || $[8] !== t3 || $[9] !== t4) {