{"version":3,"file":"static/js/84859.65c0e1fc.chunk.js","mappings":"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","sources":["webpack:///./node_modules/@mui/base/useAutocomplete/useAutocomplete.js","webpack:///./node_modules/@mui/material/Autocomplete/Autocomplete.js","webpack:///./node_modules/@mui/material/Autocomplete/autocompleteClasses.js","webpack:///./node_modules/@mui/material/ListSubheader/ListSubheader.js","webpack:///./node_modules/@mui/material/ListSubheader/listSubheaderClasses.js","webpack:///./node_modules/@mui/material/Skeleton/Skeleton.js","webpack:///./node_modules/@mui/material/Skeleton/skeletonClasses.js","webpack:///./node_modules/@mui/material/styles/cssUtils.js"],"sourcesContent":["'use client';\n\n/* eslint-disable no-constant-condition */\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { unstable_setRef as setRef, unstable_useEventCallback as useEventCallback, unstable_useControlled as useControlled, unstable_useId as useId, usePreviousProps } from '@mui/utils';\n\n// https://stackoverflow.com/questions/990904/remove-accents-diacritics-in-a-string-in-javascript\n// Give up on IE11 support for this feature\nfunction stripDiacritics(string) {\n return typeof string.normalize !== 'undefined' ? string.normalize('NFD').replace(/[\\u0300-\\u036f]/g, '') : string;\n}\nexport function createFilterOptions(config = {}) {\n const {\n ignoreAccents = true,\n ignoreCase = true,\n limit,\n matchFrom = 'any',\n stringify,\n trim = false\n } = config;\n return (options, {\n inputValue,\n getOptionLabel\n }) => {\n let input = trim ? inputValue.trim() : inputValue;\n if (ignoreCase) {\n input = input.toLowerCase();\n }\n if (ignoreAccents) {\n input = stripDiacritics(input);\n }\n const filteredOptions = !input ? options : options.filter(option => {\n let candidate = (stringify || getOptionLabel)(option);\n if (ignoreCase) {\n candidate = candidate.toLowerCase();\n }\n if (ignoreAccents) {\n candidate = stripDiacritics(candidate);\n }\n return matchFrom === 'start' ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;\n });\n return typeof limit === 'number' ? filteredOptions.slice(0, limit) : filteredOptions;\n };\n}\n\n// To replace with .findIndex() once we stop IE11 support.\nfunction findIndex(array, comp) {\n for (let i = 0; i < array.length; i += 1) {\n if (comp(array[i])) {\n return i;\n }\n }\n return -1;\n}\nconst defaultFilterOptions = createFilterOptions();\n\n// Number of options to jump in list box when `Page Up` and `Page Down` keys are used.\nconst pageSize = 5;\nconst defaultIsActiveElementInListbox = listboxRef => {\n var _listboxRef$current$p;\n return listboxRef.current !== null && ((_listboxRef$current$p = listboxRef.current.parentElement) == null ? void 0 : _listboxRef$current$p.contains(document.activeElement));\n};\nexport function useAutocomplete(props) {\n const {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_isActiveElementInListbox = defaultIsActiveElementInListbox,\n // eslint-disable-next-line @typescript-eslint/naming-convention\n unstable_classNamePrefix = 'Mui',\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n componentName = 'useAutocomplete',\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled: disabledProp,\n disabledItemsFocusable = false,\n disableListWrap = false,\n filterOptions = defaultFilterOptions,\n filterSelectedOptions = false,\n freeSolo = false,\n getOptionDisabled,\n getOptionKey,\n getOptionLabel: getOptionLabelProp = option => {\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n },\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n id: idProp,\n includeInputInList = false,\n inputValue: inputValueProp,\n isOptionEqualToValue = (option, value) => option === value,\n multiple = false,\n onChange,\n onClose,\n onHighlightChange,\n onInputChange,\n onOpen,\n open: openProp,\n openOnFocus = false,\n options,\n readOnly = false,\n selectOnFocus = !props.freeSolo,\n value: valueProp\n } = props;\n const id = useId(idProp);\n let getOptionLabel = getOptionLabelProp;\n getOptionLabel = option => {\n const optionLabel = getOptionLabelProp(option);\n if (typeof optionLabel !== 'string') {\n if (process.env.NODE_ENV !== 'production') {\n const erroneousReturn = optionLabel === undefined ? 'undefined' : `${typeof optionLabel} (${optionLabel})`;\n console.error(`MUI: The \\`getOptionLabel\\` method of ${componentName} returned ${erroneousReturn} instead of a string for ${JSON.stringify(option)}.`);\n }\n return String(optionLabel);\n }\n return optionLabel;\n };\n const ignoreFocus = React.useRef(false);\n const firstFocus = React.useRef(true);\n const inputRef = React.useRef(null);\n const listboxRef = React.useRef(null);\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [focusedTag, setFocusedTag] = React.useState(-1);\n const defaultHighlighted = autoHighlight ? 0 : -1;\n const highlightedIndexRef = React.useRef(defaultHighlighted);\n const [value, setValueState] = useControlled({\n controlled: valueProp,\n default: defaultValue,\n name: componentName\n });\n const [inputValue, setInputValueState] = useControlled({\n controlled: inputValueProp,\n default: '',\n name: componentName,\n state: 'inputValue'\n });\n const [focused, setFocused] = React.useState(false);\n const resetInputValue = React.useCallback((event, newValue) => {\n // retain current `inputValue` if new option isn't selected and `clearOnBlur` is false\n // When `multiple` is enabled, `newValue` is an array of all selected items including the newly selected item\n const isOptionSelected = multiple ? value.length < newValue.length : newValue !== null;\n if (!isOptionSelected && !clearOnBlur) {\n return;\n }\n let newInputValue;\n if (multiple) {\n newInputValue = '';\n } else if (newValue == null) {\n newInputValue = '';\n } else {\n const optionLabel = getOptionLabel(newValue);\n newInputValue = typeof optionLabel === 'string' ? optionLabel : '';\n }\n if (inputValue === newInputValue) {\n return;\n }\n setInputValueState(newInputValue);\n if (onInputChange) {\n onInputChange(event, newInputValue, 'reset');\n }\n }, [getOptionLabel, inputValue, multiple, onInputChange, setInputValueState, clearOnBlur, value]);\n const [open, setOpenState] = useControlled({\n controlled: openProp,\n default: false,\n name: componentName,\n state: 'open'\n });\n const [inputPristine, setInputPristine] = React.useState(true);\n const inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);\n const popupOpen = open && !readOnly;\n const filteredOptions = popupOpen ? filterOptions(options.filter(option => {\n if (filterSelectedOptions && (multiple ? value : [value]).some(value2 => value2 !== null && isOptionEqualToValue(option, value2))) {\n return false;\n }\n return true;\n }),\n // we use the empty string to manipulate `filterOptions` to not filter any options\n // i.e. the filter predicate always returns true\n {\n inputValue: inputValueIsSelectedValue && inputPristine ? '' : inputValue,\n getOptionLabel\n }) : [];\n const previousProps = usePreviousProps({\n filteredOptions,\n value,\n inputValue\n });\n React.useEffect(() => {\n const valueChange = value !== previousProps.value;\n if (focused && !valueChange) {\n return;\n }\n\n // Only reset the input's value when freeSolo if the component's value changes.\n if (freeSolo && !valueChange) {\n return;\n }\n resetInputValue(null, value);\n }, [value, resetInputValue, focused, previousProps.value, freeSolo]);\n const listboxAvailable = open && filteredOptions.length > 0 && !readOnly;\n if (process.env.NODE_ENV !== 'production') {\n if (value !== null && !freeSolo && options.length > 0) {\n const missingValue = (multiple ? value : [value]).filter(value2 => !options.some(option => isOptionEqualToValue(option, value2)));\n if (missingValue.length > 0) {\n console.warn([`MUI: The value provided to ${componentName} is invalid.`, `None of the options match with \\`${missingValue.length > 1 ? JSON.stringify(missingValue) : JSON.stringify(missingValue[0])}\\`.`, 'You can use the `isOptionEqualToValue` prop to customize the equality test.'].join('\\n'));\n }\n }\n }\n const focusTag = useEventCallback(tagToFocus => {\n if (tagToFocus === -1) {\n inputRef.current.focus();\n } else {\n anchorEl.querySelector(`[data-tag-index=\"${tagToFocus}\"]`).focus();\n }\n });\n\n // Ensure the focusedTag is never inconsistent\n React.useEffect(() => {\n if (multiple && focusedTag > value.length - 1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n }, [value, multiple, focusedTag, focusTag]);\n function validOptionIndex(index, direction) {\n if (!listboxRef.current || index < 0 || index >= filteredOptions.length) {\n return -1;\n }\n let nextFocus = index;\n while (true) {\n const option = listboxRef.current.querySelector(`[data-option-index=\"${nextFocus}\"]`);\n\n // Same logic as MenuList.js\n const nextFocusDisabled = disabledItemsFocusable ? false : !option || option.disabled || option.getAttribute('aria-disabled') === 'true';\n if (option && option.hasAttribute('tabindex') && !nextFocusDisabled) {\n // The next option is available\n return nextFocus;\n }\n\n // The next option is disabled, move to the next element.\n // with looped index\n if (direction === 'next') {\n nextFocus = (nextFocus + 1) % filteredOptions.length;\n } else {\n nextFocus = (nextFocus - 1 + filteredOptions.length) % filteredOptions.length;\n }\n\n // We end up with initial index, that means we don't have available options.\n // All of them are disabled\n if (nextFocus === index) {\n return -1;\n }\n }\n }\n const setHighlightedIndex = useEventCallback(({\n event,\n index,\n reason = 'auto'\n }) => {\n highlightedIndexRef.current = index;\n\n // does the index exist?\n if (index === -1) {\n inputRef.current.removeAttribute('aria-activedescendant');\n } else {\n inputRef.current.setAttribute('aria-activedescendant', `${id}-option-${index}`);\n }\n if (onHighlightChange) {\n onHighlightChange(event, index === -1 ? null : filteredOptions[index], reason);\n }\n if (!listboxRef.current) {\n return;\n }\n const prev = listboxRef.current.querySelector(`[role=\"option\"].${unstable_classNamePrefix}-focused`);\n if (prev) {\n prev.classList.remove(`${unstable_classNamePrefix}-focused`);\n prev.classList.remove(`${unstable_classNamePrefix}-focusVisible`);\n }\n let listboxNode = listboxRef.current;\n if (listboxRef.current.getAttribute('role') !== 'listbox') {\n listboxNode = listboxRef.current.parentElement.querySelector('[role=\"listbox\"]');\n }\n\n // \"No results\"\n if (!listboxNode) {\n return;\n }\n if (index === -1) {\n listboxNode.scrollTop = 0;\n return;\n }\n const option = listboxRef.current.querySelector(`[data-option-index=\"${index}\"]`);\n if (!option) {\n return;\n }\n option.classList.add(`${unstable_classNamePrefix}-focused`);\n if (reason === 'keyboard') {\n option.classList.add(`${unstable_classNamePrefix}-focusVisible`);\n }\n\n // Scroll active descendant into view.\n // Logic copied from https://www.w3.org/WAI/content-assets/wai-aria-practices/patterns/combobox/examples/js/select-only.js\n // In case of mouse clicks and touch (in mobile devices) we avoid scrolling the element and keep both behaviors same.\n // Consider this API instead once it has a better browser support:\n // .scrollIntoView({ scrollMode: 'if-needed', block: 'nearest' });\n if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== 'mouse' && reason !== 'touch') {\n const element = option;\n const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;\n const elementBottom = element.offsetTop + element.offsetHeight;\n if (elementBottom > scrollBottom) {\n listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;\n } else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {\n listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);\n }\n }\n });\n const changeHighlightedIndex = useEventCallback(({\n event,\n diff,\n direction = 'next',\n reason = 'auto'\n }) => {\n if (!popupOpen) {\n return;\n }\n const getNextIndex = () => {\n const maxIndex = filteredOptions.length - 1;\n if (diff === 'reset') {\n return defaultHighlighted;\n }\n if (diff === 'start') {\n return 0;\n }\n if (diff === 'end') {\n return maxIndex;\n }\n const newIndex = highlightedIndexRef.current + diff;\n if (newIndex < 0) {\n if (newIndex === -1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) {\n return 0;\n }\n return maxIndex;\n }\n if (newIndex > maxIndex) {\n if (newIndex === maxIndex + 1 && includeInputInList) {\n return -1;\n }\n if (disableListWrap || Math.abs(diff) > 1) {\n return maxIndex;\n }\n return 0;\n }\n return newIndex;\n };\n const nextIndex = validOptionIndex(getNextIndex(), direction);\n setHighlightedIndex({\n index: nextIndex,\n reason,\n event\n });\n\n // Sync the content of the input with the highlighted option.\n if (autoComplete && diff !== 'reset') {\n if (nextIndex === -1) {\n inputRef.current.value = inputValue;\n } else {\n const option = getOptionLabel(filteredOptions[nextIndex]);\n inputRef.current.value = option;\n\n // The portion of the selected suggestion that has not been typed by the user,\n // a completion string, appears inline after the input cursor in the textbox.\n const index = option.toLowerCase().indexOf(inputValue.toLowerCase());\n if (index === 0 && inputValue.length > 0) {\n inputRef.current.setSelectionRange(inputValue.length, option.length);\n }\n }\n }\n });\n const getPreviousHighlightedOptionIndex = () => {\n const isSameValue = (value1, value2) => {\n const label1 = value1 ? getOptionLabel(value1) : '';\n const label2 = value2 ? getOptionLabel(value2) : '';\n return label1 === label2;\n };\n if (highlightedIndexRef.current !== -1 && previousProps.filteredOptions && previousProps.filteredOptions.length !== filteredOptions.length && previousProps.inputValue === inputValue && (multiple ? value.length === previousProps.value.length && previousProps.value.every((val, i) => getOptionLabel(value[i]) === getOptionLabel(val)) : isSameValue(previousProps.value, value))) {\n const previousHighlightedOption = previousProps.filteredOptions[highlightedIndexRef.current];\n if (previousHighlightedOption) {\n return findIndex(filteredOptions, option => {\n return getOptionLabel(option) === getOptionLabel(previousHighlightedOption);\n });\n }\n }\n return -1;\n };\n const syncHighlightedIndex = React.useCallback(() => {\n if (!popupOpen) {\n return;\n }\n\n // Check if the previously highlighted option still exists in the updated filtered options list and if the value and inputValue haven't changed\n // If it exists and the value and the inputValue haven't changed, just update its index, otherwise continue execution\n const previousHighlightedOptionIndex = getPreviousHighlightedOptionIndex();\n if (previousHighlightedOptionIndex !== -1) {\n highlightedIndexRef.current = previousHighlightedOptionIndex;\n return;\n }\n const valueItem = multiple ? value[0] : value;\n\n // The popup is empty, reset\n if (filteredOptions.length === 0 || valueItem == null) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n return;\n }\n if (!listboxRef.current) {\n return;\n }\n\n // Synchronize the value with the highlighted index\n if (valueItem != null) {\n const currentOption = filteredOptions[highlightedIndexRef.current];\n\n // Keep the current highlighted index if possible\n if (multiple && currentOption && findIndex(value, val => isOptionEqualToValue(currentOption, val)) !== -1) {\n return;\n }\n const itemIndex = findIndex(filteredOptions, optionItem => isOptionEqualToValue(optionItem, valueItem));\n if (itemIndex === -1) {\n changeHighlightedIndex({\n diff: 'reset'\n });\n } else {\n setHighlightedIndex({\n index: itemIndex\n });\n }\n return;\n }\n\n // Prevent the highlighted index to leak outside the boundaries.\n if (highlightedIndexRef.current >= filteredOptions.length - 1) {\n setHighlightedIndex({\n index: filteredOptions.length - 1\n });\n return;\n }\n\n // Restore the focus to the previous index.\n setHighlightedIndex({\n index: highlightedIndexRef.current\n });\n // Ignore filteredOptions (and options, isOptionEqualToValue, getOptionLabel) not to break the scroll position\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n // Only sync the highlighted index when the option switch between empty and not\n filteredOptions.length,\n // Don't sync the highlighted index with the value when multiple\n // eslint-disable-next-line react-hooks/exhaustive-deps\n multiple ? false : value, filterSelectedOptions, changeHighlightedIndex, setHighlightedIndex, popupOpen, inputValue, multiple]);\n const handleListboxRef = useEventCallback(node => {\n setRef(listboxRef, node);\n if (!node) {\n return;\n }\n syncHighlightedIndex();\n });\n if (process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useEffect(() => {\n if (!inputRef.current || inputRef.current.nodeName !== 'INPUT') {\n if (inputRef.current && inputRef.current.nodeName === 'TEXTAREA') {\n console.warn([`A textarea element was provided to ${componentName} where input was expected.`, `This is not a supported scenario but it may work under certain conditions.`, `A textarea keyboard navigation may conflict with Autocomplete controls (for example enter and arrow keys).`, `Make sure to test keyboard navigation and add custom event handlers if necessary.`].join('\\n'));\n } else {\n console.error([`MUI: Unable to find the input element. It was resolved to ${inputRef.current} while an HTMLInputElement was expected.`, `Instead, ${componentName} expects an input element.`, '', componentName === 'useAutocomplete' ? 'Make sure you have bound getInputProps correctly and that the normal ref/effect resolutions order is guaranteed.' : 'Make sure you have customized the input component correctly.'].join('\\n'));\n }\n }\n }, [componentName]);\n }\n React.useEffect(() => {\n syncHighlightedIndex();\n }, [syncHighlightedIndex]);\n const handleOpen = event => {\n if (open) {\n return;\n }\n setOpenState(true);\n setInputPristine(true);\n if (onOpen) {\n onOpen(event);\n }\n };\n const handleClose = (event, reason) => {\n if (!open) {\n return;\n }\n setOpenState(false);\n if (onClose) {\n onClose(event, reason);\n }\n };\n const handleValue = (event, newValue, reason, details) => {\n if (multiple) {\n if (value.length === newValue.length && value.every((val, i) => val === newValue[i])) {\n return;\n }\n } else if (value === newValue) {\n return;\n }\n if (onChange) {\n onChange(event, newValue, reason, details);\n }\n setValueState(newValue);\n };\n const isTouch = React.useRef(false);\n const selectNewValue = (event, option, reasonProp = 'selectOption', origin = 'options') => {\n let reason = reasonProp;\n let newValue = option;\n if (multiple) {\n newValue = Array.isArray(value) ? value.slice() : [];\n if (process.env.NODE_ENV !== 'production') {\n const matches = newValue.filter(val => isOptionEqualToValue(option, val));\n if (matches.length > 1) {\n console.error([`MUI: The \\`isOptionEqualToValue\\` method of ${componentName} does not handle the arguments correctly.`, `The component expects a single value to match a given option but found ${matches.length} matches.`].join('\\n'));\n }\n }\n const itemIndex = findIndex(newValue, valueItem => isOptionEqualToValue(option, valueItem));\n if (itemIndex === -1) {\n newValue.push(option);\n } else if (origin !== 'freeSolo') {\n newValue.splice(itemIndex, 1);\n reason = 'removeOption';\n }\n }\n resetInputValue(event, newValue);\n handleValue(event, newValue, reason, {\n option\n });\n if (!disableCloseOnSelect && (!event || !event.ctrlKey && !event.metaKey)) {\n handleClose(event, reason);\n }\n if (blurOnSelect === true || blurOnSelect === 'touch' && isTouch.current || blurOnSelect === 'mouse' && !isTouch.current) {\n inputRef.current.blur();\n }\n };\n function validTagIndex(index, direction) {\n if (index === -1) {\n return -1;\n }\n let nextFocus = index;\n while (true) {\n // Out of range\n if (direction === 'next' && nextFocus === value.length || direction === 'previous' && nextFocus === -1) {\n return -1;\n }\n const option = anchorEl.querySelector(`[data-tag-index=\"${nextFocus}\"]`);\n\n // Same logic as MenuList.js\n if (!option || !option.hasAttribute('tabindex') || option.disabled || option.getAttribute('aria-disabled') === 'true') {\n nextFocus += direction === 'next' ? 1 : -1;\n } else {\n return nextFocus;\n }\n }\n }\n const handleFocusTag = (event, direction) => {\n if (!multiple) {\n return;\n }\n if (inputValue === '') {\n handleClose(event, 'toggleInput');\n }\n let nextTag = focusedTag;\n if (focusedTag === -1) {\n if (inputValue === '' && direction === 'previous') {\n nextTag = value.length - 1;\n }\n } else {\n nextTag += direction === 'next' ? 1 : -1;\n if (nextTag < 0) {\n nextTag = 0;\n }\n if (nextTag === value.length) {\n nextTag = -1;\n }\n }\n nextTag = validTagIndex(nextTag, direction);\n setFocusedTag(nextTag);\n focusTag(nextTag);\n };\n const handleClear = event => {\n ignoreFocus.current = true;\n setInputValueState('');\n if (onInputChange) {\n onInputChange(event, '', 'clear');\n }\n handleValue(event, multiple ? [] : null, 'clear');\n };\n const handleKeyDown = other => event => {\n if (other.onKeyDown) {\n other.onKeyDown(event);\n }\n if (event.defaultMuiPrevented) {\n return;\n }\n if (focusedTag !== -1 && ['ArrowLeft', 'ArrowRight'].indexOf(event.key) === -1) {\n setFocusedTag(-1);\n focusTag(-1);\n }\n\n // Wait until IME is settled.\n if (event.which !== 229) {\n switch (event.key) {\n case 'Home':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'start',\n direction: 'next',\n reason: 'keyboard',\n event\n });\n }\n break;\n case 'End':\n if (popupOpen && handleHomeEndKeys) {\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: 'end',\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n }\n break;\n case 'PageUp':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: -pageSize,\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'PageDown':\n // Prevent scroll of the page\n event.preventDefault();\n changeHighlightedIndex({\n diff: pageSize,\n direction: 'next',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowDown':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: 1,\n direction: 'next',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowUp':\n // Prevent cursor move\n event.preventDefault();\n changeHighlightedIndex({\n diff: -1,\n direction: 'previous',\n reason: 'keyboard',\n event\n });\n handleOpen(event);\n break;\n case 'ArrowLeft':\n handleFocusTag(event, 'previous');\n break;\n case 'ArrowRight':\n handleFocusTag(event, 'next');\n break;\n case 'Enter':\n if (highlightedIndexRef.current !== -1 && popupOpen) {\n const option = filteredOptions[highlightedIndexRef.current];\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n\n // Avoid early form validation, let the end-users continue filling the form.\n event.preventDefault();\n if (disabled) {\n return;\n }\n selectNewValue(event, option, 'selectOption');\n\n // Move the selection to the end.\n if (autoComplete) {\n inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);\n }\n } else if (freeSolo && inputValue !== '' && inputValueIsSelectedValue === false) {\n if (multiple) {\n // Allow people to add new values before they submit the form.\n event.preventDefault();\n }\n selectNewValue(event, inputValue, 'createOption', 'freeSolo');\n }\n break;\n case 'Escape':\n if (popupOpen) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault();\n // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClose(event, 'escape');\n } else if (clearOnEscape && (inputValue !== '' || multiple && value.length > 0)) {\n // Avoid Opera to exit fullscreen mode.\n event.preventDefault();\n // Avoid the Modal to handle the event.\n event.stopPropagation();\n handleClear(event);\n }\n break;\n case 'Backspace':\n // Remove the value on the left of the \"cursor\"\n if (multiple && !readOnly && inputValue === '' && value.length > 0) {\n const index = focusedTag === -1 ? value.length - 1 : focusedTag;\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n }\n break;\n case 'Delete':\n // Remove the value on the right of the \"cursor\"\n if (multiple && !readOnly && inputValue === '' && value.length > 0 && focusedTag !== -1) {\n const index = focusedTag;\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n }\n break;\n default:\n }\n }\n };\n const handleFocus = event => {\n setFocused(true);\n if (openOnFocus && !ignoreFocus.current) {\n handleOpen(event);\n }\n };\n const handleBlur = event => {\n // Ignore the event when using the scrollbar with IE11\n if (unstable_isActiveElementInListbox(listboxRef)) {\n inputRef.current.focus();\n return;\n }\n setFocused(false);\n firstFocus.current = true;\n ignoreFocus.current = false;\n if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) {\n selectNewValue(event, filteredOptions[highlightedIndexRef.current], 'blur');\n } else if (autoSelect && freeSolo && inputValue !== '') {\n selectNewValue(event, inputValue, 'blur', 'freeSolo');\n } else if (clearOnBlur) {\n resetInputValue(event, value);\n }\n handleClose(event, 'blur');\n };\n const handleInputChange = event => {\n const newValue = event.target.value;\n if (inputValue !== newValue) {\n setInputValueState(newValue);\n setInputPristine(false);\n if (onInputChange) {\n onInputChange(event, newValue, 'input');\n }\n }\n if (newValue === '') {\n if (!disableClearable && !multiple) {\n handleValue(event, null, 'clear');\n }\n } else {\n handleOpen(event);\n }\n };\n const handleOptionMouseMove = event => {\n const index = Number(event.currentTarget.getAttribute('data-option-index'));\n if (highlightedIndexRef.current !== index) {\n setHighlightedIndex({\n event,\n index,\n reason: 'mouse'\n });\n }\n };\n const handleOptionTouchStart = event => {\n setHighlightedIndex({\n event,\n index: Number(event.currentTarget.getAttribute('data-option-index')),\n reason: 'touch'\n });\n isTouch.current = true;\n };\n const handleOptionClick = event => {\n const index = Number(event.currentTarget.getAttribute('data-option-index'));\n selectNewValue(event, filteredOptions[index], 'selectOption');\n isTouch.current = false;\n };\n const handleTagDelete = index => event => {\n const newValue = value.slice();\n newValue.splice(index, 1);\n handleValue(event, newValue, 'removeOption', {\n option: value[index]\n });\n };\n const handlePopupIndicator = event => {\n if (open) {\n handleClose(event, 'toggleInput');\n } else {\n handleOpen(event);\n }\n };\n\n // Prevent input blur when interacting with the combobox\n const handleMouseDown = event => {\n // Prevent focusing the input if click is anywhere outside the Autocomplete\n if (!event.currentTarget.contains(event.target)) {\n return;\n }\n if (event.target.getAttribute('id') !== id) {\n event.preventDefault();\n }\n };\n\n // Focus the input when interacting with the combobox\n const handleClick = event => {\n // Prevent focusing the input if click is anywhere outside the Autocomplete\n if (!event.currentTarget.contains(event.target)) {\n return;\n }\n inputRef.current.focus();\n if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) {\n inputRef.current.select();\n }\n firstFocus.current = false;\n };\n const handleInputMouseDown = event => {\n if (!disabledProp && (inputValue === '' || !open)) {\n handlePopupIndicator(event);\n }\n };\n let dirty = freeSolo && inputValue.length > 0;\n dirty = dirty || (multiple ? value.length > 0 : value !== null);\n let groupedOptions = filteredOptions;\n if (groupBy) {\n // used to keep track of key and indexes in the result array\n const indexBy = new Map();\n let warn = false;\n groupedOptions = filteredOptions.reduce((acc, option, index) => {\n const group = groupBy(option);\n if (acc.length > 0 && acc[acc.length - 1].group === group) {\n acc[acc.length - 1].options.push(option);\n } else {\n if (process.env.NODE_ENV !== 'production') {\n if (indexBy.get(group) && !warn) {\n console.warn(`MUI: The options provided combined with the \\`groupBy\\` method of ${componentName} returns duplicated headers.`, 'You can solve the issue by sorting the options with the output of `groupBy`.');\n warn = true;\n }\n indexBy.set(group, true);\n }\n acc.push({\n key: index,\n index,\n group,\n options: [option]\n });\n }\n return acc;\n }, []);\n }\n if (disabledProp && focused) {\n handleBlur();\n }\n return {\n getRootProps: (other = {}) => _extends({\n 'aria-owns': listboxAvailable ? `${id}-listbox` : null\n }, other, {\n onKeyDown: handleKeyDown(other),\n onMouseDown: handleMouseDown,\n onClick: handleClick\n }),\n getInputLabelProps: () => ({\n id: `${id}-label`,\n htmlFor: id\n }),\n getInputProps: () => ({\n id,\n value: inputValue,\n onBlur: handleBlur,\n onFocus: handleFocus,\n onChange: handleInputChange,\n onMouseDown: handleInputMouseDown,\n // if open then this is handled imperatively so don't let react override\n // only have an opinion about this when closed\n 'aria-activedescendant': popupOpen ? '' : null,\n 'aria-autocomplete': autoComplete ? 'both' : 'list',\n 'aria-controls': listboxAvailable ? `${id}-listbox` : undefined,\n 'aria-expanded': listboxAvailable,\n // Disable browser's suggestion that might overlap with the popup.\n // Handle autocomplete but not autofill.\n autoComplete: 'off',\n ref: inputRef,\n autoCapitalize: 'none',\n spellCheck: 'false',\n role: 'combobox',\n disabled: disabledProp\n }),\n getClearProps: () => ({\n tabIndex: -1,\n type: 'button',\n onClick: handleClear\n }),\n getPopupIndicatorProps: () => ({\n tabIndex: -1,\n type: 'button',\n onClick: handlePopupIndicator\n }),\n getTagProps: ({\n index\n }) => _extends({\n key: index,\n 'data-tag-index': index,\n tabIndex: -1\n }, !readOnly && {\n onDelete: handleTagDelete(index)\n }),\n getListboxProps: () => ({\n role: 'listbox',\n id: `${id}-listbox`,\n 'aria-labelledby': `${id}-label`,\n ref: handleListboxRef,\n onMouseDown: event => {\n // Prevent blur\n event.preventDefault();\n }\n }),\n getOptionProps: ({\n index,\n option\n }) => {\n var _getOptionKey;\n const selected = (multiple ? value : [value]).some(value2 => value2 != null && isOptionEqualToValue(option, value2));\n const disabled = getOptionDisabled ? getOptionDisabled(option) : false;\n return {\n key: (_getOptionKey = getOptionKey == null ? void 0 : getOptionKey(option)) != null ? _getOptionKey : getOptionLabel(option),\n tabIndex: -1,\n role: 'option',\n id: `${id}-option-${index}`,\n onMouseMove: handleOptionMouseMove,\n onClick: handleOptionClick,\n onTouchStart: handleOptionTouchStart,\n 'data-option-index': index,\n 'aria-disabled': disabled,\n 'aria-selected': selected\n };\n },\n id,\n inputValue,\n value,\n dirty,\n expanded: popupOpen && anchorEl,\n popupOpen,\n focused: focused || focusedTag !== -1,\n anchorEl,\n setAnchorEl,\n focusedTag,\n groupedOptions\n };\n}","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nvar _ClearIcon, _ArrowDropDownIcon;\nconst _excluded = [\"autoComplete\", \"autoHighlight\", \"autoSelect\", \"blurOnSelect\", \"ChipProps\", \"className\", \"clearIcon\", \"clearOnBlur\", \"clearOnEscape\", \"clearText\", \"closeText\", \"componentsProps\", \"defaultValue\", \"disableClearable\", \"disableCloseOnSelect\", \"disabled\", \"disabledItemsFocusable\", \"disableListWrap\", \"disablePortal\", \"filterOptions\", \"filterSelectedOptions\", \"forcePopupIcon\", \"freeSolo\", \"fullWidth\", \"getLimitTagsText\", \"getOptionDisabled\", \"getOptionKey\", \"getOptionLabel\", \"isOptionEqualToValue\", \"groupBy\", \"handleHomeEndKeys\", \"id\", \"includeInputInList\", \"inputValue\", \"limitTags\", \"ListboxComponent\", \"ListboxProps\", \"loading\", \"loadingText\", \"multiple\", \"noOptionsText\", \"onChange\", \"onClose\", \"onHighlightChange\", \"onInputChange\", \"onOpen\", \"open\", \"openOnFocus\", \"openText\", \"options\", \"PaperComponent\", \"PopperComponent\", \"popupIcon\", \"readOnly\", \"renderGroup\", \"renderInput\", \"renderOption\", \"renderTags\", \"selectOnFocus\", \"size\", \"slotProps\", \"value\"],\n _excluded2 = [\"ref\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport integerPropType from '@mui/utils/integerPropType';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport { useAutocomplete, createFilterOptions } from '@mui/base';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport Popper from '../Popper';\nimport ListSubheader from '../ListSubheader';\nimport Paper from '../Paper';\nimport IconButton from '../IconButton';\nimport Chip from '../Chip';\nimport inputClasses from '../Input/inputClasses';\nimport inputBaseClasses from '../InputBase/inputBaseClasses';\nimport outlinedInputClasses from '../OutlinedInput/outlinedInputClasses';\nimport filledInputClasses from '../FilledInput/filledInputClasses';\nimport ClearIcon from '../internal/svg-icons/Close';\nimport ArrowDropDownIcon from '../internal/svg-icons/ArrowDropDown';\nimport { styled, createUseThemeProps } from '../zero-styled';\nimport autocompleteClasses, { getAutocompleteUtilityClass } from './autocompleteClasses';\nimport capitalize from '../utils/capitalize';\nimport useForkRef from '../utils/useForkRef';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { createElement as _createElement } from \"react\";\nconst useThemeProps = createUseThemeProps('MuiAutocomplete');\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n disablePortal,\n expanded,\n focused,\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n popupOpen,\n size\n } = ownerState;\n const slots = {\n root: ['root', expanded && 'expanded', focused && 'focused', fullWidth && 'fullWidth', hasClearIcon && 'hasClearIcon', hasPopupIcon && 'hasPopupIcon'],\n inputRoot: ['inputRoot'],\n input: ['input', inputFocused && 'inputFocused'],\n tag: ['tag', `tagSize${capitalize(size)}`],\n endAdornment: ['endAdornment'],\n clearIndicator: ['clearIndicator'],\n popupIndicator: ['popupIndicator', popupOpen && 'popupIndicatorOpen'],\n popper: ['popper', disablePortal && 'popperDisablePortal'],\n paper: ['paper'],\n listbox: ['listbox'],\n loading: ['loading'],\n noOptions: ['noOptions'],\n option: ['option'],\n groupLabel: ['groupLabel'],\n groupUl: ['groupUl']\n };\n return composeClasses(slots, getAutocompleteUtilityClass, classes);\n};\nconst AutocompleteRoot = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n fullWidth,\n hasClearIcon,\n hasPopupIcon,\n inputFocused,\n size\n } = ownerState;\n return [{\n [`& .${autocompleteClasses.tag}`]: styles.tag\n }, {\n [`& .${autocompleteClasses.tag}`]: styles[`tagSize${capitalize(size)}`]\n }, {\n [`& .${autocompleteClasses.inputRoot}`]: styles.inputRoot\n }, {\n [`& .${autocompleteClasses.input}`]: styles.input\n }, {\n [`& .${autocompleteClasses.input}`]: inputFocused && styles.inputFocused\n }, styles.root, fullWidth && styles.fullWidth, hasPopupIcon && styles.hasPopupIcon, hasClearIcon && styles.hasClearIcon];\n }\n})({\n [`&.${autocompleteClasses.focused} .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n },\n /* Avoid double tap issue on iOS */\n '@media (pointer: fine)': {\n [`&:hover .${autocompleteClasses.clearIndicator}`]: {\n visibility: 'visible'\n }\n },\n [`& .${autocompleteClasses.tag}`]: {\n margin: 3,\n maxWidth: 'calc(100% - 6px)'\n },\n [`& .${autocompleteClasses.inputRoot}`]: {\n flexWrap: 'wrap',\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4\n },\n [`& .${autocompleteClasses.input}`]: {\n width: 0,\n minWidth: 30\n }\n },\n [`& .${inputClasses.root}`]: {\n paddingBottom: 1,\n '& .MuiInput-input': {\n padding: '4px 4px 4px 0px'\n }\n },\n [`& .${inputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${inputClasses.input}`]: {\n padding: '2px 4px 3px 0'\n }\n },\n [`& .${outlinedInputClasses.root}`]: {\n padding: 9,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${autocompleteClasses.input}`]: {\n padding: '7.5px 4px 7.5px 5px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${outlinedInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n // Don't specify paddingRight, as it overrides the default value set when there is only\n // one of the popup or clear icon as the specificity is equal so the latter one wins\n paddingTop: 6,\n paddingBottom: 6,\n paddingLeft: 6,\n [`& .${autocompleteClasses.input}`]: {\n padding: '2.5px 4px 2.5px 8px'\n }\n },\n [`& .${filledInputClasses.root}`]: {\n paddingTop: 19,\n paddingLeft: 8,\n [`.${autocompleteClasses.hasPopupIcon}&, .${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 26 + 4 + 9\n },\n [`.${autocompleteClasses.hasPopupIcon}.${autocompleteClasses.hasClearIcon}&`]: {\n paddingRight: 52 + 4 + 9\n },\n [`& .${filledInputClasses.input}`]: {\n padding: '7px 4px'\n },\n [`& .${autocompleteClasses.endAdornment}`]: {\n right: 9\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.sizeSmall}`]: {\n paddingBottom: 1,\n [`& .${filledInputClasses.input}`]: {\n padding: '2.5px 4px'\n }\n },\n [`& .${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 8\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}`]: {\n paddingTop: 0,\n paddingBottom: 0,\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 16,\n paddingBottom: 17\n }\n },\n [`& .${filledInputClasses.root}.${inputBaseClasses.hiddenLabel}.${inputBaseClasses.sizeSmall}`]: {\n [`& .${autocompleteClasses.input}`]: {\n paddingTop: 8,\n paddingBottom: 9\n }\n },\n [`& .${autocompleteClasses.input}`]: {\n flexGrow: 1,\n textOverflow: 'ellipsis',\n opacity: 0\n },\n variants: [{\n props: {\n fullWidth: true\n },\n style: {\n width: '100%'\n }\n }, {\n props: {\n size: 'small'\n },\n style: {\n [`& .${autocompleteClasses.tag}`]: {\n margin: 2,\n maxWidth: 'calc(100% - 4px)'\n }\n }\n }, {\n props: {\n inputFocused: true\n },\n style: {\n [`& .${autocompleteClasses.input}`]: {\n opacity: 1\n }\n }\n }]\n});\nconst AutocompleteEndAdornment = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'EndAdornment',\n overridesResolver: (props, styles) => styles.endAdornment\n})({\n // We use a position absolute to support wrapping tags.\n position: 'absolute',\n right: 0,\n top: '50%',\n transform: 'translate(0, -50%)'\n});\nconst AutocompleteClearIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'ClearIndicator',\n overridesResolver: (props, styles) => styles.clearIndicator\n})({\n marginRight: -2,\n padding: 4,\n visibility: 'hidden'\n});\nconst AutocompletePopupIndicator = styled(IconButton, {\n name: 'MuiAutocomplete',\n slot: 'PopupIndicator',\n overridesResolver: ({\n ownerState\n }, styles) => _extends({}, styles.popupIndicator, ownerState.popupOpen && styles.popupIndicatorOpen)\n})({\n padding: 2,\n marginRight: -2,\n variants: [{\n props: {\n popupOpen: true\n },\n style: {\n transform: 'rotate(180deg)'\n }\n }]\n});\nconst AutocompletePopper = styled(Popper, {\n name: 'MuiAutocomplete',\n slot: 'Popper',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [{\n [`& .${autocompleteClasses.option}`]: styles.option\n }, styles.popper, ownerState.disablePortal && styles.popperDisablePortal];\n }\n})(({\n theme\n}) => ({\n zIndex: (theme.vars || theme).zIndex.modal,\n variants: [{\n props: {\n disablePortal: true\n },\n style: {\n position: 'absolute'\n }\n }]\n}));\nconst AutocompletePaper = styled(Paper, {\n name: 'MuiAutocomplete',\n slot: 'Paper',\n overridesResolver: (props, styles) => styles.paper\n})(({\n theme\n}) => _extends({}, theme.typography.body1, {\n overflow: 'auto'\n}));\nconst AutocompleteLoading = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Loading',\n overridesResolver: (props, styles) => styles.loading\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteNoOptions = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'NoOptions',\n overridesResolver: (props, styles) => styles.noOptions\n})(({\n theme\n}) => ({\n color: (theme.vars || theme).palette.text.secondary,\n padding: '14px 16px'\n}));\nconst AutocompleteListbox = styled('div', {\n name: 'MuiAutocomplete',\n slot: 'Listbox',\n overridesResolver: (props, styles) => styles.listbox\n})(({\n theme\n}) => ({\n listStyle: 'none',\n margin: 0,\n padding: '8px 0',\n maxHeight: '40vh',\n overflow: 'auto',\n position: 'relative',\n [`& .${autocompleteClasses.option}`]: {\n minHeight: 48,\n display: 'flex',\n overflow: 'hidden',\n justifyContent: 'flex-start',\n alignItems: 'center',\n cursor: 'pointer',\n paddingTop: 6,\n boxSizing: 'border-box',\n outline: '0',\n WebkitTapHighlightColor: 'transparent',\n paddingBottom: 6,\n paddingLeft: 16,\n paddingRight: 16,\n [theme.breakpoints.up('sm')]: {\n minHeight: 'auto'\n },\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: (theme.vars || theme).palette.action.hover,\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: 'transparent'\n }\n },\n '&[aria-disabled=\"true\"]': {\n opacity: (theme.vars || theme).palette.action.disabledOpacity,\n pointerEvents: 'none'\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: (theme.vars || theme).palette.action.focus\n },\n '&[aria-selected=\"true\"]': {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity),\n [`&.${autocompleteClasses.focused}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),\n // Reset on touch devices, it doesn't add specificity\n '@media (hover: none)': {\n backgroundColor: (theme.vars || theme).palette.action.selected\n }\n },\n [`&.${autocompleteClasses.focusVisible}`]: {\n backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : alpha(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)\n }\n }\n }\n}));\nconst AutocompleteGroupLabel = styled(ListSubheader, {\n name: 'MuiAutocomplete',\n slot: 'GroupLabel',\n overridesResolver: (props, styles) => styles.groupLabel\n})(({\n theme\n}) => ({\n backgroundColor: (theme.vars || theme).palette.background.paper,\n top: -8\n}));\nconst AutocompleteGroupUl = styled('ul', {\n name: 'MuiAutocomplete',\n slot: 'GroupUl',\n overridesResolver: (props, styles) => styles.groupUl\n})({\n padding: 0,\n [`& .${autocompleteClasses.option}`]: {\n paddingLeft: 24\n }\n});\nexport { createFilterOptions };\nconst Autocomplete = /*#__PURE__*/React.forwardRef(function Autocomplete(inProps, ref) {\n var _slotProps$clearIndic, _slotProps$paper, _slotProps$popper, _slotProps$popupIndic;\n const props = useThemeProps({\n props: inProps,\n name: 'MuiAutocomplete'\n });\n\n /* eslint-disable @typescript-eslint/no-unused-vars */\n const {\n autoComplete = false,\n autoHighlight = false,\n autoSelect = false,\n blurOnSelect = false,\n ChipProps,\n className,\n clearIcon = _ClearIcon || (_ClearIcon = /*#__PURE__*/_jsx(ClearIcon, {\n fontSize: \"small\"\n })),\n clearOnBlur = !props.freeSolo,\n clearOnEscape = false,\n clearText = 'Clear',\n closeText = 'Close',\n componentsProps = {},\n defaultValue = props.multiple ? [] : null,\n disableClearable = false,\n disableCloseOnSelect = false,\n disabled = false,\n disabledItemsFocusable = false,\n disableListWrap = false,\n disablePortal = false,\n filterSelectedOptions = false,\n forcePopupIcon = 'auto',\n freeSolo = false,\n fullWidth = false,\n getLimitTagsText = more => `+${more}`,\n getOptionLabel: getOptionLabelProp,\n groupBy,\n handleHomeEndKeys = !props.freeSolo,\n includeInputInList = false,\n limitTags = -1,\n ListboxComponent = 'ul',\n ListboxProps,\n loading = false,\n loadingText = 'Loading…',\n multiple = false,\n noOptionsText = 'No options',\n openOnFocus = false,\n openText = 'Open',\n PaperComponent = Paper,\n PopperComponent = Popper,\n popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = /*#__PURE__*/_jsx(ArrowDropDownIcon, {})),\n readOnly = false,\n renderGroup: renderGroupProp,\n renderInput,\n renderOption: renderOptionProp,\n renderTags,\n selectOnFocus = !props.freeSolo,\n size = 'medium',\n slotProps = {}\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n /* eslint-enable @typescript-eslint/no-unused-vars */\n\n const {\n getRootProps,\n getInputProps,\n getInputLabelProps,\n getPopupIndicatorProps,\n getClearProps,\n getTagProps,\n getListboxProps,\n getOptionProps,\n value,\n dirty,\n expanded,\n id,\n popupOpen,\n focused,\n focusedTag,\n anchorEl,\n setAnchorEl,\n inputValue,\n groupedOptions\n } = useAutocomplete(_extends({}, props, {\n componentName: 'Autocomplete'\n }));\n const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;\n const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;\n const {\n onMouseDown: handleInputMouseDown\n } = getInputProps();\n const {\n ref: externalListboxRef\n } = ListboxProps != null ? ListboxProps : {};\n const _getListboxProps = getListboxProps(),\n {\n ref: listboxRef\n } = _getListboxProps,\n otherListboxProps = _objectWithoutPropertiesLoose(_getListboxProps, _excluded2);\n const combinedListboxRef = useForkRef(listboxRef, externalListboxRef);\n const defaultGetOptionLabel = option => {\n var _option$label;\n return (_option$label = option.label) != null ? _option$label : option;\n };\n const getOptionLabel = getOptionLabelProp || defaultGetOptionLabel;\n\n // If you modify this, make sure to keep the `AutocompleteOwnerState` type in sync.\n const ownerState = _extends({}, props, {\n disablePortal,\n expanded,\n focused,\n fullWidth,\n getOptionLabel,\n hasClearIcon,\n hasPopupIcon,\n inputFocused: focusedTag === -1,\n popupOpen,\n size\n });\n const classes = useUtilityClasses(ownerState);\n let startAdornment;\n if (multiple && value.length > 0) {\n const getCustomizedTagProps = params => _extends({\n className: classes.tag,\n disabled\n }, getTagProps(params));\n if (renderTags) {\n startAdornment = renderTags(value, getCustomizedTagProps, ownerState);\n } else {\n startAdornment = value.map((option, index) => /*#__PURE__*/_jsx(Chip, _extends({\n label: getOptionLabel(option),\n size: size\n }, getCustomizedTagProps({\n index\n }), ChipProps)));\n }\n }\n if (limitTags > -1 && Array.isArray(startAdornment)) {\n const more = startAdornment.length - limitTags;\n if (!focused && more > 0) {\n startAdornment = startAdornment.splice(0, limitTags);\n startAdornment.push( /*#__PURE__*/_jsx(\"span\", {\n className: classes.tag,\n children: getLimitTagsText(more)\n }, startAdornment.length));\n }\n }\n const defaultRenderGroup = params => /*#__PURE__*/_jsxs(\"li\", {\n children: [/*#__PURE__*/_jsx(AutocompleteGroupLabel, {\n className: classes.groupLabel,\n ownerState: ownerState,\n component: \"div\",\n children: params.group\n }), /*#__PURE__*/_jsx(AutocompleteGroupUl, {\n className: classes.groupUl,\n ownerState: ownerState,\n children: params.children\n })]\n }, params.key);\n const renderGroup = renderGroupProp || defaultRenderGroup;\n const defaultRenderOption = (props2, option) => {\n // Need to clearly apply key because of https://github.com/vercel/next.js/issues/55642\n return /*#__PURE__*/_createElement(\"li\", _extends({}, props2, {\n key: props2.key\n }), getOptionLabel(option));\n };\n const renderOption = renderOptionProp || defaultRenderOption;\n const renderListOption = (option, index) => {\n const optionProps = getOptionProps({\n option,\n index\n });\n return renderOption(_extends({}, optionProps, {\n className: classes.option\n }), option, {\n selected: optionProps['aria-selected'],\n index,\n inputValue\n }, ownerState);\n };\n const clearIndicatorSlotProps = (_slotProps$clearIndic = slotProps.clearIndicator) != null ? _slotProps$clearIndic : componentsProps.clearIndicator;\n const paperSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : componentsProps.paper;\n const popperSlotProps = (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper;\n const popupIndicatorSlotProps = (_slotProps$popupIndic = slotProps.popupIndicator) != null ? _slotProps$popupIndic : componentsProps.popupIndicator;\n const renderAutocompletePopperChildren = children => /*#__PURE__*/_jsx(AutocompletePopper, _extends({\n as: PopperComponent,\n disablePortal: disablePortal,\n style: {\n width: anchorEl ? anchorEl.clientWidth : null\n },\n ownerState: ownerState,\n role: \"presentation\",\n anchorEl: anchorEl,\n open: popupOpen\n }, popperSlotProps, {\n className: clsx(classes.popper, popperSlotProps == null ? void 0 : popperSlotProps.className),\n children: /*#__PURE__*/_jsx(AutocompletePaper, _extends({\n ownerState: ownerState,\n as: PaperComponent\n }, paperSlotProps, {\n className: clsx(classes.paper, paperSlotProps == null ? void 0 : paperSlotProps.className),\n children: children\n }))\n }));\n let autocompletePopper = null;\n if (!loading && groupedOptions.length > 0) {\n autocompletePopper = renderAutocompletePopperChildren( /*#__PURE__*/_jsx(AutocompleteListbox, _extends({\n as: ListboxComponent,\n className: classes.listbox,\n ownerState: ownerState\n }, otherListboxProps, ListboxProps, {\n ref: combinedListboxRef,\n children: groupedOptions.map((option, index) => {\n if (groupBy) {\n return renderGroup({\n key: option.key,\n group: option.group,\n children: option.options.map((option2, index2) => renderListOption(option2, option.index + index2))\n });\n }\n return renderListOption(option, index);\n })\n })));\n } else if (loading && groupedOptions.length === 0) {\n autocompletePopper = renderAutocompletePopperChildren( /*#__PURE__*/_jsx(AutocompleteLoading, {\n className: classes.loading,\n ownerState: ownerState,\n children: loadingText\n }));\n } else if (groupedOptions.length === 0 && !freeSolo && !loading) {\n autocompletePopper = renderAutocompletePopperChildren( /*#__PURE__*/_jsx(AutocompleteNoOptions, {\n className: classes.noOptions,\n ownerState: ownerState,\n role: \"presentation\",\n onMouseDown: event => {\n // Prevent input blur when interacting with the \"no options\" content\n event.preventDefault();\n },\n children: noOptionsText\n }));\n }\n return /*#__PURE__*/_jsxs(React.Fragment, {\n children: [/*#__PURE__*/_jsx(AutocompleteRoot, _extends({\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, getRootProps(other), {\n children: renderInput({\n id,\n disabled,\n fullWidth: true,\n size: size === 'small' ? 'small' : undefined,\n InputLabelProps: getInputLabelProps(),\n InputProps: _extends({\n ref: setAnchorEl,\n className: classes.inputRoot,\n startAdornment,\n onClick: event => {\n if (event.target === event.currentTarget) {\n handleInputMouseDown(event);\n }\n }\n }, (hasClearIcon || hasPopupIcon) && {\n endAdornment: /*#__PURE__*/_jsxs(AutocompleteEndAdornment, {\n className: classes.endAdornment,\n ownerState: ownerState,\n children: [hasClearIcon ? /*#__PURE__*/_jsx(AutocompleteClearIndicator, _extends({}, getClearProps(), {\n \"aria-label\": clearText,\n title: clearText,\n ownerState: ownerState\n }, clearIndicatorSlotProps, {\n className: clsx(classes.clearIndicator, clearIndicatorSlotProps == null ? void 0 : clearIndicatorSlotProps.className),\n children: clearIcon\n })) : null, hasPopupIcon ? /*#__PURE__*/_jsx(AutocompletePopupIndicator, _extends({}, getPopupIndicatorProps(), {\n disabled: disabled,\n \"aria-label\": popupOpen ? closeText : openText,\n title: popupOpen ? closeText : openText,\n ownerState: ownerState\n }, popupIndicatorSlotProps, {\n className: clsx(classes.popupIndicator, popupIndicatorSlotProps == null ? void 0 : popupIndicatorSlotProps.className),\n children: popupIcon\n })) : null]\n })\n }),\n inputProps: _extends({\n className: classes.input,\n disabled,\n readOnly\n }, getInputProps())\n })\n })), anchorEl ? autocompletePopper : null]\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? Autocomplete.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`, the portion of the selected suggestion that the user hasn't typed,\n * known as the completion string, appears inline after the input cursor in the textbox.\n * The inline completion string is visually highlighted and has a selected state.\n * @default false\n */\n autoComplete: PropTypes.bool,\n /**\n * If `true`, the first option is automatically highlighted.\n * @default false\n */\n autoHighlight: PropTypes.bool,\n /**\n * If `true`, the selected option becomes the value of the input\n * when the Autocomplete loses focus unless the user chooses\n * a different option or changes the character string in the input.\n *\n * When using the `freeSolo` mode, the typed value will be the input value\n * if the Autocomplete loses focus without highlighting an option.\n * @default false\n */\n autoSelect: PropTypes.bool,\n /**\n * Control if the input should be blurred when an option is selected:\n *\n * - `false` the input is not blurred.\n * - `true` the input is always blurred.\n * - `touch` the input is blurred after a touch event.\n * - `mouse` the input is blurred after a mouse event.\n * @default false\n */\n blurOnSelect: PropTypes.oneOfType([PropTypes.oneOf(['mouse', 'touch']), PropTypes.bool]),\n /**\n * Props applied to the [`Chip`](/material-ui/api/chip/) element.\n */\n ChipProps: PropTypes.object,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The icon to display in place of the default clear icon.\n * @default \n */\n clearIcon: PropTypes.node,\n /**\n * If `true`, the input's text is cleared on blur if no value is selected.\n *\n * Set it to `true` if you want to help the user enter a new value.\n * Set it to `false` if you want to help the user resume their search.\n * @default !props.freeSolo\n */\n clearOnBlur: PropTypes.bool,\n /**\n * If `true`, clear all values when the user presses escape and the popup is closed.\n * @default false\n */\n clearOnEscape: PropTypes.bool,\n /**\n * Override the default text for the *clear* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Clear'\n */\n clearText: PropTypes.string,\n /**\n * Override the default text for the *close popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Close'\n */\n closeText: PropTypes.string,\n /**\n * The props used for each slot inside.\n * @default {}\n */\n componentsProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The default value. Use when the component is not controlled.\n * @default props.multiple ? [] : null\n */\n defaultValue: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.defaultValue !== undefined && !Array.isArray(props.defaultValue)) {\n return new Error(['MUI: The Autocomplete expects the `defaultValue` prop to be an array when `multiple={true}` or undefined.', `However, ${props.defaultValue} was provided.`].join('\\n'));\n }\n return null;\n }),\n /**\n * If `true`, the input can't be cleared.\n * @default false\n */\n disableClearable: PropTypes.bool,\n /**\n * If `true`, the popup won't close when a value is selected.\n * @default false\n */\n disableCloseOnSelect: PropTypes.bool,\n /**\n * If `true`, the component is disabled.\n * @default false\n */\n disabled: PropTypes.bool,\n /**\n * If `true`, will allow focus on disabled items.\n * @default false\n */\n disabledItemsFocusable: PropTypes.bool,\n /**\n * If `true`, the list box in the popup will not wrap focus.\n * @default false\n */\n disableListWrap: PropTypes.bool,\n /**\n * If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.\n * @default false\n */\n disablePortal: PropTypes.bool,\n /**\n * A function that determines the filtered options to be rendered on search.\n *\n * @default createFilterOptions()\n * @param {Value[]} options The options to render.\n * @param {object} state The state of the component.\n * @returns {Value[]}\n */\n filterOptions: PropTypes.func,\n /**\n * If `true`, hide the selected options from the list box.\n * @default false\n */\n filterSelectedOptions: PropTypes.bool,\n /**\n * Force the visibility display of the popup icon.\n * @default 'auto'\n */\n forcePopupIcon: PropTypes.oneOfType([PropTypes.oneOf(['auto']), PropTypes.bool]),\n /**\n * If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.\n * @default false\n */\n freeSolo: PropTypes.bool,\n /**\n * If `true`, the input will take up the full width of its container.\n * @default false\n */\n fullWidth: PropTypes.bool,\n /**\n * The label to display when the tags are truncated (`limitTags`).\n *\n * @param {number} more The number of truncated tags.\n * @returns {ReactNode}\n * @default (more) => `+${more}`\n */\n getLimitTagsText: PropTypes.func,\n /**\n * Used to determine the disabled state for a given option.\n *\n * @param {Value} option The option to test.\n * @returns {boolean}\n */\n getOptionDisabled: PropTypes.func,\n /**\n * Used to determine the key for a given option.\n * This can be useful when the labels of options are not unique (since labels are used as keys by default).\n *\n * @param {Value} option The option to get the key for.\n * @returns {string | number}\n */\n getOptionKey: PropTypes.func,\n /**\n * Used to determine the string value for a given option.\n * It's used to fill the input (and the list box options if `renderOption` is not provided).\n *\n * If used in free solo mode, it must accept both the type of the options and a string.\n *\n * @param {Value} option\n * @returns {string}\n * @default (option) => option.label ?? option\n */\n getOptionLabel: PropTypes.func,\n /**\n * If provided, the options will be grouped under the returned string.\n * The groupBy value is also used as the text for group headings when `renderGroup` is not provided.\n *\n * @param {Value} options The options to group.\n * @returns {string}\n */\n groupBy: PropTypes.func,\n /**\n * If `true`, the component handles the \"Home\" and \"End\" keys when the popup is open.\n * It should move focus to the first option and last option, respectively.\n * @default !props.freeSolo\n */\n handleHomeEndKeys: PropTypes.bool,\n /**\n * This prop is used to help implement the accessibility logic.\n * If you don't provide an id it will fall back to a randomly generated one.\n */\n id: PropTypes.string,\n /**\n * If `true`, the highlight can move to the input.\n * @default false\n */\n includeInputInList: PropTypes.bool,\n /**\n * The input value.\n */\n inputValue: PropTypes.string,\n /**\n * Used to determine if the option represents the given value.\n * Uses strict equality by default.\n * ⚠️ Both arguments need to be handled, an option can only match with one value.\n *\n * @param {Value} option The option to test.\n * @param {Value} value The value to test against.\n * @returns {boolean}\n */\n isOptionEqualToValue: PropTypes.func,\n /**\n * The maximum number of tags that will be visible when not focused.\n * Set `-1` to disable the limit.\n * @default -1\n */\n limitTags: integerPropType,\n /**\n * The component used to render the listbox.\n * @default 'ul'\n */\n ListboxComponent: PropTypes.elementType,\n /**\n * Props applied to the Listbox element.\n */\n ListboxProps: PropTypes.object,\n /**\n * If `true`, the component is in a loading state.\n * This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, for example `options` are empty).\n * @default false\n */\n loading: PropTypes.bool,\n /**\n * Text to display when in a loading state.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Loading…'\n */\n loadingText: PropTypes.node,\n /**\n * If `true`, `value` must be an array and the menu will support multiple selections.\n * @default false\n */\n multiple: PropTypes.bool,\n /**\n * Text to display when there are no options.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'No options'\n */\n noOptionsText: PropTypes.node,\n /**\n * Callback fired when the value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {Value|Value[]} value The new value of the component.\n * @param {string} reason One of \"createOption\", \"selectOption\", \"removeOption\", \"blur\" or \"clear\".\n * @param {string} [details]\n */\n onChange: PropTypes.func,\n /**\n * Callback fired when the popup requests to be closed.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} reason Can be: `\"toggleInput\"`, `\"escape\"`, `\"selectOption\"`, `\"removeOption\"`, `\"blur\"`.\n */\n onClose: PropTypes.func,\n /**\n * Callback fired when the highlight option changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {Value} option The highlighted option.\n * @param {string} reason Can be: `\"keyboard\"`, `\"auto\"`, `\"mouse\"`, `\"touch\"`.\n */\n onHighlightChange: PropTypes.func,\n /**\n * Callback fired when the input value changes.\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n * @param {string} value The new value of the text input.\n * @param {string} reason Can be: `\"input\"` (user input), `\"reset\"` (programmatic change), `\"clear\"`.\n */\n onInputChange: PropTypes.func,\n /**\n * @ignore\n */\n onKeyDown: PropTypes.func,\n /**\n * Callback fired when the popup requests to be opened.\n * Use in controlled mode (see open).\n *\n * @param {React.SyntheticEvent} event The event source of the callback.\n */\n onOpen: PropTypes.func,\n /**\n * If `true`, the component is shown.\n */\n open: PropTypes.bool,\n /**\n * If `true`, the popup will open on input focus.\n * @default false\n */\n openOnFocus: PropTypes.bool,\n /**\n * Override the default text for the *open popup* icon button.\n *\n * For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).\n * @default 'Open'\n */\n openText: PropTypes.string,\n /**\n * Array of options.\n */\n options: PropTypes.array.isRequired,\n /**\n * The component used to render the body of the popup.\n * @default Paper\n */\n PaperComponent: PropTypes.elementType,\n /**\n * The component used to position the popup.\n * @default Popper\n */\n PopperComponent: PropTypes.elementType,\n /**\n * The icon to display in place of the default popup icon.\n * @default \n */\n popupIcon: PropTypes.node,\n /**\n * If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.\n * @default false\n */\n readOnly: PropTypes.bool,\n /**\n * Render the group.\n *\n * @param {AutocompleteRenderGroupParams} params The group to render.\n * @returns {ReactNode}\n */\n renderGroup: PropTypes.func,\n /**\n * Render the input.\n *\n * @param {object} params\n * @returns {ReactNode}\n */\n renderInput: PropTypes.func.isRequired,\n /**\n * Render the option, use `getOptionLabel` by default.\n *\n * @param {object} props The props to apply on the li element.\n * @param {Value} option The option to render.\n * @param {object} state The state of each option.\n * @param {object} ownerState The state of the Autocomplete component.\n * @returns {ReactNode}\n */\n renderOption: PropTypes.func,\n /**\n * Render the selected value.\n *\n * @param {Value[]} value The `value` provided to the component.\n * @param {function} getTagProps A tag props getter.\n * @param {object} ownerState The state of the Autocomplete component.\n * @returns {ReactNode}\n */\n renderTags: PropTypes.func,\n /**\n * If `true`, the input's text is selected on focus.\n * It helps the user clear the selected value.\n * @default !props.freeSolo\n */\n selectOnFocus: PropTypes.bool,\n /**\n * The size of the component.\n * @default 'medium'\n */\n size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['small', 'medium']), PropTypes.string]),\n /**\n * The props used for each slot inside.\n * @default {}\n */\n slotProps: PropTypes.shape({\n clearIndicator: PropTypes.object,\n paper: PropTypes.object,\n popper: PropTypes.object,\n popupIndicator: PropTypes.object\n }),\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The value of the autocomplete.\n *\n * The value must have reference equality with the option in order to be selected.\n * You can customize the equality behavior with the `isOptionEqualToValue` prop.\n */\n value: chainPropTypes(PropTypes.any, props => {\n if (props.multiple && props.value !== undefined && !Array.isArray(props.value)) {\n return new Error(['MUI: The Autocomplete expects the `value` prop to be an array when `multiple={true}` or undefined.', `However, ${props.value} was provided.`].join('\\n'));\n }\n return null;\n })\n} : void 0;\nexport default Autocomplete;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getAutocompleteUtilityClass(slot) {\n return generateUtilityClass('MuiAutocomplete', slot);\n}\nconst autocompleteClasses = generateUtilityClasses('MuiAutocomplete', ['root', 'expanded', 'fullWidth', 'focused', 'focusVisible', 'tag', 'tagSizeSmall', 'tagSizeMedium', 'hasPopupIcon', 'hasClearIcon', 'inputRoot', 'input', 'inputFocused', 'endAdornment', 'clearIndicator', 'popupIndicator', 'popupIndicatorOpen', 'popper', 'popperDisablePortal', 'paper', 'listbox', 'loading', 'noOptions', 'option', 'groupLabel', 'groupUl']);\nexport default autocompleteClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"className\", \"color\", \"component\", \"disableGutters\", \"disableSticky\", \"inset\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport capitalize from '../utils/capitalize';\nimport { getListSubheaderUtilityClass } from './listSubheaderClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n color,\n disableGutters,\n inset,\n disableSticky\n } = ownerState;\n const slots = {\n root: ['root', color !== 'default' && `color${capitalize(color)}`, !disableGutters && 'gutters', inset && 'inset', !disableSticky && 'sticky']\n };\n return composeClasses(slots, getListSubheaderUtilityClass, classes);\n};\nconst ListSubheaderRoot = styled('li', {\n name: 'MuiListSubheader',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, ownerState.color !== 'default' && styles[`color${capitalize(ownerState.color)}`], !ownerState.disableGutters && styles.gutters, ownerState.inset && styles.inset, !ownerState.disableSticky && styles.sticky];\n }\n})(({\n theme,\n ownerState\n}) => _extends({\n boxSizing: 'border-box',\n lineHeight: '48px',\n listStyle: 'none',\n color: (theme.vars || theme).palette.text.secondary,\n fontFamily: theme.typography.fontFamily,\n fontWeight: theme.typography.fontWeightMedium,\n fontSize: theme.typography.pxToRem(14)\n}, ownerState.color === 'primary' && {\n color: (theme.vars || theme).palette.primary.main\n}, ownerState.color === 'inherit' && {\n color: 'inherit'\n}, !ownerState.disableGutters && {\n paddingLeft: 16,\n paddingRight: 16\n}, ownerState.inset && {\n paddingLeft: 72\n}, !ownerState.disableSticky && {\n position: 'sticky',\n top: 0,\n zIndex: 1,\n backgroundColor: (theme.vars || theme).palette.background.paper\n}));\nconst ListSubheader = /*#__PURE__*/React.forwardRef(function ListSubheader(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiListSubheader'\n });\n const {\n className,\n color = 'default',\n component = 'li',\n disableGutters = false,\n disableSticky = false,\n inset = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n color,\n component,\n disableGutters,\n disableSticky,\n inset\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(ListSubheaderRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nListSubheader.muiSkipListHighlight = true;\nprocess.env.NODE_ENV !== \"production\" ? ListSubheader.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 * The content of the component.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The color of the component. It supports those theme colors that make sense for this component.\n * @default 'default'\n */\n color: PropTypes.oneOf(['default', 'inherit', 'primary']),\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * If `true`, the List Subheader will not have gutters.\n * @default false\n */\n disableGutters: PropTypes.bool,\n /**\n * If `true`, the List Subheader will not stick to the top during scroll.\n * @default false\n */\n disableSticky: PropTypes.bool,\n /**\n * If `true`, the List Subheader is indented.\n * @default false\n */\n inset: PropTypes.bool,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default ListSubheader;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getListSubheaderUtilityClass(slot) {\n return generateUtilityClass('MuiListSubheader', slot);\n}\nconst listSubheaderClasses = generateUtilityClasses('MuiListSubheader', ['root', 'colorPrimary', 'colorInherit', 'gutters', 'inset', 'sticky']);\nexport default listSubheaderClasses;","'use client';\n\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"animation\", \"className\", \"component\", \"height\", \"style\", \"variant\", \"width\"];\nlet _ = t => t,\n _t,\n _t2,\n _t3,\n _t4;\nimport * as React from 'react';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { keyframes, css } from '@mui/system';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha, unstable_getUnit as getUnit, unstable_toUnitless as toUnitless } from '../styles';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getSkeletonUtilityClass } from './skeletonClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n animation,\n hasChildren,\n width,\n height\n } = ownerState;\n const slots = {\n root: ['root', variant, animation, hasChildren && 'withChildren', hasChildren && !width && 'fitContent', hasChildren && !height && 'heightAuto']\n };\n return composeClasses(slots, getSkeletonUtilityClass, classes);\n};\nconst pulseKeyframe = keyframes(_t || (_t = _`\n 0% {\n opacity: 1;\n }\n\n 50% {\n opacity: 0.4;\n }\n\n 100% {\n opacity: 1;\n }\n`));\nconst waveKeyframe = keyframes(_t2 || (_t2 = _`\n 0% {\n transform: translateX(-100%);\n }\n\n 50% {\n /* +0.5s of delay between each loop */\n transform: translateX(100%);\n }\n\n 100% {\n transform: translateX(100%);\n }\n`));\nconst SkeletonRoot = styled('span', {\n name: 'MuiSkeleton',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], ownerState.animation !== false && styles[ownerState.animation], ownerState.hasChildren && styles.withChildren, ownerState.hasChildren && !ownerState.width && styles.fitContent, ownerState.hasChildren && !ownerState.height && styles.heightAuto];\n }\n})(({\n theme,\n ownerState\n}) => {\n const radiusUnit = getUnit(theme.shape.borderRadius) || 'px';\n const radiusValue = toUnitless(theme.shape.borderRadius);\n return _extends({\n display: 'block',\n // Create a \"on paper\" color with sufficient contrast retaining the color\n backgroundColor: theme.vars ? theme.vars.palette.Skeleton.bg : alpha(theme.palette.text.primary, theme.palette.mode === 'light' ? 0.11 : 0.13),\n height: '1.2em'\n }, ownerState.variant === 'text' && {\n marginTop: 0,\n marginBottom: 0,\n height: 'auto',\n transformOrigin: '0 55%',\n transform: 'scale(1, 0.60)',\n borderRadius: `${radiusValue}${radiusUnit}/${Math.round(radiusValue / 0.6 * 10) / 10}${radiusUnit}`,\n '&:empty:before': {\n content: '\"\\\\00a0\"'\n }\n }, ownerState.variant === 'circular' && {\n borderRadius: '50%'\n }, ownerState.variant === 'rounded' && {\n borderRadius: (theme.vars || theme).shape.borderRadius\n }, ownerState.hasChildren && {\n '& > *': {\n visibility: 'hidden'\n }\n }, ownerState.hasChildren && !ownerState.width && {\n maxWidth: 'fit-content'\n }, ownerState.hasChildren && !ownerState.height && {\n height: 'auto'\n });\n}, ({\n ownerState\n}) => ownerState.animation === 'pulse' && css(_t3 || (_t3 = _`\n animation: ${0} 2s ease-in-out 0.5s infinite;\n `), pulseKeyframe), ({\n ownerState,\n theme\n}) => ownerState.animation === 'wave' && css(_t4 || (_t4 = _`\n position: relative;\n overflow: hidden;\n\n /* Fix bug in Safari https://bugs.webkit.org/show_bug.cgi?id=68196 */\n -webkit-mask-image: -webkit-radial-gradient(white, black);\n\n &::after {\n animation: ${0} 2s linear 0.5s infinite;\n background: linear-gradient(\n 90deg,\n transparent,\n ${0},\n transparent\n );\n content: '';\n position: absolute;\n transform: translateX(-100%); /* Avoid flash during server-side hydration */\n bottom: 0;\n left: 0;\n right: 0;\n top: 0;\n }\n `), waveKeyframe, (theme.vars || theme).palette.action.hover));\nconst Skeleton = /*#__PURE__*/React.forwardRef(function Skeleton(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiSkeleton'\n });\n const {\n animation = 'pulse',\n className,\n component = 'span',\n height,\n style,\n variant = 'text',\n width\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n const ownerState = _extends({}, props, {\n animation,\n component,\n variant,\n hasChildren: Boolean(other.children)\n });\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(SkeletonRoot, _extends({\n as: component,\n ref: ref,\n className: clsx(classes.root, className),\n ownerState: ownerState\n }, other, {\n style: _extends({\n width,\n height\n }, style)\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? Skeleton.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 * The animation.\n * If `false` the animation effect is disabled.\n * @default 'pulse'\n */\n animation: PropTypes.oneOf(['pulse', 'wave', false]),\n /**\n * Optional children to infer width and height from.\n */\n children: PropTypes.node,\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n /**\n * @ignore\n */\n className: PropTypes.string,\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n /**\n * Height of the skeleton.\n * Useful when you don't want to adapt the skeleton to a text element but for instance a card.\n */\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n style: PropTypes.object,\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n /**\n * The type of content that will be rendered.\n * @default 'text'\n */\n variant: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['circular', 'rectangular', 'rounded', 'text']), PropTypes.string]),\n /**\n * Width of the skeleton.\n * Useful when the skeleton is inside an inline element with no width of its own.\n */\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n} : void 0;\nexport default Skeleton;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getSkeletonUtilityClass(slot) {\n return generateUtilityClass('MuiSkeleton', slot);\n}\nconst skeletonClasses = generateUtilityClasses('MuiSkeleton', ['root', 'text', 'rectangular', 'rounded', 'circular', 'pulse', 'wave', 'withChildren', 'fitContent', 'heightAuto']);\nexport default skeletonClasses;","export function isUnitless(value) {\n return String(parseFloat(value)).length === String(value).length;\n}\n\n// Ported from Compass\n// https://github.com/Compass/compass/blob/master/core/stylesheets/compass/typography/_units.scss\n// Emulate the sass function \"unit\"\nexport function getUnit(input) {\n return String(input).match(/[\\d.\\-+]*\\s*(.*)/)[1] || '';\n}\n\n// Emulate the sass function \"unitless\"\nexport function toUnitless(length) {\n return parseFloat(length);\n}\n\n// Convert any CSS or value to any another.\n// From https://github.com/KyleAMathews/convert-css-length\nexport function convertLength(baseFontSize) {\n return (length, toUnit) => {\n const fromUnit = getUnit(length);\n\n // Optimize for cases where `from` and `to` units are accidentally the same.\n if (fromUnit === toUnit) {\n return length;\n }\n\n // Convert input length to pixels.\n let pxLength = toUnitless(length);\n if (fromUnit !== 'px') {\n if (fromUnit === 'em') {\n pxLength = toUnitless(length) * toUnitless(baseFontSize);\n } else if (fromUnit === 'rem') {\n pxLength = toUnitless(length) * toUnitless(baseFontSize);\n }\n }\n\n // Convert length in pixels to the output unit\n let outputLength = pxLength;\n if (toUnit !== 'px') {\n if (toUnit === 'em') {\n outputLength = pxLength / toUnitless(baseFontSize);\n } else if (toUnit === 'rem') {\n outputLength = pxLength / toUnitless(baseFontSize);\n } else {\n return length;\n }\n }\n return parseFloat(outputLength.toFixed(5)) + toUnit;\n };\n}\nexport function alignProperty({\n size,\n grid\n}) {\n const sizeBelow = size - size % grid;\n const sizeAbove = sizeBelow + grid;\n return size - sizeBelow < sizeAbove - size ? sizeBelow : sizeAbove;\n}\n\n// fontGrid finds a minimal grid (in rem) for the fontSize values so that the\n// lineHeight falls under a x pixels grid, 4px in the case of Material Design,\n// without changing the relative line height\nexport function fontGrid({\n lineHeight,\n pixels,\n htmlFontSize\n}) {\n return pixels / (lineHeight * htmlFontSize);\n}\n\n/**\n * generate a responsive version of a given CSS property\n * @example\n * responsiveProperty({\n * cssProperty: 'fontSize',\n * min: 15,\n * max: 20,\n * unit: 'px',\n * breakpoints: [300, 600],\n * })\n *\n * // this returns\n *\n * {\n * fontSize: '15px',\n * '@media (min-width:300px)': {\n * fontSize: '17.5px',\n * },\n * '@media (min-width:600px)': {\n * fontSize: '20px',\n * },\n * }\n * @param {Object} params\n * @param {string} params.cssProperty - The CSS property to be made responsive\n * @param {number} params.min - The smallest value of the CSS property\n * @param {number} params.max - The largest value of the CSS property\n * @param {string} [params.unit] - The unit to be used for the CSS property\n * @param {Array.number} [params.breakpoints] - An array of breakpoints\n * @param {number} [params.alignStep] - Round scaled value to fall under this grid\n * @returns {Object} responsive styles for {params.cssProperty}\n */\nexport function responsiveProperty({\n cssProperty,\n min,\n max,\n unit = 'rem',\n breakpoints = [600, 900, 1200],\n transform = null\n}) {\n const output = {\n [cssProperty]: `${min}${unit}`\n };\n const factor = (max - min) / breakpoints[breakpoints.length - 1];\n breakpoints.forEach(breakpoint => {\n let value = min + factor * breakpoint;\n if (transform !== null) {\n value = transform(value);\n }\n output[`@media (min-width:${breakpoint}px)`] = {\n [cssProperty]: `${Math.round(value * 10000) / 10000}${unit}`\n };\n });\n return output;\n}"],"names":["stripDiacritics","string","normalize","replace","createFilterOptions","config","ignoreAccents","ignoreCase","limit","matchFrom","stringify","trim","options","inputValue","getOptionLabel","input","toLowerCase","filteredOptions","filter","option","candidate","indexOf","slice","findIndex","array","comp","i","length","defaultFilterOptions","pageSize","defaultIsActiveElementInListbox","listboxRef","_listboxRef$current$p","current","parentElement","contains","document","activeElement","useAutocomplete","props","unstable_isActiveElementInListbox","unstable_classNamePrefix","autoComplete","autoHighlight","autoSelect","blurOnSelect","clearOnBlur","freeSolo","clearOnEscape","componentName","defaultValue","multiple","disableClearable","disableCloseOnSelect","disabled","disabledProp","disabledItemsFocusable","disableListWrap","filterOptions","filterSelectedOptions","getOptionDisabled","getOptionKey","getOptionLabelProp","_option$label","label","groupBy","handleHomeEndKeys","id","idProp","includeInputInList","inputValueProp","isOptionEqualToValue","value","onChange","onClose","onHighlightChange","onInputChange","onOpen","open","openProp","openOnFocus","readOnly","selectOnFocus","valueProp","optionLabel","String","ignoreFocus","firstFocus","inputRef","anchorEl","setAnchorEl","focusedTag","setFocusedTag","defaultHighlighted","highlightedIndexRef","setValueState","controlled","default","name","setInputValueState","state","focused","setFocused","resetInputValue","event","newValue","newInputValue","setOpenState","inputPristine","setInputPristine","inputValueIsSelectedValue","popupOpen","some","value2","previousProps","valueChange","listboxAvailable","focusTag","tagToFocus","focus","querySelector","setHighlightedIndex","index","reason","removeAttribute","setAttribute","prev","classList","remove","listboxNode","getAttribute","scrollTop","add","scrollHeight","clientHeight","element","scrollBottom","elementBottom","offsetTop","offsetHeight","changeHighlightedIndex","diff","direction","nextIndex","nextFocus","nextFocusDisabled","hasAttribute","validOptionIndex","maxIndex","newIndex","Math","abs","getNextIndex","setSelectionRange","syncHighlightedIndex","previousHighlightedOptionIndex","every","val","value1","previousHighlightedOption","getPreviousHighlightedOptionIndex","valueItem","currentOption","itemIndex","optionItem","handleListboxRef","node","handleOpen","handleClose","handleValue","details","isTouch","selectNewValue","reasonProp","origin","Array","isArray","push","splice","ctrlKey","metaKey","blur","handleFocusTag","nextTag","validTagIndex","handleClear","handleKeyDown","other","onKeyDown","defaultMuiPrevented","key","which","preventDefault","stopPropagation","handleFocus","handleBlur","handleInputChange","target","handleOptionMouseMove","Number","currentTarget","handleOptionTouchStart","handleOptionClick","handleTagDelete","handlePopupIndicator","handleMouseDown","handleClick","selectionEnd","selectionStart","select","handleInputMouseDown","dirty","groupedOptions","Map","reduce","acc","group","getRootProps","onMouseDown","onClick","getInputLabelProps","htmlFor","getInputProps","onBlur","onFocus","undefined","ref","autoCapitalize","spellCheck","role","getClearProps","tabIndex","type","getPopupIndicatorProps","getTagProps","onDelete","getListboxProps","getOptionProps","_getOptionKey","selected","onMouseMove","onTouchStart","expanded","_ClearIcon","_ArrowDropDownIcon","_excluded","_excluded2","useThemeProps","AutocompleteRoot","slot","overridesResolver","styles","ownerState","fullWidth","hasClearIcon","hasPopupIcon","inputFocused","size","tag","inputRoot","root","clearIndicator","visibility","margin","maxWidth","flexWrap","paddingRight","width","minWidth","paddingBottom","padding","sizeSmall","endAdornment","right","paddingTop","paddingLeft","hiddenLabel","flexGrow","textOverflow","opacity","variants","style","AutocompleteEndAdornment","position","top","transform","AutocompleteClearIndicator","marginRight","AutocompletePopupIndicator","popupIndicator","popupIndicatorOpen","AutocompletePopper","popper","disablePortal","popperDisablePortal","theme","zIndex","vars","modal","AutocompletePaper","paper","typography","body1","overflow","AutocompleteLoading","loading","color","palette","text","secondary","AutocompleteNoOptions","noOptions","AutocompleteListbox","listbox","listStyle","maxHeight","minHeight","display","justifyContent","alignItems","cursor","boxSizing","outline","WebkitTapHighlightColor","breakpoints","up","backgroundColor","action","hover","disabledOpacity","pointerEvents","focusVisible","primary","mainChannel","selectedOpacity","main","hoverOpacity","focusOpacity","AutocompleteGroupLabel","groupLabel","background","AutocompleteGroupUl","groupUl","inProps","_slotProps$clearIndic","_slotProps$paper","_slotProps$popper","_slotProps$popupIndic","ChipProps","className","clearIcon","fontSize","clearText","closeText","componentsProps","forcePopupIcon","getLimitTagsText","more","limitTags","ListboxComponent","ListboxProps","loadingText","noOptionsText","openText","PaperComponent","PopperComponent","popupIcon","A","renderGroup","renderGroupProp","renderInput","renderOption","renderOptionProp","renderTags","slotProps","externalListboxRef","_getListboxProps","otherListboxProps","combinedListboxRef","classes","slots","useUtilityClasses","startAdornment","getCustomizedTagProps","params","map","children","component","props2","renderListOption","optionProps","clearIndicatorSlotProps","paperSlotProps","popperSlotProps","popupIndicatorSlotProps","renderAutocompletePopperChildren","as","clientWidth","autocompletePopper","option2","index2","InputLabelProps","InputProps","title","inputProps","getAutocompleteUtilityClass","ListSubheaderRoot","disableGutters","gutters","inset","disableSticky","sticky","lineHeight","fontFamily","fontWeight","fontWeightMedium","pxToRem","ListSubheader","g","muiSkipListHighlight","getListSubheaderUtilityClass","_t","_t2","_t3","_t4","_","t","pulseKeyframe","keyframes","waveKeyframe","SkeletonRoot","variant","animation","hasChildren","withChildren","fitContent","height","heightAuto","radiusUnit","shape","borderRadius","radiusValue","Skeleton","bg","alpha","mode","marginTop","marginBottom","transformOrigin","round","content","css","Boolean","getSkeletonUtilityClass","isUnitless","parseFloat","getUnit","match","toUnitless","convertLength","baseFontSize","toUnit","fromUnit","pxLength","outputLength","toFixed","alignProperty","grid","sizeBelow","sizeAbove","fontGrid","pixels","htmlFontSize","responsiveProperty","cssProperty","min","max","unit","output","factor","forEach","breakpoint"],"sourceRoot":""}