@cube-dev/ui-kit 0.0.0-canary-b2f8ae7 → 0.0.0-canary-26fe35d
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 +8 -0
- package/dist/_internal/hooks/use-chained-callback.js +1 -1
- 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/_virtual/_rolldown/runtime.js +1 -1
- package/dist/chunks/cacheKey.js +1 -1
- package/dist/chunks/definitions.js +1 -1
- package/dist/chunks/renderChunk.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +1 -55
- package/dist/components/GlobalStyles.js.map +1 -1
- package/dist/components/GridProvider.js +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.d.ts +1 -0
- package/dist/components/actions/Button/Button.js +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.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/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/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/use-alert.js +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +1 -1
- package/dist/components/content/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/Item/Item.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +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.d.ts +2 -0
- package/dist/components/content/Layout/LayoutHeader.js +24 -6
- package/dist/components/content/Layout/LayoutHeader.js.map +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.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ComboBox/ComboBox.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/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/intl.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/ListBox.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.js +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/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 +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/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/FieldWrapper/extract-field-wrapper-props.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/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/index.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/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/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/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/EditableTitle.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/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/FileTabs/FileTabs.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/RangeCalendar.js +1 -1
- package/dist/components/other/CloudLogo/CloudLogo.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/context.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Modal/Modal.d.ts +2 -1
- package/dist/components/overlays/Modal/Modal.js +1 -1
- package/dist/components/overlays/Modal/OpenTransition.js +1 -1
- package/dist/components/overlays/Modal/Overlay.d.ts +1 -0
- 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 +10 -4
- package/dist/components/overlays/Notifications/NotificationAction.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.d.ts +3 -0
- package/dist/components/overlays/Notifications/NotificationCard.js +6 -4
- package/dist/components/overlays/Notifications/NotificationCard.js.map +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.d.ts +2 -0
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.d.ts +3 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +4 -3
- package/dist/components/overlays/Notifications/NotificationItem.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +5 -4
- package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +2 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js.map +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/types.d.ts +2 -0
- package/dist/components/overlays/Notifications/use-notification-state.js +20 -2
- package/dist/components/overlays/Notifications/use-notification-state.js.map +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +8 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js.map +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/types.d.ts +2 -0
- package/dist/components/overlays/Toast/useProgressToast.js +49 -21
- package/dist/components/overlays/Toast/useProgressToast.js.map +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/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.d.ts +2 -0
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/index.d.ts +1 -0
- package/dist/components/portal/usePortal.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/config.js +1 -1
- package/dist/css-writer.js +1 -1
- package/dist/data/item-themes.js +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/extractor.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/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/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/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/injector/injector.js +1 -1
- package/dist/injector/sheet-manager.js +1 -1
- package/dist/keyframes/index.js +1 -1
- package/dist/parser/classify.js +1 -1
- package/dist/parser/const.js +1 -1
- package/dist/parser/lru.js +1 -1
- package/dist/parser/parser.js +1 -1
- package/dist/parser/tokenizer.js +1 -1
- package/dist/parser/types.js +1 -1
- package/dist/pipeline/conditions.js +1 -1
- package/dist/pipeline/exclusive.js +1 -1
- package/dist/pipeline/index.js +1 -1
- package/dist/pipeline/materialize.js +1 -1
- package/dist/pipeline/parseStateKey.js +1 -1
- package/dist/pipeline/simplify.js +1 -1
- package/dist/plugins/okhsl-plugin.js +1 -1
- package/dist/properties/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/states/index.js +1 -1
- package/dist/styles/align.js +1 -1
- package/dist/styles/border.js +1 -1
- package/dist/styles/color.js +1 -1
- package/dist/styles/createStyle.js +1 -1
- package/dist/styles/dimension.js +1 -1
- package/dist/styles/display.js +1 -1
- package/dist/styles/fade.js +1 -1
- package/dist/styles/fill.js +1 -1
- package/dist/styles/flow.js +1 -1
- package/dist/styles/gap.js +1 -1
- package/dist/styles/height.js +1 -1
- package/dist/styles/index.js +1 -1
- package/dist/styles/inset.js +1 -1
- package/dist/styles/justify.js +1 -1
- package/dist/styles/margin.js +1 -1
- package/dist/styles/outline.js +1 -1
- package/dist/styles/padding.js +1 -1
- package/dist/styles/predefined.js +1 -1
- package/dist/styles/preset.js +1 -1
- package/dist/styles/radius.js +1 -1
- package/dist/styles/scrollbar.js +1 -1
- package/dist/styles/shadow.js +1 -1
- package/dist/styles/styledScrollbar.js +1 -1
- package/dist/styles/transition.js +1 -1
- package/dist/styles/width.js +1 -1
- package/dist/tasty/chunks/cacheKey.d.ts +2 -0
- package/dist/tasty/chunks/cacheKey.js +1 -1
- package/dist/tasty/chunks/definitions.js +1 -1
- package/dist/tasty/chunks/index.d.ts +4 -0
- package/dist/tasty/chunks/renderChunk.d.ts +3 -0
- package/dist/tasty/chunks/renderChunk.js +1 -1
- package/dist/tasty/config.js +1 -1
- package/dist/tasty/debug.js +1 -1
- package/dist/tasty/hooks/index.d.ts +6 -0
- package/dist/tasty/hooks/useGlobalStyles.js +1 -1
- package/dist/tasty/hooks/useKeyframes.js +1 -1
- package/dist/tasty/hooks/useProperty.js +1 -1
- package/dist/tasty/hooks/useRawCSS.js +1 -1
- package/dist/tasty/hooks/useStyles.js +1 -1
- package/dist/tasty/index.d.ts +3 -0
- package/dist/tasty/injector/index.js +1 -1
- package/dist/tasty/injector/injector.js +1 -1
- package/dist/tasty/injector/sheet-manager.js +1 -1
- package/dist/tasty/keyframes/index.js +1 -1
- package/dist/tasty/parser/classify.js +1 -1
- package/dist/tasty/parser/const.js +1 -1
- package/dist/tasty/parser/lru.js +1 -1
- package/dist/tasty/parser/parser.js +1 -1
- package/dist/tasty/parser/tokenizer.js +1 -1
- package/dist/tasty/parser/types.js +1 -1
- package/dist/tasty/pipeline/conditions.js +1 -1
- package/dist/tasty/pipeline/exclusive.d.ts +2 -0
- package/dist/tasty/pipeline/exclusive.js +1 -1
- package/dist/tasty/pipeline/index.d.ts +2 -0
- package/dist/tasty/pipeline/index.js +1 -1
- package/dist/tasty/pipeline/materialize.js +1 -1
- package/dist/tasty/pipeline/parseStateKey.d.ts +2 -0
- package/dist/tasty/pipeline/parseStateKey.js +1 -1
- package/dist/tasty/pipeline/simplify.js +1 -1
- package/dist/tasty/plugins/index.d.ts +3 -0
- package/dist/tasty/plugins/okhsl-plugin.js +1 -1
- package/dist/tasty/properties/index.js +1 -1
- package/dist/tasty/states/index.d.ts +2 -0
- package/dist/tasty/states/index.js +1 -1
- package/dist/tasty/static/index.js +1 -1
- package/dist/tasty/static/tastyStatic.js +1 -1
- package/dist/tasty/static/types.js +1 -1
- package/dist/tasty/styles/align.js +1 -1
- package/dist/tasty/styles/border.js +1 -1
- package/dist/tasty/styles/color.js +1 -1
- package/dist/tasty/styles/createStyle.js +1 -1
- package/dist/tasty/styles/dimension.js +1 -1
- package/dist/tasty/styles/display.js +1 -1
- package/dist/tasty/styles/fade.js +1 -1
- package/dist/tasty/styles/fill.js +1 -1
- package/dist/tasty/styles/flow.js +1 -1
- package/dist/tasty/styles/gap.js +1 -1
- package/dist/tasty/styles/height.js +1 -1
- package/dist/tasty/styles/index.js +1 -1
- package/dist/tasty/styles/inset.js +1 -1
- package/dist/tasty/styles/justify.js +1 -1
- package/dist/tasty/styles/list.js +1 -1
- package/dist/tasty/styles/margin.js +1 -1
- package/dist/tasty/styles/outline.js +1 -1
- package/dist/tasty/styles/padding.js +1 -1
- package/dist/tasty/styles/predefined.d.ts +1 -0
- package/dist/tasty/styles/predefined.js +1 -1
- package/dist/tasty/styles/preset.js +1 -1
- package/dist/tasty/styles/radius.js +1 -1
- package/dist/tasty/styles/scrollbar.js +1 -1
- package/dist/tasty/styles/shadow.js +1 -1
- package/dist/tasty/styles/styledScrollbar.js +1 -1
- package/dist/tasty/styles/transition.js +1 -1
- package/dist/tasty/styles/width.js +1 -1
- package/dist/tasty/tasty.d.ts +1 -0
- package/dist/tasty/tasty.js +1 -1
- package/dist/tasty/utils/cache-wrapper.js +1 -1
- package/dist/tasty/utils/case-converter.js +1 -1
- package/dist/tasty/utils/colors.js +1 -1
- package/dist/tasty/utils/dotize.js +1 -1
- package/dist/tasty/utils/filter-base-props.js +1 -1
- package/dist/tasty/utils/get-display-name.js +1 -1
- package/dist/tasty/utils/hsl-to-rgb.js +1 -1
- package/dist/tasty/utils/is-dev-env.js +1 -1
- package/dist/tasty/utils/merge-styles.js +1 -1
- package/dist/tasty/utils/mod-attrs.js +1 -1
- package/dist/tasty/utils/okhsl-to-rgb.js +1 -1
- package/dist/tasty/utils/process-tokens.js +1 -1
- package/dist/tasty/utils/resolve-recipes.js +1 -1
- package/dist/tasty/utils/string.js +1 -1
- package/dist/tasty/utils/styles.js +1 -1
- package/dist/tasty/utils/typography.js +1 -1
- package/dist/tasty/utils/warnings.js +1 -1
- package/dist/tasty/zero/babel.js +1 -1
- package/dist/tasty/zero/index.js +1 -1
- package/dist/tasty/zero/next.js +1 -1
- package/dist/tokens/base.js +1 -1
- package/dist/tokens/colors.js +1 -1
- package/dist/tokens/index.js +1 -1
- package/dist/tokens/layout.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/cache-wrapper.js +1 -1
- package/dist/utils/case-converter.js +1 -1
- package/dist/utils/hsl-to-rgb.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/merge-styles.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/okhsl-to-rgb.js +1 -1
- package/dist/utils/process-tokens.js +3 -1
- package/dist/utils/process-tokens.js.map +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/forwardRefWithGenerics.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/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.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/useQaProps.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/resolve-recipes.js +1 -1
- package/dist/utils/string.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/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-persistent-state.js","names":[],"sources":["../../../../src/components/overlays/Notifications/use-persistent-state.ts"],"sourcesContent":["import { Key, useRef, useState } from 'react';\n\nimport { useEvent } from '../../../_internal';\n\nimport { cleanupAndGetValidIds, saveDismissedId } from './dismissed-storage';\n\nimport type { PersistentNotificationItem } from './types';\n\n// ─── Types ───────────────────────────────────────────────────────────\n\nexport interface PersistentState {\n persistentItems: PersistentNotificationItem[];\n addPersistentItem: (item: PersistentNotificationItem) => void;\n removePersistentItem: (id: Key) => void;\n removePersistentItemsByOwner: (ownerId: string) => void;\n clearPersistentItems: () => void;\n markAllAsRead: () => void;\n /**\n * Returns true if the given id was previously moved to the persistent list\n * and has NOT been explicitly removed from it (i.e. still archived, or was\n * auto-dismissed but not yet user-dismissed from the persistent list).\n */\n hasDismissedPersistentId: (id: Key) => boolean;\n /**\n * Returns true if the given id was explicitly removed from the persistent\n * list by the user. Such notifications should be completely ignored on\n * subsequent triggers (no overlay, no persistent storage).\n */\n isFullyDismissedId: (id: Key) => boolean;\n /**\n * Marks an id as dismissed in both the in-memory set and localStorage.\n * Used for `'action'` dismissals that go through `removePersistentItem`\n * instead of `addPersistentItem`.\n */\n saveDismissedPersistentId: (id: Key) => void;\n}\n\n// ─── Hook ────────────────────────────────────────────────────────────\n\nexport function usePersistentState(maxItems: number): PersistentState {\n const [persistentItems, setPersistentItems] = useState<\n PersistentNotificationItem[]\n >([]);\n\n // Tracks IDs that have been moved to the persistent list at least once.\n // Used to skip the overlay when the same id reappears.\n // Lazy-initialized from localStorage so dismissed IDs survive page reloads.\n const dismissedPersistentIdsRef = useRef<Set<string> | null>(null);\n if (dismissedPersistentIdsRef.current === null) {\n dismissedPersistentIdsRef.current = cleanupAndGetValidIds();\n }\n\n // Tracks IDs that were explicitly removed from the persistent list by the\n // user. These should be completely ignored on subsequent triggers.\n const fullyDismissedIdsRef = useRef<Set<string>>(new Set());\n\n const addPersistentItem = useEvent((item: PersistentNotificationItem) => {\n // If the user already dismissed this item from the persistent list, don't re-add it.\n if (fullyDismissedIdsRef.current.has(String(item.id))) return;\n\n dismissedPersistentIdsRef.current!.add(String(item.id));\n saveDismissedId(item.id);\n\n setPersistentItems((prev) => {\n // Upsert by id\n const existingIndex = prev.findIndex((i) => i.id === item.id);\n let newItems: PersistentNotificationItem[];\n\n if (existingIndex !== -1) {\n newItems = [...prev];\n // Updated items are marked unread again\n newItems[existingIndex] = {\n ...newItems[existingIndex],\n ...item,\n isRead: false,\n };\n } else {\n newItems = [{ ...item, isRead: item.isRead ?? false }, ...prev];\n }\n\n // Enforce max cap\n if (newItems.length > maxItems) {\n newItems = newItems.slice(0, maxItems);\n }\n\n // Sort newest first\n newItems.sort((a, b) => b.createdAt - a.createdAt);\n\n return newItems;\n });\n });\n\n const removePersistentItem = useEvent((id: Key) => {\n fullyDismissedIdsRef.current.add(String(id));\n setPersistentItems((prev) => prev.filter((i) => i.id !== id));\n });\n\n const removePersistentItemsByOwner = useEvent((ownerId: string) => {\n setPersistentItems((prev) => prev.filter((i) => i.ownerId !== ownerId));\n });\n\n const clearPersistentItems = useEvent(() => {\n setPersistentItems([]);\n });\n\n const markAllAsRead = useEvent(() => {\n setPersistentItems((prev) => {\n const hasUnread = prev.some((i) => !i.isRead);\n\n if (!hasUnread) return prev;\n\n return prev.map((i) => (i.isRead ? i : { ...i, isRead: true }));\n });\n });\n\n const hasDismissedPersistentId = useEvent((id: Key): boolean => {\n return dismissedPersistentIdsRef.current!.has(String(id));\n });\n\n const isFullyDismissedId = useEvent((id: Key): boolean => {\n return fullyDismissedIdsRef.current.has(String(id));\n });\n\n const saveDismissedPersistentId = useEvent((id: Key): void => {\n dismissedPersistentIdsRef.current!.add(String(id));\n saveDismissedId(id);\n });\n\n return {\n persistentItems,\n addPersistentItem,\n removePersistentItem,\n removePersistentItemsByOwner,\n clearPersistentItems,\n markAllAsRead,\n hasDismissedPersistentId,\n isFullyDismissedId,\n saveDismissedPersistentId,\n };\n}\n"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"use-persistent-state.js","names":[],"sources":["../../../../src/components/overlays/Notifications/use-persistent-state.ts"],"sourcesContent":["import { Key, useRef, useState } from 'react';\n\nimport { useEvent } from '../../../_internal';\n\nimport { cleanupAndGetValidIds, saveDismissedId } from './dismissed-storage';\n\nimport type { PersistentNotificationItem } from './types';\n\n// ─── Types ───────────────────────────────────────────────────────────\n\nexport interface PersistentState {\n persistentItems: PersistentNotificationItem[];\n addPersistentItem: (item: PersistentNotificationItem) => void;\n removePersistentItem: (id: Key) => void;\n removePersistentItemsByOwner: (ownerId: string) => void;\n clearPersistentItems: () => void;\n markAllAsRead: () => void;\n /**\n * Returns true if the given id was previously moved to the persistent list\n * and has NOT been explicitly removed from it (i.e. still archived, or was\n * auto-dismissed but not yet user-dismissed from the persistent list).\n */\n hasDismissedPersistentId: (id: Key) => boolean;\n /**\n * Returns true if the given id was explicitly removed from the persistent\n * list by the user. Such notifications should be completely ignored on\n * subsequent triggers (no overlay, no persistent storage).\n */\n isFullyDismissedId: (id: Key) => boolean;\n /**\n * Marks an id as dismissed in both the in-memory set and localStorage.\n * Used for `'action'` dismissals that go through `removePersistentItem`\n * instead of `addPersistentItem`.\n */\n saveDismissedPersistentId: (id: Key) => void;\n /**\n * Removes an id from the fully-dismissed set.\n * Used to undo an `'action'` dismissal when the async action is cancelled.\n */\n undoFullyDismissedId: (id: Key) => void;\n /**\n * Removes an item from the persistent list without marking it as fully dismissed.\n * Used to undo a `'close'` dismissal that moved the notification to persistent.\n */\n removePersistentItemSilently: (id: Key) => void;\n}\n\n// ─── Hook ────────────────────────────────────────────────────────────\n\nexport function usePersistentState(maxItems: number): PersistentState {\n const [persistentItems, setPersistentItems] = useState<\n PersistentNotificationItem[]\n >([]);\n\n // Tracks IDs that have been moved to the persistent list at least once.\n // Used to skip the overlay when the same id reappears.\n // Lazy-initialized from localStorage so dismissed IDs survive page reloads.\n const dismissedPersistentIdsRef = useRef<Set<string> | null>(null);\n if (dismissedPersistentIdsRef.current === null) {\n dismissedPersistentIdsRef.current = cleanupAndGetValidIds();\n }\n\n // Tracks IDs that were explicitly removed from the persistent list by the\n // user. These should be completely ignored on subsequent triggers.\n const fullyDismissedIdsRef = useRef<Set<string>>(new Set());\n\n const addPersistentItem = useEvent((item: PersistentNotificationItem) => {\n // If the user already dismissed this item from the persistent list, don't re-add it.\n if (fullyDismissedIdsRef.current.has(String(item.id))) return;\n\n dismissedPersistentIdsRef.current!.add(String(item.id));\n saveDismissedId(item.id);\n\n setPersistentItems((prev) => {\n // Upsert by id\n const existingIndex = prev.findIndex((i) => i.id === item.id);\n let newItems: PersistentNotificationItem[];\n\n if (existingIndex !== -1) {\n newItems = [...prev];\n // Updated items are marked unread again\n newItems[existingIndex] = {\n ...newItems[existingIndex],\n ...item,\n isRead: false,\n };\n } else {\n newItems = [{ ...item, isRead: item.isRead ?? false }, ...prev];\n }\n\n // Enforce max cap\n if (newItems.length > maxItems) {\n newItems = newItems.slice(0, maxItems);\n }\n\n // Sort newest first\n newItems.sort((a, b) => b.createdAt - a.createdAt);\n\n return newItems;\n });\n });\n\n const removePersistentItem = useEvent((id: Key) => {\n fullyDismissedIdsRef.current.add(String(id));\n setPersistentItems((prev) => prev.filter((i) => i.id !== id));\n });\n\n const removePersistentItemsByOwner = useEvent((ownerId: string) => {\n setPersistentItems((prev) => prev.filter((i) => i.ownerId !== ownerId));\n });\n\n const clearPersistentItems = useEvent(() => {\n setPersistentItems([]);\n });\n\n const markAllAsRead = useEvent(() => {\n setPersistentItems((prev) => {\n const hasUnread = prev.some((i) => !i.isRead);\n\n if (!hasUnread) return prev;\n\n return prev.map((i) => (i.isRead ? i : { ...i, isRead: true }));\n });\n });\n\n const hasDismissedPersistentId = useEvent((id: Key): boolean => {\n return dismissedPersistentIdsRef.current!.has(String(id));\n });\n\n const isFullyDismissedId = useEvent((id: Key): boolean => {\n return fullyDismissedIdsRef.current.has(String(id));\n });\n\n const saveDismissedPersistentId = useEvent((id: Key): void => {\n dismissedPersistentIdsRef.current!.add(String(id));\n saveDismissedId(id);\n });\n\n const undoFullyDismissedId = useEvent((id: Key): void => {\n fullyDismissedIdsRef.current.delete(String(id));\n });\n\n const removePersistentItemSilently = useEvent((id: Key): void => {\n dismissedPersistentIdsRef.current!.delete(String(id));\n setPersistentItems((prev) => prev.filter((i) => i.id !== id));\n });\n\n return {\n persistentItems,\n addPersistentItem,\n removePersistentItem,\n removePersistentItemsByOwner,\n clearPersistentItems,\n markAllAsRead,\n hasDismissedPersistentId,\n isFullyDismissedId,\n saveDismissedPersistentId,\n undoFullyDismissedId,\n removePersistentItemSilently,\n };\n}\n"],"mappings":";;;;;;AAiDA,SAAgB,mBAAmB,UAAmC;CACpE,MAAM,CAAC,iBAAiB,sBAAsB,SAE5C,EAAE,CAAC;CAKL,MAAM,4BAA4B,OAA2B,KAAK;AAClE,KAAI,0BAA0B,YAAY,KACxC,2BAA0B,UAAU,uBAAuB;CAK7D,MAAM,uBAAuB,uBAAoB,IAAI,KAAK,CAAC;AAmF3D,QAAO;EACL;EACA,mBAnFwB,UAAU,SAAqC;AAEvE,OAAI,qBAAqB,QAAQ,IAAI,OAAO,KAAK,GAAG,CAAC,CAAE;AAEvD,6BAA0B,QAAS,IAAI,OAAO,KAAK,GAAG,CAAC;AACvD,mBAAgB,KAAK,GAAG;AAExB,uBAAoB,SAAS;IAE3B,MAAM,gBAAgB,KAAK,WAAW,MAAM,EAAE,OAAO,KAAK,GAAG;IAC7D,IAAI;AAEJ,QAAI,kBAAkB,IAAI;AACxB,gBAAW,CAAC,GAAG,KAAK;AAEpB,cAAS,iBAAiB;MACxB,GAAG,SAAS;MACZ,GAAG;MACH,QAAQ;MACT;UAED,YAAW,CAAC;KAAE,GAAG;KAAM,QAAQ,KAAK,UAAU;KAAO,EAAE,GAAG,KAAK;AAIjE,QAAI,SAAS,SAAS,SACpB,YAAW,SAAS,MAAM,GAAG,SAAS;AAIxC,aAAS,MAAM,GAAG,MAAM,EAAE,YAAY,EAAE,UAAU;AAElD,WAAO;KACP;IACF;EAkDA,sBAhD2B,UAAU,OAAY;AACjD,wBAAqB,QAAQ,IAAI,OAAO,GAAG,CAAC;AAC5C,uBAAoB,SAAS,KAAK,QAAQ,MAAM,EAAE,OAAO,GAAG,CAAC;IAC7D;EA8CA,8BA5CmC,UAAU,YAAoB;AACjE,uBAAoB,SAAS,KAAK,QAAQ,MAAM,EAAE,YAAY,QAAQ,CAAC;IACvE;EA2CA,sBAzC2B,eAAe;AAC1C,sBAAmB,EAAE,CAAC;IACtB;EAwCA,eAtCoB,eAAe;AACnC,uBAAoB,SAAS;AAG3B,QAAI,CAFc,KAAK,MAAM,MAAM,CAAC,EAAE,OAAO,CAE7B,QAAO;AAEvB,WAAO,KAAK,KAAK,MAAO,EAAE,SAAS,IAAI;KAAE,GAAG;KAAG,QAAQ;KAAM,CAAE;KAC/D;IACF;EA+BA,0BA7B+B,UAAU,OAAqB;AAC9D,UAAO,0BAA0B,QAAS,IAAI,OAAO,GAAG,CAAC;IACzD;EA4BA,oBA1ByB,UAAU,OAAqB;AACxD,UAAO,qBAAqB,QAAQ,IAAI,OAAO,GAAG,CAAC;IACnD;EAyBA,2BAvBgC,UAAU,OAAkB;AAC5D,6BAA0B,QAAS,IAAI,OAAO,GAAG,CAAC;AAClD,mBAAgB,GAAG;IACnB;EAqBA,sBAnB2B,UAAU,OAAkB;AACvD,wBAAqB,QAAQ,OAAO,OAAO,GAAG,CAAC;IAC/C;EAkBA,8BAhBmC,UAAU,OAAkB;AAC/D,6BAA0B,QAAS,OAAO,OAAO,GAAG,CAAC;AACrD,uBAAoB,SAAS,KAAK,QAAQ,MAAM,EAAE,OAAO,GAAG,CAAC;IAC7D;EAcD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { tasty } from "../../../tasty/tasty.js";
|
|
3
3
|
import { _Item } from "../../content/Item/Item.js";
|
|
4
4
|
import { getThemeIcon } from "./useToast.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { useToastContext } from "../Notifications/NotificationContext.js";
|
|
3
3
|
import { useProgressToast } from "./useProgressToast.js";
|
|
4
4
|
import { getThemeIcon, useToast } from "./useToast.js";
|
|
@@ -29,6 +29,8 @@ interface ToastData {
|
|
|
29
29
|
interface ProgressToastOptions extends Omit<ToastData, 'duration'> {
|
|
30
30
|
/** Whether the toast is in loading state */
|
|
31
31
|
isLoading: boolean;
|
|
32
|
+
/** When true, a "Hide" action is shown during loading so the user can dismiss the toast temporarily. */
|
|
33
|
+
isDismissible?: boolean;
|
|
32
34
|
}
|
|
33
35
|
/**
|
|
34
36
|
* Empty value that indicates no toast should be shown.
|
|
@@ -1,8 +1,11 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
|
+
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
3
|
+
import { ItemAction } from "../../actions/ItemAction/ItemAction.js";
|
|
2
4
|
import { useToastContext } from "../Notifications/NotificationContext.js";
|
|
3
5
|
import { useEffect, useRef } from "react";
|
|
6
|
+
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
4
7
|
|
|
5
|
-
//#region src/components/overlays/Toast/useProgressToast.
|
|
8
|
+
//#region src/components/overlays/Toast/useProgressToast.tsx
|
|
6
9
|
const RESULT_DURATION = 3e3;
|
|
7
10
|
/**
|
|
8
11
|
* Check if the options represent an "empty" value (null, undefined, false, or empty object).
|
|
@@ -44,13 +47,14 @@ function getStringValue(value) {
|
|
|
44
47
|
* ```
|
|
45
48
|
*/
|
|
46
49
|
function useProgressToast(options) {
|
|
47
|
-
const { addToast, removeToast } = useToastContext();
|
|
50
|
+
const { addToast, removeToast, updateToast } = useToastContext();
|
|
48
51
|
const toastIdRef = useRef(null);
|
|
49
52
|
const wasLoadingRef = useRef(null);
|
|
50
53
|
const hideTimerRef = useRef(null);
|
|
51
54
|
const isFirstRenderRef = useRef(true);
|
|
52
55
|
const optionsRef = useRef(options);
|
|
53
56
|
const hasBeenLoadingRef = useRef(false);
|
|
57
|
+
const hiddenByUserRef = useRef(false);
|
|
54
58
|
const prevThemeRef = useRef(void 0);
|
|
55
59
|
const prevTitleRef = useRef(void 0);
|
|
56
60
|
const prevDescriptionRef = useRef(void 0);
|
|
@@ -63,9 +67,17 @@ function useProgressToast(options) {
|
|
|
63
67
|
};
|
|
64
68
|
const isEmpty = isEmptyOptions(options);
|
|
65
69
|
const isLoading = isEmpty ? false : options.isLoading;
|
|
70
|
+
const isDismissible = isEmpty ? false : !!options.isDismissible;
|
|
66
71
|
const currentTheme = isEmpty ? void 0 : options.theme;
|
|
67
72
|
const currentTitle = isEmpty ? void 0 : getStringValue(options.title);
|
|
68
73
|
const currentDescription = isEmpty ? void 0 : getStringValue(options.description);
|
|
74
|
+
const handleHide = useEvent(() => {
|
|
75
|
+
if (toastIdRef.current != null) {
|
|
76
|
+
removeToast(toastIdRef.current);
|
|
77
|
+
toastIdRef.current = null;
|
|
78
|
+
}
|
|
79
|
+
hiddenByUserRef.current = true;
|
|
80
|
+
});
|
|
69
81
|
useEffect(() => {
|
|
70
82
|
const wasLoading = wasLoadingRef.current;
|
|
71
83
|
const isFirstRender = isFirstRenderRef.current;
|
|
@@ -77,6 +89,7 @@ function useProgressToast(options) {
|
|
|
77
89
|
toastIdRef.current = null;
|
|
78
90
|
}
|
|
79
91
|
hasBeenLoadingRef.current = false;
|
|
92
|
+
hiddenByUserRef.current = false;
|
|
80
93
|
wasLoadingRef.current = null;
|
|
81
94
|
isFirstRenderRef.current = false;
|
|
82
95
|
prevThemeRef.current = void 0;
|
|
@@ -84,18 +97,31 @@ function useProgressToast(options) {
|
|
|
84
97
|
prevDescriptionRef.current = void 0;
|
|
85
98
|
return;
|
|
86
99
|
}
|
|
87
|
-
const { isLoading: currentIsLoading, ...currentToastData } = currentOptions;
|
|
100
|
+
const { isLoading: currentIsLoading, isDismissible: _isDismissible, ...currentToastData } = currentOptions;
|
|
88
101
|
const themeChanged = currentTheme !== prevThemeRef.current;
|
|
89
102
|
const titleChanged = currentTitle !== prevTitleRef.current;
|
|
90
103
|
const descriptionChanged = currentDescription !== prevDescriptionRef.current;
|
|
91
104
|
const dataChanged = themeChanged || titleChanged || descriptionChanged;
|
|
105
|
+
const hideAction = isDismissible && currentIsLoading ? /* @__PURE__ */ jsx(ItemAction, {
|
|
106
|
+
type: "secondary",
|
|
107
|
+
onPress: handleHide,
|
|
108
|
+
children: "Hide"
|
|
109
|
+
}) : null;
|
|
110
|
+
const mergedActions = hideAction ? /* @__PURE__ */ jsxs(Fragment$1, { children: [currentToastData.actions, hideAction] }) : currentToastData.actions;
|
|
111
|
+
const toastData = {
|
|
112
|
+
title: void 0,
|
|
113
|
+
description: void 0,
|
|
114
|
+
theme: void 0,
|
|
115
|
+
icon: void 0,
|
|
116
|
+
itemProps: void 0,
|
|
117
|
+
...currentToastData,
|
|
118
|
+
actions: mergedActions,
|
|
119
|
+
isLoading: currentIsLoading,
|
|
120
|
+
duration: null
|
|
121
|
+
};
|
|
92
122
|
const showToast = () => {
|
|
93
|
-
if (toastIdRef.current != null)
|
|
94
|
-
toastIdRef.current = addToast(
|
|
95
|
-
...currentToastData,
|
|
96
|
-
isLoading: currentIsLoading,
|
|
97
|
-
duration: null
|
|
98
|
-
}, true);
|
|
123
|
+
if (toastIdRef.current != null) updateToast(toastIdRef.current, toastData);
|
|
124
|
+
else toastIdRef.current = addToast(toastData, true);
|
|
99
125
|
};
|
|
100
126
|
const showToastWithTimer = () => {
|
|
101
127
|
showToast();
|
|
@@ -109,24 +135,23 @@ function useProgressToast(options) {
|
|
|
109
135
|
if (currentIsLoading) {
|
|
110
136
|
hasBeenLoadingRef.current = true;
|
|
111
137
|
clearHideTimer();
|
|
112
|
-
if (toastIdRef.current == null) showToast();
|
|
138
|
+
if (hiddenByUserRef.current) {} else if (toastIdRef.current == null) showToast();
|
|
113
139
|
else if (dataChanged) showToast();
|
|
114
140
|
} else if (wasLoading === true && !currentIsLoading) {
|
|
141
|
+
hiddenByUserRef.current = false;
|
|
115
142
|
clearHideTimer();
|
|
116
143
|
if (currentTitle) showToastWithTimer();
|
|
117
144
|
else if (toastIdRef.current != null) {
|
|
118
145
|
removeToast(toastIdRef.current);
|
|
119
146
|
toastIdRef.current = null;
|
|
120
147
|
}
|
|
121
|
-
} else if (!currentIsLoading && !isFirstRender && hasBeenLoadingRef.current && dataChanged) {
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
toastIdRef.current = null;
|
|
129
|
-
}
|
|
148
|
+
} else if (!currentIsLoading && !isFirstRender && hasBeenLoadingRef.current && dataChanged && toastIdRef.current != null) if (currentTitle) {
|
|
149
|
+
clearHideTimer();
|
|
150
|
+
showToastWithTimer();
|
|
151
|
+
} else {
|
|
152
|
+
clearHideTimer();
|
|
153
|
+
removeToast(toastIdRef.current);
|
|
154
|
+
toastIdRef.current = null;
|
|
130
155
|
}
|
|
131
156
|
wasLoadingRef.current = currentIsLoading;
|
|
132
157
|
isFirstRenderRef.current = false;
|
|
@@ -136,11 +161,14 @@ function useProgressToast(options) {
|
|
|
136
161
|
}, [
|
|
137
162
|
isEmpty,
|
|
138
163
|
isLoading,
|
|
164
|
+
isDismissible,
|
|
139
165
|
currentTheme,
|
|
140
166
|
currentTitle,
|
|
141
167
|
currentDescription,
|
|
142
168
|
addToast,
|
|
143
|
-
removeToast
|
|
169
|
+
removeToast,
|
|
170
|
+
updateToast,
|
|
171
|
+
handleHide
|
|
144
172
|
]);
|
|
145
173
|
useEffect(() => {
|
|
146
174
|
return () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useProgressToast.js","names":[],"sources":["../../../../src/components/overlays/Toast/useProgressToast.ts"],"sourcesContent":["import { Key, useEffect, useRef } from 'react';\n\nimport { useToastContext } from './ToastProvider';\n\nimport type { ProgressToastEmpty, ProgressToastOptions } from './types';\n\nconst RESULT_DURATION = 3000;\n\n/**\n * Check if the options represent an \"empty\" value (null, undefined, false, or empty object).\n * When empty, the hook should immediately remove any existing toast.\n */\nfunction isEmptyOptions(\n options: ProgressToastOptions | ProgressToastEmpty,\n): options is ProgressToastEmpty {\n if (options == null || options === false) return true;\n if (typeof options === 'object' && Object.keys(options).length === 0)\n return true;\n return false;\n}\n\n// Get string value for comparison (only strings are compared for re-show logic)\nfunction getStringValue(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined;\n}\n\n/**\n * Hook to display a progress toast that persists while loading.\n *\n * @example\n * ```tsx\n * useProgressToast(\n * isLoading\n * ? { isLoading: true, title: 'Saving...', icon: <Spinner /> }\n * : { isLoading: false, title: 'Saved!', icon: <IconCheck />, theme: 'success' }\n * );\n *\n * // Or with error handling:\n * useProgressToast(\n * isLoading\n * ? { isLoading: true, title: 'Saving...', icon: <Spinner /> }\n * : isError\n * ? { isLoading: false, title: 'Error', description: errorMessage, theme: 'danger' }\n * : { isLoading: false, title: 'Saved!', theme: 'success' }\n * );\n *\n * // Pass empty value to immediately remove any existing toast:\n * useProgressToast(shouldShow ? { isLoading: true, title: 'Loading...' } : null);\n *\n * // Or call with no argument to dismiss:\n * useProgressToast();\n * ```\n */\nexport function useProgressToast(\n options?: ProgressToastOptions | ProgressToastEmpty,\n): void {\n const { addToast, removeToast } = useToastContext();\n\n const toastIdRef = useRef<Key | null>(null);\n const wasLoadingRef = useRef<boolean | null>(null);\n const hideTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isFirstRenderRef = useRef(true);\n const optionsRef = useRef(options);\n const hasBeenLoadingRef = useRef(false);\n\n // Track previous string values for re-show comparison\n const prevThemeRef = useRef<string | undefined>(undefined);\n const prevTitleRef = useRef<string | undefined>(undefined);\n const prevDescriptionRef = useRef<string | undefined>(undefined);\n\n // Always update optionsRef to latest\n optionsRef.current = options;\n\n // Clear any pending hide timer\n const clearHideTimer = () => {\n if (hideTimerRef.current) {\n clearTimeout(hideTimerRef.current);\n hideTimerRef.current = null;\n }\n };\n\n // Check if current options are empty\n const isEmpty = isEmptyOptions(options);\n\n // Extract values only when options are not empty\n const isLoading = isEmpty ? false : options.isLoading;\n const currentTheme = isEmpty ? undefined : options.theme;\n const currentTitle = isEmpty ? undefined : getStringValue(options.title);\n const currentDescription = isEmpty\n ? undefined\n : getStringValue(options.description);\n\n useEffect(() => {\n const wasLoading = wasLoadingRef.current;\n const isFirstRender = isFirstRenderRef.current;\n const currentOptions = optionsRef.current;\n const currentIsEmpty = isEmptyOptions(currentOptions);\n\n // Handle empty options - immediately remove any existing toast\n if (currentIsEmpty) {\n clearHideTimer();\n\n if (toastIdRef.current != null) {\n removeToast(toastIdRef.current);\n toastIdRef.current = null;\n }\n\n // Reset loading gate so the next cycle requires isLoading again\n hasBeenLoadingRef.current = false;\n wasLoadingRef.current = null;\n isFirstRenderRef.current = false;\n prevThemeRef.current = undefined;\n prevTitleRef.current = undefined;\n prevDescriptionRef.current = undefined;\n return;\n }\n\n // From here, we know options is a valid ProgressToastOptions\n const { isLoading: currentIsLoading, ...currentToastData } = currentOptions;\n\n // Check if meaningful data changed (only string values)\n const themeChanged = currentTheme !== prevThemeRef.current;\n const titleChanged = currentTitle !== prevTitleRef.current;\n const descriptionChanged =\n currentDescription !== prevDescriptionRef.current;\n const dataChanged = themeChanged || titleChanged || descriptionChanged;\n\n // Helper to create a new toast (removes old one first if exists)\n const showToast = () => {\n // Remove existing toast if any\n if (toastIdRef.current != null) {\n removeToast(toastIdRef.current);\n }\n\n // Create new toast with fresh data\n // Icon auto-resolved by ToastItem based on theme/isLoading\n toastIdRef.current = addToast(\n {\n ...currentToastData,\n isLoading: currentIsLoading,\n duration: null, // Persistent - we control removal\n },\n true, // isProgress = true\n );\n };\n\n // Helper to show toast and schedule removal\n const showToastWithTimer = () => {\n showToast();\n\n // Schedule removal after result duration\n hideTimerRef.current = setTimeout(() => {\n if (toastIdRef.current != null) {\n removeToast(toastIdRef.current);\n toastIdRef.current = null;\n }\n }, RESULT_DURATION);\n };\n\n if (currentIsLoading) {\n // Starting or continuing loading\n hasBeenLoadingRef.current = true;\n clearHideTimer();\n\n if (toastIdRef.current == null) {\n // Create new toast\n showToast();\n } else if (dataChanged) {\n // Toast exists but data changed (e.g., switching back to loading from another state)\n showToast();\n }\n } else if (wasLoading === true && !currentIsLoading) {\n // Transitioning from loading to not loading\n clearHideTimer();\n\n if (currentTitle) {\n // Show result toast with timer\n showToastWithTimer();\n } else {\n // No content - just remove the loading toast immediately\n if (toastIdRef.current != null) {\n removeToast(toastIdRef.current);\n toastIdRef.current = null;\n }\n }\n } else if (\n !currentIsLoading &&\n !isFirstRender &&\n hasBeenLoadingRef.current &&\n dataChanged\n ) {\n // Not loading, data changed after a loading cycle - update or re-show toast\n if (currentTitle) {\n clearHideTimer();\n showToastWithTimer();\n } else if (toastIdRef.current != null) {\n clearHideTimer();\n removeToast(toastIdRef.current);\n toastIdRef.current = null;\n }\n }\n\n // Update refs for next comparison\n wasLoadingRef.current = currentIsLoading;\n isFirstRenderRef.current = false;\n prevThemeRef.current = currentTheme;\n prevTitleRef.current = currentTitle;\n prevDescriptionRef.current = currentDescription;\n }, [\n isEmpty,\n isLoading,\n currentTheme,\n currentTitle,\n currentDescription,\n addToast,\n removeToast,\n ]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n clearHideTimer();\n\n if (toastIdRef.current != null) {\n removeToast(toastIdRef.current);\n toastIdRef.current = null;\n }\n };\n }, [removeToast]);\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useProgressToast.js","names":[],"sources":["../../../../src/components/overlays/Toast/useProgressToast.tsx"],"sourcesContent":["import { Key, useEffect, useRef } from 'react';\n\nimport { useEvent } from '../../../_internal';\nimport { ItemAction } from '../../actions/ItemAction/ItemAction';\n\nimport { useToastContext } from './ToastProvider';\n\nimport type {\n ProgressToastEmpty,\n ProgressToastOptions,\n ToastData,\n} from './types';\n\nconst RESULT_DURATION = 3000;\n\n/**\n * Check if the options represent an \"empty\" value (null, undefined, false, or empty object).\n * When empty, the hook should immediately remove any existing toast.\n */\nfunction isEmptyOptions(\n options: ProgressToastOptions | ProgressToastEmpty,\n): options is ProgressToastEmpty {\n if (options == null || options === false) return true;\n if (typeof options === 'object' && Object.keys(options).length === 0)\n return true;\n return false;\n}\n\n// Get string value for comparison (only strings are compared for re-show logic)\nfunction getStringValue(value: unknown): string | undefined {\n return typeof value === 'string' ? value : undefined;\n}\n\n/**\n * Hook to display a progress toast that persists while loading.\n *\n * @example\n * ```tsx\n * useProgressToast(\n * isLoading\n * ? { isLoading: true, title: 'Saving...', icon: <Spinner /> }\n * : { isLoading: false, title: 'Saved!', icon: <IconCheck />, theme: 'success' }\n * );\n *\n * // Or with error handling:\n * useProgressToast(\n * isLoading\n * ? { isLoading: true, title: 'Saving...', icon: <Spinner /> }\n * : isError\n * ? { isLoading: false, title: 'Error', description: errorMessage, theme: 'danger' }\n * : { isLoading: false, title: 'Saved!', theme: 'success' }\n * );\n *\n * // Pass empty value to immediately remove any existing toast:\n * useProgressToast(shouldShow ? { isLoading: true, title: 'Loading...' } : null);\n *\n * // Or call with no argument to dismiss:\n * useProgressToast();\n * ```\n */\nexport function useProgressToast(\n options?: ProgressToastOptions | ProgressToastEmpty,\n): void {\n const { addToast, removeToast, updateToast } = useToastContext();\n\n const toastIdRef = useRef<Key | null>(null);\n const wasLoadingRef = useRef<boolean | null>(null);\n const hideTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isFirstRenderRef = useRef(true);\n const optionsRef = useRef(options);\n const hasBeenLoadingRef = useRef(false);\n const hiddenByUserRef = useRef(false);\n\n // Track previous string values for re-show comparison\n const prevThemeRef = useRef<string | undefined>(undefined);\n const prevTitleRef = useRef<string | undefined>(undefined);\n const prevDescriptionRef = useRef<string | undefined>(undefined);\n\n // Always update optionsRef to latest\n optionsRef.current = options;\n\n // Clear any pending hide timer\n const clearHideTimer = () => {\n if (hideTimerRef.current) {\n clearTimeout(hideTimerRef.current);\n hideTimerRef.current = null;\n }\n };\n\n // Check if current options are empty\n const isEmpty = isEmptyOptions(options);\n\n // Extract values only when options are not empty\n const isLoading = isEmpty ? false : options.isLoading;\n const isDismissible = isEmpty ? false : !!options.isDismissible;\n const currentTheme = isEmpty ? undefined : options.theme;\n const currentTitle = isEmpty ? undefined : getStringValue(options.title);\n const currentDescription = isEmpty\n ? undefined\n : getStringValue(options.description);\n\n const handleHide = useEvent(() => {\n if (toastIdRef.current != null) {\n removeToast(toastIdRef.current);\n toastIdRef.current = null;\n }\n\n hiddenByUserRef.current = true;\n });\n\n useEffect(() => {\n const wasLoading = wasLoadingRef.current;\n const isFirstRender = isFirstRenderRef.current;\n const currentOptions = optionsRef.current;\n const currentIsEmpty = isEmptyOptions(currentOptions);\n\n // Handle empty options - immediately remove any existing toast\n if (currentIsEmpty) {\n clearHideTimer();\n\n if (toastIdRef.current != null) {\n removeToast(toastIdRef.current);\n toastIdRef.current = null;\n }\n\n // Reset loading gate so the next cycle requires isLoading again\n hasBeenLoadingRef.current = false;\n hiddenByUserRef.current = false;\n wasLoadingRef.current = null;\n isFirstRenderRef.current = false;\n prevThemeRef.current = undefined;\n prevTitleRef.current = undefined;\n prevDescriptionRef.current = undefined;\n return;\n }\n\n // From here, we know options is a valid ProgressToastOptions\n const {\n isLoading: currentIsLoading,\n isDismissible: _isDismissible,\n ...currentToastData\n } = currentOptions;\n\n // Check if meaningful data changed (only string values)\n const themeChanged = currentTheme !== prevThemeRef.current;\n const titleChanged = currentTitle !== prevTitleRef.current;\n const descriptionChanged =\n currentDescription !== prevDescriptionRef.current;\n const dataChanged = themeChanged || titleChanged || descriptionChanged;\n\n const hideAction =\n isDismissible && currentIsLoading ? (\n <ItemAction type=\"secondary\" onPress={handleHide}>\n Hide\n </ItemAction>\n ) : null;\n\n const mergedActions = hideAction ? (\n <>\n {currentToastData.actions}\n {hideAction}\n </>\n ) : (\n currentToastData.actions\n );\n\n const toastData: ToastData = {\n title: undefined,\n description: undefined,\n theme: undefined,\n icon: undefined,\n itemProps: undefined,\n ...currentToastData,\n actions: mergedActions,\n isLoading: currentIsLoading,\n duration: null,\n };\n\n // Show a new toast or update an existing one in-place (no exit/enter animation).\n const showToast = () => {\n if (toastIdRef.current != null) {\n updateToast(toastIdRef.current, toastData);\n } else {\n toastIdRef.current = addToast(toastData, true);\n }\n };\n\n // Show/update toast and schedule removal after RESULT_DURATION.\n const showToastWithTimer = () => {\n showToast();\n\n hideTimerRef.current = setTimeout(() => {\n if (toastIdRef.current != null) {\n removeToast(toastIdRef.current);\n toastIdRef.current = null;\n }\n }, RESULT_DURATION);\n };\n\n if (currentIsLoading) {\n // Starting or continuing loading\n hasBeenLoadingRef.current = true;\n clearHideTimer();\n\n if (hiddenByUserRef.current) {\n // User dismissed the loading toast; don't re-show during this loading cycle.\n } else if (toastIdRef.current == null) {\n // Create new toast\n showToast();\n } else if (dataChanged) {\n // Toast exists but data changed (e.g., switching back to loading from another state)\n showToast();\n }\n } else if (wasLoading === true && !currentIsLoading) {\n // Transitioning from loading to not loading\n hiddenByUserRef.current = false;\n clearHideTimer();\n\n if (currentTitle) {\n // Show result toast with timer\n showToastWithTimer();\n } else {\n // No content - just remove the loading toast immediately\n if (toastIdRef.current != null) {\n removeToast(toastIdRef.current);\n toastIdRef.current = null;\n }\n }\n } else if (\n !currentIsLoading &&\n !isFirstRender &&\n hasBeenLoadingRef.current &&\n dataChanged &&\n toastIdRef.current != null\n ) {\n // Not loading, data changed while toast is still visible — update it.\n if (currentTitle) {\n clearHideTimer();\n showToastWithTimer();\n } else {\n clearHideTimer();\n removeToast(toastIdRef.current);\n toastIdRef.current = null;\n }\n }\n\n // Update refs for next comparison\n wasLoadingRef.current = currentIsLoading;\n isFirstRenderRef.current = false;\n prevThemeRef.current = currentTheme;\n prevTitleRef.current = currentTitle;\n prevDescriptionRef.current = currentDescription;\n }, [\n isEmpty,\n isLoading,\n isDismissible,\n currentTheme,\n currentTitle,\n currentDescription,\n addToast,\n removeToast,\n updateToast,\n handleHide,\n ]);\n\n // Cleanup on unmount\n useEffect(() => {\n return () => {\n clearHideTimer();\n\n if (toastIdRef.current != null) {\n removeToast(toastIdRef.current);\n toastIdRef.current = null;\n }\n };\n }, [removeToast]);\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { CheckIcon } from "../../../icons/CheckIcon.js";
|
|
3
3
|
import { DangerIcon } from "../../../icons/DangerIcon.js";
|
|
4
4
|
import { InfoCircleIcon } from "../../../icons/InfoCircleIcon.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../tasty/utils/styles.js";
|
|
3
3
|
import { CONTAINER_STYLES } from "../../../tasty/styles/list.js";
|
|
4
4
|
import { tasty } from "../../../tasty/tasty.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { _Tooltip } from "./Tooltip.js";
|
|
3
3
|
import { TooltipTrigger } from "./TooltipTrigger.js";
|
|
4
4
|
import { isValidElement, useEffect, useState } from "react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { TooltipContext } from "./context.js";
|
|
3
3
|
import { Block } from "../../Block.js";
|
|
4
4
|
import { _ActiveZone } from "../../content/ActiveZone/ActiveZone.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { usePortal } from "./usePortal.js";
|
|
3
3
|
import { Fragment, jsx } from "react/jsx-runtime";
|
|
4
4
|
import { createPortal } from "react-dom";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { usePortalContext } from "./PortalProvider.js";
|
|
3
3
|
import { useEffect, useRef, useState } from "react";
|
|
4
4
|
import invariant from "tiny-invariant";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { tasty } from "../../../tasty/tasty.js";
|
|
3
3
|
import { Block } from "../../Block.js";
|
|
4
4
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { tasty } from "../../../tasty/tasty.js";
|
|
3
3
|
import { memo } from "react";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { tasty } from "../../../tasty/tasty.js";
|
|
3
3
|
import { Cube } from "./Cube.js";
|
|
4
4
|
import { SpinsContainer } from "./SpinsContainer.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { tasty } from "../../../tasty/tasty.js";
|
|
3
3
|
import { Block } from "../../Block.js";
|
|
4
4
|
import { InternalSpinner } from "./InternalSpinner.js";
|
package/dist/config.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { CUSTOM_UNITS, getGlobalFuncs, getGlobalParser, normalizeColorTokenValue, setGlobalPredefinedTokens } from "./utils/styles.js";
|
|
3
3
|
import { isDevEnv } from "./utils/is-dev-env.js";
|
|
4
4
|
import { normalizeHandlerDefinition, registerHandler } from "./styles/predefined.js";
|
package/dist/css-writer.js
CHANGED
package/dist/data/item-themes.js
CHANGED
package/dist/data/themes.js
CHANGED
package/dist/extractor.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { renderStyles } from "./pipeline/index.js";
|
|
3
3
|
import { categorizeStyleKeys } from "./chunks/definitions.js";
|
|
4
4
|
import { generateChunkCacheKey } from "./chunks/cacheKey.js";
|
package/dist/icons/AiIcon.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { wrapIcon } from "./wrap-icon.js";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { IconSparkles } from "@tabler/icons-react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { wrapIcon } from "./wrap-icon.js";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { IconChartArea } from "@tabler/icons-react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { wrapIcon } from "./wrap-icon.js";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { IconChevronsLeft } from "@tabler/icons-react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { wrapIcon } from "./wrap-icon.js";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { IconChartBar } from "@tabler/icons-react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { wrapIcon } from "./wrap-icon.js";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { IconBellFilled } from "@tabler/icons-react";
|
package/dist/icons/BellIcon.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { wrapIcon } from "./wrap-icon.js";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { IconBell } from "@tabler/icons-react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { wrapIcon } from "./wrap-icon.js";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { IconCaretDownFilled } from "@tabler/icons-react";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.0.0-canary-26fe35d | Cube Dev Team */
|
|
2
2
|
import { wrapIcon } from "./wrap-icon.js";
|
|
3
3
|
import { jsx } from "react/jsx-runtime";
|
|
4
4
|
import { IconCaretUpFilled } from "@tabler/icons-react";
|