@react-md/core 1.0.0-next.4 → 1.0.0-next.5
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/.turbo/turbo-build.log +5 -5
- package/CHANGELOG.md +6 -0
- package/dist/CoreProviders.js.map +1 -0
- package/dist/NoSsr.js.map +1 -0
- package/dist/SsrProvider.js.map +1 -0
- package/dist/app-bar/AppBar.js.map +1 -0
- package/dist/app-bar/AppBarTitle.js.map +1 -0
- package/dist/avatar/Avatar.js.map +1 -0
- package/dist/avatar/styles.js.map +1 -0
- package/dist/badge/Badge.js.map +1 -0
- package/dist/box/Box.js.map +1 -0
- package/dist/box/styles.js.map +1 -0
- package/dist/button/AsyncButton.js.map +1 -0
- package/dist/button/Button.js.map +1 -0
- package/dist/button/ButtonUnstyled.js.map +1 -0
- package/dist/button/FloatingActionButton.js.map +1 -0
- package/dist/button/TooltippedButton.js.map +1 -0
- package/dist/button/buttonStyles.js.map +1 -0
- package/dist/button/buttonUnstyledStyles.js.map +1 -0
- package/dist/card/Card.js.map +1 -0
- package/dist/card/CardContent.js.map +1 -0
- package/dist/card/CardFooter.js.map +1 -0
- package/dist/card/CardHeader.js.map +1 -0
- package/dist/card/CardSubtitle.js.map +1 -0
- package/dist/card/CardTitle.js.map +1 -0
- package/dist/card/ClickableCard.js.map +1 -0
- package/dist/card/styles.js.map +1 -0
- package/dist/chip/Chip.js.map +1 -0
- package/dist/chip/styles.js.map +1 -0
- package/dist/cssUtils.js.map +1 -0
- package/dist/delegateEvent.js.map +1 -0
- package/dist/dialog/Dialog.js.map +1 -0
- package/dist/dialog/DialogContainer.js.map +1 -0
- package/dist/dialog/DialogContent.js.map +1 -0
- package/dist/dialog/DialogFooter.js.map +1 -0
- package/dist/dialog/DialogHeader.js.map +1 -0
- package/dist/dialog/DialogTitle.js.map +1 -0
- package/dist/dialog/FixedDialog.js.map +1 -0
- package/dist/dialog/NestedDialogProvider.js.map +1 -0
- package/dist/dialog/styles.js.map +1 -0
- package/dist/divider/Divider.js.map +1 -0
- package/dist/divider/styles.js.map +1 -0
- package/dist/draggable/useDraggable.js.map +1 -0
- package/dist/draggable/utils.js.map +1 -0
- package/dist/expansion-panel/ExpansionList.js.map +1 -0
- package/dist/expansion-panel/ExpansionPanel.js.map +1 -0
- package/dist/expansion-panel/ExpansionPanelHeader.js.map +1 -0
- package/dist/expansion-panel/useExpansionList.js.map +1 -0
- package/dist/expansion-panel/useExpansionPanels.js.map +1 -0
- package/dist/focus/useFocusContainer.js.map +1 -0
- package/dist/focus/utils.js.map +1 -0
- package/dist/form/Checkbox.js.map +1 -0
- package/dist/form/Fieldset.js.map +1 -0
- package/dist/form/FileInput.js.map +1 -0
- package/dist/form/Form.js.map +1 -0
- package/dist/form/FormMessage.js.map +1 -0
- package/dist/form/FormMessageContainer.js.map +1 -0
- package/dist/form/FormMessageCounter.js.map +1 -0
- package/dist/form/InputToggle.js.map +1 -0
- package/dist/form/InputToggleIcon.js.map +1 -0
- package/dist/form/Label.js.map +1 -0
- package/dist/form/Legend.js.map +1 -0
- package/dist/form/MenuItemCheckbox.js.map +1 -0
- package/dist/form/MenuItemFileInput.js.map +1 -0
- package/dist/form/MenuItemInputToggle.js.map +1 -0
- package/dist/form/MenuItemRadio.js.map +1 -0
- package/dist/form/MenuItemSwitch.js.map +1 -0
- package/dist/form/MenuItemTextField.js.map +1 -0
- package/dist/form/NativeSelect.js.map +1 -0
- package/dist/form/OptGroup.js.map +1 -0
- package/dist/form/Option.js.map +1 -0
- package/dist/form/Password.js.map +1 -0
- package/dist/form/Radio.js.map +1 -0
- package/dist/form/Select.js.map +1 -0
- package/dist/form/SelectValue.js.map +1 -0
- package/dist/form/Slider.js.map +1 -0
- package/dist/form/SliderContainer.js.map +1 -0
- package/dist/form/SliderMark.js.map +1 -0
- package/dist/form/SliderMarkLabel.js.map +1 -0
- package/dist/form/SliderThumb.js.map +1 -0
- package/dist/form/SliderTrack.js.map +1 -0
- package/dist/form/SliderValueMarks.js.map +1 -0
- package/dist/form/SliderValueTooltip.js.map +1 -0
- package/dist/form/Switch.js.map +1 -0
- package/dist/form/SwitchTrack.js.map +1 -0
- package/dist/form/TextArea.js.map +1 -0
- package/dist/form/TextField.js.map +1 -0
- package/dist/form/TextFieldAddon.js.map +1 -0
- package/dist/form/TextFieldContainer.js.map +1 -0
- package/dist/form/TextFieldContainerStyles.js.map +1 -0
- package/dist/form/fileUtils.js.map +1 -0
- package/dist/form/formConfig.js.map +1 -0
- package/dist/form/formMessageStyles.js.map +1 -0
- package/dist/form/inputToggleStyles.js.map +1 -0
- package/dist/form/nativeSelectStyles.js.map +1 -0
- package/dist/form/optionStyles.js.map +1 -0
- package/dist/form/passwordStyles.js.map +1 -0
- package/dist/form/selectStyles.js.map +1 -0
- package/dist/form/selectUtils.js.map +1 -0
- package/dist/form/sliderUtils.js.map +1 -0
- package/dist/form/switchStyles.js.map +1 -0
- package/dist/form/textAreaStyles.js.map +1 -0
- package/dist/form/textFieldStyles.js.map +1 -0
- package/dist/form/types.js.map +1 -0
- package/dist/form/useCheckboxGroup.js.map +1 -0
- package/dist/form/useFileUpload.js.map +1 -0
- package/dist/form/useListboxProvider.js.map +1 -0
- package/dist/form/useNumberField.js.map +1 -0
- package/dist/form/useRadioGroup.js.map +1 -0
- package/dist/form/useRangeSlider.js.map +1 -0
- package/dist/form/useResizingTextArea.js.map +1 -0
- package/dist/form/useSlider.js.map +1 -0
- package/dist/form/useTextField.js.map +1 -0
- package/dist/form/utils.js.map +1 -0
- package/dist/form/validation.js.map +1 -0
- package/dist/hoverMode/useHoverMode.js.map +1 -0
- package/dist/hoverMode/useHoverModeProvider.js.map +1 -0
- package/dist/icon/FontIcon.js.map +1 -0
- package/dist/icon/IconRotator.js.map +1 -0
- package/dist/icon/MaterialIcon.js.map +1 -0
- package/dist/icon/MaterialSymbol.js.map +1 -0
- package/dist/icon/SVGIcon.js.map +1 -0
- package/dist/icon/TextIconSpacing.js.map +1 -0
- package/dist/icon/iconConfig.js.map +1 -0
- package/dist/icon/material.js.map +1 -0
- package/dist/icon/materialConfig.js.map +1 -0
- package/dist/icon/styles.js.map +1 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction/Ripple.js.map +1 -0
- package/dist/interaction/RippleContainer.js.map +1 -0
- package/dist/interaction/UserInteractionModeProvider.js.map +1 -0
- package/dist/interaction/config.js.map +1 -0
- package/dist/interaction/types.js.map +1 -0
- package/dist/interaction/useElementInteraction.js.map +1 -0
- package/dist/interaction/useHigherContrastChildren.js.map +1 -0
- package/dist/interaction/utils.js.map +1 -0
- package/dist/layout/LayoutAppBar.js.map +1 -0
- package/dist/layout/LayoutNav.js.map +1 -0
- package/dist/layout/LayoutWindowSplitter.js.map +1 -0
- package/dist/layout/Main.js.map +1 -0
- package/dist/layout/layoutNavStyles.js.map +1 -0
- package/dist/layout/layoutWindowSplitterStyles.js.map +1 -0
- package/dist/layout/mainStyles.js.map +1 -0
- package/dist/layout/useExpandableLayout.js.map +1 -0
- package/dist/layout/useHorizontalLayoutTransition.js.map +1 -0
- package/dist/layout/useLayoutAppBarHeight.js.map +1 -0
- package/dist/layout/useLayoutTree.js.map +1 -0
- package/dist/layout/useLayoutWindowSplitter.js.map +1 -0
- package/dist/layout/useMainTabIndex.js.map +1 -0
- package/dist/layout/useResizableLayout.js.map +1 -0
- package/dist/layout/useTemporaryLayout.js.map +1 -0
- package/dist/link/Link.js.map +1 -0
- package/dist/link/SkipToMainContent.js.map +1 -0
- package/dist/link/styles.js.map +1 -0
- package/dist/list/List.js.map +1 -0
- package/dist/list/ListItem.js.map +1 -0
- package/dist/list/ListItemAddon.js.map +1 -0
- package/dist/list/ListItemChildren.js.map +1 -0
- package/dist/list/ListItemLink.js.map +1 -0
- package/dist/list/ListItemText.js.map +1 -0
- package/dist/list/ListSubheader.js.map +1 -0
- package/dist/list/getListItemHeight.js.map +1 -0
- package/dist/list/listItemStyles.js.map +1 -0
- package/dist/list/types.js.map +1 -0
- package/dist/media-queries/AppSizeProvider.js.map +1 -0
- package/dist/media-queries/appSize.js.map +1 -0
- package/dist/media-queries/useMediaQuery.js.map +1 -0
- package/dist/menu/DropdownMenu.js.map +1 -0
- package/dist/menu/Menu.js.map +1 -0
- package/dist/menu/MenuBar.js.map +1 -0
- package/dist/menu/MenuButton.js.map +1 -0
- package/dist/menu/MenuConfigurationProvider.js.map +1 -0
- package/dist/menu/MenuItem.js.map +1 -0
- package/dist/menu/MenuItemButton.js.map +1 -0
- package/dist/menu/MenuItemGroup.js.map +1 -0
- package/dist/menu/MenuItemSeparator.js.map +1 -0
- package/dist/menu/MenuSheet.js.map +1 -0
- package/dist/menu/MenuVisibilityProvider.js.map +1 -0
- package/dist/menu/MenuWidget.js.map +1 -0
- package/dist/menu/MenuWidgetKeyboardProvider.js.map +1 -0
- package/dist/menu/useContextMenu.js.map +1 -0
- package/dist/menu/useMenuBarProvider.js.map +1 -0
- package/dist/menu/utils.js.map +1 -0
- package/dist/movement/constants.js.map +1 -0
- package/dist/movement/findMatchIndex.js.map +1 -0
- package/dist/movement/types.js.map +1 -0
- package/dist/movement/useKeyboardMovementProvider.js.map +1 -0
- package/dist/movement/utils.js.map +1 -0
- package/dist/overlay/Overlay.js.map +1 -0
- package/dist/overlay/overlayStyles.js.map +1 -0
- package/dist/portal/Portal.js.map +1 -0
- package/dist/portal/PortalContainerProvider.js.map +1 -0
- package/dist/positioning/constants.js.map +1 -0
- package/dist/positioning/createHorizontalPosition.js.map +1 -0
- package/dist/positioning/createVerticalPosition.js.map +1 -0
- package/dist/positioning/getFixedPosition.js.map +1 -0
- package/dist/positioning/types.js.map +1 -0
- package/dist/positioning/useFixedPositioning.js.map +1 -0
- package/dist/positioning/utils.js.map +1 -0
- package/dist/progress/CircularProgress.js.map +1 -0
- package/dist/progress/LinearProgress.js.map +1 -0
- package/dist/progress/getProgressA11y.js.map +1 -0
- package/dist/progress/types.js.map +1 -0
- package/dist/responsive-item/ResponsiveItemContainer.js.map +1 -0
- package/dist/responsive-item/ResponsiveItemOverlay.js.map +1 -0
- package/dist/responsive-item/styles.js.map +1 -0
- package/dist/scroll/ScrollLock.js.map +1 -0
- package/dist/scroll/getScrollbarWidth.js.map +1 -0
- package/dist/scroll/useScrollLock.js.map +1 -0
- package/dist/segmented-button/SegmentedButton.js.map +1 -0
- package/dist/segmented-button/SegmentedButtonContainer.js.map +1 -0
- package/dist/segmented-button/segmentedButtonContainerStyles.js.map +1 -0
- package/dist/segmented-button/segmentedButtonStyles.js.map +1 -0
- package/dist/sheet/Sheet.js.map +1 -0
- package/dist/sheet/styles.js.map +1 -0
- package/dist/snackbar/DefaultToastRenderer.js.map +1 -0
- package/dist/snackbar/Snackbar.js.map +1 -0
- package/dist/snackbar/Toast.js.map +1 -0
- package/dist/snackbar/ToastActionButton.js.map +1 -0
- package/dist/snackbar/ToastCloseButton.js.map +1 -0
- package/dist/snackbar/ToastContent.js.map +1 -0
- package/dist/snackbar/ToastManager.js.map +1 -0
- package/dist/snackbar/ToastManagerProvider.js.map +1 -0
- package/dist/snackbar/snackbarStyles.js.map +1 -0
- package/dist/snackbar/toastContentStyles.js.map +1 -0
- package/dist/snackbar/toastStyles.js.map +1 -0
- package/dist/snackbar/useCurrentToastActions.js.map +1 -0
- package/dist/suspense/CircularProgressSuspense.js.map +1 -0
- package/dist/suspense/NullSuspense.js.map +1 -0
- package/dist/table/Table.js.map +1 -0
- package/dist/table/TableBody.js.map +1 -0
- package/dist/table/TableCell.js.map +1 -0
- package/dist/table/TableCellContent.js.map +1 -0
- package/dist/table/TableCheckbox.js.map +1 -0
- package/dist/table/TableConfigurationProvider.js.map +1 -0
- package/dist/table/TableContainer.js.map +1 -0
- package/dist/table/TableContainerProvider.js.map +1 -0
- package/dist/table/TableFooter.js.map +1 -0
- package/dist/table/TableHeader.js.map +1 -0
- package/dist/table/TableRadio.js.map +1 -0
- package/dist/table/TableRow.js.map +1 -0
- package/dist/table/tableCellStyles.js.map +1 -0
- package/dist/table/tableContainerStyles.js.map +1 -0
- package/dist/table/tableFooterStyles.js.map +1 -0
- package/dist/table/tableHeaderStyles.js.map +1 -0
- package/dist/table/tableRowStyles.js.map +1 -0
- package/dist/table/tableStyles.js.map +1 -0
- package/dist/table/types.js.map +1 -0
- package/dist/tabs/Tab.js.map +1 -0
- package/dist/tabs/TabList.js.map +1 -0
- package/dist/tabs/TabListScrollButton.js.map +1 -0
- package/dist/tabs/tabIndicatorStyles.js.map +1 -0
- package/dist/tabs/tabListScrollButtonStyles.js.map +1 -0
- package/dist/tabs/tabListStyles.js.map +1 -0
- package/dist/tabs/tabStyles.js.map +1 -0
- package/dist/tabs/useTabList.js.map +1 -0
- package/dist/tabs/useTabs.js.map +1 -0
- package/dist/tabs/utils.js.map +1 -0
- package/dist/test-utils/IntersectionObserver.js.map +1 -0
- package/dist/test-utils/ResizeObserver.js.map +1 -0
- package/dist/test-utils/data-testid.js.map +1 -0
- package/dist/test-utils/index.js.map +1 -0
- package/dist/test-utils/jest-setup.js.map +1 -0
- package/dist/test-utils/matchMedia.js.map +1 -0
- package/dist/test-utils/polyfills/IntersectionObserver.js.map +1 -0
- package/dist/test-utils/polyfills/ResizeObserver.js.map +1 -0
- package/dist/test-utils/polyfills/index.js.map +1 -0
- package/dist/test-utils/polyfills/matchMedia.js.map +1 -0
- package/dist/test-utils/polyfills/offsetParent.js.map +1 -0
- package/dist/test-utils/polyfills/scrollIntoView.js.map +1 -0
- package/dist/test-utils/render.js.map +1 -0
- package/dist/test-utils/timers.js.map +1 -0
- package/dist/theme/LocalStorageColorSchemeProvider.js.map +1 -0
- package/dist/theme/ThemeProvider.js.map +1 -0
- package/dist/theme/colors.js.map +1 -0
- package/dist/theme/cssVars.js.map +1 -0
- package/dist/theme/types.js.map +1 -0
- package/dist/theme/useCSSVariables.js.map +1 -0
- package/dist/theme/useColorScheme.js.map +1 -0
- package/dist/theme/useColorSchemeMetaTag.js.map +1 -0
- package/dist/theme/useColorSchemeProvider.js.map +1 -0
- package/dist/theme/usePrefersColorScheme.js.map +1 -0
- package/dist/theme/utils.js.map +1 -0
- package/dist/tooltip/Tooltip.js.map +1 -0
- package/dist/tooltip/TooltipHoverModeProvider.js.map +1 -0
- package/dist/tooltip/constants.js.map +1 -0
- package/dist/tooltip/tooltipStyles.js.map +1 -0
- package/dist/tooltip/useTooltip.js.map +1 -0
- package/dist/tooltip/useTooltipPosition.js.map +1 -0
- package/dist/tooltip/utils.js.map +1 -0
- package/dist/transition/CSSTransition.js.map +1 -0
- package/dist/transition/Collapse.js.map +1 -0
- package/dist/transition/CrossFade.js.map +1 -0
- package/dist/transition/ScaleTransition.js.map +1 -0
- package/dist/transition/SkeletonPlaceholder.js.map +1 -0
- package/dist/transition/Slide.js.map +1 -0
- package/dist/transition/SlideContainer.js.map +1 -0
- package/dist/transition/collapseStyles.js.map +1 -0
- package/dist/transition/config.js.map +1 -0
- package/dist/transition/maxWidthTransition.js.map +1 -0
- package/dist/transition/skeletonPlaceholderUtils.js.map +1 -0
- package/dist/transition/types.js.map +1 -0
- package/dist/transition/useCSSTransition.js.map +1 -0
- package/dist/transition/useCarousel.js.map +1 -0
- package/dist/transition/useCollapseTransition.js.map +1 -0
- package/dist/transition/useCrossFadeTransition.js.map +1 -0
- package/dist/transition/useMaxWidthTransition.js.map +1 -0
- package/dist/transition/useScaleTransition.js.map +1 -0
- package/dist/transition/useSkeletonPlaceholder.js.map +1 -0
- package/dist/transition/useSlideTransition.js.map +1 -0
- package/dist/transition/useTransition.js.map +1 -0
- package/dist/transition/utils.js.map +1 -0
- package/dist/tree/DefaultTreeItemRenderer.js.map +1 -0
- package/dist/tree/Tree.js.map +1 -0
- package/dist/tree/TreeGroup.js.map +1 -0
- package/dist/tree/TreeItem.js.map +1 -0
- package/dist/tree/TreeItemExpander.js.map +1 -0
- package/dist/tree/TreeProvider.js.map +1 -0
- package/dist/tree/styles.js.map +1 -0
- package/dist/tree/types.js.map +1 -0
- package/dist/tree/useTree.js.map +1 -0
- package/dist/tree/useTreeExpansion.js.map +1 -0
- package/dist/tree/useTreeItems.js.map +1 -0
- package/dist/tree/useTreeMovement.js.map +1 -0
- package/dist/tree/useTreeSelection.js.map +1 -0
- package/dist/tree/utils.js.map +1 -0
- package/dist/types.js.map +1 -0
- package/dist/typography/SrOnly.js.map +1 -0
- package/dist/typography/TextContainer.js.map +1 -0
- package/dist/typography/Typography.js.map +1 -0
- package/dist/typography/WritingDirectionProvider.js.map +1 -0
- package/dist/useAsyncAction.js.map +1 -0
- package/dist/useDebouncedFunction.js.map +1 -0
- package/dist/useDropzone.js.map +1 -0
- package/dist/useElementSize.js.map +1 -0
- package/dist/useEnsuredId.js.map +1 -0
- package/dist/useEnsuredRef.js.map +1 -0
- package/dist/useEnsuredState.js.map +1 -0
- package/dist/useHtmlClassName.js.map +1 -0
- package/dist/useIntersectionObserver.js.map +1 -0
- package/dist/useIsomorphicLayoutEffect.js.map +1 -0
- package/dist/useLocalStorage.js.map +1 -0
- package/dist/useOrientation.js.map +1 -0
- package/dist/usePageInactive.js.map +1 -0
- package/dist/useResizeListener.js.map +1 -0
- package/dist/useResizeObserver.js.map +1 -0
- package/dist/useThrottledFunction.js.map +1 -0
- package/dist/useToggle.js.map +1 -0
- package/dist/useUnmounted.js.map +1 -0
- package/dist/useWindowSize.js.map +1 -0
- package/dist/utils/RenderRecursively.js.map +1 -0
- package/dist/utils/alphaNumericSort.js.map +1 -0
- package/dist/utils/applyRef.js.map +1 -0
- package/dist/utils/bem.js.map +1 -0
- package/dist/utils/filters.js.map +1 -0
- package/dist/utils/getClientPosition.js.map +1 -0
- package/dist/utils/getMiddleOfRange.js.map +1 -0
- package/dist/utils/getPercentage.js.map +1 -0
- package/dist/utils/getRangeDefaultValue.js.map +1 -0
- package/dist/utils/getRangeSteps.js.map +1 -0
- package/dist/utils/identity.js.map +1 -0
- package/dist/utils/isElementVisible.js.map +1 -0
- package/dist/utils/loop.js.map +1 -0
- package/dist/utils/nearest.js.map +1 -0
- package/dist/utils/parseCssLengthUnit.js.map +1 -0
- package/dist/utils/randomInt.js.map +1 -0
- package/dist/utils/wait.js.map +1 -0
- package/dist/utils/withinRange.js.map +1 -0
- package/dist/window-splitter/WindowSplitter.js.map +1 -0
- package/dist/window-splitter/useWindowSplitter.js.map +1 -0
- package/package.json +2 -2
- package/.turbo/turbo-lint.log +0 -12
- package/.turbo/turbo-test.log +0 -179
- package/.turbo/turbo-typecheck.log +0 -4
- package/dist/src/CoreProviders.js.map +0 -1
- package/dist/src/NoSsr.js.map +0 -1
- package/dist/src/SsrProvider.js.map +0 -1
- package/dist/src/app-bar/AppBar.js.map +0 -1
- package/dist/src/app-bar/AppBarTitle.js.map +0 -1
- package/dist/src/avatar/Avatar.js.map +0 -1
- package/dist/src/avatar/styles.js.map +0 -1
- package/dist/src/badge/Badge.js.map +0 -1
- package/dist/src/box/Box.js.map +0 -1
- package/dist/src/box/styles.js.map +0 -1
- package/dist/src/button/AsyncButton.js.map +0 -1
- package/dist/src/button/Button.js.map +0 -1
- package/dist/src/button/ButtonUnstyled.js.map +0 -1
- package/dist/src/button/FloatingActionButton.js.map +0 -1
- package/dist/src/button/TooltippedButton.js.map +0 -1
- package/dist/src/button/buttonStyles.js.map +0 -1
- package/dist/src/button/buttonUnstyledStyles.js.map +0 -1
- package/dist/src/card/Card.js.map +0 -1
- package/dist/src/card/CardContent.js.map +0 -1
- package/dist/src/card/CardFooter.js.map +0 -1
- package/dist/src/card/CardHeader.js.map +0 -1
- package/dist/src/card/CardSubtitle.js.map +0 -1
- package/dist/src/card/CardTitle.js.map +0 -1
- package/dist/src/card/ClickableCard.js.map +0 -1
- package/dist/src/card/styles.js.map +0 -1
- package/dist/src/chip/Chip.js.map +0 -1
- package/dist/src/chip/styles.js.map +0 -1
- package/dist/src/cssUtils.js.map +0 -1
- package/dist/src/delegateEvent.js.map +0 -1
- package/dist/src/dialog/Dialog.js.map +0 -1
- package/dist/src/dialog/DialogContainer.js.map +0 -1
- package/dist/src/dialog/DialogContent.js.map +0 -1
- package/dist/src/dialog/DialogFooter.js.map +0 -1
- package/dist/src/dialog/DialogHeader.js.map +0 -1
- package/dist/src/dialog/DialogTitle.js.map +0 -1
- package/dist/src/dialog/FixedDialog.js.map +0 -1
- package/dist/src/dialog/NestedDialogProvider.js.map +0 -1
- package/dist/src/dialog/styles.js.map +0 -1
- package/dist/src/divider/Divider.js.map +0 -1
- package/dist/src/divider/styles.js.map +0 -1
- package/dist/src/draggable/useDraggable.js.map +0 -1
- package/dist/src/draggable/utils.js.map +0 -1
- package/dist/src/expansion-panel/ExpansionList.js.map +0 -1
- package/dist/src/expansion-panel/ExpansionPanel.js.map +0 -1
- package/dist/src/expansion-panel/ExpansionPanelHeader.js.map +0 -1
- package/dist/src/expansion-panel/useExpansionList.js.map +0 -1
- package/dist/src/expansion-panel/useExpansionPanels.js.map +0 -1
- package/dist/src/focus/useFocusContainer.js.map +0 -1
- package/dist/src/focus/utils.js.map +0 -1
- package/dist/src/form/Checkbox.js.map +0 -1
- package/dist/src/form/Fieldset.js.map +0 -1
- package/dist/src/form/FileInput.js.map +0 -1
- package/dist/src/form/Form.js.map +0 -1
- package/dist/src/form/FormMessage.js.map +0 -1
- package/dist/src/form/FormMessageContainer.js.map +0 -1
- package/dist/src/form/FormMessageCounter.js.map +0 -1
- package/dist/src/form/InputToggle.js.map +0 -1
- package/dist/src/form/InputToggleIcon.js.map +0 -1
- package/dist/src/form/Label.js.map +0 -1
- package/dist/src/form/Legend.js.map +0 -1
- package/dist/src/form/MenuItemCheckbox.js.map +0 -1
- package/dist/src/form/MenuItemFileInput.js.map +0 -1
- package/dist/src/form/MenuItemInputToggle.js.map +0 -1
- package/dist/src/form/MenuItemRadio.js.map +0 -1
- package/dist/src/form/MenuItemSwitch.js.map +0 -1
- package/dist/src/form/MenuItemTextField.js.map +0 -1
- package/dist/src/form/NativeSelect.js.map +0 -1
- package/dist/src/form/OptGroup.js.map +0 -1
- package/dist/src/form/Option.js.map +0 -1
- package/dist/src/form/Password.js.map +0 -1
- package/dist/src/form/Radio.js.map +0 -1
- package/dist/src/form/Select.js.map +0 -1
- package/dist/src/form/SelectValue.js.map +0 -1
- package/dist/src/form/Slider.js.map +0 -1
- package/dist/src/form/SliderContainer.js.map +0 -1
- package/dist/src/form/SliderMark.js.map +0 -1
- package/dist/src/form/SliderMarkLabel.js.map +0 -1
- package/dist/src/form/SliderThumb.js.map +0 -1
- package/dist/src/form/SliderTrack.js.map +0 -1
- package/dist/src/form/SliderValueMarks.js.map +0 -1
- package/dist/src/form/SliderValueTooltip.js.map +0 -1
- package/dist/src/form/Switch.js.map +0 -1
- package/dist/src/form/SwitchTrack.js.map +0 -1
- package/dist/src/form/TextArea.js.map +0 -1
- package/dist/src/form/TextField.js.map +0 -1
- package/dist/src/form/TextFieldAddon.js.map +0 -1
- package/dist/src/form/TextFieldContainer.js.map +0 -1
- package/dist/src/form/TextFieldContainerStyles.js.map +0 -1
- package/dist/src/form/fileUtils.js.map +0 -1
- package/dist/src/form/formConfig.js.map +0 -1
- package/dist/src/form/formMessageStyles.js.map +0 -1
- package/dist/src/form/inputToggleStyles.js.map +0 -1
- package/dist/src/form/nativeSelectStyles.js.map +0 -1
- package/dist/src/form/optionStyles.js.map +0 -1
- package/dist/src/form/passwordStyles.js.map +0 -1
- package/dist/src/form/selectStyles.js.map +0 -1
- package/dist/src/form/selectUtils.js.map +0 -1
- package/dist/src/form/sliderUtils.js.map +0 -1
- package/dist/src/form/switchStyles.js.map +0 -1
- package/dist/src/form/textAreaStyles.js.map +0 -1
- package/dist/src/form/textFieldStyles.js.map +0 -1
- package/dist/src/form/types.js.map +0 -1
- package/dist/src/form/useCheckboxGroup.js.map +0 -1
- package/dist/src/form/useFileUpload.js.map +0 -1
- package/dist/src/form/useListboxProvider.js.map +0 -1
- package/dist/src/form/useNumberField.js.map +0 -1
- package/dist/src/form/useRadioGroup.js.map +0 -1
- package/dist/src/form/useRangeSlider.js.map +0 -1
- package/dist/src/form/useResizingTextArea.js.map +0 -1
- package/dist/src/form/useSlider.js.map +0 -1
- package/dist/src/form/useTextField.js.map +0 -1
- package/dist/src/form/utils.js.map +0 -1
- package/dist/src/form/validation.js.map +0 -1
- package/dist/src/hoverMode/useHoverMode.js.map +0 -1
- package/dist/src/hoverMode/useHoverModeProvider.js.map +0 -1
- package/dist/src/icon/FontIcon.js.map +0 -1
- package/dist/src/icon/IconRotator.js.map +0 -1
- package/dist/src/icon/MaterialIcon.js.map +0 -1
- package/dist/src/icon/MaterialSymbol.js.map +0 -1
- package/dist/src/icon/SVGIcon.js.map +0 -1
- package/dist/src/icon/TextIconSpacing.js.map +0 -1
- package/dist/src/icon/iconConfig.js.map +0 -1
- package/dist/src/icon/material.js.map +0 -1
- package/dist/src/icon/materialConfig.js.map +0 -1
- package/dist/src/icon/styles.js.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/interaction/Ripple.js.map +0 -1
- package/dist/src/interaction/RippleContainer.js.map +0 -1
- package/dist/src/interaction/UserInteractionModeProvider.js.map +0 -1
- package/dist/src/interaction/config.js.map +0 -1
- package/dist/src/interaction/types.js.map +0 -1
- package/dist/src/interaction/useElementInteraction.js.map +0 -1
- package/dist/src/interaction/useHigherContrastChildren.js.map +0 -1
- package/dist/src/interaction/utils.js.map +0 -1
- package/dist/src/layout/LayoutAppBar.js.map +0 -1
- package/dist/src/layout/LayoutNav.js.map +0 -1
- package/dist/src/layout/LayoutWindowSplitter.js.map +0 -1
- package/dist/src/layout/Main.js.map +0 -1
- package/dist/src/layout/layoutNavStyles.js.map +0 -1
- package/dist/src/layout/layoutWindowSplitterStyles.js.map +0 -1
- package/dist/src/layout/mainStyles.js.map +0 -1
- package/dist/src/layout/useExpandableLayout.js.map +0 -1
- package/dist/src/layout/useHorizontalLayoutTransition.js.map +0 -1
- package/dist/src/layout/useLayoutAppBarHeight.js.map +0 -1
- package/dist/src/layout/useLayoutTree.js.map +0 -1
- package/dist/src/layout/useLayoutWindowSplitter.js.map +0 -1
- package/dist/src/layout/useMainTabIndex.js.map +0 -1
- package/dist/src/layout/useResizableLayout.js.map +0 -1
- package/dist/src/layout/useTemporaryLayout.js.map +0 -1
- package/dist/src/link/Link.js.map +0 -1
- package/dist/src/link/SkipToMainContent.js.map +0 -1
- package/dist/src/link/styles.js.map +0 -1
- package/dist/src/list/List.js.map +0 -1
- package/dist/src/list/ListItem.js.map +0 -1
- package/dist/src/list/ListItemAddon.js.map +0 -1
- package/dist/src/list/ListItemChildren.js.map +0 -1
- package/dist/src/list/ListItemLink.js.map +0 -1
- package/dist/src/list/ListItemText.js.map +0 -1
- package/dist/src/list/ListSubheader.js.map +0 -1
- package/dist/src/list/getListItemHeight.js.map +0 -1
- package/dist/src/list/listItemStyles.js.map +0 -1
- package/dist/src/list/types.js.map +0 -1
- package/dist/src/media-queries/AppSizeProvider.js.map +0 -1
- package/dist/src/media-queries/appSize.js.map +0 -1
- package/dist/src/media-queries/useMediaQuery.js.map +0 -1
- package/dist/src/menu/DropdownMenu.js.map +0 -1
- package/dist/src/menu/Menu.js.map +0 -1
- package/dist/src/menu/MenuBar.js.map +0 -1
- package/dist/src/menu/MenuButton.js.map +0 -1
- package/dist/src/menu/MenuConfigurationProvider.js.map +0 -1
- package/dist/src/menu/MenuItem.js.map +0 -1
- package/dist/src/menu/MenuItemButton.js.map +0 -1
- package/dist/src/menu/MenuItemGroup.js.map +0 -1
- package/dist/src/menu/MenuItemSeparator.js.map +0 -1
- package/dist/src/menu/MenuSheet.js.map +0 -1
- package/dist/src/menu/MenuVisibilityProvider.js.map +0 -1
- package/dist/src/menu/MenuWidget.js.map +0 -1
- package/dist/src/menu/MenuWidgetKeyboardProvider.js.map +0 -1
- package/dist/src/menu/useContextMenu.js.map +0 -1
- package/dist/src/menu/useMenuBarProvider.js.map +0 -1
- package/dist/src/menu/utils.js.map +0 -1
- package/dist/src/movement/constants.js.map +0 -1
- package/dist/src/movement/findMatchIndex.js.map +0 -1
- package/dist/src/movement/types.js.map +0 -1
- package/dist/src/movement/useKeyboardMovementProvider.js.map +0 -1
- package/dist/src/movement/utils.js.map +0 -1
- package/dist/src/overlay/Overlay.js.map +0 -1
- package/dist/src/overlay/overlayStyles.js.map +0 -1
- package/dist/src/portal/Portal.js.map +0 -1
- package/dist/src/portal/PortalContainerProvider.js.map +0 -1
- package/dist/src/positioning/constants.js.map +0 -1
- package/dist/src/positioning/createHorizontalPosition.js.map +0 -1
- package/dist/src/positioning/createVerticalPosition.js.map +0 -1
- package/dist/src/positioning/getFixedPosition.js.map +0 -1
- package/dist/src/positioning/types.js.map +0 -1
- package/dist/src/positioning/useFixedPositioning.js.map +0 -1
- package/dist/src/positioning/utils.js.map +0 -1
- package/dist/src/progress/CircularProgress.js.map +0 -1
- package/dist/src/progress/LinearProgress.js.map +0 -1
- package/dist/src/progress/getProgressA11y.js.map +0 -1
- package/dist/src/progress/types.js.map +0 -1
- package/dist/src/responsive-item/ResponsiveItemContainer.js.map +0 -1
- package/dist/src/responsive-item/ResponsiveItemOverlay.js.map +0 -1
- package/dist/src/responsive-item/styles.js.map +0 -1
- package/dist/src/scroll/ScrollLock.js.map +0 -1
- package/dist/src/scroll/getScrollbarWidth.js.map +0 -1
- package/dist/src/scroll/useScrollLock.js.map +0 -1
- package/dist/src/segmented-button/SegmentedButton.js.map +0 -1
- package/dist/src/segmented-button/SegmentedButtonContainer.js.map +0 -1
- package/dist/src/segmented-button/segmentedButtonContainerStyles.js.map +0 -1
- package/dist/src/segmented-button/segmentedButtonStyles.js.map +0 -1
- package/dist/src/sheet/Sheet.js.map +0 -1
- package/dist/src/sheet/styles.js.map +0 -1
- package/dist/src/snackbar/DefaultToastRenderer.js.map +0 -1
- package/dist/src/snackbar/Snackbar.js.map +0 -1
- package/dist/src/snackbar/Toast.js.map +0 -1
- package/dist/src/snackbar/ToastActionButton.js.map +0 -1
- package/dist/src/snackbar/ToastCloseButton.js.map +0 -1
- package/dist/src/snackbar/ToastContent.js.map +0 -1
- package/dist/src/snackbar/ToastManager.js.map +0 -1
- package/dist/src/snackbar/ToastManagerProvider.js.map +0 -1
- package/dist/src/snackbar/snackbarStyles.js.map +0 -1
- package/dist/src/snackbar/toastContentStyles.js.map +0 -1
- package/dist/src/snackbar/toastStyles.js.map +0 -1
- package/dist/src/snackbar/useCurrentToastActions.js.map +0 -1
- package/dist/src/suspense/CircularProgressSuspense.js.map +0 -1
- package/dist/src/suspense/NullSuspense.js.map +0 -1
- package/dist/src/table/Table.js.map +0 -1
- package/dist/src/table/TableBody.js.map +0 -1
- package/dist/src/table/TableCell.js.map +0 -1
- package/dist/src/table/TableCellContent.js.map +0 -1
- package/dist/src/table/TableCheckbox.js.map +0 -1
- package/dist/src/table/TableConfigurationProvider.js.map +0 -1
- package/dist/src/table/TableContainer.js.map +0 -1
- package/dist/src/table/TableContainerProvider.js.map +0 -1
- package/dist/src/table/TableFooter.js.map +0 -1
- package/dist/src/table/TableHeader.js.map +0 -1
- package/dist/src/table/TableRadio.js.map +0 -1
- package/dist/src/table/TableRow.js.map +0 -1
- package/dist/src/table/tableCellStyles.js.map +0 -1
- package/dist/src/table/tableContainerStyles.js.map +0 -1
- package/dist/src/table/tableFooterStyles.js.map +0 -1
- package/dist/src/table/tableHeaderStyles.js.map +0 -1
- package/dist/src/table/tableRowStyles.js.map +0 -1
- package/dist/src/table/tableStyles.js.map +0 -1
- package/dist/src/table/types.js.map +0 -1
- package/dist/src/tabs/Tab.js.map +0 -1
- package/dist/src/tabs/TabList.js.map +0 -1
- package/dist/src/tabs/TabListScrollButton.js.map +0 -1
- package/dist/src/tabs/tabIndicatorStyles.js.map +0 -1
- package/dist/src/tabs/tabListScrollButtonStyles.js.map +0 -1
- package/dist/src/tabs/tabListStyles.js.map +0 -1
- package/dist/src/tabs/tabStyles.js.map +0 -1
- package/dist/src/tabs/useTabList.js.map +0 -1
- package/dist/src/tabs/useTabs.js.map +0 -1
- package/dist/src/tabs/utils.js.map +0 -1
- package/dist/src/test-utils/IntersectionObserver.js.map +0 -1
- package/dist/src/test-utils/ResizeObserver.js.map +0 -1
- package/dist/src/test-utils/data-testid.js.map +0 -1
- package/dist/src/test-utils/index.js.map +0 -1
- package/dist/src/test-utils/jest-setup.js.map +0 -1
- package/dist/src/test-utils/matchMedia.js.map +0 -1
- package/dist/src/test-utils/polyfills/IntersectionObserver.js.map +0 -1
- package/dist/src/test-utils/polyfills/ResizeObserver.js.map +0 -1
- package/dist/src/test-utils/polyfills/index.js.map +0 -1
- package/dist/src/test-utils/polyfills/matchMedia.js.map +0 -1
- package/dist/src/test-utils/polyfills/offsetParent.js.map +0 -1
- package/dist/src/test-utils/polyfills/scrollIntoView.js.map +0 -1
- package/dist/src/test-utils/render.js.map +0 -1
- package/dist/src/test-utils/timers.js.map +0 -1
- package/dist/src/theme/LocalStorageColorSchemeProvider.js.map +0 -1
- package/dist/src/theme/ThemeProvider.js.map +0 -1
- package/dist/src/theme/colors.js.map +0 -1
- package/dist/src/theme/cssVars.js.map +0 -1
- package/dist/src/theme/types.js.map +0 -1
- package/dist/src/theme/useCSSVariables.js.map +0 -1
- package/dist/src/theme/useColorScheme.js.map +0 -1
- package/dist/src/theme/useColorSchemeMetaTag.js.map +0 -1
- package/dist/src/theme/useColorSchemeProvider.js.map +0 -1
- package/dist/src/theme/usePrefersColorScheme.js.map +0 -1
- package/dist/src/theme/utils.js.map +0 -1
- package/dist/src/tooltip/Tooltip.js.map +0 -1
- package/dist/src/tooltip/TooltipHoverModeProvider.js.map +0 -1
- package/dist/src/tooltip/constants.js.map +0 -1
- package/dist/src/tooltip/tooltipStyles.js.map +0 -1
- package/dist/src/tooltip/useTooltip.js.map +0 -1
- package/dist/src/tooltip/useTooltipPosition.js.map +0 -1
- package/dist/src/tooltip/utils.js.map +0 -1
- package/dist/src/transition/CSSTransition.js.map +0 -1
- package/dist/src/transition/Collapse.js.map +0 -1
- package/dist/src/transition/CrossFade.js.map +0 -1
- package/dist/src/transition/ScaleTransition.js.map +0 -1
- package/dist/src/transition/SkeletonPlaceholder.js.map +0 -1
- package/dist/src/transition/Slide.js.map +0 -1
- package/dist/src/transition/SlideContainer.js.map +0 -1
- package/dist/src/transition/collapseStyles.js.map +0 -1
- package/dist/src/transition/config.js.map +0 -1
- package/dist/src/transition/maxWidthTransition.js.map +0 -1
- package/dist/src/transition/skeletonPlaceholderUtils.js.map +0 -1
- package/dist/src/transition/types.js.map +0 -1
- package/dist/src/transition/useCSSTransition.js.map +0 -1
- package/dist/src/transition/useCarousel.js.map +0 -1
- package/dist/src/transition/useCollapseTransition.js.map +0 -1
- package/dist/src/transition/useCrossFadeTransition.js.map +0 -1
- package/dist/src/transition/useMaxWidthTransition.js.map +0 -1
- package/dist/src/transition/useScaleTransition.js.map +0 -1
- package/dist/src/transition/useSkeletonPlaceholder.js.map +0 -1
- package/dist/src/transition/useSlideTransition.js.map +0 -1
- package/dist/src/transition/useTransition.js.map +0 -1
- package/dist/src/transition/utils.js.map +0 -1
- package/dist/src/tree/DefaultTreeItemRenderer.js.map +0 -1
- package/dist/src/tree/Tree.js.map +0 -1
- package/dist/src/tree/TreeGroup.js.map +0 -1
- package/dist/src/tree/TreeItem.js.map +0 -1
- package/dist/src/tree/TreeItemExpander.js.map +0 -1
- package/dist/src/tree/TreeProvider.js.map +0 -1
- package/dist/src/tree/styles.js.map +0 -1
- package/dist/src/tree/types.js.map +0 -1
- package/dist/src/tree/useTree.js.map +0 -1
- package/dist/src/tree/useTreeExpansion.js.map +0 -1
- package/dist/src/tree/useTreeItems.js.map +0 -1
- package/dist/src/tree/useTreeMovement.js.map +0 -1
- package/dist/src/tree/useTreeSelection.js.map +0 -1
- package/dist/src/tree/utils.js.map +0 -1
- package/dist/src/types.js.map +0 -1
- package/dist/src/typography/SrOnly.js.map +0 -1
- package/dist/src/typography/TextContainer.js.map +0 -1
- package/dist/src/typography/Typography.js.map +0 -1
- package/dist/src/typography/WritingDirectionProvider.js.map +0 -1
- package/dist/src/useAsyncAction.js.map +0 -1
- package/dist/src/useDebouncedFunction.js.map +0 -1
- package/dist/src/useDropzone.js.map +0 -1
- package/dist/src/useElementSize.js.map +0 -1
- package/dist/src/useEnsuredId.js.map +0 -1
- package/dist/src/useEnsuredRef.js.map +0 -1
- package/dist/src/useEnsuredState.js.map +0 -1
- package/dist/src/useHtmlClassName.js.map +0 -1
- package/dist/src/useIntersectionObserver.js.map +0 -1
- package/dist/src/useIsomorphicLayoutEffect.js.map +0 -1
- package/dist/src/useLocalStorage.js.map +0 -1
- package/dist/src/useOrientation.js.map +0 -1
- package/dist/src/usePageInactive.js.map +0 -1
- package/dist/src/useResizeListener.js.map +0 -1
- package/dist/src/useResizeObserver.js.map +0 -1
- package/dist/src/useThrottledFunction.js.map +0 -1
- package/dist/src/useToggle.js.map +0 -1
- package/dist/src/useUnmounted.js.map +0 -1
- package/dist/src/useWindowSize.js.map +0 -1
- package/dist/src/utils/RenderRecursively.js.map +0 -1
- package/dist/src/utils/alphaNumericSort.js.map +0 -1
- package/dist/src/utils/applyRef.js.map +0 -1
- package/dist/src/utils/bem.js.map +0 -1
- package/dist/src/utils/filters.js.map +0 -1
- package/dist/src/utils/getClientPosition.js.map +0 -1
- package/dist/src/utils/getMiddleOfRange.js.map +0 -1
- package/dist/src/utils/getPercentage.js.map +0 -1
- package/dist/src/utils/getRangeDefaultValue.js.map +0 -1
- package/dist/src/utils/getRangeSteps.js.map +0 -1
- package/dist/src/utils/identity.js.map +0 -1
- package/dist/src/utils/isElementVisible.js.map +0 -1
- package/dist/src/utils/loop.js.map +0 -1
- package/dist/src/utils/nearest.js.map +0 -1
- package/dist/src/utils/parseCssLengthUnit.js.map +0 -1
- package/dist/src/utils/randomInt.js.map +0 -1
- package/dist/src/utils/wait.js.map +0 -1
- package/dist/src/utils/withinRange.js.map +0 -1
- package/dist/src/window-splitter/WindowSplitter.js.map +0 -1
- package/dist/src/window-splitter/useWindowSplitter.js.map +0 -1
- /package/dist/{src/CoreProviders.js → CoreProviders.js} +0 -0
- /package/dist/{src/NoSsr.js → NoSsr.js} +0 -0
- /package/dist/{src/SsrProvider.js → SsrProvider.js} +0 -0
- /package/dist/{src/app-bar → app-bar}/AppBar.js +0 -0
- /package/dist/{src/app-bar → app-bar}/AppBarTitle.js +0 -0
- /package/dist/{src/avatar → avatar}/Avatar.js +0 -0
- /package/dist/{src/avatar → avatar}/styles.js +0 -0
- /package/dist/{src/badge → badge}/Badge.js +0 -0
- /package/dist/{src/box → box}/Box.js +0 -0
- /package/dist/{src/box → box}/styles.js +0 -0
- /package/dist/{src/button → button}/AsyncButton.js +0 -0
- /package/dist/{src/button → button}/Button.js +0 -0
- /package/dist/{src/button → button}/ButtonUnstyled.js +0 -0
- /package/dist/{src/button → button}/FloatingActionButton.js +0 -0
- /package/dist/{src/button → button}/TooltippedButton.js +0 -0
- /package/dist/{src/button → button}/buttonStyles.js +0 -0
- /package/dist/{src/button → button}/buttonUnstyledStyles.js +0 -0
- /package/dist/{src/card → card}/Card.js +0 -0
- /package/dist/{src/card → card}/CardContent.js +0 -0
- /package/dist/{src/card → card}/CardFooter.js +0 -0
- /package/dist/{src/card → card}/CardHeader.js +0 -0
- /package/dist/{src/card → card}/CardSubtitle.js +0 -0
- /package/dist/{src/card → card}/CardTitle.js +0 -0
- /package/dist/{src/card → card}/ClickableCard.js +0 -0
- /package/dist/{src/card → card}/styles.js +0 -0
- /package/dist/{src/chip → chip}/Chip.js +0 -0
- /package/dist/{src/chip → chip}/styles.js +0 -0
- /package/dist/{src/cssUtils.js → cssUtils.js} +0 -0
- /package/dist/{src/delegateEvent.js → delegateEvent.js} +0 -0
- /package/dist/{src/dialog → dialog}/Dialog.js +0 -0
- /package/dist/{src/dialog → dialog}/DialogContainer.js +0 -0
- /package/dist/{src/dialog → dialog}/DialogContent.js +0 -0
- /package/dist/{src/dialog → dialog}/DialogFooter.js +0 -0
- /package/dist/{src/dialog → dialog}/DialogHeader.js +0 -0
- /package/dist/{src/dialog → dialog}/DialogTitle.js +0 -0
- /package/dist/{src/dialog → dialog}/FixedDialog.js +0 -0
- /package/dist/{src/dialog → dialog}/NestedDialogProvider.js +0 -0
- /package/dist/{src/dialog → dialog}/styles.js +0 -0
- /package/dist/{src/divider → divider}/Divider.js +0 -0
- /package/dist/{src/divider → divider}/styles.js +0 -0
- /package/dist/{src/draggable → draggable}/useDraggable.js +0 -0
- /package/dist/{src/draggable → draggable}/utils.js +0 -0
- /package/dist/{src/expansion-panel → expansion-panel}/ExpansionList.js +0 -0
- /package/dist/{src/expansion-panel → expansion-panel}/ExpansionPanel.js +0 -0
- /package/dist/{src/expansion-panel → expansion-panel}/ExpansionPanelHeader.js +0 -0
- /package/dist/{src/expansion-panel → expansion-panel}/useExpansionList.js +0 -0
- /package/dist/{src/expansion-panel → expansion-panel}/useExpansionPanels.js +0 -0
- /package/dist/{src/focus → focus}/useFocusContainer.js +0 -0
- /package/dist/{src/focus → focus}/utils.js +0 -0
- /package/dist/{src/form → form}/Checkbox.js +0 -0
- /package/dist/{src/form → form}/Fieldset.js +0 -0
- /package/dist/{src/form → form}/FileInput.js +0 -0
- /package/dist/{src/form → form}/Form.js +0 -0
- /package/dist/{src/form → form}/FormMessage.js +0 -0
- /package/dist/{src/form → form}/FormMessageContainer.js +0 -0
- /package/dist/{src/form → form}/FormMessageCounter.js +0 -0
- /package/dist/{src/form → form}/InputToggle.js +0 -0
- /package/dist/{src/form → form}/InputToggleIcon.js +0 -0
- /package/dist/{src/form → form}/Label.js +0 -0
- /package/dist/{src/form → form}/Legend.js +0 -0
- /package/dist/{src/form → form}/MenuItemCheckbox.js +0 -0
- /package/dist/{src/form → form}/MenuItemFileInput.js +0 -0
- /package/dist/{src/form → form}/MenuItemInputToggle.js +0 -0
- /package/dist/{src/form → form}/MenuItemRadio.js +0 -0
- /package/dist/{src/form → form}/MenuItemSwitch.js +0 -0
- /package/dist/{src/form → form}/MenuItemTextField.js +0 -0
- /package/dist/{src/form → form}/NativeSelect.js +0 -0
- /package/dist/{src/form → form}/OptGroup.js +0 -0
- /package/dist/{src/form → form}/Option.js +0 -0
- /package/dist/{src/form → form}/Password.js +0 -0
- /package/dist/{src/form → form}/Radio.js +0 -0
- /package/dist/{src/form → form}/Select.js +0 -0
- /package/dist/{src/form → form}/SelectValue.js +0 -0
- /package/dist/{src/form → form}/Slider.js +0 -0
- /package/dist/{src/form → form}/SliderContainer.js +0 -0
- /package/dist/{src/form → form}/SliderMark.js +0 -0
- /package/dist/{src/form → form}/SliderMarkLabel.js +0 -0
- /package/dist/{src/form → form}/SliderThumb.js +0 -0
- /package/dist/{src/form → form}/SliderTrack.js +0 -0
- /package/dist/{src/form → form}/SliderValueMarks.js +0 -0
- /package/dist/{src/form → form}/SliderValueTooltip.js +0 -0
- /package/dist/{src/form → form}/Switch.js +0 -0
- /package/dist/{src/form → form}/SwitchTrack.js +0 -0
- /package/dist/{src/form → form}/TextArea.js +0 -0
- /package/dist/{src/form → form}/TextField.js +0 -0
- /package/dist/{src/form → form}/TextFieldAddon.js +0 -0
- /package/dist/{src/form → form}/TextFieldContainer.js +0 -0
- /package/dist/{src/form → form}/TextFieldContainerStyles.js +0 -0
- /package/dist/{src/form → form}/fileUtils.js +0 -0
- /package/dist/{src/form → form}/formConfig.js +0 -0
- /package/dist/{src/form → form}/formMessageStyles.js +0 -0
- /package/dist/{src/form → form}/inputToggleStyles.js +0 -0
- /package/dist/{src/form → form}/nativeSelectStyles.js +0 -0
- /package/dist/{src/form → form}/optionStyles.js +0 -0
- /package/dist/{src/form → form}/passwordStyles.js +0 -0
- /package/dist/{src/form → form}/selectStyles.js +0 -0
- /package/dist/{src/form → form}/selectUtils.js +0 -0
- /package/dist/{src/form → form}/sliderUtils.js +0 -0
- /package/dist/{src/form → form}/switchStyles.js +0 -0
- /package/dist/{src/form → form}/textAreaStyles.js +0 -0
- /package/dist/{src/form → form}/textFieldStyles.js +0 -0
- /package/dist/{src/form → form}/types.js +0 -0
- /package/dist/{src/form → form}/useCheckboxGroup.js +0 -0
- /package/dist/{src/form → form}/useFileUpload.js +0 -0
- /package/dist/{src/form → form}/useListboxProvider.js +0 -0
- /package/dist/{src/form → form}/useNumberField.js +0 -0
- /package/dist/{src/form → form}/useRadioGroup.js +0 -0
- /package/dist/{src/form → form}/useRangeSlider.js +0 -0
- /package/dist/{src/form → form}/useResizingTextArea.js +0 -0
- /package/dist/{src/form → form}/useSlider.js +0 -0
- /package/dist/{src/form → form}/useTextField.js +0 -0
- /package/dist/{src/form → form}/utils.js +0 -0
- /package/dist/{src/form → form}/validation.js +0 -0
- /package/dist/{src/hoverMode → hoverMode}/useHoverMode.js +0 -0
- /package/dist/{src/hoverMode → hoverMode}/useHoverModeProvider.js +0 -0
- /package/dist/{src/icon → icon}/FontIcon.js +0 -0
- /package/dist/{src/icon → icon}/IconRotator.js +0 -0
- /package/dist/{src/icon → icon}/MaterialIcon.js +0 -0
- /package/dist/{src/icon → icon}/MaterialSymbol.js +0 -0
- /package/dist/{src/icon → icon}/SVGIcon.js +0 -0
- /package/dist/{src/icon → icon}/TextIconSpacing.js +0 -0
- /package/dist/{src/icon → icon}/iconConfig.js +0 -0
- /package/dist/{src/icon → icon}/material.js +0 -0
- /package/dist/{src/icon → icon}/materialConfig.js +0 -0
- /package/dist/{src/icon → icon}/styles.js +0 -0
- /package/dist/{src/index.js → index.js} +0 -0
- /package/dist/{src/interaction → interaction}/Ripple.js +0 -0
- /package/dist/{src/interaction → interaction}/RippleContainer.js +0 -0
- /package/dist/{src/interaction → interaction}/UserInteractionModeProvider.js +0 -0
- /package/dist/{src/interaction → interaction}/config.js +0 -0
- /package/dist/{src/interaction → interaction}/types.js +0 -0
- /package/dist/{src/interaction → interaction}/useElementInteraction.js +0 -0
- /package/dist/{src/interaction → interaction}/useHigherContrastChildren.js +0 -0
- /package/dist/{src/interaction → interaction}/utils.js +0 -0
- /package/dist/{src/layout → layout}/LayoutAppBar.js +0 -0
- /package/dist/{src/layout → layout}/LayoutNav.js +0 -0
- /package/dist/{src/layout → layout}/LayoutWindowSplitter.js +0 -0
- /package/dist/{src/layout → layout}/Main.js +0 -0
- /package/dist/{src/layout → layout}/layoutNavStyles.js +0 -0
- /package/dist/{src/layout → layout}/layoutWindowSplitterStyles.js +0 -0
- /package/dist/{src/layout → layout}/mainStyles.js +0 -0
- /package/dist/{src/layout → layout}/useExpandableLayout.js +0 -0
- /package/dist/{src/layout → layout}/useHorizontalLayoutTransition.js +0 -0
- /package/dist/{src/layout → layout}/useLayoutAppBarHeight.js +0 -0
- /package/dist/{src/layout → layout}/useLayoutTree.js +0 -0
- /package/dist/{src/layout → layout}/useLayoutWindowSplitter.js +0 -0
- /package/dist/{src/layout → layout}/useMainTabIndex.js +0 -0
- /package/dist/{src/layout → layout}/useResizableLayout.js +0 -0
- /package/dist/{src/layout → layout}/useTemporaryLayout.js +0 -0
- /package/dist/{src/link → link}/Link.js +0 -0
- /package/dist/{src/link → link}/SkipToMainContent.js +0 -0
- /package/dist/{src/link → link}/styles.js +0 -0
- /package/dist/{src/list → list}/List.js +0 -0
- /package/dist/{src/list → list}/ListItem.js +0 -0
- /package/dist/{src/list → list}/ListItemAddon.js +0 -0
- /package/dist/{src/list → list}/ListItemChildren.js +0 -0
- /package/dist/{src/list → list}/ListItemLink.js +0 -0
- /package/dist/{src/list → list}/ListItemText.js +0 -0
- /package/dist/{src/list → list}/ListSubheader.js +0 -0
- /package/dist/{src/list → list}/getListItemHeight.js +0 -0
- /package/dist/{src/list → list}/listItemStyles.js +0 -0
- /package/dist/{src/list → list}/types.js +0 -0
- /package/dist/{src/media-queries → media-queries}/AppSizeProvider.js +0 -0
- /package/dist/{src/media-queries → media-queries}/appSize.js +0 -0
- /package/dist/{src/media-queries → media-queries}/useMediaQuery.js +0 -0
- /package/dist/{src/menu → menu}/DropdownMenu.js +0 -0
- /package/dist/{src/menu → menu}/Menu.js +0 -0
- /package/dist/{src/menu → menu}/MenuBar.js +0 -0
- /package/dist/{src/menu → menu}/MenuButton.js +0 -0
- /package/dist/{src/menu → menu}/MenuConfigurationProvider.js +0 -0
- /package/dist/{src/menu → menu}/MenuItem.js +0 -0
- /package/dist/{src/menu → menu}/MenuItemButton.js +0 -0
- /package/dist/{src/menu → menu}/MenuItemGroup.js +0 -0
- /package/dist/{src/menu → menu}/MenuItemSeparator.js +0 -0
- /package/dist/{src/menu → menu}/MenuSheet.js +0 -0
- /package/dist/{src/menu → menu}/MenuVisibilityProvider.js +0 -0
- /package/dist/{src/menu → menu}/MenuWidget.js +0 -0
- /package/dist/{src/menu → menu}/MenuWidgetKeyboardProvider.js +0 -0
- /package/dist/{src/menu → menu}/useContextMenu.js +0 -0
- /package/dist/{src/menu → menu}/useMenuBarProvider.js +0 -0
- /package/dist/{src/menu → menu}/utils.js +0 -0
- /package/dist/{src/movement → movement}/constants.js +0 -0
- /package/dist/{src/movement → movement}/findMatchIndex.js +0 -0
- /package/dist/{src/movement → movement}/types.js +0 -0
- /package/dist/{src/movement → movement}/useKeyboardMovementProvider.js +0 -0
- /package/dist/{src/movement → movement}/utils.js +0 -0
- /package/dist/{src/overlay → overlay}/Overlay.js +0 -0
- /package/dist/{src/overlay → overlay}/overlayStyles.js +0 -0
- /package/dist/{src/portal → portal}/Portal.js +0 -0
- /package/dist/{src/portal → portal}/PortalContainerProvider.js +0 -0
- /package/dist/{src/positioning → positioning}/constants.js +0 -0
- /package/dist/{src/positioning → positioning}/createHorizontalPosition.js +0 -0
- /package/dist/{src/positioning → positioning}/createVerticalPosition.js +0 -0
- /package/dist/{src/positioning → positioning}/getFixedPosition.js +0 -0
- /package/dist/{src/positioning → positioning}/types.js +0 -0
- /package/dist/{src/positioning → positioning}/useFixedPositioning.js +0 -0
- /package/dist/{src/positioning → positioning}/utils.js +0 -0
- /package/dist/{src/progress → progress}/CircularProgress.js +0 -0
- /package/dist/{src/progress → progress}/LinearProgress.js +0 -0
- /package/dist/{src/progress → progress}/getProgressA11y.js +0 -0
- /package/dist/{src/progress → progress}/types.js +0 -0
- /package/dist/{src/responsive-item → responsive-item}/ResponsiveItemContainer.js +0 -0
- /package/dist/{src/responsive-item → responsive-item}/ResponsiveItemOverlay.js +0 -0
- /package/dist/{src/responsive-item → responsive-item}/styles.js +0 -0
- /package/dist/{src/scroll → scroll}/ScrollLock.js +0 -0
- /package/dist/{src/scroll → scroll}/getScrollbarWidth.js +0 -0
- /package/dist/{src/scroll → scroll}/useScrollLock.js +0 -0
- /package/dist/{src/segmented-button → segmented-button}/SegmentedButton.js +0 -0
- /package/dist/{src/segmented-button → segmented-button}/SegmentedButtonContainer.js +0 -0
- /package/dist/{src/segmented-button → segmented-button}/segmentedButtonContainerStyles.js +0 -0
- /package/dist/{src/segmented-button → segmented-button}/segmentedButtonStyles.js +0 -0
- /package/dist/{src/sheet → sheet}/Sheet.js +0 -0
- /package/dist/{src/sheet → sheet}/styles.js +0 -0
- /package/dist/{src/snackbar → snackbar}/DefaultToastRenderer.js +0 -0
- /package/dist/{src/snackbar → snackbar}/Snackbar.js +0 -0
- /package/dist/{src/snackbar → snackbar}/Toast.js +0 -0
- /package/dist/{src/snackbar → snackbar}/ToastActionButton.js +0 -0
- /package/dist/{src/snackbar → snackbar}/ToastCloseButton.js +0 -0
- /package/dist/{src/snackbar → snackbar}/ToastContent.js +0 -0
- /package/dist/{src/snackbar → snackbar}/ToastManager.js +0 -0
- /package/dist/{src/snackbar → snackbar}/ToastManagerProvider.js +0 -0
- /package/dist/{src/snackbar → snackbar}/snackbarStyles.js +0 -0
- /package/dist/{src/snackbar → snackbar}/toastContentStyles.js +0 -0
- /package/dist/{src/snackbar → snackbar}/toastStyles.js +0 -0
- /package/dist/{src/snackbar → snackbar}/useCurrentToastActions.js +0 -0
- /package/dist/{src/suspense → suspense}/CircularProgressSuspense.js +0 -0
- /package/dist/{src/suspense → suspense}/NullSuspense.js +0 -0
- /package/dist/{src/table → table}/Table.js +0 -0
- /package/dist/{src/table → table}/TableBody.js +0 -0
- /package/dist/{src/table → table}/TableCell.js +0 -0
- /package/dist/{src/table → table}/TableCellContent.js +0 -0
- /package/dist/{src/table → table}/TableCheckbox.js +0 -0
- /package/dist/{src/table → table}/TableConfigurationProvider.js +0 -0
- /package/dist/{src/table → table}/TableContainer.js +0 -0
- /package/dist/{src/table → table}/TableContainerProvider.js +0 -0
- /package/dist/{src/table → table}/TableFooter.js +0 -0
- /package/dist/{src/table → table}/TableHeader.js +0 -0
- /package/dist/{src/table → table}/TableRadio.js +0 -0
- /package/dist/{src/table → table}/TableRow.js +0 -0
- /package/dist/{src/table → table}/tableCellStyles.js +0 -0
- /package/dist/{src/table → table}/tableContainerStyles.js +0 -0
- /package/dist/{src/table → table}/tableFooterStyles.js +0 -0
- /package/dist/{src/table → table}/tableHeaderStyles.js +0 -0
- /package/dist/{src/table → table}/tableRowStyles.js +0 -0
- /package/dist/{src/table → table}/tableStyles.js +0 -0
- /package/dist/{src/table → table}/types.js +0 -0
- /package/dist/{src/tabs → tabs}/Tab.js +0 -0
- /package/dist/{src/tabs → tabs}/TabList.js +0 -0
- /package/dist/{src/tabs → tabs}/TabListScrollButton.js +0 -0
- /package/dist/{src/tabs → tabs}/tabIndicatorStyles.js +0 -0
- /package/dist/{src/tabs → tabs}/tabListScrollButtonStyles.js +0 -0
- /package/dist/{src/tabs → tabs}/tabListStyles.js +0 -0
- /package/dist/{src/tabs → tabs}/tabStyles.js +0 -0
- /package/dist/{src/tabs → tabs}/useTabList.js +0 -0
- /package/dist/{src/tabs → tabs}/useTabs.js +0 -0
- /package/dist/{src/tabs → tabs}/utils.js +0 -0
- /package/dist/{src/test-utils → test-utils}/IntersectionObserver.js +0 -0
- /package/dist/{src/test-utils → test-utils}/ResizeObserver.js +0 -0
- /package/dist/{src/test-utils → test-utils}/data-testid.js +0 -0
- /package/dist/{src/test-utils → test-utils}/index.js +0 -0
- /package/dist/{src/test-utils → test-utils}/jest-setup.js +0 -0
- /package/dist/{src/test-utils → test-utils}/matchMedia.js +0 -0
- /package/dist/{src/test-utils → test-utils}/polyfills/IntersectionObserver.js +0 -0
- /package/dist/{src/test-utils → test-utils}/polyfills/ResizeObserver.js +0 -0
- /package/dist/{src/test-utils → test-utils}/polyfills/index.js +0 -0
- /package/dist/{src/test-utils → test-utils}/polyfills/matchMedia.js +0 -0
- /package/dist/{src/test-utils → test-utils}/polyfills/offsetParent.js +0 -0
- /package/dist/{src/test-utils → test-utils}/polyfills/scrollIntoView.js +0 -0
- /package/dist/{src/test-utils → test-utils}/render.js +0 -0
- /package/dist/{src/test-utils → test-utils}/timers.js +0 -0
- /package/dist/{src/theme → theme}/LocalStorageColorSchemeProvider.js +0 -0
- /package/dist/{src/theme → theme}/ThemeProvider.js +0 -0
- /package/dist/{src/theme → theme}/colors.js +0 -0
- /package/dist/{src/theme → theme}/cssVars.js +0 -0
- /package/dist/{src/theme → theme}/types.js +0 -0
- /package/dist/{src/theme → theme}/useCSSVariables.js +0 -0
- /package/dist/{src/theme → theme}/useColorScheme.js +0 -0
- /package/dist/{src/theme → theme}/useColorSchemeMetaTag.js +0 -0
- /package/dist/{src/theme → theme}/useColorSchemeProvider.js +0 -0
- /package/dist/{src/theme → theme}/usePrefersColorScheme.js +0 -0
- /package/dist/{src/theme → theme}/utils.js +0 -0
- /package/dist/{src/tooltip → tooltip}/Tooltip.js +0 -0
- /package/dist/{src/tooltip → tooltip}/TooltipHoverModeProvider.js +0 -0
- /package/dist/{src/tooltip → tooltip}/constants.js +0 -0
- /package/dist/{src/tooltip → tooltip}/tooltipStyles.js +0 -0
- /package/dist/{src/tooltip → tooltip}/useTooltip.js +0 -0
- /package/dist/{src/tooltip → tooltip}/useTooltipPosition.js +0 -0
- /package/dist/{src/tooltip → tooltip}/utils.js +0 -0
- /package/dist/{src/transition → transition}/CSSTransition.js +0 -0
- /package/dist/{src/transition → transition}/Collapse.js +0 -0
- /package/dist/{src/transition → transition}/CrossFade.js +0 -0
- /package/dist/{src/transition → transition}/ScaleTransition.js +0 -0
- /package/dist/{src/transition → transition}/SkeletonPlaceholder.js +0 -0
- /package/dist/{src/transition → transition}/Slide.js +0 -0
- /package/dist/{src/transition → transition}/SlideContainer.js +0 -0
- /package/dist/{src/transition → transition}/collapseStyles.js +0 -0
- /package/dist/{src/transition → transition}/config.js +0 -0
- /package/dist/{src/transition → transition}/maxWidthTransition.js +0 -0
- /package/dist/{src/transition → transition}/skeletonPlaceholderUtils.js +0 -0
- /package/dist/{src/transition → transition}/types.js +0 -0
- /package/dist/{src/transition → transition}/useCSSTransition.js +0 -0
- /package/dist/{src/transition → transition}/useCarousel.js +0 -0
- /package/dist/{src/transition → transition}/useCollapseTransition.js +0 -0
- /package/dist/{src/transition → transition}/useCrossFadeTransition.js +0 -0
- /package/dist/{src/transition → transition}/useMaxWidthTransition.js +0 -0
- /package/dist/{src/transition → transition}/useScaleTransition.js +0 -0
- /package/dist/{src/transition → transition}/useSkeletonPlaceholder.js +0 -0
- /package/dist/{src/transition → transition}/useSlideTransition.js +0 -0
- /package/dist/{src/transition → transition}/useTransition.js +0 -0
- /package/dist/{src/transition → transition}/utils.js +0 -0
- /package/dist/{src/tree → tree}/DefaultTreeItemRenderer.js +0 -0
- /package/dist/{src/tree → tree}/Tree.js +0 -0
- /package/dist/{src/tree → tree}/TreeGroup.js +0 -0
- /package/dist/{src/tree → tree}/TreeItem.js +0 -0
- /package/dist/{src/tree → tree}/TreeItemExpander.js +0 -0
- /package/dist/{src/tree → tree}/TreeProvider.js +0 -0
- /package/dist/{src/tree → tree}/styles.js +0 -0
- /package/dist/{src/tree → tree}/types.js +0 -0
- /package/dist/{src/tree → tree}/useTree.js +0 -0
- /package/dist/{src/tree → tree}/useTreeExpansion.js +0 -0
- /package/dist/{src/tree → tree}/useTreeItems.js +0 -0
- /package/dist/{src/tree → tree}/useTreeMovement.js +0 -0
- /package/dist/{src/tree → tree}/useTreeSelection.js +0 -0
- /package/dist/{src/tree → tree}/utils.js +0 -0
- /package/dist/{src/types.js → types.js} +0 -0
- /package/dist/{src/typography → typography}/SrOnly.js +0 -0
- /package/dist/{src/typography → typography}/TextContainer.js +0 -0
- /package/dist/{src/typography → typography}/Typography.js +0 -0
- /package/dist/{src/typography → typography}/WritingDirectionProvider.js +0 -0
- /package/dist/{src/useAsyncAction.js → useAsyncAction.js} +0 -0
- /package/dist/{src/useDebouncedFunction.js → useDebouncedFunction.js} +0 -0
- /package/dist/{src/useDropzone.js → useDropzone.js} +0 -0
- /package/dist/{src/useElementSize.js → useElementSize.js} +0 -0
- /package/dist/{src/useEnsuredId.js → useEnsuredId.js} +0 -0
- /package/dist/{src/useEnsuredRef.js → useEnsuredRef.js} +0 -0
- /package/dist/{src/useEnsuredState.js → useEnsuredState.js} +0 -0
- /package/dist/{src/useHtmlClassName.js → useHtmlClassName.js} +0 -0
- /package/dist/{src/useIntersectionObserver.js → useIntersectionObserver.js} +0 -0
- /package/dist/{src/useIsomorphicLayoutEffect.js → useIsomorphicLayoutEffect.js} +0 -0
- /package/dist/{src/useLocalStorage.js → useLocalStorage.js} +0 -0
- /package/dist/{src/useOrientation.js → useOrientation.js} +0 -0
- /package/dist/{src/usePageInactive.js → usePageInactive.js} +0 -0
- /package/dist/{src/useResizeListener.js → useResizeListener.js} +0 -0
- /package/dist/{src/useResizeObserver.js → useResizeObserver.js} +0 -0
- /package/dist/{src/useThrottledFunction.js → useThrottledFunction.js} +0 -0
- /package/dist/{src/useToggle.js → useToggle.js} +0 -0
- /package/dist/{src/useUnmounted.js → useUnmounted.js} +0 -0
- /package/dist/{src/useWindowSize.js → useWindowSize.js} +0 -0
- /package/dist/{src/utils → utils}/RenderRecursively.js +0 -0
- /package/dist/{src/utils → utils}/alphaNumericSort.js +0 -0
- /package/dist/{src/utils → utils}/applyRef.js +0 -0
- /package/dist/{src/utils → utils}/bem.js +0 -0
- /package/dist/{src/utils → utils}/filters.js +0 -0
- /package/dist/{src/utils → utils}/getClientPosition.js +0 -0
- /package/dist/{src/utils → utils}/getMiddleOfRange.js +0 -0
- /package/dist/{src/utils → utils}/getPercentage.js +0 -0
- /package/dist/{src/utils → utils}/getRangeDefaultValue.js +0 -0
- /package/dist/{src/utils → utils}/getRangeSteps.js +0 -0
- /package/dist/{src/utils → utils}/identity.js +0 -0
- /package/dist/{src/utils → utils}/isElementVisible.js +0 -0
- /package/dist/{src/utils → utils}/loop.js +0 -0
- /package/dist/{src/utils → utils}/nearest.js +0 -0
- /package/dist/{src/utils → utils}/parseCssLengthUnit.js +0 -0
- /package/dist/{src/utils → utils}/randomInt.js +0 -0
- /package/dist/{src/utils → utils}/wait.js +0 -0
- /package/dist/{src/utils → utils}/withinRange.js +0 -0
- /package/dist/{src/window-splitter → window-splitter}/WindowSplitter.js +0 -0
- /package/dist/{src/window-splitter → window-splitter}/useWindowSplitter.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/list/listItemStyles.ts"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport { cssUtils } from \"../cssUtils.js\";\nimport { bem } from \"../utils/bem.js\";\nimport type {\n ListItemAddonPosition,\n ListItemAddonType,\n ListItemHeight,\n} from \"./types.js\";\n\nconst styles = bem(\"rmd-list-item\");\n\n/** @remarks \\@since 6.0.0 */\nexport interface ListItemClassNameOptions {\n className?: string;\n /**\n * @see {@link ListItemHeight}\n * @defaultValue `\"auto\"`\n */\n height?: ListItemHeight;\n\n /**\n * @defaultValue `false`\n */\n multiline?: boolean;\n\n /**\n * @defaultValue `false`\n */\n disabled?: boolean;\n\n /**\n * Note: This does nothing if the `disabled` prop is not enabled.\n *\n * @defaultValue `false`\n * @remarks \\@since 2.4.3\n */\n disabledOpacity?: boolean;\n\n /**\n * Set this to `false` if the list item should not gain the interaction\n * states: hover, focus, press, etc. This is kind of like being disabled\n * without the disabled styles being applied.\n *\n * @defaultValue `true`\n */\n clickable?: boolean;\n}\n\n/** @remarks \\@since 6.0.0 */\nexport interface InternalListItemClassNameOptions\n extends ListItemClassNameOptions {\n /**\n * @defaultValue `false`\n */\n link?: boolean;\n\n /**\n * This is prop is used internally when integrating with the\n * {@link useElementInteraction} hook.\n */\n pressedClassName?: string;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function listItem(\n options: InternalListItemClassNameOptions = {}\n): string {\n const {\n className,\n link = false,\n height = \"auto\",\n clickable = true,\n multiline = false,\n disabled = false,\n disabledOpacity = false,\n pressedClassName,\n } = options;\n\n return cnb(\n styles({\n link,\n [height]: height !== \"auto\",\n multiline,\n \"disabled-color\": disabled && !disabledOpacity,\n \"disabled-opacity\": disabled && disabledOpacity,\n }),\n cssUtils({ surface: clickable }),\n pressedClassName,\n className\n );\n}\n\n/** @remarks \\@since 6.0.0 */\nexport interface ListItemTextClassNameOptions {\n className?: string;\n /**\n * @defaultValue `false`\n */\n clamped?: boolean;\n\n /**\n * @defaultValue `false`\n */\n secondary?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function listItemText(\n options: ListItemTextClassNameOptions = {}\n): string {\n const { className, secondary = false, clamped = false } = options;\n\n return cnb(\n styles(\"text\", {\n clamped: secondary && clamped,\n secondary,\n }),\n className\n );\n}\n\n/** @remarks \\@since 6.0.0 */\nexport interface ListItemAddonClassNameOptions {\n className?: string;\n\n /**\n * The addon type that is used to adjust the spacing styles.\n *\n * @defaultValue `\"icon\"`\n */\n type?: ListItemAddonType;\n\n /**\n * The vertical position to use for the addon.\n *\n * @defaultValue `\"middle\"`\n */\n position?: ListItemAddonPosition;\n\n /**\n * Boolean if the addon should appear after the `children`.\n *\n * @defaultValue `false`\n */\n addonAfter?: boolean;\n\n /**\n * The media items are centered by default using:\n * ```scss\n * align-items: center;\n * display: flex;\n * justify-content: center;\n * ```\n *\n * When this is set to `true`, the flex styles will not be applied.\n *\n * @defaultValue `false`\n * @remarks \\@since 6.0.0\n */\n disableCenteredMedia?: boolean;\n\n /**\n * Set this to `true` to disable the additional spacing applied to the addons\n * that appear before the `children` and the normal `--rmd-text-icon-spacing`\n * value is used instead.\n *\n * @defaultValue `false`\n */\n disableBeforeSpacing?: boolean;\n}\n\n/**\n *\n * @remarks \\@since 6.0.0\n */\nexport function listItemAddon(\n options: ListItemAddonClassNameOptions = {}\n): string {\n const {\n type = \"icon\",\n position = \"middle\",\n className,\n addonAfter = false,\n disableCenteredMedia = false,\n disableBeforeSpacing = false,\n } = options;\n\n const isMedia = type === \"media\" || type === \"large-media\";\n const isAvatar = type === \"avatar\";\n\n return cnb(\n styles(\"addon\", {\n [position]: position !== \"middle\",\n before: !disableBeforeSpacing && !addonAfter,\n \"avatar-before\": !disableBeforeSpacing && !addonAfter && isAvatar,\n media: isMedia,\n \"media-large\": type === \"large-media\",\n \"media-centered\": isMedia && !disableCenteredMedia,\n }),\n className\n );\n}\n"],"names":["cnb","cssUtils","bem","styles","listItem","options","className","link","height","clickable","multiline","disabled","disabledOpacity","pressedClassName","surface","listItemText","secondary","clamped","listItemAddon","type","position","addonAfter","disableCenteredMedia","disableBeforeSpacing","isMedia","isAvatar","before","media"],"mappings":"AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,QAAQ,QAAQ,iBAAiB;AAC1C,SAASC,GAAG,QAAQ,kBAAkB;AAOtC,MAAMC,SAASD,IAAI;AAsDnB;;CAEC,GACD,OAAO,SAASE,SACdC,UAA4C,CAAC,CAAC;IAE9C,MAAM,EACJC,SAAS,EACTC,OAAO,KAAK,EACZC,SAAS,MAAM,EACfC,YAAY,IAAI,EAChBC,YAAY,KAAK,EACjBC,WAAW,KAAK,EAChBC,kBAAkB,KAAK,EACvBC,gBAAgB,EACjB,GAAGR;IAEJ,OAAOL,IACLG,OAAO;QACLI;QACA,CAACC,OAAO,EAAEA,WAAW;QACrBE;QACA,kBAAkBC,YAAY,CAACC;QAC/B,oBAAoBD,YAAYC;IAClC,IACAX,SAAS;QAAEa,SAASL;IAAU,IAC9BI,kBACAP;AAEJ;AAgBA;;CAEC,GACD,OAAO,SAASS,aACdV,UAAwC,CAAC,CAAC;IAE1C,MAAM,EAAEC,SAAS,EAAEU,YAAY,KAAK,EAAEC,UAAU,KAAK,EAAE,GAAGZ;IAE1D,OAAOL,IACLG,OAAO,QAAQ;QACbc,SAASD,aAAaC;QACtBD;IACF,IACAV;AAEJ;AAoDA;;;CAGC,GACD,OAAO,SAASY,cACdb,UAAyC,CAAC,CAAC;IAE3C,MAAM,EACJc,OAAO,MAAM,EACbC,WAAW,QAAQ,EACnBd,SAAS,EACTe,aAAa,KAAK,EAClBC,uBAAuB,KAAK,EAC5BC,uBAAuB,KAAK,EAC7B,GAAGlB;IAEJ,MAAMmB,UAAUL,SAAS,WAAWA,SAAS;IAC7C,MAAMM,WAAWN,SAAS;IAE1B,OAAOnB,IACLG,OAAO,SAAS;QACd,CAACiB,SAAS,EAAEA,aAAa;QACzBM,QAAQ,CAACH,wBAAwB,CAACF;QAClC,iBAAiB,CAACE,wBAAwB,CAACF,cAAcI;QACzDE,OAAOH;QACP,eAAeL,SAAS;QACxB,kBAAkBK,WAAW,CAACF;IAChC,IACAhB;AAEJ"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/list/types.ts"],"sourcesContent":["import { type HTMLAttributes, type ReactNode } from \"react\";\nimport { type PropsWithRef } from \"../types.js\";\n\n/**\n * The height to apply to the list item.\n *\n * Conversions:\n *\n * - height !== undefined && height !== \"auto\" -> height\n * - secondaryText or left/right addon is media/media-large -> \"extra-large\"\n * - left/right addon is avatar -> \"large\"\n * - left/right addon is icon -> \"medium\"\n * - no addons and no secondary text -> \"normal\"\n */\nexport type ListItemHeight =\n | \"auto\"\n | \"normal\"\n | \"medium\"\n | \"large\"\n | \"extra-large\";\n\nexport type ListItemAddonPosition = \"top\" | \"middle\" | \"bottom\";\nexport type ListItemAddonType = \"icon\" | \"avatar\" | \"media\" | \"large-media\";\n\n/** @remarks \\@since 6.0.0 */\nexport interface ListItemChildrenAddonProps {\n /**\n * An optional addon to display to the left of the `primaryText` or\n * `children` and should be used with the `leftAddonType` prop to adjust\n * spacing.\n */\n leftAddon?: ReactNode;\n\n /**\n * The type of the addon that appears to the left of the `primaryText` or\n * `children`.\n *\n * @defaultValue `\"icon\"`\n */\n leftAddonType?: ListItemAddonType;\n\n /**\n * The vertical position the left icon, avatar, media, or large media\n * should be placed.\n *\n * @defaultValue `\"middle\"`\n */\n leftAddonPosition?: ListItemAddonPosition;\n\n /**\n * @remarks \\@since 6.0.0\n */\n leftAddonClassName?: string;\n\n /**\n * Set this to `true` if your addon does not accept a `className` prop to\n * apply the correct styling.\n *\n * @defaultValue `leftAddonType === \"media\" || leftAddonType === \"large-media\"`\n * @remarks \\@since 6.0.0\n */\n leftAddonForceWrap?: boolean;\n\n /**\n * Set this to `true` to disable the additional spacing applied to the addons\n * that appear before the `children` and the normal `--rmd-text-icon-spacing`\n * value is used instead.\n *\n * @defaultValue `false`\n */\n disableLeftAddonSpacing?: boolean;\n\n /**\n * An optional addon to display to the right of the `primaryText` or\n * `children` and should be used with the `rightAddonType` prop to adjust\n * spacing.\n */\n rightAddon?: ReactNode;\n\n /**\n * The type of the addon that appears to the right of the `primaryText` or\n * `children`.\n *\n * @defaultValue `\"icon\"`\n */\n rightAddonType?: ListItemAddonType;\n\n /**\n * The vertical position the right icon, avatar, media, or large media\n * should be placed.\n *\n * @defaultValue `\"middle\"`\n */\n rightAddonPosition?: ListItemAddonPosition;\n\n /**\n * @remarks \\@since 6.0.0\n */\n rightAddonClassName?: string;\n\n /**\n * Set this to `true` if your addon does not accept a `className` prop to\n * apply the correct styling.\n *\n * @defaultValue `rightAddonType === \"media\" || rightAddonType === \"large-media\"`\n * @remarks \\@since 6.0.0\n */\n rightAddonForceWrap?: boolean;\n\n /**\n * The media items are centered by default using:\n * ```scss\n * align-items: center;\n * display: flex;\n * justify-content: center;\n * ```\n *\n * When this is set to `true`, the flex styles will not be applied.\n *\n * @defaultValue `false`\n * @remarks \\@since 6.0.0\n */\n disableLeftAddonCenteredMedia?: boolean;\n\n /**\n * The media items are centered by default using:\n * ```scss\n * align-items: center;\n * display: flex;\n * justify-content: center;\n * ```\n *\n * When this is set to `true`, the flex styles will not be applied.\n *\n * @defaultValue `false`\n * @remarks \\@since 6.0.0\n */\n disableRightAddonCenteredMedia?: boolean;\n}\n\nexport interface ListItemChildrenProps extends ListItemChildrenAddonProps {\n /**\n * The main content to display. When the `textChildren` prop is enabled and\n * there is child content, it will be treated as primary text and update the\n * styles automatically.\n */\n children?: ReactNode;\n\n /**\n * Any additional props that should be passed to the `<span>` surrounding\n * the {@link children}, {@link primaryText}, and {@link secondaryText}.\n *\n * @remarks \\@since 6.0.0\n */\n textProps?: PropsWithRef<HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>;\n\n /**\n * An optional className to apply to the `<span>` that surrounds the\n * `primaryText` and optionally `secondaryText` within the list item.\n */\n textClassName?: string;\n\n /**\n * An optional className to apply to the `<span>` that surrounds the\n * `secondaryText` within the list item.\n */\n secondaryTextClassName?: string;\n\n /**\n * Set this to `true` if the {@link children} should not automatically be\n * wrapped in the `ListItemText` component.\n *\n * @remarks \\@since 6.0.0 Renamed from `textChildren` since it was defaulted on.\n * @defaultValue `false`\n */\n disableTextChildren?: boolean;\n\n /**\n * An optional element that should be rendered as the `primaryText` within the\n * list item. It is most likely easier to use the `children` prop instead, but\n * this allows you to create more complex components with the `ListItem` since\n * you can provided `children` and have the styles for the `primaryText` still\n * applied. By default, this will only allow one line of text and add ellipsis\n * for any text overflow.\n */\n primaryText?: ReactNode;\n\n /**\n * An optional element that should be rendered as the `secondaryText` within\n * the list item. By default, this will only span one line and add ellipsis\n * for overflow.\n */\n secondaryText?: ReactNode;\n\n /**\n * Any additional props that should be passed to the `<span>` surrounding\n * the {@link secondaryText}.\n *\n * @remarks \\@since 6.0.0\n */\n secondaryTextProps?: PropsWithRef<\n HTMLAttributes<HTMLSpanElement>,\n HTMLSpanElement\n >;\n\n /**\n * Set this to `true` to allow the {@link secondaryText} to span multiple\n * lines and use the CSS clamp after two lines of text are visible. The number\n * of lines can be configured by `core.$list-item-multiline-clamp` or\n * `@include core.list-set-var(item-multiline-clamp, $new-value)`.\n *\n * @see {@link https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-line-clamp}\n * @defaultValue `false`\n */\n multiline?: boolean;\n}\n"],"names":[],"mappings":"AA4IA,WA2EC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/media-queries/AppSizeProvider.tsx"],"sourcesContent":["\"use client\";\nimport {\n createContext,\n useContext,\n useMemo,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { useSsr } from \"../SsrProvider.js\";\nimport { useOrientation } from \"../useOrientation.js\";\nimport {\n DEFAULT_APP_SIZE,\n DEFAULT_DESKTOP_LARGE_MIN_WIDTH,\n DEFAULT_DESKTOP_MIN_WIDTH,\n DEFAULT_PHONE_MAX_WIDTH,\n DEFAULT_TABLET_MAX_WIDTH,\n DEFAULT_TABLET_MIN_WIDTH,\n type AppSize,\n type AppSizeQueries,\n} from \"./appSize.js\";\nimport { useMediaQuery } from \"./useMediaQuery.js\";\n\n/** @internal */\ninterface AppSizeContext extends AppSize {\n __root: boolean;\n}\n\nconst context = createContext<AppSizeContext>({\n __root: false,\n isPhone: false,\n isTablet: false,\n isDesktop: true,\n isLargeDesktop: false,\n isLandscape: true,\n});\ncontext.displayName = \"AppSize\";\nconst { Provider } = context;\n\n/**\n * **Note**: The app size object returned by this hook will **not** be equal\n * between renders.\n *\n * @example\n * Simple Example\n * ```tsx\n * import { useAppSize } from \"@react-md/core\";\n *\n * function Example() {\n * const { isPhone, isTablet, isDesktop, isLargeDesktop, isLandscape } =\n * useAppSize()\n *\n * // do something based on the app size\n * return null;\n * }\n * ```\n *\n * @returns the current app size.\n * @throws \"The `AppSizeProvider` has not been mounted.\"\n */\nexport function useAppSize(): Readonly<AppSize> {\n const { __root, ...appSize } = useContext(context);\n if (!__root) {\n throw new Error(\"The `AppSizeProvider` has not been mounted.\");\n }\n\n return appSize;\n}\n\nexport interface AppSizeProviderProps extends AppSizeQueries {\n /**\n * @defaultValue `DEFAULT_APP_SIZE`\n * @see {@link DEFAULT_APP_SIZE}\n */\n ssrSize?: Readonly<AppSize>;\n children: ReactNode;\n}\n\n/**\n * **Client Component**\n *\n * This component should be mounted near the root of your app to determine the\n * current app size based on different media queries.\n */\nexport function AppSizeProvider(props: AppSizeProviderProps): ReactElement {\n const {\n ssrSize = DEFAULT_APP_SIZE,\n phoneMaxWidth = DEFAULT_PHONE_MAX_WIDTH,\n tabletMinWidth = DEFAULT_TABLET_MIN_WIDTH,\n tabletMaxWidth = DEFAULT_TABLET_MAX_WIDTH,\n desktopMinWidth = DEFAULT_DESKTOP_MIN_WIDTH,\n desktopLargeMinWidth = DEFAULT_DESKTOP_LARGE_MIN_WIDTH,\n children,\n } = props;\n const { __root } = useContext(context);\n if (__root) {\n throw new Error(\"The `AppSizeProvider` cannot be mounted multiple times.\");\n }\n\n const ssr = useSsr();\n const matchesDesktop = useMediaQuery(\n `screen and (min-width: ${desktopMinWidth})`\n );\n const matchesLargeDesktop = useMediaQuery(\n `screen and (min-width: ${desktopLargeMinWidth})`\n );\n const matchesTablet = useMediaQuery(\n `screen and (min-width: ${tabletMinWidth}) and (max-width: ${tabletMaxWidth})`\n );\n const matchesPhone = useMediaQuery(\n `screen and (max-width: ${phoneMaxWidth})`\n );\n const isDesktop = matchesDesktop;\n const isTablet = !matchesDesktop && matchesTablet;\n const isPhone = !isTablet && !isDesktop && matchesPhone;\n const isLandscape = useOrientation().includes(\"landscape\");\n const isLargeDesktop = matchesLargeDesktop;\n\n const appSize = useMemo<AppSizeContext>(\n () => ({\n __root: true,\n isPhone,\n isTablet,\n isDesktop,\n isLargeDesktop,\n isLandscape,\n }),\n [isDesktop, isLandscape, isLargeDesktop, isPhone, isTablet]\n );\n\n let value = appSize;\n if (ssr || typeof window === \"undefined\") {\n value = {\n __root: true,\n ...ssrSize,\n };\n }\n\n return <Provider value={value}>{children}</Provider>;\n}\n"],"names":["createContext","useContext","useMemo","useSsr","useOrientation","DEFAULT_APP_SIZE","DEFAULT_DESKTOP_LARGE_MIN_WIDTH","DEFAULT_DESKTOP_MIN_WIDTH","DEFAULT_PHONE_MAX_WIDTH","DEFAULT_TABLET_MAX_WIDTH","DEFAULT_TABLET_MIN_WIDTH","useMediaQuery","context","__root","isPhone","isTablet","isDesktop","isLargeDesktop","isLandscape","displayName","Provider","useAppSize","appSize","Error","AppSizeProvider","props","ssrSize","phoneMaxWidth","tabletMinWidth","tabletMaxWidth","desktopMinWidth","desktopLargeMinWidth","children","ssr","matchesDesktop","matchesLargeDesktop","matchesTablet","matchesPhone","includes","value","window"],"mappings":"AAAA;;AACA,SACEA,aAAa,EACbC,UAAU,EACVC,OAAO,QAGF,QAAQ;AACf,SAASC,MAAM,QAAQ,oBAAoB;AAC3C,SAASC,cAAc,QAAQ,uBAAuB;AACtD,SACEC,gBAAgB,EAChBC,+BAA+B,EAC/BC,yBAAyB,EACzBC,uBAAuB,EACvBC,wBAAwB,EACxBC,wBAAwB,QAGnB,eAAe;AACtB,SAASC,aAAa,QAAQ,qBAAqB;AAOnD,MAAMC,wBAAUZ,cAA8B;IAC5Ca,QAAQ;IACRC,SAAS;IACTC,UAAU;IACVC,WAAW;IACXC,gBAAgB;IAChBC,aAAa;AACf;AACAN,QAAQO,WAAW,GAAG;AACtB,MAAM,EAAEC,QAAQ,EAAE,GAAGR;AAErB;;;;;;;;;;;;;;;;;;;;CAoBC,GACD,OAAO,SAASS;IACd,MAAM,EAAER,MAAM,EAAE,GAAGS,SAAS,GAAGrB,WAAWW;IAC1C,IAAI,CAACC,QAAQ;QACX,MAAM,IAAIU,MAAM;IAClB;IAEA,OAAOD;AACT;AAWA;;;;;CAKC,GACD,OAAO,SAASE,gBAAgBC,KAA2B;IACzD,MAAM,EACJC,UAAUrB,gBAAgB,EAC1BsB,gBAAgBnB,uBAAuB,EACvCoB,iBAAiBlB,wBAAwB,EACzCmB,iBAAiBpB,wBAAwB,EACzCqB,kBAAkBvB,yBAAyB,EAC3CwB,uBAAuBzB,+BAA+B,EACtD0B,QAAQ,EACT,GAAGP;IACJ,MAAM,EAAEZ,MAAM,EAAE,GAAGZ,WAAWW;IAC9B,IAAIC,QAAQ;QACV,MAAM,IAAIU,MAAM;IAClB;IAEA,MAAMU,MAAM9B;IACZ,MAAM+B,iBAAiBvB,cACrB,CAAC,uBAAuB,EAAEmB,gBAAgB,CAAC,CAAC;IAE9C,MAAMK,sBAAsBxB,cAC1B,CAAC,uBAAuB,EAAEoB,qBAAqB,CAAC,CAAC;IAEnD,MAAMK,gBAAgBzB,cACpB,CAAC,uBAAuB,EAAEiB,eAAe,kBAAkB,EAAEC,eAAe,CAAC,CAAC;IAEhF,MAAMQ,eAAe1B,cACnB,CAAC,uBAAuB,EAAEgB,cAAc,CAAC,CAAC;IAE5C,MAAMX,YAAYkB;IAClB,MAAMnB,WAAW,CAACmB,kBAAkBE;IACpC,MAAMtB,UAAU,CAACC,YAAY,CAACC,aAAaqB;IAC3C,MAAMnB,cAAcd,iBAAiBkC,QAAQ,CAAC;IAC9C,MAAMrB,iBAAiBkB;IAEvB,MAAMb,UAAUpB,QACd,IAAO,CAAA;YACLW,QAAQ;YACRC;YACAC;YACAC;YACAC;YACAC;QACF,CAAA,GACA;QAACF;QAAWE;QAAaD;QAAgBH;QAASC;KAAS;IAG7D,IAAIwB,QAAQjB;IACZ,IAAIW,OAAO,OAAOO,WAAW,aAAa;QACxCD,QAAQ;YACN1B,QAAQ;YACR,GAAGa,OAAO;QACZ;IACF;IAEA,qBAAO,KAACN;QAASmB,OAAOA;kBAAQP;;AAClC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/media-queries/appSize.ts"],"sourcesContent":["export type QuerySize = number | `${number}${string}`;\n\n/** @defaultValue `47.9375em` */\nexport const DEFAULT_PHONE_MAX_WIDTH = `${767 / 16}em` satisfies QuerySize;\n\n/** @defaultValue `48em` */\nexport const DEFAULT_TABLET_MIN_WIDTH = `${768 / 16}em` satisfies QuerySize;\n\n/** @defaultValue `64em` */\nexport const DEFAULT_TABLET_MAX_WIDTH = `${1024 / 16}em` satisfies QuerySize;\n\n/** @defaultValue `64.0625em` */\nexport const DEFAULT_DESKTOP_MIN_WIDTH = `${1025 / 16}em` satisfies QuerySize;\n\n/** @defaultValue `80em` */\nexport const DEFAULT_DESKTOP_LARGE_MIN_WIDTH = `${\n 1280 / 16\n}em` satisfies QuerySize;\n\nexport interface AppSizeQueries {\n /**\n * The max width to use for phones. This one is a max width unlike the others\n * since everything from 0 to this value will be considered a phone.\n *\n * @defaultValue `47.9375em`\n * @see {@link DEFAULT_PHONE_MAX_WIDTH}\n */\n phoneMaxWidth?: QuerySize;\n\n /**\n * The min width for a tablet device.\n *\n * @defaultValue `48em`\n * @see {@link DEFAULT_TABLET_MIN_WIDTH}\n */\n tabletMinWidth?: QuerySize;\n\n /**\n * The max width for a tablet device. This should normally be `1px` less than\n * the `desktopMinWidth`, but it can be any value if needed. The tablet has a\n * range of min to max so that you can have a bit more control.\n *\n * @defaultValue `64em`\n * @see {@link DEFAULT_TABLET_MAX_WIDTH}\n */\n tabletMaxWidth?: QuerySize;\n\n /**\n * The min width for a desktop screen.\n *\n * @defaultValue `64.0625em`\n * @see {@link DEFAULT_DESKTOP_MIN_WIDTH}\n */\n desktopMinWidth?: QuerySize;\n\n /**\n * The min width for a large (1440p, 4k, etc) desktop screen.\n *\n * @defaultValue `80em`\n * @see {@link DEFAULT_DESKTOP_LARGE_MIN_WIDTH}\n */\n desktopLargeMinWidth?: QuerySize;\n}\n\nexport const DEFAULT_APP_SIZE_QUERIES: Readonly<AppSizeQueries> = {\n phoneMaxWidth: DEFAULT_PHONE_MAX_WIDTH,\n tabletMinWidth: DEFAULT_TABLET_MIN_WIDTH,\n tabletMaxWidth: DEFAULT_TABLET_MAX_WIDTH,\n desktopMinWidth: DEFAULT_DESKTOP_MIN_WIDTH,\n desktopLargeMinWidth: DEFAULT_DESKTOP_LARGE_MIN_WIDTH,\n};\n\n/**\n * The current size for your application. This should work both server side and\n * client side, but you will have much better results client side.\n */\nexport interface AppSize {\n /**\n * Boolean if currently matching a phone by comparing the max width of the\n * device.\n */\n isPhone: boolean;\n\n /**\n * Boolean if currently matching a tablet by comparing the max width of the\n * device.\n */\n isTablet: boolean;\n\n /**\n * Boolean if currently matching a desktop screen by comparing the max width\n * of the device.\n */\n isDesktop: boolean;\n\n /**\n * Boolean if currently matching a large desktop screen by comparing the max\n * width of the device.\n */\n isLargeDesktop: boolean;\n\n /**\n * Boolean if the app is considered to be in landscape mode. This will just\n * verify that the window width is greater than the window height.\n *\n * NOTE: This might not be super accurate on Android devices since the soft\n * keyboard will change the dimensions of the viewport when it appears. It is\n * recommended to use the `useOrientation` hook as well if you'd like to get\n * the current orientation type.\n */\n isLandscape: boolean;\n}\n\nexport const DEFAULT_APP_SIZE: AppSize = {\n isPhone: false,\n isTablet: false,\n isDesktop: true,\n isLargeDesktop: false,\n isLandscape: true,\n};\n"],"names":["DEFAULT_PHONE_MAX_WIDTH","DEFAULT_TABLET_MIN_WIDTH","DEFAULT_TABLET_MAX_WIDTH","DEFAULT_DESKTOP_MIN_WIDTH","DEFAULT_DESKTOP_LARGE_MIN_WIDTH","DEFAULT_APP_SIZE_QUERIES","phoneMaxWidth","tabletMinWidth","tabletMaxWidth","desktopMinWidth","desktopLargeMinWidth","DEFAULT_APP_SIZE","isPhone","isTablet","isDesktop","isLargeDesktop","isLandscape"],"mappings":"AAEA,8BAA8B,GAC9B,OAAO,MAAMA,0BAA0B,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAqB;AAE3E,yBAAyB,GACzB,OAAO,MAAMC,2BAA2B,CAAC,EAAE,MAAM,GAAG,EAAE,CAAC,CAAqB;AAE5E,yBAAyB,GACzB,OAAO,MAAMC,2BAA2B,CAAC,EAAE,OAAO,GAAG,EAAE,CAAC,CAAqB;AAE7E,8BAA8B,GAC9B,OAAO,MAAMC,4BAA4B,CAAC,EAAE,OAAO,GAAG,EAAE,CAAC,CAAqB;AAE9E,yBAAyB,GACzB,OAAO,MAAMC,kCAAkC,CAAC,EAC9C,OAAO,GACR,EAAE,CAAC,CAAqB;AA+CzB,OAAO,MAAMC,2BAAqD;IAChEC,eAAeN;IACfO,gBAAgBN;IAChBO,gBAAgBN;IAChBO,iBAAiBN;IACjBO,sBAAsBN;AACxB,EAAE;AA2CF,OAAO,MAAMO,mBAA4B;IACvCC,SAAS;IACTC,UAAU;IACVC,WAAW;IACXC,gBAAgB;IAChBC,aAAa;AACf,EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/media-queries/useMediaQuery.ts"],"sourcesContent":["\"use client\";\nimport { useEffect, useState } from \"react\";\nimport { useSsr } from \"../SsrProvider.js\";\n\n/**\n * @example\n * Simple Example\n * ```tsx\n * import { useMediaQuery } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * const matches = useMediaQuery(\"screen and (min-width: 768px)\");\n *\n * return <>{matches ? \"Matches\" : \"Doesn't\"}</>;\n * }\n * ```\n *\n * @param query - The media query to use\n * @param disabled - When `true`, the `window.matchMedia` API will not be\n * activated and the hook will always return `false`.\n * @returns `true` if the media query matches\n * @remarks \\@since 6.0.0\n */\nexport function useMediaQuery(query: string, disabled = false): boolean {\n const ssr = useSsr();\n const [matches, setMatches] = useState(() => {\n if (typeof window === \"undefined\" || disabled || ssr) {\n return false;\n }\n\n return window.matchMedia(query).matches;\n });\n\n useEffect(() => {\n if (disabled || ssr) {\n return;\n }\n\n const result = window.matchMedia(query);\n setMatches(result.matches);\n\n const updater = ({ matches }: MediaQueryListEvent): void =>\n setMatches(matches);\n\n result.addEventListener(\"change\", updater);\n return () => {\n result.removeEventListener(\"change\", updater);\n };\n }, [disabled, query, ssr]);\n\n return matches;\n}\n"],"names":["useEffect","useState","useSsr","useMediaQuery","query","disabled","ssr","matches","setMatches","window","matchMedia","result","updater","addEventListener","removeEventListener"],"mappings":"AAAA;AACA,SAASA,SAAS,EAAEC,QAAQ,QAAQ,QAAQ;AAC5C,SAASC,MAAM,QAAQ,oBAAoB;AAE3C;;;;;;;;;;;;;;;;;;;CAmBC,GACD,OAAO,SAASC,cAAcC,KAAa,EAAEC,WAAW,KAAK;IAC3D,MAAMC,MAAMJ;IACZ,MAAM,CAACK,SAASC,WAAW,GAAGP,SAAS;QACrC,IAAI,OAAOQ,WAAW,eAAeJ,YAAYC,KAAK;YACpD,OAAO;QACT;QAEA,OAAOG,OAAOC,UAAU,CAACN,OAAOG,OAAO;IACzC;IAEAP,UAAU;QACR,IAAIK,YAAYC,KAAK;YACnB;QACF;QAEA,MAAMK,SAASF,OAAOC,UAAU,CAACN;QACjCI,WAAWG,OAAOJ,OAAO;QAEzB,MAAMK,UAAU,CAAC,EAAEL,OAAO,EAAuB,GAC/CC,WAAWD;QAEbI,OAAOE,gBAAgB,CAAC,UAAUD;QAClC,OAAO;YACLD,OAAOG,mBAAmB,CAAC,UAAUF;QACvC;IACF,GAAG;QAACP;QAAUD;QAAOE;KAAI;IAEzB,OAAOC;AACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/DropdownMenu.tsx"],"sourcesContent":["\"use client\";\nimport {\n useCallback,\n useRef,\n type ReactElement,\n type ReactNode,\n type RefObject,\n} from \"react\";\nimport { useUserInteractionMode } from \"../interaction/UserInteractionModeProvider.js\";\nimport { getLastFocusableIndex } from \"../movement/utils.js\";\nimport { type UseStateSetter } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useEnsuredState } from \"../useEnsuredState.js\";\nimport {\n Menu,\n type MenuConvenienceProps,\n type MenuListConvenienceProps,\n} from \"./Menu.js\";\nimport { MenuButton, type MenuButtonProps } from \"./MenuButton.js\";\nimport {\n MenuConfigurationProvider,\n type MenuConfiguration,\n} from \"./MenuConfigurationProvider.js\";\nimport { MenuItemButton, type MenuItemButtonProps } from \"./MenuItemButton.js\";\nimport { type MenuSheetConvenienceProps } from \"./MenuSheet.js\";\nimport { MenuVisibilityProvider } from \"./MenuVisibilityProvider.js\";\nimport { useMenuBarContext } from \"./useMenuBarProvider.js\";\n\nexport interface BaseDropdownMenuProps\n extends MenuConfiguration,\n MenuListConvenienceProps,\n MenuSheetConvenienceProps,\n MenuConvenienceProps {\n buttonChildren: ReactNode;\n}\n\nexport interface DropdownMenuButtonProps\n extends MenuButtonProps,\n BaseDropdownMenuProps {}\n\nexport interface DropdownMenuItemButtonProps\n extends MenuItemButtonProps,\n BaseDropdownMenuProps {}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface DropdownMenuStateProps {\n visible: boolean;\n setVisible: UseStateSetter<boolean>;\n}\n\n/**\n * @remarks\n * \\@since 5.0.0\n * \\@since 6.0.0 Updated to use an `&` instead of `|` to allow autocompletion to\n * work better by default. It's up to the user to make sure they don't provide\n * incorrect props.\n */\nexport type DropdownMenuProps = DropdownMenuButtonProps &\n DropdownMenuItemButtonProps &\n (DropdownMenuStateProps | { visible?: never; setVisible?: never });\n\n/**\n * **Client Component**\n *\n * @example\n * Simple Example\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import { DropdownMenu, MenuItem } from \"@react-md/core\";\n *\n * function Example() {\n * return (\n * <DropdownMenu buttonChildren=\"Dropdown\">\n * <MenuItem onClick={() => console.log('Clicked Item 1')}>\n * Item 1\n * </MenuItem>\n * <MenuItem onClick={() => console.log('Clicked Item 2')}>\n * Item 2\n * </MenuItem>\n * </DropdownMenu>\n * );\n * }\n * ```\n *\n * @example\n * Nested Dropdown Menus\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import { DropdownMenu, MenuItem } from \"@react-md/core\";\n *\n * function Example() {\n * return (\n * <DropdownMenu buttonChildren=\"Dropdown\">\n * <MenuItem onClick={() => console.log('Clicked Item 1')}>\n * Item 1\n * </MenuItem>\n * <MenuItem onClick={() => console.log('Clicked Item 2')}>\n * Item 2\n * </MenuItem>\n * <DropdownMenu buttonChildren=\"Nested Dropdown\">\n * <MenuItem onClick={() => console.log('Clicked Item 1')}>\n * Nested Item 1\n * </MenuItem>\n * <MenuItem onClick={() => console.log('Clicked Item 2')}>\n * Nested Item 2\n * </MenuItem>\n * </DropdownMenu>\n * </DropdownMenu>\n * );\n * }\n * ```\n *\n * @remarks\n * \\@since 5.0.0\n * \\@since 6.0.0 Updated to use the latest menu API.\n */\nexport function DropdownMenu(props: DropdownMenuProps): ReactElement {\n const {\n id: propId,\n horizontal,\n sheetHeader,\n sheetFooter,\n renderAsSheet,\n sheetPosition,\n sheetVerticalSize,\n buttonChildren,\n iconRotatorProps: propIconRotatorProps,\n disableTransition: propDisableTransition,\n floating,\n anchor,\n vwMargin,\n vhMargin,\n xMargin,\n yMargin,\n initialX,\n initialY,\n width,\n transformOrigin,\n preventOverlap,\n disableSwapping,\n disableVHBounds,\n preventScroll,\n closeOnResize,\n closeOnScroll,\n getFixedPositionOptions,\n children,\n temporary,\n disablePortal,\n disableElevation,\n menuProps,\n menuStyle,\n menuClassName,\n sheetProps,\n sheetStyle,\n sheetClassName,\n visible: propVisible,\n setVisible: propSetVisible,\n ...remaining\n } = props;\n\n const fixedTo = useRef<HTMLElement | HTMLButtonElement>(null);\n const defaultFocusIndex = useRef(0);\n const [visible, setVisible] = useEnsuredState({\n value: propVisible,\n setValue: propSetVisible,\n defaultValue: false,\n });\n const { menubar, menuitem, activeIdRef, animatedOnceRef } =\n useMenuBarContext();\n const id = useEnsuredId(propId, `menu${menuitem ? \"item\" : \"button\"}`);\n const mode = useUserInteractionMode();\n const mouse = mode === \"mouse\";\n const keyboard = mode === \"keyboard\";\n const disableTransition =\n propDisableTransition ??\n (animatedOnceRef.current &&\n menubar &&\n !!activeIdRef.current &&\n (mouse || keyboard));\n\n const onRequestClose = useCallback(() => {\n setVisible(false);\n }, [setVisible]);\n\n let iconRotatorProps = propIconRotatorProps;\n if (disableTransition) {\n iconRotatorProps = {\n disableTransition,\n ...propIconRotatorProps,\n };\n }\n\n let toggle: ReactElement;\n if (menuitem) {\n toggle = (\n <MenuItemButton\n {...(remaining as DropdownMenuItemButtonProps)}\n id={id}\n ref={fixedTo as RefObject<HTMLLIElement>}\n iconRotatorProps={iconRotatorProps}\n >\n {buttonChildren}\n </MenuItemButton>\n );\n } else {\n toggle = (\n <MenuButton\n {...(remaining as DropdownMenuButtonProps)}\n id={id}\n ref={fixedTo as RefObject<HTMLButtonElement>}\n floating={floating}\n iconRotatorProps={iconRotatorProps}\n >\n {buttonChildren}\n </MenuButton>\n );\n }\n\n return (\n <MenuVisibilityProvider\n visible={visible}\n setVisible={setVisible}\n defaultFocusIndex={defaultFocusIndex}\n >\n <MenuConfigurationProvider\n horizontal={horizontal}\n renderAsSheet={renderAsSheet}\n sheetFooter={sheetFooter}\n sheetHeader={sheetHeader}\n sheetPosition={sheetPosition}\n sheetVerticalSize={sheetVerticalSize}\n >\n {toggle}\n </MenuConfigurationProvider>\n <Menu\n aria-labelledby={(menuProps?.[\"aria-label\"] ? undefined : id) as string}\n style={menuStyle}\n className={menuClassName}\n sheetProps={sheetProps}\n sheetStyle={sheetStyle}\n sheetClassName={sheetClassName}\n temporary={temporary}\n disablePortal={disablePortal}\n disableElevation={disableElevation}\n disableTransition={disableTransition}\n floating={floating}\n anchor={anchor}\n vwMargin={vwMargin}\n vhMargin={vhMargin}\n xMargin={xMargin}\n yMargin={yMargin}\n initialX={initialX}\n initialY={initialY}\n width={width}\n transformOrigin={transformOrigin}\n preventOverlap={preventOverlap}\n disableSwapping={disableSwapping}\n disableVHBounds={disableVHBounds}\n preventScroll={preventScroll}\n closeOnResize={closeOnResize}\n closeOnScroll={closeOnScroll}\n getFixedPositionOptions={getFixedPositionOptions}\n horizontal={horizontal}\n sheetHeader={sheetHeader}\n sheetFooter={sheetFooter}\n renderAsSheet={renderAsSheet}\n sheetPosition={sheetPosition}\n sheetVerticalSize={sheetVerticalSize}\n {...menuProps}\n fixedTo={fixedTo}\n visible={visible}\n getDefaultFocusedIndex={(options) => {\n const defaultIndex = defaultFocusIndex.current;\n if (defaultIndex < 0) {\n return getLastFocusableIndex(options);\n }\n\n return defaultIndex;\n }}\n onRequestClose={onRequestClose}\n onEntered={(appearing) => {\n menuProps?.onEntered?.(appearing);\n // this will be called before `getDefaultFocusedIndex`\n if (disableTransition) {\n return;\n }\n\n defaultFocusIndex.current = 0;\n }}\n >\n {children}\n </Menu>\n </MenuVisibilityProvider>\n );\n}\n"],"names":["useCallback","useRef","useUserInteractionMode","getLastFocusableIndex","useEnsuredId","useEnsuredState","Menu","MenuButton","MenuConfigurationProvider","MenuItemButton","MenuVisibilityProvider","useMenuBarContext","DropdownMenu","props","id","propId","horizontal","sheetHeader","sheetFooter","renderAsSheet","sheetPosition","sheetVerticalSize","buttonChildren","iconRotatorProps","propIconRotatorProps","disableTransition","propDisableTransition","floating","anchor","vwMargin","vhMargin","xMargin","yMargin","initialX","initialY","width","transformOrigin","preventOverlap","disableSwapping","disableVHBounds","preventScroll","closeOnResize","closeOnScroll","getFixedPositionOptions","children","temporary","disablePortal","disableElevation","menuProps","menuStyle","menuClassName","sheetProps","sheetStyle","sheetClassName","visible","propVisible","setVisible","propSetVisible","remaining","fixedTo","defaultFocusIndex","value","setValue","defaultValue","menubar","menuitem","activeIdRef","animatedOnceRef","mode","mouse","keyboard","current","onRequestClose","toggle","ref","aria-labelledby","undefined","style","className","getDefaultFocusedIndex","options","defaultIndex","onEntered","appearing"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/Menu.tsx"],"sourcesContent":["\"use client\";\nimport { cnb } from \"cnbuilder\";\nimport {\n forwardRef,\n useEffect,\n useRef,\n type CSSProperties,\n type HTMLAttributes,\n} from \"react\";\nimport { type FloatingActionButtonPosition } from \"../button/FloatingActionButton.js\";\nimport { useFocusContainer } from \"../focus/useFocusContainer.js\";\nimport { useUserInteractionMode } from \"../interaction/UserInteractionModeProvider.js\";\nimport { type ListElement, type ListProps } from \"../list/List.js\";\nimport { useAppSize } from \"../media-queries/AppSizeProvider.js\";\nimport { type GetDefaultFocusedIndex } from \"../movement/types.js\";\nimport { Portal } from \"../portal/Portal.js\";\nimport { type CalculateFixedPositionOptions } from \"../positioning/types.js\";\nimport {\n useFixedPositioning,\n type FixedPositioningOptions,\n} from \"../positioning/useFixedPositioning.js\";\nimport { useScrollLock } from \"../scroll/useScrollLock.js\";\nimport {\n useScaleTransition,\n type ScaleTransitionHookOptions,\n} from \"../transition/useScaleTransition.js\";\nimport { type LabelRequiredForA11y, type PropsWithRef } from \"../types.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport {\n MenuConfigurationProvider,\n useMenuConfiguration,\n type MenuConfiguration,\n type MenuOrientationProps,\n} from \"./MenuConfigurationProvider.js\";\nimport { MenuSheet, type MenuSheetConvenienceProps } from \"./MenuSheet.js\";\nimport { MenuWidget } from \"./MenuWidget.js\";\nimport { useMenuBarContext } from \"./useMenuBarProvider.js\";\nimport { getDefaultAnchor } from \"./utils.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-menu-background-color\"?: string;\n \"--rmd-menu-color\"?: string;\n \"--rmd-menu-min-width\"?: string | number;\n \"--rmd-menu-spacing\"?: string | number;\n }\n}\n\nconst noop = (): void => {\n // do nothing\n};\n\n/** @remarks \\@since 5.0.0 */\nexport type MenuTransitionProps = Omit<\n ScaleTransitionHookOptions<HTMLDivElement>,\n \"transitionIn\" | \"vertical\" | \"nodeRef\"\n>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface MenuConfigurationProps extends CalculateFixedPositionOptions {\n /**\n * @see {@link ScaleTransitionHookOptions.temporary}\n * @defaultValue `true`\n */\n temporary?: boolean;\n\n /**\n * @defaultValue `false`\n */\n disablePortal?: boolean;\n\n /**\n * Boolean if the menu should not gain the elevation styles and should only be\n * set to `true` when rendering within a `Sheet`.\n *\n * @defaultValue `false`\n */\n disableElevation?: boolean;\n\n /**\n * @defaultValue `false`\n */\n disableTransition?: boolean;\n\n /**\n * @see {@link FixedPositioningOptions.transformOrigin}\n * @defaultValue `true`\n */\n transformOrigin?: boolean;\n\n /**\n * Boolean if the menu should close if the page is scrolled. The default\n * behavior is to just update the position of the menu relative to the menu\n * button until it can no longer be visible within the viewport.\n *\n * @defaultValue `false`\n */\n closeOnScroll?: boolean;\n\n /**\n * Boolean if the page should no longer be scrollable while the menu is\n * visible.\n *\n * @defaultValue `false`\n */\n preventScroll?: boolean;\n\n /**\n * Boolean if the menu should close instead of repositioning itself if the\n * browser window is resized.\n *\n * @defaultValue `false`\n */\n closeOnResize?: boolean;\n\n /** @see {@link FixedPositioningOptions.getFixedPositionOptions} */\n getFixedPositionOptions?(): CalculateFixedPositionOptions;\n}\n\n/**\n * @remarks\n * \\@since 5.1.0\n * \\@since 6.0.0 Renamed from `MenuListProps` to `MenuListConvenienceProps`\n */\nexport interface MenuListConvenienceProps {\n /**\n * An optional style to provide to the `List` component that surrounds the\n * `MenuItem` within a `Menu`.\n */\n listStyle?: CSSProperties;\n\n /**\n * An optional className to provide to the `List` component that surrounds the\n * `MenuItem` within a `Menu`.\n */\n listClassName?: string;\n\n /**\n * Any additional props to pass to the `List` component that surrounds the\n * `Menu`'s `MenuItem`s.\n */\n listProps?: PropsWithRef<Omit<ListProps, \"horizontal\">, ListElement>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface MenuConvenienceProps extends MenuConfigurationProps {\n /**\n * This can be used to apply additional props to the `Menu` component.\n *\n * Note: You can override the `style` and `className` using\n * {@link menuStyle} and {@link menuClassName} instead for convenience.\n *\n * @example\n * ```tsx\n * <DropdownMenu\n * {...props}\n * menuProps={{\n * style: {\n * // custom inline style\n * },\n * className: \"come-class-name\",\n * getFixedPositionOptions: () => ({\n * preventOverlap: true,\n * }),\n * }}\n * />\n * ```\n */\n menuProps?: PropsWithRef<\n Omit<\n MenuProps,\n | \"children\"\n | \"fixedTo\"\n | \"visible\"\n | \"onRequestClose\"\n | \"getDefaultFocusedIndex\"\n >,\n HTMLDivElement\n >;\n\n /**\n * Convenience prop to apply custom style to the `Menu` component.\n */\n menuStyle?: CSSProperties;\n\n /**\n * Convenience prop to apply custom class name to the `Menu` component.\n */\n menuClassName?: string;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type MenuFixedPositioningOptions = Omit<\n FixedPositioningOptions<HTMLElement, HTMLDivElement>,\n \"onScroll\" | \"onResize\"\n>;\n\n/**\n * @remarks\n * \\@since 5.0.0\n * \\@since 6.0.0 Updated to use the latest Menu, Transition, and Portal API.\n */\nexport interface MenuProps\n extends HTMLAttributes<HTMLDivElement>,\n MenuConfiguration,\n MenuConfigurationProps,\n MenuFixedPositioningOptions,\n MenuOrientationProps,\n MenuTransitionProps,\n MenuListConvenienceProps,\n MenuSheetConvenienceProps {\n visible: boolean;\n onRequestClose(): void;\n\n /**\n * @defaultValue `\"menu-\" + useId()`\n */\n id?: string;\n\n /**\n * This is used to set the default focus index when the menu is visible.\n *\n * @internal\n */\n getDefaultFocusedIndex?: GetDefaultFocusedIndex;\n\n /**\n * Custom style that should be applied to the menu only while not rendered\n * within a sheet since the {@link style} would be applied to both versions.\n */\n menuStyle?: CSSProperties;\n\n /**\n * Custom class name that should be applied only while not rendered within a\n * sheet.\n */\n menuClassName?: string;\n\n /**\n * @internal\n *\n * This is only used to update the default anchor when the DropdownMenu's\n * toggle is a floating action button.\n */\n floating?: FloatingActionButtonPosition;\n}\n\n/**\n * **Client Component**\n *\n * This component should generally only be used to implement context menus with\n * the `useContextMenu` hook. Otherwise, the `DropdownMenu` component should be\n * used.\n *\n * @see The `useContextMenu` hook for an example.\n *\n * @remarks\n * \\@since 5.0.0\n * \\@since 6.0.0 Updated this component to implement all the `Menu`\n * functionality instead of requiring the `useMenu` hook and `MenuWidget`\n * component. In addition, the `renderAsSheet` behavior has been moved into this\n * implementation so that the `MenuRenderer` is no longer required and context\n * menus can appear as a `Sheet`.\n */\nexport const Menu = forwardRef<HTMLDivElement, LabelRequiredForA11y<MenuProps>>(\n function Menu(props, propRef) {\n const {\n id: propId,\n style: propStyle,\n role = \"menu\",\n children,\n horizontal: _horizontal,\n sheetHeader: _sheetHeader,\n sheetFooter: _sheetFooter,\n renderAsSheet: _renderAsSheet,\n sheetPosition: _sheetPosition,\n sheetVerticalSize: _sheetVerticalSize,\n sheetProps,\n sheetStyle,\n sheetClassName,\n menuStyle,\n menuClassName,\n disableElevation = false,\n temporary = true,\n tabIndex = -1,\n fixedTo,\n className,\n classNames,\n timeout,\n appear,\n enter,\n exit,\n onEnter,\n onEntering = noop,\n onEntered = noop,\n onExit,\n onExiting,\n onExited = noop,\n onKeyDown = noop,\n listProps,\n listStyle,\n listClassName,\n visible,\n onRequestClose,\n floating,\n anchor,\n closeOnResize = false,\n closeOnScroll = false,\n preventScroll = false,\n vwMargin,\n vhMargin,\n xMargin,\n yMargin,\n width,\n transformOrigin = true,\n preventOverlap,\n disableSwapping,\n disableVHBounds,\n initialX,\n initialY,\n getFixedPositionOptions,\n disablePortal: propDisablePortal,\n disableTransition,\n ...remaining\n } = props;\n const { \"aria-label\": ariaLabel, \"aria-labelledby\": ariaLabelledBy } =\n props;\n\n const id = useEnsuredId(propId, \"menu\");\n const {\n root,\n menubar,\n menuitem,\n activeId,\n animatedOnceRef,\n hoverTimeoutRef,\n disableHoverMode,\n } = useMenuBarContext();\n const {\n horizontal,\n sheetHeader,\n sheetFooter,\n renderAsSheet,\n sheetPosition,\n sheetVerticalSize,\n } = useMenuConfiguration(props);\n const { isPhone } = useAppSize();\n const isSheet =\n renderAsSheet === true || (renderAsSheet === \"phone\" && isPhone);\n\n const entered = useRef(false);\n const cancelUnmountFocus = useRef(false);\n const hideWithoutRefocus = (): void => {\n cancelUnmountFocus.current = true;\n onRequestClose();\n };\n const mode = useUserInteractionMode();\n const mouse = mode === \"mouse\";\n\n const { eventHandlers, transitionOptions } = useFocusContainer({\n nodeRef: propRef,\n activate: visible,\n onKeyDown(event) {\n onKeyDown(event);\n\n // when a menu is within a sheet, it should not trigger the custom\n // keyboard behavior\n if (isSheet) {\n return;\n }\n\n switch (event.key) {\n case \"Escape\":\n // prevent parent components that have an \"Escape\" keypress event\n // from being triggered as well\n event.stopPropagation();\n disableHoverMode();\n onRequestClose();\n break;\n case \"Tab\":\n // since menus are portalled, tab index is kinda broke so just close\n // the menu instead of doing default tab behavior\n event.preventDefault();\n\n if (!menuitem) {\n // pressing the tab key should still cascade close all menus\n event.stopPropagation();\n }\n disableHoverMode();\n onRequestClose();\n break;\n case \"ArrowUp\":\n if (!root && menuitem && horizontal) {\n event.stopPropagation();\n event.preventDefault();\n onRequestClose();\n }\n break;\n case \"ArrowLeft\":\n if (!root && menuitem && !horizontal) {\n event.stopPropagation();\n event.preventDefault();\n onRequestClose();\n }\n break;\n }\n },\n onEntering(appearing) {\n onEntering(appearing);\n entered.current = true;\n },\n onEntered(appearing) {\n onEntered(appearing);\n entered.current = true;\n cancelUnmountFocus.current = false;\n animatedOnceRef.current = true;\n },\n onExited() {\n onExited();\n entered.current = false;\n },\n onExiting,\n disableTransition,\n isFocusTypeDisabled(type) {\n if (role === \"listbox\") {\n return !isSheet;\n }\n\n if (type === \"keyboard\") {\n return isSheet;\n }\n\n const isHoverDisabled = mouse && hoverTimeoutRef.current === 0;\n if (type === \"mount\") {\n return isHoverDisabled;\n }\n\n return (\n isHoverDisabled ||\n cancelUnmountFocus.current ||\n (root && !!activeId && id !== activeId)\n );\n },\n });\n\n const { ref, style, callbacks } = useFixedPositioning({\n ...transitionOptions,\n onEnter,\n style: isSheet ? propStyle : menuStyle,\n fixedTo,\n anchor: getDefaultAnchor({\n anchor,\n menubar,\n floating,\n menuitem: !root && menuitem,\n horizontal,\n }),\n vwMargin,\n vhMargin,\n xMargin,\n yMargin,\n width,\n transformOrigin,\n preventOverlap,\n disableSwapping,\n disableVHBounds,\n initialX,\n initialY,\n getFixedPositionOptions,\n onResize: closeOnResize ? hideWithoutRefocus : undefined,\n onScroll(_event, data) {\n if (!data.visible || closeOnScroll) {\n hideWithoutRefocus();\n }\n },\n });\n const { rendered, disablePortal, elementProps } = useScaleTransition({\n nodeRef: ref,\n className: cnb(!isSheet && menuClassName, className),\n transitionIn: visible,\n vertical: !horizontal,\n temporary,\n timeout: isSheet || disableTransition ? 0 : timeout,\n classNames,\n appear,\n enter,\n exit,\n onExit,\n onExiting: transitionOptions.onExiting,\n exitedHidden: true,\n ...callbacks,\n });\n useScrollLock(visible && preventScroll);\n\n // need to make sure that the useEffect does not refire for hiding on click\n // events because of the `window.requestAnimationFrame`. It'll make it so\n // that menu items that update state are unable to close when clicked\n const hide = useRef(onRequestClose);\n useEffect(() => {\n hide.current = onRequestClose;\n });\n useEffect(() => {\n if (!visible) {\n return;\n }\n\n const callback = (event: globalThis.MouseEvent): void => {\n // this is required for when the transition is disabled\n if (!entered.current) {\n return;\n }\n\n // if the user clicks outside of the menu to close it, the toggle button\n // should not be focused. instead the nearest focusable element from the\n // click event should be focused when Tab or Shift + tab is pressed\n cancelUnmountFocus.current =\n !(event.target instanceof HTMLElement) ||\n !event.target.closest(`[role=\"${role}\"]`);\n\n // this won't be called if `event.stopPropagation()` is called\n hide.current();\n disableHoverMode();\n };\n\n // wait an animation frame so the initial click event that caused the menu\n // to become visible does not immediately close the menu\n const frame = window.requestAnimationFrame(() => {\n window.addEventListener(\"click\", callback);\n });\n\n return () => {\n window.cancelAnimationFrame(frame);\n window.removeEventListener(\"click\", callback);\n };\n }, [disableHoverMode, role, visible]);\n\n return (\n <MenuConfigurationProvider\n horizontal={horizontal}\n renderAsSheet={renderAsSheet}\n sheetFooter={sheetFooter}\n sheetHeader={sheetHeader}\n sheetPosition={sheetPosition}\n sheetVerticalSize={sheetVerticalSize}\n >\n <MenuSheet\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy as string}\n header={sheetHeader}\n footer={sheetFooter}\n position={sheetPosition}\n verticalSize={sheetVerticalSize}\n visible={visible}\n enabled={isSheet}\n onRequestClose={onRequestClose}\n style={sheetStyle}\n className={sheetClassName}\n disablePortal={propDisablePortal}\n temporary={temporary}\n disableTransition={disableTransition}\n {...sheetProps}\n >\n <Portal disabled={isSheet || (propDisablePortal ?? disablePortal)}>\n {(rendered || isSheet) && (\n <MenuWidget\n {...remaining}\n {...elementProps}\n {...eventHandlers}\n id={id}\n role={role}\n style={isSheet ? propStyle : style}\n isSheet={isSheet}\n tabIndex={tabIndex}\n horizontal={horizontal}\n listProps={listProps}\n listStyle={listStyle}\n listClassName={listClassName}\n disableElevation={disableElevation}\n cancelUnmountFocus={cancelUnmountFocus}\n >\n {children}\n </MenuWidget>\n )}\n </Portal>\n </MenuSheet>\n </MenuConfigurationProvider>\n );\n }\n);\n"],"names":["cnb","forwardRef","useEffect","useRef","useFocusContainer","useUserInteractionMode","useAppSize","Portal","useFixedPositioning","useScrollLock","useScaleTransition","useEnsuredId","MenuConfigurationProvider","useMenuConfiguration","MenuSheet","MenuWidget","useMenuBarContext","getDefaultAnchor","noop","Menu","props","propRef","id","propId","style","propStyle","role","children","horizontal","_horizontal","sheetHeader","_sheetHeader","sheetFooter","_sheetFooter","renderAsSheet","_renderAsSheet","sheetPosition","_sheetPosition","sheetVerticalSize","_sheetVerticalSize","sheetProps","sheetStyle","sheetClassName","menuStyle","menuClassName","disableElevation","temporary","tabIndex","fixedTo","className","classNames","timeout","appear","enter","exit","onEnter","onEntering","onEntered","onExit","onExiting","onExited","onKeyDown","listProps","listStyle","listClassName","visible","onRequestClose","floating","anchor","closeOnResize","closeOnScroll","preventScroll","vwMargin","vhMargin","xMargin","yMargin","width","transformOrigin","preventOverlap","disableSwapping","disableVHBounds","initialX","initialY","getFixedPositionOptions","disablePortal","propDisablePortal","disableTransition","remaining","ariaLabel","ariaLabelledBy","root","menubar","menuitem","activeId","animatedOnceRef","hoverTimeoutRef","disableHoverMode","isPhone","isSheet","entered","cancelUnmountFocus","hideWithoutRefocus","current","mode","mouse","eventHandlers","transitionOptions","nodeRef","activate","event","key","stopPropagation","preventDefault","appearing","isFocusTypeDisabled","type","isHoverDisabled","ref","callbacks","onResize","undefined","onScroll","_event","data","rendered","elementProps","transitionIn","vertical","exitedHidden","hide","callback","target","HTMLElement","closest","frame","window","requestAnimationFrame","addEventListener","cancelAnimationFrame","removeEventListener","aria-label","aria-labelledby","header","footer","position","verticalSize","enabled","disabled"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/MenuBar.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef } from \"react\";\nimport { List, type ListProps } from \"../list/List.js\";\nimport {\n KeyboardMovementProvider,\n useKeyboardMovementProvider,\n} from \"../movement/useKeyboardMovementProvider.js\";\nimport { MenuBarProvider, useMenuBarProvider } from \"./useMenuBarProvider.js\";\n\nexport interface MenuBarProps extends Omit<ListProps, \"role\"> {\n /**\n * @defaultValue `true`\n */\n horizontal?: boolean;\n\n /**\n * Set this to a number greater than 0 to allow opening dropdown menus within\n * the menubar after hovering for the duration in milliseconds. Once a menu\n * becomes visible within the menubar, all subsequent menus will become\n * visible immediately on hover as well until the hover mode is ended.\n *\n * For example:\n *\n * - `0` - the dropdown menus become visible immediately on hover\n * - `1000` - the first dropdown menu becomes visible after hovering for 1\n * second\n * - `undefined` - the hover mode can only be activate after a click with\n * mouse, touch, or keyboard\n *\n * @defaultValue `undefined`\n */\n hoverTimeout?: number;\n}\n\n/**\n * **Client Component**\n *\n * @example\n * Simple Example\n * ```tsx\n * import { DropdownMenu, MenuBar, MenuItem } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n *\n * export function SimpleExample(): ReactElement {\n * return (\n * <MenuBar>\n * <DropdownMenu buttonChildren=\"Item 1\">\n * <MenuItem>Menu Item 1</MenuItem>\n * <MenuItem>Menu Item 2</MenuItem>\n * <MenuItem>Menu Item 3</MenuItem>\n * </DropdownMenu>\n * <DropdownMenu buttonChildren=\"Item 2\">\n * <MenuItem>Menu Item 1</MenuItem>\n * <MenuItem>Menu Item 2</MenuItem>\n * <MenuItem>Menu Item 3</MenuItem>\n * </DropdownMenu>\n * <DropdownMenu buttonChildren=\"Item 3\">\n * <MenuItem>Menu Item 1</MenuItem>\n * <MenuItem>Menu Item 2</MenuItem>\n * <MenuItem>Menu Item 4</MenuItem>\n * </DropdownMenu>\n * </MenuBar>\n * );\n * }\n * ```\n *\n * @remarks \\@since 5.0.0\n * @remarks \\@since 6.0.0 Combined with the previous `MenuBarWidget`\n */\nexport const MenuBar = forwardRef<HTMLUListElement, MenuBarProps>(\n function MenuBar(props, ref) {\n const {\n onClick,\n onFocus,\n onKeyDown,\n horizontal = true,\n hoverTimeout,\n children,\n ...remaining\n } = props;\n const menuBarContext = useMenuBarProvider({\n root: true,\n menubar: true,\n hoverTimeout,\n });\n const { activeId, enableHoverMode } = menuBarContext;\n const { movementProps, movementContext } = useKeyboardMovementProvider({\n onClick,\n onFocus,\n onKeyDown,\n loopable: true,\n searchable: true,\n horizontal,\n includeDisabled: true,\n tabIndexBehavior: \"roving\",\n onFocusChange(event) {\n if (activeId) {\n enableHoverMode(event.element.id);\n }\n },\n });\n\n return (\n <KeyboardMovementProvider value={movementContext}>\n <MenuBarProvider value={menuBarContext}>\n <List\n {...remaining}\n {...movementProps}\n ref={ref}\n role=\"menubar\"\n horizontal={horizontal}\n >\n {children}\n </List>\n </MenuBarProvider>\n </KeyboardMovementProvider>\n );\n }\n);\n"],"names":["forwardRef","List","KeyboardMovementProvider","useKeyboardMovementProvider","MenuBarProvider","useMenuBarProvider","MenuBar","props","ref","onClick","onFocus","onKeyDown","horizontal","hoverTimeout","children","remaining","menuBarContext","root","menubar","activeId","enableHoverMode","movementProps","movementContext","loopable","searchable","includeDisabled","tabIndexBehavior","onFocusChange","event","element","id","value","role"],"mappings":"AAAA;;AACA,SAASA,UAAU,QAAQ,QAAQ;AACnC,SAASC,IAAI,QAAwB,kBAAkB;AACvD,SACEC,wBAAwB,EACxBC,2BAA2B,QACtB,6CAA6C;AACpD,SAASC,eAAe,EAAEC,kBAAkB,QAAQ,0BAA0B;AA2B9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCC,GACD,OAAO,MAAMC,wBAAUN,WACrB,SAASM,QAAQC,KAAK,EAAEC,GAAG;IACzB,MAAM,EACJC,OAAO,EACPC,OAAO,EACPC,SAAS,EACTC,aAAa,IAAI,EACjBC,YAAY,EACZC,QAAQ,EACR,GAAGC,WACJ,GAAGR;IACJ,MAAMS,iBAAiBX,mBAAmB;QACxCY,MAAM;QACNC,SAAS;QACTL;IACF;IACA,MAAM,EAAEM,QAAQ,EAAEC,eAAe,EAAE,GAAGJ;IACtC,MAAM,EAAEK,aAAa,EAAEC,eAAe,EAAE,GAAGnB,4BAA4B;QACrEM;QACAC;QACAC;QACAY,UAAU;QACVC,YAAY;QACZZ;QACAa,iBAAiB;QACjBC,kBAAkB;QAClBC,eAAcC,KAAK;YACjB,IAAIT,UAAU;gBACZC,gBAAgBQ,MAAMC,OAAO,CAACC,EAAE;YAClC;QACF;IACF;IAEA,qBACE,KAAC5B;QAAyB6B,OAAOT;kBAC/B,cAAA,KAAClB;YAAgB2B,OAAOf;sBACtB,cAAA,KAACf;gBACE,GAAGc,SAAS;gBACZ,GAAGM,aAAa;gBACjBb,KAAKA;gBACLwB,MAAK;gBACLpB,YAAYA;0BAEXE;;;;AAKX,GACA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/MenuButton.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef } from \"react\";\nimport { Button, type ButtonProps } from \"../button/Button.js\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { IconRotator, type IconRotatorProps } from \"../icon/IconRotator.js\";\nimport { type TextIconSpacingProps } from \"../icon/TextIconSpacing.js\";\nimport { useAppSize } from \"../media-queries/AppSizeProvider.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { useMenuConfiguration } from \"./MenuConfigurationProvider.js\";\nimport { useMenuVisibility } from \"./MenuVisibilityProvider.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/** @remarks \\@since 5.0.0 */\nexport type MenuButtonTextIconSpacingProps = Pick<\n TextIconSpacingProps,\n \"icon\" | \"iconAfter\"\n>;\n\n/** @remarks \\@since 5.0.0 */\nexport type MenuButtonIconRotatorProps = Omit<\n IconRotatorProps,\n \"children\" | \"rotated\"\n>;\n\n/**\n * @remarks \\@since 5.0.0\n * @remarks \\@since 6.0.0 No longer extends the {@link ButtonProps}, no longer\n * requires an `id`, and no longer supports `textIconSpacingProps`.\n */\nexport interface BaseMenuButtonProps extends MenuButtonTextIconSpacingProps {\n /**\n * Any additional props to pass to the {@link IconRotator} component that\n * surrounds the {@link buttonChildren}\n */\n iconRotatorProps?: Readonly<MenuButtonIconRotatorProps>;\n\n /**\n * Boolean if the dropdown icon should be included with the button children.\n *\n * @defaultValue `buttonType === \"icon\"`\n */\n disableDropdownIcon?: boolean;\n}\n\n/**\n * @remarks \\@since 5.0.0\n * @remarks \\@since 6.0.0 See {@link BaseMenuButtonProps} for breaking changes.\n */\nexport interface MenuButtonProps extends ButtonProps, BaseMenuButtonProps {}\n\n/**\n * **Client Component**\n *\n * An internal component that handles rendering a button for the `DropdownMenu`\n * while implementing the correct accessibility and keyboard movement.\n *\n * @remarks \\@since 5.0.0\n * @remarks \\@since 6.0.0 See {@link BaseMenuButtonProps} for breaking changes.\n */\nexport const MenuButton = forwardRef<HTMLButtonElement, MenuButtonProps>(\n function MenuButton(props, ref) {\n const {\n id: propId,\n onClick = noop,\n onKeyDown = noop,\n icon: propIcon,\n iconAfter = true,\n iconRotatorProps,\n floating,\n buttonType = floating ? \"icon\" : \"text\",\n disableDropdownIcon = buttonType === \"icon\",\n children,\n ...remaining\n } = props;\n const id = useEnsuredId(propId, \"menubutton\");\n const { visible, setVisible, defaultFocusIndex } = useMenuVisibility();\n const { renderAsSheet } = useMenuConfiguration();\n const { isPhone } = useAppSize();\n const isSheet =\n renderAsSheet === true || (renderAsSheet === \"phone\" && isPhone);\n\n const dropdownIcon = getIcon(\"dropdown\", propIcon);\n let icon = propIcon;\n if (!disableDropdownIcon) {\n icon = (\n <IconRotator {...iconRotatorProps} rotated={visible}>\n {dropdownIcon}\n </IconRotator>\n );\n }\n\n return (\n <Button\n {...remaining}\n aria-haspopup={isSheet ? \"dialog\" : \"menu\"}\n aria-expanded={visible || undefined}\n id={id}\n ref={ref}\n floating={floating}\n buttonType={buttonType}\n onClick={(event) => {\n onClick(event);\n\n defaultFocusIndex.current = 0;\n setVisible((prevVisible) => !prevVisible);\n }}\n onKeyDown={(event) => {\n onKeyDown(event);\n\n switch (event.key) {\n case \"ArrowDown\":\n event.preventDefault();\n event.stopPropagation();\n defaultFocusIndex.current = 0;\n setVisible(true);\n break;\n case \"ArrowUp\":\n event.preventDefault();\n event.stopPropagation();\n defaultFocusIndex.current = -1;\n setVisible(true);\n break;\n }\n }}\n >\n {!iconAfter && icon}\n {children}\n {iconAfter && icon}\n </Button>\n );\n }\n);\n"],"names":["forwardRef","Button","getIcon","IconRotator","useAppSize","useEnsuredId","useMenuConfiguration","useMenuVisibility","noop","MenuButton","props","ref","id","propId","onClick","onKeyDown","icon","propIcon","iconAfter","iconRotatorProps","floating","buttonType","disableDropdownIcon","children","remaining","visible","setVisible","defaultFocusIndex","renderAsSheet","isPhone","isSheet","dropdownIcon","rotated","aria-haspopup","aria-expanded","undefined","event","current","prevVisible","key","preventDefault","stopPropagation"],"mappings":"AAAA;;AACA,SAASA,UAAU,QAAQ,QAAQ;AACnC,SAASC,MAAM,QAA0B,sBAAsB;AAC/D,SAASC,OAAO,QAAQ,wBAAwB;AAChD,SAASC,WAAW,QAA+B,yBAAyB;AAE5E,SAASC,UAAU,QAAQ,sCAAsC;AACjE,SAASC,YAAY,QAAQ,qBAAqB;AAClD,SAASC,oBAAoB,QAAQ,iCAAiC;AACtE,SAASC,iBAAiB,QAAQ,8BAA8B;AAEhE,MAAMC,OAAO;AACX,aAAa;AACf;AAwCA;;;;;;;;CAQC,GACD,OAAO,MAAMC,2BAAaT,WACxB,SAASS,WAAWC,KAAK,EAAEC,GAAG;IAC5B,MAAM,EACJC,IAAIC,MAAM,EACVC,UAAUN,IAAI,EACdO,YAAYP,IAAI,EAChBQ,MAAMC,QAAQ,EACdC,YAAY,IAAI,EAChBC,gBAAgB,EAChBC,QAAQ,EACRC,aAAaD,WAAW,SAAS,MAAM,EACvCE,sBAAsBD,eAAe,MAAM,EAC3CE,QAAQ,EACR,GAAGC,WACJ,GAAGd;IACJ,MAAME,KAAKP,aAAaQ,QAAQ;IAChC,MAAM,EAAEY,OAAO,EAAEC,UAAU,EAAEC,iBAAiB,EAAE,GAAGpB;IACnD,MAAM,EAAEqB,aAAa,EAAE,GAAGtB;IAC1B,MAAM,EAAEuB,OAAO,EAAE,GAAGzB;IACpB,MAAM0B,UACJF,kBAAkB,QAASA,kBAAkB,WAAWC;IAE1D,MAAME,eAAe7B,QAAQ,YAAYe;IACzC,IAAID,OAAOC;IACX,IAAI,CAACK,qBAAqB;QACxBN,qBACE,KAACb;YAAa,GAAGgB,gBAAgB;YAAEa,SAASP;sBACzCM;;IAGP;IAEA,qBACE,MAAC9B;QACE,GAAGuB,SAAS;QACbS,iBAAeH,UAAU,WAAW;QACpCI,iBAAeT,WAAWU;QAC1BvB,IAAIA;QACJD,KAAKA;QACLS,UAAUA;QACVC,YAAYA;QACZP,SAAS,CAACsB;YACRtB,QAAQsB;YAERT,kBAAkBU,OAAO,GAAG;YAC5BX,WAAW,CAACY,cAAgB,CAACA;QAC/B;QACAvB,WAAW,CAACqB;YACVrB,UAAUqB;YAEV,OAAQA,MAAMG,GAAG;gBACf,KAAK;oBACHH,MAAMI,cAAc;oBACpBJ,MAAMK,eAAe;oBACrBd,kBAAkBU,OAAO,GAAG;oBAC5BX,WAAW;oBACX;gBACF,KAAK;oBACHU,MAAMI,cAAc;oBACpBJ,MAAMK,eAAe;oBACrBd,kBAAkBU,OAAO,GAAG,CAAC;oBAC7BX,WAAW;oBACX;YACJ;QACF;;YAEC,CAACR,aAAaF;YACdO;YACAL,aAAaF;;;AAGpB,GACA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/MenuConfigurationProvider.tsx"],"sourcesContent":["\"use client\";\nimport {\n createContext,\n useContext,\n useMemo,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { type SheetPosition, type SheetVerticalSize } from \"../sheet/styles.js\";\n\n/** @remarks \\@since 5.0.0 */\nexport interface MenuOrientationProps {\n /**\n * Boolean if the menu should be rendered horizontally instead of vertically.\n * This will also update the `aria-orientation`.\n *\n * @defaultValue `false`\n */\n horizontal?: boolean;\n}\n\n/**\n * This allows the menu to be conditionally rendered as a `Sheet` instead of a\n * menu.\n *\n * - `false` - always render as a `Menu`\n * - `true` - always render as a `Sheet`\n * - `\"phone\"` - render as a sheet only when the {@link AppSize} is considered\n * phone (`isPhone === true`).\n *\n * @defaultValue `false`\n * @remarks \\@since 5.0.0\n */\nexport type RenderMenuAsSheet = boolean | \"phone\";\n\n/** @remarks \\@since 5.0.0 */\nexport interface MenuConfiguration extends MenuOrientationProps {\n /** {@inheritDoc RenderMenuAsSheet} */\n renderAsSheet?: RenderMenuAsSheet;\n\n /**\n * @see {@link SheetPosition}\n * @defaultValue `\"bottom\"`\n */\n sheetPosition?: SheetPosition;\n\n /**\n * @see {@link SheetVerticalSize}\n * @defaultValue `\"touch\"`\n */\n sheetVerticalSize?: SheetVerticalSize;\n\n /**\n * Any children to render above the sheet's menu implementation. This would\n * normally be something like a `<DialogHeader>` or `AppBar`.\n *\n * @defaultValue `null`\n */\n sheetHeader?: ReactNode;\n\n /**\n * Any children to render below the sheet's menu implementation. This would\n * normally be something like a `<DialogFooter>`.\n *\n * @defaultValue `null`\n */\n sheetFooter?: ReactNode;\n}\n\n/** @remarks \\@since 5.0.0 */\nexport type MenuConfigurationContext = Required<MenuConfiguration>;\n\n/** @remarks \\@since 5.0.0 */\nexport const DEFAULT_MENU_CONFIGURATION: Readonly<MenuConfiguration> = {\n horizontal: false,\n renderAsSheet: false,\n sheetHeader: null,\n sheetFooter: null,\n sheetPosition: \"bottom\",\n sheetVerticalSize: \"touch\",\n};\n\n/**\n * @internal\n * @remarks \\@since 5.0.0\n */\nconst context = createContext<MenuConfigurationContext>({\n horizontal: false,\n renderAsSheet: false,\n sheetHeader: null,\n sheetFooter: null,\n sheetPosition: \"bottom\",\n sheetVerticalSize: \"touch\",\n});\ncontext.displayName = \"MenuConfiguration\";\n\n/**\n * @internal\n * @remarks \\@since 5.0.0\n */\nconst { Provider } = context;\n\n/**\n * This is probably just an internal only hook that allows you to get the\n * {@link MenuConfigurationContext} with optional overrides.\n *\n * @param overrides - An object of {@link MenuConfiguration} that would override\n * the inherited context values if they are not `undefined`.\n * @returns the {@link MenuConfigurationContext} with any overrides that were\n * provided.\n * @remarks \\@since 5.0.0\n */\nexport function useMenuConfiguration(\n overrides: MenuConfiguration = {}\n): Readonly<MenuConfigurationContext> {\n const {\n horizontal,\n renderAsSheet,\n sheetHeader,\n sheetFooter,\n sheetPosition,\n sheetVerticalSize,\n } = overrides;\n const inherited = useContext(context);\n\n return {\n horizontal: horizontal ?? inherited.horizontal,\n renderAsSheet: renderAsSheet ?? inherited.renderAsSheet,\n sheetHeader:\n sheetHeader === null ? null : sheetHeader ?? inherited.sheetHeader,\n sheetFooter:\n sheetFooter === null ? null : sheetFooter ?? inherited.sheetFooter,\n sheetPosition: sheetPosition ?? inherited.sheetPosition,\n sheetVerticalSize: sheetVerticalSize ?? inherited.sheetVerticalSize,\n };\n}\n\n/** @remarks \\@since 5.0.0 */\nexport interface MenuConfigurationProviderProps extends MenuConfiguration {\n children: ReactNode;\n}\n\n/**\n * **Client Component**\n *\n * Note: This will always merge values with any parent\n * `MenuConfigurationProvider`s.\n *\n * @remarks \\@since 5.0.0\n */\nexport function MenuConfigurationProvider(\n props: MenuConfigurationProviderProps\n): ReactElement {\n const { children, ...configuration } = props;\n const {\n horizontal,\n renderAsSheet,\n sheetHeader,\n sheetFooter,\n sheetPosition,\n sheetVerticalSize,\n } = useMenuConfiguration(configuration);\n\n const value = useMemo<MenuConfigurationContext>(\n () => ({\n horizontal,\n renderAsSheet,\n sheetHeader,\n sheetFooter,\n sheetPosition,\n sheetVerticalSize,\n }),\n [\n horizontal,\n renderAsSheet,\n sheetFooter,\n sheetHeader,\n sheetPosition,\n sheetVerticalSize,\n ]\n );\n\n return <Provider value={value}>{children}</Provider>;\n}\n"],"names":["createContext","useContext","useMemo","DEFAULT_MENU_CONFIGURATION","horizontal","renderAsSheet","sheetHeader","sheetFooter","sheetPosition","sheetVerticalSize","context","displayName","Provider","useMenuConfiguration","overrides","inherited","MenuConfigurationProvider","props","children","configuration","value"],"mappings":"AAAA;;AACA,SACEA,aAAa,EACbC,UAAU,EACVC,OAAO,QAGF,QAAQ;AAiEf,2BAA2B,GAC3B,OAAO,MAAMC,6BAA0D;IACrEC,YAAY;IACZC,eAAe;IACfC,aAAa;IACbC,aAAa;IACbC,eAAe;IACfC,mBAAmB;AACrB,EAAE;AAEF;;;CAGC,GACD,MAAMC,wBAAUV,cAAwC;IACtDI,YAAY;IACZC,eAAe;IACfC,aAAa;IACbC,aAAa;IACbC,eAAe;IACfC,mBAAmB;AACrB;AACAC,QAAQC,WAAW,GAAG;AAEtB;;;CAGC,GACD,MAAM,EAAEC,QAAQ,EAAE,GAAGF;AAErB;;;;;;;;;CASC,GACD,OAAO,SAASG,qBACdC,YAA+B,CAAC,CAAC;IAEjC,MAAM,EACJV,UAAU,EACVC,aAAa,EACbC,WAAW,EACXC,WAAW,EACXC,aAAa,EACbC,iBAAiB,EAClB,GAAGK;IACJ,MAAMC,YAAYd,WAAWS;IAE7B,OAAO;QACLN,YAAYA,cAAcW,UAAUX,UAAU;QAC9CC,eAAeA,iBAAiBU,UAAUV,aAAa;QACvDC,aACEA,gBAAgB,OAAO,OAAOA,eAAeS,UAAUT,WAAW;QACpEC,aACEA,gBAAgB,OAAO,OAAOA,eAAeQ,UAAUR,WAAW;QACpEC,eAAeA,iBAAiBO,UAAUP,aAAa;QACvDC,mBAAmBA,qBAAqBM,UAAUN,iBAAiB;IACrE;AACF;AAOA;;;;;;;CAOC,GACD,OAAO,SAASO,0BACdC,KAAqC;IAErC,MAAM,EAAEC,QAAQ,EAAE,GAAGC,eAAe,GAAGF;IACvC,MAAM,EACJb,UAAU,EACVC,aAAa,EACbC,WAAW,EACXC,WAAW,EACXC,aAAa,EACbC,iBAAiB,EAClB,GAAGI,qBAAqBM;IAEzB,MAAMC,QAAQlB,QACZ,IAAO,CAAA;YACLE;YACAC;YACAC;YACAC;YACAC;YACAC;QACF,CAAA,GACA;QACEL;QACAC;QACAE;QACAD;QACAE;QACAC;KACD;IAGH,qBAAO,KAACG;QAASQ,OAAOA;kBAAQF;;AAClC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/MenuItem.tsx"],"sourcesContent":["\"use client\";\nimport { cnb } from \"cnbuilder\";\nimport { forwardRef } from \"react\";\nimport { ListItem, type ListItemProps } from \"../list/ListItem.js\";\nimport { useKeyboardMovementContext } from \"../movement/useKeyboardMovementProvider.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\n\n/**\n * @remarks \\@since 5.0.0\n */\nexport interface MenuItemProps extends Omit<ListItemProps, \"role\"> {\n /**\n * @defaultValue `\"menuitem\"`\n */\n role?: string;\n\n /**\n * @defaultValue `-1`\n */\n tabIndex?: number;\n}\n\n/**\n * **Client Component**\n *\n * This component is used as an \"action\" within a `Menu`/`DropdownMenu` that\n * implements some keyboard focus behavior. This component should generally have\n * an `onClick` event handler.\n *\n * @remarks \\@since 5.0.0\n */\nexport const MenuItem = forwardRef<HTMLLIElement, MenuItemProps>(\n function MenuItem(props, ref) {\n const {\n id: propId,\n role = \"menuitem\",\n tabIndex: propTabIndex,\n children,\n className,\n ...remaining\n } = props;\n\n const id = useEnsuredId(propId, \"menuitem\");\n const { tabIndexBehavior, activeDescendantId } =\n useKeyboardMovementContext();\n const focused = id === activeDescendantId;\n let tabIndex = propTabIndex ?? -1;\n if (tabIndexBehavior === \"roving\" && focused) {\n tabIndex = 0;\n }\n\n return (\n <ListItem\n {...remaining}\n id={id}\n ref={ref}\n role={role}\n tabIndex={tabIndex}\n className={cnb(\n \"rmd-menu-item\",\n tabIndexBehavior === \"virtual\" && focused && \"rmd-menu-item--focused\",\n className\n )}\n >\n {children}\n </ListItem>\n );\n }\n);\n"],"names":["cnb","forwardRef","ListItem","useKeyboardMovementContext","useEnsuredId","MenuItem","props","ref","id","propId","role","tabIndex","propTabIndex","children","className","remaining","tabIndexBehavior","activeDescendantId","focused"],"mappings":"AAAA;;AACA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,UAAU,QAAQ,QAAQ;AACnC,SAASC,QAAQ,QAA4B,sBAAsB;AACnE,SAASC,0BAA0B,QAAQ,6CAA6C;AACxF,SAASC,YAAY,QAAQ,qBAAqB;AAiBlD;;;;;;;;CAQC,GACD,OAAO,MAAMC,yBAAWJ,WACtB,SAASI,SAASC,KAAK,EAAEC,GAAG;IAC1B,MAAM,EACJC,IAAIC,MAAM,EACVC,OAAO,UAAU,EACjBC,UAAUC,YAAY,EACtBC,QAAQ,EACRC,SAAS,EACT,GAAGC,WACJ,GAAGT;IAEJ,MAAME,KAAKJ,aAAaK,QAAQ;IAChC,MAAM,EAAEO,gBAAgB,EAAEC,kBAAkB,EAAE,GAC5Cd;IACF,MAAMe,UAAUV,OAAOS;IACvB,IAAIN,WAAWC,gBAAgB,CAAC;IAChC,IAAII,qBAAqB,YAAYE,SAAS;QAC5CP,WAAW;IACb;IAEA,qBACE,KAACT;QACE,GAAGa,SAAS;QACbP,IAAIA;QACJD,KAAKA;QACLG,MAAMA;QACNC,UAAUA;QACVG,WAAWd,IACT,iBACAgB,qBAAqB,aAAaE,WAAW,0BAC7CJ;kBAGDD;;AAGP,GACA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/MenuItemButton.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef, useEffect } from \"react\";\nimport { useHoverMode } from \"../hoverMode/useHoverMode.js\";\nimport { IconRotator } from \"../icon/IconRotator.js\";\nimport { getIcon } from \"../icon/iconConfig.js\";\nimport { useUserInteractionMode } from \"../interaction/UserInteractionModeProvider.js\";\nimport { useAppSize } from \"../media-queries/AppSizeProvider.js\";\nimport { useEnsuredId } from \"../useEnsuredId.js\";\nimport { type BaseMenuButtonProps } from \"./MenuButton.js\";\nimport { useMenuConfiguration } from \"./MenuConfigurationProvider.js\";\nimport { MenuItem, type MenuItemProps } from \"./MenuItem.js\";\nimport { useMenuVisibility } from \"./MenuVisibilityProvider.js\";\nimport { useMenuBarContext } from \"./useMenuBarProvider.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * @internal\n * @remarks \\@since 5.0.0\n */\nexport interface MenuItemButtonProps\n extends BaseMenuButtonProps,\n MenuItemProps {}\n\n/**\n * **Client Component**\n *\n * This is just an internal component that handles rendering a submenu as a\n * menuitem for a `DropdownMenu` with a conditional dropdown icon.\n *\n * @internal\n * @remarks \\@since 5.0.0\n */\nexport const MenuItemButton = forwardRef<HTMLLIElement, MenuItemButtonProps>(\n function MenuItemButton(props, ref) {\n const {\n id: propId,\n children,\n onClick = noop,\n onKeyDown = noop,\n onMouseEnter = noop,\n onMouseLeave = noop,\n rightAddon: propRightAddon,\n iconRotatorProps,\n disableDropdownIcon = typeof propRightAddon !== \"undefined\",\n ...remaining\n } = props;\n const { disabled } = props;\n\n const id = useEnsuredId(propId, \"menuitem\");\n const mode = useUserInteractionMode();\n const { renderAsSheet } = useMenuConfiguration();\n const { isPhone } = useAppSize();\n const isSheet =\n renderAsSheet === true || (renderAsSheet === \"phone\" && isPhone);\n const {\n root,\n menubar,\n activeId,\n enableHoverMode,\n disableHoverMode,\n startDisableTimer,\n clearDisableTimer,\n leaveTimeoutRef,\n hoverTimeoutRef,\n } = useMenuBarContext();\n const { visible, setVisible, defaultFocusIndex } = useMenuVisibility();\n const { startShowFlow, clearVisibilityTimeout } = useHoverMode({\n setVisible,\n enableHoverMode,\n disableHoverMode,\n startDisableTimer,\n leaveTimeoutRef,\n hoverTimeoutRef,\n clearDisableTimer,\n });\n const { horizontal } = useMenuConfiguration();\n\n useEffect(() => {\n setVisible(id === activeId);\n }, [activeId, defaultFocusIndex, id, menubar, setVisible]);\n\n const dropdownIcon = getIcon(root ? \"dropdown\" : \"forward\");\n let rightAddon = propRightAddon;\n if (!disableDropdownIcon) {\n rightAddon = (\n <IconRotator {...iconRotatorProps} rotated={visible}>\n {dropdownIcon}\n </IconRotator>\n );\n }\n\n const updateVisibility = (nextVisible: boolean, focusIndex = 0): void => {\n defaultFocusIndex.current = focusIndex;\n setVisible(nextVisible);\n if (!menubar) {\n return;\n }\n\n if (nextVisible) {\n enableHoverMode(id);\n } else {\n disableHoverMode();\n }\n };\n\n return (\n <MenuItem\n {...remaining}\n aria-haspopup={isSheet ? \"dialog\" : \"menu\"}\n aria-expanded={visible || undefined}\n id={id}\n ref={ref}\n rightAddon={rightAddon}\n onClick={(event) => {\n onClick(event);\n\n event.stopPropagation();\n updateVisibility(!visible);\n }}\n onKeyDown={(event) => {\n onKeyDown(event);\n\n switch (event.key) {\n case \"ArrowDown\":\n if (horizontal || root) {\n event.preventDefault();\n event.stopPropagation();\n updateVisibility(true);\n }\n break;\n case \"ArrowRight\":\n if (!horizontal && !root) {\n event.preventDefault();\n event.stopPropagation();\n updateVisibility(true);\n }\n break;\n }\n }}\n onMouseEnter={(event) => {\n onMouseEnter(event);\n if (mode === \"touch\" || disabled || !menubar) {\n return;\n }\n\n defaultFocusIndex.current = 0;\n startShowFlow(id);\n }}\n onMouseLeave={(event) => {\n onMouseLeave(event);\n if (mode === \"touch\" || disabled || !menubar) {\n return;\n }\n\n clearVisibilityTimeout();\n }}\n >\n {children}\n </MenuItem>\n );\n }\n);\n"],"names":["forwardRef","useEffect","useHoverMode","IconRotator","getIcon","useUserInteractionMode","useAppSize","useEnsuredId","useMenuConfiguration","MenuItem","useMenuVisibility","useMenuBarContext","noop","MenuItemButton","props","ref","id","propId","children","onClick","onKeyDown","onMouseEnter","onMouseLeave","rightAddon","propRightAddon","iconRotatorProps","disableDropdownIcon","remaining","disabled","mode","renderAsSheet","isPhone","isSheet","root","menubar","activeId","enableHoverMode","disableHoverMode","startDisableTimer","clearDisableTimer","leaveTimeoutRef","hoverTimeoutRef","visible","setVisible","defaultFocusIndex","startShowFlow","clearVisibilityTimeout","horizontal","dropdownIcon","rotated","updateVisibility","nextVisible","focusIndex","current","aria-haspopup","aria-expanded","undefined","event","stopPropagation","key","preventDefault"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/MenuItemGroup.tsx"],"sourcesContent":["\"use client\";\nimport { cnb } from \"cnbuilder\";\nimport { forwardRef, type ReactNode } from \"react\";\nimport { List, type ListElement, type ListProps } from \"../list/List.js\";\nimport { type LabelRequiredForA11y } from \"../types.js\";\nimport { useMenuConfiguration } from \"./MenuConfigurationProvider.js\";\n\n/** @remarks \\@since 5.0.0 */\nexport type MenuItemGroupProps = LabelRequiredForA11y<\n Omit<ListProps, \"role\">\n> & {\n children: ReactNode;\n};\n\n/**\n * **Client Component**\n *\n * If a menu or menubar contains more than one group of menuitemradio elements,\n * or if the menu contains one group and other, unrelated menu items, authors\n * SHOULD nest each set of related menuitemradio elements in an element using\n * the group role, and authors SHOULD delimit the group from other menu items\n * with an element using the separator role.\n *\n * @see {@link https://www.w3.org/TR/wai-aria-1.1/#menuitemradio}\n *\n * @example\n * Simple Example\n * ```tsx\n * import { ReactElement, useState } from \"react\";\n * import {\n * DropdownMenu,\n * MenuItemGroup,\n * MenuItemRadio,\n * MenuItemSeparator,\n * MenuItemSwitch,\n * } from \"@react-md/core\";\n *\n * function Example(): ReactElement {\n * const [value, setValue] = useState(\"value1\");\n * const [checked, setChecked] = useState(false);\n *\n * return (\n * <DropdownMenu id=\"dropdown-menu-id\" buttonChildren=\"Button\">\n * <MenuItemSwitch\n * id=\"switch-id\"\n * checked={checked}\n * onCheckedChange={nextChecked => setChecked(nextChecked)}\n * >\n * Light mode\n * </MenuItemSwitch>\n * <MenuItemSeparator />\n * <MenuItemGroup aria-label=\"My Group Label\">\n * <MenuItemRadio\n * id=\"radio-1\"\n * checked={value === \"value1\"}\n * onCheckedChange={() => setValue(\"value1\")}\n * >\n * Radio 1\n * </MenuItemRadio>\n * <MenuItemRadio\n * id=\"radio-2\"\n * checked={value === \"value2\"}\n * onCheckedChange={() => setValue(\"value2\")}\n * >\n * Radio 2\n * </MenuItemRadio>\n * <MenuItemRadio\n * id=\"radio-3\"\n * checked={value === \"value3\"}\n * onCheckedChange={() => setValue(\"value3\")}\n * >\n * Radio 3\n * </MenuItemRadio>\n * </MenuItemGroup>\n * </DropdownMenu>\n * );\n * }\n * ```\n *\n * @remarks \\@since 5.0.0\n */\nexport const MenuItemGroup = forwardRef<ListElement, MenuItemGroupProps>(\n function MenuItemGroup({ children, className, ...props }, ref) {\n const { horizontal } = useMenuConfiguration(props);\n return (\n <List\n {...props}\n ref={ref}\n role=\"group\"\n className={cnb(\"rmd-menu-item-group\", className)}\n horizontal={horizontal}\n >\n {children}\n </List>\n );\n }\n);\n"],"names":["cnb","forwardRef","List","useMenuConfiguration","MenuItemGroup","children","className","props","ref","horizontal","role"],"mappings":"AAAA;;AACA,SAASA,GAAG,QAAQ,YAAY;AAChC,SAASC,UAAU,QAAwB,QAAQ;AACnD,SAASC,IAAI,QAA0C,kBAAkB;AAEzE,SAASC,oBAAoB,QAAQ,iCAAiC;AAStE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkEC,GACD,OAAO,MAAMC,8BAAgBH,WAC3B,SAASG,cAAc,EAAEC,QAAQ,EAAEC,SAAS,EAAE,GAAGC,OAAO,EAAEC,GAAG;IAC3D,MAAM,EAAEC,UAAU,EAAE,GAAGN,qBAAqBI;IAC5C,qBACE,KAACL;QACE,GAAGK,KAAK;QACTC,KAAKA;QACLE,MAAK;QACLJ,WAAWN,IAAI,uBAAuBM;QACtCG,YAAYA;kBAEXJ;;AAGP,GACA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/MenuItemSeparator.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport { type DividerProps } from \"../divider/Divider.js\";\nimport { divider } from \"../divider/styles.js\";\nimport { useMenuConfiguration } from \"./MenuConfigurationProvider.js\";\n\n/** @remarks \\@since 5.0.0 */\nexport interface MenuItemSeparatorProps\n extends HTMLAttributes<HTMLLIElement>,\n Pick<DividerProps, \"inset\" | \"vertical\"> {}\n\n/**\n * **Client Component**\n *\n * This component renders a `<li role=\"separator\">` with the divider styles. It\n * will also automatically render itself vertically instead of horizontally if\n * the menu is rendering horizontally.\n *\n * @remarks \\@since 5.0.0 Renders as an `<li>` instead of a `<div>` or `<hr />`.\n */\nexport const MenuItemSeparator = forwardRef<\n HTMLLIElement,\n MenuItemSeparatorProps\n>(function MenuItemSeparator(props, ref) {\n const {\n className,\n inset,\n vertical: propVertical,\n children,\n ...remaining\n } = props;\n\n const horizontal = useMenuConfiguration().horizontal;\n const vertical = propVertical ?? horizontal;\n\n return (\n <li\n {...remaining}\n aria-orientation={vertical ? \"vertical\" : undefined}\n ref={ref}\n role=\"separator\"\n className={divider({ inset: inset && !vertical, vertical, className })}\n >\n {children}\n </li>\n );\n});\n"],"names":["forwardRef","divider","useMenuConfiguration","MenuItemSeparator","props","ref","className","inset","vertical","propVertical","children","remaining","horizontal","li","aria-orientation","undefined","role"],"mappings":"AAAA;;AACA,SAASA,UAAU,QAA6B,QAAQ;AAExD,SAASC,OAAO,QAAQ,uBAAuB;AAC/C,SAASC,oBAAoB,QAAQ,iCAAiC;AAOtE;;;;;;;;CAQC,GACD,OAAO,MAAMC,kCAAoBH,WAG/B,SAASG,kBAAkBC,KAAK,EAAEC,GAAG;IACrC,MAAM,EACJC,SAAS,EACTC,KAAK,EACLC,UAAUC,YAAY,EACtBC,QAAQ,EACR,GAAGC,WACJ,GAAGP;IAEJ,MAAMQ,aAAaV,uBAAuBU,UAAU;IACpD,MAAMJ,WAAWC,gBAAgBG;IAEjC,qBACE,KAACC;QACE,GAAGF,SAAS;QACbG,oBAAkBN,WAAW,aAAaO;QAC1CV,KAAKA;QACLW,MAAK;QACLV,WAAWL,QAAQ;YAAEM,OAAOA,SAAS,CAACC;YAAUA;YAAUF;QAAU;kBAEnEI;;AAGP,GAAG"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/MenuSheet.tsx"],"sourcesContent":["\"use client\";\nimport { type CSSProperties, type ReactElement, type ReactNode } from \"react\";\nimport { Sheet, type BaseSheetProps } from \"../sheet/Sheet.js\";\nimport { type LabelRequiredForA11y, type PropsWithRef } from \"../types.js\";\nimport { type RenderMenuAsSheet } from \"./MenuConfigurationProvider.js\";\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport type MenuSheetConfigurableProps = Omit<\n BaseSheetProps,\n \"visible\" | \"onRequestClose\"\n>;\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface MenuSheetConvenienceProps {\n /**\n * This can be used to apply additional props to the `Sheet` component when\n * the `Menu` is being rendered as a `Sheet`.\n *\n * Note: You can override the `style` and `className` using\n * {@link sheetStyle} and {@link sheetClassName} instead for convenience.\n *\n * @example\n * ```tsx\n * <Menu\n * {...props}\n * sheetProps={{\n * style: {\n * // custom inline style\n * },\n * className: \"come-class-name\",\n * horizontalSize: \"touch\",\n * }}\n * />\n * ```\n */\n sheetProps?: PropsWithRef<MenuSheetConfigurableProps, HTMLDivElement>;\n\n /**\n * Convenience prop to apply custom style to the `Sheet` component when the\n * `Menu` is being rendered as a `Sheet`.\n */\n sheetStyle?: CSSProperties;\n\n /**\n * Convenience prop to apply custom class name to the `Sheet` component when\n * the `Menu` is being rendered as a `Sheet`.\n */\n sheetClassName?: string;\n}\n\n/**\n * @internal\n * @remarks\n * \\@since 5.0.0\n * \\@since 6.0.0 Updated to use the latest menu API.\n */\nexport interface MenuSheetProps extends BaseSheetProps {\n /** {@inheritDoc MenuConfiguration.sheetHeader} */\n header?: ReactNode;\n /** {@inheritDoc MenuConfiguration.sheetFooter} */\n footer?: ReactNode;\n children: ReactNode;\n\n /** @remarks \\@since 6.0.0 */\n enabled: RenderMenuAsSheet;\n}\n\n/**\n * **Client Component**\n *\n * Implements a `Menu` using the `Sheet` component that probably shouldn't\n * really be used externally.\n *\n * @internal\n * @remarks\n * \\@since 5.0.0\n * \\@since 6.0.0 Added the `enabled` prop and does not render a custom `Menu`\n * implementation.\n */\nexport function MenuSheet(\n props: LabelRequiredForA11y<MenuSheetProps>\n): ReactElement {\n const {\n header,\n footer,\n children,\n onClick = noop,\n overlayProps,\n enabled,\n ...remaining\n } = props;\n const { onRequestClose } = props;\n\n if (!enabled) {\n return <>{children}</>;\n }\n\n return (\n <Sheet\n {...remaining}\n onClick={(event) => {\n onClick(event);\n\n // Prevent closing parent sheet/menus if an element in the header or\n // footer is clicked\n if (\n !(event.target instanceof HTMLElement) ||\n event.target\n .closest('.rmd-menu,[role=\"dialog\"]')\n ?.getAttribute(\"role\") === \"dialog\"\n ) {\n event.stopPropagation();\n }\n }}\n overlayProps={{\n ...overlayProps,\n onClick: (event) => {\n overlayProps?.onClick?.(event);\n\n // prevent closing parent menus if the overlay element is clicked.\n event.stopPropagation();\n onRequestClose();\n },\n }}\n >\n {header}\n {children}\n {footer}\n </Sheet>\n );\n}\n"],"names":["Sheet","noop","MenuSheet","props","header","footer","children","onClick","overlayProps","enabled","remaining","onRequestClose","event","target","HTMLElement","closest","getAttribute","stopPropagation"],"mappings":"AAAA;;AAEA,SAASA,KAAK,QAA6B,oBAAoB;AAI/D,MAAMC,OAAO;AACX,aAAa;AACf;AAmEA;;;;;;;;;;;CAWC,GACD,OAAO,SAASC,UACdC,KAA2C;IAE3C,MAAM,EACJC,MAAM,EACNC,MAAM,EACNC,QAAQ,EACRC,UAAUN,IAAI,EACdO,YAAY,EACZC,OAAO,EACP,GAAGC,WACJ,GAAGP;IACJ,MAAM,EAAEQ,cAAc,EAAE,GAAGR;IAE3B,IAAI,CAACM,SAAS;QACZ,qBAAO;sBAAGH;;IACZ;IAEA,qBACE,MAACN;QACE,GAAGU,SAAS;QACbH,SAAS,CAACK;YACRL,QAAQK;YAER,oEAAoE;YACpE,oBAAoB;YACpB,IACE,CAAEA,CAAAA,MAAMC,MAAM,YAAYC,WAAU,KACpCF,MAAMC,MAAM,CACTE,OAAO,CAAC,8BACPC,aAAa,YAAY,UAC7B;gBACAJ,MAAMK,eAAe;YACvB;QACF;QACAT,cAAc;YACZ,GAAGA,YAAY;YACfD,SAAS,CAACK;gBACRJ,cAAcD,UAAUK;gBAExB,kEAAkE;gBAClEA,MAAMK,eAAe;gBACrBN;YACF;QACF;;YAECP;YACAE;YACAD;;;AAGP"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/MenuVisibilityProvider.tsx"],"sourcesContent":["\"use client\";\nimport {\n createContext,\n useContext,\n useMemo,\n type ReactElement,\n type ReactNode,\n} from \"react\";\nimport { type NonNullMutableRef, type UseStateObject } from \"../types.js\";\n\n/**\n * @remarks\n * \\@since 5.0.0\n * \\@since 6.0.0 Added the `defaultFocusIndex` ref.\n */\nexport interface MenuVisibilityContext\n extends UseStateObject<\"visible\", boolean> {\n defaultFocusIndex: NonNullMutableRef<number>;\n}\n\n/**\n * @internal\n * @remarks \\@since 5.0.0\n */\nconst context = createContext<MenuVisibilityContext>({\n visible: false,\n setVisible() {\n throw new Error('\"MenuVisibilityProvider\" must be a parent component');\n },\n defaultFocusIndex: { current: 0 },\n});\ncontext.displayName = \"MenuVisibility\";\n\n/**\n * @internal\n * @remarks \\@since 5.0.0\n */\nconst { Provider } = context;\n\n/**\n * This hook allows you control the visibility of a parent menu. The main\n * use-case for this hook is adding a custom sheet header/footer.\n *\n * @example\n * Simple Example\n * ```tsx\n * function SheetFooter(): ReactElement {\n * const { setVisible } = useMenuVisibility();\n *\n * return (\n * <DialogFooter>\n * <Button onClick={() => setVisible(false)}>Cancel</Button>\n * </DialogFooter>\n * );\n * }\n * ```\n *\n * @returns the {@link MenuVisibilityContext}\n * @remarks \\@since 5.0.0\n */\nexport function useMenuVisibility(): Readonly<MenuVisibilityContext> {\n return useContext(context);\n}\n\n/**\n * @internal\n * @remarks \\@since 5.0.0\n */\nexport interface MenuVisibilityProviderProps extends MenuVisibilityContext {\n children: ReactNode;\n}\n\n/**\n * **Client Component**\n *\n * @internal\n * @remarks \\@since 5.0.0\n */\nexport function MenuVisibilityProvider({\n visible,\n setVisible,\n defaultFocusIndex,\n children,\n}: MenuVisibilityProviderProps): ReactElement {\n const value = useMemo<MenuVisibilityContext>(\n () => ({\n visible,\n setVisible,\n defaultFocusIndex,\n }),\n [visible, setVisible, defaultFocusIndex]\n );\n\n return <Provider value={value}>{children}</Provider>;\n}\n"],"names":["createContext","useContext","useMemo","context","visible","setVisible","Error","defaultFocusIndex","current","displayName","Provider","useMenuVisibility","MenuVisibilityProvider","children","value"],"mappings":"AAAA;;AACA,SACEA,aAAa,EACbC,UAAU,EACVC,OAAO,QAGF,QAAQ;AAaf;;;CAGC,GACD,MAAMC,wBAAUH,cAAqC;IACnDI,SAAS;IACTC;QACE,MAAM,IAAIC,MAAM;IAClB;IACAC,mBAAmB;QAAEC,SAAS;IAAE;AAClC;AACAL,QAAQM,WAAW,GAAG;AAEtB;;;CAGC,GACD,MAAM,EAAEC,QAAQ,EAAE,GAAGP;AAErB;;;;;;;;;;;;;;;;;;;;CAoBC,GACD,OAAO,SAASQ;IACd,OAAOV,WAAWE;AACpB;AAUA;;;;;CAKC,GACD,OAAO,SAASS,uBAAuB,EACrCR,OAAO,EACPC,UAAU,EACVE,iBAAiB,EACjBM,QAAQ,EACoB;IAC5B,MAAMC,QAAQZ,QACZ,IAAO,CAAA;YACLE;YACAC;YACAE;QACF,CAAA,GACA;QAACH;QAASC;QAAYE;KAAkB;IAG1C,qBAAO,KAACG;QAASI,OAAOA;kBAAQD;;AAClC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/MenuWidget.tsx"],"sourcesContent":["\"use client\";\nimport { cnb } from \"cnbuilder\";\nimport { forwardRef, useRef, useState, type HTMLAttributes } from \"react\";\nimport { List } from \"../list/List.js\";\nimport { type GetDefaultFocusedIndex } from \"../movement/types.js\";\nimport { useKeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\nimport { type NonNullMutableRef } from \"../types.js\";\nimport { bem } from \"../utils/bem.js\";\nimport { type MenuListConvenienceProps } from \"./Menu.js\";\nimport { MenuWidgetKeyboardProvider } from \"./MenuWidgetKeyboardProvider.js\";\nimport {\n MenuBarProvider,\n useMenuBarContext,\n useMenuBarProvider,\n} from \"./useMenuBarProvider.js\";\n\nconst styles = bem(\"rmd-menu\");\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport interface MenuClassNameOptions {\n className?: string;\n horizontal?: boolean;\n elevated?: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function menu(options: MenuClassNameOptions = {}): string {\n const { className, horizontal, elevated } = options;\n\n return cnb(styles({ horizontal, elevated }), className);\n}\n\n/**\n * @internal\n */\nexport interface MenuWidgetProps\n extends HTMLAttributes<HTMLDivElement>,\n MenuListConvenienceProps {\n isSheet: boolean;\n horizontal: boolean;\n disableElevation?: boolean;\n cancelUnmountFocus: NonNullMutableRef<boolean>;\n getDefaultFocusedIndex?: GetDefaultFocusedIndex;\n}\n\n/**\n * **Client Component**\n *\n * This component was added to support the listbox role and the `useId()` hook.\n * If the `temporary` prop is set, the `MenuItem`'s ids will not be the same the\n * next time the menu opens, so the aria-activedescendant will point to a\n * non-existing id\n *\n * @internal\n */\nexport const MenuWidget = forwardRef<HTMLDivElement, MenuWidgetProps>(\n function MenuWidget(props, ref) {\n const {\n id,\n role = \"menu\",\n className,\n listStyle,\n listClassName,\n listProps,\n children,\n onClick,\n onBlur = noop,\n onFocus = noop,\n onKeyDown = noop,\n tabIndex = -1,\n isSheet,\n horizontal,\n disableElevation,\n cancelUnmountFocus,\n getDefaultFocusedIndex,\n ...remaining\n } = props;\n const isListbox = role === \"listbox\";\n const { menubar } = useMenuBarContext();\n\n // Since there is the possibility of other tab focusable elements within the\n // sheet and the menu items are programmatically focused, the menu's\n // tabIndex needs to be set to `-1` while one of the child menu items are\n // focused. This allows Shift+Tab correctly focuses the previous focusable\n // element within the sheet. Since `onFocus` and `onBlur` will be bubbled up\n // to the menu widget each time a new MenuItem is focused, only disable the\n // focused state if the blur event is fired without another focus event\n // within an animation frame.\n const [sheetMenuFocused, setSheetMenuFocused] = useState(false);\n const sheetBlurredFame = useRef(0);\n const menuBarContext = useMenuBarProvider({\n root: false,\n menubar,\n hoverTimeout: menubar ? 0 : undefined,\n defaultActiveId: id,\n });\n const { movementProps, movementContext } = useKeyboardMovementProvider({\n onClick,\n onFocus(event) {\n onFocus(event);\n\n if (!isSheet) {\n return;\n }\n\n window.cancelAnimationFrame(sheetBlurredFame.current);\n setSheetMenuFocused(true);\n },\n onKeyDown,\n horizontal,\n loopable: true,\n searchable: true,\n programmatic: true,\n includeDisabled: true,\n getDefaultFocusedIndex,\n });\n\n return (\n <MenuWidgetKeyboardProvider disabled={isListbox} value={movementContext}>\n <MenuBarProvider value={menuBarContext}>\n <div\n aria-orientation={horizontal ? \"horizontal\" : undefined}\n {...remaining}\n {...(isListbox ? { onClick, onFocus, onKeyDown } : movementProps)}\n id={id}\n ref={ref}\n role={role}\n className={menu({\n className,\n elevated: !disableElevation && !isSheet,\n horizontal,\n })}\n tabIndex={isSheet && !sheetMenuFocused ? 0 : tabIndex}\n onBlur={(event) => {\n onBlur(event);\n if (!isSheet) {\n return;\n }\n\n sheetBlurredFame.current = window.requestAnimationFrame(() => {\n setSheetMenuFocused(false);\n });\n }}\n >\n <List\n {...listProps}\n style={listStyle ?? listProps?.style}\n className={listClassName || listProps?.className}\n horizontal={horizontal}\n onClick={(event) => {\n listProps?.onClick?.(event);\n\n // this makes it so you can click on the menu/list without\n // closing the menu\n if (event.target === event.currentTarget) {\n event.stopPropagation();\n }\n\n // This might be a test only workaround since clicking links move focus\n // somewhere else\n if (event.target instanceof HTMLElement) {\n cancelUnmountFocus.current = event.currentTarget.contains(\n event.target.closest(\"a\")\n );\n }\n }}\n >\n {children}\n </List>\n </div>\n </MenuBarProvider>\n </MenuWidgetKeyboardProvider>\n );\n }\n);\n"],"names":["cnb","forwardRef","useRef","useState","List","useKeyboardMovementProvider","bem","MenuWidgetKeyboardProvider","MenuBarProvider","useMenuBarContext","useMenuBarProvider","styles","noop","menu","options","className","horizontal","elevated","MenuWidget","props","ref","id","role","listStyle","listClassName","listProps","children","onClick","onBlur","onFocus","onKeyDown","tabIndex","isSheet","disableElevation","cancelUnmountFocus","getDefaultFocusedIndex","remaining","isListbox","menubar","sheetMenuFocused","setSheetMenuFocused","sheetBlurredFame","menuBarContext","root","hoverTimeout","undefined","defaultActiveId","movementProps","movementContext","event","window","cancelAnimationFrame","current","loopable","searchable","programmatic","includeDisabled","disabled","value","div","aria-orientation","requestAnimationFrame","style","target","currentTarget","stopPropagation","HTMLElement","contains","closest"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/MenuWidgetKeyboardProvider.tsx"],"sourcesContent":["\"use client\";\nimport { type ReactElement, type ReactNode } from \"react\";\nimport { type KeyboardMovementContext } from \"../movement/types.js\";\nimport { KeyboardMovementProvider } from \"../movement/useKeyboardMovementProvider.js\";\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport interface MenuWidgetKeyboardProviderProps {\n value: Readonly<KeyboardMovementContext>;\n disabled: boolean;\n children: ReactNode;\n}\n\n/**\n * **Client Component**\n *\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport function MenuWidgetKeyboardProvider(\n props: MenuWidgetKeyboardProviderProps\n): ReactElement {\n const { value, disabled, children } = props;\n if (disabled) {\n return <>{children}</>;\n }\n\n return (\n <KeyboardMovementProvider value={value}>\n {children}\n </KeyboardMovementProvider>\n );\n}\n"],"names":["KeyboardMovementProvider","MenuWidgetKeyboardProvider","props","value","disabled","children"],"mappings":"AAAA;;AAGA,SAASA,wBAAwB,QAAQ,6CAA6C;AAYtF;;;;;CAKC,GACD,OAAO,SAASC,2BACdC,KAAsC;IAEtC,MAAM,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,QAAQ,EAAE,GAAGH;IACtC,IAAIE,UAAU;QACZ,qBAAO;sBAAGC;;IACZ;IAEA,qBACE,KAACL;QAAyBG,OAAOA;kBAC9BE;;AAGP"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/useContextMenu.ts"],"sourcesContent":["\"use client\";\nimport type { MouseEvent, RefObject } from \"react\";\nimport { useCallback, useRef, useState } from \"react\";\nimport { BELOW_INNER_LEFT_ANCHOR } from \"../positioning/constants.js\";\nimport type { InitialCoords, PositionAnchor } from \"../positioning/types.js\";\nimport type { UseStateObject } from \"../types.js\";\n\n/** @remarks \\@since 6.0.0 */\nexport interface ContextMenuProps extends InitialCoords {\n \"aria-label\": string;\n anchor: PositionAnchor;\n fixedTo: RefObject<HTMLElement>;\n visible: boolean;\n preventScroll: boolean;\n onRequestClose(): void;\n}\n\n/**\n * @remarks\n * \\@since 5.0.0\n * \\@since 6.0.0 Dropped most options since they are no longer required for the\n * context menu to work. Apply any `Menu` props directly to the `Menu` component\n * instead.\n */\nexport interface ContextMenuHookOptions {\n /**\n * @defaultValue `BELOW_INNER_LEFT_ANCHOR`\n * @see {@link BELOW_INNER_LEFT_ANCHOR}\n */\n anchor?: PositionAnchor;\n\n /**\n * @defaultValue `\"Context Menu\"`\n */\n menuLabel?: string;\n\n /**\n * @defaultValue `true`\n */\n preventScroll?: boolean;\n onContextMenu?<E extends HTMLElement>(event: MouseEvent<E>): void;\n}\n\n/**\n * @remarks\n * \\@since 5.0.0\n * \\@since 6.0.0 Renamed from `ContextMenuHookReturnValue` to\n * `ContextMenuImplementation` and dropped the `menuRef` and `menuNodeRef`\n * fields.\n */\nexport interface ContextMenuImplementation\n extends UseStateObject<\"visible\", boolean> {\n menuProps: ContextMenuProps;\n onContextMenu<E extends HTMLElement>(event: MouseEvent<E>): void;\n}\n\nconst noop = (): void => {\n // do nothing\n};\n\n/**\n * This hook controls the visibility and positioning for a context menu.\n *\n * @example\n * Simple Example\n * ```tsx\n * import type { ReactElement } from \"react\";\n * import [ Menu, MenuItem, useContextMenu ] from \"@react-md/core\":\n *\n * function Example(): ReactElement {\n * const { menuProps, onContextMenu } = useContextMenu();\n *\n * return (\n * <div onContextMenu={onContextMenu}>\n * <textarea />\n * <Menu {...menuProps}>\n * <MenuItem>Cut</MenuItem>\n * <MenuItem>Copy</MenuItem>\n * <MenuItem>Paste</MenuItem>\n * <MenuItem>Undo</MenuItem>\n * </Menu>\n * </div>\n * );\n * }\n * ```\n *\n * @remarks\n * \\@since 5.0.0\n * \\@since 6.0.0 No longer supports overriding most of the `Menu` props. The\n * props must be passed to the `Menu` component manually.\n */\nexport function useContextMenu(\n options: ContextMenuHookOptions = {}\n): ContextMenuImplementation {\n const {\n anchor = BELOW_INNER_LEFT_ANCHOR,\n menuLabel = \"Context Menu\",\n onContextMenu = noop,\n preventScroll = true,\n } = options;\n const [coords, setCoords] = useState<InitialCoords>({});\n const [visible, setVisible] = useState(false);\n const fixedTo = useRef<HTMLElement>(null);\n const onRequestClose = useCallback(() => {\n setVisible(false);\n }, []);\n\n return {\n visible,\n setVisible,\n menuProps: {\n \"aria-label\": menuLabel,\n anchor,\n ...coords,\n fixedTo,\n visible,\n onRequestClose,\n preventScroll,\n },\n onContextMenu(event) {\n onContextMenu(event);\n if (event.isPropagationStopped()) {\n return;\n }\n\n event.preventDefault();\n event.stopPropagation();\n setCoords({\n initialX: event.clientX,\n initialY: event.clientY,\n });\n setVisible(true);\n },\n };\n}\n"],"names":["useCallback","useRef","useState","BELOW_INNER_LEFT_ANCHOR","noop","useContextMenu","options","anchor","menuLabel","onContextMenu","preventScroll","coords","setCoords","visible","setVisible","fixedTo","onRequestClose","menuProps","event","isPropagationStopped","preventDefault","stopPropagation","initialX","clientX","initialY","clientY"],"mappings":"AAAA;AAEA,SAASA,WAAW,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,QAAQ;AACtD,SAASC,uBAAuB,QAAQ,8BAA8B;AAqDtE,MAAMC,OAAO;AACX,aAAa;AACf;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BC,GACD,OAAO,SAASC,eACdC,UAAkC,CAAC,CAAC;IAEpC,MAAM,EACJC,SAASJ,uBAAuB,EAChCK,YAAY,cAAc,EAC1BC,gBAAgBL,IAAI,EACpBM,gBAAgB,IAAI,EACrB,GAAGJ;IACJ,MAAM,CAACK,QAAQC,UAAU,GAAGV,SAAwB,CAAC;IACrD,MAAM,CAACW,SAASC,WAAW,GAAGZ,SAAS;IACvC,MAAMa,UAAUd,OAAoB;IACpC,MAAMe,iBAAiBhB,YAAY;QACjCc,WAAW;IACb,GAAG,EAAE;IAEL,OAAO;QACLD;QACAC;QACAG,WAAW;YACT,cAAcT;YACdD;YACA,GAAGI,MAAM;YACTI;YACAF;YACAG;YACAN;QACF;QACAD,eAAcS,KAAK;YACjBT,cAAcS;YACd,IAAIA,MAAMC,oBAAoB,IAAI;gBAChC;YACF;YAEAD,MAAME,cAAc;YACpBF,MAAMG,eAAe;YACrBT,UAAU;gBACRU,UAAUJ,MAAMK,OAAO;gBACvBC,UAAUN,MAAMO,OAAO;YACzB;YACAX,WAAW;QACb;IACF;AACF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/useMenuBarProvider.ts"],"sourcesContent":["\"use client\";\nimport { createContext, useContext, useMemo } from \"react\";\nimport type { HoverModeContext } from \"../hoverMode/useHoverModeProvider.js\";\nimport {\n createHoverModeContext,\n useHoverModeProvider,\n} from \"../hoverMode/useHoverModeProvider.js\";\n\n/**\n * @internal\n * @remarks \\@since 5.0.0\n * @remarks \\@since 6.0.0 Updated to use the new `HoverModeContext` behavior.\n */\nexport interface MenuBarContext extends HoverModeContext {\n root: boolean;\n menubar: boolean;\n menuitem: boolean;\n}\n\nconst context = createContext<MenuBarContext>({\n ...createHoverModeContext(),\n root: false,\n menubar: false,\n menuitem: false,\n});\ncontext.displayName = \"MenuBar\";\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport const { Provider: MenuBarProvider } = context;\n\n/**\n * @internal\n * @remarks \\@since 5.0.0\n */\nexport function useMenuBarContext(): Readonly<MenuBarContext> {\n return useContext(context);\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport interface MenuBarProviderOptions {\n root: boolean;\n menubar: boolean;\n hoverTimeout: number | undefined;\n\n /** @defaultValue `\"\"` */\n defaultActiveId?: string;\n}\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport function useMenuBarProvider(\n options: MenuBarProviderOptions\n): Readonly<MenuBarContext> {\n const { hoverTimeout, root, menubar, defaultActiveId = \"\" } = options;\n\n const hoverMode = useHoverModeProvider({\n hoverTimeout,\n forceRerender: true,\n defaultActiveId,\n });\n\n if (defaultActiveId) {\n // without this \"fix\", first-level nested dropdown menus will only disable\n // the animation the first time they are shown.\n hoverMode.animatedOnceRef.current = true;\n }\n\n return useMemo<MenuBarContext>(\n () => ({\n // when not within a menubar, disable all the hover mode functionality by\n // creating an empty hover mode context. This makes it so nested dropdown\n // menus don't trigger the hover mode timeouts and behavior\n ...(menubar ? hoverMode : createHoverModeContext()),\n root,\n menubar,\n menuitem: true,\n }),\n [hoverMode, menubar, root]\n );\n}\n"],"names":["createContext","useContext","useMemo","createHoverModeContext","useHoverModeProvider","context","root","menubar","menuitem","displayName","Provider","MenuBarProvider","useMenuBarContext","useMenuBarProvider","options","hoverTimeout","defaultActiveId","hoverMode","forceRerender","animatedOnceRef","current"],"mappings":"AAAA;AACA,SAASA,aAAa,EAAEC,UAAU,EAAEC,OAAO,QAAQ,QAAQ;AAE3D,SACEC,sBAAsB,EACtBC,oBAAoB,QACf,uCAAuC;AAa9C,MAAMC,UAAUL,cAA8B;IAC5C,GAAGG,wBAAwB;IAC3BG,MAAM;IACNC,SAAS;IACTC,UAAU;AACZ;AACAH,QAAQI,WAAW,GAAG;AAEtB;;;CAGC,GACD,OAAO,MAAM,EAAEC,UAAUC,eAAe,EAAE,GAAGN,QAAQ;AAErD;;;CAGC,GACD,OAAO,SAASO;IACd,OAAOX,WAAWI;AACpB;AAeA;;;CAGC,GACD,OAAO,SAASQ,mBACdC,OAA+B;IAE/B,MAAM,EAAEC,YAAY,EAAET,IAAI,EAAEC,OAAO,EAAES,kBAAkB,EAAE,EAAE,GAAGF;IAE9D,MAAMG,YAAYb,qBAAqB;QACrCW;QACAG,eAAe;QACfF;IACF;IAEA,IAAIA,iBAAiB;QACnB,0EAA0E;QAC1E,+CAA+C;QAC/CC,UAAUE,eAAe,CAACC,OAAO,GAAG;IACtC;IAEA,OAAOlB,QACL,IAAO,CAAA;YACL,yEAAyE;YACzE,yEAAyE;YACzE,2DAA2D;YAC3D,GAAIK,UAAUU,YAAYd,wBAAwB;YAClDG;YACAC;YACAC,UAAU;QACZ,CAAA,GACA;QAACS;QAAWV;QAASD;KAAK;AAE9B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/menu/utils.ts"],"sourcesContent":["import type { FloatingActionButtonPosition } from \"../button/FloatingActionButton.js\";\nimport {\n BELOW_CENTER_ANCHOR,\n BELOW_INNER_LEFT_ANCHOR,\n BOTTOM_INNER_LEFT_ANCHOR,\n BOTTOM_INNER_RIGHT_ANCHOR,\n CENTER_RIGHT_ANCHOR,\n TOP_INNER_LEFT_ANCHOR,\n TOP_INNER_RIGHT_ANCHOR,\n TOP_RIGHT_ANCHOR,\n} from \"../positioning/constants.js\";\nimport type { PositionAnchor } from \"../positioning/types.js\";\n\n/**\n * @remarks \\@since 5.0.0\n * @internal\n */\ninterface DefaultAnchorOptions {\n anchor?: PositionAnchor;\n menubar: boolean;\n menuitem: boolean;\n floating?: FloatingActionButtonPosition;\n horizontal: boolean;\n}\n\n/**\n * @remarks \\@since 5.0.0\n * @internal\n */\nexport const getDefaultAnchor = (\n options: DefaultAnchorOptions\n): PositionAnchor => {\n const { anchor, menubar, menuitem, floating, horizontal } = options;\n if (anchor) {\n return anchor;\n }\n\n switch (floating) {\n case \"bottom-left\":\n return BOTTOM_INNER_LEFT_ANCHOR;\n case \"bottom-right\":\n return BOTTOM_INNER_RIGHT_ANCHOR;\n case \"top-left\":\n return TOP_INNER_LEFT_ANCHOR;\n case \"top-right\":\n return TOP_INNER_RIGHT_ANCHOR;\n }\n\n if (menubar) {\n return menuitem ? CENTER_RIGHT_ANCHOR : BELOW_INNER_LEFT_ANCHOR;\n }\n\n if (horizontal) {\n return BELOW_CENTER_ANCHOR;\n }\n\n if (menuitem) {\n return TOP_RIGHT_ANCHOR;\n }\n\n return TOP_INNER_RIGHT_ANCHOR;\n};\n"],"names":["BELOW_CENTER_ANCHOR","BELOW_INNER_LEFT_ANCHOR","BOTTOM_INNER_LEFT_ANCHOR","BOTTOM_INNER_RIGHT_ANCHOR","CENTER_RIGHT_ANCHOR","TOP_INNER_LEFT_ANCHOR","TOP_INNER_RIGHT_ANCHOR","TOP_RIGHT_ANCHOR","getDefaultAnchor","options","anchor","menubar","menuitem","floating","horizontal"],"mappings":"AACA,SACEA,mBAAmB,EACnBC,uBAAuB,EACvBC,wBAAwB,EACxBC,yBAAyB,EACzBC,mBAAmB,EACnBC,qBAAqB,EACrBC,sBAAsB,EACtBC,gBAAgB,QACX,8BAA8B;AAerC;;;CAGC,GACD,OAAO,MAAMC,mBAAmB,CAC9BC;IAEA,MAAM,EAAEC,MAAM,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,UAAU,EAAE,GAAGL;IAC5D,IAAIC,QAAQ;QACV,OAAOA;IACT;IAEA,OAAQG;QACN,KAAK;YACH,OAAOX;QACT,KAAK;YACH,OAAOC;QACT,KAAK;YACH,OAAOE;QACT,KAAK;YACH,OAAOC;IACX;IAEA,IAAIK,SAAS;QACX,OAAOC,WAAWR,sBAAsBH;IAC1C;IAEA,IAAIa,YAAY;QACd,OAAOd;IACT;IAEA,IAAIY,UAAU;QACZ,OAAOL;IACT;IAEA,OAAOD;AACT,EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/movement/constants.ts"],"sourcesContent":["import type { KeyboardMovementConfig } from \"./types.js\";\n\n/**\n * Most custom keyboard functionality use these keys.\n *\n * @remarks \\@since 5.0.0\n * @internal\n */\nexport const DEFAULT_KEYBOARD_MOVEMENT: Readonly<KeyboardMovementConfig> = {\n incrementKeys: [\"ArrowDown\"],\n decrementKeys: [\"ArrowUp\"],\n jumpToFirstKeys: [\"Home\"],\n jumpToLastKeys: [\"End\"],\n};\n\n/**\n * @remarks \\@since 5.1.2\n * @internal\n */\nexport const DEFAULT_LTR_KEYBOARD_MOVEMENT: Readonly<KeyboardMovementConfig> = {\n incrementKeys: [\"ArrowRight\"],\n decrementKeys: [\"ArrowLeft\"],\n jumpToFirstKeys: [\"Home\"],\n jumpToLastKeys: [\"End\"],\n};\n\n/**\n * @remarks \\@since 5.1.2\n * @internal\n */\nexport const DEFAULT_RTL_KEYBOARD_MOVEMENT: Readonly<KeyboardMovementConfig> = {\n incrementKeys: [\"ArrowLeft\"],\n decrementKeys: [\"ArrowRight\"],\n jumpToFirstKeys: [\"Home\"],\n jumpToLastKeys: [\"End\"],\n};\n"],"names":["DEFAULT_KEYBOARD_MOVEMENT","incrementKeys","decrementKeys","jumpToFirstKeys","jumpToLastKeys","DEFAULT_LTR_KEYBOARD_MOVEMENT","DEFAULT_RTL_KEYBOARD_MOVEMENT"],"mappings":"AAEA;;;;;CAKC,GACD,OAAO,MAAMA,4BAA8D;IACzEC,eAAe;QAAC;KAAY;IAC5BC,eAAe;QAAC;KAAU;IAC1BC,iBAAiB;QAAC;KAAO;IACzBC,gBAAgB;QAAC;KAAM;AACzB,EAAE;AAEF;;;CAGC,GACD,OAAO,MAAMC,gCAAkE;IAC7EJ,eAAe;QAAC;KAAa;IAC7BC,eAAe;QAAC;KAAY;IAC5BC,iBAAiB;QAAC;KAAO;IACzBC,gBAAgB;QAAC;KAAM;AACzB,EAAE;AAEF;;;CAGC,GACD,OAAO,MAAME,gCAAkE;IAC7EL,eAAe;QAAC;KAAY;IAC5BC,eAAe;QAAC;KAAa;IAC7BC,iBAAiB;QAAC;KAAO;IACzBC,gBAAgB;QAAC;KAAM;AACzB,EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/movement/findMatchIndex.ts"],"sourcesContent":["/** @internal */\nexport interface BaseOptions {\n /**\n * The current query string to find within the values\n */\n value: string;\n\n /**\n * The list of values to search within\n */\n values: readonly string[];\n\n /**\n * The start index for the search\n */\n startIndex: number;\n}\n\n/** @internal */\nexport interface MatchInRangeOptions extends BaseOptions {\n /**\n * The end index for the search\n */\n endIndex: number;\n}\n\n/**\n * Attempts to find the first match index for a list of values that starts with\n * the provided query string and is within the start and end indexes. If no\n * matches are found, -1 will be returned instead.\n *\n * Since this is normally coming from a keydown event, the query *must* be a\n * string of all capital letters to work as each value will be converted to\n * uppercase before checking.\n * @internal\n */\nexport function findMatchInRange(options: MatchInRangeOptions): number {\n const { values, startIndex, endIndex } = options;\n if (!values.length) {\n return -1;\n }\n\n const value = options.value.toUpperCase();\n\n for (let i = startIndex; i < endIndex; i += 1) {\n const content = values[i];\n if (content.toUpperCase().indexOf(value) === 0) {\n return i;\n }\n }\n\n return -1;\n}\n\n/** @internal */\nexport interface MatchIndexOptions extends BaseOptions {\n /**\n * Boolean if the current index can be included in the search\n *\n * @defaultValue `true`\n */\n isSelfMatchable?: boolean;\n}\n\n/**\n * A function that is used to find the next match index within a list of values\n * by comparing the start values ignoring case.\n *\n * If a match can not be found from the search string, `-1` will be returned.\n * The search value is self-matchable by default, but it can be omitted by\n * disabling the `isSelfMatchable` argument. This will make a self-match return\n * `-1`.\n *\n * @internal\n */\nexport function findMatchIndex(options: MatchIndexOptions): number {\n const { value, values, startIndex, isSelfMatchable = true } = options;\n // this was added to support comboboxes when there are no options available\n if (!values.length) {\n return -1;\n }\n\n let index = findMatchInRange({\n value,\n values,\n startIndex: startIndex + 1,\n endIndex: values.length,\n });\n if (index === -1) {\n const endIndex = startIndex + (isSelfMatchable ? 1 : 0);\n index = findMatchInRange({\n value,\n values,\n startIndex: 0,\n endIndex,\n });\n }\n\n return index;\n}\n"],"names":["findMatchInRange","options","values","startIndex","endIndex","length","value","toUpperCase","i","content","indexOf","findMatchIndex","isSelfMatchable","index"],"mappings":"AAAA,cAAc,GA0Bd;;;;;;;;;CASC,GACD,OAAO,SAASA,iBAAiBC,OAA4B;IAC3D,MAAM,EAAEC,MAAM,EAAEC,UAAU,EAAEC,QAAQ,EAAE,GAAGH;IACzC,IAAI,CAACC,OAAOG,MAAM,EAAE;QAClB,OAAO,CAAC;IACV;IAEA,MAAMC,QAAQL,QAAQK,KAAK,CAACC,WAAW;IAEvC,IAAK,IAAIC,IAAIL,YAAYK,IAAIJ,UAAUI,KAAK,EAAG;QAC7C,MAAMC,UAAUP,MAAM,CAACM,EAAE;QACzB,IAAIC,QAAQF,WAAW,GAAGG,OAAO,CAACJ,WAAW,GAAG;YAC9C,OAAOE;QACT;IACF;IAEA,OAAO,CAAC;AACV;AAYA;;;;;;;;;;CAUC,GACD,OAAO,SAASG,eAAeV,OAA0B;IACvD,MAAM,EAAEK,KAAK,EAAEJ,MAAM,EAAEC,UAAU,EAAES,kBAAkB,IAAI,EAAE,GAAGX;IAC9D,2EAA2E;IAC3E,IAAI,CAACC,OAAOG,MAAM,EAAE;QAClB,OAAO,CAAC;IACV;IAEA,IAAIQ,QAAQb,iBAAiB;QAC3BM;QACAJ;QACAC,YAAYA,aAAa;QACzBC,UAAUF,OAAOG,MAAM;IACzB;IACA,IAAIQ,UAAU,CAAC,GAAG;QAChB,MAAMT,WAAWD,aAAcS,CAAAA,kBAAkB,IAAI,CAAA;QACrDC,QAAQb,iBAAiB;YACvBM;YACAJ;YACAC,YAAY;YACZC;QACF;IACF;IAEA,OAAOS;AACT"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/movement/types.ts"],"sourcesContent":["import type {\n FocusEvent,\n FocusEventHandler,\n KeyboardEvent,\n KeyboardEventHandler,\n MouseEvent,\n MouseEventHandler,\n} from \"react\";\nimport type {\n NonNullMutableRef,\n NonNullRef,\n UseStateSetter,\n} from \"../types.js\";\n\n/**\n * Set this to `\"roving\"` when:\n * - there are a group of focusable elements that have a `tabIndex={-1}`\n * - the container element defaults to having a `tabIndex={0}`\n * - if the container is focused, it should no longer be included in the normal\n * tab flow. Instead, the current focused element should be included instead\n * by changing its `tabIndex` from `-1` to `0`\n *\n * Set this to `\"virtual\"` when:\n * - the container element should never lose focus\n * - the \"focused\" element only gains focus styles instead of being focused\n * - the container element specifies an `aria-activedescendant` pointing to one\n * of the ids for the child \"focusable\" elements\n *\n * @remarks \\@since 6.0.0\n */\nexport type TabIndexBehavior = \"roving\" | \"virtual\";\n\n/**\n * @remarks \\@since 5.0.0\n */\nexport interface KeyboardMovementConfiguration {\n /**\n * A list of keys that will attempt to increment the focus index by 1.\n *\n * @defaultValue `[\"ArrowDown\"]`\n */\n incrementKeys?: readonly string[];\n\n /**\n * A list of keys that will attempt to decrement the focus index by 1.\n *\n * @defaultValue `[\"ArrowUp\"]`\n */\n decrementKeys?: readonly string[];\n\n /**\n * A list of keys that will set the focus index to `0`.\n *\n * @defaultValue `[\"Home\"]`\n */\n jumpToFirstKeys?: readonly string[];\n\n /**\n * A list of keys that will set the focus index to the last focusable index.\n *\n * @defaultValue `[\"End\"]`\n */\n jumpToLastKeys?: readonly string[];\n}\n\n/**\n * The defined {@link KeyboardMovementConfiguration} that should be used for\n * custom keyboard focus behavior.\n *\n * @remarks \\@since 5.0.0\n */\nexport type KeyboardMovementConfig = Required<KeyboardMovementConfiguration>;\n\n/**\n * @remarks \\@since 5.0.0\n */\nexport interface KeyboardMovementBehavior {\n /**\n * Boolean if pressing a letter will focus the next item in the\n * {@link KeyboardMovementProvider} that starts with the same letter.\n *\n * @defaultValue `false`\n */\n searchable?: boolean;\n\n /**\n * Boolean if the {@link KeyboardMovementProvider} should allow the focus behavior\n * to loop from the first to last or last to first item instead of preventing\n * any new focus behavior. In other words... if the last item is focused and\n * the user presses a key that should advance the focus to the next focusable\n * element, should the focus stay on the current element or loop back and\n * focus the first focusable item.\n *\n * @defaultValue `false`\n */\n loopable?: boolean;\n\n /**\n * Boolean if elements that are `aria-disabled` or `disabled` should still be\n * able to gain focus.\n *\n * @defaultValue `false`\n */\n includeDisabled?: boolean;\n\n /**\n * Boolean if the keyboard movement is horizontal instead of vertical. This\n * updates the default keyboard config to use `ArrowRight` and `ArrowLeft`\n * instead of `ArrowDown` and `ArrowUp`,\n *\n * @remarks \\@since 5.1.2\n * @defaultValue `false`\n */\n horizontal?: boolean;\n}\n\n/**\n * @remarks\n * \\@since 5.0.0\n * \\@since 6.0.0 Removed `attach`, `detach` and `watching`\n * @internal\n */\nexport interface KeyboardMovementContext\n extends Required<KeyboardMovementBehavior> {\n /** {@inheritDoc KeyboardMovementConfig} */\n config: NonNullRef<KeyboardMovementConfig>;\n\n /** @see {@link TabIndexBehavior} */\n tabIndexBehavior: TabIndexBehavior | undefined;\n\n /**\n * Note: This will only update if the {@link KeyboardMovementProviderOptions.tabIndexBehavior}\n * has been set to `\"roving\"` or `\"virtual\"`.\n */\n activeDescendantId: string;\n}\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport interface FocusableIndexOptions {\n focusables: readonly HTMLElement[];\n includeDisabled: boolean;\n}\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport type GetDefaultFocusedIndex = (options: FocusableIndexOptions) => number;\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport interface FocusChangeEvent {\n index: number;\n element: HTMLElement;\n}\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport type KeyboardMovementFocusChangeEvent = (\n event: FocusChangeEvent\n) => void;\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport interface KeyboardMovementExtensionData<E extends HTMLElement>\n extends KeyboardMovementContext {\n event: KeyboardEvent<E>;\n currentFocusIndex: NonNullMutableRef<number>;\n setFocusIndex(index: number, focusables: readonly HTMLElement[]): void;\n setActiveDescendantId(id: string): void;\n}\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport interface KeyboardMovementProviderOptions<E extends HTMLElement>\n extends KeyboardMovementBehavior,\n KeyboardMovementConfiguration {\n /** @see {@link TabIndexBehavior} */\n tabIndexBehavior?: TabIndexBehavior;\n\n onClick?(event: MouseEvent<E>): void;\n onFocus?(event: FocusEvent<E>): void;\n onKeyDown?(event: KeyboardEvent<E>): void;\n\n /**\n * This is used to implement custom keyboard movement for the `keydown` event.\n */\n extendKeyDown?(movementData: KeyboardMovementExtensionData<E>): void;\n\n /**\n * Triggered whenever the focus changes.\n */\n onFocusChange?: KeyboardMovementFocusChangeEvent;\n\n /**\n * From what I've understood so far, programmatically focusable elements\n * should only be included when disabled elements via `aria-disabled` are\n * allowed.\n *\n * @defaultValue `includeDisabled`\n */\n programmatic?: boolean;\n\n /**\n * This should be used for specific widgets that should not include all\n * focusable elements and instead only specific elements.\n *\n * @example\n * ```ts\n * const getExpansionPanelsOnly = (container: HTMLElement): readonly HTMLElement[] =>\n * container.querySelectorAll(\".rmd-expansion-panel__button\");\n *\n * const getTreeItemsOnly = (container: HTMLElement): readonly HTMLElement[] =>\n * container.querySelectorAll(\"[role='treeitem']\");\n * ```\n *\n * @defaultValue `getFocusableElements`\n * @see the default `getFocusableElements` function.\n */\n getFocusableElements?(\n container: HTMLElement,\n programmatic: boolean\n ): readonly HTMLElement[];\n\n /**\n * This can be used to set the initial focus index whenever the container\n * element is first focused or the focus index is `-1` on other focus events.\n */\n getDefaultFocusedIndex?: GetDefaultFocusedIndex;\n}\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport interface KeyboardMovementProps<E extends HTMLElement> {\n /**\n * This will only be provided if the {@link KeyboardMovementContext.tabIndexBehavior}\n * is set to `\"virtual\"`.\n */\n \"aria-activedescendant\"?: string;\n\n /**\n * This will not be provided if the {@link KeyboardMovementContext.tabIndexBehavior}\n * is `undefined`. Otherwise:\n * - `0` when `\"virtual\"`\n * - `0` when `\"roving\"` and the container element has not been focused at\n * least once\n * - `-1` when `\"roving\"` and the container has been focused at least once\n * - a child element **should** have a `tabIndex={0}` instead\n */\n tabIndex?: number;\n onClick: MouseEventHandler<E>;\n onFocus: FocusEventHandler<E>;\n onKeyDown: KeyboardEventHandler<E>;\n}\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport interface KeyboardMovementProviderImplementation<E extends HTMLElement> {\n movementProps: Readonly<KeyboardMovementProps<E>>;\n movementContext: Readonly<KeyboardMovementContext>;\n currentFocusIndex: NonNullMutableRef<number>;\n setActiveDescendantId: UseStateSetter<string>;\n}\n"],"names":[],"mappings":"AA4QA;;;CAGC,GACD,WAKC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/movement/useKeyboardMovementProvider.ts"],"sourcesContent":["\"use client\";\nimport {\n createContext,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n} from \"react\";\nimport { getFocusableElements as defaultGetFocusableElements } from \"../focus/utils.js\";\nimport { useUserInteractionMode } from \"../interaction/UserInteractionModeProvider.js\";\nimport { useDir } from \"../typography/WritingDirectionProvider.js\";\nimport { useIsomorphicLayoutEffect } from \"../useIsomorphicLayoutEffect.js\";\nimport {\n DEFAULT_KEYBOARD_MOVEMENT,\n DEFAULT_LTR_KEYBOARD_MOVEMENT,\n DEFAULT_RTL_KEYBOARD_MOVEMENT,\n} from \"./constants.js\";\nimport { findMatchIndex } from \"./findMatchIndex.js\";\nimport type {\n KeyboardMovementConfig,\n KeyboardMovementConfiguration,\n KeyboardMovementContext,\n KeyboardMovementProviderImplementation,\n KeyboardMovementProviderOptions,\n} from \"./types.js\";\nimport {\n getFirstFocusableIndex,\n getLastFocusableIndex,\n getNextFocusableIndex,\n getSearchText,\n getVirtualFocusDefaultIndex,\n isElementDisabled,\n isNotFocusable,\n isSearchableEvent,\n recalculateFocusIndex,\n} from \"./utils.js\";\n\n/**\n * @remarks \\@since 5.0.0\n * @internal\n */\nconst context = createContext<KeyboardMovementContext>({\n config: { current: DEFAULT_KEYBOARD_MOVEMENT },\n loopable: false,\n searchable: false,\n horizontal: false,\n includeDisabled: false,\n tabIndexBehavior: undefined,\n activeDescendantId: \"\",\n});\ncontext.displayName = \"KeyboardMovement\";\nexport const { Provider: KeyboardMovementProvider } = context;\n\n/**\n * @remarks \\@since 5.0.0\n * @internal\n */\nexport function useKeyboardMovementContext(): Readonly<KeyboardMovementContext> {\n return useContext(context);\n}\n\nconst noop = (): void => {\n // do nothing\n};\n\nconst returnNegative1 = (): number => -1;\n\n/**\n * Implements the custom keyboard movement behavior throughout react-md. Using\n * the \"Find References\" will be the best way to see example usage.\n *\n * @example\n * Default Keyboard Movement for any Focusable Element\n * ```tsx\n * import {\n * KeyboardMovementProvider,\n * useKeyboardMovementProvider,\n * } from \"@react-md/core\";\n * import type { ReactElement, ReactNode } from \"react\";\n *\n * function Example({ children }: { children: ReactNode }): ReactElement {\n * const { movementContext, movementProps } = useKeyboardMovementProvider();\n *\n * // any focusable element child can be focused with the arrow , home, and\n * // end keys\n * return (\n * <KeyboardMovementProvider value={movementContext}>\n * <div {...movementProps}>\n * {children}\n * </div>\n * </KeyboardMovementProvider>\n * );\n * }\n * ```\n *\n * @example\n * Active Descendant Movement\n * ```tsx\n * import {\n * KeyboardMovementProvider,\n * useKeyboardMovementContext,\n * useKeyboardMovementProvider,\n * } from \"@react-md/core\";\n * import type { ReactElement, ReactNode } from \"react\";\n * import { useId } from \"react\";\n *\n * function Child(): ReactElement {\n * const id = useId()\n * const { activeDescendantId } = useKeyboardMovementContext();\n *\n * return (\n * <div\n * {...props}\n * id={id}\n * className={cnb(id === activeDescendantId && \"focused-class-name\")}\n * >\n * Some Content\n * </div>\n * );\n * }\n *\n * function Example({ children }: { children: ReactNode }): ReactElement {\n * const { movementContext, movementProps } = useKeyboardMovementProvider({\n * loopable: true,\n * searchable: true,\n * tabIndexBehavior: \"virtual\",\n * });\n *\n * // any focusable element child can be focused with the arrow , home, and\n * // end keys\n * return (\n * <KeyboardMovementProvider value={movementContext}>\n * <div {...movementProps}>\n * <Child />\n * <Child />\n * <Child />\n * </div>\n * </KeyboardMovementProvider>\n * );\n * }\n * ```\n *\n * @example\n * Roving Tab Index\n * ```tsx\n * import {\n * KeyboardMovementProvider,\n * useKeyboardMovementContext,\n * useKeyboardMovementProvider,\n * } from \"@react-md/core\";\n * import type { ReactElement, ReactNode } from \"react\";\n * import { useId } from \"react\";\n *\n * function Child(): ReactElement {\n * const id = useId()\n * const { activeDescendantId } = useKeyboardMovementContext();\n *\n * return (\n * <div\n * {...props}\n * id={id}\n * tabIndex={id === activeDescendantId ? 0 : -1}\n * >\n * Some Content\n * </div>\n * );\n * }\n *\n * function Example({ children }: { children: ReactNode }): ReactElement {\n * const { movementContext, movementProps } = useKeyboardMovementProvider({\n * loopable: true,\n * searchable: true,\n * tabIndexBehavior: \"roving\",\n * });\n *\n * // any focusable element child can be focused with the arrow , home, and\n * // end keys\n * return (\n * <KeyboardMovementProvider value={movementContext}>\n * <div {...movementProps}>\n * <Child />\n * <Child />\n * <Child />\n * </div>\n * </KeyboardMovementProvider>\n * );\n * }\n * ```\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport function useKeyboardMovementProvider<E extends HTMLElement>(\n options: KeyboardMovementProviderOptions<E> = {}\n): KeyboardMovementProviderImplementation<E> {\n const {\n onClick = noop,\n onFocus = noop,\n onKeyDown = noop,\n loopable = false,\n searchable = false,\n horizontal = false,\n includeDisabled = false,\n tabIndexBehavior,\n extendKeyDown = noop,\n onFocusChange = noop,\n programmatic = includeDisabled,\n incrementKeys: propIncrementKeys,\n decrementKeys: propDecrementKeys,\n jumpToFirstKeys: propJumpToFirstKeys,\n jumpToLastKeys: propJumpToLastKeys,\n getFocusableElements = defaultGetFocusableElements,\n getDefaultFocusedIndex = returnNegative1,\n } = options;\n\n const isRTL = useDir().dir === \"rtl\";\n let defaults: Readonly<Required<KeyboardMovementConfiguration>>;\n if (horizontal) {\n defaults = isRTL\n ? DEFAULT_RTL_KEYBOARD_MOVEMENT\n : DEFAULT_LTR_KEYBOARD_MOVEMENT;\n } else {\n defaults = DEFAULT_KEYBOARD_MOVEMENT;\n }\n\n const incrementKeys = propIncrementKeys || defaults.incrementKeys;\n const decrementKeys = propDecrementKeys || defaults.decrementKeys;\n const jumpToFirstKeys = propJumpToFirstKeys || defaults.jumpToFirstKeys;\n const jumpToLastKeys = propJumpToLastKeys || defaults.jumpToLastKeys;\n\n const configuration: KeyboardMovementConfig = {\n incrementKeys,\n decrementKeys,\n jumpToFirstKeys,\n jumpToLastKeys,\n };\n const config = useRef(configuration);\n useIsomorphicLayoutEffect(() => {\n config.current = configuration;\n });\n\n const [activeDescendantId, setActiveDescendantId] = useState(\"\");\n const movementContext = useMemo<KeyboardMovementContext>(\n () => ({\n config,\n loopable,\n searchable,\n horizontal,\n includeDisabled,\n tabIndexBehavior,\n activeDescendantId,\n }),\n [\n activeDescendantId,\n horizontal,\n includeDisabled,\n loopable,\n searchable,\n tabIndexBehavior,\n ]\n );\n const currentFocusIndex = useRef(-1);\n const mode = useUserInteractionMode();\n const refocus = useRef(false);\n\n if (process.env.NODE_ENV !== \"production\") {\n // this fixes issues during hot reloading and using the `useId()` hook\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useEffect(() => {\n return () => {\n setActiveDescendantId(\"\");\n };\n }, []);\n }\n\n return {\n movementProps: {\n \"aria-activedescendant\":\n tabIndexBehavior === \"virtual\" ? activeDescendantId : undefined,\n tabIndex:\n tabIndexBehavior === \"roving\"\n ? activeDescendantId\n ? -1\n : 0\n : undefined,\n\n // Note: This used to be on the `onFocus` event, but this causes issues in\n // Chromium browsers for drag and drop behavior\n onClick(event) {\n onClick(event);\n\n // This makes it so you can click an element with a mouse and then\n // keyboard navigate from that element instead of the last keyboard focus\n // element\n const { currentTarget, target } = event;\n if (target === currentTarget || !(target instanceof HTMLElement)) {\n return;\n }\n\n const focusables = getFocusableElements(currentTarget, programmatic);\n const focusedIndex = focusables.findIndex(\n (element) => element === target || element.contains(target)\n );\n if (focusedIndex === -1 || !focusables.length) {\n return;\n }\n\n currentFocusIndex.current = focusedIndex;\n const focused = focusables[focusedIndex];\n if (tabIndexBehavior) {\n setActiveDescendantId(focused.id);\n }\n\n // need to force focus back to the container element when using\n // aria activedescendant\n if (tabIndexBehavior === \"virtual\") {\n refocus.current = true;\n currentTarget.focus();\n }\n\n onFocusChange({\n index: focusedIndex,\n element: focused,\n });\n },\n onFocus(event) {\n onFocus(event);\n if (event.isPropagationStopped() || refocus.current) {\n refocus.current = false;\n return;\n }\n\n if (\n (mode !== \"keyboard\" && tabIndexBehavior !== \"virtual\") ||\n event.target !== event.currentTarget\n ) {\n return;\n }\n\n const focusables = getFocusableElements(\n event.currentTarget,\n programmatic\n );\n if (!focusables.length) {\n return;\n }\n\n let defaultFocusIndex = getDefaultFocusedIndex({\n focusables,\n includeDisabled,\n });\n\n // This allows my custom `getDefaultFocusedIndex` implementations to\n // have a nice fallback without having to re-implement the \"focus\n // first\" behavior\n if (defaultFocusIndex === -1) {\n if (tabIndexBehavior === \"virtual\") {\n // virtual keyboard navigation **must** always focus at least one element\n defaultFocusIndex = getVirtualFocusDefaultIndex({\n focusables,\n includeDisabled,\n activeDescendantId,\n });\n } else {\n defaultFocusIndex = getFirstFocusableIndex({\n focusables,\n includeDisabled,\n });\n }\n }\n\n if (defaultFocusIndex === -1) {\n return;\n }\n\n currentFocusIndex.current = defaultFocusIndex;\n const focused = focusables[defaultFocusIndex];\n if (tabIndexBehavior) {\n setActiveDescendantId(focused.id);\n }\n\n if (tabIndexBehavior !== \"virtual\") {\n focused.focus();\n } else {\n focused.scrollIntoView({ block: \"nearest\" });\n }\n\n onFocusChange({\n index: defaultFocusIndex,\n element: focused,\n });\n },\n onKeyDown(event) {\n onKeyDown(event);\n const { currentTarget } = event;\n\n const setFocusIndex = (\n index: number,\n focusables: readonly HTMLElement[]\n ): void => {\n event.preventDefault();\n event.stopPropagation();\n if (currentFocusIndex.current === index || index === -1) {\n return;\n }\n\n currentFocusIndex.current = index;\n const focused = focusables[index];\n if (tabIndexBehavior) {\n focused.scrollIntoView({\n block: \"nearest\",\n inline: \"nearest\",\n });\n setActiveDescendantId(focused.id);\n }\n\n if (tabIndexBehavior !== \"virtual\") {\n focused.focus();\n }\n\n onFocusChange({\n index,\n element: focused,\n });\n };\n\n extendKeyDown({\n event,\n setFocusIndex,\n currentFocusIndex,\n setActiveDescendantId,\n ...movementContext,\n });\n\n if (event.isPropagationStopped()) {\n return;\n }\n\n // TODO: Figure this part out. This is currently required for the tree\n // movement when the asterisk key is pressed. There might be other cases\n // as well.\n if (currentFocusIndex.current === -1) {\n currentFocusIndex.current = recalculateFocusIndex({\n focusables: getFocusableElements(currentTarget, programmatic),\n includeDisabled,\n tabIndexBehavior,\n activeDescendantId,\n });\n }\n\n const { key, shiftKey } = event;\n if (\n tabIndexBehavior === \"virtual\" &&\n activeDescendantId &&\n (key === \" \" || key === \"Enter\")\n ) {\n if (key === \" \") {\n event.preventDefault();\n }\n\n const focusables = getFocusableElements(currentTarget, programmatic);\n const activeElement = focusables[currentFocusIndex.current];\n if (!activeElement || isElementDisabled(activeElement)) {\n return;\n }\n\n activeElement.click();\n return;\n }\n\n const {\n incrementKeys,\n decrementKeys,\n jumpToFirstKeys,\n jumpToLastKeys,\n } = config.current;\n\n if (searchable && isSearchableEvent(event)) {\n const focusables = getFocusableElements(currentTarget, programmatic);\n const index = findMatchIndex({\n value: key,\n values: focusables.map((element) =>\n getSearchText(element, !isNotFocusable(element, includeDisabled))\n ),\n startIndex: shiftKey ? -1 : currentFocusIndex.current,\n });\n setFocusIndex(index, focusables);\n return;\n }\n\n const jumpToFirst = jumpToFirstKeys.includes(key);\n const jumpToLast = !jumpToFirst && jumpToLastKeys.includes(key);\n const increment =\n !jumpToFirst && !jumpToLast && incrementKeys.includes(key);\n const decrement =\n !jumpToFirst &&\n !jumpToLast &&\n !increment &&\n decrementKeys.includes(key);\n\n if (!jumpToFirst && !jumpToLast && !increment && !decrement) {\n return;\n }\n const focusables = getFocusableElements(currentTarget, programmatic);\n\n let index: number;\n if (jumpToFirst) {\n index = getFirstFocusableIndex({\n focusables,\n includeDisabled,\n });\n } else if (jumpToLast) {\n index = getLastFocusableIndex({\n focusables,\n includeDisabled,\n });\n } else {\n index = getNextFocusableIndex({\n loopable,\n increment,\n focusables,\n includeDisabled,\n currentFocusIndex: currentFocusIndex.current,\n });\n }\n\n setFocusIndex(index, focusables);\n },\n },\n movementContext,\n currentFocusIndex,\n setActiveDescendantId,\n };\n}\n"],"names":["createContext","useContext","useEffect","useMemo","useRef","useState","getFocusableElements","defaultGetFocusableElements","useUserInteractionMode","useDir","useIsomorphicLayoutEffect","DEFAULT_KEYBOARD_MOVEMENT","DEFAULT_LTR_KEYBOARD_MOVEMENT","DEFAULT_RTL_KEYBOARD_MOVEMENT","findMatchIndex","getFirstFocusableIndex","getLastFocusableIndex","getNextFocusableIndex","getSearchText","getVirtualFocusDefaultIndex","isElementDisabled","isNotFocusable","isSearchableEvent","recalculateFocusIndex","context","config","current","loopable","searchable","horizontal","includeDisabled","tabIndexBehavior","undefined","activeDescendantId","displayName","Provider","KeyboardMovementProvider","useKeyboardMovementContext","noop","returnNegative1","useKeyboardMovementProvider","options","onClick","onFocus","onKeyDown","extendKeyDown","onFocusChange","programmatic","incrementKeys","propIncrementKeys","decrementKeys","propDecrementKeys","jumpToFirstKeys","propJumpToFirstKeys","jumpToLastKeys","propJumpToLastKeys","getDefaultFocusedIndex","isRTL","dir","defaults","configuration","setActiveDescendantId","movementContext","currentFocusIndex","mode","refocus","process","env","NODE_ENV","movementProps","tabIndex","event","currentTarget","target","HTMLElement","focusables","focusedIndex","findIndex","element","contains","length","focused","id","focus","index","isPropagationStopped","defaultFocusIndex","scrollIntoView","block","setFocusIndex","preventDefault","stopPropagation","inline","key","shiftKey","activeElement","click","value","values","map","startIndex","jumpToFirst","includes","jumpToLast","increment","decrement"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/movement/utils.ts"],"sourcesContent":["import type { KeyboardEvent } from \"react\";\nimport { loop } from \"../utils/loop.js\";\nimport type { FocusableIndexOptions, TabIndexBehavior } from \"./types.js\";\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport const isElementDisabled = (element: HTMLElement): boolean =>\n element.getAttribute(\"disabled\") !== null ||\n element.getAttribute(\"aria-disabled\") === \"true\";\n\n/**\n * @remarks \\@since 5.0.0\n * @internal\n */\nexport const isNotFocusable = (\n element: HTMLElement | undefined,\n includeDisabled: boolean\n): boolean => {\n if (!element) {\n return true;\n }\n\n if (includeDisabled) {\n return false;\n }\n\n return isElementDisabled(element);\n};\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport interface VirtualFocusableIndexOptions {\n focusables: readonly HTMLElement[];\n includeDisabled: boolean;\n activeDescendantId: string;\n}\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport const getVirtualFocusDefaultIndex = (\n options: VirtualFocusableIndexOptions\n): number => {\n const { focusables, includeDisabled, activeDescendantId } = options;\n if (!focusables.length || (!activeDescendantId && includeDisabled)) {\n return 0;\n }\n\n const activeIndex = focusables.findIndex((element) => {\n if (activeDescendantId) {\n return element.id === activeDescendantId;\n }\n\n return !isElementDisabled(element);\n });\n return Math.max(0, activeIndex);\n};\n\n/**\n * @remarks \\@since 5.0.0\n * @internal\n */\nexport const getFirstFocusableIndex = (\n options: FocusableIndexOptions\n): number => {\n const { focusables, includeDisabled } = options;\n\n if (!focusables.length) {\n return -1;\n }\n\n let firstIndex = 0;\n while (\n firstIndex < focusables.length - 1 &&\n isNotFocusable(focusables[firstIndex], includeDisabled)\n ) {\n firstIndex += 1;\n }\n\n if (isNotFocusable(focusables[firstIndex], includeDisabled)) {\n return -1;\n }\n\n return firstIndex;\n};\n\n/**\n * @remarks \\@since 5.0.0\n * @internal\n */\nexport const getLastFocusableIndex = (\n options: FocusableIndexOptions\n): number => {\n const { focusables, includeDisabled } = options;\n\n if (!focusables.length) {\n return -1;\n }\n\n let lastIndex = focusables.length - 1;\n while (\n lastIndex > 0 &&\n isNotFocusable(focusables[lastIndex], includeDisabled)\n ) {\n lastIndex -= 1;\n }\n\n if (isNotFocusable(focusables[lastIndex], includeDisabled)) {\n return -1;\n }\n\n return lastIndex;\n};\n\n/**\n * @remarks \\@since 5.0.0\n * @internal\n */\ninterface NextFocusableIndexOptions extends FocusableIndexOptions {\n loopable: boolean;\n increment: boolean;\n currentFocusIndex: number;\n}\n\n/**\n * @remarks \\@since 5.0.0\n * @internal\n */\nexport const getNextFocusableIndex = (\n options: NextFocusableIndexOptions\n): number => {\n const {\n loopable,\n increment,\n focusables,\n includeDisabled,\n currentFocusIndex,\n } = options;\n if (!focusables.length) {\n return currentFocusIndex;\n }\n\n const min = getFirstFocusableIndex({ focusables, includeDisabled });\n const max = getLastFocusableIndex({ focusables, includeDisabled });\n let nextIndex = loop({\n min,\n max,\n value: currentFocusIndex,\n minmax: !loopable,\n increment,\n });\n while (\n isNotFocusable(focusables[nextIndex], includeDisabled) &&\n (loopable || nextIndex !== (increment ? max : min))\n ) {\n nextIndex = loop({\n min,\n max,\n value: nextIndex,\n minmax: !loopable,\n increment,\n });\n }\n\n // Since the `min` and `max` values are \"safely\" set, I don't need to verify\n // the nextIndex is still focusable\n return nextIndex;\n};\n\n/**\n * @remarks \\@since 5.0.0\n * @internal\n */\nexport function getSearchText(\n element: HTMLElement,\n searchable: boolean\n): string {\n if (!searchable) {\n return \"\";\n }\n\n const cloned = element.cloneNode(true) as HTMLElement;\n cloned\n .querySelectorAll(\n // Note: do not include DISPLAY_NONE_CLASS since it is presentational only\n \".rmd-icon--font,[aria-hidden=true],[hidden],[role=presentation]\"\n )\n .forEach((element) => {\n element.parentNode?.removeChild(element);\n });\n\n // Note: It would be good to use `cloned.innerText` (maybe?) at some point,\n // but it returns `undefined` in jsdom. It also does cause a reflow, so maybe\n // this is fine?\n // https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent#differences_from_innertext\n return (cloned.textContent || \"\")[0].toUpperCase();\n}\n\n/**\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport interface RecalculateOptions {\n focusables: readonly HTMLElement[];\n includeDisabled: boolean;\n tabIndexBehavior: TabIndexBehavior | undefined;\n activeDescendantId: string;\n}\n\n/**\n * This was added to help with specific widgets that cause focus index to change\n * between renders (i.e. expanding all tree items on the same level with `*`).\n * There might be a better way to handle this in the future.\n *\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport function recalculateFocusIndex(options: RecalculateOptions): number {\n const { focusables, includeDisabled, tabIndexBehavior, activeDescendantId } =\n options;\n if (tabIndexBehavior === \"virtual\") {\n return getVirtualFocusDefaultIndex({\n focusables,\n includeDisabled,\n activeDescendantId,\n });\n }\n\n const { activeElement } = document;\n return focusables.findIndex((element) => element === activeElement);\n}\n\n/**\n * Checks if a keyboard event can trigger a search through focusable elements\n * by:\n *\n * - checking if the key is a single letter that is not the space key\n * - checking that the alt, ctrl, and meta keys are not being held\n *\n * The shift key **is allowed** because holding shift means \"search from the\n * beginning\" instead of \"search from current location\".\n *\n * @remarks \\@since 6.0.0\n * @internal\n */\nexport function isSearchableEvent(event: KeyboardEvent): boolean {\n const { key, altKey, ctrlKey, metaKey } = event;\n\n return (\n key.length === 1 &&\n // can't search with space since it is generally a click event\n key !== \" \" &&\n !altKey &&\n !ctrlKey &&\n !metaKey\n );\n}\n"],"names":["loop","isElementDisabled","element","getAttribute","isNotFocusable","includeDisabled","getVirtualFocusDefaultIndex","options","focusables","activeDescendantId","length","activeIndex","findIndex","id","Math","max","getFirstFocusableIndex","firstIndex","getLastFocusableIndex","lastIndex","getNextFocusableIndex","loopable","increment","currentFocusIndex","min","nextIndex","value","minmax","getSearchText","searchable","cloned","cloneNode","querySelectorAll","forEach","parentNode","removeChild","textContent","toUpperCase","recalculateFocusIndex","tabIndexBehavior","activeElement","document","isSearchableEvent","event","key","altKey","ctrlKey","metaKey"],"mappings":"AACA,SAASA,IAAI,QAAQ,mBAAmB;AAGxC;;;CAGC,GACD,OAAO,MAAMC,oBAAoB,CAACC,UAChCA,QAAQC,YAAY,CAAC,gBAAgB,QACrCD,QAAQC,YAAY,CAAC,qBAAqB,OAAO;AAEnD;;;CAGC,GACD,OAAO,MAAMC,iBAAiB,CAC5BF,SACAG;IAEA,IAAI,CAACH,SAAS;QACZ,OAAO;IACT;IAEA,IAAIG,iBAAiB;QACnB,OAAO;IACT;IAEA,OAAOJ,kBAAkBC;AAC3B,EAAE;AAYF;;;CAGC,GACD,OAAO,MAAMI,8BAA8B,CACzCC;IAEA,MAAM,EAAEC,UAAU,EAAEH,eAAe,EAAEI,kBAAkB,EAAE,GAAGF;IAC5D,IAAI,CAACC,WAAWE,MAAM,IAAK,CAACD,sBAAsBJ,iBAAkB;QAClE,OAAO;IACT;IAEA,MAAMM,cAAcH,WAAWI,SAAS,CAAC,CAACV;QACxC,IAAIO,oBAAoB;YACtB,OAAOP,QAAQW,EAAE,KAAKJ;QACxB;QAEA,OAAO,CAACR,kBAAkBC;IAC5B;IACA,OAAOY,KAAKC,GAAG,CAAC,GAAGJ;AACrB,EAAE;AAEF;;;CAGC,GACD,OAAO,MAAMK,yBAAyB,CACpCT;IAEA,MAAM,EAAEC,UAAU,EAAEH,eAAe,EAAE,GAAGE;IAExC,IAAI,CAACC,WAAWE,MAAM,EAAE;QACtB,OAAO,CAAC;IACV;IAEA,IAAIO,aAAa;IACjB,MACEA,aAAaT,WAAWE,MAAM,GAAG,KACjCN,eAAeI,UAAU,CAACS,WAAW,EAAEZ,iBACvC;QACAY,cAAc;IAChB;IAEA,IAAIb,eAAeI,UAAU,CAACS,WAAW,EAAEZ,kBAAkB;QAC3D,OAAO,CAAC;IACV;IAEA,OAAOY;AACT,EAAE;AAEF;;;CAGC,GACD,OAAO,MAAMC,wBAAwB,CACnCX;IAEA,MAAM,EAAEC,UAAU,EAAEH,eAAe,EAAE,GAAGE;IAExC,IAAI,CAACC,WAAWE,MAAM,EAAE;QACtB,OAAO,CAAC;IACV;IAEA,IAAIS,YAAYX,WAAWE,MAAM,GAAG;IACpC,MACES,YAAY,KACZf,eAAeI,UAAU,CAACW,UAAU,EAAEd,iBACtC;QACAc,aAAa;IACf;IAEA,IAAIf,eAAeI,UAAU,CAACW,UAAU,EAAEd,kBAAkB;QAC1D,OAAO,CAAC;IACV;IAEA,OAAOc;AACT,EAAE;AAYF;;;CAGC,GACD,OAAO,MAAMC,wBAAwB,CACnCb;IAEA,MAAM,EACJc,QAAQ,EACRC,SAAS,EACTd,UAAU,EACVH,eAAe,EACfkB,iBAAiB,EAClB,GAAGhB;IACJ,IAAI,CAACC,WAAWE,MAAM,EAAE;QACtB,OAAOa;IACT;IAEA,MAAMC,MAAMR,uBAAuB;QAAER;QAAYH;IAAgB;IACjE,MAAMU,MAAMG,sBAAsB;QAAEV;QAAYH;IAAgB;IAChE,IAAIoB,YAAYzB,KAAK;QACnBwB;QACAT;QACAW,OAAOH;QACPI,QAAQ,CAACN;QACTC;IACF;IACA,MACElB,eAAeI,UAAU,CAACiB,UAAU,EAAEpB,oBACrCgB,CAAAA,YAAYI,cAAeH,CAAAA,YAAYP,MAAMS,GAAE,CAAC,EACjD;QACAC,YAAYzB,KAAK;YACfwB;YACAT;YACAW,OAAOD;YACPE,QAAQ,CAACN;YACTC;QACF;IACF;IAEA,4EAA4E;IAC5E,mCAAmC;IACnC,OAAOG;AACT,EAAE;AAEF;;;CAGC,GACD,OAAO,SAASG,cACd1B,OAAoB,EACpB2B,UAAmB;IAEnB,IAAI,CAACA,YAAY;QACf,OAAO;IACT;IAEA,MAAMC,SAAS5B,QAAQ6B,SAAS,CAAC;IACjCD,OACGE,gBAAgB,CACf,0EAA0E;IAC1E,mEAEDC,OAAO,CAAC,CAAC/B;QACRA,QAAQgC,UAAU,EAAEC,YAAYjC;IAClC;IAEF,2EAA2E;IAC3E,6EAA6E;IAC7E,gBAAgB;IAChB,+FAA+F;IAC/F,OAAO,AAAC4B,CAAAA,OAAOM,WAAW,IAAI,EAAC,CAAE,CAAC,EAAE,CAACC,WAAW;AAClD;AAaA;;;;;;;CAOC,GACD,OAAO,SAASC,sBAAsB/B,OAA2B;IAC/D,MAAM,EAAEC,UAAU,EAAEH,eAAe,EAAEkC,gBAAgB,EAAE9B,kBAAkB,EAAE,GACzEF;IACF,IAAIgC,qBAAqB,WAAW;QAClC,OAAOjC,4BAA4B;YACjCE;YACAH;YACAI;QACF;IACF;IAEA,MAAM,EAAE+B,aAAa,EAAE,GAAGC;IAC1B,OAAOjC,WAAWI,SAAS,CAAC,CAACV,UAAYA,YAAYsC;AACvD;AAEA;;;;;;;;;;;;CAYC,GACD,OAAO,SAASE,kBAAkBC,KAAoB;IACpD,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,OAAO,EAAEC,OAAO,EAAE,GAAGJ;IAE1C,OACEC,IAAIlC,MAAM,KAAK,KACf,8DAA8D;IAC9DkC,QAAQ,OACR,CAACC,UACD,CAACC,WACD,CAACC;AAEL"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/overlay/Overlay.tsx"],"sourcesContent":["\"use client\";\nimport { forwardRef, type HTMLAttributes } from \"react\";\nimport { type BoxAlignItems, type BoxJustifyContent } from \"../box/styles.js\";\nimport { Portal } from \"../portal/Portal.js\";\nimport { useSsr } from \"../SsrProvider.js\";\nimport {\n type CSSTransitionComponentProps,\n type TransitionActions,\n} from \"../transition/types.js\";\nimport { useCSSTransition } from \"../transition/useCSSTransition.js\";\nimport {\n DEFAULT_OVERLAY_CLASSNAMES,\n DEFAULT_OVERLAY_TIMEOUT,\n overlay,\n} from \"./overlayStyles.js\";\n\n/**\n * @remarks \\@since 6.0.0 Added `align` and `justify` props.\n */\nexport interface OverlayProps\n extends HTMLAttributes<HTMLSpanElement>,\n CSSTransitionComponentProps,\n TransitionActions {\n /**\n * @defaultValue `\"center\"`\n * @remarks \\@since 6.0.0\n */\n align?: BoxAlignItems;\n\n /**\n * @defaultValue `\"center\"`\n * @remarks \\@since 6.0.0\n */\n justify?: BoxJustifyContent;\n\n /**\n * Set this to `true` for when the overlay should be visible. Toggling this\n * value will trigger the enter/exit animation.\n */\n visible: boolean;\n\n /**\n * Set this to `true` if the overlay should be rendered with an `opacity: 0`\n * and disabling the animation. This is useful if you'd like a \"close on\n * outside click\" behavior.\n *\n * @defaultValue `false`\n */\n noOpacity?: boolean;\n\n /**\n * @see {@link OverlayClassNameOptions.clickable}\n * @defaultValue `!noOpacity`\n */\n clickable?: boolean;\n\n /**\n * @defaultValue `false`\n */\n disablePortal?: boolean;\n\n /**\n * @defaultValue `false`\n */\n disableTransition?: boolean;\n}\n\n/**\n * **Client Component**\n *\n * @example\n * Simple Example\n * ```tsx\n * import { Button, Overlay, useToggle } from \"@react-md/core\";\n * import type { ReactElement } from \"react\";\n *\n * function Example(): ReactElement {\n * const { toggle, disable, toggled: visible } = useToggle(false);\n *\n * return (\n * <>\n * <Button onClick={toggle}>Toggle</Button>\n * <Overlay visible={visible} onClick={disable} />\n * </>\n * );\n * }\n * ```\n *\n * @remarks \\@since 6.0.0 Removed the `onRequestClose` prop in favor of using\n * the `onClick` prop instead.\n */\nexport const Overlay = forwardRef<HTMLSpanElement, OverlayProps>(\n function Overlay(props, nodeRef) {\n const {\n children,\n className,\n visible,\n noOpacity = false,\n clickable = !noOpacity,\n temporary = true,\n timeout = DEFAULT_OVERLAY_TIMEOUT,\n classNames = DEFAULT_OVERLAY_CLASSNAMES,\n disableTransition = false,\n align = \"center\",\n justify = \"center\",\n appear,\n enter,\n exit,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n exitedHidden = true,\n disablePortal: propDisablePortal = false,\n ...remaining\n } = props;\n\n const ssr = useSsr();\n const { elementProps, rendered, disablePortal } = useCSSTransition({\n nodeRef,\n transitionIn: visible,\n timeout: noOpacity ? 0 : timeout,\n classNames: noOpacity ? \"\" : classNames,\n className: overlay({\n visible,\n clickable,\n align,\n justify,\n className,\n }),\n appear: appear && !disableTransition && !ssr,\n enter: enter && !disableTransition,\n exit: exit && !disableTransition,\n onEnter,\n onEntering,\n onEntered,\n onExit,\n onExiting,\n onExited,\n temporary,\n exitedHidden,\n disablePortal: propDisablePortal,\n });\n\n return (\n <Portal disabled={disablePortal}>\n {rendered && (\n <span {...remaining} {...elementProps}>\n {children}\n </span>\n )}\n </Portal>\n );\n }\n);\n"],"names":["forwardRef","Portal","useSsr","useCSSTransition","DEFAULT_OVERLAY_CLASSNAMES","DEFAULT_OVERLAY_TIMEOUT","overlay","Overlay","props","nodeRef","children","className","visible","noOpacity","clickable","temporary","timeout","classNames","disableTransition","align","justify","appear","enter","exit","onEnter","onEntering","onEntered","onExit","onExiting","onExited","exitedHidden","disablePortal","propDisablePortal","remaining","ssr","elementProps","rendered","transitionIn","disabled","span"],"mappings":"AAAA;;AACA,SAASA,UAAU,QAA6B,QAAQ;AAExD,SAASC,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,MAAM,QAAQ,oBAAoB;AAK3C,SAASC,gBAAgB,QAAQ,oCAAoC;AACrE,SACEC,0BAA0B,EAC1BC,uBAAuB,EACvBC,OAAO,QACF,qBAAqB;AAqD5B;;;;;;;;;;;;;;;;;;;;;;;CAuBC,GACD,OAAO,MAAMC,wBAAUP,WACrB,SAASO,QAAQC,KAAK,EAAEC,OAAO;IAC7B,MAAM,EACJC,QAAQ,EACRC,SAAS,EACTC,OAAO,EACPC,YAAY,KAAK,EACjBC,YAAY,CAACD,SAAS,EACtBE,YAAY,IAAI,EAChBC,UAAUX,uBAAuB,EACjCY,aAAab,0BAA0B,EACvCc,oBAAoB,KAAK,EACzBC,QAAQ,QAAQ,EAChBC,UAAU,QAAQ,EAClBC,MAAM,EACNC,KAAK,EACLC,IAAI,EACJC,OAAO,EACPC,UAAU,EACVC,SAAS,EACTC,MAAM,EACNC,SAAS,EACTC,QAAQ,EACRC,eAAe,IAAI,EACnBC,eAAeC,oBAAoB,KAAK,EACxC,GAAGC,WACJ,GAAGzB;IAEJ,MAAM0B,MAAMhC;IACZ,MAAM,EAAEiC,YAAY,EAAEC,QAAQ,EAAEL,aAAa,EAAE,GAAG5B,iBAAiB;QACjEM;QACA4B,cAAczB;QACdI,SAASH,YAAY,IAAIG;QACzBC,YAAYJ,YAAY,KAAKI;QAC7BN,WAAWL,QAAQ;YACjBM;YACAE;YACAK;YACAC;YACAT;QACF;QACAU,QAAQA,UAAU,CAACH,qBAAqB,CAACgB;QACzCZ,OAAOA,SAAS,CAACJ;QACjBK,MAAMA,QAAQ,CAACL;QACfM;QACAC;QACAC;QACAC;QACAC;QACAC;QACAd;QACAe;QACAC,eAAeC;IACjB;IAEA,qBACE,KAAC/B;QAAOqC,UAAUP;kBACfK,0BACC,KAACG;YAAM,GAAGN,SAAS;YAAG,GAAGE,YAAY;sBAClCzB;;;AAKX,GACA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/overlay/overlayStyles.ts"],"sourcesContent":["import { cnb } from \"cnbuilder\";\nimport {\n box,\n type BoxAlignItems,\n type BoxJustifyContent,\n} from \"../box/styles.js\";\nimport {\n type CSSTransitionClassNamesObject,\n type TransitionTimeout,\n} from \"../transition/types.js\";\nimport { bem } from \"../utils/bem.js\";\n\ndeclare module \"react\" {\n interface CSSProperties {\n \"--rmd-overlay-background-color\"?: string;\n \"--rmd-overlay-z-index\"?: number;\n }\n}\n\nconst styles = bem(\"rmd-overlay\");\n\n/** @remarks \\@since 6.0.0 */\nexport interface OverlayClassNameOptions {\n className?: string;\n\n visible: boolean;\n\n /** @defaultValue `false` */\n active?: boolean;\n\n /** @defaultValue `false` */\n clickable?: boolean;\n\n /** @defaultValue `false` */\n absolute?: boolean;\n /** @defaultValue `\"center\"` */\n align?: BoxAlignItems;\n\n /** @defaultValue `\"center\"` */\n justify?: BoxJustifyContent;\n}\n\n/**\n * @remarks \\@since 6.0.0\n */\nexport function overlay(\n options: OverlayClassNameOptions & { active?: boolean }\n): string {\n const {\n visible,\n active,\n absolute = false,\n clickable = false,\n align = \"center\",\n justify = \"center\",\n className,\n } = options;\n\n return cnb(\n styles({\n active,\n visible,\n clickable,\n absolute,\n }),\n box({\n align,\n justify,\n disablePadding: true,\n }),\n className\n );\n}\n\n/** @remarks \\@since 2.4.0 */\nexport const DEFAULT_OVERLAY_TIMEOUT: TransitionTimeout = 150;\n\n/** @remarks \\@since 2.4.0 */\nexport const DEFAULT_OVERLAY_CLASSNAMES: Readonly<CSSTransitionClassNamesObject> =\n {\n appearActive: \"rmd-overlay--active\",\n appearDone: \"rmd-overlay--active\",\n enterActive: \"rmd-overlay--active\",\n enterDone: \"rmd-overlay--active\",\n };\n"],"names":["cnb","box","bem","styles","overlay","options","visible","active","absolute","clickable","align","justify","className","disablePadding","DEFAULT_OVERLAY_TIMEOUT","DEFAULT_OVERLAY_CLASSNAMES","appearActive","appearDone","enterActive","enterDone"],"mappings":"AAAA,SAASA,GAAG,QAAQ,YAAY;AAChC,SACEC,GAAG,QAGE,mBAAmB;AAK1B,SAASC,GAAG,QAAQ,kBAAkB;AAStC,MAAMC,SAASD,IAAI;AAuBnB;;CAEC,GACD,OAAO,SAASE,QACdC,OAAuD;IAEvD,MAAM,EACJC,OAAO,EACPC,MAAM,EACNC,WAAW,KAAK,EAChBC,YAAY,KAAK,EACjBC,QAAQ,QAAQ,EAChBC,UAAU,QAAQ,EAClBC,SAAS,EACV,GAAGP;IAEJ,OAAOL,IACLG,OAAO;QACLI;QACAD;QACAG;QACAD;IACF,IACAP,IAAI;QACFS;QACAC;QACAE,gBAAgB;IAClB,IACAD;AAEJ;AAEA,2BAA2B,GAC3B,OAAO,MAAME,0BAA6C,IAAI;AAE9D,2BAA2B,GAC3B,OAAO,MAAMC,6BACX;IACEC,cAAc;IACdC,YAAY;IACZC,aAAa;IACbC,WAAW;AACb,EAAE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/portal/Portal.tsx"],"sourcesContent":["\"use client\";\nimport { type ReactElement, type ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\n\nimport { usePortalContainer } from \"./PortalContainerProvider.js\";\n\nexport interface PortalProps {\n children: ReactNode;\n /**\n * Setting this to `true` will disable the portal behavior and just render\n * the `children` in the normal DOM tree.\n *\n * @defaultValue `false`\n */\n disabled?: boolean;\n}\n\n/**\n * **Client Component**\n *\n * Portals are a great way to render temporary elements like dialogs, tooltips,\n * and menus at a different port of the DOM. This implementation will render\n * the `children` in the current {@link PortalContainer} element.\n *\n * @example\n * Simple Example\n * ```tsx\n * import { Portal } from \"@react-md/portal\";\n *\n * function Example() {\n * return <Portal><div>Some Content</div></Portal>;\n * }\n * ```\n *\n * @see {@link PortalContainerProvider}\n * @see {@link usePortalContainer}\n */\nexport function Portal(props: PortalProps): ReactElement {\n const { children, disabled = false } = props;\n const container = usePortalContainer();\n if (!container || disabled) {\n return <>{disabled && children}</>;\n }\n\n return createPortal(children, container);\n}\n"],"names":["createPortal","usePortalContainer","Portal","props","children","disabled","container"],"mappings":"AAAA;;AAEA,SAASA,YAAY,QAAQ,YAAY;AAEzC,SAASC,kBAAkB,QAAQ,+BAA+B;AAalE;;;;;;;;;;;;;;;;;;;CAmBC,GACD,OAAO,SAASC,OAAOC,KAAkB;IACvC,MAAM,EAAEC,QAAQ,EAAEC,WAAW,KAAK,EAAE,GAAGF;IACvC,MAAMG,YAAYL;IAClB,IAAI,CAACK,aAAaD,UAAU;QAC1B,qBAAO;sBAAGA,YAAYD;;IACxB;IAEA,qBAAOJ,aAAaI,UAAUE;AAChC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/portal/PortalContainerProvider.tsx"],"sourcesContent":["\"use client\";\nimport {\n createContext,\n useContext,\n useEffect,\n useState,\n type ReactElement,\n type ReactNode,\n type RefObject,\n} from \"react\";\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport type PortalContainer = Element | DocumentFragment | null;\n\nexport const PORTAL_CONTAINER_ID = \"rmd-portal-container\";\n\nlet portalContainer: PortalContainer = null;\n\nconst getPortalContainer = (): PortalContainer =>\n typeof window === \"undefined\" ? null : document.body;\n\nconst context = createContext<PortalContainer>(getPortalContainer());\ncontext.displayName = \"PortalContainer\";\nconst { Provider } = context;\n\n/**\n * @internal\n * @remarks \\@since 6.0.0\n */\nexport function usePortalContainer(): PortalContainer {\n return useContext(context);\n}\n\n/** @remarks \\@since 6.0.0 */\nexport interface PortalContainerProviderProps {\n /**\n * An optional container element to use. When this is `undefined`, a\n * `<div id=\"rmd-portal-container\"></div>` will be added as the last child to\n * the `document.body` and be used as the container element.\n */\n container?: PortalContainer | RefObject<PortalContainer>;\n children: ReactNode;\n}\n\n/**\n * **Client Component**\n *\n * This component allows for all child `Portal` components to render within the\n * same container element. If a custom `container` element is not provided, a\n * `<div id=\"rmd-portal-container\"></div>` will be added as the last child to\n * the `document.body` and be used as the container element.\n *\n * @see {@link Portal}\n * @remarks \\@since 6.0.0\n */\nexport function PortalContainerProvider(\n props: PortalContainerProviderProps\n): ReactElement {\n const { container, children } = props;\n const [value, setValue] = useState<PortalContainer>(portalContainer);\n useEffect(() => {\n if (container && \"current\" in container) {\n setValue(container.current);\n return;\n }\n\n if (typeof container !== \"undefined\") {\n return;\n }\n\n if (!portalContainer) {\n portalContainer = document.createElement(\"div\");\n portalContainer.id = PORTAL_CONTAINER_ID;\n }\n if (!document.body.contains(portalContainer)) {\n document.body.appendChild(portalContainer);\n }\n\n setValue(portalContainer);\n\n return () => {\n if (portalContainer && document.body.contains(portalContainer)) {\n document.body.removeChild(portalContainer);\n }\n };\n }, [container]);\n\n const containerValue =\n (container && \"current\" in container) || !container ? value : container;\n return <Provider value={containerValue}>{children}</Provider>;\n}\n"],"names":["createContext","useContext","useEffect","useState","PORTAL_CONTAINER_ID","portalContainer","getPortalContainer","window","document","body","context","displayName","Provider","usePortalContainer","PortalContainerProvider","props","container","children","value","setValue","current","createElement","id","contains","appendChild","removeChild","containerValue"],"mappings":"AAAA;;AACA,SACEA,aAAa,EACbC,UAAU,EACVC,SAAS,EACTC,QAAQ,QAIH,QAAQ;AAQf,OAAO,MAAMC,sBAAsB,uBAAuB;AAE1D,IAAIC,kBAAmC;AAEvC,MAAMC,qBAAqB,IACzB,OAAOC,WAAW,cAAc,OAAOC,SAASC,IAAI;AAEtD,MAAMC,wBAAUV,cAA+BM;AAC/CI,QAAQC,WAAW,GAAG;AACtB,MAAM,EAAEC,QAAQ,EAAE,GAAGF;AAErB;;;CAGC,GACD,OAAO,SAASG;IACd,OAAOZ,WAAWS;AACpB;AAaA;;;;;;;;;;CAUC,GACD,OAAO,SAASI,wBACdC,KAAmC;IAEnC,MAAM,EAAEC,SAAS,EAAEC,QAAQ,EAAE,GAAGF;IAChC,MAAM,CAACG,OAAOC,SAAS,GAAGhB,SAA0BE;IACpDH,UAAU;QACR,IAAIc,aAAa,aAAaA,WAAW;YACvCG,SAASH,UAAUI,OAAO;YAC1B;QACF;QAEA,IAAI,OAAOJ,cAAc,aAAa;YACpC;QACF;QAEA,IAAI,CAACX,iBAAiB;YACpBA,kBAAkBG,SAASa,aAAa,CAAC;YACzChB,gBAAgBiB,EAAE,GAAGlB;QACvB;QACA,IAAI,CAACI,SAASC,IAAI,CAACc,QAAQ,CAAClB,kBAAkB;YAC5CG,SAASC,IAAI,CAACe,WAAW,CAACnB;QAC5B;QAEAc,SAASd;QAET,OAAO;YACL,IAAIA,mBAAmBG,SAASC,IAAI,CAACc,QAAQ,CAAClB,kBAAkB;gBAC9DG,SAASC,IAAI,CAACgB,WAAW,CAACpB;YAC5B;QACF;IACF,GAAG;QAACW;KAAU;IAEd,MAAMU,iBACJ,AAACV,aAAa,aAAaA,aAAc,CAACA,YAAYE,QAAQF;IAChE,qBAAO,KAACJ;QAASM,OAAOQ;kBAAiBT;;AAC3C"}
|