@cube-dev/ui-kit 0.192.0 → 0.192.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 (590) hide show
  1. package/dist/CHANGELOG.md +8 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +1 -1
  13. package/dist/components/GridProvider.js +1 -1
  14. package/dist/components/HiddenInput.js +1 -1
  15. package/dist/components/Root.js +1 -1
  16. package/dist/components/actions/Action/Action.js +1 -1
  17. package/dist/components/actions/Banner/Banner.js +1 -1
  18. package/dist/components/actions/Button/Button.js +1 -1
  19. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  20. package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
  21. package/dist/components/actions/ButtonSplit/context.js +1 -1
  22. package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
  23. package/dist/components/actions/CommandMenu/styled.js +1 -1
  24. package/dist/components/actions/ItemAction/ItemAction.js +1 -1
  25. package/dist/components/actions/ItemActionContext.js +1 -1
  26. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  27. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  28. package/dist/components/actions/Link/Link.js +1 -1
  29. package/dist/components/actions/Menu/Menu.js +1 -1
  30. package/dist/components/actions/Menu/MenuItem.js +1 -1
  31. package/dist/components/actions/Menu/MenuSection.js +1 -1
  32. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  33. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  34. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  35. package/dist/components/actions/Menu/context.js +1 -1
  36. package/dist/components/actions/Menu/styled.js +1 -1
  37. package/dist/components/actions/actions-run.js +1 -1
  38. package/dist/components/actions/index.js +1 -1
  39. package/dist/components/actions/use-action.js +1 -1
  40. package/dist/components/actions/use-anchored-menu.js +1 -1
  41. package/dist/components/actions/use-context-menu.js +1 -1
  42. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  43. package/dist/components/content/Alert/Alert.js +1 -1
  44. package/dist/components/content/Alert/use-alert.js +1 -1
  45. package/dist/components/content/Avatar/Avatar.js +1 -1
  46. package/dist/components/content/Badge/Badge.js +1 -1
  47. package/dist/components/content/Card/Card.js +1 -1
  48. package/dist/components/content/Content.js +1 -1
  49. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  50. package/dist/components/content/CopySnippet/CopySnippet.d.ts +14 -14
  51. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  52. package/dist/components/content/Disclosure/Disclosure.js +1 -1
  53. package/dist/components/content/Divider.js +1 -1
  54. package/dist/components/content/Footer.js +1 -1
  55. package/dist/components/content/Header.js +1 -1
  56. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  57. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  58. package/dist/components/content/InlineInput/InlineInput.js +1 -1
  59. package/dist/components/content/Item/Item.js +1 -1
  60. package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
  61. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  62. package/dist/components/content/Layout/GridLayout.js +1 -1
  63. package/dist/components/content/Layout/Layout.js +2 -1
  64. package/dist/components/content/Layout/Layout.js.map +1 -1
  65. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  66. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  67. package/dist/components/content/Layout/LayoutContainer.js +1 -1
  68. package/dist/components/content/Layout/LayoutContent.js +1 -1
  69. package/dist/components/content/Layout/LayoutContext.js +1 -1
  70. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  71. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  72. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  73. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  74. package/dist/components/content/Layout/LayoutPane.js +1 -1
  75. package/dist/components/content/Layout/LayoutPanel.js +36 -16
  76. package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
  77. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  78. package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
  79. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  80. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  81. package/dist/components/content/Layout/index.js +1 -1
  82. package/dist/components/content/Layout/utils.js +1 -1
  83. package/dist/components/content/Paragraph.js +1 -1
  84. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  85. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  86. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  87. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  88. package/dist/components/content/Result/Result.js +1 -1
  89. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  90. package/dist/components/content/Tag/Tag.js +1 -1
  91. package/dist/components/content/Text.d.ts +14 -14
  92. package/dist/components/content/Text.js +1 -1
  93. package/dist/components/content/TextItem/TextItem.js +1 -1
  94. package/dist/components/content/Title.js +1 -1
  95. package/dist/components/content/Tree/Tree.js +1 -1
  96. package/dist/components/content/Tree/TreeNode.js +1 -1
  97. package/dist/components/content/Tree/styled.js +1 -1
  98. package/dist/components/content/Tree/tree-index.js +1 -1
  99. package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
  100. package/dist/components/content/Tree/use-load-data.js +1 -1
  101. package/dist/components/content/highlightText.js +1 -1
  102. package/dist/components/content/use-auto-tooltip.js +74 -52
  103. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  104. package/dist/components/data/DataTable/DataTable.js +1 -1
  105. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  106. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  107. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  108. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  109. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  110. package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
  111. package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
  112. package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
  113. package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
  114. package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
  115. package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
  116. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  117. package/dist/components/data/TableBase/RowCollection.js +1 -1
  118. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  119. package/dist/components/data/TableBase/TableRow.js +1 -1
  120. package/dist/components/data/TableBase/TableView.js +50 -11
  121. package/dist/components/data/TableBase/TableView.js.map +1 -1
  122. package/dist/components/data/TableBase/TreeGridTable.js +1 -1
  123. package/dist/components/data/TableBase/column-header.js +1 -1
  124. package/dist/components/data/TableBase/column-menu.js +1 -1
  125. package/dist/components/data/TableBase/column-styles.js +1 -1
  126. package/dist/components/data/TableBase/column-tint.js +1 -1
  127. package/dist/components/data/TableBase/row-menu.js +1 -1
  128. package/dist/components/data/TableBase/styled.js +1 -1
  129. package/dist/components/data/TableBase/table-tree.js +1 -1
  130. package/dist/components/data/TableBase/types.js +1 -1
  131. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  132. package/dist/components/data/TableBase/use-column-menu.js +1 -1
  133. package/dist/components/data/TableBase/use-column-order.js +1 -1
  134. package/dist/components/data/TableBase/use-container-width.js +1 -1
  135. package/dist/components/data/TableBase/use-row-move-animation.js +7 -3
  136. package/dist/components/data/TableBase/use-row-move-animation.js.map +1 -1
  137. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  138. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  139. package/dist/components/data/TableBase/use-table-search.js +1 -1
  140. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  141. package/dist/components/data/TableBase/use-table-sort.js +1 -1
  142. package/dist/components/data/TableBase/use-table-sorts.js +1 -1
  143. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  144. package/dist/components/data/TableBase/use-table-tooltip-refresh.js +68 -0
  145. package/dist/components/data/TableBase/use-table-tooltip-refresh.js.map +1 -0
  146. package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
  147. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  148. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  149. package/dist/components/fields/Checkbox/context.js +1 -1
  150. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  151. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  152. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  153. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  154. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  155. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  156. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  157. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  158. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  159. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  160. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  161. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  162. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  163. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  164. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  165. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  166. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  167. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  168. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  169. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  170. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  171. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  172. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  173. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  174. package/dist/components/fields/DatePicker/period.js +1 -1
  175. package/dist/components/fields/DatePicker/props.js +1 -1
  176. package/dist/components/fields/DatePicker/utils.js +1 -1
  177. package/dist/components/fields/FileInput/FileInput.js +1 -1
  178. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  179. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  180. package/dist/components/fields/Input/Input.js +1 -1
  181. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  182. package/dist/components/fields/ListBox/ListBox.js +1 -1
  183. package/dist/components/fields/ListBox/optionId.js +1 -1
  184. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  185. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  186. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
  187. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  188. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  189. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  190. package/dist/components/fields/Picker/Picker.js +1 -1
  191. package/dist/components/fields/RadioGroup/Radio.d.ts +12 -12
  192. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  193. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  194. package/dist/components/fields/RadioGroup/context.js +1 -1
  195. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  196. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  197. package/dist/components/fields/Select/Select.js +1 -1
  198. package/dist/components/fields/Slider/Gradation.js +1 -1
  199. package/dist/components/fields/Slider/HueSlider.js +1 -1
  200. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  201. package/dist/components/fields/Slider/Slider.js +1 -1
  202. package/dist/components/fields/Slider/SliderBase.js +1 -1
  203. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  204. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  205. package/dist/components/fields/Slider/elements.js +1 -1
  206. package/dist/components/fields/Slider/index.js +1 -1
  207. package/dist/components/fields/Switch/Switch.js +1 -1
  208. package/dist/components/fields/TagInput/TagInput.js +1 -1
  209. package/dist/components/fields/TagInput/TagList.js +1 -1
  210. package/dist/components/fields/TagInput/useActiveOption.js +1 -1
  211. package/dist/components/fields/TagInput/useTagError.js +1 -1
  212. package/dist/components/fields/TextArea/TextArea.js +1 -1
  213. package/dist/components/fields/TextInput/TextInput.js +1 -1
  214. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  215. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  216. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  217. package/dist/components/fields/TriggerActions.js +1 -1
  218. package/dist/components/fields/color/ColorPanel.js +1 -1
  219. package/dist/components/fields/color/channels.js +1 -1
  220. package/dist/components/fields/color/color.js +1 -1
  221. package/dist/components/fields/color/context.js +1 -1
  222. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  223. package/dist/components/form/Form/Field.js +1 -1
  224. package/dist/components/form/Form/Form.js +1 -1
  225. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  226. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  227. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  228. package/dist/components/form/Form/SubmitError.js +1 -1
  229. package/dist/components/form/Form/backend.js +1 -1
  230. package/dist/components/form/Form/index.js +1 -1
  231. package/dist/components/form/Form/modern/actions.js +1 -1
  232. package/dist/components/form/Form/modern/context.js +1 -1
  233. package/dist/components/form/Form/modern/controller.js +1 -1
  234. package/dist/components/form/Form/modern/field-binding.js +1 -1
  235. package/dist/components/form/Form/modern/field.js +1 -1
  236. package/dist/components/form/Form/modern/react.js +1 -1
  237. package/dist/components/form/Form/modern/store.js +1 -1
  238. package/dist/components/form/Form/modern/validation.js +1 -1
  239. package/dist/components/form/Form/modern/values.js +1 -1
  240. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  241. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  242. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  243. package/dist/components/form/Form/use-field/use-field.js +1 -1
  244. package/dist/components/form/Form/use-form.js +1 -1
  245. package/dist/components/form/Form/validation.js +1 -1
  246. package/dist/components/form/Label.js +1 -1
  247. package/dist/components/form/legacy-tooltip.js +1 -1
  248. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  249. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  250. package/dist/components/form/validation/use-validation-props.js +1 -1
  251. package/dist/components/form/wrapper.js +1 -1
  252. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  253. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  254. package/dist/components/layout/Board/Board.js +1 -1
  255. package/dist/components/layout/Board/BoardProvider.js +1 -1
  256. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  257. package/dist/components/layout/Board/Widget.js +1 -1
  258. package/dist/components/layout/Board/WidgetHost.js +1 -1
  259. package/dist/components/layout/Board/board-context.js +1 -1
  260. package/dist/components/layout/Board/board-store.js +1 -1
  261. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  262. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  263. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  264. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  265. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  266. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  267. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  268. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  269. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  270. package/dist/components/layout/Board/index.js +1 -1
  271. package/dist/components/layout/Board/responsive-utils.js +1 -1
  272. package/dist/components/layout/Board/use-board-layout.js +1 -1
  273. package/dist/components/layout/Board/use-board-registry.js +1 -1
  274. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  275. package/dist/components/layout/Board/use-board-selection.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/DraggableTabList.js +1 -1
  287. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  288. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  289. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  290. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  291. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  292. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  293. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  294. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  295. package/dist/components/navigation/Tabs/styled.js +1 -1
  296. package/dist/components/navigation/Tabs/types.js +1 -1
  297. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  298. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  299. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  300. package/dist/components/other/Calendar/Calendar.js +1 -1
  301. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  302. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  303. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  304. package/dist/components/other/Calendar/CalendarPanel.js +1 -1
  305. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  306. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  307. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  308. package/dist/components/other/Calendar/styled.js +1 -1
  309. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  310. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  311. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  312. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  313. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  314. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  315. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  316. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  317. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  318. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  319. package/dist/components/overlays/Dialog/context.js +1 -1
  320. package/dist/components/overlays/Dialog/default-button-text.js +1 -1
  321. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  322. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  323. package/dist/components/overlays/Modal/Modal.js +1 -1
  324. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  325. package/dist/components/overlays/Modal/Overlay.js +1 -1
  326. package/dist/components/overlays/Modal/Popover.js +1 -1
  327. package/dist/components/overlays/Modal/Tray.js +1 -1
  328. package/dist/components/overlays/Modal/Underlay.js +1 -1
  329. package/dist/components/overlays/Notifications/Notification.js +1 -1
  330. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  331. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  332. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  333. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  334. package/dist/components/overlays/Notifications/OverlayContainer.js +1 -1
  335. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  336. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  337. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  338. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  339. package/dist/components/overlays/Notifications/index.js +1 -1
  340. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  341. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  342. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  343. package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
  344. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  345. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  346. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  347. package/dist/components/overlays/Toast/index.js +1 -1
  348. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  349. package/dist/components/overlays/Toast/useToast.js +1 -1
  350. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  351. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  352. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  353. package/dist/components/overlays/Tooltip/context.js +1 -1
  354. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  355. package/dist/components/portal/Portal.js +1 -1
  356. package/dist/components/portal/PortalProvider.js +1 -1
  357. package/dist/components/portal/usePortal.js +1 -1
  358. package/dist/components/shared/DraggableCollection.js +1 -1
  359. package/dist/components/shared/InvalidIcon.js +1 -1
  360. package/dist/components/shared/ValidIcon.js +1 -1
  361. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  362. package/dist/components/status/Spin/Cube.js +1 -1
  363. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  364. package/dist/components/status/Spin/Spin.js +1 -1
  365. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  366. package/dist/data/item-themes.js +1 -1
  367. package/dist/data/themes.js +1 -1
  368. package/dist/eslint-plugin/defaults.generated.js +1 -1
  369. package/dist/eslint-plugin/index.js +1 -1
  370. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  371. package/dist/i18n/I18nProvider.js +1 -1
  372. package/dist/i18n/createFormatter.js +1 -1
  373. package/dist/i18n/index.js +1 -1
  374. package/dist/i18n/instance.js +1 -1
  375. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  376. package/dist/i18n/locales/en-US/uikit.js +1 -1
  377. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  378. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  379. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  380. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  381. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  382. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  383. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  384. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  385. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  386. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  387. package/dist/i18n/locales.js +1 -1
  388. package/dist/i18n/useFormatter.js +1 -1
  389. package/dist/i18n/useI18n.js +1 -1
  390. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  391. package/dist/icons/AdjustmentsIcon.js +1 -1
  392. package/dist/icons/AiIcon.js +1 -1
  393. package/dist/icons/AreaChartIcon.js +1 -1
  394. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  395. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  396. package/dist/icons/BackwardIcon.js +1 -1
  397. package/dist/icons/BarChartIcon.js +1 -1
  398. package/dist/icons/BellFilledIcon.js +1 -1
  399. package/dist/icons/BellIcon.js +1 -1
  400. package/dist/icons/BooleanIcon.js +1 -1
  401. package/dist/icons/CalendarEditIcon.js +1 -1
  402. package/dist/icons/CalendarIcon.js +1 -1
  403. package/dist/icons/CaretDownIcon.js +1 -1
  404. package/dist/icons/CaretUpIcon.js +1 -1
  405. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  406. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  407. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  408. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  409. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  410. package/dist/icons/ChartBarLineIcon.js +1 -1
  411. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  412. package/dist/icons/ChartBarStackedIcon.js +1 -1
  413. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  414. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  415. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  416. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  417. package/dist/icons/ChartBubbleIcon.js +1 -1
  418. package/dist/icons/ChartDonut2Icon.js +1 -1
  419. package/dist/icons/ChartFunnelIcon.js +1 -1
  420. package/dist/icons/ChartHeatmapIcon.js +1 -1
  421. package/dist/icons/ChartKPIIcon.js +1 -1
  422. package/dist/icons/ChartPie2Icon.js +1 -1
  423. package/dist/icons/ChartScatterIcon.js +1 -1
  424. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  425. package/dist/icons/CheckCircleIcon.js +1 -1
  426. package/dist/icons/CheckIcon.js +1 -1
  427. package/dist/icons/CircleFilledIcon.js +1 -1
  428. package/dist/icons/ClearIcon.js +1 -1
  429. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  430. package/dist/icons/CloseCircleIcon.js +1 -1
  431. package/dist/icons/CloseIcon.js +1 -1
  432. package/dist/icons/CodeIcon.js +1 -1
  433. package/dist/icons/ColumnTotalIcon.js +1 -1
  434. package/dist/icons/CopyIcon.js +1 -1
  435. package/dist/icons/CountIcon.js +1 -1
  436. package/dist/icons/CubeIcon.js +1 -1
  437. package/dist/icons/CubePauseIcon.js +1 -1
  438. package/dist/icons/CubePlayIcon.js +1 -1
  439. package/dist/icons/CurrencyDollarIcon.js +1 -1
  440. package/dist/icons/DangerIcon.js +1 -1
  441. package/dist/icons/DashboardIcon.js +1 -1
  442. package/dist/icons/DatabaseIcon.js +1 -1
  443. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  444. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  445. package/dist/icons/DirectionIcon.js +1 -1
  446. package/dist/icons/DonutIcon.js +1 -1
  447. package/dist/icons/DownIcon.js +1 -1
  448. package/dist/icons/EditIcon.js +1 -1
  449. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  450. package/dist/icons/ExclamationCircleIcon.js +1 -1
  451. package/dist/icons/ExclamationIcon.js +1 -1
  452. package/dist/icons/EyeIcon.js +1 -1
  453. package/dist/icons/EyeInvisibleIcon.js +1 -1
  454. package/dist/icons/FilterIcon.js +1 -1
  455. package/dist/icons/FolderFilledIcon.js +1 -1
  456. package/dist/icons/FolderIcon.js +1 -1
  457. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  458. package/dist/icons/FolderOpenIcon.js +1 -1
  459. package/dist/icons/ForwardIcon.js +1 -1
  460. package/dist/icons/GripVerticalIcon.js +1 -1
  461. package/dist/icons/HierarchyIcon.js +1 -1
  462. package/dist/icons/HierarchyOpenIcon.js +1 -1
  463. package/dist/icons/Icon.js +1 -1
  464. package/dist/icons/InfoCircleIcon.js +1 -1
  465. package/dist/icons/InfoIcon.js +1 -1
  466. package/dist/icons/KeyIcon.js +1 -1
  467. package/dist/icons/LeftIcon.js +1 -1
  468. package/dist/icons/LineChartIcon.js +1 -1
  469. package/dist/icons/LoadingIcon.js +1 -1
  470. package/dist/icons/LockFilledIcon.js +1 -1
  471. package/dist/icons/LockIcon.js +1 -1
  472. package/dist/icons/MoreIcon.js +1 -1
  473. package/dist/icons/NotAllowedIcon.js +1 -1
  474. package/dist/icons/Number123Icon.js +1 -1
  475. package/dist/icons/NumberIcon.js +1 -1
  476. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  477. package/dist/icons/PauseCircleIcon.js +1 -1
  478. package/dist/icons/PauseIcon.js +1 -1
  479. package/dist/icons/PercentageIcon.js +1 -1
  480. package/dist/icons/PieChartIcon.js +1 -1
  481. package/dist/icons/PipetteIcon.js +1 -1
  482. package/dist/icons/PlayCircleIcon.js +1 -1
  483. package/dist/icons/PlayIcon.js +1 -1
  484. package/dist/icons/PlusIcon.js +1 -1
  485. package/dist/icons/ProgressBarIcon.js +1 -1
  486. package/dist/icons/ReloadIcon.js +1 -1
  487. package/dist/icons/ReportIcon.js +1 -1
  488. package/dist/icons/ReturnIcon.js +1 -1
  489. package/dist/icons/RightIcon.js +1 -1
  490. package/dist/icons/RowTotalsIcon.js +1 -1
  491. package/dist/icons/SchemeIcon.js +1 -1
  492. package/dist/icons/SearchIcon.js +1 -1
  493. package/dist/icons/SemanticQueryIcon.js +1 -1
  494. package/dist/icons/SettingsIcon.js +1 -1
  495. package/dist/icons/ShieldFilledIcon.js +1 -1
  496. package/dist/icons/ShieldIcon.js +1 -1
  497. package/dist/icons/SlashIcon.js +1 -1
  498. package/dist/icons/SparklesIcon.js +1 -1
  499. package/dist/icons/SqlIcon.js +1 -1
  500. package/dist/icons/StatsIcon.js +1 -1
  501. package/dist/icons/StopIcon.js +1 -1
  502. package/dist/icons/StringIcon.js +1 -1
  503. package/dist/icons/SubtotalsIcon.js +1 -1
  504. package/dist/icons/SwitchIcon.js +1 -1
  505. package/dist/icons/TableIcon.js +1 -1
  506. package/dist/icons/ThumbsDownIcon.js +1 -1
  507. package/dist/icons/ThumbsUpIcon.js +1 -1
  508. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  509. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  510. package/dist/icons/ThunderboltIcon.js +1 -1
  511. package/dist/icons/TimeIcon.js +1 -1
  512. package/dist/icons/TrashIcon.js +1 -1
  513. package/dist/icons/UnlockIcon.js +1 -1
  514. package/dist/icons/UpIcon.js +1 -1
  515. package/dist/icons/UserGroupIcon.js +1 -1
  516. package/dist/icons/UserIcon.js +1 -1
  517. package/dist/icons/UserLockIcon.js +1 -1
  518. package/dist/icons/ViewIcon.js +1 -1
  519. package/dist/icons/WarningFilledIcon.js +1 -1
  520. package/dist/icons/WarningIcon.js +1 -1
  521. package/dist/icons/wrap-icon.js +1 -1
  522. package/dist/index.js +1 -1
  523. package/dist/probe/canonicalize.js +1 -1
  524. package/dist/probe/css.js +1 -1
  525. package/dist/probe/index.js +1 -1
  526. package/dist/provider.js +1 -1
  527. package/dist/providers/TrackingProvider.js +1 -1
  528. package/dist/providers/navigationAdapter.default.js +1 -1
  529. package/dist/tokens/all-tokens.js +1 -1
  530. package/dist/tokens/base.js +1 -1
  531. package/dist/tokens/color-seed.js +1 -1
  532. package/dist/tokens/color-theme.js +1 -1
  533. package/dist/tokens/colors.js +1 -1
  534. package/dist/tokens/layout.js +1 -1
  535. package/dist/tokens/lazy-styles.js +1 -1
  536. package/dist/tokens/legacy-color.js +1 -1
  537. package/dist/tokens/palette-config.js +1 -1
  538. package/dist/tokens/palette.js +1 -1
  539. package/dist/tokens/resolve.js +1 -1
  540. package/dist/tokens/shadows.js +1 -1
  541. package/dist/tokens/sizes.js +1 -1
  542. package/dist/tokens/spacing.js +1 -1
  543. package/dist/tokens/typography.js +1 -1
  544. package/dist/utils/ResizeSensor.js +1 -1
  545. package/dist/utils/colors.js +1 -1
  546. package/dist/utils/dotize.js +1 -1
  547. package/dist/utils/is-dev-env.js +1 -1
  548. package/dist/utils/modules.js +1 -1
  549. package/dist/utils/promise.js +1 -1
  550. package/dist/utils/raf.js +1 -1
  551. package/dist/utils/random.js +1 -1
  552. package/dist/utils/range.js +1 -1
  553. package/dist/utils/react/RenderCache.js +1 -1
  554. package/dist/utils/react/Slots.js +1 -1
  555. package/dist/utils/react/chain.js +1 -1
  556. package/dist/utils/react/disabledProps.js +1 -1
  557. package/dist/utils/react/escapePropagation.js +1 -1
  558. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  559. package/dist/utils/react/index.js +1 -1
  560. package/dist/utils/react/interactions.js +1 -1
  561. package/dist/utils/react/isTextOnly.js +1 -1
  562. package/dist/utils/react/mapProps.js +1 -1
  563. package/dist/utils/react/mergeProps.js +1 -1
  564. package/dist/utils/react/nullableValue.js +1 -1
  565. package/dist/utils/react/programmaticFocus.js +1 -1
  566. package/dist/utils/react/resolveIcon.js +1 -1
  567. package/dist/utils/react/sharedStore.js +1 -1
  568. package/dist/utils/react/useBufferedValue.js +1 -1
  569. package/dist/utils/react/useCombinedRefs.js +1 -1
  570. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  571. package/dist/utils/react/useEventBus.js +1 -1
  572. package/dist/utils/react/useId.js +1 -1
  573. package/dist/utils/react/useIsDarwin.js +1 -1
  574. package/dist/utils/react/useKeySymbols.js +1 -1
  575. package/dist/utils/react/useLayoutEffect.js +1 -1
  576. package/dist/utils/react/useLocalStorage.js +1 -1
  577. package/dist/utils/react/useMergeStyles.js +1 -1
  578. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  579. package/dist/utils/react/usePopoverSync.js +1 -1
  580. package/dist/utils/react/useQaProps.js +1 -1
  581. package/dist/utils/react/useScheme.js +1 -1
  582. package/dist/utils/react/useViewportSize.js +1 -1
  583. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  584. package/dist/utils/selection.js +1 -1
  585. package/dist/utils/styles.js +1 -1
  586. package/dist/utils/tree.js +1 -1
  587. package/dist/utils/warnings.js +1 -1
  588. package/dist/version.js +2 -2
  589. package/docs/components/content/Layout.md +2 -0
  590. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.1 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { useState } from "react";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.1 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { isDevEnvOrTest } from "../../../utils/is-dev-env.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.1 | Cube Dev Team */
2
2
  import { _Text } from "./Text.js";
3
3
  import { jsx } from "react/jsx-runtime";
4
4
 
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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";
@@ -12,6 +12,11 @@ function assignRef(ref, element) {
12
12
  }
13
13
  /** Overflow checks queued for the end of the current task, from every label. */
14
14
  const pendingOverflowChecks = /* @__PURE__ */ new Set();
15
+ const overflowChecksByNode = /* @__PURE__ */ new WeakMap();
16
+ /** Refresh a retained tooltip tree after inherited appearance changes. */
17
+ function refreshAutoTooltipsWithin(element) {
18
+ for (const node of [element, ...Array.from(element.querySelectorAll("*"))]) overflowChecksByNode.get(node)?.forEach(queueOverflowCheck);
19
+ }
15
20
  /**
16
21
  * Runs every queued check in one pass and commits the verdicts that changed in
17
22
  * one synchronous render.
@@ -114,7 +119,7 @@ function observeMeasuredNodes(measured, onResize) {
114
119
  if (description) measured.observer.observe(description);
115
120
  }
116
121
  function useAutoTooltip(t0) {
117
- const $ = c(42);
122
+ const $ = c(44);
118
123
  const { tooltip, children, description, labelProps, isDynamicLabel: t1, labelRef: labelRefOption, descriptionRef: descriptionRefOption } = t0;
119
124
  const isDynamicLabel = t1 === void 0 ? false : t1;
120
125
  let t2;
@@ -168,6 +173,8 @@ function useAutoTooltip(t0) {
168
173
  $[5] = t6;
169
174
  } else t6 = $[5];
170
175
  const scheduleOverflowCheck = t6;
176
+ const measuredLabel = isLabelMeasured ? children : void 0;
177
+ const measuredDescription = isDescriptionMeasured ? description : void 0;
171
178
  let t7;
172
179
  if ($[6] !== isAutoTooltipEnabled) {
173
180
  t7 = () => {
@@ -181,71 +188,86 @@ function useAutoTooltip(t0) {
181
188
  $[7] = t7;
182
189
  } else t7 = $[7];
183
190
  let t8;
184
- if ($[8] !== isAutoTooltipEnabled || $[9] !== isDescriptionMeasured || $[10] !== isLabelMeasured) {
191
+ if ($[8] !== isAutoTooltipEnabled || $[9] !== isDescriptionMeasured || $[10] !== isLabelMeasured || $[11] !== measuredDescription || $[12] !== measuredLabel) {
185
192
  t8 = [
186
193
  isAutoTooltipEnabled,
187
194
  isLabelMeasured,
188
195
  isDescriptionMeasured,
196
+ measuredLabel,
197
+ measuredDescription,
189
198
  scheduleOverflowCheck,
190
199
  setVerdict
191
200
  ];
192
201
  $[8] = isAutoTooltipEnabled;
193
202
  $[9] = isDescriptionMeasured;
194
203
  $[10] = isLabelMeasured;
195
- $[11] = t8;
196
- } else t8 = $[11];
204
+ $[11] = measuredDescription;
205
+ $[12] = measuredLabel;
206
+ $[13] = t8;
207
+ } else t8 = $[13];
197
208
  useEffect(t7, t8);
198
209
  let t9;
199
- if ($[12] === Symbol.for("react.memo_cache_sentinel")) {
210
+ if ($[14] === Symbol.for("react.memo_cache_sentinel")) {
200
211
  t9 = (part, element) => {
201
212
  const measured = measuredRef.current;
213
+ const previous = measured[part];
202
214
  measured[part] = element;
215
+ if (previous && previous !== measured.label && previous !== measured.description) {
216
+ const checks = overflowChecksByNode.get(previous);
217
+ checks?.delete(checkOverflow);
218
+ if (!checks?.size) overflowChecksByNode.delete(previous);
219
+ }
220
+ if (element) {
221
+ const checks_0 = overflowChecksByNode.get(element) ?? /* @__PURE__ */ new Set();
222
+ checks_0.add(checkOverflow);
223
+ overflowChecksByNode.set(element, checks_0);
224
+ }
203
225
  observeMeasuredNodes(measured, checkOverflow);
204
226
  if (!element) return;
205
227
  scheduleOverflowCheck();
206
228
  };
207
- $[12] = t9;
208
- } else t9 = $[12];
229
+ $[14] = t9;
230
+ } else t9 = $[14];
209
231
  const attachMeasuredNode = t9;
210
232
  let t10;
211
- if ($[13] !== externalLabelRef || $[14] !== isLabelMeasured || $[15] !== labelRefOption) {
233
+ if ($[15] !== externalLabelRef || $[16] !== isLabelMeasured || $[17] !== labelRefOption) {
212
234
  t10 = (element_0) => {
213
235
  assignRef(externalLabelRef, element_0);
214
236
  assignRef(labelRefOption, element_0);
215
237
  attachMeasuredNode("label", isLabelMeasured ? element_0 : null);
216
238
  };
217
- $[13] = externalLabelRef;
218
- $[14] = isLabelMeasured;
219
- $[15] = labelRefOption;
220
- $[16] = t10;
221
- } else t10 = $[16];
239
+ $[15] = externalLabelRef;
240
+ $[16] = isLabelMeasured;
241
+ $[17] = labelRefOption;
242
+ $[18] = t10;
243
+ } else t10 = $[18];
222
244
  const handleLabelElementRef = t10;
223
245
  let t11;
224
- if ($[17] !== descriptionRefOption || $[18] !== isDescriptionMeasured) {
246
+ if ($[19] !== descriptionRefOption || $[20] !== isDescriptionMeasured) {
225
247
  t11 = (element_1) => {
226
248
  assignRef(descriptionRefOption, element_1);
227
249
  attachMeasuredNode("description", isDescriptionMeasured ? element_1 : null);
228
250
  };
229
- $[17] = descriptionRefOption;
230
- $[18] = isDescriptionMeasured;
231
- $[19] = t11;
232
- } else t11 = $[19];
251
+ $[19] = descriptionRefOption;
252
+ $[20] = isDescriptionMeasured;
253
+ $[21] = t11;
254
+ } else t11 = $[21];
233
255
  const handleDescriptionElementRef = t11;
234
256
  let t12;
235
- if ($[20] !== labelProps) {
257
+ if ($[22] !== labelProps) {
236
258
  t12 = labelProps || {};
237
- $[20] = labelProps;
238
- $[21] = t12;
239
- } else t12 = $[21];
259
+ $[22] = labelProps;
260
+ $[23] = t12;
261
+ } else t12 = $[23];
240
262
  let finalLabelProps;
241
- if ($[22] !== t12) {
263
+ if ($[24] !== t12) {
242
264
  const { ref: _labelPropsRef, ...t13 } = t12;
243
265
  finalLabelProps = t13;
244
- $[22] = t12;
245
- $[23] = finalLabelProps;
246
- } else finalLabelProps = $[23];
266
+ $[24] = t12;
267
+ $[25] = finalLabelProps;
268
+ } else finalLabelProps = $[25];
247
269
  let t13;
248
- if ($[24] !== children || $[25] !== description || $[26] !== isDynamicLabel || $[27] !== labelProps || $[28] !== tooltip || $[29] !== truncation) {
270
+ if ($[26] !== children || $[27] !== description || $[28] !== isDynamicLabel || $[29] !== labelProps || $[30] !== tooltip || $[31] !== truncation) {
249
271
  t13 = resolveTooltip({
250
272
  tooltip,
251
273
  children,
@@ -254,18 +276,18 @@ function useAutoTooltip(t0) {
254
276
  isDynamicLabel,
255
277
  truncation
256
278
  });
257
- $[24] = children;
258
- $[25] = description;
259
- $[26] = isDynamicLabel;
260
- $[27] = labelProps;
261
- $[28] = tooltip;
262
- $[29] = truncation;
263
- $[30] = t13;
264
- } else t13 = $[30];
279
+ $[26] = children;
280
+ $[27] = description;
281
+ $[28] = isDynamicLabel;
282
+ $[29] = labelProps;
283
+ $[30] = tooltip;
284
+ $[31] = truncation;
285
+ $[32] = t13;
286
+ } else t13 = $[32];
265
287
  const resolvedTooltip = t13;
266
288
  const isTooltipActive = !!resolvedTooltip && resolvedTooltip.isDisabled !== true;
267
289
  let t14;
268
- if ($[31] !== resolvedTooltip) {
290
+ if ($[33] !== resolvedTooltip) {
269
291
  t14 = (renderElement, defaultTooltipPlacement) => {
270
292
  if (!resolvedTooltip) return renderElement();
271
293
  return /* @__PURE__ */ jsx(TooltipProvider, {
@@ -274,14 +296,14 @@ function useAutoTooltip(t0) {
274
296
  children: (triggerProps, ref) => renderElement(triggerProps, ref)
275
297
  });
276
298
  };
277
- $[31] = resolvedTooltip;
278
- $[32] = t14;
279
- } else t14 = $[32];
299
+ $[33] = resolvedTooltip;
300
+ $[34] = t14;
301
+ } else t14 = $[34];
280
302
  const renderWithTooltip = t14;
281
303
  const t15 = truncation !== "none";
282
304
  const t16 = !!tooltip;
283
305
  let t17;
284
- if ($[33] !== finalLabelProps || $[34] !== handleDescriptionElementRef || $[35] !== handleLabelElementRef || $[36] !== isAutoTooltipEnabled || $[37] !== isTooltipActive || $[38] !== renderWithTooltip || $[39] !== t15 || $[40] !== t16) {
306
+ if ($[35] !== finalLabelProps || $[36] !== handleDescriptionElementRef || $[37] !== handleLabelElementRef || $[38] !== isAutoTooltipEnabled || $[39] !== isTooltipActive || $[40] !== renderWithTooltip || $[41] !== t15 || $[42] !== t16) {
285
307
  t17 = {
286
308
  labelRef: handleLabelElementRef,
287
309
  descriptionRef: handleDescriptionElementRef,
@@ -292,19 +314,19 @@ function useAutoTooltip(t0) {
292
314
  isTooltipActive,
293
315
  renderWithTooltip
294
316
  };
295
- $[33] = finalLabelProps;
296
- $[34] = handleDescriptionElementRef;
297
- $[35] = handleLabelElementRef;
298
- $[36] = isAutoTooltipEnabled;
299
- $[37] = isTooltipActive;
300
- $[38] = renderWithTooltip;
301
- $[39] = t15;
302
- $[40] = t16;
303
- $[41] = t17;
304
- } else t17 = $[41];
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];
305
327
  return t17;
306
328
  }
307
329
 
308
330
  //#endregion
309
- export { useAutoTooltip };
331
+ export { refreshAutoTooltipsWithin, useAutoTooltip };
310
332
  //# sourceMappingURL=use-auto-tooltip.js.map
@@ -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","runOverflowChecks","checks","Array","from","clear","check","queueOverflowCheck","size","queueMicrotask","add","allowsAutoTooltip","title","undefined","Truncation","getAutoTitle","truncation","resolveTooltip","isOverflowed","autoTitle","hasAutoContent","isDisabled","tooltipProps","isTruncated","scrollWidth","clientWidth","measureTruncation","label","isLabelCut","isDescriptionCut","MeasuredNodes","observer","ResizeObserver","observeMeasuredNodes","measured","onResize","disconnect","observe","useAutoTooltip","t0","$","_c","t1","labelRefOption","descriptionRefOption","t2","allowsAuto","isLabelMeasured","isDescriptionMeasured","isAutoTooltipEnabled","externalLabelRef","setTruncation","t3","Symbol","for","measuredRef","verdictRef","t4","value","setVerdict","t5","description_0","checkOverflow","t6","scheduleOverflowCheck","t7","t8","t9","part","attachMeasuredNode","t10","element_0","handleLabelElementRef","t11","element_1","handleDescriptionElementRef","t12","finalLabelProps","_labelPropsRef","t13","resolvedTooltip","isTooltipActive","t14","renderElement","defaultTooltipPlacement","triggerProps","renderWithTooltip","t15","t16","t17","hasTooltip"],"sources":["../../../src/components/content/use-auto-tooltip.tsx"],"sourcesContent":["import {\n HTMLAttributes,\n ReactNode,\n Ref,\n RefObject,\n useCallback,\n useEffect,\n useRef,\n useState,\n} from 'react';\nimport { PositionProps } from 'react-aria';\nimport { flushSync } from 'react-dom';\n\nimport {\n CubeTooltipProviderProps,\n TooltipProvider,\n} from '../overlays/Tooltip/TooltipProvider';\n\nimport type { Props } from '../../props';\n\nexport type AutoTooltipValue =\n | string\n | boolean\n | (Omit<CubeTooltipProviderProps, 'children'> & { auto?: boolean });\n\nexport interface UseAutoTooltipOptions {\n tooltip: AutoTooltipValue | undefined;\n children: ReactNode;\n /**\n * Secondary text that truncates alongside the label, such as `Item`'s\n * description. A string description is measured with the label, and the auto\n * tooltip shows whichever of the two is cut off.\n */\n description?: ReactNode;\n labelProps?: Props;\n isDynamicLabel?: boolean;\n /**\n * The caller's own ref to the label element. The hook owns the label's ref\n * (it measures the node), so a caller that also needs the node hands its ref\n * over here rather than attaching a second one.\n */\n labelRef?: Ref<HTMLElement>;\n /** The caller's own ref to the description element, as `labelRef`. */\n descriptionRef?: Ref<HTMLElement>;\n}\n\nfunction assignRef(ref: unknown, element: HTMLElement | null) {\n if (typeof ref === 'function') {\n ref(element);\n } else if (ref) {\n (ref as { current: HTMLElement | null }).current = element;\n }\n}\n\n/** Overflow checks queued for the end of the current task, from every label. */\nconst pendingOverflowChecks = new Set<() => void>();\n\n/**\n * Runs every queued check in one pass and commits the verdicts that changed in\n * one synchronous render.\n *\n * All reads happen before React touches the DOM again, so they share one\n * layout. `flushSync` applies the verdicts, and the `TooltipProvider` remounts\n * they cause, before paint and before any other task, so code that looks the\n * label up after this task gets the node the verdict leaves in place, not one\n * about to be replaced. Outside a React commit this is an ordinary sync\n * render, not a nested update.\n */\nfunction runOverflowChecks() {\n const checks = Array.from(pendingOverflowChecks);\n\n pendingOverflowChecks.clear();\n\n flushSync(() => {\n for (const check of checks) check();\n });\n}\n\nfunction queueOverflowCheck(check: () => void) {\n if (!pendingOverflowChecks.size) queueMicrotask(runOverflowChecks);\n\n pendingOverflowChecks.add(check);\n}\n\n/**\n * Whether the tooltip value asks to detect overflow on its own. What it\n * measures is decided separately: overflow detection measures text, so only a\n * string label or description takes part.\n */\nfunction allowsAutoTooltip(tooltip: AutoTooltipValue | undefined): boolean {\n // Boolean true enables auto overflow detection\n if (tooltip === true) return true;\n if (typeof tooltip === 'object') {\n // If title is provided and auto is explicitly true, enable auto overflow detection\n if (tooltip.title) {\n return tooltip.auto === true;\n }\n\n // If no title is provided, default to auto=true unless explicitly disabled\n return tooltip.auto !== undefined ? !!tooltip.auto : true;\n }\n return false;\n}\n\n/** Which measured parts are cut off. */\ntype Truncation = 'none' | 'label' | 'description' | 'both';\n\n/**\n * What the auto tooltip shows: the text that is cut off, and nothing the row\n * already shows in full. When both parts are, the description goes below the\n * label as the tooltip's `Description`, styled as secondary text.\n */\nfunction getAutoTitle(\n children: ReactNode,\n description: ReactNode,\n truncation: Truncation,\n): ReactNode {\n if (truncation === 'description') return description;\n if (truncation === 'both') {\n return (\n <>\n {children}\n <div data-element=\"Description\">{description}</div>\n </>\n );\n }\n\n // The label is cut off, or nothing is and the tooltip stays mounted but\n // disabled for a dynamic label.\n return children;\n}\n\n/**\n * The `TooltipProvider` props a tooltip resolves to, or `null` when no tooltip\n * is rendered at all.\n */\nfunction resolveTooltip({\n tooltip,\n children,\n description,\n labelProps,\n isDynamicLabel,\n truncation,\n}: Omit<UseAutoTooltipOptions, 'labelRef' | 'descriptionRef'> & {\n truncation: Truncation;\n}): Omit<CubeTooltipProviderProps, 'children'> | null {\n if (!tooltip) return null;\n\n // String tooltip - simple case\n if (typeof tooltip === 'string') {\n return { title: tooltip };\n }\n\n const isOverflowed = truncation !== 'none';\n const autoTitle = getAutoTitle(children, description, truncation);\n const hasAutoContent =\n !!(autoTitle || labelProps) && (isOverflowed || isDynamicLabel);\n\n // Boolean tooltip - auto tooltip on overflow\n if (tooltip === true) {\n if (!hasAutoContent) return null;\n\n return {\n title: autoTitle,\n isDisabled: !isOverflowed && isDynamicLabel,\n };\n }\n\n // Object tooltip - advanced configuration\n const { auto, ...tooltipProps } = tooltip;\n\n // If title is provided and auto is not explicitly true, always show the tooltip\n if (tooltipProps.title && auto !== true) {\n return tooltipProps;\n }\n\n // If title is provided with auto=true, OR no title but auto behavior enabled\n if (!hasAutoContent) return null;\n\n return {\n title: tooltipProps.title ?? autoTitle,\n isDisabled:\n !isOverflowed && isDynamicLabel && tooltipProps.isDisabled !== true,\n ...tooltipProps,\n };\n}\n\n/** Whether a measured node's text is cut off. */\nfunction isTruncated(element: HTMLElement | null): boolean {\n return !!element && element.scrollWidth > element.clientWidth;\n}\n\nfunction measureTruncation(\n label: HTMLElement | null,\n description: HTMLElement | null,\n): Truncation {\n const isLabelCut = isTruncated(label);\n const isDescriptionCut = isTruncated(description);\n\n if (isLabelCut) return isDescriptionCut ? 'both' : 'label';\n\n return isDescriptionCut ? 'description' : 'none';\n}\n\ninterface MeasuredNodes {\n label: HTMLElement | null;\n description: HTMLElement | null;\n observer: ResizeObserver | null;\n}\n\n/**\n * Points the hook's one observer at the nodes now measured, so a row with a\n * label and a description still costs a single observer. It re-points by\n * disconnecting and observing again rather than with `unobserve`: those are\n * the only two calls the hook has ever made, so a consumer's test stub that\n * implements just them keeps working.\n */\nfunction observeMeasuredNodes(measured: MeasuredNodes, onResize: () => void) {\n try {\n measured.observer?.disconnect();\n } catch {\n // do nothing\n }\n\n const { label, description } = measured;\n\n if (!label && !description) return;\n\n measured.observer ??= new ResizeObserver(() => onResize());\n\n if (label) measured.observer.observe(label);\n if (description) measured.observer.observe(description);\n}\n\nexport function useAutoTooltip({\n tooltip,\n children,\n description,\n labelProps,\n isDynamicLabel = false,\n labelRef: labelRefOption,\n descriptionRef: descriptionRefOption,\n}: UseAutoTooltipOptions) {\n const allowsAuto = allowsAutoTooltip(tooltip);\n const isLabelMeasured = allowsAuto && typeof children === 'string';\n const isDescriptionMeasured = allowsAuto && typeof description === 'string';\n const isAutoTooltipEnabled = isLabelMeasured || isDescriptionMeasured;\n\n // Track overflow for auto tooltip (only when enabled)\n const externalLabelRef = (labelProps as any)?.ref;\n const [truncation, setTruncation] = useState<Truncation>('none');\n // The nodes being measured, and the one observer watching all of them.\n const measuredRef = useRef<MeasuredNodes>({\n label: null,\n description: null,\n observer: null,\n });\n\n const verdictRef = useRef<Truncation>('none');\n\n /**\n * Sets the verdict only when it changes. React skips an unchanged `setState`\n * only while the component has no other update queued; otherwise the no-op is\n * enqueued like any other update. From an effect flushed inside a sync commit\n * that is a pending update, and a nested one — see the mount effect below.\n * Mirroring the verdict makes every unchanged write free, whatever else the\n * component has queued.\n */\n const setVerdict = useCallback((value: Truncation) => {\n if (verdictRef.current === value) return;\n\n verdictRef.current = value;\n setTruncation(value);\n }, []);\n\n const checkOverflow = useCallback(() => {\n const { label, description } = measuredRef.current;\n\n if (!label && !description) return;\n\n setVerdict(measureTruncation(label, description));\n }, [setVerdict]);\n\n /**\n * Measure once the current task has finished, not inside it.\n *\n * A microtask runs after React's whole commit — every mutation, layout effect\n * and ref attachment — and before paint. Every label on the page therefore\n * reads after all of them have written, so the reads collapse into one style\n * and layout flush instead of forcing one each, mid-commit. Reading straight\n * from the callback ref is what cost 122ms of `get scrollWidth` in one Cloud\n * profile, more than the entire style engine.\n *\n * A microtask rather than the observer's first delivery: observer callbacks\n * are part of the rendering steps, so a runner that is not producing frames —\n * a background tab, or a headless browser running many stories at once — can\n * delay them past the point something asks whether the tooltip is active.\n * Microtasks do not depend on a frame. See `runOverflowChecks` for how the\n * verdicts are applied.\n */\n const scheduleOverflowCheck = useCallback(() => {\n queueOverflowCheck(checkOverflow);\n }, [checkOverflow]);\n\n useEffect(() => {\n if (isAutoTooltipEnabled) {\n // Queued, not measured here. React 19 flushes a sync commit's passive\n // effects before the commit returns, so a verdict set from this effect\n // leaves that commit with an update pending — a nested update. A list\n // that commits each row on its own (ag-grid-react wraps every new row in\n // `flushSync`) then gains one per row, and React throws \"Maximum update\n // depth exceeded\" once the count passes 50. The queued check runs after\n // the commit and still before paint. The callback refs have usually\n // queued it already, so this call is absorbed. It matters when what is\n // measured changes without a node re-attaching — the description stops\n // being a string, say, while the label stays.\n scheduleOverflowCheck();\n\n return;\n }\n\n // Clearing here rather than in the callback ref, which cannot be trusted\n // to do it. Flipping `isAutoTooltipEnabled` changes the ref's identity, so\n // React detaches with the PREVIOUS callback — the one that still believes\n // auto tooltips are on, and therefore keeps the last verdict — and only\n // attaches the new one if the label still exists. When `children` stops\n // being a string the label unmounts, so the new callback never runs and a\n // stale verdict would keep an auto tooltip mounted over content that is no\n // longer text. That is the default `Button` path, where `tooltip` is `true`.\n setVerdict('none');\n }, [\n isAutoTooltipEnabled,\n isLabelMeasured,\n isDescriptionMeasured,\n scheduleOverflowCheck,\n setVerdict,\n ]);\n\n // The callback refs own the observer: React hands them `null` when a node\n // goes away. 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 measured[part] = element;\n // The observer covers every later size change.\n observeMeasuredNodes(measured, checkOverflow);\n\n // No node to measure. Leave the previous verdict alone rather than\n // clearing it: turning the verdict on mounts `TooltipProvider`, which\n // remounts the label underneath it, so React detaches the old node and\n // attaches a new one within that commit. Clearing here would unmount the\n // provider, remount the label, measure it, mount the provider again — a\n // loop that never settles.\n if (!element) return;\n\n // Do NOT measure synchronously here — see `scheduleOverflowCheck`. This\n // covers the node the ref just handed us, including the fresh one React\n // creates when `TooltipProvider` mounts and remounts the element.\n scheduleOverflowCheck();\n },\n [checkOverflow, scheduleOverflowCheck],\n );\n\n const handleLabelElementRef = useCallback(\n (element: HTMLElement | null) => {\n // Notify the external refs\n assignRef(externalLabelRef, element);\n assignRef(labelRefOption, element);\n\n attachMeasuredNode('label', isLabelMeasured ? element : null);\n },\n [externalLabelRef, labelRefOption, isLabelMeasured, attachMeasuredNode],\n );\n\n const handleDescriptionElementRef = useCallback(\n (element: HTMLElement | null) => {\n assignRef(descriptionRefOption, element);\n\n attachMeasuredNode('description', isDescriptionMeasured ? element : null);\n },\n [descriptionRefOption, isDescriptionMeasured, attachMeasuredNode],\n );\n\n const { ref: _labelPropsRef, ...finalLabelProps } = labelProps || {};\n\n // Resolved once so that both the rendering below and `isTooltipActive` speak\n // about the same tooltip.\n const resolvedTooltip = resolveTooltip({\n tooltip,\n children,\n description,\n labelProps,\n isDynamicLabel,\n truncation,\n });\n\n /** Whether a tooltip is rendered and able to open. */\n const isTooltipActive =\n !!resolvedTooltip && resolvedTooltip.isDisabled !== true;\n\n const renderWithTooltip = (\n renderElement: (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => ReactNode,\n defaultTooltipPlacement: PositionProps['placement'],\n ) => {\n if (!resolvedTooltip) return renderElement();\n\n return (\n <TooltipProvider placement={defaultTooltipPlacement} {...resolvedTooltip}>\n {(triggerProps, ref) => renderElement(triggerProps, ref)}\n </TooltipProvider>\n );\n };\n\n return {\n labelRef: handleLabelElementRef,\n descriptionRef: handleDescriptionElementRef,\n labelProps: finalLabelProps,\n isOverflowed: truncation !== 'none',\n isAutoTooltipEnabled,\n hasTooltip: !!tooltip,\n isTooltipActive,\n renderWithTooltip,\n };\n}\n"],"mappings":"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"}
1
+ {"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"],"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 return {\n title: tooltipProps.title ?? autoTitle,\n isDisabled:\n !isOverflowed && isDynamicLabel && tooltipProps.isDisabled !== true,\n ...tooltipProps,\n };\n}\n\n/** Whether a measured node's text is cut off. */\nfunction isTruncated(element: HTMLElement | null): boolean {\n return !!element && element.scrollWidth > element.clientWidth;\n}\n\nfunction measureTruncation(\n label: HTMLElement | null,\n description: HTMLElement | null,\n): Truncation {\n const isLabelCut = isTruncated(label);\n const isDescriptionCut = isTruncated(description);\n\n if (isLabelCut) return isDescriptionCut ? 'both' : 'label';\n\n return isDescriptionCut ? 'description' : 'none';\n}\n\ninterface MeasuredNodes {\n label: HTMLElement | null;\n description: HTMLElement | null;\n observer: ResizeObserver | null;\n}\n\n/**\n * Points the hook's one observer at the nodes now measured, so a row with a\n * label and a description still costs a single observer. It re-points by\n * disconnecting and observing again rather than with `unobserve`: those are\n * the only two calls the hook has ever made, so a consumer's test stub that\n * implements just them keeps working.\n */\nfunction observeMeasuredNodes(measured: MeasuredNodes, onResize: () => void) {\n try {\n measured.observer?.disconnect();\n } catch {\n // do nothing\n }\n\n const { label, description } = measured;\n\n if (!label && !description) return;\n\n measured.observer ??= new ResizeObserver(() => onResize());\n\n if (label) measured.observer.observe(label);\n if (description) measured.observer.observe(description);\n}\n\nexport function useAutoTooltip({\n tooltip,\n children,\n description,\n labelProps,\n isDynamicLabel = false,\n labelRef: labelRefOption,\n descriptionRef: descriptionRefOption,\n}: UseAutoTooltipOptions) {\n const allowsAuto = allowsAutoTooltip(tooltip);\n const isLabelMeasured = allowsAuto && typeof children === 'string';\n const isDescriptionMeasured = allowsAuto && typeof description === 'string';\n const isAutoTooltipEnabled = isLabelMeasured || isDescriptionMeasured;\n\n // Track overflow for auto tooltip (only when enabled)\n const externalLabelRef = (labelProps as any)?.ref;\n const [truncation, setTruncation] = useState<Truncation>('none');\n // The nodes being measured, and the one observer watching all of them.\n const measuredRef = useRef<MeasuredNodes>({\n label: null,\n description: null,\n observer: null,\n });\n\n const verdictRef = useRef<Truncation>('none');\n\n /**\n * Sets the verdict only when it changes. React skips an unchanged `setState`\n * only while the component has no other update queued; otherwise the no-op is\n * enqueued like any other update. From an effect flushed inside a sync commit\n * that is a pending update, and a nested one — see the mount effect below.\n * Mirroring the verdict makes every unchanged write free, whatever else the\n * component has queued.\n */\n const setVerdict = useCallback((value: Truncation) => {\n if (verdictRef.current === value) return;\n\n verdictRef.current = value;\n setTruncation(value);\n }, []);\n\n const checkOverflow = useCallback(() => {\n const { label, description } = measuredRef.current;\n\n if (!label && !description) return;\n\n setVerdict(measureTruncation(label, description));\n }, [setVerdict]);\n\n /**\n * Measure once the current task has finished, not inside it.\n *\n * A microtask runs after React's whole commit — every mutation, layout effect\n * and ref attachment — and before paint. Every label on the page therefore\n * reads after all of them have written, so the reads collapse into one style\n * and layout flush instead of forcing one each, mid-commit. Reading straight\n * from the callback ref is what cost 122ms of `get scrollWidth` in one Cloud\n * profile, more than the entire style engine.\n *\n * A microtask rather than the observer's first delivery: observer callbacks\n * are part of the rendering steps, so a runner that is not producing frames —\n * a background tab, or a headless browser running many stories at once — can\n * delay them past the point something asks whether the tooltip is active.\n * Microtasks do not depend on a frame. See `runOverflowChecks` for how the\n * verdicts are applied.\n */\n const scheduleOverflowCheck = useCallback(() => {\n queueOverflowCheck(checkOverflow);\n }, [checkOverflow]);\n\n // 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 };\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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 { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.1 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { _Text } from "../../content/Text.js";
4
4
  import { useI18n } from "../../../i18n/useI18n.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.1 | Cube Dev Team */
2
2
  import { _Text } from "../../content/Text.js";
3
3
  import { useI18n } from "../../../i18n/useI18n.js";
4
4
  import { c } from "react/compiler-runtime";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.1 | Cube Dev Team */
2
2
  import { _Pagination } from "../../navigation/Pagination/Pagination.js";
3
3
  import { c } from "react/compiler-runtime";
4
4
  import { tasty } from "@tenphi/tasty";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.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.192.0 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.192.1 | Cube Dev Team */
2
2
  import { useEvent } from "../../../_internal/hooks/use-event.js";
3
3
  import { TooltipProvider } from "../../overlays/Tooltip/TooltipProvider.js";
4
4
  import { TextItem } from "../../content/TextItem/TextItem.js";
@@ -34,7 +34,9 @@ import { useRowMoveAnimation } from "./use-row-move-animation.js";
34
34
  import { useScrollability } from "./use-scrollability.js";
35
35
  import { getColumnText, getColumnValue } from "./use-table-columns.js";
36
36
  import { ROW_NUMBER_COLUMN_KEY, SELECTION_COLUMN_KEY } from "./use-table-selection.js";
37
- import { Fragment, useCallback, useEffect, useMemo, useRef, useState } from "react";
37
+ import { useTableTooltipRefresh } from "./use-table-tooltip-refresh.js";
38
+ import { c } from "react/compiler-runtime";
39
+ import { Fragment, useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from "react";
38
40
  import clsx from "clsx";
39
41
  import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
40
42
  import { VisuallyHidden } from "react-aria";
@@ -106,12 +108,39 @@ function pinStyle(column) {
106
108
  if (column.pinOffset == null) return void 0;
107
109
  return { ["--pin-offset"]: `${column.pinOffset}px` };
108
110
  }
109
- /** What a data cell shows: `column.render`'s output, or the display text. */
110
- function renderCellContent(column, row, rowIndex, ctx) {
111
- const value = column.isStructural ? void 0 : getColumnValue(column, row, rowIndex);
112
- const rendered = column.render ? column.render(value, row, rowIndex, ctx) : column.isStructural ? null : getColumnText(column, row, rowIndex);
111
+ /** Default text keeps its tooltip tree while the virtual window moves. */
112
+ function TableCellContent(t0) {
113
+ const $ = c(7);
114
+ const { column, row, rowIndex } = t0;
115
+ let t1;
116
+ if ($[0] !== column || $[1] !== row || $[2] !== rowIndex) {
117
+ t1 = getColumnText(column, row, rowIndex);
118
+ $[0] = column;
119
+ $[1] = row;
120
+ $[2] = rowIndex;
121
+ $[3] = t1;
122
+ } else t1 = $[3];
123
+ const text = t1;
124
+ let t2;
125
+ if ($[4] !== column.autoHeight || $[5] !== text) {
126
+ t2 = column.autoHeight || text == null ? text : /* @__PURE__ */ jsx(TextItem, { children: text });
127
+ $[4] = column.autoHeight;
128
+ $[5] = text;
129
+ $[6] = t2;
130
+ } else t2 = $[6];
131
+ return t2;
132
+ }
133
+ function renderCellValue(rendered, autoHeight) {
113
134
  const isText = typeof rendered === "string" || typeof rendered === "number" || typeof rendered === "bigint";
114
- return isText && !column.autoHeight ? /* @__PURE__ */ jsx(TextItem, { children: String(rendered) }) : isText ? String(rendered) : rendered;
135
+ return isText && !autoHeight ? /* @__PURE__ */ jsx(TextItem, { children: String(rendered) }) : isText ? String(rendered) : rendered;
136
+ }
137
+ function renderCellContent(column, row, rowIndex, ctx) {
138
+ if (!column.render) return column.isStructural ? null : /* @__PURE__ */ jsx(TableCellContent, {
139
+ column,
140
+ row,
141
+ rowIndex
142
+ });
143
+ return renderCellValue(column.render(column.isStructural ? void 0 : getColumnValue(column, row, rowIndex), row, rowIndex, ctx), column.autoHeight);
115
144
  }
116
145
  /**
117
146
  * A tree column's cell content: indented to the row's level, with the expand
@@ -745,16 +774,26 @@ function TableView(props) {
745
774
  const showSkeleton = isLoading && loadingIndicator !== "none" && (!hasRows || loadingIndicator === "skeleton");
746
775
  const showBlank = isLoading && !hasRows && loadingIndicator === "none";
747
776
  const shouldVirtualize = !isAutoHeight && hasRows && error == null && (isVirtualized === true || isVirtualized === "auto" && rows.length > virtualizeThreshold);
748
- const rowsRef = useRef(rows);
749
- rowsRef.current = rows;
777
+ const getItemKey = useCallback((index) => String(rowKeys?.[index] ?? getRowKey(rows[index], index)), [
778
+ rows,
779
+ rowKeys,
780
+ getRowKey
781
+ ]);
782
+ const estimatedRowHeight = (rowHeight ?? (rowSizeKey ? SIZES[rowSizeKey] : ESTIMATED_ROW_HEIGHT[size ?? "medium"])) + 1;
750
783
  const virtualizer = useVirtualizer({
751
784
  count: shouldVirtualize ? rows.length : 0,
752
785
  getScrollElement: () => scrollerRef.current,
753
- getItemKey: (index) => String(rowKeys?.[index] ?? getRowKey(rowsRef.current[index], index)),
754
- estimateSize: () => (rowHeight ?? (rowSizeKey ? SIZES[rowSizeKey] : ESTIMATED_ROW_HEIGHT[size ?? "medium"])) + 1,
786
+ getItemKey,
787
+ estimateSize: () => estimatedRowHeight,
755
788
  measureElement: (element) => element.getBoundingClientRect().height,
756
789
  overscan
757
790
  });
791
+ useLayoutEffect(() => {
792
+ virtualizer.measure();
793
+ virtualizer.getTotalSize();
794
+ localBodyRef.current?.querySelectorAll("tr[data-index]").forEach((element) => virtualizer.measureElement(element));
795
+ }, [estimatedRowHeight, virtualizer]);
796
+ useTableTooltipRefresh(scrollerEl, virtualizer.isScrolling);
758
797
  const focusedTreeKey = tree?.state.selectionManager.focusedKey;
759
798
  useEffect(() => {
760
799
  if (!shouldVirtualize || focusedTreeKey == null || !tree) return;