@cube-dev/ui-kit 0.205.0 → 0.206.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (619) hide show
  1. package/dist/CHANGELOG.md +26 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/Root.js.map +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Button/Button.js +1 -1
  20. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  21. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  22. package/dist/components/actions/ButtonSplit/context.js +1 -1
  23. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  24. package/dist/components/actions/CommandMenu/styled.js +1 -1
  25. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  26. package/dist/components/actions/ItemActionContext.js +1 -1
  27. package/dist/components/actions/ItemActionsWrapper.js +221 -132
  28. package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
  29. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  30. package/dist/components/actions/ItemButton/ItemButton.js.map +1 -1
  31. package/dist/components/actions/Link/Link.js +1 -1
  32. package/dist/components/actions/Menu/Menu.js +1 -1
  33. package/dist/components/actions/Menu/MenuCollectionItem.js +1 -1
  34. package/dist/components/actions/Menu/MenuItem.js +1 -1
  35. package/dist/components/actions/Menu/MenuSection.js +1 -1
  36. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  37. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  38. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  39. package/dist/components/actions/Menu/context.js +1 -1
  40. package/dist/components/actions/Menu/styled.js +1 -1
  41. package/dist/components/actions/actions-run.js +1 -1
  42. package/dist/components/actions/index.js +1 -1
  43. package/dist/components/actions/use-action.js +1 -1
  44. package/dist/components/actions/use-anchored-menu.js +1 -1
  45. package/dist/components/actions/use-context-menu.js +1 -1
  46. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  47. package/dist/components/content/Alert/Alert.js +1 -1
  48. package/dist/components/content/Alert/use-alert.js +1 -1
  49. package/dist/components/content/Avatar/Avatar.js +1 -1
  50. package/dist/components/content/Badge/Badge.js +1 -1
  51. package/dist/components/content/Card/Card.js +1 -1
  52. package/dist/components/content/Content.js +1 -1
  53. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  54. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  55. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  56. package/dist/components/content/Divider/Divider.js +1 -1
  57. package/dist/components/content/Footer.js +1 -1
  58. package/dist/components/content/Header.js +1 -1
  59. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  60. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  61. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  62. package/dist/components/content/Item/Item.d.ts +2 -1
  63. package/dist/components/content/Item/Item.js +1 -1
  64. package/dist/components/content/Item/Item.js.map +1 -1
  65. package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
  66. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  67. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  68. package/dist/components/content/Layout/GridLayout.js +1 -1
  69. package/dist/components/content/Layout/Layout.js +1 -1
  70. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  71. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  72. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  73. package/dist/components/content/Layout/LayoutContent.js +1 -1
  74. package/dist/components/content/Layout/LayoutContext.js +1 -1
  75. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  76. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  77. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  78. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  79. package/dist/components/content/Layout/LayoutPane.js +1 -1
  80. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  81. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  82. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  83. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  84. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  85. package/dist/components/content/Layout/index.js +1 -1
  86. package/dist/components/content/Layout/utils.js +1 -1
  87. package/dist/components/content/Paragraph.js +1 -1
  88. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  89. package/dist/components/content/PrismCode/PrismCode.js +3 -2
  90. package/dist/components/content/PrismCode/PrismCode.js.map +1 -1
  91. package/dist/components/content/PrismCode/prismSetup.js +8 -2
  92. package/dist/components/content/PrismCode/prismSetup.js.map +1 -1
  93. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  94. package/dist/components/content/Result/Result.js +1 -1
  95. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  96. package/dist/components/content/Tag/Tag.js +1 -1
  97. package/dist/components/content/Text.js +1 -1
  98. package/dist/components/content/TextItem/TextItem.d.ts +5 -2
  99. package/dist/components/content/TextItem/TextItem.js +1 -1
  100. package/dist/components/content/TextItem/TextItem.js.map +1 -1
  101. package/dist/components/content/Title.js +1 -1
  102. package/dist/components/content/Tree/Tree.js +1 -1
  103. package/dist/components/content/Tree/TreeNode.js +1 -1
  104. package/dist/components/content/Tree/checked-keys.js +1 -1
  105. package/dist/components/content/Tree/rowId.js +1 -1
  106. package/dist/components/content/Tree/styled.js +1 -1
  107. package/dist/components/content/Tree/tree-index.js +1 -1
  108. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  109. package/dist/components/content/Tree/use-load-data.js +1 -1
  110. package/dist/components/content/highlightText.js +1 -1
  111. package/dist/components/content/use-auto-tooltip.js +114 -72
  112. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  113. package/dist/components/data/DataTable/DataTable.js +1 -1
  114. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  115. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  116. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  117. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  118. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  119. package/dist/components/data/ItemTable/item-table-sections.js +1 -1
  120. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  121. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  122. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  123. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  124. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  125. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  126. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  127. package/dist/components/data/TableBase/RowCollection.js +1 -1
  128. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  129. package/dist/components/data/TableBase/TableRow.js +1 -1
  130. package/dist/components/data/TableBase/TableRowLink.js +1 -1
  131. package/dist/components/data/TableBase/TableView.js +1 -1
  132. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  133. package/dist/components/data/TableBase/column-header.js +1 -1
  134. package/dist/components/data/TableBase/column-menu.js +1 -1
  135. package/dist/components/data/TableBase/column-styles.js +1 -1
  136. package/dist/components/data/TableBase/column-tint.js +1 -1
  137. package/dist/components/data/TableBase/row-menu.js +1 -1
  138. package/dist/components/data/TableBase/styled.js +21 -20
  139. package/dist/components/data/TableBase/styled.js.map +1 -1
  140. package/dist/components/data/TableBase/table-body-sections.js +1 -1
  141. package/dist/components/data/TableBase/table-tree.js +1 -1
  142. package/dist/components/data/TableBase/types.js +1 -1
  143. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  144. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  145. package/dist/components/data/TableBase/use-column-order.js +1 -1
  146. package/dist/components/data/TableBase/use-column-window.js +1 -1
  147. package/dist/components/data/TableBase/use-container-width.js +1 -1
  148. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  149. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  150. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  151. package/dist/components/data/TableBase/use-table-search.js +1 -1
  152. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  153. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  154. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  155. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  156. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
  157. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  158. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  159. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  160. package/dist/components/fields/Checkbox/context.js +1 -1
  161. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  162. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  163. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  164. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  165. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  166. package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
  167. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  168. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  169. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  170. package/dist/components/fields/DatePicker/CalendarPopover.js +1 -1
  171. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  172. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  173. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  174. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  175. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  176. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  177. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  178. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  179. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  180. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  181. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  182. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  183. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  184. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  185. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  186. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  187. package/dist/components/fields/DatePicker/period.js +1 -1
  188. package/dist/components/fields/DatePicker/props.js +1 -1
  189. package/dist/components/fields/DatePicker/utils.js +1 -1
  190. package/dist/components/fields/FileInput/FileInput.js +1 -2
  191. package/dist/components/fields/FileInput/FileInput.js.map +1 -1
  192. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  193. package/dist/components/fields/FilterListBox/styled.js +1 -1
  194. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  195. package/dist/components/fields/FilterPicker/FilterTree.js +1 -1
  196. package/dist/components/fields/Input/Input.js +1 -1
  197. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  198. package/dist/components/fields/ListBox/ListBox.js +1 -1
  199. package/dist/components/fields/ListBox/optionId.js +1 -1
  200. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  201. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  202. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  203. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  204. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  205. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  206. package/dist/components/fields/Picker/Picker.js +1 -1
  207. package/dist/components/fields/RadioGroup/Radio.js +108 -118
  208. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  209. package/dist/components/fields/RadioGroup/RadioGroup.js +10 -12
  210. package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
  211. package/dist/components/fields/RadioGroup/context.js +1 -1
  212. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  213. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  214. package/dist/components/fields/Select/Select.js +1 -1
  215. package/dist/components/fields/Slider/Gradation.js +1 -1
  216. package/dist/components/fields/Slider/HueSlider.js +1 -1
  217. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  218. package/dist/components/fields/Slider/Slider.js +1 -1
  219. package/dist/components/fields/Slider/SliderBase.js +1 -1
  220. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  221. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  222. package/dist/components/fields/Slider/elements.js +1 -1
  223. package/dist/components/fields/Slider/index.js +1 -1
  224. package/dist/components/fields/Switch/Switch.js +1 -1
  225. package/dist/components/fields/TagInput/TagInput.js +1 -1
  226. package/dist/components/fields/TagInput/TagList.js +1 -1
  227. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  228. package/dist/components/fields/TagInput/useTagError.js +1 -1
  229. package/dist/components/fields/TextArea/TextArea.js +1 -1
  230. package/dist/components/fields/TextInput/TextInput.js +1 -1
  231. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  232. package/dist/components/fields/TextInput/displayed-validation.js +1 -1
  233. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  234. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  235. package/dist/components/fields/TriggerActions.js +1 -1
  236. package/dist/components/fields/color/ColorPanel.js +1 -1
  237. package/dist/components/fields/color/channels.js +1 -1
  238. package/dist/components/fields/color/color.js +1 -1
  239. package/dist/components/fields/color/context.js +1 -1
  240. package/dist/components/fields/option-origin-press.js +1 -1
  241. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  242. package/dist/components/form/FieldWrapper/field-description.js +1 -1
  243. package/dist/components/form/Form/Field.js +1 -1
  244. package/dist/components/form/Form/Form.js +1 -1
  245. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  246. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  247. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  248. package/dist/components/form/Form/SubmitError.js +1 -1
  249. package/dist/components/form/Form/backend.js +1 -1
  250. package/dist/components/form/Form/index.js +1 -1
  251. package/dist/components/form/Form/modern/actions.js +1 -1
  252. package/dist/components/form/Form/modern/context.js +1 -1
  253. package/dist/components/form/Form/modern/controller.js +1 -1
  254. package/dist/components/form/Form/modern/field-binding.js +1 -1
  255. package/dist/components/form/Form/modern/field.js +1 -1
  256. package/dist/components/form/Form/modern/react.js +1 -1
  257. package/dist/components/form/Form/modern/store.js +1 -1
  258. package/dist/components/form/Form/modern/validation.js +1 -1
  259. package/dist/components/form/Form/modern/values.js +1 -1
  260. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  261. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  262. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  263. package/dist/components/form/Form/use-field/use-field.js +1 -1
  264. package/dist/components/form/Form/use-form.js +1 -1
  265. package/dist/components/form/Form/validation.js +1 -1
  266. package/dist/components/form/Label.js +1 -1
  267. package/dist/components/form/field-chrome.js +1 -1
  268. package/dist/components/form/field-layout.js +1 -1
  269. package/dist/components/form/legacy-tooltip.js +1 -1
  270. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  271. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  272. package/dist/components/form/validation/use-validation-props.js +1 -1
  273. package/dist/components/form/wrapper.js +1 -1
  274. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  275. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  276. package/dist/components/layout/Flex.js +1 -1
  277. package/dist/components/layout/Flow.js +1 -1
  278. package/dist/components/layout/Grid.js +1 -1
  279. package/dist/components/layout/Panel.js +1 -1
  280. package/dist/components/layout/Prefix.js +1 -1
  281. package/dist/components/layout/ResizablePanel.js +1 -1
  282. package/dist/components/layout/Space.js +1 -1
  283. package/dist/components/layout/Suffix.js +1 -1
  284. package/dist/components/navigation/Pagination/Pagination.js +1 -1
  285. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  286. package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
  287. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  288. package/dist/components/navigation/Tabs/TabButton.js +190 -187
  289. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  290. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  291. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  292. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  293. package/dist/components/navigation/Tabs/Tabs.js +2 -1
  294. package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
  295. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  296. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  297. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  298. package/dist/components/navigation/Tabs/segmented-styles.js +53 -0
  299. package/dist/components/navigation/Tabs/segmented-styles.js.map +1 -0
  300. package/dist/components/navigation/Tabs/styled.js +15 -28
  301. package/dist/components/navigation/Tabs/styled.js.map +1 -1
  302. package/dist/components/navigation/Tabs/types.d.ts +4 -4
  303. package/dist/components/navigation/Tabs/types.js +1 -1
  304. package/dist/components/navigation/Tabs/types.js.map +1 -1
  305. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  306. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  307. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  308. package/dist/components/other/Calendar/Calendar.js +1 -1
  309. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  310. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  311. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  312. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  313. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  314. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  315. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  316. package/dist/components/other/Calendar/styled.js +1 -1
  317. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  318. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  319. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  320. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  321. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  322. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  323. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  324. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  325. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  326. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  327. package/dist/components/overlays/Dialog/context.js +1 -1
  328. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  329. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  330. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  331. package/dist/components/overlays/Dialog/use-dialog-open-sync.js +1 -1
  332. package/dist/components/overlays/Dialog/use-dismiss-confirmation.js +1 -1
  333. package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
  334. package/dist/components/overlays/Modal/Modal.js +1 -1
  335. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  336. package/dist/components/overlays/Modal/Overlay.js +1 -1
  337. package/dist/components/overlays/Modal/Popover.js +1 -1
  338. package/dist/components/overlays/Modal/Tray.js +1 -1
  339. package/dist/components/overlays/Modal/Underlay.js +1 -1
  340. package/dist/components/overlays/Modal/modal-containment.js +1 -1
  341. package/dist/components/overlays/Notifications/Notification.js +1 -1
  342. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  343. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  344. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  345. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  346. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  347. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  348. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  349. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  350. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  351. package/dist/components/overlays/Notifications/index.js +1 -1
  352. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  353. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  354. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  355. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  356. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  357. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  358. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  359. package/dist/components/overlays/Toast/index.js +1 -1
  360. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  361. package/dist/components/overlays/Toast/useToast.js +1 -1
  362. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  363. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  364. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  365. package/dist/components/overlays/Tooltip/context.js +1 -1
  366. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  367. package/dist/components/portal/Portal.js +1 -1
  368. package/dist/components/portal/PortalProvider.js +1 -1
  369. package/dist/components/portal/usePortal.js +1 -1
  370. package/dist/components/shared/DraggableCollection.js +1 -1
  371. package/dist/components/shared/InvalidIcon.js +1 -1
  372. package/dist/components/shared/ValidIcon.js +1 -1
  373. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  374. package/dist/components/status/Spin/Cube.js +2 -2
  375. package/dist/components/status/Spin/Cube.js.map +1 -1
  376. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  377. package/dist/components/status/Spin/Spin.js +1 -1
  378. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  379. package/dist/data/item-themes.js +70 -70
  380. package/dist/data/item-themes.js.map +1 -1
  381. package/dist/data/themes.js +1 -1
  382. package/dist/eslint-plugin/defaults.generated.js +1 -1
  383. package/dist/eslint-plugin/index.js +1 -1
  384. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  385. package/dist/i18n/I18nProvider.js +1 -1
  386. package/dist/i18n/createFormatter.js +1 -1
  387. package/dist/i18n/index.js +1 -1
  388. package/dist/i18n/instance.js +1 -1
  389. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  390. package/dist/i18n/locales/en-US/uikit.js +1 -1
  391. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  392. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  393. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  394. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  395. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  396. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  397. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  398. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  399. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  400. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  401. package/dist/i18n/locales.js +1 -1
  402. package/dist/i18n/namespace.js +1 -1
  403. package/dist/i18n/useFormatter.js +1 -1
  404. package/dist/i18n/useI18n.js +1 -1
  405. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  406. package/dist/icons/AdjustmentsIcon.js +1 -1
  407. package/dist/icons/AiIcon.js +1 -1
  408. package/dist/icons/AreaChartIcon.js +1 -1
  409. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  410. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  411. package/dist/icons/BackwardIcon.js +1 -1
  412. package/dist/icons/BarChartIcon.js +1 -1
  413. package/dist/icons/BellFilledIcon.js +1 -1
  414. package/dist/icons/BellIcon.js +1 -1
  415. package/dist/icons/BooleanIcon.js +1 -1
  416. package/dist/icons/CalendarEditIcon.js +1 -1
  417. package/dist/icons/CalendarIcon.js +1 -1
  418. package/dist/icons/CaretDownIcon.js +1 -1
  419. package/dist/icons/CaretUpIcon.js +1 -1
  420. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  421. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  422. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  423. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  424. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  425. package/dist/icons/ChartBarLineIcon.js +1 -1
  426. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  427. package/dist/icons/ChartBarStackedIcon.js +1 -1
  428. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  429. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  430. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  431. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  432. package/dist/icons/ChartBubbleIcon.js +1 -1
  433. package/dist/icons/ChartDonut2Icon.js +1 -1
  434. package/dist/icons/ChartFunnelIcon.js +1 -1
  435. package/dist/icons/ChartHeatmapIcon.js +1 -1
  436. package/dist/icons/ChartKPIIcon.js +1 -1
  437. package/dist/icons/ChartPie2Icon.js +1 -1
  438. package/dist/icons/ChartScatterIcon.js +1 -1
  439. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  440. package/dist/icons/CheckCircleIcon.js +1 -1
  441. package/dist/icons/CheckIcon.js +1 -1
  442. package/dist/icons/CircleFilledIcon.js +1 -1
  443. package/dist/icons/ClearIcon.js +1 -1
  444. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  445. package/dist/icons/CloseCircleIcon.js +1 -1
  446. package/dist/icons/CloseIcon.js +1 -1
  447. package/dist/icons/CodeIcon.js +1 -1
  448. package/dist/icons/ColumnTotalIcon.js +1 -1
  449. package/dist/icons/CopyIcon.js +1 -1
  450. package/dist/icons/CountIcon.js +1 -1
  451. package/dist/icons/CubeIcon.js +1 -1
  452. package/dist/icons/CubePauseIcon.js +1 -1
  453. package/dist/icons/CubePlayIcon.js +1 -1
  454. package/dist/icons/CurrencyDollarIcon.js +1 -1
  455. package/dist/icons/DangerIcon.js +1 -1
  456. package/dist/icons/DashboardIcon.js +1 -1
  457. package/dist/icons/DatabaseIcon.js +1 -1
  458. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  459. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  460. package/dist/icons/DirectionIcon.js +1 -1
  461. package/dist/icons/DonutIcon.js +1 -1
  462. package/dist/icons/DownIcon.js +1 -1
  463. package/dist/icons/EditIcon.js +1 -1
  464. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  465. package/dist/icons/ExclamationCircleIcon.js +1 -1
  466. package/dist/icons/ExclamationIcon.js +1 -1
  467. package/dist/icons/EyeIcon.js +1 -1
  468. package/dist/icons/EyeInvisibleIcon.js +1 -1
  469. package/dist/icons/FilterIcon.js +1 -1
  470. package/dist/icons/FolderFilledIcon.js +1 -1
  471. package/dist/icons/FolderIcon.js +1 -1
  472. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  473. package/dist/icons/FolderOpenIcon.js +1 -1
  474. package/dist/icons/ForwardIcon.js +1 -1
  475. package/dist/icons/GripVerticalIcon.js +1 -1
  476. package/dist/icons/HierarchyIcon.js +1 -1
  477. package/dist/icons/HierarchyOpenIcon.js +1 -1
  478. package/dist/icons/Icon.js +1 -1
  479. package/dist/icons/InfoCircleIcon.js +1 -1
  480. package/dist/icons/InfoIcon.js +1 -1
  481. package/dist/icons/KeyIcon.js +1 -1
  482. package/dist/icons/LeftIcon.js +1 -1
  483. package/dist/icons/LineChartIcon.js +1 -1
  484. package/dist/icons/LoadingIcon.js +1 -1
  485. package/dist/icons/LockFilledIcon.js +1 -1
  486. package/dist/icons/LockIcon.js +1 -1
  487. package/dist/icons/MoreIcon.js +1 -1
  488. package/dist/icons/NotAllowedIcon.js +1 -1
  489. package/dist/icons/Number123Icon.js +1 -1
  490. package/dist/icons/NumberIcon.js +1 -1
  491. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  492. package/dist/icons/PauseCircleIcon.js +1 -1
  493. package/dist/icons/PauseIcon.js +1 -1
  494. package/dist/icons/PercentageIcon.js +1 -1
  495. package/dist/icons/PieChartIcon.js +1 -1
  496. package/dist/icons/PipetteIcon.js +1 -1
  497. package/dist/icons/PlayCircleIcon.js +1 -1
  498. package/dist/icons/PlayIcon.js +1 -1
  499. package/dist/icons/PlusIcon.js +1 -1
  500. package/dist/icons/ProgressBarIcon.js +1 -1
  501. package/dist/icons/ReloadIcon.js +1 -1
  502. package/dist/icons/ReportIcon.js +1 -1
  503. package/dist/icons/ReturnIcon.js +1 -1
  504. package/dist/icons/RightIcon.js +1 -1
  505. package/dist/icons/RowTotalsIcon.js +1 -1
  506. package/dist/icons/SchemeIcon.js +1 -1
  507. package/dist/icons/SearchIcon.js +1 -1
  508. package/dist/icons/SemanticQueryIcon.js +1 -1
  509. package/dist/icons/SettingsIcon.js +1 -1
  510. package/dist/icons/ShieldFilledIcon.js +1 -1
  511. package/dist/icons/ShieldIcon.js +1 -1
  512. package/dist/icons/SlashIcon.js +1 -1
  513. package/dist/icons/SparklesIcon.js +1 -1
  514. package/dist/icons/SqlIcon.js +1 -1
  515. package/dist/icons/StatsIcon.js +1 -1
  516. package/dist/icons/StopIcon.js +1 -1
  517. package/dist/icons/StringIcon.js +1 -1
  518. package/dist/icons/SubtotalsIcon.js +1 -1
  519. package/dist/icons/SwitchIcon.js +1 -1
  520. package/dist/icons/TableIcon.js +1 -1
  521. package/dist/icons/ThumbsDownIcon.js +1 -1
  522. package/dist/icons/ThumbsUpIcon.js +1 -1
  523. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  524. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  525. package/dist/icons/ThunderboltIcon.js +1 -1
  526. package/dist/icons/TimeIcon.js +1 -1
  527. package/dist/icons/TrashIcon.js +1 -1
  528. package/dist/icons/UnlockIcon.js +1 -1
  529. package/dist/icons/UpIcon.js +1 -1
  530. package/dist/icons/UserGroupIcon.js +1 -1
  531. package/dist/icons/UserIcon.js +1 -1
  532. package/dist/icons/UserLockIcon.js +1 -1
  533. package/dist/icons/ViewIcon.js +1 -1
  534. package/dist/icons/WarningFilledIcon.js +1 -1
  535. package/dist/icons/WarningIcon.js +1 -1
  536. package/dist/icons/wrap-icon.js +1 -1
  537. package/dist/index.js +1 -1
  538. package/dist/probe/canonicalize.js +1 -1
  539. package/dist/probe/css.js +1 -1
  540. package/dist/probe/index.js +1 -1
  541. package/dist/provider.js +1 -1
  542. package/dist/providers/TrackingProvider.js +1 -1
  543. package/dist/providers/navigation-url.js +1 -1
  544. package/dist/providers/navigationAdapter.default.js +1 -1
  545. package/dist/providers/use-navigation.js +1 -1
  546. package/dist/tokens/all-tokens.js +1 -1
  547. package/dist/tokens/base.js +1 -1
  548. package/dist/tokens/color-seed.js +1 -1
  549. package/dist/tokens/color-theme.js +1 -1
  550. package/dist/tokens/colors.js +1 -1
  551. package/dist/tokens/layout.js +1 -1
  552. package/dist/tokens/lazy-styles.js +1 -1
  553. package/dist/tokens/legacy-color.js +1 -1
  554. package/dist/tokens/palette-config.js +1 -1
  555. package/dist/tokens/palette.js +1 -1
  556. package/dist/tokens/resolve.js +1 -1
  557. package/dist/tokens/shadows.js +1 -1
  558. package/dist/tokens/sizes.js +1 -1
  559. package/dist/tokens/spacing.js +1 -1
  560. package/dist/tokens/typography.js +1 -1
  561. package/dist/utils/ResizeSensor.js +1 -1
  562. package/dist/utils/colors.js +1 -1
  563. package/dist/utils/dotize.js +1 -1
  564. package/dist/utils/is-dev-env.js +1 -1
  565. package/dist/utils/modules.js +1 -1
  566. package/dist/utils/promise.js +1 -1
  567. package/dist/utils/raf.js +1 -1
  568. package/dist/utils/random.js +1 -1
  569. package/dist/utils/range.js +1 -1
  570. package/dist/utils/react/RenderCache.js +1 -1
  571. package/dist/utils/react/Slots.js +1 -1
  572. package/dist/utils/react/chain.js +1 -1
  573. package/dist/utils/react/disabledProps.js +1 -1
  574. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  575. package/dist/utils/react/index.js +1 -1
  576. package/dist/utils/react/interactions.js +1 -1
  577. package/dist/utils/react/isTextOnly.js +1 -1
  578. package/dist/utils/react/mapProps.js +1 -1
  579. package/dist/utils/react/mergeProps.js +1 -1
  580. package/dist/utils/react/nullableValue.js +1 -1
  581. package/dist/utils/react/overlayKeyPropagation.js +1 -1
  582. package/dist/utils/react/programmaticFocus.js +1 -1
  583. package/dist/utils/react/resolveIcon.js +1 -1
  584. package/dist/utils/react/sharedStore.js +1 -1
  585. package/dist/utils/react/useBufferedValue.js +1 -1
  586. package/dist/utils/react/useCombinedRefs.js +1 -1
  587. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  588. package/dist/utils/react/useEventBus.js +1 -1
  589. package/dist/utils/react/useId.js +1 -1
  590. package/dist/utils/react/useIsDarwin.js +1 -1
  591. package/dist/utils/react/useKeySymbols.js +1 -1
  592. package/dist/utils/react/useLayoutEffect.js +1 -1
  593. package/dist/utils/react/useLocalStorage.js +1 -1
  594. package/dist/utils/react/useMergeStyles.js +1 -1
  595. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  596. package/dist/utils/react/usePopoverSync.js +1 -1
  597. package/dist/utils/react/useQaProps.js +1 -1
  598. package/dist/utils/react/useScheme.js +7 -5
  599. package/dist/utils/react/useScheme.js.map +1 -1
  600. package/dist/utils/react/useViewportSize.js +1 -1
  601. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  602. package/dist/utils/selection.js +1 -1
  603. package/dist/utils/styles.js +1 -1
  604. package/dist/utils/tree.js +1 -1
  605. package/dist/utils/warnings.js +1 -1
  606. package/dist/version.js +3 -3
  607. package/docs/Theming.md +1 -1
  608. package/docs/Usage.md +26 -0
  609. package/docs/components/content/Item.md +1 -1
  610. package/docs/components/content/TextItem.md +13 -1
  611. package/docs/components/data/ItemTable.md +1 -1
  612. package/docs/components/fields/RadioGroup.md +5 -4
  613. package/docs/components/navigation/Tabs.md +5 -3
  614. package/docs/tasty/ai-agents.md +3 -2
  615. package/docs/tasty/dsl.md +52 -0
  616. package/docs/tasty/styles.md +27 -15
  617. package/package.json +6 -3
  618. package/tasty.config.generated.ts +526 -0
  619. package/tasty.config.ts +73 -427
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | 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";
@@ -40,8 +40,7 @@ function queueOverflowCheck(check) {
40
40
  }
41
41
  /**
42
42
  * Whether the tooltip value asks to detect overflow on its own. What it
43
- * measures is decided separately: overflow detection measures text, so only a
44
- * string label or description takes part.
43
+ * measures is decided separately (`isMeasured`).
45
44
  */
46
45
  function allowsAutoTooltip(tooltip) {
47
46
  if (tooltip === true) return true;
@@ -52,6 +51,37 @@ function allowsAutoTooltip(tooltip) {
52
51
  return false;
53
52
  }
54
53
  /**
54
+ * The tooltip's own title when it still waits for overflow (`{ title, auto:
55
+ * true }`), or `undefined`.
56
+ */
57
+ function getOwnAutoTitle(tooltip) {
58
+ if (typeof tooltip !== "object" || tooltip.auto !== true) return void 0;
59
+ return tooltip.title || void 0;
60
+ }
61
+ /**
62
+ * Whether a label or description takes part in overflow detection.
63
+ *
64
+ * Without a title of its own, the tooltip shows the text that is cut off, so
65
+ * only a string part is measured. With one, it never shows the part, so a part
66
+ * of any kind is measured: an element label, such as a coloured commit hash
67
+ * followed by its message, gets a tooltip that appears only when it is cut off.
68
+ * Only the part's own box is compared, so a child that cuts off its own text
69
+ * inside it does not count.
70
+ */
71
+ function isMeasured(part, ownTitle) {
72
+ return ownTitle ? part != null : typeof part === "string";
73
+ }
74
+ /**
75
+ * What a measured part's re-check is keyed on. Text can change its overflow
76
+ * without resizing the observed box, so a string part is keyed by its text. Any
77
+ * other part is keyed by the tooltip's own title, which callers derive from the
78
+ * same text, rather than by an element that is new on every render.
79
+ */
80
+ function getMeasureKey(part, ownTitle) {
81
+ if (typeof part === "string") return part;
82
+ return typeof ownTitle === "string" ? ownTitle : void 0;
83
+ }
84
+ /**
55
85
  * What the auto tooltip shows: the text that is cut off, and nothing the row
56
86
  * already shows in full. When both parts are, the description goes below the
57
87
  * label as the tooltip's `Description`, styled as secondary text.
@@ -118,7 +148,7 @@ function observeMeasuredNodes(measured, onResize) {
118
148
  if (description) measured.observer.observe(description);
119
149
  }
120
150
  function useAutoTooltip(t0) {
121
- const $ = c(44);
151
+ const $ = c(55);
122
152
  const { tooltip, children, description, labelProps, isDynamicLabel: t1, labelRef: labelRefOption, descriptionRef: descriptionRefOption } = t0;
123
153
  const isDynamicLabel = t1 === void 0 ? false : t1;
124
154
  let t2;
@@ -128,8 +158,9 @@ function useAutoTooltip(t0) {
128
158
  $[1] = t2;
129
159
  } else t2 = $[1];
130
160
  const allowsAuto = t2;
131
- const isLabelMeasured = allowsAuto && typeof children === "string";
132
- const isDescriptionMeasured = allowsAuto && typeof description === "string";
161
+ const ownTitle = getOwnAutoTitle(tooltip);
162
+ const isLabelMeasured = allowsAuto && isMeasured(children, ownTitle);
163
+ const isDescriptionMeasured = allowsAuto && isMeasured(description, ownTitle);
133
164
  const isAutoTooltipEnabled = isLabelMeasured || isDescriptionMeasured;
134
165
  const externalLabelRef = labelProps?.ref;
135
166
  const [truncation, setTruncation] = useState("none");
@@ -155,27 +186,29 @@ function useAutoTooltip(t0) {
155
186
  } else t4 = $[3];
156
187
  const setVerdict = t4;
157
188
  let t5;
158
- if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
189
+ if ($[4] !== setVerdict) {
159
190
  t5 = () => {
160
191
  const { label, description: description_0 } = measuredRef.current;
161
192
  if (!label && !description_0) return;
162
193
  setVerdict(measureTruncation(label, description_0));
163
194
  };
164
- $[4] = t5;
165
- } else t5 = $[4];
195
+ $[4] = setVerdict;
196
+ $[5] = t5;
197
+ } else t5 = $[5];
166
198
  const checkOverflow = t5;
167
199
  let t6;
168
- if ($[5] === Symbol.for("react.memo_cache_sentinel")) {
200
+ if ($[6] !== checkOverflow) {
169
201
  t6 = () => {
170
202
  queueOverflowCheck(checkOverflow);
171
203
  };
172
- $[5] = t6;
173
- } else t6 = $[5];
204
+ $[6] = checkOverflow;
205
+ $[7] = t6;
206
+ } else t6 = $[7];
174
207
  const scheduleOverflowCheck = t6;
175
- const measuredLabel = isLabelMeasured ? children : void 0;
176
- const measuredDescription = isDescriptionMeasured ? description : void 0;
208
+ const measuredLabel = isLabelMeasured ? getMeasureKey(children, ownTitle) : void 0;
209
+ const measuredDescription = isDescriptionMeasured ? getMeasureKey(description, ownTitle) : void 0;
177
210
  let t7;
178
- if ($[6] !== isAutoTooltipEnabled) {
211
+ if ($[8] !== isAutoTooltipEnabled || $[9] !== scheduleOverflowCheck || $[10] !== setVerdict) {
179
212
  t7 = () => {
180
213
  if (isAutoTooltipEnabled) {
181
214
  scheduleOverflowCheck();
@@ -183,11 +216,13 @@ function useAutoTooltip(t0) {
183
216
  }
184
217
  setVerdict("none");
185
218
  };
186
- $[6] = isAutoTooltipEnabled;
187
- $[7] = t7;
188
- } else t7 = $[7];
219
+ $[8] = isAutoTooltipEnabled;
220
+ $[9] = scheduleOverflowCheck;
221
+ $[10] = setVerdict;
222
+ $[11] = t7;
223
+ } else t7 = $[11];
189
224
  let t8;
190
- if ($[8] !== isAutoTooltipEnabled || $[9] !== isDescriptionMeasured || $[10] !== isLabelMeasured || $[11] !== measuredDescription || $[12] !== measuredLabel) {
225
+ if ($[12] !== isAutoTooltipEnabled || $[13] !== isDescriptionMeasured || $[14] !== isLabelMeasured || $[15] !== measuredDescription || $[16] !== measuredLabel || $[17] !== scheduleOverflowCheck || $[18] !== setVerdict) {
191
226
  t8 = [
192
227
  isAutoTooltipEnabled,
193
228
  isLabelMeasured,
@@ -197,16 +232,18 @@ function useAutoTooltip(t0) {
197
232
  scheduleOverflowCheck,
198
233
  setVerdict
199
234
  ];
200
- $[8] = isAutoTooltipEnabled;
201
- $[9] = isDescriptionMeasured;
202
- $[10] = isLabelMeasured;
203
- $[11] = measuredDescription;
204
- $[12] = measuredLabel;
205
- $[13] = t8;
206
- } else t8 = $[13];
235
+ $[12] = isAutoTooltipEnabled;
236
+ $[13] = isDescriptionMeasured;
237
+ $[14] = isLabelMeasured;
238
+ $[15] = measuredDescription;
239
+ $[16] = measuredLabel;
240
+ $[17] = scheduleOverflowCheck;
241
+ $[18] = setVerdict;
242
+ $[19] = t8;
243
+ } else t8 = $[19];
207
244
  useEffect(t7, t8);
208
245
  let t9;
209
- if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
246
+ if ($[20] !== checkOverflow || $[21] !== scheduleOverflowCheck) {
210
247
  t9 = (part, element) => {
211
248
  const measured = measuredRef.current;
212
249
  const previous = measured[part];
@@ -225,48 +262,52 @@ function useAutoTooltip(t0) {
225
262
  if (!element) return;
226
263
  scheduleOverflowCheck();
227
264
  };
228
- $[14] = t9;
229
- } else t9 = $[14];
265
+ $[20] = checkOverflow;
266
+ $[21] = scheduleOverflowCheck;
267
+ $[22] = t9;
268
+ } else t9 = $[22];
230
269
  const attachMeasuredNode = t9;
231
270
  let t10;
232
- if ($[15] !== externalLabelRef || $[16] !== isLabelMeasured || $[17] !== labelRefOption) {
271
+ if ($[23] !== attachMeasuredNode || $[24] !== externalLabelRef || $[25] !== isLabelMeasured || $[26] !== labelRefOption) {
233
272
  t10 = (element_0) => {
234
273
  assignRef(externalLabelRef, element_0);
235
274
  assignRef(labelRefOption, element_0);
236
275
  attachMeasuredNode("label", isLabelMeasured ? element_0 : null);
237
276
  };
238
- $[15] = externalLabelRef;
239
- $[16] = isLabelMeasured;
240
- $[17] = labelRefOption;
241
- $[18] = t10;
242
- } else t10 = $[18];
277
+ $[23] = attachMeasuredNode;
278
+ $[24] = externalLabelRef;
279
+ $[25] = isLabelMeasured;
280
+ $[26] = labelRefOption;
281
+ $[27] = t10;
282
+ } else t10 = $[27];
243
283
  const handleLabelElementRef = t10;
244
284
  let t11;
245
- if ($[19] !== descriptionRefOption || $[20] !== isDescriptionMeasured) {
285
+ if ($[28] !== attachMeasuredNode || $[29] !== descriptionRefOption || $[30] !== isDescriptionMeasured) {
246
286
  t11 = (element_1) => {
247
287
  assignRef(descriptionRefOption, element_1);
248
288
  attachMeasuredNode("description", isDescriptionMeasured ? element_1 : null);
249
289
  };
250
- $[19] = descriptionRefOption;
251
- $[20] = isDescriptionMeasured;
252
- $[21] = t11;
253
- } else t11 = $[21];
290
+ $[28] = attachMeasuredNode;
291
+ $[29] = descriptionRefOption;
292
+ $[30] = isDescriptionMeasured;
293
+ $[31] = t11;
294
+ } else t11 = $[31];
254
295
  const handleDescriptionElementRef = t11;
255
296
  let t12;
256
- if ($[22] !== labelProps) {
297
+ if ($[32] !== labelProps) {
257
298
  t12 = labelProps || {};
258
- $[22] = labelProps;
259
- $[23] = t12;
260
- } else t12 = $[23];
299
+ $[32] = labelProps;
300
+ $[33] = t12;
301
+ } else t12 = $[33];
261
302
  let finalLabelProps;
262
- if ($[24] !== t12) {
303
+ if ($[34] !== t12) {
263
304
  const { ref: _labelPropsRef, ...t13 } = t12;
264
305
  finalLabelProps = t13;
265
- $[24] = t12;
266
- $[25] = finalLabelProps;
267
- } else finalLabelProps = $[25];
306
+ $[34] = t12;
307
+ $[35] = finalLabelProps;
308
+ } else finalLabelProps = $[35];
268
309
  let t13;
269
- if ($[26] !== children || $[27] !== description || $[28] !== isDynamicLabel || $[29] !== labelProps || $[30] !== tooltip || $[31] !== truncation) {
310
+ if ($[36] !== children || $[37] !== description || $[38] !== isDynamicLabel || $[39] !== labelProps || $[40] !== tooltip || $[41] !== truncation) {
270
311
  t13 = resolveTooltip({
271
312
  tooltip,
272
313
  children,
@@ -275,18 +316,18 @@ function useAutoTooltip(t0) {
275
316
  isDynamicLabel,
276
317
  truncation
277
318
  });
278
- $[26] = children;
279
- $[27] = description;
280
- $[28] = isDynamicLabel;
281
- $[29] = labelProps;
282
- $[30] = tooltip;
283
- $[31] = truncation;
284
- $[32] = t13;
285
- } else t13 = $[32];
319
+ $[36] = children;
320
+ $[37] = description;
321
+ $[38] = isDynamicLabel;
322
+ $[39] = labelProps;
323
+ $[40] = tooltip;
324
+ $[41] = truncation;
325
+ $[42] = t13;
326
+ } else t13 = $[42];
286
327
  const resolvedTooltip = t13;
287
328
  const isTooltipActive = !!resolvedTooltip && resolvedTooltip.isDisabled !== true;
288
329
  let t14;
289
- if ($[33] !== resolvedTooltip) {
330
+ if ($[43] !== resolvedTooltip) {
290
331
  t14 = (renderElement, defaultTooltipPlacement) => {
291
332
  if (!resolvedTooltip) return renderElement();
292
333
  return /* @__PURE__ */ jsx(TooltipProvider, {
@@ -295,14 +336,14 @@ function useAutoTooltip(t0) {
295
336
  children: (triggerProps, ref) => renderElement(triggerProps, ref)
296
337
  });
297
338
  };
298
- $[33] = resolvedTooltip;
299
- $[34] = t14;
300
- } else t14 = $[34];
339
+ $[43] = resolvedTooltip;
340
+ $[44] = t14;
341
+ } else t14 = $[44];
301
342
  const renderWithTooltip = t14;
302
343
  const t15 = truncation !== "none";
303
344
  const t16 = !!tooltip;
304
345
  let t17;
305
- if ($[35] !== finalLabelProps || $[36] !== handleDescriptionElementRef || $[37] !== handleLabelElementRef || $[38] !== isAutoTooltipEnabled || $[39] !== isTooltipActive || $[40] !== renderWithTooltip || $[41] !== t15 || $[42] !== t16) {
346
+ if ($[45] !== finalLabelProps || $[46] !== handleDescriptionElementRef || $[47] !== handleLabelElementRef || $[48] !== isAutoTooltipEnabled || $[49] !== isTooltipActive || $[50] !== renderWithTooltip || $[51] !== scheduleOverflowCheck || $[52] !== t15 || $[53] !== t16) {
306
347
  t17 = {
307
348
  labelRef: handleLabelElementRef,
308
349
  descriptionRef: handleDescriptionElementRef,
@@ -314,16 +355,17 @@ function useAutoTooltip(t0) {
314
355
  renderWithTooltip,
315
356
  scheduleOverflowCheck
316
357
  };
317
- $[35] = finalLabelProps;
318
- $[36] = handleDescriptionElementRef;
319
- $[37] = handleLabelElementRef;
320
- $[38] = isAutoTooltipEnabled;
321
- $[39] = isTooltipActive;
322
- $[40] = renderWithTooltip;
323
- $[41] = t15;
324
- $[42] = t16;
325
- $[43] = t17;
326
- } else t17 = $[43];
358
+ $[45] = finalLabelProps;
359
+ $[46] = handleDescriptionElementRef;
360
+ $[47] = handleLabelElementRef;
361
+ $[48] = isAutoTooltipEnabled;
362
+ $[49] = isTooltipActive;
363
+ $[50] = renderWithTooltip;
364
+ $[51] = scheduleOverflowCheck;
365
+ $[52] = t15;
366
+ $[53] = t16;
367
+ $[54] = t17;
368
+ } else t17 = $[54];
327
369
  return t17;
328
370
  }
329
371
  //#endregion
@@ -1 +1 @@
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","overflowChecksByNode","WeakMap","refreshAutoTooltipsWithin","node","Array","from","querySelectorAll","get","forEach","queueOverflowCheck","runOverflowChecks","checks","clear","check","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","measuredLabel","measuredDescription","t7","t8","t9","part","previous","delete","checks_0","set","attachMeasuredNode","t10","element_0","handleLabelElementRef","t11","element_1","handleDescriptionElementRef","t12","finalLabelProps","_labelPropsRef","t13","resolvedTooltip","isTooltipActive","t14","renderElement","defaultTooltipPlacement","triggerProps","renderWithTooltip","t15","t16","t17","hasTooltip","_c"],"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>();\nconst overflowChecksByNode = new WeakMap<HTMLElement, Set<() => void>>();\n\n/** Refresh a retained tooltip tree after inherited appearance changes. */\nexport function refreshAutoTooltipsWithin(element: HTMLElement) {\n for (const node of [\n element,\n ...Array.from(element.querySelectorAll<HTMLElement>('*')),\n ]) {\n overflowChecksByNode.get(node)?.forEach(queueOverflowCheck);\n }\n}\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 // A nullish `title` falls back to the auto title, so it goes after the spread.\n return {\n ...tooltipProps,\n title: tooltipProps.title ?? autoTitle,\n isDisabled: tooltipProps.isDisabled ?? (!isOverflowed && isDynamicLabel),\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 // Text can change its overflow without changing the observed box size.\n const measuredLabel = isLabelMeasured ? children : undefined;\n const measuredDescription = isDescriptionMeasured ? description : undefined;\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 measuredLabel,\n measuredDescription,\n scheduleOverflowCheck,\n setVerdict,\n ]);\n\n // The callback refs own the observer: React hands them `null` when a node\n // goes away. Effect cleanup must not discard nodes still owned by refs:\n // reconnecting effects would otherwise strand queued measurements. Let\n // attachment/detachment update observer ownership symmetrically.\n const attachMeasuredNode = useCallback(\n (part: 'label' | 'description', element: HTMLElement | null) => {\n const measured = measuredRef.current;\n\n const previous = measured[part];\n measured[part] = element;\n\n if (\n previous &&\n previous !== measured.label &&\n previous !== measured.description\n ) {\n const checks = overflowChecksByNode.get(previous);\n checks?.delete(checkOverflow);\n if (!checks?.size) overflowChecksByNode.delete(previous);\n }\n if (element) {\n const checks = overflowChecksByNode.get(element) ?? new Set();\n checks.add(checkOverflow);\n overflowChecksByNode.set(element, checks);\n }\n\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 scheduleOverflowCheck,\n };\n}\n"],"mappings":";;;;;;;AA8CA,SAASyB,UAAUC,KAAcC,SAA6B;CAC5D,IAAI,OAAOD,QAAQ,YACjBA,IAAIC,OAAO;MACN,IAAID,KACT,IAAyCE,UAAUD;AAEvD;;AAGA,MAAME,wCAAwB,IAAIC,IAAgB;AAClD,MAAMC,uCAAuB,IAAIC,QAAsC;;AAGvE,SAAgBC,0BAA0BN,SAAsB;CAC9D,KAAK,MAAMO,QAAQ,CACjBP,SACA,GAAGQ,MAAMC,KAAKT,QAAQU,iBAA8B,GAAG,CAAC,CAAC,GAEzDN,qBAAqBO,IAAIJ,IAAI,CAAC,EAAEK,QAAQC,kBAAkB;AAE9D;;;;;;;;;;;;AAaA,SAASC,oBAAoB;CAC3B,MAAMC,SAASP,MAAMC,KAAKP,qBAAqB;CAE/CA,sBAAsBc,MAAM;CAE5BlC,gBAAgB;EACd,KAAK,MAAMmC,SAASF,QAAQE,MAAM;CACpC,CAAC;AACH;AAEA,SAASJ,mBAAmBI,OAAmB;CAC7C,IAAI,CAACf,sBAAsBgB,MAAMC,eAAeL,iBAAiB;CAEjEZ,sBAAsBkB,IAAIH,KAAK;AACjC;;;;;;AAOA,SAASI,kBAAkB/B,SAAgD;CAEzE,IAAIA,YAAY,MAAM,OAAO;CAC7B,IAAI,OAAOA,YAAY,UAAU;EAE/B,IAAIA,QAAQgC,OACV,OAAOhC,QAAQF,SAAS;EAI1B,OAAOE,QAAQF,SAASmC,KAAAA,IAAY,CAAC,CAACjC,QAAQF,OAAO;CACvD;CACA,OAAO;AACT;;;;;;AAUA,SAASqC,aACPlC,UACAC,aACAkC,YACW;CACX,IAAIA,eAAe,eAAe,OAAOlC;CACzC,IAAIkC,eAAe,QACjB,OACE,qBAAA,YAAA,EAAA,UAAA,CACGnC,UACD,oBAAC,OAAD;EAAK,gBAAa;EAAeC,UAAAA;CAAiB,CAAA,CACpD,EAAA,CAAA;CAMJ,OAAOD;AACT;;;;;AAMA,SAASoC,eAAe,EACtBrC,SACAC,UACAC,aACAC,YACAC,gBACAgC,cAGoD;CACpD,IAAI,CAACpC,SAAS,OAAO;CAGrB,IAAI,OAAOA,YAAY,UACrB,OAAO,EAAEgC,OAAOhC,QAAQ;CAG1B,MAAMsC,eAAeF,eAAe;CACpC,MAAMG,YAAYJ,aAAalC,UAAUC,aAAakC,UAAU;CAChE,MAAMI,iBACJ,CAAC,EAAED,aAAapC,gBAAgBmC,gBAAgBlC;CAGlD,IAAIJ,YAAY,MAAM;EACpB,IAAI,CAACwC,gBAAgB,OAAO;EAE5B,OAAO;GACLR,OAAOO;GACPE,YAAY,CAACH,gBAAgBlC;EAC/B;CACF;CAGA,MAAM,EAAEN,MAAM,GAAG4C,iBAAiB1C;CAGlC,IAAI0C,aAAaV,SAASlC,SAAS,MACjC,OAAO4C;CAIT,IAAI,CAACF,gBAAgB,OAAO;CAG5B,OAAO;EACL,GAAGE;EACHV,OAAOU,aAAaV,SAASO;EAC7BE,YAAYC,aAAaD,eAAe,CAACH,gBAAgBlC;CAC3D;AACF;;AAGA,SAASuC,YAAYjC,SAAsC;CACzD,OAAO,CAAC,CAACA,WAAWA,QAAQkC,cAAclC,QAAQmC;AACpD;AAEA,SAASC,kBACPC,OACA7C,aACY;CACZ,MAAM8C,aAAaL,YAAYI,KAAK;CACpC,MAAME,mBAAmBN,YAAYzC,WAAW;CAEhD,IAAI8C,YAAY,OAAOC,mBAAmB,SAAS;CAEnD,OAAOA,mBAAmB,gBAAgB;AAC5C;;;;;;;;AAeA,SAASI,qBAAqBC,UAAyBC,UAAsB;CAC3E,IAAI;EACFD,SAASH,UAAUK,WAAW;CAChC,QAAQ,CACN;CAGF,MAAM,EAAET,OAAO7C,gBAAgBoD;CAE/B,IAAI,CAACP,SAAS,CAAC7C,aAAa;CAE5BoD,SAASH,aAAa,IAAIC,qBAAqBG,SAAS,CAAC;CAEzD,IAAIR,OAAOO,SAASH,SAASM,QAAQV,KAAK;CAC1C,IAAI7C,aAAaoD,SAASH,SAASM,QAAQvD,WAAW;AACxD;AAEA,SAAOwD,eAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAwB,MAAA,EAAA7D,SAAAC,UAAAC,aAAAC,YAAAC,gBAAA0D,IAAAzD,UAAA0D,gBAAAxD,gBAAAyD,yBAAAL;CAK7B,MAAAvD,iBAAA0D,OAAA7B,KAAAA,IAAA,QAAA6B;CAAsB,IAAAG;CAAA,IAAAL,EAAA,OAAA5D,SAAA;EAIHiE,KAAAlC,kBAAkB/B,OAAO;EAAC4D,EAAA,KAAA5D;EAAA4D,EAAA,KAAAK;CAAA,OAAAA,KAAAL,EAAA;CAA7C,MAAAM,aAAmBD;CACnB,MAAAE,kBAAwBD,cAAc,OAAOjE,aAAa;CAC1D,MAAAmE,wBAA8BF,cAAc,OAAOhE,gBAAgB;CACnE,MAAAmE,uBAA6BF,mBAAAC;CAG7B,MAAAE,mBAA0BnE,YAAuBM;CACjD,MAAA,CAAA2B,YAAAmC,iBAAoCjF,SAAqB,MAAM;CAAE,IAAAkF;CAAA,IAAAZ,EAAA,OAAAa,OAAAC,IAAA,2BAAA,GAAA;EAEvBF,KAAA;GAAAzB,OACjC;GAAI7C,aACE;GAAIiD,UACP;EACZ;EAACS,EAAA,KAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAJD,MAAAe,cAAoBtF,OAAsBmF,EAIzC;CAED,MAAAI,aAAmBvF,OAAmB,MAAM;CAAE,IAAAwF;CAAA,IAAAjB,EAAA,OAAAa,OAAAC,IAAA,2BAAA,GAAA;EAUfG,MAAAC,UAAA;GAC7B,IAAIF,WAAUjE,YAAamE,OAAK;GAEhCF,WAAUjE,UAAWmE;GACrBP,cAAcO,KAAK;EAAC;EACrBlB,EAAA,KAAAiB;CAAA,OAAAA,KAAAjB,EAAA;CALD,MAAAmB,aAAmBF;CAKZ,IAAAG;CAAA,IAAApB,EAAA,OAAAa,OAAAC,IAAA,2BAAA,GAAA;EAE2BM,WAAA;GAChC,MAAA,EAAAjC,OAAA7C,aAAA+E,kBAA+BN,YAAWhE;GAE1C,IAAI,CAACoC,SAAD,CAAW7C,eAAW;GAE1B6E,WAAWjC,kBAAkBC,OAAO7C,aAAW,CAAC;EAAC;EAClD0D,EAAA,KAAAoB;CAAA,OAAAA,KAAApB,EAAA;CAND,MAAAsB,gBAAsBF;CAML,IAAAG;CAAA,IAAAvB,EAAA,OAAAa,OAAAC,IAAA,2BAAA,GAAA;EAmByBS,WAAA;GACxC5D,mBAAmB2D,aAAa;EAAC;EAClCtB,EAAA,KAAAuB;CAAA,OAAAA,KAAAvB,EAAA;CAFD,MAAAwB,wBAA8BD;CAK9B,MAAAE,gBAAsBlB,kBAAAlE,WAAAgC,KAAAA;CACtB,MAAAqD,sBAA4BlB,wBAAAlE,cAAA+B,KAAAA;CAAgD,IAAAsD;CAAA,IAAA3B,EAAA,OAAAS,sBAAA;EAElEkB,WAAA;GACR,IAAIlB,sBAAoB;IAWtBe,sBAAsB;IAAC;GAAA;GAazBL,WAAW,MAAM;EAAC;EACnBnB,EAAA,KAAAS;EAAAT,EAAA,KAAA2B;CAAA,OAAAA,KAAA3B,EAAA;CAAA,IAAA4B;CAAA,IAAA5B,EAAA,OAAAS,wBAAAT,EAAA,OAAAQ,yBAAAR,EAAA,QAAAO,mBAAAP,EAAA,QAAA0B,uBAAA1B,EAAA,QAAAyB,eAAA;EAAEG,KAAA;GACDnB;GACAF;GACAC;GACAiB;GACAC;GACAF;GACAL;EAAU;EACXnB,EAAA,KAAAS;EAAAT,EAAA,KAAAQ;EAAAR,EAAA,MAAAO;EAAAP,EAAA,MAAA0B;EAAA1B,EAAA,MAAAyB;EAAAzB,EAAA,MAAA4B;CAAA,OAAAA,KAAA5B,EAAA;CAlCDxE,UAAUmG,IA0BPC,EAQF;CAAC,IAAAC;CAAA,IAAA7B,EAAA,QAAAa,OAAAC,IAAA,2BAAA,GAAA;EAOAe,MAAAC,MAAAhF,YAAA;GACE,MAAA4C,WAAiBqB,YAAWhE;GAE5B,MAAAgF,WAAiBrC,SAASoC;GAC1BpC,SAASoC,QAAQhF;GAEjB,IACEiF,YACAA,aAAarC,SAAQP,SACrB4C,aAAarC,SAAQpD,aAAY;IAEjC,MAAAuB,SAAeX,qBAAoBO,IAAKsE,QAAQ;IAChDlE,QAAMmE,OAASV,aAAa;IAC5B,IAAI,CAACzD,QAAMG,MAAQd,qBAAoB8E,OAAQD,QAAQ;GAAE;GAE3D,IAAIjF,SAAO;IACT,MAAAmF,WAAe/E,qBAAoBO,IAAKX,OAAoB,qBAA7C,IAAyCG,IAAI;IAC5DY,SAAMK,IAAKoD,aAAa;IACxBpE,qBAAoBgF,IAAKpF,SAASe,QAAM;GAAC;GAI3C4B,qBAAqBC,UAAU4B,aAAa;GAQ5C,IAAI,CAACxE,SAAO;GAKZ0E,sBAAsB;EAAC;EACxBxB,EAAA,MAAA6B;CAAA,OAAAA,KAAA7B,EAAA;CArCH,MAAAmC,qBAA2BN;CAuCzB,IAAAO;CAAA,IAAApC,EAAA,QAAAU,oBAAAV,EAAA,QAAAO,mBAAAP,EAAA,QAAAG,gBAAA;EAGAiC,OAAAC,cAAA;GAEEzF,UAAU8D,kBAAkB5D,SAAO;GACnCF,UAAUuD,gBAAgBrD,SAAO;GAEjCqF,mBAAmB,SAAS5B,kBAAA8B,YAAA,IAAgC;EAAC;EAC9DrC,EAAA,MAAAU;EAAAV,EAAA,MAAAO;EAAAP,EAAA,MAAAG;EAAAH,EAAA,MAAAoC;CAAA,OAAAA,MAAApC,EAAA;CAPH,MAAAsC,wBAA8BF;CAS5B,IAAAG;CAAA,IAAAvC,EAAA,QAAAI,wBAAAJ,EAAA,QAAAQ,uBAAA;EAGA+B,OAAAC,cAAA;GACE5F,UAAUwD,sBAAsBtD,SAAO;GAEvCqF,mBAAmB,eAAe3B,wBAAAgC,YAAA,IAAsC;EAAC;EAC1ExC,EAAA,MAAAI;EAAAJ,EAAA,MAAAQ;EAAAR,EAAA,MAAAuC;CAAA,OAAAA,MAAAvC,EAAA;CALH,MAAAyC,8BAAoCF;CAOlC,IAAAG;CAAA,IAAA1C,EAAA,QAAAzD,YAAA;EAEkDmG,MAAAnG,cAAA,CAAe;EAACyD,EAAA,MAAAzD;EAAAyD,EAAA,MAAA0C;CAAA,OAAAA,MAAA1C,EAAA;CAAA,IAAA2C;CAAA,IAAA3C,EAAA,QAAA0C,KAAA;EAApE,MAAA,EAAA7F,KAAA+F,gBAAA,GAAAC,QAAoDH;EAApDC,kBAAAE;EAAqE7C,EAAA,MAAA0C;EAAA1C,EAAA,MAAA2C;CAAA,OAAAA,kBAAA3C,EAAA;CAAA,IAAA6C;CAAA,IAAA7C,EAAA,QAAA3D,YAAA2D,EAAA,QAAA1D,eAAA0D,EAAA,QAAAxD,kBAAAwD,EAAA,QAAAzD,cAAAyD,EAAA,QAAA5D,WAAA4D,EAAA,QAAAxB,YAAA;EAI7CqE,MAAApE,eAAe;GAAArC;GAAAC;GAAAC;GAAAC;GAAAC;GAAAgC;EAOvC,CAAC;EAACwB,EAAA,MAAA3D;EAAA2D,EAAA,MAAA1D;EAAA0D,EAAA,MAAAxD;EAAAwD,EAAA,MAAAzD;EAAAyD,EAAA,MAAA5D;EAAA4D,EAAA,MAAAxB;EAAAwB,EAAA,MAAA6C;CAAA,OAAAA,MAAA7C,EAAA;CAPF,MAAA8C,kBAAwBD;CAUxB,MAAAE,kBACE,CAAC,CAACD,mBAAmBA,gBAAejE,eAAgB;CAAK,IAAAmE;CAAA,IAAAhD,EAAA,QAAA8C,iBAAA;EAEjCE,OAAAC,eAAAC,4BAAA;GAOxB,IAAI,CAACJ,iBAAe,OAASG,cAAc;GAAE,OAG3C,oBAAC,iBAAD;IAA4BC,WAAAA;IAAuB,GAAMJ;IACtDK,WAAAA,cAAAtG,QAAuBoG,cAAcE,cAActG,GAAG;GADzC,CAAA;EAEE;EAErBmD,EAAA,MAAA8C;EAAA9C,EAAA,MAAAgD;CAAA,OAAAA,MAAAhD,EAAA;CAdD,MAAAoD,oBAA0BJ;CAoBV,MAAAK,MAAA7E,eAAe;CAEjB,MAAA8E,MAAA,CAAC,CAAClH;CAAO,IAAAmH;CAAA,IAAAvD,EAAA,QAAA2C,mBAAA3C,EAAA,QAAAyC,+BAAAzC,EAAA,QAAAsC,yBAAAtC,EAAA,QAAAS,wBAAAT,EAAA,QAAA+C,mBAAA/C,EAAA,QAAAoD,qBAAApD,EAAA,QAAAqD,OAAArD,EAAA,QAAAsD,KAAA;EANhBC,MAAA;GAAA9G,UACK6F;GAAqB3F,gBACf8F;GAA2BlG,YAC/BoG;GAAejE,cACb2E;GAAqB5C;GAAA+C,YAEvBF;GAASP;GAAAK;GAAA5B;EAIvB;EAACxB,EAAA,MAAA2C;EAAA3C,EAAA,MAAAyC;EAAAzC,EAAA,MAAAsC;EAAAtC,EAAA,MAAAS;EAAAT,EAAA,MAAA+C;EAAA/C,EAAA,MAAAoD;EAAApD,EAAA,MAAAqD;EAAArD,EAAA,MAAAsD;EAAAtD,EAAA,MAAAuD;CAAA,OAAAA,MAAAvD,EAAA;CAAA,OAVMuD;AAUN"}
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","overflowChecksByNode","WeakMap","refreshAutoTooltipsWithin","node","Array","from","querySelectorAll","get","forEach","queueOverflowCheck","runOverflowChecks","checks","clear","check","size","queueMicrotask","add","allowsAutoTooltip","title","undefined","getOwnAutoTitle","isMeasured","part","ownTitle","getMeasureKey","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","measuredLabel","measuredDescription","t7","t8","t9","previous","delete","checks_0","set","attachMeasuredNode","t10","element_0","handleLabelElementRef","t11","element_1","handleDescriptionElementRef","t12","finalLabelProps","_labelPropsRef","t13","resolvedTooltip","isTooltipActive","t14","renderElement","defaultTooltipPlacement","triggerProps","renderWithTooltip","t15","t16","t17","hasTooltip","_c"],"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. With `{ title, auto: true }`\n * any description is measured, and the tooltip shows that title.\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>();\nconst overflowChecksByNode = new WeakMap<HTMLElement, Set<() => void>>();\n\n/** Refresh a retained tooltip tree after inherited appearance changes. */\nexport function refreshAutoTooltipsWithin(element: HTMLElement) {\n for (const node of [\n element,\n ...Array.from(element.querySelectorAll<HTMLElement>('*')),\n ]) {\n overflowChecksByNode.get(node)?.forEach(queueOverflowCheck);\n }\n}\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 (`isMeasured`).\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/**\n * The tooltip's own title when it still waits for overflow (`{ title, auto:\n * true }`), or `undefined`.\n */\nfunction getOwnAutoTitle(tooltip: AutoTooltipValue | undefined): ReactNode {\n if (typeof tooltip !== 'object' || tooltip.auto !== true) return undefined;\n\n return tooltip.title || undefined;\n}\n\n/**\n * Whether a label or description takes part in overflow detection.\n *\n * Without a title of its own, the tooltip shows the text that is cut off, so\n * only a string part is measured. With one, it never shows the part, so a part\n * of any kind is measured: an element label, such as a coloured commit hash\n * followed by its message, gets a tooltip that appears only when it is cut off.\n * Only the part's own box is compared, so a child that cuts off its own text\n * inside it does not count.\n */\nfunction isMeasured(part: ReactNode, ownTitle: ReactNode): boolean {\n return ownTitle ? part != null : typeof part === 'string';\n}\n\n/**\n * What a measured part's re-check is keyed on. Text can change its overflow\n * without resizing the observed box, so a string part is keyed by its text. Any\n * other part is keyed by the tooltip's own title, which callers derive from the\n * same text, rather than by an element that is new on every render.\n */\nfunction getMeasureKey(part: ReactNode, ownTitle: ReactNode) {\n if (typeof part === 'string') return part;\n\n return typeof ownTitle === 'string' ? ownTitle : undefined;\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 // A nullish `title` falls back to the auto title, so it goes after the spread.\n return {\n ...tooltipProps,\n title: tooltipProps.title ?? autoTitle,\n isDisabled: tooltipProps.isDisabled ?? (!isOverflowed && isDynamicLabel),\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 ownTitle = getOwnAutoTitle(tooltip);\n const isLabelMeasured = allowsAuto && isMeasured(children, ownTitle);\n const isDescriptionMeasured = allowsAuto && isMeasured(description, ownTitle);\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 // Text can change its overflow without changing the observed box size.\n const measuredLabel = isLabelMeasured\n ? getMeasureKey(children, ownTitle)\n : undefined;\n const measuredDescription = isDescriptionMeasured\n ? getMeasureKey(description, ownTitle)\n : undefined;\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 measuredLabel,\n measuredDescription,\n scheduleOverflowCheck,\n setVerdict,\n ]);\n\n // The callback refs own the observer: React hands them `null` when a node\n // goes away. Effect cleanup must not discard nodes still owned by refs:\n // reconnecting effects would otherwise strand queued measurements. Let\n // attachment/detachment update observer ownership symmetrically.\n const attachMeasuredNode = useCallback(\n (part: 'label' | 'description', element: HTMLElement | null) => {\n const measured = measuredRef.current;\n\n const previous = measured[part];\n measured[part] = element;\n\n if (\n previous &&\n previous !== measured.label &&\n previous !== measured.description\n ) {\n const checks = overflowChecksByNode.get(previous);\n checks?.delete(checkOverflow);\n if (!checks?.size) overflowChecksByNode.delete(previous);\n }\n if (element) {\n const checks = overflowChecksByNode.get(element) ?? new Set();\n checks.add(checkOverflow);\n overflowChecksByNode.set(element, checks);\n }\n\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 scheduleOverflowCheck,\n };\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | 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.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  import { extractStyles, mergeStyleLayers } from "../../../utils/styles.js";
3
3
  import { useCombinedRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { useWarn } from "../../../_internal/hooks/use-warn.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  import { Text as _Text } from "../../content/Text.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  import { Text as _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.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  import { Pagination as _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.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | 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.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  //#region src/components/data/ItemTable/item-table-sections.ts
3
3
  /** Stable partition after sorting preserves each section's own sort order. */
4
4
  function buildItemTableSections(data, sortedRows, sections, getSectionKey, getRowKey) {
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | 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.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | 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.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | 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.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | 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.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | 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.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | 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.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  //#region src/components/data/TableBase/RowCollection.ts
3
3
  /**
4
4
  * A `Collection<Node<T>>` over a plain row array.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | 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";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
3
3
  import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  import { useTracking } from "../../../providers/TrackingProvider.js";
3
3
  import { useNavigation } from "../../../providers/use-navigation.js";
4
4
  import { parseTo, performClickHandler } from "../../actions/use-action.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  import { useSlotProps } from "../../../utils/react/Slots.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | 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 } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  import { ArrowNarrowDownIcon } from "../../../icons/ArrowNarrowDownIcon.js";
3
3
  import { ArrowNarrowUpIcon } from "../../../icons/ArrowNarrowUpIcon.js";
4
4
  import { TableHeaderItem } from "./styled.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  import { Menu as __Menu } from "../../actions/Menu/Menu.js";
3
3
  import { normalizeMenuAction } from "./row-menu.js";
4
4
  import { Children, cloneElement, isValidElement } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  import { computeStyles, resolveRecipes } from "@tenphi/tasty";
3
3
  //#region src/components/data/TableBase/column-styles.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  import { getPaletteConfig } from "../../../tokens/palette-config.js";
3
3
  import { hashString } from "../../../tokens/color-theme.js";
4
4
  //#region src/components/data/TableBase/column-tint.ts
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.205.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.206.1 | Cube Dev Team */
2
2
  import { Children, Fragment, isValidElement } from "react";
3
3
  //#region src/components/data/TableBase/row-menu.ts
4
4
  /**