@cube-dev/ui-kit 0.75.0 → 0.76.0
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/CHANGELOG.md +14 -0
- package/es/_internal/hooks/index.js +1 -1
- package/es/_internal/hooks/use-chained-callback.js +1 -1
- package/es/_internal/hooks/use-debounced-value.js +1 -1
- package/es/_internal/hooks/use-deprecation-warning.js +1 -1
- package/es/_internal/hooks/use-effect-once.js +1 -1
- package/es/_internal/hooks/use-event.js +1 -1
- package/es/_internal/hooks/use-is-first-render.js +1 -1
- package/es/_internal/hooks/use-sync-ref.js +1 -1
- package/es/_internal/hooks/use-timer/index.js +1 -1
- package/es/_internal/hooks/use-timer/timer.js +1 -1
- package/es/_internal/hooks/use-timer/use-timer.js +1 -1
- package/es/_internal/hooks/use-update-effect.js +1 -1
- package/es/_internal/hooks/use-warn.js +1 -1
- package/es/_internal/index.js +1 -1
- package/es/components/Block.js +1 -1
- package/es/components/GlobalStyles.js +1 -1
- package/es/components/GridProvider.js +1 -1
- package/es/components/HiddenInput.js +1 -1
- package/es/components/Item.js +1 -1
- package/es/components/OpenTrasition.js +1 -1
- package/es/components/Root.js +1 -1
- package/es/components/actions/Action/Action.js +1 -1
- package/es/components/actions/Button/Button.js +1 -1
- package/es/components/actions/Button/index.js +1 -1
- package/es/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/es/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/es/components/actions/CommandMenu/index.js +1 -1
- package/es/components/actions/CommandMenu/styled.js +1 -1
- package/es/components/actions/ItemButton/ItemButton.js +1 -1
- package/es/components/actions/ItemButton/index.js +1 -1
- package/es/components/actions/Menu/Menu.js +1 -1
- package/es/components/actions/Menu/MenuItem.js +1 -1
- package/es/components/actions/Menu/MenuSection.js +1 -1
- package/es/components/actions/Menu/MenuTrigger.js +1 -1
- package/es/components/actions/Menu/SubMenuTrigger.js +1 -1
- package/es/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/es/components/actions/Menu/context.js +1 -1
- package/es/components/actions/Menu/index.js +1 -1
- package/es/components/actions/Menu/styled.js +1 -1
- package/es/components/actions/index.js +1 -1
- package/es/components/actions/use-action.js +1 -1
- package/es/components/actions/use-anchored-menu.js +1 -1
- package/es/components/actions/use-context-menu.js +1 -1
- package/es/components/content/ActiveZone/ActiveZone.js +1 -1
- package/es/components/content/Alert/Alert.js +1 -1
- package/es/components/content/Alert/index.js +1 -1
- package/es/components/content/Alert/types.js +1 -1
- package/es/components/content/Alert/use-alert.js +1 -1
- package/es/components/content/Avatar/Avatar.js +1 -1
- package/es/components/content/Badge/Badge.js +1 -1
- package/es/components/content/Card/Card.js +1 -1
- package/es/components/content/Content.js +1 -1
- package/es/components/content/CopyPasteBlock/CopyPasteBlock.js +1 -1
- package/es/components/content/CopyPasteBlock/index.js +1 -1
- package/es/components/content/CopySnippet/CopySnippet.js +1 -1
- package/es/components/content/CopySnippet/index.js +1 -1
- package/es/components/content/Divider.js +1 -1
- package/es/components/content/Footer.js +1 -1
- package/es/components/content/Header.js +1 -1
- package/es/components/content/HotKeys/HotKeys.js +1 -1
- package/es/components/content/HotKeys/index.js +1 -1
- package/es/components/content/ItemBase/ItemBase.js +1 -1
- package/es/components/content/ItemBase/index.js +1 -1
- package/es/components/content/List/SectionHeading.js +1 -1
- package/es/components/content/List/index.js +1 -1
- package/es/components/content/Paragraph.js +1 -1
- package/es/components/content/Placeholder/Placeholder.js +1 -1
- package/es/components/content/PrismCode/PrismCode.js +1 -1
- package/es/components/content/PrismCode/prismSetup.js +1 -1
- package/es/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/es/components/content/Result/Result.js +1 -1
- package/es/components/content/Skeleton/Skeleton.js +1 -1
- package/es/components/content/Tag/Tag.js +1 -1
- package/es/components/content/Text.js +1 -1
- package/es/components/content/Title.js +1 -1
- package/es/components/fields/Checkbox/Checkbox.js +1 -1
- package/es/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/es/components/fields/Checkbox/context.js +1 -1
- package/es/components/fields/Checkbox/index.js +1 -1
- package/es/components/fields/ComboBox/ComboBox.js +3 -7
- package/es/components/fields/ComboBox/index.js +1 -1
- package/es/components/fields/DatePicker/DateInput.js +1 -1
- package/es/components/fields/DatePicker/DateInputBase.js +1 -1
- package/es/components/fields/DatePicker/DatePicker.js +1 -1
- package/es/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/es/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/es/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/es/components/fields/DatePicker/DatePickerSegment.js +1 -1
- package/es/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/es/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/es/components/fields/DatePicker/TimeInput.js +1 -1
- package/es/components/fields/DatePicker/index.js +1 -1
- package/es/components/fields/DatePicker/intl.js +1 -1
- package/es/components/fields/DatePicker/parseDate.js +1 -1
- package/es/components/fields/DatePicker/props.js +1 -1
- package/es/components/fields/DatePicker/types.js +1 -1
- package/es/components/fields/DatePicker/utils.js +1 -1
- package/es/components/fields/FileInput/FileInput.js +1 -1
- package/es/components/fields/FilterListBox/FilterListBox.js +1 -1
- package/es/components/fields/FilterListBox/index.js +1 -1
- package/es/components/fields/FilterPicker/FilterPicker.js +3 -3
- package/es/components/fields/FilterPicker/index.js +1 -1
- package/es/components/fields/Input/Input.js +1 -1
- package/es/components/fields/Input/index.js +1 -1
- package/es/components/fields/ListBox/ListBox.js +1 -1
- package/es/components/fields/ListBox/index.js +1 -1
- package/es/components/fields/NumberInput/NumberInput.js +1 -1
- package/es/components/fields/NumberInput/StepButton.js +1 -1
- package/es/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/es/components/fields/RadioGroup/Radio.js +1 -1
- package/es/components/fields/RadioGroup/RadioGroup.js +1 -1
- package/es/components/fields/RadioGroup/context.js +1 -1
- package/es/components/fields/RadioGroup/index.js +1 -1
- package/es/components/fields/SearchInput/SearchInput.js +1 -1
- package/es/components/fields/SearchInput/index.js +1 -1
- package/es/components/fields/Select/Select.js +1 -1
- package/es/components/fields/Select/index.js +1 -1
- package/es/components/fields/Slider/Gradation.js +1 -1
- package/es/components/fields/Slider/Header.js +1 -1
- package/es/components/fields/Slider/RangeSlider.js +1 -1
- package/es/components/fields/Slider/Slider.js +1 -1
- package/es/components/fields/Slider/SliderBase.js +1 -1
- package/es/components/fields/Slider/SliderInput.js +1 -1
- package/es/components/fields/Slider/SliderThumb.js +1 -1
- package/es/components/fields/Slider/SliderTrack.js +1 -1
- package/es/components/fields/Slider/elements.js +1 -1
- package/es/components/fields/Slider/index.js +1 -1
- package/es/components/fields/Slider/types.js +1 -1
- package/es/components/fields/Switch/Switch.js +1 -1
- package/es/components/fields/Switch/index.js +1 -1
- package/es/components/fields/TextArea/TextArea.js +1 -1
- package/es/components/fields/TextArea/index.js +1 -1
- package/es/components/fields/TextInput/TextInput.js +1 -1
- package/es/components/fields/TextInput/TextInputBase.js +1 -1
- package/es/components/fields/TextInput/index.js +1 -1
- package/es/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/es/components/fields/TextInputMapper/index.js +1 -1
- package/es/components/fields/index.js +1 -1
- package/es/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/es/components/form/FieldWrapper/extract-field-wrapper-props.js +1 -1
- package/es/components/form/FieldWrapper/index.js +1 -1
- package/es/components/form/FieldWrapper/types.js +1 -1
- package/es/components/form/Form/Field.js +1 -1
- package/es/components/form/Form/Form.js +1 -1
- package/es/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/es/components/form/Form/ResetButton/index.js +1 -1
- package/es/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/es/components/form/Form/SubmitButton/index.js +1 -1
- package/es/components/form/Form/SubmitError.js +1 -1
- package/es/components/form/Form/index.js +1 -1
- package/es/components/form/Form/types.js +1 -1
- package/es/components/form/Form/use-field/index.js +1 -1
- package/es/components/form/Form/use-field/types.js +1 -1
- package/es/components/form/Form/use-field/use-field-props.js +1 -1
- package/es/components/form/Form/use-field/use-field.js +1 -1
- package/es/components/form/Form/use-form.js +1 -1
- package/es/components/form/Form/validation.js +1 -1
- package/es/components/form/Label.js +1 -1
- package/es/components/form/index.js +1 -1
- package/es/components/form/wrapper.js +1 -1
- package/es/components/layout/Flex.js +1 -1
- package/es/components/layout/Flow.js +1 -1
- package/es/components/layout/Grid.js +1 -1
- package/es/components/layout/Panel.js +1 -1
- package/es/components/layout/Prefix.js +1 -1
- package/es/components/layout/ResizablePanel.js +1 -1
- package/es/components/layout/Space.js +1 -1
- package/es/components/layout/Suffix.js +1 -1
- package/es/components/navigation/LegacyTabs/LegacyTabs.js +1 -1
- package/es/components/navigation/Link/Link.js +1 -1
- package/es/components/organisms/FileTabs/FileTabs.js +1 -1
- package/es/components/organisms/Modal/Modal.js +1 -1
- package/es/components/organisms/StatsCard/StatsCard.js +1 -1
- package/es/components/other/Base64Upload/Base64Upload.js +1 -1
- package/es/components/other/Calendar/Calendar.js +1 -1
- package/es/components/other/Calendar/CalendarCell.js +1 -1
- package/es/components/other/Calendar/CalendarGrid.js +1 -1
- package/es/components/other/Calendar/RangeCalendar.js +1 -1
- package/es/components/other/CloudLogo/CloudLogo.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/es/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/es/components/overlays/AlertDialog/index.js +1 -1
- package/es/components/overlays/AlertDialog/types.js +1 -1
- package/es/components/overlays/Dialog/Dialog.js +1 -1
- package/es/components/overlays/Dialog/DialogContainer.js +1 -1
- package/es/components/overlays/Dialog/DialogForm.js +1 -1
- package/es/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/es/components/overlays/Dialog/context.js +1 -1
- package/es/components/overlays/Dialog/index.js +1 -1
- package/es/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/es/components/overlays/Modal/Modal.js +1 -1
- package/es/components/overlays/Modal/OpenTransition.js +1 -1
- package/es/components/overlays/Modal/Overlay.js +1 -1
- package/es/components/overlays/Modal/Popover.js +1 -1
- package/es/components/overlays/Modal/Tray.js +1 -1
- package/es/components/overlays/Modal/Underlay.js +1 -1
- package/es/components/overlays/Modal/index.js +1 -1
- package/es/components/overlays/Modal/types.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/FloatingNotification.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/NotificationsBar.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/TransitionComponent.js +1 -1
- package/es/components/overlays/NewNotifications/Bar/index.js +1 -1
- package/es/components/overlays/NewNotifications/Dialog/NotificationsDialogTrigger.js +1 -1
- package/es/components/overlays/NewNotifications/Dialog/index.js +1 -1
- package/es/components/overlays/NewNotifications/Notification.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationAction.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationCloseButton.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationDescription.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationFooter.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationHeader.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationIcon.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationProvider.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/NotificationView.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/index.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationView/types.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsContext.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/NotificationsProvider.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/index.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsContext/use-notifications.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/NotificationsList.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/NotificationsListItem.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/index.js +1 -1
- package/es/components/overlays/NewNotifications/NotificationsList/types.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/index.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/types.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notification-list-item.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notifications-api.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notifications-list.js +1 -1
- package/es/components/overlays/NewNotifications/hooks/use-notifications-observer.js +1 -1
- package/es/components/overlays/NewNotifications/index.js +1 -1
- package/es/components/overlays/NewNotifications/types.js +1 -1
- package/es/components/overlays/Notification/Notification.js +1 -1
- package/es/components/overlays/OverlayWrapper.js +1 -1
- package/es/components/overlays/Toasts/Toast.js +1 -1
- package/es/components/overlays/Toasts/index.js +1 -1
- package/es/components/overlays/Toasts/types.js +1 -1
- package/es/components/overlays/Toasts/use-toasts-api.js +1 -1
- package/es/components/overlays/Tooltip/Tooltip.js +1 -1
- package/es/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/es/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/es/components/overlays/Tooltip/context.js +1 -1
- package/es/components/overlays/Tooltip/index.js +1 -1
- package/es/components/portal/Portal.js +1 -1
- package/es/components/portal/PortalProvider.js +1 -1
- package/es/components/portal/index.js +1 -1
- package/es/components/portal/types.js +1 -1
- package/es/components/portal/usePortal.js +1 -1
- package/es/components/shared/InvalidIcon.js +1 -1
- package/es/components/shared/ValidIcon.js +1 -1
- package/es/components/status/LoadingAnimation/LoadingAnimation.js +1 -1
- package/es/components/status/LoadingAnimation/index.js +1 -1
- package/es/components/status/Spin/Cube.js +1 -1
- package/es/components/status/Spin/InternalSpinner.js +1 -1
- package/es/components/status/Spin/Spin.js +1 -1
- package/es/components/status/Spin/SpinsContainer.js +1 -1
- package/es/components/status/Spin/index.js +1 -1
- package/es/components/status/Spin/types.js +1 -1
- package/es/components/status/index.js +1 -1
- package/es/data/item-themes.js +1 -1
- package/es/data/themes.js +1 -1
- package/es/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/es/icons/AdjustmentsIcon.js +1 -1
- package/es/icons/AiIcon.js +1 -1
- package/es/icons/AreaChartIcon.js +1 -1
- package/es/icons/BackwardIcon.js +1 -1
- package/es/icons/BarChartIcon.js +1 -1
- package/es/icons/BellFilledIcon.js +1 -1
- package/es/icons/BellIcon.js +1 -1
- package/es/icons/BooleanIcon.js +1 -1
- package/es/icons/CalendarEditIcon.js +1 -1
- package/es/icons/CalendarIcon.js +1 -1
- package/es/icons/CaretDownIcon.js +1 -1
- package/es/icons/CaretUpIcon.js +1 -1
- package/es/icons/ChartAreaStackedIcon.js +1 -1
- package/es/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/es/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/es/icons/ChartBarGroupedIcon.js +1 -1
- package/es/icons/ChartBarHorizontalIcon.js +1 -1
- package/es/icons/ChartBarLineIcon.js +1 -1
- package/es/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/es/icons/ChartBarStackedIcon.js +1 -1
- package/es/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/es/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/es/icons/ChartBoxPlot2Icon.js +1 -1
- package/es/icons/ChartBoxPlotIcon.js +1 -1
- package/es/icons/ChartBubbleIcon.js +1 -1
- package/es/icons/ChartDonut2Icon.js +1 -1
- package/es/icons/ChartFunnelIcon.js +1 -1
- package/es/icons/ChartKPIIcon.js +1 -1
- package/es/icons/ChartPie2Icon.js +1 -1
- package/es/icons/ChartScatterIcon.js +1 -1
- package/es/icons/CheckCircleFilledIcon.js +1 -1
- package/es/icons/CheckCircleIcon.js +1 -1
- package/es/icons/CheckIcon.js +1 -1
- package/es/icons/CircleFilledIcon.js +1 -1
- package/es/icons/ClearIcon.js +1 -1
- package/es/icons/CloseCircleFilledIcon.js +1 -1
- package/es/icons/CloseCircleIcon.js +1 -1
- package/es/icons/CloseIcon.js +1 -1
- package/es/icons/CodeIcon.js +1 -1
- package/es/icons/CopyIcon.js +1 -1
- package/es/icons/CountIcon.js +1 -1
- package/es/icons/CubeIcon.js +1 -1
- package/es/icons/DangerIcon.js +1 -1
- package/es/icons/DashboardIcon.js +1 -1
- package/es/icons/DatabaseIcon.js +1 -1
- package/es/icons/DirectionIcon.js +1 -1
- package/es/icons/DonutIcon.js +1 -1
- package/es/icons/DownIcon.js +1 -1
- package/es/icons/EditIcon.js +1 -1
- package/es/icons/ExclamationCircleFilledIcon.js +1 -1
- package/es/icons/ExclamationCircleIcon.js +1 -1
- package/es/icons/ExclamationIcon.js +1 -1
- package/es/icons/EyeIcon.js +1 -1
- package/es/icons/EyeInvisibleIcon.js +1 -1
- package/es/icons/FilterIcon.js +1 -1
- package/es/icons/FolderFilledIcon.js +1 -1
- package/es/icons/FolderIcon.js +1 -1
- package/es/icons/FolderOpenFilledIcon.js +1 -1
- package/es/icons/FolderOpenIcon.js +1 -1
- package/es/icons/ForwardIcon.js +1 -1
- package/es/icons/HierarchyIcon.js +1 -1
- package/es/icons/Icon.js +1 -1
- package/es/icons/InfoCircleIcon.js +1 -1
- package/es/icons/InfoIcon.js +1 -1
- package/es/icons/KeyIcon.js +1 -1
- package/es/icons/LeftIcon.js +1 -1
- package/es/icons/LineChartIcon.js +1 -1
- package/es/icons/LoadingIcon.js +1 -1
- package/es/icons/LockFilledIcon.js +1 -1
- package/es/icons/LockIcon.js +1 -1
- package/es/icons/MoreIcon.js +1 -1
- package/es/icons/NotAllowedIcon.js +1 -1
- package/es/icons/NumberIcon.js +1 -1
- package/es/icons/PauseCircleFilledIcon.js +1 -1
- package/es/icons/PauseCircleIcon.js +1 -1
- package/es/icons/PauseIcon.js +1 -1
- package/es/icons/PieChartIcon.js +1 -1
- package/es/icons/PlayCircleIcon.js +1 -1
- package/es/icons/PlayIcon.js +1 -1
- package/es/icons/PlusIcon.js +1 -1
- package/es/icons/ReloadIcon.js +1 -1
- package/es/icons/ReportIcon.js +1 -1
- package/es/icons/ReturnIcon.js +1 -1
- package/es/icons/RightIcon.js +1 -1
- package/es/icons/SchemeIcon.js +1 -1
- package/es/icons/SearchIcon.js +1 -1
- package/es/icons/SettingsIcon.js +1 -1
- package/es/icons/ShieldFilledIcon.js +1 -1
- package/es/icons/ShieldIcon.js +1 -1
- package/es/icons/SlashIcon.js +1 -1
- package/es/icons/SparklesIcon.js +1 -1
- package/es/icons/SqlIcon.js +1 -1
- package/es/icons/StatsIcon.js +1 -1
- package/es/icons/StopIcon.js +1 -1
- package/es/icons/StringIcon.js +1 -1
- package/es/icons/SwitchIcon.js +1 -1
- package/es/icons/TableIcon.js +1 -1
- package/es/icons/ThumbsDownIcon.js +1 -1
- package/es/icons/ThumbsUpIcon.js +1 -1
- package/es/icons/ThunderboltCrossedIcon.js +1 -1
- package/es/icons/ThunderboltFilledIcon.js +1 -1
- package/es/icons/ThunderboltIcon.js +1 -1
- package/es/icons/TimeIcon.js +1 -1
- package/es/icons/UnlockIcon.js +1 -1
- package/es/icons/UpIcon.js +1 -1
- package/es/icons/UserGroupIcon.js +1 -1
- package/es/icons/UserIcon.js +1 -1
- package/es/icons/UserLockIcon.js +1 -1
- package/es/icons/ViewIcon.js +1 -1
- package/es/icons/WarningFilledIcon.js +1 -1
- package/es/icons/WarningIcon.js +1 -1
- package/es/icons/add-new-icon.js +1 -1
- package/es/icons/index.js +1 -1
- package/es/icons/wrap-icon.js +1 -1
- package/es/index.js +1 -1
- package/es/provider.js +1 -1
- package/es/providers/TrackingProvider.js +1 -1
- package/es/services/notification.js +1 -1
- package/es/shared/form.js +1 -1
- package/es/shared/index.js +1 -1
- package/es/stories/Form.legacy-stories.js +1 -1
- package/es/stories/FormFieldArgs.js +1 -1
- package/es/stories/Layout.stories.js +1 -1
- package/es/stories/Tasty.stories.js +1 -1
- package/es/stories/components/ConfirmDeletionDialogForm.js +1 -1
- package/es/stories/components/DialogFormApp.js +1 -1
- package/es/stories/components/StyledButton.js +1 -1
- package/es/stories/lists/baseProps.js +1 -1
- package/es/tasty/debug.js +541 -744
- package/es/tasty/index.js +1 -1
- package/es/tasty/injector/index.js +31 -15
- package/es/tasty/injector/injector.js +138 -148
- package/es/tasty/injector/sheet-manager.js +292 -134
- package/es/tasty/injector/types.js +1 -1
- package/es/tasty/parser/classify.js +1 -1
- package/es/tasty/parser/const.js +1 -1
- package/es/tasty/parser/lru.js +1 -1
- package/es/tasty/parser/parser.js +1 -1
- package/es/tasty/parser/tokenizer.js +1 -1
- package/es/tasty/parser/types.js +1 -1
- package/es/tasty/providers/BreakpointsProvider.js +1 -1
- package/es/tasty/styles/align.js +1 -1
- package/es/tasty/styles/border.js +1 -1
- package/es/tasty/styles/boxShadow.combinator.js +1 -1
- package/es/tasty/styles/color.js +1 -1
- package/es/tasty/styles/createStyle.js +1 -1
- package/es/tasty/styles/dimension.js +1 -1
- package/es/tasty/styles/display.js +1 -1
- package/es/tasty/styles/fade.js +1 -1
- package/es/tasty/styles/fill.js +1 -1
- package/es/tasty/styles/flow.js +1 -1
- package/es/tasty/styles/font.js +1 -1
- package/es/tasty/styles/fontStyle.js +1 -1
- package/es/tasty/styles/gap.js +1 -1
- package/es/tasty/styles/groupRadius.js +1 -1
- package/es/tasty/styles/height.js +1 -1
- package/es/tasty/styles/index.js +1 -1
- package/es/tasty/styles/inset.js +1 -1
- package/es/tasty/styles/justify.js +1 -1
- package/es/tasty/styles/list.js +1 -1
- package/es/tasty/styles/margin.js +1 -1
- package/es/tasty/styles/marginBlock.js +1 -1
- package/es/tasty/styles/marginInline.js +1 -1
- package/es/tasty/styles/outline.js +1 -1
- package/es/tasty/styles/padding.js +1 -1
- package/es/tasty/styles/paddingBlock.js +1 -1
- package/es/tasty/styles/paddingInline.js +1 -1
- package/es/tasty/styles/place.js +1 -1
- package/es/tasty/styles/predefined.js +1 -1
- package/es/tasty/styles/preset.js +1 -1
- package/es/tasty/styles/radius.js +1 -1
- package/es/tasty/styles/reset.js +1 -1
- package/es/tasty/styles/scrollbar.js +1 -1
- package/es/tasty/styles/shadow.js +1 -1
- package/es/tasty/styles/styledScrollbar.js +1 -1
- package/es/tasty/styles/transition.js +1 -1
- package/es/tasty/styles/types.js +1 -1
- package/es/tasty/styles/width.js +1 -1
- package/es/tasty/tasty.js +61 -50
- package/es/tasty/types.js +1 -1
- package/es/tasty/utils/cache-wrapper.js +1 -1
- package/es/tasty/utils/case-converter.js +1 -1
- package/es/tasty/utils/colors.js +1 -1
- package/es/tasty/utils/dotize.js +1 -1
- package/es/tasty/utils/filterBaseProps.js +1 -1
- package/es/tasty/utils/getDisplayName.js +1 -1
- package/es/tasty/utils/getModCombinations.js +1 -1
- package/es/tasty/utils/isDevEnv.js +36 -0
- package/es/tasty/utils/mergeStyles.js +1 -1
- package/es/tasty/utils/modAttrs.js +1 -1
- package/es/tasty/utils/renderStyles.js +44 -4
- package/es/tasty/utils/responsive.js +1 -1
- package/es/tasty/utils/string.js +1 -1
- package/es/tasty/utils/styles.js +39 -1
- package/es/tasty/utils/warnings.js +1 -1
- package/es/tokens.js +1 -1
- package/es/type-checks.js +1 -1
- package/es/utils/ResizeSensor.js +1 -1
- package/es/utils/modules.js +1 -1
- package/es/utils/promise.js +1 -1
- package/es/utils/random.js +1 -1
- package/es/utils/range.js +1 -1
- package/es/utils/react/Slots.js +1 -1
- package/es/utils/react/chain.js +1 -1
- package/es/utils/react/forwardRefWithGenerics.js +1 -1
- package/es/utils/react/index.js +1 -1
- package/es/utils/react/interactions.js +1 -1
- package/es/utils/react/isTextOnly.js +1 -1
- package/es/utils/react/mapProps.js +1 -1
- package/es/utils/react/mergeProps.js +1 -1
- package/es/utils/react/nullableValue.js +1 -1
- package/es/utils/react/sharedStore.js +1 -1
- package/es/utils/react/useCombinedRefs.js +1 -1
- package/es/utils/react/useControlledFocusVisible.js +1 -1
- package/es/utils/react/useEventBus.js +1 -1
- package/es/utils/react/useId.js +1 -1
- package/es/utils/react/useIsDarwin.js +1 -1
- package/es/utils/react/useKeySymbols.js +1 -1
- package/es/utils/react/useLayoutEffect.js +1 -1
- package/es/utils/react/useQaProps.js +1 -1
- package/es/utils/react/useViewportSize.js +1 -1
- package/es/utils/react/wrapNodeIfPlain.js +1 -1
- package/es/utils/transitions.js +1 -1
- package/es/utils/tree.js +1 -1
- package/es/utils/warnings.js +1 -1
- package/es/version.js +2 -2
- package/package.json +1 -1
- package/types/components/actions/Menu/styled.d.ts +60 -60
- package/types/components/content/List/SectionHeading.d.ts +20 -20
- package/types/components/fields/DatePicker/DatePickerElement.d.ts +20 -20
- package/types/tasty/debug.d.ts +135 -222
- package/types/tasty/injector/index.d.ts +18 -2
- package/types/tasty/injector/injector.d.ts +20 -18
- package/types/tasty/injector/sheet-manager.d.ts +19 -15
- package/types/tasty/injector/types.d.ts +29 -13
- package/types/tasty/utils/isDevEnv.d.ts +6 -0
- package/types/tasty/utils/renderStyles.d.ts +6 -1
- package/types/tasty/utils/styles.d.ts +1 -0
package/es/tasty/index.js
CHANGED
@@ -1,10 +1,11 @@
|
|
1
1
|
/**
|
2
2
|
* @license MIT
|
3
3
|
* author: Cube Dev Team
|
4
|
-
* @cube-dev/ui-kit v0.
|
4
|
+
* @cube-dev/ui-kit v0.76.0
|
5
5
|
* Released under the MIT license.
|
6
6
|
*/
|
7
7
|
|
8
|
+
import { isDevEnv } from '../utils/isDevEnv';
|
8
9
|
import { StyleInjector } from './injector';
|
9
10
|
// Use a more robust global singleton that survives React Strict Mode
|
10
11
|
const GLOBAL_INJECTOR_KEY = '__TASTY_GLOBAL_INJECTOR__';
|
@@ -38,17 +39,26 @@ function isTestEnvironment() {
|
|
38
39
|
return false;
|
39
40
|
}
|
40
41
|
/**
|
41
|
-
*
|
42
|
+
* Create default configuration with optional test environment detection
|
42
43
|
*/
|
43
|
-
|
44
|
-
|
44
|
+
function createDefaultConfig(isTest) {
|
45
|
+
return {
|
45
46
|
maxRulesPerSheet: 8192, // safer default cap per sheet
|
46
|
-
unusedStylesThreshold:
|
47
|
+
unusedStylesThreshold: 500, // default threshold for bulk cleanup of unused styles
|
47
48
|
bulkCleanupDelay: 5000, // default delay before bulk cleanup (ignored if idleCleanup is true)
|
48
49
|
idleCleanup: true, // default to using requestIdleCallback instead of setTimeout
|
49
|
-
|
50
|
-
|
51
|
-
|
50
|
+
forceTextInjection: isTest ?? false, // auto-enable for test environments
|
51
|
+
devMode: isDevEnv(), // enable dev features: performance tracking and debug info
|
52
|
+
bulkCleanupBatchRatio: 0.5,
|
53
|
+
unusedStylesMinAgeMs: 10000,
|
54
|
+
};
|
55
|
+
}
|
56
|
+
/**
|
57
|
+
* Configure the global style injector
|
58
|
+
*/
|
59
|
+
export function configure(config = {}) {
|
60
|
+
const fullConfig = {
|
61
|
+
...createDefaultConfig(),
|
52
62
|
...config,
|
53
63
|
};
|
54
64
|
// Store on window to survive React Strict Mode resets
|
@@ -70,12 +80,24 @@ function getGlobalInjector() {
|
|
70
80
|
}
|
71
81
|
return storage[GLOBAL_INJECTOR_KEY];
|
72
82
|
}
|
83
|
+
/**
|
84
|
+
* Allocate a className for a cacheKey without injecting styles yet
|
85
|
+
*/
|
86
|
+
export function allocateClassName(cacheKey, options) {
|
87
|
+
return getGlobalInjector().allocateClassName(cacheKey, options);
|
88
|
+
}
|
73
89
|
/**
|
74
90
|
* Inject styles and return className with dispose function
|
75
91
|
*/
|
76
92
|
export function inject(rules, options) {
|
77
93
|
return getGlobalInjector().inject(rules, options);
|
78
94
|
}
|
95
|
+
/**
|
96
|
+
* Inject global rules that should not reserve tasty class names
|
97
|
+
*/
|
98
|
+
export function injectGlobal(rules, options) {
|
99
|
+
return getGlobalInjector().injectGlobal(rules, options);
|
100
|
+
}
|
79
101
|
/**
|
80
102
|
* Inject keyframes and return object with toString() and dispose()
|
81
103
|
*/
|
@@ -147,13 +169,7 @@ export function destroy(root) {
|
|
147
169
|
export function createInjector(config = {}) {
|
148
170
|
const isTest = isTestEnvironment();
|
149
171
|
const fullConfig = {
|
150
|
-
|
151
|
-
unusedStylesThreshold: 500, // default threshold for bulk cleanup of unused styles
|
152
|
-
bulkCleanupDelay: 5000, // default delay before bulk cleanup (ignored if idleCleanup is true)
|
153
|
-
idleCleanup: true, // default to using requestIdleCallback instead of setTimeout
|
154
|
-
collectMetrics: false, // default to no performance tracking
|
155
|
-
forceTextInjection: isTest, // auto-enable for test environments
|
156
|
-
debugMode: false, // reduce memory usage by avoiding full cssText storage
|
172
|
+
...createDefaultConfig(isTest),
|
157
173
|
...config,
|
158
174
|
};
|
159
175
|
return new StyleInjector(fullConfig);
|
@@ -1,7 +1,7 @@
|
|
1
1
|
/**
|
2
2
|
* @license MIT
|
3
3
|
* author: Cube Dev Team
|
4
|
-
* @cube-dev/ui-kit v0.
|
4
|
+
* @cube-dev/ui-kit v0.76.0
|
5
5
|
* Released under the MIT license.
|
6
6
|
*/
|
7
7
|
|
@@ -23,10 +23,42 @@ export class StyleInjector {
|
|
23
23
|
sheetManager;
|
24
24
|
config;
|
25
25
|
cleanupScheduled = false;
|
26
|
+
globalRuleCounter = 0;
|
26
27
|
constructor(config = {}) {
|
27
28
|
this.config = config;
|
28
29
|
this.sheetManager = new SheetManager(config);
|
29
30
|
}
|
31
|
+
/**
|
32
|
+
* Allocate a className for a cacheKey without injecting styles yet.
|
33
|
+
* This allows separating className allocation (render phase) from style injection (insertion phase).
|
34
|
+
*/
|
35
|
+
allocateClassName(cacheKey, options) {
|
36
|
+
const root = options?.root || document;
|
37
|
+
const registry = this.sheetManager.getRegistry(root);
|
38
|
+
// Check if we can reuse existing className for this cache key
|
39
|
+
if (registry.cacheKeyToClassName.has(cacheKey)) {
|
40
|
+
const className = registry.cacheKeyToClassName.get(cacheKey);
|
41
|
+
return {
|
42
|
+
className,
|
43
|
+
isNewAllocation: false,
|
44
|
+
};
|
45
|
+
}
|
46
|
+
// Generate new className and reserve it
|
47
|
+
const className = generateClassName(registry.classCounter++);
|
48
|
+
// Create placeholder RuleInfo to reserve the className
|
49
|
+
const placeholderRuleInfo = {
|
50
|
+
className,
|
51
|
+
ruleIndex: -1, // Placeholder - will be set during actual injection
|
52
|
+
sheetIndex: -1, // Placeholder - will be set during actual injection
|
53
|
+
};
|
54
|
+
// Store RuleInfo only once by className, and map cacheKey separately
|
55
|
+
registry.rules.set(className, placeholderRuleInfo);
|
56
|
+
registry.cacheKeyToClassName.set(cacheKey, className);
|
57
|
+
return {
|
58
|
+
className,
|
59
|
+
isNewAllocation: true,
|
60
|
+
};
|
61
|
+
}
|
30
62
|
/**
|
31
63
|
* Inject styles from StyleResult objects
|
32
64
|
*/
|
@@ -40,85 +72,49 @@ export class StyleInjector {
|
|
40
72
|
};
|
41
73
|
}
|
42
74
|
// Rules are now in StyleRule format directly
|
43
|
-
//
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
const
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
}
|
59
|
-
}
|
60
|
-
// Update metrics
|
61
|
-
if (registry.metrics) {
|
62
|
-
registry.metrics.hits++;
|
63
|
-
}
|
64
|
-
return {
|
65
|
-
className: generatedClass,
|
66
|
-
dispose: () => this.dispose(generatedClass, registry),
|
67
|
-
};
|
68
|
-
}
|
69
|
-
// Try to restore from unused styles if className exists but is not active
|
70
|
-
if (generatedClass &&
|
71
|
-
registry.rules.has(generatedClass) &&
|
72
|
-
!registry.refCounts.has(generatedClass)) {
|
73
|
-
const restored = this.sheetManager.restoreFromUnused(registry, generatedClass);
|
74
|
-
if (restored) {
|
75
|
+
// Check if we can reuse based on cache key
|
76
|
+
const cacheKey = options?.cacheKey;
|
77
|
+
let className;
|
78
|
+
let isPreAllocated = false;
|
79
|
+
if (cacheKey && registry.cacheKeyToClassName.has(cacheKey)) {
|
80
|
+
// Reuse existing class for this cache key
|
81
|
+
className = registry.cacheKeyToClassName.get(cacheKey);
|
82
|
+
const existingRuleInfo = registry.rules.get(className);
|
83
|
+
// Check if this is a placeholder (pre-allocated but not yet injected)
|
84
|
+
isPreAllocated =
|
85
|
+
existingRuleInfo.ruleIndex === -1 && existingRuleInfo.sheetIndex === -1;
|
86
|
+
if (!isPreAllocated) {
|
87
|
+
// Already injected - just increment refCount
|
88
|
+
const currentRefCount = registry.refCounts.get(className) || 0;
|
89
|
+
registry.refCounts.set(className, currentRefCount + 1);
|
75
90
|
// Update metrics
|
76
91
|
if (registry.metrics) {
|
77
92
|
registry.metrics.hits++;
|
78
93
|
}
|
79
94
|
return {
|
80
|
-
className
|
81
|
-
dispose: () => this.dispose(
|
95
|
+
className,
|
96
|
+
dispose: () => this.dispose(className, registry),
|
82
97
|
};
|
83
98
|
}
|
84
99
|
}
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
selector: specificSelector,
|
104
|
-
};
|
105
|
-
}
|
106
|
-
return r;
|
107
|
-
})
|
108
|
-
: rules.map((r) => {
|
109
|
-
// Increase specificity for class-based selectors by duplicating the class
|
110
|
-
if (r.selector.startsWith('.') && /^\.t\d+/.test(r.selector)) {
|
111
|
-
const classMatch = r.selector.match(/^\.t\d+/);
|
112
|
-
if (classMatch) {
|
113
|
-
const baseClass = classMatch[0];
|
114
|
-
return {
|
115
|
-
...r,
|
116
|
-
selector: baseClass + r.selector,
|
117
|
-
};
|
118
|
-
}
|
119
|
-
}
|
120
|
-
return r;
|
121
|
-
});
|
100
|
+
else {
|
101
|
+
// Generate new className
|
102
|
+
className = generateClassName(registry.classCounter++);
|
103
|
+
}
|
104
|
+
// Process rules: handle needsClassName flag and apply specificity
|
105
|
+
const rulesToInsert = rules.map((rule) => {
|
106
|
+
let newSelector = rule.selector;
|
107
|
+
// If rule needs className prepended
|
108
|
+
if (rule.needsClassName) {
|
109
|
+
// Simple concatenation: .className (double specificity) + selectorSuffix
|
110
|
+
newSelector = `.${className}.${className}${newSelector}`;
|
111
|
+
}
|
112
|
+
return {
|
113
|
+
...rule,
|
114
|
+
selector: newSelector,
|
115
|
+
needsClassName: undefined, // Remove the flag after processing
|
116
|
+
};
|
117
|
+
});
|
122
118
|
// Before inserting, auto-register @property for any color custom properties being defined.
|
123
119
|
// Fast parse: split declarations by ';' and match "--*-color:"
|
124
120
|
// Do this only when we actually insert (i.e., no cache hit above)
|
@@ -159,7 +155,18 @@ export class StyleInjector {
|
|
159
155
|
}
|
160
156
|
// Store in registry
|
161
157
|
registry.refCounts.set(className, 1);
|
162
|
-
|
158
|
+
if (isPreAllocated) {
|
159
|
+
// Update the existing placeholder entry with real rule info
|
160
|
+
registry.rules.set(className, ruleInfo);
|
161
|
+
// cacheKey mapping already exists from allocation
|
162
|
+
}
|
163
|
+
else {
|
164
|
+
// Store new entries
|
165
|
+
registry.rules.set(className, ruleInfo);
|
166
|
+
if (cacheKey) {
|
167
|
+
registry.cacheKeyToClassName.set(cacheKey, className);
|
168
|
+
}
|
169
|
+
}
|
163
170
|
// Update metrics
|
164
171
|
if (registry.metrics) {
|
165
172
|
registry.metrics.totalInsertions++;
|
@@ -171,74 +178,56 @@ export class StyleInjector {
|
|
171
178
|
};
|
172
179
|
}
|
173
180
|
/**
|
174
|
-
*
|
181
|
+
* Inject global styles (rules without a generated tasty class selector)
|
182
|
+
* This ensures we don't reserve a tasty class name (t{number}) for global rules,
|
183
|
+
* which could otherwise collide with element-level styles and break lookups.
|
175
184
|
*/
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
}
|
185
|
+
injectGlobal(rules, options) {
|
186
|
+
const root = options?.root || document;
|
187
|
+
const registry = this.sheetManager.getRegistry(root);
|
188
|
+
if (!rules || rules.length === 0) {
|
189
|
+
return { dispose: () => { } };
|
182
190
|
}
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
191
|
+
// Use a non-tasty identifier to avoid any collisions with .t{number} classes
|
192
|
+
const key = `global:${this.globalRuleCounter++}`;
|
193
|
+
const info = this.sheetManager.insertGlobalRule(registry, rules, key, root);
|
194
|
+
if (registry.metrics) {
|
195
|
+
registry.metrics.totalInsertions++;
|
196
|
+
}
|
197
|
+
return {
|
198
|
+
dispose: () => {
|
199
|
+
if (info)
|
200
|
+
this.sheetManager.deleteGlobalRule(registry, key);
|
201
|
+
},
|
192
202
|
};
|
193
|
-
// Sort rules to ensure consistent cache keys for equivalent rule sets
|
194
|
-
const sortedRules = [...rules].sort((a, b) => {
|
195
|
-
const aKey = `${normalizeSelector(a.selector)}${a.atRules ? a.atRules.join('|') : ''}`;
|
196
|
-
const bKey = `${normalizeSelector(b.selector)}${b.atRules ? b.atRules.join('|') : ''}`;
|
197
|
-
return aKey.localeCompare(bKey);
|
198
|
-
});
|
199
|
-
return sortedRules
|
200
|
-
.map((rule) => {
|
201
|
-
const at = rule.atRules && rule.atRules.length
|
202
|
-
? `@${rule.atRules.join('|')}`
|
203
|
-
: '';
|
204
|
-
const sel = normalizeSelector(rule.selector);
|
205
|
-
// Normalize declarations by sorting properties for consistent caching
|
206
|
-
const normalizedDeclarations = rule.declarations
|
207
|
-
.split(';')
|
208
|
-
.filter(Boolean)
|
209
|
-
.map((decl) => decl.trim())
|
210
|
-
.sort()
|
211
|
-
.join(';');
|
212
|
-
return `${sel}{${normalizedDeclarations}}${at}`;
|
213
|
-
})
|
214
|
-
.join('');
|
215
203
|
}
|
216
204
|
/**
|
217
205
|
* Dispose of a className
|
218
206
|
*/
|
219
207
|
dispose(className, registry) {
|
220
|
-
const currentRefCount = registry.refCounts.get(className)
|
221
|
-
|
222
|
-
|
223
|
-
|
208
|
+
const currentRefCount = registry.refCounts.get(className);
|
209
|
+
// Guard against stale double-dispose or mismatched lifecycle
|
210
|
+
if (currentRefCount == null || currentRefCount <= 0) {
|
211
|
+
return;
|
224
212
|
}
|
225
|
-
|
226
|
-
|
213
|
+
const newRefCount = currentRefCount - 1;
|
214
|
+
registry.refCounts.set(className, newRefCount);
|
215
|
+
if (newRefCount === 0) {
|
216
|
+
// Update metrics
|
217
|
+
if (registry.metrics) {
|
218
|
+
registry.metrics.totalUnused++;
|
219
|
+
}
|
220
|
+
// Check if cleanup should be scheduled
|
221
|
+
this.sheetManager.checkCleanupNeeded(registry);
|
227
222
|
}
|
228
223
|
}
|
229
|
-
/**
|
230
|
-
* Cleanup unused rules
|
231
|
-
*/
|
232
|
-
cleanup(root) {
|
233
|
-
const registry = this.sheetManager.getRegistry(root || document);
|
234
|
-
this.sheetManager.processCleanupQueue(registry);
|
235
|
-
}
|
236
224
|
/**
|
237
225
|
* Force bulk cleanup of unused styles
|
238
226
|
*/
|
239
|
-
|
227
|
+
cleanup(root) {
|
240
228
|
const registry = this.sheetManager.getRegistry(root || document);
|
241
|
-
|
229
|
+
// Clean up ALL unused rules regardless of batch ratio
|
230
|
+
this.sheetManager.forceCleanup(registry);
|
242
231
|
}
|
243
232
|
/**
|
244
233
|
* Get CSS text from all sheets (for SSR)
|
@@ -258,16 +247,16 @@ export class StyleInjector {
|
|
258
247
|
for (const cls of classNames) {
|
259
248
|
const info = registry.rules.get(cls);
|
260
249
|
if (info) {
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
const
|
267
|
-
|
268
|
-
if (
|
269
|
-
|
270
|
-
|
250
|
+
// Always prefer reading from the live stylesheet, since indices can change
|
251
|
+
const sheet = registry.sheets[info.sheetIndex];
|
252
|
+
const styleSheet = sheet?.sheet?.sheet;
|
253
|
+
if (styleSheet) {
|
254
|
+
const start = Math.max(0, info.ruleIndex);
|
255
|
+
const end = Math.min(styleSheet.cssRules.length - 1, info.endRuleIndex ?? info.ruleIndex);
|
256
|
+
// Additional validation: ensure indices are valid and in correct order
|
257
|
+
if (start >= 0 &&
|
258
|
+
end >= start &&
|
259
|
+
start < styleSheet.cssRules.length) {
|
271
260
|
for (let i = start; i <= end; i++) {
|
272
261
|
const rule = styleSheet.cssRules[i];
|
273
262
|
if (rule)
|
@@ -275,6 +264,10 @@ export class StyleInjector {
|
|
275
264
|
}
|
276
265
|
}
|
277
266
|
}
|
267
|
+
else if (info.cssText && info.cssText.length) {
|
268
|
+
// Fallback in environments without CSSOM access
|
269
|
+
cssChunks.push(...info.cssText);
|
270
|
+
}
|
278
271
|
}
|
279
272
|
}
|
280
273
|
return cssChunks.join('\n');
|
@@ -295,14 +288,6 @@ export class StyleInjector {
|
|
295
288
|
const registry = this.sheetManager.getRegistry(root);
|
296
289
|
this.sheetManager.resetMetrics(registry);
|
297
290
|
}
|
298
|
-
/**
|
299
|
-
* Force cleanup of unused styles (useful for memory pressure)
|
300
|
-
*/
|
301
|
-
forceCleanupUnused(options) {
|
302
|
-
const root = options?.root || document;
|
303
|
-
const registry = this.sheetManager.getRegistry(root);
|
304
|
-
this.sheetManager['performBulkCleanup'](registry);
|
305
|
-
}
|
306
291
|
/**
|
307
292
|
* Define a CSS @property custom property
|
308
293
|
* Example:
|
@@ -418,9 +403,14 @@ export class StyleInjector {
|
|
418
403
|
return;
|
419
404
|
entry.refCount--;
|
420
405
|
if (entry.refCount <= 0) {
|
421
|
-
//
|
406
|
+
// Dispose immediately - keyframes are global and safe to clean up right away
|
407
|
+
this.sheetManager.deleteKeyframes(registry, entry.info);
|
422
408
|
registry.keyframesCache.delete(cacheKey);
|
423
|
-
|
409
|
+
// Update metrics
|
410
|
+
if (registry.metrics) {
|
411
|
+
registry.metrics.totalUnused++;
|
412
|
+
registry.metrics.stylesCleanedUp++;
|
413
|
+
}
|
424
414
|
}
|
425
415
|
}
|
426
416
|
/**
|
@@ -452,8 +442,8 @@ export class StyleInjector {
|
|
452
442
|
const css = this.interpolateTemplate();
|
453
443
|
if (css.trim()) {
|
454
444
|
const styleResults = this.parseCSSToStyleResults(css);
|
455
|
-
// Bind the inject method to the outer injector instance
|
456
|
-
const result = injector.
|
445
|
+
// Bind the global inject method to the outer injector instance
|
446
|
+
const result = injector.injectGlobal(styleResults, {
|
457
447
|
root: this.props.root,
|
458
448
|
});
|
459
449
|
this.disposeFunction = result.dispose;
|