@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.
- package/dist/CHANGELOG.md +6 -0
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +23 -21
- package/dist/components/GlobalStyles.js.map +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Banner/Banner.js.map +1 -1
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +128 -66
- package/dist/components/actions/ButtonSplit/ButtonSplit.js.map +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +451 -280
- package/dist/components/actions/CommandMenu/CommandMenu.js.map +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +57 -93
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +49 -69
- package/dist/components/actions/Menu/Menu.js.map +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +44 -60
- package/dist/components/content/Disclosure/Disclosure.js.map +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +39 -65
- package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
- package/dist/components/content/Item/Item.js +208 -263
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +70 -145
- package/dist/components/content/ItemBadge/ItemBadge.js.map +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +39 -18
- package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
- package/dist/components/content/Layout/LayoutContent.js +100 -48
- package/dist/components/content/Layout/LayoutContent.js.map +1 -1
- package/dist/components/content/Layout/LayoutContext.js +211 -95
- package/dist/components/content/Layout/LayoutContext.js.map +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js.map +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +240 -123
- package/dist/components/content/Layout/LayoutPane.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js.map +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +28 -48
- package/dist/components/content/Result/Result.js.map +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Tag/Tag.js +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +9 -17
- package/dist/components/content/TextItem/TextItem.js.map +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +1 -1
- package/dist/components/content/Tree/TreeNode.js +1 -1
- package/dist/components/content/Tree/styled.js +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +68 -105
- package/dist/components/content/Tree/use-checkbox-tree.js.map +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +106 -138
- package/dist/components/content/use-auto-tooltip.js.map +1 -1
- package/dist/components/data/DataTable/DataTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableView.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.js +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-order.js +30 -31
- package/dist/components/data/TableBase/use-column-order.js.map +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +38 -42
- package/dist/components/data/TableBase/use-table-sort.js.map +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +19 -57
- package/dist/components/data/TableBase/use-table-sorts.js.map +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +55 -64
- package/dist/components/data/TableBase/use-table-tree-state.js.map +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/period.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.js +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +32 -38
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js.map +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js.map +1 -1
- package/dist/components/fields/Picker/Picker.js +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +1 -1
- package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.js +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js.map +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderThumb.js.map +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
- package/dist/components/fields/Slider/elements.js +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +1 -1
- package/dist/components/fields/TagInput/TagInput.js +738 -1139
- package/dist/components/fields/TagInput/TagInput.js.map +1 -1
- package/dist/components/fields/TagInput/TagList.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +1 -1
- package/dist/components/fields/color/ColorPanel.js.map +1 -1
- package/dist/components/fields/color/channels.js +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/Form/Field.js +10 -15
- package/dist/components/form/Form/Field.js.map +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ModernFormRoot.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/backend.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/modern/actions.js +1 -1
- package/dist/components/form/Form/modern/context.js +1 -1
- package/dist/components/form/Form/modern/controller.js +1 -1
- package/dist/components/form/Form/modern/field-binding.js +1 -1
- package/dist/components/form/Form/modern/field.js +1 -1
- package/dist/components/form/Form/modern/react.js +1 -1
- package/dist/components/form/Form/modern/react.js.map +1 -1
- package/dist/components/form/Form/modern/store.js +1 -1
- package/dist/components/form/Form/modern/validation.js +1 -1
- package/dist/components/form/Form/modern/values.js +1 -1
- package/dist/components/form/Form/reset-unbound-controls.js +1 -1
- package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +1 -1
- package/dist/components/form/legacy-tooltip.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Board/Board.js +1 -1
- package/dist/components/layout/Board/BoardProvider.js +1 -1
- package/dist/components/layout/Board/BoardResponsive.js +1 -1
- package/dist/components/layout/Board/Widget.js +1 -1
- package/dist/components/layout/Board/WidgetHost.js +1 -1
- package/dist/components/layout/Board/board-context.js +1 -1
- package/dist/components/layout/Board/board-store.js +1 -1
- package/dist/components/layout/Board/grid-core/calculate.js +1 -1
- package/dist/components/layout/Board/grid-core/collision-modes.js +1 -1
- package/dist/components/layout/Board/grid-core/collision.js +1 -1
- package/dist/components/layout/Board/grid-core/compactors.js +1 -1
- package/dist/components/layout/Board/grid-core/constraints.js +1 -1
- package/dist/components/layout/Board/grid-core/group-move.js +1 -1
- package/dist/components/layout/Board/grid-core/layout.js +1 -1
- package/dist/components/layout/Board/grid-core/placement.js +1 -1
- package/dist/components/layout/Board/grid-core/sort.js +1 -1
- package/dist/components/layout/Board/index.js +1 -1
- package/dist/components/layout/Board/responsive-utils.js +1 -1
- package/dist/components/layout/Board/use-board-layout.js +1 -1
- package/dist/components/layout/Board/use-board-registry.js +1 -1
- package/dist/components/layout/Board/use-board-select-modifier-key.js +1 -1
- package/dist/components/layout/Board/use-board-selection.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +129 -48
- package/dist/components/layout/Panel.js.map +1 -1
- package/dist/components/layout/Prefix.js +1 -1
- package/dist/components/layout/ResizablePanel.js +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +227 -347
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js.map +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js.map +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js.map +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js.map +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +497 -515
- package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js.map +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Tray.js +1 -1
- package/dist/components/overlays/Modal/Underlay.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +266 -161
- package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +18 -9
- package/dist/components/overlays/Notifications/use-persistent-notifications.js.map +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useFormatter.js.map +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.js +1 -1
- package/dist/probe/canonicalize.js +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/index.js +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-theme.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/legacy-color.js +1 -1
- package/dist/tokens/palette-config.js +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/resolve.js +1 -1
- package/dist/tokens/shadows.js +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/colors.js +1 -1
- package/dist/utils/dotize.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/disabledProps.js +1 -1
- package/dist/utils/react/escapePropagation.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/programmaticFocus.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useBufferedValue.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useKeySymbols.js.map +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/usePopoverSync.js.map +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useScheme.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +2 -2
- package/docs/CreateComponent.md +3 -1
- package/package.json +2 -2
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
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 {
|
|
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
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
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
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
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
|
-
|
|
253
|
-
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
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
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
]
|
|
269
|
-
|
|
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
|
-
}
|
|
272
|
-
|
|
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
|
-
}
|
|
275
|
-
|
|
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
|
-
}
|
|
278
|
-
|
|
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(
|
|
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
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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-
|
|
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";
|