{"ast":null,"code":"import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport ownerDocument from '../utils/ownerDocument';\nimport List from '../List';\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport useForkRef from '../utils/useForkRef';\n\nfunction nextItem(list, item, disableListWrap) {\n if (list === item) {\n return list.firstChild;\n }\n\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n\n return disableListWrap ? null : list.firstChild;\n}\n\nfunction previousItem(list, item, disableListWrap) {\n if (list === item) {\n return disableListWrap ? list.firstChild : list.lastChild;\n }\n\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n\n return disableListWrap ? null : list.lastChild;\n}\n\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n if (textCriteria === undefined) {\n return true;\n }\n\n var text = nextFocus.innerText;\n\n if (text === undefined) {\n // jsdom doesn't support innerText\n text = nextFocus.textContent;\n }\n\n text = text.trim().toLowerCase();\n\n if (text.length === 0) {\n return false;\n }\n\n if (textCriteria.repeating) {\n return text[0] === textCriteria.keys[0];\n }\n\n return text.indexOf(textCriteria.keys.join('')) === 0;\n}\n\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n var wrappedOnce = false;\n var nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return;\n }\n\n wrappedOnce = true;\n } // Same logic as useAutocomplete.js\n\n\n var nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n\n if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n } else {\n nextFocus.focus();\n return;\n }\n }\n}\n\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * A permanently displayed menu following https://www.w3.org/TR/wai-aria-practices/#menubutton.\n * It's exposed to help customization of the [`Menu`](/api/menu/) component. If you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\n\nvar MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n var actions = props.actions,\n _props$autoFocus = props.autoFocus,\n autoFocus = _props$autoFocus === void 0 ? false : _props$autoFocus,\n _props$autoFocusItem = props.autoFocusItem,\n autoFocusItem = _props$autoFocusItem === void 0 ? false : _props$autoFocusItem,\n children = props.children,\n className = props.className,\n _props$disabledItemsF = props.disabledItemsFocusable,\n disabledItemsFocusable = _props$disabledItemsF === void 0 ? false : _props$disabledItemsF,\n _props$disableListWra = props.disableListWrap,\n disableListWrap = _props$disableListWra === void 0 ? false : _props$disableListWra,\n onKeyDown = props.onKeyDown,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'selectedMenu' : _props$variant,\n other = _objectWithoutProperties(props, [\"actions\", \"autoFocus\", \"autoFocusItem\", \"children\", \"className\", \"disabledItemsFocusable\", \"disableListWrap\", \"onKeyDown\", \"variant\"]);\n\n var listRef = React.useRef(null);\n var textCriteriaRef = React.useRef({\n keys: [],\n repeating: true,\n previousKeyMatched: true,\n lastTime: null\n });\n useEnhancedEffect(function () {\n if (autoFocus) {\n listRef.current.focus();\n }\n }, [autoFocus]);\n React.useImperativeHandle(actions, function () {\n return {\n adjustStyleForScrollbar: function adjustStyleForScrollbar(containerElement, theme) {\n // Let's ignore that piece of logic if users are already overriding the width\n // of the menu.\n var noExplicitWidth = !listRef.current.style.width;\n\n if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n var scrollbarSize = \"\".concat(getScrollbarSize(true), \"px\");\n listRef.current.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n listRef.current.style.width = \"calc(100% + \".concat(scrollbarSize, \")\");\n }\n\n return listRef.current;\n }\n };\n }, []);\n\n var handleKeyDown = function handleKeyDown(event) {\n var list = listRef.current;\n var key = event.key;\n /**\n * @type {Element} - will always be defined since we are in a keydown handler\n * attached to an element. A keydown event is either dispatched to the activeElement\n * or document.body or document.documentElement. Only the first case will\n * trigger this specific handler.\n */\n\n var currentFocus = ownerDocument(list).activeElement;\n\n if (key === 'ArrowDown') {\n // Prevent scroll of the page\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'ArrowUp') {\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key === 'Home') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'End') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key.length === 1) {\n var criteria = textCriteriaRef.current;\n var lowerKey = key.toLowerCase();\n var currTime = performance.now();\n\n if (criteria.keys.length > 0) {\n // Reset\n if (currTime - criteria.lastTime > 500) {\n criteria.keys = [];\n criteria.repeating = true;\n criteria.previousKeyMatched = true;\n } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n criteria.repeating = false;\n }\n }\n\n criteria.lastTime = currTime;\n criteria.keys.push(lowerKey);\n var keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n\n if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n event.preventDefault();\n } else {\n criteria.previousKeyMatched = false;\n }\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n listRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRef = useForkRef(handleOwnRef, ref);\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n\n var activeItemIndex = -1; // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n\n React.Children.forEach(children, function (child, index) {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n });\n var items = React.Children.map(children, function (child, index) {\n if (index === activeItemIndex) {\n var newChildProps = {};\n\n if (autoFocusItem) {\n newChildProps.autoFocus = true;\n }\n\n if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n newChildProps.tabIndex = 0;\n }\n\n return /*#__PURE__*/React.cloneElement(child, newChildProps);\n }\n\n return child;\n });\n return /*#__PURE__*/React.createElement(List, _extends({\n role: \"menu\",\n ref: handleRef,\n className: className,\n onKeyDown: handleKeyDown,\n tabIndex: autoFocus ? 0 : -1\n }, other), items);\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.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 * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n * if `variant=\"selectedMenu\"`.\n */\n autoFocusItem: PropTypes.bool,\n\n /**\n * MenuList contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, will allow focus on disabled items.\n */\n disabledItemsFocusable: PropTypes.bool,\n\n /**\n * If `true`, the menu items will not wrap focus.\n */\n disableListWrap: PropTypes.bool,\n\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n * and the vertical alignment relative to the anchor element.\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;","map":{"version":3,"sources":["/app/node_modules/@material-ui/core/esm/MenuList/MenuList.js"],"names":["_extends","_objectWithoutProperties","React","isFragment","PropTypes","ReactDOM","ownerDocument","List","getScrollbarSize","useForkRef","nextItem","list","item","disableListWrap","firstChild","nextElementSibling","previousItem","lastChild","previousElementSibling","textCriteriaMatches","nextFocus","textCriteria","undefined","text","innerText","textContent","trim","toLowerCase","length","repeating","keys","indexOf","join","moveFocus","currentFocus","disabledItemsFocusable","traversalFunction","wrappedOnce","nextFocusDisabled","disabled","getAttribute","hasAttribute","focus","useEnhancedEffect","window","useEffect","useLayoutEffect","MenuList","forwardRef","props","ref","actions","_props$autoFocus","autoFocus","_props$autoFocusItem","autoFocusItem","children","className","_props$disabledItemsF","_props$disableListWra","onKeyDown","_props$variant","variant","other","listRef","useRef","textCriteriaRef","previousKeyMatched","lastTime","current","useImperativeHandle","adjustStyleForScrollbar","containerElement","theme","noExplicitWidth","style","width","clientHeight","scrollbarSize","concat","direction","handleKeyDown","event","key","activeElement","preventDefault","criteria","lowerKey","currTime","performance","now","push","keepFocusOnCurrent","handleOwnRef","useCallback","instance","findDOMNode","handleRef","activeItemIndex","Children","forEach","child","index","isValidElement","process","env","NODE_ENV","console","error","selected","items","map","newChildProps","tabIndex","cloneElement","createElement","role","propTypes","bool","node","string","func","oneOf"],"mappings":"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","sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport * as ReactDOM from 'react-dom';\nimport ownerDocument from '../utils/ownerDocument';\nimport List from '../List';\nimport getScrollbarSize from '../utils/getScrollbarSize';\nimport useForkRef from '../utils/useForkRef';\n\nfunction nextItem(list, item, disableListWrap) {\n if (list === item) {\n return list.firstChild;\n }\n\n if (item && item.nextElementSibling) {\n return item.nextElementSibling;\n }\n\n return disableListWrap ? null : list.firstChild;\n}\n\nfunction previousItem(list, item, disableListWrap) {\n if (list === item) {\n return disableListWrap ? list.firstChild : list.lastChild;\n }\n\n if (item && item.previousElementSibling) {\n return item.previousElementSibling;\n }\n\n return disableListWrap ? null : list.lastChild;\n}\n\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n if (textCriteria === undefined) {\n return true;\n }\n\n var text = nextFocus.innerText;\n\n if (text === undefined) {\n // jsdom doesn't support innerText\n text = nextFocus.textContent;\n }\n\n text = text.trim().toLowerCase();\n\n if (text.length === 0) {\n return false;\n }\n\n if (textCriteria.repeating) {\n return text[0] === textCriteria.keys[0];\n }\n\n return text.indexOf(textCriteria.keys.join('')) === 0;\n}\n\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n var wrappedOnce = false;\n var nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n\n while (nextFocus) {\n // Prevent infinite loop.\n if (nextFocus === list.firstChild) {\n if (wrappedOnce) {\n return;\n }\n\n wrappedOnce = true;\n } // Same logic as useAutocomplete.js\n\n\n var nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\n\n if (!nextFocus.hasAttribute('tabindex') || !textCriteriaMatches(nextFocus, textCriteria) || nextFocusDisabled) {\n // Move to the next element.\n nextFocus = traversalFunction(list, nextFocus, disableListWrap);\n } else {\n nextFocus.focus();\n return;\n }\n }\n}\n\nvar useEnhancedEffect = typeof window === 'undefined' ? React.useEffect : React.useLayoutEffect;\n/**\n * A permanently displayed menu following https://www.w3.org/TR/wai-aria-practices/#menubutton.\n * It's exposed to help customization of the [`Menu`](/api/menu/) component. If you\n * use it separately you need to move focus into the component manually. Once\n * the focus is placed inside the component it is fully keyboard accessible.\n */\n\nvar MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n var actions = props.actions,\n _props$autoFocus = props.autoFocus,\n autoFocus = _props$autoFocus === void 0 ? false : _props$autoFocus,\n _props$autoFocusItem = props.autoFocusItem,\n autoFocusItem = _props$autoFocusItem === void 0 ? false : _props$autoFocusItem,\n children = props.children,\n className = props.className,\n _props$disabledItemsF = props.disabledItemsFocusable,\n disabledItemsFocusable = _props$disabledItemsF === void 0 ? false : _props$disabledItemsF,\n _props$disableListWra = props.disableListWrap,\n disableListWrap = _props$disableListWra === void 0 ? false : _props$disableListWra,\n onKeyDown = props.onKeyDown,\n _props$variant = props.variant,\n variant = _props$variant === void 0 ? 'selectedMenu' : _props$variant,\n other = _objectWithoutProperties(props, [\"actions\", \"autoFocus\", \"autoFocusItem\", \"children\", \"className\", \"disabledItemsFocusable\", \"disableListWrap\", \"onKeyDown\", \"variant\"]);\n\n var listRef = React.useRef(null);\n var textCriteriaRef = React.useRef({\n keys: [],\n repeating: true,\n previousKeyMatched: true,\n lastTime: null\n });\n useEnhancedEffect(function () {\n if (autoFocus) {\n listRef.current.focus();\n }\n }, [autoFocus]);\n React.useImperativeHandle(actions, function () {\n return {\n adjustStyleForScrollbar: function adjustStyleForScrollbar(containerElement, theme) {\n // Let's ignore that piece of logic if users are already overriding the width\n // of the menu.\n var noExplicitWidth = !listRef.current.style.width;\n\n if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n var scrollbarSize = \"\".concat(getScrollbarSize(true), \"px\");\n listRef.current.style[theme.direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n listRef.current.style.width = \"calc(100% + \".concat(scrollbarSize, \")\");\n }\n\n return listRef.current;\n }\n };\n }, []);\n\n var handleKeyDown = function handleKeyDown(event) {\n var list = listRef.current;\n var key = event.key;\n /**\n * @type {Element} - will always be defined since we are in a keydown handler\n * attached to an element. A keydown event is either dispatched to the activeElement\n * or document.body or document.documentElement. Only the first case will\n * trigger this specific handler.\n */\n\n var currentFocus = ownerDocument(list).activeElement;\n\n if (key === 'ArrowDown') {\n // Prevent scroll of the page\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'ArrowUp') {\n event.preventDefault();\n moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key === 'Home') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);\n } else if (key === 'End') {\n event.preventDefault();\n moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);\n } else if (key.length === 1) {\n var criteria = textCriteriaRef.current;\n var lowerKey = key.toLowerCase();\n var currTime = performance.now();\n\n if (criteria.keys.length > 0) {\n // Reset\n if (currTime - criteria.lastTime > 500) {\n criteria.keys = [];\n criteria.repeating = true;\n criteria.previousKeyMatched = true;\n } else if (criteria.repeating && lowerKey !== criteria.keys[0]) {\n criteria.repeating = false;\n }\n }\n\n criteria.lastTime = currTime;\n criteria.keys.push(lowerKey);\n var keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n\n if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n event.preventDefault();\n } else {\n criteria.previousKeyMatched = false;\n }\n }\n\n if (onKeyDown) {\n onKeyDown(event);\n }\n };\n\n var handleOwnRef = React.useCallback(function (instance) {\n // #StrictMode ready\n listRef.current = ReactDOM.findDOMNode(instance);\n }, []);\n var handleRef = useForkRef(handleOwnRef, ref);\n /**\n * the index of the item should receive focus\n * in a `variant=\"selectedMenu\"` it's the first `selected` item\n * otherwise it's the very first item.\n */\n\n var activeItemIndex = -1; // since we inject focus related props into children we have to do a lookahead\n // to check if there is a `selected` item. We're looking for the last `selected`\n // item and use the first valid item as a fallback\n\n React.Children.forEach(children, function (child, index) {\n if (! /*#__PURE__*/React.isValidElement(child)) {\n return;\n }\n\n if (process.env.NODE_ENV !== 'production') {\n if (isFragment(child)) {\n console.error([\"Material-UI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\n'));\n }\n }\n\n if (!child.props.disabled) {\n if (variant === 'selectedMenu' && child.props.selected) {\n activeItemIndex = index;\n } else if (activeItemIndex === -1) {\n activeItemIndex = index;\n }\n }\n });\n var items = React.Children.map(children, function (child, index) {\n if (index === activeItemIndex) {\n var newChildProps = {};\n\n if (autoFocusItem) {\n newChildProps.autoFocus = true;\n }\n\n if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n newChildProps.tabIndex = 0;\n }\n\n return /*#__PURE__*/React.cloneElement(child, newChildProps);\n }\n\n return child;\n });\n return /*#__PURE__*/React.createElement(List, _extends({\n role: \"menu\",\n ref: handleRef,\n className: className,\n onKeyDown: handleKeyDown,\n tabIndex: autoFocus ? 0 : -1\n }, other), items);\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.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 * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n */\n autoFocus: PropTypes.bool,\n\n /**\n * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n * if `variant=\"selectedMenu\"`.\n */\n autoFocusItem: PropTypes.bool,\n\n /**\n * MenuList contents, normally `MenuItem`s.\n */\n children: PropTypes.node,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, will allow focus on disabled items.\n */\n disabledItemsFocusable: PropTypes.bool,\n\n /**\n * If `true`, the menu items will not wrap focus.\n */\n disableListWrap: PropTypes.bool,\n\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n\n /**\n * The variant to use. Use `menu` to prevent selected items from impacting the initial focus\n * and the vertical alignment relative to the anchor element.\n */\n variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;"]},"metadata":{},"sourceType":"module"}