{"version":3,"file":"MenuList.mjs","sources":["../../../../../../../../node_modules/@mui/material/MenuList/MenuList.js"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { isFragment } from 'react-is';\nimport PropTypes from 'prop-types';\nimport ownerDocument from \"../utils/ownerDocument.js\";\nimport List from \"../List/index.js\";\nimport getScrollbarSize from \"../utils/getScrollbarSize.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useEnhancedEffect from \"../utils/useEnhancedEffect.js\";\nimport { ownerWindow } from \"../utils/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nfunction nextItem(list, item, disableListWrap) {\n  if (list === item) {\n    return list.firstChild;\n  }\n  if (item && item.nextElementSibling) {\n    return item.nextElementSibling;\n  }\n  return disableListWrap ? null : list.firstChild;\n}\nfunction previousItem(list, item, disableListWrap) {\n  if (list === item) {\n    return disableListWrap ? list.firstChild : list.lastChild;\n  }\n  if (item && item.previousElementSibling) {\n    return item.previousElementSibling;\n  }\n  return disableListWrap ? null : list.lastChild;\n}\nfunction textCriteriaMatches(nextFocus, textCriteria) {\n  if (textCriteria === undefined) {\n    return true;\n  }\n  let text = nextFocus.innerText;\n  if (text === undefined) {\n    // jsdom doesn't support innerText\n    text = nextFocus.textContent;\n  }\n  text = text.trim().toLowerCase();\n  if (text.length === 0) {\n    return false;\n  }\n  if (textCriteria.repeating) {\n    return text[0] === textCriteria.keys[0];\n  }\n  return text.startsWith(textCriteria.keys.join(''));\n}\nfunction moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {\n  let wrappedOnce = false;\n  let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);\n  while (nextFocus) {\n    // Prevent infinite loop.\n    if (nextFocus === list.firstChild) {\n      if (wrappedOnce) {\n        return false;\n      }\n      wrappedOnce = true;\n    }\n\n    // Same logic as useAutocomplete.js\n    const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute('aria-disabled') === 'true';\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 true;\n    }\n  }\n  return false;\n}\n\n/**\n * A permanently displayed menu following https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/.\n * It's exposed to help customization of the [`Menu`](/material-ui/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 */\nconst MenuList = /*#__PURE__*/React.forwardRef(function MenuList(props, ref) {\n  const {\n    // private\n    // eslint-disable-next-line react/prop-types\n    actions,\n    autoFocus = false,\n    autoFocusItem = false,\n    children,\n    className,\n    disabledItemsFocusable = false,\n    disableListWrap = false,\n    onKeyDown,\n    variant = 'selectedMenu',\n    ...other\n  } = props;\n  const listRef = React.useRef(null);\n  const textCriteriaRef = React.useRef({\n    keys: [],\n    repeating: true,\n    previousKeyMatched: true,\n    lastTime: null\n  });\n  useEnhancedEffect(() => {\n    if (autoFocus) {\n      listRef.current.focus();\n    }\n  }, [autoFocus]);\n  React.useImperativeHandle(actions, () => ({\n    adjustStyleForScrollbar: (containerElement, {\n      direction\n    }) => {\n      // Let's ignore that piece of logic if users are already overriding the width\n      // of the menu.\n      const noExplicitWidth = !listRef.current.style.width;\n      if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {\n        const scrollbarSize = `${getScrollbarSize(ownerWindow(containerElement))}px`;\n        listRef.current.style[direction === 'rtl' ? 'paddingLeft' : 'paddingRight'] = scrollbarSize;\n        listRef.current.style.width = `calc(100% + ${scrollbarSize})`;\n      }\n      return listRef.current;\n    }\n  }), []);\n  const handleKeyDown = event => {\n    const list = listRef.current;\n    const key = event.key;\n    const isModifierKeyPressed = event.ctrlKey || event.metaKey || event.altKey;\n    if (isModifierKeyPressed) {\n      if (onKeyDown) {\n        onKeyDown(event);\n      }\n      return;\n    }\n\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    const currentFocus = ownerDocument(list).activeElement;\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      const criteria = textCriteriaRef.current;\n      const lowerKey = key.toLowerCase();\n      const currTime = performance.now();\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      criteria.lastTime = currTime;\n      criteria.keys.push(lowerKey);\n      const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches(currentFocus, criteria);\n      if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {\n        event.preventDefault();\n      } else {\n        criteria.previousKeyMatched = false;\n      }\n    }\n    if (onKeyDown) {\n      onKeyDown(event);\n    }\n  };\n  const handleRef = useForkRef(listRef, ref);\n\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  let activeItemIndex = -1;\n  // 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  React.Children.forEach(children, (child, index) => {\n    if (! /*#__PURE__*/React.isValidElement(child)) {\n      if (activeItemIndex === index) {\n        activeItemIndex += 1;\n        if (activeItemIndex >= children.length) {\n          // there are no focusable items within the list.\n          activeItemIndex = -1;\n        }\n      }\n      return;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (isFragment(child)) {\n        console.error([\"MUI: The Menu component doesn't accept a Fragment as a child.\", 'Consider providing an array instead.'].join('\\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    if (activeItemIndex === index && (child.props.disabled || child.props.muiSkipListHighlight || child.type.muiSkipListHighlight)) {\n      activeItemIndex += 1;\n      if (activeItemIndex >= children.length) {\n        // there are no focusable items within the list.\n        activeItemIndex = -1;\n      }\n    }\n  });\n  const items = React.Children.map(children, (child, index) => {\n    if (index === activeItemIndex) {\n      const newChildProps = {};\n      if (autoFocusItem) {\n        newChildProps.autoFocus = true;\n      }\n      if (child.props.tabIndex === undefined && variant === 'selectedMenu') {\n        newChildProps.tabIndex = 0;\n      }\n      return /*#__PURE__*/React.cloneElement(child, newChildProps);\n    }\n    return child;\n  });\n  return /*#__PURE__*/_jsx(List, {\n    role: \"menu\",\n    ref: handleRef,\n    className: className,\n    onKeyDown: handleKeyDown,\n    tabIndex: autoFocus ? 0 : -1,\n    ...other,\n    children: items\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? MenuList.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   * If `true`, will focus the `[role=\"menu\"]` container and move into tab order.\n   * @default false\n   */\n  autoFocus: PropTypes.bool,\n  /**\n   * If `true`, will focus the first menuitem if `variant=\"menu\"` or selected item\n   * if `variant=\"selectedMenu\"`.\n   * @default false\n   */\n  autoFocusItem: PropTypes.bool,\n  /**\n   * MenuList contents, normally `MenuItem`s.\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * If `true`, will allow focus on disabled items.\n   * @default false\n   */\n  disabledItemsFocusable: PropTypes.bool,\n  /**\n   * If `true`, the menu items will not wrap focus.\n   * @default false\n   */\n  disableListWrap: PropTypes.bool,\n  /**\n   * @ignore\n   */\n  onKeyDown: PropTypes.func,\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   * @default 'selectedMenu'\n   */\n  variant: PropTypes.oneOf(['menu', 'selectedMenu'])\n} : void 0;\nexport default MenuList;"],"names":["React.forwardRef","React.useRef","React.useImperativeHandle","React.Children","React.isValidElement","React.cloneElement","_jsx"],"mappings":"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","x_google_ignoreList":[0]}