@hitachivantara/uikit-react-core 5.92.0 → 5.93.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/cjs/Badge/Badge.styles.cjs +13 -1
- package/dist/cjs/Banner/BannerContent/BannerContent.styles.cjs +1 -1
- package/dist/cjs/BaseDropdown/BaseDropdown.cjs +1 -0
- package/dist/cjs/BaseInput/validations.cjs +8 -15
- package/dist/cjs/BaseSwitch/BaseSwitch.styles.cjs +1 -1
- package/dist/cjs/Button/Button.styles.cjs +6 -4
- package/dist/cjs/Calendar/CalendarHeader/CalendarHeader.cjs +1 -2
- package/dist/cjs/Card/Card.cjs +5 -4
- package/dist/cjs/Card/Card.styles.cjs +5 -3
- package/dist/cjs/Card/Header/Header.styles.cjs +3 -3
- package/dist/cjs/CheckBox/CheckBox.cjs +1 -1
- package/dist/cjs/CheckBoxGroup/CheckBoxGroup.cjs +9 -8
- package/dist/cjs/ColorPicker/ColorPicker.cjs +14 -22
- package/dist/cjs/ColorPicker/ColorPicker.styles.cjs +1 -4
- package/dist/cjs/DatePicker/DatePicker.cjs +15 -23
- package/dist/cjs/DatePicker/DatePicker.styles.cjs +1 -4
- package/dist/cjs/DotPagination/DotPagination.styles.cjs +1 -1
- package/dist/cjs/Dropdown/Dropdown.cjs +16 -24
- package/dist/cjs/Dropdown/Dropdown.styles.cjs +1 -1
- package/dist/cjs/FileUploader/DropZone/DropZone.cjs +19 -17
- package/dist/cjs/FileUploader/DropZone/DropZone.styles.cjs +0 -3
- package/dist/cjs/FilterGroup/FilterGroup.cjs +15 -23
- package/dist/cjs/FilterGroup/FilterGroup.styles.cjs +1 -1
- package/dist/cjs/FormElement/InfoMessage/InfoMessage.cjs +1 -1
- package/dist/cjs/FormElement/Label/Label.cjs +4 -1
- package/dist/cjs/FormElement/LabelContainer.cjs +58 -0
- package/dist/cjs/FormElement/WarningText/WarningText.cjs +4 -4
- package/dist/cjs/FormElement/utils.cjs +2 -8
- package/dist/cjs/InlineEditor/InlineEditor.cjs +1 -0
- package/dist/cjs/InlineEditor/InlineEditor.styles.cjs +1 -2
- package/dist/cjs/Input/Input.cjs +38 -43
- package/dist/cjs/Input/Input.styles.cjs +1 -5
- package/dist/cjs/Input/utils.cjs +12 -0
- package/dist/cjs/NumberInput/NumberInput.cjs +54 -0
- package/dist/cjs/NumberInput/NumberInput.styles.cjs +11 -0
- package/dist/cjs/Pagination/Pagination.styles.cjs +1 -2
- package/dist/cjs/QueryBuilder/Rule/Rule.styles.cjs +1 -1
- package/dist/cjs/QueryBuilder/RuleGroup/RuleGroup.cjs +2 -2
- package/dist/cjs/RadioGroup/RadioGroup.cjs +9 -8
- package/dist/cjs/SearchInput/SearchInput.cjs +28 -0
- package/dist/cjs/SearchInput/SearchInput.styles.cjs +10 -0
- package/dist/cjs/Select/Select.cjs +15 -14
- package/dist/cjs/Select/Select.styles.cjs +1 -4
- package/dist/cjs/SelectionList/SelectionList.cjs +1 -1
- package/dist/cjs/Slider/Slider.cjs +34 -44
- package/dist/cjs/Slider/SliderInput/SliderInput.cjs +0 -1
- package/dist/cjs/Slider/utils.cjs +6 -9
- package/dist/cjs/SnackbarProvider/SnackbarProvider.cjs +16 -14
- package/dist/cjs/SnackbarProvider/SnackbarProvider.styles.cjs +1 -1
- package/dist/cjs/Switch/Switch.cjs +1 -1
- package/dist/cjs/TagsInput/TagsInput.cjs +31 -40
- package/dist/cjs/TagsInput/TagsInput.styles.cjs +3 -3
- package/dist/cjs/TextArea/TextArea.cjs +40 -40
- package/dist/cjs/TextArea/TextArea.styles.cjs +3 -5
- package/dist/cjs/TimePicker/TimePicker.cjs +15 -21
- package/dist/cjs/TimePicker/TimePicker.styles.cjs +1 -4
- package/dist/cjs/VerticalNavigation/Actions/Action.cjs +2 -1
- package/dist/cjs/VerticalNavigation/Actions/Action.styles.cjs +3 -5
- package/dist/cjs/icons.cjs +2 -1
- package/dist/cjs/index.cjs +4 -0
- package/dist/esm/Badge/Badge.styles.js +13 -1
- package/dist/esm/Banner/BannerContent/BannerContent.styles.js +1 -1
- package/dist/esm/BaseDropdown/BaseDropdown.js +1 -0
- package/dist/esm/BaseInput/validations.js +9 -16
- package/dist/esm/BaseSwitch/BaseSwitch.styles.js +1 -1
- package/dist/esm/Button/Button.styles.js +6 -4
- package/dist/esm/Calendar/CalendarHeader/CalendarHeader.js +1 -2
- package/dist/esm/Card/Card.js +5 -4
- package/dist/esm/Card/Card.styles.js +5 -3
- package/dist/esm/Card/Header/Header.styles.js +3 -3
- package/dist/esm/CheckBox/CheckBox.js +1 -1
- package/dist/esm/CheckBoxGroup/CheckBoxGroup.js +9 -8
- package/dist/esm/ColorPicker/ColorPicker.js +14 -22
- package/dist/esm/ColorPicker/ColorPicker.styles.js +1 -4
- package/dist/esm/DatePicker/DatePicker.js +15 -23
- package/dist/esm/DatePicker/DatePicker.styles.js +1 -4
- package/dist/esm/DotPagination/DotPagination.styles.js +1 -1
- package/dist/esm/Dropdown/Dropdown.js +16 -24
- package/dist/esm/Dropdown/Dropdown.styles.js +1 -1
- package/dist/esm/FileUploader/DropZone/DropZone.js +19 -17
- package/dist/esm/FileUploader/DropZone/DropZone.styles.js +0 -3
- package/dist/esm/FilterGroup/FilterGroup.js +15 -23
- package/dist/esm/FilterGroup/FilterGroup.styles.js +1 -1
- package/dist/esm/FormElement/InfoMessage/InfoMessage.js +1 -1
- package/dist/esm/FormElement/Label/Label.js +5 -2
- package/dist/esm/FormElement/LabelContainer.js +58 -0
- package/dist/esm/FormElement/WarningText/WarningText.js +4 -4
- package/dist/esm/FormElement/utils.js +3 -9
- package/dist/esm/InlineEditor/InlineEditor.js +1 -0
- package/dist/esm/InlineEditor/InlineEditor.styles.js +1 -2
- package/dist/esm/Input/Input.js +35 -40
- package/dist/esm/Input/Input.styles.js +1 -5
- package/dist/esm/Input/utils.js +12 -0
- package/dist/esm/NumberInput/NumberInput.js +54 -0
- package/dist/esm/NumberInput/NumberInput.styles.js +11 -0
- package/dist/esm/Pagination/Pagination.styles.js +1 -2
- package/dist/esm/QueryBuilder/Rule/Rule.styles.js +1 -1
- package/dist/esm/QueryBuilder/RuleGroup/RuleGroup.js +2 -2
- package/dist/esm/RadioGroup/RadioGroup.js +9 -8
- package/dist/esm/SearchInput/SearchInput.js +28 -0
- package/dist/esm/SearchInput/SearchInput.styles.js +10 -0
- package/dist/esm/Select/Select.js +15 -14
- package/dist/esm/Select/Select.styles.js +1 -4
- package/dist/esm/SelectionList/SelectionList.js +1 -1
- package/dist/esm/Slider/Slider.js +34 -44
- package/dist/esm/Slider/SliderInput/SliderInput.js +0 -1
- package/dist/esm/Slider/utils.js +6 -9
- package/dist/esm/SnackbarProvider/SnackbarProvider.js +16 -14
- package/dist/esm/SnackbarProvider/SnackbarProvider.styles.js +1 -1
- package/dist/esm/Switch/Switch.js +1 -1
- package/dist/esm/TagsInput/TagsInput.js +31 -40
- package/dist/esm/TagsInput/TagsInput.styles.js +3 -3
- package/dist/esm/TextArea/TextArea.js +42 -42
- package/dist/esm/TextArea/TextArea.styles.js +3 -5
- package/dist/esm/TimePicker/TimePicker.js +15 -21
- package/dist/esm/TimePicker/TimePicker.styles.js +1 -4
- package/dist/esm/VerticalNavigation/Actions/Action.js +2 -1
- package/dist/esm/VerticalNavigation/Actions/Action.styles.js +3 -5
- package/dist/esm/icons.js +2 -1
- package/dist/esm/index.js +4 -0
- package/dist/types/index.d.ts +51 -12
- package/package.json +5 -5
- package/dist/esm/Accordion/Accordion.js.map +0 -1
- package/dist/esm/Accordion/Accordion.styles.js.map +0 -1
- package/dist/esm/ActionBar/ActionBar.js.map +0 -1
- package/dist/esm/ActionBar/ActionBar.styles.js.map +0 -1
- package/dist/esm/ActionsGeneric/ActionsGeneric.js.map +0 -1
- package/dist/esm/ActionsGeneric/ActionsGeneric.styles.js.map +0 -1
- package/dist/esm/AppSwitcher/Action/Action.js.map +0 -1
- package/dist/esm/AppSwitcher/Action/Action.styles.js.map +0 -1
- package/dist/esm/AppSwitcher/AppSwitcher.js.map +0 -1
- package/dist/esm/AppSwitcher/AppSwitcher.styles.js.map +0 -1
- package/dist/esm/Avatar/Avatar.js.map +0 -1
- package/dist/esm/Avatar/Avatar.styles.js.map +0 -1
- package/dist/esm/AvatarGroup/AvatarGroup.js.map +0 -1
- package/dist/esm/AvatarGroup/AvatarGroup.styles.js.map +0 -1
- package/dist/esm/AvatarGroup/AvatarGroupContext.js.map +0 -1
- package/dist/esm/Badge/Badge.js.map +0 -1
- package/dist/esm/Badge/Badge.styles.js.map +0 -1
- package/dist/esm/Banner/Banner.js.map +0 -1
- package/dist/esm/Banner/Banner.styles.js.map +0 -1
- package/dist/esm/Banner/BannerContent/BannerContent.js.map +0 -1
- package/dist/esm/Banner/BannerContent/BannerContent.styles.js.map +0 -1
- package/dist/esm/BaseCheckBox/BaseCheckBox.js.map +0 -1
- package/dist/esm/BaseCheckBox/BaseCheckBox.styles.js.map +0 -1
- package/dist/esm/BaseCheckBox/CheckBoxIcon.js.map +0 -1
- package/dist/esm/BaseDropdown/BaseDropdown.js.map +0 -1
- package/dist/esm/BaseDropdown/BaseDropdown.styles.js.map +0 -1
- package/dist/esm/BaseDropdown/BaseDropdownPanel.js.map +0 -1
- package/dist/esm/BaseDropdown/context.js.map +0 -1
- package/dist/esm/BaseInput/BaseInput.js.map +0 -1
- package/dist/esm/BaseInput/BaseInput.styles.js.map +0 -1
- package/dist/esm/BaseInput/validations.js.map +0 -1
- package/dist/esm/BaseRadio/BaseRadio.js.map +0 -1
- package/dist/esm/BaseRadio/BaseRadio.styles.js.map +0 -1
- package/dist/esm/BaseRadio/RadioIcon.js.map +0 -1
- package/dist/esm/BaseSwitch/BaseSwitch.js.map +0 -1
- package/dist/esm/BaseSwitch/BaseSwitch.styles.js.map +0 -1
- package/dist/esm/Box/Box.js.map +0 -1
- package/dist/esm/BreadCrumb/BreadCrumb.js.map +0 -1
- package/dist/esm/BreadCrumb/BreadCrumb.styles.js.map +0 -1
- package/dist/esm/BreadCrumb/Page/Page.js.map +0 -1
- package/dist/esm/BreadCrumb/Page/Page.styles.js.map +0 -1
- package/dist/esm/BreadCrumb/PathElement/PathElement.js.map +0 -1
- package/dist/esm/BreadCrumb/PathElement/PathElement.styles.js.map +0 -1
- package/dist/esm/BreadCrumb/utils.js.map +0 -1
- package/dist/esm/BulkActions/BulkActions.js.map +0 -1
- package/dist/esm/BulkActions/BulkActions.styles.js.map +0 -1
- package/dist/esm/Button/Button.js.map +0 -1
- package/dist/esm/Button/Button.styles.js.map +0 -1
- package/dist/esm/ButtonBase/ButtonBase.js.map +0 -1
- package/dist/esm/ButtonBase/ButtonBase.styles.js.map +0 -1
- package/dist/esm/Calendar/Calendar.js.map +0 -1
- package/dist/esm/Calendar/Calendar.styles.js.map +0 -1
- package/dist/esm/Calendar/CalendarHeader/CalendarHeader.js.map +0 -1
- package/dist/esm/Calendar/CalendarHeader/CalendarHeader.styles.js.map +0 -1
- package/dist/esm/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.js.map +0 -1
- package/dist/esm/Calendar/CalendarNavigation/ComposedNavigation/ComposedNavigation.styles.js.map +0 -1
- package/dist/esm/Calendar/CalendarNavigation/MonthSelector/MonthSelector.js.map +0 -1
- package/dist/esm/Calendar/CalendarNavigation/MonthSelector/MonthSelector.styles.js.map +0 -1
- package/dist/esm/Calendar/CalendarNavigation/Navigation/Navigation.js.map +0 -1
- package/dist/esm/Calendar/CalendarNavigation/Navigation/Navigation.styles.js.map +0 -1
- package/dist/esm/Calendar/SingleCalendar/CalendarCell.js.map +0 -1
- package/dist/esm/Calendar/SingleCalendar/CalendarCell.styles.js.map +0 -1
- package/dist/esm/Calendar/SingleCalendar/SingleCalendar.js.map +0 -1
- package/dist/esm/Calendar/SingleCalendar/SingleCalendar.styles.js.map +0 -1
- package/dist/esm/Calendar/model.js.map +0 -1
- package/dist/esm/Calendar/utils.js.map +0 -1
- package/dist/esm/Card/Card.js.map +0 -1
- package/dist/esm/Card/Card.styles.js.map +0 -1
- package/dist/esm/Card/Content/Content.js.map +0 -1
- package/dist/esm/Card/Content/Content.styles.js.map +0 -1
- package/dist/esm/Card/Header/Header.js.map +0 -1
- package/dist/esm/Card/Header/Header.styles.js.map +0 -1
- package/dist/esm/Card/Media/Media.js.map +0 -1
- package/dist/esm/Card/Media/Media.styles.js.map +0 -1
- package/dist/esm/Carousel/Carousel.js.map +0 -1
- package/dist/esm/Carousel/Carousel.styles.js.map +0 -1
- package/dist/esm/Carousel/CarouselControls.js.map +0 -1
- package/dist/esm/Carousel/CarouselSlide/CarouselSlide.js.map +0 -1
- package/dist/esm/Carousel/CarouselSlide/CarouselSlide.styles.js.map +0 -1
- package/dist/esm/Carousel/CarouselThumbnails.js.map +0 -1
- package/dist/esm/CheckBox/CheckBox.js.map +0 -1
- package/dist/esm/CheckBox/CheckBox.styles.js.map +0 -1
- package/dist/esm/CheckBoxGroup/CheckBoxGroup.js.map +0 -1
- package/dist/esm/CheckBoxGroup/CheckBoxGroup.styles.js.map +0 -1
- package/dist/esm/ColorPicker/ColorPicker.js.map +0 -1
- package/dist/esm/ColorPicker/ColorPicker.styles.js.map +0 -1
- package/dist/esm/ColorPicker/Fields/Fields.js.map +0 -1
- package/dist/esm/ColorPicker/Fields/Fields.styles.js.map +0 -1
- package/dist/esm/ColorPicker/Picker/Picker.js.map +0 -1
- package/dist/esm/ColorPicker/Picker/Picker.styles.js.map +0 -1
- package/dist/esm/ColorPicker/PresetColors/PresetColors.js.map +0 -1
- package/dist/esm/ColorPicker/PresetColors/PresetColors.styles.js.map +0 -1
- package/dist/esm/ColorPicker/SavedColors/SavedColors.js.map +0 -1
- package/dist/esm/ColorPicker/SavedColors/SavedColors.styles.js.map +0 -1
- package/dist/esm/Container/Container.js.map +0 -1
- package/dist/esm/Container/Container.styles.js.map +0 -1
- package/dist/esm/Controls/Controls.js.map +0 -1
- package/dist/esm/Controls/Controls.styles.js.map +0 -1
- package/dist/esm/Controls/LeftControl/LeftControl.js.map +0 -1
- package/dist/esm/Controls/LeftControl/LeftControl.styles.js.map +0 -1
- package/dist/esm/Controls/RightControl/RightControl.js.map +0 -1
- package/dist/esm/Controls/RightControl/RightControl.styles.js.map +0 -1
- package/dist/esm/Controls/context/ControlsContext.js.map +0 -1
- package/dist/esm/DatePicker/DatePicker.js.map +0 -1
- package/dist/esm/DatePicker/DatePicker.styles.js.map +0 -1
- package/dist/esm/DatePicker/useVisibleDate.js.map +0 -1
- package/dist/esm/DatePicker/utils.js.map +0 -1
- package/dist/esm/Dialog/Actions/Actions.js.map +0 -1
- package/dist/esm/Dialog/Actions/Actions.styles.js.map +0 -1
- package/dist/esm/Dialog/Content/Content.js.map +0 -1
- package/dist/esm/Dialog/Content/Content.styles.js.map +0 -1
- package/dist/esm/Dialog/Dialog.js.map +0 -1
- package/dist/esm/Dialog/Dialog.styles.js.map +0 -1
- package/dist/esm/Dialog/Title/Title.js.map +0 -1
- package/dist/esm/Dialog/Title/Title.styles.js.map +0 -1
- package/dist/esm/Dialog/context.js.map +0 -1
- package/dist/esm/DotPagination/DotPagination.js.map +0 -1
- package/dist/esm/DotPagination/DotPagination.styles.js.map +0 -1
- package/dist/esm/Drawer/Drawer.js.map +0 -1
- package/dist/esm/Drawer/Drawer.styles.js.map +0 -1
- package/dist/esm/DropDownMenu/DropDownMenu.js.map +0 -1
- package/dist/esm/DropDownMenu/DropDownMenu.styles.js.map +0 -1
- package/dist/esm/Dropdown/Dropdown.js.map +0 -1
- package/dist/esm/Dropdown/Dropdown.styles.js.map +0 -1
- package/dist/esm/Dropdown/List/List.js.map +0 -1
- package/dist/esm/Dropdown/List/List.styles.js.map +0 -1
- package/dist/esm/Dropdown/utils.js.map +0 -1
- package/dist/esm/DropdownButton/DropdownButton.js.map +0 -1
- package/dist/esm/DropdownButton/DropdownButton.styles.js.map +0 -1
- package/dist/esm/EmptyState/EmptyState.js.map +0 -1
- package/dist/esm/EmptyState/EmptyState.styles.js.map +0 -1
- package/dist/esm/FileUploader/DropZone/DropZone.js.map +0 -1
- package/dist/esm/FileUploader/DropZone/DropZone.styles.js.map +0 -1
- package/dist/esm/FileUploader/File/File.js.map +0 -1
- package/dist/esm/FileUploader/File/File.styles.js.map +0 -1
- package/dist/esm/FileUploader/FileList/FileList.js.map +0 -1
- package/dist/esm/FileUploader/FileList/FileList.styles.js.map +0 -1
- package/dist/esm/FileUploader/FileUploader.js.map +0 -1
- package/dist/esm/FileUploader/FileUploader.styles.js.map +0 -1
- package/dist/esm/FileUploader/Preview/Preview.js.map +0 -1
- package/dist/esm/FileUploader/Preview/Preview.styles.js.map +0 -1
- package/dist/esm/FileUploader/utils.js.map +0 -1
- package/dist/esm/FilterGroup/Counter/Counter.js.map +0 -1
- package/dist/esm/FilterGroup/Counter/Counter.styles.js.map +0 -1
- package/dist/esm/FilterGroup/FilterContent/FilterContent.js.map +0 -1
- package/dist/esm/FilterGroup/FilterContent/FilterContent.styles.js.map +0 -1
- package/dist/esm/FilterGroup/FilterGroup.js.map +0 -1
- package/dist/esm/FilterGroup/FilterGroup.styles.js.map +0 -1
- package/dist/esm/FilterGroup/FilterGroupContext.js.map +0 -1
- package/dist/esm/FilterGroup/LeftPanel/LeftPanel.js.map +0 -1
- package/dist/esm/FilterGroup/LeftPanel/LeftPanel.styles.js.map +0 -1
- package/dist/esm/FilterGroup/RightPanel/RightPanel.js.map +0 -1
- package/dist/esm/FilterGroup/RightPanel/RightPanel.styles.js.map +0 -1
- package/dist/esm/Focus/Focus.js.map +0 -1
- package/dist/esm/Focus/Focus.styles.js.map +0 -1
- package/dist/esm/Focus/utils.js.map +0 -1
- package/dist/esm/Footer/Footer.js.map +0 -1
- package/dist/esm/Footer/Footer.styles.js.map +0 -1
- package/dist/esm/FormElement/Adornment/Adornment.js.map +0 -1
- package/dist/esm/FormElement/Adornment/Adornment.styles.js.map +0 -1
- package/dist/esm/FormElement/CharCounter/CharCounter.js.map +0 -1
- package/dist/esm/FormElement/CharCounter/CharCounter.styles.js.map +0 -1
- package/dist/esm/FormElement/FormElement.js.map +0 -1
- package/dist/esm/FormElement/FormElement.styles.js.map +0 -1
- package/dist/esm/FormElement/InfoMessage/InfoMessage.js.map +0 -1
- package/dist/esm/FormElement/InfoMessage/InfoMessage.styles.js.map +0 -1
- package/dist/esm/FormElement/Label/Label.js.map +0 -1
- package/dist/esm/FormElement/Label/Label.styles.js.map +0 -1
- package/dist/esm/FormElement/Suggestions/Suggestions.js.map +0 -1
- package/dist/esm/FormElement/Suggestions/Suggestions.styles.js.map +0 -1
- package/dist/esm/FormElement/WarningText/WarningText.js.map +0 -1
- package/dist/esm/FormElement/WarningText/WarningText.styles.js.map +0 -1
- package/dist/esm/FormElement/context.js.map +0 -1
- package/dist/esm/FormElement/utils.js.map +0 -1
- package/dist/esm/GlobalActions/GlobalActions.js.map +0 -1
- package/dist/esm/GlobalActions/GlobalActions.styles.js.map +0 -1
- package/dist/esm/Grid/Grid.js.map +0 -1
- package/dist/esm/Grid/Grid.styles.js.map +0 -1
- package/dist/esm/Header/Actions/Actions.js.map +0 -1
- package/dist/esm/Header/Actions/Actions.styles.js.map +0 -1
- package/dist/esm/Header/Brand/Brand.js.map +0 -1
- package/dist/esm/Header/Brand/Brand.styles.js.map +0 -1
- package/dist/esm/Header/Header.js.map +0 -1
- package/dist/esm/Header/Header.styles.js.map +0 -1
- package/dist/esm/Header/Navigation/MenuBar/Bar.js.map +0 -1
- package/dist/esm/Header/Navigation/MenuBar/Bar.styles.js.map +0 -1
- package/dist/esm/Header/Navigation/MenuBar/MenuBar.js.map +0 -1
- package/dist/esm/Header/Navigation/MenuItem/MenuItem.js.map +0 -1
- package/dist/esm/Header/Navigation/MenuItem/MenuItem.styles.js.map +0 -1
- package/dist/esm/Header/Navigation/Navigation.js.map +0 -1
- package/dist/esm/Header/Navigation/Navigation.styles.js.map +0 -1
- package/dist/esm/Header/Navigation/useSelectionPath.js.map +0 -1
- package/dist/esm/Header/Navigation/utils/FocusContext.js.map +0 -1
- package/dist/esm/Header/Navigation/utils/SelectionContext.js.map +0 -1
- package/dist/esm/IconButton/IconButton.js.map +0 -1
- package/dist/esm/IconContainer/IconContainer.js.map +0 -1
- package/dist/esm/InlineEditor/InlineEditor.js.map +0 -1
- package/dist/esm/InlineEditor/InlineEditor.styles.js.map +0 -1
- package/dist/esm/Input/Input.js.map +0 -1
- package/dist/esm/Input/Input.styles.js.map +0 -1
- package/dist/esm/Input/icons.js.map +0 -1
- package/dist/esm/Kpi/Kpi.js.map +0 -1
- package/dist/esm/Kpi/Kpi.styles.js.map +0 -1
- package/dist/esm/Link/Link.js.map +0 -1
- package/dist/esm/Link/Link.styles.js.map +0 -1
- package/dist/esm/List/List.js.map +0 -1
- package/dist/esm/List/List.styles.js.map +0 -1
- package/dist/esm/List/useSelectableList.js.map +0 -1
- package/dist/esm/List/utils.js.map +0 -1
- package/dist/esm/ListContainer/ListContainer.js.map +0 -1
- package/dist/esm/ListContainer/ListContainer.styles.js.map +0 -1
- package/dist/esm/ListContainer/ListContext/ListContext.js.map +0 -1
- package/dist/esm/ListContainer/ListItem/ListItem.js.map +0 -1
- package/dist/esm/ListContainer/ListItem/ListItem.styles.js.map +0 -1
- package/dist/esm/Loading/Loading.js.map +0 -1
- package/dist/esm/Loading/Loading.styles.js.map +0 -1
- package/dist/esm/LoadingContainer/LoadingContainer.js.map +0 -1
- package/dist/esm/LoadingContainer/LoadingContainer.styles.js.map +0 -1
- package/dist/esm/Login/Login.js.map +0 -1
- package/dist/esm/Login/Login.styles.js.map +0 -1
- package/dist/esm/MultiButton/MultiButton.js.map +0 -1
- package/dist/esm/MultiButton/MultiButton.styles.js.map +0 -1
- package/dist/esm/OverflowTooltip/OverflowTooltip.js.map +0 -1
- package/dist/esm/OverflowTooltip/OverflowTooltip.styles.js.map +0 -1
- package/dist/esm/Pagination/Pagination.js.map +0 -1
- package/dist/esm/Pagination/Pagination.styles.js.map +0 -1
- package/dist/esm/Pagination/Select.js.map +0 -1
- package/dist/esm/Pagination/Select.styles.js.map +0 -1
- package/dist/esm/Panel/Panel.js.map +0 -1
- package/dist/esm/Panel/Panel.styles.js.map +0 -1
- package/dist/esm/ProgressBar/ProgressBar.js.map +0 -1
- package/dist/esm/ProgressBar/ProgressBar.styles.js.map +0 -1
- package/dist/esm/QueryBuilder/ConfirmationDialog/ConfirmationDialog.js.map +0 -1
- package/dist/esm/QueryBuilder/ConfirmationDialog/ConfirmationDialog.styles.js.map +0 -1
- package/dist/esm/QueryBuilder/Context.js.map +0 -1
- package/dist/esm/QueryBuilder/QueryBuilder.js.map +0 -1
- package/dist/esm/QueryBuilder/QueryBuilder.styles.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Attribute/Attribute.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Operator/Operator.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Rule.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Rule.styles.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Value/BooleanValue/BooleanValue.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Value/DateTimeValue/DateTimeValue.styles.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Value/DateTimeValue/utils.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Value/EmptyValue/EmptyValue.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Value/NumericValue/Numeric.styles.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Value/NumericValue/NumericValue.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Value/TextValue/TextValue.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Value/TextValue/TextValue.styles.js.map +0 -1
- package/dist/esm/QueryBuilder/Rule/Value/Value.js.map +0 -1
- package/dist/esm/QueryBuilder/RuleGroup/RuleGroup.js.map +0 -1
- package/dist/esm/QueryBuilder/types.js.map +0 -1
- package/dist/esm/QueryBuilder/utils/index.js.map +0 -1
- package/dist/esm/QueryBuilder/utils/reducer.js.map +0 -1
- package/dist/esm/Radio/Radio.js.map +0 -1
- package/dist/esm/Radio/Radio.styles.js.map +0 -1
- package/dist/esm/RadioGroup/RadioGroup.js.map +0 -1
- package/dist/esm/RadioGroup/RadioGroup.styles.js.map +0 -1
- package/dist/esm/ScrollToHorizontal/HorizontalScrollListItem/HorizontalScrollListItem.js.map +0 -1
- package/dist/esm/ScrollToHorizontal/HorizontalScrollListItem/HorizontalScrollListItem.styles.js.map +0 -1
- package/dist/esm/ScrollToHorizontal/ScrollToHorizontal.js.map +0 -1
- package/dist/esm/ScrollToHorizontal/ScrollToHorizontal.styles.js.map +0 -1
- package/dist/esm/ScrollToVertical/ScrollToVertical.js.map +0 -1
- package/dist/esm/ScrollToVertical/ScrollToVertical.styles.js.map +0 -1
- package/dist/esm/ScrollToVertical/VerticalScrollListItem/VerticalScrollListItem.js.map +0 -1
- package/dist/esm/ScrollToVertical/VerticalScrollListItem/VerticalScrollListItem.styles.js.map +0 -1
- package/dist/esm/Section/Section.js.map +0 -1
- package/dist/esm/Section/Section.styles.js.map +0 -1
- package/dist/esm/Select/Option.js.map +0 -1
- package/dist/esm/Select/OptionGroup.js.map +0 -1
- package/dist/esm/Select/Select.js.map +0 -1
- package/dist/esm/Select/Select.styles.js.map +0 -1
- package/dist/esm/SelectionList/SelectionList.js.map +0 -1
- package/dist/esm/SelectionList/SelectionList.styles.js.map +0 -1
- package/dist/esm/SimpleGrid/SimpleGrid.js.map +0 -1
- package/dist/esm/SimpleGrid/SimpleGrid.styles.js.map +0 -1
- package/dist/esm/Skeleton/Skeleton.js.map +0 -1
- package/dist/esm/Skeleton/Skeleton.styles.js.map +0 -1
- package/dist/esm/Slider/Slider.js.map +0 -1
- package/dist/esm/Slider/Slider.styles.js.map +0 -1
- package/dist/esm/Slider/SliderInput/SliderInput.js.map +0 -1
- package/dist/esm/Slider/SliderInput/SliderInput.styles.js.map +0 -1
- package/dist/esm/Slider/base.js.map +0 -1
- package/dist/esm/Slider/utils.js.map +0 -1
- package/dist/esm/Snackbar/Snackbar.js.map +0 -1
- package/dist/esm/Snackbar/Snackbar.styles.js.map +0 -1
- package/dist/esm/Snackbar/SnackbarContent/SnackbarContent.js.map +0 -1
- package/dist/esm/Snackbar/SnackbarContent/SnackbarContent.styles.js.map +0 -1
- package/dist/esm/SnackbarProvider/SnackbarProvider.js.map +0 -1
- package/dist/esm/SnackbarProvider/SnackbarProvider.styles.js.map +0 -1
- package/dist/esm/Stack/Stack.js.map +0 -1
- package/dist/esm/Stack/Stack.styles.js.map +0 -1
- package/dist/esm/Switch/Switch.js.map +0 -1
- package/dist/esm/Switch/Switch.styles.js.map +0 -1
- package/dist/esm/Table/Table.js.map +0 -1
- package/dist/esm/Table/Table.styles.js.map +0 -1
- package/dist/esm/Table/TableBody/TableBody.js.map +0 -1
- package/dist/esm/Table/TableBody/TableBody.styles.js.map +0 -1
- package/dist/esm/Table/TableCell/TableCell.js.map +0 -1
- package/dist/esm/Table/TableCell/TableCell.styles.js.map +0 -1
- package/dist/esm/Table/TableContainer/TableContainer.js.map +0 -1
- package/dist/esm/Table/TableContainer/TableContainer.styles.js.map +0 -1
- package/dist/esm/Table/TableContext.js.map +0 -1
- package/dist/esm/Table/TableHead/TableHead.js.map +0 -1
- package/dist/esm/Table/TableHead/TableHead.styles.js.map +0 -1
- package/dist/esm/Table/TableHeader/TableHeader.js.map +0 -1
- package/dist/esm/Table/TableHeader/TableHeader.styles.js.map +0 -1
- package/dist/esm/Table/TableHeader/utils.js.map +0 -1
- package/dist/esm/Table/TableRow/TableRow.js.map +0 -1
- package/dist/esm/Table/TableRow/TableRow.styles.js.map +0 -1
- package/dist/esm/Table/TableSection/TableSection.js.map +0 -1
- package/dist/esm/Table/TableSection/TableSection.styles.js.map +0 -1
- package/dist/esm/Table/TableSectionContext.js.map +0 -1
- package/dist/esm/Table/hooks/useHvBulkActions.js.map +0 -1
- package/dist/esm/Table/hooks/useHvFilters.js.map +0 -1
- package/dist/esm/Table/hooks/useHvGlobalFilter.js.map +0 -1
- package/dist/esm/Table/hooks/useHvHeaderGroups.js.map +0 -1
- package/dist/esm/Table/hooks/useHvPagination.js.map +0 -1
- package/dist/esm/Table/hooks/useHvResizeColumns.js.map +0 -1
- package/dist/esm/Table/hooks/useHvRowExpand.js.map +0 -1
- package/dist/esm/Table/hooks/useHvRowSelection.js.map +0 -1
- package/dist/esm/Table/hooks/useHvRowState.js.map +0 -1
- package/dist/esm/Table/hooks/useHvSortBy.js.map +0 -1
- package/dist/esm/Table/hooks/useHvSticky.js.map +0 -1
- package/dist/esm/Table/hooks/useHvTable.js.map +0 -1
- package/dist/esm/Table/hooks/useHvTableStyles.js.map +0 -1
- package/dist/esm/Table/renderers/DateColumnCell.js.map +0 -1
- package/dist/esm/Table/renderers/DefaultCell.js.map +0 -1
- package/dist/esm/Table/renderers/DropdownColumnCell.js.map +0 -1
- package/dist/esm/Table/renderers/ProgressColumnCell.js.map +0 -1
- package/dist/esm/Table/renderers/SwitchColumnCell.js.map +0 -1
- package/dist/esm/Table/renderers/renderers.js.map +0 -1
- package/dist/esm/Tabs/Tab/Tab.js.map +0 -1
- package/dist/esm/Tabs/Tab/Tab.styles.js.map +0 -1
- package/dist/esm/Tabs/Tabs.js.map +0 -1
- package/dist/esm/Tabs/Tabs.styles.js.map +0 -1
- package/dist/esm/Tag/Tag.js.map +0 -1
- package/dist/esm/Tag/Tag.styles.js.map +0 -1
- package/dist/esm/TagsInput/TagsInput.js.map +0 -1
- package/dist/esm/TagsInput/TagsInput.styles.js.map +0 -1
- package/dist/esm/TextArea/TextArea.js.map +0 -1
- package/dist/esm/TextArea/TextArea.styles.js.map +0 -1
- package/dist/esm/TimeAgo/TimeAgo.js.map +0 -1
- package/dist/esm/TimeAgo/TimeAgo.styles.js.map +0 -1
- package/dist/esm/TimeAgo/formatUtils.js.map +0 -1
- package/dist/esm/TimeAgo/useTimeAgo.js.map +0 -1
- package/dist/esm/TimeAgo/useTimeout.js.map +0 -1
- package/dist/esm/TimePicker/Placeholder.js.map +0 -1
- package/dist/esm/TimePicker/TimePicker.js.map +0 -1
- package/dist/esm/TimePicker/TimePicker.styles.js.map +0 -1
- package/dist/esm/TimePicker/Unit/Unit.js.map +0 -1
- package/dist/esm/TimePicker/Unit/Unit.styles.js.map +0 -1
- package/dist/esm/ToggleButton/ToggleButton.js.map +0 -1
- package/dist/esm/Tooltip/Tooltip.js.map +0 -1
- package/dist/esm/Tooltip/Tooltip.styles.js.map +0 -1
- package/dist/esm/TreeView/TreeItem/DefaultContent.js.map +0 -1
- package/dist/esm/TreeView/TreeItem/TreeItem.js.map +0 -1
- package/dist/esm/TreeView/TreeItem/TreeItem.styles.js.map +0 -1
- package/dist/esm/TreeView/TreeItem/useHvTreeItem.js.map +0 -1
- package/dist/esm/TreeView/TreeView.js.map +0 -1
- package/dist/esm/TreeView/TreeView.styles.js.map +0 -1
- package/dist/esm/TreeView/internals/DescendantProvider.js.map +0 -1
- package/dist/esm/TreeView/internals/TreeViewProvider.js.map +0 -1
- package/dist/esm/TreeView/internals/corePlugins.js.map +0 -1
- package/dist/esm/TreeView/internals/hooks/plugins/defaultPlugins.js.map +0 -1
- package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewContextValueBuilder.js.map +0 -1
- package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewExpansion.js.map +0 -1
- package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewFocus.js.map +0 -1
- package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewKeyboardNavigation.js.map +0 -1
- package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewNodes.js.map +0 -1
- package/dist/esm/TreeView/internals/hooks/plugins/useTreeViewSelection.js.map +0 -1
- package/dist/esm/TreeView/internals/hooks/useInstanceEventHandler.js.map +0 -1
- package/dist/esm/TreeView/internals/hooks/useTreeView.js.map +0 -1
- package/dist/esm/TreeView/internals/hooks/useTreeViewInstanceEvents.js.map +0 -1
- package/dist/esm/TreeView/internals/hooks/useTreeViewModels.js.map +0 -1
- package/dist/esm/TreeView/internals/hooks/utils.js.map +0 -1
- package/dist/esm/TreeView/internals/utils/EventManager.js.map +0 -1
- package/dist/esm/TreeView/internals/utils/FinalizationRegistryBasedCleanupTracking.js.map +0 -1
- package/dist/esm/TreeView/internals/utils/TimerBasedCleanupTracking.js.map +0 -1
- package/dist/esm/TreeView/internals/utils/publishTreeViewEvent.js.map +0 -1
- package/dist/esm/Typography/Typography.js.map +0 -1
- package/dist/esm/Typography/Typography.styles.js.map +0 -1
- package/dist/esm/Typography/utils.js.map +0 -1
- package/dist/esm/VerticalNavigation/Actions/Action.js.map +0 -1
- package/dist/esm/VerticalNavigation/Actions/Action.styles.js.map +0 -1
- package/dist/esm/VerticalNavigation/Actions/Actions.js.map +0 -1
- package/dist/esm/VerticalNavigation/Actions/Actions.styles.js.map +0 -1
- package/dist/esm/VerticalNavigation/Header/Header.js.map +0 -1
- package/dist/esm/VerticalNavigation/Header/Header.styles.js.map +0 -1
- package/dist/esm/VerticalNavigation/Navigation/Navigation.js.map +0 -1
- package/dist/esm/VerticalNavigation/Navigation/Navigation.styles.js.map +0 -1
- package/dist/esm/VerticalNavigation/NavigationPopup/NavigationPopup.styles.js.map +0 -1
- package/dist/esm/VerticalNavigation/NavigationPopup/NavigationPopupContainer.js.map +0 -1
- package/dist/esm/VerticalNavigation/NavigationSlider/NavigationSlider.js.map +0 -1
- package/dist/esm/VerticalNavigation/NavigationSlider/NavigationSlider.styles.js.map +0 -1
- package/dist/esm/VerticalNavigation/NavigationSlider/utils.js.map +0 -1
- package/dist/esm/VerticalNavigation/TreeView/TreeView.js.map +0 -1
- package/dist/esm/VerticalNavigation/TreeView/TreeView.styles.js.map +0 -1
- package/dist/esm/VerticalNavigation/TreeView/TreeViewContext.js.map +0 -1
- package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.js.map +0 -1
- package/dist/esm/VerticalNavigation/TreeView/TreeViewItem.styles.js.map +0 -1
- package/dist/esm/VerticalNavigation/VerticalNavigation.js.map +0 -1
- package/dist/esm/VerticalNavigation/VerticalNavigation.styles.js.map +0 -1
- package/dist/esm/VerticalNavigation/VerticalNavigationContext.js.map +0 -1
- package/dist/esm/VerticalNavigation/utils/VerticalNavigation.utils.js.map +0 -1
- package/dist/esm/hooks/useClickOutside.js.map +0 -1
- package/dist/esm/hooks/useComputation.js.map +0 -1
- package/dist/esm/hooks/useControlled.js.map +0 -1
- package/dist/esm/hooks/useEnhancedEffect.js.map +0 -1
- package/dist/esm/hooks/useExpandable.js.map +0 -1
- package/dist/esm/hooks/useFocus.js.map +0 -1
- package/dist/esm/hooks/useForkRef.js.map +0 -1
- package/dist/esm/hooks/useImageLoaded.js.map +0 -1
- package/dist/esm/hooks/useIsMounted.js.map +0 -1
- package/dist/esm/hooks/useLabels.js.map +0 -1
- package/dist/esm/hooks/useScrollTo.js.map +0 -1
- package/dist/esm/hooks/useUniqueId.js.map +0 -1
- package/dist/esm/hooks/useWidth.js.map +0 -1
- package/dist/esm/icons.js.map +0 -1
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/providers/Provider.js.map +0 -1
- package/dist/esm/providers/ThemeProvider.js.map +0 -1
- package/dist/esm/types/generic.js.map +0 -1
- package/dist/esm/utils/Callout.js.map +0 -1
- package/dist/esm/utils/CounterLabel.js.map +0 -1
- package/dist/esm/utils/browser.js.map +0 -1
- package/dist/esm/utils/deepMerge.js.map +0 -1
- package/dist/esm/utils/document.js.map +0 -1
- package/dist/esm/utils/focusUtils.js.map +0 -1
- package/dist/esm/utils/focusableElementFinder.js.map +0 -1
- package/dist/esm/utils/getComponentName.js.map +0 -1
- package/dist/esm/utils/helpers.js.map +0 -1
- package/dist/esm/utils/hexToRgbA.js.map +0 -1
- package/dist/esm/utils/iconVariant.js.map +0 -1
- package/dist/esm/utils/keyboardUtils.js.map +0 -1
- package/dist/esm/utils/multiSelectionEventHandler.js.map +0 -1
- package/dist/esm/utils/scroll.js.map +0 -1
- package/dist/esm/utils/setId.js.map +0 -1
- package/dist/esm/utils/sizes.js.map +0 -1
- package/dist/esm/utils/theme.js.map +0 -1
- package/dist/esm/utils/useSavedState.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TreeItem.styles.js","sources":["../../../../src/TreeView/TreeItem/TreeItem.styles.ts"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nimport { outlineStyles } from \"../../utils/focusUtils\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvTreeItem\", {\n /** Applied to the root element */\n root: {\n listStyle: \"none\",\n margin: 0,\n padding: 0,\n outline: 0,\n },\n group: {\n margin: 0,\n padding: 0,\n marginLeft: theme.space.sm,\n },\n\n content: {\n padding: theme.spacing(0, 1),\n minHeight: 32, // TODO: review\n\n width: \"100%\",\n boxSizing: \"border-box\", // prevent width + padding to overflow\n display: \"flex\",\n alignItems: \"center\",\n cursor: \"pointer\",\n WebkitTapHighlightColor: \"transparent\",\n \"&:hover:not($disabled)\": {\n backgroundColor: theme.colors.bgHover,\n },\n },\n expanded: {},\n selected: {\n backgroundColor: theme.colors.bgPageSecondary,\n },\n focused: {\n backgroundColor: theme.colors.bgHover,\n \"&:focus-visible\": {\n ...outlineStyles,\n },\n },\n disabled: {\n cursor: \"not-allowed\",\n color: theme.colors.textDisabled,\n \"& $label\": {\n color: theme.colors.textDisabled,\n },\n },\n label: {\n paddingLeft: 4,\n width: \"100%\",\n boxSizing: \"border-box\",\n\n // fixes overflow\n minWidth: 0,\n position: \"relative\",\n ...theme.typography.body,\n },\n iconContainer: {\n display: \"flex\",\n flexShrink: 0,\n justifyContent: \"center\",\n\n marginRight: 4,\n width: theme.space.sm,\n \":empty\": {\n width: theme.space.xs,\n },\n },\n});\n"],"names":[],"mappings":";;;AAKO,MAAM,EAAE,eAAe,eAAe,cAAc,cAAc;AAAA;AAAA,EAEvE,MAAM;AAAA,IACJ,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,SAAS;AAAA,EACX;AAAA,EACA,OAAO;AAAA,IACL,QAAQ;AAAA,IACR,SAAS;AAAA,IACT,YAAY,MAAM,MAAM;AAAA,EAC1B;AAAA,EAEA,SAAS;AAAA,IACP,SAAS,MAAM,QAAQ,GAAG,CAAC;AAAA,IAC3B,WAAW;AAAA;AAAA,IAEX,OAAO;AAAA,IACP,WAAW;AAAA;AAAA,IACX,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,yBAAyB;AAAA,IACzB,0BAA0B;AAAA,MACxB,iBAAiB,MAAM,OAAO;AAAA,IAAA;AAAA,EAElC;AAAA,EACA,UAAU,CAAC;AAAA,EACX,UAAU;AAAA,IACR,iBAAiB,MAAM,OAAO;AAAA,EAChC;AAAA,EACA,SAAS;AAAA,IACP,iBAAiB,MAAM,OAAO;AAAA,IAC9B,mBAAmB;AAAA,MACjB,GAAG;AAAA,IAAA;AAAA,EAEP;AAAA,EACA,UAAU;AAAA,IACR,QAAQ;AAAA,IACR,OAAO,MAAM,OAAO;AAAA,IACpB,YAAY;AAAA,MACV,OAAO,MAAM,OAAO;AAAA,IAAA;AAAA,EAExB;AAAA,EACA,OAAO;AAAA,IACL,aAAa;AAAA,IACb,OAAO;AAAA,IACP,WAAW;AAAA;AAAA,IAGX,UAAU;AAAA,IACV,UAAU;AAAA,IACV,GAAG,MAAM,WAAW;AAAA,EACtB;AAAA,EACA,eAAe;AAAA,IACb,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAEhB,aAAa;AAAA,IACb,OAAO,MAAM,MAAM;AAAA,IACnB,UAAU;AAAA,MACR,OAAO,MAAM,MAAM;AAAA,IAAA;AAAA,EACrB;AAEJ,CAAC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useHvTreeItem.js","sources":["../../../../src/TreeView/TreeItem/useHvTreeItem.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport { DescendantContext } from \"../internals/DescendantProvider\";\nimport { DefaultTreeViewPlugins } from \"../internals/hooks/plugins\";\nimport { useTreeViewContext } from \"../internals/TreeViewProvider\";\n\nexport function useHvTreeItem(nodeId: string) {\n const { instance, multiSelect } =\n useTreeViewContext<DefaultTreeViewPlugins>();\n const { level = 0 } = React.useContext(DescendantContext);\n\n const expandable = instance ? instance.isNodeExpandable(nodeId) : false;\n const expanded = instance ? instance.isNodeExpanded(nodeId) : false;\n const focused = instance ? instance.isNodeFocused(nodeId) : false;\n const selected = instance ? instance.isNodeSelected(nodeId) : false;\n const disabled = instance ? instance.isNodeDisabled(nodeId) : false;\n\n const handleExpansion = (event: React.MouseEvent) => {\n if (!instance || disabled) return;\n\n if (!focused) {\n instance.focusNode(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n // If already expanded and trying to toggle selection don't close\n if (expandable && !(multiple && instance.isNodeExpanded(nodeId))) {\n instance.toggleNodeExpansion(event, nodeId);\n }\n };\n\n const handleSelection = (event: React.MouseEvent) => {\n if (!instance || disabled) return;\n\n if (!focused) {\n instance.focusNode(event, nodeId);\n }\n\n const multiple =\n multiSelect && (event.shiftKey || event.ctrlKey || event.metaKey);\n\n if (multiple) {\n if (event.shiftKey) {\n instance.selectRange(event, { end: nodeId });\n } else {\n instance.selectNode(event, nodeId, true);\n }\n } else {\n instance.selectNode(event, nodeId);\n }\n };\n\n const preventSelection = (event: React.MouseEvent) => {\n if (event.shiftKey || event.ctrlKey || event.metaKey || disabled) {\n // Prevent text selection\n event.preventDefault();\n }\n };\n\n return {\n instance,\n level,\n disabled,\n expanded,\n selected,\n focused,\n handleExpansion,\n handleSelection,\n preventSelection,\n };\n}\n"],"names":[],"mappings":";;;AAMO,SAAS,cAAc,QAAgB;AAC5C,QAAM,EAAE,UAAU,YAAY,IAC5B,mBAA2C;AAC7C,QAAM,EAAE,QAAQ,EAAA,IAAM,MAAM,WAAW,iBAAiB;AAExD,QAAM,aAAa,WAAW,SAAS,iBAAiB,MAAM,IAAI;AAClE,QAAM,WAAW,WAAW,SAAS,eAAe,MAAM,IAAI;AAC9D,QAAM,UAAU,WAAW,SAAS,cAAc,MAAM,IAAI;AAC5D,QAAM,WAAW,WAAW,SAAS,eAAe,MAAM,IAAI;AAC9D,QAAM,WAAW,WAAW,SAAS,eAAe,MAAM,IAAI;AAExD,QAAA,kBAAkB,CAAC,UAA4B;AAC/C,QAAA,CAAC,YAAY,SAAU;AAE3B,QAAI,CAAC,SAAS;AACH,eAAA,UAAU,OAAO,MAAM;AAAA,IAAA;AAGlC,UAAM,WACJ,gBAAgB,MAAM,YAAY,MAAM,WAAW,MAAM;AAG3D,QAAI,cAAc,EAAE,YAAY,SAAS,eAAe,MAAM,IAAI;AACvD,eAAA,oBAAoB,OAAO,MAAM;AAAA,IAAA;AAAA,EAE9C;AAEM,QAAA,kBAAkB,CAAC,UAA4B;AAC/C,QAAA,CAAC,YAAY,SAAU;AAE3B,QAAI,CAAC,SAAS;AACH,eAAA,UAAU,OAAO,MAAM;AAAA,IAAA;AAGlC,UAAM,WACJ,gBAAgB,MAAM,YAAY,MAAM,WAAW,MAAM;AAE3D,QAAI,UAAU;AACZ,UAAI,MAAM,UAAU;AAClB,iBAAS,YAAY,OAAO,EAAE,KAAK,QAAQ;AAAA,MAAA,OACtC;AACI,iBAAA,WAAW,OAAO,QAAQ,IAAI;AAAA,MAAA;AAAA,IACzC,OACK;AACI,eAAA,WAAW,OAAO,MAAM;AAAA,IAAA;AAAA,EAErC;AAEM,QAAA,mBAAmB,CAAC,UAA4B;AACpD,QAAI,MAAM,YAAY,MAAM,WAAW,MAAM,WAAW,UAAU;AAEhE,YAAM,eAAe;AAAA,IAAA;AAAA,EAEzB;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TreeView.js","sources":["../../../src/TreeView/TreeView.tsx"],"sourcesContent":["import { useSlotProps } from \"@mui/base/utils\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvIcon } from \"../icons\";\nimport { fixedForwardRef, HvBaseProps } from \"../types/generic\";\nimport {\n DEFAULT_TREE_VIEW_PLUGINS,\n DefaultTreeViewPluginParameters,\n} from \"./internals/hooks/plugins\";\nimport { useTreeView } from \"./internals/hooks/useTreeView\";\nimport { TreeViewProvider } from \"./internals/TreeViewProvider\";\nimport { staticClasses, useClasses } from \"./TreeView.styles\";\n\nexport { staticClasses as treeView2Classes }; // TODO: remove old `treeViewClasses`\n\nexport type HvTreeViewClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvTreeViewProps<Multiple extends boolean | undefined>\n extends HvBaseProps<HTMLUListElement>,\n DefaultTreeViewPluginParameters<Multiple> {\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvTreeViewClasses;\n /** Tree View children. Usually a `HvTreeItem` instance, or a custom variation of it */\n children?: React.ReactNode;\n}\n\n/**\n * A Tree View displays hierarchical structures.\n * It also facilitates the exploration of categorical levels and their content.\n *\n * Tree structures are built through composing the `HvTreeItem` component,\n * or a custom variation of it.\n *\n * It is based on the [MUI X TreeView](https://mui.com/x/react-tree-view) component.\n *\n * @example\n * ```tsx\n * <HvTreeView>\n * <HvTreeItem nodeId=\"1\" label=\"File1\" />\n * </HvTreeView>\n * ```\n */\nexport const HvTreeView = fixedForwardRef(function HvTreeView<\n Multiple extends boolean | undefined,\n>(props: HvTreeViewProps<Multiple>, ref: React.Ref<HTMLUListElement>) {\n const {\n id,\n children,\n classes: classesProp,\n className,\n\n disabledItemsFocusable,\n multiSelect,\n expanded,\n defaultExpanded,\n selected,\n defaultSelected,\n disableSelection,\n defaultCollapseIcon = <HvIcon name=\"CaretDown\" size=\"xs\" />,\n defaultExpandIcon = <HvIcon name=\"CaretRight\" size=\"xs\" />,\n defaultEndIcon,\n defaultParentIcon,\n onNodeSelect,\n onNodeToggle,\n onNodeFocus,\n ...others\n } = useDefaultProps(\"HvTreeView\", props);\n const { classes, cx } = useClasses(classesProp);\n\n const { getRootProps, contextValue } = useTreeView({\n disabledItemsFocusable,\n expanded,\n defaultExpanded,\n onNodeToggle,\n onNodeFocus,\n disableSelection,\n defaultSelected,\n selected,\n multiSelect,\n onNodeSelect: onNodeSelect as HvTreeViewProps<any>[\"onNodeSelect\"],\n id,\n defaultCollapseIcon,\n defaultEndIcon,\n defaultExpandIcon,\n defaultParentIcon,\n plugins: DEFAULT_TREE_VIEW_PLUGINS,\n rootRef: ref,\n });\n\n const rootProps = useSlotProps({\n elementType: \"ul\",\n externalSlotProps: {},\n externalForwardedProps: others,\n className: classes.root,\n getSlotProps: getRootProps,\n ownerState: props,\n });\n\n return (\n <TreeViewProvider value={contextValue}>\n <ul className={cx(classes.root, className)} {...rootProps} {...others}>\n {children}\n </ul>\n </TreeViewProvider>\n );\n});\n"],"names":["HvTreeView"],"mappings":";;;;;;;;;;AA6CO,MAAM,aAAa,gBAAgB,SAASA,YAEjD,OAAkC,KAAkC;AAC9D,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IAEA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,sBAAuB,oBAAA,QAAA,EAAO,MAAK,aAAY,MAAK,MAAK;AAAA,IACzD,oBAAqB,oBAAA,QAAA,EAAO,MAAK,cAAa,MAAK,MAAK;AAAA,IACxD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,GAAG;AAAA,EAAA,IACD,gBAAgB,cAAc,KAAK;AACvC,QAAM,EAAE,SAAS,OAAO,WAAW,WAAW;AAE9C,QAAM,EAAE,cAAc,aAAa,IAAI,YAAY;AAAA,IACjD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS;AAAA,IACT,SAAS;AAAA,EAAA,CACV;AAED,QAAM,YAAY,aAAa;AAAA,IAC7B,aAAa;AAAA,IACb,mBAAmB,CAAC;AAAA,IACpB,wBAAwB;AAAA,IACxB,WAAW,QAAQ;AAAA,IACnB,cAAc;AAAA,IACd,YAAY;AAAA,EAAA,CACb;AAED,6BACG,kBAAiB,EAAA,OAAO,cACvB,UAAA,oBAAC,QAAG,WAAW,GAAG,QAAQ,MAAM,SAAS,GAAI,GAAG,WAAY,GAAG,QAC5D,SACH,CAAA,GACF;AAEJ,CAAC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TreeView.styles.js","sources":["../../../src/TreeView/TreeView.styles.ts"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\n\nexport const { staticClasses, useClasses } = createClasses(\"HvTreeView\", {\n /** Applied to the root element */\n root: {\n padding: 0,\n margin: 0,\n listStyle: \"none\",\n outline: \"none\",\n },\n});\n"],"names":[],"mappings":";AAEO,MAAM,EAAE,eAAe,eAAe,cAAc,cAAc;AAAA;AAAA,EAEvE,MAAM;AAAA,IACJ,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,SAAS;AAAA,EAAA;AAEb,CAAC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"DescendantProvider.js","sources":["../../../../src/TreeView/internals/DescendantProvider.tsx"],"sourcesContent":["import * as React from \"react\";\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from \"@mui/material/utils\";\n\n/** Credit: https://github.com/reach/reach-ui/blob/86a046f54d53b6420e392b3fa56dd991d9d4e458/packages/descendants/README.md\n * Modified slightly to suit our purposes.\n */\n\nfunction binaryFindElement(\n array: TreeItemDescendant[],\n element: HTMLLIElement,\n) {\n let start = 0;\n let end = array.length - 1;\n\n while (start <= end) {\n const middle = Math.floor((start + end) / 2);\n\n if (array[middle].element === element) {\n return middle;\n }\n\n if (\n // eslint-disable-next-line no-bitwise\n array[middle].element.compareDocumentPosition(element) &\n Node.DOCUMENT_POSITION_PRECEDING\n ) {\n end = middle - 1;\n } else {\n start = middle + 1;\n }\n }\n\n return start;\n}\n\nexport interface TreeItemDescendant {\n element: HTMLLIElement;\n id: string;\n}\n\ninterface DescendantContextValue {\n registerDescendant?: (params: TreeItemDescendant & { index: number }) => void;\n unregisterDescendant?: (params: HTMLLIElement) => void;\n descendants?: TreeItemDescendant[];\n parentId?: string | null;\n level?: number;\n}\n\nexport const DescendantContext = React.createContext<DescendantContextValue>({\n level: 0,\n});\n\nfunction usePrevious<T>(value: T) {\n const ref = React.useRef<T | null>(null);\n React.useEffect(() => {\n ref.current = value;\n }, [value]);\n return ref.current;\n}\n\nconst noop = () => {};\n\n/**\n * This hook registers our descendant by passing it into an array. We can then\n * search that array by to find its index when registering it in the component.\n * We use this for focus management, keyboard navigation, and typeahead\n * functionality for some components.\n *\n * The hook accepts the element node\n *\n * Our main goals with this are:\n * 1) maximum composability,\n * 2) minimal API friction\n * 3) SSR compatibility*\n * 4) concurrent safe\n * 5) index always up-to-date with the tree despite changes\n * 6) works with memoization of any component in the tree (hopefully)\n *\n * * As for SSR, the good news is that we don't actually need the index on the\n * server for most use-cases, as we are only using it to determine the order of\n * composed descendants for keyboard navigation.\n */\nexport function useDescendant(descendant: TreeItemDescendant) {\n const [, forceUpdate] = React.useState<{}>();\n const {\n registerDescendant = noop,\n unregisterDescendant = noop,\n descendants = [],\n parentId = null,\n level = 0,\n } = React.useContext(DescendantContext);\n\n // This will initially return -1 because we haven't registered the descendant\n // on the first render. After we register, this will then return the correct\n // index on the following render, and we will re-register descendants\n // so that everything is up-to-date before the user interacts with a\n // collection.\n const index = descendants.findIndex(\n (item) => item.element === descendant.element,\n );\n\n const previousDescendants = usePrevious(descendants);\n\n // We also need to re-register descendants any time ANY of the other\n // descendants have changed. My brain was melting when I wrote this and it\n // feels a little off, but checking in render and using the result in the\n // effect's dependency array works well enough.\n const someDescendantsHaveChanged = descendants.some(\n (newDescendant, position) => {\n return (\n previousDescendants?.[position] &&\n previousDescendants[position].element !== newDescendant.element\n );\n },\n );\n\n // Prevent any flashing\n useEnhancedEffect(() => {\n if (descendant.element) {\n registerDescendant({\n ...descendant,\n index,\n });\n return () => {\n unregisterDescendant(descendant.element!);\n };\n }\n forceUpdate({});\n\n return undefined;\n }, [\n registerDescendant,\n unregisterDescendant,\n index,\n someDescendantsHaveChanged,\n descendant,\n ]);\n\n return { parentId, index, level };\n}\n\ninterface DescendantProviderProps {\n id?: string;\n level?: number;\n children: React.ReactNode;\n}\n\nexport const DescendantProvider = (props: DescendantProviderProps) => {\n const { children, id, level } = props;\n\n const [items, set] = React.useState<\n (TreeItemDescendant & { index: number })[]\n >([]);\n\n const registerDescendant = React.useCallback(\n ({ element, ...other }: TreeItemDescendant) => {\n set((oldItems) => {\n if (oldItems.length === 0) {\n // If there are no items, register at index 0 and bail.\n return [\n {\n ...other,\n element,\n index: 0,\n },\n ];\n }\n\n const index = binaryFindElement(oldItems, element);\n let newItems: typeof oldItems;\n\n if (oldItems[index] && oldItems[index].element === element) {\n // If the element is already registered, just use the same array\n newItems = oldItems;\n } else {\n // When registering a descendant, we need to make sure we insert in\n // into the array in the same order that it appears in the DOM. So as\n // new descendants are added or maybe some are removed, we always know\n // that the array is up-to-date and correct.\n //\n // So here we look at our registered descendants and see if the new\n // element we are adding appears earlier than an existing descendant's\n // DOM node via `node.compareDocumentPosition`. If it does, we insert\n // the new element at this index. Because `registerDescendant` will be\n // called in an effect every time the descendants state value changes,\n // we should be sure that this index is accurate when descendent\n // elements come or go from our component.\n\n const newItem = {\n ...other,\n element,\n index,\n };\n\n // If an index is not found we will push the element to the end.\n newItems = oldItems.slice();\n newItems.splice(index, 0, newItem);\n }\n newItems.forEach((item, position) => {\n item.index = position;\n });\n return newItems;\n });\n },\n [],\n );\n\n const unregisterDescendant = React.useCallback((element: HTMLLIElement) => {\n set((oldItems) => oldItems.filter((item) => element !== item.element));\n }, []);\n\n const value = React.useMemo(\n () => ({\n descendants: items,\n registerDescendant,\n unregisterDescendant,\n parentId: id,\n level,\n }),\n [items, registerDescendant, unregisterDescendant, id, level],\n );\n\n return (\n <DescendantContext.Provider value={value}>\n {children}\n </DescendantContext.Provider>\n );\n};\n"],"names":["useEnhancedEffect"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TreeViewProvider.js","sources":["../../../../src/TreeView/internals/TreeViewProvider.tsx"],"sourcesContent":["import { createContext, useContext } from \"react\";\n\nimport { DescendantProvider } from \"./DescendantProvider\";\nimport { TreeViewAnyPluginSignature, TreeViewInstance } from \"./types\";\n\nexport interface TreeViewContextValue<\n TPlugins extends readonly TreeViewAnyPluginSignature[],\n> {\n treeId: string | undefined;\n instance: TreeViewInstance<TPlugins> | null;\n multiSelect: boolean;\n disabledItemsFocusable: boolean;\n icons: {\n defaultCollapseIcon: React.ReactNode;\n defaultExpandIcon: React.ReactNode;\n defaultParentIcon: React.ReactNode;\n defaultEndIcon: React.ReactNode;\n };\n}\n\nexport const DEFAULT_TREE_VIEW_CONTEXT_VALUE: TreeViewContextValue<any> = {\n instance: null,\n multiSelect: false,\n disabledItemsFocusable: false,\n treeId: undefined,\n icons: {\n defaultCollapseIcon: null,\n defaultExpandIcon: null,\n defaultParentIcon: null,\n defaultEndIcon: null,\n },\n};\n\n/**\n * @ignore - internal component.\n */\nexport const TreeViewContext = createContext<TreeViewContextValue<any>>(\n DEFAULT_TREE_VIEW_CONTEXT_VALUE,\n);\n\nexport interface TreeViewProviderProps<\n TPlugins extends readonly TreeViewAnyPluginSignature[],\n> {\n value: TreeViewContextValue<TPlugins>;\n children: React.ReactNode;\n}\n\n/**\n * Sets up the contexts for the underlying TreeItem components.\n *\n * @ignore - do not document.\n */\nexport const TreeViewProvider = <\n TPlugins extends readonly TreeViewAnyPluginSignature[],\n>(\n props: TreeViewProviderProps<TPlugins>,\n) => {\n const { value, children } = props;\n\n return (\n <TreeViewContext.Provider value={value}>\n <DescendantProvider>{children}</DescendantProvider>\n </TreeViewContext.Provider>\n );\n};\n\nexport const useTreeViewContext = <\n TPlugins extends readonly TreeViewAnyPluginSignature[],\n>() => useContext(TreeViewContext) as TreeViewContextValue<TPlugins>;\n"],"names":[],"mappings":";;;AAoBO,MAAM,kCAA6D;AAAA,EACxE,UAAU;AAAA,EACV,aAAa;AAAA,EACb,wBAAwB;AAAA,EACxB,QAAQ;AAAA,EACR,OAAO;AAAA,IACL,qBAAqB;AAAA,IACrB,mBAAmB;AAAA,IACnB,mBAAmB;AAAA,IACnB,gBAAgB;AAAA,EAAA;AAEpB;AAKO,MAAM,kBAAkB;AAAA,EAC7B;AACF;AAca,MAAA,mBAAmB,CAG9B,UACG;AACG,QAAA,EAAE,OAAO,SAAA,IAAa;AAG1B,SAAA,oBAAC,gBAAgB,UAAhB,EAAyB,OACxB,UAAC,oBAAA,oBAAA,EAAoB,UAAS,EAChC,CAAA;AAEJ;AAEa,MAAA,qBAAqB,MAE3B,WAAW,eAAe;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"corePlugins.js","sources":["../../../../src/TreeView/internals/corePlugins.ts"],"sourcesContent":["import { useTreeViewInstanceEvents } from \"./hooks/useTreeViewInstanceEvents\";\nimport { ConvertPluginsIntoSignatures, MergePlugins } from \"./types\";\n\n/**\n * Internal plugins that creates the tools used by the other plugins.\n * These plugins are used by the tree view components.\n */\nexport const TREE_VIEW_CORE_PLUGINS = [useTreeViewInstanceEvents] as const;\n\n// @ts-ignore\nexport type TreeViewCorePluginsSignature = MergePlugins<\n ConvertPluginsIntoSignatures<typeof TREE_VIEW_CORE_PLUGINS>\n>;\n"],"names":[],"mappings":";AAOa,MAAA,yBAAyB,CAAC,yBAAyB;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defaultPlugins.js","sources":["../../../../../../src/TreeView/internals/hooks/plugins/defaultPlugins.ts"],"sourcesContent":["import { ConvertPluginsIntoSignatures } from \"../../types\";\nimport {\n useTreeViewContextValueBuilder,\n UseTreeViewContextValueBuilderParameters,\n} from \"./useTreeViewContextValueBuilder\";\nimport {\n useTreeViewExpansion,\n UseTreeViewExpansionParameters,\n} from \"./useTreeViewExpansion\";\nimport {\n useTreeViewFocus,\n UseTreeViewFocusParameters,\n} from \"./useTreeViewFocus\";\nimport { useTreeViewKeyboardNavigation } from \"./useTreeViewKeyboardNavigation\";\nimport {\n useTreeViewNodes,\n UseTreeViewNodesParameters,\n} from \"./useTreeViewNodes\";\nimport {\n useTreeViewSelection,\n UseTreeViewSelectionParameters,\n} from \"./useTreeViewSelection\";\n\nexport const DEFAULT_TREE_VIEW_PLUGINS = [\n useTreeViewNodes,\n useTreeViewExpansion,\n useTreeViewSelection,\n useTreeViewFocus,\n useTreeViewKeyboardNavigation,\n useTreeViewContextValueBuilder,\n] as const;\n\nexport type DefaultTreeViewPlugins = ConvertPluginsIntoSignatures<\n typeof DEFAULT_TREE_VIEW_PLUGINS\n>;\n\n// We can't infer this type from the plugin, otherwise we would lose the generics.\nexport interface DefaultTreeViewPluginParameters<\n Multiple extends boolean | undefined,\n> extends UseTreeViewNodesParameters,\n UseTreeViewExpansionParameters,\n UseTreeViewFocusParameters,\n UseTreeViewSelectionParameters<Multiple>,\n UseTreeViewContextValueBuilderParameters {}\n"],"names":[],"mappings":";;;;;;AAuBO,MAAM,4BAA4B;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTreeViewContextValueBuilder.js","sources":["../../../../../../src/TreeView/internals/hooks/plugins/useTreeViewContextValueBuilder.ts"],"sourcesContent":["import { unstable_useId as useId } from \"@mui/material/utils\";\n\nimport type {\n TreeViewInstance,\n TreeViewPlugin,\n TreeViewPluginSignature,\n} from \"../../types\";\nimport type { UseTreeViewNodesSignature } from \"./useTreeViewNodes\";\nimport type { UseTreeViewSelectionSignature } from \"./useTreeViewSelection\";\n\nexport interface UseTreeViewContextValueBuilderParameters {\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide this prop. It falls back to a randomly generated id.\n */\n id?: string;\n /**\n * The default icon used to collapse the node.\n */\n defaultCollapseIcon?: React.ReactNode;\n /**\n * The default icon displayed next to a end node. This is applied to all\n * tree nodes and can be overridden by the TreeItem `icon` prop.\n */\n defaultEndIcon?: React.ReactNode;\n /**\n * The default icon used to expand the node.\n */\n defaultExpandIcon?: React.ReactNode;\n /**\n * The default icon displayed next to a parent node. This is applied to all\n * parent nodes and can be overridden by the TreeItem `icon` prop.\n */\n defaultParentIcon?: React.ReactNode;\n}\n\nexport type UseTreeViewContextValueBuilderDefaultizedParameters =\n UseTreeViewContextValueBuilderParameters;\n\nexport type UseTreeViewContextValueBuilderSignature = TreeViewPluginSignature<\n UseTreeViewContextValueBuilderParameters,\n UseTreeViewContextValueBuilderDefaultizedParameters,\n {},\n {},\n {},\n never,\n [UseTreeViewNodesSignature, UseTreeViewSelectionSignature<any>]\n>;\n\nexport const useTreeViewContextValueBuilder: TreeViewPlugin<\n UseTreeViewContextValueBuilderSignature\n> = ({ instance, params }) => {\n const treeId = useId(params.id);\n\n return {\n getRootProps: () => ({\n id: treeId,\n }),\n contextValue: {\n treeId,\n instance: instance as TreeViewInstance<any>,\n multiSelect: params.multiSelect,\n disabledItemsFocusable: params.disabledItemsFocusable,\n icons: {\n defaultCollapseIcon: params.defaultCollapseIcon,\n defaultEndIcon: params.defaultEndIcon,\n defaultExpandIcon: params.defaultExpandIcon,\n defaultParentIcon: params.defaultParentIcon,\n },\n },\n };\n};\n"],"names":["useId"],"mappings":";AAiDO,MAAM,iCAET,CAAC,EAAE,UAAU,aAAa;AACtB,QAAA,SAASA,eAAM,OAAO,EAAE;AAEvB,SAAA;AAAA,IACL,cAAc,OAAO;AAAA,MACnB,IAAI;AAAA,IAAA;AAAA,IAEN,cAAc;AAAA,MACZ;AAAA,MACA;AAAA,MACA,aAAa,OAAO;AAAA,MACpB,wBAAwB,OAAO;AAAA,MAC/B,OAAO;AAAA,QACL,qBAAqB,OAAO;AAAA,QAC5B,gBAAgB,OAAO;AAAA,QACvB,mBAAmB,OAAO;AAAA,QAC1B,mBAAmB,OAAO;AAAA,MAAA;AAAA,IAC5B;AAAA,EAEJ;AACF;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTreeViewExpansion.js","sources":["../../../../../../src/TreeView/internals/hooks/plugins/useTreeViewExpansion.ts"],"sourcesContent":["import * as React from \"react\";\nimport { useEventCallback } from \"@mui/material/utils\";\n\nimport {\n DefaultizedProps,\n TreeViewPlugin,\n TreeViewPluginSignature,\n} from \"../../types\";\nimport { populateInstance } from \"../utils\";\nimport type { UseTreeViewNodesSignature } from \"./useTreeViewNodes\";\n\nexport interface UseTreeViewExpansionInstance {\n isNodeExpanded: (nodeId: string) => boolean;\n isNodeExpandable: (nodeId: string) => boolean;\n toggleNodeExpansion: (event: React.SyntheticEvent, value: string) => void;\n expandAllSiblings: (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodeId: string,\n ) => void;\n}\n\nexport interface UseTreeViewExpansionParameters {\n /**\n * Expanded node ids.\n * Used when the item's expansion is controlled.\n */\n expanded?: string[];\n /**\n * Expanded node ids.\n * Used when the item's expansion is not controlled.\n * @default []\n */\n defaultExpanded?: string[];\n /**\n * Callback fired when tree items are expanded/collapsed.\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {array} nodeIds The ids of the expanded nodes.\n */\n onNodeToggle?: (event: React.SyntheticEvent, nodeIds: string[]) => void;\n}\n\nexport type UseTreeViewExpansionDefaultizedParameters = DefaultizedProps<\n UseTreeViewExpansionParameters,\n \"defaultExpanded\"\n>;\n\nexport type UseTreeViewExpansionSignature = TreeViewPluginSignature<\n UseTreeViewExpansionParameters,\n UseTreeViewExpansionDefaultizedParameters,\n UseTreeViewExpansionInstance,\n {},\n {},\n \"expanded\",\n [UseTreeViewNodesSignature]\n>;\n\nexport const useTreeViewExpansion: TreeViewPlugin<\n UseTreeViewExpansionSignature\n> = ({ instance, params, models }) => {\n const isNodeExpanded = React.useCallback(\n (nodeId: string) => {\n return Array.isArray(models.expanded.value)\n ? models.expanded.value.indexOf(nodeId) !== -1\n : false;\n },\n [models.expanded.value],\n );\n\n const isNodeExpandable = React.useCallback(\n (nodeId: string) => !!instance.getNode(nodeId)?.expandable,\n [instance],\n );\n\n const toggleNodeExpansion = useEventCallback(\n (event: React.SyntheticEvent, nodeId: string | null) => {\n if (nodeId == null) {\n return;\n }\n\n let newExpanded: string[];\n\n if (models.expanded.value.indexOf(nodeId!) !== -1) {\n newExpanded = models.expanded.value.filter((id) => id !== nodeId);\n } else {\n newExpanded = [nodeId].concat(models.expanded.value);\n }\n\n if (params.onNodeToggle) {\n params.onNodeToggle(event, newExpanded);\n }\n\n models.expanded.setValue(newExpanded);\n },\n );\n\n const expandAllSiblings = (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodeId: string,\n ) => {\n const node = instance.getNode(nodeId);\n const siblings = instance.getChildrenIds(node.parentId);\n\n const diff = siblings.filter(\n (child) =>\n instance.isNodeExpandable(child) && !instance.isNodeExpanded(child),\n );\n\n const newExpanded = models.expanded.value.concat(diff);\n\n if (diff.length > 0) {\n models.expanded.setValue(newExpanded);\n\n if (params.onNodeToggle) {\n params.onNodeToggle(event, newExpanded);\n }\n }\n };\n\n populateInstance<UseTreeViewExpansionSignature>(instance, {\n isNodeExpanded,\n isNodeExpandable,\n toggleNodeExpansion,\n expandAllSiblings,\n });\n};\n\nuseTreeViewExpansion.models = {\n expanded: {\n controlledProp: \"expanded\",\n defaultProp: \"defaultExpanded\",\n },\n};\n\nconst DEFAULT_EXPANDED: string[] = [];\n\nuseTreeViewExpansion.getDefaultizedParams = (params) => ({\n ...params,\n defaultExpanded: params.defaultExpanded ?? DEFAULT_EXPANDED,\n});\n"],"names":[],"mappings":";;;AAwDO,MAAM,uBAET,CAAC,EAAE,UAAU,QAAQ,aAAa;AACpC,QAAM,iBAAiB,MAAM;AAAA,IAC3B,CAAC,WAAmB;AAClB,aAAO,MAAM,QAAQ,OAAO,SAAS,KAAK,IACtC,OAAO,SAAS,MAAM,QAAQ,MAAM,MAAM,KAC1C;AAAA,IACN;AAAA,IACA,CAAC,OAAO,SAAS,KAAK;AAAA,EACxB;AAEA,QAAM,mBAAmB,MAAM;AAAA,IAC7B,CAAC,WAAmB,CAAC,CAAC,SAAS,QAAQ,MAAM,GAAG;AAAA,IAChD,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,sBAAsB;AAAA,IAC1B,CAAC,OAA6B,WAA0B;AACtD,UAAI,UAAU,MAAM;AAClB;AAAA,MAAA;AAGE,UAAA;AAEJ,UAAI,OAAO,SAAS,MAAM,QAAQ,MAAO,MAAM,IAAI;AACjD,sBAAc,OAAO,SAAS,MAAM,OAAO,CAAC,OAAO,OAAO,MAAM;AAAA,MAAA,OAC3D;AACL,sBAAc,CAAC,MAAM,EAAE,OAAO,OAAO,SAAS,KAAK;AAAA,MAAA;AAGrD,UAAI,OAAO,cAAc;AAChB,eAAA,aAAa,OAAO,WAAW;AAAA,MAAA;AAGjC,aAAA,SAAS,SAAS,WAAW;AAAA,IAAA;AAAA,EAExC;AAEM,QAAA,oBAAoB,CACxB,OACA,WACG;AACG,UAAA,OAAO,SAAS,QAAQ,MAAM;AACpC,UAAM,WAAW,SAAS,eAAe,KAAK,QAAQ;AAEtD,UAAM,OAAO,SAAS;AAAA,MACpB,CAAC,UACC,SAAS,iBAAiB,KAAK,KAAK,CAAC,SAAS,eAAe,KAAK;AAAA,IACtE;AAEA,UAAM,cAAc,OAAO,SAAS,MAAM,OAAO,IAAI;AAEjD,QAAA,KAAK,SAAS,GAAG;AACZ,aAAA,SAAS,SAAS,WAAW;AAEpC,UAAI,OAAO,cAAc;AAChB,eAAA,aAAa,OAAO,WAAW;AAAA,MAAA;AAAA,IACxC;AAAA,EAEJ;AAEA,mBAAgD,UAAU;AAAA,IACxD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AACH;AAEA,qBAAqB,SAAS;AAAA,EAC5B,UAAU;AAAA,IACR,gBAAgB;AAAA,IAChB,aAAa;AAAA,EAAA;AAEjB;AAEA,MAAM,mBAA6B,CAAC;AAEpC,qBAAqB,uBAAuB,CAAC,YAAY;AAAA,EACvD,GAAG;AAAA,EACH,iBAAiB,OAAO,mBAAmB;AAC7C;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTreeViewFocus.js","sources":["../../../../../../src/TreeView/internals/hooks/plugins/useTreeViewFocus.ts"],"sourcesContent":["import * as React from \"react\";\nimport { EventHandlers } from \"@mui/base/utils\";\nimport { ownerDocument, useEventCallback } from \"@mui/material/utils\";\n\nimport type { TreeViewPlugin, TreeViewPluginSignature } from \"../../types\";\nimport { useInstanceEventHandler } from \"../useInstanceEventHandler\";\nimport { populateInstance } from \"../utils\";\nimport type { UseTreeViewExpansionSignature } from \"./useTreeViewExpansion\";\nimport type { UseTreeViewNodesSignature } from \"./useTreeViewNodes\";\nimport type { UseTreeViewSelectionSignature } from \"./useTreeViewSelection\";\n\nexport interface UseTreeViewFocusInstance {\n isNodeFocused: (nodeId: string) => boolean;\n focusNode: (event: React.SyntheticEvent, nodeId: string | null) => void;\n}\n\nexport interface UseTreeViewFocusParameters {\n /**\n * Callback fired when tree items are focused.\n * @param {React.SyntheticEvent} event The event source of the callback **Warning**: This is a generic event not a focus event.\n * @param {string} nodeId The id of the node focused.\n * @param {string} value of the focused node.\n */\n onNodeFocus?: (event: React.SyntheticEvent, nodeId: string) => void;\n}\n\nexport type UseTreeViewFocusDefaultizedParameters = UseTreeViewFocusParameters;\n\nexport interface UseTreeViewFocusState {\n focusedNodeId: string | null;\n}\n\nexport type UseTreeViewFocusSignature = TreeViewPluginSignature<\n UseTreeViewFocusParameters,\n UseTreeViewFocusParameters,\n UseTreeViewFocusInstance,\n {},\n UseTreeViewFocusState,\n never,\n [\n UseTreeViewNodesSignature,\n UseTreeViewSelectionSignature<any>,\n UseTreeViewExpansionSignature,\n ]\n>;\n\nexport const useTreeViewFocus: TreeViewPlugin<UseTreeViewFocusSignature> = ({\n instance,\n params,\n state,\n setState,\n models,\n rootRef,\n}) => {\n const setFocusedNodeId = useEventCallback(\n (nodeId: React.SetStateAction<string | null>) => {\n const cleanNodeId =\n typeof nodeId === \"function\" ? nodeId(state.focusedNodeId) : nodeId;\n setState((prevState) => ({ ...prevState, focusedNodeId: cleanNodeId }));\n },\n );\n\n const isNodeFocused = React.useCallback(\n (nodeId: string) => state.focusedNodeId === nodeId,\n [state.focusedNodeId],\n );\n\n const focusNode = useEventCallback(\n (event: React.SyntheticEvent, nodeId: string | null) => {\n if (nodeId) {\n setFocusedNodeId(nodeId);\n\n if (params.onNodeFocus) {\n params.onNodeFocus(event, nodeId);\n }\n }\n },\n );\n\n populateInstance<UseTreeViewFocusSignature>(instance, {\n isNodeFocused,\n focusNode,\n });\n\n useInstanceEventHandler(instance as any, \"removeNode\", ({ id }) => {\n setFocusedNodeId((oldFocusedNodeId) => {\n if (\n oldFocusedNodeId === id &&\n rootRef.current === ownerDocument(rootRef.current).activeElement\n ) {\n return instance.getChildrenIds(null)[0];\n }\n return oldFocusedNodeId;\n });\n });\n\n const createHandleFocus =\n (otherHandlers: EventHandlers) =>\n (event: React.FocusEvent<HTMLUListElement>) => {\n otherHandlers.onFocus?.(event);\n\n // if the event bubbled (which is React specific) we don't want to steal focus\n if (event.target === event.currentTarget) {\n const isNodeVisible = (nodeId: string) => {\n const node = instance.getNode(nodeId);\n return (\n node &&\n (node.parentId == null || instance.isNodeExpanded(node.parentId))\n );\n };\n\n let nodeToFocusId: string | null | undefined;\n if (Array.isArray(models.selected.value)) {\n nodeToFocusId = models.selected.value.find(isNodeVisible);\n } else if (\n models.selected.value != null &&\n isNodeVisible(models.selected.value)\n ) {\n nodeToFocusId = models.selected.value;\n }\n\n if (nodeToFocusId == null) {\n // eslint-disable-next-line prefer-destructuring\n nodeToFocusId = instance.getNavigableChildrenIds(null)[0];\n }\n\n instance.focusNode(event, nodeToFocusId);\n }\n };\n\n const createHandleBlur =\n (otherHandlers: EventHandlers) =>\n (event: React.FocusEvent<HTMLUListElement>) => {\n otherHandlers.onBlur?.(event);\n setFocusedNodeId(null);\n };\n\n const focusedNode = instance.getNode(state.focusedNodeId!);\n const activeDescendant = focusedNode ? focusedNode.idAttribute : null;\n\n return {\n getRootProps: (otherHandlers) => ({\n onFocus: createHandleFocus(otherHandlers),\n onBlur: createHandleBlur(otherHandlers),\n \"aria-activedescendant\": activeDescendant ?? undefined,\n }),\n };\n};\n\nuseTreeViewFocus.getInitialState = () => ({ focusedNodeId: null });\n\nuseTreeViewFocus.getDefaultizedParams = (params) => ({\n ...params,\n disabledItemsFocusable: params.disabledItemsFocusable ?? false,\n});\n"],"names":[],"mappings":";;;;AA8CO,MAAM,mBAA8D,CAAC;AAAA,EAC1E;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,MAAM;AACJ,QAAM,mBAAmB;AAAA,IACvB,CAAC,WAAgD;AAC/C,YAAM,cACJ,OAAO,WAAW,aAAa,OAAO,MAAM,aAAa,IAAI;AAC/D,eAAS,CAAC,eAAe,EAAE,GAAG,WAAW,eAAe,cAAc;AAAA,IAAA;AAAA,EAE1E;AAEA,QAAM,gBAAgB,MAAM;AAAA,IAC1B,CAAC,WAAmB,MAAM,kBAAkB;AAAA,IAC5C,CAAC,MAAM,aAAa;AAAA,EACtB;AAEA,QAAM,YAAY;AAAA,IAChB,CAAC,OAA6B,WAA0B;AACtD,UAAI,QAAQ;AACV,yBAAiB,MAAM;AAEvB,YAAI,OAAO,aAAa;AACf,iBAAA,YAAY,OAAO,MAAM;AAAA,QAAA;AAAA,MAClC;AAAA,IACF;AAAA,EAEJ;AAEA,mBAA4C,UAAU;AAAA,IACpD;AAAA,IACA;AAAA,EAAA,CACD;AAED,0BAAwB,UAAiB,cAAc,CAAC,EAAE,SAAS;AACjE,qBAAiB,CAAC,qBAAqB;AAEnC,UAAA,qBAAqB,MACrB,QAAQ,YAAY,cAAc,QAAQ,OAAO,EAAE,eACnD;AACA,eAAO,SAAS,eAAe,IAAI,EAAE,CAAC;AAAA,MAAA;AAEjC,aAAA;AAAA,IAAA,CACR;AAAA,EAAA,CACF;AAED,QAAM,oBACJ,CAAC,kBACD,CAAC,UAA8C;AAC7C,kBAAc,UAAU,KAAK;AAGzB,QAAA,MAAM,WAAW,MAAM,eAAe;AAClC,YAAA,gBAAgB,CAAC,WAAmB;AAClC,cAAA,OAAO,SAAS,QAAQ,MAAM;AACpC,eACE,SACC,KAAK,YAAY,QAAQ,SAAS,eAAe,KAAK,QAAQ;AAAA,MAEnE;AAEI,UAAA;AACJ,UAAI,MAAM,QAAQ,OAAO,SAAS,KAAK,GAAG;AACxC,wBAAgB,OAAO,SAAS,MAAM,KAAK,aAAa;AAAA,MAAA,WAExD,OAAO,SAAS,SAAS,QACzB,cAAc,OAAO,SAAS,KAAK,GACnC;AACA,wBAAgB,OAAO,SAAS;AAAA,MAAA;AAGlC,UAAI,iBAAiB,MAAM;AAEzB,wBAAgB,SAAS,wBAAwB,IAAI,EAAE,CAAC;AAAA,MAAA;AAGjD,eAAA,UAAU,OAAO,aAAa;AAAA,IAAA;AAAA,EAE3C;AAEF,QAAM,mBACJ,CAAC,kBACD,CAAC,UAA8C;AAC7C,kBAAc,SAAS,KAAK;AAC5B,qBAAiB,IAAI;AAAA,EACvB;AAEF,QAAM,cAAc,SAAS,QAAQ,MAAM,aAAc;AACnD,QAAA,mBAAmB,cAAc,YAAY,cAAc;AAE1D,SAAA;AAAA,IACL,cAAc,CAAC,mBAAmB;AAAA,MAChC,SAAS,kBAAkB,aAAa;AAAA,MACxC,QAAQ,iBAAiB,aAAa;AAAA,MACtC,yBAAyB,oBAAoB;AAAA,IAC/C;AAAA,EACF;AACF;AAEA,iBAAiB,kBAAkB,OAAO,EAAE,eAAe,KAAK;AAEhE,iBAAiB,uBAAuB,CAAC,YAAY;AAAA,EACnD,GAAG;AAAA,EACH,wBAAwB,OAAO,0BAA0B;AAC3D;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTreeViewKeyboardNavigation.js","sources":["../../../../../../src/TreeView/internals/hooks/plugins/useTreeViewKeyboardNavigation.ts"],"sourcesContent":["import * as React from \"react\";\nimport { EventHandlers } from \"@mui/base/utils\";\nimport { useTheme } from \"@mui/material/styles\";\nimport { useEventCallback } from \"@mui/material/utils\";\n\nimport { TreeViewPlugin, TreeViewPluginSignature } from \"../../types\";\nimport {\n getFirstNode,\n getLastNode,\n getNextNode,\n getPreviousNode,\n populateInstance,\n} from \"../utils\";\nimport type { UseTreeViewExpansionSignature } from \"./useTreeViewExpansion\";\nimport type { UseTreeViewFocusSignature } from \"./useTreeViewFocus\";\nimport type { UseTreeViewNodesSignature } from \"./useTreeViewNodes\";\nimport type { UseTreeViewSelectionSignature } from \"./useTreeViewSelection\";\n\nfunction isPrintableCharacter(string: string) {\n return string && string.length === 1 && string.match(/\\S/);\n}\n\nfunction findNextFirstChar(\n firstChars: string[],\n startIndex: number,\n char: string,\n) {\n for (let i = startIndex; i < firstChars.length; i += 1) {\n if (char === firstChars[i]) {\n return i;\n }\n }\n return -1;\n}\n\nexport interface UseTreeViewKeyboardNavigationInstance {\n mapFirstChar: (nodeId: string, firstChar: string) => () => void;\n}\n\nexport type UseTreeViewKeyboardNavigationSignature = TreeViewPluginSignature<\n {},\n {},\n UseTreeViewKeyboardNavigationInstance,\n {},\n {},\n never,\n [\n UseTreeViewNodesSignature,\n UseTreeViewSelectionSignature<any>,\n UseTreeViewFocusSignature,\n UseTreeViewExpansionSignature,\n ]\n>;\n\nexport const useTreeViewKeyboardNavigation: TreeViewPlugin<\n UseTreeViewKeyboardNavigationSignature\n> = ({ instance, params, state }) => {\n const theme = useTheme();\n const isRtl = theme.direction === \"rtl\";\n const firstCharMap = React.useRef<{ [nodeId: string]: string }>({});\n\n const mapFirstChar = useEventCallback((nodeId: string, firstChar: string) => {\n firstCharMap.current[nodeId] = firstChar;\n\n return () => {\n const newMap = { ...firstCharMap.current };\n delete newMap[nodeId];\n firstCharMap.current = newMap;\n };\n });\n\n populateInstance<UseTreeViewKeyboardNavigationSignature>(instance, {\n mapFirstChar,\n });\n\n const handleNextArrow = (event: React.KeyboardEvent<HTMLUListElement>) => {\n if (\n state.focusedNodeId != null &&\n instance.isNodeExpandable(state.focusedNodeId)\n ) {\n if (instance.isNodeExpanded(state.focusedNodeId)) {\n instance.focusNode(event, getNextNode(instance, state.focusedNodeId));\n } else if (!instance.isNodeDisabled(state.focusedNodeId)) {\n instance.toggleNodeExpansion(event, state.focusedNodeId);\n }\n }\n return true;\n };\n\n const handlePreviousArrow = (\n event: React.KeyboardEvent<HTMLUListElement>,\n ) => {\n if (state.focusedNodeId == null) {\n return false;\n }\n\n if (\n instance.isNodeExpanded(state.focusedNodeId) &&\n !instance.isNodeDisabled(state.focusedNodeId)\n ) {\n instance.toggleNodeExpansion(event, state.focusedNodeId!);\n return true;\n }\n\n const parent = instance.getNode(state.focusedNodeId).parentId;\n if (parent) {\n instance.focusNode(event, parent);\n return true;\n }\n return false;\n };\n\n const focusByFirstCharacter = (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodeId: string,\n firstChar: string,\n ) => {\n let start: number;\n let index: number;\n const lowercaseChar = firstChar.toLowerCase();\n\n const firstCharIds: string[] = [];\n const firstChars: string[] = [];\n // This really only works since the ids are strings\n Object.keys(firstCharMap.current).forEach((mapNodeId) => {\n const map = instance.getNode(mapNodeId);\n const visible = map.parentId\n ? instance.isNodeExpanded(map.parentId)\n : true;\n const shouldBeSkipped = params.disabledItemsFocusable\n ? false\n : instance.isNodeDisabled(mapNodeId);\n\n if (visible && !shouldBeSkipped) {\n firstCharIds.push(mapNodeId);\n firstChars.push(firstCharMap.current[mapNodeId]);\n }\n });\n\n // Get start index for search based on position of currentItem\n start = firstCharIds.indexOf(nodeId) + 1;\n if (start >= firstCharIds.length) {\n start = 0;\n }\n\n // Check remaining slots in the menu\n index = findNextFirstChar(firstChars, start, lowercaseChar);\n\n // If not found in remaining slots, check from beginning\n if (index === -1) {\n index = findNextFirstChar(firstChars, 0, lowercaseChar);\n }\n\n // If match was found...\n if (index > -1) {\n instance.focusNode(event, firstCharIds[index]);\n }\n };\n\n const selectNextNode = (\n event: React.KeyboardEvent<HTMLUListElement>,\n id: string,\n ) => {\n if (!instance.isNodeDisabled(getNextNode(instance, id))) {\n instance.selectRange(\n event,\n {\n end: getNextNode(instance, id),\n current: id,\n },\n true,\n );\n }\n };\n\n const selectPreviousNode = (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodeId: string,\n ) => {\n if (!instance.isNodeDisabled(getPreviousNode(instance, nodeId))) {\n instance.selectRange(\n event,\n {\n end: getPreviousNode(instance, nodeId)!,\n current: nodeId,\n },\n true,\n );\n }\n };\n\n const createHandleKeyDown =\n (otherHandlers: EventHandlers) =>\n (event: React.KeyboardEvent<HTMLUListElement>) => {\n otherHandlers.onKeyDown?.(event);\n\n let flag = false;\n const { key } = event;\n\n // If the tree is empty there will be no focused node\n if (\n event.altKey ||\n event.currentTarget !== event.target ||\n state.focusedNodeId == null\n ) {\n return;\n }\n\n const ctrlPressed = event.ctrlKey || event.metaKey;\n switch (key) {\n case \" \":\n if (\n !params.disableSelection &&\n !instance.isNodeDisabled(state.focusedNodeId)\n ) {\n flag = true;\n if (params.multiSelect && event.shiftKey) {\n instance.selectRange(event, { end: state.focusedNodeId });\n } else if (params.multiSelect) {\n instance.selectNode(event, state.focusedNodeId, true);\n } else {\n instance.selectNode(event, state.focusedNodeId);\n }\n }\n event.stopPropagation();\n break;\n case \"Enter\":\n if (!instance.isNodeDisabled(state.focusedNodeId)) {\n if (instance.isNodeExpandable(state.focusedNodeId)) {\n instance.toggleNodeExpansion(event, state.focusedNodeId);\n flag = true;\n } else if (!params.disableSelection) {\n flag = true;\n if (params.multiSelect) {\n instance.selectNode(event, state.focusedNodeId, true);\n } else {\n instance.selectNode(event, state.focusedNodeId);\n }\n }\n }\n event.stopPropagation();\n break;\n case \"ArrowDown\":\n if (\n params.multiSelect &&\n event.shiftKey &&\n !params.disableSelection\n ) {\n selectNextNode(event, state.focusedNodeId);\n }\n instance.focusNode(event, getNextNode(instance, state.focusedNodeId));\n flag = true;\n break;\n case \"ArrowUp\":\n if (\n params.multiSelect &&\n event.shiftKey &&\n !params.disableSelection\n ) {\n selectPreviousNode(event, state.focusedNodeId);\n }\n instance.focusNode(\n event,\n getPreviousNode(instance, state.focusedNodeId),\n );\n flag = true;\n break;\n case \"ArrowRight\":\n if (isRtl) {\n flag = handlePreviousArrow(event);\n } else {\n flag = handleNextArrow(event);\n }\n break;\n case \"ArrowLeft\":\n if (isRtl) {\n flag = handleNextArrow(event);\n } else {\n flag = handlePreviousArrow(event);\n }\n break;\n case \"Home\":\n if (\n params.multiSelect &&\n ctrlPressed &&\n event.shiftKey &&\n !params.disableSelection &&\n !instance.isNodeDisabled(state.focusedNodeId)\n ) {\n instance.rangeSelectToFirst(event, state.focusedNodeId);\n }\n instance.focusNode(event, getFirstNode(instance));\n flag = true;\n break;\n case \"End\":\n if (\n params.multiSelect &&\n ctrlPressed &&\n event.shiftKey &&\n !params.disableSelection &&\n !instance.isNodeDisabled(state.focusedNodeId)\n ) {\n instance.rangeSelectToLast(event, state.focusedNodeId);\n }\n instance.focusNode(event, getLastNode(instance));\n flag = true;\n break;\n default:\n if (key === \"*\") {\n instance.expandAllSiblings(event, state.focusedNodeId);\n flag = true;\n } else if (\n params.multiSelect &&\n ctrlPressed &&\n key.toLowerCase() === \"a\" &&\n !params.disableSelection\n ) {\n instance.selectRange(event, {\n start: getFirstNode(instance),\n end: getLastNode(instance),\n });\n flag = true;\n } else if (\n !ctrlPressed &&\n !event.shiftKey &&\n isPrintableCharacter(key)\n ) {\n focusByFirstCharacter(event, state.focusedNodeId, key);\n flag = true;\n }\n }\n\n if (flag) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n\n return {\n getRootProps: (otherHandlers) => ({\n onKeyDown: createHandleKeyDown(otherHandlers),\n }),\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTreeViewNodes.js","sources":["../../../../../../src/TreeView/internals/hooks/plugins/useTreeViewNodes.ts"],"sourcesContent":["import * as React from \"react\";\nimport { useEventCallback } from \"@mui/material/utils\";\n\nimport {\n DefaultizedProps,\n TreeViewNode,\n TreeViewPlugin,\n TreeViewPluginSignature,\n} from \"../../types\";\nimport { publishTreeViewEvent } from \"../../utils/publishTreeViewEvent\";\nimport { populateInstance } from \"../utils\";\n\nexport interface UseTreeViewNodesInstance {\n getNode: (nodeId: string) => TreeViewNode;\n updateNode: (node: TreeViewNode) => void;\n removeNode: (nodeId: string) => void;\n getChildrenIds: (nodeId: string | null) => string[];\n getNavigableChildrenIds: (nodeId: string | null) => string[];\n isNodeDisabled: (nodeId: string | null) => nodeId is string;\n}\n\nexport interface UseTreeViewNodesParameters {\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable?: boolean;\n}\n\nexport type UseTreeViewNodesDefaultizedParameters = DefaultizedProps<\n UseTreeViewNodesParameters,\n \"disabledItemsFocusable\"\n>;\n\ninterface UseTreeViewNodesEventLookup {\n removeNode: {\n params: { id: string };\n };\n}\n\nexport type UseTreeViewNodesSignature = TreeViewPluginSignature<\n UseTreeViewNodesParameters,\n UseTreeViewNodesDefaultizedParameters,\n UseTreeViewNodesInstance,\n UseTreeViewNodesEventLookup,\n {},\n never,\n []\n>;\n\nexport const useTreeViewNodes: TreeViewPlugin<UseTreeViewNodesSignature> = ({\n instance,\n params,\n}) => {\n const nodeMap = React.useRef<{ [nodeId: string]: TreeViewNode }>({});\n\n const getNode = React.useCallback(\n (nodeId: string) => nodeMap.current[nodeId],\n [],\n );\n\n const insertNode = React.useCallback((node: TreeViewNode) => {\n nodeMap.current[node.id] = node;\n }, []);\n\n const removeNode = React.useCallback(\n (nodeId: string) => {\n const newMap = { ...nodeMap.current };\n delete newMap[nodeId];\n nodeMap.current = newMap;\n publishTreeViewEvent(instance as any, \"removeNode\", { id: nodeId });\n },\n [instance],\n );\n\n const isNodeDisabled = React.useCallback(\n (nodeId: string | null): nodeId is string => {\n if (nodeId == null) {\n return false;\n }\n\n let node = instance.getNode(nodeId);\n\n // This can be called before the node has been added to the node map.\n if (!node) {\n return false;\n }\n\n if (node.disabled) {\n return true;\n }\n\n while (node.parentId != null) {\n node = instance.getNode(node.parentId);\n if (node.disabled) {\n return true;\n }\n }\n\n return false;\n },\n [instance],\n );\n\n const getChildrenIds = useEventCallback((nodeId: string | null) =>\n Object.values(nodeMap.current)\n .filter((node) => node.parentId === nodeId)\n .sort((a, b) => a.index - b.index)\n .map((child) => child.id),\n );\n\n const getNavigableChildrenIds = (nodeId: string | null) => {\n let childrenIds = instance.getChildrenIds(nodeId);\n\n if (!params.disabledItemsFocusable) {\n childrenIds = childrenIds.filter(\n (node) => !instance.isNodeDisabled(node),\n );\n }\n return childrenIds;\n };\n\n populateInstance<UseTreeViewNodesSignature>(instance, {\n getNode,\n updateNode: insertNode,\n removeNode,\n getChildrenIds,\n getNavigableChildrenIds,\n isNodeDisabled,\n });\n};\n"],"names":[],"mappings":";;;;AAkDO,MAAM,mBAA8D,CAAC;AAAA,EAC1E;AAAA,EACA;AACF,MAAM;AACJ,QAAM,UAAU,MAAM,OAA2C,EAAE;AAEnE,QAAM,UAAU,MAAM;AAAA,IACpB,CAAC,WAAmB,QAAQ,QAAQ,MAAM;AAAA,IAC1C,CAAA;AAAA,EACF;AAEA,QAAM,aAAa,MAAM,YAAY,CAAC,SAAuB;AACnD,YAAA,QAAQ,KAAK,EAAE,IAAI;AAAA,EAC7B,GAAG,EAAE;AAEL,QAAM,aAAa,MAAM;AAAA,IACvB,CAAC,WAAmB;AAClB,YAAM,SAAS,EAAE,GAAG,QAAQ,QAAQ;AACpC,aAAO,OAAO,MAAM;AACpB,cAAQ,UAAU;AAClB,2BAAqB,UAAiB,cAAc,EAAE,IAAI,QAAQ;AAAA,IACpE;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,iBAAiB,MAAM;AAAA,IAC3B,CAAC,WAA4C;AAC3C,UAAI,UAAU,MAAM;AACX,eAAA;AAAA,MAAA;AAGL,UAAA,OAAO,SAAS,QAAQ,MAAM;AAGlC,UAAI,CAAC,MAAM;AACF,eAAA;AAAA,MAAA;AAGT,UAAI,KAAK,UAAU;AACV,eAAA;AAAA,MAAA;AAGF,aAAA,KAAK,YAAY,MAAM;AACrB,eAAA,SAAS,QAAQ,KAAK,QAAQ;AACrC,YAAI,KAAK,UAAU;AACV,iBAAA;AAAA,QAAA;AAAA,MACT;AAGK,aAAA;AAAA,IACT;AAAA,IACA,CAAC,QAAQ;AAAA,EACX;AAEA,QAAM,iBAAiB;AAAA,IAAiB,CAAC,WACvC,OAAO,OAAO,QAAQ,OAAO,EAC1B,OAAO,CAAC,SAAS,KAAK,aAAa,MAAM,EACzC,KAAK,CAAC,GAAG,MAAM,EAAE,QAAQ,EAAE,KAAK,EAChC,IAAI,CAAC,UAAU,MAAM,EAAE;AAAA,EAC5B;AAEM,QAAA,0BAA0B,CAAC,WAA0B;AACrD,QAAA,cAAc,SAAS,eAAe,MAAM;AAE5C,QAAA,CAAC,OAAO,wBAAwB;AAClC,oBAAc,YAAY;AAAA,QACxB,CAAC,SAAS,CAAC,SAAS,eAAe,IAAI;AAAA,MACzC;AAAA,IAAA;AAEK,WAAA;AAAA,EACT;AAEA,mBAA4C,UAAU;AAAA,IACpD;AAAA,IACA,YAAY;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AACH;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTreeViewSelection.js","sources":["../../../../../../src/TreeView/internals/hooks/plugins/useTreeViewSelection.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport type {\n DefaultizedProps,\n TreeViewInstance,\n TreeViewItemRange,\n TreeViewPlugin,\n TreeViewPluginSignature,\n} from \"../../types\";\nimport {\n getFirstNode,\n getLastNode,\n getNextNode,\n populateInstance,\n} from \"../utils\";\nimport type { UseTreeViewExpansionSignature } from \"./useTreeViewExpansion\";\nimport type { UseTreeViewNodesSignature } from \"./useTreeViewNodes\";\n\n/**\n * This is used to determine the start and end of a selection range so\n * we can get the nodes between the two border nodes.\n *\n * It finds the nodes' common ancestor using\n * a naive implementation of a lowest common ancestor algorithm\n * (https://en.wikipedia.org/wiki/Lowest_common_ancestor).\n * Then compares the ancestor's 2 children that are ancestors of nodeA and NodeB\n * so we can compare their indexes to work out which node comes first in a depth first search.\n * (https://en.wikipedia.org/wiki/Depth-first_search)\n *\n * Another way to put it is which node is shallower in a trémaux tree\n * https://en.wikipedia.org/wiki/Tr%C3%A9maux_tree\n */\nexport const findOrderInTremauxTree = (\n instance: TreeViewInstance<[UseTreeViewNodesSignature]>,\n nodeAId: string,\n nodeBId: string,\n) => {\n if (nodeAId === nodeBId) {\n return [nodeAId, nodeBId];\n }\n\n const nodeA = instance.getNode(nodeAId);\n const nodeB = instance.getNode(nodeBId);\n\n if (nodeA.parentId === nodeB.id || nodeB.parentId === nodeA.id) {\n return nodeB.parentId === nodeA.id\n ? [nodeA.id, nodeB.id]\n : [nodeB.id, nodeA.id];\n }\n\n const aFamily: (string | null)[] = [nodeA.id];\n const bFamily: (string | null)[] = [nodeB.id];\n\n let aAncestor = nodeA.parentId;\n let bAncestor = nodeB.parentId;\n\n let aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n let bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n\n let continueA = true;\n let continueB = true;\n\n while (!bAncestorIsCommon && !aAncestorIsCommon) {\n if (continueA) {\n aFamily.push(aAncestor);\n aAncestorIsCommon = bFamily.indexOf(aAncestor) !== -1;\n continueA = aAncestor !== null;\n if (!aAncestorIsCommon && continueA) {\n aAncestor = instance.getNode(aAncestor!).parentId;\n }\n }\n\n if (continueB && !aAncestorIsCommon) {\n bFamily.push(bAncestor);\n bAncestorIsCommon = aFamily.indexOf(bAncestor) !== -1;\n continueB = bAncestor !== null;\n if (!bAncestorIsCommon && continueB) {\n bAncestor = instance.getNode(bAncestor!).parentId;\n }\n }\n }\n\n const commonAncestor = aAncestorIsCommon ? aAncestor : bAncestor;\n const ancestorFamily = instance.getChildrenIds(commonAncestor);\n\n const aSide = aFamily[aFamily.indexOf(commonAncestor) - 1];\n const bSide = bFamily[bFamily.indexOf(commonAncestor) - 1];\n\n return ancestorFamily.indexOf(aSide!) < ancestorFamily.indexOf(bSide!)\n ? [nodeAId, nodeBId]\n : [nodeBId, nodeAId];\n};\n\nexport interface UseTreeViewSelectionInstance {\n isNodeSelected: (nodeId: string) => boolean;\n selectNode: (\n event: React.SyntheticEvent,\n nodeId: string,\n multiple?: boolean,\n ) => void;\n selectRange: (\n event: React.SyntheticEvent,\n nodes: TreeViewItemRange,\n stacked?: boolean,\n ) => void;\n rangeSelectToFirst: (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodeId: string,\n ) => void;\n rangeSelectToLast: (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodeId: string,\n ) => void;\n}\n\ntype TreeViewSelectionValue<Multiple extends boolean | undefined> =\n Multiple extends true ? string[] : string | null;\n\nexport interface UseTreeViewSelectionParameters<\n Multiple extends boolean | undefined,\n> {\n /**\n * If `true` selection is disabled.\n * @default false\n */\n disableSelection?: boolean;\n /**\n * Selected node ids. (Uncontrolled)\n * When `multiSelect` is true this takes an array of strings; when false (default) a string.\n * @default []\n */\n defaultSelected?: TreeViewSelectionValue<Multiple>;\n /**\n * Selected node ids. (Controlled)\n * When `multiSelect` is true this takes an array of strings; when false (default) a string.\n */\n selected?: TreeViewSelectionValue<Multiple>;\n /**\n * If true `ctrl` and `shift` will trigger multiselect.\n * @default false\n */\n multiSelect?: Multiple;\n /**\n * Callback fired when tree items are selected/unselected.\n * @param {React.SyntheticEvent} event The event source of the callback\n * @param {string[] | string} nodeIds Ids of the selected nodes. When `multiSelect` is true\n * this is an array of strings; when false (default) a string.\n */\n onNodeSelect?: (\n event: React.SyntheticEvent,\n nodeIds: Exclude<TreeViewSelectionValue<Multiple>, null>,\n ) => void;\n}\n\nexport type UseTreeViewSelectionDefaultizedParameters<\n Multiple extends boolean,\n> = DefaultizedProps<\n UseTreeViewSelectionParameters<Multiple>,\n \"disableSelection\" | \"defaultSelected\" | \"multiSelect\"\n>;\n\nexport type UseTreeViewSelectionSignature<\n Multiple extends boolean | undefined,\n> = TreeViewPluginSignature<\n UseTreeViewSelectionParameters<Multiple>,\n UseTreeViewSelectionDefaultizedParameters<\n Multiple extends undefined ? false : Multiple\n >,\n UseTreeViewSelectionInstance,\n {},\n {},\n \"selected\",\n [\n UseTreeViewNodesSignature,\n UseTreeViewExpansionSignature,\n UseTreeViewNodesSignature,\n ]\n>;\n\nexport const useTreeViewSelection: TreeViewPlugin<\n UseTreeViewSelectionSignature<any>\n> = ({ instance, params, models }) => {\n const lastSelectedNode = React.useRef<string | null>(null);\n const lastSelectionWasRange = React.useRef(false);\n const currentRangeSelection = React.useRef<string[]>([]);\n\n const isNodeSelected = (nodeId: string) =>\n Array.isArray(models.selected.value)\n ? models.selected.value.indexOf(nodeId) !== -1\n : models.selected.value === nodeId;\n\n const selectNode = (\n event: React.SyntheticEvent,\n nodeId: string,\n multiple = false,\n ) => {\n if (params.disableSelection) {\n return;\n }\n\n if (multiple) {\n if (Array.isArray(models.selected.value)) {\n let newSelected: string[];\n if (models.selected.value.indexOf(nodeId) !== -1) {\n newSelected = models.selected.value.filter((id) => id !== nodeId);\n } else {\n newSelected = [nodeId].concat(models.selected.value);\n }\n\n if (params.onNodeSelect) {\n (params.onNodeSelect as UseTreeViewSelectionDefaultizedParameters<true>[\"onNodeSelect\"])!(\n event,\n newSelected,\n );\n }\n\n models.selected.setValue(newSelected);\n }\n } else {\n const newSelected = params.multiSelect ? [nodeId] : nodeId;\n\n if (params.onNodeSelect) {\n params.onNodeSelect(event, newSelected as string & string[]);\n }\n\n models.selected.setValue(newSelected);\n }\n lastSelectedNode.current = nodeId;\n lastSelectionWasRange.current = false;\n currentRangeSelection.current = [];\n };\n\n const getNodesInRange = (nodeAId: string, nodeBId: string) => {\n const [first, last] = findOrderInTremauxTree(instance, nodeAId, nodeBId);\n const nodes = [first];\n\n let current = first;\n\n while (current !== last) {\n current = getNextNode(instance, current)!;\n nodes.push(current);\n }\n\n return nodes;\n };\n\n const handleRangeArrowSelect = (\n event: React.SyntheticEvent,\n nodes: TreeViewItemRange,\n ) => {\n let base = (models.selected.value as string[]).slice();\n const { start, next, current } = nodes;\n\n if (!next || !current) {\n return;\n }\n\n if (currentRangeSelection.current.indexOf(current) === -1) {\n currentRangeSelection.current = [];\n }\n\n if (lastSelectionWasRange.current) {\n if (currentRangeSelection.current.indexOf(next) !== -1) {\n base = base.filter((id) => id === start || id !== current);\n currentRangeSelection.current = currentRangeSelection.current.filter(\n (id) => id === start || id !== current,\n );\n } else {\n base.push(next);\n currentRangeSelection.current.push(next);\n }\n } else {\n base.push(next);\n currentRangeSelection.current.push(current, next);\n }\n\n if (params.onNodeSelect) {\n (params.onNodeSelect as UseTreeViewSelectionDefaultizedParameters<true>[\"onNodeSelect\"])!(\n event,\n base,\n );\n }\n\n models.selected.setValue(base);\n };\n\n const handleRangeSelect = (\n event: React.SyntheticEvent,\n nodes: { start: string; end: string },\n ) => {\n let base = (models.selected.value as string[]).slice();\n const { start, end } = nodes;\n // If last selection was a range selection ignore nodes that were selected.\n if (lastSelectionWasRange.current) {\n base = base.filter(\n (id) => currentRangeSelection.current.indexOf(id) === -1,\n );\n }\n\n let range = getNodesInRange(start, end);\n range = range.filter((node) => !instance.isNodeDisabled(node));\n currentRangeSelection.current = range;\n let newSelected = base.concat(range);\n newSelected = newSelected.filter((id, i) => newSelected.indexOf(id) === i);\n\n if (params.onNodeSelect) {\n (params.onNodeSelect as UseTreeViewSelectionDefaultizedParameters<true>[\"onNodeSelect\"])!(\n event,\n newSelected,\n );\n }\n\n models.selected.setValue(newSelected);\n };\n\n const selectRange = (\n event: React.SyntheticEvent,\n nodes: TreeViewItemRange,\n stacked = false,\n ) => {\n if (params.disableSelection) {\n return;\n }\n\n const { start = lastSelectedNode.current, end, current } = nodes;\n if (stacked) {\n handleRangeArrowSelect(event, { start, next: end, current });\n } else if (start != null && end != null) {\n handleRangeSelect(event, { start, end });\n }\n lastSelectionWasRange.current = true;\n };\n\n const rangeSelectToFirst = (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodeId: string,\n ) => {\n if (!lastSelectedNode.current) {\n lastSelectedNode.current = nodeId;\n }\n\n const start = lastSelectionWasRange.current\n ? lastSelectedNode.current\n : nodeId;\n\n instance.selectRange(event, {\n start,\n end: getFirstNode(instance),\n });\n };\n\n const rangeSelectToLast = (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodeId: string,\n ) => {\n if (!lastSelectedNode.current) {\n lastSelectedNode.current = nodeId;\n }\n\n const start = lastSelectionWasRange.current\n ? lastSelectedNode.current\n : nodeId;\n\n instance.selectRange(event, {\n start,\n end: getLastNode(instance),\n });\n };\n\n populateInstance<UseTreeViewSelectionSignature<any>>(instance, {\n isNodeSelected,\n selectNode,\n selectRange,\n rangeSelectToLast,\n rangeSelectToFirst,\n });\n\n return {\n getRootProps: () => ({\n \"aria-multiselectable\": params.multiSelect,\n }),\n };\n};\n\nuseTreeViewSelection.models = {\n selected: { controlledProp: \"selected\", defaultProp: \"defaultSelected\" },\n};\n\nconst DEFAULT_SELECTED: string[] = [];\n\nuseTreeViewSelection.getDefaultizedParams = (params) => ({\n ...params,\n disableSelection: params.disableSelection ?? false,\n multiSelect: params.multiSelect ?? false,\n defaultSelected:\n params.defaultSelected ?? (params.multiSelect ? DEFAULT_SELECTED : null),\n});\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useInstanceEventHandler.js","sources":["../../../../../src/TreeView/internals/hooks/useInstanceEventHandler.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport { TreeViewAnyPluginSignature, TreeViewUsedEvents } from \"../types\";\nimport { TreeViewEventListener } from \"../types/events\";\nimport { CleanupTracking, UnregisterToken } from \"../utils/CleanupTracking\";\nimport { FinalizationRegistryBasedCleanupTracking } from \"../utils/FinalizationRegistryBasedCleanupTracking\";\nimport { TimerBasedCleanupTracking } from \"../utils/TimerBasedCleanupTracking\";\nimport { UseTreeViewInstanceEventsInstance } from \"./useTreeViewInstanceEvents.types\";\n\ninterface RegistryContainer {\n registry: CleanupTracking | null;\n}\n\n// We use class to make it easier to detect in heap snapshots by name\nclass ObjectToBeRetainedByReact {}\n\n// Based on https://github.com/Bnaya/use-dispose-uncommitted/blob/main/src/finalization-registry-based-impl.ts\n// Check https://github.com/facebook/react/issues/15317 to get more information\nexport function createUseInstanceEventHandler(\n registryContainer: RegistryContainer,\n) {\n let cleanupTokensCounter = 0;\n\n return function useInstanceEventHandler<\n Instance extends UseTreeViewInstanceEventsInstance & {\n $$signature: TreeViewAnyPluginSignature;\n },\n E extends keyof TreeViewUsedEvents<Instance[\"$$signature\"]>,\n >(\n instance: Instance,\n eventName: E,\n handler: TreeViewEventListener<\n TreeViewUsedEvents<Instance[\"$$signature\"]>[E]\n >,\n ) {\n type Signature = Instance[\"$$signature\"];\n\n if (registryContainer.registry === null) {\n registryContainer.registry =\n typeof FinalizationRegistry !== \"undefined\"\n ? new FinalizationRegistryBasedCleanupTracking()\n : new TimerBasedCleanupTracking();\n }\n\n const [objectRetainedByReact] = React.useState(\n new ObjectToBeRetainedByReact(),\n );\n const subscription = React.useRef<(() => void) | null>(null);\n const handlerRef = React.useRef<\n TreeViewEventListener<TreeViewUsedEvents<Signature>[E]> | undefined\n >(undefined);\n handlerRef.current = handler;\n const cleanupTokenRef = React.useRef<UnregisterToken | null>(null);\n\n if (!subscription.current && handlerRef.current) {\n const enhancedHandler: TreeViewEventListener<\n TreeViewUsedEvents<Signature>[E]\n > = (params, event) => {\n if (!event.defaultMuiPrevented) {\n handlerRef.current?.(params, event);\n }\n };\n\n subscription.current = instance.$$subscribeEvent(\n eventName as string,\n enhancedHandler,\n );\n\n cleanupTokensCounter += 1;\n cleanupTokenRef.current = { cleanupToken: cleanupTokensCounter };\n\n registryContainer.registry.register(\n objectRetainedByReact, // The callback below will be called once this reference stops being retained\n () => {\n subscription.current?.();\n subscription.current = null;\n cleanupTokenRef.current = null;\n },\n cleanupTokenRef.current,\n );\n } else if (!handlerRef.current && subscription.current) {\n subscription.current();\n subscription.current = null;\n\n if (cleanupTokenRef.current) {\n registryContainer.registry.unregister(cleanupTokenRef.current);\n cleanupTokenRef.current = null;\n }\n }\n\n React.useEffect(() => {\n if (!subscription.current && handlerRef.current) {\n const enhancedHandler: TreeViewEventListener<\n TreeViewUsedEvents<Signature>[E]\n > = (params, event) => {\n if (!event.defaultMuiPrevented) {\n handlerRef.current?.(params, event);\n }\n };\n\n subscription.current = instance.$$subscribeEvent(\n eventName as string,\n enhancedHandler,\n );\n }\n\n if (cleanupTokenRef.current && registryContainer.registry) {\n // If the effect was called, it means that this render was committed\n // so we can trust the cleanup function to remove the listener.\n registryContainer.registry.unregister(cleanupTokenRef.current);\n cleanupTokenRef.current = null;\n }\n\n return () => {\n subscription.current?.();\n subscription.current = null;\n };\n }, [instance, eventName]);\n };\n}\n\nconst registryContainer: RegistryContainer = { registry: null };\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport const unstable_resetCleanupTracking = () => {\n registryContainer.registry?.reset();\n registryContainer.registry = null;\n};\n\nexport const useInstanceEventHandler =\n createUseInstanceEventHandler(registryContainer);\n"],"names":["registryContainer","useInstanceEventHandler"],"mappings":";;;AAcA,MAAM,0BAA0B;AAAC;AAI1B,SAAS,8BACdA,oBACA;AACA,MAAI,uBAAuB;AAE3B,SAAO,SAASC,yBAMd,UACA,WACA,SAGA;AAGID,QAAAA,mBAAkB,aAAa,MAAM;AACvCA,yBAAkB,WAChB,OAAO,yBAAyB,cAC5B,IAAI,yCAAA,IACJ,IAAI,0BAA0B;AAAA,IAAA;AAGhC,UAAA,CAAC,qBAAqB,IAAI,MAAM;AAAA,MACpC,IAAI,0BAA0B;AAAA,IAChC;AACM,UAAA,eAAe,MAAM,OAA4B,IAAI;AACrD,UAAA,aAAa,MAAM,OAEvB,MAAS;AACX,eAAW,UAAU;AACf,UAAA,kBAAkB,MAAM,OAA+B,IAAI;AAEjE,QAAI,CAAC,aAAa,WAAW,WAAW,SAAS;AACzC,YAAA,kBAEF,CAAC,QAAQ,UAAU;AACjB,YAAA,CAAC,MAAM,qBAAqB;AACnB,qBAAA,UAAU,QAAQ,KAAK;AAAA,QAAA;AAAA,MAEtC;AAEA,mBAAa,UAAU,SAAS;AAAA,QAC9B;AAAA,QACA;AAAA,MACF;AAEwB,8BAAA;AACR,sBAAA,UAAU,EAAE,cAAc,qBAAqB;AAE/DA,yBAAkB,SAAS;AAAA,QACzB;AAAA;AAAA,QACA,MAAM;AACJ,uBAAa,UAAU;AACvB,uBAAa,UAAU;AACvB,0BAAgB,UAAU;AAAA,QAC5B;AAAA,QACA,gBAAgB;AAAA,MAClB;AAAA,IACS,WAAA,CAAC,WAAW,WAAW,aAAa,SAAS;AACtD,mBAAa,QAAQ;AACrB,mBAAa,UAAU;AAEvB,UAAI,gBAAgB,SAAS;AAC3BA,2BAAkB,SAAS,WAAW,gBAAgB,OAAO;AAC7D,wBAAgB,UAAU;AAAA,MAAA;AAAA,IAC5B;AAGF,UAAM,UAAU,MAAM;AACpB,UAAI,CAAC,aAAa,WAAW,WAAW,SAAS;AACzC,cAAA,kBAEF,CAAC,QAAQ,UAAU;AACjB,cAAA,CAAC,MAAM,qBAAqB;AACnB,uBAAA,UAAU,QAAQ,KAAK;AAAA,UAAA;AAAA,QAEtC;AAEA,qBAAa,UAAU,SAAS;AAAA,UAC9B;AAAA,UACA;AAAA,QACF;AAAA,MAAA;AAGE,UAAA,gBAAgB,WAAWA,mBAAkB,UAAU;AAGzDA,2BAAkB,SAAS,WAAW,gBAAgB,OAAO;AAC7D,wBAAgB,UAAU;AAAA,MAAA;AAG5B,aAAO,MAAM;AACX,qBAAa,UAAU;AACvB,qBAAa,UAAU;AAAA,MACzB;AAAA,IAAA,GACC,CAAC,UAAU,SAAS,CAAC;AAAA,EAC1B;AACF;AAEA,MAAM,oBAAuC,EAAE,UAAU,KAAK;AAQjD,MAAA,0BACX,8BAA8B,iBAAiB;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTreeView.js","sources":["../../../../../src/TreeView/internals/hooks/useTreeView.ts"],"sourcesContent":["import * as React from \"react\";\nimport { EventHandlers } from \"@mui/base/utils\";\nimport { useForkRef } from \"@mui/material/utils\";\n\nimport { TREE_VIEW_CORE_PLUGINS } from \"../corePlugins\";\nimport {\n DEFAULT_TREE_VIEW_CONTEXT_VALUE,\n TreeViewContextValue,\n} from \"../TreeViewProvider\";\nimport {\n ConvertPluginsIntoSignatures,\n MergePluginsProperty,\n TreeViewAnyPluginSignature,\n TreeViewInstance,\n TreeViewPlugin,\n} from \"../types\";\nimport { useTreeViewModels } from \"./useTreeViewModels\";\n\nexport type UseTreeViewParameters<\n TPlugins extends readonly TreeViewPlugin<TreeViewAnyPluginSignature>[],\n> = {\n rootRef?: React.Ref<HTMLUListElement> | undefined;\n plugins: TPlugins;\n} & MergePluginsProperty<ConvertPluginsIntoSignatures<TPlugins>, \"params\">;\n\nexport type UseTreeViewDefaultizedParameters<\n TPlugins extends readonly TreeViewPlugin<TreeViewAnyPluginSignature>[],\n> = {\n rootRef?: React.Ref<HTMLUListElement> | undefined;\n plugins: TPlugins;\n} & MergePluginsProperty<\n ConvertPluginsIntoSignatures<TPlugins>,\n \"defaultizedParams\"\n>;\n\nexport interface UseTreeViewRootSlotProps\n extends Pick<\n React.HTMLAttributes<HTMLUListElement>,\n | \"onFocus\"\n | \"onBlur\"\n | \"onKeyDown\"\n | \"id\"\n | \"aria-activedescendant\"\n | \"aria-multiselectable\"\n | \"role\"\n | \"tabIndex\"\n > {\n ref: React.Ref<HTMLUListElement>;\n}\n\nexport interface UseTreeViewReturnValue<\n TPlugins extends readonly TreeViewAnyPluginSignature[],\n> {\n getRootProps: <TOther extends EventHandlers = {}>(\n otherHandlers?: TOther,\n ) => UseTreeViewRootSlotProps;\n rootRef: React.RefCallback<HTMLUListElement> | null;\n contextValue: TreeViewContextValue<TPlugins>;\n}\n\nexport const useTreeView = <\n Plugins extends readonly TreeViewPlugin<TreeViewAnyPluginSignature>[],\n>(\n inParams: UseTreeViewParameters<Plugins>,\n): UseTreeViewReturnValue<ConvertPluginsIntoSignatures<Plugins>> => {\n const plugins = [...TREE_VIEW_CORE_PLUGINS, ...inParams.plugins];\n type Signatures = ConvertPluginsIntoSignatures<typeof plugins>;\n\n const params = plugins.reduce((acc, plugin) => {\n if (plugin.getDefaultizedParams) {\n return plugin.getDefaultizedParams(acc);\n }\n\n return acc;\n }, inParams) as unknown as UseTreeViewDefaultizedParameters<Plugins>;\n\n const models = useTreeViewModels(\n plugins,\n params as MergePluginsProperty<Signatures, \"defaultizedParams\">,\n );\n const instanceRef = React.useRef<TreeViewInstance<Signatures>>(\n {} as TreeViewInstance<Signatures>,\n );\n const instance = instanceRef.current;\n const innerRootRef = React.useRef(null);\n const handleRootRef = useForkRef(innerRootRef, inParams.rootRef);\n\n const [state, setState] = React.useState(() => {\n const temp = {} as MergePluginsProperty<Signatures, \"state\">;\n plugins.forEach((plugin) => {\n if (plugin.getInitialState) {\n Object.assign(\n temp,\n plugin.getInitialState(\n params as UseTreeViewDefaultizedParameters<any>,\n ),\n );\n }\n });\n\n return temp;\n });\n\n const rootPropsGetters: (<TOther extends EventHandlers = {}>(\n otherHandlers: TOther,\n ) => React.HTMLAttributes<HTMLUListElement>)[] = [];\n let contextValue: TreeViewContextValue<Signatures> =\n DEFAULT_TREE_VIEW_CONTEXT_VALUE;\n\n const runPlugin = (plugin: TreeViewPlugin<any>) => {\n const pluginResponse =\n plugin({\n instance,\n params,\n state,\n setState,\n rootRef: innerRootRef,\n models,\n }) || {};\n\n if (pluginResponse.getRootProps) {\n rootPropsGetters.push(pluginResponse.getRootProps);\n }\n\n if (pluginResponse.contextValue) {\n contextValue = pluginResponse.contextValue;\n }\n };\n\n plugins.forEach(runPlugin);\n\n const getRootProps = <TOther extends EventHandlers = {}>(\n otherHandlers: TOther = {} as TOther,\n ) => {\n const rootProps: UseTreeViewRootSlotProps = {\n role: \"tree\",\n tabIndex: 0,\n ...otherHandlers,\n ref: handleRootRef,\n };\n\n rootPropsGetters.forEach((rootPropsGetter) => {\n Object.assign(rootProps, rootPropsGetter(otherHandlers));\n });\n\n return rootProps;\n };\n\n return { getRootProps, rootRef: handleRootRef, contextValue };\n};\n"],"names":[],"mappings":";;;;;AA4Da,MAAA,cAAc,CAGzB,aACkE;AAClE,QAAM,UAAU,CAAC,GAAG,wBAAwB,GAAG,SAAS,OAAO;AAG/D,QAAM,SAAS,QAAQ,OAAO,CAAC,KAAK,WAAW;AAC7C,QAAI,OAAO,sBAAsB;AACxB,aAAA,OAAO,qBAAqB,GAAG;AAAA,IAAA;AAGjC,WAAA;AAAA,KACN,QAAQ;AAEX,QAAM,SAAS;AAAA,IACb;AAAA,IACA;AAAA,EACF;AACA,QAAM,cAAc,MAAM;AAAA,IACxB,CAAA;AAAA,EACF;AACA,QAAM,WAAW,YAAY;AACvB,QAAA,eAAe,MAAM,OAAO,IAAI;AACtC,QAAM,gBAAgB,WAAW,cAAc,SAAS,OAAO;AAE/D,QAAM,CAAC,OAAO,QAAQ,IAAI,MAAM,SAAS,MAAM;AAC7C,UAAM,OAAO,CAAC;AACN,YAAA,QAAQ,CAAC,WAAW;AAC1B,UAAI,OAAO,iBAAiB;AACnB,eAAA;AAAA,UACL;AAAA,UACA,OAAO;AAAA,YACL;AAAA,UAAA;AAAA,QAEJ;AAAA,MAAA;AAAA,IACF,CACD;AAEM,WAAA;AAAA,EAAA,CACR;AAED,QAAM,mBAE2C,CAAC;AAClD,MAAI,eACF;AAEI,QAAA,YAAY,CAAC,WAAgC;AACjD,UAAM,iBACJ,OAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,SAAS;AAAA,MACT;AAAA,IACD,CAAA,KAAK,CAAC;AAET,QAAI,eAAe,cAAc;AACd,uBAAA,KAAK,eAAe,YAAY;AAAA,IAAA;AAGnD,QAAI,eAAe,cAAc;AAC/B,qBAAe,eAAe;AAAA,IAAA;AAAA,EAElC;AAEA,UAAQ,QAAQ,SAAS;AAEzB,QAAM,eAAe,CACnB,gBAAwB,OACrB;AACH,UAAM,YAAsC;AAAA,MAC1C,MAAM;AAAA,MACN,UAAU;AAAA,MACV,GAAG;AAAA,MACH,KAAK;AAAA,IACP;AAEiB,qBAAA,QAAQ,CAAC,oBAAoB;AAC5C,aAAO,OAAO,WAAW,gBAAgB,aAAa,CAAC;AAAA,IAAA,CACxD;AAEM,WAAA;AAAA,EACT;AAEA,SAAO,EAAE,cAAc,SAAS,eAAe,aAAa;AAC9D;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTreeViewInstanceEvents.js","sources":["../../../../../src/TreeView/internals/hooks/useTreeViewInstanceEvents.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport type { TreeViewPlugin } from \"../types\";\nimport type { TreeViewEventListener } from \"../types/events\";\nimport { EventManager } from \"../utils/EventManager\";\nimport { UseTreeViewInstanceEventsSignature } from \"./useTreeViewInstanceEvents.types\";\nimport { populateInstance } from \"./utils\";\n\nconst isSyntheticEvent = (event: any): event is React.SyntheticEvent => {\n return event.isPropagationStopped !== undefined;\n};\n\n/**\n * Plugin responsible for the registration of the nodes defined as JSX children of the TreeView.\n * When we will have both a SimpleTreeView using JSX children and a TreeView using a data prop,\n * this plugin will only be used by SimpleTreeView.\n */\nexport const useTreeViewInstanceEvents: TreeViewPlugin<\n UseTreeViewInstanceEventsSignature\n> = ({ instance }) => {\n const [eventManager] = React.useState(() => new EventManager());\n\n const publishEvent = React.useCallback(\n (...args: any[]) => {\n const [name, params, event = {}] = args;\n event.defaultMuiPrevented = false;\n\n if (isSyntheticEvent(event) && event.isPropagationStopped()) {\n return;\n }\n\n eventManager.emit(name, params, event);\n },\n [eventManager],\n );\n\n const subscribeEvent = React.useCallback(\n (event: string, handler: TreeViewEventListener<any>) => {\n eventManager.on(event, handler);\n return () => {\n eventManager.removeListener(event, handler);\n };\n },\n [eventManager],\n );\n\n populateInstance<UseTreeViewInstanceEventsSignature>(instance, {\n $$publishEvent: publishEvent,\n $$subscribeEvent: subscribeEvent,\n });\n};\n"],"names":[],"mappings":";;;AAQA,MAAM,mBAAmB,CAAC,UAA8C;AACtE,SAAO,MAAM,yBAAyB;AACxC;AAOO,MAAM,4BAET,CAAC,EAAE,eAAe;AACd,QAAA,CAAC,YAAY,IAAI,MAAM,SAAS,MAAM,IAAI,cAAc;AAE9D,QAAM,eAAe,MAAM;AAAA,IACzB,IAAI,SAAgB;AAClB,YAAM,CAAC,MAAM,QAAQ,QAAQ,CAAA,CAAE,IAAI;AACnC,YAAM,sBAAsB;AAE5B,UAAI,iBAAiB,KAAK,KAAK,MAAM,wBAAwB;AAC3D;AAAA,MAAA;AAGW,mBAAA,KAAK,MAAM,QAAQ,KAAK;AAAA,IACvC;AAAA,IACA,CAAC,YAAY;AAAA,EACf;AAEA,QAAM,iBAAiB,MAAM;AAAA,IAC3B,CAAC,OAAe,YAAwC;AACzC,mBAAA,GAAG,OAAO,OAAO;AAC9B,aAAO,MAAM;AACE,qBAAA,eAAe,OAAO,OAAO;AAAA,MAC5C;AAAA,IACF;AAAA,IACA,CAAC,YAAY;AAAA,EACf;AAEA,mBAAqD,UAAU;AAAA,IAC7D,gBAAgB;AAAA,IAChB,kBAAkB;AAAA,EAAA,CACnB;AACH;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTreeViewModels.js","sources":["../../../../../src/TreeView/internals/hooks/useTreeViewModels.ts"],"sourcesContent":["import * as React from \"react\";\n\nimport {\n ConvertPluginsIntoSignatures,\n MergePluginsProperty,\n TreeViewAnyPluginSignature,\n TreeViewPlugin,\n} from \"../types\";\n\n/**\n * Implements the same behavior as `useControlled` but for several models.\n * The controlled models are never stored in the state and the state is only updated if the model is not controlled.\n */\nexport const useTreeViewModels = <\n TPlugins extends readonly TreeViewPlugin<TreeViewAnyPluginSignature>[],\n>(\n plugins: TPlugins,\n props: MergePluginsProperty<\n ConvertPluginsIntoSignatures<TPlugins>,\n \"defaultizedParams\"\n >,\n) => {\n const modelsRef = React.useRef<{\n [modelName: string]: {\n controlledProp: keyof typeof props;\n defaultProp: keyof typeof props;\n isControlled: boolean;\n };\n }>({});\n\n const [modelsState, setModelsState] = React.useState<{\n [modelName: string]: any;\n }>(() => {\n const initialState: { [modelName: string]: any } = {};\n\n plugins.forEach((plugin) => {\n if (plugin.models) {\n Object.entries(plugin.models).forEach(([modelName, model]) => {\n modelsRef.current[modelName] = {\n controlledProp: model.controlledProp as keyof typeof props,\n defaultProp: model.defaultProp as keyof typeof props,\n isControlled:\n props[model.controlledProp as keyof typeof props] !== undefined,\n };\n initialState[modelName] =\n props[model.defaultProp as keyof typeof props];\n });\n }\n });\n\n return initialState;\n });\n\n const models = Object.fromEntries(\n Object.entries(modelsRef.current).map(([modelName, model]) => {\n const value = model.isControlled\n ? props[model.controlledProp]\n : modelsState[modelName];\n\n return [\n modelName,\n {\n value,\n setValue: (newValue: any) => {\n if (!model.isControlled) {\n setModelsState((prevState) => ({\n ...prevState,\n [modelName]: newValue,\n }));\n }\n },\n },\n ];\n }),\n ) as MergePluginsProperty<ConvertPluginsIntoSignatures<TPlugins>, \"models\">;\n\n return models;\n};\n"],"names":[],"mappings":";AAaa,MAAA,oBAAoB,CAG/B,SACA,UAIG;AACH,QAAM,YAAY,MAAM,OAMrB,EAAE;AAEL,QAAM,CAAC,aAAa,cAAc,IAAI,MAAM,SAEzC,MAAM;AACP,UAAM,eAA6C,CAAC;AAE5C,YAAA,QAAQ,CAAC,WAAW;AAC1B,UAAI,OAAO,QAAQ;AACV,eAAA,QAAQ,OAAO,MAAM,EAAE,QAAQ,CAAC,CAAC,WAAW,KAAK,MAAM;AAClD,oBAAA,QAAQ,SAAS,IAAI;AAAA,YAC7B,gBAAgB,MAAM;AAAA,YACtB,aAAa,MAAM;AAAA,YACnB,cACE,MAAM,MAAM,cAAoC,MAAM;AAAA,UAC1D;AACA,uBAAa,SAAS,IACpB,MAAM,MAAM,WAAiC;AAAA,QAAA,CAChD;AAAA,MAAA;AAAA,IACH,CACD;AAEM,WAAA;AAAA,EAAA,CACR;AAED,QAAM,SAAS,OAAO;AAAA,IACpB,OAAO,QAAQ,UAAU,OAAO,EAAE,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM;AACtD,YAAA,QAAQ,MAAM,eAChB,MAAM,MAAM,cAAc,IAC1B,YAAY,SAAS;AAElB,aAAA;AAAA,QACL;AAAA,QACA;AAAA,UACE;AAAA,UACA,UAAU,CAAC,aAAkB;AACvB,gBAAA,CAAC,MAAM,cAAc;AACvB,6BAAe,CAAC,eAAe;AAAA,gBAC7B,GAAG;AAAA,gBACH,CAAC,SAAS,GAAG;AAAA,cAAA,EACb;AAAA,YAAA;AAAA,UACJ;AAAA,QACF;AAAA,MAEJ;AAAA,IACD,CAAA;AAAA,EACH;AAEO,SAAA;AACT;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../../src/TreeView/internals/hooks/utils.ts"],"sourcesContent":["import {\n TreeViewAnyPluginSignature,\n TreeViewInstance,\n TreeViewUsedInstance,\n} from \"../types\";\nimport type { UseTreeViewExpansionSignature } from \"./plugins/useTreeViewExpansion\";\nimport type { UseTreeViewNodesSignature } from \"./plugins/useTreeViewNodes\";\n\nexport const getPreviousNode = (\n instance: TreeViewInstance<\n [UseTreeViewNodesSignature, UseTreeViewExpansionSignature]\n >,\n nodeId: string,\n) => {\n const node = instance.getNode(nodeId);\n const siblings = instance.getNavigableChildrenIds(node.parentId);\n const nodeIndex = siblings.indexOf(nodeId);\n\n if (nodeIndex === 0) {\n return node.parentId;\n }\n\n let currentNode: string = siblings[nodeIndex - 1];\n while (\n instance.isNodeExpanded(currentNode) &&\n instance.getNavigableChildrenIds(currentNode).length > 0\n ) {\n currentNode = instance.getNavigableChildrenIds(currentNode).pop()!;\n }\n\n return currentNode;\n};\n\nexport const getNextNode = (\n instance: TreeViewInstance<\n [UseTreeViewExpansionSignature, UseTreeViewNodesSignature]\n >,\n nodeId: string,\n) => {\n // If expanded get first child\n if (\n instance.isNodeExpanded(nodeId) &&\n instance.getNavigableChildrenIds(nodeId).length > 0\n ) {\n return instance.getNavigableChildrenIds(nodeId)[0];\n }\n\n let node = instance.getNode(nodeId);\n while (node != null) {\n // Try to get next sibling\n const siblings = instance.getNavigableChildrenIds(node.parentId);\n const nextSibling = siblings[siblings.indexOf(node.id) + 1];\n\n if (nextSibling) {\n return nextSibling;\n }\n\n // If the sibling does not exist, go up a level to the parent and try again.\n node = instance.getNode(node.parentId!);\n }\n\n return null;\n};\n\nexport const getLastNode = (\n instance: TreeViewInstance<\n [UseTreeViewExpansionSignature, UseTreeViewNodesSignature]\n >,\n) => {\n let lastNode = instance.getNavigableChildrenIds(null).pop()!;\n\n while (instance.isNodeExpanded(lastNode)) {\n lastNode = instance.getNavigableChildrenIds(lastNode).pop()!;\n }\n return lastNode;\n};\n\nexport const getFirstNode = (\n instance: TreeViewInstance<[UseTreeViewNodesSignature]>,\n) => instance.getNavigableChildrenIds(null)[0];\n\nexport const populateInstance = <T extends TreeViewAnyPluginSignature>(\n instance: TreeViewUsedInstance<T>,\n methods: T[\"instance\"],\n) => {\n Object.assign(instance, methods);\n};\n"],"names":[],"mappings":"AAQa,MAAA,kBAAkB,CAC7B,UAGA,WACG;AACG,QAAA,OAAO,SAAS,QAAQ,MAAM;AACpC,QAAM,WAAW,SAAS,wBAAwB,KAAK,QAAQ;AACzD,QAAA,YAAY,SAAS,QAAQ,MAAM;AAEzC,MAAI,cAAc,GAAG;AACnB,WAAO,KAAK;AAAA,EAAA;AAGV,MAAA,cAAsB,SAAS,YAAY,CAAC;AAE9C,SAAA,SAAS,eAAe,WAAW,KACnC,SAAS,wBAAwB,WAAW,EAAE,SAAS,GACvD;AACA,kBAAc,SAAS,wBAAwB,WAAW,EAAE,IAAI;AAAA,EAAA;AAG3D,SAAA;AACT;AAEa,MAAA,cAAc,CACzB,UAGA,WACG;AAGD,MAAA,SAAS,eAAe,MAAM,KAC9B,SAAS,wBAAwB,MAAM,EAAE,SAAS,GAClD;AACA,WAAO,SAAS,wBAAwB,MAAM,EAAE,CAAC;AAAA,EAAA;AAG/C,MAAA,OAAO,SAAS,QAAQ,MAAM;AAClC,SAAO,QAAQ,MAAM;AAEnB,UAAM,WAAW,SAAS,wBAAwB,KAAK,QAAQ;AAC/D,UAAM,cAAc,SAAS,SAAS,QAAQ,KAAK,EAAE,IAAI,CAAC;AAE1D,QAAI,aAAa;AACR,aAAA;AAAA,IAAA;AAIF,WAAA,SAAS,QAAQ,KAAK,QAAS;AAAA,EAAA;AAGjC,SAAA;AACT;AAEa,MAAA,cAAc,CACzB,aAGG;AACH,MAAI,WAAW,SAAS,wBAAwB,IAAI,EAAE,IAAI;AAEnD,SAAA,SAAS,eAAe,QAAQ,GAAG;AACxC,eAAW,SAAS,wBAAwB,QAAQ,EAAE,IAAI;AAAA,EAAA;AAErD,SAAA;AACT;AAEO,MAAM,eAAe,CAC1B,aACG,SAAS,wBAAwB,IAAI,EAAE,CAAC;AAEhC,MAAA,mBAAmB,CAC9B,UACA,YACG;AACI,SAAA,OAAO,UAAU,OAAO;AACjC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"EventManager.js","sources":["../../../../../src/TreeView/internals/utils/EventManager.ts"],"sourcesContent":["export type EventListener = (...args: any[]) => void;\n\nexport interface EventListenerOptions {\n isFirst?: boolean;\n}\n\ninterface EventListenerCollection {\n /**\n * List of listeners to run before the others\n * They are run in the opposite order of the registration order\n */\n highPriority: Map<EventListener, true>;\n /**\n * List of events to run after the high priority listeners\n * They are run in the registration order\n */\n regular: Map<EventListener, true>;\n}\n\n// Used https://gist.github.com/mudge/5830382 as a starting point.\n// See https://github.com/browserify/events/blob/master/events.js for\n// the Node.js (https://nodejs.org/api/events.html) polyfill used by webpack.\nexport class EventManager {\n maxListeners = 20;\n\n warnOnce = false;\n\n events: { [eventName: string]: EventListenerCollection } = {};\n\n on(\n eventName: string,\n listener: EventListener,\n options: EventListenerOptions = {},\n ): void {\n let collection = this.events[eventName];\n\n if (!collection) {\n collection = {\n highPriority: new Map(),\n regular: new Map(),\n };\n this.events[eventName] = collection;\n }\n\n if (options.isFirst) {\n collection.highPriority.set(listener, true);\n } else {\n collection.regular.set(listener, true);\n }\n }\n\n removeListener(eventName: string, listener: EventListener): void {\n if (this.events[eventName]) {\n this.events[eventName].regular.delete(listener);\n this.events[eventName].highPriority.delete(listener);\n }\n }\n\n removeAllListeners(): void {\n this.events = {};\n }\n\n emit(eventName: string, ...args: any[]): void {\n const collection = this.events[eventName];\n if (!collection) {\n return;\n }\n\n const highPriorityListeners = Array.from(collection.highPriority.keys());\n const regularListeners = Array.from(collection.regular.keys());\n\n for (let i = highPriorityListeners.length - 1; i >= 0; i -= 1) {\n const listener = highPriorityListeners[i];\n if (collection.highPriority.has(listener)) {\n listener.apply(this, args);\n }\n }\n\n for (let i = 0; i < regularListeners.length; i += 1) {\n const listener = regularListeners[i];\n if (collection.regular.has(listener)) {\n listener.apply(this, args);\n }\n }\n }\n\n once(eventName: string, listener: EventListener): void {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const that = this;\n this.on(eventName, function oneTimeListener(...args) {\n that.removeListener(eventName, oneTimeListener);\n listener.apply(that, args);\n });\n }\n}\n"],"names":[],"mappings":"AAsBO,MAAM,aAAa;AAAA,EACxB,eAAe;AAAA,EAEf,WAAW;AAAA,EAEX,SAA2D,CAAC;AAAA,EAE5D,GACE,WACA,UACA,UAAgC,CAAA,GAC1B;AACF,QAAA,aAAa,KAAK,OAAO,SAAS;AAEtC,QAAI,CAAC,YAAY;AACF,mBAAA;AAAA,QACX,kCAAkB,IAAI;AAAA,QACtB,6BAAa,IAAI;AAAA,MACnB;AACK,WAAA,OAAO,SAAS,IAAI;AAAA,IAAA;AAG3B,QAAI,QAAQ,SAAS;AACR,iBAAA,aAAa,IAAI,UAAU,IAAI;AAAA,IAAA,OACrC;AACM,iBAAA,QAAQ,IAAI,UAAU,IAAI;AAAA,IAAA;AAAA,EACvC;AAAA,EAGF,eAAe,WAAmB,UAA+B;AAC3D,QAAA,KAAK,OAAO,SAAS,GAAG;AAC1B,WAAK,OAAO,SAAS,EAAE,QAAQ,OAAO,QAAQ;AAC9C,WAAK,OAAO,SAAS,EAAE,aAAa,OAAO,QAAQ;AAAA,IAAA;AAAA,EACrD;AAAA,EAGF,qBAA2B;AACzB,SAAK,SAAS,CAAC;AAAA,EAAA;AAAA,EAGjB,KAAK,cAAsB,MAAmB;AACtC,UAAA,aAAa,KAAK,OAAO,SAAS;AACxC,QAAI,CAAC,YAAY;AACf;AAAA,IAAA;AAGF,UAAM,wBAAwB,MAAM,KAAK,WAAW,aAAa,MAAM;AACvE,UAAM,mBAAmB,MAAM,KAAK,WAAW,QAAQ,MAAM;AAE7D,aAAS,IAAI,sBAAsB,SAAS,GAAG,KAAK,GAAG,KAAK,GAAG;AACvD,YAAA,WAAW,sBAAsB,CAAC;AACxC,UAAI,WAAW,aAAa,IAAI,QAAQ,GAAG;AAChC,iBAAA,MAAM,MAAM,IAAI;AAAA,MAAA;AAAA,IAC3B;AAGF,aAAS,IAAI,GAAG,IAAI,iBAAiB,QAAQ,KAAK,GAAG;AAC7C,YAAA,WAAW,iBAAiB,CAAC;AACnC,UAAI,WAAW,QAAQ,IAAI,QAAQ,GAAG;AAC3B,iBAAA,MAAM,MAAM,IAAI;AAAA,MAAA;AAAA,IAC3B;AAAA,EACF;AAAA,EAGF,KAAK,WAAmB,UAA+B;AAErD,UAAM,OAAO;AACb,SAAK,GAAG,WAAW,SAAS,mBAAmB,MAAM;AAC9C,WAAA,eAAe,WAAW,eAAe;AACrC,eAAA,MAAM,MAAM,IAAI;AAAA,IAAA,CAC1B;AAAA,EAAA;AAEL;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FinalizationRegistryBasedCleanupTracking.js","sources":["../../../../../src/TreeView/internals/utils/FinalizationRegistryBasedCleanupTracking.ts"],"sourcesContent":["import {\n CleanupTracking,\n UnregisterToken,\n UnsubscribeFn,\n} from \"./CleanupTracking\";\n\nexport class FinalizationRegistryBasedCleanupTracking\n implements CleanupTracking\n{\n registry = new FinalizationRegistry<UnsubscribeFn>((unsubscribe) => {\n if (typeof unsubscribe === \"function\") {\n unsubscribe();\n }\n });\n\n register(\n object: any,\n unsubscribe: UnsubscribeFn,\n unregisterToken: UnregisterToken,\n ): void {\n this.registry.register(object, unsubscribe, unregisterToken);\n }\n\n unregister(unregisterToken: UnregisterToken): void {\n this.registry.unregister(unregisterToken);\n }\n\n // eslint-disable-next-line class-methods-use-this\n reset() {}\n}\n"],"names":[],"mappings":"AAMO,MAAM,yCAEb;AAAA,EACE,WAAW,IAAI,qBAAoC,CAAC,gBAAgB;AAC9D,QAAA,OAAO,gBAAgB,YAAY;AACzB,kBAAA;AAAA,IAAA;AAAA,EACd,CACD;AAAA,EAED,SACE,QACA,aACA,iBACM;AACN,SAAK,SAAS,SAAS,QAAQ,aAAa,eAAe;AAAA,EAAA;AAAA,EAG7D,WAAW,iBAAwC;AAC5C,SAAA,SAAS,WAAW,eAAe;AAAA,EAAA;AAAA;AAAA,EAI1C,QAAQ;AAAA,EAAA;AACV;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TimerBasedCleanupTracking.js","sources":["../../../../../src/TreeView/internals/utils/TimerBasedCleanupTracking.ts"],"sourcesContent":["import {\n CleanupTracking,\n UnregisterToken,\n UnsubscribeFn,\n} from \"./CleanupTracking\";\n\n// If no effect ran after this amount of time, we assume that the render was not committed by React\nconst CLEANUP_TIMER_LOOP_MILLIS = 1000;\n\nexport class TimerBasedCleanupTracking implements CleanupTracking {\n timeouts? = new Map<number, NodeJS.Timeout>();\n\n cleanupTimeout = CLEANUP_TIMER_LOOP_MILLIS;\n\n constructor(timeout = CLEANUP_TIMER_LOOP_MILLIS) {\n this.cleanupTimeout = timeout;\n }\n\n register(\n object: any,\n unsubscribe: UnsubscribeFn,\n unregisterToken: UnregisterToken,\n ): void {\n if (!this.timeouts) {\n this.timeouts = new Map<number, NodeJS.Timeout>();\n }\n\n const timeout = setTimeout(() => {\n if (typeof unsubscribe === \"function\") {\n unsubscribe();\n }\n this.timeouts!.delete(unregisterToken.cleanupToken);\n }, this.cleanupTimeout);\n\n this.timeouts!.set(unregisterToken!.cleanupToken, timeout);\n }\n\n unregister(unregisterToken: UnregisterToken): void {\n const timeout = this.timeouts!.get(unregisterToken.cleanupToken);\n if (timeout) {\n this.timeouts!.delete(unregisterToken.cleanupToken);\n clearTimeout(timeout);\n }\n }\n\n reset() {\n if (this.timeouts) {\n this.timeouts.forEach((value, key) => {\n this.unregister({ cleanupToken: key });\n });\n this.timeouts = undefined;\n }\n }\n}\n"],"names":[],"mappings":"AAOA,MAAM,4BAA4B;AAE3B,MAAM,0BAAqD;AAAA,EAChE,+BAAgB,IAA4B;AAAA,EAE5C,iBAAiB;AAAA,EAEjB,YAAY,UAAU,2BAA2B;AAC/C,SAAK,iBAAiB;AAAA,EAAA;AAAA,EAGxB,SACE,QACA,aACA,iBACM;AACF,QAAA,CAAC,KAAK,UAAU;AACb,WAAA,+BAAe,IAA4B;AAAA,IAAA;AAG5C,UAAA,UAAU,WAAW,MAAM;AAC3B,UAAA,OAAO,gBAAgB,YAAY;AACzB,oBAAA;AAAA,MAAA;AAET,WAAA,SAAU,OAAO,gBAAgB,YAAY;AAAA,IAAA,GACjD,KAAK,cAAc;AAEtB,SAAK,SAAU,IAAI,gBAAiB,cAAc,OAAO;AAAA,EAAA;AAAA,EAG3D,WAAW,iBAAwC;AACjD,UAAM,UAAU,KAAK,SAAU,IAAI,gBAAgB,YAAY;AAC/D,QAAI,SAAS;AACN,WAAA,SAAU,OAAO,gBAAgB,YAAY;AAClD,mBAAa,OAAO;AAAA,IAAA;AAAA,EACtB;AAAA,EAGF,QAAQ;AACN,QAAI,KAAK,UAAU;AACjB,WAAK,SAAS,QAAQ,CAAC,OAAO,QAAQ;AACpC,aAAK,WAAW,EAAE,cAAc,IAAA,CAAK;AAAA,MAAA,CACtC;AACD,WAAK,WAAW;AAAA,IAAA;AAAA,EAClB;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"publishTreeViewEvent.js","sources":["../../../../../src/TreeView/internals/utils/publishTreeViewEvent.ts"],"sourcesContent":["import type { UseTreeViewInstanceEventsInstance } from \"../hooks/useTreeViewInstanceEvents.types\";\nimport type { TreeViewAnyPluginSignature, TreeViewUsedEvents } from \"../types\";\n\nexport const publishTreeViewEvent = <\n Instance extends UseTreeViewInstanceEventsInstance & {\n $$signature: TreeViewAnyPluginSignature;\n },\n E extends keyof TreeViewUsedEvents<Instance[\"$$signature\"]>,\n>(\n instance: Instance,\n eventName: E,\n params: TreeViewUsedEvents<Instance[\"$$signature\"]>[E][\"params\"],\n) => {\n instance.$$publishEvent(eventName as string, params);\n};\n"],"names":[],"mappings":"AAGO,MAAM,uBAAuB,CAMlC,UACA,WACA,WACG;AACM,WAAA,eAAe,WAAqB,MAAM;AACrD;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Typography.js","sources":["../../../src/Typography/Typography.tsx"],"sourcesContent":["import {\n useDefaultProps,\n useTheme,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport {\n fixedForwardRef,\n PolymorphicComponentRef,\n PolymorphicRef,\n} from \"../types/generic\";\nimport { staticClasses, useClasses } from \"./Typography.styles\";\nimport {\n HvTypographyLegacyVariants,\n HvTypographyVariants,\n mapVariant,\n} from \"./utils\";\n\nexport { staticClasses as typographyClasses };\n\nexport type HvTypographyClasses = ExtractNames<typeof useClasses>;\n\nconst HvTypographyMap = {\n display: \"h1\",\n title1: \"h1\",\n title2: \"h2\",\n title3: \"h3\",\n title4: \"h4\",\n body: \"p\",\n label: \"span\",\n captionLabel: \"p\",\n caption1: \"p\",\n caption2: \"p\",\n // LEGACY\n \"5xlTitle\": \"h1\",\n \"4xlTitle\": \"h1\",\n \"3xlTitle\": \"h1\",\n xxlTitle: \"h1\",\n xlTitle: \"h1\",\n lTitle: \"h2\",\n mTitle: \"h3\",\n sTitle: \"h4\",\n xsTitle: \"h5\",\n xxsTitle: \"h6\",\n sectionTitle: \"p\",\n highlightText: \"p\",\n normalText: \"p\",\n placeholderText: \"p\",\n link: \"p\",\n disabledText: \"p\",\n selectedNavText: \"p\",\n vizText: \"p\",\n vizTextDisabled: \"p\",\n xsInlineLink: \"p\",\n} satisfies Record<\n HvTypographyVariants | HvTypographyLegacyVariants,\n React.ElementType\n>;\n\nexport type HvTypographyProps<C extends React.ElementType = \"p\"> =\n PolymorphicComponentRef<\n C,\n {\n /** Use the variant prop to change the visual style of the Typography. */\n variant?: HvTypographyVariants | HvTypographyLegacyVariants;\n /** If `true` the typography will display the look of a link. */\n link?: boolean;\n /** If `true` the typography will display the look of a disabled state. */\n disabled?: boolean;\n /**\n * If `true`, the typography will render a \"p\" element\n * @deprecated use `component=\"p\"` instead\n * */\n paragraph?: boolean;\n /**\n * If `true`, the text will not wrap, but instead will truncate with a text overflow ellipsis.\n *\n * Note that text overflow can only happen with block or inline-block level elements\n * (the element needs to have a width in order to overflow).\n */\n noWrap?: boolean;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvTypographyClasses;\n }\n >;\n\n/**\n * Typography component is used to render text and paragraphs within an interface.\n */\nexport const HvTypography = fixedForwardRef(function HvTypography<\n C extends React.ElementType = \"p\",\n>(props: HvTypographyProps<C>, ref: PolymorphicRef<C>) {\n const {\n className,\n component: ComponentProp,\n classes: classesProp,\n variant: variantProp = \"body\",\n link = false,\n noWrap = false,\n paragraph = false,\n disabled = false,\n ...others\n } = useDefaultProps(\"HvTypography\", props);\n const { classes, css, cx } = useClasses(classesProp);\n const { activeTheme } = useTheme();\n\n const variant = mapVariant(variantProp, activeTheme?.base);\n\n const Component =\n ComponentProp || (paragraph && \"p\") || HvTypographyMap[variant] || \"span\";\n\n return (\n <Component\n ref={ref}\n className={cx(\n css({ ...activeTheme?.typography[variant] }),\n classes.root,\n classes[variant],\n {\n [classes.isLink]: link,\n [classes.noWrap]: noWrap,\n [classes.disabled]: disabled,\n },\n className,\n )}\n disabled={disabled}\n {...others}\n />\n );\n});\n"],"names":["HvTypography"],"mappings":";;;;;;AAsBA,MAAM,kBAAkB;AAAA,EACtB,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,MAAM;AAAA,EACN,OAAO;AAAA,EACP,cAAc;AAAA,EACd,UAAU;AAAA,EACV,UAAU;AAAA;AAAA,EAEV,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AAAA,EACV,cAAc;AAAA,EACd,eAAe;AAAA,EACf,YAAY;AAAA,EACZ,iBAAiB;AAAA,EACjB,MAAM;AAAA,EACN,cAAc;AAAA,EACd,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,iBAAiB;AAAA,EACjB,cAAc;AAChB;AAmCO,MAAM,eAAe,gBAAgB,SAASA,cAEnD,OAA6B,KAAwB;AAC/C,QAAA;AAAA,IACJ;AAAA,IACA,WAAW;AAAA,IACX,SAAS;AAAA,IACT,SAAS,cAAc;AAAA,IACvB,OAAO;AAAA,IACP,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,WAAW;AAAA,IACX,GAAG;AAAA,EAAA,IACD,gBAAgB,gBAAgB,KAAK;AACzC,QAAM,EAAE,SAAS,KAAK,GAAG,IAAI,WAAW,WAAW;AAC7C,QAAA,EAAE,YAAY,IAAI,SAAS;AAEjC,QAAM,UAAU,WAAW,aAAa,aAAa,IAAI;AAEzD,QAAM,YACJ,iBAAkB,aAAa,OAAQ,gBAAgB,OAAO,KAAK;AAGnE,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC;AAAA,MACA,WAAW;AAAA,QACT,IAAI,EAAE,GAAG,aAAa,WAAW,OAAO,GAAG;AAAA,QAC3C,QAAQ;AAAA,QACR,QAAQ,OAAO;AAAA,QACf;AAAA,UACE,CAAC,QAAQ,MAAM,GAAG;AAAA,UAClB,CAAC,QAAQ,MAAM,GAAG;AAAA,UAClB,CAAC,QAAQ,QAAQ,GAAG;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AAAA,MACA;AAAA,MACC,GAAG;AAAA,IAAA;AAAA,EACN;AAEJ,CAAC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Typography.styles.js","sources":["../../../src/Typography/Typography.styles.ts"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { useClasses, staticClasses } = createClasses(\"HvTypography\", {\n root: {\n fontFamily: theme.fontFamily.body,\n color: \"inherit\",\n },\n disabled: {\n color: theme.colors.textDisabled,\n },\n isLink: {\n cursor: \"pointer\",\n color: theme.colors.primary,\n textDecoration: \"underline\",\n },\n noWrap: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n // variants\n display: {},\n title1: {},\n title2: {},\n title3: {},\n title4: {},\n body: {},\n label: {},\n captionLabel: {},\n caption1: {},\n caption2: {},\n // legacy variants\n // TODO: remove (legacy or all variants) in v6 in favour of dynamic variants\n \"5xlTitle\": {},\n \"4xlTitle\": {},\n // @ts-ignore non-existent variant\n \"3xlTitle\": {},\n xxlTitle: {},\n xlTitle: {},\n lTitle: {},\n mTitle: {},\n sTitle: {},\n xsTitle: {},\n xxsTitle: {},\n sectionTitle: {\n textTransform: \"uppercase\",\n },\n highlightText: {},\n normalText: {},\n placeholderText: {},\n link: {\n cursor: \"pointer\",\n textDecoration: \"underline\",\n },\n disabledText: {},\n selectedNavText: {},\n vizText: {},\n vizTextDisabled: {},\n xsInlineLink: {},\n});\n"],"names":[],"mappings":";;AAGO,MAAM,EAAE,YAAY,kBAAkB,cAAc,gBAAgB;AAAA,EACzE,MAAM;AAAA,IACJ,YAAY,MAAM,WAAW;AAAA,IAC7B,OAAO;AAAA,EACT;AAAA,EACA,UAAU;AAAA,IACR,OAAO,MAAM,OAAO;AAAA,EACtB;AAAA,EACA,QAAQ;AAAA,IACN,QAAQ;AAAA,IACR,OAAO,MAAM,OAAO;AAAA,IACpB,gBAAgB;AAAA,EAClB;AAAA,EACA,QAAQ;AAAA,IACN,UAAU;AAAA,IACV,cAAc;AAAA,IACd,YAAY;AAAA,EACd;AAAA;AAAA,EAEA,SAAS,CAAC;AAAA,EACV,QAAQ,CAAC;AAAA,EACT,QAAQ,CAAC;AAAA,EACT,QAAQ,CAAC;AAAA,EACT,QAAQ,CAAC;AAAA,EACT,MAAM,CAAC;AAAA,EACP,OAAO,CAAC;AAAA,EACR,cAAc,CAAC;AAAA,EACf,UAAU,CAAC;AAAA,EACX,UAAU,CAAC;AAAA;AAAA;AAAA,EAGX,YAAY,CAAC;AAAA,EACb,YAAY,CAAC;AAAA;AAAA,EAEb,YAAY,CAAC;AAAA,EACb,UAAU,CAAC;AAAA,EACX,SAAS,CAAC;AAAA,EACV,QAAQ,CAAC;AAAA,EACT,QAAQ,CAAC;AAAA,EACT,QAAQ,CAAC;AAAA,EACT,SAAS,CAAC;AAAA,EACV,UAAU,CAAC;AAAA,EACX,cAAc;AAAA,IACZ,eAAe;AAAA,EACjB;AAAA,EACA,eAAe,CAAC;AAAA,EAChB,YAAY,CAAC;AAAA,EACb,iBAAiB,CAAC;AAAA,EAClB,MAAM;AAAA,IACJ,QAAQ;AAAA,IACR,gBAAgB;AAAA,EAClB;AAAA,EACA,cAAc,CAAC;AAAA,EACf,iBAAiB,CAAC;AAAA,EAClB,SAAS,CAAC;AAAA,EACV,iBAAiB,CAAC;AAAA,EAClB,cAAc,CAAA;AAChB,CAAC;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../src/Typography/utils.ts"],"sourcesContent":["import { HvBaseTheme } from \"@hitachivantara/uikit-styles\";\n\nexport const typographyVariants = [\n \"display\",\n \"title1\",\n \"title2\",\n \"title3\",\n \"title4\",\n \"body\",\n \"label\",\n \"captionLabel\",\n \"caption1\",\n \"caption2\",\n] as const;\n\nexport type HvTypographyVariants = (typeof typographyVariants)[number];\n\n/** @deprecated */\nexport type HvTypographyLegacyVariants =\n | \"5xlTitle\"\n | \"4xlTitle\"\n | \"3xlTitle\"\n | \"xxlTitle\"\n | \"xlTitle\"\n | \"lTitle\"\n | \"mTitle\"\n | \"sTitle\"\n | \"xsTitle\"\n | \"xxsTitle\"\n | \"sectionTitle\"\n | \"highlightText\"\n | \"normalText\"\n | \"placeholderText\"\n | \"link\"\n | \"disabledText\"\n | \"selectedNavText\"\n | \"vizText\"\n | \"vizTextDisabled\"\n | \"xsInlineLink\";\n\ntype Variant = HvTypographyVariants | HvTypographyLegacyVariants;\n\nconst mappableVariants = new Map<Variant, HvTypographyVariants>([\n [\"3xlTitle\", \"display\"],\n [\"xlTitle\", \"title1\"],\n [\"mTitle\", \"title2\"],\n [\"xsTitle\", \"title3\"],\n [\"highlightText\", \"label\"],\n [\"normalText\", \"body\"],\n [\"vizText\", \"caption1\"],\n]);\n\nconst isLegacyVariant = (variant: string) => {\n return [\n \"5xlTitle\",\n \"4xlTitle\",\n \"3xlTitle\",\n \"xxlTitle\",\n \"xlTitle\",\n \"lTitle\",\n \"mTitle\",\n \"sTitle\",\n \"xsTitle\",\n \"xxsTitle\",\n \"sectionTitle\",\n \"highlightText\",\n \"normalText\",\n \"placeholderText\",\n \"link\",\n \"disabledText\",\n \"selectedNavText\",\n \"vizText\",\n \"vizTextDisabled\",\n \"xsInlineLink\",\n ].includes(variant);\n};\n\nexport const mapVariant = (variant: Variant, theme?: HvBaseTheme) => {\n if (theme === \"ds3\") return variant;\n const mappedVariant = mappableVariants.get(variant);\n\n if (import.meta.env.DEV) {\n /* eslint-disable no-console */\n const msg = `The typography variant ${variant} is deprecated.`;\n if (mappedVariant) {\n console.warn(`${msg} Use ${mappedVariant} instead.`);\n }\n if (isLegacyVariant(variant)) {\n console.warn(msg);\n }\n }\n\n return mappedVariant || variant;\n};\n"],"names":[],"mappings":"AAEO,MAAM,qBAAqB;AAAA,EAChC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AA6BA,MAAM,uCAAuB,IAAmC;AAAA,EAC9D,CAAC,YAAY,SAAS;AAAA,EACtB,CAAC,WAAW,QAAQ;AAAA,EACpB,CAAC,UAAU,QAAQ;AAAA,EACnB,CAAC,WAAW,QAAQ;AAAA,EACpB,CAAC,iBAAiB,OAAO;AAAA,EACzB,CAAC,cAAc,MAAM;AAAA,EACrB,CAAC,WAAW,UAAU;AACxB,CAAC;AA2BY,MAAA,aAAa,CAAC,SAAkB,UAAwB;AAC/D,MAAA,UAAU,MAAc,QAAA;AACtB,QAAA,gBAAgB,iBAAiB,IAAI,OAAO;AAalD,SAAO,iBAAiB;AAC1B;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Action.js","sources":["../../../../src/VerticalNavigation/Actions/Action.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvButton, HvButtonProps } from \"../../Button\";\nimport { setId } from \"../../utils/setId\";\nimport { VerticalNavigationContext } from \"../VerticalNavigationContext\";\nimport { staticClasses, useClasses } from \"./Action.styles\";\n\nexport { staticClasses as actionClasses };\n\nexport type HvVerticalNavigationActionClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvVerticalNavigationActionProps\n extends Omit<HvButtonProps, \"classes\" | \"icon\"> {\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvVerticalNavigationActionClasses;\n /** Visual label. */\n label?: string;\n /** Icon. */\n icon?: React.ReactNode;\n}\n\nexport const HvVerticalNavigationAction = (\n props: HvVerticalNavigationActionProps,\n) => {\n const {\n className,\n classes: classesProp,\n id,\n label = \"\",\n icon,\n ...others\n } = useDefaultProps(\"HvVerticalNavigationAction\", props);\n\n const { isOpen } = useContext(VerticalNavigationContext);\n\n const { classes, cx } = useClasses(classesProp);\n\n return (\n <HvButton\n id={setId(id, \"button\")}\n variant=\"secondaryGhost\"\n icon={!isOpen}\n className={cx(\n classes.action,\n {\n [classes.noIcon]: !icon,\n [classes.minimized]: !isOpen,\n },\n className,\n )}\n {...(!isOpen && { \"aria-label\": label })}\n {...others}\n >\n {icon}\n {isOpen && label}\n </HvButton>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAyBa,MAAA,6BAA6B,CACxC,UACG;AACG,QAAA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,QAAQ;AAAA,IACR;AAAA,IACA,GAAG;AAAA,EAAA,IACD,gBAAgB,8BAA8B,KAAK;AAEvD,QAAM,EAAE,OAAA,IAAW,WAAW,yBAAyB;AAEvD,QAAM,EAAE,SAAS,OAAO,WAAW,WAAW;AAG5C,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,IAAI,MAAM,IAAI,QAAQ;AAAA,MACtB,SAAQ;AAAA,MACR,MAAM,CAAC;AAAA,MACP,WAAW;AAAA,QACT,QAAQ;AAAA,QACR;AAAA,UACE,CAAC,QAAQ,MAAM,GAAG,CAAC;AAAA,UACnB,CAAC,QAAQ,SAAS,GAAG,CAAC;AAAA,QACxB;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAI,CAAC,UAAU,EAAE,cAAc,MAAM;AAAA,MACrC,GAAG;AAAA,MAEH,UAAA;AAAA,QAAA;AAAA,QACA,UAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EACb;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Action.styles.js","sources":["../../../../src/VerticalNavigation/Actions/Action.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigationAction\",\n {\n action: {\n width: \"100%\",\n justifyContent: \"flex-start\",\n height: \"32px\",\n color: \"inherit\",\n fontWeight: \"inherit\",\n padding: 0,\n border: \"none\",\n\n // cursor\n \"& *\": {\n cursor: \"pointer\",\n },\n },\n noIcon: {\n paddingLeft: theme.space.xs,\n },\n minimized: {\n justifyContent: \"center\",\n paddingRight: 0,\n },\n },\n);\n"],"names":[],"mappings":";;AAGa,MAAA,EAAE,eAAe,WAAA,IAAe;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,QAAQ;AAAA,MACN,OAAO;AAAA,MACP,gBAAgB;AAAA,MAChB,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,YAAY;AAAA,MACZ,SAAS;AAAA,MACT,QAAQ;AAAA;AAAA,MAGR,OAAO;AAAA,QACL,QAAQ;AAAA,MAAA;AAAA,IAEZ;AAAA,IACA,QAAQ;AAAA,MACN,aAAa,MAAM,MAAM;AAAA,IAC3B;AAAA,IACA,WAAW;AAAA,MACT,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAAA;AAAA,EAChB;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Actions.js","sources":["../../../../src/VerticalNavigation/Actions/Actions.tsx"],"sourcesContent":["import { useContext } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvBaseProps } from \"../../types/generic\";\nimport { VerticalNavigationContext } from \"../VerticalNavigationContext\";\nimport { staticClasses, useClasses } from \"./Actions.styles\";\n\nexport { staticClasses as actionsClasses };\n\nexport type HvVerticalNavigationActionsClasses = ExtractNames<\n typeof useClasses\n>;\n\nexport interface HvVerticalNavigationActionsProps extends HvBaseProps {\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvVerticalNavigationActionsClasses;\n}\n\nexport const HvVerticalNavigationActions = (\n props: HvVerticalNavigationActionsProps,\n) => {\n const {\n className,\n classes: classesProp,\n children,\n ...others\n } = useDefaultProps(\"HvVerticalNavigationActions\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const { isOpen, useIcons } = useContext(VerticalNavigationContext);\n\n return (\n <div\n className={cx(\n classes.root,\n {\n [classes.hide]: !isOpen && !useIcons,\n },\n className,\n )}\n {...others}\n >\n {children}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;AAqBa,MAAA,8BAA8B,CACzC,UACG;AACG,QAAA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,GAAG;AAAA,EAAA,IACD,gBAAgB,+BAA+B,KAAK;AAExD,QAAM,EAAE,SAAS,OAAO,WAAW,WAAW;AAE9C,QAAM,EAAE,QAAQ,aAAa,WAAW,yBAAyB;AAG/D,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW;AAAA,QACT,QAAQ;AAAA,QACR;AAAA,UACE,CAAC,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC;AAAA,QAC9B;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA,MAEH;AAAA,IAAA;AAAA,EACH;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Actions.styles.js","sources":["../../../../src/VerticalNavigation/Actions/Actions.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigationActions\",\n {\n root: {\n display: \"flex\",\n flexDirection: \"column\",\n marginTop: \"auto\",\n\n gap: theme.space.xs,\n },\n hide: {\n display: \"none\",\n },\n },\n);\n"],"names":[],"mappings":";;AAGa,MAAA,EAAE,eAAe,WAAA,IAAe;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,eAAe;AAAA,MACf,WAAW;AAAA,MAEX,KAAK,MAAM,MAAM;AAAA,IACnB;AAAA,IACA,MAAM;AAAA,MACJ,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sources":["../../../../src/VerticalNavigation/Header/Header.tsx"],"sourcesContent":["import { useContext, useMemo } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvButton, HvButtonProps } from \"../../Button\";\nimport { HvIcon } from \"../../icons\";\nimport { HvBaseProps } from \"../../types/generic\";\nimport { HvTypography } from \"../../Typography\";\nimport { VerticalNavigationContext } from \"../VerticalNavigationContext\";\nimport { staticClasses, useClasses } from \"./Header.styles\";\n\nexport { staticClasses as verticalNavigationHeaderClasses };\n\nexport type HvVerticalNavigationHeaderClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvVerticalNavigationHeaderProps extends HvBaseProps {\n /** The title text to show on header. */\n title?: string;\n /** Icon to show when vertical navigation is collapsed. */\n openIcon?: React.ReactNode;\n /** Icon to show when vertical navigation is expanded. */\n closeIcon?: React.ReactNode;\n /** Props for the collapse button. */\n collapseButtonProps?: HvButtonProps;\n /** Props for the back button. */\n backButtonProps?: HvButtonProps;\n /** A Jss Object used to override or extend the styles applied to the component. */\n classes?: HvVerticalNavigationHeaderClasses;\n /** Handler for the collapse button. */\n onCollapseButtonClick?: React.MouseEventHandler<HTMLElement>;\n}\n\nexport const HvVerticalNavigationHeader = (\n props: HvVerticalNavigationHeaderProps,\n) => {\n const {\n title,\n openIcon: openIconProp,\n closeIcon: closeIconProp,\n collapseButtonProps = {},\n backButtonProps = {},\n className,\n classes: classesProp,\n onCollapseButtonClick,\n ...others\n } = useDefaultProps(\"HvVerticalNavigationHeader\", props);\n\n const {\n isOpen,\n useIcons,\n headerTitle,\n slider,\n navigateToParentHandler,\n parentItem,\n } = useContext(VerticalNavigationContext);\n\n const { classes, cx } = useClasses(classesProp);\n\n // whenever we're in a sublevel, the parentItem is always a single item.\n // In the first level it's always an array with the first level elements.\n const shouldShowTitle = useMemo(\n () => !slider || (slider && !Array.isArray(parentItem)),\n [parentItem, slider],\n );\n\n if (!shouldShowTitle) return null;\n\n const openIcon = openIconProp ?? (\n <HvIcon name={useIcons ? \"Forwards\" : \"Menu\"} />\n );\n const closeIcon = closeIconProp ?? <HvIcon name=\"Backwards\" />;\n\n const handleClickBack = () => navigateToParentHandler?.();\n\n const { className: backButtonClassName, ...otherBackButtonProps } =\n backButtonProps;\n\n const {\n className: collapseButtonClassName,\n classes: collapseButtonClasses,\n ...otherCollapseButtonProps\n } = collapseButtonProps;\n\n return (\n <div\n className={cx(classes.root, { [classes.minimized]: !isOpen }, className)}\n {...others}\n >\n {isOpen && headerTitle && slider && (\n <HvButton\n icon\n onClick={handleClickBack}\n className={cx(classes.backButton, backButtonClassName)}\n aria-label=\"Back\"\n {...otherBackButtonProps}\n >\n <HvIcon name=\"Backwards\" size=\"xs\" />\n </HvButton>\n )}\n {isOpen && (\n <HvTypography\n variant={slider ? \"label\" : \"title3\"}\n className={classes.title}\n >\n {headerTitle && slider ? headerTitle : title}\n </HvTypography>\n )}\n {onCollapseButtonClick && (\n <HvButton\n icon\n onClick={onCollapseButtonClick}\n className={cx(classes.collapseButton, collapseButtonClassName)}\n classes={{\n ...collapseButtonClasses,\n root: cx(\n { [classes.minimized]: !isOpen }, // TODO - v6 don't use minimized classes in two different places\n collapseButtonClasses?.root,\n ),\n }}\n {...otherCollapseButtonProps}\n >\n {isOpen ? closeIcon : openIcon}\n </HvButton>\n )}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAkCa,MAAA,6BAA6B,CACxC,UACG;AACG,QAAA;AAAA,IACJ;AAAA,IACA,UAAU;AAAA,IACV,WAAW;AAAA,IACX,sBAAsB,CAAC;AAAA,IACvB,kBAAkB,CAAC;AAAA,IACnB;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA,GAAG;AAAA,EAAA,IACD,gBAAgB,8BAA8B,KAAK;AAEjD,QAAA;AAAA,IACJ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,IACE,WAAW,yBAAyB;AAExC,QAAM,EAAE,SAAS,OAAO,WAAW,WAAW;AAI9C,QAAM,kBAAkB;AAAA,IACtB,MAAM,CAAC,UAAW,UAAU,CAAC,MAAM,QAAQ,UAAU;AAAA,IACrD,CAAC,YAAY,MAAM;AAAA,EACrB;AAEI,MAAA,CAAC,gBAAwB,QAAA;AAE7B,QAAM,WAAW,gBACf,oBAAC,UAAO,MAAM,WAAW,aAAa,QAAQ;AAEhD,QAAM,YAAY,iBAAkB,oBAAA,QAAA,EAAO,MAAK,aAAY;AAEtD,QAAA,kBAAkB,MAAM,0BAA0B;AAExD,QAAM,EAAE,WAAW,qBAAqB,GAAG,qBACzC,IAAA;AAEI,QAAA;AAAA,IACJ,WAAW;AAAA,IACX,SAAS;AAAA,IACT,GAAG;AAAA,EAAA,IACD;AAGF,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,GAAG,QAAQ,MAAM,EAAE,CAAC,QAAQ,SAAS,GAAG,CAAC,OAAO,GAAG,SAAS;AAAA,MACtE,GAAG;AAAA,MAEH,UAAA;AAAA,QAAA,UAAU,eAAe,UACxB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAI;AAAA,YACJ,SAAS;AAAA,YACT,WAAW,GAAG,QAAQ,YAAY,mBAAmB;AAAA,YACrD,cAAW;AAAA,YACV,GAAG;AAAA,YAEJ,UAAC,oBAAA,QAAA,EAAO,MAAK,aAAY,MAAK,KAAK,CAAA;AAAA,UAAA;AAAA,QACrC;AAAA,QAED,UACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS,SAAS,UAAU;AAAA,YAC5B,WAAW,QAAQ;AAAA,YAElB,UAAA,eAAe,SAAS,cAAc;AAAA,UAAA;AAAA,QACzC;AAAA,QAED,yBACC;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAI;AAAA,YACJ,SAAS;AAAA,YACT,WAAW,GAAG,QAAQ,gBAAgB,uBAAuB;AAAA,YAC7D,SAAS;AAAA,cACP,GAAG;AAAA,cACH,MAAM;AAAA,gBACJ,EAAE,CAAC,QAAQ,SAAS,GAAG,CAAC,OAAO;AAAA;AAAA,gBAC/B,uBAAuB;AAAA,cAAA;AAAA,YAE3B;AAAA,YACC,GAAG;AAAA,YAEH,mBAAS,YAAY;AAAA,UAAA;AAAA,QAAA;AAAA,MACxB;AAAA,IAAA;AAAA,EAEJ;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Header.styles.js","sources":["../../../../src/VerticalNavigation/Header/Header.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigationHeader\",\n {\n root: {\n width: \"100%\",\n display: \"flex\",\n marginTop: \"12px\",\n alignItems: \"center\",\n },\n minimized: {\n justifyContent: \"center\",\n paddingRight: 0,\n },\n collapseButton: {\n marginLeft: \"auto\",\n color: \"inherit\",\n \"&$minimized\": {\n marginLeft: 0,\n },\n },\n backButton: {\n color: \"inherit\",\n },\n title: {\n color: \"inherit\",\n },\n },\n);\n"],"names":[],"mappings":";AAEa,MAAA,EAAE,eAAe,WAAA,IAAe;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,OAAO;AAAA,MACP,SAAS;AAAA,MACT,WAAW;AAAA,MACX,YAAY;AAAA,IACd;AAAA,IACA,WAAW;AAAA,MACT,gBAAgB;AAAA,MAChB,cAAc;AAAA,IAChB;AAAA,IACA,gBAAgB;AAAA,MACd,YAAY;AAAA,MACZ,OAAO;AAAA,MACP,eAAe;AAAA,QACb,YAAY;AAAA,MAAA;AAAA,IAEhB;AAAA,IACA,YAAY;AAAA,MACV,OAAO;AAAA,IACT;AAAA,IACA,OAAO;AAAA,MACL,OAAO;AAAA,IAAA;AAAA,EACT;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Navigation.js","sources":["../../../../src/VerticalNavigation/Navigation/Navigation.tsx"],"sourcesContent":["import { useCallback, useContext, useEffect, useMemo, useState } from \"react\";\nimport {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { useControlled } from \"../../hooks/useControlled\";\nimport { HvBaseProps } from \"../../types/generic\";\nimport { uniqueId } from \"../../utils/helpers\";\nimport { setId } from \"../../utils/setId\";\nimport { NavigationPopupContainer } from \"../NavigationPopup/NavigationPopupContainer\";\nimport {\n HvVerticalNavigationSlider,\n HvVerticalNavigationSliderProps,\n} from \"../NavigationSlider\";\nimport { getParentItemById } from \"../NavigationSlider/utils\";\nimport {\n HvVerticalNavigationTreeView,\n HvVerticalNavigationTreeViewItem,\n NavigationMode,\n} from \"../TreeView\";\nimport {\n NavigationData,\n VerticalNavigationContext,\n} from \"../VerticalNavigationContext\";\nimport { staticClasses, useClasses } from \"./Navigation.styles\";\n\nexport { staticClasses as verticalNavigationTreeClasses };\n\nexport type HvVerticalNavigationTreeClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvVerticalNavigationTreeProps\n extends HvBaseProps<HTMLDivElement, \"onChange\" | \"onToggle\"> {\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvVerticalNavigationTreeClasses;\n /** Modus operandi (role) of the widget instance. */\n mode?: NavigationMode;\n /** Can non-leaf nodes be collapsed / expanded. */\n collapsible?: boolean;\n /** The ID of the selected page. */\n selected?: string;\n /** When uncontrolled, defines the initial selected page ID. */\n defaultSelected?: string;\n /** Callback fired when a navigation item is selected. */\n onChange?: (\n event:\n | React.MouseEvent<HTMLLIElement>\n | React.KeyboardEvent<HTMLUListElement>,\n page: NavigationData,\n ) => void;\n /** Expanded nodes' ids. */\n expanded?: string[];\n /**\n * When uncontrolled, defines the initial expanded nodes' ids.\n *\n * It also supports `true` for starting with all nodes expanded.\n * With `false` all nodes will be collapsed.\n *\n * By default it expands the needed nodes to display the current selection, if any.\n */\n defaultExpanded?: string[] | boolean;\n /** Callback fired when tree items are expanded/collapsed. */\n onToggle?: (\n event: React.KeyboardEvent<HTMLUListElement>,\n nodeIds: string[],\n ) => void;\n /**\n * An array containing the data for each menu item.\n *\n * id - the id to be applied to the root element.\n * label - the label to be rendered on the menu item.\n * data - sub-menu items\n * href - the url used for navigation.\n * target - the behavior when opening an url.\n */\n data?: NavigationData[];\n /** Aria label to apply to the navigate to submenu button on the navigation slider list items. */\n sliderForwardButtonAriaLabel?: string;\n}\n\nconst createListHierarchy = (\n items: NavigationData[],\n id: string | undefined,\n classes?: HvVerticalNavigationTreeClasses,\n mouseEnterHandler?: (event: any, item: any) => void,\n disableTooltip = false,\n) =>\n items.map((item) => {\n const {\n id: itemId,\n label: itemLabel,\n icon,\n data: children,\n selectable,\n disabled,\n href,\n target,\n } = item;\n\n const itemMouseEnterHandler = (event: any) => {\n mouseEnterHandler?.(event, item);\n };\n\n return (\n <HvVerticalNavigationTreeViewItem\n id={setId(id, itemId)}\n className={classes?.listItem}\n href={href}\n target={target}\n key={itemId}\n nodeId={itemId}\n label={itemLabel}\n icon={icon}\n payload={item}\n selectable={selectable}\n disabled={disabled}\n onMouseEnter={itemMouseEnterHandler}\n disableTooltip={disableTooltip}\n >\n {children\n ? createListHierarchy(\n children,\n id,\n classes,\n mouseEnterHandler,\n disableTooltip,\n )\n : undefined}\n </HvVerticalNavigationTreeViewItem>\n );\n });\n\nconst getAllParents = (items: any) => {\n const parents = items.filter(\n (item: any) => item.data != null && item.data.length > 0,\n );\n const childParents = parents.flatMap((item: any) => getAllParents(item.data));\n\n return [...parents, ...childParents];\n};\n\nfunction pathToElement(data: any, targetId: any) {\n const path: string[] = [];\n\n if (data != null && data.length > 0) {\n for (let i = 0; i !== data.length; ++i) {\n const item = data[i];\n if (item.id === targetId) {\n path.push(item.id);\n break;\n }\n\n const subPaths = pathToElement(item.data, targetId);\n if (subPaths.length > 0) {\n path.push(item.id);\n path.push(...subPaths);\n break;\n }\n }\n }\n\n return path;\n}\n\nexport const HvVerticalNavigationTree = (\n props: HvVerticalNavigationTreeProps,\n) => {\n const {\n id,\n className,\n classes: classesProp,\n data,\n mode = \"navigation\",\n collapsible = false,\n expanded: expandedProp,\n defaultExpanded,\n onToggle,\n selected: selectedProp,\n defaultSelected,\n onChange,\n sliderForwardButtonAriaLabel = \"Navigate to submenu\",\n ...others\n } = useDefaultProps(\"HvVerticalNavigationTree\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n const [selected, setSelected] = useControlled(selectedProp, defaultSelected);\n const [expanded, setExpanded] = useControlled(expandedProp, () => {\n if (defaultExpanded === true) {\n // all parent nodes will be expanded by default\n return getAllParents(data).map((item) => item.id);\n }\n\n if (defaultExpanded === false) {\n // all parent nodes will be collapsed by default\n return [];\n }\n\n if (defaultExpanded == null) {\n if (selected != null) {\n // the path to the selected node will be expanded (default behaviour)\n const path = pathToElement(data, selected);\n return path.slice(0, -1);\n }\n\n // nothing is expanded\n return [];\n }\n\n return defaultExpanded;\n });\n\n const {\n isOpen,\n useIcons,\n slider,\n\n parentItem,\n setParentItem,\n withParentData,\n navigateToChildHandler,\n\n setParentData,\n setParentSelected,\n } = useContext(VerticalNavigationContext);\n\n const [navigationPopup, setNavigationPopup] = useState<{\n // This value is needed to guarantee that the NavigationPopup is fully re-rendered with keeping any previous values\n uniqueKey: string;\n anchorEl: HTMLElement | null;\n fixedMode: boolean;\n data: NavigationData[];\n } | null>(null);\n\n const handleChange = useCallback(\n (\n event:\n | React.MouseEvent<HTMLLIElement>\n | React.KeyboardEvent<HTMLUListElement>,\n selectedId: string | string[],\n selectedItem: NavigationData,\n ) => {\n if (useIcons && !isOpen && selectedItem.data) {\n const currentEventTarget = event.currentTarget;\n setNavigationPopup((prevState) => {\n // We want to close the popup in case the clicked element is the same as the previous one\n return prevState?.anchorEl === currentEventTarget\n ? null\n : {\n uniqueKey: uniqueId(),\n anchorEl: currentEventTarget,\n fixedMode: true,\n data: selectedItem.data as NavigationData[],\n };\n });\n\n // We need this stopPropagation or else the Popup will close due to the clickaway being triggered\n event.stopPropagation();\n } else {\n setSelected(selectedId as string);\n setExpanded((prevState) => {\n if (!isOpen) {\n return [...prevState, ...pathToElement(data, selectedId)];\n }\n return [...prevState];\n });\n setNavigationPopup(null);\n onChange?.(event, selectedItem);\n }\n },\n [onChange, setSelected, setExpanded, isOpen, useIcons, data],\n );\n\n const treeViewItemMouseEnterHandler = useCallback(\n (event: any, item: any) => {\n const isCollapsed = useIcons && !isOpen;\n\n if (isCollapsed && item.data && !navigationPopup?.fixedMode) {\n const currentEventTarget = event.currentTarget;\n\n setNavigationPopup?.({\n uniqueKey: uniqueId(),\n anchorEl: currentEventTarget,\n fixedMode: false,\n data: item.data,\n });\n } else if (isCollapsed && !item.data && !navigationPopup?.fixedMode) {\n setNavigationPopup(null);\n }\n },\n [isOpen, useIcons, navigationPopup],\n );\n\n const handleToggle = useCallback(\n (event: React.KeyboardEvent<HTMLUListElement>, newExpanded: string[]) => {\n setExpanded(newExpanded);\n onToggle?.(event, newExpanded);\n },\n [onToggle, setExpanded],\n );\n\n const children = useMemo(\n () =>\n data &&\n createListHierarchy(\n data,\n id,\n classes,\n treeViewItemMouseEnterHandler,\n navigationPopup?.fixedMode,\n ),\n [classes, data, id, navigationPopup, treeViewItemMouseEnterHandler],\n );\n\n useEffect(() => {\n if (!isOpen) {\n setNavigationPopup?.(null);\n }\n }, [isOpen]);\n\n useEffect(() => {\n if (setParentSelected) setParentSelected(selected);\n }, [selected, setSelected, setParentSelected]);\n\n useEffect(() => {\n if (setParentData) setParentData(data);\n }, [data, setParentData]);\n\n useEffect(() => {\n if (\n withParentData &&\n selected &&\n setParentItem &&\n getParentItemById(withParentData, selected)\n ) {\n setParentItem(getParentItemById(withParentData, selected));\n }\n }, [withParentData, selected, setParentItem]);\n\n const navigateToTargetHandler: HvVerticalNavigationSliderProps[\"onNavigateToTarget\"] =\n (event, selectedItem) => handleChange(event, selectedItem.id, selectedItem);\n\n const handleNavigationPopupClose = () => setNavigationPopup(null);\n\n const handleStyledNavMouseLeave = () => {\n if (useIcons && !isOpen && !navigationPopup?.fixedMode) {\n setNavigationPopup(null);\n }\n };\n\n const handleNavigationPopupMouseLeave = () => {\n if (!navigationPopup?.fixedMode) {\n handleNavigationPopupClose();\n }\n };\n\n const handleNavigationPopupChange: HvVerticalNavigationTreeProps[\"onChange\"] =\n (event, selectedItem) => {\n handleChange(event, selectedItem.id, selectedItem);\n };\n\n return (\n <nav\n id={id}\n className={cx(\n classes.root,\n { [classes.collapsed]: !isOpen && !useIcons },\n className,\n )}\n onMouseLeave={handleStyledNavMouseLeave}\n {...others}\n >\n {slider ? (\n <HvVerticalNavigationSlider\n data={parentItem.data || withParentData}\n selected={selected}\n onNavigateToTarget={navigateToTargetHandler}\n onNavigateToChild={navigateToChildHandler}\n forwardButtonAriaLabel={sliderForwardButtonAriaLabel}\n />\n ) : (\n <HvVerticalNavigationTreeView\n id={setId(id, \"tree\")}\n className={classes.list}\n selectable\n mode={mode}\n collapsible={collapsible}\n selected={selected}\n onChange={handleChange}\n expanded={expanded}\n onToggle={handleToggle}\n >\n {useIcons && !isOpen && navigationPopup && (\n <NavigationPopupContainer\n anchorEl={navigationPopup.anchorEl}\n onClose={handleNavigationPopupClose}\n key={navigationPopup.uniqueKey}\n className={classes.navigationPopup}\n >\n <HvVerticalNavigationTree\n className={classes.popup}\n id={setId(id, \"navigation-popup-tree\")}\n collapsible\n defaultExpanded\n selected={selected}\n data={navigationPopup.data}\n onChange={handleNavigationPopupChange}\n onMouseLeave={handleNavigationPopupMouseLeave}\n />\n </NavigationPopupContainer>\n )}\n {children}\n </HvVerticalNavigationTreeView>\n )}\n </nav>\n );\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Navigation.styles.js","sources":["../../../../src/VerticalNavigation/Navigation/Navigation.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigationTree\",\n {\n root: {\n display: \"block\",\n overflowY: \"auto\",\n },\n list: {},\n listItem: {},\n collapsed: {\n display: \"none\",\n },\n popup: {\n boxShadow: \"inset 5px 0 5px -3px rgb(65 65 65 / 12%)\",\n },\n navigationPopup: {\n boxShadow: \"inset 5px 0 5px -3px rgb(65 65 65 / 12%)\",\n },\n },\n);\n"],"names":[],"mappings":";AAEa,MAAA,EAAE,eAAe,WAAA,IAAe;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,WAAW;AAAA,IACb;AAAA,IACA,MAAM,CAAC;AAAA,IACP,UAAU,CAAC;AAAA,IACX,WAAW;AAAA,MACT,SAAS;AAAA,IACX;AAAA,IACA,OAAO;AAAA,MACL,WAAW;AAAA,IACb;AAAA,IACA,iBAAiB;AAAA,MACf,WAAW;AAAA,IAAA;AAAA,EACb;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationPopup.styles.js","sources":["../../../../src/VerticalNavigation/NavigationPopup/NavigationPopup.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigationPopup\",\n {\n popup: {},\n container: {\n marginLeft: theme.spacing(\"xs\"),\n },\n popper: {\n zIndex: theme.zIndices.popover,\n },\n },\n);\n"],"names":[],"mappings":";;AAGa,MAAA,EAAE,eAAe,WAAA,IAAe;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,OAAO,CAAC;AAAA,IACR,WAAW;AAAA,MACT,YAAY,MAAM,QAAQ,IAAI;AAAA,IAChC;AAAA,IACA,QAAQ;AAAA,MACN,QAAQ,MAAM,SAAS;AAAA,IAAA;AAAA,EACzB;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationPopupContainer.js","sources":["../../../../src/VerticalNavigation/NavigationPopup/NavigationPopupContainer.tsx"],"sourcesContent":["import { Popper } from \"@mui/base/Popper\";\nimport ClickAwayListener from \"@mui/material/ClickAwayListener\";\nimport { useTheme, type ExtractNames } from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvBaseProps } from \"../../types/generic\";\nimport { getContainerElement } from \"../../utils/document\";\nimport { HvVerticalNavigation } from \"../VerticalNavigation\";\nimport { staticClasses, useClasses } from \"./NavigationPopup.styles\";\n\nexport { staticClasses as verticalNavigationPopupClasses };\n\nexport type HvVerticalNavigationPopupClasses = ExtractNames<typeof useClasses>;\n\nexport interface NavigationPopupContainerProps extends HvBaseProps {\n anchorEl?: HTMLElement | null;\n onClose?: () => void;\n classes?: HvVerticalNavigationPopupClasses;\n}\n\nexport const NavigationPopupContainer = ({\n anchorEl,\n onClose,\n children,\n classes: classesProp,\n className,\n ...others\n}: NavigationPopupContainerProps) => {\n const { classes, cx } = useClasses(classesProp);\n\n const { rootId } = useTheme();\n\n const handleClickAway = () => onClose?.();\n\n return (\n <Popper\n open\n anchorEl={anchorEl}\n placement=\"right-start\"\n container={getContainerElement(rootId)}\n className={cx(classes.popper, classes.popup, className)}\n {...others}\n >\n <ClickAwayListener onClickAway={handleClickAway}>\n <div className={classes.container}>\n <HvVerticalNavigation open useIcons>\n {children}\n </HvVerticalNavigation>\n </div>\n </ClickAwayListener>\n </Popper>\n );\n};\n"],"names":[],"mappings":";;;;;;;;AAmBO,MAAM,2BAA2B,CAAC;AAAA,EACvC;AAAA,EACA;AAAA,EACA;AAAA,EACA,SAAS;AAAA,EACT;AAAA,EACA,GAAG;AACL,MAAqC;AACnC,QAAM,EAAE,SAAS,OAAO,WAAW,WAAW;AAExC,QAAA,EAAE,OAAO,IAAI,SAAS;AAEtB,QAAA,kBAAkB,MAAM,UAAU;AAGtC,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAI;AAAA,MACJ;AAAA,MACA,WAAU;AAAA,MACV,WAAW,oBAAoB,MAAM;AAAA,MACrC,WAAW,GAAG,QAAQ,QAAQ,QAAQ,OAAO,SAAS;AAAA,MACrD,GAAG;AAAA,MAEJ,8BAAC,mBAAkB,EAAA,aAAa,iBAC9B,UAAA,oBAAC,SAAI,WAAW,QAAQ,WACtB,UAAA,oBAAC,wBAAqB,MAAI,MAAC,UAAQ,MAChC,UACH,GACF,EACF,CAAA;AAAA,IAAA;AAAA,EACF;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationSlider.js","sources":["../../../../src/VerticalNavigation/NavigationSlider/NavigationSlider.tsx"],"sourcesContent":["import {\n useDefaultProps,\n type ExtractNames,\n} from \"@hitachivantara/uikit-react-utils\";\n\nimport { HvButton } from \"../../Button\";\nimport { HvIcon } from \"../../icons\";\nimport {\n HvListContainer,\n HvListContainerProps,\n HvListItem,\n} from \"../../ListContainer\";\nimport { HvOverflowTooltip } from \"../../OverflowTooltip\";\nimport { NavigationData } from \"../VerticalNavigationContext\";\nimport { staticClasses, useClasses } from \"./NavigationSlider.styles\";\n\nexport { staticClasses as verticalNavigationSliderClasses };\n\nexport type HvVerticalNavigationSliderClasses = ExtractNames<typeof useClasses>;\n\nexport interface HvVerticalNavigationSliderProps\n extends Omit<HvListContainerProps, \"classes\"> {\n /** A Jss Object used to override or extend the styles applied. */\n classes?: HvVerticalNavigationSliderClasses;\n /**\n * An array containing the data for each menu item.\n *\n * id - the id to be applied to the root element.\n * label - the label to be rendered on the menu item.\n * icon - the icon react element\n * data - sub-menu items\n * href - the url used for navigation.\n * target - the behavior when opening an url.\n */\n data?: NavigationData[];\n /** The selected item id. */\n selected?: string;\n /** Triggered when the item is clicked. */\n onNavigateToTarget?: (\n event: React.MouseEvent<HTMLLIElement>,\n item: NavigationData,\n ) => void;\n /** Triggered when the navigate to child button is clicked. */\n onNavigateToChild?: (\n event: React.MouseEvent<HTMLButtonElement>,\n item: NavigationData,\n ) => void;\n /** Aria label to apply to the navigate to submenu button on the list items. */\n forwardButtonAriaLabel?: string;\n}\n\nexport const HvVerticalNavigationSlider = (\n props: HvVerticalNavigationSliderProps,\n) => {\n const {\n className,\n classes: classesProp,\n data,\n selected,\n onNavigateToTarget,\n onNavigateToChild,\n forwardButtonAriaLabel = \"Navigate to submenu\",\n ...others\n } = useDefaultProps(\"HvVerticalNavigationSlider\", props);\n\n const { classes, cx } = useClasses(classesProp);\n\n return (\n <HvListContainer\n interactive\n className={cx(classes.listContainer, className)}\n {...others}\n >\n {data?.map((item) => (\n <HvListItem\n key={item.id}\n classes={{\n root: classes.root,\n selected: classes.listItemSelected,\n focus: classes.listItemFocus,\n disabled: classes.listItemDisabled,\n }}\n onClick={(event) => {\n onNavigateToTarget?.(event, item);\n }}\n aria-label={item.label}\n aria-current={\n selected === item.id ? (item.href ? \"page\" : true) : undefined\n }\n selected={selected === item.id}\n startAdornment={item.icon ? <div>{item.icon}</div> : undefined}\n endAdornment={\n item.data && item.data.length > 0 ? (\n <HvButton\n icon\n onClick={(event) => {\n onNavigateToChild?.(event, item);\n }}\n className={classes.forwardButton}\n aria-label={forwardButtonAriaLabel}\n >\n <HvIcon name=\"CaretRight\" size=\"xs\" />\n </HvButton>\n ) : undefined\n }\n >\n <HvOverflowTooltip data={item.label} />\n </HvListItem>\n ))}\n </HvListContainer>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;AAmDa,MAAA,6BAA6B,CACxC,UACG;AACG,QAAA;AAAA,IACJ;AAAA,IACA,SAAS;AAAA,IACT;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA,yBAAyB;AAAA,IACzB,GAAG;AAAA,EAAA,IACD,gBAAgB,8BAA8B,KAAK;AAEvD,QAAM,EAAE,SAAS,OAAO,WAAW,WAAW;AAG5C,SAAA;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,aAAW;AAAA,MACX,WAAW,GAAG,QAAQ,eAAe,SAAS;AAAA,MAC7C,GAAG;AAAA,MAEH,UAAA,MAAM,IAAI,CAAC,SACV;AAAA,QAAC;AAAA,QAAA;AAAA,UAEC,SAAS;AAAA,YACP,MAAM,QAAQ;AAAA,YACd,UAAU,QAAQ;AAAA,YAClB,OAAO,QAAQ;AAAA,YACf,UAAU,QAAQ;AAAA,UACpB;AAAA,UACA,SAAS,CAAC,UAAU;AAClB,iCAAqB,OAAO,IAAI;AAAA,UAClC;AAAA,UACA,cAAY,KAAK;AAAA,UACjB,gBACE,aAAa,KAAK,KAAM,KAAK,OAAO,SAAS,OAAQ;AAAA,UAEvD,UAAU,aAAa,KAAK;AAAA,UAC5B,gBAAgB,KAAK,2BAAQ,OAAK,EAAA,UAAA,KAAK,KAAK,CAAA,IAAS;AAAA,UACrD,cACE,KAAK,QAAQ,KAAK,KAAK,SAAS,IAC9B;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAI;AAAA,cACJ,SAAS,CAAC,UAAU;AAClB,oCAAoB,OAAO,IAAI;AAAA,cACjC;AAAA,cACA,WAAW,QAAQ;AAAA,cACnB,cAAY;AAAA,cAEZ,UAAC,oBAAA,QAAA,EAAO,MAAK,cAAa,MAAK,KAAK,CAAA;AAAA,YAAA;AAAA,UAAA,IAEpC;AAAA,UAGN,UAAC,oBAAA,mBAAA,EAAkB,MAAM,KAAK,MAAO,CAAA;AAAA,QAAA;AAAA,QA/BhC,KAAK;AAAA,MAiCb,CAAA;AAAA,IAAA;AAAA,EACH;AAEJ;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NavigationSlider.styles.js","sources":["../../../../src/VerticalNavigation/NavigationSlider/NavigationSlider.styles.tsx"],"sourcesContent":["import { createClasses } from \"@hitachivantara/uikit-react-utils\";\nimport { theme } from \"@hitachivantara/uikit-styles\";\n\nexport const { staticClasses, useClasses } = createClasses(\n \"HvVerticalNavigationSlider\",\n {\n root: {\n display: \"flex\",\n alignItems: \"center\",\n borderLeft: `4px solid transparent`,\n minHeight: \"48px\",\n color: \"inherit\",\n marginBottom: \"8px\",\n \"& > button\": {\n marginLeft: \"auto\",\n },\n },\n listItemSelected: {\n backgroundColor: theme.colors.bgPageSecondary,\n borderLeft: `4px solid ${theme.colors.text}`,\n },\n listItemFocus: {\n backgroundColor: theme.colors.bgPageSecondary,\n },\n forwardButton: {\n color: \"inherit\",\n },\n listContainer: {},\n listItemDisabled: {},\n },\n);\n"],"names":[],"mappings":";;AAGa,MAAA,EAAE,eAAe,WAAA,IAAe;AAAA,EAC3C;AAAA,EACA;AAAA,IACE,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,YAAY;AAAA,MACZ,YAAY;AAAA,MACZ,WAAW;AAAA,MACX,OAAO;AAAA,MACP,cAAc;AAAA,MACd,cAAc;AAAA,QACZ,YAAY;AAAA,MAAA;AAAA,IAEhB;AAAA,IACA,kBAAkB;AAAA,MAChB,iBAAiB,MAAM,OAAO;AAAA,MAC9B,YAAY,aAAa,MAAM,OAAO,IAAI;AAAA,IAC5C;AAAA,IACA,eAAe;AAAA,MACb,iBAAiB,MAAM,OAAO;AAAA,IAChC;AAAA,IACA,eAAe;AAAA,MACb,OAAO;AAAA,IACT;AAAA,IACA,eAAe,CAAC;AAAA,IAChB,kBAAkB,CAAA;AAAA,EAAC;AAEvB;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../src/VerticalNavigation/NavigationSlider/utils.ts"],"sourcesContent":["/**\n * Recursively searches in a collection the first element where the property matches the specified value.\n *\n * @param collection - Collection where the search will be performed\n * @param childrenPropName - The children property name where the recursive search will be performed\n * @param propName - The name of the property to be used on the search\n * @param propValue - The value of the property to be used on the search\n * @returns The element that matches the requirement or null if none is found\n */\nconst searchInCollection = (\n collection: any,\n childrenPropName: any,\n propName: any,\n propValue: any,\n): any => {\n if (collection[propName] === propValue) {\n return collection;\n }\n\n const items = collection[childrenPropName] || collection;\n\n let foundItem = null;\n for (let index = 0; foundItem === null && index < items.length; index += 1) {\n foundItem = searchInCollection(\n items[index],\n childrenPropName,\n propName,\n propValue,\n );\n }\n return foundItem;\n};\n\n/**\n * Returns the navigation item with the specified id.\n *\n * @param navigationItems - The collection of navigation items.\n * @param navigationItemId - The id to be used on the search\n * @returns The navigation item with the specified id.\n */\nconst getNavigationItemById = (navigationItems: any, navigationItemId: any) => {\n return searchInCollection(navigationItems, \"data\", \"id\", navigationItemId);\n};\n\n/**\n * Returns the parent item for the received item id.\n *\n * @param navigationItems - The collection of navigation items.\n * @param navigationItemId - The id to be used on the search\n * @returns The parent navigation item.\n */\nconst getParentItemById = (navigationItems: any, navigationItemId: any) => {\n const parentId = getNavigationItemById(\n navigationItems,\n navigationItemId,\n )?.parent;\n return getNavigationItemById(navigationItems, parentId);\n};\n\n/**\n * Fills the data structure with the parent id on each one of the nodes.\n *\n * @param navigationItems - The collection of navigation items.\n * @param parentItemId - The parent id to be added.\n * @returns The structure now filled with the parent id.\n */\nconst fillDataWithParentId = (navigationItems: any, parentItemId?: any) => {\n return navigationItems.map((item: any) => {\n if (item?.data?.length > 0) {\n return {\n ...item,\n parent: parentItemId,\n data: fillDataWithParentId(item.data, item.id),\n };\n }\n return { ...item, parent: parentItemId };\n });\n};\n\nexport { getNavigationItemById, getParentItemById, fillDataWithParentId };\n"],"names":[],"mappings":"AASA,MAAM,qBAAqB,CACzB,YACA,kBACA,UACA,cACQ;AACJ,MAAA,WAAW,QAAQ,MAAM,WAAW;AAC/B,WAAA;AAAA,EAAA;AAGH,QAAA,QAAQ,WAAW,gBAAgB,KAAK;AAE9C,MAAI,YAAY;AACP,WAAA,QAAQ,GAAG,cAAc,QAAQ,QAAQ,MAAM,QAAQ,SAAS,GAAG;AAC9D,gBAAA;AAAA,MACV,MAAM,KAAK;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EAAA;AAEK,SAAA;AACT;AASM,MAAA,wBAAwB,CAAC,iBAAsB,qBAA0B;AAC7E,SAAO,mBAAmB,iBAAiB,QAAQ,MAAM,gBAAgB;AAC3E;AASM,MAAA,oBAAoB,CAAC,iBAAsB,qBAA0B;AACzE,QAAM,WAAW;AAAA,IACf;AAAA,IACA;AAAA,EAAA,GACC;AACI,SAAA,sBAAsB,iBAAiB,QAAQ;AACxD;AASM,MAAA,uBAAuB,CAAC,iBAAsB,iBAAuB;AAClE,SAAA,gBAAgB,IAAI,CAAC,SAAc;AACpC,QAAA,MAAM,MAAM,SAAS,GAAG;AACnB,aAAA;AAAA,QACL,GAAG;AAAA,QACH,QAAQ;AAAA,QACR,MAAM,qBAAqB,KAAK,MAAM,KAAK,EAAE;AAAA,MAC/C;AAAA,IAAA;AAEF,WAAO,EAAE,GAAG,MAAM,QAAQ,aAAa;AAAA,EAAA,CACxC;AACH;"}
|