@cube-dev/ui-kit 0.199.1 → 0.200.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/CHANGELOG.md +47 -0
- package/dist/_internal/hooks/use-debounced-value.js +1 -1
- package/dist/_internal/hooks/use-deprecation-warning.js +1 -1
- package/dist/_internal/hooks/use-event.js +1 -1
- package/dist/_internal/hooks/use-is-first-render.js +1 -1
- package/dist/_internal/hooks/use-sync-ref.js +1 -1
- package/dist/_internal/hooks/use-timer/timer.js +1 -1
- package/dist/_internal/hooks/use-timer/use-timer.js +1 -1
- package/dist/_internal/hooks/use-warn.js +1 -1
- package/dist/components/Block.js +1 -1
- package/dist/components/CollectionItem.js +1 -1
- package/dist/components/GlobalStyles.js +2 -2
- package/dist/components/GlobalStyles.js.map +1 -1
- package/dist/components/GridProvider.d.ts +6 -4
- package/dist/components/GridProvider.js +14 -9
- package/dist/components/GridProvider.js.map +1 -1
- package/dist/components/HiddenInput.js +1 -1
- package/dist/components/Root.js +17 -17
- package/dist/components/Root.js.map +1 -1
- package/dist/components/actions/Action/Action.js +1 -1
- package/dist/components/actions/Banner/Banner.js +1 -1
- package/dist/components/actions/Button/Button.js +7 -9
- package/dist/components/actions/Button/Button.js.map +1 -1
- package/dist/components/actions/ButtonGroup/ButtonGroup.js +1 -1
- package/dist/components/actions/ButtonSplit/ButtonSplit.js +1 -1
- package/dist/components/actions/ButtonSplit/context.js +1 -1
- package/dist/components/actions/CommandMenu/CommandMenu.js +1 -1
- package/dist/components/actions/CommandMenu/styled.js +1 -1
- package/dist/components/actions/ItemAction/ItemAction.js +7 -12
- package/dist/components/actions/ItemAction/ItemAction.js.map +1 -1
- package/dist/components/actions/ItemActionContext.js +1 -1
- package/dist/components/actions/ItemActionsWrapper.js +35 -37
- package/dist/components/actions/ItemActionsWrapper.js.map +1 -1
- package/dist/components/actions/ItemButton/ItemButton.js +1 -1
- package/dist/components/actions/Link/Link.js +1 -1
- package/dist/components/actions/Menu/Menu.js +1 -1
- package/dist/components/actions/Menu/MenuCollectionItem.js +1 -1
- package/dist/components/actions/Menu/MenuItem.js +1 -1
- package/dist/components/actions/Menu/MenuSection.js +1 -1
- package/dist/components/actions/Menu/MenuTrigger.js +116 -127
- package/dist/components/actions/Menu/MenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubMenuTrigger.js +4 -3
- package/dist/components/actions/Menu/SubMenuTrigger.js.map +1 -1
- package/dist/components/actions/Menu/SubmenuTriggerContext.js +1 -1
- package/dist/components/actions/Menu/context.js +1 -1
- package/dist/components/actions/Menu/styled.js +5 -4
- package/dist/components/actions/Menu/styled.js.map +1 -1
- package/dist/components/actions/actions-run.js +1 -1
- package/dist/components/actions/index.js +1 -1
- package/dist/components/actions/use-action.js +1 -1
- package/dist/components/actions/use-anchored-menu.js +1 -1
- package/dist/components/actions/use-context-menu.js +32 -23
- package/dist/components/actions/use-context-menu.js.map +1 -1
- package/dist/components/content/ActiveZone/ActiveZone.js +1 -1
- package/dist/components/content/Alert/Alert.js +1 -1
- package/dist/components/content/Alert/Alert.js.map +1 -1
- package/dist/components/content/Alert/use-alert.js +24 -27
- package/dist/components/content/Alert/use-alert.js.map +1 -1
- package/dist/components/content/Avatar/Avatar.js +1 -1
- package/dist/components/content/Badge/Badge.js +6 -2
- package/dist/components/content/Badge/Badge.js.map +1 -1
- package/dist/components/content/Card/Card.js +1 -1
- package/dist/components/content/Content.js +1 -1
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js +3 -3
- package/dist/components/content/CopyPasteBlock/CopyPasteBlock.js.map +1 -1
- package/dist/components/content/CopySnippet/CopySnippet.js +83 -87
- package/dist/components/content/CopySnippet/CopySnippet.js.map +1 -1
- package/dist/components/content/Disclosure/Disclosure.js +1 -1
- package/dist/components/content/Divider.js +1 -1
- package/dist/components/content/Footer.js +1 -1
- package/dist/components/content/Header.js +1 -1
- package/dist/components/content/HotKeys/HotKeys.js +1 -1
- package/dist/components/content/InfoBadge/InfoBadge.js +1 -1
- package/dist/components/content/InlineInput/InlineInput.js +6 -13
- package/dist/components/content/InlineInput/InlineInput.js.map +1 -1
- package/dist/components/content/Item/Item.js +18 -18
- package/dist/components/content/Item/Item.js.map +1 -1
- package/dist/components/content/Item/ItemWithNativeLinks.js +1 -1
- package/dist/components/content/ItemBadge/ItemBadge.js +1 -1
- package/dist/components/content/ItemCard/ItemCard.js +1 -1
- package/dist/components/content/Layout/GridLayout.js +1 -1
- package/dist/components/content/Layout/Layout.js +10 -14
- package/dist/components/content/Layout/Layout.js.map +1 -1
- package/dist/components/content/Layout/LayoutBlock.js +1 -1
- package/dist/components/content/Layout/LayoutCenter.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js +1 -1
- package/dist/components/content/Layout/LayoutContainer.js.map +1 -1
- package/dist/components/content/Layout/LayoutContent.js +18 -16
- package/dist/components/content/Layout/LayoutContent.js.map +1 -1
- package/dist/components/content/Layout/LayoutContext.js +1 -1
- package/dist/components/content/Layout/LayoutFlex.js +1 -1
- package/dist/components/content/Layout/LayoutFooter.js +1 -1
- package/dist/components/content/Layout/LayoutGrid.js +1 -1
- package/dist/components/content/Layout/LayoutHeader.js +2 -2
- package/dist/components/content/Layout/LayoutHeader.js.map +1 -1
- package/dist/components/content/Layout/LayoutPane.js +35 -31
- package/dist/components/content/Layout/LayoutPane.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanel.js +31 -27
- package/dist/components/content/Layout/LayoutPanel.js.map +1 -1
- package/dist/components/content/Layout/LayoutPanelHeader.js +1 -1
- package/dist/components/content/Layout/LayoutPanelTransition.js +1 -1
- package/dist/components/content/Layout/LayoutToolbar.js +1 -1
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js +23 -25
- package/dist/components/content/Layout/hooks/useTinyScrollbar.js.map +1 -1
- package/dist/components/content/Layout/index.js +1 -1
- package/dist/components/content/Layout/utils.js +1 -1
- package/dist/components/content/Paragraph.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js +1 -1
- package/dist/components/content/Placeholder/Placeholder.js.map +1 -1
- package/dist/components/content/PrismCode/PrismCode.js +1 -1
- package/dist/components/content/PrismCode/PrismCode.js.map +1 -1
- package/dist/components/content/PrismCode/prismSetup.js +1 -1
- package/dist/components/content/PrismCode/prismSetup.js.map +1 -1
- package/dist/components/content/PrismDiffCode/PrismDiffCode.js +1 -1
- package/dist/components/content/Result/Result.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js +1 -1
- package/dist/components/content/Skeleton/Skeleton.js.map +1 -1
- package/dist/components/content/Tag/Tag.js +6 -2
- package/dist/components/content/Tag/Tag.js.map +1 -1
- package/dist/components/content/Text.js +1 -1
- package/dist/components/content/TextItem/TextItem.js +2 -5
- package/dist/components/content/TextItem/TextItem.js.map +1 -1
- package/dist/components/content/Title.js +1 -1
- package/dist/components/content/Tree/Tree.js +11 -21
- package/dist/components/content/Tree/Tree.js.map +1 -1
- package/dist/components/content/Tree/TreeNode.js +7 -7
- package/dist/components/content/Tree/TreeNode.js.map +1 -1
- package/dist/components/content/Tree/styled.js +31 -12
- package/dist/components/content/Tree/styled.js.map +1 -1
- package/dist/components/content/Tree/tree-index.js +1 -1
- package/dist/components/content/Tree/use-checkbox-tree.js +1 -1
- package/dist/components/content/Tree/use-load-data.js +1 -1
- package/dist/components/content/highlightText.js +1 -1
- package/dist/components/content/use-auto-tooltip.js +1 -1
- package/dist/components/data/DataTable/DataTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTable.js +1 -1
- package/dist/components/data/ItemTable/ItemTableBulkBar.js +1 -1
- package/dist/components/data/ItemTable/ItemTableDragPreview.js +1 -1
- package/dist/components/data/ItemTable/ItemTableFooter.js +1 -1
- package/dist/components/data/ItemTable/ItemTableToolbar.js +2 -2
- package/dist/components/data/ItemTable/ItemTableToolbar.js.map +1 -1
- package/dist/components/data/ItemTable/use-item-table-column-widths.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-drag-drop.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-pagination.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-selection.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-sort.js +1 -1
- package/dist/components/data/ItemTable/use-item-table-tree-model.js +1 -1
- package/dist/components/data/TableBase/ColumnResizer.js +1 -1
- package/dist/components/data/TableBase/RowCollection.js +1 -1
- package/dist/components/data/TableBase/TableHeaderCell.js +1 -1
- package/dist/components/data/TableBase/TableRow.js +1 -1
- package/dist/components/data/TableBase/TableRow.js.map +1 -1
- package/dist/components/data/TableBase/TableView.js +4 -7
- package/dist/components/data/TableBase/TableView.js.map +1 -1
- package/dist/components/data/TableBase/TreeGridTable.js +1 -1
- package/dist/components/data/TableBase/TreeGridTable.js.map +1 -1
- package/dist/components/data/TableBase/column-header.js +1 -1
- package/dist/components/data/TableBase/column-menu.js +1 -1
- package/dist/components/data/TableBase/column-styles.js +1 -1
- package/dist/components/data/TableBase/column-tint.js +1 -1
- package/dist/components/data/TableBase/row-menu.js +1 -1
- package/dist/components/data/TableBase/styled.js +36 -29
- package/dist/components/data/TableBase/styled.js.map +1 -1
- package/dist/components/data/TableBase/table-tree.js +1 -1
- package/dist/components/data/TableBase/types.js +1 -1
- package/dist/components/data/TableBase/use-cell-selection.js +0 -0
- package/dist/components/data/TableBase/use-column-menu.js +1 -1
- package/dist/components/data/TableBase/use-column-order.js +1 -1
- package/dist/components/data/TableBase/use-column-window.js +1 -1
- package/dist/components/data/TableBase/use-container-width.js +1 -1
- package/dist/components/data/TableBase/use-row-move-animation.js +1 -1
- package/dist/components/data/TableBase/use-scrollability.js +1 -1
- package/dist/components/data/TableBase/use-table-columns.js +1 -1
- package/dist/components/data/TableBase/use-table-search.js +1 -1
- package/dist/components/data/TableBase/use-table-selection.js +1 -1
- package/dist/components/data/TableBase/use-table-sort.js +1 -1
- package/dist/components/data/TableBase/use-table-sorts.js +1 -1
- package/dist/components/data/TableBase/use-table-storage.js +1 -1
- package/dist/components/data/TableBase/use-table-tooltip-refresh.js +1 -1
- package/dist/components/data/TableBase/use-table-tree-state.js +1 -1
- package/dist/components/fields/Checkbox/Checkbox.js +3 -3
- package/dist/components/fields/Checkbox/Checkbox.js.map +1 -1
- package/dist/components/fields/Checkbox/CheckboxGroup.js +1 -1
- package/dist/components/fields/Checkbox/context.js +1 -1
- package/dist/components/fields/ColorInput/ColorInput.js +1 -1
- package/dist/components/fields/ColorPicker/ColorPicker.js +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.d.ts +1 -1
- package/dist/components/fields/ColorSwatch/ColorSwatch.js +4 -4
- package/dist/components/fields/ColorSwatch/ColorSwatch.js.map +1 -1
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js +12 -15
- package/dist/components/fields/ColorSwatchGroup/ColorSwatchGroup.js.map +1 -1
- package/dist/components/fields/ComboBox/ComboBox.d.ts +1 -1
- package/dist/components/fields/ComboBox/ComboBox.js +174 -183
- package/dist/components/fields/ComboBox/ComboBox.js.map +1 -1
- package/dist/components/fields/ComboBox/comboBoxOptions.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.d.ts +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js +1 -1
- package/dist/components/fields/CommandTextArea/CommandTextArea.js.map +1 -1
- package/dist/components/fields/CommandTextArea/caretPosition.js +1 -1
- package/dist/components/fields/CommandTextArea/useCaretAnchor.js +1 -1
- package/dist/components/fields/DatePicker/DateInput.js +1 -1
- package/dist/components/fields/DatePicker/DateInputBase.js +5 -9
- package/dist/components/fields/DatePicker/DateInputBase.js.map +1 -1
- package/dist/components/fields/DatePicker/DatePicker.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerButton.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerElement.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerInput.js +1 -1
- package/dist/components/fields/DatePicker/DatePickerSegment.js +49 -39
- package/dist/components/fields/DatePicker/DatePickerSegment.js.map +1 -1
- package/dist/components/fields/DatePicker/DateRangePicker.js +1 -1
- package/dist/components/fields/DatePicker/DateRangeSeparatedPicker.js +1 -1
- package/dist/components/fields/DatePicker/MonthPicker.js +1 -1
- package/dist/components/fields/DatePicker/PeriodPicker.js +5 -3
- package/dist/components/fields/DatePicker/PeriodPicker.js.map +1 -1
- package/dist/components/fields/DatePicker/QuarterPicker.js +1 -1
- package/dist/components/fields/DatePicker/TimeInput.js +1 -1
- package/dist/components/fields/DatePicker/WeekPicker.js +1 -1
- package/dist/components/fields/DatePicker/YearPicker.js +1 -1
- package/dist/components/fields/DatePicker/parseDate.js +1 -1
- package/dist/components/fields/DatePicker/period.js +1 -1
- package/dist/components/fields/DatePicker/props.js +1 -1
- package/dist/components/fields/DatePicker/utils.js +1 -1
- package/dist/components/fields/FileInput/FileInput.js +2 -2
- package/dist/components/fields/FileInput/FileInput.js.map +1 -1
- package/dist/components/fields/FilterListBox/FilterListBox.js +6 -8
- package/dist/components/fields/FilterListBox/FilterListBox.js.map +1 -1
- package/dist/components/fields/FilterPicker/FilterPicker.js +2 -2
- package/dist/components/fields/FilterPicker/FilterPicker.js.map +1 -1
- package/dist/components/fields/Input/Input.js +1 -1
- package/dist/components/fields/ListBox/DraggableListBox.js +1 -1
- package/dist/components/fields/ListBox/ListBox.d.ts +1 -1
- package/dist/components/fields/ListBox/ListBox.js +49 -24
- package/dist/components/fields/ListBox/ListBox.js.map +1 -1
- package/dist/components/fields/ListBox/optionId.js +1 -1
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js +2 -2
- package/dist/components/fields/ListBoxPopover/ListBoxPopover.js.map +1 -1
- package/dist/components/fields/ListBoxPopover/listNavigation.js +1 -1
- package/dist/components/fields/ListBoxPopover/useCompositeFocus.js +1 -1
- package/dist/components/fields/NumberInput/NumberInput.js +1 -1
- package/dist/components/fields/NumberInput/StepButton.js +1 -1
- package/dist/components/fields/PasswordInput/PasswordInput.js +1 -1
- package/dist/components/fields/Picker/Picker.js +2 -2
- package/dist/components/fields/Picker/Picker.js.map +1 -1
- package/dist/components/fields/RadioGroup/Radio.js +91 -96
- package/dist/components/fields/RadioGroup/Radio.js.map +1 -1
- package/dist/components/fields/RadioGroup/RadioGroup.js +3 -3
- package/dist/components/fields/RadioGroup/RadioGroup.js.map +1 -1
- package/dist/components/fields/RadioGroup/context.js +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.d.ts +1 -1
- package/dist/components/fields/SearchComboBox/SearchComboBox.js +1 -2
- package/dist/components/fields/SearchComboBox/SearchComboBox.js.map +1 -1
- package/dist/components/fields/SearchInput/SearchInput.js +1 -1
- package/dist/components/fields/Select/Select.d.ts +1 -1
- package/dist/components/fields/Select/Select.js +4 -4
- package/dist/components/fields/Select/Select.js.map +1 -1
- package/dist/components/fields/Slider/Gradation.js +1 -1
- package/dist/components/fields/Slider/HueSlider.js +3 -3
- package/dist/components/fields/Slider/HueSlider.js.map +1 -1
- package/dist/components/fields/Slider/RangeSlider.js +1 -1
- package/dist/components/fields/Slider/Slider.js +1 -1
- package/dist/components/fields/Slider/SliderBase.js +4 -6
- package/dist/components/fields/Slider/SliderBase.js.map +1 -1
- package/dist/components/fields/Slider/SliderThumb.js +1 -1
- package/dist/components/fields/Slider/SliderTrack.js +5 -5
- package/dist/components/fields/Slider/SliderTrack.js.map +1 -1
- package/dist/components/fields/Slider/elements.js +7 -6
- package/dist/components/fields/Slider/elements.js.map +1 -1
- package/dist/components/fields/Slider/index.js +1 -1
- package/dist/components/fields/Switch/Switch.js +3 -3
- package/dist/components/fields/Switch/Switch.js.map +1 -1
- package/dist/components/fields/TagInput/TagInput.d.ts +1 -1
- package/dist/components/fields/TagInput/TagInput.js +1 -1
- package/dist/components/fields/TagInput/TagInput.js.map +1 -1
- package/dist/components/fields/TagInput/TagList.js +3 -3
- package/dist/components/fields/TagInput/TagList.js.map +1 -1
- package/dist/components/fields/TagInput/useActiveOption.js +1 -1
- package/dist/components/fields/TagInput/useTagError.js +1 -1
- package/dist/components/fields/TextArea/TextArea.js +1 -1
- package/dist/components/fields/TextInput/TextInput.js +1 -1
- package/dist/components/fields/TextInput/TextInputBase.js +3 -6
- package/dist/components/fields/TextInput/TextInputBase.js.map +1 -1
- package/dist/components/fields/TextInput/displayed-validation.js +1 -1
- package/dist/components/fields/TextInput/useAutoSizeTextArea.js +1 -1
- package/dist/components/fields/TextInputMapper/TextInputMapper.js +1 -1
- package/dist/components/fields/TriggerActions.js +1 -1
- package/dist/components/fields/color/ColorPanel.js +7 -7
- package/dist/components/fields/color/ColorPanel.js.map +1 -1
- package/dist/components/fields/color/channels.js +4 -4
- package/dist/components/fields/color/channels.js.map +1 -1
- package/dist/components/fields/color/color.js +1 -1
- package/dist/components/fields/color/context.js +1 -1
- package/dist/components/fields/option-origin-press.js +1 -1
- package/dist/components/form/FieldWrapper/FieldWrapper.js +1 -1
- package/dist/components/form/FieldWrapper/field-description.js +1 -1
- package/dist/components/form/Form/Field.js +1 -1
- package/dist/components/form/Form/Form.js +1 -1
- package/dist/components/form/Form/ModernFormRoot.js +1 -1
- package/dist/components/form/Form/ResetButton/ResetButton.js +1 -1
- package/dist/components/form/Form/SubmitButton/SubmitButton.js +1 -1
- package/dist/components/form/Form/SubmitError.js +1 -1
- package/dist/components/form/Form/backend.js +1 -1
- package/dist/components/form/Form/index.js +1 -1
- package/dist/components/form/Form/modern/actions.js +1 -1
- package/dist/components/form/Form/modern/context.js +1 -1
- package/dist/components/form/Form/modern/controller.js +1 -1
- package/dist/components/form/Form/modern/field-binding.js +1 -1
- package/dist/components/form/Form/modern/field.js +1 -1
- package/dist/components/form/Form/modern/react.js +1 -1
- package/dist/components/form/Form/modern/store.js +1 -1
- package/dist/components/form/Form/modern/validation.js +1 -1
- package/dist/components/form/Form/modern/values.js +1 -1
- package/dist/components/form/Form/reset-unbound-controls.js +1 -1
- package/dist/components/form/Form/use-field/use-field-binding.js +1 -1
- package/dist/components/form/Form/use-field/use-field-props.js +1 -1
- package/dist/components/form/Form/use-field/use-field.js +1 -1
- package/dist/components/form/Form/use-form.js +1 -1
- package/dist/components/form/Form/validation.js +1 -1
- package/dist/components/form/Label.js +11 -8
- package/dist/components/form/Label.js.map +1 -1
- package/dist/components/form/field-chrome.js +1 -1
- package/dist/components/form/legacy-tooltip.js +1 -1
- package/dist/components/form/validation/ValidationIndicator.js +1 -1
- package/dist/components/form/validation/resolve-validation-props.js +1 -1
- package/dist/components/form/validation/use-validation-props.js +1 -1
- package/dist/components/form/wrapper.js +1 -1
- package/dist/components/helpers/DisplayTransition/DisplayTransition.js +1 -1
- package/dist/components/helpers/IconSwitch/IconSwitch.js +1 -1
- package/dist/components/layout/Flex.js +1 -1
- package/dist/components/layout/Flow.js +1 -1
- package/dist/components/layout/Grid.js +1 -1
- package/dist/components/layout/Panel.js +13 -38
- package/dist/components/layout/Panel.js.map +1 -1
- package/dist/components/layout/Prefix.js +16 -22
- package/dist/components/layout/Prefix.js.map +1 -1
- package/dist/components/layout/ResizablePanel.js +30 -25
- package/dist/components/layout/ResizablePanel.js.map +1 -1
- package/dist/components/layout/Space.js +1 -1
- package/dist/components/layout/Suffix.js +16 -22
- package/dist/components/layout/Suffix.js.map +1 -1
- package/dist/components/navigation/Pagination/Pagination.js +2 -2
- package/dist/components/navigation/Pagination/Pagination.js.map +1 -1
- package/dist/components/navigation/Pagination/use-pagination.js +1 -1
- package/dist/components/navigation/Tabs/BoardDragActiveProvider.js +1 -1
- package/dist/components/navigation/Tabs/DraggableTabList.js +1 -1
- package/dist/components/navigation/Tabs/TabButton.js +2 -1
- package/dist/components/navigation/Tabs/TabButton.js.map +1 -1
- package/dist/components/navigation/Tabs/TabDropIndicator.js +1 -1
- package/dist/components/navigation/Tabs/TabPanel.js +2 -2
- package/dist/components/navigation/Tabs/TabPanel.js.map +1 -1
- package/dist/components/navigation/Tabs/TabPicker.js +62 -68
- package/dist/components/navigation/Tabs/TabPicker.js.map +1 -1
- package/dist/components/navigation/Tabs/Tabs.js +6 -9
- package/dist/components/navigation/Tabs/Tabs.js.map +1 -1
- package/dist/components/navigation/Tabs/TabsAction.js +1 -1
- package/dist/components/navigation/Tabs/TabsContext.js +1 -1
- package/dist/components/navigation/Tabs/popover-placement.js +1 -1
- package/dist/components/navigation/Tabs/styled.js +20 -17
- package/dist/components/navigation/Tabs/styled.js.map +1 -1
- package/dist/components/navigation/Tabs/types.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-editing.js +1 -1
- package/dist/components/navigation/Tabs/use-tab-indicator.js +1 -1
- package/dist/components/organisms/StatsCard/StatsCard.js +1 -1
- package/dist/components/other/Calendar/Calendar.js +1 -1
- package/dist/components/other/Calendar/CalendarCell.js +6 -6
- package/dist/components/other/Calendar/CalendarCell.js.map +1 -1
- package/dist/components/other/Calendar/CalendarGrid.js +1 -1
- package/dist/components/other/Calendar/CalendarHeader.js +1 -1
- package/dist/components/other/Calendar/CalendarPanel.js +3 -3
- package/dist/components/other/Calendar/CalendarPanel.js.map +1 -1
- package/dist/components/other/Calendar/PeriodCalendar.js +1 -1
- package/dist/components/other/Calendar/PeriodGrid.js +6 -6
- package/dist/components/other/Calendar/PeriodGrid.js.map +1 -1
- package/dist/components/other/Calendar/RangeCalendar.js +1 -1
- package/dist/components/other/Calendar/styled.js +4 -4
- package/dist/components/other/Calendar/styled.js.map +1 -1
- package/dist/components/other/CubeLogo/CubeLogo.js +3 -4
- package/dist/components/other/CubeLogo/CubeLogo.js.map +1 -1
- package/dist/components/other/NoDataIcon/NoDataIcon.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialog.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogApiProvider.js +1 -1
- package/dist/components/overlays/AlertDialog/AlertDialogZone.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js +1 -1
- package/dist/components/overlays/Dialog/Dialog.js.map +1 -1
- package/dist/components/overlays/Dialog/DialogContainer.js +1 -1
- package/dist/components/overlays/Dialog/DialogForm.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js +1 -1
- package/dist/components/overlays/Dialog/DialogTrigger.js.map +1 -1
- package/dist/components/overlays/Dialog/ModernDialogForm.js +1 -1
- package/dist/components/overlays/Dialog/context.js +1 -1
- package/dist/components/overlays/Dialog/default-button-text.js +1 -1
- package/dist/components/overlays/Dialog/use-content-overflow.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-container.js +1 -1
- package/dist/components/overlays/Dialog/use-dialog-open-sync.js +1 -1
- package/dist/components/overlays/Dialog/use-retained-dialog-focus.js +1 -1
- package/dist/components/overlays/Modal/Modal.js +3 -3
- package/dist/components/overlays/Modal/Modal.js.map +1 -1
- package/dist/components/overlays/Modal/OpenTransitionContext.js +1 -1
- package/dist/components/overlays/Modal/Overlay.js +1 -1
- package/dist/components/overlays/Modal/Popover.js +1 -1
- package/dist/components/overlays/Modal/Popover.js.map +1 -1
- package/dist/components/overlays/Modal/Tray.js +5 -6
- package/dist/components/overlays/Modal/Tray.js.map +1 -1
- package/dist/components/overlays/Modal/Underlay.js +2 -2
- package/dist/components/overlays/Modal/Underlay.js.map +1 -1
- package/dist/components/overlays/Modal/modal-containment.js +1 -1
- package/dist/components/overlays/Notifications/Notification.js +1 -1
- package/dist/components/overlays/Notifications/NotificationAction.js +1 -1
- package/dist/components/overlays/Notifications/NotificationCard.js +1 -1
- package/dist/components/overlays/Notifications/NotificationContext.js +1 -1
- package/dist/components/overlays/Notifications/NotificationItem.js +1 -1
- package/dist/components/overlays/Notifications/OverlayContainer.js +28 -13
- package/dist/components/overlays/Notifications/OverlayContainer.js.map +1 -1
- package/dist/components/overlays/Notifications/OverlayProvider.js +1 -1
- package/dist/components/overlays/Notifications/PersistentNotificationsList.js +1 -1
- package/dist/components/overlays/Notifications/dismissed-storage.js +1 -1
- package/dist/components/overlays/Notifications/format-relative-time.js +1 -1
- package/dist/components/overlays/Notifications/index.js +1 -1
- package/dist/components/overlays/Notifications/use-notification-state.js +1 -1
- package/dist/components/overlays/Notifications/use-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-overlay-timers.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-notifications.js +1 -1
- package/dist/components/overlays/Notifications/use-persistent-state.js +1 -1
- package/dist/components/overlays/Notifications/use-toast-state.js +1 -1
- package/dist/components/overlays/Toast/ToastItem.js +1 -1
- package/dist/components/overlays/Toast/index.js +1 -1
- package/dist/components/overlays/Toast/useProgressToast.js +1 -1
- package/dist/components/overlays/Toast/useToast.js +1 -1
- package/dist/components/overlays/Tooltip/Tooltip.js +8 -6
- package/dist/components/overlays/Tooltip/Tooltip.js.map +1 -1
- package/dist/components/overlays/Tooltip/TooltipProvider.js +1 -1
- package/dist/components/overlays/Tooltip/TooltipTrigger.js +1 -1
- package/dist/components/overlays/Tooltip/context.js +1 -1
- package/dist/components/overlays/Tooltip/split-trigger-props.js +1 -1
- package/dist/components/portal/Portal.js +1 -1
- package/dist/components/portal/PortalProvider.js +1 -1
- package/dist/components/portal/usePortal.js +1 -1
- package/dist/components/shared/DraggableCollection.js +1 -1
- package/dist/components/shared/InvalidIcon.js +1 -1
- package/dist/components/shared/ValidIcon.js +1 -1
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js +58 -57
- package/dist/components/status/LoadingAnimation/LoadingAnimation.js.map +1 -1
- package/dist/components/status/Spin/Cube.js +1 -1
- package/dist/components/status/Spin/Cube.js.map +1 -1
- package/dist/components/status/Spin/InternalSpinner.js +1 -1
- package/dist/components/status/Spin/Spin.js +1 -1
- package/dist/components/status/Spin/SpinsContainer.js +1 -1
- package/dist/data/item-themes.js +153 -188
- package/dist/data/item-themes.js.map +1 -1
- package/dist/data/themes.js +1 -1
- package/dist/eslint-plugin/defaults.generated.js +2 -2
- package/dist/eslint-plugin/defaults.generated.js.map +1 -1
- package/dist/eslint-plugin/index.js +1 -1
- package/dist/eslint-plugin/rules/no-redundant-default-prop.js +1 -1
- package/dist/i18n/I18nProvider.js +1 -1
- package/dist/i18n/createFormatter.js +1 -1
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/instance.js +1 -1
- package/dist/i18n/locales/de-DE/uikit.js +1 -1
- package/dist/i18n/locales/en-US/uikit.js +1 -1
- package/dist/i18n/locales/es-ES/uikit.js +1 -1
- package/dist/i18n/locales/es-MX/uikit.js +1 -1
- package/dist/i18n/locales/fr-FR/uikit.js +1 -1
- package/dist/i18n/locales/it-IT/uikit.js +1 -1
- package/dist/i18n/locales/ja-JP/uikit.js +1 -1
- package/dist/i18n/locales/nb-NO/uikit.js +1 -1
- package/dist/i18n/locales/pt-BR/uikit.js +1 -1
- package/dist/i18n/locales/pt-PT/uikit.js +1 -1
- package/dist/i18n/locales/sv-SE/uikit.js +1 -1
- package/dist/i18n/locales/vi-VN/uikit.js +1 -1
- package/dist/i18n/locales.js +1 -1
- package/dist/i18n/namespace.js +1 -1
- package/dist/i18n/useFormatter.js +1 -1
- package/dist/i18n/useI18n.js +1 -1
- package/dist/icons/AdjustmentsHorizontalIcon.js +1 -1
- package/dist/icons/AdjustmentsIcon.js +1 -1
- package/dist/icons/AiIcon.js +1 -1
- package/dist/icons/AreaChartIcon.js +1 -1
- package/dist/icons/ArrowNarrowDownIcon.js +1 -1
- package/dist/icons/ArrowNarrowUpIcon.js +1 -1
- package/dist/icons/BackwardIcon.js +1 -1
- package/dist/icons/BarChartIcon.js +1 -1
- package/dist/icons/BellFilledIcon.js +1 -1
- package/dist/icons/BellIcon.js +1 -1
- package/dist/icons/BooleanIcon.js +1 -1
- package/dist/icons/CalendarEditIcon.js +1 -1
- package/dist/icons/CalendarIcon.js +1 -1
- package/dist/icons/CaretDownIcon.js +1 -1
- package/dist/icons/CaretUpIcon.js +1 -1
- package/dist/icons/ChartAreaStackedIcon.js +1 -1
- package/dist/icons/ChartAreaStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBarGroupedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarGroupedIcon.js +1 -1
- package/dist/icons/ChartBarHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarLineIcon.js +1 -1
- package/dist/icons/ChartBarStackedHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageHorizontalIcon.js +1 -1
- package/dist/icons/ChartBarStackedPercentageIcon.js +1 -1
- package/dist/icons/ChartBoxPlot2Icon.js +1 -1
- package/dist/icons/ChartBoxPlotIcon.js +1 -1
- package/dist/icons/ChartBubbleIcon.js +1 -1
- package/dist/icons/ChartDonut2Icon.js +1 -1
- package/dist/icons/ChartFunnelIcon.js +1 -1
- package/dist/icons/ChartHeatmapIcon.js +1 -1
- package/dist/icons/ChartKPIIcon.js +1 -1
- package/dist/icons/ChartPie2Icon.js +1 -1
- package/dist/icons/ChartScatterIcon.js +1 -1
- package/dist/icons/CheckCircleFilledIcon.js +1 -1
- package/dist/icons/CheckCircleIcon.js +1 -1
- package/dist/icons/CheckIcon.js +1 -1
- package/dist/icons/CircleFilledIcon.js +1 -1
- package/dist/icons/ClearIcon.js +1 -1
- package/dist/icons/CloseCircleFilledIcon.js +1 -1
- package/dist/icons/CloseCircleIcon.js +1 -1
- package/dist/icons/CloseIcon.js +1 -1
- package/dist/icons/CodeIcon.js +1 -1
- package/dist/icons/ColumnTotalIcon.js +1 -1
- package/dist/icons/CopyIcon.js +1 -1
- package/dist/icons/CountIcon.js +1 -1
- package/dist/icons/CubeIcon.js +1 -1
- package/dist/icons/CubePauseIcon.js +1 -1
- package/dist/icons/CubePlayIcon.js +1 -1
- package/dist/icons/CurrencyDollarIcon.js +1 -1
- package/dist/icons/DangerIcon.js +1 -1
- package/dist/icons/DashboardIcon.js +1 -1
- package/dist/icons/DatabaseIcon.js +1 -1
- package/dist/icons/DecimalDecreaseIcon.js +1 -1
- package/dist/icons/DecimalIncreaseIcon.js +1 -1
- package/dist/icons/DirectionIcon.js +25 -22
- package/dist/icons/DirectionIcon.js.map +1 -1
- package/dist/icons/DonutIcon.js +1 -1
- package/dist/icons/DownIcon.js +1 -1
- package/dist/icons/EditIcon.js +1 -1
- package/dist/icons/ExclamationCircleFilledIcon.js +1 -1
- package/dist/icons/ExclamationCircleIcon.js +1 -1
- package/dist/icons/ExclamationIcon.js +1 -1
- package/dist/icons/EyeIcon.js +1 -1
- package/dist/icons/EyeInvisibleIcon.js +1 -1
- package/dist/icons/FilterIcon.js +1 -1
- package/dist/icons/FolderFilledIcon.js +1 -1
- package/dist/icons/FolderIcon.js +1 -1
- package/dist/icons/FolderOpenFilledIcon.js +1 -1
- package/dist/icons/FolderOpenIcon.js +1 -1
- package/dist/icons/ForwardIcon.js +1 -1
- package/dist/icons/GripVerticalIcon.js +1 -1
- package/dist/icons/HierarchyIcon.js +1 -1
- package/dist/icons/HierarchyOpenIcon.js +1 -1
- package/dist/icons/Icon.js +21 -38
- package/dist/icons/Icon.js.map +1 -1
- package/dist/icons/InfoCircleIcon.js +1 -1
- package/dist/icons/InfoIcon.js +1 -1
- package/dist/icons/KeyIcon.js +1 -1
- package/dist/icons/LeftIcon.js +1 -1
- package/dist/icons/LineChartIcon.js +1 -1
- package/dist/icons/LoadingIcon.js +1 -1
- package/dist/icons/LockFilledIcon.js +1 -1
- package/dist/icons/LockIcon.js +1 -1
- package/dist/icons/MoreIcon.js +1 -1
- package/dist/icons/NotAllowedIcon.js +1 -1
- package/dist/icons/Number123Icon.js +1 -1
- package/dist/icons/NumberIcon.js +1 -1
- package/dist/icons/PauseCircleFilledIcon.js +1 -1
- package/dist/icons/PauseCircleIcon.js +1 -1
- package/dist/icons/PauseIcon.js +1 -1
- package/dist/icons/PercentageIcon.js +1 -1
- package/dist/icons/PieChartIcon.js +1 -1
- package/dist/icons/PipetteIcon.js +1 -1
- package/dist/icons/PlayCircleIcon.js +7 -2
- package/dist/icons/PlayCircleIcon.js.map +1 -1
- package/dist/icons/PlayIcon.js +1 -1
- package/dist/icons/PlusIcon.js +1 -1
- package/dist/icons/ProgressBarIcon.js +1 -1
- package/dist/icons/ReloadIcon.js +1 -1
- package/dist/icons/ReportIcon.js +1 -1
- package/dist/icons/ReturnIcon.js +1 -1
- package/dist/icons/RightIcon.js +1 -1
- package/dist/icons/RowTotalsIcon.js +1 -1
- package/dist/icons/SchemeIcon.js +1 -1
- package/dist/icons/SearchIcon.js +1 -1
- package/dist/icons/SemanticQueryIcon.js +1 -1
- package/dist/icons/SettingsIcon.js +1 -1
- package/dist/icons/ShieldFilledIcon.js +1 -1
- package/dist/icons/ShieldIcon.js +1 -1
- package/dist/icons/SlashIcon.js +1 -1
- package/dist/icons/SparklesIcon.js +1 -1
- package/dist/icons/SqlIcon.js +1 -1
- package/dist/icons/StatsIcon.js +1 -1
- package/dist/icons/StopIcon.js +1 -1
- package/dist/icons/StringIcon.js +1 -1
- package/dist/icons/SubtotalsIcon.js +1 -1
- package/dist/icons/SwitchIcon.js +1 -1
- package/dist/icons/TableIcon.js +1 -1
- package/dist/icons/ThumbsDownIcon.js +1 -1
- package/dist/icons/ThumbsUpIcon.js +1 -1
- package/dist/icons/ThunderboltCrossedIcon.js +1 -1
- package/dist/icons/ThunderboltFilledIcon.js +1 -1
- package/dist/icons/ThunderboltIcon.js +1 -1
- package/dist/icons/TimeIcon.js +1 -1
- package/dist/icons/TrashIcon.js +1 -1
- package/dist/icons/UnlockIcon.js +1 -1
- package/dist/icons/UpIcon.js +1 -1
- package/dist/icons/UserGroupIcon.js +1 -1
- package/dist/icons/UserIcon.js +1 -1
- package/dist/icons/UserLockIcon.js +1 -1
- package/dist/icons/ViewIcon.js +1 -1
- package/dist/icons/WarningFilledIcon.js +1 -1
- package/dist/icons/WarningIcon.js +1 -1
- package/dist/icons/wrap-icon.js +1 -1
- package/dist/index.js +1 -1
- package/dist/probe/canonicalize.js +1 -1
- package/dist/probe/css.js +1 -1
- package/dist/probe/index.js +1 -1
- package/dist/provider.js +1 -1
- package/dist/providers/TrackingProvider.js +1 -1
- package/dist/providers/navigation-url.js +1 -1
- package/dist/providers/navigationAdapter.default.js +1 -1
- package/dist/providers/use-navigation.js +1 -1
- package/dist/tokens/all-tokens.js +1 -1
- package/dist/tokens/base.js +12 -2
- package/dist/tokens/base.js.map +1 -1
- package/dist/tokens/color-seed.js +1 -1
- package/dist/tokens/color-theme.js +1 -1
- package/dist/tokens/colors.js +4 -4
- package/dist/tokens/colors.js.map +1 -1
- package/dist/tokens/layout.js +1 -1
- package/dist/tokens/lazy-styles.js +1 -1
- package/dist/tokens/legacy-color.js +1 -1
- package/dist/tokens/palette-config.js +1 -1
- package/dist/tokens/palette.js +1 -1
- package/dist/tokens/palette.js.map +1 -1
- package/dist/tokens/resolve.js +1 -1
- package/dist/tokens/resolve.js.map +1 -1
- package/dist/tokens/shadows.d.ts +0 -1
- package/dist/tokens/shadows.js +2 -3
- package/dist/tokens/shadows.js.map +1 -1
- package/dist/tokens/sizes.js +1 -1
- package/dist/tokens/spacing.js +1 -1
- package/dist/tokens/typography.js +1 -1
- package/dist/utils/ResizeSensor.js +1 -1
- package/dist/utils/colors.js +1 -1
- package/dist/utils/dotize.js +1 -1
- package/dist/utils/is-dev-env.js +1 -1
- package/dist/utils/modules.js +1 -1
- package/dist/utils/promise.js +1 -1
- package/dist/utils/raf.js +1 -1
- package/dist/utils/random.js +1 -1
- package/dist/utils/range.js +1 -1
- package/dist/utils/react/RenderCache.js +1 -1
- package/dist/utils/react/Slots.js +1 -1
- package/dist/utils/react/chain.js +1 -1
- package/dist/utils/react/disabledProps.js +1 -1
- package/dist/utils/react/forwardRefWithGenerics.js +1 -1
- package/dist/utils/react/index.js +1 -1
- package/dist/utils/react/interactions.js +1 -1
- package/dist/utils/react/isTextOnly.js +1 -1
- package/dist/utils/react/mapProps.js +1 -1
- package/dist/utils/react/mergeProps.js +1 -1
- package/dist/utils/react/nullableValue.js +1 -1
- package/dist/utils/react/overlayKeyPropagation.js +1 -1
- package/dist/utils/react/programmaticFocus.js +1 -1
- package/dist/utils/react/resolveIcon.js +1 -1
- package/dist/utils/react/sharedStore.js +1 -1
- package/dist/utils/react/useBufferedValue.js +1 -1
- package/dist/utils/react/useCombinedRefs.js +1 -1
- package/dist/utils/react/useControlledFocusVisible.js +1 -1
- package/dist/utils/react/useEventBus.js +1 -1
- package/dist/utils/react/useId.js +1 -1
- package/dist/utils/react/useIsDarwin.js +1 -1
- package/dist/utils/react/useKeySymbols.js +1 -1
- package/dist/utils/react/useLayoutEffect.js +1 -1
- package/dist/utils/react/useLocalStorage.js +1 -1
- package/dist/utils/react/useMergeStyles.js +1 -1
- package/dist/utils/react/useOverlayEscapeGuard.js +1 -1
- package/dist/utils/react/usePopoverSync.js +1 -1
- package/dist/utils/react/useQaProps.js +1 -1
- package/dist/utils/react/useScheme.js +1 -1
- package/dist/utils/react/useViewportSize.js +1 -1
- package/dist/utils/react/wrapNodeIfPlain.js +1 -1
- package/dist/utils/selection.js +1 -1
- package/dist/utils/styles.js +1 -1
- package/dist/utils/tree.js +1 -1
- package/dist/utils/warnings.js +1 -1
- package/dist/version.js +3 -3
- package/docs/BaseProperties.md +2 -0
- package/docs/ComplexLayout.md +1 -1
- package/docs/Usage.md +47 -2
- package/docs/Utilities.md +5 -2
- package/docs/components/GridProvider.md +3 -3
- package/docs/components/content/HotKeys.md +2 -2
- package/docs/components/content/InlineInput.md +2 -2
- package/docs/components/content/Item.md +5 -5
- package/docs/components/content/Layout.md +8 -8
- package/docs/components/content/Text.md +1 -1
- package/docs/components/fields/ComboBox.md +1 -1
- package/docs/components/fields/CommandTextArea.md +1 -1
- package/docs/components/fields/FilterListBox.md +1 -1
- package/docs/components/fields/FilterPicker.md +1 -1
- package/docs/components/fields/ListBox.md +2 -2
- package/docs/components/fields/Picker.md +1 -1
- package/docs/components/fields/SearchComboBox.md +1 -1
- package/docs/components/fields/Select.md +1 -1
- package/docs/components/fields/TagInput.md +1 -1
- package/docs/tasty/react-api.md +1 -1
- package/package.json +3 -3
- package/tasty.config.ts +206 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prismSetup.js","names":["Prism","RendererPrism","globalThis","languages","diff","coord","PREFIXES","unchanged","Object","keys","forEach","name","prefix","alias","test","push","exec","pattern","RegExp","inside","line","lookbehind","defineProperty","value","LANGUAGE_REGEX","HTML_TAG","HTML_LINE","source","replace","warningLogged","hooks","add","env","lang","language","grammar","plugins","autoloader","console","warn","langMatch","isGenericDiff","diffLanguage","diffGrammar","enhance","tokens","i","length","t","Array","isArray","content","type","tokenize","ensureYamlSqlExtensions","yaml","sql","insertBefore","indent"],"sources":["../../../../src/components/content/PrismCode/prismSetup.tsx"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable */\n// This file patches Prism with extra languages & plugins for prism-react-renderer\n// Its content is mostly vanilla JS copied from Prism, so type-checking is disabled above.\nimport { Prism as RendererPrism } from 'prism-react-renderer';\n\n// make the instance globally visible for other plugins (optional)\n(globalThis as any).Prism = RendererPrism;\n\n(function (Prism) {\n Prism.languages.diff = {\n coord: [\n // Match all kinds of coord lines (prefixed by \"+++\", \"---\" or \"***\").\n /^(?:\\*{3}|-{3}|\\+{3}).*$/m,\n // Match \"@@ ... @@\" coord lines in unified diff.\n /^@@.*@@$/m,\n // Match coord lines in normal diff (starts with a number).\n /^\\d.*$/m,\n ],\n\n // deleted, inserted, unchanged, diff\n };\n\n /**\n * A map from the name of a block to its line prefix.\n *\n * @type {Object<string, string>}\n */\n var PREFIXES = {\n 'deleted-sign': '-',\n 'deleted-arrow': '<',\n 'inserted-sign': '+',\n 'inserted-arrow': '>',\n unchanged: ' ',\n diff: '!',\n };\n\n // add a token for each prefix\n Object.keys(PREFIXES).forEach(function (name) {\n var prefix = PREFIXES[name];\n\n var alias = [];\n if (!/^\\w+$/.test(name)) {\n // \"deleted-sign\" -> \"deleted\"\n alias.push(/\\w+/.exec(name)[0]);\n }\n if (name === 'diff') {\n alias.push('bold');\n }\n\n Prism.languages.diff[name] = {\n pattern: RegExp('^(?:[' + prefix + '].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+', 'm'),\n alias: alias,\n inside: {\n line: {\n pattern: /(.)(?=[\\s\\S]).*(?:\\r\\n?|\\n)?/,\n lookbehind: true,\n },\n prefix: {\n pattern: /[\\s\\S]/,\n alias: /\\w+/.exec(name)[0],\n },\n },\n };\n });\n\n // make prefixes available to Diff plugin\n Object.defineProperty(Prism.languages.diff, 'PREFIXES', {\n value: PREFIXES,\n });\n})(RendererPrism);\n\n(function (Prism) {\n if (typeof Prism === 'undefined') {\n return;\n }\n\n var LANGUAGE_REGEX = /^diff-([\\w-]+)/i;\n var HTML_TAG =\n /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/g;\n //this will match a line plus the line break while ignoring the line breaks HTML tags may contain.\n var HTML_LINE = RegExp(\n /(?:__|[^\\r\\n<])*(?:\\r\\n?|\\n|(?:__|[^\\r\\n<])(?![^\\r\\n]))/.source.replace(\n /__/g,\n function () {\n return HTML_TAG.source;\n },\n ),\n 'gi',\n );\n\n var warningLogged = false;\n\n Prism.hooks.add('before-sanity-check', function (env) {\n var lang = env.language;\n if (LANGUAGE_REGEX.test(lang) && !env.grammar) {\n env.grammar = Prism.languages[lang] = Prism.languages.diff;\n }\n });\n Prism.hooks.add('before-tokenize', function (env) {\n if (!warningLogged && !Prism.languages.diff && !Prism.plugins.autoloader) {\n warningLogged = true;\n console.warn(\n \"Prism's Diff Highlight plugin requires the Diff language definition (prism-diff.js).\" +\n \"Make sure the language definition is loaded or use Prism's Autoloader plugin.\",\n );\n }\n\n var lang = env.language;\n if (LANGUAGE_REGEX.test(lang) && !Prism.languages[lang]) {\n Prism.languages[lang] = Prism.languages.diff;\n }\n\n // Always ensure diff-* languages use the diff grammar for tokenization\n if (LANGUAGE_REGEX.test(lang)) {\n env.grammar = Prism.languages.diff;\n }\n });\n\n /**\n * The original diff-highlight plugin relies on the `wrap` hook which is\n * executed during `Token.stringify()`. `prism-react-renderer`, however,\n * never calls `Token.stringify()` – it works directly with Prism tokens.\n * This means the original plugin is effectively a no-op and nested\n * highlighting inside diff blocks (e.g. `diff-sql`) is lost.\n *\n * To make the plugin compatible with prism-react-renderer we re-implement\n * the essential logic inside an `after-tokenize` hook. The algorithm\n * iterates over all tokens, detects diff line tokens (\"inserted-sign\",\n * \"deleted-sign\", …) and replaces their textual content with a\n * token sequence consisting of:\n * 1. a `prefix` token (so \"+\" or \"-\" can still be styled)\n * 2. the result of tokenising the rest of the line using the proper\n * grammar (sql, js, …)\n *\n * The end result is *pure tokens*, so prism-react-renderer can render\n * them just like any other language.\n */\n\n Prism.hooks.add('after-tokenize', function (env) {\n var langMatch = LANGUAGE_REGEX.exec(env.language || '');\n var isGenericDiff = env.language === 'diff';\n\n if (!isGenericDiff && !langMatch) {\n return; // not a diff language – skip\n }\n\n var diffLanguage = isGenericDiff ? null : langMatch[1];\n var diffGrammar = diffLanguage ? Prism.languages[diffLanguage] : null;\n if (!diffGrammar && diffLanguage === 'js') {\n diffGrammar = Prism.languages['javascript'];\n }\n\n var PREFIXES = Prism.languages.diff && Prism.languages.diff.PREFIXES;\n if (!PREFIXES) return;\n\n /**\n * Recursively walk all tokens. Whenever we encounter a token of type\n * `line` (those are produced by the built-in diff grammar for the\n * part **after** the +/-/!/␠ prefix) we re-tokenise its text with the\n * real language grammar (sql, js, …) and replace the string with the\n * resulting token array. This keeps the original diff token tree –\n * including the `prefix` sub-token – intact while adding proper\n * syntax colours to the remainder of the line.\n */\n function enhance(tokens) {\n for (var i = 0; i < tokens.length; i++) {\n var t = tokens[i];\n\n if (typeof t === 'string') continue;\n\n if (Array.isArray(t.content)) {\n enhance(t.content);\n } else if (t.type === 'line' && typeof t.content === 'string') {\n if (diffGrammar) {\n t.content = Prism.tokenize(t.content, diffGrammar);\n }\n }\n }\n }\n\n enhance(env.tokens);\n });\n})(RendererPrism);\n\n// Function to ensure YAML SQL extensions are applied\nfunction ensureYamlSqlExtensions() {\n // Check if extensions are already applied\n if (\n RendererPrism.languages.yaml &&\n RendererPrism.languages.yaml['sql-scalar']\n ) {\n return; // Already applied\n }\n\n // Apply extensions if both YAML and SQL grammars are available\n if (RendererPrism.languages.yaml && RendererPrism.languages.sql) {\n // Insert SQL patterns before existing YAML patterns for higher priority\n RendererPrism.languages.insertBefore('yaml', 'key', {\n 'sql-inline': {\n pattern: /((?:^|\\n)\\s*sql\\s*:\\s*)([^\\n\\r|>]+)/,\n lookbehind: true,\n inside: RendererPrism.languages.sql,\n },\n });\n\n // Handle multiline SQL blocks with proper indentation\n RendererPrism.languages.insertBefore('yaml', 'key', {\n 'sql-multiline': {\n pattern:\n /((?:^|\\n)\\s*sql\\s*:\\s*[|>][-+]?\\s*\\n)((?:\\s{2,}[^\\n\\r]+(?:\\n|$))+)/,\n lookbehind: true,\n inside: {\n 'sql-content': {\n pattern: /^(\\s+)(.+)/gm,\n inside: {\n indent: /^\\s+/,\n 'sql-code': {\n pattern: /.+/,\n inside: RendererPrism.languages.sql,\n },\n },\n },\n },\n },\n });\n\n // Handle YAML scalar content that follows sql: > or sql: | indicators\n RendererPrism.languages.insertBefore('yaml', 'scalar', {\n 'sql-scalar': {\n pattern:\n /^\\s*(SELECT|INSERT|UPDATE|DELETE|WITH|CREATE|DROP|ALTER|UNION|FROM|WHERE|JOIN|GROUP|ORDER|HAVING)[\\s\\S]*$/im,\n inside: RendererPrism.languages.sql,\n },\n });\n }\n}\n\nexport { RendererPrism as Prism };\nexport { ensureYamlSqlExtensions };\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prismSetup.js","names":["Prism","RendererPrism","globalThis","languages","diff","coord","PREFIXES","unchanged","Object","keys","forEach","name","prefix","alias","test","push","exec","pattern","RegExp","inside","line","lookbehind","defineProperty","value","LANGUAGE_REGEX","HTML_TAG","HTML_LINE","source","replace","warningLogged","hooks","add","env","lang","language","grammar","plugins","autoloader","console","warn","langMatch","isGenericDiff","diffLanguage","diffGrammar","enhance","tokens","i","length","t","Array","isArray","content","type","tokenize","ensureYamlSqlExtensions","yaml","sql","insertBefore","indent"],"sources":["../../../../src/components/content/PrismCode/prismSetup.tsx"],"sourcesContent":["// @ts-nocheck\n/* eslint-disable -- mostly vanilla Prism code, kept as upstream wrote it */\n// This file patches Prism with extra languages & plugins for prism-react-renderer\n// Its content is mostly vanilla JS copied from Prism, so type-checking is disabled above.\nimport { Prism as RendererPrism } from 'prism-react-renderer';\n\n// make the instance globally visible for other plugins (optional)\n(globalThis as any).Prism = RendererPrism;\n\n(function (Prism) {\n Prism.languages.diff = {\n coord: [\n // Match all kinds of coord lines (prefixed by \"+++\", \"---\" or \"***\").\n /^(?:\\*{3}|-{3}|\\+{3}).*$/m,\n // Match \"@@ ... @@\" coord lines in unified diff.\n /^@@.*@@$/m,\n // Match coord lines in normal diff (starts with a number).\n /^\\d.*$/m,\n ],\n\n // deleted, inserted, unchanged, diff\n };\n\n /**\n * A map from the name of a block to its line prefix.\n *\n * @type {Object<string, string>}\n */\n var PREFIXES = {\n 'deleted-sign': '-',\n 'deleted-arrow': '<',\n 'inserted-sign': '+',\n 'inserted-arrow': '>',\n unchanged: ' ',\n diff: '!',\n };\n\n // add a token for each prefix\n Object.keys(PREFIXES).forEach(function (name) {\n var prefix = PREFIXES[name];\n\n var alias = [];\n if (!/^\\w+$/.test(name)) {\n // \"deleted-sign\" -> \"deleted\"\n alias.push(/\\w+/.exec(name)[0]);\n }\n if (name === 'diff') {\n alias.push('bold');\n }\n\n Prism.languages.diff[name] = {\n pattern: RegExp('^(?:[' + prefix + '].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+', 'm'),\n alias: alias,\n inside: {\n line: {\n pattern: /(.)(?=[\\s\\S]).*(?:\\r\\n?|\\n)?/,\n lookbehind: true,\n },\n prefix: {\n pattern: /[\\s\\S]/,\n alias: /\\w+/.exec(name)[0],\n },\n },\n };\n });\n\n // make prefixes available to Diff plugin\n Object.defineProperty(Prism.languages.diff, 'PREFIXES', {\n value: PREFIXES,\n });\n})(RendererPrism);\n\n(function (Prism) {\n if (typeof Prism === 'undefined') {\n return;\n }\n\n var LANGUAGE_REGEX = /^diff-([\\w-]+)/i;\n var HTML_TAG =\n /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/g;\n //this will match a line plus the line break while ignoring the line breaks HTML tags may contain.\n var HTML_LINE = RegExp(\n /(?:__|[^\\r\\n<])*(?:\\r\\n?|\\n|(?:__|[^\\r\\n<])(?![^\\r\\n]))/.source.replace(\n /__/g,\n function () {\n return HTML_TAG.source;\n },\n ),\n 'gi',\n );\n\n var warningLogged = false;\n\n Prism.hooks.add('before-sanity-check', function (env) {\n var lang = env.language;\n if (LANGUAGE_REGEX.test(lang) && !env.grammar) {\n env.grammar = Prism.languages[lang] = Prism.languages.diff;\n }\n });\n Prism.hooks.add('before-tokenize', function (env) {\n if (!warningLogged && !Prism.languages.diff && !Prism.plugins.autoloader) {\n warningLogged = true;\n console.warn(\n \"Prism's Diff Highlight plugin requires the Diff language definition (prism-diff.js).\" +\n \"Make sure the language definition is loaded or use Prism's Autoloader plugin.\",\n );\n }\n\n var lang = env.language;\n if (LANGUAGE_REGEX.test(lang) && !Prism.languages[lang]) {\n Prism.languages[lang] = Prism.languages.diff;\n }\n\n // Always ensure diff-* languages use the diff grammar for tokenization\n if (LANGUAGE_REGEX.test(lang)) {\n env.grammar = Prism.languages.diff;\n }\n });\n\n /**\n * The original diff-highlight plugin relies on the `wrap` hook which is\n * executed during `Token.stringify()`. `prism-react-renderer`, however,\n * never calls `Token.stringify()` – it works directly with Prism tokens.\n * This means the original plugin is effectively a no-op and nested\n * highlighting inside diff blocks (e.g. `diff-sql`) is lost.\n *\n * To make the plugin compatible with prism-react-renderer we re-implement\n * the essential logic inside an `after-tokenize` hook. The algorithm\n * iterates over all tokens, detects diff line tokens (\"inserted-sign\",\n * \"deleted-sign\", …) and replaces their textual content with a\n * token sequence consisting of:\n * 1. a `prefix` token (so \"+\" or \"-\" can still be styled)\n * 2. the result of tokenising the rest of the line using the proper\n * grammar (sql, js, …)\n *\n * The end result is *pure tokens*, so prism-react-renderer can render\n * them just like any other language.\n */\n\n Prism.hooks.add('after-tokenize', function (env) {\n var langMatch = LANGUAGE_REGEX.exec(env.language || '');\n var isGenericDiff = env.language === 'diff';\n\n if (!isGenericDiff && !langMatch) {\n return; // not a diff language – skip\n }\n\n var diffLanguage = isGenericDiff ? null : langMatch[1];\n var diffGrammar = diffLanguage ? Prism.languages[diffLanguage] : null;\n if (!diffGrammar && diffLanguage === 'js') {\n diffGrammar = Prism.languages['javascript'];\n }\n\n var PREFIXES = Prism.languages.diff && Prism.languages.diff.PREFIXES;\n if (!PREFIXES) return;\n\n /**\n * Recursively walk all tokens. Whenever we encounter a token of type\n * `line` (those are produced by the built-in diff grammar for the\n * part **after** the +/-/!/␠ prefix) we re-tokenise its text with the\n * real language grammar (sql, js, …) and replace the string with the\n * resulting token array. This keeps the original diff token tree –\n * including the `prefix` sub-token – intact while adding proper\n * syntax colours to the remainder of the line.\n */\n function enhance(tokens) {\n for (var i = 0; i < tokens.length; i++) {\n var t = tokens[i];\n\n if (typeof t === 'string') continue;\n\n if (Array.isArray(t.content)) {\n enhance(t.content);\n } else if (t.type === 'line' && typeof t.content === 'string') {\n if (diffGrammar) {\n t.content = Prism.tokenize(t.content, diffGrammar);\n }\n }\n }\n }\n\n enhance(env.tokens);\n });\n})(RendererPrism);\n\n// Function to ensure YAML SQL extensions are applied\nfunction ensureYamlSqlExtensions() {\n // Check if extensions are already applied\n if (\n RendererPrism.languages.yaml &&\n RendererPrism.languages.yaml['sql-scalar']\n ) {\n return; // Already applied\n }\n\n // Apply extensions if both YAML and SQL grammars are available\n if (RendererPrism.languages.yaml && RendererPrism.languages.sql) {\n // Insert SQL patterns before existing YAML patterns for higher priority\n RendererPrism.languages.insertBefore('yaml', 'key', {\n 'sql-inline': {\n pattern: /((?:^|\\n)\\s*sql\\s*:\\s*)([^\\n\\r|>]+)/,\n lookbehind: true,\n inside: RendererPrism.languages.sql,\n },\n });\n\n // Handle multiline SQL blocks with proper indentation\n RendererPrism.languages.insertBefore('yaml', 'key', {\n 'sql-multiline': {\n pattern:\n /((?:^|\\n)\\s*sql\\s*:\\s*[|>][-+]?\\s*\\n)((?:\\s{2,}[^\\n\\r]+(?:\\n|$))+)/,\n lookbehind: true,\n inside: {\n 'sql-content': {\n pattern: /^(\\s+)(.+)/gm,\n inside: {\n indent: /^\\s+/,\n 'sql-code': {\n pattern: /.+/,\n inside: RendererPrism.languages.sql,\n },\n },\n },\n },\n },\n });\n\n // Handle YAML scalar content that follows sql: > or sql: | indicators\n RendererPrism.languages.insertBefore('yaml', 'scalar', {\n 'sql-scalar': {\n pattern:\n /^\\s*(SELECT|INSERT|UPDATE|DELETE|WITH|CREATE|DROP|ALTER|UNION|FROM|WHERE|JOIN|GROUP|ORDER|HAVING)[\\s\\S]*$/im,\n inside: RendererPrism.languages.sql,\n },\n });\n }\n}\n\nexport { RendererPrism as Prism };\nexport { ensureYamlSqlExtensions };\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { PrismCode as _PrismCode } from "../PrismCode/PrismCode.js";
|
|
3
3
|
import { c } from "react/compiler-runtime";
|
|
4
4
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeProps } from "../../../utils/react/mergeProps.js";
|
|
4
4
|
import { wrapNodeIfPlain } from "../../../utils/react/wrapNodeIfPlain.js";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
3
3
|
import { Space } from "../../layout/Space.js";
|
|
4
4
|
import { Grid } from "../../layout/Grid.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Skeleton.js","names":["BaseProps","ContainerStyleProps","ReactNode","useI18n","Flow","CubeGridProps","Grid","Space","CubePlaceholderProps","Placeholder","PlaceholderGroupContext","LAYOUT_MAP","page","lines","children","isStatic","rootProps","CubeSkeletonLayoutProps","Array","fill","map","item","i","content","topbar","menu","stats","cards","tabs","table","rows","columns","j","chart","heightMap","const","CubeSkeletonProps","CubeSkeletonRootProps","Omit","layout","Skeleton","t0","props","t","qa","role"],"sources":["../../../../src/components/content/Skeleton/Skeleton.tsx"],"sourcesContent":["import { BaseProps, ContainerStyleProps } from '@tenphi/tasty';\nimport { ReactNode } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { Flow } from '../../layout/Flow';\nimport { CubeGridProps, Grid } from '../../layout/Grid';\nimport { Space } from '../../layout/Space';\nimport {\n CubePlaceholderProps,\n Placeholder,\n PlaceholderGroupContext,\n} from '../Placeholder/Placeholder';\n\nconst LAYOUT_MAP = {\n page({\n lines,\n children,\n isStatic = false,\n rootProps,\n }: CubeSkeletonLayoutProps) {\n return (\n <Flow gap=\"4x\" {...rootProps}>\n <Space placeContent=\"space-between\">\n <Placeholder isStatic={isStatic} width=\"100px 25% 300px\" />\n <Placeholder isStatic={isStatic} width=\"50px 10% 150px\" />\n </Space>\n <Flow gap=\"2x\">\n {children ||\n Array(lines || 5)\n .fill(0)\n .map((item, i) => <Placeholder key={i} isStatic={isStatic} />)}\n </Flow>\n </Flow>\n );\n },\n content({\n children,\n lines,\n isStatic = false,\n rootProps,\n }: CubeSkeletonLayoutProps) {\n return (\n <Flow gap=\"2x\" {...rootProps}>\n {children ||\n Array(lines || 5)\n .fill(0)\n .map((item, i) => <Placeholder key={i} isStatic={isStatic} />)}\n </Flow>\n );\n },\n topbar({ isStatic = false, rootProps }: CubeSkeletonLayoutProps) {\n return (\n <Space\n gap=\"4x\"\n placeContent=\"space-between\"\n height=\"6x\"\n padding=\"1x\"\n border=\"bottom\"\n {...rootProps}\n >\n <Space>\n <Placeholder circle isStatic={isStatic} size=\"4x\" />\n <Placeholder isStatic={isStatic} width=\"20x\" />\n </Space>\n\n <Space>\n <Placeholder isStatic={isStatic} width=\"10x\" />\n <Placeholder circle isStatic={isStatic} size=\"4x\" />\n </Space>\n </Space>\n );\n },\n menu({ lines, isStatic = false, rootProps }: CubeSkeletonLayoutProps) {\n return (\n <Flow gap=\"3.25x\" padding=\"3x 1x\" {...rootProps}>\n {Array(lines || 5)\n .fill(0)\n .map((item, i) => (\n <Placeholder key={i} isStatic={isStatic} />\n ))}\n </Flow>\n );\n },\n stats({ cards, isStatic = false, rootProps }: CubeSkeletonLayoutProps) {\n return (\n <Space gap=\"4x\" {...rootProps}>\n {Array(cards || 3)\n .fill(0)\n .map((item, i) => (\n <Placeholder\n key={i}\n isStatic={isStatic}\n radius=\"1r\"\n width=\"20x\"\n height=\"12x\"\n flexGrow={1}\n />\n ))}\n </Space>\n );\n },\n tabs({\n tabs,\n children,\n lines,\n isStatic = false,\n rootProps,\n }: CubeSkeletonLayoutProps) {\n return (\n <Flow gap=\"4x\" {...rootProps}>\n <Space>\n {Array(tabs || 3)\n .fill(0)\n .map((item, i) => (\n <Placeholder key={i} isStatic={isStatic} width=\"15x\" />\n ))}\n </Space>\n <Flow gap=\"2x\">\n {children ||\n Array(lines || 5)\n .fill(0)\n .map((item, i) => <Placeholder key={i} isStatic={isStatic} />)}\n </Flow>\n </Flow>\n );\n },\n table({\n rows,\n columns,\n isStatic = false,\n rootProps,\n }: CubeSkeletonLayoutProps) {\n columns = columns || 5;\n rows = rows || 5;\n\n return (\n <Grid\n columns={`repeat(${columns}, 1fr)`}\n gap=\"3x\"\n padding=\"1x 0\"\n {...rootProps}\n >\n {Array(rows)\n .fill(0)\n .map((item, i) => {\n return Array(columns)\n .fill(0)\n .map((item, j) => {\n return (\n <Placeholder\n key={`${i}.${j}`}\n isStatic={isStatic}\n size={!i ? '3x' : '2x'}\n />\n );\n });\n })}\n </Grid>\n );\n },\n chart({ columns, isStatic = false, rootProps }: CubeSkeletonLayoutProps) {\n columns = columns || 12;\n\n const heightMap = [1, 4, 2, 5, 8, 9, 5, 3, 4, 2, 6, 7, 2];\n\n return (\n <Grid\n columns={`repeat(${columns}, 1fr)`}\n gap=\"3x\"\n padding=\"1x 0\"\n placeItems=\"end stretch\"\n height=\"40x\"\n {...rootProps}\n >\n {Array(columns)\n .fill(0)\n .map((item, i) => {\n return (\n <Placeholder\n key={i}\n isStatic={isStatic}\n height={`${heightMap[i % 12] * 10}%`}\n width=\"max 6x\"\n />\n );\n })}\n </Grid>\n );\n },\n} as const;\n\nexport interface CubeSkeletonProps\n extends CubeSkeletonRootProps, Omit<CubeSkeletonLayoutProps, 'rootProps'> {\n /** The type of the layout */\n layout?: keyof typeof LAYOUT_MAP;\n}\n\nexport interface CubeSkeletonRootProps\n extends\n Omit<CubeGridProps, 'columns' | 'rows'>,\n CubePlaceholderProps,\n BaseProps,\n ContainerStyleProps {}\n\nexport interface CubeSkeletonLayoutProps {\n /** The number of columns for the table layout */\n columns?: number;\n /** The number of rows for the table layout */\n rows?: number;\n /** The number of placeholder lines */\n lines?: number;\n /** The number of tabs */\n tabs?: number;\n /** The number of cards */\n cards?: number;\n /** The static mode */\n isStatic?: boolean;\n rootProps?: CubeSkeletonRootProps;\n children?: ReactNode;\n}\n\nexport function Skeleton({\n layout,\n isStatic,\n columns,\n rows,\n lines,\n tabs,\n cards,\n children,\n ...props\n}: CubeSkeletonProps) {\n const { t } = useI18n();\n\n layout = layout || 'page';\n\n // One \"Content is loading\" region for the whole layout, rather than one per\n // bar: a page skeleton would otherwise list a dozen identical landmarks.\n return LAYOUT_MAP[layout] ? (\n <PlaceholderGroupContext.Provider value>\n {LAYOUT_MAP[layout]({\n isStatic,\n columns,\n rows,\n lines,\n tabs,\n cards,\n children,\n rootProps: {\n qa: 'Skeleton',\n role: 'region',\n 'aria-label': t('placeholder.contentIsLoading', 'Content is loading'),\n ...props,\n },\n })}\n </PlaceholderGroupContext.Provider>\n ) : (\n <Placeholder qa=\"Skeleton\" isStatic={isStatic} {...props}>\n {children}\n </Placeholder>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Skeleton.js","names":["BaseProps","ContainerStyleProps","ReactNode","useI18n","Flow","CubeGridProps","Grid","Space","CubePlaceholderProps","Placeholder","PlaceholderGroupContext","LAYOUT_MAP","page","lines","children","isStatic","rootProps","CubeSkeletonLayoutProps","Array","fill","map","item","i","content","topbar","menu","stats","cards","tabs","table","rows","columns","j","chart","heightMap","const","CubeSkeletonProps","CubeSkeletonRootProps","Omit","layout","Skeleton","t0","props","t","qa","role"],"sources":["../../../../src/components/content/Skeleton/Skeleton.tsx"],"sourcesContent":["import { BaseProps, ContainerStyleProps } from '@tenphi/tasty';\nimport { ReactNode } from 'react';\n\nimport { useI18n } from '../../../i18n';\nimport { Flow } from '../../layout/Flow';\nimport { CubeGridProps, Grid } from '../../layout/Grid';\nimport { Space } from '../../layout/Space';\nimport {\n CubePlaceholderProps,\n Placeholder,\n PlaceholderGroupContext,\n} from '../Placeholder/Placeholder';\n\nconst LAYOUT_MAP = {\n page({\n lines,\n children,\n isStatic = false,\n rootProps,\n }: CubeSkeletonLayoutProps) {\n return (\n <Flow gap=\"4x\" {...rootProps}>\n <Space placeContent=\"space-between\">\n {/* oxlint-disable-next-line tasty/consistent-token-usage -- placeholder widths imitate text of varying length, not layout dimensions */}\n <Placeholder isStatic={isStatic} width=\"100px 25% 300px\" />\n {/* oxlint-disable-next-line tasty/consistent-token-usage -- placeholder widths imitate text of varying length, not layout dimensions */}\n <Placeholder isStatic={isStatic} width=\"50px 10% 150px\" />\n </Space>\n <Flow gap=\"2x\">\n {children ||\n Array(lines || 5)\n .fill(0)\n .map((item, i) => <Placeholder key={i} isStatic={isStatic} />)}\n </Flow>\n </Flow>\n );\n },\n content({\n children,\n lines,\n isStatic = false,\n rootProps,\n }: CubeSkeletonLayoutProps) {\n return (\n <Flow gap=\"2x\" {...rootProps}>\n {children ||\n Array(lines || 5)\n .fill(0)\n .map((item, i) => <Placeholder key={i} isStatic={isStatic} />)}\n </Flow>\n );\n },\n topbar({ isStatic = false, rootProps }: CubeSkeletonLayoutProps) {\n return (\n <Space\n gap=\"4x\"\n placeContent=\"space-between\"\n height=\"6x\"\n padding=\"1x\"\n border=\"bottom\"\n {...rootProps}\n >\n <Space>\n <Placeholder circle isStatic={isStatic} size=\"4x\" />\n <Placeholder isStatic={isStatic} width=\"20x\" />\n </Space>\n\n <Space>\n <Placeholder isStatic={isStatic} width=\"10x\" />\n <Placeholder circle isStatic={isStatic} size=\"4x\" />\n </Space>\n </Space>\n );\n },\n menu({ lines, isStatic = false, rootProps }: CubeSkeletonLayoutProps) {\n return (\n <Flow gap=\"3.25x\" padding=\"3x 1x\" {...rootProps}>\n {Array(lines || 5)\n .fill(0)\n .map((item, i) => (\n <Placeholder key={i} isStatic={isStatic} />\n ))}\n </Flow>\n );\n },\n stats({ cards, isStatic = false, rootProps }: CubeSkeletonLayoutProps) {\n return (\n <Space gap=\"4x\" {...rootProps}>\n {Array(cards || 3)\n .fill(0)\n .map((item, i) => (\n <Placeholder\n key={i}\n isStatic={isStatic}\n radius=\"1r\"\n width=\"20x\"\n height=\"12x\"\n flexGrow={1}\n />\n ))}\n </Space>\n );\n },\n tabs({\n tabs,\n children,\n lines,\n isStatic = false,\n rootProps,\n }: CubeSkeletonLayoutProps) {\n return (\n <Flow gap=\"4x\" {...rootProps}>\n <Space>\n {Array(tabs || 3)\n .fill(0)\n .map((item, i) => (\n <Placeholder key={i} isStatic={isStatic} width=\"15x\" />\n ))}\n </Space>\n <Flow gap=\"2x\">\n {children ||\n Array(lines || 5)\n .fill(0)\n .map((item, i) => <Placeholder key={i} isStatic={isStatic} />)}\n </Flow>\n </Flow>\n );\n },\n table({\n rows,\n columns,\n isStatic = false,\n rootProps,\n }: CubeSkeletonLayoutProps) {\n columns = columns || 5;\n rows = rows || 5;\n\n return (\n <Grid\n columns={`repeat(${columns}, 1fr)`}\n gap=\"3x\"\n padding=\"1x 0\"\n {...rootProps}\n >\n {Array(rows)\n .fill(0)\n .map((item, i) => {\n return Array(columns)\n .fill(0)\n .map((item, j) => {\n return (\n <Placeholder\n key={`${i}.${j}`}\n isStatic={isStatic}\n size={!i ? '3x' : '2x'}\n />\n );\n });\n })}\n </Grid>\n );\n },\n chart({ columns, isStatic = false, rootProps }: CubeSkeletonLayoutProps) {\n columns = columns || 12;\n\n const heightMap = [1, 4, 2, 5, 8, 9, 5, 3, 4, 2, 6, 7, 2];\n\n return (\n <Grid\n columns={`repeat(${columns}, 1fr)`}\n gap=\"3x\"\n padding=\"1x 0\"\n placeItems=\"end stretch\"\n height=\"40x\"\n {...rootProps}\n >\n {Array(columns)\n .fill(0)\n .map((item, i) => {\n return (\n <Placeholder\n key={i}\n isStatic={isStatic}\n height={`${heightMap[i % 12] * 10}%`}\n width=\"max 6x\"\n />\n );\n })}\n </Grid>\n );\n },\n} as const;\n\nexport interface CubeSkeletonProps\n extends CubeSkeletonRootProps, Omit<CubeSkeletonLayoutProps, 'rootProps'> {\n /** The type of the layout */\n layout?: keyof typeof LAYOUT_MAP;\n}\n\nexport interface CubeSkeletonRootProps\n extends\n Omit<CubeGridProps, 'columns' | 'rows'>,\n CubePlaceholderProps,\n BaseProps,\n ContainerStyleProps {}\n\nexport interface CubeSkeletonLayoutProps {\n /** The number of columns for the table layout */\n columns?: number;\n /** The number of rows for the table layout */\n rows?: number;\n /** The number of placeholder lines */\n lines?: number;\n /** The number of tabs */\n tabs?: number;\n /** The number of cards */\n cards?: number;\n /** The static mode */\n isStatic?: boolean;\n rootProps?: CubeSkeletonRootProps;\n children?: ReactNode;\n}\n\nexport function Skeleton({\n layout,\n isStatic,\n columns,\n rows,\n lines,\n tabs,\n cards,\n children,\n ...props\n}: CubeSkeletonProps) {\n const { t } = useI18n();\n\n layout = layout || 'page';\n\n // One \"Content is loading\" region for the whole layout, rather than one per\n // bar: a page skeleton would otherwise list a dozen identical landmarks.\n return LAYOUT_MAP[layout] ? (\n <PlaceholderGroupContext.Provider value>\n {LAYOUT_MAP[layout]({\n isStatic,\n columns,\n rows,\n lines,\n tabs,\n cards,\n children,\n rootProps: {\n qa: 'Skeleton',\n role: 'region',\n 'aria-label': t('placeholder.contentIsLoading', 'Content is loading'),\n ...props,\n },\n })}\n </PlaceholderGroupContext.Provider>\n ) : (\n <Placeholder qa=\"Skeleton\" isStatic={isStatic} {...props}>\n {children}\n </Placeholder>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { mergeStyleLayers } from "../../../utils/styles.js";
|
|
3
3
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
4
4
|
import { Item as _Item } from "../Item/Item.js";
|
|
@@ -21,9 +21,13 @@ const TagElement = tasty(_Item, {
|
|
|
21
21
|
},
|
|
22
22
|
border: { "type=primary": "#clear" },
|
|
23
23
|
"$min-inline-padding": ".5x",
|
|
24
|
+
overflow: {
|
|
25
|
+
"": "clip",
|
|
26
|
+
"has-end-content": "visible"
|
|
27
|
+
},
|
|
24
28
|
Label: {
|
|
25
29
|
textAlign: "center",
|
|
26
|
-
placeSelf: "center"
|
|
30
|
+
placeSelf: "center stretch"
|
|
27
31
|
}
|
|
28
32
|
}
|
|
29
33
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tag.js","names":["Styles","tasty","forwardRef","ItemVariant","useI18n","CloseIcon","mergeStyleLayers","CubeItemProps","Item","TagElement","qa","role","styles","padding","preset","border","Label","textAlign","placeSelf","CubeTagProps","theme","isClosable","onClose","closeButtonStyles","Tag","allProps","ref","$","_c","t","children","mods","props","t0","t1","size","undefined","type","t2","t3","color","t4","_Tag","displayName","Item","_c"],"sources":["../../../../src/components/content/Tag/Tag.tsx"],"sourcesContent":["import { Styles, tasty } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { ItemVariant } from '../../../data/item-themes';\nimport { useI18n } from '../../../i18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { mergeStyleLayers } from '../../../utils/styles';\nimport { CubeItemProps, Item } from '../Item';\n\nconst TagElement = tasty(Item, {\n qa: 'Tag',\n role: 'status',\n styles: {\n padding: 0,\n preset: {\n '': 'tag',\n 'size=xsmall': 't4',\n 'size=small | size=medium': 't3',\n 'size=large | size=xlarge': 't2',\n },\n border: {\n // extend\n 'type=primary': '#clear',\n },\n\n '$min-inline-padding': '.5x',\n\n Label: {\n textAlign: 'center',\n placeSelf: 'center',\n },\n },\n});\n\nexport interface CubeTagProps extends CubeItemProps {\n /**\n * Visual theme. Every value but `special` is a soft card — pale fill, tinted\n * border, strong colored text. `primary` and `special` are the same brand\n * hue at two weights: `primary` is the soft card, `special` the solid fill.\n */\n theme?:\n | 'default'\n | 'primary'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special';\n isClosable?: boolean;\n onClose?: () => void;\n closeButtonStyles?: Styles;\n}\n\nfunction Tag(allProps: CubeTagProps, ref) {\n const { t } = useI18n();\n\n let {\n theme = 'default',\n isClosable,\n onClose,\n closeButtonStyles,\n children,\n size = 'inline',\n mods,\n ...props\n } = allProps;\n\n let type = 'card';\n\n // `special` is the SOLID brand chip, and it is spelled as the `default`\n // theme's `primary` type rather than as a theme of its own. Not a typo to be\n // tidied into `theme = 'primary'`: that is the SOFT brand card\n // (`primary.card`), which is a different weight and reachable under its own\n // name. The two are deliberately separate spellings of the same hue.\n if (theme === 'special') {\n theme = 'default';\n type = 'primary';\n }\n\n return (\n <TagElement\n ref={ref}\n size={size}\n data-type={type}\n variant={`${theme}.${type}` as ItemVariant}\n mods={mods}\n actions={\n isClosable ? (\n <Item.Action\n aria-label={t('tag.close', 'Close')}\n styles={mergeStyleLayers({ color: '#current' }, closeButtonStyles)}\n icon={<CloseIcon />}\n onPress={onClose}\n />\n ) : undefined\n }\n {...props}\n >\n {children}\n </TagElement>\n );\n}\n\nconst _Tag = forwardRef(Tag);\n\n_Tag.displayName = 'Tag';\n\nexport { _Tag as Tag };\n"],"mappings":";;;;;;;;;;AASA,MAAMS,aAAaR,MAAMO,OAAM;CAC7BE,IAAI;CACJC,MAAM;CACNC,QAAQ;EACNC,SAAS;EACTC,QAAQ;GACN,IAAI;GACJ,eAAe;GACf,4BAA4B;GAC5B,4BAA4B;EAC9B;EACAC,QAAQ,EAEN,gBAAgB,SAClB;EAEA,uBAAuB;
|
|
1
|
+
{"version":3,"file":"Tag.js","names":["Styles","tasty","forwardRef","ItemVariant","useI18n","CloseIcon","mergeStyleLayers","CubeItemProps","Item","TagElement","qa","role","styles","padding","preset","border","overflow","Label","textAlign","placeSelf","CubeTagProps","theme","isClosable","onClose","closeButtonStyles","Tag","allProps","ref","$","_c","t","children","mods","props","t0","t1","size","undefined","type","t2","t3","color","t4","_Tag","displayName","Item","_c"],"sources":["../../../../src/components/content/Tag/Tag.tsx"],"sourcesContent":["import { Styles, tasty } from '@tenphi/tasty';\nimport { forwardRef } from 'react';\n\nimport { ItemVariant } from '../../../data/item-themes';\nimport { useI18n } from '../../../i18n';\nimport { CloseIcon } from '../../../icons/CloseIcon';\nimport { mergeStyleLayers } from '../../../utils/styles';\nimport { CubeItemProps, Item } from '../Item';\n\nconst TagElement = tasty(Item, {\n qa: 'Tag',\n role: 'status',\n styles: {\n padding: 0,\n preset: {\n '': 'tag',\n 'size=xsmall': 't4',\n 'size=small | size=medium': 't3',\n 'size=large | size=xlarge': 't2',\n },\n border: {\n // extend\n 'type=primary': '#clear',\n },\n\n '$min-inline-padding': '.5x',\n\n // Squeezed below its label, the label keeps its end padding as a box the\n // column can't hold: `stretch` keeps that box after the icon, and `clip`\n // hides the part past the edge. End content zeroes that padding, so then\n // only the content itself overflows, and it must stay visible.\n overflow: { '': 'clip', 'has-end-content': 'visible' },\n\n Label: {\n textAlign: 'center',\n placeSelf: 'center stretch',\n },\n },\n});\n\nexport interface CubeTagProps extends CubeItemProps {\n /**\n * Visual theme. Every value but `special` is a soft card — pale fill, tinted\n * border, strong colored text. `primary` and `special` are the same brand\n * hue at two weights: `primary` is the soft card, `special` the solid fill.\n */\n theme?:\n | 'default'\n | 'primary'\n | 'danger'\n | 'success'\n | 'warning'\n | 'note'\n | 'special';\n isClosable?: boolean;\n onClose?: () => void;\n closeButtonStyles?: Styles;\n}\n\nfunction Tag(allProps: CubeTagProps, ref) {\n const { t } = useI18n();\n\n let {\n theme = 'default',\n isClosable,\n onClose,\n closeButtonStyles,\n children,\n size = 'inline',\n mods,\n ...props\n } = allProps;\n\n let type = 'card';\n\n // `special` is the SOLID brand chip, and it is spelled as the `default`\n // theme's `primary` type rather than as a theme of its own. Not a typo to be\n // tidied into `theme = 'primary'`: that is the SOFT brand card\n // (`primary.card`), which is a different weight and reachable under its own\n // name. The two are deliberately separate spellings of the same hue.\n if (theme === 'special') {\n theme = 'default';\n type = 'primary';\n }\n\n return (\n <TagElement\n ref={ref}\n size={size}\n data-type={type}\n variant={`${theme}.${type}` as ItemVariant}\n mods={mods}\n actions={\n isClosable ? (\n <Item.Action\n aria-label={t('tag.close', 'Close')}\n styles={mergeStyleLayers({ color: '#current' }, closeButtonStyles)}\n icon={<CloseIcon />}\n onPress={onClose}\n />\n ) : undefined\n }\n {...props}\n >\n {children}\n </TagElement>\n );\n}\n\nconst _Tag = forwardRef(Tag);\n\n_Tag.displayName = 'Tag';\n\nexport { _Tag as Tag };\n"],"mappings":";;;;;;;;;;AASA,MAAMS,aAAaR,MAAMO,OAAM;CAC7BE,IAAI;CACJC,MAAM;CACNC,QAAQ;EACNC,SAAS;EACTC,QAAQ;GACN,IAAI;GACJ,eAAe;GACf,4BAA4B;GAC5B,4BAA4B;EAC9B;EACAC,QAAQ,EAEN,gBAAgB,SAClB;EAEA,uBAAuB;EAMvBC,UAAU;GAAE,IAAI;GAAQ,mBAAmB;EAAU;EAErDC,OAAO;GACLC,WAAW;GACXC,WAAW;EACb;CACF;AACF,CAAC;AAqBD,SAAAM,IAAAC,UAAAC,KAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CACE,MAAA,EAAAC,MAAc1B,QAAQ;CAAE,IAAA2B;CAAA,IAAAP;CAAA,IAAAF;CAAA,IAAAU;CAAA,IAAAT;CAAA,IAAAU;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAP,EAAA,OAAAF,UAAA;EAExB,CAAA,CAAAL,OAAAa,IAAAZ,YAAAC,SAAAC,mBAAAO,UAAAK,MAAAD,IAAAH,MAAA,GAAAC,SASIP;EAASE,EAAA,KAAAF;EAAAE,EAAA,KAAAG;EAAAH,EAAA,KAAAJ;EAAAI,EAAA,KAAAN;EAAAM,EAAA,KAAAI;EAAAJ,EAAA,KAAAL;EAAAK,EAAA,KAAAK;EAAAL,EAAA,KAAAM;EAAAN,EAAA,KAAAO;CAAA,OAAA;EAAAJ,WAAAH,EAAA;EAAAJ,oBAAAI,EAAA;EAAAN,aAAAM,EAAA;EAAAI,OAAAJ,EAAA;EAAAL,UAAAK,EAAA;EAAAK,QAAAL,EAAA;EAAAM,KAAAN,EAAA;EAAAO,KAAAP,EAAA;CAAA;CARX,IAAAP,QAAAa,OAAAG,KAAAA,IAAA,YAAAH;CAKA,MAAAE,OAAAD,OAAAE,KAAAA,IAAA,WAAAF;CAKF,IAAAG,OAAW;CAOX,IAAIjB,UAAU,WAAS;EACrBA,QAAQA;EACRiB,OAAOA;CAAH;CAQO,MAAAC,KAAA,GAAGlB,MAAK,GAAIiB;CAAqB,IAAAE;CAAA,IAAAZ,EAAA,OAAAJ,qBAAAI,EAAA,QAAAN,cAAAM,EAAA,QAAAL,WAAAK,EAAA,QAAAE,GAAA;EAGxCU,KAAAlB,aACE,oBAAAuB,MAAA,QAAA;GACc,cAAAf,EAAE,aAAa,OAAO;GAC1B,QAAAxB,iBAAiB,EAAAmC,OAAS,WAAW,GAAGjB,iBAAiB;GAC3D,MAAA,oBAAC,WAAD,CAAU,CAAA;GACPD,SAAAA;EAAO,CAAA,IALpBc,KAAAA;EAOaT,EAAA,KAAAJ;EAAAI,EAAA,MAAAN;EAAAM,EAAA,MAAAL;EAAAK,EAAA,MAAAE;EAAAF,EAAA,MAAAY;CAAA,OAAAA,KAAAZ,EAAA;CAAA,IAAAc;CAAA,IAAAd,EAAA,QAAAG,YAAAH,EAAA,QAAAI,QAAAJ,EAAA,QAAAK,SAAAL,EAAA,QAAAD,OAAAC,EAAA,QAAAQ,QAAAR,EAAA,QAAAW,MAAAX,EAAA,QAAAY,MAAAZ,EAAA,QAAAU,MAAA;EAdjBI,KAAA,oBAAC,YAAD;GACOf;GACCS;GACKE,aAAAA;GACF,SAAAC;GACHP;GAEJ,SAAAQ;GAOa,GAEXP;GAEHF;EAlBQ,CAAA;EAmBEH,EAAA,MAAAG;EAAAH,EAAA,MAAAI;EAAAJ,EAAA,MAAAK;EAAAL,EAAA,MAAAD;EAAAC,EAAA,MAAAQ;EAAAR,EAAA,MAAAW;EAAAX,EAAA,MAAAY;EAAAZ,EAAA,MAAAU;EAAAV,EAAA,MAAAc;CAAA,OAAAA,KAAAd,EAAA;CAAA,OAnBbc;AAmBa;AAIjB,MAAMC,OAAOzC,WAAWuB,GAAG;AAE3BkB,KAAKC,cAAc"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { useSlotProps } from "../../utils/react/Slots.js";
|
|
4
4
|
import { c } from "react/compiler-runtime";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { TEXT_DEFAULT_STYLES, TEXT_PROP_MAP, useTextProps } from "../Text.js";
|
|
4
4
|
import { highlightText } from "../highlightText.js";
|
|
@@ -26,10 +26,7 @@ const TextItemElement = tasty({
|
|
|
26
26
|
styles: TEXT_DEFAULT_STYLES,
|
|
27
27
|
variants: {
|
|
28
28
|
plain: TEXT_ITEM_STYLES,
|
|
29
|
-
table: {
|
|
30
|
-
...TEXT_ITEM_STYLES,
|
|
31
|
-
preset: "t3"
|
|
32
|
-
}
|
|
29
|
+
table: mergeStyles(TEXT_ITEM_STYLES, { preset: "t3" })
|
|
33
30
|
}
|
|
34
31
|
});
|
|
35
32
|
const TEXT_ITEM_STYLE_KEYS = Object.keys(TEXT_ITEM_STYLES);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TextItem.js","names":["BASE_STYLES","COLOR_STYLES","filterBaseProps","mergeStyles","Styles","tasty","TEXT_STYLES","forwardRef","HTMLAttributes","Ref","RefObject","useEffectEvent","useLayoutEffect","PositionProps","extractStyles","highlightText","CubeTextProps","TEXT_DEFAULT_STYLES","TEXT_PROP_MAP","useTextProps","AutoTooltipValue","useAutoTooltip","STYLE_LIST","const","CubeTextItemProps","Omit","highlight","highlightCaseSensitive","highlightStyles","tooltip","tooltipPlacement","TEXT_ITEM_STYLES","display","verticalAlign","width","whiteSpace","overflow","textOverflow","TextItemElement","as","styles","variants","plain","table","preset","TEXT_ITEM_STYLE_KEYS","Object","keys","Array","getStaticVariant","count","length","every","key","TextItemContent","t0","$","_c","handleRef","onAppearanceCommit","t1","t2","t3","t4","t5","t6","ref","labelRef","tooltipRef","t7","props","t8","element","current","undefined","qa","textProps","variant","shouldMeasure","t9","refreshOverflow","t10","t11","t12","t13","TextItem","HTMLElement","children","restProps","renderWithTooltip","isAutoTooltipEnabled","scheduleOverflowCheck","processedChildren","renderElement","tooltipTriggerProps","eventProps","displayName","_c"],"sources":["../../../../src/components/content/TextItem/TextItem.tsx"],"sourcesContent":["import {\n BASE_STYLES,\n COLOR_STYLES,\n filterBaseProps,\n mergeStyles,\n Styles,\n tasty,\n TEXT_STYLES,\n} from '@tenphi/tasty';\nimport {\n forwardRef,\n HTMLAttributes,\n Ref,\n RefObject,\n useEffectEvent,\n useLayoutEffect,\n} from 'react';\nimport { PositionProps } from 'react-aria';\n\nimport { extractStyles } from '../../../utils/styles';\nimport { highlightText } from '../highlightText';\nimport {\n CubeTextProps,\n TEXT_DEFAULT_STYLES,\n TEXT_PROP_MAP,\n useTextProps,\n} from '../Text';\nimport { AutoTooltipValue, useAutoTooltip } from '../use-auto-tooltip';\n\nconst STYLE_LIST = [...BASE_STYLES, ...TEXT_STYLES, ...COLOR_STYLES] as const;\n\n/**\n * TextItem truncates to one line with an ellipsis, so Text's `ellipsis` and\n * `nowrap` have nothing to switch.\n */\nexport interface CubeTextItemProps extends Omit<\n CubeTextProps,\n 'ellipsis' | 'nowrap'\n> {\n /**\n * String to highlight within children.\n * Only works when children is a plain string.\n */\n highlight?: string;\n /**\n * Whether highlight matching is case-sensitive.\n * @default false\n */\n highlightCaseSensitive?: boolean;\n /**\n * Custom styles for highlighted text.\n */\n highlightStyles?: Styles;\n /**\n * Tooltip content and configuration:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows children as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n * @default true\n */\n tooltip?: AutoTooltipValue;\n /**\n * Default tooltip placement.\n * @default \"top\"\n */\n tooltipPlacement?: PositionProps['placement'];\n}\n\nconst TEXT_ITEM_STYLES = {\n display: 'inline-block',\n verticalAlign: 'bottom',\n width: 'max 100%',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n} satisfies Styles;\n\nconst TextItemElement = tasty({\n as: 'span',\n styles: TEXT_DEFAULT_STYLES,\n variants: {\n plain: TEXT_ITEM_STYLES,\n table: { ...TEXT_ITEM_STYLES, preset: 't3' },\n },\n});\n\nconst TEXT_ITEM_STYLE_KEYS = Object.keys(TEXT_ITEM_STYLES) as Array<\n keyof typeof TEXT_ITEM_STYLES\n>;\n\nfunction getStaticVariant(styles: Styles) {\n const count = Object.keys(styles).length;\n\n if (\n !TEXT_ITEM_STYLE_KEYS.every((key) => styles[key] === TEXT_ITEM_STYLES[key])\n ) {\n return;\n }\n\n if (count === TEXT_ITEM_STYLE_KEYS.length) return 'plain';\n if (count === TEXT_ITEM_STYLE_KEYS.length + 1 && styles.preset === 't3')\n return 'table';\n}\n\n/** Own the DOM ref outside the tooltip's render prop so Compiler can retain it. */\nfunction TextItemContent({\n ref,\n labelRef,\n tooltipRef,\n onAppearanceCommit,\n ...props\n}: CubeTextProps & {\n ref?: Ref<HTMLElement>;\n labelRef: (element: HTMLElement | null) => void;\n tooltipRef?: RefObject<HTMLElement | null>;\n onAppearanceCommit?: () => void;\n}) {\n const handleRef = (element: HTMLElement | null) => {\n if (typeof ref === 'function') ref(element);\n else if (ref) ref.current = element;\n\n if (tooltipRef) tooltipRef.current = element;\n\n labelRef(element);\n };\n\n // Match tasty(Text)'s prop/style merge before Text applies its slot. A reset\n // here removes the TextItem default and restores Text's native default.\n const textProps = useTextProps({\n qa: 'TextItem',\n ...props,\n as: props.as ?? undefined,\n element: props.element || undefined,\n styles: mergeStyles(TEXT_ITEM_STYLES, props.styles),\n });\n const variant = getStaticVariant(textProps.styles);\n\n const shouldMeasure = !!onAppearanceCommit;\n const refreshOverflow = useEffectEvent(() => onAppearanceCommit?.());\n\n // A fixed box can change its text width without a ResizeObserver delivery.\n // Queue after its props/slot commit, as the former ref reattachment did.\n useLayoutEffect(() => {\n if (shouldMeasure) refreshOverflow();\n }, [textProps, shouldMeasure]);\n\n // Reuse Tasty's static-style cache for common labels, with one native owner\n // across style/slot changes so a focused label never remounts for styling.\n return (\n <TextItemElement\n {...textProps}\n variant={variant}\n styles={variant ? undefined : textProps.styles}\n ref={handleRef}\n />\n );\n}\n\nexport const TextItem = forwardRef<HTMLElement, CubeTextItemProps>(\n function TextItem(props, ref) {\n const {\n children,\n highlight,\n highlightCaseSensitive = false,\n highlightStyles,\n tooltip = true,\n tooltipPlacement = 'top',\n ...restProps\n } = props;\n\n // Extract style props (preset, color, etc.) to pass via styles prop\n const styles = extractStyles(restProps, STYLE_LIST, {}, TEXT_PROP_MAP);\n\n const {\n labelRef,\n renderWithTooltip,\n isAutoTooltipEnabled,\n scheduleOverflowCheck,\n } = useAutoTooltip({ tooltip, children });\n\n // Process children with highlight if applicable\n const processedChildren =\n typeof children === 'string' && highlight\n ? highlightText(\n children,\n highlight,\n highlightCaseSensitive,\n highlightStyles,\n )\n : children;\n\n const renderElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n return (\n <TextItemContent\n {...filterBaseProps(restProps, { eventProps: true })}\n {...tooltipTriggerProps}\n ref={ref}\n labelRef={labelRef}\n tooltipRef={tooltipRef}\n onAppearanceCommit={\n isAutoTooltipEnabled ? scheduleOverflowCheck : undefined\n }\n styles={styles}\n >\n {processedChildren}\n </TextItemContent>\n );\n };\n\n return renderWithTooltip(renderElement, tooltipPlacement);\n },\n);\n\nTextItem.displayName = 'TextItem';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TextItem.js","names":["BASE_STYLES","COLOR_STYLES","filterBaseProps","mergeStyles","Styles","tasty","TEXT_STYLES","forwardRef","HTMLAttributes","Ref","RefObject","useEffectEvent","useLayoutEffect","PositionProps","extractStyles","highlightText","CubeTextProps","TEXT_DEFAULT_STYLES","TEXT_PROP_MAP","useTextProps","AutoTooltipValue","useAutoTooltip","STYLE_LIST","const","CubeTextItemProps","Omit","highlight","highlightCaseSensitive","highlightStyles","tooltip","tooltipPlacement","TEXT_ITEM_STYLES","display","verticalAlign","width","whiteSpace","overflow","textOverflow","TextItemElement","as","styles","variants","plain","table","preset","TEXT_ITEM_STYLE_KEYS","Object","keys","Array","getStaticVariant","count","length","every","key","TextItemContent","t0","$","_c","handleRef","onAppearanceCommit","t1","t2","t3","t4","t5","t6","ref","labelRef","tooltipRef","t7","props","t8","element","current","undefined","qa","textProps","variant","shouldMeasure","t9","refreshOverflow","t10","t11","t12","t13","TextItem","HTMLElement","children","restProps","renderWithTooltip","isAutoTooltipEnabled","scheduleOverflowCheck","processedChildren","renderElement","tooltipTriggerProps","eventProps","displayName","_c"],"sources":["../../../../src/components/content/TextItem/TextItem.tsx"],"sourcesContent":["import {\n BASE_STYLES,\n COLOR_STYLES,\n filterBaseProps,\n mergeStyles,\n Styles,\n tasty,\n TEXT_STYLES,\n} from '@tenphi/tasty';\nimport {\n forwardRef,\n HTMLAttributes,\n Ref,\n RefObject,\n useEffectEvent,\n useLayoutEffect,\n} from 'react';\nimport { PositionProps } from 'react-aria';\n\nimport { extractStyles } from '../../../utils/styles';\nimport { highlightText } from '../highlightText';\nimport {\n CubeTextProps,\n TEXT_DEFAULT_STYLES,\n TEXT_PROP_MAP,\n useTextProps,\n} from '../Text';\nimport { AutoTooltipValue, useAutoTooltip } from '../use-auto-tooltip';\n\nconst STYLE_LIST = [...BASE_STYLES, ...TEXT_STYLES, ...COLOR_STYLES] as const;\n\n/**\n * TextItem truncates to one line with an ellipsis, so Text's `ellipsis` and\n * `nowrap` have nothing to switch.\n */\nexport interface CubeTextItemProps extends Omit<\n CubeTextProps,\n 'ellipsis' | 'nowrap'\n> {\n /**\n * String to highlight within children.\n * Only works when children is a plain string.\n */\n highlight?: string;\n /**\n * Whether highlight matching is case-sensitive.\n * @default false\n */\n highlightCaseSensitive?: boolean;\n /**\n * Custom styles for highlighted text.\n */\n highlightStyles?: Styles;\n /**\n * Tooltip content and configuration:\n * - string: simple tooltip text\n * - true: auto tooltip on overflow (shows children as tooltip when truncated)\n * - object: advanced configuration with optional auto property\n * @default true\n */\n tooltip?: AutoTooltipValue;\n /**\n * Default tooltip placement.\n * @default \"top\"\n */\n tooltipPlacement?: PositionProps['placement'];\n}\n\nconst TEXT_ITEM_STYLES = {\n display: 'inline-block',\n verticalAlign: 'bottom',\n width: 'max 100%',\n whiteSpace: 'nowrap',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n} satisfies Styles;\n\nconst TextItemElement = tasty({\n as: 'span',\n styles: TEXT_DEFAULT_STYLES,\n variants: {\n plain: TEXT_ITEM_STYLES,\n table: mergeStyles(TEXT_ITEM_STYLES, { preset: 't3' }),\n },\n});\n\nconst TEXT_ITEM_STYLE_KEYS = Object.keys(TEXT_ITEM_STYLES) as Array<\n keyof typeof TEXT_ITEM_STYLES\n>;\n\nfunction getStaticVariant(styles: Styles) {\n const count = Object.keys(styles).length;\n\n if (\n !TEXT_ITEM_STYLE_KEYS.every((key) => styles[key] === TEXT_ITEM_STYLES[key])\n ) {\n return;\n }\n\n if (count === TEXT_ITEM_STYLE_KEYS.length) return 'plain';\n if (count === TEXT_ITEM_STYLE_KEYS.length + 1 && styles.preset === 't3')\n return 'table';\n}\n\n/** Own the DOM ref outside the tooltip's render prop so Compiler can retain it. */\nfunction TextItemContent({\n ref,\n labelRef,\n tooltipRef,\n onAppearanceCommit,\n ...props\n}: CubeTextProps & {\n ref?: Ref<HTMLElement>;\n labelRef: (element: HTMLElement | null) => void;\n tooltipRef?: RefObject<HTMLElement | null>;\n onAppearanceCommit?: () => void;\n}) {\n const handleRef = (element: HTMLElement | null) => {\n if (typeof ref === 'function') ref(element);\n else if (ref) ref.current = element;\n\n if (tooltipRef) tooltipRef.current = element;\n\n labelRef(element);\n };\n\n // Match tasty(Text)'s prop/style merge before Text applies its slot. A reset\n // here removes the TextItem default and restores Text's native default.\n const textProps = useTextProps({\n qa: 'TextItem',\n ...props,\n as: props.as ?? undefined,\n element: props.element || undefined,\n styles: mergeStyles(TEXT_ITEM_STYLES, props.styles),\n });\n const variant = getStaticVariant(textProps.styles);\n\n const shouldMeasure = !!onAppearanceCommit;\n const refreshOverflow = useEffectEvent(() => onAppearanceCommit?.());\n\n // A fixed box can change its text width without a ResizeObserver delivery.\n // Queue after its props/slot commit, as the former ref reattachment did.\n useLayoutEffect(() => {\n if (shouldMeasure) refreshOverflow();\n }, [textProps, shouldMeasure]);\n\n // Reuse Tasty's static-style cache for common labels, with one native owner\n // across style/slot changes so a focused label never remounts for styling.\n return (\n <TextItemElement\n {...textProps}\n variant={variant}\n styles={variant ? undefined : textProps.styles}\n ref={handleRef}\n />\n );\n}\n\nexport const TextItem = forwardRef<HTMLElement, CubeTextItemProps>(\n function TextItem(props, ref) {\n const {\n children,\n highlight,\n highlightCaseSensitive = false,\n highlightStyles,\n tooltip = true,\n tooltipPlacement = 'top',\n ...restProps\n } = props;\n\n // Extract style props (preset, color, etc.) to pass via styles prop\n const styles = extractStyles(restProps, STYLE_LIST, {}, TEXT_PROP_MAP);\n\n const {\n labelRef,\n renderWithTooltip,\n isAutoTooltipEnabled,\n scheduleOverflowCheck,\n } = useAutoTooltip({ tooltip, children });\n\n // Process children with highlight if applicable\n const processedChildren =\n typeof children === 'string' && highlight\n ? highlightText(\n children,\n highlight,\n highlightCaseSensitive,\n highlightStyles,\n )\n : children;\n\n const renderElement = (\n tooltipTriggerProps?: HTMLAttributes<HTMLElement>,\n tooltipRef?: RefObject<HTMLElement>,\n ) => {\n return (\n <TextItemContent\n {...filterBaseProps(restProps, { eventProps: true })}\n {...tooltipTriggerProps}\n ref={ref}\n labelRef={labelRef}\n tooltipRef={tooltipRef}\n onAppearanceCommit={\n isAutoTooltipEnabled ? scheduleOverflowCheck : undefined\n }\n styles={styles}\n >\n {processedChildren}\n </TextItemContent>\n );\n };\n\n return renderWithTooltip(renderElement, tooltipPlacement);\n },\n);\n\nTextItem.displayName = 'TextItem';\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../utils/styles.js";
|
|
3
3
|
import { useSlotProps } from "../../utils/react/Slots.js";
|
|
4
4
|
import { TEXT_PROP_MAP } from "./Text.js";
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { extractStyles } from "../../../utils/styles.js";
|
|
3
3
|
import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
5
5
|
import { useI18n } from "../../../i18n/useI18n.js";
|
|
6
6
|
import { SIZES, SIZE_NAME_TO_KEY } from "../../../tokens/sizes.js";
|
|
7
|
-
import { TreeElement, TreeScrollContainer } from "./styled.js";
|
|
7
|
+
import { TreeElement, TreeScrollContainer, TreeSizer } from "./styled.js";
|
|
8
8
|
import { buildTreeIndex } from "./tree-index.js";
|
|
9
9
|
import { TreeNode } from "./TreeNode.js";
|
|
10
10
|
import { useCheckboxTree } from "./use-checkbox-tree.js";
|
|
@@ -230,15 +230,11 @@ function TreeBase(props, ref) {
|
|
|
230
230
|
paddingStart: containerPadding,
|
|
231
231
|
paddingEnd: containerPadding
|
|
232
232
|
});
|
|
233
|
-
const
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
}, [height]);
|
|
237
|
-
const
|
|
238
|
-
position: "relative",
|
|
239
|
-
width: "100%",
|
|
240
|
-
height: `${rowVirtualizer.getTotalSize()}px`
|
|
241
|
-
}), [rowVirtualizer.getTotalSize()]);
|
|
233
|
+
const treeTokens = useMemo(() => ({
|
|
234
|
+
"$tree-height": height == null ? void 0 : `${height}px`,
|
|
235
|
+
"$tree-padding": `${containerPadding}px`
|
|
236
|
+
}), [height, containerPadding]);
|
|
237
|
+
const totalSize = rowVirtualizer.getTotalSize();
|
|
242
238
|
/**
|
|
243
239
|
* Each scroll effect tracks its own "last scrolled" target instead
|
|
244
240
|
* of sharing one ref. A shared ref creates a feedback loop: keyboard
|
|
@@ -309,12 +305,12 @@ function TreeBase(props, ref) {
|
|
|
309
305
|
qa: qa ?? "Tree",
|
|
310
306
|
mods,
|
|
311
307
|
styles: baseStyles,
|
|
312
|
-
|
|
308
|
+
tokens: treeTokens,
|
|
313
309
|
children: /* @__PURE__ */ jsx(TreeScrollContainer, {
|
|
314
310
|
ref: mergedScrollRef,
|
|
315
|
-
children: /* @__PURE__ */ jsx(
|
|
311
|
+
children: /* @__PURE__ */ jsx(TreeSizer, {
|
|
316
312
|
role: "presentation",
|
|
317
|
-
|
|
313
|
+
tokens: { "$tree-content-height": `${totalSize}px` },
|
|
318
314
|
children: rowVirtualizer.getVirtualItems().map((virtualItem) => {
|
|
319
315
|
const node_5 = visibleNodes[virtualItem.index];
|
|
320
316
|
if (!node_5) return null;
|
|
@@ -333,13 +329,7 @@ function TreeBase(props, ref) {
|
|
|
333
329
|
size,
|
|
334
330
|
itemProps,
|
|
335
331
|
rowStyles,
|
|
336
|
-
|
|
337
|
-
position: "absolute",
|
|
338
|
-
top: 0,
|
|
339
|
-
left: containerPadding,
|
|
340
|
-
right: containerPadding,
|
|
341
|
-
transform: `translateY(${virtualItem.start}px)`
|
|
342
|
-
},
|
|
332
|
+
virtualOffset: virtualItem.start,
|
|
343
333
|
virtualRef: rowVirtualizer.measureElement,
|
|
344
334
|
virtualIndex: virtualItem.index,
|
|
345
335
|
menu: treeMenu,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tree.js","names":["useVirtualizer","OUTER_STYLES","forwardRef","useLayoutEffect","useMemo","useRef","useTree","Item","useTreeState","useEvent","useI18n","SIZE_NAME_TO_KEY","SIZES","mergeRefs","extractStyles","TreeElement","TreeScrollContainer","buildTreeIndex","TreeNode","useCheckboxTree","useLoadData","Key","Node","Selection","CSSProperties","ForwardedRef","ReactElement","ReactNode","CubeTreeNodeData","CubeTreeProps","TreeOnExpandInfo","TreeOnSelectInfo","TreeSelectionMode","renderItem","node","textValue","title","String","key","children","collectDisabledKeys","treeData","treeIsDisabled","keys","visit","nodes","isDisabled","push","expandWithParents","parentOf","Map","length","set","Set","parent","get","add","Array","from","findToggledKey","previous","next","added","k","has","resolveSelectionMode","selectionMode","isSelectable","TreeBase","props","ref","HTMLDivElement","isCheckable","selectionModeProp","size","shape","containerPadding","defaultExpandedKeys","expandedKeys","autoExpandParent","defaultCheckedKeys","checkedKeys","defaultSelectedKeys","selectedKeys","height","loadData","onExpand","onCheck","onSelect","itemProps","rowStyles","ariaLabel","qa","menu","treeMenu","contextMenu","treeContextMenu","onAction","treeOnAction","menuTriggerProps","menuProps","otherProps","baseStyles","treeRef","scrollRef","treeIndex","nodesByKey","byKey","disabledKeys","effectiveExpandedKeys","effectiveDefaultExpandedKeys","checkbox","index","loadDataController","initialExpandedKeys","previousExpandedRef","handleExpandedChange","nextSet","onExpandedChanged","undefined","current","toggled","info","expanded","previousSelectionRef","handleSelectionChange","selection","arr","state","collection","getKeys","getItem","type","selectedNodes","map","filter","n","selected","hasOnSelect","t","treeLabel","ariaProps","onSelectionChange","onExpandedChange","disabledBehavior","const","items","baseState","getChildren","patched","Object","create","Iterable","childNodes","gridProps","visibleNodes","out","visibleNodesRef","rowVirtualizer","count","getScrollElement","getItemKey","estimateSize","gap","overscan","paddingStart","paddingEnd","treeStyle","sizerStyle","position","width","getTotalSize","lastFocusedScrollRef","lastSelectedScrollRef","focusedKey","selectionManager","findIndex","scrollToIndex","align","target","mods","mergedScrollRef","getVirtualItems","virtualItem","keyStr","data","checkedSet","halfCheckedSet","loadingKeys","top","left","right","transform","start","measureElement","toggle","_Tree","displayName","Tree"],"sources":["../../../../src/components/content/Tree/Tree.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { OUTER_STYLES } from '@tenphi/tasty';\nimport { forwardRef, useLayoutEffect, useMemo, useRef } from 'react';\nimport { useTree } from 'react-aria';\nimport { Item, useTreeState } from 'react-stately';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\nimport { SIZE_NAME_TO_KEY, SIZES } from '../../../tokens/sizes';\nimport { mergeRefs } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\n\nimport { TreeElement, TreeScrollContainer } from './styled';\nimport { buildTreeIndex } from './tree-index';\nimport { TreeNode } from './TreeNode';\nimport { useCheckboxTree } from './use-checkbox-tree';\nimport { useLoadData } from './use-load-data';\n\nimport type { Key, Node, Selection } from '@react-types/shared';\nimport type {\n CSSProperties,\n ForwardedRef,\n ReactElement,\n ReactNode,\n} from 'react';\nimport type {\n CubeTreeNodeData,\n CubeTreeProps,\n TreeOnExpandInfo,\n TreeOnSelectInfo,\n TreeSelectionMode,\n} from './types';\n\n/**\n * Render an `<Item>` for React Stately's collection builder.\n *\n * The visible content is rendered by `TreeNode` via `nodesByKey`,\n * so `<Item>`'s body is only used by Stately for the collection\n * (`textValue` for keyboard nav, `childItems` for nested traversal).\n */\nfunction renderItem(node: CubeTreeNodeData): ReactElement {\n const textValue =\n typeof node.title === 'string' ? node.title : String(node.key);\n return (\n <Item\n key={node.key}\n textValue={textValue}\n childItems={node.children as CubeTreeNodeData[] | undefined}\n >\n {node.title as ReactNode}\n </Item>\n );\n}\n\nfunction collectDisabledKeys(\n treeData: CubeTreeNodeData[],\n treeIsDisabled: boolean,\n): string[] {\n const keys: string[] = [];\n const visit = (nodes: CubeTreeNodeData[]) => {\n for (const node of nodes) {\n if (treeIsDisabled || node.isDisabled) keys.push(node.key);\n if (node.children) visit(node.children);\n }\n };\n visit(treeData);\n return keys;\n}\n\n/** Expand the supplied keys with all of their ancestor keys. */\nfunction expandWithParents(\n keys: string[] | undefined,\n parentOf: Map<string, string | null>,\n): string[] | undefined {\n if (!keys || keys.length === 0) return keys;\n const set = new Set<string>(keys);\n for (const key of keys) {\n let parent = parentOf.get(key);\n while (parent) {\n set.add(parent);\n parent = parentOf.get(parent);\n }\n }\n return Array.from(set);\n}\n\n/**\n * Diff two key sets to find the single key that was added or removed.\n * Returns `null` when both sets are equal.\n */\nfunction findToggledKey(\n previous: Set<Key>,\n next: Set<Key>,\n): { key: Key; added: boolean } | null {\n for (const k of next) {\n if (!previous.has(k)) return { key: k, added: true };\n }\n for (const k of previous) {\n if (!next.has(k)) return { key: k, added: false };\n }\n return null;\n}\n\nfunction resolveSelectionMode(\n selectionMode: TreeSelectionMode | undefined,\n isSelectable: boolean | undefined,\n): TreeSelectionMode {\n if (selectionMode != null) return selectionMode;\n if (isSelectable === false) return 'none';\n return 'single';\n}\n\nfunction TreeBase(props: CubeTreeProps, ref: ForwardedRef<HTMLDivElement>) {\n const {\n treeData,\n isCheckable = false,\n isSelectable,\n selectionMode: selectionModeProp,\n size = 'medium',\n shape = 'default',\n containerPadding = 4,\n isDisabled = false,\n defaultExpandedKeys,\n expandedKeys,\n autoExpandParent = false,\n defaultCheckedKeys,\n checkedKeys,\n defaultSelectedKeys,\n selectedKeys,\n height,\n loadData,\n onExpand,\n onCheck,\n onSelect,\n itemProps,\n rowStyles,\n ariaLabel,\n qa,\n menu: treeMenu,\n contextMenu: treeContextMenu,\n onAction: treeOnAction,\n menuTriggerProps,\n menuProps,\n ...otherProps\n } = props;\n\n const baseStyles = extractStyles(otherProps, OUTER_STYLES);\n\n const treeRef = useRef<HTMLDivElement>(null);\n const scrollRef = useRef<HTMLDivElement>(null);\n\n const treeIndex = useMemo(() => buildTreeIndex(treeData), [treeData]);\n const nodesByKey = treeIndex.byKey;\n const parentOf = treeIndex.parentOf;\n\n const disabledKeys = useMemo(\n () => collectDisabledKeys(treeData, isDisabled),\n [treeData, isDisabled],\n );\n\n const selectionMode = resolveSelectionMode(selectionModeProp, isSelectable);\n\n const effectiveExpandedKeys = useMemo(\n () =>\n autoExpandParent\n ? expandWithParents(expandedKeys, parentOf)\n : expandedKeys,\n [autoExpandParent, expandedKeys, parentOf],\n );\n\n const effectiveDefaultExpandedKeys = useMemo(\n () =>\n autoExpandParent\n ? expandWithParents(defaultExpandedKeys, parentOf)\n : defaultExpandedKeys,\n [autoExpandParent, defaultExpandedKeys, parentOf],\n );\n\n const checkbox = useCheckboxTree({\n treeData,\n index: treeIndex,\n isCheckable,\n defaultCheckedKeys,\n checkedKeys,\n onCheck,\n });\n\n const loadDataController = useLoadData({\n nodesByKey,\n loadData,\n initialExpandedKeys: effectiveExpandedKeys ?? effectiveDefaultExpandedKeys,\n });\n\n /**\n * In controlled mode, `previous` is read from `effectiveExpandedKeys`;\n * in uncontrolled mode this ref is the only source. Initialized from\n * the *effective* (ancestor-expanded) keys so the first toggle diffs\n * correctly.\n */\n const previousExpandedRef = useRef<Set<Key>>(\n new Set<Key>(effectiveExpandedKeys ?? effectiveDefaultExpandedKeys ?? []),\n );\n\n const handleExpandedChange = useEvent((nextSet: Set<Key>) => {\n loadDataController.onExpandedChanged(nextSet);\n\n const previous =\n expandedKeys !== undefined\n ? new Set<Key>(effectiveExpandedKeys ?? [])\n : previousExpandedRef.current;\n previousExpandedRef.current = new Set<Key>(nextSet);\n\n if (!onExpand) return;\n\n const toggled = findToggledKey(previous, nextSet);\n if (!toggled) return;\n\n const node = nodesByKey.get(String(toggled.key));\n if (!node) return;\n\n const info: TreeOnExpandInfo = {\n expanded: toggled.added,\n node,\n };\n onExpand(Array.from(nextSet), info);\n });\n\n /**\n * Same pattern as `previousExpandedRef`: in controlled mode we read\n * from `selectedKeys`; in uncontrolled mode this ref tracks state.\n */\n const previousSelectionRef = useRef<Set<Key>>(\n new Set<Key>(selectedKeys ?? defaultSelectedKeys ?? []),\n );\n\n /**\n * `useEvent` captures the closure lazily, so `state` (declared below\n * `ariaProps` / `useTreeState`) is safely accessible at call time.\n */\n const handleSelectionChange = useEvent((selection: Selection) => {\n if (!onSelect) return;\n let arr: Key[];\n if (selection === 'all') {\n // `nodesByKey` contains the full tree; use the collection's visible\n // keys so we don't leak keys under collapsed parents.\n arr = [];\n for (const key of state.collection.getKeys()) {\n const node = state.collection.getItem(key);\n if (node && node.type === 'item') arr.push(key);\n }\n } else {\n arr = Array.from(selection);\n }\n\n const nextSet = new Set<Key>(arr);\n const previous =\n selectedKeys !== undefined\n ? new Set<Key>(selectedKeys ?? [])\n : previousSelectionRef.current;\n previousSelectionRef.current = nextSet;\n\n const toggled = findToggledKey(previous, nextSet);\n if (!toggled) return;\n\n const node = nodesByKey.get(String(toggled.key));\n if (!node) return;\n\n const selectedNodes = arr\n .map((k) => nodesByKey.get(String(k)))\n .filter((n): n is CubeTreeNodeData => !!n);\n\n const info: TreeOnSelectInfo = {\n selected: toggled.added,\n node,\n selectedNodes,\n };\n\n onSelect(arr, info);\n });\n\n const hasOnSelect = onSelect != null;\n const { t } = useI18n();\n const treeLabel = ariaLabel ?? t('tree.ariaLabel', 'Tree');\n\n const ariaProps = useMemo(\n () => ({\n selectionMode,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange:\n hasOnSelect && selectionMode !== 'none'\n ? handleSelectionChange\n : undefined,\n expandedKeys: effectiveExpandedKeys,\n defaultExpandedKeys: effectiveDefaultExpandedKeys,\n onExpandedChange: handleExpandedChange,\n disabledKeys,\n disabledBehavior: 'all' as const,\n items: treeData,\n children: renderItem as any,\n 'aria-label': treeLabel,\n }),\n [\n selectionMode,\n selectedKeys,\n defaultSelectedKeys,\n hasOnSelect,\n handleSelectionChange,\n effectiveExpandedKeys,\n effectiveDefaultExpandedKeys,\n handleExpandedChange,\n disabledKeys,\n treeData,\n treeLabel,\n ],\n );\n\n const baseState = useTreeState<CubeTreeNodeData>(ariaProps);\n\n // The legacy `TreeCollection` from `useTreeState` lacks `getChildren`,\n // but `useTree` calls it for nested rows. Derive a patched state.\n // TODO: Remove this patch when upgrading to a react-stately version\n // that ships `getChildren` on TreeCollection natively.\n const state = useMemo(() => {\n const collection = baseState.collection;\n if (typeof (collection as any).getChildren === 'function') {\n return baseState;\n }\n const patched = Object.create(collection);\n patched.getChildren = (key: Key): Iterable<Node<CubeTreeNodeData>> => {\n const node = collection.getItem(key);\n return node ? Array.from(node.childNodes) : [];\n };\n return { ...baseState, collection: patched };\n }, [baseState]);\n\n const { gridProps } = useTree(ariaProps, state, treeRef);\n\n const visibleNodes: Node<CubeTreeNodeData>[] = useMemo(() => {\n const out: Node<CubeTreeNodeData>[] = [];\n for (const key of state.collection.getKeys()) {\n const node = state.collection.getItem(key);\n if (node && node.type === 'item') out.push(node);\n }\n return out;\n }, [state.collection]);\n\n const visibleNodesRef = useRef(visibleNodes);\n visibleNodesRef.current = visibleNodes;\n\n // ----- Virtualization -----\n const rowVirtualizer = useVirtualizer({\n count: visibleNodes.length,\n getScrollElement: () => scrollRef.current,\n getItemKey: (index: number) => {\n const node = visibleNodesRef.current[index];\n return node?.key ?? index;\n },\n estimateSize: () => SIZES[SIZE_NAME_TO_KEY[size]],\n gap: 1,\n overscan: 10,\n paddingStart: containerPadding,\n paddingEnd: containerPadding,\n });\n\n const treeStyle = useMemo<CSSProperties | undefined>(() => {\n if (height == null) return undefined;\n return { ['--tree-height' as keyof CSSProperties]: `${height}px` };\n }, [height]);\n\n const sizerStyle = useMemo<CSSProperties>(\n () => ({\n position: 'relative',\n width: '100%',\n height: `${rowVirtualizer.getTotalSize()}px`,\n }),\n [rowVirtualizer.getTotalSize()],\n );\n\n /**\n * Each scroll effect tracks its own \"last scrolled\" target instead\n * of sharing one ref. A shared ref creates a feedback loop: keyboard\n * nav updates the focused-key ref to the new row, and any subsequent\n * `visibleNodes` change OR `selectedKeys` array-identity change\n * (very common — `selectedKeys={[value]}` allocates a fresh array\n * every parent render) re-runs the selectedKeys effect, which sees\n * the ref no longer matches `selectedKeys[0]` and yanks the viewport\n * back to the selected row. Two refs let each effect dedupe against\n * its own intent only; the cost is at most one duplicate\n * `scrollToIndex` call when click updates focus and selection in the\n * same render (idempotent — both target the same index).\n */\n const lastFocusedScrollRef = useRef<Key | null>(null);\n const lastSelectedScrollRef = useRef<string | null>(null);\n\n /**\n * Keep the focused row visible during keyboard navigation.\n *\n * Uses `rowVirtualizer.scrollToIndex` (instead of\n * `querySelector + scrollIntoView`) so the scroll lands even when the\n * target row is outside the virtualizer's currently rendered window.\n * `align: 'auto'` only scrolls when needed, matching the prior\n * `scrollIntoView({ block: 'nearest' })` behavior.\n */\n useLayoutEffect(() => {\n const focusedKey = state.selectionManager.focusedKey;\n if (focusedKey == null) return;\n if (lastFocusedScrollRef.current === focusedKey) return;\n\n const index = visibleNodesRef.current.findIndex(\n (n) => n.key === focusedKey,\n );\n if (index < 0) return;\n\n rowVirtualizer.scrollToIndex(index, { align: 'auto' });\n lastFocusedScrollRef.current = focusedKey;\n }, [state.selectionManager.focusedKey, rowVirtualizer]);\n\n /**\n * Scroll into view when controlled `selectedKeys` changes externally.\n *\n * Selection-manager `focusedKey` only updates on explicit user\n * interaction (click / keyboard) — it does NOT track controlled\n * `selectedKeys` prop changes. So when a parent updates the prop\n * (e.g. opening a file from elsewhere), we need a separate effect\n * to bring the row into view.\n *\n * Re-runs on `visibleNodes` so we retry once parents are expanded\n * (the row is invisible to the virtualizer until then).\n */\n useLayoutEffect(() => {\n if (selectedKeys == null) return;\n const target = selectedKeys[0];\n if (target == null) return;\n if (lastSelectedScrollRef.current === target) return;\n\n const index = visibleNodes.findIndex((n) => String(n.key) === target);\n if (index < 0) return;\n\n rowVirtualizer.scrollToIndex(index, { align: 'auto' });\n lastSelectedScrollRef.current = target;\n }, [selectedKeys, visibleNodes, rowVirtualizer]);\n\n const mods = useMemo(\n () => ({\n 'has-height': height != null,\n shape,\n }),\n [height, shape],\n );\n\n // The forwarded ref points at the inner scroll container so\n // consumers can drive `scrollTop` directly. `treeRef` (used by\n // `useTree` for keyboard handling and as the role=\"treegrid\"\n // anchor) stays internal on `TreeElement`.\n const mergedScrollRef = useMemo(\n () => mergeRefs(ref, scrollRef),\n [ref, scrollRef],\n );\n\n return (\n <TreeElement\n {...gridProps}\n ref={treeRef}\n qa={qa ?? 'Tree'}\n mods={mods}\n styles={baseStyles}\n style={treeStyle}\n >\n <TreeScrollContainer ref={mergedScrollRef}>\n <div role=\"presentation\" style={sizerStyle}>\n {rowVirtualizer.getVirtualItems().map((virtualItem) => {\n const node = visibleNodes[virtualItem.index];\n if (!node) return null;\n const keyStr = String(node.key);\n const data = nodesByKey.get(keyStr);\n if (!data) return null;\n return (\n <TreeNode\n key={node.key}\n node={node}\n data={data}\n state={state}\n isCheckable={isCheckable}\n isExpanded={state.expandedKeys.has(node.key)}\n isChecked={checkbox.checkedSet.has(keyStr)}\n isIndeterminate={checkbox.halfCheckedSet.has(keyStr)}\n isLoading={loadDataController.loadingKeys.has(keyStr)}\n size={size}\n itemProps={itemProps}\n rowStyles={rowStyles}\n virtualStyle={{\n position: 'absolute',\n top: 0,\n left: containerPadding,\n right: containerPadding,\n transform: `translateY(${virtualItem.start}px)`,\n }}\n virtualRef={rowVirtualizer.measureElement}\n virtualIndex={virtualItem.index}\n menu={treeMenu}\n contextMenu={treeContextMenu}\n menuTriggerProps={menuTriggerProps}\n menuProps={menuProps}\n onToggleChecked={checkbox.toggle}\n onAction={treeOnAction}\n />\n );\n })}\n </div>\n </TreeScrollContainer>\n </TreeElement>\n );\n}\n\nconst _Tree = forwardRef(TreeBase);\n_Tree.displayName = 'Tree';\n\n/**\n * Hierarchical data display with optional checkboxes, single/multi\n * selection, async lazy loading, and keyboard navigation.\n *\n * Built on `useTree` / `useTreeState` (React Aria + React Stately) and\n * styled with Tasty.\n *\n * @example\n * ```tsx\n * <Tree\n * treeData={data}\n * isCheckable\n * selectionMode=\"none\"\n * defaultExpandedKeys={['root']}\n * onCheck={(keys) => console.log(keys)}\n * />\n * ```\n */\nexport const Tree = _Tree;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Tree.js","names":["useVirtualizer","OUTER_STYLES","forwardRef","useLayoutEffect","useMemo","useRef","useTree","Item","useTreeState","useEvent","useI18n","SIZE_NAME_TO_KEY","SIZES","mergeRefs","extractStyles","TreeElement","TreeScrollContainer","TreeSizer","buildTreeIndex","TreeNode","useCheckboxTree","useLoadData","Key","Node","Selection","ForwardedRef","ReactElement","ReactNode","CubeTreeNodeData","CubeTreeProps","TreeOnExpandInfo","TreeOnSelectInfo","TreeSelectionMode","renderItem","node","textValue","title","String","key","children","collectDisabledKeys","treeData","treeIsDisabled","keys","visit","nodes","isDisabled","push","expandWithParents","parentOf","Map","length","set","Set","parent","get","add","Array","from","findToggledKey","previous","next","added","k","has","resolveSelectionMode","selectionMode","isSelectable","TreeBase","props","ref","HTMLDivElement","isCheckable","selectionModeProp","size","shape","containerPadding","defaultExpandedKeys","expandedKeys","autoExpandParent","defaultCheckedKeys","checkedKeys","defaultSelectedKeys","selectedKeys","height","loadData","onExpand","onCheck","onSelect","itemProps","rowStyles","ariaLabel","qa","menu","treeMenu","contextMenu","treeContextMenu","onAction","treeOnAction","menuTriggerProps","menuProps","otherProps","baseStyles","treeRef","scrollRef","treeIndex","nodesByKey","byKey","disabledKeys","effectiveExpandedKeys","effectiveDefaultExpandedKeys","checkbox","index","loadDataController","initialExpandedKeys","previousExpandedRef","handleExpandedChange","nextSet","onExpandedChanged","undefined","current","toggled","info","expanded","previousSelectionRef","handleSelectionChange","selection","arr","state","collection","getKeys","getItem","type","selectedNodes","map","filter","n","selected","hasOnSelect","t","treeLabel","ariaProps","onSelectionChange","onExpandedChange","disabledBehavior","const","items","baseState","getChildren","patched","Object","create","Iterable","childNodes","gridProps","visibleNodes","out","visibleNodesRef","rowVirtualizer","count","getScrollElement","getItemKey","estimateSize","gap","overscan","paddingStart","paddingEnd","treeTokens","totalSize","getTotalSize","lastFocusedScrollRef","lastSelectedScrollRef","focusedKey","selectionManager","findIndex","scrollToIndex","align","target","mods","mergedScrollRef","getVirtualItems","virtualItem","keyStr","data","checkedSet","halfCheckedSet","loadingKeys","start","measureElement","toggle","_Tree","displayName","Tree"],"sources":["../../../../src/components/content/Tree/Tree.tsx"],"sourcesContent":["import { useVirtualizer } from '@tanstack/react-virtual';\nimport { OUTER_STYLES } from '@tenphi/tasty';\nimport { forwardRef, useLayoutEffect, useMemo, useRef } from 'react';\nimport { useTree } from 'react-aria';\nimport { Item, useTreeState } from 'react-stately';\n\nimport { useEvent } from '../../../_internal/hooks';\nimport { useI18n } from '../../../i18n';\nimport { SIZE_NAME_TO_KEY, SIZES } from '../../../tokens/sizes';\nimport { mergeRefs } from '../../../utils/react';\nimport { extractStyles } from '../../../utils/styles';\n\nimport { TreeElement, TreeScrollContainer, TreeSizer } from './styled';\nimport { buildTreeIndex } from './tree-index';\nimport { TreeNode } from './TreeNode';\nimport { useCheckboxTree } from './use-checkbox-tree';\nimport { useLoadData } from './use-load-data';\n\nimport type { Key, Node, Selection } from '@react-types/shared';\nimport type { ForwardedRef, ReactElement, ReactNode } from 'react';\nimport type {\n CubeTreeNodeData,\n CubeTreeProps,\n TreeOnExpandInfo,\n TreeOnSelectInfo,\n TreeSelectionMode,\n} from './types';\n\n/**\n * Render an `<Item>` for React Stately's collection builder.\n *\n * The visible content is rendered by `TreeNode` via `nodesByKey`,\n * so `<Item>`'s body is only used by Stately for the collection\n * (`textValue` for keyboard nav, `childItems` for nested traversal).\n */\nfunction renderItem(node: CubeTreeNodeData): ReactElement {\n const textValue =\n typeof node.title === 'string' ? node.title : String(node.key);\n return (\n <Item\n key={node.key}\n textValue={textValue}\n childItems={node.children as CubeTreeNodeData[] | undefined}\n >\n {node.title as ReactNode}\n </Item>\n );\n}\n\nfunction collectDisabledKeys(\n treeData: CubeTreeNodeData[],\n treeIsDisabled: boolean,\n): string[] {\n const keys: string[] = [];\n const visit = (nodes: CubeTreeNodeData[]) => {\n for (const node of nodes) {\n if (treeIsDisabled || node.isDisabled) keys.push(node.key);\n if (node.children) visit(node.children);\n }\n };\n visit(treeData);\n return keys;\n}\n\n/** Expand the supplied keys with all of their ancestor keys. */\nfunction expandWithParents(\n keys: string[] | undefined,\n parentOf: Map<string, string | null>,\n): string[] | undefined {\n if (!keys || keys.length === 0) return keys;\n const set = new Set<string>(keys);\n for (const key of keys) {\n let parent = parentOf.get(key);\n while (parent) {\n set.add(parent);\n parent = parentOf.get(parent);\n }\n }\n return Array.from(set);\n}\n\n/**\n * Diff two key sets to find the single key that was added or removed.\n * Returns `null` when both sets are equal.\n */\nfunction findToggledKey(\n previous: Set<Key>,\n next: Set<Key>,\n): { key: Key; added: boolean } | null {\n for (const k of next) {\n if (!previous.has(k)) return { key: k, added: true };\n }\n for (const k of previous) {\n if (!next.has(k)) return { key: k, added: false };\n }\n return null;\n}\n\nfunction resolveSelectionMode(\n selectionMode: TreeSelectionMode | undefined,\n isSelectable: boolean | undefined,\n): TreeSelectionMode {\n if (selectionMode != null) return selectionMode;\n if (isSelectable === false) return 'none';\n return 'single';\n}\n\nfunction TreeBase(props: CubeTreeProps, ref: ForwardedRef<HTMLDivElement>) {\n const {\n treeData,\n isCheckable = false,\n isSelectable,\n selectionMode: selectionModeProp,\n size = 'medium',\n shape = 'default',\n containerPadding = 4,\n isDisabled = false,\n defaultExpandedKeys,\n expandedKeys,\n autoExpandParent = false,\n defaultCheckedKeys,\n checkedKeys,\n defaultSelectedKeys,\n selectedKeys,\n height,\n loadData,\n onExpand,\n onCheck,\n onSelect,\n itemProps,\n rowStyles,\n ariaLabel,\n qa,\n menu: treeMenu,\n contextMenu: treeContextMenu,\n onAction: treeOnAction,\n menuTriggerProps,\n menuProps,\n ...otherProps\n } = props;\n\n const baseStyles = extractStyles(otherProps, OUTER_STYLES);\n\n const treeRef = useRef<HTMLDivElement>(null);\n const scrollRef = useRef<HTMLDivElement>(null);\n\n const treeIndex = useMemo(() => buildTreeIndex(treeData), [treeData]);\n const nodesByKey = treeIndex.byKey;\n const parentOf = treeIndex.parentOf;\n\n const disabledKeys = useMemo(\n () => collectDisabledKeys(treeData, isDisabled),\n [treeData, isDisabled],\n );\n\n const selectionMode = resolveSelectionMode(selectionModeProp, isSelectable);\n\n const effectiveExpandedKeys = useMemo(\n () =>\n autoExpandParent\n ? expandWithParents(expandedKeys, parentOf)\n : expandedKeys,\n [autoExpandParent, expandedKeys, parentOf],\n );\n\n const effectiveDefaultExpandedKeys = useMemo(\n () =>\n autoExpandParent\n ? expandWithParents(defaultExpandedKeys, parentOf)\n : defaultExpandedKeys,\n [autoExpandParent, defaultExpandedKeys, parentOf],\n );\n\n const checkbox = useCheckboxTree({\n treeData,\n index: treeIndex,\n isCheckable,\n defaultCheckedKeys,\n checkedKeys,\n onCheck,\n });\n\n const loadDataController = useLoadData({\n nodesByKey,\n loadData,\n initialExpandedKeys: effectiveExpandedKeys ?? effectiveDefaultExpandedKeys,\n });\n\n /**\n * In controlled mode, `previous` is read from `effectiveExpandedKeys`;\n * in uncontrolled mode this ref is the only source. Initialized from\n * the *effective* (ancestor-expanded) keys so the first toggle diffs\n * correctly.\n */\n const previousExpandedRef = useRef<Set<Key>>(\n new Set<Key>(effectiveExpandedKeys ?? effectiveDefaultExpandedKeys ?? []),\n );\n\n const handleExpandedChange = useEvent((nextSet: Set<Key>) => {\n loadDataController.onExpandedChanged(nextSet);\n\n const previous =\n expandedKeys !== undefined\n ? new Set<Key>(effectiveExpandedKeys ?? [])\n : previousExpandedRef.current;\n previousExpandedRef.current = new Set<Key>(nextSet);\n\n if (!onExpand) return;\n\n const toggled = findToggledKey(previous, nextSet);\n if (!toggled) return;\n\n const node = nodesByKey.get(String(toggled.key));\n if (!node) return;\n\n const info: TreeOnExpandInfo = {\n expanded: toggled.added,\n node,\n };\n onExpand(Array.from(nextSet), info);\n });\n\n /**\n * Same pattern as `previousExpandedRef`: in controlled mode we read\n * from `selectedKeys`; in uncontrolled mode this ref tracks state.\n */\n const previousSelectionRef = useRef<Set<Key>>(\n new Set<Key>(selectedKeys ?? defaultSelectedKeys ?? []),\n );\n\n /**\n * `useEvent` captures the closure lazily, so `state` (declared below\n * `ariaProps` / `useTreeState`) is safely accessible at call time.\n */\n const handleSelectionChange = useEvent((selection: Selection) => {\n if (!onSelect) return;\n let arr: Key[];\n if (selection === 'all') {\n // `nodesByKey` contains the full tree; use the collection's visible\n // keys so we don't leak keys under collapsed parents.\n arr = [];\n for (const key of state.collection.getKeys()) {\n const node = state.collection.getItem(key);\n if (node && node.type === 'item') arr.push(key);\n }\n } else {\n arr = Array.from(selection);\n }\n\n const nextSet = new Set<Key>(arr);\n const previous =\n selectedKeys !== undefined\n ? new Set<Key>(selectedKeys ?? [])\n : previousSelectionRef.current;\n previousSelectionRef.current = nextSet;\n\n const toggled = findToggledKey(previous, nextSet);\n if (!toggled) return;\n\n const node = nodesByKey.get(String(toggled.key));\n if (!node) return;\n\n const selectedNodes = arr\n .map((k) => nodesByKey.get(String(k)))\n .filter((n): n is CubeTreeNodeData => !!n);\n\n const info: TreeOnSelectInfo = {\n selected: toggled.added,\n node,\n selectedNodes,\n };\n\n onSelect(arr, info);\n });\n\n const hasOnSelect = onSelect != null;\n const { t } = useI18n();\n const treeLabel = ariaLabel ?? t('tree.ariaLabel', 'Tree');\n\n const ariaProps = useMemo(\n () => ({\n selectionMode,\n selectedKeys,\n defaultSelectedKeys,\n onSelectionChange:\n hasOnSelect && selectionMode !== 'none'\n ? handleSelectionChange\n : undefined,\n expandedKeys: effectiveExpandedKeys,\n defaultExpandedKeys: effectiveDefaultExpandedKeys,\n onExpandedChange: handleExpandedChange,\n disabledKeys,\n disabledBehavior: 'all' as const,\n items: treeData,\n children: renderItem as any,\n 'aria-label': treeLabel,\n }),\n [\n selectionMode,\n selectedKeys,\n defaultSelectedKeys,\n hasOnSelect,\n handleSelectionChange,\n effectiveExpandedKeys,\n effectiveDefaultExpandedKeys,\n handleExpandedChange,\n disabledKeys,\n treeData,\n treeLabel,\n ],\n );\n\n const baseState = useTreeState<CubeTreeNodeData>(ariaProps);\n\n // The legacy `TreeCollection` from `useTreeState` lacks `getChildren`,\n // but `useTree` calls it for nested rows. Derive a patched state.\n // TODO: Remove this patch when upgrading to a react-stately version\n // that ships `getChildren` on TreeCollection natively.\n const state = useMemo(() => {\n const collection = baseState.collection;\n if (typeof (collection as any).getChildren === 'function') {\n return baseState;\n }\n const patched = Object.create(collection);\n patched.getChildren = (key: Key): Iterable<Node<CubeTreeNodeData>> => {\n const node = collection.getItem(key);\n return node ? Array.from(node.childNodes) : [];\n };\n return { ...baseState, collection: patched };\n }, [baseState]);\n\n const { gridProps } = useTree(ariaProps, state, treeRef);\n\n const visibleNodes: Node<CubeTreeNodeData>[] = useMemo(() => {\n const out: Node<CubeTreeNodeData>[] = [];\n for (const key of state.collection.getKeys()) {\n const node = state.collection.getItem(key);\n if (node && node.type === 'item') out.push(node);\n }\n return out;\n }, [state.collection]);\n\n const visibleNodesRef = useRef(visibleNodes);\n visibleNodesRef.current = visibleNodes;\n\n // ----- Virtualization -----\n const rowVirtualizer = useVirtualizer({\n count: visibleNodes.length,\n getScrollElement: () => scrollRef.current,\n getItemKey: (index: number) => {\n const node = visibleNodesRef.current[index];\n return node?.key ?? index;\n },\n estimateSize: () => SIZES[SIZE_NAME_TO_KEY[size]],\n gap: 1,\n overscan: 10,\n paddingStart: containerPadding,\n paddingEnd: containerPadding,\n });\n\n const treeTokens = useMemo(\n () => ({\n '$tree-height': height == null ? undefined : `${height}px`,\n '$tree-padding': `${containerPadding}px`,\n }),\n [height, containerPadding],\n );\n\n const totalSize = rowVirtualizer.getTotalSize();\n\n /**\n * Each scroll effect tracks its own \"last scrolled\" target instead\n * of sharing one ref. A shared ref creates a feedback loop: keyboard\n * nav updates the focused-key ref to the new row, and any subsequent\n * `visibleNodes` change OR `selectedKeys` array-identity change\n * (very common — `selectedKeys={[value]}` allocates a fresh array\n * every parent render) re-runs the selectedKeys effect, which sees\n * the ref no longer matches `selectedKeys[0]` and yanks the viewport\n * back to the selected row. Two refs let each effect dedupe against\n * its own intent only; the cost is at most one duplicate\n * `scrollToIndex` call when click updates focus and selection in the\n * same render (idempotent — both target the same index).\n */\n const lastFocusedScrollRef = useRef<Key | null>(null);\n const lastSelectedScrollRef = useRef<string | null>(null);\n\n /**\n * Keep the focused row visible during keyboard navigation.\n *\n * Uses `rowVirtualizer.scrollToIndex` (instead of\n * `querySelector + scrollIntoView`) so the scroll lands even when the\n * target row is outside the virtualizer's currently rendered window.\n * `align: 'auto'` only scrolls when needed, matching the prior\n * `scrollIntoView({ block: 'nearest' })` behavior.\n */\n useLayoutEffect(() => {\n const focusedKey = state.selectionManager.focusedKey;\n if (focusedKey == null) return;\n if (lastFocusedScrollRef.current === focusedKey) return;\n\n const index = visibleNodesRef.current.findIndex(\n (n) => n.key === focusedKey,\n );\n if (index < 0) return;\n\n rowVirtualizer.scrollToIndex(index, { align: 'auto' });\n lastFocusedScrollRef.current = focusedKey;\n }, [state.selectionManager.focusedKey, rowVirtualizer]);\n\n /**\n * Scroll into view when controlled `selectedKeys` changes externally.\n *\n * Selection-manager `focusedKey` only updates on explicit user\n * interaction (click / keyboard) — it does NOT track controlled\n * `selectedKeys` prop changes. So when a parent updates the prop\n * (e.g. opening a file from elsewhere), we need a separate effect\n * to bring the row into view.\n *\n * Re-runs on `visibleNodes` so we retry once parents are expanded\n * (the row is invisible to the virtualizer until then).\n */\n useLayoutEffect(() => {\n if (selectedKeys == null) return;\n const target = selectedKeys[0];\n if (target == null) return;\n if (lastSelectedScrollRef.current === target) return;\n\n const index = visibleNodes.findIndex((n) => String(n.key) === target);\n if (index < 0) return;\n\n rowVirtualizer.scrollToIndex(index, { align: 'auto' });\n lastSelectedScrollRef.current = target;\n }, [selectedKeys, visibleNodes, rowVirtualizer]);\n\n const mods = useMemo(\n () => ({\n 'has-height': height != null,\n shape,\n }),\n [height, shape],\n );\n\n // The forwarded ref points at the inner scroll container so\n // consumers can drive `scrollTop` directly. `treeRef` (used by\n // `useTree` for keyboard handling and as the role=\"treegrid\"\n // anchor) stays internal on `TreeElement`.\n const mergedScrollRef = useMemo(\n () => mergeRefs(ref, scrollRef),\n [ref, scrollRef],\n );\n\n return (\n <TreeElement\n {...gridProps}\n ref={treeRef}\n qa={qa ?? 'Tree'}\n mods={mods}\n styles={baseStyles}\n tokens={treeTokens}\n >\n <TreeScrollContainer ref={mergedScrollRef}>\n <TreeSizer\n role=\"presentation\"\n tokens={{ '$tree-content-height': `${totalSize}px` }}\n >\n {rowVirtualizer.getVirtualItems().map((virtualItem) => {\n const node = visibleNodes[virtualItem.index];\n if (!node) return null;\n const keyStr = String(node.key);\n const data = nodesByKey.get(keyStr);\n if (!data) return null;\n return (\n <TreeNode\n key={node.key}\n node={node}\n data={data}\n state={state}\n isCheckable={isCheckable}\n isExpanded={state.expandedKeys.has(node.key)}\n isChecked={checkbox.checkedSet.has(keyStr)}\n isIndeterminate={checkbox.halfCheckedSet.has(keyStr)}\n isLoading={loadDataController.loadingKeys.has(keyStr)}\n size={size}\n itemProps={itemProps}\n rowStyles={rowStyles}\n virtualOffset={virtualItem.start}\n virtualRef={rowVirtualizer.measureElement}\n virtualIndex={virtualItem.index}\n menu={treeMenu}\n contextMenu={treeContextMenu}\n menuTriggerProps={menuTriggerProps}\n menuProps={menuProps}\n onToggleChecked={checkbox.toggle}\n onAction={treeOnAction}\n />\n );\n })}\n </TreeSizer>\n </TreeScrollContainer>\n </TreeElement>\n );\n}\n\nconst _Tree = forwardRef(TreeBase);\n_Tree.displayName = 'Tree';\n\n/**\n * Hierarchical data display with optional checkboxes, single/multi\n * selection, async lazy loading, and keyboard navigation.\n *\n * Built on `useTree` / `useTreeState` (React Aria + React Stately) and\n * styled with Tasty.\n *\n * @example\n * ```tsx\n * <Tree\n * treeData={data}\n * isCheckable\n * selectionMode=\"none\"\n * defaultExpandedKeys={['root']}\n * onCheck={(keys) => console.log(keys)}\n * />\n * ```\n */\nexport const Tree = _Tree;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAmCA,SAASiC,WAAWC,MAAsC;CACxD,MAAMC,YACJ,OAAOD,KAAKE,UAAU,WAAWF,KAAKE,QAAQC,OAAOH,KAAKI,GAAG;CAC/D,OACE,oBAAC,MAAD;EAEaH;EACX,YAAYD,KAAKK;EAEhBL,UAAAA,KAAKE;CACF,GALCF,KAAKI,GAKN;AAEV;AAEA,SAASE,oBACPC,UACAC,gBACU;CACV,MAAMC,OAAiB,CAAA;CACvB,MAAMC,SAASC,UAA8B;EAC3C,KAAK,MAAMX,QAAQW,OAAO;GACxB,IAAIH,kBAAkBR,KAAKY,YAAYH,KAAKI,KAAKb,KAAKI,GAAG;GACzD,IAAIJ,KAAKK,UAAUK,MAAMV,KAAKK,QAAQ;EACxC;CACF;CACAK,MAAMH,QAAQ;CACd,OAAOE;AACT;;AAGA,SAASK,kBACPL,MACAM,UACsB;CACtB,IAAI,CAACN,QAAQA,KAAKQ,WAAW,GAAG,OAAOR;CACvC,MAAMS,MAAM,IAAIC,IAAYV,IAAI;CAChC,KAAK,MAAML,OAAOK,MAAM;EACtB,IAAIW,SAASL,SAASM,IAAIjB,GAAG;EAC7B,OAAOgB,QAAQ;GACbF,IAAII,IAAIF,MAAM;GACdA,SAASL,SAASM,IAAID,MAAM;EAC9B;CACF;CACA,OAAOG,MAAMC,KAAKN,GAAG;AACvB;;;;;AAMA,SAASO,eACPC,UACAC,MACqC;CACrC,KAAK,MAAME,KAAKF,MACd,IAAI,CAACD,SAASI,IAAID,CAAC,GAAG,OAAO;EAAEzB,KAAKyB;EAAGD,OAAO;CAAK;CAErD,KAAK,MAAMC,KAAKH,UACd,IAAI,CAACC,KAAKG,IAAID,CAAC,GAAG,OAAO;EAAEzB,KAAKyB;EAAGD,OAAO;CAAM;CAElD,OAAO;AACT;AAEA,SAASG,qBACPC,eACAC,cACmB;CACnB,IAAID,iBAAiB,MAAM,OAAOA;CAClC,IAAIC,iBAAiB,OAAO,OAAO;CACnC,OAAO;AACT;AAEA,SAASC,SAASC,OAAsBC,KAAmC;CACzE,MAAM,EACJ7B,UACA+B,cAAc,OACdL,cACAD,eAAeO,mBACfC,OAAO,UACPC,QAAQ,WACRC,mBAAmB,GACnB9B,aAAa,OACb+B,qBACAC,cACAC,mBAAmB,OACnBC,oBACAC,aACAC,qBACAC,cACAC,QACAC,UACAC,UACAC,SACAC,UACAC,WACAC,WACAC,WACAC,IACAC,MAAMC,UACNC,aAAaC,iBACbC,UAAUC,cACVC,kBACAC,WACA,GAAGC,eACDhC;CAEJ,MAAMiC,aAAaxF,cAAcuF,YAAYpG,YAAY;CAEzD,MAAMsG,UAAUlG,OAAuB,IAAI;CAC3C,MAAMmG,YAAYnG,OAAuB,IAAI;CAE7C,MAAMoG,YAAYrG,cAAcc,eAAeuB,QAAQ,GAAG,CAACA,QAAQ,CAAC;CACpE,MAAMiE,aAAaD,UAAUE;CAC7B,MAAM1D,WAAWwD,UAAUxD;CAE3B,MAAM2D,eAAexG,cACboC,oBAAoBC,UAAUK,UAAU,GAC9C,CAACL,UAAUK,UAAU,CACvB;CAEA,MAAMoB,gBAAgBD,qBAAqBQ,mBAAmBN,YAAY;CAE1E,MAAM0C,wBAAwBzG,cAE1B2E,mBACI/B,kBAAkB8B,cAAc7B,QAAQ,IACxC6B,cACN;EAACC;EAAkBD;EAAc7B;CAAQ,CAC3C;CAEA,MAAM6D,+BAA+B1G,cAEjC2E,mBACI/B,kBAAkB6B,qBAAqB5B,QAAQ,IAC/C4B,qBACN;EAACE;EAAkBF;EAAqB5B;CAAQ,CAClD;CAEA,MAAM8D,WAAW3F,gBAAgB;EAC/BqB;EACAuE,OAAOP;EACPjC;EACAQ;EACAC;EACAM;CACF,CAAC;CAED,MAAM0B,qBAAqB5F,YAAY;EACrCqF;EACArB;EACA6B,qBAAqBL,yBAAyBC;CAChD,CAAC;;;;;;;CAQD,MAAMK,sBAAsB9G,OAC1B,IAAIgD,IAASwD,yBAAyBC,gCAAgC,CAAA,CAAE,CAC1E;CAEA,MAAMM,uBAAuB3G,UAAU4G,YAAsB;EAC3DJ,mBAAmBK,kBAAkBD,OAAO;EAE5C,MAAMzD,WACJkB,iBAAiByC,KAAAA,IACb,IAAIlE,IAASwD,yBAAyB,CAAA,CAAE,IACxCM,oBAAoBK;EAC1BL,oBAAoBK,UAAU,IAAInE,IAASgE,OAAO;EAElD,IAAI,CAAC/B,UAAU;EAEf,MAAMmC,UAAU9D,eAAeC,UAAUyD,OAAO;EAChD,IAAI,CAACI,SAAS;EAEd,MAAMvF,OAAOwE,WAAWnD,IAAIlB,OAAOoF,QAAQnF,GAAG,CAAC;EAC/C,IAAI,CAACJ,MAAM;EAEX,MAAMwF,OAAyB;GAC7BC,UAAUF,QAAQ3D;GAClB5B;EACF;EACAoD,SAAS7B,MAAMC,KAAK2D,OAAO,GAAGK,IAAI;CACpC,CAAC;;;;;CAMD,MAAME,uBAAuBvH,OAC3B,IAAIgD,IAAS8B,gBAAgBD,uBAAuB,CAAA,CAAE,CACxD;;;;;CAMA,MAAM2C,wBAAwBpH,UAAUqH,cAAyB;EAC/D,IAAI,CAACtC,UAAU;EACf,IAAIuC;EACJ,IAAID,cAAc,OAAO;GAGvBC,MAAM,CAAA;GACN,KAAK,MAAMzF,OAAO0F,MAAMC,WAAWC,QAAQ,GAAG;IAC5C,MAAMhG,SAAO8F,MAAMC,WAAWE,QAAQ7F,GAAG;IACzC,IAAIJ,UAAQA,OAAKkG,SAAS,QAAQL,IAAIhF,KAAKT,GAAG;GAChD;EACF,OACEyF,MAAMtE,MAAMC,KAAKoE,SAAS;EAG5B,MAAMT,YAAU,IAAIhE,IAAS0E,GAAG;EAChC,MAAMnE,aACJuB,iBAAiBoC,KAAAA,IACb,IAAIlE,IAAS8B,gBAAgB,CAAA,CAAE,IAC/ByC,qBAAqBJ;EAC3BI,qBAAqBJ,UAAUH;EAE/B,MAAMI,YAAU9D,eAAeC,YAAUyD,SAAO;EAChD,IAAI,CAACI,WAAS;EAEd,MAAMvF,SAAOwE,WAAWnD,IAAIlB,OAAOoF,UAAQnF,GAAG,CAAC;EAC/C,IAAI,CAACJ,QAAM;EAEX,MAAMmG,gBAAgBN,IACnBO,KAAKvE,MAAM2C,WAAWnD,IAAIlB,OAAO0B,CAAC,CAAC,CAAC,CAAC,CACrCwE,QAAQC,MAA6B,CAAC,CAACA,CAAC;EAE3C,MAAMd,SAAyB;GAC7Be,UAAUhB,UAAQ3D;GAClB5B,MAAAA;GACAmG;EACF;EAEA7C,SAASuC,KAAKL,MAAI;CACpB,CAAC;CAED,MAAMgB,cAAclD,YAAY;CAChC,MAAM,EAAEmD,MAAMjI,QAAQ;CACtB,MAAMkI,YAAYjD,aAAagD,EAAE,kBAAkB,MAAM;CAEzD,MAAME,YAAYzI,eACT;EACL8D;EACAiB;EACAD;EACA4D,mBACEJ,eAAexE,kBAAkB,SAC7B2D,wBACAN,KAAAA;EACNzC,cAAc+B;EACdhC,qBAAqBiC;EACrBiC,kBAAkB3B;EAClBR;EACAoC,kBAAkB;EAClBE,OAAOzG;EACPF,UAAUN;EACV,cAAc2G;CAChB,IACA;EACE1E;EACAiB;EACAD;EACAwD;EACAb;EACAhB;EACAC;EACAM;EACAR;EACAnE;EACAmG;CAAS,CAEb;CAEA,MAAMO,YAAY3I,aAA+BqI,SAAS;CAM1D,MAAMb,QAAQ5H,cAAc;EAC1B,MAAM6H,aAAakB,UAAUlB;EAC7B,IAAI,OAAQA,WAAmBmB,gBAAgB,YAC7C,OAAOD;EAET,MAAME,UAAUC,OAAOC,OAAOtB,UAAU;EACxCoB,QAAQD,eAAe9G,UAA+C;GACpE,MAAMJ,SAAO+F,WAAWE,QAAQ7F,KAAG;GACnC,OAAOJ,SAAOuB,MAAMC,KAAKxB,OAAKuH,UAAU,IAAI,CAAA;EAC9C;EACA,OAAO;GAAE,GAAGN;GAAWlB,YAAYoB;EAAQ;CAC7C,GAAG,CAACF,SAAS,CAAC;CAEd,MAAM,EAAEO,cAAcpJ,QAAQuI,WAAWb,OAAOzB,OAAO;CAEvD,MAAMoD,eAAyCvJ,cAAc;EAC3D,MAAMwJ,MAAgC,CAAA;EACtC,KAAK,MAAMtH,SAAO0F,MAAMC,WAAWC,QAAQ,GAAG;GAC5C,MAAMhG,SAAO8F,MAAMC,WAAWE,QAAQ7F,KAAG;GACzC,IAAIJ,UAAQA,OAAKkG,SAAS,QAAQwB,IAAI7G,KAAKb,MAAI;EACjD;EACA,OAAO0H;CACT,GAAG,CAAC5B,MAAMC,UAAU,CAAC;CAErB,MAAM4B,kBAAkBxJ,OAAOsJ,YAAY;CAC3CE,gBAAgBrC,UAAUmC;CAG1B,MAAMG,iBAAiB9J,eAAe;EACpC+J,OAAOJ,aAAaxG;EACpB6G,wBAAwBxD,UAAUgB;EAClCyC,aAAajD,UAAkB;GAE7B,OADa6C,gBAAgBrC,QAAQR,MAC1B,EAAE1E,OAAO0E;EACtB;EACAkD,oBAAoBtJ,MAAMD,iBAAiB+D;EAC3CyF,KAAK;EACLC,UAAU;EACVC,cAAczF;EACd0F,YAAY1F;CACd,CAAC;CAED,MAAM2F,aAAanK,eACV;EACL,gBAAgBgF,UAAU,OAAOmC,KAAAA,IAAY,GAAGnC,OAAM;EACtD,iBAAiB,GAAGR,iBAAgB;CACtC,IACA,CAACQ,QAAQR,gBAAgB,CAC3B;CAEA,MAAM4F,YAAYV,eAAeW,aAAa;;;;;;;;;;;;;;CAe9C,MAAMC,uBAAuBrK,OAAmB,IAAI;CACpD,MAAMsK,wBAAwBtK,OAAsB,IAAI;;;;;;;;;;CAWxDF,sBAAsB;EACpB,MAAMyK,aAAa5C,MAAM6C,iBAAiBD;EAC1C,IAAIA,cAAc,MAAM;EACxB,IAAIF,qBAAqBlD,YAAYoD,YAAY;EAEjD,MAAM5D,UAAQ6C,gBAAgBrC,QAAQsD,WACnCtC,QAAMA,IAAElG,QAAQsI,UACnB;EACA,IAAI5D,UAAQ,GAAG;EAEf8C,eAAeiB,cAAc/D,SAAO,EAAEgE,OAAO,OAAO,CAAC;EACrDN,qBAAqBlD,UAAUoD;CACjC,GAAG,CAAC5C,MAAM6C,iBAAiBD,YAAYd,cAAc,CAAC;;;;;;;;;;;;;CActD3J,sBAAsB;EACpB,IAAIgF,gBAAgB,MAAM;EAC1B,MAAM8F,SAAS9F,aAAa;EAC5B,IAAI8F,UAAU,MAAM;EACpB,IAAIN,sBAAsBnD,YAAYyD,QAAQ;EAE9C,MAAMjE,UAAQ2C,aAAamB,WAAWtC,QAAMnG,OAAOmG,IAAElG,GAAG,MAAM2I,MAAM;EACpE,IAAIjE,UAAQ,GAAG;EAEf8C,eAAeiB,cAAc/D,SAAO,EAAEgE,OAAO,OAAO,CAAC;EACrDL,sBAAsBnD,UAAUyD;CAClC,GAAG;EAAC9F;EAAcwE;EAAcG;CAAc,CAAC;CAE/C,MAAMoB,OAAO9K,eACJ;EACL,cAAcgF,UAAU;EACxBT;CACF,IACA,CAACS,QAAQT,KAAK,CAChB;CAMA,MAAMwG,kBAAkB/K,cAChBS,UAAUyD,KAAKkC,SAAS,GAC9B,CAAClC,KAAKkC,SAAS,CACjB;CAEA,OACE,oBAAC,aAAD;EACE,GAAIkD;EACJ,KAAKnD;EACL,IAAIX,MAAM;EACJsF;EACN,QAAQ5E;EACR,QAAQiE;EAER,UAAA,oBAAC,qBAAD;GAAqB,KAAKY;GACxB,UAAA,oBAAC,WAAD;IACE,MAAK;IACL,QAAQ,EAAE,wBAAwB,GAAGX,UAAS,IAAK;IAElDV,UAAAA,eAAesB,gBAAgB,CAAC,CAAC9C,KAAK+C,gBAAgB;KACrD,MAAMnJ,SAAOyH,aAAa0B,YAAYrE;KACtC,IAAI,CAAC9E,QAAM,OAAO;KAClB,MAAMoJ,SAASjJ,OAAOH,OAAKI,GAAG;KAC9B,MAAMiJ,OAAO7E,WAAWnD,IAAI+H,MAAM;KAClC,IAAI,CAACC,MAAM,OAAO;KAClB,OACE,oBAAC,UAAD;MAEE,MAAMrJ;MACAqJ;MACCvD;MACMxD;MACb,YAAYwD,MAAMlD,aAAad,IAAI9B,OAAKI,GAAG;MAC3C,WAAWyE,SAASyE,WAAWxH,IAAIsH,MAAM;MACzC,iBAAiBvE,SAAS0E,eAAezH,IAAIsH,MAAM;MACnD,WAAWrE,mBAAmByE,YAAY1H,IAAIsH,MAAM;MAC9C5G;MACKe;MACAC;MACX,eAAe2F,YAAYM;MAC3B,YAAY7B,eAAe8B;MAC3B,cAAcP,YAAYrE;MAC1B,MAAMlB;MACN,aAAaE;MACKG;MACPC;MACX,iBAAiBW,SAAS8E;MAC1B,UAAU3F;KAAa,GApBlBhE,OAAKI,GAoBa;IAG7B,CAAC;GACQ,CAAA;EACQ,CAAA;CACV,CAAA;AAEjB;AAEA,MAAMwJ,QAAQ5L,WAAWkE,QAAQ;AACjC0H,MAAMC,cAAc;;;;;;;;;;;;;;;;;;;AAoBpB,MAAaC,OAAOF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license MIT | @cube-dev/ui-kit v0.
|
|
1
|
+
/** @license MIT | @cube-dev/ui-kit v0.200.0 | Cube Dev Team */
|
|
2
2
|
import { mergeProps as mergeProps$1 } from "../../../utils/react/mergeProps.js";
|
|
3
3
|
import { mergeRefs } from "../../../utils/react/useCombinedRefs.js";
|
|
4
4
|
import { useEvent } from "../../../_internal/hooks/use-event.js";
|
|
@@ -24,7 +24,7 @@ function isMenuEmpty(menu) {
|
|
|
24
24
|
}
|
|
25
25
|
function TreeNodeInner(props) {
|
|
26
26
|
const { t } = useI18n();
|
|
27
|
-
const { node, data, state, isCheckable, isExpanded, isIndeterminate, isChecked, isLoading, onToggleChecked, size, itemProps, rowStyles,
|
|
27
|
+
const { node, data, state, isCheckable, isExpanded, isIndeterminate, isChecked, isLoading, onToggleChecked, size, itemProps, rowStyles, virtualOffset, virtualRef, virtualIndex, menu: treeMenu, contextMenu: treeContextMenu, onAction: treeOnAction, menuTriggerProps, menuProps } = props;
|
|
28
28
|
const rowRef = useRef(null);
|
|
29
29
|
const isLeaf = data.isLeaf === true || data.isLeaf !== false && !node.hasChildNodes;
|
|
30
30
|
const { rowProps, gridCellProps, expandButtonProps, isPressed } = useTreeItem({
|
|
@@ -121,10 +121,10 @@ function TreeNodeInner(props) {
|
|
|
121
121
|
isHovered,
|
|
122
122
|
isPressed
|
|
123
123
|
]);
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}), [node.level,
|
|
124
|
+
const rowTokens = useMemo(() => ({
|
|
125
|
+
"$tree-level": node.level ?? 0,
|
|
126
|
+
"$tree-row-offset": virtualOffset == null ? void 0 : `${virtualOffset}px`
|
|
127
|
+
}), [node.level, virtualOffset]);
|
|
128
128
|
const ariaChecked = isRowCheckable ? isIndeterminate ? "mixed" : isChecked ? "true" : "false" : void 0;
|
|
129
129
|
const finalRowProps = {
|
|
130
130
|
...mergeProps$1(rowProps, hoverProps),
|
|
@@ -185,7 +185,7 @@ function TreeNodeInner(props) {
|
|
|
185
185
|
...finalRowProps,
|
|
186
186
|
ref: refs,
|
|
187
187
|
mods: rowMods,
|
|
188
|
-
|
|
188
|
+
tokens: rowTokens,
|
|
189
189
|
"data-element": "Row",
|
|
190
190
|
"data-qa-key": String(node.key),
|
|
191
191
|
"data-index": virtualIndex,
|