@cube-dev/ui-kit 0.0.0-canary-0b79a39 → 0.0.0-canary-c02e70f

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 (620) hide show
  1. package/dist/CHANGELOG.md +6 -0
  2. package/dist/_internal/hooks/use-debounced-value.js +1 -1
  3. package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
  4. package/dist/_internal/hooks/use-event.js +1 -1
  5. package/dist/_internal/hooks/use-is-first-render.js +1 -1
  6. package/dist/_internal/hooks/use-sync-ref.js +1 -1
  7. package/dist/_internal/hooks/use-timer/timer.js +1 -1
  8. package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
  9. package/dist/_internal/hooks/use-warn.js +1 -1
  10. package/dist/components/Block.js +1 -1
  11. package/dist/components/CollectionItem.js +1 -1
  12. package/dist/components/GlobalStyles.js +23 -21
  13. package/dist/components/GlobalStyles.js.map +1 -1
  14. package/dist/components/GridProvider.js +1 -1
  15. package/dist/components/HiddenInput.js +1 -1
  16. package/dist/components/Root.js +1 -1
  17. package/dist/components/actions/Action/Action.js +1 -1
  18. package/dist/components/actions/Banner/Banner.js +1 -1
  19. package/dist/components/actions/Banner/Banner.js.map +1 -1
  20. package/dist/components/actions/Button/Button.js +1 -1
  21. package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
  22. package/dist/components/actions/ButtonSplit/ButtonSplit.js +128 -66
  23. package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
  24. package/dist/components/actions/ButtonSplit/context.js +1 -1
  25. package/dist/components/actions/CommandMenu/CommandMenu.js +451 -280
  26. package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
  27. package/dist/components/actions/CommandMenu/styled.js +1 -1
  28. package/dist/components/actions/ItemAction/ItemAction.js +57 -93
  29. package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
  30. package/dist/components/actions/ItemActionContext.js +1 -1
  31. package/dist/components/actions/ItemActionsWrapper.js +1 -1
  32. package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
  33. package/dist/components/actions/ItemButton/ItemButton.js +1 -1
  34. package/dist/components/actions/Link/Link.js +1 -1
  35. package/dist/components/actions/Menu/Menu.js +49 -69
  36. package/dist/components/actions/Menu/Menu.js.map +1 -1
  37. package/dist/components/actions/Menu/MenuItem.js +1 -1
  38. package/dist/components/actions/Menu/MenuSection.js +1 -1
  39. package/dist/components/actions/Menu/MenuTrigger.js +1 -1
  40. package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
  41. package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
  42. package/dist/components/actions/Menu/context.js +1 -1
  43. package/dist/components/actions/Menu/styled.js +1 -1
  44. package/dist/components/actions/actions-run.js +1 -1
  45. package/dist/components/actions/index.js +1 -1
  46. package/dist/components/actions/use-action.js +1 -1
  47. package/dist/components/actions/use-anchored-menu.js +1 -1
  48. package/dist/components/actions/use-context-menu.js +1 -1
  49. package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
  50. package/dist/components/content/Alert/Alert.js +1 -1
  51. package/dist/components/content/Alert/use-alert.js +1 -1
  52. package/dist/components/content/Avatar/Avatar.js +1 -1
  53. package/dist/components/content/Badge/Badge.js +1 -1
  54. package/dist/components/content/Card/Card.js +1 -1
  55. package/dist/components/content/Content.js +1 -1
  56. package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
  57. package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
  58. package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
  59. package/dist/components/content/Disclosure/Disclosure.js +44 -60
  60. package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
  61. package/dist/components/content/Divider.js +1 -1
  62. package/dist/components/content/Footer.js +1 -1
  63. package/dist/components/content/Header.js +1 -1
  64. package/dist/components/content/HotKeys/HotKeys.js +1 -1
  65. package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
  66. package/dist/components/content/InlineInput/InlineInput.js +39 -65
  67. package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
  68. package/dist/components/content/Item/Item.js +208 -263
  69. package/dist/components/content/Item/Item.js.map +1 -1
  70. package/dist/components/content/ItemBadge/ItemBadge.js +70 -145
  71. package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
  72. package/dist/components/content/ItemCard/ItemCard.js +1 -1
  73. package/dist/components/content/Layout/GridLayout.js +1 -1
  74. package/dist/components/content/Layout/Layout.js +1 -1
  75. package/dist/components/content/Layout/LayoutBlock.js +1 -1
  76. package/dist/components/content/Layout/LayoutCenter.js +1 -1
  77. package/dist/components/content/Layout/LayoutContainer.js +39 -18
  78. package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
  79. package/dist/components/content/Layout/LayoutContent.js +100 -48
  80. package/dist/components/content/Layout/LayoutContent.js.map +1 -1
  81. package/dist/components/content/Layout/LayoutContext.js +211 -95
  82. package/dist/components/content/Layout/LayoutContext.js.map +1 -1
  83. package/dist/components/content/Layout/LayoutFlex.js +1 -1
  84. package/dist/components/content/Layout/LayoutFooter.js +1 -1
  85. package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
  86. package/dist/components/content/Layout/LayoutGrid.js +1 -1
  87. package/dist/components/content/Layout/LayoutHeader.js +1 -1
  88. package/dist/components/content/Layout/LayoutPane.js +240 -123
  89. package/dist/components/content/Layout/LayoutPane.js.map +1 -1
  90. package/dist/components/content/Layout/LayoutPanel.js +1 -1
  91. package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
  92. package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
  93. package/dist/components/content/Layout/LayoutToolbar.js +1 -1
  94. package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
  95. package/dist/components/content/Layout/hooks/useTinyScrollbar.js.map +1 -1
  96. package/dist/components/content/Layout/index.js +1 -1
  97. package/dist/components/content/Layout/utils.js +1 -1
  98. package/dist/components/content/Paragraph.js +1 -1
  99. package/dist/components/content/Placeholder/Placeholder.js +1 -1
  100. package/dist/components/content/PrismCode/PrismCode.js +1 -1
  101. package/dist/components/content/PrismCode/prismSetup.js +1 -1
  102. package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
  103. package/dist/components/content/Result/Result.js +28 -48
  104. package/dist/components/content/Result/Result.js.map +1 -1
  105. package/dist/components/content/Skeleton/Skeleton.js +1 -1
  106. package/dist/components/content/Tag/Tag.js +1 -1
  107. package/dist/components/content/Text.js +1 -1
  108. package/dist/components/content/TextItem/TextItem.js +9 -17
  109. package/dist/components/content/TextItem/TextItem.js.map +1 -1
  110. package/dist/components/content/Title.js +1 -1
  111. package/dist/components/content/Tree/Tree.js +1 -1
  112. package/dist/components/content/Tree/TreeNode.js +1 -1
  113. package/dist/components/content/Tree/styled.js +1 -1
  114. package/dist/components/content/Tree/tree-index.js +1 -1
  115. package/dist/components/content/Tree/use-checkbox-tree.js +68 -105
  116. package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
  117. package/dist/components/content/Tree/use-load-data.js +1 -1
  118. package/dist/components/content/highlightText.js +1 -1
  119. package/dist/components/content/use-auto-tooltip.js +106 -138
  120. package/dist/components/content/use-auto-tooltip.js.map +1 -1
  121. package/dist/components/data/DataTable/DataTable.js +1 -1
  122. package/dist/components/data/ItemTable/ItemTable.js +1 -1
  123. package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
  124. package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
  125. package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
  126. package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
  127. package/dist/components/data/TableBase/ColumnResizer.js +1 -1
  128. package/dist/components/data/TableBase/RowCollection.js +1 -1
  129. package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
  130. package/dist/components/data/TableBase/TableRow.js +1 -1
  131. package/dist/components/data/TableBase/TableView.js +1 -1
  132. package/dist/components/data/TableBase/column-menu.js +1 -1
  133. package/dist/components/data/TableBase/column-tint.js +1 -1
  134. package/dist/components/data/TableBase/row-menu.js +1 -1
  135. package/dist/components/data/TableBase/styled.js +1 -1
  136. package/dist/components/data/TableBase/table-tree.js +1 -1
  137. package/dist/components/data/TableBase/types.js +1 -1
  138. package/dist/components/data/TableBase/use-cell-selection.js +0 -0
  139. package/dist/components/data/TableBase/use-column-order.js +30 -31
  140. package/dist/components/data/TableBase/use-column-order.js.map +1 -1
  141. package/dist/components/data/TableBase/use-container-width.js +1 -1
  142. package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
  143. package/dist/components/data/TableBase/use-scrollability.js +1 -1
  144. package/dist/components/data/TableBase/use-table-columns.js +1 -1
  145. package/dist/components/data/TableBase/use-table-search.js +1 -1
  146. package/dist/components/data/TableBase/use-table-selection.js +1 -1
  147. package/dist/components/data/TableBase/use-table-sort.js +38 -42
  148. package/dist/components/data/TableBase/use-table-sort.js.map +1 -1
  149. package/dist/components/data/TableBase/use-table-sorts.js +19 -57
  150. package/dist/components/data/TableBase/use-table-sorts.js.map +1 -1
  151. package/dist/components/data/TableBase/use-table-storage.js +1 -1
  152. package/dist/components/data/TableBase/use-table-tree-state.js +55 -64
  153. package/dist/components/data/TableBase/use-table-tree-state.js.map +1 -1
  154. package/dist/components/fields/Checkbox/Checkbox.js +1 -1
  155. package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
  156. package/dist/components/fields/Checkbox/context.js +1 -1
  157. package/dist/components/fields/ColorInput/ColorInput.js +1 -1
  158. package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
  159. package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
  160. package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
  161. package/dist/components/fields/ComboBox/ComboBox.js +1 -1
  162. package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
  163. package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
  164. package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
  165. package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
  166. package/dist/components/fields/DatePicker/DateInput.js +1 -1
  167. package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
  168. package/dist/components/fields/DatePicker/DatePicker.js +1 -1
  169. package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
  170. package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
  171. package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
  172. package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
  173. package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
  174. package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
  175. package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
  176. package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
  177. package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
  178. package/dist/components/fields/DatePicker/TimeInput.js +1 -1
  179. package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
  180. package/dist/components/fields/DatePicker/YearPicker.js +1 -1
  181. package/dist/components/fields/DatePicker/parseDate.js +1 -1
  182. package/dist/components/fields/DatePicker/period.js +1 -1
  183. package/dist/components/fields/DatePicker/props.js +1 -1
  184. package/dist/components/fields/DatePicker/utils.js +1 -1
  185. package/dist/components/fields/FileInput/FileInput.js +1 -1
  186. package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
  187. package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
  188. package/dist/components/fields/Input/Input.js +1 -1
  189. package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
  190. package/dist/components/fields/ListBox/ListBox.js +1 -1
  191. package/dist/components/fields/ListBox/optionId.js +1 -1
  192. package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
  193. package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
  194. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +32 -38
  195. package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
  196. package/dist/components/fields/NumberInput/NumberInput.js +1 -1
  197. package/dist/components/fields/NumberInput/StepButton.js +1 -1
  198. package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
  199. package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
  200. package/dist/components/fields/Picker/Picker.js +1 -1
  201. package/dist/components/fields/RadioGroup/Radio.js +1 -1
  202. package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
  203. package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
  204. package/dist/components/fields/RadioGroup/context.js +1 -1
  205. package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
  206. package/dist/components/fields/SearchInput/SearchInput.js +1 -1
  207. package/dist/components/fields/Select/Select.js +1 -1
  208. package/dist/components/fields/Slider/Gradation.js +1 -1
  209. package/dist/components/fields/Slider/HueSlider.js +1 -1
  210. package/dist/components/fields/Slider/HueSlider.js.map +1 -1
  211. package/dist/components/fields/Slider/RangeSlider.js +1 -1
  212. package/dist/components/fields/Slider/Slider.js +1 -1
  213. package/dist/components/fields/Slider/SliderBase.js +1 -1
  214. package/dist/components/fields/Slider/SliderThumb.js +1 -1
  215. package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
  216. package/dist/components/fields/Slider/SliderTrack.js +1 -1
  217. package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
  218. package/dist/components/fields/Slider/elements.js +1 -1
  219. package/dist/components/fields/Slider/index.js +1 -1
  220. package/dist/components/fields/Switch/Switch.js +1 -1
  221. package/dist/components/fields/TagInput/TagInput.js +738 -1139
  222. package/dist/components/fields/TagInput/TagInput.js.map +1 -1
  223. package/dist/components/fields/TagInput/TagList.js +1 -1
  224. package/dist/components/fields/TextArea/TextArea.js +1 -1
  225. package/dist/components/fields/TextInput/TextInput.js +1 -1
  226. package/dist/components/fields/TextInput/TextInputBase.js +1 -1
  227. package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
  228. package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
  229. package/dist/components/fields/TriggerActions.js +1 -1
  230. package/dist/components/fields/color/ColorPanel.js +1 -1
  231. package/dist/components/fields/color/ColorPanel.js.map +1 -1
  232. package/dist/components/fields/color/channels.js +1 -1
  233. package/dist/components/fields/color/color.js +1 -1
  234. package/dist/components/fields/color/context.js +1 -1
  235. package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
  236. package/dist/components/form/Form/Field.js +10 -15
  237. package/dist/components/form/Form/Field.js.map +1 -1
  238. package/dist/components/form/Form/Form.js +1 -1
  239. package/dist/components/form/Form/ModernFormRoot.js +1 -1
  240. package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
  241. package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
  242. package/dist/components/form/Form/SubmitError.js +1 -1
  243. package/dist/components/form/Form/backend.js +1 -1
  244. package/dist/components/form/Form/index.js +1 -1
  245. package/dist/components/form/Form/modern/actions.js +1 -1
  246. package/dist/components/form/Form/modern/context.js +1 -1
  247. package/dist/components/form/Form/modern/controller.js +1 -1
  248. package/dist/components/form/Form/modern/field-binding.js +1 -1
  249. package/dist/components/form/Form/modern/field.js +1 -1
  250. package/dist/components/form/Form/modern/react.js +1 -1
  251. package/dist/components/form/Form/modern/react.js.map +1 -1
  252. package/dist/components/form/Form/modern/store.js +1 -1
  253. package/dist/components/form/Form/modern/validation.js +1 -1
  254. package/dist/components/form/Form/modern/values.js +1 -1
  255. package/dist/components/form/Form/reset-unbound-controls.js +1 -1
  256. package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
  257. package/dist/components/form/Form/use-field/use-field-props.js +1 -1
  258. package/dist/components/form/Form/use-field/use-field.js +1 -1
  259. package/dist/components/form/Form/use-form.js +1 -1
  260. package/dist/components/form/Form/validation.js +1 -1
  261. package/dist/components/form/Label.js +1 -1
  262. package/dist/components/form/legacy-tooltip.js +1 -1
  263. package/dist/components/form/validation/ValidationIndicator.js +1 -1
  264. package/dist/components/form/validation/resolve-validation-props.js +1 -1
  265. package/dist/components/form/validation/use-validation-props.js +1 -1
  266. package/dist/components/form/wrapper.js +1 -1
  267. package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
  268. package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
  269. package/dist/components/layout/Board/Board.js +1 -1
  270. package/dist/components/layout/Board/BoardProvider.js +1 -1
  271. package/dist/components/layout/Board/BoardResponsive.js +1 -1
  272. package/dist/components/layout/Board/Widget.js +1 -1
  273. package/dist/components/layout/Board/WidgetHost.js +1 -1
  274. package/dist/components/layout/Board/board-context.js +1 -1
  275. package/dist/components/layout/Board/board-store.js +1 -1
  276. package/dist/components/layout/Board/grid-core/calculate.js +1 -1
  277. package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
  278. package/dist/components/layout/Board/grid-core/collision.js +1 -1
  279. package/dist/components/layout/Board/grid-core/compactors.js +1 -1
  280. package/dist/components/layout/Board/grid-core/constraints.js +1 -1
  281. package/dist/components/layout/Board/grid-core/group-move.js +1 -1
  282. package/dist/components/layout/Board/grid-core/layout.js +1 -1
  283. package/dist/components/layout/Board/grid-core/placement.js +1 -1
  284. package/dist/components/layout/Board/grid-core/sort.js +1 -1
  285. package/dist/components/layout/Board/index.js +1 -1
  286. package/dist/components/layout/Board/responsive-utils.js +1 -1
  287. package/dist/components/layout/Board/use-board-layout.js +1 -1
  288. package/dist/components/layout/Board/use-board-registry.js +1 -1
  289. package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
  290. package/dist/components/layout/Board/use-board-selection.js +1 -1
  291. package/dist/components/layout/Flex.js +1 -1
  292. package/dist/components/layout/Flow.js +1 -1
  293. package/dist/components/layout/Grid.js +1 -1
  294. package/dist/components/layout/Panel.js +129 -48
  295. package/dist/components/layout/Panel.js.map +1 -1
  296. package/dist/components/layout/Prefix.js +1 -1
  297. package/dist/components/layout/ResizablePanel.js +1 -1
  298. package/dist/components/layout/Space.js +1 -1
  299. package/dist/components/layout/Suffix.js +1 -1
  300. package/dist/components/navigation/Pagination/Pagination.js +227 -347
  301. package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
  302. package/dist/components/navigation/Pagination/use-pagination.js +1 -1
  303. package/dist/components/navigation/Pagination/use-pagination.js.map +1 -1
  304. package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
  305. package/dist/components/navigation/Tabs/TabButton.js +1 -1
  306. package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
  307. package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
  308. package/dist/components/navigation/Tabs/TabPanel.js +1 -1
  309. package/dist/components/navigation/Tabs/TabPicker.js +1 -1
  310. package/dist/components/navigation/Tabs/Tabs.js +1 -1
  311. package/dist/components/navigation/Tabs/TabsAction.js +1 -1
  312. package/dist/components/navigation/Tabs/TabsAction.js.map +1 -1
  313. package/dist/components/navigation/Tabs/TabsContext.js +1 -1
  314. package/dist/components/navigation/Tabs/popover-placement.js +1 -1
  315. package/dist/components/navigation/Tabs/styled.js +1 -1
  316. package/dist/components/navigation/Tabs/types.js +1 -1
  317. package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
  318. package/dist/components/navigation/Tabs/use-tab-editing.js.map +1 -1
  319. package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
  320. package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
  321. package/dist/components/other/Calendar/Calendar.js +1 -1
  322. package/dist/components/other/Calendar/CalendarCell.js +1 -1
  323. package/dist/components/other/Calendar/CalendarGrid.js +1 -1
  324. package/dist/components/other/Calendar/CalendarGrid.js.map +1 -1
  325. package/dist/components/other/Calendar/CalendarHeader.js +1 -1
  326. package/dist/components/other/Calendar/CalendarPanel.js +497 -515
  327. package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
  328. package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
  329. package/dist/components/other/Calendar/PeriodCalendar.js.map +1 -1
  330. package/dist/components/other/Calendar/PeriodGrid.js +1 -1
  331. package/dist/components/other/Calendar/RangeCalendar.js +1 -1
  332. package/dist/components/other/Calendar/styled.js +1 -1
  333. package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
  334. package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
  335. package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
  336. package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
  337. package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
  338. package/dist/components/overlays/Dialog/Dialog.js +1 -1
  339. package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
  340. package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
  341. package/dist/components/overlays/Dialog/DialogForm.js +1 -1
  342. package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
  343. package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
  344. package/dist/components/overlays/Dialog/context.js +1 -1
  345. package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
  346. package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
  347. package/dist/components/overlays/Modal/Modal.js +1 -1
  348. package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
  349. package/dist/components/overlays/Modal/Overlay.js +1 -1
  350. package/dist/components/overlays/Modal/Popover.js +1 -1
  351. package/dist/components/overlays/Modal/Tray.js +1 -1
  352. package/dist/components/overlays/Modal/Underlay.js +1 -1
  353. package/dist/components/overlays/Notifications/Notification.js +1 -1
  354. package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
  355. package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
  356. package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
  357. package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
  358. package/dist/components/overlays/Notifications/OverlayContainer.js +266 -161
  359. package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
  360. package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
  361. package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
  362. package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
  363. package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
  364. package/dist/components/overlays/Notifications/index.js +1 -1
  365. package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
  366. package/dist/components/overlays/Notifications/use-notifications.js +1 -1
  367. package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
  368. package/dist/components/overlays/Notifications/use-persistent-notifications.js +18 -9
  369. package/dist/components/overlays/Notifications/use-persistent-notifications.js.map +1 -1
  370. package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
  371. package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
  372. package/dist/components/overlays/Toast/ToastItem.js +1 -1
  373. package/dist/components/overlays/Toast/index.js +1 -1
  374. package/dist/components/overlays/Toast/useProgressToast.js +1 -1
  375. package/dist/components/overlays/Toast/useToast.js +1 -1
  376. package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
  377. package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
  378. package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
  379. package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
  380. package/dist/components/overlays/Tooltip/context.js +1 -1
  381. package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
  382. package/dist/components/portal/Portal.js +1 -1
  383. package/dist/components/portal/PortalProvider.js +1 -1
  384. package/dist/components/portal/usePortal.js +1 -1
  385. package/dist/components/shared/DraggableCollection.js +1 -1
  386. package/dist/components/shared/InvalidIcon.js +1 -1
  387. package/dist/components/shared/ValidIcon.js +1 -1
  388. package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
  389. package/dist/components/status/Spin/Cube.js +1 -1
  390. package/dist/components/status/Spin/InternalSpinner.js +1 -1
  391. package/dist/components/status/Spin/Spin.js +1 -1
  392. package/dist/components/status/Spin/SpinsContainer.js +1 -1
  393. package/dist/data/item-themes.js +1 -1
  394. package/dist/data/themes.js +1 -1
  395. package/dist/eslint-plugin/defaults.generated.js +1 -1
  396. package/dist/eslint-plugin/index.js +1 -1
  397. package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
  398. package/dist/i18n/I18nProvider.js +1 -1
  399. package/dist/i18n/createFormatter.js +1 -1
  400. package/dist/i18n/index.js +1 -1
  401. package/dist/i18n/instance.js +1 -1
  402. package/dist/i18n/locales/de-DE/uikit.js +1 -1
  403. package/dist/i18n/locales/en-US/uikit.js +1 -1
  404. package/dist/i18n/locales/es-ES/uikit.js +1 -1
  405. package/dist/i18n/locales/es-MX/uikit.js +1 -1
  406. package/dist/i18n/locales/fr-FR/uikit.js +1 -1
  407. package/dist/i18n/locales/it-IT/uikit.js +1 -1
  408. package/dist/i18n/locales/ja-JP/uikit.js +1 -1
  409. package/dist/i18n/locales/nb-NO/uikit.js +1 -1
  410. package/dist/i18n/locales/pt-BR/uikit.js +1 -1
  411. package/dist/i18n/locales/pt-PT/uikit.js +1 -1
  412. package/dist/i18n/locales/sv-SE/uikit.js +1 -1
  413. package/dist/i18n/locales/vi-VN/uikit.js +1 -1
  414. package/dist/i18n/locales.js +1 -1
  415. package/dist/i18n/useFormatter.js +1 -1
  416. package/dist/i18n/useFormatter.js.map +1 -1
  417. package/dist/i18n/useI18n.js +1 -1
  418. package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
  419. package/dist/icons/AdjustmentsIcon.js +1 -1
  420. package/dist/icons/AiIcon.js +1 -1
  421. package/dist/icons/AreaChartIcon.js +1 -1
  422. package/dist/icons/ArrowNarrowDownIcon.js +1 -1
  423. package/dist/icons/ArrowNarrowUpIcon.js +1 -1
  424. package/dist/icons/BackwardIcon.js +1 -1
  425. package/dist/icons/BarChartIcon.js +1 -1
  426. package/dist/icons/BellFilledIcon.js +1 -1
  427. package/dist/icons/BellIcon.js +1 -1
  428. package/dist/icons/BooleanIcon.js +1 -1
  429. package/dist/icons/CalendarEditIcon.js +1 -1
  430. package/dist/icons/CalendarIcon.js +1 -1
  431. package/dist/icons/CaretDownIcon.js +1 -1
  432. package/dist/icons/CaretUpIcon.js +1 -1
  433. package/dist/icons/ChartAreaStackedIcon.js +1 -1
  434. package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
  435. package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
  436. package/dist/icons/ChartBarGroupedIcon.js +1 -1
  437. package/dist/icons/ChartBarHorizontalIcon.js +1 -1
  438. package/dist/icons/ChartBarLineIcon.js +1 -1
  439. package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
  440. package/dist/icons/ChartBarStackedIcon.js +1 -1
  441. package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
  442. package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
  443. package/dist/icons/ChartBoxPlot2Icon.js +1 -1
  444. package/dist/icons/ChartBoxPlotIcon.js +1 -1
  445. package/dist/icons/ChartBubbleIcon.js +1 -1
  446. package/dist/icons/ChartDonut2Icon.js +1 -1
  447. package/dist/icons/ChartFunnelIcon.js +1 -1
  448. package/dist/icons/ChartHeatmapIcon.js +1 -1
  449. package/dist/icons/ChartKPIIcon.js +1 -1
  450. package/dist/icons/ChartPie2Icon.js +1 -1
  451. package/dist/icons/ChartScatterIcon.js +1 -1
  452. package/dist/icons/CheckCircleFilledIcon.js +1 -1
  453. package/dist/icons/CheckCircleIcon.js +1 -1
  454. package/dist/icons/CheckIcon.js +1 -1
  455. package/dist/icons/CircleFilledIcon.js +1 -1
  456. package/dist/icons/ClearIcon.js +1 -1
  457. package/dist/icons/CloseCircleFilledIcon.js +1 -1
  458. package/dist/icons/CloseCircleIcon.js +1 -1
  459. package/dist/icons/CloseIcon.js +1 -1
  460. package/dist/icons/CodeIcon.js +1 -1
  461. package/dist/icons/ColumnTotalIcon.js +1 -1
  462. package/dist/icons/CopyIcon.js +1 -1
  463. package/dist/icons/CountIcon.js +1 -1
  464. package/dist/icons/CubeIcon.js +1 -1
  465. package/dist/icons/CubePauseIcon.js +1 -1
  466. package/dist/icons/CubePlayIcon.js +1 -1
  467. package/dist/icons/CurrencyDollarIcon.js +1 -1
  468. package/dist/icons/DangerIcon.js +1 -1
  469. package/dist/icons/DashboardIcon.js +1 -1
  470. package/dist/icons/DatabaseIcon.js +1 -1
  471. package/dist/icons/DecimalDecreaseIcon.js +1 -1
  472. package/dist/icons/DecimalIncreaseIcon.js +1 -1
  473. package/dist/icons/DirectionIcon.js +1 -1
  474. package/dist/icons/DonutIcon.js +1 -1
  475. package/dist/icons/DownIcon.js +1 -1
  476. package/dist/icons/EditIcon.js +1 -1
  477. package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
  478. package/dist/icons/ExclamationCircleIcon.js +1 -1
  479. package/dist/icons/ExclamationIcon.js +1 -1
  480. package/dist/icons/EyeIcon.js +1 -1
  481. package/dist/icons/EyeInvisibleIcon.js +1 -1
  482. package/dist/icons/FilterIcon.js +1 -1
  483. package/dist/icons/FolderFilledIcon.js +1 -1
  484. package/dist/icons/FolderIcon.js +1 -1
  485. package/dist/icons/FolderOpenFilledIcon.js +1 -1
  486. package/dist/icons/FolderOpenIcon.js +1 -1
  487. package/dist/icons/ForwardIcon.js +1 -1
  488. package/dist/icons/GripVerticalIcon.js +1 -1
  489. package/dist/icons/HierarchyIcon.js +1 -1
  490. package/dist/icons/HierarchyOpenIcon.js +1 -1
  491. package/dist/icons/Icon.js +1 -1
  492. package/dist/icons/InfoCircleIcon.js +1 -1
  493. package/dist/icons/InfoIcon.js +1 -1
  494. package/dist/icons/KeyIcon.js +1 -1
  495. package/dist/icons/LeftIcon.js +1 -1
  496. package/dist/icons/LineChartIcon.js +1 -1
  497. package/dist/icons/LoadingIcon.js +1 -1
  498. package/dist/icons/LockFilledIcon.js +1 -1
  499. package/dist/icons/LockIcon.js +1 -1
  500. package/dist/icons/MoreIcon.js +1 -1
  501. package/dist/icons/NotAllowedIcon.js +1 -1
  502. package/dist/icons/Number123Icon.js +1 -1
  503. package/dist/icons/NumberIcon.js +1 -1
  504. package/dist/icons/PauseCircleFilledIcon.js +1 -1
  505. package/dist/icons/PauseCircleIcon.js +1 -1
  506. package/dist/icons/PauseIcon.js +1 -1
  507. package/dist/icons/PercentageIcon.js +1 -1
  508. package/dist/icons/PieChartIcon.js +1 -1
  509. package/dist/icons/PipetteIcon.js +1 -1
  510. package/dist/icons/PlayCircleIcon.js +1 -1
  511. package/dist/icons/PlayIcon.js +1 -1
  512. package/dist/icons/PlusIcon.js +1 -1
  513. package/dist/icons/ProgressBarIcon.js +1 -1
  514. package/dist/icons/ReloadIcon.js +1 -1
  515. package/dist/icons/ReportIcon.js +1 -1
  516. package/dist/icons/ReturnIcon.js +1 -1
  517. package/dist/icons/RightIcon.js +1 -1
  518. package/dist/icons/RowTotalsIcon.js +1 -1
  519. package/dist/icons/SchemeIcon.js +1 -1
  520. package/dist/icons/SearchIcon.js +1 -1
  521. package/dist/icons/SemanticQueryIcon.js +1 -1
  522. package/dist/icons/SettingsIcon.js +1 -1
  523. package/dist/icons/ShieldFilledIcon.js +1 -1
  524. package/dist/icons/ShieldIcon.js +1 -1
  525. package/dist/icons/SlashIcon.js +1 -1
  526. package/dist/icons/SparklesIcon.js +1 -1
  527. package/dist/icons/SqlIcon.js +1 -1
  528. package/dist/icons/StatsIcon.js +1 -1
  529. package/dist/icons/StopIcon.js +1 -1
  530. package/dist/icons/StringIcon.js +1 -1
  531. package/dist/icons/SubtotalsIcon.js +1 -1
  532. package/dist/icons/SwitchIcon.js +1 -1
  533. package/dist/icons/TableIcon.js +1 -1
  534. package/dist/icons/ThumbsDownIcon.js +1 -1
  535. package/dist/icons/ThumbsUpIcon.js +1 -1
  536. package/dist/icons/ThunderboltCrossedIcon.js +1 -1
  537. package/dist/icons/ThunderboltFilledIcon.js +1 -1
  538. package/dist/icons/ThunderboltIcon.js +1 -1
  539. package/dist/icons/TimeIcon.js +1 -1
  540. package/dist/icons/TrashIcon.js +1 -1
  541. package/dist/icons/UnlockIcon.js +1 -1
  542. package/dist/icons/UpIcon.js +1 -1
  543. package/dist/icons/UserGroupIcon.js +1 -1
  544. package/dist/icons/UserIcon.js +1 -1
  545. package/dist/icons/UserLockIcon.js +1 -1
  546. package/dist/icons/ViewIcon.js +1 -1
  547. package/dist/icons/WarningFilledIcon.js +1 -1
  548. package/dist/icons/WarningIcon.js +1 -1
  549. package/dist/icons/wrap-icon.js +1 -1
  550. package/dist/index.js +1 -1
  551. package/dist/probe/canonicalize.js +1 -1
  552. package/dist/probe/css.js +1 -1
  553. package/dist/probe/index.js +1 -1
  554. package/dist/provider.js +1 -1
  555. package/dist/providers/TrackingProvider.js +1 -1
  556. package/dist/providers/navigationAdapter.default.js +1 -1
  557. package/dist/tokens/all-tokens.js +1 -1
  558. package/dist/tokens/base.js +1 -1
  559. package/dist/tokens/color-seed.js +1 -1
  560. package/dist/tokens/color-theme.js +1 -1
  561. package/dist/tokens/colors.js +1 -1
  562. package/dist/tokens/layout.js +1 -1
  563. package/dist/tokens/lazy-styles.js +1 -1
  564. package/dist/tokens/legacy-color.js +1 -1
  565. package/dist/tokens/palette-config.js +1 -1
  566. package/dist/tokens/palette.js +1 -1
  567. package/dist/tokens/resolve.js +1 -1
  568. package/dist/tokens/shadows.js +1 -1
  569. package/dist/tokens/sizes.js +1 -1
  570. package/dist/tokens/spacing.js +1 -1
  571. package/dist/tokens/typography.js +1 -1
  572. package/dist/utils/ResizeSensor.js +1 -1
  573. package/dist/utils/colors.js +1 -1
  574. package/dist/utils/dotize.js +1 -1
  575. package/dist/utils/is-dev-env.js +1 -1
  576. package/dist/utils/modules.js +1 -1
  577. package/dist/utils/promise.js +1 -1
  578. package/dist/utils/raf.js +1 -1
  579. package/dist/utils/random.js +1 -1
  580. package/dist/utils/range.js +1 -1
  581. package/dist/utils/react/RenderCache.js +1 -1
  582. package/dist/utils/react/Slots.js +1 -1
  583. package/dist/utils/react/chain.js +1 -1
  584. package/dist/utils/react/disabledProps.js +1 -1
  585. package/dist/utils/react/escapePropagation.js +1 -1
  586. package/dist/utils/react/forwardRefWithGenerics.js +1 -1
  587. package/dist/utils/react/index.js +1 -1
  588. package/dist/utils/react/interactions.js +1 -1
  589. package/dist/utils/react/isTextOnly.js +1 -1
  590. package/dist/utils/react/mapProps.js +1 -1
  591. package/dist/utils/react/mergeProps.js +1 -1
  592. package/dist/utils/react/nullableValue.js +1 -1
  593. package/dist/utils/react/programmaticFocus.js +1 -1
  594. package/dist/utils/react/resolveIcon.js +1 -1
  595. package/dist/utils/react/sharedStore.js +1 -1
  596. package/dist/utils/react/useBufferedValue.js +1 -1
  597. package/dist/utils/react/useCombinedRefs.js +1 -1
  598. package/dist/utils/react/useControlledFocusVisible.js +1 -1
  599. package/dist/utils/react/useEventBus.js +1 -1
  600. package/dist/utils/react/useId.js +1 -1
  601. package/dist/utils/react/useIsDarwin.js +1 -1
  602. package/dist/utils/react/useKeySymbols.js +1 -1
  603. package/dist/utils/react/useKeySymbols.js.map +1 -1
  604. package/dist/utils/react/useLayoutEffect.js +1 -1
  605. package/dist/utils/react/useLocalStorage.js +1 -1
  606. package/dist/utils/react/useMergeStyles.js +1 -1
  607. package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
  608. package/dist/utils/react/usePopoverSync.js +1 -1
  609. package/dist/utils/react/usePopoverSync.js.map +1 -1
  610. package/dist/utils/react/useQaProps.js +1 -1
  611. package/dist/utils/react/useScheme.js +1 -1
  612. package/dist/utils/react/useViewportSize.js +1 -1
  613. package/dist/utils/react/wrapNodeIfPlain.js +1 -1
  614. package/dist/utils/selection.js +1 -1
  615. package/dist/utils/styles.js +1 -1
  616. package/dist/utils/tree.js +1 -1
  617. package/dist/utils/warnings.js +1 -1
  618. package/dist/version.js +2 -2
  619. package/docs/CreateComponent.md +3 -1
  620. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0b79a39 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
2
2
  import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
3
3
  import { useEvent } from "../../../_internal/hooks/use-event.js";
4
4
  import { DisplayTransition } from "../../helpers/DisplayTransition/DisplayTransition.js";
@@ -7,7 +7,7 @@ import { ToastItem } from "../Toast/ToastItem.js";
7
7
  import { NotificationItem } from "./NotificationItem.js";
8
8
  import { c } from "react-compiler-runtime";
9
9
  import { tasty } from "@tenphi/tasty";
10
- import { useCallback, useEffect, useRef, useState } from "react";
10
+ import { useEffect, useRef, useState } from "react";
11
11
  import { jsx } from "react/jsx-runtime";
12
12
 
13
13
  //#region src/components/overlays/Notifications/OverlayContainer.tsx
@@ -204,82 +204,157 @@ function useItemPositions(visibleItems) {
204
204
  * Extracted from OverlayContainer for readability.
205
205
  */
206
206
  function useCollapseState(canCollapse, allItems, itemRefs, onPauseChange) {
207
+ const $ = c(28);
207
208
  const [isCollapsed, setIsCollapsed] = useState(false);
208
209
  const containerRef = useRef(null);
209
210
  const boundsRef = useRef(null);
210
- const updateBounds = useCallback(() => {
211
- const refs = itemRefs.current;
212
- if (!refs || refs.size === 0) {
213
- boundsRef.current = null;
214
- return;
215
- }
216
- let minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;
217
- refs.forEach((el) => {
218
- const rect = el.getBoundingClientRect();
219
- minX = Math.min(minX, rect.left);
220
- minY = Math.min(minY, rect.top);
221
- maxX = Math.max(maxX, rect.right);
222
- maxY = Math.max(maxY, rect.bottom);
223
- });
224
- if (typeof DOMRect !== "undefined") boundsRef.current = new DOMRect(minX, minY, maxX - minX, maxY - minY);
225
- else boundsRef.current = {
226
- x: minX,
227
- y: minY,
228
- width: maxX - minX,
229
- height: maxY - minY,
230
- top: minY,
231
- right: maxX,
232
- bottom: maxY,
233
- left: minX,
234
- toJSON: () => ({})
235
- };
236
- }, [itemRefs]);
237
- useEffect(() => {
238
- if (!isCollapsed) return;
239
- const handleMouseMove = (e) => {
240
- const bounds = boundsRef.current;
241
- if (!bounds) {
242
- setIsCollapsed(false);
243
- onPauseChange(false);
211
+ let t0;
212
+ if ($[0] !== itemRefs.current) {
213
+ t0 = () => {
214
+ const refs = itemRefs.current;
215
+ if (!refs || refs.size === 0) {
216
+ boundsRef.current = null;
244
217
  return;
245
218
  }
246
- const padding = 20;
247
- if (!(e.clientX >= bounds.left - padding && e.clientX <= bounds.right + padding && e.clientY >= bounds.top - padding && e.clientY <= bounds.bottom + padding)) {
248
- setIsCollapsed(false);
249
- onPauseChange(false);
250
- }
219
+ let minX = Infinity;
220
+ let minY = Infinity;
221
+ let maxX = -Infinity;
222
+ let maxY = -Infinity;
223
+ refs.forEach((el) => {
224
+ const rect = el.getBoundingClientRect();
225
+ minX = Math.min(minX, rect.left);
226
+ minY = Math.min(minY, rect.top);
227
+ maxX = Math.max(maxX, rect.right);
228
+ maxY = Math.max(maxY, rect.bottom);
229
+ });
230
+ if (typeof DOMRect !== "undefined") boundsRef.current = new DOMRect(minX, minY, maxX - minX, maxY - minY);
231
+ else boundsRef.current = {
232
+ x: minX,
233
+ y: minY,
234
+ width: maxX - minX,
235
+ height: maxY - minY,
236
+ top: minY,
237
+ right: maxX,
238
+ bottom: maxY,
239
+ left: minX,
240
+ toJSON: _temp
241
+ };
251
242
  };
252
- window.addEventListener("mousemove", handleMouseMove);
253
- return () => window.removeEventListener("mousemove", handleMouseMove);
254
- }, [isCollapsed, onPauseChange]);
255
- useEffect(() => {
256
- updateBounds();
257
- }, [allItems, updateBounds]);
258
- return {
259
- isCollapsed,
260
- handleMouseEnter: useCallback(() => {
243
+ $[0] = itemRefs.current;
244
+ $[1] = t0;
245
+ } else t0 = $[1];
246
+ const updateBounds = t0;
247
+ let t1;
248
+ let t2;
249
+ if ($[2] !== isCollapsed || $[3] !== onPauseChange) {
250
+ t1 = () => {
251
+ if (!isCollapsed) return;
252
+ const handleMouseMove = (e) => {
253
+ const bounds = boundsRef.current;
254
+ if (!bounds) {
255
+ setIsCollapsed(false);
256
+ onPauseChange(false);
257
+ return;
258
+ }
259
+ if (!(e.clientX >= bounds.left - 20 && e.clientX <= bounds.right + 20 && e.clientY >= bounds.top - 20 && e.clientY <= bounds.bottom + 20)) {
260
+ setIsCollapsed(false);
261
+ onPauseChange(false);
262
+ }
263
+ };
264
+ window.addEventListener("mousemove", handleMouseMove);
265
+ return () => window.removeEventListener("mousemove", handleMouseMove);
266
+ };
267
+ t2 = [isCollapsed, onPauseChange];
268
+ $[2] = isCollapsed;
269
+ $[3] = onPauseChange;
270
+ $[4] = t1;
271
+ $[5] = t2;
272
+ } else {
273
+ t1 = $[4];
274
+ t2 = $[5];
275
+ }
276
+ useEffect(t1, t2);
277
+ let t3;
278
+ if ($[6] !== updateBounds) {
279
+ t3 = () => {
280
+ updateBounds();
281
+ };
282
+ $[6] = updateBounds;
283
+ $[7] = t3;
284
+ } else t3 = $[7];
285
+ let t4;
286
+ if ($[8] !== allItems || $[9] !== updateBounds) {
287
+ t4 = [allItems, updateBounds];
288
+ $[8] = allItems;
289
+ $[9] = updateBounds;
290
+ $[10] = t4;
291
+ } else t4 = $[10];
292
+ useEffect(t3, t4);
293
+ let t5;
294
+ if ($[11] !== canCollapse || $[12] !== onPauseChange || $[13] !== updateBounds) {
295
+ t5 = () => {
261
296
  updateBounds();
262
297
  onPauseChange(true);
263
298
  if (canCollapse) setIsCollapsed(true);
264
- }, [
265
- updateBounds,
266
- canCollapse,
267
- onPauseChange
268
- ]),
269
- handleMouseLeave: useCallback(() => {
299
+ };
300
+ $[11] = canCollapse;
301
+ $[12] = onPauseChange;
302
+ $[13] = updateBounds;
303
+ $[14] = t5;
304
+ } else t5 = $[14];
305
+ const handleMouseEnter = t5;
306
+ let t6;
307
+ if ($[15] !== isCollapsed || $[16] !== onPauseChange) {
308
+ t6 = () => {
270
309
  if (!isCollapsed) onPauseChange(false);
271
- }, [isCollapsed, onPauseChange]),
272
- handleFocus: useCallback(() => {
310
+ };
311
+ $[15] = isCollapsed;
312
+ $[16] = onPauseChange;
313
+ $[17] = t6;
314
+ } else t6 = $[17];
315
+ const handleMouseLeave = t6;
316
+ let t7;
317
+ if ($[18] !== onPauseChange) {
318
+ t7 = () => {
273
319
  onPauseChange(true);
274
- }, [onPauseChange]),
275
- handleBlur: useCallback((e_0) => {
320
+ };
321
+ $[18] = onPauseChange;
322
+ $[19] = t7;
323
+ } else t7 = $[19];
324
+ const handleFocus = t7;
325
+ let t8;
326
+ if ($[20] !== onPauseChange) {
327
+ t8 = (e_0) => {
276
328
  if (containerRef.current && !containerRef.current.contains(e_0.relatedTarget)) onPauseChange(false);
277
- }, [onPauseChange]),
278
- containerRef
279
- };
329
+ };
330
+ $[20] = onPauseChange;
331
+ $[21] = t8;
332
+ } else t8 = $[21];
333
+ const handleBlur = t8;
334
+ let t9;
335
+ if ($[22] !== handleBlur || $[23] !== handleFocus || $[24] !== handleMouseEnter || $[25] !== handleMouseLeave || $[26] !== isCollapsed) {
336
+ t9 = {
337
+ isCollapsed,
338
+ handleMouseEnter,
339
+ handleMouseLeave,
340
+ handleFocus,
341
+ handleBlur,
342
+ containerRef
343
+ };
344
+ $[22] = handleBlur;
345
+ $[23] = handleFocus;
346
+ $[24] = handleMouseEnter;
347
+ $[25] = handleMouseLeave;
348
+ $[26] = isCollapsed;
349
+ $[27] = t9;
350
+ } else t9 = $[27];
351
+ return t9;
352
+ }
353
+ function _temp() {
354
+ return {};
280
355
  }
281
356
  function OverlayContainer(t0) {
282
- const $ = c(41);
357
+ const $ = c(49);
283
358
  const { toasts, notifications, onToastExitComplete, onNotificationExitComplete, onNotificationDismiss, onNotificationRestore, onPauseChange } = t0;
284
359
  let items;
285
360
  if ($[0] !== notifications || $[1] !== toasts) {
@@ -338,106 +413,136 @@ function OverlayContainer(t0) {
338
413
  $[15] = t5;
339
414
  } else t5 = $[15];
340
415
  const handleExitComplete = useEvent(t5);
416
+ let T0;
417
+ let T1;
418
+ let t10;
341
419
  let t6;
342
- if ($[16] !== canCollapse || $[17] !== heights || $[18] !== isCollapsed || $[19] !== lastPositionsRef || $[20] !== positions) {
343
- t6 = (item_1, index, total) => {
344
- const id_1 = getItemId(item_1);
345
- const baseTop = positions.get(id_1) ?? lastPositionsRef.current?.get(id_1) ?? 0;
346
- const height = heights[id_1] ?? DEFAULT_ITEM_HEIGHT;
347
- if (!isCollapsed || !canCollapse) return { top: `${baseTop}px` };
348
- const isNewest = index === total - 1;
349
- return {
350
- top: `${COLLAPSE_VISIBLE_HEIGHT - CONTAINER_OFFSET - height}px`,
351
- zIndex: index,
352
- opacity: isNewest ? 1 : 0,
353
- pointerEvents: "none"
354
- };
355
- };
356
- $[16] = canCollapse;
357
- $[17] = heights;
358
- $[18] = isCollapsed;
359
- $[19] = lastPositionsRef;
360
- $[20] = positions;
361
- $[21] = t6;
362
- } else t6 = $[21];
363
- const getItemStyle = t6;
364
- let map;
365
- if ($[22] !== visibleItems) {
366
- map = /* @__PURE__ */ new Map();
367
- visibleItems.forEach((item_2, index_0) => {
368
- map.set(getItemId(item_2), index_0);
369
- });
370
- $[22] = visibleItems;
371
- $[23] = map;
372
- } else map = $[23];
373
- const visibleIndexMap = map;
374
- if (allItems.length === 0) return null;
375
420
  let t7;
376
- if ($[24] !== allItems || $[25] !== createRefCallback || $[26] !== getItemStyle || $[27] !== handleExitComplete || $[28] !== handleMouseEnter || $[29] !== handleMouseLeave || $[30] !== handleNotificationDismiss || $[31] !== onNotificationRestore || $[32] !== settledIds || $[33] !== visibleIndexMap || $[34] !== visibleItems.length) {
377
- t7 = allItems.map((item_3) => {
378
- const itemId = getItemId(item_3);
379
- const visibleIndex = visibleIndexMap.get(itemId) ?? 0;
380
- return /* @__PURE__ */ jsx(DisplayTransition, {
381
- isShown: !isItemExiting(item_3),
382
- onRest: (transition) => {
383
- if (transition === "exit") handleExitComplete(item_3);
384
- },
385
- children: (t8) => {
386
- const { isShown, ref } = t8;
387
- return /* @__PURE__ */ jsx(OverlayItemWrapper, {
388
- ref: createRefCallback(itemId, ref),
389
- mods: {
390
- isShown,
391
- isMeasured: settledIds.has(itemId)
392
- },
393
- style: getItemStyle(item_3, visibleIndex, visibleItems.length),
394
- onMouseEnter: handleMouseEnter,
395
- onMouseLeave: handleMouseLeave,
396
- children: item_3.kind === "toast" ? /* @__PURE__ */ jsx(ToastItem, {
397
- ...item_3.data.itemProps,
398
- title: item_3.data.title,
399
- description: item_3.data.description,
400
- theme: item_3.data.theme,
401
- icon: item_3.data.icon,
402
- isLoading: item_3.data.isLoading,
403
- actions: item_3.data.actions
404
- }) : /* @__PURE__ */ jsx(NotificationItem, {
405
- notification: item_3.data,
406
- onDismiss: handleNotificationDismiss,
407
- onRestore: onNotificationRestore
408
- })
409
- });
410
- }
411
- }, itemId);
412
- });
413
- $[24] = allItems;
414
- $[25] = createRefCallback;
415
- $[26] = getItemStyle;
416
- $[27] = handleExitComplete;
417
- $[28] = handleMouseEnter;
418
- $[29] = handleMouseLeave;
419
- $[30] = handleNotificationDismiss;
420
- $[31] = onNotificationRestore;
421
- $[32] = settledIds;
422
- $[33] = visibleIndexMap;
423
- $[34] = visibleItems.length;
424
- $[35] = t7;
425
- } else t7 = $[35];
426
421
  let t8;
427
- if ($[36] !== containerRef || $[37] !== handleBlur || $[38] !== handleFocus || $[39] !== t7) {
428
- t8 = /* @__PURE__ */ jsx(Portal, { children: /* @__PURE__ */ jsx(OverlayContainerElement, {
429
- ref: containerRef,
430
- onFocus: handleFocus,
431
- onBlur: handleBlur,
432
- children: t7
433
- }) });
434
- $[36] = containerRef;
435
- $[37] = handleBlur;
436
- $[38] = handleFocus;
437
- $[39] = t7;
438
- $[40] = t8;
439
- } else t8 = $[40];
440
- return t8;
422
+ let t9;
423
+ if ($[16] !== allItems || $[17] !== canCollapse || $[18] !== containerRef || $[19] !== createRefCallback || $[20] !== handleBlur || $[21] !== handleExitComplete || $[22] !== handleFocus || $[23] !== handleMouseEnter || $[24] !== handleMouseLeave || $[25] !== handleNotificationDismiss || $[26] !== heights || $[27] !== isCollapsed || $[28] !== lastPositionsRef || $[29] !== onNotificationRestore || $[30] !== positions || $[31] !== settledIds || $[32] !== visibleItems) {
424
+ t10 = Symbol.for("react.early_return_sentinel");
425
+ bb0: {
426
+ const getItemStyle = (item_1, index, total) => {
427
+ const id_1 = getItemId(item_1);
428
+ const baseTop = positions.get(id_1) ?? lastPositionsRef.current?.get(id_1) ?? 0;
429
+ const height = heights[id_1] ?? DEFAULT_ITEM_HEIGHT;
430
+ if (!isCollapsed || !canCollapse) return { top: `${baseTop}px` };
431
+ const isNewest = index === total - 1;
432
+ return {
433
+ top: `${COLLAPSE_VISIBLE_HEIGHT - CONTAINER_OFFSET - height}px`,
434
+ zIndex: index,
435
+ opacity: isNewest ? 1 : 0,
436
+ pointerEvents: "none"
437
+ };
438
+ };
439
+ const visibleIndexMap = new Map(visibleItems.map(_temp8));
440
+ if (allItems.length === 0) {
441
+ t10 = null;
442
+ break bb0;
443
+ }
444
+ T1 = Portal;
445
+ T0 = OverlayContainerElement;
446
+ t6 = containerRef;
447
+ t7 = handleFocus;
448
+ t8 = handleBlur;
449
+ t9 = allItems.map((item_3) => {
450
+ const itemId = getItemId(item_3);
451
+ const visibleIndex = visibleIndexMap.get(itemId) ?? 0;
452
+ return /* @__PURE__ */ jsx(DisplayTransition, {
453
+ isShown: !isItemExiting(item_3),
454
+ onRest: (transition) => {
455
+ if (transition === "exit") handleExitComplete(item_3);
456
+ },
457
+ children: (t11) => {
458
+ const { isShown, ref } = t11;
459
+ return /* @__PURE__ */ jsx(OverlayItemWrapper, {
460
+ ref: createRefCallback(itemId, ref),
461
+ mods: {
462
+ isShown,
463
+ isMeasured: settledIds.has(itemId)
464
+ },
465
+ style: getItemStyle(item_3, visibleIndex, visibleItems.length),
466
+ onMouseEnter: handleMouseEnter,
467
+ onMouseLeave: handleMouseLeave,
468
+ children: item_3.kind === "toast" ? /* @__PURE__ */ jsx(ToastItem, {
469
+ ...item_3.data.itemProps,
470
+ title: item_3.data.title,
471
+ description: item_3.data.description,
472
+ theme: item_3.data.theme,
473
+ icon: item_3.data.icon,
474
+ isLoading: item_3.data.isLoading,
475
+ actions: item_3.data.actions
476
+ }) : /* @__PURE__ */ jsx(NotificationItem, {
477
+ notification: item_3.data,
478
+ onDismiss: handleNotificationDismiss,
479
+ onRestore: onNotificationRestore
480
+ })
481
+ });
482
+ }
483
+ }, itemId);
484
+ });
485
+ }
486
+ $[16] = allItems;
487
+ $[17] = canCollapse;
488
+ $[18] = containerRef;
489
+ $[19] = createRefCallback;
490
+ $[20] = handleBlur;
491
+ $[21] = handleExitComplete;
492
+ $[22] = handleFocus;
493
+ $[23] = handleMouseEnter;
494
+ $[24] = handleMouseLeave;
495
+ $[25] = handleNotificationDismiss;
496
+ $[26] = heights;
497
+ $[27] = isCollapsed;
498
+ $[28] = lastPositionsRef;
499
+ $[29] = onNotificationRestore;
500
+ $[30] = positions;
501
+ $[31] = settledIds;
502
+ $[32] = visibleItems;
503
+ $[33] = T0;
504
+ $[34] = T1;
505
+ $[35] = t10;
506
+ $[36] = t6;
507
+ $[37] = t7;
508
+ $[38] = t8;
509
+ $[39] = t9;
510
+ } else {
511
+ T0 = $[33];
512
+ T1 = $[34];
513
+ t10 = $[35];
514
+ t6 = $[36];
515
+ t7 = $[37];
516
+ t8 = $[38];
517
+ t9 = $[39];
518
+ }
519
+ if (t10 !== Symbol.for("react.early_return_sentinel")) return t10;
520
+ let t11;
521
+ if ($[40] !== T0 || $[41] !== t6 || $[42] !== t7 || $[43] !== t8 || $[44] !== t9) {
522
+ t11 = /* @__PURE__ */ jsx(T0, {
523
+ ref: t6,
524
+ onFocus: t7,
525
+ onBlur: t8,
526
+ children: t9
527
+ });
528
+ $[40] = T0;
529
+ $[41] = t6;
530
+ $[42] = t7;
531
+ $[43] = t8;
532
+ $[44] = t9;
533
+ $[45] = t11;
534
+ } else t11 = $[45];
535
+ let t12;
536
+ if ($[46] !== T1 || $[47] !== t11) {
537
+ t12 = /* @__PURE__ */ jsx(T1, { children: t11 });
538
+ $[46] = T1;
539
+ $[47] = t11;
540
+ $[48] = t12;
541
+ } else t12 = $[48];
542
+ return t12;
543
+ }
544
+ function _temp8(item_2, index_0) {
545
+ return [getItemId(item_2), index_0];
441
546
  }
442
547
  function _temp7(t_0) {
443
548
  return !t_0.isExiting && t_0.actions;
@@ -1 +1 @@
1
- {"version":3,"file":"OverlayContainer.js","names":["tasty","FocusEvent","Key","RefObject","useCallback","useEffect","useMemo","useRef","useState","useEvent","useLayoutEffect","DisplayTransition","Portal","ToastItem","NotificationItem","InternalToast","DismissReason","InternalNotification","COLLAPSE_VISIBLE_HEIGHT","CONTAINER_OFFSET","ITEM_GAP","DEFAULT_ITEM_HEIGHT","OverlayContainerElement","styles","position","top","left","transform","zIndex","padding","height","pointerEvents","OverlayItemWrapper","width","transition","isMeasured","opacity","isShown","OverlayItem","kind","data","getItemId","item","internalId","isItemExiting","isExiting","getItemCreatedAt","createdAt","ItemPositionsResult","heights","Record","settledIds","Set","positions","Map","lastPositionsRef","ReturnType","itemRefs","HTMLDivElement","createRefCallback","itemId","displayRef","el","HTMLElement","useItemPositions","visibleItems","$","_c","t0","Symbol","for","setHeights","t1","t2","t3","setSettledIds","rafRef","t4","newHeights","hasChanges","current","forEach","id","offsetHeight","id_0","Object","keys","has","t5","heightKeys","newIds","filter","id_1","hasStaleIds","size","some","id_2","length","cancelAnimationFrame","prev","id_3","requestAnimationFrame","prev_0","next","id_4","add","id_5","t6","t7","el_0","set","delete","posMap","currentTop","id_6","height_0","t8","t9","pos","id_7","t10","CollapseStateResult","isCollapsed","handleMouseEnter","handleMouseLeave","handleFocus","handleBlur","e","containerRef","useCollapseState","canCollapse","allItems","onPauseChange","paused","setIsCollapsed","boundsRef","DOMRect","updateBounds","refs","minX","Infinity","minY","maxX","maxY","rect","getBoundingClientRect","Math","min","max","right","bottom","x","y","toJSON","handleMouseMove","MouseEvent","bounds","isInBounds","clientX","clientY","window","addEventListener","removeEventListener","contains","relatedTarget","Node","OverlayContainerProps","toasts","notifications","onToastExitComplete","onNotificationExitComplete","onNotificationDismiss","reason","onNotificationRestore","OverlayContainer","items","map","_temp2","_temp3","sort","_temp4","_temp5","_temp6","hasNotifications","_temp7","hasActionableToasts","handleNotificationDismiss","item_0","handleExitComplete","item_1","index","total","baseTop","get","isNewest","collapsedTop","const","getItemStyle","item_2","index_0","visibleIndexMap","item_3","visibleIndex","ref","itemProps","title","description","theme","icon","isLoading","actions","t_0","t","n_0","n","a","b"],"sources":["../../../../src/components/overlays/Notifications/OverlayContainer.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport {\n FocusEvent,\n Key,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition';\nimport { Portal } from '../../portal';\nimport { ToastItem } from '../Toast/ToastItem';\n\nimport { NotificationItem } from './NotificationItem';\n\nimport type { InternalToast } from '../Toast/types';\nimport type { DismissReason, InternalNotification } from './types';\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst COLLAPSE_VISIBLE_HEIGHT = 10;\nconst CONTAINER_OFFSET = 16;\nconst ITEM_GAP = 8;\nconst DEFAULT_ITEM_HEIGHT = 56;\n\n// ─── Styled Elements ─────────────────────────────────────────────────\n\nconst OverlayContainerElement = tasty({\n styles: {\n position: 'fixed',\n top: '2x',\n left: '50%',\n transform: 'translateX(-50%)',\n zIndex: 100,\n padding: '1x',\n height: '0',\n pointerEvents: 'none',\n },\n});\n\nconst OverlayItemWrapper = tasty({\n styles: {\n position: 'absolute',\n top: '0',\n left: '50%',\n transform: {\n '': 'translateX(-50%) translateY(-50%)',\n 'isMeasured & isShown': 'translateX(-50%) translateY(0)',\n },\n width: 'max-content 50x',\n pointerEvents: 'auto',\n transition: {\n '': 'opacity $transition ease-in, transform $transition ease-in',\n isMeasured:\n 'top $transition ease-in, opacity $transition ease-in, transform $transition ease-in',\n },\n opacity: {\n '': 0,\n isShown: 1,\n },\n },\n});\n\n// ─── Unified Item Type ───────────────────────────────────────────────\n\ntype OverlayItem =\n | { kind: 'toast'; data: InternalToast }\n | { kind: 'notification'; data: InternalNotification };\n\nfunction getItemId(item: OverlayItem): string {\n return item.data.internalId;\n}\n\nfunction isItemExiting(item: OverlayItem): boolean {\n return item.data.isExiting === true;\n}\n\nfunction getItemCreatedAt(item: OverlayItem): number {\n return item.data.createdAt;\n}\n\n// ─── useItemPositions Hook ───────────────────────────────────────────\n\ninterface ItemPositionsResult {\n heights: Record<string, number>;\n /** Set of item IDs that have been measured AND painted at their correct position. */\n settledIds: Set<string>;\n positions: Map<string, number>;\n lastPositionsRef: ReturnType<typeof useRef<Map<string, number>>>;\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>;\n createRefCallback: (\n itemId: string,\n displayRef: (el: HTMLElement | null) => void,\n ) => (el: HTMLDivElement | null) => void;\n}\n\n/**\n * Manages height measurement, position calculation, and ref tracking\n * for overlay items. Extracted from OverlayContainer for readability.\n */\nfunction useItemPositions(visibleItems: OverlayItem[]): ItemPositionsResult {\n const [heights, setHeights] = useState<Record<string, number>>({});\n const itemRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n const lastPositionsRef = useRef<Map<string, number>>(new Map());\n\n // Items that have been measured AND painted at their correct position.\n // Lags one frame behind `heights` so the browser paints the item at\n // its final `top` before the CSS `top` transition is enabled.\n const [settledIds, setSettledIds] = useState<Set<string>>(new Set());\n const rafRef = useRef<number | null>(null);\n\n // Measure heights using layout effect to avoid visible layout shifts.\n // Runs every render but bails early if nothing changed.\n useLayoutEffect(() => {\n const newHeights: Record<string, number> = {};\n let hasChanges = false;\n\n itemRefs.current.forEach((el, id) => {\n const height = el.offsetHeight || DEFAULT_ITEM_HEIGHT;\n newHeights[id] = height;\n\n if (heights[id] !== height) {\n hasChanges = true;\n }\n });\n\n for (const id of Object.keys(heights)) {\n if (!itemRefs.current.has(id)) {\n hasChanges = true;\n }\n }\n\n if (hasChanges) {\n setHeights(newHeights);\n }\n });\n\n // After heights change, schedule settledIds update for the next frame.\n // This ensures the item is painted at its correct position (with no top\n // transition) before we enable the transition.\n useEffect(() => {\n const heightKeys = Object.keys(heights);\n const newIds = heightKeys.filter((id) => !settledIds.has(id));\n const hasStaleIds =\n settledIds.size > 0 && [...settledIds].some((id) => !(id in heights));\n\n if (newIds.length === 0 && !hasStaleIds) return;\n\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n }\n\n // For pruning-only updates (no new items), apply synchronously since\n // there's no need to wait for a paint frame.\n if (newIds.length === 0 && hasStaleIds) {\n setSettledIds((prev) => new Set(heightKeys.filter((id) => prev.has(id))));\n return;\n }\n\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n setSettledIds((prev) => {\n const next = new Set<string>();\n\n // Only keep IDs that still exist in heights (prune removed items)\n for (const id of heightKeys) {\n if (prev.has(id)) {\n next.add(id);\n }\n }\n\n for (const id of newIds) {\n next.add(id);\n }\n\n return next;\n });\n });\n\n return () => {\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n }, [heights]);\n\n const createRefCallback = useCallback(\n (itemId: string, displayRef: (el: HTMLElement | null) => void) =>\n (el: HTMLDivElement | null) => {\n displayRef(el);\n\n if (el) {\n itemRefs.current.set(itemId, el);\n } else {\n itemRefs.current.delete(itemId);\n }\n },\n [],\n );\n\n const positions = useMemo(() => {\n const posMap = new Map<string, number>();\n let currentTop = 0;\n\n for (const item of visibleItems) {\n const id = getItemId(item);\n posMap.set(id, currentTop);\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n currentTop += height + ITEM_GAP;\n }\n\n return posMap;\n }, [visibleItems, heights]);\n\n useEffect(() => {\n positions.forEach((pos, id) => {\n lastPositionsRef.current.set(id, pos);\n });\n }, [positions]);\n\n return {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n };\n}\n\n// ─── useCollapseState Hook ───────────────────────────────────────────\n\ninterface CollapseStateResult {\n isCollapsed: boolean;\n handleMouseEnter: () => void;\n handleMouseLeave: () => void;\n handleFocus: () => void;\n handleBlur: (e: FocusEvent) => void;\n containerRef: RefObject<HTMLDivElement | null>;\n}\n\n/**\n * Manages collapse/expand behavior and pause state for the overlay container.\n * Extracted from OverlayContainer for readability.\n */\nfunction useCollapseState(\n canCollapse: boolean,\n allItems: OverlayItem[],\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>,\n onPauseChange: (paused: boolean) => void,\n): CollapseStateResult {\n const [isCollapsed, setIsCollapsed] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const boundsRef = useRef<DOMRect | null>(null);\n\n const updateBounds = useCallback(() => {\n const refs = itemRefs.current;\n\n if (!refs || refs.size === 0) {\n boundsRef.current = null;\n return;\n }\n\n let minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n maxY = -Infinity;\n\n refs.forEach((el) => {\n const rect = el.getBoundingClientRect();\n minX = Math.min(minX, rect.left);\n minY = Math.min(minY, rect.top);\n maxX = Math.max(maxX, rect.right);\n maxY = Math.max(maxY, rect.bottom);\n });\n\n if (typeof DOMRect !== 'undefined') {\n boundsRef.current = new DOMRect(minX, minY, maxX - minX, maxY - minY);\n } else {\n boundsRef.current = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n top: minY,\n right: maxX,\n bottom: maxY,\n left: minX,\n toJSON: () => ({}),\n } as DOMRect;\n }\n }, [itemRefs]);\n\n // Track mouse for collapse — expand when mouse leaves bounds\n useEffect(() => {\n if (!isCollapsed) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n const bounds = boundsRef.current;\n\n if (!bounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n return;\n }\n\n const padding = 20;\n const isInBounds =\n e.clientX >= bounds.left - padding &&\n e.clientX <= bounds.right + padding &&\n e.clientY >= bounds.top - padding &&\n e.clientY <= bounds.bottom + padding;\n\n if (!isInBounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n }\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n return () => window.removeEventListener('mousemove', handleMouseMove);\n }, [isCollapsed, onPauseChange]);\n\n // Update bounds when items change\n useEffect(() => {\n updateBounds();\n }, [allItems, updateBounds]);\n\n const handleMouseEnter = useCallback(() => {\n updateBounds();\n onPauseChange(true);\n\n if (canCollapse) {\n setIsCollapsed(true);\n }\n }, [updateBounds, canCollapse, onPauseChange]);\n\n const handleMouseLeave = useCallback(() => {\n if (!isCollapsed) {\n onPauseChange(false);\n }\n }, [isCollapsed, onPauseChange]);\n\n const handleFocus = useCallback(() => {\n onPauseChange(true);\n }, [onPauseChange]);\n\n const handleBlur = useCallback(\n (e: FocusEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.relatedTarget as Node)\n ) {\n onPauseChange(false);\n }\n },\n [onPauseChange],\n );\n\n return {\n isCollapsed,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n };\n}\n\n// ─── Overlay Container ───────────────────────────────────────────────\n//\n// INTENTIONAL: Position calculations are done manually (absolute positioning + JS\n// height tracking) rather than relying on CSS flexbox/grid layout. This is\n// deliberate — the container mixes enter/exit animations, collapse behavior, and\n// heterogeneous item sizes (toasts vs notifications) which require per-item\n// position control. CSS-only solutions (e.g., flex column with gap) break when\n// items exit asynchronously or when collapse transforms need to be computed per-item.\n\nexport interface OverlayContainerProps {\n toasts: InternalToast[];\n notifications: InternalNotification[];\n onToastExitComplete: (internalId: string) => void;\n onNotificationExitComplete: (internalId: string) => void;\n onNotificationDismiss: (id: Key, reason: DismissReason) => void;\n onNotificationRestore: (id: Key) => void;\n onPauseChange: (paused: boolean) => void;\n}\n\nexport function OverlayContainer({\n toasts,\n notifications,\n onToastExitComplete,\n onNotificationExitComplete,\n onNotificationDismiss,\n onNotificationRestore,\n onPauseChange,\n}: OverlayContainerProps) {\n // Merge toasts and notifications into a single ordered list\n const allItems: OverlayItem[] = useMemo(() => {\n const items: OverlayItem[] = [\n ...toasts.map((t): OverlayItem => ({ kind: 'toast', data: t })),\n ...notifications.map(\n (n): OverlayItem => ({ kind: 'notification', data: n }),\n ),\n ];\n\n // Sort by createdAt ascending (oldest first = bottom of stack, newest last = top)\n items.sort((a, b) => getItemCreatedAt(a) - getItemCreatedAt(b));\n\n return items;\n }, [toasts, notifications]);\n\n const visibleItems = useMemo(\n () => allItems.filter((item) => !isItemExiting(item)),\n [allItems],\n );\n const hasNotifications = notifications.some((n) => !n.isExiting);\n const hasActionableToasts = toasts.some((t) => !t.isExiting && t.actions);\n const canCollapse = !hasNotifications && !hasActionableToasts;\n\n const {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n } = useItemPositions(visibleItems);\n\n const {\n isCollapsed,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n } = useCollapseState(canCollapse, allItems, itemRefs, onPauseChange);\n\n // ─── Callbacks ─────────────────────────────────────────────────────\n\n // When the user dismisses a notification they were hovering, the element\n // is removed from the DOM so mouseLeave never fires. Explicitly unpause\n // so remaining notifications' timers resume.\n const handleNotificationDismiss = useEvent(\n (id: Key, reason: DismissReason) => {\n onNotificationDismiss(id, reason);\n onPauseChange(false);\n },\n );\n\n const handleExitComplete = useEvent((item: OverlayItem) => {\n const id = getItemId(item);\n lastPositionsRef.current?.delete(id);\n\n if (item.kind === 'toast') {\n onToastExitComplete(item.data.internalId);\n } else {\n onNotificationExitComplete(item.data.internalId);\n }\n });\n\n // useCallback (not useEvent) because this is called during render.\n // useEvent defers the ref update to useLayoutEffect, so during render\n // it would still read the previous closure's positions/heights.\n const getItemStyle = useCallback(\n (item: OverlayItem, index: number, total: number) => {\n const id = getItemId(item);\n const baseTop =\n positions.get(id) ?? lastPositionsRef.current?.get(id) ?? 0;\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n\n if (!isCollapsed || !canCollapse) {\n return { top: `${baseTop}px` };\n }\n\n const isNewest = index === total - 1;\n const collapsedTop = COLLAPSE_VISIBLE_HEIGHT - CONTAINER_OFFSET - height;\n\n return {\n top: `${collapsedTop}px`,\n zIndex: index,\n opacity: isNewest ? 1 : 0,\n pointerEvents: 'none' as const,\n };\n },\n [isCollapsed, canCollapse, positions, heights, lastPositionsRef],\n );\n\n // Build a visibleIndex lookup map to avoid O(n²) findIndex inside render loop\n const visibleIndexMap = useMemo(() => {\n const map = new Map<string, number>();\n\n visibleItems.forEach((item, index) => {\n map.set(getItemId(item), index);\n });\n\n return map;\n }, [visibleItems]);\n\n if (allItems.length === 0) return null;\n\n return (\n <Portal>\n <OverlayContainerElement\n ref={containerRef}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {allItems.map((item) => {\n const itemId = getItemId(item);\n const visibleIndex = visibleIndexMap.get(itemId) ?? 0;\n const isExiting = isItemExiting(item);\n\n return (\n <DisplayTransition\n key={itemId}\n isShown={!isExiting}\n onRest={(transition) => {\n if (transition === 'exit') {\n handleExitComplete(item);\n }\n }}\n >\n {({ isShown, ref }) => (\n <OverlayItemWrapper\n ref={createRefCallback(itemId, ref)}\n mods={{ isShown, isMeasured: settledIds.has(itemId) }}\n style={getItemStyle(item, visibleIndex, visibleItems.length)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {item.kind === 'toast' ? (\n <ToastItem\n {...item.data.itemProps}\n title={item.data.title}\n description={item.data.description}\n theme={item.data.theme}\n icon={item.data.icon}\n isLoading={item.data.isLoading}\n actions={item.data.actions}\n />\n ) : (\n <NotificationItem\n notification={item.data}\n onDismiss={handleNotificationDismiss}\n onRestore={onNotificationRestore}\n />\n )}\n </OverlayItemWrapper>\n )}\n </DisplayTransition>\n );\n })}\n </OverlayContainerElement>\n </Portal>\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"OverlayContainer.js","names":["tasty","FocusEvent","Key","RefObject","useCallback","useEffect","useMemo","useRef","useState","useEvent","useLayoutEffect","DisplayTransition","Portal","ToastItem","NotificationItem","InternalToast","DismissReason","InternalNotification","COLLAPSE_VISIBLE_HEIGHT","CONTAINER_OFFSET","ITEM_GAP","DEFAULT_ITEM_HEIGHT","OverlayContainerElement","styles","position","top","left","transform","zIndex","padding","height","pointerEvents","OverlayItemWrapper","width","transition","isMeasured","opacity","isShown","OverlayItem","kind","data","getItemId","item","internalId","isItemExiting","isExiting","getItemCreatedAt","createdAt","ItemPositionsResult","heights","Record","settledIds","Set","positions","Map","lastPositionsRef","ReturnType","itemRefs","HTMLDivElement","createRefCallback","itemId","displayRef","el","HTMLElement","useItemPositions","visibleItems","$","_c","t0","Symbol","for","setHeights","t1","t2","t3","setSettledIds","rafRef","t4","newHeights","hasChanges","current","forEach","id","offsetHeight","id_0","Object","keys","has","t5","heightKeys","newIds","filter","id_1","hasStaleIds","size","some","id_2","length","cancelAnimationFrame","prev","id_3","requestAnimationFrame","prev_0","next","id_4","add","id_5","t6","t7","el_0","set","delete","posMap","currentTop","id_6","height_0","t8","t9","pos","id_7","t10","CollapseStateResult","isCollapsed","handleMouseEnter","handleMouseLeave","handleFocus","handleBlur","e","containerRef","useCollapseState","canCollapse","allItems","onPauseChange","setIsCollapsed","boundsRef","refs","minX","Infinity","minY","maxX","maxY","rect","getBoundingClientRect","Math","min","max","right","bottom","DOMRect","x","y","toJSON","_temp","updateBounds","handleMouseMove","bounds","isInBounds","clientX","clientY","window","addEventListener","removeEventListener","e_0","contains","relatedTarget","Node","OverlayContainerProps","toasts","notifications","onToastExitComplete","onNotificationExitComplete","onNotificationDismiss","reason","onNotificationRestore","paused","OverlayContainer","items","map","_temp2","_temp3","sort","_temp4","_temp5","_temp6","hasNotifications","_temp7","hasActionableToasts","handleNotificationDismiss","item_0","handleExitComplete","T0","T1","bb0","getItemStyle","item_1","index","total","baseTop","get","isNewest","collapsedTop","const","visibleIndexMap","_temp8","item_3","visibleIndex","t11","ref","itemProps","title","description","theme","icon","isLoading","actions","t12","item_2","index_0","t_0","t","n_0","n","a","b"],"sources":["../../../../src/components/overlays/Notifications/OverlayContainer.tsx"],"sourcesContent":["import { tasty } from '@tenphi/tasty';\nimport {\n FocusEvent,\n Key,\n RefObject,\n useCallback,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { useLayoutEffect } from '../../../utils/react/useLayoutEffect';\nimport { DisplayTransition } from '../../helpers/DisplayTransition/DisplayTransition';\nimport { Portal } from '../../portal';\nimport { ToastItem } from '../Toast/ToastItem';\n\nimport { NotificationItem } from './NotificationItem';\n\nimport type { InternalToast } from '../Toast/types';\nimport type { DismissReason, InternalNotification } from './types';\n\n// ─── Constants ───────────────────────────────────────────────────────\n\nconst COLLAPSE_VISIBLE_HEIGHT = 10;\nconst CONTAINER_OFFSET = 16;\nconst ITEM_GAP = 8;\nconst DEFAULT_ITEM_HEIGHT = 56;\n\n// ─── Styled Elements ─────────────────────────────────────────────────\n\nconst OverlayContainerElement = tasty({\n styles: {\n position: 'fixed',\n top: '2x',\n left: '50%',\n transform: 'translateX(-50%)',\n zIndex: 100,\n padding: '1x',\n height: '0',\n pointerEvents: 'none',\n },\n});\n\nconst OverlayItemWrapper = tasty({\n styles: {\n position: 'absolute',\n top: '0',\n left: '50%',\n transform: {\n '': 'translateX(-50%) translateY(-50%)',\n 'isMeasured & isShown': 'translateX(-50%) translateY(0)',\n },\n width: 'max-content 50x',\n pointerEvents: 'auto',\n transition: {\n '': 'opacity $transition ease-in, transform $transition ease-in',\n isMeasured:\n 'top $transition ease-in, opacity $transition ease-in, transform $transition ease-in',\n },\n opacity: {\n '': 0,\n isShown: 1,\n },\n },\n});\n\n// ─── Unified Item Type ───────────────────────────────────────────────\n\ntype OverlayItem =\n | { kind: 'toast'; data: InternalToast }\n | { kind: 'notification'; data: InternalNotification };\n\nfunction getItemId(item: OverlayItem): string {\n return item.data.internalId;\n}\n\nfunction isItemExiting(item: OverlayItem): boolean {\n return item.data.isExiting === true;\n}\n\nfunction getItemCreatedAt(item: OverlayItem): number {\n return item.data.createdAt;\n}\n\n// ─── useItemPositions Hook ───────────────────────────────────────────\n\ninterface ItemPositionsResult {\n heights: Record<string, number>;\n /** Set of item IDs that have been measured AND painted at their correct position. */\n settledIds: Set<string>;\n positions: Map<string, number>;\n lastPositionsRef: ReturnType<typeof useRef<Map<string, number>>>;\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>;\n createRefCallback: (\n itemId: string,\n displayRef: (el: HTMLElement | null) => void,\n ) => (el: HTMLDivElement | null) => void;\n}\n\n/**\n * Manages height measurement, position calculation, and ref tracking\n * for overlay items. Extracted from OverlayContainer for readability.\n */\nfunction useItemPositions(visibleItems: OverlayItem[]): ItemPositionsResult {\n const [heights, setHeights] = useState<Record<string, number>>({});\n const itemRefs = useRef<Map<string, HTMLDivElement>>(new Map());\n const lastPositionsRef = useRef<Map<string, number>>(new Map());\n\n // Items that have been measured AND painted at their correct position.\n // Lags one frame behind `heights` so the browser paints the item at\n // its final `top` before the CSS `top` transition is enabled.\n const [settledIds, setSettledIds] = useState<Set<string>>(new Set());\n const rafRef = useRef<number | null>(null);\n\n // Measure heights using layout effect to avoid visible layout shifts.\n // Runs every render but bails early if nothing changed.\n useLayoutEffect(() => {\n const newHeights: Record<string, number> = {};\n let hasChanges = false;\n\n itemRefs.current.forEach((el, id) => {\n const height = el.offsetHeight || DEFAULT_ITEM_HEIGHT;\n newHeights[id] = height;\n\n if (heights[id] !== height) {\n hasChanges = true;\n }\n });\n\n for (const id of Object.keys(heights)) {\n if (!itemRefs.current.has(id)) {\n hasChanges = true;\n }\n }\n\n if (hasChanges) {\n setHeights(newHeights);\n }\n });\n\n // After heights change, schedule settledIds update for the next frame.\n // This ensures the item is painted at its correct position (with no top\n // transition) before we enable the transition.\n useEffect(() => {\n const heightKeys = Object.keys(heights);\n const newIds = heightKeys.filter((id) => !settledIds.has(id));\n const hasStaleIds =\n settledIds.size > 0 && [...settledIds].some((id) => !(id in heights));\n\n if (newIds.length === 0 && !hasStaleIds) return;\n\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n }\n\n // For pruning-only updates (no new items), apply synchronously since\n // there's no need to wait for a paint frame.\n if (newIds.length === 0 && hasStaleIds) {\n setSettledIds((prev) => new Set(heightKeys.filter((id) => prev.has(id))));\n return;\n }\n\n rafRef.current = requestAnimationFrame(() => {\n rafRef.current = null;\n setSettledIds((prev) => {\n const next = new Set<string>();\n\n // Only keep IDs that still exist in heights (prune removed items)\n for (const id of heightKeys) {\n if (prev.has(id)) {\n next.add(id);\n }\n }\n\n for (const id of newIds) {\n next.add(id);\n }\n\n return next;\n });\n });\n\n return () => {\n if (rafRef.current != null) {\n cancelAnimationFrame(rafRef.current);\n rafRef.current = null;\n }\n };\n }, [heights]);\n\n const createRefCallback =\n (itemId: string, displayRef: (el: HTMLElement | null) => void) =>\n (el: HTMLDivElement | null) => {\n displayRef(el);\n\n if (el) {\n itemRefs.current.set(itemId, el);\n } else {\n itemRefs.current.delete(itemId);\n }\n };\n\n const positions = useMemo(() => {\n const posMap = new Map<string, number>();\n let currentTop = 0;\n\n for (const item of visibleItems) {\n const id = getItemId(item);\n posMap.set(id, currentTop);\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n currentTop += height + ITEM_GAP;\n }\n\n return posMap;\n }, [visibleItems, heights]);\n\n useEffect(() => {\n positions.forEach((pos, id) => {\n lastPositionsRef.current.set(id, pos);\n });\n }, [positions]);\n\n return {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n };\n}\n\n// ─── useCollapseState Hook ───────────────────────────────────────────\n\ninterface CollapseStateResult {\n isCollapsed: boolean;\n handleMouseEnter: () => void;\n handleMouseLeave: () => void;\n handleFocus: () => void;\n handleBlur: (e: FocusEvent) => void;\n containerRef: RefObject<HTMLDivElement | null>;\n}\n\n/**\n * Manages collapse/expand behavior and pause state for the overlay container.\n * Extracted from OverlayContainer for readability.\n */\nfunction useCollapseState(\n canCollapse: boolean,\n allItems: OverlayItem[],\n itemRefs: ReturnType<typeof useRef<Map<string, HTMLDivElement>>>,\n onPauseChange: (paused: boolean) => void,\n): CollapseStateResult {\n const [isCollapsed, setIsCollapsed] = useState(false);\n const containerRef = useRef<HTMLDivElement>(null);\n const boundsRef = useRef<DOMRect | null>(null);\n\n const updateBounds = () => {\n const refs = itemRefs.current;\n\n if (!refs || refs.size === 0) {\n boundsRef.current = null;\n return;\n }\n\n let minX = Infinity,\n minY = Infinity,\n maxX = -Infinity,\n maxY = -Infinity;\n\n refs.forEach((el) => {\n const rect = el.getBoundingClientRect();\n minX = Math.min(minX, rect.left);\n minY = Math.min(minY, rect.top);\n maxX = Math.max(maxX, rect.right);\n maxY = Math.max(maxY, rect.bottom);\n });\n\n if (typeof DOMRect !== 'undefined') {\n boundsRef.current = new DOMRect(minX, minY, maxX - minX, maxY - minY);\n } else {\n boundsRef.current = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n top: minY,\n right: maxX,\n bottom: maxY,\n left: minX,\n toJSON: () => ({}),\n } as DOMRect;\n }\n };\n\n // Track mouse for collapse — expand when mouse leaves bounds\n useEffect(() => {\n if (!isCollapsed) return;\n\n const handleMouseMove = (e: MouseEvent) => {\n const bounds = boundsRef.current;\n\n if (!bounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n return;\n }\n\n const padding = 20;\n const isInBounds =\n e.clientX >= bounds.left - padding &&\n e.clientX <= bounds.right + padding &&\n e.clientY >= bounds.top - padding &&\n e.clientY <= bounds.bottom + padding;\n\n if (!isInBounds) {\n setIsCollapsed(false);\n onPauseChange(false);\n }\n };\n\n window.addEventListener('mousemove', handleMouseMove);\n return () => window.removeEventListener('mousemove', handleMouseMove);\n }, [isCollapsed, onPauseChange]);\n\n // Update bounds when items change\n useEffect(() => {\n updateBounds();\n }, [allItems, updateBounds]);\n\n const handleMouseEnter = () => {\n updateBounds();\n onPauseChange(true);\n\n if (canCollapse) {\n setIsCollapsed(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (!isCollapsed) {\n onPauseChange(false);\n }\n };\n\n const handleFocus = () => {\n onPauseChange(true);\n };\n\n const handleBlur = (e: FocusEvent) => {\n if (\n containerRef.current &&\n !containerRef.current.contains(e.relatedTarget as Node)\n ) {\n onPauseChange(false);\n }\n };\n\n return {\n isCollapsed,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n };\n}\n\n// ─── Overlay Container ───────────────────────────────────────────────\n//\n// INTENTIONAL: Position calculations are done manually (absolute positioning + JS\n// height tracking) rather than relying on CSS flexbox/grid layout. This is\n// deliberate — the container mixes enter/exit animations, collapse behavior, and\n// heterogeneous item sizes (toasts vs notifications) which require per-item\n// position control. CSS-only solutions (e.g., flex column with gap) break when\n// items exit asynchronously or when collapse transforms need to be computed per-item.\n\nexport interface OverlayContainerProps {\n toasts: InternalToast[];\n notifications: InternalNotification[];\n onToastExitComplete: (internalId: string) => void;\n onNotificationExitComplete: (internalId: string) => void;\n onNotificationDismiss: (id: Key, reason: DismissReason) => void;\n onNotificationRestore: (id: Key) => void;\n onPauseChange: (paused: boolean) => void;\n}\n\nexport function OverlayContainer({\n toasts,\n notifications,\n onToastExitComplete,\n onNotificationExitComplete,\n onNotificationDismiss,\n onNotificationRestore,\n onPauseChange,\n}: OverlayContainerProps) {\n // Merge toasts and notifications into a single ordered list\n const allItems: OverlayItem[] = useMemo(() => {\n const items: OverlayItem[] = [\n ...toasts.map((t): OverlayItem => ({ kind: 'toast', data: t })),\n ...notifications.map(\n (n): OverlayItem => ({ kind: 'notification', data: n }),\n ),\n ];\n\n // Sort by createdAt ascending (oldest first = bottom of stack, newest last = top)\n items.sort((a, b) => getItemCreatedAt(a) - getItemCreatedAt(b));\n\n return items;\n }, [toasts, notifications]);\n\n const visibleItems = useMemo(\n () => allItems.filter((item) => !isItemExiting(item)),\n [allItems],\n );\n const hasNotifications = notifications.some((n) => !n.isExiting);\n const hasActionableToasts = toasts.some((t) => !t.isExiting && t.actions);\n const canCollapse = !hasNotifications && !hasActionableToasts;\n\n const {\n heights,\n settledIds,\n positions,\n lastPositionsRef,\n itemRefs,\n createRefCallback,\n } = useItemPositions(visibleItems);\n\n const {\n isCollapsed,\n handleMouseEnter,\n handleMouseLeave,\n handleFocus,\n handleBlur,\n containerRef,\n } = useCollapseState(canCollapse, allItems, itemRefs, onPauseChange);\n\n // ─── Callbacks ─────────────────────────────────────────────────────\n\n // When the user dismisses a notification they were hovering, the element\n // is removed from the DOM so mouseLeave never fires. Explicitly unpause\n // so remaining notifications' timers resume.\n const handleNotificationDismiss = useEvent(\n (id: Key, reason: DismissReason) => {\n onNotificationDismiss(id, reason);\n onPauseChange(false);\n },\n );\n\n const handleExitComplete = useEvent((item: OverlayItem) => {\n const id = getItemId(item);\n lastPositionsRef.current?.delete(id);\n\n if (item.kind === 'toast') {\n onToastExitComplete(item.data.internalId);\n } else {\n onNotificationExitComplete(item.data.internalId);\n }\n });\n\n // useCallback (not useEvent) because this is called during render.\n // useEvent defers the ref update to useLayoutEffect, so during render\n // it would still read the previous closure's positions/heights.\n const getItemStyle = (item: OverlayItem, index: number, total: number) => {\n const id = getItemId(item);\n const baseTop = positions.get(id) ?? lastPositionsRef.current?.get(id) ?? 0;\n const height = heights[id] ?? DEFAULT_ITEM_HEIGHT;\n\n if (!isCollapsed || !canCollapse) {\n return { top: `${baseTop}px` };\n }\n\n const isNewest = index === total - 1;\n const collapsedTop = COLLAPSE_VISIBLE_HEIGHT - CONTAINER_OFFSET - height;\n\n return {\n top: `${collapsedTop}px`,\n zIndex: index,\n opacity: isNewest ? 1 : 0,\n pointerEvents: 'none' as const,\n };\n };\n\n // Build a visibleIndex lookup map to avoid O(n²) findIndex inside render loop\n const visibleIndexMap = new Map<string, number>(\n visibleItems.map((item, index) => [getItemId(item), index]),\n );\n\n if (allItems.length === 0) return null;\n\n return (\n <Portal>\n <OverlayContainerElement\n ref={containerRef}\n onFocus={handleFocus}\n onBlur={handleBlur}\n >\n {allItems.map((item) => {\n const itemId = getItemId(item);\n const visibleIndex = visibleIndexMap.get(itemId) ?? 0;\n const isExiting = isItemExiting(item);\n\n return (\n <DisplayTransition\n key={itemId}\n isShown={!isExiting}\n onRest={(transition) => {\n if (transition === 'exit') {\n handleExitComplete(item);\n }\n }}\n >\n {({ isShown, ref }) => (\n <OverlayItemWrapper\n ref={createRefCallback(itemId, ref)}\n mods={{ isShown, isMeasured: settledIds.has(itemId) }}\n style={getItemStyle(item, visibleIndex, visibleItems.length)}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n >\n {item.kind === 'toast' ? (\n <ToastItem\n {...item.data.itemProps}\n title={item.data.title}\n description={item.data.description}\n theme={item.data.theme}\n icon={item.data.icon}\n isLoading={item.data.isLoading}\n actions={item.data.actions}\n />\n ) : (\n <NotificationItem\n notification={item.data}\n onDismiss={handleNotificationDismiss}\n onRestore={onNotificationRestore}\n />\n )}\n </OverlayItemWrapper>\n )}\n </DisplayTransition>\n );\n })}\n </OverlayContainerElement>\n </Portal>\n );\n}\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0b79a39 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
2
2
  import { NotificationContext, PersistentNotificationsContext, ToastContext, useNotificationContext, useToastContext } from "./NotificationContext.js";
3
3
  import { OverlayContainer } from "./OverlayContainer.js";
4
4
  import { useNotificationState } from "./use-notification-state.js";
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0b79a39 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | 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.0.0-canary-0b79a39 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
2
2
  //#region src/components/overlays/Notifications/dismissed-storage.ts
3
3
  const STORAGE_KEY = "cube-ui-dismissed-notifications";
4
4
  const TTL_MS = 864e5;
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0b79a39 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
2
2
  //#region src/components/overlays/Notifications/format-relative-time.ts
3
3
  /**
4
4
  * Lightweight relative time formatter.
@@ -1,4 +1,4 @@
1
- /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-0b79a39 | Cube Dev Team */
1
+ /** @license MIT | @cube-dev/ui-kit v0.0.0-canary-c02e70f | Cube Dev Team */
2
2
  import { useToastContext } from "./NotificationContext.js";
3
3
  import { NotificationAction } from "./NotificationAction.js";
4
4
  import { NotificationCard } from "./NotificationCard.js";