@cube-dev/ui-kit 0.0.0-canary-0f4773b → 0.0.0-canary-458bf0e
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 +2 -2
- package/es/components/actions/Action/Action.js +18 -14
- package/es/components/actions/Button/Button.js +1 -2
- 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 +8 -3
- 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 +4 -5
- 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 +2 -2
- 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 +2 -3
- 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 +2 -1
- package/es/tasty/index.js +1 -3
- package/es/tasty/parser/classify.js +1 -1
- package/es/tasty/parser/const.js +1 -1
- package/es/tasty/parser/lru.js +2 -38
- 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 +12 -8
- 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 +8 -6
- 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 +3 -1
- package/es/tasty/styles/preset.js +1 -1
- package/es/tasty/styles/radius.js +1 -1
- package/es/tasty/styles/reset.js +44 -40
- 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 +19 -92
- 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 +57 -789
- package/es/tasty/utils/responsive.js +1 -1
- package/es/tasty/utils/string.js +1 -1
- package/es/tasty/utils/styles.js +62 -3
- 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 +0 -1
- package/types/components/actions/Menu/styled.d.ts +702 -699
- package/types/components/actions/use-action.d.ts +1 -1
- package/types/components/content/List/SectionHeading.d.ts +234 -233
- package/types/components/fields/DatePicker/DatePickerElement.d.ts +234 -233
- package/types/tasty/index.d.ts +0 -2
- package/types/tasty/parser/lru.d.ts +1 -5
- package/types/tasty/styles/color.d.ts +1 -3
- package/types/tasty/styles/reset.d.ts +2 -1
- package/types/tasty/types.d.ts +2 -0
- package/types/tasty/utils/renderStyles.d.ts +7 -25
- package/types/tasty/utils/styles.d.ts +9 -1
- package/es/tasty/debug.js +0 -282
- package/es/tasty/injector/flatten.js +0 -350
- package/es/tasty/injector/index.js +0 -165
- package/es/tasty/injector/injector.js +0 -293
- package/es/tasty/injector/sheet-manager.js +0 -492
- package/es/tasty/injector/types.js +0 -10
- package/types/tasty/debug.d.ts +0 -69
- package/types/tasty/injector/flatten.d.ts +0 -16
- package/types/tasty/injector/index.d.ts +0 -64
- package/types/tasty/injector/injector.d.ts +0 -82
- package/types/tasty/injector/sheet-manager.d.ts +0 -78
- package/types/tasty/injector/types.d.ts +0 -68
|
@@ -1,492 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license MIT
|
|
3
|
-
* author: Cube Dev Team
|
|
4
|
-
* @cube-dev/ui-kit v0.0.0-canary-0f4773b
|
|
5
|
-
* Released under the MIT license.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
export class SheetManager {
|
|
9
|
-
rootRegistries = new WeakMap();
|
|
10
|
-
config;
|
|
11
|
-
constructor(config) {
|
|
12
|
-
this.config = config;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Get or create registry for a root (Document or ShadowRoot)
|
|
16
|
-
*/
|
|
17
|
-
getRegistry(root) {
|
|
18
|
-
let registry = this.rootRegistries.get(root);
|
|
19
|
-
if (!registry) {
|
|
20
|
-
const metrics = this.config.collectMetrics
|
|
21
|
-
? {
|
|
22
|
-
hits: 0,
|
|
23
|
-
misses: 0,
|
|
24
|
-
unusedHits: 0,
|
|
25
|
-
bulkCleanups: 0,
|
|
26
|
-
totalInsertions: 0,
|
|
27
|
-
totalUnused: 0,
|
|
28
|
-
stylesCleanedUp: 0,
|
|
29
|
-
startTime: Date.now(),
|
|
30
|
-
}
|
|
31
|
-
: undefined;
|
|
32
|
-
registry = {
|
|
33
|
-
sheets: [],
|
|
34
|
-
refCounts: new Map(),
|
|
35
|
-
rules: new Map(),
|
|
36
|
-
unusedRules: new Map(),
|
|
37
|
-
ruleTextSet: new Set(),
|
|
38
|
-
bulkCleanupTimeout: null,
|
|
39
|
-
metrics,
|
|
40
|
-
classCounter: 0,
|
|
41
|
-
};
|
|
42
|
-
this.rootRegistries.set(root, registry);
|
|
43
|
-
}
|
|
44
|
-
return registry;
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Create a new stylesheet for the registry
|
|
48
|
-
*/
|
|
49
|
-
createSheet(registry, root) {
|
|
50
|
-
const sheet = this.createStyleElement(root);
|
|
51
|
-
const sheetInfo = {
|
|
52
|
-
sheet,
|
|
53
|
-
ruleCount: 0,
|
|
54
|
-
holes: [],
|
|
55
|
-
};
|
|
56
|
-
registry.sheets.push(sheetInfo);
|
|
57
|
-
return sheetInfo;
|
|
58
|
-
}
|
|
59
|
-
/**
|
|
60
|
-
* Create a style element and append to document
|
|
61
|
-
*/
|
|
62
|
-
createStyleElement(root) {
|
|
63
|
-
const style = root.createElement?.('style') ||
|
|
64
|
-
document.createElement('style');
|
|
65
|
-
if (this.config.nonce) {
|
|
66
|
-
style.nonce = this.config.nonce;
|
|
67
|
-
}
|
|
68
|
-
style.setAttribute('data-tasty', '');
|
|
69
|
-
// Append to head or shadow root
|
|
70
|
-
if ('head' in root && root.head) {
|
|
71
|
-
root.head.appendChild(style);
|
|
72
|
-
}
|
|
73
|
-
else if ('appendChild' in root) {
|
|
74
|
-
root.appendChild(style);
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
document.head.appendChild(style);
|
|
78
|
-
}
|
|
79
|
-
// Verify it was actually added - log only if there's a problem and we're not using forceTextInjection
|
|
80
|
-
if (!style.isConnected && !this.config.forceTextInjection) {
|
|
81
|
-
console.error('SheetManager: Style element failed to connect to DOM!', {
|
|
82
|
-
parentNode: style.parentNode?.nodeName,
|
|
83
|
-
isConnected: style.isConnected,
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
return style;
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Insert CSS rules as a single block
|
|
90
|
-
*/
|
|
91
|
-
insertRule(registry, flattenedRules, className, root) {
|
|
92
|
-
// Find or create a sheet with available space
|
|
93
|
-
let targetSheet = this.findAvailableSheet(registry, root);
|
|
94
|
-
if (!targetSheet) {
|
|
95
|
-
targetSheet = this.createSheet(registry, root);
|
|
96
|
-
}
|
|
97
|
-
const ruleIndex = this.findAvailableRuleIndex(targetSheet);
|
|
98
|
-
const sheetIndex = registry.sheets.indexOf(targetSheet);
|
|
99
|
-
try {
|
|
100
|
-
// Group rules by selector and at-rules to combine declarations
|
|
101
|
-
const groupedRules = [];
|
|
102
|
-
const groupMap = new Map();
|
|
103
|
-
const atKey = (at) => (at && at.length ? at.join('|') : '');
|
|
104
|
-
flattenedRules.forEach((r) => {
|
|
105
|
-
const key = `${atKey(r.atRules)}||${r.selector}`;
|
|
106
|
-
const existing = groupMap.get(key);
|
|
107
|
-
if (existing) {
|
|
108
|
-
// Append declarations, preserving order
|
|
109
|
-
existing.declarations = existing.declarations
|
|
110
|
-
? `${existing.declarations} ${r.declarations}`
|
|
111
|
-
: r.declarations;
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
groupMap.set(key, {
|
|
115
|
-
idx: groupedRules.length,
|
|
116
|
-
selector: r.selector,
|
|
117
|
-
atRules: r.atRules,
|
|
118
|
-
declarations: r.declarations,
|
|
119
|
-
});
|
|
120
|
-
groupedRules.push({ ...r });
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
// Normalize groupedRules from map (with merged declarations)
|
|
124
|
-
groupMap.forEach((val) => {
|
|
125
|
-
groupedRules[val.idx] = {
|
|
126
|
-
selector: val.selector,
|
|
127
|
-
atRules: val.atRules,
|
|
128
|
-
declarations: val.declarations,
|
|
129
|
-
};
|
|
130
|
-
});
|
|
131
|
-
// Insert grouped rules
|
|
132
|
-
const insertedRuleTexts = [];
|
|
133
|
-
let currentRuleIndex = ruleIndex;
|
|
134
|
-
let firstInsertedIndex = null;
|
|
135
|
-
let lastInsertedIndex = null;
|
|
136
|
-
for (const rule of groupedRules) {
|
|
137
|
-
const declarations = rule.declarations;
|
|
138
|
-
const baseRule = `${rule.selector} { ${declarations} }`;
|
|
139
|
-
// Wrap with at-rules if present
|
|
140
|
-
let fullRule = baseRule;
|
|
141
|
-
if (rule.atRules && rule.atRules.length > 0) {
|
|
142
|
-
fullRule = rule.atRules.reduce((css, atRule) => `${atRule} { ${css} }`, baseRule);
|
|
143
|
-
}
|
|
144
|
-
// Insert individual rule into style element
|
|
145
|
-
const styleElement = targetSheet.sheet;
|
|
146
|
-
const styleSheet = styleElement.sheet;
|
|
147
|
-
if (styleSheet && !this.config.forceTextInjection) {
|
|
148
|
-
const maxIndex = styleSheet.cssRules.length;
|
|
149
|
-
const safeIndex = Math.min(Math.max(0, currentRuleIndex), maxIndex);
|
|
150
|
-
styleSheet.insertRule(fullRule, safeIndex);
|
|
151
|
-
if (firstInsertedIndex == null)
|
|
152
|
-
firstInsertedIndex = safeIndex;
|
|
153
|
-
lastInsertedIndex = safeIndex;
|
|
154
|
-
currentRuleIndex = safeIndex + 1;
|
|
155
|
-
}
|
|
156
|
-
else {
|
|
157
|
-
// Use textContent (either as fallback or when forceTextInjection is enabled)
|
|
158
|
-
styleElement.textContent =
|
|
159
|
-
(styleElement.textContent || '') + '\n' + fullRule;
|
|
160
|
-
if (firstInsertedIndex == null)
|
|
161
|
-
firstInsertedIndex = currentRuleIndex;
|
|
162
|
-
lastInsertedIndex = currentRuleIndex;
|
|
163
|
-
currentRuleIndex++;
|
|
164
|
-
}
|
|
165
|
-
// CRITICAL DEBUG: Verify the style element is in DOM only if there are issues and we're not using forceTextInjection
|
|
166
|
-
if (!styleElement.parentNode && !this.config.forceTextInjection) {
|
|
167
|
-
console.error('SheetManager: Style element is NOT in DOM! This is the problem!', {
|
|
168
|
-
className,
|
|
169
|
-
ruleIndex: currentRuleIndex,
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
// Conditionally store cssText and track for debug
|
|
173
|
-
if (this.config.debugMode) {
|
|
174
|
-
insertedRuleTexts.push(fullRule);
|
|
175
|
-
try {
|
|
176
|
-
registry.ruleTextSet.add(fullRule);
|
|
177
|
-
}
|
|
178
|
-
catch (_) {
|
|
179
|
-
// noop: defensive in case ruleTextSet is unavailable
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
// currentRuleIndex already adjusted above
|
|
183
|
-
}
|
|
184
|
-
// Update sheet info based on the number of rules inserted
|
|
185
|
-
const finalRuleIndex = currentRuleIndex - 1;
|
|
186
|
-
if (finalRuleIndex >= targetSheet.ruleCount) {
|
|
187
|
-
targetSheet.ruleCount = finalRuleIndex + 1;
|
|
188
|
-
}
|
|
189
|
-
return {
|
|
190
|
-
className,
|
|
191
|
-
ruleIndex: firstInsertedIndex ?? ruleIndex,
|
|
192
|
-
sheetIndex,
|
|
193
|
-
cssText: this.config.debugMode ? insertedRuleTexts : [],
|
|
194
|
-
endRuleIndex: lastInsertedIndex ?? finalRuleIndex,
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
catch (error) {
|
|
198
|
-
console.warn('Failed to insert CSS rules:', error, {
|
|
199
|
-
flattenedRules,
|
|
200
|
-
className,
|
|
201
|
-
});
|
|
202
|
-
return null;
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
/**
|
|
206
|
-
* Insert global CSS rules
|
|
207
|
-
*/
|
|
208
|
-
insertGlobalRule(registry, flattenedRules, className, root) {
|
|
209
|
-
// For now, global rules are handled the same way as regular rules
|
|
210
|
-
return this.insertRule(registry, flattenedRules, className, root);
|
|
211
|
-
}
|
|
212
|
-
/**
|
|
213
|
-
* Delete a CSS rule from the sheet
|
|
214
|
-
*/
|
|
215
|
-
deleteRule(registry, ruleInfo) {
|
|
216
|
-
const sheet = registry.sheets[ruleInfo.sheetIndex];
|
|
217
|
-
if (!sheet) {
|
|
218
|
-
return;
|
|
219
|
-
}
|
|
220
|
-
try {
|
|
221
|
-
const texts = Array.isArray(ruleInfo.cssText)
|
|
222
|
-
? ruleInfo.cssText.slice()
|
|
223
|
-
: [];
|
|
224
|
-
const styleElement = sheet.sheet;
|
|
225
|
-
const styleSheet = styleElement.sheet;
|
|
226
|
-
if (styleSheet) {
|
|
227
|
-
const rules = styleSheet.cssRules;
|
|
228
|
-
// Prefer index-based deletion when possible
|
|
229
|
-
const startIdx = Math.max(0, ruleInfo.ruleIndex);
|
|
230
|
-
const endIdx = Math.min(rules.length - 1, Number.isFinite(ruleInfo.endRuleIndex)
|
|
231
|
-
? ruleInfo.endRuleIndex
|
|
232
|
-
: startIdx - 1);
|
|
233
|
-
if (Number.isFinite(startIdx) && endIdx >= startIdx) {
|
|
234
|
-
for (let idx = endIdx; idx >= startIdx; idx--) {
|
|
235
|
-
if (idx < 0 || idx >= styleSheet.cssRules.length)
|
|
236
|
-
continue;
|
|
237
|
-
styleSheet.deleteRule(idx);
|
|
238
|
-
}
|
|
239
|
-
sheet.ruleCount = Math.max(0, sheet.ruleCount - (endIdx - startIdx + 1));
|
|
240
|
-
}
|
|
241
|
-
else if (this.config.debugMode && texts.length) {
|
|
242
|
-
// Fallback: locate each rule by exact cssText and delete (debug mode only)
|
|
243
|
-
for (const text of texts) {
|
|
244
|
-
let idx = -1;
|
|
245
|
-
for (let i = styleSheet.cssRules.length - 1; i >= 0; i--) {
|
|
246
|
-
if (styleSheet.cssRules[i].cssText === text) {
|
|
247
|
-
idx = i;
|
|
248
|
-
break;
|
|
249
|
-
}
|
|
250
|
-
}
|
|
251
|
-
if (idx >= 0) {
|
|
252
|
-
styleSheet.deleteRule(idx);
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
sheet.ruleCount = Math.max(0, sheet.ruleCount - texts.length);
|
|
256
|
-
}
|
|
257
|
-
}
|
|
258
|
-
// Remove texts from validation set
|
|
259
|
-
if (this.config.debugMode) {
|
|
260
|
-
try {
|
|
261
|
-
for (const text of texts) {
|
|
262
|
-
registry.ruleTextSet.delete(text);
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
catch (_) {
|
|
266
|
-
// noop
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
catch (error) {
|
|
271
|
-
console.warn('Failed to delete CSS rule:', error);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
/**
|
|
275
|
-
* Find a sheet with available space or return null
|
|
276
|
-
*/
|
|
277
|
-
findAvailableSheet(registry, root) {
|
|
278
|
-
const maxRules = this.config.maxRulesPerSheet;
|
|
279
|
-
if (!maxRules) {
|
|
280
|
-
// No limit, use the last sheet if it exists
|
|
281
|
-
const lastSheet = registry.sheets[registry.sheets.length - 1];
|
|
282
|
-
return lastSheet || null;
|
|
283
|
-
}
|
|
284
|
-
// Find sheet with space
|
|
285
|
-
for (const sheet of registry.sheets) {
|
|
286
|
-
if (sheet.ruleCount < maxRules) {
|
|
287
|
-
return sheet;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
return null; // No available sheet found
|
|
291
|
-
}
|
|
292
|
-
/**
|
|
293
|
-
* Find an available rule index in the sheet
|
|
294
|
-
*/
|
|
295
|
-
findAvailableRuleIndex(sheet) {
|
|
296
|
-
// Always append to the end - CSS doesn't have holes
|
|
297
|
-
return sheet.ruleCount;
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* Mark a ruleset as unused but keep it in the stylesheet
|
|
301
|
-
*/
|
|
302
|
-
markAsUnused(registry, className) {
|
|
303
|
-
const ruleInfo = registry.rules.get(className);
|
|
304
|
-
if (!ruleInfo)
|
|
305
|
-
return;
|
|
306
|
-
// Mark as unused (but keep in registry.rules)
|
|
307
|
-
const unusedInfo = {
|
|
308
|
-
ruleInfo,
|
|
309
|
-
markedUnusedAt: Date.now(),
|
|
310
|
-
};
|
|
311
|
-
registry.unusedRules.set(className, unusedInfo);
|
|
312
|
-
registry.refCounts.delete(className);
|
|
313
|
-
// Update metrics
|
|
314
|
-
if (registry.metrics) {
|
|
315
|
-
registry.metrics.totalUnused++;
|
|
316
|
-
}
|
|
317
|
-
// Schedule bulk cleanup if threshold exceeded
|
|
318
|
-
const threshold = this.config.unusedStylesThreshold || 500;
|
|
319
|
-
if (registry.unusedRules.size >= threshold) {
|
|
320
|
-
this.scheduleBulkCleanup(registry);
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
/**
|
|
324
|
-
* Restore a ruleset from unused styles
|
|
325
|
-
*/
|
|
326
|
-
restoreFromUnused(registry, className) {
|
|
327
|
-
const unusedInfo = registry.unusedRules.get(className);
|
|
328
|
-
if (!unusedInfo)
|
|
329
|
-
return null;
|
|
330
|
-
// Remove from unused rules (rules stays in registry.rules)
|
|
331
|
-
registry.unusedRules.delete(className);
|
|
332
|
-
registry.refCounts.set(className, 1);
|
|
333
|
-
// Update metrics
|
|
334
|
-
if (registry.metrics) {
|
|
335
|
-
registry.metrics.unusedHits++;
|
|
336
|
-
}
|
|
337
|
-
return unusedInfo.ruleInfo;
|
|
338
|
-
}
|
|
339
|
-
/**
|
|
340
|
-
* Schedule bulk cleanup of all unused styles
|
|
341
|
-
*/
|
|
342
|
-
scheduleBulkCleanup(registry) {
|
|
343
|
-
// Don't schedule if already scheduled
|
|
344
|
-
if (registry.bulkCleanupTimeout)
|
|
345
|
-
return;
|
|
346
|
-
const performCleanup = () => {
|
|
347
|
-
this.performBulkCleanup(registry);
|
|
348
|
-
registry.bulkCleanupTimeout = null;
|
|
349
|
-
};
|
|
350
|
-
if (this.config.idleCleanup && typeof requestIdleCallback !== 'undefined') {
|
|
351
|
-
registry.bulkCleanupTimeout = requestIdleCallback(performCleanup);
|
|
352
|
-
}
|
|
353
|
-
else {
|
|
354
|
-
const delay = this.config.bulkCleanupDelay || 5000;
|
|
355
|
-
registry.bulkCleanupTimeout = setTimeout(performCleanup, delay);
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
/**
|
|
359
|
-
* Perform bulk cleanup of all unused styles
|
|
360
|
-
*/
|
|
361
|
-
performBulkCleanup(registry) {
|
|
362
|
-
if (registry.unusedRules.size === 0)
|
|
363
|
-
return;
|
|
364
|
-
const classNamesToCleanup = Array.from(registry.unusedRules.keys());
|
|
365
|
-
let cleanedUpCount = 0;
|
|
366
|
-
// Group by sheet for efficient deletion
|
|
367
|
-
const rulesBySheet = new Map();
|
|
368
|
-
for (const className of classNamesToCleanup) {
|
|
369
|
-
const unusedInfo = registry.unusedRules.get(className);
|
|
370
|
-
if (!unusedInfo)
|
|
371
|
-
continue;
|
|
372
|
-
const sheetIndex = unusedInfo.ruleInfo.sheetIndex;
|
|
373
|
-
if (!rulesBySheet.has(sheetIndex)) {
|
|
374
|
-
rulesBySheet.set(sheetIndex, []);
|
|
375
|
-
}
|
|
376
|
-
rulesBySheet
|
|
377
|
-
.get(sheetIndex)
|
|
378
|
-
.push({ className, ruleInfo: unusedInfo.ruleInfo });
|
|
379
|
-
}
|
|
380
|
-
// Delete rules from each sheet (in reverse order to preserve indices)
|
|
381
|
-
for (const [sheetIndex, rulesInSheet] of rulesBySheet) {
|
|
382
|
-
// Sort by rule index in descending order for safe deletion
|
|
383
|
-
rulesInSheet.sort((a, b) => b.ruleInfo.ruleIndex - a.ruleInfo.ruleIndex);
|
|
384
|
-
for (const { className, ruleInfo } of rulesInSheet) {
|
|
385
|
-
this.deleteRule(registry, ruleInfo);
|
|
386
|
-
registry.rules.delete(className);
|
|
387
|
-
registry.unusedRules.delete(className);
|
|
388
|
-
cleanedUpCount++;
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
// Update metrics
|
|
392
|
-
if (registry.metrics) {
|
|
393
|
-
registry.metrics.bulkCleanups++;
|
|
394
|
-
registry.metrics.stylesCleanedUp += cleanedUpCount;
|
|
395
|
-
}
|
|
396
|
-
}
|
|
397
|
-
/**
|
|
398
|
-
* Process the deletion queue for cleanup
|
|
399
|
-
*/
|
|
400
|
-
processCleanupQueue(registry) {
|
|
401
|
-
// This method is kept for compatibility but the logic has changed
|
|
402
|
-
// We no longer use a deletion queue, instead marking styles as unused immediately
|
|
403
|
-
}
|
|
404
|
-
/**
|
|
405
|
-
* Get total number of rules across all sheets
|
|
406
|
-
*/
|
|
407
|
-
getTotalRuleCount(registry) {
|
|
408
|
-
return registry.sheets.reduce((total, sheet) => total + sheet.ruleCount - sheet.holes.length, 0);
|
|
409
|
-
}
|
|
410
|
-
/**
|
|
411
|
-
* Get CSS text from all sheets (for SSR)
|
|
412
|
-
*/
|
|
413
|
-
getCssText(registry) {
|
|
414
|
-
const cssChunks = [];
|
|
415
|
-
for (const sheet of registry.sheets) {
|
|
416
|
-
try {
|
|
417
|
-
const styleElement = sheet.sheet;
|
|
418
|
-
if (styleElement.textContent) {
|
|
419
|
-
cssChunks.push(styleElement.textContent);
|
|
420
|
-
}
|
|
421
|
-
else if (styleElement.sheet) {
|
|
422
|
-
const rules = Array.from(styleElement.sheet.cssRules);
|
|
423
|
-
cssChunks.push(rules.map((rule) => rule.cssText).join('\n'));
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
catch (error) {
|
|
427
|
-
console.warn('Failed to read CSS from sheet:', error);
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
return cssChunks.join('\n');
|
|
431
|
-
}
|
|
432
|
-
/**
|
|
433
|
-
* Get cache performance metrics
|
|
434
|
-
*/
|
|
435
|
-
getMetrics(registry) {
|
|
436
|
-
return registry.metrics || null;
|
|
437
|
-
}
|
|
438
|
-
/**
|
|
439
|
-
* Reset cache performance metrics
|
|
440
|
-
*/
|
|
441
|
-
resetMetrics(registry) {
|
|
442
|
-
if (registry.metrics) {
|
|
443
|
-
registry.metrics = {
|
|
444
|
-
hits: 0,
|
|
445
|
-
misses: 0,
|
|
446
|
-
unusedHits: 0,
|
|
447
|
-
bulkCleanups: 0,
|
|
448
|
-
totalInsertions: 0,
|
|
449
|
-
totalUnused: 0,
|
|
450
|
-
stylesCleanedUp: 0,
|
|
451
|
-
startTime: Date.now(),
|
|
452
|
-
};
|
|
453
|
-
}
|
|
454
|
-
}
|
|
455
|
-
/**
|
|
456
|
-
* Clean up resources for a root
|
|
457
|
-
*/
|
|
458
|
-
cleanup(root) {
|
|
459
|
-
const registry = this.rootRegistries.get(root);
|
|
460
|
-
if (!registry) {
|
|
461
|
-
return;
|
|
462
|
-
}
|
|
463
|
-
// Cancel any scheduled bulk cleanup
|
|
464
|
-
if (registry.bulkCleanupTimeout) {
|
|
465
|
-
if (this.config.idleCleanup &&
|
|
466
|
-
typeof cancelIdleCallback !== 'undefined') {
|
|
467
|
-
cancelIdleCallback(registry.bulkCleanupTimeout);
|
|
468
|
-
}
|
|
469
|
-
else {
|
|
470
|
-
clearTimeout(registry.bulkCleanupTimeout);
|
|
471
|
-
}
|
|
472
|
-
registry.bulkCleanupTimeout = null;
|
|
473
|
-
}
|
|
474
|
-
// Remove all sheets
|
|
475
|
-
for (const sheet of registry.sheets) {
|
|
476
|
-
try {
|
|
477
|
-
// Remove style element
|
|
478
|
-
const styleElement = sheet.sheet;
|
|
479
|
-
if (styleElement.parentNode) {
|
|
480
|
-
styleElement.parentNode.removeChild(styleElement);
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
catch (error) {
|
|
484
|
-
console.warn('Failed to cleanup sheet:', error);
|
|
485
|
-
}
|
|
486
|
-
}
|
|
487
|
-
// Clear registry
|
|
488
|
-
this.rootRegistries.delete(root);
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
|
|
492
|
-
|
package/types/tasty/debug.d.ts
DELETED
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Debug utilities for inspecting tasty-generated CSS at runtime
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Debug utilities for inspecting tasty styles in runtime applications
|
|
6
|
-
*/
|
|
7
|
-
export declare const tastyDebug: {
|
|
8
|
-
/**
|
|
9
|
-
* Get CSS for a specific tasty class (e.g., 't24')
|
|
10
|
-
*/
|
|
11
|
-
getCSSForClass(className: string): string;
|
|
12
|
-
/**
|
|
13
|
-
* Get CSS for multiple tasty classes
|
|
14
|
-
*/
|
|
15
|
-
getCSSForClasses(classNames: string[]): string;
|
|
16
|
-
/**
|
|
17
|
-
* Log CSS for a specific tasty class (e.g., 't24') to console
|
|
18
|
-
*/
|
|
19
|
-
logCSSForClass(className: string): void;
|
|
20
|
-
/**
|
|
21
|
-
* Log CSS for multiple tasty classes to console
|
|
22
|
-
*/
|
|
23
|
-
logCSSForClasses(classNames: string[]): void;
|
|
24
|
-
/**
|
|
25
|
-
* Inspect an element by CSS selector and get its tasty CSS
|
|
26
|
-
*/
|
|
27
|
-
inspectElement(selector: string): string;
|
|
28
|
-
/**
|
|
29
|
-
* Inspect a DOM element directly and get its tasty CSS
|
|
30
|
-
*/
|
|
31
|
-
inspectDOMElement(element: Element): string;
|
|
32
|
-
/**
|
|
33
|
-
* Get all tasty CSS currently injected into the page
|
|
34
|
-
*/
|
|
35
|
-
getAllCSS(): string;
|
|
36
|
-
/**
|
|
37
|
-
* Find all tasty classes used in the page
|
|
38
|
-
*/
|
|
39
|
-
findAllTastyClasses(): string[];
|
|
40
|
-
/**
|
|
41
|
-
* Get a summary of all tasty styles in use
|
|
42
|
-
*/
|
|
43
|
-
getSummary(): {
|
|
44
|
-
totalClasses: number;
|
|
45
|
-
classes: string[];
|
|
46
|
-
totalCSSSize: number;
|
|
47
|
-
allCSS: string;
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Helper to log CSS in a readable format
|
|
51
|
-
*/
|
|
52
|
-
logCSS(css: string, title?: string): void;
|
|
53
|
-
/**
|
|
54
|
-
* Advanced inspection with detailed breakdown
|
|
55
|
-
*/
|
|
56
|
-
inspect(target: string | Element): {
|
|
57
|
-
element: Element | null;
|
|
58
|
-
tastyClasses: string[];
|
|
59
|
-
css: string;
|
|
60
|
-
breakdown: {
|
|
61
|
-
[className: string]: string;
|
|
62
|
-
};
|
|
63
|
-
};
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* Install tastyDebug on window object for easy access in browser console
|
|
67
|
-
* Only in non-production environments
|
|
68
|
-
*/
|
|
69
|
-
export declare function installGlobalDebug(): void;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { FlattenedRule } from './types';
|
|
2
|
-
/**
|
|
3
|
-
* Parse and flatten nested CSS
|
|
4
|
-
* Handles &, .Class, SubElement patterns from renderStyles output
|
|
5
|
-
* Preserves at-rule context (media queries, supports, etc.)
|
|
6
|
-
*/
|
|
7
|
-
export declare function flattenNestedCss(cssText: string, baseClassName: string, atRuleStack?: string[]): FlattenedRule[];
|
|
8
|
-
/**
|
|
9
|
-
* Flatten nested CSS for a concrete selector (global styles).
|
|
10
|
-
* Unlike the className-based variant, this preserves the provided selector string as-is.
|
|
11
|
-
*/
|
|
12
|
-
export declare function flattenNestedCssForSelector(cssText: string, baseSelector: string, atRuleStack?: string[]): FlattenedRule[];
|
|
13
|
-
/**
|
|
14
|
-
* Wrap a CSS rule with at-rules (media queries, supports, etc.)
|
|
15
|
-
*/
|
|
16
|
-
export declare function wrapWithAtRules(rule: string, atRules?: string[]): string;
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { StyleResult } from '../utils/renderStyles';
|
|
2
|
-
import { StyleInjector } from './injector';
|
|
3
|
-
import { DisposeFunction, InjectResult, StyleInjectorConfig } from './types';
|
|
4
|
-
declare const GLOBAL_INJECTOR_KEY = "__TASTY_GLOBAL_INJECTOR__";
|
|
5
|
-
declare global {
|
|
6
|
-
interface Window {
|
|
7
|
-
[GLOBAL_INJECTOR_KEY]?: StyleInjector;
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Configure the global style injector
|
|
12
|
-
*/
|
|
13
|
-
export declare function configure(config?: Partial<StyleInjectorConfig>): void;
|
|
14
|
-
/**
|
|
15
|
-
* Inject styles and return className with dispose function
|
|
16
|
-
*/
|
|
17
|
-
export declare function inject(rules: StyleResult[], options?: {
|
|
18
|
-
root?: Document | ShadowRoot;
|
|
19
|
-
}): InjectResult;
|
|
20
|
-
/**
|
|
21
|
-
* Inject global CSS rule (legacy method - not supported in direct injector)
|
|
22
|
-
*/
|
|
23
|
-
export declare function injectGlobal(selector: string, cssText: string, options?: {
|
|
24
|
-
root?: Document | ShadowRoot;
|
|
25
|
-
}): DisposeFunction;
|
|
26
|
-
/**
|
|
27
|
-
* Get CSS text from all sheets (for SSR)
|
|
28
|
-
*/
|
|
29
|
-
export declare function getCssText(options?: {
|
|
30
|
-
root?: Document | ShadowRoot;
|
|
31
|
-
}): string;
|
|
32
|
-
/**
|
|
33
|
-
* Collect only CSS used by a rendered subtree (like jest-styled-components).
|
|
34
|
-
* Pass the container returned by render(...).
|
|
35
|
-
*/
|
|
36
|
-
export declare function getCssTextForNode(node: ParentNode | Element | DocumentFragment, options?: {
|
|
37
|
-
root?: Document | ShadowRoot;
|
|
38
|
-
}): string;
|
|
39
|
-
/**
|
|
40
|
-
* Force cleanup of unused rules
|
|
41
|
-
*/
|
|
42
|
-
export declare function cleanup(root?: Document | ShadowRoot): void;
|
|
43
|
-
/**
|
|
44
|
-
* Check if we're currently running in a test environment
|
|
45
|
-
*/
|
|
46
|
-
export declare function getIsTestEnvironment(): boolean;
|
|
47
|
-
/**
|
|
48
|
-
* Get the global injector instance for debugging
|
|
49
|
-
*/
|
|
50
|
-
export declare const injector: {
|
|
51
|
-
readonly instance: StyleInjector;
|
|
52
|
-
};
|
|
53
|
-
/**
|
|
54
|
-
* Destroy all resources and clean up
|
|
55
|
-
*/
|
|
56
|
-
export declare function destroy(root?: Document | ShadowRoot): void;
|
|
57
|
-
/**
|
|
58
|
-
* Create a new isolated injector instance
|
|
59
|
-
*/
|
|
60
|
-
export declare function createInjector(config?: Partial<StyleInjectorConfig>): StyleInjector;
|
|
61
|
-
export type { StyleInjectorConfig, InjectResult, DisposeFunction, RuleInfo, SheetInfo, RootRegistry, FlattenedRule, KeyframesInfo, UnusedRuleInfo, CacheMetrics, } from './types';
|
|
62
|
-
export { StyleInjector } from './injector';
|
|
63
|
-
export { SheetManager } from './sheet-manager';
|
|
64
|
-
export { flattenNestedCss } from './flatten';
|