{"ast":null,"code":"import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport debounce from '../utils/debounce';\nimport ownerWindow from '../utils/ownerWindow';\nimport { getNormalizedScrollLeft, detectScrollType } from '../utils/scrollLeft';\nimport animate from '../internal/animate';\nimport ScrollbarSize from './ScrollbarSize';\nimport withStyles from '../styles/withStyles';\nimport TabIndicator from './TabIndicator';\nimport TabScrollButton from '../TabScrollButton';\nimport useEventCallback from '../utils/useEventCallback';\nimport useTheme from '../styles/useTheme';\nexport var styles = function styles(theme) {\n  return {\n    /* Styles applied to the root element. */\n    root: {\n      overflow: 'hidden',\n      minHeight: 48,\n      WebkitOverflowScrolling: 'touch',\n      // Add iOS momentum scrolling.\n      display: 'flex'\n    },\n\n    /* Styles applied to the root element if `orientation=\"vertical\"`. */\n    vertical: {\n      flexDirection: 'column'\n    },\n\n    /* Styles applied to the flex container element. */\n    flexContainer: {\n      display: 'flex'\n    },\n\n    /* Styles applied to the flex container element if `orientation=\"vertical\"`. */\n    flexContainerVertical: {\n      flexDirection: 'column'\n    },\n\n    /* Styles applied to the flex container element if `centered={true}` & `!variant=\"scrollable\"`. */\n    centered: {\n      justifyContent: 'center'\n    },\n\n    /* Styles applied to the tablist element. */\n    scroller: {\n      position: 'relative',\n      display: 'inline-block',\n      flex: '1 1 auto',\n      whiteSpace: 'nowrap'\n    },\n\n    /* Styles applied to the tablist element if `!variant=\"scrollable\"`\b\b\b. */\n    fixed: {\n      overflowX: 'hidden',\n      width: '100%'\n    },\n\n    /* Styles applied to the tablist element if `variant=\"scrollable\"`. */\n    scrollable: {\n      overflowX: 'scroll',\n      // Hide dimensionless scrollbar on MacOS\n      scrollbarWidth: 'none',\n      // Firefox\n      '&::-webkit-scrollbar': {\n        display: 'none' // Safari + Chrome\n\n      }\n    },\n\n    /* Styles applied to the `ScrollButtonComponent` component. */\n    scrollButtons: {},\n\n    /* Styles applied to the `ScrollButtonComponent` component if `scrollButtons=\"auto\"` or scrollButtons=\"desktop\"`. */\n    scrollButtonsDesktop: _defineProperty({}, theme.breakpoints.down('xs'), {\n      display: 'none'\n    }),\n\n    /* Styles applied to the `TabIndicator` component. */\n    indicator: {}\n  };\n};\nvar Tabs = /*#__PURE__*/React.forwardRef(function Tabs(props, ref) {\n  var ariaLabel = props['aria-label'],\n      ariaLabelledBy = props['aria-labelledby'],\n      action = props.action,\n      _props$centered = props.centered,\n      centered = _props$centered === void 0 ? false : _props$centered,\n      childrenProp = props.children,\n      classes = props.classes,\n      className = props.className,\n      _props$component = props.component,\n      Component = _props$component === void 0 ? 'div' : _props$component,\n      _props$indicatorColor = props.indicatorColor,\n      indicatorColor = _props$indicatorColor === void 0 ? 'secondary' : _props$indicatorColor,\n      onChange = props.onChange,\n      _props$orientation = props.orientation,\n      orientation = _props$orientation === void 0 ? 'horizontal' : _props$orientation,\n      _props$ScrollButtonCo = props.ScrollButtonComponent,\n      ScrollButtonComponent = _props$ScrollButtonCo === void 0 ? TabScrollButton : _props$ScrollButtonCo,\n      _props$scrollButtons = props.scrollButtons,\n      scrollButtons = _props$scrollButtons === void 0 ? 'auto' : _props$scrollButtons,\n      selectionFollowsFocus = props.selectionFollowsFocus,\n      _props$TabIndicatorPr = props.TabIndicatorProps,\n      TabIndicatorProps = _props$TabIndicatorPr === void 0 ? {} : _props$TabIndicatorPr,\n      TabScrollButtonProps = props.TabScrollButtonProps,\n      _props$textColor = props.textColor,\n      textColor = _props$textColor === void 0 ? 'inherit' : _props$textColor,\n      value = props.value,\n      _props$variant = props.variant,\n      variant = _props$variant === void 0 ? 'standard' : _props$variant,\n      other = _objectWithoutProperties(props, [\"aria-label\", \"aria-labelledby\", \"action\", \"centered\", \"children\", \"classes\", \"className\", \"component\", \"indicatorColor\", \"onChange\", \"orientation\", \"ScrollButtonComponent\", \"scrollButtons\", \"selectionFollowsFocus\", \"TabIndicatorProps\", \"TabScrollButtonProps\", \"textColor\", \"value\", \"variant\"]);\n\n  var theme = useTheme();\n  var scrollable = variant === 'scrollable';\n  var isRtl = theme.direction === 'rtl';\n  var vertical = orientation === 'vertical';\n  var scrollStart = vertical ? 'scrollTop' : 'scrollLeft';\n  var start = vertical ? 'top' : 'left';\n  var end = vertical ? 'bottom' : 'right';\n  var clientSize = vertical ? 'clientHeight' : 'clientWidth';\n  var size = vertical ? 'height' : 'width';\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (centered && scrollable) {\n      console.error('Material-UI: You can not use the `centered={true}` and `variant=\"scrollable\"` properties ' + 'at the same time on a `Tabs` component.');\n    }\n  }\n\n  var _React$useState = React.useState(false),\n      mounted = _React$useState[0],\n      setMounted = _React$useState[1];\n\n  var _React$useState2 = React.useState({}),\n      indicatorStyle = _React$useState2[0],\n      setIndicatorStyle = _React$useState2[1];\n\n  var _React$useState3 = React.useState({\n    start: false,\n    end: false\n  }),\n      displayScroll = _React$useState3[0],\n      setDisplayScroll = _React$useState3[1];\n\n  var _React$useState4 = React.useState({\n    overflow: 'hidden',\n    marginBottom: null\n  }),\n      scrollerStyle = _React$useState4[0],\n      setScrollerStyle = _React$useState4[1];\n\n  var valueToIndex = new Map();\n  var tabsRef = React.useRef(null);\n  var tabListRef = React.useRef(null);\n\n  var getTabsMeta = function getTabsMeta() {\n    var tabsNode = tabsRef.current;\n    var tabsMeta;\n\n    if (tabsNode) {\n      var rect = tabsNode.getBoundingClientRect(); // create a new object with ClientRect class props + scrollLeft\n\n      tabsMeta = {\n        clientWidth: tabsNode.clientWidth,\n        scrollLeft: tabsNode.scrollLeft,\n        scrollTop: tabsNode.scrollTop,\n        scrollLeftNormalized: getNormalizedScrollLeft(tabsNode, theme.direction),\n        scrollWidth: tabsNode.scrollWidth,\n        top: rect.top,\n        bottom: rect.bottom,\n        left: rect.left,\n        right: rect.right\n      };\n    }\n\n    var tabMeta;\n\n    if (tabsNode && value !== false) {\n      var _children = tabListRef.current.children;\n\n      if (_children.length > 0) {\n        var tab = _children[valueToIndex.get(value)];\n\n        if (process.env.NODE_ENV !== 'production') {\n          if (!tab) {\n            console.error([\"Material-UI: The value provided to the Tabs component is invalid.\", \"None of the Tabs' children match with `\".concat(value, \"`.\"), valueToIndex.keys ? \"You can provide one of the following values: \".concat(Array.from(valueToIndex.keys()).join(', '), \".\") : null].join('\\n'));\n          }\n        }\n\n        tabMeta = tab ? tab.getBoundingClientRect() : null;\n      }\n    }\n\n    return {\n      tabsMeta: tabsMeta,\n      tabMeta: tabMeta\n    };\n  };\n\n  var updateIndicatorState = useEventCallback(function () {\n    var _newIndicatorStyle;\n\n    var _getTabsMeta = getTabsMeta(),\n        tabsMeta = _getTabsMeta.tabsMeta,\n        tabMeta = _getTabsMeta.tabMeta;\n\n    var startValue = 0;\n\n    if (tabMeta && tabsMeta) {\n      if (vertical) {\n        startValue = tabMeta.top - tabsMeta.top + tabsMeta.scrollTop;\n      } else {\n        var correction = isRtl ? tabsMeta.scrollLeftNormalized + tabsMeta.clientWidth - tabsMeta.scrollWidth : tabsMeta.scrollLeft;\n        startValue = tabMeta.left - tabsMeta.left + correction;\n      }\n    }\n\n    var newIndicatorStyle = (_newIndicatorStyle = {}, _defineProperty(_newIndicatorStyle, start, startValue), _defineProperty(_newIndicatorStyle, size, tabMeta ? tabMeta[size] : 0), _newIndicatorStyle);\n\n    if (isNaN(indicatorStyle[start]) || isNaN(indicatorStyle[size])) {\n      setIndicatorStyle(newIndicatorStyle);\n    } else {\n      var dStart = Math.abs(indicatorStyle[start] - newIndicatorStyle[start]);\n      var dSize = Math.abs(indicatorStyle[size] - newIndicatorStyle[size]);\n\n      if (dStart >= 1 || dSize >= 1) {\n        setIndicatorStyle(newIndicatorStyle);\n      }\n    }\n  });\n\n  var scroll = function scroll(scrollValue) {\n    animate(scrollStart, tabsRef.current, scrollValue);\n  };\n\n  var moveTabsScroll = function moveTabsScroll(delta) {\n    var scrollValue = tabsRef.current[scrollStart];\n\n    if (vertical) {\n      scrollValue += delta;\n    } else {\n      scrollValue += delta * (isRtl ? -1 : 1); // Fix for Edge\n\n      scrollValue *= isRtl && detectScrollType() === 'reverse' ? -1 : 1;\n    }\n\n    scroll(scrollValue);\n  };\n\n  var handleStartScrollClick = function handleStartScrollClick() {\n    moveTabsScroll(-tabsRef.current[clientSize]);\n  };\n\n  var handleEndScrollClick = function handleEndScrollClick() {\n    moveTabsScroll(tabsRef.current[clientSize]);\n  };\n\n  var handleScrollbarSizeChange = React.useCallback(function (scrollbarHeight) {\n    setScrollerStyle({\n      overflow: null,\n      marginBottom: -scrollbarHeight\n    });\n  }, []);\n\n  var getConditionalElements = function getConditionalElements() {\n    var conditionalElements = {};\n    conditionalElements.scrollbarSizeListener = scrollable ? /*#__PURE__*/React.createElement(ScrollbarSize, {\n      className: classes.scrollable,\n      onChange: handleScrollbarSizeChange\n    }) : null;\n    var scrollButtonsActive = displayScroll.start || displayScroll.end;\n    var showScrollButtons = scrollable && (scrollButtons === 'auto' && scrollButtonsActive || scrollButtons === 'desktop' || scrollButtons === 'on');\n    conditionalElements.scrollButtonStart = showScrollButtons ? /*#__PURE__*/React.createElement(ScrollButtonComponent, _extends({\n      orientation: orientation,\n      direction: isRtl ? 'right' : 'left',\n      onClick: handleStartScrollClick,\n      disabled: !displayScroll.start,\n      className: clsx(classes.scrollButtons, scrollButtons !== 'on' && classes.scrollButtonsDesktop)\n    }, TabScrollButtonProps)) : null;\n    conditionalElements.scrollButtonEnd = showScrollButtons ? /*#__PURE__*/React.createElement(ScrollButtonComponent, _extends({\n      orientation: orientation,\n      direction: isRtl ? 'left' : 'right',\n      onClick: handleEndScrollClick,\n      disabled: !displayScroll.end,\n      className: clsx(classes.scrollButtons, scrollButtons !== 'on' && classes.scrollButtonsDesktop)\n    }, TabScrollButtonProps)) : null;\n    return conditionalElements;\n  };\n\n  var scrollSelectedIntoView = useEventCallback(function () {\n    var _getTabsMeta2 = getTabsMeta(),\n        tabsMeta = _getTabsMeta2.tabsMeta,\n        tabMeta = _getTabsMeta2.tabMeta;\n\n    if (!tabMeta || !tabsMeta) {\n      return;\n    }\n\n    if (tabMeta[start] < tabsMeta[start]) {\n      // left side of button is out of view\n      var nextScrollStart = tabsMeta[scrollStart] + (tabMeta[start] - tabsMeta[start]);\n      scroll(nextScrollStart);\n    } else if (tabMeta[end] > tabsMeta[end]) {\n      // right side of button is out of view\n      var _nextScrollStart = tabsMeta[scrollStart] + (tabMeta[end] - tabsMeta[end]);\n\n      scroll(_nextScrollStart);\n    }\n  });\n  var updateScrollButtonState = useEventCallback(function () {\n    if (scrollable && scrollButtons !== 'off') {\n      var _tabsRef$current = tabsRef.current,\n          scrollTop = _tabsRef$current.scrollTop,\n          scrollHeight = _tabsRef$current.scrollHeight,\n          clientHeight = _tabsRef$current.clientHeight,\n          scrollWidth = _tabsRef$current.scrollWidth,\n          clientWidth = _tabsRef$current.clientWidth;\n      var showStartScroll;\n      var showEndScroll;\n\n      if (vertical) {\n        showStartScroll = scrollTop > 1;\n        showEndScroll = scrollTop < scrollHeight - clientHeight - 1;\n      } else {\n        var scrollLeft = getNormalizedScrollLeft(tabsRef.current, theme.direction); // use 1 for the potential rounding error with browser zooms.\n\n        showStartScroll = isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n        showEndScroll = !isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n      }\n\n      if (showStartScroll !== displayScroll.start || showEndScroll !== displayScroll.end) {\n        setDisplayScroll({\n          start: showStartScroll,\n          end: showEndScroll\n        });\n      }\n    }\n  });\n  React.useEffect(function () {\n    var handleResize = debounce(function () {\n      updateIndicatorState();\n      updateScrollButtonState();\n    });\n    var win = ownerWindow(tabsRef.current);\n    win.addEventListener('resize', handleResize);\n    return function () {\n      handleResize.clear();\n      win.removeEventListener('resize', handleResize);\n    };\n  }, [updateIndicatorState, updateScrollButtonState]);\n  var handleTabsScroll = React.useCallback(debounce(function () {\n    updateScrollButtonState();\n  }));\n  React.useEffect(function () {\n    return function () {\n      handleTabsScroll.clear();\n    };\n  }, [handleTabsScroll]);\n  React.useEffect(function () {\n    setMounted(true);\n  }, []);\n  React.useEffect(function () {\n    updateIndicatorState();\n    updateScrollButtonState();\n  });\n  React.useEffect(function () {\n    scrollSelectedIntoView();\n  }, [scrollSelectedIntoView, indicatorStyle]);\n  React.useImperativeHandle(action, function () {\n    return {\n      updateIndicator: updateIndicatorState,\n      updateScrollButtons: updateScrollButtonState\n    };\n  }, [updateIndicatorState, updateScrollButtonState]);\n  var indicator = /*#__PURE__*/React.createElement(TabIndicator, _extends({\n    className: classes.indicator,\n    orientation: orientation,\n    color: indicatorColor\n  }, TabIndicatorProps, {\n    style: _extends({}, indicatorStyle, TabIndicatorProps.style)\n  }));\n  var childIndex = 0;\n  var children = React.Children.map(childrenProp, function (child) {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return null;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"Material-UI: The Tabs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n\n    var childValue = child.props.value === undefined ? childIndex : child.props.value;\n    valueToIndex.set(childValue, childIndex);\n    var selected = childValue === value;\n    childIndex += 1;\n    return /*#__PURE__*/React.cloneElement(child, {\n      fullWidth: variant === 'fullWidth',\n      indicator: selected && !mounted && indicator,\n      selected: selected,\n      selectionFollowsFocus: selectionFollowsFocus,\n      onChange: onChange,\n      textColor: textColor,\n      value: childValue\n    });\n  });\n\n  var handleKeyDown = function handleKeyDown(event) {\n    var target = event.target; // 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\n    var role = target.getAttribute('role');\n\n    if (role !== 'tab') {\n      return;\n    }\n\n    var newFocusTarget = null;\n    var previousItemKey = orientation !== \"vertical\" ? 'ArrowLeft' : 'ArrowUp';\n    var nextItemKey = orientation !== \"vertical\" ? 'ArrowRight' : 'ArrowDown';\n\n    if (orientation !== \"vertical\" && theme.direction === 'rtl') {\n      // swap previousItemKey with nextItemKey\n      previousItemKey = 'ArrowRight';\n      nextItemKey = 'ArrowLeft';\n    }\n\n    switch (event.key) {\n      case previousItemKey:\n        newFocusTarget = target.previousElementSibling || tabListRef.current.lastChild;\n        break;\n\n      case nextItemKey:\n        newFocusTarget = target.nextElementSibling || tabListRef.current.firstChild;\n        break;\n\n      case 'Home':\n        newFocusTarget = tabListRef.current.firstChild;\n        break;\n\n      case 'End':\n        newFocusTarget = tabListRef.current.lastChild;\n        break;\n\n      default:\n        break;\n    }\n\n    if (newFocusTarget !== null) {\n      newFocusTarget.focus();\n      event.preventDefault();\n    }\n  };\n\n  var conditionalElements = getConditionalElements();\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    className: clsx(classes.root, className, vertical && classes.vertical),\n    ref: ref\n  }, other), conditionalElements.scrollButtonStart, conditionalElements.scrollbarSizeListener, /*#__PURE__*/React.createElement(\"div\", {\n    className: clsx(classes.scroller, scrollable ? classes.scrollable : classes.fixed),\n    style: scrollerStyle,\n    ref: tabsRef,\n    onScroll: handleTabsScroll\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    \"aria-label\": ariaLabel,\n    \"aria-labelledby\": ariaLabelledBy,\n    className: clsx(classes.flexContainer, vertical && classes.flexContainerVertical, centered && !scrollable && classes.centered),\n    onKeyDown: handleKeyDown,\n    ref: tabListRef,\n    role: \"tablist\"\n  }, children), mounted && indicator), conditionalElements.scrollButtonEnd);\n});\nprocess.env.NODE_ENV !== \"production\" ? Tabs.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\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  /**\n   * The label for the Tabs as a string.\n   */\n  'aria-label': PropTypes.string,\n\n  /**\n   * An id or list of ids separated by a space that label the Tabs.\n   */\n  'aria-labelledby': PropTypes.string,\n\n  /**\n   * If `true`, the tabs will be centered.\n   * This property is intended for large views.\n   */\n  centered: PropTypes.bool,\n\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\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\n  /* @typescript-to-proptypes-ignore */\n  .elementType,\n\n  /**\n   * Determines the color of the indicator.\n   */\n  indicatorColor: PropTypes.oneOf(['primary', 'secondary']),\n\n  /**\n   * Callback fired when the value changes.\n   *\n   * @param {object} event The event source of the callback\n   * @param {any} value We default to the index of the child (number)\n   */\n  onChange: PropTypes.func,\n\n  /**\n   * The tabs orientation (layout flow direction).\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n\n  /**\n   * The component used to render the scroll buttons.\n   */\n  ScrollButtonComponent: PropTypes.elementType,\n\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   * - `desktop` will only present them on medium and larger viewports.\n   * - `on` will always present them.\n   * - `off` will never present them.\n   */\n  scrollButtons: PropTypes.oneOf(['auto', 'desktop', 'off', 'on']),\n\n  /**\n   * If `true` the selected tab changes on focus. Otherwise it only\n   * changes on activation.\n   */\n  selectionFollowsFocus: PropTypes.bool,\n\n  /**\n   * Props applied to the tab indicator element.\n   */\n  TabIndicatorProps: PropTypes.object,\n\n  /**\n   * Props applied to the [`TabScrollButton`](/api/tab-scroll-button/) element.\n   */\n  TabScrollButtonProps: PropTypes.object,\n\n  /**\n   * Determines the color of the `Tab`.\n   */\n  textColor: PropTypes.oneOf(['inherit', 'primary', 'secondary']),\n\n  /**\n   * The value of the currently selected `Tab`.\n   * If you don't want any selected `Tab`, you can set this property to `false`.\n   */\n  value: PropTypes.any,\n\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   */\n  variant: PropTypes.oneOf(['fullWidth', 'scrollable', 'standard'])\n} : void 0;\nexport default withStyles(styles, {\n  name: 'MuiTabs'\n})(Tabs);","map":{"version":3,"sources":["C:/laragon/www/iot.mksolusi/DriverOPCDA/frontend/node_modules/@material-ui/core/esm/Tabs/Tabs.js"],"names":["_extends","_objectWithoutProperties","_defineProperty","React","isFragment","PropTypes","clsx","refType","debounce","ownerWindow","getNormalizedScrollLeft","detectScrollType","animate","ScrollbarSize","withStyles","TabIndicator","TabScrollButton","useEventCallback","useTheme","styles","theme","root","overflow","minHeight","WebkitOverflowScrolling","display","vertical","flexDirection","flexContainer","flexContainerVertical","centered","justifyContent","scroller","position","flex","whiteSpace","fixed","overflowX","width","scrollable","scrollbarWidth","scrollButtons","scrollButtonsDesktop","breakpoints","down","indicator","Tabs","forwardRef","props","ref","ariaLabel","ariaLabelledBy","action","_props$centered","childrenProp","children","classes","className","_props$component","component","Component","_props$indicatorColor","indicatorColor","onChange","_props$orientation","orientation","_props$ScrollButtonCo","ScrollButtonComponent","_props$scrollButtons","selectionFollowsFocus","_props$TabIndicatorPr","TabIndicatorProps","TabScrollButtonProps","_props$textColor","textColor","value","_props$variant","variant","other","isRtl","direction","scrollStart","start","end","clientSize","size","process","env","NODE_ENV","console","error","_React$useState","useState","mounted","setMounted","_React$useState2","indicatorStyle","setIndicatorStyle","_React$useState3","displayScroll","setDisplayScroll","_React$useState4","marginBottom","scrollerStyle","setScrollerStyle","valueToIndex","Map","tabsRef","useRef","tabListRef","getTabsMeta","tabsNode","current","tabsMeta","rect","getBoundingClientRect","clientWidth","scrollLeft","scrollTop","scrollLeftNormalized","scrollWidth","top","bottom","left","right","tabMeta","_children","length","tab","get","concat","keys","Array","from","join","updateIndicatorState","_newIndicatorStyle","_getTabsMeta","startValue","correction","newIndicatorStyle","isNaN","dStart","Math","abs","dSize","scroll","scrollValue","moveTabsScroll","delta","handleStartScrollClick","handleEndScrollClick","handleScrollbarSizeChange","useCallback","scrollbarHeight","getConditionalElements","conditionalElements","scrollbarSizeListener","createElement","scrollButtonsActive","showScrollButtons","scrollButtonStart","onClick","disabled","scrollButtonEnd","scrollSelectedIntoView","_getTabsMeta2","nextScrollStart","_nextScrollStart","updateScrollButtonState","_tabsRef$current","scrollHeight","clientHeight","showStartScroll","showEndScroll","useEffect","handleResize","win","addEventListener","clear","removeEventListener","handleTabsScroll","useImperativeHandle","updateIndicator","updateScrollButtons","color","style","childIndex","Children","map","child","isValidElement","childValue","undefined","set","selected","cloneElement","fullWidth","handleKeyDown","event","target","role","getAttribute","newFocusTarget","previousItemKey","nextItemKey","key","previousElementSibling","lastChild","nextElementSibling","firstChild","focus","preventDefault","onScroll","onKeyDown","propTypes","string","bool","node","object","elementType","oneOf","func","any","name"],"mappings":"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","sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { refType } from '@material-ui/utils';\nimport debounce from '../utils/debounce';\nimport ownerWindow from '../utils/ownerWindow';\nimport { getNormalizedScrollLeft, detectScrollType } from '../utils/scrollLeft';\nimport animate from '../internal/animate';\nimport ScrollbarSize from './ScrollbarSize';\nimport withStyles from '../styles/withStyles';\nimport TabIndicator from './TabIndicator';\nimport TabScrollButton from '../TabScrollButton';\nimport useEventCallback from '../utils/useEventCallback';\nimport useTheme from '../styles/useTheme';\nexport var styles = function styles(theme) {\n  return {\n    /* Styles applied to the root element. */\n    root: {\n      overflow: 'hidden',\n      minHeight: 48,\n      WebkitOverflowScrolling: 'touch',\n      // Add iOS momentum scrolling.\n      display: 'flex'\n    },\n\n    /* Styles applied to the root element if `orientation=\"vertical\"`. */\n    vertical: {\n      flexDirection: 'column'\n    },\n\n    /* Styles applied to the flex container element. */\n    flexContainer: {\n      display: 'flex'\n    },\n\n    /* Styles applied to the flex container element if `orientation=\"vertical\"`. */\n    flexContainerVertical: {\n      flexDirection: 'column'\n    },\n\n    /* Styles applied to the flex container element if `centered={true}` & `!variant=\"scrollable\"`. */\n    centered: {\n      justifyContent: 'center'\n    },\n\n    /* Styles applied to the tablist element. */\n    scroller: {\n      position: 'relative',\n      display: 'inline-block',\n      flex: '1 1 auto',\n      whiteSpace: 'nowrap'\n    },\n\n    /* Styles applied to the tablist element if `!variant=\"scrollable\"`\b\b\b. */\n    fixed: {\n      overflowX: 'hidden',\n      width: '100%'\n    },\n\n    /* Styles applied to the tablist element if `variant=\"scrollable\"`. */\n    scrollable: {\n      overflowX: 'scroll',\n      // Hide dimensionless scrollbar on MacOS\n      scrollbarWidth: 'none',\n      // Firefox\n      '&::-webkit-scrollbar': {\n        display: 'none' // Safari + Chrome\n\n      }\n    },\n\n    /* Styles applied to the `ScrollButtonComponent` component. */\n    scrollButtons: {},\n\n    /* Styles applied to the `ScrollButtonComponent` component if `scrollButtons=\"auto\"` or scrollButtons=\"desktop\"`. */\n    scrollButtonsDesktop: _defineProperty({}, theme.breakpoints.down('xs'), {\n      display: 'none'\n    }),\n\n    /* Styles applied to the `TabIndicator` component. */\n    indicator: {}\n  };\n};\nvar Tabs = /*#__PURE__*/React.forwardRef(function Tabs(props, ref) {\n  var ariaLabel = props['aria-label'],\n      ariaLabelledBy = props['aria-labelledby'],\n      action = props.action,\n      _props$centered = props.centered,\n      centered = _props$centered === void 0 ? false : _props$centered,\n      childrenProp = props.children,\n      classes = props.classes,\n      className = props.className,\n      _props$component = props.component,\n      Component = _props$component === void 0 ? 'div' : _props$component,\n      _props$indicatorColor = props.indicatorColor,\n      indicatorColor = _props$indicatorColor === void 0 ? 'secondary' : _props$indicatorColor,\n      onChange = props.onChange,\n      _props$orientation = props.orientation,\n      orientation = _props$orientation === void 0 ? 'horizontal' : _props$orientation,\n      _props$ScrollButtonCo = props.ScrollButtonComponent,\n      ScrollButtonComponent = _props$ScrollButtonCo === void 0 ? TabScrollButton : _props$ScrollButtonCo,\n      _props$scrollButtons = props.scrollButtons,\n      scrollButtons = _props$scrollButtons === void 0 ? 'auto' : _props$scrollButtons,\n      selectionFollowsFocus = props.selectionFollowsFocus,\n      _props$TabIndicatorPr = props.TabIndicatorProps,\n      TabIndicatorProps = _props$TabIndicatorPr === void 0 ? {} : _props$TabIndicatorPr,\n      TabScrollButtonProps = props.TabScrollButtonProps,\n      _props$textColor = props.textColor,\n      textColor = _props$textColor === void 0 ? 'inherit' : _props$textColor,\n      value = props.value,\n      _props$variant = props.variant,\n      variant = _props$variant === void 0 ? 'standard' : _props$variant,\n      other = _objectWithoutProperties(props, [\"aria-label\", \"aria-labelledby\", \"action\", \"centered\", \"children\", \"classes\", \"className\", \"component\", \"indicatorColor\", \"onChange\", \"orientation\", \"ScrollButtonComponent\", \"scrollButtons\", \"selectionFollowsFocus\", \"TabIndicatorProps\", \"TabScrollButtonProps\", \"textColor\", \"value\", \"variant\"]);\n\n  var theme = useTheme();\n  var scrollable = variant === 'scrollable';\n  var isRtl = theme.direction === 'rtl';\n  var vertical = orientation === 'vertical';\n  var scrollStart = vertical ? 'scrollTop' : 'scrollLeft';\n  var start = vertical ? 'top' : 'left';\n  var end = vertical ? 'bottom' : 'right';\n  var clientSize = vertical ? 'clientHeight' : 'clientWidth';\n  var size = vertical ? 'height' : 'width';\n\n  if (process.env.NODE_ENV !== 'production') {\n    if (centered && scrollable) {\n      console.error('Material-UI: You can not use the `centered={true}` and `variant=\"scrollable\"` properties ' + 'at the same time on a `Tabs` component.');\n    }\n  }\n\n  var _React$useState = React.useState(false),\n      mounted = _React$useState[0],\n      setMounted = _React$useState[1];\n\n  var _React$useState2 = React.useState({}),\n      indicatorStyle = _React$useState2[0],\n      setIndicatorStyle = _React$useState2[1];\n\n  var _React$useState3 = React.useState({\n    start: false,\n    end: false\n  }),\n      displayScroll = _React$useState3[0],\n      setDisplayScroll = _React$useState3[1];\n\n  var _React$useState4 = React.useState({\n    overflow: 'hidden',\n    marginBottom: null\n  }),\n      scrollerStyle = _React$useState4[0],\n      setScrollerStyle = _React$useState4[1];\n\n  var valueToIndex = new Map();\n  var tabsRef = React.useRef(null);\n  var tabListRef = React.useRef(null);\n\n  var getTabsMeta = function getTabsMeta() {\n    var tabsNode = tabsRef.current;\n    var tabsMeta;\n\n    if (tabsNode) {\n      var rect = tabsNode.getBoundingClientRect(); // create a new object with ClientRect class props + scrollLeft\n\n      tabsMeta = {\n        clientWidth: tabsNode.clientWidth,\n        scrollLeft: tabsNode.scrollLeft,\n        scrollTop: tabsNode.scrollTop,\n        scrollLeftNormalized: getNormalizedScrollLeft(tabsNode, theme.direction),\n        scrollWidth: tabsNode.scrollWidth,\n        top: rect.top,\n        bottom: rect.bottom,\n        left: rect.left,\n        right: rect.right\n      };\n    }\n\n    var tabMeta;\n\n    if (tabsNode && value !== false) {\n      var _children = tabListRef.current.children;\n\n      if (_children.length > 0) {\n        var tab = _children[valueToIndex.get(value)];\n\n        if (process.env.NODE_ENV !== 'production') {\n          if (!tab) {\n            console.error([\"Material-UI: The value provided to the Tabs component is invalid.\", \"None of the Tabs' children match with `\".concat(value, \"`.\"), valueToIndex.keys ? \"You can provide one of the following values: \".concat(Array.from(valueToIndex.keys()).join(', '), \".\") : null].join('\\n'));\n          }\n        }\n\n        tabMeta = tab ? tab.getBoundingClientRect() : null;\n      }\n    }\n\n    return {\n      tabsMeta: tabsMeta,\n      tabMeta: tabMeta\n    };\n  };\n\n  var updateIndicatorState = useEventCallback(function () {\n    var _newIndicatorStyle;\n\n    var _getTabsMeta = getTabsMeta(),\n        tabsMeta = _getTabsMeta.tabsMeta,\n        tabMeta = _getTabsMeta.tabMeta;\n\n    var startValue = 0;\n\n    if (tabMeta && tabsMeta) {\n      if (vertical) {\n        startValue = tabMeta.top - tabsMeta.top + tabsMeta.scrollTop;\n      } else {\n        var correction = isRtl ? tabsMeta.scrollLeftNormalized + tabsMeta.clientWidth - tabsMeta.scrollWidth : tabsMeta.scrollLeft;\n        startValue = tabMeta.left - tabsMeta.left + correction;\n      }\n    }\n\n    var newIndicatorStyle = (_newIndicatorStyle = {}, _defineProperty(_newIndicatorStyle, start, startValue), _defineProperty(_newIndicatorStyle, size, tabMeta ? tabMeta[size] : 0), _newIndicatorStyle);\n\n    if (isNaN(indicatorStyle[start]) || isNaN(indicatorStyle[size])) {\n      setIndicatorStyle(newIndicatorStyle);\n    } else {\n      var dStart = Math.abs(indicatorStyle[start] - newIndicatorStyle[start]);\n      var dSize = Math.abs(indicatorStyle[size] - newIndicatorStyle[size]);\n\n      if (dStart >= 1 || dSize >= 1) {\n        setIndicatorStyle(newIndicatorStyle);\n      }\n    }\n  });\n\n  var scroll = function scroll(scrollValue) {\n    animate(scrollStart, tabsRef.current, scrollValue);\n  };\n\n  var moveTabsScroll = function moveTabsScroll(delta) {\n    var scrollValue = tabsRef.current[scrollStart];\n\n    if (vertical) {\n      scrollValue += delta;\n    } else {\n      scrollValue += delta * (isRtl ? -1 : 1); // Fix for Edge\n\n      scrollValue *= isRtl && detectScrollType() === 'reverse' ? -1 : 1;\n    }\n\n    scroll(scrollValue);\n  };\n\n  var handleStartScrollClick = function handleStartScrollClick() {\n    moveTabsScroll(-tabsRef.current[clientSize]);\n  };\n\n  var handleEndScrollClick = function handleEndScrollClick() {\n    moveTabsScroll(tabsRef.current[clientSize]);\n  };\n\n  var handleScrollbarSizeChange = React.useCallback(function (scrollbarHeight) {\n    setScrollerStyle({\n      overflow: null,\n      marginBottom: -scrollbarHeight\n    });\n  }, []);\n\n  var getConditionalElements = function getConditionalElements() {\n    var conditionalElements = {};\n    conditionalElements.scrollbarSizeListener = scrollable ? /*#__PURE__*/React.createElement(ScrollbarSize, {\n      className: classes.scrollable,\n      onChange: handleScrollbarSizeChange\n    }) : null;\n    var scrollButtonsActive = displayScroll.start || displayScroll.end;\n    var showScrollButtons = scrollable && (scrollButtons === 'auto' && scrollButtonsActive || scrollButtons === 'desktop' || scrollButtons === 'on');\n    conditionalElements.scrollButtonStart = showScrollButtons ? /*#__PURE__*/React.createElement(ScrollButtonComponent, _extends({\n      orientation: orientation,\n      direction: isRtl ? 'right' : 'left',\n      onClick: handleStartScrollClick,\n      disabled: !displayScroll.start,\n      className: clsx(classes.scrollButtons, scrollButtons !== 'on' && classes.scrollButtonsDesktop)\n    }, TabScrollButtonProps)) : null;\n    conditionalElements.scrollButtonEnd = showScrollButtons ? /*#__PURE__*/React.createElement(ScrollButtonComponent, _extends({\n      orientation: orientation,\n      direction: isRtl ? 'left' : 'right',\n      onClick: handleEndScrollClick,\n      disabled: !displayScroll.end,\n      className: clsx(classes.scrollButtons, scrollButtons !== 'on' && classes.scrollButtonsDesktop)\n    }, TabScrollButtonProps)) : null;\n    return conditionalElements;\n  };\n\n  var scrollSelectedIntoView = useEventCallback(function () {\n    var _getTabsMeta2 = getTabsMeta(),\n        tabsMeta = _getTabsMeta2.tabsMeta,\n        tabMeta = _getTabsMeta2.tabMeta;\n\n    if (!tabMeta || !tabsMeta) {\n      return;\n    }\n\n    if (tabMeta[start] < tabsMeta[start]) {\n      // left side of button is out of view\n      var nextScrollStart = tabsMeta[scrollStart] + (tabMeta[start] - tabsMeta[start]);\n      scroll(nextScrollStart);\n    } else if (tabMeta[end] > tabsMeta[end]) {\n      // right side of button is out of view\n      var _nextScrollStart = tabsMeta[scrollStart] + (tabMeta[end] - tabsMeta[end]);\n\n      scroll(_nextScrollStart);\n    }\n  });\n  var updateScrollButtonState = useEventCallback(function () {\n    if (scrollable && scrollButtons !== 'off') {\n      var _tabsRef$current = tabsRef.current,\n          scrollTop = _tabsRef$current.scrollTop,\n          scrollHeight = _tabsRef$current.scrollHeight,\n          clientHeight = _tabsRef$current.clientHeight,\n          scrollWidth = _tabsRef$current.scrollWidth,\n          clientWidth = _tabsRef$current.clientWidth;\n      var showStartScroll;\n      var showEndScroll;\n\n      if (vertical) {\n        showStartScroll = scrollTop > 1;\n        showEndScroll = scrollTop < scrollHeight - clientHeight - 1;\n      } else {\n        var scrollLeft = getNormalizedScrollLeft(tabsRef.current, theme.direction); // use 1 for the potential rounding error with browser zooms.\n\n        showStartScroll = isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n        showEndScroll = !isRtl ? scrollLeft < scrollWidth - clientWidth - 1 : scrollLeft > 1;\n      }\n\n      if (showStartScroll !== displayScroll.start || showEndScroll !== displayScroll.end) {\n        setDisplayScroll({\n          start: showStartScroll,\n          end: showEndScroll\n        });\n      }\n    }\n  });\n  React.useEffect(function () {\n    var handleResize = debounce(function () {\n      updateIndicatorState();\n      updateScrollButtonState();\n    });\n    var win = ownerWindow(tabsRef.current);\n    win.addEventListener('resize', handleResize);\n    return function () {\n      handleResize.clear();\n      win.removeEventListener('resize', handleResize);\n    };\n  }, [updateIndicatorState, updateScrollButtonState]);\n  var handleTabsScroll = React.useCallback(debounce(function () {\n    updateScrollButtonState();\n  }));\n  React.useEffect(function () {\n    return function () {\n      handleTabsScroll.clear();\n    };\n  }, [handleTabsScroll]);\n  React.useEffect(function () {\n    setMounted(true);\n  }, []);\n  React.useEffect(function () {\n    updateIndicatorState();\n    updateScrollButtonState();\n  });\n  React.useEffect(function () {\n    scrollSelectedIntoView();\n  }, [scrollSelectedIntoView, indicatorStyle]);\n  React.useImperativeHandle(action, function () {\n    return {\n      updateIndicator: updateIndicatorState,\n      updateScrollButtons: updateScrollButtonState\n    };\n  }, [updateIndicatorState, updateScrollButtonState]);\n  var indicator = /*#__PURE__*/React.createElement(TabIndicator, _extends({\n    className: classes.indicator,\n    orientation: orientation,\n    color: indicatorColor\n  }, TabIndicatorProps, {\n    style: _extends({}, indicatorStyle, TabIndicatorProps.style)\n  }));\n  var childIndex = 0;\n  var children = React.Children.map(childrenProp, function (child) {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      return null;\n    }\n\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"Material-UI: The Tabs component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n      }\n    }\n\n    var childValue = child.props.value === undefined ? childIndex : child.props.value;\n    valueToIndex.set(childValue, childIndex);\n    var selected = childValue === value;\n    childIndex += 1;\n    return /*#__PURE__*/React.cloneElement(child, {\n      fullWidth: variant === 'fullWidth',\n      indicator: selected && !mounted && indicator,\n      selected: selected,\n      selectionFollowsFocus: selectionFollowsFocus,\n      onChange: onChange,\n      textColor: textColor,\n      value: childValue\n    });\n  });\n\n  var handleKeyDown = function handleKeyDown(event) {\n    var target = event.target; // 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\n    var role = target.getAttribute('role');\n\n    if (role !== 'tab') {\n      return;\n    }\n\n    var newFocusTarget = null;\n    var previousItemKey = orientation !== \"vertical\" ? 'ArrowLeft' : 'ArrowUp';\n    var nextItemKey = orientation !== \"vertical\" ? 'ArrowRight' : 'ArrowDown';\n\n    if (orientation !== \"vertical\" && theme.direction === 'rtl') {\n      // swap previousItemKey with nextItemKey\n      previousItemKey = 'ArrowRight';\n      nextItemKey = 'ArrowLeft';\n    }\n\n    switch (event.key) {\n      case previousItemKey:\n        newFocusTarget = target.previousElementSibling || tabListRef.current.lastChild;\n        break;\n\n      case nextItemKey:\n        newFocusTarget = target.nextElementSibling || tabListRef.current.firstChild;\n        break;\n\n      case 'Home':\n        newFocusTarget = tabListRef.current.firstChild;\n        break;\n\n      case 'End':\n        newFocusTarget = tabListRef.current.lastChild;\n        break;\n\n      default:\n        break;\n    }\n\n    if (newFocusTarget !== null) {\n      newFocusTarget.focus();\n      event.preventDefault();\n    }\n  };\n\n  var conditionalElements = getConditionalElements();\n  return /*#__PURE__*/React.createElement(Component, _extends({\n    className: clsx(classes.root, className, vertical && classes.vertical),\n    ref: ref\n  }, other), conditionalElements.scrollButtonStart, conditionalElements.scrollbarSizeListener, /*#__PURE__*/React.createElement(\"div\", {\n    className: clsx(classes.scroller, scrollable ? classes.scrollable : classes.fixed),\n    style: scrollerStyle,\n    ref: tabsRef,\n    onScroll: handleTabsScroll\n  }, /*#__PURE__*/React.createElement(\"div\", {\n    \"aria-label\": ariaLabel,\n    \"aria-labelledby\": ariaLabelledBy,\n    className: clsx(classes.flexContainer, vertical && classes.flexContainerVertical, centered && !scrollable && classes.centered),\n    onKeyDown: handleKeyDown,\n    ref: tabListRef,\n    role: \"tablist\"\n  }, children), mounted && indicator), conditionalElements.scrollButtonEnd);\n});\nprocess.env.NODE_ENV !== \"production\" ? Tabs.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\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  /**\n   * The label for the Tabs as a string.\n   */\n  'aria-label': PropTypes.string,\n\n  /**\n   * An id or list of ids separated by a space that label the Tabs.\n   */\n  'aria-labelledby': PropTypes.string,\n\n  /**\n   * If `true`, the tabs will be centered.\n   * This property is intended for large views.\n   */\n  centered: PropTypes.bool,\n\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n\n  /**\n   * Override or extend the styles applied to the component.\n   * See [CSS API](#css) below for more details.\n   */\n  classes: PropTypes.object,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\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\n  /* @typescript-to-proptypes-ignore */\n  .elementType,\n\n  /**\n   * Determines the color of the indicator.\n   */\n  indicatorColor: PropTypes.oneOf(['primary', 'secondary']),\n\n  /**\n   * Callback fired when the value changes.\n   *\n   * @param {object} event The event source of the callback\n   * @param {any} value We default to the index of the child (number)\n   */\n  onChange: PropTypes.func,\n\n  /**\n   * The tabs orientation (layout flow direction).\n   */\n  orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n\n  /**\n   * The component used to render the scroll buttons.\n   */\n  ScrollButtonComponent: PropTypes.elementType,\n\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   * - `desktop` will only present them on medium and larger viewports.\n   * - `on` will always present them.\n   * - `off` will never present them.\n   */\n  scrollButtons: PropTypes.oneOf(['auto', 'desktop', 'off', 'on']),\n\n  /**\n   * If `true` the selected tab changes on focus. Otherwise it only\n   * changes on activation.\n   */\n  selectionFollowsFocus: PropTypes.bool,\n\n  /**\n   * Props applied to the tab indicator element.\n   */\n  TabIndicatorProps: PropTypes.object,\n\n  /**\n   * Props applied to the [`TabScrollButton`](/api/tab-scroll-button/) element.\n   */\n  TabScrollButtonProps: PropTypes.object,\n\n  /**\n   * Determines the color of the `Tab`.\n   */\n  textColor: PropTypes.oneOf(['inherit', 'primary', 'secondary']),\n\n  /**\n   * The value of the currently selected `Tab`.\n   * If you don't want any selected `Tab`, you can set this property to `false`.\n   */\n  value: PropTypes.any,\n\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   */\n  variant: PropTypes.oneOf(['fullWidth', 'scrollable', 'standard'])\n} : void 0;\nexport default withStyles(styles, {\n  name: 'MuiTabs'\n})(Tabs);"]},"metadata":{},"sourceType":"module"}