@cube-dev/ui-kit 0.0.0-canary-55e23f2 → 0.0.0-canary-21dd9ff
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 +6 -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 +2 -2
- package/es/components/actions/Action/Action.js +14 -18
- package/es/components/actions/Button/Button.js +2 -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 +5 -4
- 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 +3 -3
- package/es/components/content/Title.js +3 -3
- 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 +3 -2
- 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 -2
- package/es/tasty/index.js +2 -1
- package/es/tasty/injector/flatten.js +350 -0
- package/es/tasty/injector/index.js +165 -0
- package/es/tasty/injector/injector.js +315 -0
- package/es/tasty/injector/sheet-manager.js +518 -0
- package/es/tasty/injector/types.js +10 -0
- package/es/tasty/parser/classify.js +1 -1
- package/es/tasty/parser/const.js +1 -1
- package/es/tasty/parser/lru.js +38 -2
- 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 +8 -12
- package/es/tasty/styles/createStyle.js +3 -3
- 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 +6 -8
- 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 -3
- package/es/tasty/styles/preset.js +1 -1
- package/es/tasty/styles/radius.js +1 -1
- package/es/tasty/styles/reset.js +40 -44
- 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 +92 -19
- 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/mergeStyles.js +1 -1
- package/es/tasty/utils/modAttrs.js +1 -1
- package/es/tasty/utils/renderStyles.js +515 -57
- package/es/tasty/utils/responsive.js +1 -1
- package/es/tasty/utils/string.js +1 -1
- package/es/tasty/utils/styles.js +3 -62
- 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/Button/Button.d.ts +1 -0
- package/types/components/actions/Menu/styled.d.ts +699 -702
- package/types/components/actions/use-action.d.ts +1 -1
- package/types/components/content/List/SectionHeading.d.ts +233 -234
- package/types/components/fields/DatePicker/DatePickerElement.d.ts +233 -234
- package/types/tasty/index.d.ts +1 -0
- package/types/tasty/injector/flatten.d.ts +16 -0
- package/types/tasty/injector/index.d.ts +64 -0
- package/types/tasty/injector/injector.d.ts +82 -0
- package/types/tasty/injector/sheet-manager.d.ts +74 -0
- package/types/tasty/injector/types.d.ts +71 -0
- package/types/tasty/parser/lru.d.ts +5 -1
- package/types/tasty/styles/color.d.ts +3 -1
- package/types/tasty/styles/reset.d.ts +1 -2
- package/types/tasty/types.d.ts +0 -2
- package/types/tasty/utils/renderStyles.d.ts +25 -7
- package/types/tasty/utils/styles.d.ts +1 -9
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license MIT
|
|
3
|
+
* author: Cube Dev Team
|
|
4
|
+
* @cube-dev/ui-kit v0.0.0-canary-21dd9ff
|
|
5
|
+
* Released under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { StyleInjector } from './injector';
|
|
9
|
+
// Use a more robust global singleton that survives React Strict Mode
|
|
10
|
+
const GLOBAL_INJECTOR_KEY = '__TASTY_GLOBAL_INJECTOR__';
|
|
11
|
+
/**
|
|
12
|
+
* Detect if we're running in a test environment
|
|
13
|
+
*/
|
|
14
|
+
function isTestEnvironment() {
|
|
15
|
+
// Check Node.js environment
|
|
16
|
+
if (typeof process !== 'undefined' && process.env?.NODE_ENV === 'test') {
|
|
17
|
+
return true;
|
|
18
|
+
}
|
|
19
|
+
// Check for Jest globals (safely)
|
|
20
|
+
if (typeof global !== 'undefined') {
|
|
21
|
+
const g = global;
|
|
22
|
+
if (g.jest || g.expect || g.describe || g.it) {
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
// Check for jsdom environment (common in tests)
|
|
27
|
+
if (typeof window !== 'undefined' &&
|
|
28
|
+
window.navigator?.userAgent?.includes('jsdom')) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
// Check for other test runners
|
|
32
|
+
if (typeof globalThis !== 'undefined') {
|
|
33
|
+
const gt = globalThis;
|
|
34
|
+
if (gt.vitest || gt.mocha) {
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
return false;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Configure the global style injector
|
|
42
|
+
*/
|
|
43
|
+
export function configure(config = {}) {
|
|
44
|
+
const fullConfig = {
|
|
45
|
+
maxRulesPerSheet: 8192, // safer default cap per sheet
|
|
46
|
+
cacheSize: 500, // default LRU cache size for disposed rulesets
|
|
47
|
+
cleanupDelay: 5000, // default delay before actual DOM cleanup (ignored if idleCleanup is true)
|
|
48
|
+
idleCleanup: true, // default to using requestIdleCallback instead of setTimeout
|
|
49
|
+
collectMetrics: false, // default to no performance tracking
|
|
50
|
+
forceTextInjection: false, // auto-enable for test environments
|
|
51
|
+
debugMode: false, // reduce memory usage by avoiding full cssText storage
|
|
52
|
+
...config,
|
|
53
|
+
};
|
|
54
|
+
// Store on window to survive React Strict Mode resets
|
|
55
|
+
if (typeof window !== 'undefined') {
|
|
56
|
+
window[GLOBAL_INJECTOR_KEY] = new StyleInjector(fullConfig);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
// Fallback for SSR
|
|
60
|
+
globalThis[GLOBAL_INJECTOR_KEY] = new StyleInjector(fullConfig);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get or create the global injector instance
|
|
65
|
+
*/
|
|
66
|
+
function getGlobalInjector() {
|
|
67
|
+
const storage = typeof window !== 'undefined' ? window : globalThis;
|
|
68
|
+
if (!storage[GLOBAL_INJECTOR_KEY]) {
|
|
69
|
+
configure();
|
|
70
|
+
}
|
|
71
|
+
return storage[GLOBAL_INJECTOR_KEY];
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Inject styles and return className with dispose function
|
|
75
|
+
*/
|
|
76
|
+
export function inject(rules, options) {
|
|
77
|
+
return getGlobalInjector().inject(rules, options);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Inject global CSS rule (legacy method - not supported in direct injector)
|
|
81
|
+
*/
|
|
82
|
+
export function injectGlobal(selector, cssText, options) {
|
|
83
|
+
return getGlobalInjector().injectGlobal(selector, cssText, options);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Get CSS text from all sheets (for SSR)
|
|
87
|
+
*/
|
|
88
|
+
export function getCssText(options) {
|
|
89
|
+
return getGlobalInjector().getCssText(options);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Collect only CSS used by a rendered subtree (like jest-styled-components).
|
|
93
|
+
* Pass the container returned by render(...).
|
|
94
|
+
*/
|
|
95
|
+
export function getCssTextForNode(node, options) {
|
|
96
|
+
// Collect tasty-generated class names (t<number>) from the subtree
|
|
97
|
+
const classSet = new Set();
|
|
98
|
+
const readClasses = (el) => {
|
|
99
|
+
const cls = el.getAttribute('class');
|
|
100
|
+
if (!cls)
|
|
101
|
+
return;
|
|
102
|
+
for (const token of cls.split(/\s+/)) {
|
|
103
|
+
if (/^t\d+$/.test(token))
|
|
104
|
+
classSet.add(token);
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
// Include node itself if it's an Element
|
|
108
|
+
if (node.getAttribute) {
|
|
109
|
+
readClasses(node);
|
|
110
|
+
}
|
|
111
|
+
// Walk descendants
|
|
112
|
+
const elements = node.querySelectorAll
|
|
113
|
+
? node.querySelectorAll('[class]')
|
|
114
|
+
: [];
|
|
115
|
+
elements && elements.forEach(readClasses);
|
|
116
|
+
return getGlobalInjector().getCssTextForClasses(classSet, options);
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Force cleanup of unused rules
|
|
120
|
+
*/
|
|
121
|
+
export function cleanup(root) {
|
|
122
|
+
return getGlobalInjector().cleanup(root);
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Check if we're currently running in a test environment
|
|
126
|
+
*/
|
|
127
|
+
export function getIsTestEnvironment() {
|
|
128
|
+
return isTestEnvironment();
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get the global injector instance for debugging
|
|
132
|
+
*/
|
|
133
|
+
export const injector = {
|
|
134
|
+
get instance() {
|
|
135
|
+
return getGlobalInjector();
|
|
136
|
+
},
|
|
137
|
+
};
|
|
138
|
+
/**
|
|
139
|
+
* Destroy all resources and clean up
|
|
140
|
+
*/
|
|
141
|
+
export function destroy(root) {
|
|
142
|
+
return getGlobalInjector().destroy(root);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Create a new isolated injector instance
|
|
146
|
+
*/
|
|
147
|
+
export function createInjector(config = {}) {
|
|
148
|
+
const isTest = isTestEnvironment();
|
|
149
|
+
const fullConfig = {
|
|
150
|
+
maxRulesPerSheet: 8192, // safer default cap per sheet
|
|
151
|
+
cacheSize: 500, // default LRU cache size for disposed rulesets
|
|
152
|
+
cleanupDelay: 5000, // default delay before actual DOM 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
|
|
157
|
+
...config,
|
|
158
|
+
};
|
|
159
|
+
return new StyleInjector(fullConfig);
|
|
160
|
+
}
|
|
161
|
+
export { StyleInjector } from './injector';
|
|
162
|
+
export { SheetManager } from './sheet-manager';
|
|
163
|
+
export { flattenNestedCss } from './flatten';
|
|
164
|
+
|
|
165
|
+
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license MIT
|
|
3
|
+
* author: Cube Dev Team
|
|
4
|
+
* @cube-dev/ui-kit v0.0.0-canary-21dd9ff
|
|
5
|
+
* Released under the MIT license.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Style injector that works with structured style objects
|
|
10
|
+
* Eliminates CSS string parsing for better performance
|
|
11
|
+
*/
|
|
12
|
+
import { flattenNestedCssForSelector } from './flatten';
|
|
13
|
+
import { SheetManager } from './sheet-manager';
|
|
14
|
+
/**
|
|
15
|
+
* Generate sequential class name with format t{number}
|
|
16
|
+
*/
|
|
17
|
+
function generateClassName(counter) {
|
|
18
|
+
return `t${counter}`;
|
|
19
|
+
}
|
|
20
|
+
export class StyleInjector {
|
|
21
|
+
sheetManager;
|
|
22
|
+
config;
|
|
23
|
+
cleanupScheduled = false;
|
|
24
|
+
constructor(config = {}) {
|
|
25
|
+
this.config = config;
|
|
26
|
+
this.sheetManager = new SheetManager(config);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Inject styles from StyleResult objects
|
|
30
|
+
*/
|
|
31
|
+
inject(rules, options) {
|
|
32
|
+
const root = options?.root || document;
|
|
33
|
+
const registry = this.sheetManager.getRegistry(root);
|
|
34
|
+
if (rules.length === 0) {
|
|
35
|
+
return {
|
|
36
|
+
className: '',
|
|
37
|
+
dispose: () => { },
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
// Convert to flattened rules
|
|
41
|
+
const flattenedRules = this.convertToFlattenedRules(rules);
|
|
42
|
+
// Try to dedupe by className first — if the same class was already inserted, reuse it
|
|
43
|
+
// Only extract className if it looks like a generated tasty className (t + digits)
|
|
44
|
+
const preExtractedClass = this.extractClassName(rules);
|
|
45
|
+
const generatedClass = preExtractedClass && /^t\d+$/.test(preExtractedClass)
|
|
46
|
+
? preExtractedClass
|
|
47
|
+
: null;
|
|
48
|
+
if (generatedClass && registry.rules.has(generatedClass)) {
|
|
49
|
+
const currentRefCount = registry.refCounts.get(generatedClass) || 0;
|
|
50
|
+
registry.refCounts.set(generatedClass, currentRefCount + 1);
|
|
51
|
+
// Update metrics
|
|
52
|
+
if (registry.metrics) {
|
|
53
|
+
registry.metrics.hits++;
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
className: generatedClass,
|
|
57
|
+
dispose: () => this.dispose(generatedClass, registry),
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
// Try to restore from disposed cache if className exists but is not active
|
|
61
|
+
if (generatedClass && !registry.rules.has(generatedClass)) {
|
|
62
|
+
const restored = this.sheetManager.restoreFromDisposedCache(registry, generatedClass);
|
|
63
|
+
if (restored) {
|
|
64
|
+
const currentRefCount = registry.refCounts.get(generatedClass) || 0;
|
|
65
|
+
registry.refCounts.set(generatedClass, currentRefCount + 1);
|
|
66
|
+
return {
|
|
67
|
+
className: generatedClass,
|
|
68
|
+
dispose: () => this.dispose(generatedClass, registry),
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// No active cache dedupe — rely on provided className or disposed cache only
|
|
73
|
+
// Generate final className - only use extracted className if it's a generated tasty className
|
|
74
|
+
const className = generatedClass
|
|
75
|
+
? generatedClass
|
|
76
|
+
: generateClassName(registry.classCounter++);
|
|
77
|
+
// If a different pre-extracted class was used in rules, rewrite selectors to the final class
|
|
78
|
+
const rulesToInsert = generatedClass && generatedClass !== className
|
|
79
|
+
? flattenedRules.map((r) => {
|
|
80
|
+
if (r.selector.startsWith('.' + generatedClass)) {
|
|
81
|
+
return {
|
|
82
|
+
...r,
|
|
83
|
+
selector: '.' + className + r.selector.slice(generatedClass.length + 1),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return r;
|
|
87
|
+
})
|
|
88
|
+
: flattenedRules;
|
|
89
|
+
// Insert rules using existing sheet manager
|
|
90
|
+
const ruleInfo = this.sheetManager.insertRule(registry, rulesToInsert, className, root);
|
|
91
|
+
if (!ruleInfo) {
|
|
92
|
+
// Update metrics
|
|
93
|
+
if (registry.metrics) {
|
|
94
|
+
registry.metrics.misses++;
|
|
95
|
+
}
|
|
96
|
+
return {
|
|
97
|
+
className,
|
|
98
|
+
dispose: () => { },
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
// Store in registry
|
|
102
|
+
registry.refCounts.set(className, 1);
|
|
103
|
+
registry.rules.set(className, ruleInfo);
|
|
104
|
+
// Update metrics
|
|
105
|
+
if (registry.metrics) {
|
|
106
|
+
registry.metrics.totalInsertions++;
|
|
107
|
+
registry.metrics.misses++;
|
|
108
|
+
}
|
|
109
|
+
return {
|
|
110
|
+
className,
|
|
111
|
+
dispose: () => this.dispose(className, registry),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Convert StyleResult to FlattenedRule format
|
|
116
|
+
*/
|
|
117
|
+
convertToFlattenedRules(rules) {
|
|
118
|
+
return rules.map((rule) => ({
|
|
119
|
+
selector: rule.selector,
|
|
120
|
+
declarations: rule.declarations,
|
|
121
|
+
atRules: rule.atRules,
|
|
122
|
+
}));
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Extract className from rules (assumes first rule contains the base className)
|
|
126
|
+
*/
|
|
127
|
+
extractClassName(rules) {
|
|
128
|
+
for (const rule of rules) {
|
|
129
|
+
const match = rule.selector.match(/^\.([a-zA-Z0-9_-]+)/);
|
|
130
|
+
if (match) {
|
|
131
|
+
return match[1];
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Generate cache key from flattened rules with optimized deduplication
|
|
138
|
+
*/
|
|
139
|
+
generateCacheKey(rules) {
|
|
140
|
+
const normalizeSelector = (selector) => {
|
|
141
|
+
const match = selector.match(/^\.[a-zA-Z0-9_-]+(.*)$/);
|
|
142
|
+
return match ? match[1] : selector;
|
|
143
|
+
};
|
|
144
|
+
// Sort rules to ensure consistent cache keys for equivalent rule sets
|
|
145
|
+
const sortedRules = [...rules].sort((a, b) => {
|
|
146
|
+
const aKey = `${normalizeSelector(a.selector)}${a.atRules ? a.atRules.join('|') : ''}`;
|
|
147
|
+
const bKey = `${normalizeSelector(b.selector)}${b.atRules ? b.atRules.join('|') : ''}`;
|
|
148
|
+
return aKey.localeCompare(bKey);
|
|
149
|
+
});
|
|
150
|
+
return sortedRules
|
|
151
|
+
.map((rule) => {
|
|
152
|
+
const at = rule.atRules && rule.atRules.length
|
|
153
|
+
? `@${rule.atRules.join('|')}`
|
|
154
|
+
: '';
|
|
155
|
+
const sel = normalizeSelector(rule.selector);
|
|
156
|
+
// Normalize declarations by sorting properties for consistent caching
|
|
157
|
+
const normalizedDeclarations = rule.declarations
|
|
158
|
+
.split(';')
|
|
159
|
+
.filter(Boolean)
|
|
160
|
+
.map((decl) => decl.trim())
|
|
161
|
+
.sort()
|
|
162
|
+
.join(';');
|
|
163
|
+
return `${sel}{${normalizedDeclarations}}${at}`;
|
|
164
|
+
})
|
|
165
|
+
.join('');
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Dispose of a className
|
|
169
|
+
*/
|
|
170
|
+
dispose(className, registry) {
|
|
171
|
+
const currentRefCount = registry.refCounts.get(className) || 0;
|
|
172
|
+
if (currentRefCount <= 1) {
|
|
173
|
+
// Mark for deletion and schedule cleanup - but keep cache entries for disposal cache
|
|
174
|
+
registry.refCounts.set(className, 0);
|
|
175
|
+
registry.deletionQueue.push(className);
|
|
176
|
+
this.scheduleCleanup(registry);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
registry.refCounts.set(className, currentRefCount - 1);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Cleanup unused rules
|
|
184
|
+
*/
|
|
185
|
+
cleanup(root) {
|
|
186
|
+
const registry = this.sheetManager.getRegistry(root || document);
|
|
187
|
+
this.sheetManager.processCleanupQueue(registry);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Schedule cleanup to run in the next microtask
|
|
191
|
+
*/
|
|
192
|
+
scheduleCleanup(registry) {
|
|
193
|
+
if (this.cleanupScheduled)
|
|
194
|
+
return;
|
|
195
|
+
this.cleanupScheduled = true;
|
|
196
|
+
Promise.resolve().then(() => {
|
|
197
|
+
this.sheetManager.processCleanupQueue(registry);
|
|
198
|
+
this.cleanupScheduled = false;
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Inject global CSS rule
|
|
203
|
+
*/
|
|
204
|
+
injectGlobal(selector, cssText, options) {
|
|
205
|
+
const root = options?.root || document;
|
|
206
|
+
const registry = this.sheetManager.getRegistry(root);
|
|
207
|
+
if (!cssText || !selector) {
|
|
208
|
+
return () => { };
|
|
209
|
+
}
|
|
210
|
+
// Use a stable pseudo-className to track these global rules in the registry
|
|
211
|
+
const className = generateClassName(registry.classCounter++);
|
|
212
|
+
// Flatten nested CSS against the provided selector (handles &, .Class, SubElement, etc.)
|
|
213
|
+
const flattenedRules = flattenNestedCssForSelector(cssText, selector);
|
|
214
|
+
// Insert the rules as a block using the sheet manager, just like normal rules
|
|
215
|
+
const ruleInfo = this.sheetManager.insertGlobalRule(registry, flattenedRules, className, root);
|
|
216
|
+
if (!ruleInfo) {
|
|
217
|
+
return () => { };
|
|
218
|
+
}
|
|
219
|
+
// Track in registry for ref-counted disposal
|
|
220
|
+
registry.refCounts.set(className, 1);
|
|
221
|
+
registry.rules.set(className, ruleInfo);
|
|
222
|
+
return () => this.dispose(className, registry);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get CSS text from all sheets (for SSR)
|
|
226
|
+
*/
|
|
227
|
+
getCssText(options) {
|
|
228
|
+
const root = options?.root || document;
|
|
229
|
+
const registry = this.sheetManager.getRegistry(root);
|
|
230
|
+
return this.sheetManager.getCssText(registry);
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Get CSS only for the provided tasty classNames (e.g., ["t0","t3"])
|
|
234
|
+
*/
|
|
235
|
+
getCssTextForClasses(classNames, options) {
|
|
236
|
+
const root = options?.root || document;
|
|
237
|
+
const registry = this.sheetManager.getRegistry(root);
|
|
238
|
+
const cssChunks = [];
|
|
239
|
+
for (const cls of classNames) {
|
|
240
|
+
const info = registry.rules.get(cls) || registry.disposedCache.get(cls)?.ruleInfo;
|
|
241
|
+
if (info) {
|
|
242
|
+
if (info.cssText && info.cssText.length) {
|
|
243
|
+
cssChunks.push(...info.cssText);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
// Fallback: try to read from live sheet by index range
|
|
247
|
+
const sheet = registry.sheets[info.sheetIndex];
|
|
248
|
+
const styleSheet = sheet?.sheet?.sheet;
|
|
249
|
+
if (styleSheet) {
|
|
250
|
+
const start = Math.max(0, info.ruleIndex);
|
|
251
|
+
const end = Math.min(styleSheet.cssRules.length - 1, info.endRuleIndex ?? info.ruleIndex);
|
|
252
|
+
for (let i = start; i <= end; i++) {
|
|
253
|
+
const rule = styleSheet.cssRules[i];
|
|
254
|
+
if (rule)
|
|
255
|
+
cssChunks.push(rule.cssText);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return cssChunks.join('\n');
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get cache performance metrics
|
|
265
|
+
*/
|
|
266
|
+
getMetrics(options) {
|
|
267
|
+
const root = options?.root || document;
|
|
268
|
+
const registry = this.sheetManager.getRegistry(root);
|
|
269
|
+
return this.sheetManager.getMetrics(registry);
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* Reset cache performance metrics
|
|
273
|
+
*/
|
|
274
|
+
resetMetrics(options) {
|
|
275
|
+
const root = options?.root || document;
|
|
276
|
+
const registry = this.sheetManager.getRegistry(root);
|
|
277
|
+
this.sheetManager.resetMetrics(registry);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* Force cleanup of disposed rulesets (useful for memory pressure)
|
|
281
|
+
*/
|
|
282
|
+
forceCleanupDisposed(options) {
|
|
283
|
+
const root = options?.root || document;
|
|
284
|
+
const registry = this.sheetManager.getRegistry(root);
|
|
285
|
+
// Clear any scheduled cleanups and immediately clean those
|
|
286
|
+
for (const [className, timeoutId] of registry.cleanupTimeouts) {
|
|
287
|
+
if (this.config.idleCleanup &&
|
|
288
|
+
typeof cancelIdleCallback !== 'undefined') {
|
|
289
|
+
cancelIdleCallback(timeoutId);
|
|
290
|
+
}
|
|
291
|
+
else {
|
|
292
|
+
clearTimeout(timeoutId);
|
|
293
|
+
}
|
|
294
|
+
const disposedInfo = registry.disposedCache.get(className);
|
|
295
|
+
if (disposedInfo) {
|
|
296
|
+
this.sheetManager['performActualCleanup'](registry, className);
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
registry.cleanupTimeouts.clear();
|
|
300
|
+
// Also cleanup any remaining disposed entries that were not scheduled
|
|
301
|
+
const keys = Array.from(registry.disposedCache.keys());
|
|
302
|
+
for (const cls of keys) {
|
|
303
|
+
this.sheetManager['performActualCleanup'](registry, cls);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Destroy all resources for a root
|
|
308
|
+
*/
|
|
309
|
+
destroy(root) {
|
|
310
|
+
const targetRoot = root || document;
|
|
311
|
+
this.sheetManager.cleanup(targetRoot);
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
|