{"version":3,"file":"combineHooksSlotProps-fc048422.cjs","sources":["../../node_modules/@mui/base/useList/listActions.types.js","../../node_modules/@mui/base/useList/listReducer.js","../../node_modules/@mui/base/utils/useControllableReducer.js","../../node_modules/@mui/base/utils/useTextNavigation.js","../../node_modules/@mui/base/useList/useList.js","../../node_modules/@mui/base/useList/ListContext.js","../../node_modules/@mui/base/useList/useListItem.js","../../node_modules/@mui/base/useCompound/useCompoundParent.js","../../node_modules/@mui/base/useCompound/useCompoundItem.js","../../node_modules/@mui/base/utils/combineHooksSlotProps.js"],"sourcesContent":["export const ListActionTypes = {\n  blur: 'list:blur',\n  focus: 'list:focus',\n  itemClick: 'list:itemClick',\n  itemHover: 'list:itemHover',\n  itemsChange: 'list:itemsChange',\n  keyDown: 'list:keyDown',\n  resetHighlight: 'list:resetHighlight',\n  textNavigation: 'list:textNavigation',\n  clearSelection: 'list:clearSelection'\n};\n\n/**\n * A union of all standard actions that can be dispatched to the list reducer.\n */","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport { ListActionTypes } from './listActions.types';\n/**\n * Looks up the next valid item to highlight within the list.\n *\n * @param currentIndex The index of the start of the search.\n * @param lookupDirection Whether to look for the next or previous item.\n * @param items The array of items to search.\n * @param includeDisabledItems Whether to include disabled items in the search.\n * @param isItemDisabled A function that determines whether an item is disabled.\n * @param wrapAround Whether to wrap around the list when searching.\n * @returns The index of the next valid item to highlight or -1 if no valid item is found.\n */\nfunction findValidItemToHighlight(currentIndex, lookupDirection, items, includeDisabledItems, isItemDisabled, wrapAround) {\n  if (items.length === 0 || !includeDisabledItems && items.every((item, itemIndex) => isItemDisabled(item, itemIndex))) {\n    return -1;\n  }\n  let nextFocus = currentIndex;\n  for (;;) {\n    // No valid items found\n    if (!wrapAround && lookupDirection === 'next' && nextFocus === items.length || !wrapAround && lookupDirection === 'previous' && nextFocus === -1) {\n      return -1;\n    }\n    const nextFocusDisabled = includeDisabledItems ? false : isItemDisabled(items[nextFocus], nextFocus);\n    if (nextFocusDisabled) {\n      nextFocus += lookupDirection === 'next' ? 1 : -1;\n      if (wrapAround) {\n        nextFocus = (nextFocus + items.length) % items.length;\n      }\n    } else {\n      return nextFocus;\n    }\n  }\n}\n\n/**\n * Gets the next item to highlight based on the current highlighted item and the search direction.\n *\n * @param previouslyHighlightedValue The item from which to start the search for the next candidate.\n * @param offset The offset from the previously highlighted item to search for the next candidate or a special named value ('reset', 'start', 'end').\n * @param context The list action context.\n *\n * @returns The next item to highlight or null if no item is valid.\n */\nexport function moveHighlight(previouslyHighlightedValue, offset, context) {\n  var _items$nextIndex;\n  const {\n    items,\n    isItemDisabled,\n    disableListWrap,\n    disabledItemsFocusable,\n    itemComparer,\n    focusManagement\n  } = context;\n\n  // TODO: make this configurable\n  // The always should be an item highlighted when focus is managed by the DOM\n  // so that it's accessible by the `tab` key.\n  const defaultHighlightedIndex = focusManagement === 'DOM' ? 0 : -1;\n  const maxIndex = items.length - 1;\n  const previouslyHighlightedIndex = previouslyHighlightedValue == null ? -1 : items.findIndex(item => itemComparer(item, previouslyHighlightedValue));\n  let nextIndexCandidate;\n  let lookupDirection;\n  let wrapAround = !disableListWrap;\n  switch (offset) {\n    case 'reset':\n      if (defaultHighlightedIndex === -1) {\n        return null;\n      }\n      nextIndexCandidate = 0;\n      lookupDirection = 'next';\n      wrapAround = false;\n      break;\n    case 'start':\n      nextIndexCandidate = 0;\n      lookupDirection = 'next';\n      wrapAround = false;\n      break;\n    case 'end':\n      nextIndexCandidate = maxIndex;\n      lookupDirection = 'previous';\n      wrapAround = false;\n      break;\n    default:\n      {\n        const newIndex = previouslyHighlightedIndex + offset;\n        if (newIndex < 0) {\n          if (!wrapAround && previouslyHighlightedIndex !== -1 || Math.abs(offset) > 1) {\n            nextIndexCandidate = 0;\n            lookupDirection = 'next';\n          } else {\n            nextIndexCandidate = maxIndex;\n            lookupDirection = 'previous';\n          }\n        } else if (newIndex > maxIndex) {\n          if (!wrapAround || Math.abs(offset) > 1) {\n            nextIndexCandidate = maxIndex;\n            lookupDirection = 'previous';\n          } else {\n            nextIndexCandidate = 0;\n            lookupDirection = 'next';\n          }\n        } else {\n          nextIndexCandidate = newIndex;\n          lookupDirection = offset >= 0 ? 'next' : 'previous';\n        }\n      }\n  }\n  const nextIndex = findValidItemToHighlight(nextIndexCandidate, lookupDirection, items, disabledItemsFocusable, isItemDisabled, wrapAround);\n\n  // If there are no valid items to highlight, return the previously highlighted item (if it's still valid).\n  if (nextIndex === -1 && previouslyHighlightedValue !== null && !isItemDisabled(previouslyHighlightedValue, previouslyHighlightedIndex)) {\n    return previouslyHighlightedValue;\n  }\n  return (_items$nextIndex = items[nextIndex]) != null ? _items$nextIndex : null;\n}\n\n/**\n * Toggles the selection of an item.\n *\n * @param item Item to toggle.\n * @param selectedValues Already selected items.\n * @param selectionMode The number of items that can be simultanously selected.\n * @param itemComparer A custom item comparer function.\n *\n * @returns The new array of selected items.\n */\nexport function toggleSelection(item, selectedValues, selectionMode, itemComparer) {\n  if (selectionMode === 'none') {\n    return [];\n  }\n  if (selectionMode === 'single') {\n    // if the item to select has already been selected, return the original array\n    if (itemComparer(selectedValues[0], item)) {\n      return selectedValues;\n    }\n    return [item];\n  }\n\n  // The toggled item is selected; remove it from the selection.\n  if (selectedValues.some(sv => itemComparer(sv, item))) {\n    return selectedValues.filter(sv => !itemComparer(sv, item));\n  }\n\n  // The toggled item is not selected - add it to the selection.\n  return [...selectedValues, item];\n}\n\n/**\n * Handles item selection in a list.\n *\n * @param item - The item to be selected.\n * @param state - The current state of the list.\n * @param context - The context of the list action.\n * @returns The new state of the list after the item has been selected, or the original state if the item is disabled.\n */\nexport function handleItemSelection(item, state, context) {\n  const {\n    itemComparer,\n    isItemDisabled,\n    selectionMode,\n    items\n  } = context;\n  const {\n    selectedValues\n  } = state;\n  const itemIndex = items.findIndex(i => itemComparer(item, i));\n  if (isItemDisabled(item, itemIndex)) {\n    return state;\n  }\n\n  // if the item is already selected, remove it from the selection, otherwise add it\n  const newSelectedValues = toggleSelection(item, selectedValues, selectionMode, itemComparer);\n  return _extends({}, state, {\n    selectedValues: newSelectedValues,\n    highlightedValue: item\n  });\n}\nfunction handleKeyDown(key, state, context) {\n  const previouslySelectedValue = state.highlightedValue;\n  const {\n    orientation,\n    pageSize\n  } = context;\n  switch (key) {\n    case 'Home':\n      return _extends({}, state, {\n        highlightedValue: moveHighlight(previouslySelectedValue, 'start', context)\n      });\n    case 'End':\n      return _extends({}, state, {\n        highlightedValue: moveHighlight(previouslySelectedValue, 'end', context)\n      });\n    case 'PageUp':\n      return _extends({}, state, {\n        highlightedValue: moveHighlight(previouslySelectedValue, -pageSize, context)\n      });\n    case 'PageDown':\n      return _extends({}, state, {\n        highlightedValue: moveHighlight(previouslySelectedValue, pageSize, context)\n      });\n    case 'ArrowUp':\n      if (orientation !== 'vertical') {\n        break;\n      }\n      return _extends({}, state, {\n        highlightedValue: moveHighlight(previouslySelectedValue, -1, context)\n      });\n    case 'ArrowDown':\n      if (orientation !== 'vertical') {\n        break;\n      }\n      return _extends({}, state, {\n        highlightedValue: moveHighlight(previouslySelectedValue, 1, context)\n      });\n    case 'ArrowLeft':\n      {\n        if (orientation === 'vertical') {\n          break;\n        }\n        const offset = orientation === 'horizontal-ltr' ? -1 : 1;\n        return _extends({}, state, {\n          highlightedValue: moveHighlight(previouslySelectedValue, offset, context)\n        });\n      }\n    case 'ArrowRight':\n      {\n        if (orientation === 'vertical') {\n          break;\n        }\n        const offset = orientation === 'horizontal-ltr' ? 1 : -1;\n        return _extends({}, state, {\n          highlightedValue: moveHighlight(previouslySelectedValue, offset, context)\n        });\n      }\n    case 'Enter':\n    case ' ':\n      if (state.highlightedValue === null) {\n        return state;\n      }\n      return handleItemSelection(state.highlightedValue, state, context);\n    default:\n      break;\n  }\n  return state;\n}\nfunction handleBlur(state, context) {\n  if (context.focusManagement === 'DOM') {\n    return state;\n  }\n  return _extends({}, state, {\n    highlightedValue: null\n  });\n}\nfunction textCriteriaMatches(nextFocus, searchString, stringifyItem) {\n  var _stringifyItem;\n  const text = (_stringifyItem = stringifyItem(nextFocus)) == null ? void 0 : _stringifyItem.trim().toLowerCase();\n  if (!text || text.length === 0) {\n    // Make item not navigable if stringification fails or results in empty string.\n    return false;\n  }\n  return text.indexOf(searchString) === 0;\n}\nfunction handleTextNavigation(state, searchString, context) {\n  const {\n    items,\n    isItemDisabled,\n    disabledItemsFocusable,\n    getItemAsString\n  } = context;\n  const startWithCurrentItem = searchString.length > 1;\n  let nextItem = startWithCurrentItem ? state.highlightedValue : moveHighlight(state.highlightedValue, 1, context);\n  for (let index = 0; index < items.length; index += 1) {\n    // Return un-mutated state if looped back to the currently highlighted value\n    if (!nextItem || !startWithCurrentItem && state.highlightedValue === nextItem) {\n      return state;\n    }\n    if (textCriteriaMatches(nextItem, searchString, getItemAsString) && (!isItemDisabled(nextItem, items.indexOf(nextItem)) || disabledItemsFocusable)) {\n      // The nextItem is the element to be highlighted\n      return _extends({}, state, {\n        highlightedValue: nextItem\n      });\n    }\n    // Move to the next element.\n    nextItem = moveHighlight(nextItem, 1, context);\n  }\n\n  // No item matches the text search criteria\n  return state;\n}\nfunction handleItemsChange(items, previousItems, state, context) {\n  var _state$selectedValues;\n  const {\n    itemComparer,\n    focusManagement\n  } = context;\n  let newHighlightedValue = null;\n  if (state.highlightedValue != null) {\n    var _items$find;\n    newHighlightedValue = (_items$find = items.find(item => itemComparer(item, state.highlightedValue))) != null ? _items$find : null;\n  } else if (focusManagement === 'DOM' && previousItems.length === 0) {\n    newHighlightedValue = moveHighlight(null, 'reset', context);\n  }\n\n  // exclude selected values that are no longer in the items list\n  const selectedValues = (_state$selectedValues = state.selectedValues) != null ? _state$selectedValues : [];\n  const newSelectedValues = selectedValues.filter(selectedValue => items.some(item => itemComparer(item, selectedValue)));\n  return _extends({}, state, {\n    highlightedValue: newHighlightedValue,\n    selectedValues: newSelectedValues\n  });\n}\nfunction handleResetHighlight(state, context) {\n  return _extends({}, state, {\n    highlightedValue: moveHighlight(null, 'reset', context)\n  });\n}\nfunction handleClearSelection(state, context) {\n  return _extends({}, state, {\n    selectedValues: [],\n    highlightedValue: moveHighlight(null, 'reset', context)\n  });\n}\nexport function listReducer(state, action) {\n  const {\n    type,\n    context\n  } = action;\n  switch (type) {\n    case ListActionTypes.keyDown:\n      return handleKeyDown(action.key, state, context);\n    case ListActionTypes.itemClick:\n      return handleItemSelection(action.item, state, context);\n    case ListActionTypes.blur:\n      return handleBlur(state, context);\n    case ListActionTypes.textNavigation:\n      return handleTextNavigation(state, action.searchString, context);\n    case ListActionTypes.itemsChange:\n      return handleItemsChange(action.items, action.previousItems, state, context);\n    case ListActionTypes.resetHighlight:\n      return handleResetHighlight(state, context);\n    case ListActionTypes.clearSelection:\n      return handleClearSelection(state, context);\n    default:\n      return state;\n  }\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nfunction areEqual(a, b) {\n  return a === b;\n}\nconst EMPTY_OBJECT = {};\nconst NOOP = () => {};\n\n/**\n * Gets the current state augmented with controlled values from the outside.\n * If a state item has a corresponding controlled value, it will be used instead of the internal state.\n */\nfunction getControlledState(internalState, controlledProps) {\n  const augmentedState = _extends({}, internalState);\n  Object.keys(controlledProps).forEach(key => {\n    if (controlledProps[key] !== undefined) {\n      augmentedState[key] = controlledProps[key];\n    }\n  });\n  return augmentedState;\n}\n/**\n * Defines an effect that compares the next state with the previous state and calls\n * the `onStateChange` callback if the state has changed.\n * The comparison is done based on the `stateComparers` parameter.\n */\nfunction useStateChangeDetection(parameters) {\n  const {\n    nextState,\n    initialState,\n    stateComparers,\n    onStateChange,\n    controlledProps,\n    lastActionRef\n  } = parameters;\n  const internalPreviousStateRef = React.useRef(initialState);\n  React.useEffect(() => {\n    if (lastActionRef.current === null) {\n      // Detect changes only if an action has been dispatched.\n      return;\n    }\n    const previousState = getControlledState(internalPreviousStateRef.current, controlledProps);\n    Object.keys(nextState).forEach(key => {\n      var _stateComparers$key;\n      // go through all state keys and compare them with the previous state\n      const stateComparer = (_stateComparers$key = stateComparers[key]) != null ? _stateComparers$key : areEqual;\n      const nextStateItem = nextState[key];\n      const previousStateItem = previousState[key];\n      if (previousStateItem == null && nextStateItem != null || previousStateItem != null && nextStateItem == null || previousStateItem != null && nextStateItem != null && !stateComparer(nextStateItem, previousStateItem)) {\n        var _event, _type;\n        onStateChange == null || onStateChange((_event = lastActionRef.current.event) != null ? _event : null, key, nextStateItem, (_type = lastActionRef.current.type) != null ? _type : '', nextState);\n      }\n    });\n    internalPreviousStateRef.current = nextState;\n    lastActionRef.current = null;\n  }, [internalPreviousStateRef, nextState, lastActionRef, onStateChange, stateComparers, controlledProps]);\n}\n\n/**\n * The alternative to `React.useReducer` that lets you control the state from the outside.\n *\n * It can be used in an uncontrolled mode, similar to `React.useReducer`, or in a controlled mode, when the state is controlled by the props.\n * It also supports partially controlled state, when some state items are controlled and some are not.\n *\n * The controlled state items are provided via the `controlledProps` parameter.\n * When a reducer action is dispatched, the internal state is updated with the new values.\n * A change event (`onStateChange`) is then triggered (for each changed state item) if the new state is different from the previous state.\n * This event can be used to update the controlled values.\n *\n * The comparison of the previous and next states is done using the `stateComparers` parameter.\n * If a state item has a corresponding comparer, it will be used to determine if the state has changed.\n * This is useful when the state item is an object and you want to compare only a subset of its properties or if it's an array and you want to compare its contents.\n *\n * An additional feature is the `actionContext` parameter. It allows you to add additional properties to every action object,\n * similarly to how React context is implicitly available to every component.\n *\n * @template State - The type of the state calculated by the reducer.\n * @template Action - The type of the actions that can be dispatched.\n * @template ActionContext - The type of the additional properties that will be added to every action object.\n *\n * @ignore - internal hook.\n */\nexport function useControllableReducer(parameters) {\n  const lastActionRef = React.useRef(null);\n  const {\n    reducer,\n    initialState,\n    controlledProps = EMPTY_OBJECT,\n    stateComparers = EMPTY_OBJECT,\n    onStateChange = NOOP,\n    actionContext,\n    componentName = ''\n  } = parameters;\n  const controlledPropsRef = React.useRef(controlledProps);\n  if (process.env.NODE_ENV !== 'production') {\n    // eslint-disable-next-line react-hooks/rules-of-hooks\n    React.useEffect(() => {\n      Object.keys(controlledProps).forEach(key => {\n        if (controlledPropsRef.current[key] !== undefined && controlledProps[key] === undefined) {\n          console.error(`useControllableReducer: ${componentName ? `The ${componentName} component` : 'A component'} is changing a controlled prop to be uncontrolled: ${key}`);\n        }\n        if (controlledPropsRef.current[key] === undefined && controlledProps[key] !== undefined) {\n          console.error(`useControllableReducer: ${componentName ? `The ${componentName} component` : 'A component'} is changing an uncontrolled prop to be controlled: ${key}`);\n        }\n      });\n    }, [controlledProps, componentName]);\n  }\n\n  // The reducer that is passed to React.useReducer is wrapped with a function that augments the state with controlled values.\n  const reducerWithControlledState = React.useCallback((state, action) => {\n    lastActionRef.current = action;\n    const controlledState = getControlledState(state, controlledProps);\n    const newState = reducer(controlledState, action);\n    return newState;\n  }, [controlledProps, reducer]);\n  const [nextState, dispatch] = React.useReducer(reducerWithControlledState, initialState);\n\n  // The action that is passed to dispatch is augmented with the actionContext.\n  const dispatchWithContext = React.useCallback(action => {\n    dispatch(_extends({}, action, {\n      context: actionContext\n    }));\n  }, [actionContext]);\n  useStateChangeDetection({\n    nextState,\n    initialState,\n    stateComparers: stateComparers != null ? stateComparers : EMPTY_OBJECT,\n    onStateChange: onStateChange != null ? onStateChange : NOOP,\n    controlledProps,\n    lastActionRef\n  });\n  return [getControlledState(nextState, controlledProps), dispatchWithContext];\n}","'use client';\n\nimport * as React from 'react';\nconst TEXT_NAVIGATION_RESET_TIMEOUT = 500; // milliseconds\n\n/**\n * @ignore - internal hook.\n *\n * Provides a handler for text navigation.\n * It's used to navigate a list by typing the first letters of the options.\n *\n * @param callback A function to be called when the navigation should be performed.\n * @returns A function to be used in a keydown event handler.\n */\nexport function useTextNavigation(callback) {\n  const textCriteriaRef = React.useRef({\n    searchString: '',\n    lastTime: null\n  });\n  return React.useCallback(event => {\n    if (event.key.length === 1 && event.key !== ' ') {\n      const textCriteria = textCriteriaRef.current;\n      const lowerKey = event.key.toLowerCase();\n      const currentTime = performance.now();\n      if (textCriteria.searchString.length > 0 && textCriteria.lastTime && currentTime - textCriteria.lastTime > TEXT_NAVIGATION_RESET_TIMEOUT) {\n        textCriteria.searchString = lowerKey;\n      } else if (textCriteria.searchString.length !== 1 || lowerKey !== textCriteria.searchString) {\n        // If there is just one character in the buffer and the key is the same, do not append\n        textCriteria.searchString += lowerKey;\n      }\n      textCriteria.lastTime = currentTime;\n      callback(textCriteria.searchString, event);\n    }\n  }, [callback]);\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_useForkRef as useForkRef } from '@mui/utils';\nimport { ListActionTypes } from './listActions.types';\nimport { listReducer as defaultReducer } from './listReducer';\nimport { useControllableReducer } from '../utils/useControllableReducer';\nimport { areArraysEqual } from '../utils/areArraysEqual';\nimport { useTextNavigation } from '../utils/useTextNavigation';\nimport { extractEventHandlers } from '../utils/extractEventHandlers';\nconst EMPTY_OBJECT = {};\nconst NOOP = () => {};\nconst defaultItemComparer = (optionA, optionB) => optionA === optionB;\nconst defaultIsItemDisabled = () => false;\nconst defaultItemStringifier = item => typeof item === 'string' ? item : String(item);\nconst defaultGetInitialState = () => ({\n  highlightedValue: null,\n  selectedValues: []\n});\n\n/**\n * The useList is a lower-level utility that is used to build list-like components.\n * It's used to manage the state of the list and its items.\n *\n * Supports highlighting a single item and selecting an arbitrary number of items.\n *\n * The state of the list is managed by a controllable reducer - that is a reducer that can have its state\n * controlled from outside.\n *\n * By default, the state consists of `selectedValues` and `highlightedValue` but can be extended by the caller of the hook.\n * Also the actions that can be dispatched and the reducer function can be defined externally.\n *\n * @template ItemValue The type of the item values.\n * @template State The type of the list state. This should be a subtype of `ListState<ItemValue>`.\n * @template CustomAction The type of the actions that can be dispatched (besides the standard ListAction).\n * @template CustomActionContext The shape of additional properties that will be added to actions when dispatched.\n *\n * @ignore - internal hook.\n */\nfunction useList(params) {\n  const {\n    controlledProps = EMPTY_OBJECT,\n    disabledItemsFocusable = false,\n    disableListWrap = false,\n    focusManagement = 'activeDescendant',\n    getInitialState = defaultGetInitialState,\n    getItemDomElement,\n    getItemId,\n    isItemDisabled = defaultIsItemDisabled,\n    rootRef: externalListRef,\n    onStateChange = NOOP,\n    items,\n    itemComparer = defaultItemComparer,\n    getItemAsString = defaultItemStringifier,\n    onChange,\n    onHighlightChange,\n    onItemsChange,\n    orientation = 'vertical',\n    pageSize = 5,\n    reducerActionContext = EMPTY_OBJECT,\n    selectionMode = 'single',\n    stateReducer: externalReducer,\n    componentName = 'useList'\n  } = params;\n  if (process.env.NODE_ENV !== 'production') {\n    if (focusManagement === 'DOM' && getItemDomElement == null) {\n      throw new Error('useList: The `getItemDomElement` prop is required when using the `DOM` focus management.');\n    }\n    if (focusManagement === 'activeDescendant' && getItemId == null) {\n      throw new Error('useList: The `getItemId` prop is required when using the `activeDescendant` focus management.');\n    }\n  }\n  const listRef = React.useRef(null);\n  const handleRef = useForkRef(externalListRef, listRef);\n  const handleHighlightChange = React.useCallback((event, value, reason) => {\n    onHighlightChange == null || onHighlightChange(event, value, reason);\n    if (focusManagement === 'DOM' && value != null && (reason === ListActionTypes.itemClick || reason === ListActionTypes.keyDown || reason === ListActionTypes.textNavigation)) {\n      var _getItemDomElement;\n      getItemDomElement == null || (_getItemDomElement = getItemDomElement(value)) == null || _getItemDomElement.focus();\n    }\n  }, [getItemDomElement, onHighlightChange, focusManagement]);\n  const stateComparers = React.useMemo(() => ({\n    highlightedValue: itemComparer,\n    selectedValues: (valuesArray1, valuesArray2) => areArraysEqual(valuesArray1, valuesArray2, itemComparer)\n  }), [itemComparer]);\n\n  // This gets called whenever a reducer changes the state.\n  const handleStateChange = React.useCallback((event, field, value, reason, state) => {\n    onStateChange == null || onStateChange(event, field, value, reason, state);\n    switch (field) {\n      case 'highlightedValue':\n        handleHighlightChange(event, value, reason);\n        break;\n      case 'selectedValues':\n        onChange == null || onChange(event, value, reason);\n        break;\n      default:\n        break;\n    }\n  }, [handleHighlightChange, onChange, onStateChange]);\n\n  // The following object is added to each action when it's dispatched.\n  // It's accessible in the reducer via the `action.context` field.\n  const listActionContext = React.useMemo(() => {\n    return {\n      disabledItemsFocusable,\n      disableListWrap,\n      focusManagement,\n      isItemDisabled,\n      itemComparer,\n      items,\n      getItemAsString,\n      onHighlightChange: handleHighlightChange,\n      orientation,\n      pageSize,\n      selectionMode,\n      stateComparers\n    };\n  }, [disabledItemsFocusable, disableListWrap, focusManagement, isItemDisabled, itemComparer, items, getItemAsString, handleHighlightChange, orientation, pageSize, selectionMode, stateComparers]);\n  const initialState = getInitialState();\n  const reducer = externalReducer != null ? externalReducer : defaultReducer;\n  const actionContext = React.useMemo(() => _extends({}, reducerActionContext, listActionContext), [reducerActionContext, listActionContext]);\n  const [state, dispatch] = useControllableReducer({\n    reducer,\n    actionContext,\n    initialState: initialState,\n    controlledProps,\n    stateComparers,\n    onStateChange: handleStateChange,\n    componentName\n  });\n  const {\n    highlightedValue,\n    selectedValues\n  } = state;\n  const handleTextNavigation = useTextNavigation((searchString, event) => dispatch({\n    type: ListActionTypes.textNavigation,\n    event,\n    searchString\n  }));\n  const previousItems = React.useRef([]);\n  React.useEffect(() => {\n    // Whenever the `items` object changes, we need to determine if the actual items changed.\n    // If they did, we need to dispatch an `itemsChange` action, so the selected/highlighted state is updated.\n    if (areArraysEqual(previousItems.current, items, itemComparer)) {\n      return;\n    }\n    dispatch({\n      type: ListActionTypes.itemsChange,\n      event: null,\n      items,\n      previousItems: previousItems.current\n    });\n    previousItems.current = items;\n    onItemsChange == null || onItemsChange(items);\n  }, [items, itemComparer, dispatch, onItemsChange]);\n  const createHandleKeyDown = externalHandlers => event => {\n    var _externalHandlers$onK;\n    (_externalHandlers$onK = externalHandlers.onKeyDown) == null || _externalHandlers$onK.call(externalHandlers, event);\n    if (event.defaultMuiPrevented) {\n      return;\n    }\n    const keysToPreventDefault = ['Home', 'End', 'PageUp', 'PageDown'];\n    if (orientation === 'vertical') {\n      keysToPreventDefault.push('ArrowUp', 'ArrowDown');\n    } else {\n      keysToPreventDefault.push('ArrowLeft', 'ArrowRight');\n    }\n    if (focusManagement === 'activeDescendant') {\n      // When the child element is focused using the activeDescendant attribute,\n      // the list handles keyboard events on its behalf.\n      // We have to `preventDefault()` is this case to prevent the browser from\n      // scrolling the view when space is pressed or submitting forms when enter is pressed.\n      keysToPreventDefault.push(' ', 'Enter');\n    }\n    if (keysToPreventDefault.includes(event.key)) {\n      event.preventDefault();\n    }\n    dispatch({\n      type: ListActionTypes.keyDown,\n      key: event.key,\n      event\n    });\n    handleTextNavigation(event);\n  };\n  const createHandleBlur = externalHandlers => event => {\n    var _externalHandlers$onB, _listRef$current;\n    (_externalHandlers$onB = externalHandlers.onBlur) == null || _externalHandlers$onB.call(externalHandlers, event);\n    if (event.defaultMuiPrevented) {\n      return;\n    }\n    if ((_listRef$current = listRef.current) != null && _listRef$current.contains(event.relatedTarget)) {\n      // focus remains within the list\n      return;\n    }\n    dispatch({\n      type: ListActionTypes.blur,\n      event\n    });\n  };\n  const getRootProps = (externalProps = {}) => {\n    const externalEventHandlers = extractEventHandlers(externalProps);\n    return _extends({}, externalProps, {\n      'aria-activedescendant': focusManagement === 'activeDescendant' && highlightedValue != null ? getItemId(highlightedValue) : undefined,\n      tabIndex: focusManagement === 'DOM' ? -1 : 0,\n      ref: handleRef\n    }, externalEventHandlers, {\n      onBlur: createHandleBlur(externalEventHandlers),\n      onKeyDown: createHandleKeyDown(externalEventHandlers)\n    });\n  };\n  const getItemState = React.useCallback(item => {\n    const selected = (selectedValues != null ? selectedValues : []).some(value => value != null && itemComparer(item, value));\n    const highlighted = highlightedValue != null && itemComparer(item, highlightedValue);\n    const focusable = focusManagement === 'DOM';\n    return {\n      focusable,\n      highlighted,\n      selected\n    };\n  }, [itemComparer, selectedValues, highlightedValue, focusManagement]);\n  const contextValue = React.useMemo(() => ({\n    dispatch,\n    getItemState\n  }), [dispatch, getItemState]);\n  React.useDebugValue({\n    state\n  });\n  return {\n    contextValue,\n    dispatch,\n    getRootProps,\n    rootRef: handleRef,\n    state\n  };\n}\nexport { useList };","import * as React from 'react';\nexport const ListContext = /*#__PURE__*/React.createContext(null);\nif (process.env.NODE_ENV !== 'production') {\n  ListContext.displayName = 'ListContext';\n}","'use client';\n\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { extractEventHandlers } from '../utils/extractEventHandlers';\nimport { ListActionTypes } from './listActions.types';\nimport { ListContext } from './ListContext';\n\n/**\n * Contains the logic for an item of a list-like component (e.g. Select, Menu, etc.).\n * It handles the item's mouse events and tab index.\n *\n * @template ItemValue The type of the item's value. This should be consistent with the type of useList's `items` parameter.\n * @ignore - internal hook.\n */\nexport function useListItem(parameters) {\n  const {\n    handlePointerOverEvents = false,\n    item\n  } = parameters;\n  const listContext = React.useContext(ListContext);\n  if (!listContext) {\n    throw new Error('useListItem must be used within a ListProvider');\n  }\n  const {\n    dispatch,\n    getItemState\n  } = listContext;\n  const {\n    highlighted,\n    selected,\n    focusable\n  } = getItemState(item);\n  const createHandleClick = React.useCallback(externalHandlers => event => {\n    var _externalHandlers$onC;\n    (_externalHandlers$onC = externalHandlers.onClick) == null || _externalHandlers$onC.call(externalHandlers, event);\n    if (event.defaultPrevented) {\n      return;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (item === undefined) {\n        throw new Error(['MUI: The `item` provided to useListItem() is undefined.', 'This should happen only during server-side rendering under React 17.'].join('\\n'));\n      }\n    }\n    dispatch({\n      type: ListActionTypes.itemClick,\n      item: item,\n      event\n    });\n  }, [dispatch, item]);\n  const createHandlePointerOver = React.useCallback(externalHandlers => event => {\n    var _externalHandlers$onM;\n    (_externalHandlers$onM = externalHandlers.onMouseOver) == null || _externalHandlers$onM.call(externalHandlers, event);\n    if (event.defaultPrevented) {\n      return;\n    }\n    if (process.env.NODE_ENV !== 'production') {\n      if (item === undefined) {\n        throw new Error(['MUI: The `item` provided to useListItem() is undefined.', 'This should happen only during server-side rendering under React 17.'].join('\\n'));\n      }\n    }\n    dispatch({\n      type: ListActionTypes.itemHover,\n      item: item,\n      event\n    });\n  }, [dispatch, item]);\n  let tabIndex;\n  if (focusable) {\n    tabIndex = highlighted ? 0 : -1;\n  }\n  const getRootProps = (externalProps = {}) => {\n    const externalEventHandlers = extractEventHandlers(externalProps);\n    return _extends({}, externalProps, {\n      onClick: createHandleClick(externalEventHandlers),\n      onPointerOver: handlePointerOverEvents ? createHandlePointerOver(externalEventHandlers) : undefined,\n      tabIndex\n    });\n  };\n  return {\n    getRootProps,\n    highlighted,\n    selected\n  };\n}","'use client';\n\nimport * as React from 'react';\nexport const CompoundComponentContext = /*#__PURE__*/React.createContext(null);\nCompoundComponentContext.displayName = 'CompoundComponentContext';\n/**\n * Sorts the subitems by their position in the DOM.\n */\nfunction sortSubitems(subitems) {\n  const subitemsArray = Array.from(subitems.keys()).map(key => {\n    const subitem = subitems.get(key);\n    return {\n      key,\n      subitem\n    };\n  });\n  subitemsArray.sort((a, b) => {\n    const aNode = a.subitem.ref.current;\n    const bNode = b.subitem.ref.current;\n    if (aNode === null || bNode === null || aNode === bNode) {\n      return 0;\n    }\n\n    // eslint-disable-next-line no-bitwise\n    return aNode.compareDocumentPosition(bNode) & Node.DOCUMENT_POSITION_PRECEDING ? 1 : -1;\n  });\n  return new Map(subitemsArray.map(item => [item.key, item.subitem]));\n}\n\n/**\n * Provides a way for a component to know about its children.\n *\n * Child components register themselves with the `useCompoundItem` hook, passing in arbitrary metadata to the parent.\n *\n * This is a more powerful altervantive to `children` traversal, as child components don't have to be placed\n * directly inside the parent component. They can be anywhere in the tree (and even rendered by other components).\n *\n * The downside is that this doesn't work with SSR as it relies on the useEffect hook.\n *\n * @ignore - internal hook.\n */\nexport function useCompoundParent() {\n  const [subitems, setSubitems] = React.useState(new Map());\n  const subitemKeys = React.useRef(new Set());\n  const deregisterItem = React.useCallback(function deregisterItem(id) {\n    subitemKeys.current.delete(id);\n    setSubitems(previousState => {\n      const newState = new Map(previousState);\n      newState.delete(id);\n      return newState;\n    });\n  }, []);\n  const registerItem = React.useCallback(function registerItem(id, item) {\n    let providedOrGeneratedId;\n    if (typeof id === 'function') {\n      providedOrGeneratedId = id(subitemKeys.current);\n    } else {\n      providedOrGeneratedId = id;\n    }\n    subitemKeys.current.add(providedOrGeneratedId);\n    setSubitems(previousState => {\n      const newState = new Map(previousState);\n      newState.set(providedOrGeneratedId, item);\n      return newState;\n    });\n    return {\n      id: providedOrGeneratedId,\n      deregister: () => deregisterItem(providedOrGeneratedId)\n    };\n  }, [deregisterItem]);\n  const sortedSubitems = React.useMemo(() => sortSubitems(subitems), [subitems]);\n  const getItemIndex = React.useCallback(function getItemIndex(id) {\n    return Array.from(sortedSubitems.keys()).indexOf(id);\n  }, [sortedSubitems]);\n  const contextValue = React.useMemo(() => ({\n    getItemIndex,\n    registerItem,\n    totalSubitemCount: subitems.size\n  }), [getItemIndex, registerItem, subitems.size]);\n  return {\n    contextValue,\n    subitems: sortedSubitems\n  };\n}","'use client';\n\nimport * as React from 'react';\nimport { unstable_useEnhancedEffect as useEnhancedEffect } from '@mui/utils';\nimport { CompoundComponentContext } from './useCompoundParent';\n/**\n * Registers a child component with the parent component.\n *\n * @param id A unique key for the child component. If the `id` is `undefined`, the registration logic will not run (this can sometimes be the case during SSR).\n *   This can be either a value, or a function that generates a value based on already registered siblings' ids.\n * @param itemMetadata Arbitrary metadata to pass to the parent component. This should be a stable reference (e.g. a memoized object), to avoid unnecessary re-registrations.\n * @param missingKeyGenerator A function that generates a unique id for the item.\n *   It is called with the set of the ids of all the items that have already been registered.\n *   Return `existingKeys.size` if you want to use the index of the new item as the id.\n *\n * @ignore - internal hook.\n */\nexport function useCompoundItem(id, itemMetadata) {\n  const context = React.useContext(CompoundComponentContext);\n  if (context === null) {\n    throw new Error('useCompoundItem must be used within a useCompoundParent');\n  }\n  const {\n    registerItem\n  } = context;\n  const [registeredId, setRegisteredId] = React.useState(typeof id === 'function' ? undefined : id);\n  useEnhancedEffect(() => {\n    const {\n      id: returnedId,\n      deregister\n    } = registerItem(id, itemMetadata);\n    setRegisteredId(returnedId);\n    return deregister;\n  }, [registerItem, itemMetadata, id]);\n  return {\n    id: registeredId,\n    index: registeredId !== undefined ? context.getItemIndex(registeredId) : -1,\n    totalItemCount: context.totalSubitemCount\n  };\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\n/**\n * Combines the two get*Props functions from Base UI hooks into one.\n * Useful when a hook uses two other hooks behind the scenes\n * (such as useSelect that depends on useList and useButton for its root slot).\n *\n * The resulting function will return the combined props.\n * They are merged from left to right, similarly to how Object.assign works.\n *\n * The getSecondProps function will receive the result of the getFirstProps function as its argument,\n * so its event handlers can call the previous handlers and act depending on its result.\n *\n * @param getFirstProps - A getter function that returns the props for the first slot. It receives the external event handlers as its argument.\n * @param getSecondProps - A getter function that returns the props for the second slot. It receives the result of the getFirstProps function as its argument.\n */\nexport function combineHooksSlotProps(getFirstProps, getSecondProps) {\n  return function getCombinedProps(external = {}) {\n    const firstResult = _extends({}, external, getFirstProps(external));\n    const result = _extends({}, firstResult, getSecondProps(firstResult));\n    return result;\n  };\n}"],"names":["ListActionTypes","findValidItemToHighlight","currentIndex","lookupDirection","items","includeDisabledItems","isItemDisabled","wrapAround","item","itemIndex","nextFocus","moveHighlight","previouslyHighlightedValue","offset","context","_items$nextIndex","disableListWrap","disabledItemsFocusable","itemComparer","focusManagement","defaultHighlightedIndex","maxIndex","previouslyHighlightedIndex","nextIndexCandidate","newIndex","nextIndex","toggleSelection","selectedValues","selectionMode","sv","handleItemSelection","state","i","newSelectedValues","_extends","handleKeyDown","key","previouslySelectedValue","orientation","pageSize","handleBlur","textCriteriaMatches","searchString","stringifyItem","_stringifyItem","text","handleTextNavigation","getItemAsString","startWithCurrentItem","nextItem","index","handleItemsChange","previousItems","_state$selectedValues","newHighlightedValue","_items$find","selectedValue","handleResetHighlight","handleClearSelection","listReducer","action","type","areEqual","a","b","EMPTY_OBJECT","NOOP","getControlledState","internalState","controlledProps","augmentedState","useStateChangeDetection","parameters","nextState","initialState","stateComparers","onStateChange","lastActionRef","internalPreviousStateRef","React","previousState","_stateComparers$key","stateComparer","nextStateItem","previousStateItem","_event","_type","useControllableReducer","reducer","actionContext","componentName","controlledPropsRef","reducerWithControlledState","controlledState","dispatch","dispatchWithContext","TEXT_NAVIGATION_RESET_TIMEOUT","useTextNavigation","callback","textCriteriaRef","event","textCriteria","lowerKey","currentTime","defaultItemComparer","optionA","optionB","defaultIsItemDisabled","defaultItemStringifier","defaultGetInitialState","useList","params","getInitialState","getItemDomElement","getItemId","externalListRef","onChange","onHighlightChange","onItemsChange","reducerActionContext","externalReducer","listRef","handleRef","useForkRef","handleHighlightChange","value","reason","_getItemDomElement","valuesArray1","valuesArray2","areArraysEqual","handleStateChange","field","listActionContext","defaultReducer","highlightedValue","createHandleKeyDown","externalHandlers","_externalHandlers$onK","keysToPreventDefault","createHandleBlur","_externalHandlers$onB","_listRef$current","getRootProps","externalProps","externalEventHandlers","extractEventHandlers","getItemState","selected","highlighted","contextValue","ListContext","useListItem","handlePointerOverEvents","listContext","focusable","createHandleClick","_externalHandlers$onC","createHandlePointerOver","_externalHandlers$onM","tabIndex","CompoundComponentContext","sortSubitems","subitems","subitemsArray","subitem","aNode","bNode","useCompoundParent","setSubitems","subitemKeys","deregisterItem","id","newState","registerItem","providedOrGeneratedId","sortedSubitems","getItemIndex","useCompoundItem","itemMetadata","registeredId","setRegisteredId","useEnhancedEffect","returnedId","deregister","combineHooksSlotProps","getFirstProps","getSecondProps","external","firstResult"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9]}