@cube-dev/ui-kit 0.0.0-canary-8acd682 → 0.0.0-canary-d6409e4
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/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 +1 -1
- 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 +1 -1
- 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 +28 -18
- package/es/tasty/index.js +1 -1
- package/es/tasty/injector/index.js +1 -1
- package/es/tasty/injector/injector.js +22 -148
- package/es/tasty/injector/sheet-manager.js +46 -81
- 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 +1 -1
- 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 +1 -1
- package/es/tasty/utils/mergeStyles.js +1 -1
- package/es/tasty/utils/modAttrs.js +1 -1
- package/es/tasty/utils/renderStyles.js +16 -3
- package/es/tasty/utils/responsive.js +1 -1
- package/es/tasty/utils/string.js +1 -1
- package/es/tasty/utils/styles.js +1 -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/tasty/debug.d.ts +6 -6
- package/types/tasty/injector/index.d.ts +1 -1
- package/types/tasty/injector/injector.d.ts +0 -4
- package/types/tasty/injector/sheet-manager.d.ts +3 -11
- package/types/tasty/injector/types.d.ts +1 -8
package/es/tasty/debug.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license MIT
|
|
3
3
|
* author: Cube Dev Team
|
|
4
|
-
* @cube-dev/ui-kit v0.0.0-canary-
|
|
4
|
+
* @cube-dev/ui-kit v0.0.0-canary-d6409e4
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -265,11 +265,15 @@ export const tastyDebug = {
|
|
|
265
265
|
const activeClasses = findAllTastyClasses(root);
|
|
266
266
|
css = injector.instance.getCssTextForClasses(activeClasses, { root });
|
|
267
267
|
}
|
|
268
|
-
else if (target === '
|
|
269
|
-
|
|
270
|
-
const
|
|
271
|
-
const
|
|
272
|
-
|
|
268
|
+
else if (target === 'unused') {
|
|
269
|
+
// Get unused classes (refCount = 0) from the registry
|
|
270
|
+
const registry = injector.instance['sheetManager']?.getRegistry(root);
|
|
271
|
+
const unusedClasses = registry
|
|
272
|
+
? Array.from(registry.refCounts.entries())
|
|
273
|
+
.filter(([, refCount]) => refCount === 0)
|
|
274
|
+
.map(([className]) => className)
|
|
275
|
+
: [];
|
|
276
|
+
css = injector.instance.getCssTextForClasses(unusedClasses, { root });
|
|
273
277
|
}
|
|
274
278
|
else if (target === 'page') {
|
|
275
279
|
css = getPageCSS({ root, includeCrossOrigin: true });
|
|
@@ -337,12 +341,18 @@ export const tastyDebug = {
|
|
|
337
341
|
const { root = document } = opts || {};
|
|
338
342
|
const activeClasses = findAllTastyClasses(root);
|
|
339
343
|
const allClasses = findAllStyledClasses(root);
|
|
340
|
-
|
|
344
|
+
// Get unused classes (refCount = 0) from the registry
|
|
345
|
+
const registry = injector.instance['sheetManager']?.getRegistry(root);
|
|
346
|
+
const unusedClasses = registry
|
|
347
|
+
? Array.from(registry.refCounts.entries())
|
|
348
|
+
.filter(([, refCount]) => refCount === 0)
|
|
349
|
+
.map(([className]) => className)
|
|
350
|
+
: [];
|
|
341
351
|
return {
|
|
342
352
|
classes: {
|
|
343
353
|
active: activeClasses,
|
|
344
|
-
|
|
345
|
-
all:
|
|
354
|
+
unused: unusedClasses,
|
|
355
|
+
all: [...activeClasses, ...unusedClasses],
|
|
346
356
|
},
|
|
347
357
|
metrics: injector.instance.getMetrics({ root }),
|
|
348
358
|
};
|
|
@@ -477,7 +487,7 @@ export const tastyDebug = {
|
|
|
477
487
|
const definitions = this.defs({ root });
|
|
478
488
|
const metrics = this.metrics({ root });
|
|
479
489
|
const activeCSS = this.css('active', { root, prettify: false });
|
|
480
|
-
const
|
|
490
|
+
const unusedCSS = this.css('unused', { root, prettify: false });
|
|
481
491
|
const allCSS = this.css('all', { root, prettify: false });
|
|
482
492
|
// Build cleanup summary from metrics
|
|
483
493
|
const cleanupSummary = {
|
|
@@ -519,13 +529,13 @@ export const tastyDebug = {
|
|
|
519
529
|
}
|
|
520
530
|
const summary = {
|
|
521
531
|
activeClasses: cacheStatus.classes.active,
|
|
522
|
-
|
|
532
|
+
unusedClasses: cacheStatus.classes.unused,
|
|
523
533
|
totalStyledClasses: cacheStatus.classes.all,
|
|
524
534
|
activeCSSSize: activeCSS.length,
|
|
525
|
-
|
|
535
|
+
unusedCSSSize: unusedCSS.length,
|
|
526
536
|
totalCSSSize: allCSS.length,
|
|
527
537
|
activeCSS: prettifyCSS(activeCSS),
|
|
528
|
-
|
|
538
|
+
unusedCSS: prettifyCSS(unusedCSS),
|
|
529
539
|
allCSS: prettifyCSS(allCSS),
|
|
530
540
|
globalCSS: globalBreakdown.css,
|
|
531
541
|
globalCSSSize: globalBreakdown.totalCSSSize,
|
|
@@ -542,11 +552,11 @@ export const tastyDebug = {
|
|
|
542
552
|
console.group('🎨 Comprehensive Tasty Debug Summary');
|
|
543
553
|
console.log(`📊 Style Cache Status:`);
|
|
544
554
|
console.log(` • Active classes (in DOM): ${summary.activeClasses.length}`);
|
|
545
|
-
console.log(` •
|
|
555
|
+
console.log(` • Unused classes (refCount = 0): ${summary.unusedClasses.length}`);
|
|
546
556
|
console.log(` • Total styled classes: ${summary.totalStyledClasses.length}`);
|
|
547
557
|
console.log(`💾 CSS Size:`);
|
|
548
558
|
console.log(` • Active CSS: ${summary.activeCSSSize} characters`);
|
|
549
|
-
console.log(` •
|
|
559
|
+
console.log(` • Unused CSS: ${summary.unusedCSSSize} characters`);
|
|
550
560
|
console.log(` • Global CSS: ${summary.globalCSSSize} characters (${summary.globalRuleCount} rules)`);
|
|
551
561
|
console.log(` • Total CSS: ${summary.totalCSSSize} characters`);
|
|
552
562
|
if (page) {
|
|
@@ -564,7 +574,7 @@ export const tastyDebug = {
|
|
|
564
574
|
console.log(` • Cache misses: ${metrics.misses}`);
|
|
565
575
|
console.log(` • Cached style reuses: ${metrics.unusedHits}`);
|
|
566
576
|
const hitRate = metrics.hits + metrics.misses > 0
|
|
567
|
-
? (((metrics.hits + metrics.unusedHits) /
|
|
577
|
+
? (((metrics.hits + (metrics.unusedHits || 0)) /
|
|
568
578
|
(metrics.hits + metrics.misses)) *
|
|
569
579
|
100).toFixed(1)
|
|
570
580
|
: '0';
|
|
@@ -572,7 +582,7 @@ export const tastyDebug = {
|
|
|
572
582
|
}
|
|
573
583
|
console.log('🔍 Details:');
|
|
574
584
|
console.log(' • Active classes:', summary.activeClasses);
|
|
575
|
-
console.log(' •
|
|
585
|
+
console.log(' • Unused classes:', summary.unusedClasses);
|
|
576
586
|
console.groupEnd();
|
|
577
587
|
}
|
|
578
588
|
return summary;
|
|
@@ -669,7 +679,7 @@ export const tastyDebug = {
|
|
|
669
679
|
console.log('📖 Common targets for css()/log():');
|
|
670
680
|
console.log(' • "all" - all tasty CSS + global CSS');
|
|
671
681
|
console.log(' • "active" - CSS for classes in DOM');
|
|
672
|
-
console.log(' • "
|
|
682
|
+
console.log(' • "unused" - CSS for classes with refCount = 0');
|
|
673
683
|
console.log(' • "global" - only global CSS (createGlobalStyle)');
|
|
674
684
|
console.log(' • "page" - ALL page CSS (including non-tasty)');
|
|
675
685
|
console.log(' • "t123" - specific tasty class');
|
package/es/tasty/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license MIT
|
|
3
3
|
* author: Cube Dev Team
|
|
4
|
-
* @cube-dev/ui-kit v0.0.0-canary-
|
|
4
|
+
* @cube-dev/ui-kit v0.0.0-canary-d6409e4
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -28,35 +28,6 @@ export class StyleInjector {
|
|
|
28
28
|
this.config = config;
|
|
29
29
|
this.sheetManager = new SheetManager(config);
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Check if a class has live rules in the CSSOM
|
|
33
|
-
*/
|
|
34
|
-
hasLiveRules(registry, className) {
|
|
35
|
-
const info = registry.rules.get(className);
|
|
36
|
-
if (!info)
|
|
37
|
-
return false;
|
|
38
|
-
try {
|
|
39
|
-
const sheetInfo = registry.sheets[info.sheetIndex];
|
|
40
|
-
const styleSheet = sheetInfo?.sheet?.sheet;
|
|
41
|
-
if (!styleSheet)
|
|
42
|
-
return false;
|
|
43
|
-
const start = Math.max(0, info.ruleIndex);
|
|
44
|
-
const end = Math.min(styleSheet.cssRules.length - 1, info.endRuleIndex ?? info.ruleIndex);
|
|
45
|
-
if (start > end || start >= styleSheet.cssRules.length)
|
|
46
|
-
return false;
|
|
47
|
-
// Check if any rule in the range contains the expected class name
|
|
48
|
-
for (let i = start; i <= end; i++) {
|
|
49
|
-
const rule = styleSheet.cssRules[i];
|
|
50
|
-
if (rule && (rule.cssText || '').includes('.' + className)) {
|
|
51
|
-
return true;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
// Ignore CSSOM access errors and treat as missing
|
|
57
|
-
}
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
31
|
/**
|
|
61
32
|
* Inject styles from StyleResult objects
|
|
62
33
|
*/
|
|
@@ -77,41 +48,8 @@ export class StyleInjector {
|
|
|
77
48
|
? preExtractedClass
|
|
78
49
|
: null;
|
|
79
50
|
if (generatedClass && registry.rules.has(generatedClass)) {
|
|
80
|
-
// Verify that the rules still exist in the live CSSOM
|
|
81
|
-
const hasLiveCSS = this.hasLiveRules(registry, generatedClass);
|
|
82
|
-
if (!hasLiveCSS) {
|
|
83
|
-
// Rules were deleted from CSSOM but registry still has the entry
|
|
84
|
-
// Reinsert the rules using the same class name
|
|
85
|
-
const className = generatedClass;
|
|
86
|
-
const rulesToInsert = rules.map((r) => {
|
|
87
|
-
// Increase specificity for class-based selectors by duplicating the class
|
|
88
|
-
if (r.selector.startsWith('.') && /^\.t\d+/.test(r.selector)) {
|
|
89
|
-
const classMatch = r.selector.match(/^\.t\d+/);
|
|
90
|
-
if (classMatch) {
|
|
91
|
-
const baseClass = classMatch[0];
|
|
92
|
-
return {
|
|
93
|
-
...r,
|
|
94
|
-
selector: baseClass + r.selector,
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
return r;
|
|
99
|
-
});
|
|
100
|
-
const ruleInfo = this.sheetManager.insertRule(registry, rulesToInsert, className, root);
|
|
101
|
-
if (ruleInfo) {
|
|
102
|
-
registry.rules.set(className, ruleInfo);
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
51
|
const currentRefCount = registry.refCounts.get(generatedClass) || 0;
|
|
106
52
|
registry.refCounts.set(generatedClass, currentRefCount + 1);
|
|
107
|
-
// If this class was previously marked as unused, clear that state now
|
|
108
|
-
if (registry.unusedRules.has(generatedClass)) {
|
|
109
|
-
registry.unusedRules.delete(generatedClass);
|
|
110
|
-
if (registry.metrics) {
|
|
111
|
-
// Consider this a reuse rather than a cold miss
|
|
112
|
-
registry.metrics.unusedHits++;
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
53
|
// Update metrics
|
|
116
54
|
if (registry.metrics) {
|
|
117
55
|
registry.metrics.hits++;
|
|
@@ -121,83 +59,11 @@ export class StyleInjector {
|
|
|
121
59
|
dispose: () => this.dispose(generatedClass, registry),
|
|
122
60
|
};
|
|
123
61
|
}
|
|
124
|
-
// Try to restore from unused styles if className exists but is not active
|
|
125
|
-
if (generatedClass &&
|
|
126
|
-
registry.rules.has(generatedClass) &&
|
|
127
|
-
!registry.refCounts.has(generatedClass)) {
|
|
128
|
-
const restored = this.sheetManager.restoreFromUnused(registry, generatedClass);
|
|
129
|
-
if (restored) {
|
|
130
|
-
// Verify that the rules still exist in the live CSSOM after restoration
|
|
131
|
-
const hasLiveCSS = this.hasLiveRules(registry, generatedClass);
|
|
132
|
-
if (!hasLiveCSS) {
|
|
133
|
-
// Rules were deleted from CSSOM, reinsert them
|
|
134
|
-
const className = generatedClass;
|
|
135
|
-
const rulesToInsert = rules.map((r) => {
|
|
136
|
-
// Increase specificity for class-based selectors by duplicating the class
|
|
137
|
-
if (r.selector.startsWith('.') && /^\.t\d+/.test(r.selector)) {
|
|
138
|
-
const classMatch = r.selector.match(/^\.t\d+/);
|
|
139
|
-
if (classMatch) {
|
|
140
|
-
const baseClass = classMatch[0];
|
|
141
|
-
return {
|
|
142
|
-
...r,
|
|
143
|
-
selector: baseClass + r.selector,
|
|
144
|
-
};
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return r;
|
|
148
|
-
});
|
|
149
|
-
const ruleInfo = this.sheetManager.insertRule(registry, rulesToInsert, className, root);
|
|
150
|
-
if (ruleInfo) {
|
|
151
|
-
registry.rules.set(className, ruleInfo);
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
// Update metrics
|
|
155
|
-
if (registry.metrics) {
|
|
156
|
-
registry.metrics.hits++;
|
|
157
|
-
}
|
|
158
|
-
return {
|
|
159
|
-
className: generatedClass,
|
|
160
|
-
dispose: () => this.dispose(generatedClass, registry),
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
}
|
|
164
62
|
// No active cache dedupe — rely on provided className or disposed cache only
|
|
165
|
-
//
|
|
166
|
-
const className = generatedClass
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
// If a different pre-extracted class was used in rules, rewrite selectors to the final class
|
|
170
|
-
// Also increase specificity for class-based selectors by duplicating the class
|
|
171
|
-
const rulesToInsert = generatedClass && generatedClass !== className
|
|
172
|
-
? rules.map((r) => {
|
|
173
|
-
if (r.selector.startsWith('.' + generatedClass)) {
|
|
174
|
-
const newSelector = '.' + className + r.selector.slice(generatedClass.length + 1);
|
|
175
|
-
// Increase specificity by duplicating the class for class-based selectors
|
|
176
|
-
const specificSelector = newSelector.startsWith('.' + className) &&
|
|
177
|
-
/^\.t\d+/.test(newSelector)
|
|
178
|
-
? '.' + className + newSelector
|
|
179
|
-
: newSelector;
|
|
180
|
-
return {
|
|
181
|
-
...r,
|
|
182
|
-
selector: specificSelector,
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
return r;
|
|
186
|
-
})
|
|
187
|
-
: rules.map((r) => {
|
|
188
|
-
// Increase specificity for class-based selectors by duplicating the class
|
|
189
|
-
if (r.selector.startsWith('.') && /^\.t\d+/.test(r.selector)) {
|
|
190
|
-
const classMatch = r.selector.match(/^\.t\d+/);
|
|
191
|
-
if (classMatch) {
|
|
192
|
-
const baseClass = classMatch[0];
|
|
193
|
-
return {
|
|
194
|
-
...r,
|
|
195
|
-
selector: baseClass + r.selector,
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
return r;
|
|
200
|
-
});
|
|
63
|
+
// Use extracted className if available, otherwise generate new one
|
|
64
|
+
const className = generatedClass || generateClassName(registry.classCounter++);
|
|
65
|
+
// Use rules as-is - specificity is handled during selector generation
|
|
66
|
+
const rulesToInsert = rules;
|
|
201
67
|
// Before inserting, auto-register @property for any color custom properties being defined.
|
|
202
68
|
// Fast parse: split declarations by ';' and match "--*-color:"
|
|
203
69
|
// Do this only when we actually insert (i.e., no cache hit above)
|
|
@@ -291,15 +157,18 @@ export class StyleInjector {
|
|
|
291
157
|
dispose(className, registry) {
|
|
292
158
|
const currentRefCount = registry.refCounts.get(className);
|
|
293
159
|
// Guard against stale double-dispose or mismatched lifecycle
|
|
294
|
-
if (currentRefCount == null) {
|
|
160
|
+
if (currentRefCount == null || currentRefCount <= 0) {
|
|
295
161
|
return;
|
|
296
162
|
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
163
|
+
const newRefCount = currentRefCount - 1;
|
|
164
|
+
registry.refCounts.set(className, newRefCount);
|
|
165
|
+
if (newRefCount === 0) {
|
|
166
|
+
// Update metrics
|
|
167
|
+
if (registry.metrics) {
|
|
168
|
+
registry.metrics.totalUnused++;
|
|
169
|
+
}
|
|
170
|
+
// Check if cleanup should be scheduled
|
|
171
|
+
this.sheetManager.checkCleanupNeeded(registry);
|
|
303
172
|
}
|
|
304
173
|
}
|
|
305
174
|
/**
|
|
@@ -478,9 +347,14 @@ export class StyleInjector {
|
|
|
478
347
|
return;
|
|
479
348
|
entry.refCount--;
|
|
480
349
|
if (entry.refCount <= 0) {
|
|
481
|
-
//
|
|
350
|
+
// Dispose immediately - keyframes are global and safe to clean up right away
|
|
351
|
+
this.sheetManager.deleteKeyframes(registry, entry.info);
|
|
482
352
|
registry.keyframesCache.delete(cacheKey);
|
|
483
|
-
|
|
353
|
+
// Update metrics
|
|
354
|
+
if (registry.metrics) {
|
|
355
|
+
registry.metrics.totalUnused++;
|
|
356
|
+
registry.metrics.stylesCleanedUp++;
|
|
357
|
+
}
|
|
484
358
|
}
|
|
485
359
|
}
|
|
486
360
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @license MIT
|
|
3
3
|
* author: Cube Dev Team
|
|
4
|
-
* @cube-dev/ui-kit v0.0.0-canary-
|
|
4
|
+
* @cube-dev/ui-kit v0.0.0-canary-d6409e4
|
|
5
5
|
* Released under the MIT license.
|
|
6
6
|
*/
|
|
7
7
|
|
|
@@ -22,7 +22,6 @@ export class SheetManager {
|
|
|
22
22
|
? {
|
|
23
23
|
hits: 0,
|
|
24
24
|
misses: 0,
|
|
25
|
-
unusedHits: 0,
|
|
26
25
|
bulkCleanups: 0,
|
|
27
26
|
totalInsertions: 0,
|
|
28
27
|
totalUnused: 0,
|
|
@@ -35,13 +34,11 @@ export class SheetManager {
|
|
|
35
34
|
sheets: [],
|
|
36
35
|
refCounts: new Map(),
|
|
37
36
|
rules: new Map(),
|
|
38
|
-
unusedRules: new Map(),
|
|
39
37
|
ruleTextSet: new Set(),
|
|
40
38
|
bulkCleanupTimeout: null,
|
|
41
39
|
metrics,
|
|
42
40
|
classCounter: 0,
|
|
43
41
|
keyframesCache: new Map(),
|
|
44
|
-
unusedKeyframes: new Map(),
|
|
45
42
|
keyframesCounter: 0,
|
|
46
43
|
injectedProperties: new Set(),
|
|
47
44
|
};
|
|
@@ -328,10 +325,7 @@ export class SheetManager {
|
|
|
328
325
|
for (const info of registry.rules.values()) {
|
|
329
326
|
adjustRuleInfo(info);
|
|
330
327
|
}
|
|
331
|
-
//
|
|
332
|
-
for (const unused of registry.unusedRules.values()) {
|
|
333
|
-
adjustRuleInfo(unused.ruleInfo);
|
|
334
|
-
}
|
|
328
|
+
// No need to separately adjust unused rules since they're part of the rules Map
|
|
335
329
|
// Adjust keyframes indices stored in cache
|
|
336
330
|
for (const entry of registry.keyframesCache.values()) {
|
|
337
331
|
const ki = entry.info;
|
|
@@ -422,52 +416,20 @@ export class SheetManager {
|
|
|
422
416
|
return sheet.ruleCount;
|
|
423
417
|
}
|
|
424
418
|
/**
|
|
425
|
-
*
|
|
426
|
-
*/
|
|
427
|
-
markAsUnused(registry, className) {
|
|
428
|
-
const ruleInfo = registry.rules.get(className);
|
|
429
|
-
if (!ruleInfo)
|
|
430
|
-
return;
|
|
431
|
-
// Mark as unused (but keep in registry.rules)
|
|
432
|
-
const unusedInfo = {
|
|
433
|
-
ruleInfo,
|
|
434
|
-
markedUnusedAt: Date.now(),
|
|
435
|
-
};
|
|
436
|
-
registry.unusedRules.set(className, unusedInfo);
|
|
437
|
-
registry.refCounts.delete(className);
|
|
438
|
-
// Update metrics
|
|
439
|
-
if (registry.metrics) {
|
|
440
|
-
registry.metrics.totalUnused++;
|
|
441
|
-
}
|
|
442
|
-
// Schedule bulk cleanup if threshold exceeded
|
|
443
|
-
const threshold = this.config.unusedStylesThreshold || 500;
|
|
444
|
-
if (registry.unusedRules.size >= threshold) {
|
|
445
|
-
this.scheduleBulkCleanup(registry);
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
/**
|
|
449
|
-
* Restore a ruleset from unused styles
|
|
450
|
-
*/
|
|
451
|
-
restoreFromUnused(registry, className) {
|
|
452
|
-
const unusedInfo = registry.unusedRules.get(className);
|
|
453
|
-
if (!unusedInfo)
|
|
454
|
-
return null;
|
|
455
|
-
// Remove from unused rules (rules stays in registry.rules)
|
|
456
|
-
registry.unusedRules.delete(className);
|
|
457
|
-
registry.refCounts.set(className, 1);
|
|
458
|
-
// Update metrics
|
|
459
|
-
if (registry.metrics) {
|
|
460
|
-
registry.metrics.unusedHits++;
|
|
461
|
-
}
|
|
462
|
-
return unusedInfo.ruleInfo;
|
|
463
|
-
}
|
|
464
|
-
/**
|
|
465
|
-
* Schedule bulk cleanup of all unused styles
|
|
419
|
+
* Schedule bulk cleanup of all unused styles (non-stacking)
|
|
466
420
|
*/
|
|
467
421
|
scheduleBulkCleanup(registry) {
|
|
468
|
-
//
|
|
469
|
-
if (registry.bulkCleanupTimeout)
|
|
470
|
-
|
|
422
|
+
// Clear any existing timeout to prevent stacking
|
|
423
|
+
if (registry.bulkCleanupTimeout) {
|
|
424
|
+
if (this.config.idleCleanup &&
|
|
425
|
+
typeof cancelIdleCallback !== 'undefined') {
|
|
426
|
+
cancelIdleCallback(registry.bulkCleanupTimeout);
|
|
427
|
+
}
|
|
428
|
+
else {
|
|
429
|
+
clearTimeout(registry.bulkCleanupTimeout);
|
|
430
|
+
}
|
|
431
|
+
registry.bulkCleanupTimeout = null;
|
|
432
|
+
}
|
|
471
433
|
const performCleanup = () => {
|
|
472
434
|
this.performBulkCleanup(registry);
|
|
473
435
|
registry.bulkCleanupTimeout = null;
|
|
@@ -484,22 +446,21 @@ export class SheetManager {
|
|
|
484
446
|
* Perform bulk cleanup of all unused styles
|
|
485
447
|
*/
|
|
486
448
|
performBulkCleanup(registry) {
|
|
487
|
-
if (registry.unusedRules.size === 0)
|
|
488
|
-
return;
|
|
489
449
|
const cleanupStartTime = Date.now();
|
|
490
|
-
//
|
|
491
|
-
const
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
450
|
+
// Calculate unused rules dynamically: rules that have refCount = 0
|
|
451
|
+
const unusedClassNames = Array.from(registry.refCounts.entries())
|
|
452
|
+
.filter(([, refCount]) => refCount === 0)
|
|
453
|
+
.map(([className]) => className);
|
|
454
|
+
if (unusedClassNames.length === 0)
|
|
455
|
+
return;
|
|
456
|
+
// Build candidates list - no age filtering needed
|
|
457
|
+
const candidates = unusedClassNames.map((className) => {
|
|
458
|
+
const ruleInfo = registry.rules.get(className); // We know it exists
|
|
459
|
+
return {
|
|
460
|
+
className,
|
|
461
|
+
ruleInfo,
|
|
462
|
+
};
|
|
463
|
+
});
|
|
503
464
|
if (candidates.length === 0)
|
|
504
465
|
return;
|
|
505
466
|
// Limit deletion scope per run (batch ratio)
|
|
@@ -512,8 +473,7 @@ export class SheetManager {
|
|
|
512
473
|
// Group by sheet for efficient deletion
|
|
513
474
|
const rulesBySheet = new Map();
|
|
514
475
|
// Calculate CSS size before deletion and group rules
|
|
515
|
-
for (const { className,
|
|
516
|
-
const ruleInfo = unusedInfo.ruleInfo;
|
|
476
|
+
for (const { className, ruleInfo } of selected) {
|
|
517
477
|
const sheetIndex = ruleInfo.sheetIndex;
|
|
518
478
|
// Dev-only metrics: estimate CSS size and rule count if available
|
|
519
479
|
if (this.config.devMode && Array.isArray(ruleInfo.cssText)) {
|
|
@@ -545,11 +505,9 @@ export class SheetManager {
|
|
|
545
505
|
for (const { className, ruleInfo } of rulesInSheet) {
|
|
546
506
|
// SAFETY: Re-check that the rule is still unused at deletion time.
|
|
547
507
|
// Between scheduling and execution a class may have been restored
|
|
548
|
-
// (
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
}
|
|
552
|
-
if (registry.refCounts.has(className)) {
|
|
508
|
+
// (refCount set to > 0). Skip such entries.
|
|
509
|
+
const currentRefCount = registry.refCounts.get(className) || 0;
|
|
510
|
+
if (currentRefCount > 0) {
|
|
553
511
|
// Class became active again; do not delete
|
|
554
512
|
continue;
|
|
555
513
|
}
|
|
@@ -567,7 +525,7 @@ export class SheetManager {
|
|
|
567
525
|
}
|
|
568
526
|
this.deleteRule(registry, ruleInfo);
|
|
569
527
|
registry.rules.delete(className);
|
|
570
|
-
registry.
|
|
528
|
+
registry.refCounts.delete(className);
|
|
571
529
|
cleanedUpCount++;
|
|
572
530
|
}
|
|
573
531
|
}
|
|
@@ -616,7 +574,14 @@ export class SheetManager {
|
|
|
616
574
|
* Get cache performance metrics
|
|
617
575
|
*/
|
|
618
576
|
getMetrics(registry) {
|
|
619
|
-
|
|
577
|
+
if (!registry.metrics)
|
|
578
|
+
return null;
|
|
579
|
+
// Calculate unusedHits on demand - only count CSS rules since keyframes are disposed immediately
|
|
580
|
+
const unusedRulesCount = Array.from(registry.refCounts.values()).filter((count) => count === 0).length;
|
|
581
|
+
return {
|
|
582
|
+
...registry.metrics,
|
|
583
|
+
unusedHits: unusedRulesCount,
|
|
584
|
+
};
|
|
620
585
|
}
|
|
621
586
|
/**
|
|
622
587
|
* Reset cache performance metrics
|
|
@@ -626,7 +591,6 @@ export class SheetManager {
|
|
|
626
591
|
registry.metrics = {
|
|
627
592
|
hits: 0,
|
|
628
593
|
misses: 0,
|
|
629
|
-
unusedHits: 0,
|
|
630
594
|
bulkCleanups: 0,
|
|
631
595
|
totalInsertions: 0,
|
|
632
596
|
totalUnused: 0,
|
|
@@ -769,12 +733,13 @@ export class SheetManager {
|
|
|
769
733
|
}
|
|
770
734
|
}
|
|
771
735
|
/**
|
|
772
|
-
*
|
|
736
|
+
* Check if cleanup should be scheduled (async, non-stacking)
|
|
773
737
|
*/
|
|
774
|
-
|
|
775
|
-
//
|
|
738
|
+
checkCleanupNeeded(registry) {
|
|
739
|
+
// Count unused rules (refCount = 0) - keyframes are disposed immediately
|
|
740
|
+
const unusedRulesCount = Array.from(registry.refCounts.values()).filter((count) => count === 0).length;
|
|
776
741
|
const threshold = this.config.unusedStylesThreshold || 500;
|
|
777
|
-
if (
|
|
742
|
+
if (unusedRulesCount >= threshold) {
|
|
778
743
|
this.scheduleBulkCleanup(registry);
|
|
779
744
|
}
|
|
780
745
|
}
|