{"version":3,"file":"vendors/vendors-main-Tabs.js.bundle.js","mappings":"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","sources":["webpack://typescript/./node_modules/@mui/material/Tabs/Tabs.js"],"sourcesContent":["'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"aria-label\", \"aria-labelledby\", \"action\", \"centered\", \"children\", \"className\", \"component\", \"allowScrollButtonsMobile\", \"indicatorColor\", \"onChange\", \"orientation\", \"ScrollButtonComponent\", \"scrollButtons\", \"selectionFollowsFocus\", \"slots\", \"slotProps\", \"TabIndicatorProps\", \"TabScrollButtonProps\", \"textColor\", \"value\", \"variant\", \"visibleScrollbar\"];\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { useRtl } from '@mui/system/RtlProvider';\nimport useSlotProps from '@mui/utils/useSlotProps';\nimport styled from '../styles/styled';\nimport { useDefaultProps } from '../DefaultPropsProvider';\nimport useTheme from '../styles/useTheme';\nimport debounce from '../utils/debounce';\nimport { getNormalizedScrollLeft, detectScrollType } from '../utils/scrollLeft';\nimport animate from '../internal/animate';\nimport ScrollbarSize from './ScrollbarSize';\nimport TabScrollButton from '../TabScrollButton';\nimport useEventCallback from '../utils/useEventCallback';\nimport tabsClasses, { getTabsUtilityClass } from './tabsClasses';\nimport ownerDocument from '../utils/ownerDocument';\nimport ownerWindow from '../utils/ownerWindow';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nconst nextItem = (list, item) => {\n if (list === item) {\n return list.firstChild;\n }\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n return list.firstChild;\n};\nconst previousItem = (list, item) => {\n if (list === item) {\n return list.lastChild;\n }\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n return list.lastChild;\n};\nconst moveFocus = (list, currentFocus, traversalFunction) => {\n let wrappedOnce = false;\n let nextFocus = traversalFunction(list, currentFocus);\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return;\n }\n wrappedOnce = true;\n }\n\n // Same logic as useAutocomplete.js\n const nextFocusDisabled = nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n if (!nextFocus.hasAttribute('tabindex') || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus);\n } else {\n nextFocus.focus();\n return;\n }\n }\n};\nconst useUtilityClasses = ownerState => {\n const {\n vertical,\n fixed,\n hideScrollbar,\n scrollableX,\n scrollableY,\n centered,\n scrollButtonsHideMobile,\n classes\n } = ownerState;\n const slots = {\n root: ['root', vertical && 'vertical'],\n scroller: ['scroller', fixed && 'fixed', hideScrollbar && 'hideScrollbar', scrollableX && 'scrollableX', scrollableY && 'scrollableY'],\n flexContainer: ['flexContainer', vertical && 'flexContainerVertical', centered && 'centered'],\n indicator: ['indicator'],\n scrollButtons: ['scrollButtons', scrollButtonsHideMobile && 'scrollButtonsHideMobile'],\n scrollableX: [scrollableX && 'scrollableX'],\n hideScrollbar: [hideScrollbar && 'hideScrollbar']\n };\n return composeClasses(slots, getTabsUtilityClass, classes);\n};\nconst TabsRoot = styled('div', {\n name: 'MuiTabs',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${tabsClasses.scrollButtons}`]: styles.scrollButtons\n }, {\n [`& .${tabsClasses.scrollButtons}`]: ownerState.scrollButtonsHideMobile && styles.scrollButtonsHideMobile\n }, styles.root, ownerState.vertical && styles.vertical];\n }\n})(({\n ownerState,\n theme\n}) => _extends({\n overflow: 'hidden',\n minHeight: 48,\n // Add iOS momentum scrolling for iOS < 13.0\n WebkitOverflowScrolling: 'touch',\n display: 'flex'\n}, ownerState.vertical && {\n flexDirection: 'column'\n}, ownerState.scrollButtonsHideMobile && {\n [`& .${tabsClasses.scrollButtons}`]: {\n [theme.breakpoints.down('sm')]: {\n display: 'none'\n }\n }\n}));\nconst TabsScroller = styled('div', {\n name: 'MuiTabs',\n slot: 'Scroller',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.scroller, ownerState.fixed && styles.fixed, ownerState.hideScrollbar && styles.hideScrollbar, ownerState.scrollableX && styles.scrollableX, ownerState.scrollableY && styles.scrollableY];\n }\n})(({\n ownerState\n}) => _extends({\n position: 'relative',\n display: 'inline-block',\n flex: '1 1 auto',\n whiteSpace: 'nowrap'\n}, ownerState.fixed && {\n overflowX: 'hidden',\n width: '100%'\n}, ownerState.hideScrollbar && {\n // Hide dimensionless scrollbar on macOS\n scrollbarWidth: 'none',\n // Firefox\n '&::-webkit-scrollbar': {\n display: 'none' // Safari + Chrome\n }\n}, ownerState.scrollableX && {\n overflowX: 'auto',\n overflowY: 'hidden'\n}, ownerState.scrollableY && {\n overflowY: 'auto',\n overflowX: 'hidden'\n}));\nconst FlexContainer = styled('div', {\n name: 'MuiTabs',\n slot: 'FlexContainer',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.flexContainer, ownerState.vertical && styles.flexContainerVertical, ownerState.centered && styles.centered];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'flex'\n}, ownerState.vertical && {\n flexDirection: 'column'\n}, ownerState.centered && {\n justifyContent: 'center'\n}));\nconst TabsIndicator = styled('span', {\n name: 'MuiTabs',\n slot: 'Indicator',\n overridesResolver: (props, styles) => styles.indicator\n})(({\n ownerState,\n theme\n}) => _extends({\n position: 'absolute',\n height: 2,\n bottom: 0,\n width: '100%',\n transition: theme.transitions.create()\n}, ownerState.indicatorColor === 'primary' && {\n backgroundColor: (theme.vars || theme).palette.primary.main\n}, ownerState.indicatorColor === 'secondary' && {\n backgroundColor: (theme.vars || theme).palette.secondary.main\n}, ownerState.vertical && {\n height: '100%',\n width: 2,\n right: 0\n}));\nconst TabsScrollbarSize = styled(ScrollbarSize)({\n overflowX: 'auto',\n overflowY: 'hidden',\n // Hide dimensionless scrollbar on macOS\n scrollbarWidth: 'none',\n // Firefox\n '&::-webkit-scrollbar': {\n display: 'none' // Safari + Chrome\n }\n});\nconst defaultIndicatorStyle = {};\nlet warnedOnceTabPresent = false;\nconst Tabs = /*#__PURE__*/React.forwardRef(function Tabs(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiTabs'\n });\n const theme = useTheme();\n const isRtl = useRtl();\n const {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n action,\n centered = false,\n children: childrenProp,\n className,\n component = 'div',\n allowScrollButtonsMobile = false,\n indicatorColor = 'primary',\n onChange,\n orientation = 'horizontal',\n ScrollButtonComponent = TabScrollButton,\n scrollButtons = 'auto',\n selectionFollowsFocus,\n slots = {},\n slotProps = {},\n TabIndicatorProps = {},\n TabScrollButtonProps = {},\n textColor = 'primary',\n value,\n variant = 'standard',\n visibleScrollbar = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const scrollable = variant === 'scrollable';\n const vertical = orientation === 'vertical';\n const scrollStart = vertical ? 'scrollTop' : 'scrollLeft';\n const start = vertical ? 'top' : 'left';\n const end = vertical ? 'bottom' : 'right';\n const clientSize = vertical ? 'clientHeight' : 'clientWidth';\n const size = vertical ? 'height' : 'width';\n const ownerState = _extends({}, props, {\n component,\n allowScrollButtonsMobile,\n indicatorColor,\n orientation,\n vertical,\n scrollButtons,\n textColor,\n variant,\n visibleScrollbar,\n fixed: !scrollable,\n hideScrollbar: scrollable && !visibleScrollbar,\n scrollableX: scrollable && !vertical,\n scrollableY: scrollable && vertical,\n centered: centered && !scrollable,\n scrollButtonsHideMobile: !allowScrollButtonsMobile\n });\n const classes = useUtilityClasses(ownerState);\n const startScrollButtonIconProps = useSlotProps({\n elementType: slots.StartScrollButtonIcon,\n externalSlotProps: slotProps.startScrollButtonIcon,\n ownerState\n });\n const endScrollButtonIconProps = useSlotProps({\n elementType: slots.EndScrollButtonIcon,\n externalSlotProps: slotProps.endScrollButtonIcon,\n ownerState\n });\n if (process.env.NODE_ENV !== 'production') {\n if (centered && scrollable) {\n console.error('MUI: You can not use the `centered={true}` and `variant=\"scrollable\"` properties ' + 'at the same time on a `Tabs` component.');\n }\n }\n const [mounted, setMounted] = React.useState(false);\n const [indicatorStyle, setIndicatorStyle] = React.useState(defaultIndicatorStyle);\n const [displayStartScroll, setDisplayStartScroll] = React.useState(false);\n const [displayEndScroll, setDisplayEndScroll] = React.useState(false);\n const [updateScrollObserver, setUpdateScrollObserver] = React.useState(false);\n const [scrollerStyle, setScrollerStyle] = React.useState({\n overflow: 'hidden',\n scrollbarWidth: 0\n });\n const valueToIndex = new Map();\n const tabsRef = React.useRef(null);\n const tabListRef = React.useRef(null);\n const getTabsMeta = () => {\n const tabsNode = tabsRef.current;\n let tabsMeta;\n if (tabsNode) {\n const rect = tabsNode.getBoundingClientRect();\n // create a new object with ClientRect class props + scrollLeft\n tabsMeta = {\n clientWidth: tabsNode.clientWidth,\n scrollLeft: tabsNode.scrollLeft,\n scrollTop: tabsNode.scrollTop,\n scrollLeftNormalized: getNormalizedScrollLeft(tabsNode, isRtl ? 'rtl' : 'ltr'),\n scrollWidth: tabsNode.scrollWidth,\n top: rect.top,\n bottom: rect.bottom,\n left: rect.left,\n right: rect.right\n };\n }\n let tabMeta;\n if (tabsNode && value !== false) {\n const children = tabListRef.current.children;\n if (children.length > 0) {\n const tab = children[valueToIndex.get(value)];\n if (process.env.NODE_ENV !== 'production') {\n if (!tab) {\n console.error([`MUI: The \\`value\\` provided to the Tabs component is invalid.`, `None of the Tabs' children match with \"${value}\".`, valueToIndex.keys ? `You can provide one of the following values: ${Array.from(valueToIndex.keys()).join(', ')}.` : null].join('\\n'));\n }\n }\n tabMeta = tab ? tab.getBoundingClientRect() : null;\n if (process.env.NODE_ENV !== 'production') {\n if (process.env.NODE_ENV !== 'test' && !warnedOnceTabPresent && tabMeta && tabMeta.width === 0 && tabMeta.height === 0 &&\n // if the whole Tabs component is hidden, don't warn\n tabsMeta.clientWidth !== 0) {\n tabsMeta = null;\n console.error(['MUI: The `value` provided to the Tabs component is invalid.', `The Tab with this \\`value\\` (\"${value}\") is not part of the document layout.`, \"Make sure the tab item is present in the document or that it's not `display: none`.\"].join('\\n'));\n warnedOnceTabPresent = true;\n }\n }\n }\n }\n return {\n tabsMeta,\n tabMeta\n };\n };\n const updateIndicatorState = useEventCallback(() => {\n const {\n tabsMeta,\n tabMeta\n } = getTabsMeta();\n let startValue = 0;\n let startIndicator;\n if (vertical) {\n startIndicator = 'top';\n if (tabMeta && tabsMeta) {\n startValue = tabMeta.top - tabsMeta.top + tabsMeta.scrollTop;\n }\n } else {\n startIndicator = isRtl ? 'right' : 'left';\n if (tabMeta && tabsMeta) {\n const correction = isRtl ? tabsMeta.scrollLeftNormalized + tabsMeta.clientWidth - tabsMeta.scrollWidth : tabsMeta.scrollLeft;\n startValue = (isRtl ? -1 : 1) * (tabMeta[startIndicator] - tabsMeta[startIndicator] + correction);\n }\n }\n const newIndicatorStyle = {\n [startIndicator]: startValue,\n // May be wrong until the font is loaded.\n [size]: tabMeta ? tabMeta[size] : 0\n };\n\n // IE11 support, replace with Number.isNaN\n // eslint-disable-next-line no-restricted-globals\n if (isNaN(indicatorStyle[startIndicator]) || isNaN(indicatorStyle[size])) {\n setIndicatorStyle(newIndicatorStyle);\n } else {\n const dStart = Math.abs(indicatorStyle[startIndicator] - newIndicatorStyle[startIndicator]);\n const dSize = Math.abs(indicatorStyle[size] - newIndicatorStyle[size]);\n if (dStart >= 1 || dSize >= 1) {\n setIndicatorStyle(newIndicatorStyle);\n }\n }\n });\n const scroll = (scrollValue, {\n animation = true\n } = {}) => {\n if (animation) {\n animate(scrollStart, tabsRef.current, scrollValue, {\n duration: theme.transitions.duration.standard\n });\n } else {\n tabsRef.current[scrollStart] = scrollValue;\n }\n };\n const moveTabsScroll = delta => {\n let scrollValue = tabsRef.current[scrollStart];\n if (vertical) {\n scrollValue += delta;\n } else {\n scrollValue += delta * (isRtl ? -1 : 1);\n // Fix for Edge\n scrollValue *= isRtl && detectScrollType() === 'reverse' ? -1 : 1;\n }\n scroll(scrollValue);\n };\n const getScrollSize = () => {\n const containerSize = tabsRef.current[clientSize];\n let totalSize = 0;\n const children = Array.from(tabListRef.current.children);\n for (let i = 0; i < children.length; i += 1) {\n const tab = children[i];\n if (totalSize + tab[clientSize] > containerSize) {\n // If the first item is longer than the container size, then only scroll\n // by the container size.\n if (i === 0) {\n totalSize = containerSize;\n }\n break;\n }\n totalSize += tab[clientSize];\n }\n return totalSize;\n };\n const handleStartScrollClick = () => {\n moveTabsScroll(-1 * getScrollSize());\n };\n const handleEndScrollClick = () => {\n moveTabsScroll(getScrollSize());\n };\n\n // TODO Remove as browser support for hiding the scrollbar\n // with CSS improves.\n const handleScrollbarSizeChange = React.useCallback(scrollbarWidth => {\n setScrollerStyle({\n overflow: null,\n scrollbarWidth\n });\n }, []);\n const getConditionalElements = () => {\n const conditionalElements = {};\n conditionalElements.scrollbarSizeListener = scrollable ? /*#__PURE__*/_jsx(TabsScrollbarSize, {\n onChange: handleScrollbarSizeChange,\n className: clsx(classes.scrollableX, classes.hideScrollbar)\n }) : null;\n const scrollButtonsActive = displayStartScroll || displayEndScroll;\n const showScrollButtons = scrollable && (scrollButtons === 'auto' && scrollButtonsActive || scrollButtons === true);\n conditionalElements.scrollButtonStart = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n slots: {\n StartScrollButtonIcon: slots.StartScrollButtonIcon\n },\n slotProps: {\n startScrollButtonIcon: startScrollButtonIconProps\n },\n orientation: orientation,\n direction: isRtl ? 'right' : 'left',\n onClick: handleStartScrollClick,\n disabled: !displayStartScroll\n }, TabScrollButtonProps, {\n className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n })) : null;\n conditionalElements.scrollButtonEnd = showScrollButtons ? /*#__PURE__*/_jsx(ScrollButtonComponent, _extends({\n slots: {\n EndScrollButtonIcon: slots.EndScrollButtonIcon\n },\n slotProps: {\n endScrollButtonIcon: endScrollButtonIconProps\n },\n orientation: orientation,\n direction: isRtl ? 'left' : 'right',\n onClick: handleEndScrollClick,\n disabled: !displayEndScroll\n }, TabScrollButtonProps, {\n className: clsx(classes.scrollButtons, TabScrollButtonProps.className)\n })) : null;\n return conditionalElements;\n };\n const scrollSelectedIntoView = useEventCallback(animation => {\n const {\n tabsMeta,\n tabMeta\n } = getTabsMeta();\n if (!tabMeta || !tabsMeta) {\n return;\n }\n if (tabMeta[start] < tabsMeta[start]) {\n // left side of button is out of view\n const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[start] - tabsMeta[start]);\n scroll(nextScrollStart, {\n animation\n });\n } else if (tabMeta[end] > tabsMeta[end]) {\n // right side of button is out of view\n const nextScrollStart = tabsMeta[scrollStart] + (tabMeta[end] - tabsMeta[end]);\n scroll(nextScrollStart, {\n animation\n });\n }\n });\n const updateScrollButtonState = useEventCallback(() => {\n if (scrollable && scrollButtons !== false) {\n setUpdateScrollObserver(!updateScrollObserver);\n }\n });\n React.useEffect(() => {\n const handleResize = debounce(() => {\n // If the Tabs component is replaced by Suspense with a fallback, the last\n // ResizeObserver's handler that runs because of the change in the layout is trying to\n // access a dom node that is no longer there (as the fallback component is being shown instead).\n // See https://github.com/mui/material-ui/issues/33276\n // TODO: Add tests that will ensure the component is not failing when\n // replaced by Suspense with a fallback, once React is updated to version 18\n if (tabsRef.current) {\n updateIndicatorState();\n }\n });\n let resizeObserver;\n\n /**\n * @type {MutationCallback}\n */\n const handleMutation = records => {\n records.forEach(record => {\n record.removedNodes.forEach(item => {\n var _resizeObserver;\n (_resizeObserver = resizeObserver) == null || _resizeObserver.unobserve(item);\n });\n record.addedNodes.forEach(item => {\n var _resizeObserver2;\n (_resizeObserver2 = resizeObserver) == null || _resizeObserver2.observe(item);\n });\n });\n handleResize();\n updateScrollButtonState();\n };\n const win = ownerWindow(tabsRef.current);\n win.addEventListener('resize', handleResize);\n let mutationObserver;\n if (typeof ResizeObserver !== 'undefined') {\n resizeObserver = new ResizeObserver(handleResize);\n Array.from(tabListRef.current.children).forEach(child => {\n resizeObserver.observe(child);\n });\n }\n if (typeof MutationObserver !== 'undefined') {\n mutationObserver = new MutationObserver(handleMutation);\n mutationObserver.observe(tabListRef.current, {\n childList: true\n });\n }\n return () => {\n var _mutationObserver, _resizeObserver3;\n handleResize.clear();\n win.removeEventListener('resize', handleResize);\n (_mutationObserver = mutationObserver) == null || _mutationObserver.disconnect();\n (_resizeObserver3 = resizeObserver) == null || _resizeObserver3.disconnect();\n };\n }, [updateIndicatorState, updateScrollButtonState]);\n\n /**\n * Toggle visibility of start and end scroll buttons\n * Using IntersectionObserver on first and last Tabs.\n */\n React.useEffect(() => {\n const tabListChildren = Array.from(tabListRef.current.children);\n const length = tabListChildren.length;\n if (typeof IntersectionObserver !== 'undefined' && length > 0 && scrollable && scrollButtons !== false) {\n const firstTab = tabListChildren[0];\n const lastTab = tabListChildren[length - 1];\n const observerOptions = {\n root: tabsRef.current,\n threshold: 0.99\n };\n const handleScrollButtonStart = entries => {\n setDisplayStartScroll(!entries[0].isIntersecting);\n };\n const firstObserver = new IntersectionObserver(handleScrollButtonStart, observerOptions);\n firstObserver.observe(firstTab);\n const handleScrollButtonEnd = entries => {\n setDisplayEndScroll(!entries[0].isIntersecting);\n };\n const lastObserver = new IntersectionObserver(handleScrollButtonEnd, observerOptions);\n lastObserver.observe(lastTab);\n return () => {\n firstObserver.disconnect();\n lastObserver.disconnect();\n };\n }\n return undefined;\n }, [scrollable, scrollButtons, updateScrollObserver, childrenProp == null ? void 0 : childrenProp.length]);\n React.useEffect(() => {\n setMounted(true);\n }, []);\n React.useEffect(() => {\n updateIndicatorState();\n });\n React.useEffect(() => {\n // Don't animate on the first render.\n scrollSelectedIntoView(defaultIndicatorStyle !== indicatorStyle);\n }, [scrollSelectedIntoView, indicatorStyle]);\n React.useImperativeHandle(action, () => ({\n updateIndicator: updateIndicatorState,\n updateScrollButtons: updateScrollButtonState\n }), [updateIndicatorState, updateScrollButtonState]);\n const indicator = /*#__PURE__*/_jsx(TabsIndicator, _extends({}, TabIndicatorProps, {\n className: clsx(classes.indicator, TabIndicatorProps.className),\n ownerState: ownerState,\n style: _extends({}, indicatorStyle, TabIndicatorProps.style)\n }));\n let childIndex = 0;\n const children = React.Children.map(childrenProp, child => {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return null;\n }\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"MUI: The Tabs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n const childValue = child.props.value === undefined ? childIndex : child.props.value;\n valueToIndex.set(childValue, childIndex);\n const selected = childValue === value;\n childIndex += 1;\n return /*#__PURE__*/React.cloneElement(child, _extends({\n fullWidth: variant === 'fullWidth',\n indicator: selected && !mounted && indicator,\n selected,\n selectionFollowsFocus,\n onChange,\n textColor,\n value: childValue\n }, childIndex === 1 && value === false && !child.props.tabIndex ? {\n tabIndex: 0\n } : {}));\n });\n const handleKeyDown = event => {\n const list = tabListRef.current;\n const currentFocus = ownerDocument(list).activeElement;\n // Keyboard navigation assumes that [role=\"tab\"] are siblings\n // though we might warn in the future about nested, interactive elements\n // as a a11y violation\n const role = currentFocus.getAttribute('role');\n if (role !== 'tab') {\n return;\n }\n let previousItemKey = orientation === 'horizontal' ? 'ArrowLeft' : 'ArrowUp';\n let nextItemKey = orientation === 'horizontal' ? 'ArrowRight' : 'ArrowDown';\n if (orientation === 'horizontal' && isRtl) {\n // swap previousItemKey with nextItemKey\n previousItemKey = 'ArrowRight';\n nextItemKey = 'ArrowLeft';\n }\n switch (event.key) {\n case previousItemKey:\n event.preventDefault();\n moveFocus(list, currentFocus, previousItem);\n break;\n case nextItemKey:\n event.preventDefault();\n moveFocus(list, currentFocus, nextItem);\n break;\n case 'Home':\n event.preventDefault();\n moveFocus(list, null, nextItem);\n break;\n case 'End':\n event.preventDefault();\n moveFocus(list, null, previousItem);\n break;\n default:\n break;\n }\n };\n const conditionalElements = getConditionalElements();\n return /*#__PURE__*/_jsxs(TabsRoot, _extends({\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref,\n as: component\n }, other, {\n children: [conditionalElements.scrollButtonStart, conditionalElements.scrollbarSizeListener, /*#__PURE__*/_jsxs(TabsScroller, {\n className: classes.scroller,\n ownerState: ownerState,\n style: {\n overflow: scrollerStyle.overflow,\n [vertical ? `margin${isRtl ? 'Left' : 'Right'}` : 'marginBottom']: visibleScrollbar ? undefined : -scrollerStyle.scrollbarWidth\n },\n ref: tabsRef,\n children: [/*#__PURE__*/_jsx(FlexContainer, {\n \"aria-label\": ariaLabel,\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-orientation\": orientation === 'vertical' ? 'vertical' : null,\n className: classes.flexContainer,\n ownerState: ownerState,\n onKeyDown: handleKeyDown,\n ref: tabListRef,\n role: \"tablist\",\n children: children\n }), mounted && indicator]\n }), conditionalElements.scrollButtonEnd]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Tabs.propTypes /* remove-proptypes */ = {\n // ┌────────────────────────────── Warning ──────────────────────────────┐\n // │ These PropTypes are generated from the TypeScript type definitions. │\n // │ To update them, edit the d.ts file and run `pnpm proptypes`. │\n // └─────────────────────────────────────────────────────────────────────┘\n /**\n * Callback fired when the component mounts.\n * This is useful when you want to trigger an action programmatically.\n * It supports two actions: `updateIndicator()` and `updateScrollButtons()`\n *\n * @param {object} actions This object contains all possible actions\n * that can be triggered programmatically.\n */\n action: refType,\n /**\n * If `true`, the scroll buttons aren't forced hidden on mobile.\n * By default the scroll buttons are hidden on mobile and takes precedence over `scrollButtons`.\n * @default false\n */\n allowScrollButtonsMobile: PropTypes.bool,\n /**\n * The label for the Tabs as a string.\n */\n 'aria-label': PropTypes.string,\n /**\n * An id or list of ids separated by a space that label the Tabs.\n */\n 'aria-labelledby': PropTypes.string,\n /**\n * If `true`, the tabs are centered.\n * This prop is intended for large views.\n * @default false\n */\n centered: PropTypes.bool,\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Determines the color of the indicator.\n * @default 'primary'\n */\n indicatorColor: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['primary', 'secondary']), PropTypes.string]),\n /**\n * Callback fired when the value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback. **Warning**: This is a generic event not a change event.\n * @param {any} value We default to the index of the child (number)\n */\n onChange: PropTypes.func,\n /**\n * The component orientation (layout flow direction).\n * @default 'horizontal'\n */\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n /**\n * The component used to render the scroll buttons.\n * @default TabScrollButton\n */\n ScrollButtonComponent: PropTypes.elementType,\n /**\n * Determine behavior of scroll buttons when tabs are set to scroll:\n *\n * - `auto` will only present them when not all the items are visible.\n * - `true` will always present them.\n * - `false` will never present them.\n *\n * By default the scroll buttons are hidden on mobile.\n * This behavior can be disabled with `allowScrollButtonsMobile`.\n * @default 'auto'\n */\n scrollButtons: PropTypes /* @typescript-to-proptypes-ignore */.oneOf(['auto', false, true]),\n /**\n * If `true` the selected tab changes on focus. Otherwise it only\n * changes on activation.\n */\n selectionFollowsFocus: PropTypes.bool,\n /**\n * The extra props for the slot components.\n * You can override the existing props or add new ones.\n * @default {}\n */\n slotProps: PropTypes.shape({\n endScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object]),\n startScrollButtonIcon: PropTypes.oneOfType([PropTypes.func, PropTypes.object])\n }),\n /**\n * The components used for each slot inside.\n * @default {}\n */\n slots: PropTypes.shape({\n EndScrollButtonIcon: PropTypes.elementType,\n StartScrollButtonIcon: PropTypes.elementType\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * Props applied to the tab indicator element.\n * @default {}\n */\n TabIndicatorProps: PropTypes.object,\n /**\n * Props applied to the [`TabScrollButton`](/material-ui/api/tab-scroll-button/) element.\n * @default {}\n */\n TabScrollButtonProps: PropTypes.object,\n /**\n * Determines the color of the `Tab`.\n * @default 'primary'\n */\n textColor: PropTypes.oneOf(['inherit', 'primary', 'secondary']),\n /**\n * The value of the currently selected `Tab`.\n * If you don't want any selected `Tab`, you can set this prop to `false`.\n */\n value: PropTypes.any,\n /**\n * Determines additional display behavior of the tabs:\n *\n * - `scrollable` will invoke scrolling properties and allow for horizontally\n * scrolling (or swiping) of the tab bar.\n * - `fullWidth` will make the tabs grow to use all the available space,\n * which should be used for small views, like on mobile.\n * - `standard` will render the default state.\n * @default 'standard'\n */\n variant: PropTypes.oneOf(['fullWidth', 'scrollable', 'standard']),\n /**\n * If `true`, the scrollbar is visible. It can be useful when displaying\n * a long vertical list of tabs.\n * @default false\n */\n visibleScrollbar: PropTypes.bool\n} : void 0;\nexport default Tabs;"],"names":["_excluded","nextItem","list","item","firstChild","nextElementSibling","previousItem","lastChild","previousElementSibling","moveFocus","currentFocus","traversalFunction","wrappedOnce","nextFocus","nextFocusDisabled","disabled","getAttribute","hasAttribute","focus","TabsRoot","name","slot","overridesResolver","props","styles","ownerState","scrollButtons","scrollButtonsHideMobile","root","vertical","theme","overflow","minHeight","WebkitOverflowScrolling","display","flexDirection","breakpoints","down","TabsScroller","scroller","fixed","hideScrollbar","scrollableX","scrollableY","position","flex","whiteSpace","overflowX","width","scrollbarWidth","overflowY","FlexContainer","flexContainer","flexContainerVertical","centered","justifyContent","TabsIndicator","indicator","height","bottom","transition","transitions","create","indicatorColor","backgroundColor","vars","palette","primary","main","secondary","right","TabsScrollbarSize","defaultIndicatorStyle","inProps","ref","isRtl","ariaLabel","ariaLabelledBy","action","children","childrenProp","className","component","allowScrollButtonsMobile","onChange","orientation","ScrollButtonComponent","selectionFollowsFocus","slots","slotProps","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant","visibleScrollbar","other","scrollable","scrollStart","start","end","clientSize","size","classes","useUtilityClasses","startScrollButtonIconProps","elementType","StartScrollButtonIcon","externalSlotProps","startScrollButtonIcon","endScrollButtonIconProps","EndScrollButtonIcon","endScrollButtonIcon","mounted","setMounted","indicatorStyle","setIndicatorStyle","displayStartScroll","setDisplayStartScroll","displayEndScroll","setDisplayEndScroll","updateScrollObserver","setUpdateScrollObserver","scrollerStyle","setScrollerStyle","valueToIndex","Map","tabsRef","tabListRef","getTabsMeta","tabsNode","current","tabsMeta","tabMeta","rect","getBoundingClientRect","clientWidth","scrollLeft","scrollTop","scrollLeftNormalized","scrollWidth","top","left","length","tab","get","updateIndicatorState","startIndicator","startValue","correction","newIndicatorStyle","isNaN","dStart","Math","abs","dSize","scroll","scrollValue","animation","duration","standard","moveTabsScroll","delta","getScrollSize","containerSize","totalSize","Array","from","i","handleStartScrollClick","handleEndScrollClick","handleScrollbarSizeChange","scrollSelectedIntoView","nextScrollStart","updateScrollButtonState","handleResize","resizeObserver","win","mutationObserver","addEventListener","ResizeObserver","forEach","child","observe","MutationObserver","records","record","removedNodes","_resizeObserver","unobserve","addedNodes","_resizeObserver2","childList","_mutationObserver","_resizeObserver3","clear","removeEventListener","disconnect","tabListChildren","IntersectionObserver","firstTab","lastTab","observerOptions","threshold","firstObserver","entries","isIntersecting","lastObserver","updateIndicator","updateScrollButtons","style","childIndex","map","childValue","undefined","set","selected","fullWidth","tabIndex","conditionalElements","scrollbarSizeListener","showScrollButtons","scrollButtonStart","direction","onClick","scrollButtonEnd","getConditionalElements","as","onKeyDown","event","activeElement","previousItemKey","nextItemKey","key","preventDefault","role"],"sourceRoot":""}