@cube-dev/ui-kit 0.190.6 → 0.190.7
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 +16 -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 +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/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +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 +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 +4 -3
- package/dist/components/actions/use-context-menu.js.map +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/Disclosure/Disclosure.js +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 +1 -1
- package/dist/components/content/Item/Item.js +10 -3
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +34 -12
- package/dist/components/content/ItemCard/ItemCard.js.map +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 +1 -1
- package/dist/components/content/Layout/LayoutContent.js +1 -1
- package/dist/components/content/Layout/LayoutContext.js +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/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPane.js +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/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +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 +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.d.ts +14 -14
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +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 +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 +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/ItemTable/use-item-table-column-widths.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-tree-model.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/TreeGridTable.js +1 -1
- package/dist/components/data/TableBase/column-header.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-styles.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-menu.js +1 -1
- package/dist/components/data/TableBase/use-column-order.js +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 +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +34 -36
- package/dist/components/fields/Checkbox/Checkbox.js.map +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/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.d.ts +2 -0
- package/dist/components/fields/FilterPicker/FilterPicker.js +4 -4
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +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 +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/Picker/Picker.d.ts +2 -0
- package/dist/components/fields/Picker/Picker.js +4 -4
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +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/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/SliderTrack.js +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 +73 -75
- package/dist/components/fields/Switch/Switch.js.map +1 -1
- package/dist/components/fields/TagInput/TagInput.js +1 -1
- package/dist/components/fields/TagInput/TagList.js +1 -1
- package/dist/components/fields/TagInput/useActiveOption.js +1 -1
- package/dist/components/fields/TagInput/useTagError.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/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 +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/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 +8 -2
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js.map +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 +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 +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +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/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/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-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/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +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/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/default-button-text.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 +116 -91
- 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 +17 -12
- package/dist/components/overlays/Notifications/use-overlay-timers.js.map +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +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/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 +5 -1
- package/dist/eslint-plugin/defaults.generated.js.map +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/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/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/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/components/content/ItemCard.md +77 -18
- package/docs/components/fields/Checkbox.md +2 -0
- package/docs/components/fields/Switch.md +2 -0
- package/docs/components/overlays/Notifications.md +1 -1
- package/docs/components/overlays/Toast.md +3 -2
- package/package.json +2 -2
- package/tasty.config.ts +2 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.190.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
|
|
2
2
|
import { useLayoutEffect as useLayoutEffect$1 } from "../../../utils/react/useLayoutEffect.js";
|
|
3
3
|
import { useViewportSize } from "../../../utils/react/useViewportSize.js";
|
|
4
4
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
@@ -206,7 +206,7 @@ function useItemPositions(visibleItems) {
|
|
|
206
206
|
* Extracted from OverlayContainer for readability.
|
|
207
207
|
*/
|
|
208
208
|
function useCollapseState(canCollapse, allItems, itemRefs, onPauseChange) {
|
|
209
|
-
const $ = c(
|
|
209
|
+
const $ = c(34);
|
|
210
210
|
const [isCollapsed, setIsCollapsed] = useState(false);
|
|
211
211
|
const containerRef = useRef(null);
|
|
212
212
|
const boundsRef = useRef(null);
|
|
@@ -277,86 +277,109 @@ function useCollapseState(canCollapse, allItems, itemRefs, onPauseChange) {
|
|
|
277
277
|
}
|
|
278
278
|
useEffect(t1, t2);
|
|
279
279
|
let t3;
|
|
280
|
-
if ($[6] !== updateBounds) {
|
|
280
|
+
if ($[6] !== allItems.length || $[7] !== onPauseChange || $[8] !== updateBounds) {
|
|
281
281
|
t3 = () => {
|
|
282
282
|
updateBounds();
|
|
283
|
+
if (allItems.length === 0) {
|
|
284
|
+
setIsCollapsed(false);
|
|
285
|
+
onPauseChange(false);
|
|
286
|
+
}
|
|
283
287
|
};
|
|
284
|
-
$[6] =
|
|
285
|
-
$[7] =
|
|
286
|
-
|
|
288
|
+
$[6] = allItems.length;
|
|
289
|
+
$[7] = onPauseChange;
|
|
290
|
+
$[8] = updateBounds;
|
|
291
|
+
$[9] = t3;
|
|
292
|
+
} else t3 = $[9];
|
|
287
293
|
let t4;
|
|
288
|
-
if ($[
|
|
289
|
-
t4 = [
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
+
if ($[10] !== allItems || $[11] !== onPauseChange || $[12] !== updateBounds) {
|
|
295
|
+
t4 = [
|
|
296
|
+
allItems,
|
|
297
|
+
updateBounds,
|
|
298
|
+
onPauseChange
|
|
299
|
+
];
|
|
300
|
+
$[10] = allItems;
|
|
301
|
+
$[11] = onPauseChange;
|
|
302
|
+
$[12] = updateBounds;
|
|
303
|
+
$[13] = t4;
|
|
304
|
+
} else t4 = $[13];
|
|
294
305
|
useEffect(t3, t4);
|
|
295
306
|
let t5;
|
|
296
|
-
if ($[
|
|
307
|
+
if ($[14] !== onPauseChange) {
|
|
297
308
|
t5 = () => {
|
|
298
|
-
updateBounds();
|
|
299
309
|
onPauseChange(true);
|
|
300
|
-
if (canCollapse) setIsCollapsed(true);
|
|
301
310
|
};
|
|
302
|
-
$[
|
|
303
|
-
$[
|
|
304
|
-
|
|
305
|
-
$[14] = t5;
|
|
306
|
-
} else t5 = $[14];
|
|
311
|
+
$[14] = onPauseChange;
|
|
312
|
+
$[15] = t5;
|
|
313
|
+
} else t5 = $[15];
|
|
307
314
|
const handleMouseEnter = t5;
|
|
308
315
|
let t6;
|
|
309
|
-
if ($[
|
|
316
|
+
if ($[16] !== canCollapse || $[17] !== isCollapsed || $[18] !== updateBounds) {
|
|
310
317
|
t6 = () => {
|
|
311
|
-
if (!isCollapsed)
|
|
318
|
+
if (canCollapse && !isCollapsed) {
|
|
319
|
+
updateBounds();
|
|
320
|
+
setIsCollapsed(true);
|
|
321
|
+
}
|
|
312
322
|
};
|
|
313
|
-
$[
|
|
314
|
-
$[
|
|
315
|
-
$[
|
|
316
|
-
|
|
317
|
-
|
|
323
|
+
$[16] = canCollapse;
|
|
324
|
+
$[17] = isCollapsed;
|
|
325
|
+
$[18] = updateBounds;
|
|
326
|
+
$[19] = t6;
|
|
327
|
+
} else t6 = $[19];
|
|
328
|
+
const handleMouseMove_0 = t6;
|
|
318
329
|
let t7;
|
|
319
|
-
if ($[
|
|
330
|
+
if ($[20] !== isCollapsed || $[21] !== onPauseChange) {
|
|
320
331
|
t7 = () => {
|
|
321
|
-
onPauseChange(
|
|
332
|
+
if (!isCollapsed) onPauseChange(false);
|
|
322
333
|
};
|
|
323
|
-
$[
|
|
324
|
-
$[
|
|
325
|
-
|
|
326
|
-
|
|
334
|
+
$[20] = isCollapsed;
|
|
335
|
+
$[21] = onPauseChange;
|
|
336
|
+
$[22] = t7;
|
|
337
|
+
} else t7 = $[22];
|
|
338
|
+
const handleMouseLeave = t7;
|
|
327
339
|
let t8;
|
|
328
|
-
if ($[
|
|
329
|
-
t8 = (
|
|
330
|
-
|
|
340
|
+
if ($[23] !== onPauseChange) {
|
|
341
|
+
t8 = () => {
|
|
342
|
+
onPauseChange(true);
|
|
331
343
|
};
|
|
332
|
-
$[
|
|
333
|
-
$[
|
|
334
|
-
} else t8 = $[
|
|
335
|
-
const
|
|
344
|
+
$[23] = onPauseChange;
|
|
345
|
+
$[24] = t8;
|
|
346
|
+
} else t8 = $[24];
|
|
347
|
+
const handleFocus = t8;
|
|
336
348
|
let t9;
|
|
337
|
-
if ($[
|
|
338
|
-
t9 = {
|
|
349
|
+
if ($[25] !== onPauseChange) {
|
|
350
|
+
t9 = (e_0) => {
|
|
351
|
+
if (containerRef.current && !containerRef.current.contains(e_0.relatedTarget)) onPauseChange(false);
|
|
352
|
+
};
|
|
353
|
+
$[25] = onPauseChange;
|
|
354
|
+
$[26] = t9;
|
|
355
|
+
} else t9 = $[26];
|
|
356
|
+
const handleBlur = t9;
|
|
357
|
+
let t10;
|
|
358
|
+
if ($[27] !== handleBlur || $[28] !== handleFocus || $[29] !== handleMouseEnter || $[30] !== handleMouseLeave || $[31] !== handleMouseMove_0 || $[32] !== isCollapsed) {
|
|
359
|
+
t10 = {
|
|
339
360
|
isCollapsed,
|
|
340
361
|
handleMouseEnter,
|
|
362
|
+
handleMouseMove: handleMouseMove_0,
|
|
341
363
|
handleMouseLeave,
|
|
342
364
|
handleFocus,
|
|
343
365
|
handleBlur,
|
|
344
366
|
containerRef
|
|
345
367
|
};
|
|
346
|
-
$[
|
|
347
|
-
$[
|
|
348
|
-
$[
|
|
349
|
-
$[
|
|
350
|
-
$[
|
|
351
|
-
$[
|
|
352
|
-
|
|
353
|
-
|
|
368
|
+
$[27] = handleBlur;
|
|
369
|
+
$[28] = handleFocus;
|
|
370
|
+
$[29] = handleMouseEnter;
|
|
371
|
+
$[30] = handleMouseLeave;
|
|
372
|
+
$[31] = handleMouseMove_0;
|
|
373
|
+
$[32] = isCollapsed;
|
|
374
|
+
$[33] = t10;
|
|
375
|
+
} else t10 = $[33];
|
|
376
|
+
return t10;
|
|
354
377
|
}
|
|
355
378
|
function _temp() {
|
|
356
379
|
return {};
|
|
357
380
|
}
|
|
358
381
|
function OverlayContainer(t0) {
|
|
359
|
-
const $ = c(
|
|
382
|
+
const $ = c(52);
|
|
360
383
|
const { toasts, notifications, onToastExitComplete, onNotificationExitComplete, onNotificationDismiss, onNotificationRestore, onPauseChange } = t0;
|
|
361
384
|
let items;
|
|
362
385
|
if ($[0] !== notifications || $[1] !== toasts) {
|
|
@@ -389,7 +412,7 @@ function OverlayContainer(t0) {
|
|
|
389
412
|
} else t3 = $[8];
|
|
390
413
|
const canCollapse = !hasNotifications && !t3;
|
|
391
414
|
const { heights, settledIds, positions, lastPositionsRef, itemRefs, createRefCallback } = useItemPositions(visibleItems);
|
|
392
|
-
const { isCollapsed, handleMouseEnter, handleMouseLeave, handleFocus, handleBlur, containerRef } = useCollapseState(canCollapse, allItems, itemRefs, onPauseChange);
|
|
415
|
+
const { isCollapsed, handleMouseEnter, handleMouseMove, handleMouseLeave, handleFocus, handleBlur, containerRef } = useCollapseState(canCollapse, allItems, itemRefs, onPauseChange);
|
|
393
416
|
let t4;
|
|
394
417
|
if ($[9] !== onNotificationDismiss || $[10] !== onPauseChange) {
|
|
395
418
|
t4 = (id, reason) => {
|
|
@@ -423,7 +446,7 @@ function OverlayContainer(t0) {
|
|
|
423
446
|
let t7;
|
|
424
447
|
let t8;
|
|
425
448
|
let t9;
|
|
426
|
-
if ($[16] !== allItems || $[17] !== canCollapse || $[18] !== containerRef || $[19] !== createRefCallback || $[20] !== handleBlur || $[21] !== handleExitComplete || $[22] !== handleFocus || $[23] !== handleMouseEnter || $[24] !== handleMouseLeave || $[25] !==
|
|
449
|
+
if ($[16] !== allItems || $[17] !== canCollapse || $[18] !== containerRef || $[19] !== createRefCallback || $[20] !== handleBlur || $[21] !== handleExitComplete || $[22] !== handleFocus || $[23] !== handleMouseEnter || $[24] !== handleMouseLeave || $[25] !== handleMouseMove || $[26] !== handleNotificationDismiss || $[27] !== heights || $[28] !== isCollapsed || $[29] !== lastPositionsRef || $[30] !== onNotificationRestore || $[31] !== positions || $[32] !== settledIds || $[33] !== visibleItems) {
|
|
427
450
|
t11 = Symbol.for("react.early_return_sentinel");
|
|
428
451
|
bb0: {
|
|
429
452
|
const getItemStyle = (item_1, index, total) => {
|
|
@@ -468,6 +491,7 @@ function OverlayContainer(t0) {
|
|
|
468
491
|
},
|
|
469
492
|
style: getItemStyle(item_3, visibleIndex, visibleItems.length),
|
|
470
493
|
onMouseEnter: handleMouseEnter,
|
|
494
|
+
onMouseMove: handleMouseMove,
|
|
471
495
|
onMouseLeave: handleMouseLeave,
|
|
472
496
|
children: item_3.kind === "toast" ? /* @__PURE__ */ jsx(ToastItem, {
|
|
473
497
|
...item_3.data.itemProps,
|
|
@@ -496,35 +520,36 @@ function OverlayContainer(t0) {
|
|
|
496
520
|
$[22] = handleFocus;
|
|
497
521
|
$[23] = handleMouseEnter;
|
|
498
522
|
$[24] = handleMouseLeave;
|
|
499
|
-
$[25] =
|
|
500
|
-
$[26] =
|
|
501
|
-
$[27] =
|
|
502
|
-
$[28] =
|
|
503
|
-
$[29] =
|
|
504
|
-
$[30] =
|
|
505
|
-
$[31] =
|
|
506
|
-
$[32] =
|
|
507
|
-
$[33] =
|
|
508
|
-
$[34] =
|
|
509
|
-
$[35] =
|
|
510
|
-
$[36] =
|
|
511
|
-
$[37] =
|
|
512
|
-
$[38] =
|
|
513
|
-
$[39] =
|
|
514
|
-
$[40] =
|
|
523
|
+
$[25] = handleMouseMove;
|
|
524
|
+
$[26] = handleNotificationDismiss;
|
|
525
|
+
$[27] = heights;
|
|
526
|
+
$[28] = isCollapsed;
|
|
527
|
+
$[29] = lastPositionsRef;
|
|
528
|
+
$[30] = onNotificationRestore;
|
|
529
|
+
$[31] = positions;
|
|
530
|
+
$[32] = settledIds;
|
|
531
|
+
$[33] = visibleItems;
|
|
532
|
+
$[34] = T0;
|
|
533
|
+
$[35] = T1;
|
|
534
|
+
$[36] = t10;
|
|
535
|
+
$[37] = t11;
|
|
536
|
+
$[38] = t6;
|
|
537
|
+
$[39] = t7;
|
|
538
|
+
$[40] = t8;
|
|
539
|
+
$[41] = t9;
|
|
515
540
|
} else {
|
|
516
|
-
T0 = $[
|
|
517
|
-
T1 = $[
|
|
518
|
-
t10 = $[
|
|
519
|
-
t11 = $[
|
|
520
|
-
t6 = $[
|
|
521
|
-
t7 = $[
|
|
522
|
-
t8 = $[
|
|
523
|
-
t9 = $[
|
|
541
|
+
T0 = $[34];
|
|
542
|
+
T1 = $[35];
|
|
543
|
+
t10 = $[36];
|
|
544
|
+
t11 = $[37];
|
|
545
|
+
t6 = $[38];
|
|
546
|
+
t7 = $[39];
|
|
547
|
+
t8 = $[40];
|
|
548
|
+
t9 = $[41];
|
|
524
549
|
}
|
|
525
550
|
if (t11 !== Symbol.for("react.early_return_sentinel")) return t11;
|
|
526
551
|
let t12;
|
|
527
|
-
if ($[
|
|
552
|
+
if ($[42] !== T0 || $[43] !== t10 || $[44] !== t6 || $[45] !== t7 || $[46] !== t8 || $[47] !== t9) {
|
|
528
553
|
t12 = /* @__PURE__ */ jsx(T0, {
|
|
529
554
|
ref: t6,
|
|
530
555
|
"data-react-aria-top-layer": t7,
|
|
@@ -532,21 +557,21 @@ function OverlayContainer(t0) {
|
|
|
532
557
|
onBlur: t9,
|
|
533
558
|
children: t10
|
|
534
559
|
});
|
|
535
|
-
$[
|
|
536
|
-
$[
|
|
537
|
-
$[
|
|
538
|
-
$[
|
|
539
|
-
$[
|
|
540
|
-
$[
|
|
541
|
-
$[
|
|
542
|
-
} else t12 = $[
|
|
560
|
+
$[42] = T0;
|
|
561
|
+
$[43] = t10;
|
|
562
|
+
$[44] = t6;
|
|
563
|
+
$[45] = t7;
|
|
564
|
+
$[46] = t8;
|
|
565
|
+
$[47] = t9;
|
|
566
|
+
$[48] = t12;
|
|
567
|
+
} else t12 = $[48];
|
|
543
568
|
let t13;
|
|
544
|
-
if ($[
|
|
569
|
+
if ($[49] !== T1 || $[50] !== t12) {
|
|
545
570
|
t13 = /* @__PURE__ */ jsx(T1, { children: t12 });
|
|
546
|
-
$[
|
|
547
|
-
$[
|
|
548
|
-
$[
|
|
549
|
-
} else t13 = $[
|
|
571
|
+
$[49] = T1;
|
|
572
|
+
$[50] = t12;
|
|
573
|
+
$[51] = t13;
|
|
574
|
+
} else t13 = $[51];
|
|
550
575
|
return t13;
|
|
551
576
|
}
|
|
552
577
|
function _temp8(item_2, index_0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OverlayContainer.js","names":["tasty","FocusEvent","Key","RefObject","useCallback","useEffect","useMemo","useRef","useState","useEvent","useLayoutEffect","useViewportSize","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","t11","bb0","getItemStyle","item_1","index","total","baseTop","get","isNewest","collapsedTop","const","visibleIndexMap","_temp8","item_3","visibleIndex","t12","ref","itemProps","title","description","theme","icon","isLoading","actions","t13","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 { useViewportSize } from '../../../utils/react/useViewportSize';\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 // Sized to its content: the container has no width of its own. Capped,\n // never floored, so a long toast wraps inside the viewport. The cap\n // matches NotificationCard's own width.\n width: 'initial max-content min((100vw - 4x), 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 // A wrapped toast changes height with the viewport, not only on a render.\n // Re-rendering on a viewport resize lets the measurement above restack the\n // items. A height change from content that re-renders on its own, outside\n // this container, still waits for the container's next render.\n useViewportSize();\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 // Portaled outside any open Dialog, so React Aria would count a press\n // on a toast as a press outside it: the Dialog closed and the action\n // never ran. A top layer is never \"outside\", stays reachable by focus\n // from a Dialog's contained scope and visible to screen readers, as\n // React Aria's own toast region does.\n data-react-aria-top-layer=\"\"\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","useViewportSize","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","handleMouseMove","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","bounds","isInBounds","clientX","clientY","window","addEventListener","removeEventListener","handleMouseMove_0","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","t11","bb0","getItemStyle","item_1","index","total","baseTop","get","isNewest","collapsedTop","const","visibleIndexMap","_temp8","item_3","visibleIndex","t12","ref","itemProps","title","description","theme","icon","isLoading","actions","t13","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 { useViewportSize } from '../../../utils/react/useViewportSize';\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 // Sized to its content: the container has no width of its own. Capped,\n // never floored, so a long toast wraps inside the viewport. The cap\n // matches NotificationCard's own width.\n width: 'initial max-content min((100vw - 4x), 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 // A wrapped toast changes height with the viewport, not only on a render.\n // Re-rendering on a viewport resize lets the measurement above restack the\n // items. A height change from content that re-renders on its own, outside\n // this container, still waits for the container's next render.\n useViewportSize();\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 handleMouseMove: () => 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 // An empty container must not carry hover state into the next toast stack.\n useEffect(() => {\n updateBounds();\n\n if (allItems.length === 0) {\n setIsCollapsed(false);\n onPauseChange(false);\n }\n }, [allItems, updateBounds, onPauseChange]);\n\n const handleMouseEnter = () => {\n onPauseChange(true);\n };\n\n // Layout and enter animations can put an item under a stationary pointer\n // and fire mouseenter. Collapse only after the user moves over the stack.\n const handleMouseMove = () => {\n if (canCollapse && !isCollapsed) {\n updateBounds();\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 handleMouseMove,\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 handleMouseMove,\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 // Portaled outside any open Dialog, so React Aria would count a press\n // on a toast as a press outside it: the Dialog closed and the action\n // never ran. A top layer is never \"outside\", stays reachable by focus\n // from a Dialog's contained scope and visible to screen readers, as\n // React Aria's own toast region does.\n data-react-aria-top-layer=\"\"\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 onMouseMove={handleMouseMove}\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.190.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.190.7 | 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.190.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { _Text } from "../../content/Text.js";
|
|
4
4
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.190.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.190.7 | 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.190.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
|
|
2
2
|
import { useToastContext } from "./NotificationContext.js";
|
|
3
3
|
import { NotificationAction } from "./NotificationAction.js";
|
|
4
4
|
import { NotificationCard } from "./NotificationCard.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.190.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { useWarn } from "../../../_internal/hooks/use-warn.js";
|
|
4
4
|
import { useNotificationContext } from "./NotificationContext.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.190.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.190.7 | Cube Dev Team */
|
|
2
2
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
3
|
import { useEffect, useRef } from "react";
|
|
4
4
|
|
|
@@ -45,21 +45,20 @@ function createTimerManager(timersMap, pausedMap, isPausedRef, onTimeout, findIt
|
|
|
45
45
|
const resumeAll = () => {
|
|
46
46
|
pausedMap.forEach((info, internalId) => {
|
|
47
47
|
const item = findItem(internalId);
|
|
48
|
+
if (!item || item.isExiting || timersMap.has(internalId)) return;
|
|
48
49
|
if (info.remaining <= 0) {
|
|
49
50
|
pausedMap.delete(internalId);
|
|
50
|
-
|
|
51
|
+
onTimeout(item.id ?? item.internalId);
|
|
51
52
|
return;
|
|
52
53
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
});
|
|
62
|
-
}
|
|
54
|
+
const timer = setTimeout(() => {
|
|
55
|
+
onTimeout(item.id ?? item.internalId);
|
|
56
|
+
}, info.remaining);
|
|
57
|
+
timersMap.set(internalId, timer);
|
|
58
|
+
pausedMap.set(internalId, {
|
|
59
|
+
remaining: info.remaining,
|
|
60
|
+
startedAt: Date.now()
|
|
61
|
+
});
|
|
63
62
|
});
|
|
64
63
|
};
|
|
65
64
|
const clearAll = () => {
|
|
@@ -107,6 +106,12 @@ function useOverlayTimers(deps) {
|
|
|
107
106
|
notifManager.current.resumeAll();
|
|
108
107
|
}
|
|
109
108
|
});
|
|
109
|
+
useEffect(() => {
|
|
110
|
+
if (!isPausedRef.current) {
|
|
111
|
+
toastManager.current.resumeAll();
|
|
112
|
+
notifManager.current.resumeAll();
|
|
113
|
+
}
|
|
114
|
+
});
|
|
110
115
|
useEffect(() => {
|
|
111
116
|
return () => {
|
|
112
117
|
toastManager.current.clearAll();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-overlay-timers.js","names":["Key","useEffect","useRef","useEvent","InternalToast","DismissReason","InternalNotification","OverlayTimers","startToastTimer","internalId","id","duration","clearToastTimer","startNotificationTimer","clearNotificationTimer","handlePauseChange","paused","OverlayTimersDeps","toastsRef","ReturnType","notificationsRef","removeToast","removeNotification","reason","TimerManager","start","clear","pauseAll","resumeAll","clearAll","createTimerManager","timersMap","Map","setTimeout","pausedMap","remaining","startedAt","isPausedRef","onTimeout","findItem","isExiting","timer","get","clearTimeout","delete","set","Date","now","current","forEach","info","elapsed","Math","max","item","useOverlayTimers","deps","toastTimersMap","notificationTimersMap","toastManager","notifManager","find","t","n"],"sources":["../../../../src/components/overlays/Notifications/use-overlay-timers.ts"],"sourcesContent":["import { Key, useEffect, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal';\n\nimport type { InternalToast } from '../Toast/types';\nimport type { DismissReason, InternalNotification } from './types';\n\n// ─── Types ───────────────────────────────────────────────────────────\n\nexport interface OverlayTimers {\n /** Start a toast auto-dismiss timer */\n startToastTimer: (internalId: string, id: Key, duration: number) => void;\n /** Clear a toast timer */\n clearToastTimer: (internalId: string) => void;\n /** Start a notification auto-dismiss timer */\n startNotificationTimer: (\n internalId: string,\n id: Key,\n duration: number,\n ) => void;\n /** Clear a notification timer */\n clearNotificationTimer: (internalId: string) => void;\n /** Handle pause/resume of all timers (e.g. on hover/focus) */\n handlePauseChange: (paused: boolean) => void;\n}\n\nexport interface OverlayTimersDeps {\n /** Ref to current toasts (for resume lookup) */\n toastsRef: ReturnType<typeof useRef<InternalToast[]>>;\n /** Ref to current notifications (for resume lookup) */\n notificationsRef: ReturnType<typeof useRef<InternalNotification[]>>;\n /** Remove a toast by id */\n removeToast: (id: Key) => void;\n /** Remove a notification by id with reason (also invokes onDismiss callback) */\n removeNotification: (id: Key, reason: DismissReason) => void;\n}\n\n// ─── Timer Manager Factory ───────────────────────────────────────────\n\ninterface TimerManager {\n start: (internalId: string, id: Key, duration: number) => void;\n clear: (internalId: string) => void;\n pauseAll: () => void;\n resumeAll: () => void;\n clearAll: () => void;\n}\n\n/**\n * Creates a start/clear/pause/resume pair for a single timer category.\n * Eliminates duplication between toast and notification timer logic.\n */\nfunction createTimerManager(\n timersMap: Map<string, ReturnType<typeof setTimeout>>,\n pausedMap: Map<string, { remaining: number; startedAt: number }>,\n isPausedRef: ReturnType<typeof useRef<boolean>>,\n onTimeout: (id: Key) => void,\n findItem: (\n internalId: string,\n ) => { id?: Key; internalId: string; isExiting?: boolean } | undefined,\n): TimerManager {\n const clear = (internalId: string) => {\n const timer = timersMap.get(internalId);\n\n if (timer) {\n clearTimeout(timer);\n timersMap.delete(internalId);\n }\n\n pausedMap.delete(internalId);\n };\n\n const start = (internalId: string, id: Key, duration: number) => {\n clear(internalId);\n\n pausedMap.set(internalId, {\n remaining: duration,\n startedAt: Date.now(),\n });\n\n if (isPausedRef.current) {\n return;\n }\n\n const timer = setTimeout(() => {\n onTimeout(id);\n }, duration);\n\n timersMap.set(internalId, timer);\n };\n\n const pauseAll = () => {\n timersMap.forEach((timer, internalId) => {\n clearTimeout(timer);\n timersMap.delete(internalId);\n\n const info = pausedMap.get(internalId);\n\n if (info) {\n const elapsed = Date.now() - info.startedAt;\n pausedMap.set(internalId, {\n remaining: Math.max(0, info.remaining - elapsed),\n startedAt: Date.now(),\n });\n }\n });\n };\n\n const resumeAll = () => {\n pausedMap.forEach((info, internalId) => {\n const item = findItem(internalId);\n\n if (info.remaining <= 0) {\n pausedMap.delete(internalId);\n\n if (item && !item.isExiting) {\n onTimeout(item.id ?? item.internalId);\n }\n\n return;\n }\n\n if (item && !item.isExiting) {\n const timer = setTimeout(() => {\n onTimeout(item.id ?? item.internalId);\n }, info.remaining);\n\n timersMap.set(internalId, timer);\n pausedMap.set(internalId, {\n remaining: info.remaining,\n startedAt: Date.now(),\n });\n }\n });\n };\n\n const clearAll = () => {\n timersMap.forEach((timer) => clearTimeout(timer));\n timersMap.clear();\n };\n\n return { start, clear, pauseAll, resumeAll, clearAll };\n}\n\n// ─── Hook ────────────────────────────────────────────────────────────\n\nexport function useOverlayTimers(deps: OverlayTimersDeps): OverlayTimers {\n const { toastsRef, notificationsRef, removeToast, removeNotification } = deps;\n\n const toastTimersMap = useRef(\n new Map<string, ReturnType<typeof setTimeout>>(),\n ).current;\n const notificationTimersMap = useRef(\n new Map<string, ReturnType<typeof setTimeout>>(),\n ).current;\n const isPausedRef = useRef(false);\n\n // Shared paused-timers map. Toast and notification internalIds use distinct prefixes\n // ('toast-' and 'notif-') so they coexist safely in a single map.\n const pausedMap = useRef(\n new Map<string, { remaining: number; startedAt: number }>(),\n ).current;\n\n const toastManager = useRef<TimerManager | null>(null);\n const notifManager = useRef<TimerManager | null>(null);\n\n // Lazily create managers — deps are stable (useEvent / refs), so this runs once.\n if (!toastManager.current) {\n toastManager.current = createTimerManager(\n toastTimersMap,\n pausedMap,\n isPausedRef,\n (id) => removeToast(id),\n (internalId) =>\n toastsRef.current?.find((t) => t.internalId === internalId),\n );\n }\n\n if (!notifManager.current) {\n notifManager.current = createTimerManager(\n notificationTimersMap,\n pausedMap,\n isPausedRef,\n (id) => removeNotification(id, 'timeout'),\n (internalId) =>\n notificationsRef.current?.find((n) => n.internalId === internalId),\n );\n }\n\n // ─── Stable callbacks ──────────────────────────────────────────────\n\n const startToastTimer = useEvent(\n (internalId: string, id: Key, duration: number) => {\n toastManager.current!.start(internalId, id, duration);\n },\n );\n\n const clearToastTimer = useEvent((internalId: string) => {\n toastManager.current!.clear(internalId);\n });\n\n const startNotificationTimer = useEvent(\n (internalId: string, id: Key, duration: number) => {\n notifManager.current!.start(internalId, id, duration);\n },\n );\n\n const clearNotificationTimer = useEvent((internalId: string) => {\n notifManager.current!.clear(internalId);\n });\n\n // ─── Pause / Resume ─────────────────────────────────────────────\n\n const handlePauseChange = useEvent((paused: boolean) => {\n if (paused === isPausedRef.current) return;\n\n isPausedRef.current = paused;\n\n if (paused) {\n toastManager.current!.pauseAll();\n notifManager.current!.pauseAll();\n } else {\n toastManager.current!.resumeAll();\n notifManager.current!.resumeAll();\n }\n });\n\n // ─── Cleanup on unmount ─────────────────────────────────────────\n\n useEffect(() => {\n return () => {\n toastManager.current!.clearAll();\n notifManager.current!.clearAll();\n pausedMap.clear();\n };\n }, []);\n\n return {\n startToastTimer,\n clearToastTimer,\n startNotificationTimer,\n clearNotificationTimer,\n handlePauseChange,\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-overlay-timers.js","names":["Key","useEffect","useRef","useEvent","InternalToast","DismissReason","InternalNotification","OverlayTimers","startToastTimer","internalId","id","duration","clearToastTimer","startNotificationTimer","clearNotificationTimer","handlePauseChange","paused","OverlayTimersDeps","toastsRef","ReturnType","notificationsRef","removeToast","removeNotification","reason","TimerManager","start","clear","pauseAll","resumeAll","clearAll","createTimerManager","timersMap","Map","setTimeout","pausedMap","remaining","startedAt","isPausedRef","onTimeout","findItem","isExiting","timer","get","clearTimeout","delete","set","Date","now","current","forEach","info","elapsed","Math","max","item","has","useOverlayTimers","deps","toastTimersMap","notificationTimersMap","toastManager","notifManager","find","t","n"],"sources":["../../../../src/components/overlays/Notifications/use-overlay-timers.ts"],"sourcesContent":["import { Key, useEffect, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal';\n\nimport type { InternalToast } from '../Toast/types';\nimport type { DismissReason, InternalNotification } from './types';\n\n// ─── Types ───────────────────────────────────────────────────────────\n\nexport interface OverlayTimers {\n /** Start a toast auto-dismiss timer */\n startToastTimer: (internalId: string, id: Key, duration: number) => void;\n /** Clear a toast timer */\n clearToastTimer: (internalId: string) => void;\n /** Start a notification auto-dismiss timer */\n startNotificationTimer: (\n internalId: string,\n id: Key,\n duration: number,\n ) => void;\n /** Clear a notification timer */\n clearNotificationTimer: (internalId: string) => void;\n /** Handle pause/resume of all timers (e.g. on hover/focus) */\n handlePauseChange: (paused: boolean) => void;\n}\n\nexport interface OverlayTimersDeps {\n /** Ref to current toasts (for resume lookup) */\n toastsRef: ReturnType<typeof useRef<InternalToast[]>>;\n /** Ref to current notifications (for resume lookup) */\n notificationsRef: ReturnType<typeof useRef<InternalNotification[]>>;\n /** Remove a toast by id */\n removeToast: (id: Key) => void;\n /** Remove a notification by id with reason (also invokes onDismiss callback) */\n removeNotification: (id: Key, reason: DismissReason) => void;\n}\n\n// ─── Timer Manager Factory ───────────────────────────────────────────\n\ninterface TimerManager {\n start: (internalId: string, id: Key, duration: number) => void;\n clear: (internalId: string) => void;\n pauseAll: () => void;\n resumeAll: () => void;\n clearAll: () => void;\n}\n\n/**\n * Creates a start/clear/pause/resume pair for a single timer category.\n * Eliminates duplication between toast and notification timer logic.\n */\nfunction createTimerManager(\n timersMap: Map<string, ReturnType<typeof setTimeout>>,\n pausedMap: Map<string, { remaining: number; startedAt: number }>,\n isPausedRef: ReturnType<typeof useRef<boolean>>,\n onTimeout: (id: Key) => void,\n findItem: (\n internalId: string,\n ) => { id?: Key; internalId: string; isExiting?: boolean } | undefined,\n): TimerManager {\n const clear = (internalId: string) => {\n const timer = timersMap.get(internalId);\n\n if (timer) {\n clearTimeout(timer);\n timersMap.delete(internalId);\n }\n\n pausedMap.delete(internalId);\n };\n\n const start = (internalId: string, id: Key, duration: number) => {\n clear(internalId);\n\n pausedMap.set(internalId, {\n remaining: duration,\n startedAt: Date.now(),\n });\n\n if (isPausedRef.current) {\n return;\n }\n\n const timer = setTimeout(() => {\n onTimeout(id);\n }, duration);\n\n timersMap.set(internalId, timer);\n };\n\n const pauseAll = () => {\n timersMap.forEach((timer, internalId) => {\n clearTimeout(timer);\n timersMap.delete(internalId);\n\n const info = pausedMap.get(internalId);\n\n if (info) {\n const elapsed = Date.now() - info.startedAt;\n pausedMap.set(internalId, {\n remaining: Math.max(0, info.remaining - elapsed),\n startedAt: Date.now(),\n });\n }\n });\n };\n\n const resumeAll = () => {\n pausedMap.forEach((info, internalId) => {\n const item = findItem(internalId);\n\n if (!item || item.isExiting || timersMap.has(internalId)) return;\n\n if (info.remaining <= 0) {\n pausedMap.delete(internalId);\n onTimeout(item.id ?? item.internalId);\n\n return;\n }\n\n const timer = setTimeout(() => {\n onTimeout(item.id ?? item.internalId);\n }, info.remaining);\n\n timersMap.set(internalId, timer);\n pausedMap.set(internalId, {\n remaining: info.remaining,\n startedAt: Date.now(),\n });\n });\n };\n\n const clearAll = () => {\n timersMap.forEach((timer) => clearTimeout(timer));\n timersMap.clear();\n };\n\n return { start, clear, pauseAll, resumeAll, clearAll };\n}\n\n// ─── Hook ────────────────────────────────────────────────────────────\n\nexport function useOverlayTimers(deps: OverlayTimersDeps): OverlayTimers {\n const { toastsRef, notificationsRef, removeToast, removeNotification } = deps;\n\n const toastTimersMap = useRef(\n new Map<string, ReturnType<typeof setTimeout>>(),\n ).current;\n const notificationTimersMap = useRef(\n new Map<string, ReturnType<typeof setTimeout>>(),\n ).current;\n const isPausedRef = useRef(false);\n\n // Shared paused-timers map. Toast and notification internalIds use distinct prefixes\n // ('toast-' and 'notif-') so they coexist safely in a single map.\n const pausedMap = useRef(\n new Map<string, { remaining: number; startedAt: number }>(),\n ).current;\n\n const toastManager = useRef<TimerManager | null>(null);\n const notifManager = useRef<TimerManager | null>(null);\n\n // Lazily create managers — deps are stable (useEvent / refs), so this runs once.\n if (!toastManager.current) {\n toastManager.current = createTimerManager(\n toastTimersMap,\n pausedMap,\n isPausedRef,\n (id) => removeToast(id),\n (internalId) =>\n toastsRef.current?.find((t) => t.internalId === internalId),\n );\n }\n\n if (!notifManager.current) {\n notifManager.current = createTimerManager(\n notificationTimersMap,\n pausedMap,\n isPausedRef,\n (id) => removeNotification(id, 'timeout'),\n (internalId) =>\n notificationsRef.current?.find((n) => n.internalId === internalId),\n );\n }\n\n // ─── Stable callbacks ──────────────────────────────────────────────\n\n const startToastTimer = useEvent(\n (internalId: string, id: Key, duration: number) => {\n toastManager.current!.start(internalId, id, duration);\n },\n );\n\n const clearToastTimer = useEvent((internalId: string) => {\n toastManager.current!.clear(internalId);\n });\n\n const startNotificationTimer = useEvent(\n (internalId: string, id: Key, duration: number) => {\n notifManager.current!.start(internalId, id, duration);\n },\n );\n\n const clearNotificationTimer = useEvent((internalId: string) => {\n notifManager.current!.clear(internalId);\n });\n\n // ─── Pause / Resume ─────────────────────────────────────────────\n\n const handlePauseChange = useEvent((paused: boolean) => {\n if (paused === isPausedRef.current) return;\n\n isPausedRef.current = paused;\n\n if (paused) {\n toastManager.current!.pauseAll();\n notifManager.current!.pauseAll();\n } else {\n toastManager.current!.resumeAll();\n notifManager.current!.resumeAll();\n }\n });\n\n // An effect can enqueue an item while paused just before an empty-stack\n // reset resumes timers. Retry once that item reaches the committed lookup,\n // preserving the deadlines of timers that are already running.\n useEffect(() => {\n if (!isPausedRef.current) {\n toastManager.current!.resumeAll();\n notifManager.current!.resumeAll();\n }\n });\n\n // ─── Cleanup on unmount ─────────────────────────────────────────\n\n useEffect(() => {\n return () => {\n toastManager.current!.clearAll();\n notifManager.current!.clearAll();\n pausedMap.clear();\n };\n }, []);\n\n return {\n startToastTimer,\n clearToastTimer,\n startNotificationTimer,\n clearNotificationTimer,\n handlePauseChange,\n };\n}\n"],"mappings":"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"}
|