Files
vrpmdv-web/vrpmdvfrontend/tmpDir/vscode-firefox-debug-profile-11775616-b228-42e3-b4e6-27d43f31aaa2/cache2/entries/1D3CD029126AE3BDCDC5428FEE4A16E3BAF2A1BA
2024-03-19 17:06:47 +01:00

26702 lines
924 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import {
GlobalStyles_default
} from "/node_modules/.vite/deps/chunk-CP7ACD2X.js?v=e565559a";
import {
IconButton_default
} from "/node_modules/.vite/deps/chunk-3GAMWLIU.js?v=e565559a";
import {
ListContext_default,
MenuItem_default
} from "/node_modules/.vite/deps/chunk-PNWDWTKK.js?v=e565559a";
import {
ButtonBase_default,
Transition_default
} from "/node_modules/.vite/deps/chunk-S5U6WW2O.js?v=e565559a";
import {
require_react_dom
} from "/node_modules/.vite/deps/chunk-GYWC62UC.js?v=e565559a";
import {
Stack_default
} from "/node_modules/.vite/deps/chunk-THSQWL2I.js?v=e565559a";
import {
getUnit,
toUnitless
} from "/node_modules/.vite/deps/chunk-FUCRG4FR.js?v=e565559a";
import {
Toolbar_default
} from "/node_modules/.vite/deps/chunk-TRF4PXRY.js?v=e565559a";
import {
Typography_default
} from "/node_modules/.vite/deps/chunk-HDSJXS2F.js?v=e565559a";
import {
debounce_default,
init_debounce,
init_isMuiElement,
init_ownerDocument,
init_ownerWindow,
init_unsupportedProp,
init_useControlled as init_useControlled2,
init_useId as init_useId2,
isMuiElement_default,
ownerDocument_default,
ownerWindow_default,
unsupportedProp_default,
useControlled_default,
useId_default
} from "/node_modules/.vite/deps/chunk-ZP5VL7U3.js?v=e565559a";
import {
init_useEnhancedEffect,
useEnhancedEffect_default as useEnhancedEffect_default2
} from "/node_modules/.vite/deps/chunk-4DU7PQ4H.js?v=e565559a";
import {
init_useEventCallback,
init_useForkRef,
init_useIsFocusVisible,
useEventCallback_default as useEventCallback_default2,
useForkRef_default,
useIsFocusVisible_default
} from "/node_modules/.vite/deps/chunk-6KM2W5YZ.js?v=e565559a";
import {
Paper_default
} from "/node_modules/.vite/deps/chunk-X4VSBXII.js?v=e565559a";
import {
useTheme
} from "/node_modules/.vite/deps/chunk-THS5IPV6.js?v=e565559a";
import {
alpha,
createBox,
useRtl
} from "/node_modules/.vite/deps/chunk-KZ7CH5EB.js?v=e565559a";
import {
appendOwnerState,
areArraysEqual,
createUseThemeProps,
extractEventHandlers,
isHostComponent,
resolveComponentProps,
useClassNamesOverride,
useRootElementName,
useSlotProps
} from "/node_modules/.vite/deps/chunk-JZEQH2VB.js?v=e565559a";
import {
createSvgIcon,
init_createSvgIcon
} from "/node_modules/.vite/deps/chunk-QTELJKGF.js?v=e565559a";
import {
HTMLElementType,
Timeout,
chainPropTypes,
createChainedFunction,
debounce,
elementAcceptingRef_default,
elementTypeAcceptingRef_default,
exactProp,
getScrollbarSize,
init_HTMLElementType,
init_chainPropTypes,
init_elementAcceptingRef,
init_elementTypeAcceptingRef,
init_getScrollbarSize,
init_integerPropType,
init_refType,
init_useControlled,
init_useId,
init_usePreviousProps,
init_useTimeout,
init_utils,
integerPropType_default,
ownerDocument,
ownerWindow,
refType_default,
setRef,
useControlled,
useEnhancedEffect_default,
useEventCallback_default,
useForkRef,
useId,
useIsFocusVisible,
usePreviousProps_default,
useTimeout,
visuallyHidden_default
} from "/node_modules/.vite/deps/chunk-XLLUKA3M.js?v=e565559a";
import {
capitalize_default,
init_capitalize
} from "/node_modules/.vite/deps/chunk-CTZBRISU.js?v=e565559a";
import {
init_styled,
rootShouldForwardProp,
slotShouldForwardProp,
styled_default
} from "/node_modules/.vite/deps/chunk-EALQ3RGL.js?v=e565559a";
import {
init_useThemeProps,
useThemeProps
} from "/node_modules/.vite/deps/chunk-A2ETMCKW.js?v=e565559a";
import {
ClassNameGenerator_default,
_extends,
_objectWithoutPropertiesLoose,
clamp_default,
clsx_default,
composeClasses,
createTheme_default2 as createTheme_default,
css,
deepmerge,
generateUtilityClass,
generateUtilityClasses,
globalStateClasses,
identifier_default,
init_clsx,
init_composeClasses,
init_deepmerge,
init_extends,
init_formatMuiErrorMessage,
init_generateUtilityClass,
init_generateUtilityClasses,
init_identifier,
init_objectWithoutPropertiesLoose,
init_resolveProps,
init_styled_engine,
keyframes,
require_colorManipulator,
require_prop_types,
require_react_is,
resolveProps,
styled_engine_exports
} from "/node_modules/.vite/deps/chunk-2K22GOZQ.js?v=e565559a";
import {
require_jsx_runtime
} from "/node_modules/.vite/deps/chunk-ZYX7IIE4.js?v=e565559a";
import {
require_react
} from "/node_modules/.vite/deps/chunk-HS5T2ZWL.js?v=e565559a";
import {
__commonJS,
__toCommonJS,
__toESM
} from "/node_modules/.vite/deps/chunk-AUZ3RYOM.js?v=e565559a";
// node_modules/@mui/system/useThemeWithoutDefault.js
var require_useThemeWithoutDefault = __commonJS({
"node_modules/@mui/system/useThemeWithoutDefault.js"(exports) {
"use strict";
"use client";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var React126 = _interopRequireWildcard(require_react());
var _styledEngine = (init_styled_engine(), __toCommonJS(styled_engine_exports));
function _getRequireWildcardCache(e) {
if ("function" != typeof WeakMap)
return null;
var r = /* @__PURE__ */ new WeakMap(), t = /* @__PURE__ */ new WeakMap();
return (_getRequireWildcardCache = function(e2) {
return e2 ? t : r;
})(e);
}
function _interopRequireWildcard(e, r) {
if (!r && e && e.__esModule)
return e;
if (null === e || "object" != typeof e && "function" != typeof e)
return { default: e };
var t = _getRequireWildcardCache(r);
if (t && t.has(e))
return t.get(e);
var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor;
for (var u in e)
if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) {
var i = a ? Object.getOwnPropertyDescriptor(e, u) : null;
i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u];
}
return n.default = e, t && t.set(e, n), n;
}
function isObjectEmpty(obj) {
return Object.keys(obj).length === 0;
}
function useTheme3(defaultTheme2 = null) {
const contextTheme = React126.useContext(_styledEngine.ThemeContext);
return !contextTheme || isObjectEmpty(contextTheme) ? defaultTheme2 : contextTheme;
}
var _default = exports.default = useTheme3;
}
});
// node_modules/@mui/base/composeClasses/index.js
init_utils();
// node_modules/@mui/base/ClickAwayListener/ClickAwayListener.js
var React = __toESM(require_react());
var import_prop_types = __toESM(require_prop_types());
init_utils();
var import_jsx_runtime = __toESM(require_jsx_runtime());
function mapEventPropToEvent(eventProp) {
return eventProp.substring(2).toLowerCase();
}
function clickedRootScrollbar(event, doc) {
return doc.documentElement.clientWidth < event.clientX || doc.documentElement.clientHeight < event.clientY;
}
function ClickAwayListener(props) {
const {
children,
disableReactTree = false,
mouseEvent = "onClick",
onClickAway,
touchEvent = "onTouchEnd"
} = props;
const movedRef = React.useRef(false);
const nodeRef = React.useRef(null);
const activatedRef = React.useRef(false);
const syntheticEventRef = React.useRef(false);
React.useEffect(() => {
setTimeout(() => {
activatedRef.current = true;
}, 0);
return () => {
activatedRef.current = false;
};
}, []);
const handleRef = useForkRef(
// @ts-expect-error TODO upstream fix
children.ref,
nodeRef
);
const handleClickAway = useEventCallback_default((event) => {
const insideReactTree = syntheticEventRef.current;
syntheticEventRef.current = false;
const doc = ownerDocument(nodeRef.current);
if (!activatedRef.current || !nodeRef.current || "clientX" in event && clickedRootScrollbar(event, doc)) {
return;
}
if (movedRef.current) {
movedRef.current = false;
return;
}
let insideDOM;
if (event.composedPath) {
insideDOM = event.composedPath().indexOf(nodeRef.current) > -1;
} else {
insideDOM = !doc.documentElement.contains(
// @ts-expect-error returns `false` as intended when not dispatched from a Node
event.target
) || nodeRef.current.contains(
// @ts-expect-error returns `false` as intended when not dispatched from a Node
event.target
);
}
if (!insideDOM && (disableReactTree || !insideReactTree)) {
onClickAway(event);
}
});
const createHandleSynthetic = (handlerName) => (event) => {
syntheticEventRef.current = true;
const childrenPropsHandler = children.props[handlerName];
if (childrenPropsHandler) {
childrenPropsHandler(event);
}
};
const childrenProps = {
ref: handleRef
};
if (touchEvent !== false) {
childrenProps[touchEvent] = createHandleSynthetic(touchEvent);
}
React.useEffect(() => {
if (touchEvent !== false) {
const mappedTouchEvent = mapEventPropToEvent(touchEvent);
const doc = ownerDocument(nodeRef.current);
const handleTouchMove = () => {
movedRef.current = true;
};
doc.addEventListener(mappedTouchEvent, handleClickAway);
doc.addEventListener("touchmove", handleTouchMove);
return () => {
doc.removeEventListener(mappedTouchEvent, handleClickAway);
doc.removeEventListener("touchmove", handleTouchMove);
};
}
return void 0;
}, [handleClickAway, touchEvent]);
if (mouseEvent !== false) {
childrenProps[mouseEvent] = createHandleSynthetic(mouseEvent);
}
React.useEffect(() => {
if (mouseEvent !== false) {
const mappedMouseEvent = mapEventPropToEvent(mouseEvent);
const doc = ownerDocument(nodeRef.current);
doc.addEventListener(mappedMouseEvent, handleClickAway);
return () => {
doc.removeEventListener(mappedMouseEvent, handleClickAway);
};
}
return void 0;
}, [handleClickAway, mouseEvent]);
return (0, import_jsx_runtime.jsx)(React.Fragment, {
children: React.cloneElement(children, childrenProps)
});
}
true ? ClickAwayListener.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The wrapped element.
*/
children: elementAcceptingRef_default.isRequired,
/**
* If `true`, the React tree is ignored and only the DOM tree is considered.
* This prop changes how portaled elements are handled.
* @default false
*/
disableReactTree: import_prop_types.default.bool,
/**
* The mouse event to listen to. You can disable the listener by providing `false`.
* @default 'onClick'
*/
mouseEvent: import_prop_types.default.oneOf(["onClick", "onMouseDown", "onMouseUp", "onPointerDown", "onPointerUp", false]),
/**
* Callback fired when a "click away" event is detected.
*/
onClickAway: import_prop_types.default.func.isRequired,
/**
* The touch event to listen to. You can disable the listener by providing `false`.
* @default 'onTouchEnd'
*/
touchEvent: import_prop_types.default.oneOf(["onTouchEnd", "onTouchStart", false])
} : void 0;
if (true) {
ClickAwayListener["propTypes"] = exactProp(ClickAwayListener.propTypes);
}
// node_modules/@mui/base/FocusTrap/FocusTrap.js
var React2 = __toESM(require_react());
var import_prop_types2 = __toESM(require_prop_types());
init_utils();
var import_jsx_runtime2 = __toESM(require_jsx_runtime());
var import_jsx_runtime3 = __toESM(require_jsx_runtime());
var candidatesSelector = ["input", "select", "textarea", "a[href]", "button", "[tabindex]", "audio[controls]", "video[controls]", '[contenteditable]:not([contenteditable="false"])'].join(",");
function getTabIndex(node) {
const tabindexAttr = parseInt(node.getAttribute("tabindex") || "", 10);
if (!Number.isNaN(tabindexAttr)) {
return tabindexAttr;
}
if (node.contentEditable === "true" || (node.nodeName === "AUDIO" || node.nodeName === "VIDEO" || node.nodeName === "DETAILS") && node.getAttribute("tabindex") === null) {
return 0;
}
return node.tabIndex;
}
function isNonTabbableRadio(node) {
if (node.tagName !== "INPUT" || node.type !== "radio") {
return false;
}
if (!node.name) {
return false;
}
const getRadio = (selector) => node.ownerDocument.querySelector(`input[type="radio"]${selector}`);
let roving = getRadio(`[name="${node.name}"]:checked`);
if (!roving) {
roving = getRadio(`[name="${node.name}"]`);
}
return roving !== node;
}
function isNodeMatchingSelectorFocusable(node) {
if (node.disabled || node.tagName === "INPUT" && node.type === "hidden" || isNonTabbableRadio(node)) {
return false;
}
return true;
}
function defaultGetTabbable(root) {
const regularTabNodes = [];
const orderedTabNodes = [];
Array.from(root.querySelectorAll(candidatesSelector)).forEach((node, i) => {
const nodeTabIndex = getTabIndex(node);
if (nodeTabIndex === -1 || !isNodeMatchingSelectorFocusable(node)) {
return;
}
if (nodeTabIndex === 0) {
regularTabNodes.push(node);
} else {
orderedTabNodes.push({
documentOrder: i,
tabIndex: nodeTabIndex,
node
});
}
});
return orderedTabNodes.sort((a, b) => a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex).map((a) => a.node).concat(regularTabNodes);
}
function defaultIsEnabled() {
return true;
}
function FocusTrap(props) {
const {
children,
disableAutoFocus = false,
disableEnforceFocus = false,
disableRestoreFocus = false,
getTabbable = defaultGetTabbable,
isEnabled = defaultIsEnabled,
open
} = props;
const ignoreNextEnforceFocus = React2.useRef(false);
const sentinelStart = React2.useRef(null);
const sentinelEnd = React2.useRef(null);
const nodeToRestore = React2.useRef(null);
const reactFocusEventTarget = React2.useRef(null);
const activated = React2.useRef(false);
const rootRef = React2.useRef(null);
const handleRef = useForkRef(children.ref, rootRef);
const lastKeydown = React2.useRef(null);
React2.useEffect(() => {
if (!open || !rootRef.current) {
return;
}
activated.current = !disableAutoFocus;
}, [disableAutoFocus, open]);
React2.useEffect(() => {
if (!open || !rootRef.current) {
return;
}
const doc = ownerDocument(rootRef.current);
if (!rootRef.current.contains(doc.activeElement)) {
if (!rootRef.current.hasAttribute("tabIndex")) {
if (true) {
console.error(["MUI: The modal content node does not accept focus.", 'For the benefit of assistive technologies, the tabIndex of the node is being set to "-1".'].join("\n"));
}
rootRef.current.setAttribute("tabIndex", "-1");
}
if (activated.current) {
rootRef.current.focus();
}
}
return () => {
if (!disableRestoreFocus) {
if (nodeToRestore.current && nodeToRestore.current.focus) {
ignoreNextEnforceFocus.current = true;
nodeToRestore.current.focus();
}
nodeToRestore.current = null;
}
};
}, [open]);
React2.useEffect(() => {
if (!open || !rootRef.current) {
return;
}
const doc = ownerDocument(rootRef.current);
const loopFocus = (nativeEvent) => {
lastKeydown.current = nativeEvent;
if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== "Tab") {
return;
}
if (doc.activeElement === rootRef.current && nativeEvent.shiftKey) {
ignoreNextEnforceFocus.current = true;
if (sentinelEnd.current) {
sentinelEnd.current.focus();
}
}
};
const contain = () => {
const rootElement = rootRef.current;
if (rootElement === null) {
return;
}
if (!doc.hasFocus() || !isEnabled() || ignoreNextEnforceFocus.current) {
ignoreNextEnforceFocus.current = false;
return;
}
if (rootElement.contains(doc.activeElement)) {
return;
}
if (disableEnforceFocus && doc.activeElement !== sentinelStart.current && doc.activeElement !== sentinelEnd.current) {
return;
}
if (doc.activeElement !== reactFocusEventTarget.current) {
reactFocusEventTarget.current = null;
} else if (reactFocusEventTarget.current !== null) {
return;
}
if (!activated.current) {
return;
}
let tabbable = [];
if (doc.activeElement === sentinelStart.current || doc.activeElement === sentinelEnd.current) {
tabbable = getTabbable(rootRef.current);
}
if (tabbable.length > 0) {
var _lastKeydown$current, _lastKeydown$current2;
const isShiftTab = Boolean(((_lastKeydown$current = lastKeydown.current) == null ? void 0 : _lastKeydown$current.shiftKey) && ((_lastKeydown$current2 = lastKeydown.current) == null ? void 0 : _lastKeydown$current2.key) === "Tab");
const focusNext = tabbable[0];
const focusPrevious = tabbable[tabbable.length - 1];
if (typeof focusNext !== "string" && typeof focusPrevious !== "string") {
if (isShiftTab) {
focusPrevious.focus();
} else {
focusNext.focus();
}
}
} else {
rootElement.focus();
}
};
doc.addEventListener("focusin", contain);
doc.addEventListener("keydown", loopFocus, true);
const interval = setInterval(() => {
if (doc.activeElement && doc.activeElement.tagName === "BODY") {
contain();
}
}, 50);
return () => {
clearInterval(interval);
doc.removeEventListener("focusin", contain);
doc.removeEventListener("keydown", loopFocus, true);
};
}, [disableAutoFocus, disableEnforceFocus, disableRestoreFocus, isEnabled, open, getTabbable]);
const onFocus = (event) => {
if (nodeToRestore.current === null) {
nodeToRestore.current = event.relatedTarget;
}
activated.current = true;
reactFocusEventTarget.current = event.target;
const childrenPropsHandler = children.props.onFocus;
if (childrenPropsHandler) {
childrenPropsHandler(event);
}
};
const handleFocusSentinel = (event) => {
if (nodeToRestore.current === null) {
nodeToRestore.current = event.relatedTarget;
}
activated.current = true;
};
return (0, import_jsx_runtime3.jsxs)(React2.Fragment, {
children: [(0, import_jsx_runtime2.jsx)("div", {
tabIndex: open ? 0 : -1,
onFocus: handleFocusSentinel,
ref: sentinelStart,
"data-testid": "sentinelStart"
}), React2.cloneElement(children, {
ref: handleRef,
onFocus
}), (0, import_jsx_runtime2.jsx)("div", {
tabIndex: open ? 0 : -1,
onFocus: handleFocusSentinel,
ref: sentinelEnd,
"data-testid": "sentinelEnd"
})]
});
}
true ? FocusTrap.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* A single child content element.
*/
children: elementAcceptingRef_default,
/**
* If `true`, the focus trap will not automatically shift focus to itself when it opens, and
* replace it to the last focused element when it closes.
* This also works correctly with any focus trap children that have the `disableAutoFocus` prop.
*
* Generally this should never be set to `true` as it makes the focus trap less
* accessible to assistive technologies, like screen readers.
* @default false
*/
disableAutoFocus: import_prop_types2.default.bool,
/**
* If `true`, the focus trap will not prevent focus from leaving the focus trap while open.
*
* Generally this should never be set to `true` as it makes the focus trap less
* accessible to assistive technologies, like screen readers.
* @default false
*/
disableEnforceFocus: import_prop_types2.default.bool,
/**
* If `true`, the focus trap will not restore focus to previously focused element once
* focus trap is hidden or unmounted.
* @default false
*/
disableRestoreFocus: import_prop_types2.default.bool,
/**
* Returns an array of ordered tabbable nodes (i.e. in tab order) within the root.
* For instance, you can provide the "tabbable" npm dependency.
* @param {HTMLElement} root
*/
getTabbable: import_prop_types2.default.func,
/**
* This prop extends the `open` prop.
* It allows to toggle the open state without having to wait for a rerender when changing the `open` prop.
* This prop should be memoized.
* It can be used to support multiple focus trap mounted at the same time.
* @default function defaultIsEnabled(): boolean {
* return true;
* }
*/
isEnabled: import_prop_types2.default.func,
/**
* If `true`, focus is locked.
*/
open: import_prop_types2.default.bool.isRequired
} : void 0;
if (true) {
FocusTrap["propTypes"] = exactProp(FocusTrap.propTypes);
}
// node_modules/@mui/base/Portal/Portal.js
var React3 = __toESM(require_react());
var ReactDOM = __toESM(require_react_dom());
var import_prop_types3 = __toESM(require_prop_types());
init_utils();
var import_jsx_runtime4 = __toESM(require_jsx_runtime());
function getContainer(container) {
return typeof container === "function" ? container() : container;
}
var Portal = React3.forwardRef(function Portal2(props, forwardedRef) {
const {
children,
container,
disablePortal = false
} = props;
const [mountNode, setMountNode] = React3.useState(null);
const handleRef = useForkRef(React3.isValidElement(children) ? children.ref : null, forwardedRef);
useEnhancedEffect_default(() => {
if (!disablePortal) {
setMountNode(getContainer(container) || document.body);
}
}, [container, disablePortal]);
useEnhancedEffect_default(() => {
if (mountNode && !disablePortal) {
setRef(forwardedRef, mountNode);
return () => {
setRef(forwardedRef, null);
};
}
return void 0;
}, [forwardedRef, mountNode, disablePortal]);
if (disablePortal) {
if (React3.isValidElement(children)) {
const newProps = {
ref: handleRef
};
return React3.cloneElement(children, newProps);
}
return (0, import_jsx_runtime4.jsx)(React3.Fragment, {
children
});
}
return (0, import_jsx_runtime4.jsx)(React3.Fragment, {
children: mountNode ? ReactDOM.createPortal(children, mountNode) : mountNode
});
});
true ? Portal.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The children to render into the `container`.
*/
children: import_prop_types3.default.node,
/**
* An HTML element or function that returns one.
* The `container` will have the portal children appended to it.
*
* You can also provide a callback, which is called in a React layout effect.
* This lets you set the container from a ref, and also makes server-side rendering possible.
*
* By default, it uses the body of the top-level document object,
* so it's simply `document.body` most of the time.
*/
container: import_prop_types3.default.oneOfType([HTMLElementType, import_prop_types3.default.func]),
/**
* The `children` will be under the DOM hierarchy of the parent component.
* @default false
*/
disablePortal: import_prop_types3.default.bool
} : void 0;
if (true) {
Portal["propTypes"] = exactProp(Portal.propTypes);
}
// node_modules/@mui/base/unstable_useModal/ModalManager.js
init_utils();
function isOverflowing(container) {
const doc = ownerDocument(container);
if (doc.body === container) {
return ownerWindow(container).innerWidth > doc.documentElement.clientWidth;
}
return container.scrollHeight > container.clientHeight;
}
function ariaHidden(element, show) {
if (show) {
element.setAttribute("aria-hidden", "true");
} else {
element.removeAttribute("aria-hidden");
}
}
function getPaddingRight(element) {
return parseInt(ownerWindow(element).getComputedStyle(element).paddingRight, 10) || 0;
}
function isAriaHiddenForbiddenOnElement(element) {
const forbiddenTagNames = ["TEMPLATE", "SCRIPT", "STYLE", "LINK", "MAP", "META", "NOSCRIPT", "PICTURE", "COL", "COLGROUP", "PARAM", "SLOT", "SOURCE", "TRACK"];
const isForbiddenTagName = forbiddenTagNames.indexOf(element.tagName) !== -1;
const isInputHidden = element.tagName === "INPUT" && element.getAttribute("type") === "hidden";
return isForbiddenTagName || isInputHidden;
}
function ariaHiddenSiblings(container, mountElement, currentElement, elementsToExclude, show) {
const blacklist = [mountElement, currentElement, ...elementsToExclude];
[].forEach.call(container.children, (element) => {
const isNotExcludedElement = blacklist.indexOf(element) === -1;
const isNotForbiddenElement = !isAriaHiddenForbiddenOnElement(element);
if (isNotExcludedElement && isNotForbiddenElement) {
ariaHidden(element, show);
}
});
}
function findIndexOf(items, callback) {
let idx = -1;
items.some((item, index2) => {
if (callback(item)) {
idx = index2;
return true;
}
return false;
});
return idx;
}
function handleContainer(containerInfo, props) {
const restoreStyle = [];
const container = containerInfo.container;
if (!props.disableScrollLock) {
if (isOverflowing(container)) {
const scrollbarSize = getScrollbarSize(ownerDocument(container));
restoreStyle.push({
value: container.style.paddingRight,
property: "padding-right",
el: container
});
container.style.paddingRight = `${getPaddingRight(container) + scrollbarSize}px`;
const fixedElements = ownerDocument(container).querySelectorAll(".mui-fixed");
[].forEach.call(fixedElements, (element) => {
restoreStyle.push({
value: element.style.paddingRight,
property: "padding-right",
el: element
});
element.style.paddingRight = `${getPaddingRight(element) + scrollbarSize}px`;
});
}
let scrollContainer;
if (container.parentNode instanceof DocumentFragment) {
scrollContainer = ownerDocument(container).body;
} else {
const parent = container.parentElement;
const containerWindow = ownerWindow(container);
scrollContainer = (parent == null ? void 0 : parent.nodeName) === "HTML" && containerWindow.getComputedStyle(parent).overflowY === "scroll" ? parent : container;
}
restoreStyle.push({
value: scrollContainer.style.overflow,
property: "overflow",
el: scrollContainer
}, {
value: scrollContainer.style.overflowX,
property: "overflow-x",
el: scrollContainer
}, {
value: scrollContainer.style.overflowY,
property: "overflow-y",
el: scrollContainer
});
scrollContainer.style.overflow = "hidden";
}
const restore = () => {
restoreStyle.forEach(({
value,
el,
property
}) => {
if (value) {
el.style.setProperty(property, value);
} else {
el.style.removeProperty(property);
}
});
};
return restore;
}
function getHiddenSiblings(container) {
const hiddenSiblings = [];
[].forEach.call(container.children, (element) => {
if (element.getAttribute("aria-hidden") === "true") {
hiddenSiblings.push(element);
}
});
return hiddenSiblings;
}
var ModalManager = class {
constructor() {
this.containers = void 0;
this.modals = void 0;
this.modals = [];
this.containers = [];
}
add(modal, container) {
let modalIndex = this.modals.indexOf(modal);
if (modalIndex !== -1) {
return modalIndex;
}
modalIndex = this.modals.length;
this.modals.push(modal);
if (modal.modalRef) {
ariaHidden(modal.modalRef, false);
}
const hiddenSiblings = getHiddenSiblings(container);
ariaHiddenSiblings(container, modal.mount, modal.modalRef, hiddenSiblings, true);
const containerIndex = findIndexOf(this.containers, (item) => item.container === container);
if (containerIndex !== -1) {
this.containers[containerIndex].modals.push(modal);
return modalIndex;
}
this.containers.push({
modals: [modal],
container,
restore: null,
hiddenSiblings
});
return modalIndex;
}
mount(modal, props) {
const containerIndex = findIndexOf(this.containers, (item) => item.modals.indexOf(modal) !== -1);
const containerInfo = this.containers[containerIndex];
if (!containerInfo.restore) {
containerInfo.restore = handleContainer(containerInfo, props);
}
}
remove(modal, ariaHiddenState = true) {
const modalIndex = this.modals.indexOf(modal);
if (modalIndex === -1) {
return modalIndex;
}
const containerIndex = findIndexOf(this.containers, (item) => item.modals.indexOf(modal) !== -1);
const containerInfo = this.containers[containerIndex];
containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1);
this.modals.splice(modalIndex, 1);
if (containerInfo.modals.length === 0) {
if (containerInfo.restore) {
containerInfo.restore();
}
if (modal.modalRef) {
ariaHidden(modal.modalRef, ariaHiddenState);
}
ariaHiddenSiblings(containerInfo.container, modal.mount, modal.modalRef, containerInfo.hiddenSiblings, false);
this.containers.splice(containerIndex, 1);
} else {
const nextTop = containerInfo.modals[containerInfo.modals.length - 1];
if (nextTop.modalRef) {
ariaHidden(nextTop.modalRef, false);
}
}
return modalIndex;
}
isTopModal(modal) {
return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal;
}
};
// node_modules/@mui/base/NoSsr/NoSsr.js
var React4 = __toESM(require_react());
var import_prop_types4 = __toESM(require_prop_types());
init_utils();
var import_jsx_runtime5 = __toESM(require_jsx_runtime());
function NoSsr(props) {
const {
children,
defer = false,
fallback = null
} = props;
const [mountedState, setMountedState] = React4.useState(false);
useEnhancedEffect_default(() => {
if (!defer) {
setMountedState(true);
}
}, [defer]);
React4.useEffect(() => {
if (defer) {
setMountedState(true);
}
}, [defer]);
return (0, import_jsx_runtime5.jsx)(React4.Fragment, {
children: mountedState ? children : fallback
});
}
true ? NoSsr.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* You can wrap a node.
*/
children: import_prop_types4.default.node,
/**
* If `true`, the component will not only prevent server-side rendering.
* It will also defer the rendering of the children into a different screen frame.
* @default false
*/
defer: import_prop_types4.default.bool,
/**
* The fallback content to display.
* @default null
*/
fallback: import_prop_types4.default.node
} : void 0;
if (true) {
NoSsr["propTypes"] = exactProp(NoSsr.propTypes);
}
// node_modules/@mui/base/TextareaAutosize/TextareaAutosize.js
init_extends();
init_objectWithoutPropertiesLoose();
var React5 = __toESM(require_react());
var import_prop_types5 = __toESM(require_prop_types());
init_utils();
var import_jsx_runtime6 = __toESM(require_jsx_runtime());
var import_jsx_runtime7 = __toESM(require_jsx_runtime());
var _excluded = ["onChange", "maxRows", "minRows", "style", "value"];
function getStyleValue(value) {
return parseInt(value, 10) || 0;
}
var styles = {
shadow: {
// Visibility needed to hide the extra text area on iPads
visibility: "hidden",
// Remove from the content flow
position: "absolute",
// Ignore the scrollbar width
overflow: "hidden",
height: 0,
top: 0,
left: 0,
// Create a new layer, increase the isolation of the computed values
transform: "translateZ(0)"
}
};
function isEmpty(obj) {
return obj === void 0 || obj === null || Object.keys(obj).length === 0 || obj.outerHeightStyle === 0 && !obj.overflowing;
}
var TextareaAutosize = React5.forwardRef(function TextareaAutosize2(props, forwardedRef) {
const {
onChange,
maxRows,
minRows = 1,
style,
value
} = props, other = _objectWithoutPropertiesLoose(props, _excluded);
const {
current: isControlled
} = React5.useRef(value != null);
const inputRef = React5.useRef(null);
const handleRef = useForkRef(forwardedRef, inputRef);
const shadowRef = React5.useRef(null);
const calculateTextareaStyles = React5.useCallback(() => {
const input = inputRef.current;
const containerWindow = ownerWindow(input);
const computedStyle = containerWindow.getComputedStyle(input);
if (computedStyle.width === "0px") {
return {
outerHeightStyle: 0,
overflowing: false
};
}
const inputShallow = shadowRef.current;
inputShallow.style.width = computedStyle.width;
inputShallow.value = input.value || props.placeholder || "x";
if (inputShallow.value.slice(-1) === "\n") {
inputShallow.value += " ";
}
const boxSizing = computedStyle.boxSizing;
const padding = getStyleValue(computedStyle.paddingBottom) + getStyleValue(computedStyle.paddingTop);
const border = getStyleValue(computedStyle.borderBottomWidth) + getStyleValue(computedStyle.borderTopWidth);
const innerHeight = inputShallow.scrollHeight;
inputShallow.value = "x";
const singleRowHeight = inputShallow.scrollHeight;
let outerHeight = innerHeight;
if (minRows) {
outerHeight = Math.max(Number(minRows) * singleRowHeight, outerHeight);
}
if (maxRows) {
outerHeight = Math.min(Number(maxRows) * singleRowHeight, outerHeight);
}
outerHeight = Math.max(outerHeight, singleRowHeight);
const outerHeightStyle = outerHeight + (boxSizing === "border-box" ? padding + border : 0);
const overflowing = Math.abs(outerHeight - innerHeight) <= 1;
return {
outerHeightStyle,
overflowing
};
}, [maxRows, minRows, props.placeholder]);
const syncHeight = React5.useCallback(() => {
const textareaStyles = calculateTextareaStyles();
if (isEmpty(textareaStyles)) {
return;
}
const input = inputRef.current;
input.style.height = `${textareaStyles.outerHeightStyle}px`;
input.style.overflow = textareaStyles.overflowing ? "hidden" : "";
}, [calculateTextareaStyles]);
useEnhancedEffect_default(() => {
const handleResize = () => {
syncHeight();
};
let rAF;
const rAFHandleResize = () => {
cancelAnimationFrame(rAF);
rAF = requestAnimationFrame(() => {
handleResize();
});
};
const debounceHandleResize = debounce(handleResize);
const input = inputRef.current;
const containerWindow = ownerWindow(input);
containerWindow.addEventListener("resize", debounceHandleResize);
let resizeObserver;
if (typeof ResizeObserver !== "undefined") {
resizeObserver = new ResizeObserver(false ? rAFHandleResize : handleResize);
resizeObserver.observe(input);
}
return () => {
debounceHandleResize.clear();
cancelAnimationFrame(rAF);
containerWindow.removeEventListener("resize", debounceHandleResize);
if (resizeObserver) {
resizeObserver.disconnect();
}
};
}, [calculateTextareaStyles, syncHeight]);
useEnhancedEffect_default(() => {
syncHeight();
});
const handleChange = (event) => {
if (!isControlled) {
syncHeight();
}
if (onChange) {
onChange(event);
}
};
return (0, import_jsx_runtime7.jsxs)(React5.Fragment, {
children: [(0, import_jsx_runtime6.jsx)("textarea", _extends({
value,
onChange: handleChange,
ref: handleRef,
rows: minRows,
style
}, other)), (0, import_jsx_runtime6.jsx)("textarea", {
"aria-hidden": true,
className: props.className,
readOnly: true,
ref: shadowRef,
tabIndex: -1,
style: _extends({}, styles.shadow, style, {
paddingTop: 0,
paddingBottom: 0
})
})]
});
});
true ? TextareaAutosize.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* @ignore
*/
className: import_prop_types5.default.string,
/**
* Maximum number of rows to display.
*/
maxRows: import_prop_types5.default.oneOfType([import_prop_types5.default.number, import_prop_types5.default.string]),
/**
* Minimum number of rows to display.
* @default 1
*/
minRows: import_prop_types5.default.oneOfType([import_prop_types5.default.number, import_prop_types5.default.string]),
/**
* @ignore
*/
onChange: import_prop_types5.default.func,
/**
* @ignore
*/
placeholder: import_prop_types5.default.string,
/**
* @ignore
*/
style: import_prop_types5.default.object,
/**
* @ignore
*/
value: import_prop_types5.default.oneOfType([import_prop_types5.default.arrayOf(import_prop_types5.default.string), import_prop_types5.default.number, import_prop_types5.default.string])
} : void 0;
// node_modules/@mui/base/useAutocomplete/useAutocomplete.js
init_extends();
var React6 = __toESM(require_react());
init_utils();
function stripDiacritics(string) {
return typeof string.normalize !== "undefined" ? string.normalize("NFD").replace(/[\u0300-\u036f]/g, "") : string;
}
function createFilterOptions(config = {}) {
const {
ignoreAccents = true,
ignoreCase = true,
limit,
matchFrom = "any",
stringify,
trim = false
} = config;
return (options, {
inputValue,
getOptionLabel
}) => {
let input = trim ? inputValue.trim() : inputValue;
if (ignoreCase) {
input = input.toLowerCase();
}
if (ignoreAccents) {
input = stripDiacritics(input);
}
const filteredOptions = !input ? options : options.filter((option) => {
let candidate = (stringify || getOptionLabel)(option);
if (ignoreCase) {
candidate = candidate.toLowerCase();
}
if (ignoreAccents) {
candidate = stripDiacritics(candidate);
}
return matchFrom === "start" ? candidate.indexOf(input) === 0 : candidate.indexOf(input) > -1;
});
return typeof limit === "number" ? filteredOptions.slice(0, limit) : filteredOptions;
};
}
function findIndex(array, comp) {
for (let i = 0; i < array.length; i += 1) {
if (comp(array[i])) {
return i;
}
}
return -1;
}
var defaultFilterOptions = createFilterOptions();
var pageSize = 5;
var defaultIsActiveElementInListbox = (listboxRef) => {
var _listboxRef$current$p;
return listboxRef.current !== null && ((_listboxRef$current$p = listboxRef.current.parentElement) == null ? void 0 : _listboxRef$current$p.contains(document.activeElement));
};
function useAutocomplete(props) {
const {
// eslint-disable-next-line @typescript-eslint/naming-convention
unstable_isActiveElementInListbox = defaultIsActiveElementInListbox,
// eslint-disable-next-line @typescript-eslint/naming-convention
unstable_classNamePrefix = "Mui",
autoComplete = false,
autoHighlight = false,
autoSelect = false,
blurOnSelect = false,
clearOnBlur = !props.freeSolo,
clearOnEscape = false,
componentName = "useAutocomplete",
defaultValue = props.multiple ? [] : null,
disableClearable = false,
disableCloseOnSelect = false,
disabled: disabledProp,
disabledItemsFocusable = false,
disableListWrap = false,
filterOptions = defaultFilterOptions,
filterSelectedOptions = false,
freeSolo = false,
getOptionDisabled,
getOptionKey,
getOptionLabel: getOptionLabelProp = (option) => {
var _option$label;
return (_option$label = option.label) != null ? _option$label : option;
},
groupBy,
handleHomeEndKeys = !props.freeSolo,
id: idProp,
includeInputInList = false,
inputValue: inputValueProp,
isOptionEqualToValue = (option, value2) => option === value2,
multiple = false,
onChange,
onClose,
onHighlightChange,
onInputChange,
onOpen,
open: openProp,
openOnFocus = false,
options,
readOnly = false,
selectOnFocus = !props.freeSolo,
value: valueProp
} = props;
const id = useId(idProp);
let getOptionLabel = getOptionLabelProp;
getOptionLabel = (option) => {
const optionLabel = getOptionLabelProp(option);
if (typeof optionLabel !== "string") {
if (true) {
const erroneousReturn = optionLabel === void 0 ? "undefined" : `${typeof optionLabel} (${optionLabel})`;
console.error(`MUI: The \`getOptionLabel\` method of ${componentName} returned ${erroneousReturn} instead of a string for ${JSON.stringify(option)}.`);
}
return String(optionLabel);
}
return optionLabel;
};
const ignoreFocus = React6.useRef(false);
const firstFocus = React6.useRef(true);
const inputRef = React6.useRef(null);
const listboxRef = React6.useRef(null);
const [anchorEl, setAnchorEl] = React6.useState(null);
const [focusedTag, setFocusedTag] = React6.useState(-1);
const defaultHighlighted = autoHighlight ? 0 : -1;
const highlightedIndexRef = React6.useRef(defaultHighlighted);
const [value, setValueState] = useControlled({
controlled: valueProp,
default: defaultValue,
name: componentName
});
const [inputValue, setInputValueState] = useControlled({
controlled: inputValueProp,
default: "",
name: componentName,
state: "inputValue"
});
const [focused, setFocused] = React6.useState(false);
const resetInputValue = React6.useCallback((event, newValue) => {
const isOptionSelected = multiple ? value.length < newValue.length : newValue !== null;
if (!isOptionSelected && !clearOnBlur) {
return;
}
let newInputValue;
if (multiple) {
newInputValue = "";
} else if (newValue == null) {
newInputValue = "";
} else {
const optionLabel = getOptionLabel(newValue);
newInputValue = typeof optionLabel === "string" ? optionLabel : "";
}
if (inputValue === newInputValue) {
return;
}
setInputValueState(newInputValue);
if (onInputChange) {
onInputChange(event, newInputValue, "reset");
}
}, [getOptionLabel, inputValue, multiple, onInputChange, setInputValueState, clearOnBlur, value]);
const [open, setOpenState] = useControlled({
controlled: openProp,
default: false,
name: componentName,
state: "open"
});
const [inputPristine, setInputPristine] = React6.useState(true);
const inputValueIsSelectedValue = !multiple && value != null && inputValue === getOptionLabel(value);
const popupOpen = open && !readOnly;
const filteredOptions = popupOpen ? filterOptions(
options.filter((option) => {
if (filterSelectedOptions && (multiple ? value : [value]).some((value2) => value2 !== null && isOptionEqualToValue(option, value2))) {
return false;
}
return true;
}),
// we use the empty string to manipulate `filterOptions` to not filter any options
// i.e. the filter predicate always returns true
{
inputValue: inputValueIsSelectedValue && inputPristine ? "" : inputValue,
getOptionLabel
}
) : [];
const previousProps = usePreviousProps_default({
filteredOptions,
value,
inputValue
});
React6.useEffect(() => {
const valueChange = value !== previousProps.value;
if (focused && !valueChange) {
return;
}
if (freeSolo && !valueChange) {
return;
}
resetInputValue(null, value);
}, [value, resetInputValue, focused, previousProps.value, freeSolo]);
const listboxAvailable = open && filteredOptions.length > 0 && !readOnly;
if (true) {
if (value !== null && !freeSolo && options.length > 0) {
const missingValue = (multiple ? value : [value]).filter((value2) => !options.some((option) => isOptionEqualToValue(option, value2)));
if (missingValue.length > 0) {
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"));
}
}
}
const focusTag = useEventCallback_default((tagToFocus) => {
if (tagToFocus === -1) {
inputRef.current.focus();
} else {
anchorEl.querySelector(`[data-tag-index="${tagToFocus}"]`).focus();
}
});
React6.useEffect(() => {
if (multiple && focusedTag > value.length - 1) {
setFocusedTag(-1);
focusTag(-1);
}
}, [value, multiple, focusedTag, focusTag]);
function validOptionIndex(index2, direction) {
if (!listboxRef.current || index2 < 0 || index2 >= filteredOptions.length) {
return -1;
}
let nextFocus = index2;
while (true) {
const option = listboxRef.current.querySelector(`[data-option-index="${nextFocus}"]`);
const nextFocusDisabled = disabledItemsFocusable ? false : !option || option.disabled || option.getAttribute("aria-disabled") === "true";
if (option && option.hasAttribute("tabindex") && !nextFocusDisabled) {
return nextFocus;
}
if (direction === "next") {
nextFocus = (nextFocus + 1) % filteredOptions.length;
} else {
nextFocus = (nextFocus - 1 + filteredOptions.length) % filteredOptions.length;
}
if (nextFocus === index2) {
return -1;
}
}
}
const setHighlightedIndex = useEventCallback_default(({
event,
index: index2,
reason = "auto"
}) => {
highlightedIndexRef.current = index2;
if (index2 === -1) {
inputRef.current.removeAttribute("aria-activedescendant");
} else {
inputRef.current.setAttribute("aria-activedescendant", `${id}-option-${index2}`);
}
if (onHighlightChange) {
onHighlightChange(event, index2 === -1 ? null : filteredOptions[index2], reason);
}
if (!listboxRef.current) {
return;
}
const prev = listboxRef.current.querySelector(`[role="option"].${unstable_classNamePrefix}-focused`);
if (prev) {
prev.classList.remove(`${unstable_classNamePrefix}-focused`);
prev.classList.remove(`${unstable_classNamePrefix}-focusVisible`);
}
let listboxNode = listboxRef.current;
if (listboxRef.current.getAttribute("role") !== "listbox") {
listboxNode = listboxRef.current.parentElement.querySelector('[role="listbox"]');
}
if (!listboxNode) {
return;
}
if (index2 === -1) {
listboxNode.scrollTop = 0;
return;
}
const option = listboxRef.current.querySelector(`[data-option-index="${index2}"]`);
if (!option) {
return;
}
option.classList.add(`${unstable_classNamePrefix}-focused`);
if (reason === "keyboard") {
option.classList.add(`${unstable_classNamePrefix}-focusVisible`);
}
if (listboxNode.scrollHeight > listboxNode.clientHeight && reason !== "mouse" && reason !== "touch") {
const element = option;
const scrollBottom = listboxNode.clientHeight + listboxNode.scrollTop;
const elementBottom = element.offsetTop + element.offsetHeight;
if (elementBottom > scrollBottom) {
listboxNode.scrollTop = elementBottom - listboxNode.clientHeight;
} else if (element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0) < listboxNode.scrollTop) {
listboxNode.scrollTop = element.offsetTop - element.offsetHeight * (groupBy ? 1.3 : 0);
}
}
});
const changeHighlightedIndex = useEventCallback_default(({
event,
diff,
direction = "next",
reason = "auto"
}) => {
if (!popupOpen) {
return;
}
const getNextIndex = () => {
const maxIndex = filteredOptions.length - 1;
if (diff === "reset") {
return defaultHighlighted;
}
if (diff === "start") {
return 0;
}
if (diff === "end") {
return maxIndex;
}
const newIndex = highlightedIndexRef.current + diff;
if (newIndex < 0) {
if (newIndex === -1 && includeInputInList) {
return -1;
}
if (disableListWrap && highlightedIndexRef.current !== -1 || Math.abs(diff) > 1) {
return 0;
}
return maxIndex;
}
if (newIndex > maxIndex) {
if (newIndex === maxIndex + 1 && includeInputInList) {
return -1;
}
if (disableListWrap || Math.abs(diff) > 1) {
return maxIndex;
}
return 0;
}
return newIndex;
};
const nextIndex = validOptionIndex(getNextIndex(), direction);
setHighlightedIndex({
index: nextIndex,
reason,
event
});
if (autoComplete && diff !== "reset") {
if (nextIndex === -1) {
inputRef.current.value = inputValue;
} else {
const option = getOptionLabel(filteredOptions[nextIndex]);
inputRef.current.value = option;
const index2 = option.toLowerCase().indexOf(inputValue.toLowerCase());
if (index2 === 0 && inputValue.length > 0) {
inputRef.current.setSelectionRange(inputValue.length, option.length);
}
}
}
});
const getPreviousHighlightedOptionIndex = () => {
const isSameValue = (value1, value2) => {
const label1 = value1 ? getOptionLabel(value1) : "";
const label2 = value2 ? getOptionLabel(value2) : "";
return label1 === label2;
};
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))) {
const previousHighlightedOption = previousProps.filteredOptions[highlightedIndexRef.current];
if (previousHighlightedOption) {
return findIndex(filteredOptions, (option) => {
return getOptionLabel(option) === getOptionLabel(previousHighlightedOption);
});
}
}
return -1;
};
const syncHighlightedIndex = React6.useCallback(() => {
if (!popupOpen) {
return;
}
const previousHighlightedOptionIndex = getPreviousHighlightedOptionIndex();
if (previousHighlightedOptionIndex !== -1) {
highlightedIndexRef.current = previousHighlightedOptionIndex;
return;
}
const valueItem = multiple ? value[0] : value;
if (filteredOptions.length === 0 || valueItem == null) {
changeHighlightedIndex({
diff: "reset"
});
return;
}
if (!listboxRef.current) {
return;
}
if (valueItem != null) {
const currentOption = filteredOptions[highlightedIndexRef.current];
if (multiple && currentOption && findIndex(value, (val) => isOptionEqualToValue(currentOption, val)) !== -1) {
return;
}
const itemIndex = findIndex(filteredOptions, (optionItem) => isOptionEqualToValue(optionItem, valueItem));
if (itemIndex === -1) {
changeHighlightedIndex({
diff: "reset"
});
} else {
setHighlightedIndex({
index: itemIndex
});
}
return;
}
if (highlightedIndexRef.current >= filteredOptions.length - 1) {
setHighlightedIndex({
index: filteredOptions.length - 1
});
return;
}
setHighlightedIndex({
index: highlightedIndexRef.current
});
}, [
// Only sync the highlighted index when the option switch between empty and not
filteredOptions.length,
// Don't sync the highlighted index with the value when multiple
// eslint-disable-next-line react-hooks/exhaustive-deps
multiple ? false : value,
filterSelectedOptions,
changeHighlightedIndex,
setHighlightedIndex,
popupOpen,
inputValue,
multiple
]);
const handleListboxRef = useEventCallback_default((node) => {
setRef(listboxRef, node);
if (!node) {
return;
}
syncHighlightedIndex();
});
if (true) {
React6.useEffect(() => {
if (!inputRef.current || inputRef.current.nodeName !== "INPUT") {
if (inputRef.current && inputRef.current.nodeName === "TEXTAREA") {
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 (e.g. enter and arrow keys).`, `Make sure to test keyboard navigation and add custom event handlers if necessary.`].join("\n"));
} else {
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"));
}
}
}, [componentName]);
}
React6.useEffect(() => {
syncHighlightedIndex();
}, [syncHighlightedIndex]);
const handleOpen = (event) => {
if (open) {
return;
}
setOpenState(true);
setInputPristine(true);
if (onOpen) {
onOpen(event);
}
};
const handleClose = (event, reason) => {
if (!open) {
return;
}
setOpenState(false);
if (onClose) {
onClose(event, reason);
}
};
const handleValue = (event, newValue, reason, details) => {
if (multiple) {
if (value.length === newValue.length && value.every((val, i) => val === newValue[i])) {
return;
}
} else if (value === newValue) {
return;
}
if (onChange) {
onChange(event, newValue, reason, details);
}
setValueState(newValue);
};
const isTouch = React6.useRef(false);
const selectNewValue = (event, option, reasonProp = "selectOption", origin = "options") => {
let reason = reasonProp;
let newValue = option;
if (multiple) {
newValue = Array.isArray(value) ? value.slice() : [];
if (true) {
const matches = newValue.filter((val) => isOptionEqualToValue(option, val));
if (matches.length > 1) {
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"));
}
}
const itemIndex = findIndex(newValue, (valueItem) => isOptionEqualToValue(option, valueItem));
if (itemIndex === -1) {
newValue.push(option);
} else if (origin !== "freeSolo") {
newValue.splice(itemIndex, 1);
reason = "removeOption";
}
}
resetInputValue(event, newValue);
handleValue(event, newValue, reason, {
option
});
if (!disableCloseOnSelect && (!event || !event.ctrlKey && !event.metaKey)) {
handleClose(event, reason);
}
if (blurOnSelect === true || blurOnSelect === "touch" && isTouch.current || blurOnSelect === "mouse" && !isTouch.current) {
inputRef.current.blur();
}
};
function validTagIndex(index2, direction) {
if (index2 === -1) {
return -1;
}
let nextFocus = index2;
while (true) {
if (direction === "next" && nextFocus === value.length || direction === "previous" && nextFocus === -1) {
return -1;
}
const option = anchorEl.querySelector(`[data-tag-index="${nextFocus}"]`);
if (!option || !option.hasAttribute("tabindex") || option.disabled || option.getAttribute("aria-disabled") === "true") {
nextFocus += direction === "next" ? 1 : -1;
} else {
return nextFocus;
}
}
}
const handleFocusTag = (event, direction) => {
if (!multiple) {
return;
}
if (inputValue === "") {
handleClose(event, "toggleInput");
}
let nextTag = focusedTag;
if (focusedTag === -1) {
if (inputValue === "" && direction === "previous") {
nextTag = value.length - 1;
}
} else {
nextTag += direction === "next" ? 1 : -1;
if (nextTag < 0) {
nextTag = 0;
}
if (nextTag === value.length) {
nextTag = -1;
}
}
nextTag = validTagIndex(nextTag, direction);
setFocusedTag(nextTag);
focusTag(nextTag);
};
const handleClear = (event) => {
ignoreFocus.current = true;
setInputValueState("");
if (onInputChange) {
onInputChange(event, "", "clear");
}
handleValue(event, multiple ? [] : null, "clear");
};
const handleKeyDown2 = (other) => (event) => {
if (other.onKeyDown) {
other.onKeyDown(event);
}
if (event.defaultMuiPrevented) {
return;
}
if (focusedTag !== -1 && ["ArrowLeft", "ArrowRight"].indexOf(event.key) === -1) {
setFocusedTag(-1);
focusTag(-1);
}
if (event.which !== 229) {
switch (event.key) {
case "Home":
if (popupOpen && handleHomeEndKeys) {
event.preventDefault();
changeHighlightedIndex({
diff: "start",
direction: "next",
reason: "keyboard",
event
});
}
break;
case "End":
if (popupOpen && handleHomeEndKeys) {
event.preventDefault();
changeHighlightedIndex({
diff: "end",
direction: "previous",
reason: "keyboard",
event
});
}
break;
case "PageUp":
event.preventDefault();
changeHighlightedIndex({
diff: -pageSize,
direction: "previous",
reason: "keyboard",
event
});
handleOpen(event);
break;
case "PageDown":
event.preventDefault();
changeHighlightedIndex({
diff: pageSize,
direction: "next",
reason: "keyboard",
event
});
handleOpen(event);
break;
case "ArrowDown":
event.preventDefault();
changeHighlightedIndex({
diff: 1,
direction: "next",
reason: "keyboard",
event
});
handleOpen(event);
break;
case "ArrowUp":
event.preventDefault();
changeHighlightedIndex({
diff: -1,
direction: "previous",
reason: "keyboard",
event
});
handleOpen(event);
break;
case "ArrowLeft":
handleFocusTag(event, "previous");
break;
case "ArrowRight":
handleFocusTag(event, "next");
break;
case "Enter":
if (highlightedIndexRef.current !== -1 && popupOpen) {
const option = filteredOptions[highlightedIndexRef.current];
const disabled = getOptionDisabled ? getOptionDisabled(option) : false;
event.preventDefault();
if (disabled) {
return;
}
selectNewValue(event, option, "selectOption");
if (autoComplete) {
inputRef.current.setSelectionRange(inputRef.current.value.length, inputRef.current.value.length);
}
} else if (freeSolo && inputValue !== "" && inputValueIsSelectedValue === false) {
if (multiple) {
event.preventDefault();
}
selectNewValue(event, inputValue, "createOption", "freeSolo");
}
break;
case "Escape":
if (popupOpen) {
event.preventDefault();
event.stopPropagation();
handleClose(event, "escape");
} else if (clearOnEscape && (inputValue !== "" || multiple && value.length > 0)) {
event.preventDefault();
event.stopPropagation();
handleClear(event);
}
break;
case "Backspace":
if (multiple && !readOnly && inputValue === "" && value.length > 0) {
const index2 = focusedTag === -1 ? value.length - 1 : focusedTag;
const newValue = value.slice();
newValue.splice(index2, 1);
handleValue(event, newValue, "removeOption", {
option: value[index2]
});
}
break;
case "Delete":
if (multiple && !readOnly && inputValue === "" && value.length > 0 && focusedTag !== -1) {
const index2 = focusedTag;
const newValue = value.slice();
newValue.splice(index2, 1);
handleValue(event, newValue, "removeOption", {
option: value[index2]
});
}
break;
default:
}
}
};
const handleFocus = (event) => {
setFocused(true);
if (openOnFocus && !ignoreFocus.current) {
handleOpen(event);
}
};
const handleBlur2 = (event) => {
if (unstable_isActiveElementInListbox(listboxRef)) {
inputRef.current.focus();
return;
}
setFocused(false);
firstFocus.current = true;
ignoreFocus.current = false;
if (autoSelect && highlightedIndexRef.current !== -1 && popupOpen) {
selectNewValue(event, filteredOptions[highlightedIndexRef.current], "blur");
} else if (autoSelect && freeSolo && inputValue !== "") {
selectNewValue(event, inputValue, "blur", "freeSolo");
} else if (clearOnBlur) {
resetInputValue(event, value);
}
handleClose(event, "blur");
};
const handleInputChange2 = (event) => {
const newValue = event.target.value;
if (inputValue !== newValue) {
setInputValueState(newValue);
setInputPristine(false);
if (onInputChange) {
onInputChange(event, newValue, "input");
}
}
if (newValue === "") {
if (!disableClearable && !multiple) {
handleValue(event, null, "clear");
}
} else {
handleOpen(event);
}
};
const handleOptionMouseMove = (event) => {
const index2 = Number(event.currentTarget.getAttribute("data-option-index"));
if (highlightedIndexRef.current !== index2) {
setHighlightedIndex({
event,
index: index2,
reason: "mouse"
});
}
};
const handleOptionTouchStart = (event) => {
setHighlightedIndex({
event,
index: Number(event.currentTarget.getAttribute("data-option-index")),
reason: "touch"
});
isTouch.current = true;
};
const handleOptionClick = (event) => {
const index2 = Number(event.currentTarget.getAttribute("data-option-index"));
selectNewValue(event, filteredOptions[index2], "selectOption");
isTouch.current = false;
};
const handleTagDelete = (index2) => (event) => {
const newValue = value.slice();
newValue.splice(index2, 1);
handleValue(event, newValue, "removeOption", {
option: value[index2]
});
};
const handlePopupIndicator = (event) => {
if (open) {
handleClose(event, "toggleInput");
} else {
handleOpen(event);
}
};
const handleMouseDown = (event) => {
if (!event.currentTarget.contains(event.target)) {
return;
}
if (event.target.getAttribute("id") !== id) {
event.preventDefault();
}
};
const handleClick = (event) => {
if (!event.currentTarget.contains(event.target)) {
return;
}
inputRef.current.focus();
if (selectOnFocus && firstFocus.current && inputRef.current.selectionEnd - inputRef.current.selectionStart === 0) {
inputRef.current.select();
}
firstFocus.current = false;
};
const handleInputMouseDown = (event) => {
if (!disabledProp && (inputValue === "" || !open)) {
handlePopupIndicator(event);
}
};
let dirty = freeSolo && inputValue.length > 0;
dirty = dirty || (multiple ? value.length > 0 : value !== null);
let groupedOptions = filteredOptions;
if (groupBy) {
const indexBy = /* @__PURE__ */ new Map();
let warn = false;
groupedOptions = filteredOptions.reduce((acc, option, index2) => {
const group = groupBy(option);
if (acc.length > 0 && acc[acc.length - 1].group === group) {
acc[acc.length - 1].options.push(option);
} else {
if (true) {
if (indexBy.get(group) && !warn) {
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`.");
warn = true;
}
indexBy.set(group, true);
}
acc.push({
key: index2,
index: index2,
group,
options: [option]
});
}
return acc;
}, []);
}
if (disabledProp && focused) {
handleBlur2();
}
return {
getRootProps: (other = {}) => _extends({
"aria-owns": listboxAvailable ? `${id}-listbox` : null
}, other, {
onKeyDown: handleKeyDown2(other),
onMouseDown: handleMouseDown,
onClick: handleClick
}),
getInputLabelProps: () => ({
id: `${id}-label`,
htmlFor: id
}),
getInputProps: () => ({
id,
value: inputValue,
onBlur: handleBlur2,
onFocus: handleFocus,
onChange: handleInputChange2,
onMouseDown: handleInputMouseDown,
// if open then this is handled imperatively so don't let react override
// only have an opinion about this when closed
"aria-activedescendant": popupOpen ? "" : null,
"aria-autocomplete": autoComplete ? "both" : "list",
"aria-controls": listboxAvailable ? `${id}-listbox` : void 0,
"aria-expanded": listboxAvailable,
// Disable browser's suggestion that might overlap with the popup.
// Handle autocomplete but not autofill.
autoComplete: "off",
ref: inputRef,
autoCapitalize: "none",
spellCheck: "false",
role: "combobox",
disabled: disabledProp
}),
getClearProps: () => ({
tabIndex: -1,
type: "button",
onClick: handleClear
}),
getPopupIndicatorProps: () => ({
tabIndex: -1,
type: "button",
onClick: handlePopupIndicator
}),
getTagProps: ({
index: index2
}) => _extends({
key: index2,
"data-tag-index": index2,
tabIndex: -1
}, !readOnly && {
onDelete: handleTagDelete(index2)
}),
getListboxProps: () => ({
role: "listbox",
id: `${id}-listbox`,
"aria-labelledby": `${id}-label`,
ref: handleListboxRef,
onMouseDown: (event) => {
event.preventDefault();
}
}),
getOptionProps: ({
index: index2,
option
}) => {
var _getOptionKey;
const selected = (multiple ? value : [value]).some((value2) => value2 != null && isOptionEqualToValue(option, value2));
const disabled = getOptionDisabled ? getOptionDisabled(option) : false;
return {
key: (_getOptionKey = getOptionKey == null ? void 0 : getOptionKey(option)) != null ? _getOptionKey : getOptionLabel(option),
tabIndex: -1,
role: "option",
id: `${id}-option-${index2}`,
onMouseMove: handleOptionMouseMove,
onClick: handleOptionClick,
onTouchStart: handleOptionTouchStart,
"data-option-index": index2,
"aria-disabled": disabled,
"aria-selected": selected
};
},
id,
inputValue,
value,
dirty,
expanded: popupOpen && anchorEl,
popupOpen,
focused: focused || focusedTag !== -1,
anchorEl,
setAnchorEl,
focusedTag,
groupedOptions
};
}
// node_modules/@mui/material/Popper/Popper.js
init_extends();
init_objectWithoutPropertiesLoose();
// node_modules/@mui/base/Popper/Popper.js
init_extends();
init_objectWithoutPropertiesLoose();
var React7 = __toESM(require_react());
init_utils();
// node_modules/@popperjs/core/lib/enums.js
var top = "top";
var bottom = "bottom";
var right = "right";
var left = "left";
var auto = "auto";
var basePlacements = [top, bottom, right, left];
var start = "start";
var end = "end";
var clippingParents = "clippingParents";
var viewport = "viewport";
var popper = "popper";
var reference = "reference";
var variationPlacements = basePlacements.reduce(function(acc, placement) {
return acc.concat([placement + "-" + start, placement + "-" + end]);
}, []);
var placements = [].concat(basePlacements, [auto]).reduce(function(acc, placement) {
return acc.concat([placement, placement + "-" + start, placement + "-" + end]);
}, []);
var beforeRead = "beforeRead";
var read = "read";
var afterRead = "afterRead";
var beforeMain = "beforeMain";
var main = "main";
var afterMain = "afterMain";
var beforeWrite = "beforeWrite";
var write = "write";
var afterWrite = "afterWrite";
var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];
// node_modules/@popperjs/core/lib/dom-utils/getNodeName.js
function getNodeName(element) {
return element ? (element.nodeName || "").toLowerCase() : null;
}
// node_modules/@popperjs/core/lib/dom-utils/getWindow.js
function getWindow(node) {
if (node == null) {
return window;
}
if (node.toString() !== "[object Window]") {
var ownerDocument2 = node.ownerDocument;
return ownerDocument2 ? ownerDocument2.defaultView || window : window;
}
return node;
}
// node_modules/@popperjs/core/lib/dom-utils/instanceOf.js
function isElement(node) {
var OwnElement = getWindow(node).Element;
return node instanceof OwnElement || node instanceof Element;
}
function isHTMLElement(node) {
var OwnElement = getWindow(node).HTMLElement;
return node instanceof OwnElement || node instanceof HTMLElement;
}
function isShadowRoot(node) {
if (typeof ShadowRoot === "undefined") {
return false;
}
var OwnElement = getWindow(node).ShadowRoot;
return node instanceof OwnElement || node instanceof ShadowRoot;
}
// node_modules/@popperjs/core/lib/modifiers/applyStyles.js
function applyStyles(_ref) {
var state = _ref.state;
Object.keys(state.elements).forEach(function(name) {
var style = state.styles[name] || {};
var attributes = state.attributes[name] || {};
var element = state.elements[name];
if (!isHTMLElement(element) || !getNodeName(element)) {
return;
}
Object.assign(element.style, style);
Object.keys(attributes).forEach(function(name2) {
var value = attributes[name2];
if (value === false) {
element.removeAttribute(name2);
} else {
element.setAttribute(name2, value === true ? "" : value);
}
});
});
}
function effect(_ref2) {
var state = _ref2.state;
var initialStyles = {
popper: {
position: state.options.strategy,
left: "0",
top: "0",
margin: "0"
},
arrow: {
position: "absolute"
},
reference: {}
};
Object.assign(state.elements.popper.style, initialStyles.popper);
state.styles = initialStyles;
if (state.elements.arrow) {
Object.assign(state.elements.arrow.style, initialStyles.arrow);
}
return function() {
Object.keys(state.elements).forEach(function(name) {
var element = state.elements[name];
var attributes = state.attributes[name] || {};
var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]);
var style = styleProperties.reduce(function(style2, property) {
style2[property] = "";
return style2;
}, {});
if (!isHTMLElement(element) || !getNodeName(element)) {
return;
}
Object.assign(element.style, style);
Object.keys(attributes).forEach(function(attribute) {
element.removeAttribute(attribute);
});
});
};
}
var applyStyles_default = {
name: "applyStyles",
enabled: true,
phase: "write",
fn: applyStyles,
effect,
requires: ["computeStyles"]
};
// node_modules/@popperjs/core/lib/utils/getBasePlacement.js
function getBasePlacement(placement) {
return placement.split("-")[0];
}
// node_modules/@popperjs/core/lib/utils/math.js
var max = Math.max;
var min = Math.min;
var round = Math.round;
// node_modules/@popperjs/core/lib/utils/userAgent.js
function getUAString() {
var uaData = navigator.userAgentData;
if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {
return uaData.brands.map(function(item) {
return item.brand + "/" + item.version;
}).join(" ");
}
return navigator.userAgent;
}
// node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js
function isLayoutViewport() {
return !/^((?!chrome|android).)*safari/i.test(getUAString());
}
// node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js
function getBoundingClientRect(element, includeScale, isFixedStrategy) {
if (includeScale === void 0) {
includeScale = false;
}
if (isFixedStrategy === void 0) {
isFixedStrategy = false;
}
var clientRect = element.getBoundingClientRect();
var scaleX = 1;
var scaleY = 1;
if (includeScale && isHTMLElement(element)) {
scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;
scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;
}
var _ref = isElement(element) ? getWindow(element) : window, visualViewport = _ref.visualViewport;
var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;
var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;
var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;
var width = clientRect.width / scaleX;
var height = clientRect.height / scaleY;
return {
width,
height,
top: y,
right: x + width,
bottom: y + height,
left: x,
x,
y
};
}
// node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js
function getLayoutRect(element) {
var clientRect = getBoundingClientRect(element);
var width = element.offsetWidth;
var height = element.offsetHeight;
if (Math.abs(clientRect.width - width) <= 1) {
width = clientRect.width;
}
if (Math.abs(clientRect.height - height) <= 1) {
height = clientRect.height;
}
return {
x: element.offsetLeft,
y: element.offsetTop,
width,
height
};
}
// node_modules/@popperjs/core/lib/dom-utils/contains.js
function contains(parent, child) {
var rootNode = child.getRootNode && child.getRootNode();
if (parent.contains(child)) {
return true;
} else if (rootNode && isShadowRoot(rootNode)) {
var next = child;
do {
if (next && parent.isSameNode(next)) {
return true;
}
next = next.parentNode || next.host;
} while (next);
}
return false;
}
// node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js
function getComputedStyle(element) {
return getWindow(element).getComputedStyle(element);
}
// node_modules/@popperjs/core/lib/dom-utils/isTableElement.js
function isTableElement(element) {
return ["table", "td", "th"].indexOf(getNodeName(element)) >= 0;
}
// node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js
function getDocumentElement(element) {
return ((isElement(element) ? element.ownerDocument : (
// $FlowFixMe[prop-missing]
element.document
)) || window.document).documentElement;
}
// node_modules/@popperjs/core/lib/dom-utils/getParentNode.js
function getParentNode(element) {
if (getNodeName(element) === "html") {
return element;
}
return (
// this is a quicker (but less type safe) way to save quite some bytes from the bundle
// $FlowFixMe[incompatible-return]
// $FlowFixMe[prop-missing]
element.assignedSlot || // step into the shadow DOM of the parent of a slotted node
element.parentNode || // DOM Element detected
(isShadowRoot(element) ? element.host : null) || // ShadowRoot detected
// $FlowFixMe[incompatible-call]: HTMLElement is a Node
getDocumentElement(element)
);
}
// node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js
function getTrueOffsetParent(element) {
if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837
getComputedStyle(element).position === "fixed") {
return null;
}
return element.offsetParent;
}
function getContainingBlock(element) {
var isFirefox = /firefox/i.test(getUAString());
var isIE = /Trident/i.test(getUAString());
if (isIE && isHTMLElement(element)) {
var elementCss = getComputedStyle(element);
if (elementCss.position === "fixed") {
return null;
}
}
var currentNode = getParentNode(element);
if (isShadowRoot(currentNode)) {
currentNode = currentNode.host;
}
while (isHTMLElement(currentNode) && ["html", "body"].indexOf(getNodeName(currentNode)) < 0) {
var css2 = getComputedStyle(currentNode);
if (css2.transform !== "none" || css2.perspective !== "none" || css2.contain === "paint" || ["transform", "perspective"].indexOf(css2.willChange) !== -1 || isFirefox && css2.willChange === "filter" || isFirefox && css2.filter && css2.filter !== "none") {
return currentNode;
} else {
currentNode = currentNode.parentNode;
}
}
return null;
}
function getOffsetParent(element) {
var window2 = getWindow(element);
var offsetParent = getTrueOffsetParent(element);
while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === "static") {
offsetParent = getTrueOffsetParent(offsetParent);
}
if (offsetParent && (getNodeName(offsetParent) === "html" || getNodeName(offsetParent) === "body" && getComputedStyle(offsetParent).position === "static")) {
return window2;
}
return offsetParent || getContainingBlock(element) || window2;
}
// node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js
function getMainAxisFromPlacement(placement) {
return ["top", "bottom"].indexOf(placement) >= 0 ? "x" : "y";
}
// node_modules/@popperjs/core/lib/utils/within.js
function within(min3, value, max3) {
return max(min3, min(value, max3));
}
function withinMaxClamp(min3, value, max3) {
var v = within(min3, value, max3);
return v > max3 ? max3 : v;
}
// node_modules/@popperjs/core/lib/utils/getFreshSideObject.js
function getFreshSideObject() {
return {
top: 0,
right: 0,
bottom: 0,
left: 0
};
}
// node_modules/@popperjs/core/lib/utils/mergePaddingObject.js
function mergePaddingObject(paddingObject) {
return Object.assign({}, getFreshSideObject(), paddingObject);
}
// node_modules/@popperjs/core/lib/utils/expandToHashMap.js
function expandToHashMap(value, keys) {
return keys.reduce(function(hashMap, key) {
hashMap[key] = value;
return hashMap;
}, {});
}
// node_modules/@popperjs/core/lib/modifiers/arrow.js
var toPaddingObject = function toPaddingObject2(padding, state) {
padding = typeof padding === "function" ? padding(Object.assign({}, state.rects, {
placement: state.placement
})) : padding;
return mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
};
function arrow(_ref) {
var _state$modifiersData$;
var state = _ref.state, name = _ref.name, options = _ref.options;
var arrowElement = state.elements.arrow;
var popperOffsets2 = state.modifiersData.popperOffsets;
var basePlacement = getBasePlacement(state.placement);
var axis = getMainAxisFromPlacement(basePlacement);
var isVertical = [left, right].indexOf(basePlacement) >= 0;
var len = isVertical ? "height" : "width";
if (!arrowElement || !popperOffsets2) {
return;
}
var paddingObject = toPaddingObject(options.padding, state);
var arrowRect = getLayoutRect(arrowElement);
var minProp = axis === "y" ? top : left;
var maxProp = axis === "y" ? bottom : right;
var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets2[axis] - state.rects.popper[len];
var startDiff = popperOffsets2[axis] - state.rects.reference[axis];
var arrowOffsetParent = getOffsetParent(arrowElement);
var clientSize = arrowOffsetParent ? axis === "y" ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;
var centerToReference = endDiff / 2 - startDiff / 2;
var min3 = paddingObject[minProp];
var max3 = clientSize - arrowRect[len] - paddingObject[maxProp];
var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;
var offset3 = within(min3, center, max3);
var axisProp = axis;
state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset3, _state$modifiersData$.centerOffset = offset3 - center, _state$modifiersData$);
}
function effect2(_ref2) {
var state = _ref2.state, options = _ref2.options;
var _options$element = options.element, arrowElement = _options$element === void 0 ? "[data-popper-arrow]" : _options$element;
if (arrowElement == null) {
return;
}
if (typeof arrowElement === "string") {
arrowElement = state.elements.popper.querySelector(arrowElement);
if (!arrowElement) {
return;
}
}
if (!contains(state.elements.popper, arrowElement)) {
return;
}
state.elements.arrow = arrowElement;
}
var arrow_default = {
name: "arrow",
enabled: true,
phase: "main",
fn: arrow,
effect: effect2,
requires: ["popperOffsets"],
requiresIfExists: ["preventOverflow"]
};
// node_modules/@popperjs/core/lib/utils/getVariation.js
function getVariation(placement) {
return placement.split("-")[1];
}
// node_modules/@popperjs/core/lib/modifiers/computeStyles.js
var unsetSides = {
top: "auto",
right: "auto",
bottom: "auto",
left: "auto"
};
function roundOffsetsByDPR(_ref, win) {
var x = _ref.x, y = _ref.y;
var dpr = win.devicePixelRatio || 1;
return {
x: round(x * dpr) / dpr || 0,
y: round(y * dpr) / dpr || 0
};
}
function mapToStyles(_ref2) {
var _Object$assign2;
var popper2 = _ref2.popper, popperRect = _ref2.popperRect, placement = _ref2.placement, variation = _ref2.variation, offsets = _ref2.offsets, position = _ref2.position, gpuAcceleration = _ref2.gpuAcceleration, adaptive = _ref2.adaptive, roundOffsets = _ref2.roundOffsets, isFixed = _ref2.isFixed;
var _offsets$x = offsets.x, x = _offsets$x === void 0 ? 0 : _offsets$x, _offsets$y = offsets.y, y = _offsets$y === void 0 ? 0 : _offsets$y;
var _ref3 = typeof roundOffsets === "function" ? roundOffsets({
x,
y
}) : {
x,
y
};
x = _ref3.x;
y = _ref3.y;
var hasX = offsets.hasOwnProperty("x");
var hasY = offsets.hasOwnProperty("y");
var sideX = left;
var sideY = top;
var win = window;
if (adaptive) {
var offsetParent = getOffsetParent(popper2);
var heightProp = "clientHeight";
var widthProp = "clientWidth";
if (offsetParent === getWindow(popper2)) {
offsetParent = getDocumentElement(popper2);
if (getComputedStyle(offsetParent).position !== "static" && position === "absolute") {
heightProp = "scrollHeight";
widthProp = "scrollWidth";
}
}
offsetParent = offsetParent;
if (placement === top || (placement === left || placement === right) && variation === end) {
sideY = bottom;
var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : (
// $FlowFixMe[prop-missing]
offsetParent[heightProp]
);
y -= offsetY - popperRect.height;
y *= gpuAcceleration ? 1 : -1;
}
if (placement === left || (placement === top || placement === bottom) && variation === end) {
sideX = right;
var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : (
// $FlowFixMe[prop-missing]
offsetParent[widthProp]
);
x -= offsetX - popperRect.width;
x *= gpuAcceleration ? 1 : -1;
}
}
var commonStyles = Object.assign({
position
}, adaptive && unsetSides);
var _ref4 = roundOffsets === true ? roundOffsetsByDPR({
x,
y
}, getWindow(popper2)) : {
x,
y
};
x = _ref4.x;
y = _ref4.y;
if (gpuAcceleration) {
var _Object$assign;
return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? "0" : "", _Object$assign[sideX] = hasX ? "0" : "", _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign));
}
return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : "", _Object$assign2[sideX] = hasX ? x + "px" : "", _Object$assign2.transform = "", _Object$assign2));
}
function computeStyles(_ref5) {
var state = _ref5.state, options = _ref5.options;
var _options$gpuAccelerat = options.gpuAcceleration, gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, _options$adaptive = options.adaptive, adaptive = _options$adaptive === void 0 ? true : _options$adaptive, _options$roundOffsets = options.roundOffsets, roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;
var commonStyles = {
placement: getBasePlacement(state.placement),
variation: getVariation(state.placement),
popper: state.elements.popper,
popperRect: state.rects.popper,
gpuAcceleration,
isFixed: state.options.strategy === "fixed"
};
if (state.modifiersData.popperOffsets != null) {
state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {
offsets: state.modifiersData.popperOffsets,
position: state.options.strategy,
adaptive,
roundOffsets
})));
}
if (state.modifiersData.arrow != null) {
state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {
offsets: state.modifiersData.arrow,
position: "absolute",
adaptive: false,
roundOffsets
})));
}
state.attributes.popper = Object.assign({}, state.attributes.popper, {
"data-popper-placement": state.placement
});
}
var computeStyles_default = {
name: "computeStyles",
enabled: true,
phase: "beforeWrite",
fn: computeStyles,
data: {}
};
// node_modules/@popperjs/core/lib/modifiers/eventListeners.js
var passive = {
passive: true
};
function effect3(_ref) {
var state = _ref.state, instance = _ref.instance, options = _ref.options;
var _options$scroll = options.scroll, scroll = _options$scroll === void 0 ? true : _options$scroll, _options$resize = options.resize, resize = _options$resize === void 0 ? true : _options$resize;
var window2 = getWindow(state.elements.popper);
var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);
if (scroll) {
scrollParents.forEach(function(scrollParent) {
scrollParent.addEventListener("scroll", instance.update, passive);
});
}
if (resize) {
window2.addEventListener("resize", instance.update, passive);
}
return function() {
if (scroll) {
scrollParents.forEach(function(scrollParent) {
scrollParent.removeEventListener("scroll", instance.update, passive);
});
}
if (resize) {
window2.removeEventListener("resize", instance.update, passive);
}
};
}
var eventListeners_default = {
name: "eventListeners",
enabled: true,
phase: "write",
fn: function fn() {
},
effect: effect3,
data: {}
};
// node_modules/@popperjs/core/lib/utils/getOppositePlacement.js
var hash = {
left: "right",
right: "left",
bottom: "top",
top: "bottom"
};
function getOppositePlacement(placement) {
return placement.replace(/left|right|bottom|top/g, function(matched) {
return hash[matched];
});
}
// node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js
var hash2 = {
start: "end",
end: "start"
};
function getOppositeVariationPlacement(placement) {
return placement.replace(/start|end/g, function(matched) {
return hash2[matched];
});
}
// node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js
function getWindowScroll(node) {
var win = getWindow(node);
var scrollLeft = win.pageXOffset;
var scrollTop = win.pageYOffset;
return {
scrollLeft,
scrollTop
};
}
// node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js
function getWindowScrollBarX(element) {
return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;
}
// node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js
function getViewportRect(element, strategy) {
var win = getWindow(element);
var html = getDocumentElement(element);
var visualViewport = win.visualViewport;
var width = html.clientWidth;
var height = html.clientHeight;
var x = 0;
var y = 0;
if (visualViewport) {
width = visualViewport.width;
height = visualViewport.height;
var layoutViewport = isLayoutViewport();
if (layoutViewport || !layoutViewport && strategy === "fixed") {
x = visualViewport.offsetLeft;
y = visualViewport.offsetTop;
}
}
return {
width,
height,
x: x + getWindowScrollBarX(element),
y
};
}
// node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js
function getDocumentRect(element) {
var _element$ownerDocumen;
var html = getDocumentElement(element);
var winScroll = getWindowScroll(element);
var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;
var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);
var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);
var x = -winScroll.scrollLeft + getWindowScrollBarX(element);
var y = -winScroll.scrollTop;
if (getComputedStyle(body || html).direction === "rtl") {
x += max(html.clientWidth, body ? body.clientWidth : 0) - width;
}
return {
width,
height,
x,
y
};
}
// node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js
function isScrollParent(element) {
var _getComputedStyle = getComputedStyle(element), overflow = _getComputedStyle.overflow, overflowX = _getComputedStyle.overflowX, overflowY = _getComputedStyle.overflowY;
return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);
}
// node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js
function getScrollParent(node) {
if (["html", "body", "#document"].indexOf(getNodeName(node)) >= 0) {
return node.ownerDocument.body;
}
if (isHTMLElement(node) && isScrollParent(node)) {
return node;
}
return getScrollParent(getParentNode(node));
}
// node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js
function listScrollParents(element, list) {
var _element$ownerDocumen;
if (list === void 0) {
list = [];
}
var scrollParent = getScrollParent(element);
var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);
var win = getWindow(scrollParent);
var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;
var updatedList = list.concat(target);
return isBody ? updatedList : (
// $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here
updatedList.concat(listScrollParents(getParentNode(target)))
);
}
// node_modules/@popperjs/core/lib/utils/rectToClientRect.js
function rectToClientRect(rect) {
return Object.assign({}, rect, {
left: rect.x,
top: rect.y,
right: rect.x + rect.width,
bottom: rect.y + rect.height
});
}
// node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js
function getInnerBoundingClientRect(element, strategy) {
var rect = getBoundingClientRect(element, false, strategy === "fixed");
rect.top = rect.top + element.clientTop;
rect.left = rect.left + element.clientLeft;
rect.bottom = rect.top + element.clientHeight;
rect.right = rect.left + element.clientWidth;
rect.width = element.clientWidth;
rect.height = element.clientHeight;
rect.x = rect.left;
rect.y = rect.top;
return rect;
}
function getClientRectFromMixedType(element, clippingParent, strategy) {
return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));
}
function getClippingParents(element) {
var clippingParents2 = listScrollParents(getParentNode(element));
var canEscapeClipping = ["absolute", "fixed"].indexOf(getComputedStyle(element).position) >= 0;
var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;
if (!isElement(clipperElement)) {
return [];
}
return clippingParents2.filter(function(clippingParent) {
return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== "body";
});
}
function getClippingRect(element, boundary, rootBoundary, strategy) {
var mainClippingParents = boundary === "clippingParents" ? getClippingParents(element) : [].concat(boundary);
var clippingParents2 = [].concat(mainClippingParents, [rootBoundary]);
var firstClippingParent = clippingParents2[0];
var clippingRect = clippingParents2.reduce(function(accRect, clippingParent) {
var rect = getClientRectFromMixedType(element, clippingParent, strategy);
accRect.top = max(rect.top, accRect.top);
accRect.right = min(rect.right, accRect.right);
accRect.bottom = min(rect.bottom, accRect.bottom);
accRect.left = max(rect.left, accRect.left);
return accRect;
}, getClientRectFromMixedType(element, firstClippingParent, strategy));
clippingRect.width = clippingRect.right - clippingRect.left;
clippingRect.height = clippingRect.bottom - clippingRect.top;
clippingRect.x = clippingRect.left;
clippingRect.y = clippingRect.top;
return clippingRect;
}
// node_modules/@popperjs/core/lib/utils/computeOffsets.js
function computeOffsets(_ref) {
var reference2 = _ref.reference, element = _ref.element, placement = _ref.placement;
var basePlacement = placement ? getBasePlacement(placement) : null;
var variation = placement ? getVariation(placement) : null;
var commonX = reference2.x + reference2.width / 2 - element.width / 2;
var commonY = reference2.y + reference2.height / 2 - element.height / 2;
var offsets;
switch (basePlacement) {
case top:
offsets = {
x: commonX,
y: reference2.y - element.height
};
break;
case bottom:
offsets = {
x: commonX,
y: reference2.y + reference2.height
};
break;
case right:
offsets = {
x: reference2.x + reference2.width,
y: commonY
};
break;
case left:
offsets = {
x: reference2.x - element.width,
y: commonY
};
break;
default:
offsets = {
x: reference2.x,
y: reference2.y
};
}
var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;
if (mainAxis != null) {
var len = mainAxis === "y" ? "height" : "width";
switch (variation) {
case start:
offsets[mainAxis] = offsets[mainAxis] - (reference2[len] / 2 - element[len] / 2);
break;
case end:
offsets[mainAxis] = offsets[mainAxis] + (reference2[len] / 2 - element[len] / 2);
break;
default:
}
}
return offsets;
}
// node_modules/@popperjs/core/lib/utils/detectOverflow.js
function detectOverflow(state, options) {
if (options === void 0) {
options = {};
}
var _options = options, _options$placement = _options.placement, placement = _options$placement === void 0 ? state.placement : _options$placement, _options$strategy = _options.strategy, strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, _options$boundary = _options.boundary, boundary = _options$boundary === void 0 ? clippingParents : _options$boundary, _options$rootBoundary = _options.rootBoundary, rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary, _options$elementConte = _options.elementContext, elementContext = _options$elementConte === void 0 ? popper : _options$elementConte, _options$altBoundary = _options.altBoundary, altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, _options$padding = _options.padding, padding = _options$padding === void 0 ? 0 : _options$padding;
var paddingObject = mergePaddingObject(typeof padding !== "number" ? padding : expandToHashMap(padding, basePlacements));
var altContext = elementContext === popper ? reference : popper;
var popperRect = state.rects.popper;
var element = state.elements[altBoundary ? altContext : elementContext];
var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);
var referenceClientRect = getBoundingClientRect(state.elements.reference);
var popperOffsets2 = computeOffsets({
reference: referenceClientRect,
element: popperRect,
strategy: "absolute",
placement
});
var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets2));
var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect;
var overflowOffsets = {
top: clippingClientRect.top - elementClientRect.top + paddingObject.top,
bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,
left: clippingClientRect.left - elementClientRect.left + paddingObject.left,
right: elementClientRect.right - clippingClientRect.right + paddingObject.right
};
var offsetData = state.modifiersData.offset;
if (elementContext === popper && offsetData) {
var offset3 = offsetData[placement];
Object.keys(overflowOffsets).forEach(function(key) {
var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;
var axis = [top, bottom].indexOf(key) >= 0 ? "y" : "x";
overflowOffsets[key] += offset3[axis] * multiply;
});
}
return overflowOffsets;
}
// node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js
function computeAutoPlacement(state, options) {
if (options === void 0) {
options = {};
}
var _options = options, placement = _options.placement, boundary = _options.boundary, rootBoundary = _options.rootBoundary, padding = _options.padding, flipVariations = _options.flipVariations, _options$allowedAutoP = _options.allowedAutoPlacements, allowedAutoPlacements = _options$allowedAutoP === void 0 ? placements : _options$allowedAutoP;
var variation = getVariation(placement);
var placements3 = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function(placement2) {
return getVariation(placement2) === variation;
}) : basePlacements;
var allowedPlacements = placements3.filter(function(placement2) {
return allowedAutoPlacements.indexOf(placement2) >= 0;
});
if (allowedPlacements.length === 0) {
allowedPlacements = placements3;
}
var overflows = allowedPlacements.reduce(function(acc, placement2) {
acc[placement2] = detectOverflow(state, {
placement: placement2,
boundary,
rootBoundary,
padding
})[getBasePlacement(placement2)];
return acc;
}, {});
return Object.keys(overflows).sort(function(a, b) {
return overflows[a] - overflows[b];
});
}
// node_modules/@popperjs/core/lib/modifiers/flip.js
function getExpandedFallbackPlacements(placement) {
if (getBasePlacement(placement) === auto) {
return [];
}
var oppositePlacement = getOppositePlacement(placement);
return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];
}
function flip(_ref) {
var state = _ref.state, options = _ref.options, name = _ref.name;
if (state.modifiersData[name]._skip) {
return;
}
var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, specifiedFallbackPlacements = options.fallbackPlacements, padding = options.padding, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, _options$flipVariatio = options.flipVariations, flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, allowedAutoPlacements = options.allowedAutoPlacements;
var preferredPlacement = state.options.placement;
var basePlacement = getBasePlacement(preferredPlacement);
var isBasePlacement = basePlacement === preferredPlacement;
var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));
var placements3 = [preferredPlacement].concat(fallbackPlacements).reduce(function(acc, placement2) {
return acc.concat(getBasePlacement(placement2) === auto ? computeAutoPlacement(state, {
placement: placement2,
boundary,
rootBoundary,
padding,
flipVariations,
allowedAutoPlacements
}) : placement2);
}, []);
var referenceRect = state.rects.reference;
var popperRect = state.rects.popper;
var checksMap = /* @__PURE__ */ new Map();
var makeFallbackChecks = true;
var firstFittingPlacement = placements3[0];
for (var i = 0; i < placements3.length; i++) {
var placement = placements3[i];
var _basePlacement = getBasePlacement(placement);
var isStartVariation = getVariation(placement) === start;
var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;
var len = isVertical ? "width" : "height";
var overflow = detectOverflow(state, {
placement,
boundary,
rootBoundary,
altBoundary,
padding
});
var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;
if (referenceRect[len] > popperRect[len]) {
mainVariationSide = getOppositePlacement(mainVariationSide);
}
var altVariationSide = getOppositePlacement(mainVariationSide);
var checks = [];
if (checkMainAxis) {
checks.push(overflow[_basePlacement] <= 0);
}
if (checkAltAxis) {
checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);
}
if (checks.every(function(check) {
return check;
})) {
firstFittingPlacement = placement;
makeFallbackChecks = false;
break;
}
checksMap.set(placement, checks);
}
if (makeFallbackChecks) {
var numberOfChecks = flipVariations ? 3 : 1;
var _loop = function _loop2(_i2) {
var fittingPlacement = placements3.find(function(placement2) {
var checks2 = checksMap.get(placement2);
if (checks2) {
return checks2.slice(0, _i2).every(function(check) {
return check;
});
}
});
if (fittingPlacement) {
firstFittingPlacement = fittingPlacement;
return "break";
}
};
for (var _i = numberOfChecks; _i > 0; _i--) {
var _ret = _loop(_i);
if (_ret === "break")
break;
}
}
if (state.placement !== firstFittingPlacement) {
state.modifiersData[name]._skip = true;
state.placement = firstFittingPlacement;
state.reset = true;
}
}
var flip_default = {
name: "flip",
enabled: true,
phase: "main",
fn: flip,
requiresIfExists: ["offset"],
data: {
_skip: false
}
};
// node_modules/@popperjs/core/lib/modifiers/hide.js
function getSideOffsets(overflow, rect, preventedOffsets) {
if (preventedOffsets === void 0) {
preventedOffsets = {
x: 0,
y: 0
};
}
return {
top: overflow.top - rect.height - preventedOffsets.y,
right: overflow.right - rect.width + preventedOffsets.x,
bottom: overflow.bottom - rect.height + preventedOffsets.y,
left: overflow.left - rect.width - preventedOffsets.x
};
}
function isAnySideFullyClipped(overflow) {
return [top, right, bottom, left].some(function(side) {
return overflow[side] >= 0;
});
}
function hide(_ref) {
var state = _ref.state, name = _ref.name;
var referenceRect = state.rects.reference;
var popperRect = state.rects.popper;
var preventedOffsets = state.modifiersData.preventOverflow;
var referenceOverflow = detectOverflow(state, {
elementContext: "reference"
});
var popperAltOverflow = detectOverflow(state, {
altBoundary: true
});
var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);
var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);
var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);
var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);
state.modifiersData[name] = {
referenceClippingOffsets,
popperEscapeOffsets,
isReferenceHidden,
hasPopperEscaped
};
state.attributes.popper = Object.assign({}, state.attributes.popper, {
"data-popper-reference-hidden": isReferenceHidden,
"data-popper-escaped": hasPopperEscaped
});
}
var hide_default = {
name: "hide",
enabled: true,
phase: "main",
requiresIfExists: ["preventOverflow"],
fn: hide
};
// node_modules/@popperjs/core/lib/modifiers/offset.js
function distanceAndSkiddingToXY(placement, rects, offset3) {
var basePlacement = getBasePlacement(placement);
var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;
var _ref = typeof offset3 === "function" ? offset3(Object.assign({}, rects, {
placement
})) : offset3, skidding = _ref[0], distance = _ref[1];
skidding = skidding || 0;
distance = (distance || 0) * invertDistance;
return [left, right].indexOf(basePlacement) >= 0 ? {
x: distance,
y: skidding
} : {
x: skidding,
y: distance
};
}
function offset(_ref2) {
var state = _ref2.state, options = _ref2.options, name = _ref2.name;
var _options$offset = options.offset, offset3 = _options$offset === void 0 ? [0, 0] : _options$offset;
var data = placements.reduce(function(acc, placement) {
acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset3);
return acc;
}, {});
var _data$state$placement = data[state.placement], x = _data$state$placement.x, y = _data$state$placement.y;
if (state.modifiersData.popperOffsets != null) {
state.modifiersData.popperOffsets.x += x;
state.modifiersData.popperOffsets.y += y;
}
state.modifiersData[name] = data;
}
var offset_default = {
name: "offset",
enabled: true,
phase: "main",
requires: ["popperOffsets"],
fn: offset
};
// node_modules/@popperjs/core/lib/modifiers/popperOffsets.js
function popperOffsets(_ref) {
var state = _ref.state, name = _ref.name;
state.modifiersData[name] = computeOffsets({
reference: state.rects.reference,
element: state.rects.popper,
strategy: "absolute",
placement: state.placement
});
}
var popperOffsets_default = {
name: "popperOffsets",
enabled: true,
phase: "read",
fn: popperOffsets,
data: {}
};
// node_modules/@popperjs/core/lib/utils/getAltAxis.js
function getAltAxis(axis) {
return axis === "x" ? "y" : "x";
}
// node_modules/@popperjs/core/lib/modifiers/preventOverflow.js
function preventOverflow(_ref) {
var state = _ref.state, options = _ref.options, name = _ref.name;
var _options$mainAxis = options.mainAxis, checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, _options$altAxis = options.altAxis, checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, boundary = options.boundary, rootBoundary = options.rootBoundary, altBoundary = options.altBoundary, padding = options.padding, _options$tether = options.tether, tether = _options$tether === void 0 ? true : _options$tether, _options$tetherOffset = options.tetherOffset, tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;
var overflow = detectOverflow(state, {
boundary,
rootBoundary,
padding,
altBoundary
});
var basePlacement = getBasePlacement(state.placement);
var variation = getVariation(state.placement);
var isBasePlacement = !variation;
var mainAxis = getMainAxisFromPlacement(basePlacement);
var altAxis = getAltAxis(mainAxis);
var popperOffsets2 = state.modifiersData.popperOffsets;
var referenceRect = state.rects.reference;
var popperRect = state.rects.popper;
var tetherOffsetValue = typeof tetherOffset === "function" ? tetherOffset(Object.assign({}, state.rects, {
placement: state.placement
})) : tetherOffset;
var normalizedTetherOffsetValue = typeof tetherOffsetValue === "number" ? {
mainAxis: tetherOffsetValue,
altAxis: tetherOffsetValue
} : Object.assign({
mainAxis: 0,
altAxis: 0
}, tetherOffsetValue);
var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;
var data = {
x: 0,
y: 0
};
if (!popperOffsets2) {
return;
}
if (checkMainAxis) {
var _offsetModifierState$;
var mainSide = mainAxis === "y" ? top : left;
var altSide = mainAxis === "y" ? bottom : right;
var len = mainAxis === "y" ? "height" : "width";
var offset3 = popperOffsets2[mainAxis];
var min3 = offset3 + overflow[mainSide];
var max3 = offset3 - overflow[altSide];
var additive = tether ? -popperRect[len] / 2 : 0;
var minLen = variation === start ? referenceRect[len] : popperRect[len];
var maxLen = variation === start ? -popperRect[len] : -referenceRect[len];
var arrowElement = state.elements.arrow;
var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {
width: 0,
height: 0
};
var arrowPaddingObject = state.modifiersData["arrow#persistent"] ? state.modifiersData["arrow#persistent"].padding : getFreshSideObject();
var arrowPaddingMin = arrowPaddingObject[mainSide];
var arrowPaddingMax = arrowPaddingObject[altSide];
var arrowLen = within(0, referenceRect[len], arrowRect[len]);
var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;
var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;
var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);
var clientOffset = arrowOffsetParent ? mainAxis === "y" ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;
var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;
var tetherMin = offset3 + minOffset - offsetModifierValue - clientOffset;
var tetherMax = offset3 + maxOffset - offsetModifierValue;
var preventedOffset = within(tether ? min(min3, tetherMin) : min3, offset3, tether ? max(max3, tetherMax) : max3);
popperOffsets2[mainAxis] = preventedOffset;
data[mainAxis] = preventedOffset - offset3;
}
if (checkAltAxis) {
var _offsetModifierState$2;
var _mainSide = mainAxis === "x" ? top : left;
var _altSide = mainAxis === "x" ? bottom : right;
var _offset = popperOffsets2[altAxis];
var _len = altAxis === "y" ? "height" : "width";
var _min = _offset + overflow[_mainSide];
var _max = _offset - overflow[_altSide];
var isOriginSide = [top, left].indexOf(basePlacement) !== -1;
var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;
var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;
var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;
var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);
popperOffsets2[altAxis] = _preventedOffset;
data[altAxis] = _preventedOffset - _offset;
}
state.modifiersData[name] = data;
}
var preventOverflow_default = {
name: "preventOverflow",
enabled: true,
phase: "main",
fn: preventOverflow,
requiresIfExists: ["offset"]
};
// node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js
function getHTMLElementScroll(element) {
return {
scrollLeft: element.scrollLeft,
scrollTop: element.scrollTop
};
}
// node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js
function getNodeScroll(node) {
if (node === getWindow(node) || !isHTMLElement(node)) {
return getWindowScroll(node);
} else {
return getHTMLElementScroll(node);
}
}
// node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js
function isElementScaled(element) {
var rect = element.getBoundingClientRect();
var scaleX = round(rect.width) / element.offsetWidth || 1;
var scaleY = round(rect.height) / element.offsetHeight || 1;
return scaleX !== 1 || scaleY !== 1;
}
function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
if (isFixed === void 0) {
isFixed = false;
}
var isOffsetParentAnElement = isHTMLElement(offsetParent);
var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);
var documentElement = getDocumentElement(offsetParent);
var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);
var scroll = {
scrollLeft: 0,
scrollTop: 0
};
var offsets = {
x: 0,
y: 0
};
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
if (getNodeName(offsetParent) !== "body" || // https://github.com/popperjs/popper-core/issues/1078
isScrollParent(documentElement)) {
scroll = getNodeScroll(offsetParent);
}
if (isHTMLElement(offsetParent)) {
offsets = getBoundingClientRect(offsetParent, true);
offsets.x += offsetParent.clientLeft;
offsets.y += offsetParent.clientTop;
} else if (documentElement) {
offsets.x = getWindowScrollBarX(documentElement);
}
}
return {
x: rect.left + scroll.scrollLeft - offsets.x,
y: rect.top + scroll.scrollTop - offsets.y,
width: rect.width,
height: rect.height
};
}
// node_modules/@popperjs/core/lib/utils/orderModifiers.js
function order(modifiers) {
var map = /* @__PURE__ */ new Map();
var visited = /* @__PURE__ */ new Set();
var result = [];
modifiers.forEach(function(modifier) {
map.set(modifier.name, modifier);
});
function sort(modifier) {
visited.add(modifier.name);
var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);
requires.forEach(function(dep) {
if (!visited.has(dep)) {
var depModifier = map.get(dep);
if (depModifier) {
sort(depModifier);
}
}
});
result.push(modifier);
}
modifiers.forEach(function(modifier) {
if (!visited.has(modifier.name)) {
sort(modifier);
}
});
return result;
}
function orderModifiers(modifiers) {
var orderedModifiers = order(modifiers);
return modifierPhases.reduce(function(acc, phase) {
return acc.concat(orderedModifiers.filter(function(modifier) {
return modifier.phase === phase;
}));
}, []);
}
// node_modules/@popperjs/core/lib/utils/debounce.js
function debounce2(fn2) {
var pending;
return function() {
if (!pending) {
pending = new Promise(function(resolve) {
Promise.resolve().then(function() {
pending = void 0;
resolve(fn2());
});
});
}
return pending;
};
}
// node_modules/@popperjs/core/lib/utils/mergeByName.js
function mergeByName(modifiers) {
var merged = modifiers.reduce(function(merged2, current) {
var existing = merged2[current.name];
merged2[current.name] = existing ? Object.assign({}, existing, current, {
options: Object.assign({}, existing.options, current.options),
data: Object.assign({}, existing.data, current.data)
}) : current;
return merged2;
}, {});
return Object.keys(merged).map(function(key) {
return merged[key];
});
}
// node_modules/@popperjs/core/lib/createPopper.js
var DEFAULT_OPTIONS = {
placement: "bottom",
modifiers: [],
strategy: "absolute"
};
function areValidElements() {
for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = arguments[_key];
}
return !args.some(function(element) {
return !(element && typeof element.getBoundingClientRect === "function");
});
}
function popperGenerator(generatorOptions) {
if (generatorOptions === void 0) {
generatorOptions = {};
}
var _generatorOptions = generatorOptions, _generatorOptions$def = _generatorOptions.defaultModifiers, defaultModifiers3 = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, _generatorOptions$def2 = _generatorOptions.defaultOptions, defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;
return function createPopper4(reference2, popper2, options) {
if (options === void 0) {
options = defaultOptions;
}
var state = {
placement: "bottom",
orderedModifiers: [],
options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),
modifiersData: {},
elements: {
reference: reference2,
popper: popper2
},
attributes: {},
styles: {}
};
var effectCleanupFns = [];
var isDestroyed = false;
var instance = {
state,
setOptions: function setOptions(setOptionsAction) {
var options2 = typeof setOptionsAction === "function" ? setOptionsAction(state.options) : setOptionsAction;
cleanupModifierEffects();
state.options = Object.assign({}, defaultOptions, state.options, options2);
state.scrollParents = {
reference: isElement(reference2) ? listScrollParents(reference2) : reference2.contextElement ? listScrollParents(reference2.contextElement) : [],
popper: listScrollParents(popper2)
};
var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers3, state.options.modifiers)));
state.orderedModifiers = orderedModifiers.filter(function(m) {
return m.enabled;
});
runModifierEffects();
return instance.update();
},
// Sync update it will always be executed, even if not necessary. This
// is useful for low frequency updates where sync behavior simplifies the
// logic.
// For high frequency updates (e.g. `resize` and `scroll` events), always
// prefer the async Popper#update method
forceUpdate: function forceUpdate() {
if (isDestroyed) {
return;
}
var _state$elements = state.elements, reference3 = _state$elements.reference, popper3 = _state$elements.popper;
if (!areValidElements(reference3, popper3)) {
return;
}
state.rects = {
reference: getCompositeRect(reference3, getOffsetParent(popper3), state.options.strategy === "fixed"),
popper: getLayoutRect(popper3)
};
state.reset = false;
state.placement = state.options.placement;
state.orderedModifiers.forEach(function(modifier) {
return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);
});
for (var index2 = 0; index2 < state.orderedModifiers.length; index2++) {
if (state.reset === true) {
state.reset = false;
index2 = -1;
continue;
}
var _state$orderedModifie = state.orderedModifiers[index2], fn2 = _state$orderedModifie.fn, _state$orderedModifie2 = _state$orderedModifie.options, _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, name = _state$orderedModifie.name;
if (typeof fn2 === "function") {
state = fn2({
state,
options: _options,
name,
instance
}) || state;
}
}
},
// Async and optimistically optimized update it will not be executed if
// not necessary (debounced to run at most once-per-tick)
update: debounce2(function() {
return new Promise(function(resolve) {
instance.forceUpdate();
resolve(state);
});
}),
destroy: function destroy() {
cleanupModifierEffects();
isDestroyed = true;
}
};
if (!areValidElements(reference2, popper2)) {
return instance;
}
instance.setOptions(options).then(function(state2) {
if (!isDestroyed && options.onFirstUpdate) {
options.onFirstUpdate(state2);
}
});
function runModifierEffects() {
state.orderedModifiers.forEach(function(_ref) {
var name = _ref.name, _ref$options = _ref.options, options2 = _ref$options === void 0 ? {} : _ref$options, effect4 = _ref.effect;
if (typeof effect4 === "function") {
var cleanupFn = effect4({
state,
name,
instance,
options: options2
});
var noopFn = function noopFn2() {
};
effectCleanupFns.push(cleanupFn || noopFn);
}
});
}
function cleanupModifierEffects() {
effectCleanupFns.forEach(function(fn2) {
return fn2();
});
effectCleanupFns = [];
}
return instance;
};
}
var createPopper = popperGenerator();
// node_modules/@popperjs/core/lib/popper-lite.js
var defaultModifiers = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default];
var createPopper2 = popperGenerator({
defaultModifiers
});
// node_modules/@popperjs/core/lib/popper.js
var defaultModifiers2 = [eventListeners_default, popperOffsets_default, computeStyles_default, applyStyles_default, offset_default, flip_default, preventOverflow_default, arrow_default, hide_default];
var createPopper3 = popperGenerator({
defaultModifiers: defaultModifiers2
});
// node_modules/@mui/base/Popper/Popper.js
var import_prop_types6 = __toESM(require_prop_types());
// node_modules/@mui/base/generateUtilityClass/index.js
init_generateUtilityClass();
var GLOBAL_CLASS_PREFIX = "base";
function buildStateClass(state) {
return `${GLOBAL_CLASS_PREFIX}--${state}`;
}
function buildSlotClass(componentName, slot) {
return `${GLOBAL_CLASS_PREFIX}-${componentName}-${slot}`;
}
function generateUtilityClass2(componentName, slot) {
const globalStateClass = globalStateClasses[slot];
return globalStateClass ? buildStateClass(globalStateClass) : buildSlotClass(componentName, slot);
}
// node_modules/@mui/base/generateUtilityClasses/index.js
function generateUtilityClasses2(componentName, slots) {
const result = {};
slots.forEach((slot) => {
result[slot] = generateUtilityClass2(componentName, slot);
});
return result;
}
// node_modules/@mui/base/Popper/popperClasses.js
var COMPONENT_NAME = "Popper";
function getPopperUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME, slot);
}
var popperClasses = generateUtilityClasses2(COMPONENT_NAME, ["root"]);
// node_modules/@mui/base/Popper/Popper.js
var import_jsx_runtime8 = __toESM(require_jsx_runtime());
var _excluded2 = ["anchorEl", "children", "direction", "disablePortal", "modifiers", "open", "placement", "popperOptions", "popperRef", "slotProps", "slots", "TransitionProps", "ownerState"];
var _excluded22 = ["anchorEl", "children", "container", "direction", "disablePortal", "keepMounted", "modifiers", "open", "placement", "popperOptions", "popperRef", "style", "transition", "slotProps", "slots"];
function flipPlacement(placement, direction) {
if (direction === "ltr") {
return placement;
}
switch (placement) {
case "bottom-end":
return "bottom-start";
case "bottom-start":
return "bottom-end";
case "top-end":
return "top-start";
case "top-start":
return "top-end";
default:
return placement;
}
}
function resolveAnchorEl(anchorEl) {
return typeof anchorEl === "function" ? anchorEl() : anchorEl;
}
function isHTMLElement2(element) {
return element.nodeType !== void 0;
}
function isVirtualElement(element) {
return !isHTMLElement2(element);
}
var useUtilityClasses = () => {
const slots = {
root: ["root"]
};
return composeClasses(slots, useClassNamesOverride(getPopperUtilityClass));
};
var defaultPopperOptions = {};
var PopperTooltip = React7.forwardRef(function PopperTooltip2(props, forwardedRef) {
var _slots$root;
const {
anchorEl,
children,
direction,
disablePortal,
modifiers,
open,
placement: initialPlacement,
popperOptions,
popperRef: popperRefProp,
slotProps = {},
slots = {},
TransitionProps
// @ts-ignore internal logic
// prevent from spreading to DOM, it can come from the parent component e.g. Select.
} = props, other = _objectWithoutPropertiesLoose(props, _excluded2);
const tooltipRef = React7.useRef(null);
const ownRef = useForkRef(tooltipRef, forwardedRef);
const popperRef = React7.useRef(null);
const handlePopperRef = useForkRef(popperRef, popperRefProp);
const handlePopperRefRef = React7.useRef(handlePopperRef);
useEnhancedEffect_default(() => {
handlePopperRefRef.current = handlePopperRef;
}, [handlePopperRef]);
React7.useImperativeHandle(popperRefProp, () => popperRef.current, []);
const rtlPlacement = flipPlacement(initialPlacement, direction);
const [placement, setPlacement] = React7.useState(rtlPlacement);
const [resolvedAnchorElement, setResolvedAnchorElement] = React7.useState(resolveAnchorEl(anchorEl));
React7.useEffect(() => {
if (popperRef.current) {
popperRef.current.forceUpdate();
}
});
React7.useEffect(() => {
if (anchorEl) {
setResolvedAnchorElement(resolveAnchorEl(anchorEl));
}
}, [anchorEl]);
useEnhancedEffect_default(() => {
if (!resolvedAnchorElement || !open) {
return void 0;
}
const handlePopperUpdate = (data) => {
setPlacement(data.placement);
};
if (true) {
if (resolvedAnchorElement && isHTMLElement2(resolvedAnchorElement) && resolvedAnchorElement.nodeType === 1) {
const box = resolvedAnchorElement.getBoundingClientRect();
if (box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
console.warn(["MUI: The `anchorEl` prop provided to the component is invalid.", "The anchor element should be part of the document layout.", "Make sure the element is present in the document or that it's not display none."].join("\n"));
}
}
}
let popperModifiers = [{
name: "preventOverflow",
options: {
altBoundary: disablePortal
}
}, {
name: "flip",
options: {
altBoundary: disablePortal
}
}, {
name: "onUpdate",
enabled: true,
phase: "afterWrite",
fn: ({
state
}) => {
handlePopperUpdate(state);
}
}];
if (modifiers != null) {
popperModifiers = popperModifiers.concat(modifiers);
}
if (popperOptions && popperOptions.modifiers != null) {
popperModifiers = popperModifiers.concat(popperOptions.modifiers);
}
const popper2 = createPopper3(resolvedAnchorElement, tooltipRef.current, _extends({
placement: rtlPlacement
}, popperOptions, {
modifiers: popperModifiers
}));
handlePopperRefRef.current(popper2);
return () => {
popper2.destroy();
handlePopperRefRef.current(null);
};
}, [resolvedAnchorElement, disablePortal, modifiers, open, popperOptions, rtlPlacement]);
const childProps = {
placement
};
if (TransitionProps !== null) {
childProps.TransitionProps = TransitionProps;
}
const classes = useUtilityClasses();
const Root = (_slots$root = slots.root) != null ? _slots$root : "div";
const rootProps = useSlotProps({
elementType: Root,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
additionalProps: {
role: "tooltip",
ref: ownRef
},
ownerState: props,
className: classes.root
});
return (0, import_jsx_runtime8.jsx)(Root, _extends({}, rootProps, {
children: typeof children === "function" ? children(childProps) : children
}));
});
var Popper = React7.forwardRef(function Popper2(props, forwardedRef) {
const {
anchorEl,
children,
container: containerProp,
direction = "ltr",
disablePortal = false,
keepMounted = false,
modifiers,
open,
placement = "bottom",
popperOptions = defaultPopperOptions,
popperRef,
style,
transition = false,
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded22);
const [exited, setExited] = React7.useState(true);
const handleEnter = () => {
setExited(false);
};
const handleExited = () => {
setExited(true);
};
if (!keepMounted && !open && (!transition || exited)) {
return null;
}
let container;
if (containerProp) {
container = containerProp;
} else if (anchorEl) {
const resolvedAnchorEl = resolveAnchorEl(anchorEl);
container = resolvedAnchorEl && isHTMLElement2(resolvedAnchorEl) ? ownerDocument(resolvedAnchorEl).body : ownerDocument(null).body;
}
const display = !open && keepMounted && (!transition || exited) ? "none" : void 0;
const transitionProps = transition ? {
in: open,
onEnter: handleEnter,
onExited: handleExited
} : void 0;
return (0, import_jsx_runtime8.jsx)(Portal, {
disablePortal,
container,
children: (0, import_jsx_runtime8.jsx)(PopperTooltip, _extends({
anchorEl,
direction,
disablePortal,
modifiers,
ref: forwardedRef,
open: transition ? !exited : open,
placement,
popperOptions,
popperRef,
slotProps,
slots
}, other, {
style: _extends({
// Prevents scroll issue, waiting for Popper.js to add this style once initiated.
position: "fixed",
// Fix Popper.js display issue
top: 0,
left: 0,
display
}, style),
TransitionProps: transitionProps,
children
}))
});
});
true ? Popper.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),
* or a function that returns either.
* It's used to set the position of the popper.
* The return value will passed as the reference object of the Popper instance.
*/
anchorEl: chainPropTypes(import_prop_types6.default.oneOfType([HTMLElementType, import_prop_types6.default.object, import_prop_types6.default.func]), (props) => {
if (props.open) {
const resolvedAnchorEl = resolveAnchorEl(props.anchorEl);
if (resolvedAnchorEl && isHTMLElement2(resolvedAnchorEl) && resolvedAnchorEl.nodeType === 1) {
const box = resolvedAnchorEl.getBoundingClientRect();
if (box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
return new Error(["MUI: The `anchorEl` prop provided to the component is invalid.", "The anchor element should be part of the document layout.", "Make sure the element is present in the document or that it's not display none."].join("\n"));
}
} else if (!resolvedAnchorEl || typeof resolvedAnchorEl.getBoundingClientRect !== "function" || isVirtualElement(resolvedAnchorEl) && resolvedAnchorEl.contextElement != null && resolvedAnchorEl.contextElement.nodeType !== 1) {
return new Error(["MUI: The `anchorEl` prop provided to the component is invalid.", "It should be an HTML element instance or a virtualElement ", "(https://popper.js.org/docs/v2/virtual-elements/)."].join("\n"));
}
}
return null;
}),
/**
* Popper render function or node.
*/
children: import_prop_types6.default.oneOfType([import_prop_types6.default.node, import_prop_types6.default.func]),
/**
* An HTML element or function that returns one.
* The `container` will have the portal children appended to it.
*
* You can also provide a callback, which is called in a React layout effect.
* This lets you set the container from a ref, and also makes server-side rendering possible.
*
* By default, it uses the body of the top-level document object,
* so it's simply `document.body` most of the time.
*/
container: import_prop_types6.default.oneOfType([HTMLElementType, import_prop_types6.default.func]),
/**
* Direction of the text.
* @default 'ltr'
*/
direction: import_prop_types6.default.oneOf(["ltr", "rtl"]),
/**
* The `children` will be under the DOM hierarchy of the parent component.
* @default false
*/
disablePortal: import_prop_types6.default.bool,
/**
* Always keep the children in the DOM.
* This prop can be useful in SEO situation or
* when you want to maximize the responsiveness of the Popper.
* @default false
*/
keepMounted: import_prop_types6.default.bool,
/**
* Popper.js is based on a "plugin-like" architecture,
* most of its features are fully encapsulated "modifiers".
*
* A modifier is a function that is called each time Popper.js needs to
* compute the position of the popper.
* For this reason, modifiers should be very performant to avoid bottlenecks.
* To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).
*/
modifiers: import_prop_types6.default.arrayOf(import_prop_types6.default.shape({
data: import_prop_types6.default.object,
effect: import_prop_types6.default.func,
enabled: import_prop_types6.default.bool,
fn: import_prop_types6.default.func,
name: import_prop_types6.default.any,
options: import_prop_types6.default.object,
phase: import_prop_types6.default.oneOf(["afterMain", "afterRead", "afterWrite", "beforeMain", "beforeRead", "beforeWrite", "main", "read", "write"]),
requires: import_prop_types6.default.arrayOf(import_prop_types6.default.string),
requiresIfExists: import_prop_types6.default.arrayOf(import_prop_types6.default.string)
})),
/**
* If `true`, the component is shown.
*/
open: import_prop_types6.default.bool.isRequired,
/**
* Popper placement.
* @default 'bottom'
*/
placement: import_prop_types6.default.oneOf(["auto-end", "auto-start", "auto", "bottom-end", "bottom-start", "bottom", "left-end", "left-start", "left", "right-end", "right-start", "right", "top-end", "top-start", "top"]),
/**
* Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.
* @default {}
*/
popperOptions: import_prop_types6.default.shape({
modifiers: import_prop_types6.default.array,
onFirstUpdate: import_prop_types6.default.func,
placement: import_prop_types6.default.oneOf(["auto-end", "auto-start", "auto", "bottom-end", "bottom-start", "bottom", "left-end", "left-start", "left", "right-end", "right-start", "right", "top-end", "top-start", "top"]),
strategy: import_prop_types6.default.oneOf(["absolute", "fixed"])
}),
/**
* A ref that points to the used popper instance.
*/
popperRef: refType_default,
/**
* The props used for each slot inside the Popper.
* @default {}
*/
slotProps: import_prop_types6.default.shape({
root: import_prop_types6.default.oneOfType([import_prop_types6.default.func, import_prop_types6.default.object])
}),
/**
* The components used for each slot inside the Popper.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types6.default.shape({
root: import_prop_types6.default.elementType
}),
/**
* Help supporting a react-transition-group/Transition component.
* @default false
*/
transition: import_prop_types6.default.bool
} : void 0;
// node_modules/@mui/material/Popper/Popper.js
var import_useThemeWithoutDefault = __toESM(require_useThemeWithoutDefault());
init_refType();
init_HTMLElementType();
var import_prop_types7 = __toESM(require_prop_types());
var React8 = __toESM(require_react());
var import_jsx_runtime9 = __toESM(require_jsx_runtime());
var _excluded3 = ["anchorEl", "component", "components", "componentsProps", "container", "disablePortal", "keepMounted", "modifiers", "open", "placement", "popperOptions", "popperRef", "transition", "slots", "slotProps"];
var PopperRoot = styled_default(Popper, {
name: "MuiPopper",
slot: "Root",
overridesResolver: (props, styles4) => styles4.root
})({});
var Popper3 = React8.forwardRef(function Popper4(inProps, ref) {
var _slots$root;
const theme = (0, import_useThemeWithoutDefault.default)();
const props = useThemeProps({
props: inProps,
name: "MuiPopper"
});
const {
anchorEl,
component,
components,
componentsProps,
container,
disablePortal,
keepMounted,
modifiers,
open,
placement,
popperOptions,
popperRef,
transition,
slots,
slotProps
} = props, other = _objectWithoutPropertiesLoose(props, _excluded3);
const RootComponent = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components == null ? void 0 : components.Root;
const otherProps = _extends({
anchorEl,
container,
disablePortal,
keepMounted,
modifiers,
open,
placement,
popperOptions,
popperRef,
transition
}, other);
return (0, import_jsx_runtime9.jsx)(PopperRoot, _extends({
as: component,
direction: theme == null ? void 0 : theme.direction,
slots: {
root: RootComponent
},
slotProps: slotProps != null ? slotProps : componentsProps
}, otherProps, {
ref
}));
});
true ? Popper3.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* An HTML element, [virtualElement](https://popper.js.org/docs/v2/virtual-elements/),
* or a function that returns either.
* It's used to set the position of the popper.
* The return value will passed as the reference object of the Popper instance.
*/
anchorEl: import_prop_types7.default.oneOfType([HTMLElementType, import_prop_types7.default.object, import_prop_types7.default.func]),
/**
* Popper render function or node.
*/
children: import_prop_types7.default.oneOfType([import_prop_types7.default.node, import_prop_types7.default.func]),
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types7.default.elementType,
/**
* The components used for each slot inside the Popper.
* Either a string to use a HTML element or a component.
* @default {}
*/
components: import_prop_types7.default.shape({
Root: import_prop_types7.default.elementType
}),
/**
* The props used for each slot inside the Popper.
* @default {}
*/
componentsProps: import_prop_types7.default.shape({
root: import_prop_types7.default.oneOfType([import_prop_types7.default.func, import_prop_types7.default.object])
}),
/**
* An HTML element or function that returns one.
* The `container` will have the portal children appended to it.
*
* You can also provide a callback, which is called in a React layout effect.
* This lets you set the container from a ref, and also makes server-side rendering possible.
*
* By default, it uses the body of the top-level document object,
* so it's simply `document.body` most of the time.
*/
container: import_prop_types7.default.oneOfType([HTMLElementType, import_prop_types7.default.func]),
/**
* The `children` will be under the DOM hierarchy of the parent component.
* @default false
*/
disablePortal: import_prop_types7.default.bool,
/**
* Always keep the children in the DOM.
* This prop can be useful in SEO situation or
* when you want to maximize the responsiveness of the Popper.
* @default false
*/
keepMounted: import_prop_types7.default.bool,
/**
* Popper.js is based on a "plugin-like" architecture,
* most of its features are fully encapsulated "modifiers".
*
* A modifier is a function that is called each time Popper.js needs to
* compute the position of the popper.
* For this reason, modifiers should be very performant to avoid bottlenecks.
* To learn how to create a modifier, [read the modifiers documentation](https://popper.js.org/docs/v2/modifiers/).
*/
modifiers: import_prop_types7.default.arrayOf(import_prop_types7.default.shape({
data: import_prop_types7.default.object,
effect: import_prop_types7.default.func,
enabled: import_prop_types7.default.bool,
fn: import_prop_types7.default.func,
name: import_prop_types7.default.any,
options: import_prop_types7.default.object,
phase: import_prop_types7.default.oneOf(["afterMain", "afterRead", "afterWrite", "beforeMain", "beforeRead", "beforeWrite", "main", "read", "write"]),
requires: import_prop_types7.default.arrayOf(import_prop_types7.default.string),
requiresIfExists: import_prop_types7.default.arrayOf(import_prop_types7.default.string)
})),
/**
* If `true`, the component is shown.
*/
open: import_prop_types7.default.bool.isRequired,
/**
* Popper placement.
* @default 'bottom'
*/
placement: import_prop_types7.default.oneOf(["auto-end", "auto-start", "auto", "bottom-end", "bottom-start", "bottom", "left-end", "left-start", "left", "right-end", "right-start", "right", "top-end", "top-start", "top"]),
/**
* Options provided to the [`Popper.js`](https://popper.js.org/docs/v2/constructors/#options) instance.
* @default {}
*/
popperOptions: import_prop_types7.default.shape({
modifiers: import_prop_types7.default.array,
onFirstUpdate: import_prop_types7.default.func,
placement: import_prop_types7.default.oneOf(["auto-end", "auto-start", "auto", "bottom-end", "bottom-start", "bottom", "left-end", "left-start", "left", "right-end", "right-start", "right", "top-end", "top-start", "top"]),
strategy: import_prop_types7.default.oneOf(["absolute", "fixed"])
}),
/**
* A ref that points to the used popper instance.
*/
popperRef: refType_default,
/**
* The props used for each slot inside the Popper.
* @default {}
*/
slotProps: import_prop_types7.default.shape({
root: import_prop_types7.default.oneOfType([import_prop_types7.default.func, import_prop_types7.default.object])
}),
/**
* The components used for each slot inside the Popper.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types7.default.shape({
root: import_prop_types7.default.elementType
}),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types7.default.oneOfType([import_prop_types7.default.arrayOf(import_prop_types7.default.oneOfType([import_prop_types7.default.func, import_prop_types7.default.object, import_prop_types7.default.bool])), import_prop_types7.default.func, import_prop_types7.default.object]),
/**
* Help supporting a react-transition-group/Transition component.
* @default false
*/
transition: import_prop_types7.default.bool
} : void 0;
var Popper_default = Popper3;
// node_modules/@mui/material/ListSubheader/listSubheaderClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getListSubheaderUtilityClass(slot) {
return generateUtilityClass("MuiListSubheader", slot);
}
var listSubheaderClasses = generateUtilityClasses("MuiListSubheader", ["root", "colorPrimary", "colorInherit", "gutters", "inset", "sticky"]);
var listSubheaderClasses_default = listSubheaderClasses;
// node_modules/@mui/material/ListSubheader/ListSubheader.js
init_objectWithoutPropertiesLoose();
init_extends();
var React9 = __toESM(require_react());
var import_prop_types8 = __toESM(require_prop_types());
init_clsx();
init_composeClasses();
init_styled();
init_useThemeProps();
init_capitalize();
var import_jsx_runtime10 = __toESM(require_jsx_runtime());
var _excluded4 = ["className", "color", "component", "disableGutters", "disableSticky", "inset"];
var useUtilityClasses2 = (ownerState) => {
const {
classes,
color,
disableGutters,
inset,
disableSticky
} = ownerState;
const slots = {
root: ["root", color !== "default" && `color${capitalize_default(color)}`, !disableGutters && "gutters", inset && "inset", !disableSticky && "sticky"]
};
return composeClasses(slots, getListSubheaderUtilityClass, classes);
};
var ListSubheaderRoot = styled_default("li", {
name: "MuiListSubheader",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.root, ownerState.color !== "default" && styles4[`color${capitalize_default(ownerState.color)}`], !ownerState.disableGutters && styles4.gutters, ownerState.inset && styles4.inset, !ownerState.disableSticky && styles4.sticky];
}
})(({
theme,
ownerState
}) => _extends({
boxSizing: "border-box",
lineHeight: "48px",
listStyle: "none",
color: (theme.vars || theme).palette.text.secondary,
fontFamily: theme.typography.fontFamily,
fontWeight: theme.typography.fontWeightMedium,
fontSize: theme.typography.pxToRem(14)
}, ownerState.color === "primary" && {
color: (theme.vars || theme).palette.primary.main
}, ownerState.color === "inherit" && {
color: "inherit"
}, !ownerState.disableGutters && {
paddingLeft: 16,
paddingRight: 16
}, ownerState.inset && {
paddingLeft: 72
}, !ownerState.disableSticky && {
position: "sticky",
top: 0,
zIndex: 1,
backgroundColor: (theme.vars || theme).palette.background.paper
}));
var ListSubheader = React9.forwardRef(function ListSubheader2(inProps, ref) {
const props = useThemeProps({
props: inProps,
name: "MuiListSubheader"
});
const {
className,
color = "default",
component = "li",
disableGutters = false,
disableSticky = false,
inset = false
} = props, other = _objectWithoutPropertiesLoose(props, _excluded4);
const ownerState = _extends({}, props, {
color,
component,
disableGutters,
disableSticky,
inset
});
const classes = useUtilityClasses2(ownerState);
return (0, import_jsx_runtime10.jsx)(ListSubheaderRoot, _extends({
as: component,
className: clsx_default(classes.root, className),
ref,
ownerState
}, other));
});
ListSubheader.muiSkipListHighlight = true;
true ? ListSubheader.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component.
*/
children: import_prop_types8.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types8.default.object,
/**
* @ignore
*/
className: import_prop_types8.default.string,
/**
* The color of the component. It supports those theme colors that make sense for this component.
* @default 'default'
*/
color: import_prop_types8.default.oneOf(["default", "inherit", "primary"]),
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types8.default.elementType,
/**
* If `true`, the List Subheader will not have gutters.
* @default false
*/
disableGutters: import_prop_types8.default.bool,
/**
* If `true`, the List Subheader will not stick to the top during scroll.
* @default false
*/
disableSticky: import_prop_types8.default.bool,
/**
* If `true`, the List Subheader is indented.
* @default false
*/
inset: import_prop_types8.default.bool,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types8.default.oneOfType([import_prop_types8.default.arrayOf(import_prop_types8.default.oneOfType([import_prop_types8.default.func, import_prop_types8.default.object, import_prop_types8.default.bool])), import_prop_types8.default.func, import_prop_types8.default.object])
} : void 0;
var ListSubheader_default = ListSubheader;
// node_modules/@mui/material/Chip/chipClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getChipUtilityClass(slot) {
return generateUtilityClass("MuiChip", slot);
}
var chipClasses = generateUtilityClasses("MuiChip", ["root", "sizeSmall", "sizeMedium", "colorError", "colorInfo", "colorPrimary", "colorSecondary", "colorSuccess", "colorWarning", "disabled", "clickable", "clickableColorPrimary", "clickableColorSecondary", "deletable", "deletableColorPrimary", "deletableColorSecondary", "outlined", "filled", "outlinedPrimary", "outlinedSecondary", "filledPrimary", "filledSecondary", "avatar", "avatarSmall", "avatarMedium", "avatarColorPrimary", "avatarColorSecondary", "icon", "iconSmall", "iconMedium", "iconColorPrimary", "iconColorSecondary", "label", "labelSmall", "labelMedium", "deleteIcon", "deleteIconSmall", "deleteIconMedium", "deleteIconColorPrimary", "deleteIconColorSecondary", "deleteIconOutlinedColorPrimary", "deleteIconOutlinedColorSecondary", "deleteIconFilledColorPrimary", "deleteIconFilledColorSecondary", "focusVisible"]);
var chipClasses_default = chipClasses;
// node_modules/@mui/material/Chip/Chip.js
init_objectWithoutPropertiesLoose();
init_extends();
var React11 = __toESM(require_react());
var import_prop_types9 = __toESM(require_prop_types());
init_clsx();
init_composeClasses();
var import_colorManipulator = __toESM(require_colorManipulator());
// node_modules/@mui/material/internal/svg-icons/Cancel.js
var React10 = __toESM(require_react());
init_createSvgIcon();
var import_jsx_runtime11 = __toESM(require_jsx_runtime());
var Cancel_default = createSvgIcon((0, import_jsx_runtime11.jsx)("path", {
d: "M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"
}), "Cancel");
// node_modules/@mui/material/Chip/Chip.js
init_useForkRef();
init_unsupportedProp();
init_capitalize();
init_useThemeProps();
init_styled();
var import_jsx_runtime12 = __toESM(require_jsx_runtime());
var import_jsx_runtime13 = __toESM(require_jsx_runtime());
var _excluded5 = ["avatar", "className", "clickable", "color", "component", "deleteIcon", "disabled", "icon", "label", "onClick", "onDelete", "onKeyDown", "onKeyUp", "size", "variant", "tabIndex", "skipFocusWhenDisabled"];
var useUtilityClasses3 = (ownerState) => {
const {
classes,
disabled,
size: size3,
color,
iconColor,
onDelete,
clickable,
variant
} = ownerState;
const slots = {
root: ["root", variant, disabled && "disabled", `size${capitalize_default(size3)}`, `color${capitalize_default(color)}`, clickable && "clickable", clickable && `clickableColor${capitalize_default(color)}`, onDelete && "deletable", onDelete && `deletableColor${capitalize_default(color)}`, `${variant}${capitalize_default(color)}`],
label: ["label", `label${capitalize_default(size3)}`],
avatar: ["avatar", `avatar${capitalize_default(size3)}`, `avatarColor${capitalize_default(color)}`],
icon: ["icon", `icon${capitalize_default(size3)}`, `iconColor${capitalize_default(iconColor)}`],
deleteIcon: ["deleteIcon", `deleteIcon${capitalize_default(size3)}`, `deleteIconColor${capitalize_default(color)}`, `deleteIcon${capitalize_default(variant)}Color${capitalize_default(color)}`]
};
return composeClasses(slots, getChipUtilityClass, classes);
};
var ChipRoot = styled_default("div", {
name: "MuiChip",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
const {
color,
iconColor,
clickable,
onDelete,
size: size3,
variant
} = ownerState;
return [{
[`& .${chipClasses_default.avatar}`]: styles4.avatar
}, {
[`& .${chipClasses_default.avatar}`]: styles4[`avatar${capitalize_default(size3)}`]
}, {
[`& .${chipClasses_default.avatar}`]: styles4[`avatarColor${capitalize_default(color)}`]
}, {
[`& .${chipClasses_default.icon}`]: styles4.icon
}, {
[`& .${chipClasses_default.icon}`]: styles4[`icon${capitalize_default(size3)}`]
}, {
[`& .${chipClasses_default.icon}`]: styles4[`iconColor${capitalize_default(iconColor)}`]
}, {
[`& .${chipClasses_default.deleteIcon}`]: styles4.deleteIcon
}, {
[`& .${chipClasses_default.deleteIcon}`]: styles4[`deleteIcon${capitalize_default(size3)}`]
}, {
[`& .${chipClasses_default.deleteIcon}`]: styles4[`deleteIconColor${capitalize_default(color)}`]
}, {
[`& .${chipClasses_default.deleteIcon}`]: styles4[`deleteIcon${capitalize_default(variant)}Color${capitalize_default(color)}`]
}, styles4.root, styles4[`size${capitalize_default(size3)}`], styles4[`color${capitalize_default(color)}`], clickable && styles4.clickable, clickable && color !== "default" && styles4[`clickableColor${capitalize_default(color)})`], onDelete && styles4.deletable, onDelete && color !== "default" && styles4[`deletableColor${capitalize_default(color)}`], styles4[variant], styles4[`${variant}${capitalize_default(color)}`]];
}
})(({
theme,
ownerState
}) => {
const textColor = theme.palette.mode === "light" ? theme.palette.grey[700] : theme.palette.grey[300];
return _extends({
maxWidth: "100%",
fontFamily: theme.typography.fontFamily,
fontSize: theme.typography.pxToRem(13),
display: "inline-flex",
alignItems: "center",
justifyContent: "center",
height: 32,
color: (theme.vars || theme).palette.text.primary,
backgroundColor: (theme.vars || theme).palette.action.selected,
borderRadius: 32 / 2,
whiteSpace: "nowrap",
transition: theme.transitions.create(["background-color", "box-shadow"]),
// reset cursor explicitly in case ButtonBase is used
cursor: "unset",
// We disable the focus ring for mouse, touch and keyboard users.
outline: 0,
textDecoration: "none",
border: 0,
// Remove `button` border
padding: 0,
// Remove `button` padding
verticalAlign: "middle",
boxSizing: "border-box",
[`&.${chipClasses_default.disabled}`]: {
opacity: (theme.vars || theme).palette.action.disabledOpacity,
pointerEvents: "none"
},
[`& .${chipClasses_default.avatar}`]: {
marginLeft: 5,
marginRight: -6,
width: 24,
height: 24,
color: theme.vars ? theme.vars.palette.Chip.defaultAvatarColor : textColor,
fontSize: theme.typography.pxToRem(12)
},
[`& .${chipClasses_default.avatarColorPrimary}`]: {
color: (theme.vars || theme).palette.primary.contrastText,
backgroundColor: (theme.vars || theme).palette.primary.dark
},
[`& .${chipClasses_default.avatarColorSecondary}`]: {
color: (theme.vars || theme).palette.secondary.contrastText,
backgroundColor: (theme.vars || theme).palette.secondary.dark
},
[`& .${chipClasses_default.avatarSmall}`]: {
marginLeft: 4,
marginRight: -4,
width: 18,
height: 18,
fontSize: theme.typography.pxToRem(10)
},
[`& .${chipClasses_default.icon}`]: _extends({
marginLeft: 5,
marginRight: -6
}, ownerState.size === "small" && {
fontSize: 18,
marginLeft: 4,
marginRight: -4
}, ownerState.iconColor === ownerState.color && _extends({
color: theme.vars ? theme.vars.palette.Chip.defaultIconColor : textColor
}, ownerState.color !== "default" && {
color: "inherit"
})),
[`& .${chipClasses_default.deleteIcon}`]: _extends({
WebkitTapHighlightColor: "transparent",
color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.26)` : (0, import_colorManipulator.alpha)(theme.palette.text.primary, 0.26),
fontSize: 22,
cursor: "pointer",
margin: "0 5px 0 -6px",
"&:hover": {
color: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / 0.4)` : (0, import_colorManipulator.alpha)(theme.palette.text.primary, 0.4)
}
}, ownerState.size === "small" && {
fontSize: 16,
marginRight: 4,
marginLeft: -4
}, ownerState.color !== "default" && {
color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].contrastTextChannel} / 0.7)` : (0, import_colorManipulator.alpha)(theme.palette[ownerState.color].contrastText, 0.7),
"&:hover, &:active": {
color: (theme.vars || theme).palette[ownerState.color].contrastText
}
})
}, ownerState.size === "small" && {
height: 24
}, ownerState.color !== "default" && {
backgroundColor: (theme.vars || theme).palette[ownerState.color].main,
color: (theme.vars || theme).palette[ownerState.color].contrastText
}, ownerState.onDelete && {
[`&.${chipClasses_default.focusVisible}`]: {
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : (0, import_colorManipulator.alpha)(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)
}
}, ownerState.onDelete && ownerState.color !== "default" && {
[`&.${chipClasses_default.focusVisible}`]: {
backgroundColor: (theme.vars || theme).palette[ownerState.color].dark
}
});
}, ({
theme,
ownerState
}) => _extends({}, ownerState.clickable && {
userSelect: "none",
WebkitTapHighlightColor: "transparent",
cursor: "pointer",
"&:hover": {
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : (0, import_colorManipulator.alpha)(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity)
},
[`&.${chipClasses_default.focusVisible}`]: {
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.selectedChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : (0, import_colorManipulator.alpha)(theme.palette.action.selected, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)
},
"&:active": {
boxShadow: (theme.vars || theme).shadows[1]
}
}, ownerState.clickable && ownerState.color !== "default" && {
[`&:hover, &.${chipClasses_default.focusVisible}`]: {
backgroundColor: (theme.vars || theme).palette[ownerState.color].dark
}
}), ({
theme,
ownerState
}) => _extends({}, ownerState.variant === "outlined" && {
backgroundColor: "transparent",
border: theme.vars ? `1px solid ${theme.vars.palette.Chip.defaultBorder}` : `1px solid ${theme.palette.mode === "light" ? theme.palette.grey[400] : theme.palette.grey[700]}`,
[`&.${chipClasses_default.clickable}:hover`]: {
backgroundColor: (theme.vars || theme).palette.action.hover
},
[`&.${chipClasses_default.focusVisible}`]: {
backgroundColor: (theme.vars || theme).palette.action.focus
},
[`& .${chipClasses_default.avatar}`]: {
marginLeft: 4
},
[`& .${chipClasses_default.avatarSmall}`]: {
marginLeft: 2
},
[`& .${chipClasses_default.icon}`]: {
marginLeft: 4
},
[`& .${chipClasses_default.iconSmall}`]: {
marginLeft: 2
},
[`& .${chipClasses_default.deleteIcon}`]: {
marginRight: 5
},
[`& .${chipClasses_default.deleteIconSmall}`]: {
marginRight: 3
}
}, ownerState.variant === "outlined" && ownerState.color !== "default" && {
color: (theme.vars || theme).palette[ownerState.color].main,
border: `1px solid ${theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : (0, import_colorManipulator.alpha)(theme.palette[ownerState.color].main, 0.7)}`,
[`&.${chipClasses_default.clickable}:hover`]: {
backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0, import_colorManipulator.alpha)(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity)
},
[`&.${chipClasses_default.focusVisible}`]: {
backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.focusOpacity})` : (0, import_colorManipulator.alpha)(theme.palette[ownerState.color].main, theme.palette.action.focusOpacity)
},
[`& .${chipClasses_default.deleteIcon}`]: {
color: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.7)` : (0, import_colorManipulator.alpha)(theme.palette[ownerState.color].main, 0.7),
"&:hover, &:active": {
color: (theme.vars || theme).palette[ownerState.color].main
}
}
}));
var ChipLabel = styled_default("span", {
name: "MuiChip",
slot: "Label",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
const {
size: size3
} = ownerState;
return [styles4.label, styles4[`label${capitalize_default(size3)}`]];
}
})(({
ownerState
}) => _extends({
overflow: "hidden",
textOverflow: "ellipsis",
paddingLeft: 12,
paddingRight: 12,
whiteSpace: "nowrap"
}, ownerState.variant === "outlined" && {
paddingLeft: 11,
paddingRight: 11
}, ownerState.size === "small" && {
paddingLeft: 8,
paddingRight: 8
}, ownerState.size === "small" && ownerState.variant === "outlined" && {
paddingLeft: 7,
paddingRight: 7
}));
function isDeleteKeyboardEvent(keyboardEvent) {
return keyboardEvent.key === "Backspace" || keyboardEvent.key === "Delete";
}
var Chip = React11.forwardRef(function Chip2(inProps, ref) {
const props = useThemeProps({
props: inProps,
name: "MuiChip"
});
const {
avatar: avatarProp,
className,
clickable: clickableProp,
color = "default",
component: ComponentProp,
deleteIcon: deleteIconProp,
disabled = false,
icon: iconProp,
label,
onClick,
onDelete,
onKeyDown,
onKeyUp,
size: size3 = "medium",
variant = "filled",
tabIndex,
skipFocusWhenDisabled = false
// TODO v6: Rename to `focusableWhenDisabled`.
} = props, other = _objectWithoutPropertiesLoose(props, _excluded5);
const chipRef = React11.useRef(null);
const handleRef = useForkRef_default(chipRef, ref);
const handleDeleteIconClick = (event) => {
event.stopPropagation();
if (onDelete) {
onDelete(event);
}
};
const handleKeyDown2 = (event) => {
if (event.currentTarget === event.target && isDeleteKeyboardEvent(event)) {
event.preventDefault();
}
if (onKeyDown) {
onKeyDown(event);
}
};
const handleKeyUp = (event) => {
if (event.currentTarget === event.target) {
if (onDelete && isDeleteKeyboardEvent(event)) {
onDelete(event);
} else if (event.key === "Escape" && chipRef.current) {
chipRef.current.blur();
}
}
if (onKeyUp) {
onKeyUp(event);
}
};
const clickable = clickableProp !== false && onClick ? true : clickableProp;
const component = clickable || onDelete ? ButtonBase_default : ComponentProp || "div";
const ownerState = _extends({}, props, {
component,
disabled,
size: size3,
color,
iconColor: React11.isValidElement(iconProp) ? iconProp.props.color || color : color,
onDelete: !!onDelete,
clickable,
variant
});
const classes = useUtilityClasses3(ownerState);
const moreProps = component === ButtonBase_default ? _extends({
component: ComponentProp || "div",
focusVisibleClassName: classes.focusVisible
}, onDelete && {
disableRipple: true
}) : {};
let deleteIcon = null;
if (onDelete) {
deleteIcon = deleteIconProp && React11.isValidElement(deleteIconProp) ? React11.cloneElement(deleteIconProp, {
className: clsx_default(deleteIconProp.props.className, classes.deleteIcon),
onClick: handleDeleteIconClick
}) : (0, import_jsx_runtime12.jsx)(Cancel_default, {
className: clsx_default(classes.deleteIcon),
onClick: handleDeleteIconClick
});
}
let avatar = null;
if (avatarProp && React11.isValidElement(avatarProp)) {
avatar = React11.cloneElement(avatarProp, {
className: clsx_default(classes.avatar, avatarProp.props.className)
});
}
let icon = null;
if (iconProp && React11.isValidElement(iconProp)) {
icon = React11.cloneElement(iconProp, {
className: clsx_default(classes.icon, iconProp.props.className)
});
}
if (true) {
if (avatar && icon) {
console.error("MUI: The Chip component can not handle the avatar and the icon prop at the same time. Pick one.");
}
}
return (0, import_jsx_runtime13.jsxs)(ChipRoot, _extends({
as: component,
className: clsx_default(classes.root, className),
disabled: clickable && disabled ? true : void 0,
onClick,
onKeyDown: handleKeyDown2,
onKeyUp: handleKeyUp,
ref: handleRef,
tabIndex: skipFocusWhenDisabled && disabled ? -1 : tabIndex,
ownerState
}, moreProps, other, {
children: [avatar || icon, (0, import_jsx_runtime12.jsx)(ChipLabel, {
className: clsx_default(classes.label),
ownerState,
children: label
}), deleteIcon]
}));
});
true ? Chip.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The Avatar element to display.
*/
avatar: import_prop_types9.default.element,
/**
* This prop isn't supported.
* Use the `component` prop if you need to change the children structure.
*/
children: unsupportedProp_default,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types9.default.object,
/**
* @ignore
*/
className: import_prop_types9.default.string,
/**
* If `true`, the chip will appear clickable, and will raise when pressed,
* even if the onClick prop is not defined.
* If `false`, the chip will not appear clickable, even if onClick prop is defined.
* This can be used, for example,
* along with the component prop to indicate an anchor Chip is clickable.
* Note: this controls the UI and does not affect the onClick event.
*/
clickable: import_prop_types9.default.bool,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
* @default 'default'
*/
color: import_prop_types9.default.oneOfType([import_prop_types9.default.oneOf(["default", "primary", "secondary", "error", "info", "success", "warning"]), import_prop_types9.default.string]),
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types9.default.elementType,
/**
* Override the default delete icon element. Shown only if `onDelete` is set.
*/
deleteIcon: import_prop_types9.default.element,
/**
* If `true`, the component is disabled.
* @default false
*/
disabled: import_prop_types9.default.bool,
/**
* Icon element.
*/
icon: import_prop_types9.default.element,
/**
* The content of the component.
*/
label: import_prop_types9.default.node,
/**
* @ignore
*/
onClick: import_prop_types9.default.func,
/**
* Callback fired when the delete icon is clicked.
* If set, the delete icon will be shown.
*/
onDelete: import_prop_types9.default.func,
/**
* @ignore
*/
onKeyDown: import_prop_types9.default.func,
/**
* @ignore
*/
onKeyUp: import_prop_types9.default.func,
/**
* The size of the component.
* @default 'medium'
*/
size: import_prop_types9.default.oneOfType([import_prop_types9.default.oneOf(["medium", "small"]), import_prop_types9.default.string]),
/**
* If `true`, allows the disabled chip to escape focus.
* If `false`, allows the disabled chip to receive focus.
* @default false
*/
skipFocusWhenDisabled: import_prop_types9.default.bool,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types9.default.oneOfType([import_prop_types9.default.arrayOf(import_prop_types9.default.oneOfType([import_prop_types9.default.func, import_prop_types9.default.object, import_prop_types9.default.bool])), import_prop_types9.default.func, import_prop_types9.default.object]),
/**
* @ignore
*/
tabIndex: import_prop_types9.default.number,
/**
* The variant to use.
* @default 'filled'
*/
variant: import_prop_types9.default.oneOfType([import_prop_types9.default.oneOf(["filled", "outlined"]), import_prop_types9.default.string])
} : void 0;
var Chip_default = Chip;
// node_modules/@mui/material/FormControl/useFormControl.js
var React13 = __toESM(require_react());
// node_modules/@mui/material/FormControl/FormControlContext.js
var React12 = __toESM(require_react());
var FormControlContext = React12.createContext(void 0);
if (true) {
FormControlContext.displayName = "FormControlContext";
}
var FormControlContext_default = FormControlContext;
// node_modules/@mui/material/FormControl/useFormControl.js
function useFormControl() {
return React13.useContext(FormControlContext_default);
}
// node_modules/@mui/material/InputBase/inputBaseClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getInputBaseUtilityClass(slot) {
return generateUtilityClass("MuiInputBase", slot);
}
var inputBaseClasses = generateUtilityClasses("MuiInputBase", ["root", "formControl", "focused", "disabled", "adornedStart", "adornedEnd", "error", "sizeSmall", "multiline", "colorSecondary", "fullWidth", "hiddenLabel", "readOnly", "input", "inputSizeSmall", "inputMultiline", "inputTypeSearch", "inputAdornedStart", "inputAdornedEnd", "inputHiddenLabel"]);
var inputBaseClasses_default = inputBaseClasses;
// node_modules/@mui/material/InputBase/InputBase.js
init_objectWithoutPropertiesLoose();
init_extends();
init_formatMuiErrorMessage();
var React78 = __toESM(require_react());
var import_prop_types34 = __toESM(require_prop_types());
init_clsx();
init_elementTypeAcceptingRef();
init_refType();
// node_modules/@mui/base/Badge/Badge.js
init_extends();
init_objectWithoutPropertiesLoose();
var React14 = __toESM(require_react());
var import_prop_types10 = __toESM(require_prop_types());
// node_modules/@mui/base/useBadge/useBadge.js
init_utils();
function useBadge(parameters) {
const {
badgeContent: badgeContentProp,
invisible: invisibleProp = false,
max: maxProp = 99,
showZero = false
} = parameters;
const prevProps = usePreviousProps_default({
badgeContent: badgeContentProp,
max: maxProp
});
let invisible = invisibleProp;
if (invisibleProp === false && badgeContentProp === 0 && !showZero) {
invisible = true;
}
const {
badgeContent,
max: max3 = maxProp
} = invisible ? prevProps : parameters;
const displayValue = badgeContent && Number(badgeContent) > max3 ? `${max3}+` : badgeContent;
return {
badgeContent,
invisible,
max: max3,
displayValue
};
}
// node_modules/@mui/base/Badge/badgeClasses.js
var COMPONENT_NAME2 = "Badge";
function getBadgeUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME2, slot);
}
var badgeClasses = generateUtilityClasses2(COMPONENT_NAME2, ["root", "badge", "invisible"]);
// node_modules/@mui/base/Badge/Badge.js
var import_jsx_runtime14 = __toESM(require_jsx_runtime());
var import_jsx_runtime15 = __toESM(require_jsx_runtime());
var _excluded6 = ["badgeContent", "children", "invisible", "max", "slotProps", "slots", "showZero"];
var useUtilityClasses4 = (ownerState) => {
const {
invisible
} = ownerState;
const slots = {
root: ["root"],
badge: ["badge", invisible && "invisible"]
};
return composeClasses(slots, useClassNamesOverride(getBadgeUtilityClass));
};
var Badge = React14.forwardRef(function Badge2(props, forwardedRef) {
var _slots$root, _slots$badge;
const {
children,
max: maxProp = 99,
slotProps = {},
slots = {},
showZero = false
} = props, other = _objectWithoutPropertiesLoose(props, _excluded6);
const {
badgeContent,
max: max3,
displayValue,
invisible
} = useBadge(_extends({}, props, {
max: maxProp
}));
const ownerState = _extends({}, props, {
badgeContent,
invisible,
max: max3,
showZero
});
const classes = useUtilityClasses4(ownerState);
const Root = (_slots$root = slots.root) != null ? _slots$root : "span";
const rootProps = useSlotProps({
elementType: Root,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
additionalProps: {
ref: forwardedRef
},
ownerState,
className: classes.root
});
const BadgeComponent = (_slots$badge = slots.badge) != null ? _slots$badge : "span";
const badgeProps = useSlotProps({
elementType: BadgeComponent,
externalSlotProps: slotProps.badge,
ownerState,
className: classes.badge
});
return (0, import_jsx_runtime15.jsxs)(Root, _extends({}, rootProps, {
children: [children, (0, import_jsx_runtime14.jsx)(BadgeComponent, _extends({}, badgeProps, {
children: displayValue
}))]
}));
});
true ? Badge.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content rendered within the badge.
*/
badgeContent: import_prop_types10.default.node,
/**
* The badge will be added relative to this node.
*/
children: import_prop_types10.default.node,
/**
* If `true`, the badge is invisible.
* @default false
*/
invisible: import_prop_types10.default.bool,
/**
* Max count to show.
* @default 99
*/
max: import_prop_types10.default.number,
/**
* Controls whether the badge is hidden when `badgeContent` is zero.
* @default false
*/
showZero: import_prop_types10.default.bool,
/**
* The props used for each slot inside the Badge.
* @default {}
*/
slotProps: import_prop_types10.default.shape({
badge: import_prop_types10.default.oneOfType([import_prop_types10.default.func, import_prop_types10.default.object]),
root: import_prop_types10.default.oneOfType([import_prop_types10.default.func, import_prop_types10.default.object])
}),
/**
* The components used for each slot inside the Badge.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types10.default.shape({
badge: import_prop_types10.default.elementType,
root: import_prop_types10.default.elementType
})
} : void 0;
// node_modules/@mui/base/Button/Button.js
init_extends();
init_objectWithoutPropertiesLoose();
var React16 = __toESM(require_react());
var import_prop_types11 = __toESM(require_prop_types());
// node_modules/@mui/base/Button/buttonClasses.js
var COMPONENT_NAME3 = "Button";
function getButtonUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME3, slot);
}
var buttonClasses = generateUtilityClasses2(COMPONENT_NAME3, ["root", "active", "disabled", "focusVisible"]);
// node_modules/@mui/base/useButton/useButton.js
init_extends();
var React15 = __toESM(require_react());
init_utils();
function useButton(parameters = {}) {
const {
disabled = false,
focusableWhenDisabled,
href,
rootRef: externalRef,
tabIndex,
to,
type,
rootElementName: rootElementNameProp
} = parameters;
const buttonRef = React15.useRef();
const [active, setActive] = React15.useState(false);
const {
isFocusVisibleRef,
onFocus: handleFocusVisible,
onBlur: handleBlurVisible,
ref: focusVisibleRef
} = useIsFocusVisible();
const [focusVisible, setFocusVisible] = React15.useState(false);
if (disabled && !focusableWhenDisabled && focusVisible) {
setFocusVisible(false);
}
React15.useEffect(() => {
isFocusVisibleRef.current = focusVisible;
}, [focusVisible, isFocusVisibleRef]);
const [rootElementName, updateRootElementName] = useRootElementName({
rootElementName: rootElementNameProp != null ? rootElementNameProp : href || to ? "a" : void 0,
componentName: "Button"
});
const createHandleMouseLeave = (otherHandlers) => (event) => {
var _otherHandlers$onMous;
if (focusVisible) {
event.preventDefault();
}
(_otherHandlers$onMous = otherHandlers.onMouseLeave) == null || _otherHandlers$onMous.call(otherHandlers, event);
};
const createHandleBlur = (otherHandlers) => (event) => {
var _otherHandlers$onBlur;
handleBlurVisible(event);
if (isFocusVisibleRef.current === false) {
setFocusVisible(false);
}
(_otherHandlers$onBlur = otherHandlers.onBlur) == null || _otherHandlers$onBlur.call(otherHandlers, event);
};
const createHandleFocus = (otherHandlers) => (event) => {
var _otherHandlers$onFocu2;
if (!buttonRef.current) {
buttonRef.current = event.currentTarget;
}
handleFocusVisible(event);
if (isFocusVisibleRef.current === true) {
var _otherHandlers$onFocu;
setFocusVisible(true);
(_otherHandlers$onFocu = otherHandlers.onFocusVisible) == null || _otherHandlers$onFocu.call(otherHandlers, event);
}
(_otherHandlers$onFocu2 = otherHandlers.onFocus) == null || _otherHandlers$onFocu2.call(otherHandlers, event);
};
const isNativeButton = () => {
const button = buttonRef.current;
return rootElementName === "BUTTON" || rootElementName === "INPUT" && ["button", "submit", "reset"].includes(button == null ? void 0 : button.type) || rootElementName === "A" && (button == null ? void 0 : button.href);
};
const createHandleClick = (otherHandlers) => (event) => {
if (!disabled) {
var _otherHandlers$onClic;
(_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);
}
};
const createHandleMouseDown = (otherHandlers) => (event) => {
var _otherHandlers$onMous2;
if (!disabled) {
setActive(true);
document.addEventListener("mouseup", () => {
setActive(false);
}, {
once: true
});
}
(_otherHandlers$onMous2 = otherHandlers.onMouseDown) == null || _otherHandlers$onMous2.call(otherHandlers, event);
};
const createHandleKeyDown = (otherHandlers) => (event) => {
var _otherHandlers$onKeyD;
(_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);
if (event.defaultMuiPrevented) {
return;
}
if (event.target === event.currentTarget && !isNativeButton() && event.key === " ") {
event.preventDefault();
}
if (event.target === event.currentTarget && event.key === " " && !disabled) {
setActive(true);
}
if (event.target === event.currentTarget && !isNativeButton() && event.key === "Enter" && !disabled) {
var _otherHandlers$onClic2;
(_otherHandlers$onClic2 = otherHandlers.onClick) == null || _otherHandlers$onClic2.call(otherHandlers, event);
event.preventDefault();
}
};
const createHandleKeyUp = (otherHandlers) => (event) => {
var _otherHandlers$onKeyU;
if (event.target === event.currentTarget) {
setActive(false);
}
(_otherHandlers$onKeyU = otherHandlers.onKeyUp) == null || _otherHandlers$onKeyU.call(otherHandlers, event);
if (event.target === event.currentTarget && !isNativeButton() && !disabled && event.key === " " && !event.defaultMuiPrevented) {
var _otherHandlers$onClic3;
(_otherHandlers$onClic3 = otherHandlers.onClick) == null || _otherHandlers$onClic3.call(otherHandlers, event);
}
};
const handleRef = useForkRef(updateRootElementName, externalRef, focusVisibleRef, buttonRef);
const buttonProps = {};
if (tabIndex !== void 0) {
buttonProps.tabIndex = tabIndex;
}
if (rootElementName === "BUTTON") {
buttonProps.type = type != null ? type : "button";
if (focusableWhenDisabled) {
buttonProps["aria-disabled"] = disabled;
} else {
buttonProps.disabled = disabled;
}
} else if (rootElementName === "INPUT") {
if (type && ["button", "submit", "reset"].includes(type)) {
if (focusableWhenDisabled) {
buttonProps["aria-disabled"] = disabled;
} else {
buttonProps.disabled = disabled;
}
}
} else if (rootElementName !== "") {
if (!href && !to) {
buttonProps.role = "button";
buttonProps.tabIndex = tabIndex != null ? tabIndex : 0;
}
if (disabled) {
buttonProps["aria-disabled"] = disabled;
buttonProps.tabIndex = focusableWhenDisabled ? tabIndex != null ? tabIndex : 0 : -1;
}
}
const getRootProps = (externalProps = {}) => {
const externalEventHandlers = _extends({}, extractEventHandlers(parameters), extractEventHandlers(externalProps));
const props = _extends({
type
}, externalEventHandlers, buttonProps, externalProps, {
onBlur: createHandleBlur(externalEventHandlers),
onClick: createHandleClick(externalEventHandlers),
onFocus: createHandleFocus(externalEventHandlers),
onKeyDown: createHandleKeyDown(externalEventHandlers),
onKeyUp: createHandleKeyUp(externalEventHandlers),
onMouseDown: createHandleMouseDown(externalEventHandlers),
onMouseLeave: createHandleMouseLeave(externalEventHandlers),
ref: handleRef
});
delete props.onFocusVisible;
return props;
};
return {
getRootProps,
focusVisible,
setFocusVisible,
active,
rootRef: handleRef
};
}
// node_modules/@mui/base/Button/Button.js
var import_jsx_runtime16 = __toESM(require_jsx_runtime());
var _excluded7 = ["action", "children", "disabled", "focusableWhenDisabled", "onFocusVisible", "slotProps", "slots", "rootElementName"];
var useUtilityClasses5 = (ownerState) => {
const {
active,
disabled,
focusVisible
} = ownerState;
const slots = {
root: ["root", disabled && "disabled", focusVisible && "focusVisible", active && "active"]
};
return composeClasses(slots, useClassNamesOverride(getButtonUtilityClass));
};
var Button = React16.forwardRef(function Button2(props, forwardedRef) {
var _slots$root;
const {
action,
children,
focusableWhenDisabled = false,
slotProps = {},
slots = {},
rootElementName: rootElementNameProp = "button"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded7);
const buttonRef = React16.useRef();
let rootElementName = rootElementNameProp;
if (typeof slots.root === "string") {
rootElementName = slots.root;
} else if (other.href || other.to) {
rootElementName = "a";
}
const {
active,
focusVisible,
setFocusVisible,
getRootProps
} = useButton(_extends({}, props, {
focusableWhenDisabled,
rootElementName
}));
React16.useImperativeHandle(action, () => ({
focusVisible: () => {
setFocusVisible(true);
buttonRef.current.focus();
}
}), [setFocusVisible]);
const ownerState = _extends({}, props, {
active,
focusableWhenDisabled,
focusVisible
});
const classes = useUtilityClasses5(ownerState);
const defaultElement = other.href || other.to ? "a" : "button";
const Root = (_slots$root = slots.root) != null ? _slots$root : defaultElement;
const rootProps = useSlotProps({
elementType: Root,
getSlotProps: getRootProps,
externalForwardedProps: other,
externalSlotProps: slotProps.root,
additionalProps: {
ref: forwardedRef
},
ownerState,
className: classes.root
});
return (0, import_jsx_runtime16.jsx)(Root, _extends({}, rootProps, {
children
}));
});
true ? Button.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* A ref for imperative actions. It currently only supports `focusVisible()` action.
*/
action: import_prop_types11.default.oneOfType([import_prop_types11.default.func, import_prop_types11.default.shape({
current: import_prop_types11.default.shape({
focusVisible: import_prop_types11.default.func.isRequired
})
})]),
/**
* @ignore
*/
children: import_prop_types11.default.node,
/**
* @ignore
*/
className: import_prop_types11.default.string,
/**
* If `true`, the component is disabled.
* @default false
*/
disabled: import_prop_types11.default.bool,
/**
* If `true`, allows a disabled button to receive focus.
* @default false
*/
focusableWhenDisabled: import_prop_types11.default.bool,
/**
* @ignore
*/
href: import_prop_types11.default.string,
/**
* @ignore
*/
onFocusVisible: import_prop_types11.default.func,
/**
* The HTML element that is ultimately rendered, for example 'button' or 'a'
* @default 'button'
*/
rootElementName: import_prop_types11.default.string,
/**
* The props used for each slot inside the Button.
* @default {}
*/
slotProps: import_prop_types11.default.shape({
root: import_prop_types11.default.oneOfType([import_prop_types11.default.func, import_prop_types11.default.object])
}),
/**
* The components used for each slot inside the Button.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types11.default.shape({
root: import_prop_types11.default.elementType
}),
/**
* @ignore
*/
to: import_prop_types11.default.string
} : void 0;
// node_modules/@mui/base/Dropdown/Dropdown.js
var React20 = __toESM(require_react());
var import_prop_types12 = __toESM(require_prop_types());
init_utils();
// node_modules/@mui/base/useDropdown/DropdownContext.js
var React17 = __toESM(require_react());
var DropdownContext = React17.createContext(null);
if (true) {
DropdownContext.displayName = "DropdownContext";
}
// node_modules/@mui/base/useDropdown/useDropdown.js
var React19 = __toESM(require_react());
// node_modules/@mui/base/utils/useControllableReducer.js
init_extends();
var React18 = __toESM(require_react());
function areEqual(a, b) {
return a === b;
}
var EMPTY_OBJECT = {};
var NOOP = () => {
};
function getControlledState(internalState, controlledProps) {
const augmentedState = _extends({}, internalState);
Object.keys(controlledProps).forEach((key) => {
if (controlledProps[key] !== void 0) {
augmentedState[key] = controlledProps[key];
}
});
return augmentedState;
}
function useStateChangeDetection(parameters) {
const {
nextState,
initialState,
stateComparers,
onStateChange,
controlledProps,
lastActionRef
} = parameters;
const internalPreviousStateRef = React18.useRef(initialState);
React18.useEffect(() => {
if (lastActionRef.current === null) {
return;
}
const previousState = getControlledState(internalPreviousStateRef.current, controlledProps);
Object.keys(nextState).forEach((key) => {
var _stateComparers$key;
const stateComparer = (_stateComparers$key = stateComparers[key]) != null ? _stateComparers$key : areEqual;
const nextStateItem = nextState[key];
const previousStateItem = previousState[key];
if (previousStateItem == null && nextStateItem != null || previousStateItem != null && nextStateItem == null || previousStateItem != null && nextStateItem != null && !stateComparer(nextStateItem, previousStateItem)) {
var _event, _type;
onStateChange == null || onStateChange((_event = lastActionRef.current.event) != null ? _event : null, key, nextStateItem, (_type = lastActionRef.current.type) != null ? _type : "", nextState);
}
});
internalPreviousStateRef.current = nextState;
lastActionRef.current = null;
}, [internalPreviousStateRef, nextState, lastActionRef, onStateChange, stateComparers, controlledProps]);
}
function useControllableReducer(parameters) {
const lastActionRef = React18.useRef(null);
const {
reducer,
initialState,
controlledProps = EMPTY_OBJECT,
stateComparers = EMPTY_OBJECT,
onStateChange = NOOP,
actionContext,
componentName = ""
} = parameters;
const controlledPropsRef = React18.useRef(controlledProps);
if (true) {
React18.useEffect(() => {
Object.keys(controlledProps).forEach((key) => {
if (controlledPropsRef.current[key] !== void 0 && controlledProps[key] === void 0) {
console.error(`useControllableReducer: ${componentName ? `The ${componentName} component` : "A component"} is changing a controlled prop to be uncontrolled: ${key}`);
}
if (controlledPropsRef.current[key] === void 0 && controlledProps[key] !== void 0) {
console.error(`useControllableReducer: ${componentName ? `The ${componentName} component` : "A component"} is changing an uncontrolled prop to be controlled: ${key}`);
}
});
}, [controlledProps, componentName]);
}
const reducerWithControlledState = React18.useCallback((state, action) => {
lastActionRef.current = action;
const controlledState = getControlledState(state, controlledProps);
const newState = reducer(controlledState, action);
return newState;
}, [controlledProps, reducer]);
const [nextState, dispatch] = React18.useReducer(reducerWithControlledState, initialState);
const dispatchWithContext = React18.useCallback((action) => {
dispatch(_extends({}, action, {
context: actionContext
}));
}, [actionContext]);
useStateChangeDetection({
nextState,
initialState,
stateComparers: stateComparers != null ? stateComparers : EMPTY_OBJECT,
onStateChange: onStateChange != null ? onStateChange : NOOP,
controlledProps,
lastActionRef
});
return [getControlledState(nextState, controlledProps), dispatchWithContext];
}
// node_modules/@mui/base/useDropdown/useDropdown.types.js
var DropdownActionTypes = {
blur: "dropdown:blur",
escapeKeyDown: "dropdown:escapeKeyDown",
toggle: "dropdown:toggle",
open: "dropdown:open",
close: "dropdown:close"
};
// node_modules/@mui/base/useDropdown/dropdownReducer.js
function dropdownReducer(state, action) {
switch (action.type) {
case DropdownActionTypes.blur:
return {
open: false,
changeReason: action.event
};
case DropdownActionTypes.escapeKeyDown:
return {
open: false,
changeReason: action.event
};
case DropdownActionTypes.toggle:
return {
open: !state.open,
changeReason: action.event
};
case DropdownActionTypes.open:
return {
open: true,
changeReason: action.event
};
case DropdownActionTypes.close:
return {
open: false,
changeReason: action.event
};
default:
throw new Error(`Unhandled action`);
}
}
// node_modules/@mui/base/useDropdown/useDropdown.js
function useDropdown(parameters = {}) {
const {
defaultOpen,
onOpenChange,
open: openProp,
componentName = "useDropdown"
} = parameters;
const [popupId, setPopupId] = React19.useState("");
const [triggerElement, setTriggerElement] = React19.useState(null);
const lastActionType = React19.useRef(null);
const handleStateChange = React19.useCallback((event, field, value, reason) => {
if (field === "open") {
onOpenChange == null || onOpenChange(event, value);
}
lastActionType.current = reason;
}, [onOpenChange]);
const controlledProps = React19.useMemo(() => openProp !== void 0 ? {
open: openProp
} : {}, [openProp]);
const [state, dispatch] = useControllableReducer({
controlledProps,
initialState: defaultOpen ? {
open: true,
changeReason: null
} : {
open: false,
changeReason: null
},
onStateChange: handleStateChange,
reducer: dropdownReducer,
componentName
});
React19.useEffect(() => {
if (!state.open && lastActionType.current !== null && lastActionType.current !== DropdownActionTypes.blur) {
triggerElement == null || triggerElement.focus();
}
}, [state.open, triggerElement]);
const contextValue = {
state,
dispatch,
popupId,
registerPopup: setPopupId,
registerTrigger: setTriggerElement,
triggerElement
};
return {
contextValue,
open: state.open
};
}
// node_modules/@mui/base/Dropdown/Dropdown.js
var import_jsx_runtime17 = __toESM(require_jsx_runtime());
function Dropdown(props) {
const {
children,
open,
defaultOpen,
onOpenChange
} = props;
const {
contextValue
} = useDropdown({
defaultOpen,
onOpenChange,
open
});
return (0, import_jsx_runtime17.jsx)(DropdownContext.Provider, {
value: contextValue,
children
});
}
true ? Dropdown.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* @ignore
*/
children: import_prop_types12.default.node,
/**
* If `true`, the dropdown is initially open.
*/
defaultOpen: import_prop_types12.default.bool,
/**
* Callback fired when the component requests to be opened or closed.
*/
onOpenChange: import_prop_types12.default.func,
/**
* Allows to control whether the dropdown is open.
* This is a controlled counterpart of `defaultOpen`.
*/
open: import_prop_types12.default.bool
} : void 0;
if (true) {
Dropdown["propTypes"] = exactProp(Dropdown.propTypes);
}
// node_modules/@mui/base/FormControl/FormControl.js
init_extends();
init_objectWithoutPropertiesLoose();
var React22 = __toESM(require_react());
var import_prop_types13 = __toESM(require_prop_types());
init_useControlled();
// node_modules/@mui/base/FormControl/FormControlContext.js
var React21 = __toESM(require_react());
var FormControlContext2 = React21.createContext(void 0);
if (true) {
FormControlContext2.displayName = "FormControlContext";
}
// node_modules/@mui/base/FormControl/formControlClasses.js
var COMPONENT_NAME4 = "FormControl";
function getFormControlUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME4, slot);
}
var formControlClasses = generateUtilityClasses2(COMPONENT_NAME4, ["root", "disabled", "error", "filled", "focused", "required"]);
// node_modules/@mui/base/FormControl/FormControl.js
var import_jsx_runtime18 = __toESM(require_jsx_runtime());
var _excluded8 = ["defaultValue", "children", "disabled", "error", "onChange", "required", "slotProps", "slots", "value"];
function hasValue(value) {
return value != null && !(Array.isArray(value) && value.length === 0) && value !== "";
}
function useUtilityClasses6(ownerState) {
const {
disabled,
error,
filled,
focused,
required
} = ownerState;
const slots = {
root: ["root", disabled && "disabled", focused && "focused", error && "error", filled && "filled", required && "required"]
};
return composeClasses(slots, useClassNamesOverride(getFormControlUtilityClass));
}
var FormControl = React22.forwardRef(function FormControl2(props, forwardedRef) {
var _slots$root;
const {
defaultValue,
children,
disabled = false,
error = false,
onChange,
required = false,
slotProps = {},
slots = {},
value: incomingValue
} = props, other = _objectWithoutPropertiesLoose(props, _excluded8);
const [value, setValue] = useControlled({
controlled: incomingValue,
default: defaultValue,
name: "FormControl",
state: "value"
});
const filled = hasValue(value);
const [focusedState, setFocused] = React22.useState(false);
const focused = focusedState && !disabled;
React22.useEffect(() => setFocused((isFocused) => disabled ? false : isFocused), [disabled]);
const ownerState = _extends({}, props, {
disabled,
error,
filled,
focused,
required
});
const childContext = React22.useMemo(() => {
return {
disabled,
error,
filled,
focused,
onBlur: () => {
setFocused(false);
},
onChange: (event) => {
setValue(event.target.value);
onChange == null || onChange(event);
},
onFocus: () => {
setFocused(true);
},
required,
value: value != null ? value : ""
};
}, [disabled, error, filled, focused, onChange, required, setValue, value]);
const classes = useUtilityClasses6(ownerState);
const renderChildren = () => {
if (typeof children === "function") {
return children(childContext);
}
return children;
};
const Root = (_slots$root = slots.root) != null ? _slots$root : "div";
const rootProps = useSlotProps({
elementType: Root,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
additionalProps: {
ref: forwardedRef,
children: renderChildren()
},
ownerState,
className: classes.root
});
return (0, import_jsx_runtime18.jsx)(FormControlContext2.Provider, {
value: childContext,
children: (0, import_jsx_runtime18.jsx)(Root, _extends({}, rootProps))
});
});
true ? FormControl.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component.
*/
children: import_prop_types13.default.oneOfType([import_prop_types13.default.node, import_prop_types13.default.func]),
/**
* Class name applied to the root element.
*/
className: import_prop_types13.default.string,
/**
* @ignore
*/
defaultValue: import_prop_types13.default.any,
/**
* If `true`, the label, input and helper text should be displayed in a disabled state.
* @default false
*/
disabled: import_prop_types13.default.bool,
/**
* If `true`, the label is displayed in an error state.
* @default false
*/
error: import_prop_types13.default.bool,
/**
* Callback fired when the form element's value is modified.
*/
onChange: import_prop_types13.default.func,
/**
* If `true`, the label will indicate that the `input` is required.
* @default false
*/
required: import_prop_types13.default.bool,
/**
* The props used for each slot inside the FormControl.
* @default {}
*/
slotProps: import_prop_types13.default.shape({
root: import_prop_types13.default.oneOfType([import_prop_types13.default.func, import_prop_types13.default.object])
}),
/**
* The components used for each slot inside the FormControl.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types13.default.shape({
root: import_prop_types13.default.elementType
}),
/**
* The value of the form element.
*/
value: import_prop_types13.default.any
} : void 0;
// node_modules/@mui/base/FormControl/useFormControlContext.js
var React23 = __toESM(require_react());
function useFormControlContext() {
return React23.useContext(FormControlContext2);
}
// node_modules/@mui/base/Input/Input.js
init_extends();
init_objectWithoutPropertiesLoose();
var React25 = __toESM(require_react());
var import_prop_types14 = __toESM(require_prop_types());
// node_modules/@mui/base/Input/inputClasses.js
var COMPONENT_NAME5 = "Input";
function getInputUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME5, slot);
}
var inputClasses = generateUtilityClasses2(COMPONENT_NAME5, ["root", "formControl", "focused", "disabled", "error", "multiline", "input", "inputMultiline", "inputTypeSearch", "adornedStart", "adornedEnd"]);
// node_modules/@mui/base/useInput/useInput.js
init_extends();
init_formatMuiErrorMessage();
var React24 = __toESM(require_react());
init_utils();
function useInput(parameters = {}) {
const {
defaultValue: defaultValueProp,
disabled: disabledProp = false,
error: errorProp = false,
onBlur,
onChange,
onFocus,
required: requiredProp = false,
value: valueProp,
inputRef: inputRefProp
} = parameters;
const formControlContext = useFormControlContext();
let defaultValue;
let disabled;
let error;
let required;
let value;
if (formControlContext) {
var _formControlContext$d, _formControlContext$e, _formControlContext$r;
defaultValue = void 0;
disabled = (_formControlContext$d = formControlContext.disabled) != null ? _formControlContext$d : false;
error = (_formControlContext$e = formControlContext.error) != null ? _formControlContext$e : false;
required = (_formControlContext$r = formControlContext.required) != null ? _formControlContext$r : false;
value = formControlContext.value;
if (true) {
const definedLocalProps = ["defaultValue", "disabled", "error", "required", "value"].filter((prop) => parameters[prop] !== void 0);
if (definedLocalProps.length > 0) {
console.warn(["MUI: You have set props on an input that is inside a FormControl.", "Set these props on a FormControl instead. Otherwise they will be ignored.", `Ignored props: ${definedLocalProps.join(", ")}`].join("\n"));
}
}
} else {
defaultValue = defaultValueProp;
disabled = disabledProp;
error = errorProp;
required = requiredProp;
value = valueProp;
}
const {
current: isControlled
} = React24.useRef(value != null);
const handleInputRefWarning = React24.useCallback((instance) => {
if (true) {
if (instance && instance.nodeName !== "INPUT" && !instance.focus) {
console.error(["MUI: You have provided a `slots.input` to the input component", "that does not correctly handle the `ref` prop.", "Make sure the `ref` prop is called with a HTMLInputElement."].join("\n"));
}
}
}, []);
const inputRef = React24.useRef(null);
const handleInputRef = useForkRef(inputRef, inputRefProp, handleInputRefWarning);
const [focused, setFocused] = React24.useState(false);
React24.useEffect(() => {
if (!formControlContext && disabled && focused) {
setFocused(false);
onBlur == null || onBlur();
}
}, [formControlContext, disabled, focused, onBlur]);
const handleFocus = (otherHandlers) => (event) => {
var _otherHandlers$onFocu;
if (formControlContext != null && formControlContext.disabled) {
event.stopPropagation();
return;
}
(_otherHandlers$onFocu = otherHandlers.onFocus) == null || _otherHandlers$onFocu.call(otherHandlers, event);
if (formControlContext && formControlContext.onFocus) {
var _formControlContext$o;
formControlContext == null || (_formControlContext$o = formControlContext.onFocus) == null || _formControlContext$o.call(formControlContext);
} else {
setFocused(true);
}
};
const handleBlur2 = (otherHandlers) => (event) => {
var _otherHandlers$onBlur;
(_otherHandlers$onBlur = otherHandlers.onBlur) == null || _otherHandlers$onBlur.call(otherHandlers, event);
if (formControlContext && formControlContext.onBlur) {
formControlContext.onBlur();
} else {
setFocused(false);
}
};
const handleChange = (otherHandlers) => (event, ...args) => {
var _formControlContext$o2, _otherHandlers$onChan;
if (!isControlled) {
const element = event.target || inputRef.current;
if (element == null) {
throw new Error(true ? `MUI: Expected valid input target. Did you use a custom \`slots.input\` and forget to forward refs? See https://mui.com/r/input-component-ref-interface for more info.` : formatMuiErrorMessage(17));
}
}
formControlContext == null || (_formControlContext$o2 = formControlContext.onChange) == null || _formControlContext$o2.call(formControlContext, event);
(_otherHandlers$onChan = otherHandlers.onChange) == null || _otherHandlers$onChan.call(otherHandlers, event, ...args);
};
const handleClick = (otherHandlers) => (event) => {
var _otherHandlers$onClic;
if (inputRef.current && event.currentTarget === event.target) {
inputRef.current.focus();
}
(_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);
};
const getRootProps = (externalProps = {}) => {
const propsEventHandlers = extractEventHandlers(parameters, ["onBlur", "onChange", "onFocus"]);
const externalEventHandlers = _extends({}, propsEventHandlers, extractEventHandlers(externalProps));
return _extends({}, externalProps, externalEventHandlers, {
onClick: handleClick(externalEventHandlers)
});
};
const getInputProps = (externalProps = {}) => {
const propsEventHandlers = {
onBlur,
onChange,
onFocus
};
const externalEventHandlers = _extends({}, propsEventHandlers, extractEventHandlers(externalProps));
const mergedEventHandlers = _extends({}, externalEventHandlers, {
onBlur: handleBlur2(externalEventHandlers),
onChange: handleChange(externalEventHandlers),
onFocus: handleFocus(externalEventHandlers)
});
return _extends({}, mergedEventHandlers, {
"aria-invalid": error || void 0,
defaultValue,
value,
required,
disabled
}, externalProps, {
ref: handleInputRef
}, mergedEventHandlers);
};
return {
disabled,
error,
focused,
formControlContext,
getInputProps,
getRootProps,
inputRef: handleInputRef,
required,
value
};
}
// node_modules/@mui/base/Input/Input.js
var import_jsx_runtime19 = __toESM(require_jsx_runtime());
var import_jsx_runtime20 = __toESM(require_jsx_runtime());
var _excluded9 = ["aria-describedby", "aria-label", "aria-labelledby", "autoComplete", "autoFocus", "className", "defaultValue", "disabled", "endAdornment", "error", "id", "multiline", "name", "onClick", "onChange", "onKeyDown", "onKeyUp", "onFocus", "onBlur", "placeholder", "readOnly", "required", "startAdornment", "value", "type", "rows", "slotProps", "slots", "minRows", "maxRows"];
var useUtilityClasses7 = (ownerState) => {
const {
disabled,
error,
focused,
formControlContext,
multiline,
startAdornment,
endAdornment
} = ownerState;
const slots = {
root: ["root", disabled && "disabled", error && "error", focused && "focused", Boolean(formControlContext) && "formControl", multiline && "multiline", Boolean(startAdornment) && "adornedStart", Boolean(endAdornment) && "adornedEnd"],
input: ["input", disabled && "disabled", multiline && "multiline"]
};
return composeClasses(slots, useClassNamesOverride(getInputUtilityClass));
};
var Input = React25.forwardRef(function Input2(props, forwardedRef) {
var _slots$root, _slots$textarea, _slots$input;
const {
"aria-describedby": ariaDescribedby,
"aria-label": ariaLabel,
"aria-labelledby": ariaLabelledby,
autoComplete,
autoFocus,
className,
defaultValue,
disabled,
endAdornment,
error,
id,
multiline = false,
name,
onClick,
onChange,
onKeyDown,
onKeyUp,
onFocus,
onBlur,
placeholder,
readOnly,
required,
startAdornment,
value,
type: typeProp,
rows,
slotProps = {},
slots = {},
minRows,
maxRows
} = props, other = _objectWithoutPropertiesLoose(props, _excluded9);
const {
getRootProps,
getInputProps,
focused,
formControlContext,
error: errorState,
disabled: disabledState
} = useInput({
disabled,
defaultValue,
error,
onBlur,
onClick,
onChange,
onFocus,
required,
value
});
const type = !multiline ? typeProp != null ? typeProp : "text" : void 0;
const ownerState = _extends({}, props, {
disabled: disabledState,
error: errorState,
focused,
formControlContext,
multiline,
type
});
const classes = useUtilityClasses7(ownerState);
const propsToForward = {
"aria-describedby": ariaDescribedby,
"aria-label": ariaLabel,
"aria-labelledby": ariaLabelledby,
autoComplete,
autoFocus,
id,
onKeyDown,
onKeyUp,
name,
placeholder,
readOnly,
type
};
const Root = (_slots$root = slots.root) != null ? _slots$root : "div";
const rootProps = useSlotProps({
elementType: Root,
getSlotProps: getRootProps,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
additionalProps: {
ref: forwardedRef
},
ownerState,
className: [classes.root, className]
});
const InputComponent = multiline ? (_slots$textarea = slots.textarea) != null ? _slots$textarea : "textarea" : (_slots$input = slots.input) != null ? _slots$input : "input";
const inputProps = useSlotProps({
elementType: InputComponent,
getSlotProps: (otherHandlers) => {
return getInputProps(_extends({}, propsToForward, otherHandlers));
},
externalSlotProps: slotProps.input,
additionalProps: _extends({
rows: multiline ? rows : void 0
}, multiline && !isHostComponent(InputComponent) && {
minRows: rows || minRows,
maxRows: rows || maxRows
}),
ownerState,
className: classes.input
});
if (true) {
if (multiline) {
if (rows) {
if (minRows || maxRows) {
console.warn("MUI: You can not use the `minRows` or `maxRows` props when the input `rows` prop is set.");
}
}
}
}
return (0, import_jsx_runtime20.jsxs)(Root, _extends({}, rootProps, {
children: [startAdornment, (0, import_jsx_runtime19.jsx)(InputComponent, _extends({}, inputProps)), endAdornment]
}));
});
true ? Input.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* @ignore
*/
"aria-describedby": import_prop_types14.default.string,
/**
* @ignore
*/
"aria-label": import_prop_types14.default.string,
/**
* @ignore
*/
"aria-labelledby": import_prop_types14.default.string,
/**
* This prop helps users to fill forms faster, especially on mobile devices.
* The name can be confusing, as it's more like an autofill.
* You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).
*/
autoComplete: import_prop_types14.default.string,
/**
* If `true`, the `input` element is focused during the first mount.
*/
autoFocus: import_prop_types14.default.bool,
/**
* Class name applied to the root element.
*/
className: import_prop_types14.default.string,
/**
* The default value. Use when the component is not controlled.
*/
defaultValue: import_prop_types14.default.any,
/**
* If `true`, the component is disabled.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
disabled: import_prop_types14.default.bool,
/**
* Trailing adornment for this input.
*/
endAdornment: import_prop_types14.default.node,
/**
* If `true`, the `input` will indicate an error by setting the `aria-invalid` attribute on the input and the `baseui--error` class on the root element.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
error: import_prop_types14.default.bool,
/**
* The id of the `input` element.
*/
id: import_prop_types14.default.string,
/**
* @ignore
*/
inputRef: import_prop_types14.default.oneOfType([import_prop_types14.default.func, import_prop_types14.default.shape({
current: import_prop_types14.default.object
})]),
/**
* Maximum number of rows to display when multiline option is set to true.
*/
maxRows: import_prop_types14.default.number,
/**
* Minimum number of rows to display when multiline option is set to true.
*/
minRows: import_prop_types14.default.number,
/**
* If `true`, a `textarea` element is rendered.
* @default false
*/
multiline: import_prop_types14.default.bool,
/**
* Name attribute of the `input` element.
*/
name: import_prop_types14.default.string,
/**
* @ignore
*/
onBlur: import_prop_types14.default.func,
/**
* @ignore
*/
onChange: import_prop_types14.default.func,
/**
* @ignore
*/
onClick: import_prop_types14.default.func,
/**
* @ignore
*/
onFocus: import_prop_types14.default.func,
/**
* @ignore
*/
onKeyDown: import_prop_types14.default.func,
/**
* @ignore
*/
onKeyUp: import_prop_types14.default.func,
/**
* The short hint displayed in the `input` before the user enters a value.
*/
placeholder: import_prop_types14.default.string,
/**
* It prevents the user from changing the value of the field
* (not from interacting with the field).
*/
readOnly: import_prop_types14.default.bool,
/**
* If `true`, the `input` element is required.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
required: import_prop_types14.default.bool,
/**
* Number of rows to display when multiline option is set to true.
*/
rows: import_prop_types14.default.number,
/**
* The props used for each slot inside the Input.
* @default {}
*/
slotProps: import_prop_types14.default.shape({
input: import_prop_types14.default.oneOfType([import_prop_types14.default.func, import_prop_types14.default.object]),
root: import_prop_types14.default.oneOfType([import_prop_types14.default.func, import_prop_types14.default.object])
}),
/**
* The components used for each slot inside the InputBase.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types14.default.shape({
input: import_prop_types14.default.elementType,
root: import_prop_types14.default.elementType,
textarea: import_prop_types14.default.elementType
}),
/**
* Leading adornment for this input.
*/
startAdornment: import_prop_types14.default.node,
/**
* Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).
* @default 'text'
*/
type: import_prop_types14.default.oneOf(["button", "checkbox", "color", "date", "datetime-local", "email", "file", "hidden", "image", "month", "number", "password", "radio", "range", "reset", "search", "submit", "tel", "text", "time", "url", "week"]),
/**
* The value of the `input` element, required for a controlled component.
*/
value: import_prop_types14.default.any
} : void 0;
// node_modules/@mui/base/Menu/Menu.js
init_extends();
init_objectWithoutPropertiesLoose();
var React40 = __toESM(require_react());
var import_prop_types16 = __toESM(require_prop_types());
init_utils();
// node_modules/@mui/base/Menu/menuClasses.js
var COMPONENT_NAME6 = "Menu";
function getMenuUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME6, slot);
}
var menuClasses = generateUtilityClasses2(COMPONENT_NAME6, ["root", "listbox", "expanded"]);
// node_modules/@mui/base/useMenu/useMenu.js
init_extends();
var React32 = __toESM(require_react());
init_utils();
// node_modules/@mui/base/useMenu/menuReducer.js
init_extends();
// node_modules/@mui/base/useList/useList.js
init_extends();
var React27 = __toESM(require_react());
init_utils();
// node_modules/@mui/base/useList/listActions.types.js
var ListActionTypes = {
blur: "list:blur",
focus: "list:focus",
itemClick: "list:itemClick",
itemHover: "list:itemHover",
itemsChange: "list:itemsChange",
keyDown: "list:keyDown",
resetHighlight: "list:resetHighlight",
highlightLast: "list:highlightLast",
textNavigation: "list:textNavigation",
clearSelection: "list:clearSelection"
};
// node_modules/@mui/base/useList/listReducer.js
init_extends();
function findValidItemToHighlight(currentIndex, lookupDirection, items, includeDisabledItems, isItemDisabled, wrapAround) {
if (items.length === 0 || !includeDisabledItems && items.every((item, itemIndex) => isItemDisabled(item, itemIndex))) {
return -1;
}
let nextFocus = currentIndex;
for (; ; ) {
if (!wrapAround && lookupDirection === "next" && nextFocus === items.length || !wrapAround && lookupDirection === "previous" && nextFocus === -1) {
return -1;
}
const nextFocusDisabled = includeDisabledItems ? false : isItemDisabled(items[nextFocus], nextFocus);
if (nextFocusDisabled) {
nextFocus += lookupDirection === "next" ? 1 : -1;
if (wrapAround) {
nextFocus = (nextFocus + items.length) % items.length;
}
} else {
return nextFocus;
}
}
}
function moveHighlight(previouslyHighlightedValue, offset3, context) {
var _items$nextIndex;
const {
items,
isItemDisabled,
disableListWrap,
disabledItemsFocusable,
itemComparer,
focusManagement
} = context;
const defaultHighlightedIndex = focusManagement === "DOM" ? 0 : -1;
const maxIndex = items.length - 1;
const previouslyHighlightedIndex = previouslyHighlightedValue == null ? -1 : items.findIndex((item) => itemComparer(item, previouslyHighlightedValue));
let nextIndexCandidate;
let lookupDirection;
let wrapAround = !disableListWrap;
switch (offset3) {
case "reset":
if (defaultHighlightedIndex === -1) {
return null;
}
nextIndexCandidate = 0;
lookupDirection = "next";
wrapAround = false;
break;
case "start":
nextIndexCandidate = 0;
lookupDirection = "next";
wrapAround = false;
break;
case "end":
nextIndexCandidate = maxIndex;
lookupDirection = "previous";
wrapAround = false;
break;
default: {
const newIndex = previouslyHighlightedIndex + offset3;
if (newIndex < 0) {
if (!wrapAround && previouslyHighlightedIndex !== -1 || Math.abs(offset3) > 1) {
nextIndexCandidate = 0;
lookupDirection = "next";
} else {
nextIndexCandidate = maxIndex;
lookupDirection = "previous";
}
} else if (newIndex > maxIndex) {
if (!wrapAround || Math.abs(offset3) > 1) {
nextIndexCandidate = maxIndex;
lookupDirection = "previous";
} else {
nextIndexCandidate = 0;
lookupDirection = "next";
}
} else {
nextIndexCandidate = newIndex;
lookupDirection = offset3 >= 0 ? "next" : "previous";
}
}
}
const nextIndex = findValidItemToHighlight(nextIndexCandidate, lookupDirection, items, disabledItemsFocusable, isItemDisabled, wrapAround);
if (nextIndex === -1 && previouslyHighlightedValue !== null && !isItemDisabled(previouslyHighlightedValue, previouslyHighlightedIndex)) {
return previouslyHighlightedValue;
}
return (_items$nextIndex = items[nextIndex]) != null ? _items$nextIndex : null;
}
function toggleSelection(item, selectedValues, selectionMode, itemComparer) {
if (selectionMode === "none") {
return [];
}
if (selectionMode === "single") {
if (itemComparer(selectedValues[0], item)) {
return selectedValues;
}
return [item];
}
if (selectedValues.some((sv) => itemComparer(sv, item))) {
return selectedValues.filter((sv) => !itemComparer(sv, item));
}
return [...selectedValues, item];
}
function handleItemSelection(item, state, context) {
const {
itemComparer,
isItemDisabled,
selectionMode,
items
} = context;
const {
selectedValues
} = state;
const itemIndex = items.findIndex((i) => itemComparer(item, i));
if (isItemDisabled(item, itemIndex)) {
return state;
}
const newSelectedValues = toggleSelection(item, selectedValues, selectionMode, itemComparer);
return _extends({}, state, {
selectedValues: newSelectedValues,
highlightedValue: item
});
}
function handleKeyDown(key, state, context) {
const previouslySelectedValue = state.highlightedValue;
const {
orientation,
pageSize: pageSize2
} = context;
switch (key) {
case "Home":
return _extends({}, state, {
highlightedValue: moveHighlight(previouslySelectedValue, "start", context)
});
case "End":
return _extends({}, state, {
highlightedValue: moveHighlight(previouslySelectedValue, "end", context)
});
case "PageUp":
return _extends({}, state, {
highlightedValue: moveHighlight(previouslySelectedValue, -pageSize2, context)
});
case "PageDown":
return _extends({}, state, {
highlightedValue: moveHighlight(previouslySelectedValue, pageSize2, context)
});
case "ArrowUp":
if (orientation !== "vertical") {
break;
}
return _extends({}, state, {
highlightedValue: moveHighlight(previouslySelectedValue, -1, context)
});
case "ArrowDown":
if (orientation !== "vertical") {
break;
}
return _extends({}, state, {
highlightedValue: moveHighlight(previouslySelectedValue, 1, context)
});
case "ArrowLeft": {
if (orientation === "vertical") {
break;
}
const offset3 = orientation === "horizontal-ltr" ? -1 : 1;
return _extends({}, state, {
highlightedValue: moveHighlight(previouslySelectedValue, offset3, context)
});
}
case "ArrowRight": {
if (orientation === "vertical") {
break;
}
const offset3 = orientation === "horizontal-ltr" ? 1 : -1;
return _extends({}, state, {
highlightedValue: moveHighlight(previouslySelectedValue, offset3, context)
});
}
case "Enter":
case " ":
if (state.highlightedValue === null) {
return state;
}
return handleItemSelection(state.highlightedValue, state, context);
default:
break;
}
return state;
}
function handleBlur(state, context) {
if (context.focusManagement === "DOM") {
return state;
}
return _extends({}, state, {
highlightedValue: null
});
}
function textCriteriaMatches(nextFocus, searchString, stringifyItem) {
var _stringifyItem;
const text = (_stringifyItem = stringifyItem(nextFocus)) == null ? void 0 : _stringifyItem.trim().toLowerCase();
if (!text || text.length === 0) {
return false;
}
return text.indexOf(searchString) === 0;
}
function handleTextNavigation(state, searchString, context) {
const {
items,
isItemDisabled,
disabledItemsFocusable,
getItemAsString
} = context;
const startWithCurrentItem = searchString.length > 1;
let nextItem2 = startWithCurrentItem ? state.highlightedValue : moveHighlight(state.highlightedValue, 1, context);
for (let index2 = 0; index2 < items.length; index2 += 1) {
if (!nextItem2 || !startWithCurrentItem && state.highlightedValue === nextItem2) {
return state;
}
if (textCriteriaMatches(nextItem2, searchString, getItemAsString) && (!isItemDisabled(nextItem2, items.indexOf(nextItem2)) || disabledItemsFocusable)) {
return _extends({}, state, {
highlightedValue: nextItem2
});
}
nextItem2 = moveHighlight(nextItem2, 1, context);
}
return state;
}
function handleItemsChange(items, previousItems, state, context) {
var _state$selectedValues;
const {
itemComparer,
focusManagement
} = context;
let newHighlightedValue = null;
if (state.highlightedValue != null) {
var _items$find;
newHighlightedValue = (_items$find = items.find((item) => itemComparer(item, state.highlightedValue))) != null ? _items$find : null;
} else if (focusManagement === "DOM" && previousItems.length === 0) {
newHighlightedValue = moveHighlight(null, "reset", context);
}
const selectedValues = (_state$selectedValues = state.selectedValues) != null ? _state$selectedValues : [];
const newSelectedValues = selectedValues.filter((selectedValue) => items.some((item) => itemComparer(item, selectedValue)));
return _extends({}, state, {
highlightedValue: newHighlightedValue,
selectedValues: newSelectedValues
});
}
function handleResetHighlight(state, context) {
return _extends({}, state, {
highlightedValue: moveHighlight(null, "reset", context)
});
}
function handleHighlightLast(state, context) {
return _extends({}, state, {
highlightedValue: moveHighlight(null, "end", context)
});
}
function handleClearSelection(state, context) {
return _extends({}, state, {
selectedValues: [],
highlightedValue: moveHighlight(null, "reset", context)
});
}
function listReducer(state, action) {
const {
type,
context
} = action;
switch (type) {
case ListActionTypes.keyDown:
return handleKeyDown(action.key, state, context);
case ListActionTypes.itemClick:
return handleItemSelection(action.item, state, context);
case ListActionTypes.blur:
return handleBlur(state, context);
case ListActionTypes.textNavigation:
return handleTextNavigation(state, action.searchString, context);
case ListActionTypes.itemsChange:
return handleItemsChange(action.items, action.previousItems, state, context);
case ListActionTypes.resetHighlight:
return handleResetHighlight(state, context);
case ListActionTypes.highlightLast:
return handleHighlightLast(state, context);
case ListActionTypes.clearSelection:
return handleClearSelection(state, context);
default:
return state;
}
}
// node_modules/@mui/base/utils/useTextNavigation.js
var React26 = __toESM(require_react());
var TEXT_NAVIGATION_RESET_TIMEOUT = 500;
function useTextNavigation(callback) {
const textCriteriaRef = React26.useRef({
searchString: "",
lastTime: null
});
return React26.useCallback((event) => {
if (event.key.length === 1 && event.key !== " ") {
const textCriteria = textCriteriaRef.current;
const lowerKey = event.key.toLowerCase();
const currentTime = performance.now();
if (textCriteria.searchString.length > 0 && textCriteria.lastTime && currentTime - textCriteria.lastTime > TEXT_NAVIGATION_RESET_TIMEOUT) {
textCriteria.searchString = lowerKey;
} else if (textCriteria.searchString.length !== 1 || lowerKey !== textCriteria.searchString) {
textCriteria.searchString += lowerKey;
}
textCriteria.lastTime = currentTime;
callback(textCriteria.searchString, event);
}
}, [callback]);
}
// node_modules/@mui/base/useList/useList.js
var EMPTY_OBJECT2 = {};
var NOOP2 = () => {
};
var defaultItemComparer = (optionA, optionB) => optionA === optionB;
var defaultIsItemDisabled = () => false;
var defaultItemStringifier = (item) => typeof item === "string" ? item : String(item);
var defaultGetInitialState = () => ({
highlightedValue: null,
selectedValues: []
});
function useList(params) {
const {
controlledProps = EMPTY_OBJECT2,
disabledItemsFocusable = false,
disableListWrap = false,
focusManagement = "activeDescendant",
getInitialState = defaultGetInitialState,
getItemDomElement,
getItemId,
isItemDisabled = defaultIsItemDisabled,
rootRef: externalListRef,
onStateChange = NOOP2,
items,
itemComparer = defaultItemComparer,
getItemAsString = defaultItemStringifier,
onChange,
onHighlightChange,
onItemsChange,
orientation = "vertical",
pageSize: pageSize2 = 5,
reducerActionContext = EMPTY_OBJECT2,
selectionMode = "single",
stateReducer: externalReducer,
componentName = "useList"
} = params;
if (true) {
if (focusManagement === "DOM" && getItemDomElement == null) {
throw new Error("useList: The `getItemDomElement` prop is required when using the `DOM` focus management.");
}
if (focusManagement === "activeDescendant" && getItemId == null) {
throw new Error("useList: The `getItemId` prop is required when using the `activeDescendant` focus management.");
}
}
const listRef = React27.useRef(null);
const handleRef = useForkRef(externalListRef, listRef);
const handleHighlightChange = React27.useCallback((event, value, reason) => {
onHighlightChange == null || onHighlightChange(event, value, reason);
if (focusManagement === "DOM" && value != null && (reason === ListActionTypes.itemClick || reason === ListActionTypes.keyDown || reason === ListActionTypes.textNavigation)) {
var _getItemDomElement;
getItemDomElement == null || (_getItemDomElement = getItemDomElement(value)) == null || _getItemDomElement.focus();
}
}, [getItemDomElement, onHighlightChange, focusManagement]);
const stateComparers = React27.useMemo(() => ({
highlightedValue: itemComparer,
selectedValues: (valuesArray1, valuesArray2) => areArraysEqual(valuesArray1, valuesArray2, itemComparer)
}), [itemComparer]);
const handleStateChange = React27.useCallback((event, field, value, reason, state2) => {
onStateChange == null || onStateChange(event, field, value, reason, state2);
switch (field) {
case "highlightedValue":
handleHighlightChange(event, value, reason);
break;
case "selectedValues":
onChange == null || onChange(event, value, reason);
break;
default:
break;
}
}, [handleHighlightChange, onChange, onStateChange]);
const listActionContext = React27.useMemo(() => {
return {
disabledItemsFocusable,
disableListWrap,
focusManagement,
isItemDisabled,
itemComparer,
items,
getItemAsString,
onHighlightChange: handleHighlightChange,
orientation,
pageSize: pageSize2,
selectionMode,
stateComparers
};
}, [disabledItemsFocusable, disableListWrap, focusManagement, isItemDisabled, itemComparer, items, getItemAsString, handleHighlightChange, orientation, pageSize2, selectionMode, stateComparers]);
const initialState = getInitialState();
const reducer = externalReducer != null ? externalReducer : listReducer;
const actionContext = React27.useMemo(() => _extends({}, reducerActionContext, listActionContext), [reducerActionContext, listActionContext]);
const [state, dispatch] = useControllableReducer({
reducer,
actionContext,
initialState,
controlledProps,
stateComparers,
onStateChange: handleStateChange,
componentName
});
const {
highlightedValue,
selectedValues
} = state;
const handleTextNavigation2 = useTextNavigation((searchString, event) => dispatch({
type: ListActionTypes.textNavigation,
event,
searchString
}));
const previousItems = React27.useRef([]);
React27.useEffect(() => {
if (areArraysEqual(previousItems.current, items, itemComparer)) {
return;
}
dispatch({
type: ListActionTypes.itemsChange,
event: null,
items,
previousItems: previousItems.current
});
previousItems.current = items;
onItemsChange == null || onItemsChange(items);
}, [items, itemComparer, dispatch, onItemsChange]);
const createHandleKeyDown = (externalHandlers) => (event) => {
var _externalHandlers$onK;
(_externalHandlers$onK = externalHandlers.onKeyDown) == null || _externalHandlers$onK.call(externalHandlers, event);
if (event.defaultMuiPrevented) {
return;
}
const keysToPreventDefault = ["Home", "End", "PageUp", "PageDown"];
if (orientation === "vertical") {
keysToPreventDefault.push("ArrowUp", "ArrowDown");
} else {
keysToPreventDefault.push("ArrowLeft", "ArrowRight");
}
if (focusManagement === "activeDescendant") {
keysToPreventDefault.push(" ", "Enter");
}
if (keysToPreventDefault.includes(event.key)) {
event.preventDefault();
}
dispatch({
type: ListActionTypes.keyDown,
key: event.key,
event
});
handleTextNavigation2(event);
};
const createHandleBlur = (externalHandlers) => (event) => {
var _externalHandlers$onB, _listRef$current;
(_externalHandlers$onB = externalHandlers.onBlur) == null || _externalHandlers$onB.call(externalHandlers, event);
if (event.defaultMuiPrevented) {
return;
}
if ((_listRef$current = listRef.current) != null && _listRef$current.contains(event.relatedTarget)) {
return;
}
dispatch({
type: ListActionTypes.blur,
event
});
};
const getRootProps = (externalProps = {}) => {
const externalEventHandlers = extractEventHandlers(externalProps);
return _extends({}, externalProps, {
"aria-activedescendant": focusManagement === "activeDescendant" && highlightedValue != null ? getItemId(highlightedValue) : void 0,
tabIndex: focusManagement === "DOM" ? -1 : 0,
ref: handleRef
}, externalEventHandlers, {
onBlur: createHandleBlur(externalEventHandlers),
onKeyDown: createHandleKeyDown(externalEventHandlers)
});
};
const getItemState = React27.useCallback((item) => {
const selected = (selectedValues != null ? selectedValues : []).some((value) => value != null && itemComparer(item, value));
const highlighted = highlightedValue != null && itemComparer(item, highlightedValue);
const focusable = focusManagement === "DOM";
return {
focusable,
highlighted,
selected
};
}, [itemComparer, selectedValues, highlightedValue, focusManagement]);
const contextValue = React27.useMemo(() => ({
dispatch,
getItemState
}), [dispatch, getItemState]);
React27.useDebugValue({
state
});
return {
contextValue,
dispatch,
getRootProps,
rootRef: handleRef,
state
};
}
// node_modules/@mui/base/useList/useListItem.js
init_extends();
var React29 = __toESM(require_react());
// node_modules/@mui/base/useList/ListContext.js
var React28 = __toESM(require_react());
var ListContext = React28.createContext(null);
if (true) {
ListContext.displayName = "ListContext";
}
// node_modules/@mui/base/useList/useListItem.js
function useListItem(parameters) {
const {
handlePointerOverEvents = false,
item
} = parameters;
const listContext = React29.useContext(ListContext);
if (!listContext) {
throw new Error("useListItem must be used within a ListProvider");
}
const {
dispatch,
getItemState
} = listContext;
const {
highlighted,
selected,
focusable
} = getItemState(item);
const createHandleClick = React29.useCallback((externalHandlers) => (event) => {
var _externalHandlers$onC;
(_externalHandlers$onC = externalHandlers.onClick) == null || _externalHandlers$onC.call(externalHandlers, event);
if (event.defaultPrevented) {
return;
}
if (true) {
if (item === void 0) {
throw new Error(["MUI: The `item` provided to useListItem() is undefined.", "This should happen only during server-side rendering under React 17."].join("\n"));
}
}
dispatch({
type: ListActionTypes.itemClick,
item,
event
});
}, [dispatch, item]);
const createHandlePointerOver = React29.useCallback((externalHandlers) => (event) => {
var _externalHandlers$onM;
(_externalHandlers$onM = externalHandlers.onMouseOver) == null || _externalHandlers$onM.call(externalHandlers, event);
if (event.defaultPrevented) {
return;
}
if (true) {
if (item === void 0) {
throw new Error(["MUI: The `item` provided to useListItem() is undefined.", "This should happen only during server-side rendering under React 17."].join("\n"));
}
}
dispatch({
type: ListActionTypes.itemHover,
item,
event
});
}, [dispatch, item]);
let tabIndex;
if (focusable) {
tabIndex = highlighted ? 0 : -1;
}
const getRootProps = (externalProps = {}) => {
const externalEventHandlers = extractEventHandlers(externalProps);
return _extends({}, externalProps, {
onClick: createHandleClick(externalEventHandlers),
onPointerOver: handlePointerOverEvents ? createHandlePointerOver(externalEventHandlers) : void 0,
tabIndex
});
};
return {
getRootProps,
highlighted,
selected
};
}
// node_modules/@mui/base/useMenu/menuReducer.js
function menuReducer(state, action) {
if (action.type === ListActionTypes.itemHover) {
return _extends({}, state, {
highlightedValue: action.item
});
}
const newState = listReducer(state, action);
if (newState.highlightedValue === null && action.context.items.length > 0) {
return _extends({}, newState, {
highlightedValue: action.context.items[0]
});
}
if (action.type === ListActionTypes.keyDown) {
if (action.event.key === "Escape") {
return _extends({}, newState, {
open: false
});
}
}
if (action.type === ListActionTypes.blur) {
var _action$context$listb;
if (!((_action$context$listb = action.context.listboxRef.current) != null && _action$context$listb.contains(action.event.relatedTarget))) {
var _action$context$listb2, _action$event$related;
const listboxId = (_action$context$listb2 = action.context.listboxRef.current) == null ? void 0 : _action$context$listb2.getAttribute("id");
const controlledBy = (_action$event$related = action.event.relatedTarget) == null ? void 0 : _action$event$related.getAttribute("aria-controls");
if (listboxId && controlledBy && listboxId === controlledBy) {
return newState;
}
return _extends({}, newState, {
open: false,
highlightedValue: action.context.items[0]
});
}
}
return newState;
}
// node_modules/@mui/base/useCompound/useCompoundParent.js
var React30 = __toESM(require_react());
var CompoundComponentContext = React30.createContext(null);
if (true) {
CompoundComponentContext.displayName = "CompoundComponentContext";
}
function sortSubitems(subitems) {
const subitemsArray = Array.from(subitems.keys()).map((key) => {
const subitem = subitems.get(key);
return {
key,
subitem
};
});
subitemsArray.sort((a, b) => {
const aNode = a.subitem.ref.current;
const bNode = b.subitem.ref.current;
if (aNode === null || bNode === null || aNode === bNode) {
return 0;
}
return aNode.compareDocumentPosition(bNode) & Node.DOCUMENT_POSITION_PRECEDING ? 1 : -1;
});
return new Map(subitemsArray.map((item) => [item.key, item.subitem]));
}
function useCompoundParent() {
const [subitems, setSubitems] = React30.useState(/* @__PURE__ */ new Map());
const subitemKeys = React30.useRef(/* @__PURE__ */ new Set());
const deregisterItem = React30.useCallback(function deregisterItem2(id) {
subitemKeys.current.delete(id);
setSubitems((previousState) => {
const newState = new Map(previousState);
newState.delete(id);
return newState;
});
}, []);
const registerItem = React30.useCallback(function registerItem2(id, item) {
let providedOrGeneratedId;
if (typeof id === "function") {
providedOrGeneratedId = id(subitemKeys.current);
} else {
providedOrGeneratedId = id;
}
subitemKeys.current.add(providedOrGeneratedId);
setSubitems((previousState) => {
const newState = new Map(previousState);
newState.set(providedOrGeneratedId, item);
return newState;
});
return {
id: providedOrGeneratedId,
deregister: () => deregisterItem(providedOrGeneratedId)
};
}, [deregisterItem]);
const sortedSubitems = React30.useMemo(() => sortSubitems(subitems), [subitems]);
const getItemIndex = React30.useCallback(function getItemIndex2(id) {
return Array.from(sortedSubitems.keys()).indexOf(id);
}, [sortedSubitems]);
const contextValue = React30.useMemo(() => ({
getItemIndex,
registerItem,
totalSubitemCount: subitems.size
}), [getItemIndex, registerItem, subitems.size]);
return {
contextValue,
subitems: sortedSubitems
};
}
// node_modules/@mui/base/useCompound/useCompoundItem.js
var React31 = __toESM(require_react());
init_utils();
function useCompoundItem(id, itemMetadata) {
const context = React31.useContext(CompoundComponentContext);
if (context === null) {
throw new Error("useCompoundItem must be used within a useCompoundParent");
}
const {
registerItem
} = context;
const [registeredId, setRegisteredId] = React31.useState(typeof id === "function" ? void 0 : id);
useEnhancedEffect_default(() => {
const {
id: returnedId,
deregister
} = registerItem(id, itemMetadata);
setRegisteredId(returnedId);
return deregister;
}, [registerItem, itemMetadata, id]);
return {
id: registeredId,
index: registeredId !== void 0 ? context.getItemIndex(registeredId) : -1,
totalItemCount: context.totalSubitemCount
};
}
// node_modules/@mui/base/utils/combineHooksSlotProps.js
init_extends();
function combineHooksSlotProps(getFirstProps, getSecondProps) {
return function getCombinedProps(external = {}) {
const firstResult = _extends({}, external, getFirstProps(external));
const result = _extends({}, firstResult, getSecondProps(firstResult));
return result;
};
}
// node_modules/@mui/base/useMenu/useMenu.js
var FALLBACK_MENU_CONTEXT = {
dispatch: () => {
},
popupId: "",
registerPopup: () => {
},
registerTrigger: () => {
},
state: {
open: true,
changeReason: null
},
triggerElement: null
};
function useMenu(parameters = {}) {
var _useId, _React$useContext;
const {
listboxRef: listboxRefProp,
onItemsChange,
id: idParam,
disabledItemsFocusable = true,
disableListWrap = false,
autoFocus = true,
componentName = "useMenu"
} = parameters;
const rootRef = React32.useRef(null);
const handleRef = useForkRef(rootRef, listboxRefProp);
const listboxId = (_useId = useId(idParam)) != null ? _useId : "";
const {
state: {
open,
changeReason
},
dispatch: menuDispatch,
triggerElement,
registerPopup
} = (_React$useContext = React32.useContext(DropdownContext)) != null ? _React$useContext : FALLBACK_MENU_CONTEXT;
const isInitiallyOpen = React32.useRef(open);
const {
subitems,
contextValue: compoundComponentContextValue
} = useCompoundParent();
const subitemKeys = React32.useMemo(() => Array.from(subitems.keys()), [subitems]);
const getItemDomElement = React32.useCallback((itemId) => {
var _subitems$get$ref$cur, _subitems$get;
if (itemId == null) {
return null;
}
return (_subitems$get$ref$cur = (_subitems$get = subitems.get(itemId)) == null ? void 0 : _subitems$get.ref.current) != null ? _subitems$get$ref$cur : null;
}, [subitems]);
const isItemDisabled = React32.useCallback((id) => {
var _subitems$get2;
return (subitems == null || (_subitems$get2 = subitems.get(id)) == null ? void 0 : _subitems$get2.disabled) || false;
}, [subitems]);
const getItemAsString = React32.useCallback((id) => {
var _subitems$get3, _subitems$get4;
return ((_subitems$get3 = subitems.get(id)) == null ? void 0 : _subitems$get3.label) || ((_subitems$get4 = subitems.get(id)) == null || (_subitems$get4 = _subitems$get4.ref.current) == null ? void 0 : _subitems$get4.innerText);
}, [subitems]);
const reducerActionContext = React32.useMemo(() => ({
listboxRef: rootRef
}), [rootRef]);
const {
dispatch: listDispatch,
getRootProps: getListRootProps,
contextValue: listContextValue,
state: {
highlightedValue
},
rootRef: mergedListRef
} = useList({
disabledItemsFocusable,
disableListWrap,
focusManagement: "DOM",
getItemDomElement,
getInitialState: () => ({
selectedValues: [],
highlightedValue: null
}),
isItemDisabled,
items: subitemKeys,
getItemAsString,
rootRef: handleRef,
onItemsChange,
reducerActionContext,
selectionMode: "none",
stateReducer: menuReducer,
componentName
});
useEnhancedEffect_default(() => {
registerPopup(listboxId);
}, [listboxId, registerPopup]);
useEnhancedEffect_default(() => {
if (open && (changeReason == null ? void 0 : changeReason.type) === "keydown" && changeReason.key === "ArrowUp") {
listDispatch({
type: ListActionTypes.highlightLast,
event: changeReason
});
}
}, [open, changeReason, listDispatch]);
React32.useEffect(() => {
if (open && autoFocus && highlightedValue && !isInitiallyOpen.current) {
var _subitems$get5;
(_subitems$get5 = subitems.get(highlightedValue)) == null || (_subitems$get5 = _subitems$get5.ref) == null || (_subitems$get5 = _subitems$get5.current) == null || _subitems$get5.focus();
}
}, [open, autoFocus, highlightedValue, subitems, subitemKeys]);
React32.useEffect(() => {
var _rootRef$current;
if ((_rootRef$current = rootRef.current) != null && _rootRef$current.contains(document.activeElement) && highlightedValue !== null) {
var _subitems$get6;
subitems == null || (_subitems$get6 = subitems.get(highlightedValue)) == null || (_subitems$get6 = _subitems$get6.ref.current) == null || _subitems$get6.focus();
}
}, [highlightedValue, subitems]);
const createHandleBlur = (otherHandlers) => (event) => {
var _otherHandlers$onBlur, _rootRef$current2;
(_otherHandlers$onBlur = otherHandlers.onBlur) == null || _otherHandlers$onBlur.call(otherHandlers, event);
if (event.defaultMuiPrevented) {
return;
}
if ((_rootRef$current2 = rootRef.current) != null && _rootRef$current2.contains(event.relatedTarget) || event.relatedTarget === triggerElement) {
return;
}
menuDispatch({
type: DropdownActionTypes.blur,
event
});
};
const createHandleKeyDown = (otherHandlers) => (event) => {
var _otherHandlers$onKeyD;
(_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);
if (event.defaultMuiPrevented) {
return;
}
if (event.key === "Escape") {
menuDispatch({
type: DropdownActionTypes.escapeKeyDown,
event
});
}
};
const getOwnListboxHandlers = (otherHandlers = {}) => ({
onBlur: createHandleBlur(otherHandlers),
onKeyDown: createHandleKeyDown(otherHandlers)
});
const getListboxProps = (externalProps = {}) => {
const getCombinedRootProps = combineHooksSlotProps(getOwnListboxHandlers, getListRootProps);
const externalEventHandlers = extractEventHandlers(externalProps);
return _extends({}, externalProps, externalEventHandlers, getCombinedRootProps(externalEventHandlers), {
id: listboxId,
role: "menu"
});
};
React32.useDebugValue({
subitems,
highlightedValue
});
return {
contextValue: _extends({}, compoundComponentContextValue, listContextValue),
dispatch: listDispatch,
getListboxProps,
highlightedValue,
listboxRef: mergedListRef,
menuItems: subitems,
open,
triggerElement
};
}
// node_modules/@mui/base/useMenu/MenuProvider.js
var React33 = __toESM(require_react());
var import_jsx_runtime21 = __toESM(require_jsx_runtime());
function MenuProvider(props) {
const {
value,
children
} = props;
const {
dispatch,
getItemIndex,
getItemState,
registerItem,
totalSubitemCount
} = value;
const listContextValue = React33.useMemo(() => ({
dispatch,
getItemState,
getItemIndex
}), [dispatch, getItemIndex, getItemState]);
const compoundComponentContextValue = React33.useMemo(() => ({
getItemIndex,
registerItem,
totalSubitemCount
}), [registerItem, getItemIndex, totalSubitemCount]);
return (0, import_jsx_runtime21.jsx)(CompoundComponentContext.Provider, {
value: compoundComponentContextValue,
children: (0, import_jsx_runtime21.jsx)(ListContext.Provider, {
value: listContextValue,
children
})
});
}
// node_modules/@mui/base/Unstable_Popup/Popup.js
init_extends();
init_objectWithoutPropertiesLoose();
var React39 = __toESM(require_react());
var import_prop_types15 = __toESM(require_prop_types());
// node_modules/@floating-ui/utils/dist/floating-ui.utils.mjs
var sides = ["top", "right", "bottom", "left"];
var alignments = ["start", "end"];
var placements2 = sides.reduce((acc, side) => acc.concat(side, side + "-" + alignments[0], side + "-" + alignments[1]), []);
var min2 = Math.min;
var max2 = Math.max;
var round2 = Math.round;
var floor = Math.floor;
var createCoords = (v) => ({
x: v,
y: v
});
var oppositeSideMap = {
left: "right",
right: "left",
bottom: "top",
top: "bottom"
};
var oppositeAlignmentMap = {
start: "end",
end: "start"
};
function clamp(start2, value, end2) {
return max2(start2, min2(value, end2));
}
function evaluate(value, param) {
return typeof value === "function" ? value(param) : value;
}
function getSide(placement) {
return placement.split("-")[0];
}
function getAlignment(placement) {
return placement.split("-")[1];
}
function getOppositeAxis(axis) {
return axis === "x" ? "y" : "x";
}
function getAxisLength(axis) {
return axis === "y" ? "height" : "width";
}
function getSideAxis(placement) {
return ["top", "bottom"].includes(getSide(placement)) ? "y" : "x";
}
function getAlignmentAxis(placement) {
return getOppositeAxis(getSideAxis(placement));
}
function getAlignmentSides(placement, rects, rtl) {
if (rtl === void 0) {
rtl = false;
}
const alignment = getAlignment(placement);
const alignmentAxis = getAlignmentAxis(placement);
const length = getAxisLength(alignmentAxis);
let mainAlignmentSide = alignmentAxis === "x" ? alignment === (rtl ? "end" : "start") ? "right" : "left" : alignment === "start" ? "bottom" : "top";
if (rects.reference[length] > rects.floating[length]) {
mainAlignmentSide = getOppositePlacement2(mainAlignmentSide);
}
return [mainAlignmentSide, getOppositePlacement2(mainAlignmentSide)];
}
function getExpandedPlacements(placement) {
const oppositePlacement = getOppositePlacement2(placement);
return [getOppositeAlignmentPlacement(placement), oppositePlacement, getOppositeAlignmentPlacement(oppositePlacement)];
}
function getOppositeAlignmentPlacement(placement) {
return placement.replace(/start|end/g, (alignment) => oppositeAlignmentMap[alignment]);
}
function getSideList(side, isStart, rtl) {
const lr = ["left", "right"];
const rl = ["right", "left"];
const tb = ["top", "bottom"];
const bt = ["bottom", "top"];
switch (side) {
case "top":
case "bottom":
if (rtl)
return isStart ? rl : lr;
return isStart ? lr : rl;
case "left":
case "right":
return isStart ? tb : bt;
default:
return [];
}
}
function getOppositeAxisPlacements(placement, flipAlignment, direction, rtl) {
const alignment = getAlignment(placement);
let list = getSideList(getSide(placement), direction === "start", rtl);
if (alignment) {
list = list.map((side) => side + "-" + alignment);
if (flipAlignment) {
list = list.concat(list.map(getOppositeAlignmentPlacement));
}
}
return list;
}
function getOppositePlacement2(placement) {
return placement.replace(/left|right|bottom|top/g, (side) => oppositeSideMap[side]);
}
function expandPaddingObject(padding) {
return {
top: 0,
right: 0,
bottom: 0,
left: 0,
...padding
};
}
function getPaddingObject(padding) {
return typeof padding !== "number" ? expandPaddingObject(padding) : {
top: padding,
right: padding,
bottom: padding,
left: padding
};
}
function rectToClientRect2(rect) {
return {
...rect,
top: rect.y,
left: rect.x,
right: rect.x + rect.width,
bottom: rect.y + rect.height
};
}
// node_modules/@floating-ui/core/dist/floating-ui.core.mjs
function computeCoordsFromPlacement(_ref, placement, rtl) {
let {
reference: reference2,
floating
} = _ref;
const sideAxis = getSideAxis(placement);
const alignmentAxis = getAlignmentAxis(placement);
const alignLength = getAxisLength(alignmentAxis);
const side = getSide(placement);
const isVertical = sideAxis === "y";
const commonX = reference2.x + reference2.width / 2 - floating.width / 2;
const commonY = reference2.y + reference2.height / 2 - floating.height / 2;
const commonAlign = reference2[alignLength] / 2 - floating[alignLength] / 2;
let coords;
switch (side) {
case "top":
coords = {
x: commonX,
y: reference2.y - floating.height
};
break;
case "bottom":
coords = {
x: commonX,
y: reference2.y + reference2.height
};
break;
case "right":
coords = {
x: reference2.x + reference2.width,
y: commonY
};
break;
case "left":
coords = {
x: reference2.x - floating.width,
y: commonY
};
break;
default:
coords = {
x: reference2.x,
y: reference2.y
};
}
switch (getAlignment(placement)) {
case "start":
coords[alignmentAxis] -= commonAlign * (rtl && isVertical ? -1 : 1);
break;
case "end":
coords[alignmentAxis] += commonAlign * (rtl && isVertical ? -1 : 1);
break;
}
return coords;
}
var computePosition = async (reference2, floating, config) => {
const {
placement = "bottom",
strategy = "absolute",
middleware = [],
platform: platform2
} = config;
const validMiddleware = middleware.filter(Boolean);
const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(floating));
let rects = await platform2.getElementRects({
reference: reference2,
floating,
strategy
});
let {
x,
y
} = computeCoordsFromPlacement(rects, placement, rtl);
let statefulPlacement = placement;
let middlewareData = {};
let resetCount = 0;
for (let i = 0; i < validMiddleware.length; i++) {
const {
name,
fn: fn2
} = validMiddleware[i];
const {
x: nextX,
y: nextY,
data,
reset
} = await fn2({
x,
y,
initialPlacement: placement,
placement: statefulPlacement,
strategy,
middlewareData,
rects,
platform: platform2,
elements: {
reference: reference2,
floating
}
});
x = nextX != null ? nextX : x;
y = nextY != null ? nextY : y;
middlewareData = {
...middlewareData,
[name]: {
...middlewareData[name],
...data
}
};
if (reset && resetCount <= 50) {
resetCount++;
if (typeof reset === "object") {
if (reset.placement) {
statefulPlacement = reset.placement;
}
if (reset.rects) {
rects = reset.rects === true ? await platform2.getElementRects({
reference: reference2,
floating,
strategy
}) : reset.rects;
}
({
x,
y
} = computeCoordsFromPlacement(rects, statefulPlacement, rtl));
}
i = -1;
}
}
return {
x,
y,
placement: statefulPlacement,
strategy,
middlewareData
};
};
async function detectOverflow2(state, options) {
var _await$platform$isEle;
if (options === void 0) {
options = {};
}
const {
x,
y,
platform: platform2,
rects,
elements,
strategy
} = state;
const {
boundary = "clippingAncestors",
rootBoundary = "viewport",
elementContext = "floating",
altBoundary = false,
padding = 0
} = evaluate(options, state);
const paddingObject = getPaddingObject(padding);
const altContext = elementContext === "floating" ? "reference" : "floating";
const element = elements[altBoundary ? altContext : elementContext];
const clippingClientRect = rectToClientRect2(await platform2.getClippingRect({
element: ((_await$platform$isEle = await (platform2.isElement == null ? void 0 : platform2.isElement(element))) != null ? _await$platform$isEle : true) ? element : element.contextElement || await (platform2.getDocumentElement == null ? void 0 : platform2.getDocumentElement(elements.floating)),
boundary,
rootBoundary,
strategy
}));
const rect = elementContext === "floating" ? {
...rects.floating,
x,
y
} : rects.reference;
const offsetParent = await (platform2.getOffsetParent == null ? void 0 : platform2.getOffsetParent(elements.floating));
const offsetScale = await (platform2.isElement == null ? void 0 : platform2.isElement(offsetParent)) ? await (platform2.getScale == null ? void 0 : platform2.getScale(offsetParent)) || {
x: 1,
y: 1
} : {
x: 1,
y: 1
};
const elementClientRect = rectToClientRect2(platform2.convertOffsetParentRelativeRectToViewportRelativeRect ? await platform2.convertOffsetParentRelativeRectToViewportRelativeRect({
elements,
rect,
offsetParent,
strategy
}) : rect);
return {
top: (clippingClientRect.top - elementClientRect.top + paddingObject.top) / offsetScale.y,
bottom: (elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom) / offsetScale.y,
left: (clippingClientRect.left - elementClientRect.left + paddingObject.left) / offsetScale.x,
right: (elementClientRect.right - clippingClientRect.right + paddingObject.right) / offsetScale.x
};
}
var flip2 = function(options) {
if (options === void 0) {
options = {};
}
return {
name: "flip",
options,
async fn(state) {
var _middlewareData$arrow, _middlewareData$flip;
const {
placement,
middlewareData,
rects,
initialPlacement,
platform: platform2,
elements
} = state;
const {
mainAxis: checkMainAxis = true,
crossAxis: checkCrossAxis = true,
fallbackPlacements: specifiedFallbackPlacements,
fallbackStrategy = "bestFit",
fallbackAxisSideDirection = "none",
flipAlignment = true,
...detectOverflowOptions
} = evaluate(options, state);
if ((_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
return {};
}
const side = getSide(placement);
const isBasePlacement = getSide(initialPlacement) === initialPlacement;
const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating));
const fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipAlignment ? [getOppositePlacement2(initialPlacement)] : getExpandedPlacements(initialPlacement));
if (!specifiedFallbackPlacements && fallbackAxisSideDirection !== "none") {
fallbackPlacements.push(...getOppositeAxisPlacements(initialPlacement, flipAlignment, fallbackAxisSideDirection, rtl));
}
const placements3 = [initialPlacement, ...fallbackPlacements];
const overflow = await detectOverflow2(state, detectOverflowOptions);
const overflows = [];
let overflowsData = ((_middlewareData$flip = middlewareData.flip) == null ? void 0 : _middlewareData$flip.overflows) || [];
if (checkMainAxis) {
overflows.push(overflow[side]);
}
if (checkCrossAxis) {
const sides2 = getAlignmentSides(placement, rects, rtl);
overflows.push(overflow[sides2[0]], overflow[sides2[1]]);
}
overflowsData = [...overflowsData, {
placement,
overflows
}];
if (!overflows.every((side2) => side2 <= 0)) {
var _middlewareData$flip2, _overflowsData$filter;
const nextIndex = (((_middlewareData$flip2 = middlewareData.flip) == null ? void 0 : _middlewareData$flip2.index) || 0) + 1;
const nextPlacement = placements3[nextIndex];
if (nextPlacement) {
return {
data: {
index: nextIndex,
overflows: overflowsData
},
reset: {
placement: nextPlacement
}
};
}
let resetPlacement = (_overflowsData$filter = overflowsData.filter((d) => d.overflows[0] <= 0).sort((a, b) => a.overflows[1] - b.overflows[1])[0]) == null ? void 0 : _overflowsData$filter.placement;
if (!resetPlacement) {
switch (fallbackStrategy) {
case "bestFit": {
var _overflowsData$map$so;
const placement2 = (_overflowsData$map$so = overflowsData.map((d) => [d.placement, d.overflows.filter((overflow2) => overflow2 > 0).reduce((acc, overflow2) => acc + overflow2, 0)]).sort((a, b) => a[1] - b[1])[0]) == null ? void 0 : _overflowsData$map$so[0];
if (placement2) {
resetPlacement = placement2;
}
break;
}
case "initialPlacement":
resetPlacement = initialPlacement;
break;
}
}
if (placement !== resetPlacement) {
return {
reset: {
placement: resetPlacement
}
};
}
}
return {};
}
};
};
async function convertValueToCoords(state, options) {
const {
placement,
platform: platform2,
elements
} = state;
const rtl = await (platform2.isRTL == null ? void 0 : platform2.isRTL(elements.floating));
const side = getSide(placement);
const alignment = getAlignment(placement);
const isVertical = getSideAxis(placement) === "y";
const mainAxisMulti = ["left", "top"].includes(side) ? -1 : 1;
const crossAxisMulti = rtl && isVertical ? -1 : 1;
const rawValue = evaluate(options, state);
let {
mainAxis,
crossAxis,
alignmentAxis
} = typeof rawValue === "number" ? {
mainAxis: rawValue,
crossAxis: 0,
alignmentAxis: null
} : {
mainAxis: 0,
crossAxis: 0,
alignmentAxis: null,
...rawValue
};
if (alignment && typeof alignmentAxis === "number") {
crossAxis = alignment === "end" ? alignmentAxis * -1 : alignmentAxis;
}
return isVertical ? {
x: crossAxis * crossAxisMulti,
y: mainAxis * mainAxisMulti
} : {
x: mainAxis * mainAxisMulti,
y: crossAxis * crossAxisMulti
};
}
var offset2 = function(options) {
if (options === void 0) {
options = 0;
}
return {
name: "offset",
options,
async fn(state) {
var _middlewareData$offse, _middlewareData$arrow;
const {
x,
y,
placement,
middlewareData
} = state;
const diffCoords = await convertValueToCoords(state, options);
if (placement === ((_middlewareData$offse = middlewareData.offset) == null ? void 0 : _middlewareData$offse.placement) && (_middlewareData$arrow = middlewareData.arrow) != null && _middlewareData$arrow.alignmentOffset) {
return {};
}
return {
x: x + diffCoords.x,
y: y + diffCoords.y,
data: {
...diffCoords,
placement
}
};
}
};
};
var shift = function(options) {
if (options === void 0) {
options = {};
}
return {
name: "shift",
options,
async fn(state) {
const {
x,
y,
placement
} = state;
const {
mainAxis: checkMainAxis = true,
crossAxis: checkCrossAxis = false,
limiter = {
fn: (_ref) => {
let {
x: x2,
y: y2
} = _ref;
return {
x: x2,
y: y2
};
}
},
...detectOverflowOptions
} = evaluate(options, state);
const coords = {
x,
y
};
const overflow = await detectOverflow2(state, detectOverflowOptions);
const crossAxis = getSideAxis(getSide(placement));
const mainAxis = getOppositeAxis(crossAxis);
let mainAxisCoord = coords[mainAxis];
let crossAxisCoord = coords[crossAxis];
if (checkMainAxis) {
const minSide = mainAxis === "y" ? "top" : "left";
const maxSide = mainAxis === "y" ? "bottom" : "right";
const min3 = mainAxisCoord + overflow[minSide];
const max3 = mainAxisCoord - overflow[maxSide];
mainAxisCoord = clamp(min3, mainAxisCoord, max3);
}
if (checkCrossAxis) {
const minSide = crossAxis === "y" ? "top" : "left";
const maxSide = crossAxis === "y" ? "bottom" : "right";
const min3 = crossAxisCoord + overflow[minSide];
const max3 = crossAxisCoord - overflow[maxSide];
crossAxisCoord = clamp(min3, crossAxisCoord, max3);
}
const limitedCoords = limiter.fn({
...state,
[mainAxis]: mainAxisCoord,
[crossAxis]: crossAxisCoord
});
return {
...limitedCoords,
data: {
x: limitedCoords.x - x,
y: limitedCoords.y - y
}
};
}
};
};
// node_modules/@floating-ui/utils/dist/floating-ui.utils.dom.mjs
function getNodeName2(node) {
if (isNode(node)) {
return (node.nodeName || "").toLowerCase();
}
return "#document";
}
function getWindow2(node) {
var _node$ownerDocument;
return (node == null || (_node$ownerDocument = node.ownerDocument) == null ? void 0 : _node$ownerDocument.defaultView) || window;
}
function getDocumentElement2(node) {
var _ref;
return (_ref = (isNode(node) ? node.ownerDocument : node.document) || window.document) == null ? void 0 : _ref.documentElement;
}
function isNode(value) {
return value instanceof Node || value instanceof getWindow2(value).Node;
}
function isElement2(value) {
return value instanceof Element || value instanceof getWindow2(value).Element;
}
function isHTMLElement3(value) {
return value instanceof HTMLElement || value instanceof getWindow2(value).HTMLElement;
}
function isShadowRoot2(value) {
if (typeof ShadowRoot === "undefined") {
return false;
}
return value instanceof ShadowRoot || value instanceof getWindow2(value).ShadowRoot;
}
function isOverflowElement(element) {
const {
overflow,
overflowX,
overflowY,
display
} = getComputedStyle2(element);
return /auto|scroll|overlay|hidden|clip/.test(overflow + overflowY + overflowX) && !["inline", "contents"].includes(display);
}
function isTableElement2(element) {
return ["table", "td", "th"].includes(getNodeName2(element));
}
function isContainingBlock(element) {
const webkit = isWebKit();
const css2 = getComputedStyle2(element);
return css2.transform !== "none" || css2.perspective !== "none" || (css2.containerType ? css2.containerType !== "normal" : false) || !webkit && (css2.backdropFilter ? css2.backdropFilter !== "none" : false) || !webkit && (css2.filter ? css2.filter !== "none" : false) || ["transform", "perspective", "filter"].some((value) => (css2.willChange || "").includes(value)) || ["paint", "layout", "strict", "content"].some((value) => (css2.contain || "").includes(value));
}
function getContainingBlock2(element) {
let currentNode = getParentNode2(element);
while (isHTMLElement3(currentNode) && !isLastTraversableNode(currentNode)) {
if (isContainingBlock(currentNode)) {
return currentNode;
} else {
currentNode = getParentNode2(currentNode);
}
}
return null;
}
function isWebKit() {
if (typeof CSS === "undefined" || !CSS.supports)
return false;
return CSS.supports("-webkit-backdrop-filter", "none");
}
function isLastTraversableNode(node) {
return ["html", "body", "#document"].includes(getNodeName2(node));
}
function getComputedStyle2(element) {
return getWindow2(element).getComputedStyle(element);
}
function getNodeScroll2(element) {
if (isElement2(element)) {
return {
scrollLeft: element.scrollLeft,
scrollTop: element.scrollTop
};
}
return {
scrollLeft: element.pageXOffset,
scrollTop: element.pageYOffset
};
}
function getParentNode2(node) {
if (getNodeName2(node) === "html") {
return node;
}
const result = (
// Step into the shadow DOM of the parent of a slotted node.
node.assignedSlot || // DOM Element detected.
node.parentNode || // ShadowRoot detected.
isShadowRoot2(node) && node.host || // Fallback.
getDocumentElement2(node)
);
return isShadowRoot2(result) ? result.host : result;
}
function getNearestOverflowAncestor(node) {
const parentNode = getParentNode2(node);
if (isLastTraversableNode(parentNode)) {
return node.ownerDocument ? node.ownerDocument.body : node.body;
}
if (isHTMLElement3(parentNode) && isOverflowElement(parentNode)) {
return parentNode;
}
return getNearestOverflowAncestor(parentNode);
}
function getOverflowAncestors(node, list, traverseIframes) {
var _node$ownerDocument2;
if (list === void 0) {
list = [];
}
if (traverseIframes === void 0) {
traverseIframes = true;
}
const scrollableAncestor = getNearestOverflowAncestor(node);
const isBody = scrollableAncestor === ((_node$ownerDocument2 = node.ownerDocument) == null ? void 0 : _node$ownerDocument2.body);
const win = getWindow2(scrollableAncestor);
if (isBody) {
return list.concat(win, win.visualViewport || [], isOverflowElement(scrollableAncestor) ? scrollableAncestor : [], win.frameElement && traverseIframes ? getOverflowAncestors(win.frameElement) : []);
}
return list.concat(scrollableAncestor, getOverflowAncestors(scrollableAncestor, [], traverseIframes));
}
// node_modules/@floating-ui/dom/dist/floating-ui.dom.mjs
function getCssDimensions(element) {
const css2 = getComputedStyle2(element);
let width = parseFloat(css2.width) || 0;
let height = parseFloat(css2.height) || 0;
const hasOffset = isHTMLElement3(element);
const offsetWidth = hasOffset ? element.offsetWidth : width;
const offsetHeight = hasOffset ? element.offsetHeight : height;
const shouldFallback = round2(width) !== offsetWidth || round2(height) !== offsetHeight;
if (shouldFallback) {
width = offsetWidth;
height = offsetHeight;
}
return {
width,
height,
$: shouldFallback
};
}
function unwrapElement(element) {
return !isElement2(element) ? element.contextElement : element;
}
function getScale(element) {
const domElement = unwrapElement(element);
if (!isHTMLElement3(domElement)) {
return createCoords(1);
}
const rect = domElement.getBoundingClientRect();
const {
width,
height,
$
} = getCssDimensions(domElement);
let x = ($ ? round2(rect.width) : rect.width) / width;
let y = ($ ? round2(rect.height) : rect.height) / height;
if (!x || !Number.isFinite(x)) {
x = 1;
}
if (!y || !Number.isFinite(y)) {
y = 1;
}
return {
x,
y
};
}
var noOffsets = createCoords(0);
function getVisualOffsets(element) {
const win = getWindow2(element);
if (!isWebKit() || !win.visualViewport) {
return noOffsets;
}
return {
x: win.visualViewport.offsetLeft,
y: win.visualViewport.offsetTop
};
}
function shouldAddVisualOffsets(element, isFixed, floatingOffsetParent) {
if (isFixed === void 0) {
isFixed = false;
}
if (!floatingOffsetParent || isFixed && floatingOffsetParent !== getWindow2(element)) {
return false;
}
return isFixed;
}
function getBoundingClientRect2(element, includeScale, isFixedStrategy, offsetParent) {
if (includeScale === void 0) {
includeScale = false;
}
if (isFixedStrategy === void 0) {
isFixedStrategy = false;
}
const clientRect = element.getBoundingClientRect();
const domElement = unwrapElement(element);
let scale = createCoords(1);
if (includeScale) {
if (offsetParent) {
if (isElement2(offsetParent)) {
scale = getScale(offsetParent);
}
} else {
scale = getScale(element);
}
}
const visualOffsets = shouldAddVisualOffsets(domElement, isFixedStrategy, offsetParent) ? getVisualOffsets(domElement) : createCoords(0);
let x = (clientRect.left + visualOffsets.x) / scale.x;
let y = (clientRect.top + visualOffsets.y) / scale.y;
let width = clientRect.width / scale.x;
let height = clientRect.height / scale.y;
if (domElement) {
const win = getWindow2(domElement);
const offsetWin = offsetParent && isElement2(offsetParent) ? getWindow2(offsetParent) : offsetParent;
let currentWin = win;
let currentIFrame = currentWin.frameElement;
while (currentIFrame && offsetParent && offsetWin !== currentWin) {
const iframeScale = getScale(currentIFrame);
const iframeRect = currentIFrame.getBoundingClientRect();
const css2 = getComputedStyle2(currentIFrame);
const left2 = iframeRect.left + (currentIFrame.clientLeft + parseFloat(css2.paddingLeft)) * iframeScale.x;
const top2 = iframeRect.top + (currentIFrame.clientTop + parseFloat(css2.paddingTop)) * iframeScale.y;
x *= iframeScale.x;
y *= iframeScale.y;
width *= iframeScale.x;
height *= iframeScale.y;
x += left2;
y += top2;
currentWin = getWindow2(currentIFrame);
currentIFrame = currentWin.frameElement;
}
}
return rectToClientRect2({
width,
height,
x,
y
});
}
var topLayerSelectors = [":popover-open", ":modal"];
function isTopLayer(floating) {
return topLayerSelectors.some((selector) => {
try {
return floating.matches(selector);
} catch (e) {
return false;
}
});
}
function convertOffsetParentRelativeRectToViewportRelativeRect(_ref) {
let {
elements,
rect,
offsetParent,
strategy
} = _ref;
const isFixed = strategy === "fixed";
const documentElement = getDocumentElement2(offsetParent);
const topLayer = elements ? isTopLayer(elements.floating) : false;
if (offsetParent === documentElement || topLayer && isFixed) {
return rect;
}
let scroll = {
scrollLeft: 0,
scrollTop: 0
};
let scale = createCoords(1);
const offsets = createCoords(0);
const isOffsetParentAnElement = isHTMLElement3(offsetParent);
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
if (getNodeName2(offsetParent) !== "body" || isOverflowElement(documentElement)) {
scroll = getNodeScroll2(offsetParent);
}
if (isHTMLElement3(offsetParent)) {
const offsetRect = getBoundingClientRect2(offsetParent);
scale = getScale(offsetParent);
offsets.x = offsetRect.x + offsetParent.clientLeft;
offsets.y = offsetRect.y + offsetParent.clientTop;
}
}
return {
width: rect.width * scale.x,
height: rect.height * scale.y,
x: rect.x * scale.x - scroll.scrollLeft * scale.x + offsets.x,
y: rect.y * scale.y - scroll.scrollTop * scale.y + offsets.y
};
}
function getClientRects(element) {
return Array.from(element.getClientRects());
}
function getWindowScrollBarX2(element) {
return getBoundingClientRect2(getDocumentElement2(element)).left + getNodeScroll2(element).scrollLeft;
}
function getDocumentRect2(element) {
const html = getDocumentElement2(element);
const scroll = getNodeScroll2(element);
const body = element.ownerDocument.body;
const width = max2(html.scrollWidth, html.clientWidth, body.scrollWidth, body.clientWidth);
const height = max2(html.scrollHeight, html.clientHeight, body.scrollHeight, body.clientHeight);
let x = -scroll.scrollLeft + getWindowScrollBarX2(element);
const y = -scroll.scrollTop;
if (getComputedStyle2(body).direction === "rtl") {
x += max2(html.clientWidth, body.clientWidth) - width;
}
return {
width,
height,
x,
y
};
}
function getViewportRect2(element, strategy) {
const win = getWindow2(element);
const html = getDocumentElement2(element);
const visualViewport = win.visualViewport;
let width = html.clientWidth;
let height = html.clientHeight;
let x = 0;
let y = 0;
if (visualViewport) {
width = visualViewport.width;
height = visualViewport.height;
const visualViewportBased = isWebKit();
if (!visualViewportBased || visualViewportBased && strategy === "fixed") {
x = visualViewport.offsetLeft;
y = visualViewport.offsetTop;
}
}
return {
width,
height,
x,
y
};
}
function getInnerBoundingClientRect2(element, strategy) {
const clientRect = getBoundingClientRect2(element, true, strategy === "fixed");
const top2 = clientRect.top + element.clientTop;
const left2 = clientRect.left + element.clientLeft;
const scale = isHTMLElement3(element) ? getScale(element) : createCoords(1);
const width = element.clientWidth * scale.x;
const height = element.clientHeight * scale.y;
const x = left2 * scale.x;
const y = top2 * scale.y;
return {
width,
height,
x,
y
};
}
function getClientRectFromClippingAncestor(element, clippingAncestor, strategy) {
let rect;
if (clippingAncestor === "viewport") {
rect = getViewportRect2(element, strategy);
} else if (clippingAncestor === "document") {
rect = getDocumentRect2(getDocumentElement2(element));
} else if (isElement2(clippingAncestor)) {
rect = getInnerBoundingClientRect2(clippingAncestor, strategy);
} else {
const visualOffsets = getVisualOffsets(element);
rect = {
...clippingAncestor,
x: clippingAncestor.x - visualOffsets.x,
y: clippingAncestor.y - visualOffsets.y
};
}
return rectToClientRect2(rect);
}
function hasFixedPositionAncestor(element, stopNode) {
const parentNode = getParentNode2(element);
if (parentNode === stopNode || !isElement2(parentNode) || isLastTraversableNode(parentNode)) {
return false;
}
return getComputedStyle2(parentNode).position === "fixed" || hasFixedPositionAncestor(parentNode, stopNode);
}
function getClippingElementAncestors(element, cache) {
const cachedResult = cache.get(element);
if (cachedResult) {
return cachedResult;
}
let result = getOverflowAncestors(element, [], false).filter((el) => isElement2(el) && getNodeName2(el) !== "body");
let currentContainingBlockComputedStyle = null;
const elementIsFixed = getComputedStyle2(element).position === "fixed";
let currentNode = elementIsFixed ? getParentNode2(element) : element;
while (isElement2(currentNode) && !isLastTraversableNode(currentNode)) {
const computedStyle = getComputedStyle2(currentNode);
const currentNodeIsContaining = isContainingBlock(currentNode);
if (!currentNodeIsContaining && computedStyle.position === "fixed") {
currentContainingBlockComputedStyle = null;
}
const shouldDropCurrentNode = elementIsFixed ? !currentNodeIsContaining && !currentContainingBlockComputedStyle : !currentNodeIsContaining && computedStyle.position === "static" && !!currentContainingBlockComputedStyle && ["absolute", "fixed"].includes(currentContainingBlockComputedStyle.position) || isOverflowElement(currentNode) && !currentNodeIsContaining && hasFixedPositionAncestor(element, currentNode);
if (shouldDropCurrentNode) {
result = result.filter((ancestor) => ancestor !== currentNode);
} else {
currentContainingBlockComputedStyle = computedStyle;
}
currentNode = getParentNode2(currentNode);
}
cache.set(element, result);
return result;
}
function getClippingRect2(_ref) {
let {
element,
boundary,
rootBoundary,
strategy
} = _ref;
const elementClippingAncestors = boundary === "clippingAncestors" ? getClippingElementAncestors(element, this._c) : [].concat(boundary);
const clippingAncestors = [...elementClippingAncestors, rootBoundary];
const firstClippingAncestor = clippingAncestors[0];
const clippingRect = clippingAncestors.reduce((accRect, clippingAncestor) => {
const rect = getClientRectFromClippingAncestor(element, clippingAncestor, strategy);
accRect.top = max2(rect.top, accRect.top);
accRect.right = min2(rect.right, accRect.right);
accRect.bottom = min2(rect.bottom, accRect.bottom);
accRect.left = max2(rect.left, accRect.left);
return accRect;
}, getClientRectFromClippingAncestor(element, firstClippingAncestor, strategy));
return {
width: clippingRect.right - clippingRect.left,
height: clippingRect.bottom - clippingRect.top,
x: clippingRect.left,
y: clippingRect.top
};
}
function getDimensions(element) {
const {
width,
height
} = getCssDimensions(element);
return {
width,
height
};
}
function getRectRelativeToOffsetParent(element, offsetParent, strategy) {
const isOffsetParentAnElement = isHTMLElement3(offsetParent);
const documentElement = getDocumentElement2(offsetParent);
const isFixed = strategy === "fixed";
const rect = getBoundingClientRect2(element, true, isFixed, offsetParent);
let scroll = {
scrollLeft: 0,
scrollTop: 0
};
const offsets = createCoords(0);
if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {
if (getNodeName2(offsetParent) !== "body" || isOverflowElement(documentElement)) {
scroll = getNodeScroll2(offsetParent);
}
if (isOffsetParentAnElement) {
const offsetRect = getBoundingClientRect2(offsetParent, true, isFixed, offsetParent);
offsets.x = offsetRect.x + offsetParent.clientLeft;
offsets.y = offsetRect.y + offsetParent.clientTop;
} else if (documentElement) {
offsets.x = getWindowScrollBarX2(documentElement);
}
}
const x = rect.left + scroll.scrollLeft - offsets.x;
const y = rect.top + scroll.scrollTop - offsets.y;
return {
x,
y,
width: rect.width,
height: rect.height
};
}
function getTrueOffsetParent2(element, polyfill) {
if (!isHTMLElement3(element) || getComputedStyle2(element).position === "fixed") {
return null;
}
if (polyfill) {
return polyfill(element);
}
return element.offsetParent;
}
function getOffsetParent2(element, polyfill) {
const window2 = getWindow2(element);
if (!isHTMLElement3(element) || isTopLayer(element)) {
return window2;
}
let offsetParent = getTrueOffsetParent2(element, polyfill);
while (offsetParent && isTableElement2(offsetParent) && getComputedStyle2(offsetParent).position === "static") {
offsetParent = getTrueOffsetParent2(offsetParent, polyfill);
}
if (offsetParent && (getNodeName2(offsetParent) === "html" || getNodeName2(offsetParent) === "body" && getComputedStyle2(offsetParent).position === "static" && !isContainingBlock(offsetParent))) {
return window2;
}
return offsetParent || getContainingBlock2(element) || window2;
}
var getElementRects = async function(data) {
const getOffsetParentFn = this.getOffsetParent || getOffsetParent2;
const getDimensionsFn = this.getDimensions;
return {
reference: getRectRelativeToOffsetParent(data.reference, await getOffsetParentFn(data.floating), data.strategy),
floating: {
x: 0,
y: 0,
...await getDimensionsFn(data.floating)
}
};
};
function isRTL(element) {
return getComputedStyle2(element).direction === "rtl";
}
var platform = {
convertOffsetParentRelativeRectToViewportRelativeRect,
getDocumentElement: getDocumentElement2,
getClippingRect: getClippingRect2,
getOffsetParent: getOffsetParent2,
getElementRects,
getClientRects,
getDimensions,
getScale,
isElement: isElement2,
isRTL
};
function observeMove(element, onMove) {
let io = null;
let timeoutId;
const root = getDocumentElement2(element);
function cleanup() {
var _io;
clearTimeout(timeoutId);
(_io = io) == null || _io.disconnect();
io = null;
}
function refresh(skip, threshold) {
if (skip === void 0) {
skip = false;
}
if (threshold === void 0) {
threshold = 1;
}
cleanup();
const {
left: left2,
top: top2,
width,
height
} = element.getBoundingClientRect();
if (!skip) {
onMove();
}
if (!width || !height) {
return;
}
const insetTop = floor(top2);
const insetRight = floor(root.clientWidth - (left2 + width));
const insetBottom = floor(root.clientHeight - (top2 + height));
const insetLeft = floor(left2);
const rootMargin = -insetTop + "px " + -insetRight + "px " + -insetBottom + "px " + -insetLeft + "px";
const options = {
rootMargin,
threshold: max2(0, min2(1, threshold)) || 1
};
let isFirstUpdate = true;
function handleObserve(entries) {
const ratio = entries[0].intersectionRatio;
if (ratio !== threshold) {
if (!isFirstUpdate) {
return refresh();
}
if (!ratio) {
timeoutId = setTimeout(() => {
refresh(false, 1e-7);
}, 100);
} else {
refresh(false, ratio);
}
}
isFirstUpdate = false;
}
try {
io = new IntersectionObserver(handleObserve, {
...options,
// Handle <iframe>s
root: root.ownerDocument
});
} catch (e) {
io = new IntersectionObserver(handleObserve, options);
}
io.observe(element);
}
refresh(true);
return cleanup;
}
function autoUpdate(reference2, floating, update, options) {
if (options === void 0) {
options = {};
}
const {
ancestorScroll = true,
ancestorResize = true,
elementResize = typeof ResizeObserver === "function",
layoutShift = typeof IntersectionObserver === "function",
animationFrame = false
} = options;
const referenceEl = unwrapElement(reference2);
const ancestors = ancestorScroll || ancestorResize ? [...referenceEl ? getOverflowAncestors(referenceEl) : [], ...getOverflowAncestors(floating)] : [];
ancestors.forEach((ancestor) => {
ancestorScroll && ancestor.addEventListener("scroll", update, {
passive: true
});
ancestorResize && ancestor.addEventListener("resize", update);
});
const cleanupIo = referenceEl && layoutShift ? observeMove(referenceEl, update) : null;
let reobserveFrame = -1;
let resizeObserver = null;
if (elementResize) {
resizeObserver = new ResizeObserver((_ref) => {
let [firstEntry] = _ref;
if (firstEntry && firstEntry.target === referenceEl && resizeObserver) {
resizeObserver.unobserve(floating);
cancelAnimationFrame(reobserveFrame);
reobserveFrame = requestAnimationFrame(() => {
var _resizeObserver;
(_resizeObserver = resizeObserver) == null || _resizeObserver.observe(floating);
});
}
update();
});
if (referenceEl && !animationFrame) {
resizeObserver.observe(referenceEl);
}
resizeObserver.observe(floating);
}
let frameId;
let prevRefRect = animationFrame ? getBoundingClientRect2(reference2) : null;
if (animationFrame) {
frameLoop();
}
function frameLoop() {
const nextRefRect = getBoundingClientRect2(reference2);
if (prevRefRect && (nextRefRect.x !== prevRefRect.x || nextRefRect.y !== prevRefRect.y || nextRefRect.width !== prevRefRect.width || nextRefRect.height !== prevRefRect.height)) {
update();
}
prevRefRect = nextRefRect;
frameId = requestAnimationFrame(frameLoop);
}
update();
return () => {
var _resizeObserver2;
ancestors.forEach((ancestor) => {
ancestorScroll && ancestor.removeEventListener("scroll", update);
ancestorResize && ancestor.removeEventListener("resize", update);
});
cleanupIo == null || cleanupIo();
(_resizeObserver2 = resizeObserver) == null || _resizeObserver2.disconnect();
resizeObserver = null;
if (animationFrame) {
cancelAnimationFrame(frameId);
}
};
}
var shift2 = shift;
var flip3 = flip2;
var computePosition2 = (reference2, floating, options) => {
const cache = /* @__PURE__ */ new Map();
const mergedOptions = {
platform,
...options
};
const platformWithCache = {
...mergedOptions.platform,
_c: cache
};
return computePosition(reference2, floating, {
...mergedOptions,
platform: platformWithCache
});
};
// node_modules/@floating-ui/react-dom/dist/floating-ui.react-dom.mjs
var React34 = __toESM(require_react(), 1);
var import_react = __toESM(require_react(), 1);
var ReactDOM2 = __toESM(require_react_dom(), 1);
var index = typeof document !== "undefined" ? import_react.useLayoutEffect : import_react.useEffect;
function deepEqual(a, b) {
if (a === b) {
return true;
}
if (typeof a !== typeof b) {
return false;
}
if (typeof a === "function" && a.toString() === b.toString()) {
return true;
}
let length;
let i;
let keys;
if (a && b && typeof a === "object") {
if (Array.isArray(a)) {
length = a.length;
if (length !== b.length)
return false;
for (i = length; i-- !== 0; ) {
if (!deepEqual(a[i], b[i])) {
return false;
}
}
return true;
}
keys = Object.keys(a);
length = keys.length;
if (length !== Object.keys(b).length) {
return false;
}
for (i = length; i-- !== 0; ) {
if (!{}.hasOwnProperty.call(b, keys[i])) {
return false;
}
}
for (i = length; i-- !== 0; ) {
const key = keys[i];
if (key === "_owner" && a.$$typeof) {
continue;
}
if (!deepEqual(a[key], b[key])) {
return false;
}
}
return true;
}
return a !== a && b !== b;
}
function getDPR(element) {
if (typeof window === "undefined") {
return 1;
}
const win = element.ownerDocument.defaultView || window;
return win.devicePixelRatio || 1;
}
function roundByDPR(element, value) {
const dpr = getDPR(element);
return Math.round(value * dpr) / dpr;
}
function useLatestRef(value) {
const ref = React34.useRef(value);
index(() => {
ref.current = value;
});
return ref;
}
function useFloating(options) {
if (options === void 0) {
options = {};
}
const {
placement = "bottom",
strategy = "absolute",
middleware = [],
platform: platform2,
elements: {
reference: externalReference,
floating: externalFloating
} = {},
transform = true,
whileElementsMounted,
open
} = options;
const [data, setData] = React34.useState({
x: 0,
y: 0,
strategy,
placement,
middlewareData: {},
isPositioned: false
});
const [latestMiddleware, setLatestMiddleware] = React34.useState(middleware);
if (!deepEqual(latestMiddleware, middleware)) {
setLatestMiddleware(middleware);
}
const [_reference, _setReference] = React34.useState(null);
const [_floating, _setFloating] = React34.useState(null);
const setReference = React34.useCallback((node) => {
if (node !== referenceRef.current) {
referenceRef.current = node;
_setReference(node);
}
}, []);
const setFloating = React34.useCallback((node) => {
if (node !== floatingRef.current) {
floatingRef.current = node;
_setFloating(node);
}
}, []);
const referenceEl = externalReference || _reference;
const floatingEl = externalFloating || _floating;
const referenceRef = React34.useRef(null);
const floatingRef = React34.useRef(null);
const dataRef = React34.useRef(data);
const hasWhileElementsMounted = whileElementsMounted != null;
const whileElementsMountedRef = useLatestRef(whileElementsMounted);
const platformRef = useLatestRef(platform2);
const update = React34.useCallback(() => {
if (!referenceRef.current || !floatingRef.current) {
return;
}
const config = {
placement,
strategy,
middleware: latestMiddleware
};
if (platformRef.current) {
config.platform = platformRef.current;
}
computePosition2(referenceRef.current, floatingRef.current, config).then((data2) => {
const fullData = {
...data2,
isPositioned: true
};
if (isMountedRef.current && !deepEqual(dataRef.current, fullData)) {
dataRef.current = fullData;
ReactDOM2.flushSync(() => {
setData(fullData);
});
}
});
}, [latestMiddleware, placement, strategy, platformRef]);
index(() => {
if (open === false && dataRef.current.isPositioned) {
dataRef.current.isPositioned = false;
setData((data2) => ({
...data2,
isPositioned: false
}));
}
}, [open]);
const isMountedRef = React34.useRef(false);
index(() => {
isMountedRef.current = true;
return () => {
isMountedRef.current = false;
};
}, []);
index(() => {
if (referenceEl)
referenceRef.current = referenceEl;
if (floatingEl)
floatingRef.current = floatingEl;
if (referenceEl && floatingEl) {
if (whileElementsMountedRef.current) {
return whileElementsMountedRef.current(referenceEl, floatingEl, update);
}
update();
}
}, [referenceEl, floatingEl, update, whileElementsMountedRef, hasWhileElementsMounted]);
const refs = React34.useMemo(() => ({
reference: referenceRef,
floating: floatingRef,
setReference,
setFloating
}), [setReference, setFloating]);
const elements = React34.useMemo(() => ({
reference: referenceEl,
floating: floatingEl
}), [referenceEl, floatingEl]);
const floatingStyles = React34.useMemo(() => {
const initialStyles = {
position: strategy,
left: 0,
top: 0
};
if (!elements.floating) {
return initialStyles;
}
const x = roundByDPR(elements.floating, data.x);
const y = roundByDPR(elements.floating, data.y);
if (transform) {
return {
...initialStyles,
transform: "translate(" + x + "px, " + y + "px)",
...getDPR(elements.floating) >= 1.5 && {
willChange: "transform"
}
};
}
return {
position: strategy,
left: x,
top: y
};
}, [strategy, transform, elements.floating, data.x, data.y]);
return React34.useMemo(() => ({
...data,
update,
refs,
elements,
floatingStyles
}), [data, update, refs, elements, floatingStyles]);
}
// node_modules/@mui/base/Unstable_Popup/Popup.js
init_utils();
// node_modules/@mui/base/Unstable_Popup/popupClasses.js
var COMPONENT_NAME7 = "Popup";
function getPopupUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME7, slot);
}
var popupClasses = generateUtilityClasses2(COMPONENT_NAME7, ["root", "open"]);
// node_modules/@mui/base/useTransition/useTransitionStateManager.js
var React36 = __toESM(require_react());
// node_modules/@mui/base/useTransition/TransitionContext.js
var React35 = __toESM(require_react());
var TransitionContext = React35.createContext(null);
if (true) {
TransitionContext.displayName = "TransitionContext";
}
// node_modules/@mui/base/useTransition/useTransitionStateManager.js
function useTransitionStateManager() {
const transitionContext = React36.useContext(TransitionContext);
if (!transitionContext) {
throw new Error("Missing transition context");
}
const {
registerTransition,
requestedEnter,
onExited
} = transitionContext;
React36.useEffect(() => {
return registerTransition();
}, [registerTransition]);
return {
onExited,
requestedEnter
};
}
// node_modules/@mui/base/useTransition/useTransitionTrigger.js
var React37 = __toESM(require_react());
function useTransitionTrigger(requestEnter) {
const [exitTransitionFinished, setExitTransitionFinished] = React37.useState(true);
const hasPendingExitTransition = React37.useRef(false);
const registeredTransitions = React37.useRef(0);
const [hasTransition, setHasTransition] = React37.useState(false);
const previousRequestEnter = React37.useRef(requestEnter);
React37.useEffect(() => {
if (!requestEnter && // checking registeredTransitions.current instead of hasTransition to avoid this effect re-firing whenever hasTransition changes
registeredTransitions.current > 0 && // prevents waiting for a pending transition right after mounting
previousRequestEnter.current !== requestEnter) {
hasPendingExitTransition.current = true;
setExitTransitionFinished(false);
}
previousRequestEnter.current = requestEnter;
}, [requestEnter]);
const handleExited = React37.useCallback(() => {
hasPendingExitTransition.current = false;
setExitTransitionFinished(true);
}, []);
const registerTransition = React37.useCallback(() => {
registeredTransitions.current += 1;
setHasTransition(true);
return () => {
registeredTransitions.current -= 1;
if (registeredTransitions.current === 0) {
setHasTransition(false);
}
};
}, []);
let hasExited;
if (!hasTransition) {
hasExited = !requestEnter;
} else if (requestEnter) {
hasExited = false;
} else {
hasExited = !hasPendingExitTransition.current && exitTransitionFinished;
}
const contextValue = React37.useMemo(() => ({
requestedEnter: requestEnter,
onExited: handleExited,
registerTransition,
hasExited
}), [handleExited, requestEnter, registerTransition, hasExited]);
return {
contextValue,
hasExited
};
}
// node_modules/@mui/base/Unstable_Popup/PopupContext.js
var React38 = __toESM(require_react());
var PopupContext = React38.createContext(null);
if (true) {
PopupContext.displayName = "PopupContext";
}
// node_modules/@mui/base/Unstable_Popup/Popup.js
var import_jsx_runtime22 = __toESM(require_jsx_runtime());
var _excluded10 = ["anchor", "children", "container", "disablePortal", "keepMounted", "middleware", "offset", "open", "placement", "slotProps", "slots", "strategy"];
function useUtilityClasses8(ownerState) {
const {
open
} = ownerState;
const slots = {
root: ["root", open && "open"]
};
return composeClasses(slots, useClassNamesOverride(getPopupUtilityClass));
}
function resolveAnchor(anchor) {
return typeof anchor === "function" ? anchor() : anchor;
}
var Popup = React39.forwardRef(function Popup2(props, forwardedRef) {
var _slots$root;
const {
anchor: anchorProp,
children,
container,
disablePortal = false,
keepMounted = false,
middleware,
offset: offsetProp = 0,
open = false,
placement = "bottom",
slotProps = {},
slots = {},
strategy = "absolute"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded10);
const {
refs,
elements,
floatingStyles,
update,
placement: finalPlacement
} = useFloating({
elements: {
reference: resolveAnchor(anchorProp)
},
open,
middleware: middleware != null ? middleware : [offset2(offsetProp != null ? offsetProp : 0), flip3(), shift2()],
placement,
strategy,
whileElementsMounted: !keepMounted ? autoUpdate : void 0
});
const handleRef = useForkRef(refs.setFloating, forwardedRef);
useEnhancedEffect_default(() => {
if (keepMounted && open && elements.reference && elements.floating) {
const cleanup = autoUpdate(elements.reference, elements.floating, update);
return cleanup;
}
return void 0;
}, [keepMounted, open, elements, update]);
const ownerState = _extends({}, props, {
disablePortal,
keepMounted,
offset: offset2,
open,
placement,
finalPlacement,
strategy
});
const {
contextValue,
hasExited: hasTransitionExited
} = useTransitionTrigger(open);
const visibility = keepMounted && hasTransitionExited ? "hidden" : void 0;
const classes = useUtilityClasses8(ownerState);
const Root = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : "div";
const rootProps = useSlotProps({
elementType: Root,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
ownerState,
className: classes.root,
additionalProps: {
ref: handleRef,
role: "tooltip",
style: _extends({}, floatingStyles, {
visibility
})
}
});
const popupContextValue = React39.useMemo(() => ({
placement: finalPlacement
}), [finalPlacement]);
const shouldRender = keepMounted || !hasTransitionExited;
if (!shouldRender) {
return null;
}
return (0, import_jsx_runtime22.jsx)(Portal, {
disablePortal,
container,
children: (0, import_jsx_runtime22.jsx)(PopupContext.Provider, {
value: popupContextValue,
children: (0, import_jsx_runtime22.jsx)(TransitionContext.Provider, {
value: contextValue,
children: (0, import_jsx_runtime22.jsx)(Root, _extends({}, rootProps, {
children
}))
})
})
});
});
true ? Popup.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* An HTML element, [virtual element](https://floating-ui.com/docs/virtual-elements),
* or a function that returns either.
* It's used to set the position of the popup.
*/
anchor: import_prop_types15.default.oneOfType([HTMLElementType, import_prop_types15.default.object, import_prop_types15.default.func]),
/**
* @ignore
*/
children: import_prop_types15.default.oneOfType([import_prop_types15.default.node, import_prop_types15.default.func]),
/**
* An HTML element or function that returns one. The container will have the portal children appended to it.
* By default, it uses the body of the top-level document object, so it's `document.body` in these cases.
*/
container: import_prop_types15.default.oneOfType([HTMLElementType, import_prop_types15.default.func]),
/**
* If `true`, the popup will be rendered where it is defined, without the use of portals.
* @default false
*/
disablePortal: import_prop_types15.default.bool,
/**
* If `true`, the popup will exist in the DOM even if it's closed.
* Its visibility will be controlled by the `visibility` CSS property.
*
* Otherwise, a closed popup will be removed from the DOM.
*
* @default false
*/
keepMounted: import_prop_types15.default.bool,
/**
* Collection of Floating UI middleware to use when positioning the popup.
* If not provided, the [`offset`](https://floating-ui.com/docs/offset)
* and [`flip`](https://floating-ui.com/docs/flip) functions will be used.
*
* @see https://floating-ui.com/docs/computePosition#middleware
*/
middleware: import_prop_types15.default.arrayOf(import_prop_types15.default.oneOfType([import_prop_types15.default.oneOf([false]), import_prop_types15.default.shape({
fn: import_prop_types15.default.func.isRequired,
name: import_prop_types15.default.string.isRequired,
options: import_prop_types15.default.any
})])),
/**
* Distance between a popup and the trigger element.
* This prop is ignored when custom `middleware` is provided.
*
* @default 0
* @see https://floating-ui.com/docs/offset
*/
offset: import_prop_types15.default.oneOfType([import_prop_types15.default.func, import_prop_types15.default.number, import_prop_types15.default.shape({
alignmentAxis: import_prop_types15.default.number,
crossAxis: import_prop_types15.default.number,
mainAxis: import_prop_types15.default.number
})]),
/**
* If `true`, the popup is visible.
*
* @default false
*/
open: import_prop_types15.default.bool,
/**
* Determines where to place the popup relative to the trigger element.
*
* @default 'bottom'
* @see https://floating-ui.com/docs/computePosition#placement
*/
placement: import_prop_types15.default.oneOf(["bottom-end", "bottom-start", "bottom", "left-end", "left-start", "left", "right-end", "right-start", "right", "top-end", "top-start", "top"]),
/**
* The props used for each slot inside the Popup.
*
* @default {}
*/
slotProps: import_prop_types15.default.shape({
root: import_prop_types15.default.oneOfType([import_prop_types15.default.func, import_prop_types15.default.object])
}),
/**
* The components used for each slot inside the Popup.
* Either a string to use a HTML element or a component.
*
* @default {}
*/
slots: import_prop_types15.default.shape({
root: import_prop_types15.default.elementType
}),
/**
* The type of CSS position property to use (absolute or fixed).
*
* @default 'absolute'
* @see https://floating-ui.com/docs/computePosition#strategy
*/
strategy: import_prop_types15.default.oneOf(["absolute", "fixed"])
} : void 0;
// node_modules/@mui/base/Menu/Menu.js
var import_jsx_runtime23 = __toESM(require_jsx_runtime());
var _excluded11 = ["actions", "anchor", "children", "onItemsChange", "slotProps", "slots"];
function useUtilityClasses9(ownerState) {
const {
open
} = ownerState;
const slots = {
root: ["root", open && "expanded"],
listbox: ["listbox", open && "expanded"]
};
return composeClasses(slots, useClassNamesOverride(getMenuUtilityClass));
}
var Menu = React40.forwardRef(function Menu2(props, forwardedRef) {
var _slots$root, _slots$listbox;
const {
actions,
anchor: anchorProp,
children,
onItemsChange,
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded11);
const {
contextValue,
getListboxProps,
dispatch,
open,
triggerElement
} = useMenu({
onItemsChange,
componentName: "Menu"
});
const anchor = anchorProp != null ? anchorProp : triggerElement;
React40.useImperativeHandle(actions, () => ({
dispatch,
resetHighlight: () => dispatch({
type: ListActionTypes.resetHighlight,
event: null
})
}), [dispatch]);
const ownerState = _extends({}, props, {
open
});
const classes = useUtilityClasses9(ownerState);
const Root = (_slots$root = slots.root) != null ? _slots$root : "div";
const rootProps = useSlotProps({
elementType: Root,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
additionalProps: {
ref: forwardedRef,
role: void 0
},
className: classes.root,
ownerState
});
const Listbox = (_slots$listbox = slots.listbox) != null ? _slots$listbox : "ul";
const listboxProps = useSlotProps({
elementType: Listbox,
getSlotProps: getListboxProps,
externalSlotProps: slotProps.listbox,
className: classes.listbox,
ownerState
});
if (open === true && anchor == null) {
return (0, import_jsx_runtime23.jsx)(Root, _extends({}, rootProps, {
children: (0, import_jsx_runtime23.jsx)(Listbox, _extends({}, listboxProps, {
children: (0, import_jsx_runtime23.jsx)(MenuProvider, {
value: contextValue,
children
})
}))
}));
}
return (0, import_jsx_runtime23.jsx)(Popup, _extends({
keepMounted: true
}, rootProps, {
open,
anchor,
slots: {
root: Root
},
children: (0, import_jsx_runtime23.jsx)(Listbox, _extends({}, listboxProps, {
children: (0, import_jsx_runtime23.jsx)(MenuProvider, {
value: contextValue,
children
})
}))
}));
});
true ? Menu.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* A ref with imperative actions that can be performed on the menu.
*/
actions: refType_default,
/**
* The element based on which the menu is positioned.
*/
anchor: import_prop_types16.default.oneOfType([HTMLElementType, import_prop_types16.default.object, import_prop_types16.default.func]),
/**
* @ignore
*/
children: import_prop_types16.default.node,
/**
* @ignore
*/
className: import_prop_types16.default.string,
/**
* Function called when the items displayed in the menu change.
*/
onItemsChange: import_prop_types16.default.func,
/**
* The props used for each slot inside the Menu.
* @default {}
*/
slotProps: import_prop_types16.default.shape({
listbox: import_prop_types16.default.oneOfType([import_prop_types16.default.func, import_prop_types16.default.object]),
root: import_prop_types16.default.oneOfType([import_prop_types16.default.func, import_prop_types16.default.object])
}),
/**
* The components used for each slot inside the Menu.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types16.default.shape({
listbox: import_prop_types16.default.elementType,
root: import_prop_types16.default.elementType
})
} : void 0;
// node_modules/@mui/base/MenuButton/MenuButton.js
init_extends();
init_objectWithoutPropertiesLoose();
var React42 = __toESM(require_react());
var import_prop_types17 = __toESM(require_prop_types());
// node_modules/@mui/base/useMenuButton/useMenuButton.js
init_extends();
var React41 = __toESM(require_react());
init_utils();
function useMenuButton(parameters = {}) {
const {
disabled = false,
focusableWhenDisabled,
rootRef: externalRef
} = parameters;
const menuContext = React41.useContext(DropdownContext);
if (menuContext === null) {
throw new Error("useMenuButton: no menu context available.");
}
const {
state,
dispatch,
registerTrigger,
popupId
} = menuContext;
const {
getRootProps: getButtonRootProps,
rootRef: buttonRootRef,
active
} = useButton({
disabled,
focusableWhenDisabled,
rootRef: externalRef
});
const handleRef = useForkRef(buttonRootRef, registerTrigger);
const createHandleClick = (otherHandlers) => (event) => {
var _otherHandlers$onClic;
(_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);
if (event.defaultMuiPrevented) {
return;
}
dispatch({
type: DropdownActionTypes.toggle,
event
});
};
const createHandleKeyDown = (otherHandlers) => (event) => {
var _otherHandlers$onKeyD;
(_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);
if (event.defaultMuiPrevented) {
return;
}
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
event.preventDefault();
dispatch({
type: DropdownActionTypes.open,
event
});
}
};
const getOwnRootProps = (otherHandlers = {}) => ({
onClick: createHandleClick(otherHandlers),
onKeyDown: createHandleKeyDown(otherHandlers)
});
const getRootProps = (externalProps = {}) => {
const externalEventHandlers = extractEventHandlers(externalProps);
const getCombinedProps = combineHooksSlotProps(getOwnRootProps, getButtonRootProps);
return _extends({
"aria-haspopup": "menu",
"aria-expanded": state.open,
"aria-controls": popupId
}, externalProps, externalEventHandlers, getCombinedProps(externalEventHandlers), {
tabIndex: 0,
// this is needed to make the button focused after click in Safari
ref: handleRef
});
};
return {
active,
getRootProps,
open: state.open,
rootRef: handleRef
};
}
// node_modules/@mui/base/MenuButton/menuButtonClasses.js
var COMPONENT_NAME8 = "MenuButton";
function getMenuButtonUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME8, slot);
}
var menuButtonClasses = generateUtilityClasses2(COMPONENT_NAME8, ["root", "active", "disabled", "expanded"]);
// node_modules/@mui/base/MenuButton/MenuButton.js
var import_jsx_runtime24 = __toESM(require_jsx_runtime());
var _excluded12 = ["children", "disabled", "label", "slots", "slotProps", "focusableWhenDisabled"];
var useUtilityClasses10 = (ownerState) => {
const {
active,
disabled,
open
} = ownerState;
const slots = {
root: ["root", disabled && "disabled", active && "active", open && "expanded"]
};
return composeClasses(slots, useClassNamesOverride(getMenuButtonUtilityClass));
};
var MenuButton = React42.forwardRef(function MenuButton2(props, forwardedRef) {
const {
children,
disabled = false,
slots = {},
slotProps = {},
focusableWhenDisabled = false
} = props, other = _objectWithoutPropertiesLoose(props, _excluded12);
const {
getRootProps,
open,
active
} = useMenuButton({
disabled,
focusableWhenDisabled,
rootRef: forwardedRef
});
const ownerState = _extends({}, props, {
open,
active,
disabled,
focusableWhenDisabled
});
const classes = useUtilityClasses10(ownerState);
const Root = slots.root || "button";
const rootProps = useSlotProps({
elementType: Root,
getSlotProps: getRootProps,
externalForwardedProps: other,
externalSlotProps: slotProps.root,
additionalProps: {
ref: forwardedRef,
type: "button"
},
ownerState,
className: classes.root
});
return (0, import_jsx_runtime24.jsx)(Root, _extends({}, rootProps, {
children
}));
});
true ? MenuButton.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* @ignore
*/
children: import_prop_types17.default.node,
/**
* Class name applied to the root element.
*/
className: import_prop_types17.default.string,
/**
* If `true`, the component is disabled.
* @default false
*/
disabled: import_prop_types17.default.bool,
/**
* If `true`, allows a disabled button to receive focus.
* @default false
*/
focusableWhenDisabled: import_prop_types17.default.bool,
/**
* Label of the button
*/
label: import_prop_types17.default.string,
/**
* The components used for each slot inside the MenuButton.
* Either a string to use a HTML element or a component.
* @default {}
*/
slotProps: import_prop_types17.default.shape({
root: import_prop_types17.default.oneOfType([import_prop_types17.default.func, import_prop_types17.default.object])
}),
/**
* The props used for each slot inside the MenuButton.
* @default {}
*/
slots: import_prop_types17.default.shape({
root: import_prop_types17.default.elementType
})
} : void 0;
// node_modules/@mui/base/MenuItem/MenuItem.js
init_extends();
init_objectWithoutPropertiesLoose();
var React45 = __toESM(require_react());
var import_prop_types18 = __toESM(require_prop_types());
// node_modules/@mui/base/MenuItem/menuItemClasses.js
var COMPONENT_NAME9 = "MenuItem";
function getMenuItemUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME9, slot);
}
var menuItemClasses = generateUtilityClasses2(COMPONENT_NAME9, ["root", "disabled", "focusVisible"]);
// node_modules/@mui/base/useMenuItem/useMenuItem.js
init_extends();
var React43 = __toESM(require_react());
init_utils();
function idGenerator(existingKeys) {
return `menu-item-${existingKeys.size}`;
}
var FALLBACK_MENU_CONTEXT2 = {
dispatch: () => {
},
popupId: "",
registerPopup: () => {
},
registerTrigger: () => {
},
state: {
open: true,
changeReason: null
},
triggerElement: null
};
function useMenuItem(params) {
var _React$useContext;
const {
disabled = false,
id: idParam,
rootRef: externalRef,
label,
disableFocusOnHover = false
} = params;
const id = useId(idParam);
const itemRef = React43.useRef(null);
const itemMetadata = React43.useMemo(() => ({
disabled,
id: id != null ? id : "",
label,
ref: itemRef
}), [disabled, id, label]);
const {
dispatch
} = (_React$useContext = React43.useContext(DropdownContext)) != null ? _React$useContext : FALLBACK_MENU_CONTEXT2;
const {
getRootProps: getListRootProps,
highlighted
} = useListItem({
item: id,
handlePointerOverEvents: !disableFocusOnHover
});
const {
index: index2,
totalItemCount
} = useCompoundItem(id != null ? id : idGenerator, itemMetadata);
const {
getRootProps: getButtonProps,
focusVisible,
rootRef: buttonRefHandler
} = useButton({
disabled,
focusableWhenDisabled: true
});
const handleRef = useForkRef(buttonRefHandler, externalRef, itemRef);
React43.useDebugValue({
id,
highlighted,
disabled,
label
});
const createHandleClick = (otherHandlers) => (event) => {
var _otherHandlers$onClic;
(_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);
if (event.defaultMuiPrevented) {
return;
}
dispatch({
type: DropdownActionTypes.close,
event
});
};
const getOwnHandlers = (otherHandlers = {}) => _extends({}, otherHandlers, {
onClick: createHandleClick(otherHandlers)
});
function getRootProps(externalProps = {}) {
const externalEventHandlers = extractEventHandlers(externalProps);
const getCombinedRootProps = combineHooksSlotProps(getOwnHandlers, combineHooksSlotProps(getButtonProps, getListRootProps));
return _extends({}, externalProps, externalEventHandlers, getCombinedRootProps(externalEventHandlers), {
id,
ref: handleRef,
role: "menuitem"
});
}
if (id === void 0) {
return {
getRootProps,
disabled: false,
focusVisible,
highlighted: false,
index: -1,
totalItemCount: 0,
rootRef: handleRef
};
}
return {
getRootProps,
disabled,
focusVisible,
highlighted,
index: index2,
totalItemCount,
rootRef: handleRef
};
}
// node_modules/@mui/base/useMenuItem/useMenuItemContextStabilizer.js
var React44 = __toESM(require_react());
init_utils();
function useMenuItemContextStabilizer(id) {
const listContext = React44.useContext(ListContext);
if (!listContext) {
throw new Error("MenuItem: ListContext was not found.");
}
const itemId = useId(id);
const {
getItemState,
dispatch
} = listContext;
let itemState;
if (itemId != null) {
itemState = getItemState(itemId);
} else {
itemState = {
focusable: true,
highlighted: false,
selected: false
};
}
const {
highlighted,
selected,
focusable
} = itemState;
const localGetItemState = React44.useCallback((itemValue) => {
if (itemValue !== itemId) {
throw new Error(["Base UI MenuItem: Tried to access the state of another MenuItem.", `itemValue: ${itemValue} | id: ${itemId}`, "This is unsupported when the MenuItem uses the MenuItemContextStabilizer as a performance optimization."].join("/n"));
}
return {
highlighted,
selected,
focusable
};
}, [highlighted, selected, focusable, itemId]);
const localContextValue = React44.useMemo(() => ({
dispatch,
getItemState: localGetItemState
}), [dispatch, localGetItemState]);
return {
contextValue: localContextValue,
id: itemId
};
}
// node_modules/@mui/base/MenuItem/MenuItem.js
var import_jsx_runtime25 = __toESM(require_jsx_runtime());
var _excluded13 = ["children", "disabled", "label", "id", "slotProps", "slots"];
function useUtilityClasses11(ownerState) {
const {
disabled,
focusVisible
} = ownerState;
const slots = {
root: ["root", disabled && "disabled", focusVisible && "focusVisible"]
};
return composeClasses(slots, useClassNamesOverride(getMenuItemUtilityClass));
}
var InnerMenuItem = React45.memo(React45.forwardRef(function MenuItem(props, forwardedRef) {
var _slots$root;
const {
children,
disabled: disabledProp = false,
label,
id,
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded13);
const {
getRootProps,
disabled,
focusVisible,
highlighted
} = useMenuItem({
id,
disabled: disabledProp,
rootRef: forwardedRef,
label
});
const ownerState = _extends({}, props, {
disabled,
focusVisible,
highlighted
});
const classes = useUtilityClasses11(ownerState);
const Root = (_slots$root = slots.root) != null ? _slots$root : "li";
const rootProps = useSlotProps({
elementType: Root,
getSlotProps: getRootProps,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
className: classes.root,
ownerState
});
return (0, import_jsx_runtime25.jsx)(Root, _extends({}, rootProps, {
children
}));
}));
var MenuItem2 = React45.forwardRef(function MenuItem3(props, ref) {
const {
id: idProp
} = props;
const {
contextValue,
id
} = useMenuItemContextStabilizer(idProp);
return (0, import_jsx_runtime25.jsx)(ListContext.Provider, {
value: contextValue,
children: (0, import_jsx_runtime25.jsx)(InnerMenuItem, _extends({}, props, {
id,
ref
}))
});
});
true ? MenuItem2.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* @ignore
*/
children: import_prop_types18.default.node,
/**
* @ignore
*/
className: import_prop_types18.default.string,
/**
* If `true`, the menu item will be disabled.
* @default false
*/
disabled: import_prop_types18.default.bool,
/**
* If `true`, the menu item won't receive focus when the mouse moves over it.
*
* @default false
*/
disableFocusOnHover: import_prop_types18.default.bool,
/**
* A text representation of the menu item's content.
* Used for keyboard text navigation matching.
*/
label: import_prop_types18.default.string,
/**
* @ignore
*/
onClick: import_prop_types18.default.func,
/**
* The props used for each slot inside the MenuItem.
* @default {}
*/
slotProps: import_prop_types18.default.shape({
root: import_prop_types18.default.oneOfType([import_prop_types18.default.func, import_prop_types18.default.object])
}),
/**
* The components used for each slot inside the MenuItem.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types18.default.shape({
root: import_prop_types18.default.elementType
})
} : void 0;
// node_modules/@mui/base/Modal/Modal.js
init_extends();
init_objectWithoutPropertiesLoose();
var React47 = __toESM(require_react());
var import_prop_types19 = __toESM(require_prop_types());
init_utils();
// node_modules/@mui/base/unstable_useModal/useModal.js
init_extends();
var React46 = __toESM(require_react());
init_utils();
function getContainer2(container) {
return typeof container === "function" ? container() : container;
}
function getHasTransition(children) {
return children ? children.props.hasOwnProperty("in") : false;
}
var defaultManager = new ModalManager();
function useModal(parameters) {
const {
container,
disableEscapeKeyDown = false,
disableScrollLock = false,
// @ts-ignore internal logic - Base UI supports the manager as a prop too
manager = defaultManager,
closeAfterTransition = false,
onTransitionEnter,
onTransitionExited,
children,
onClose,
open,
rootRef
} = parameters;
const modal = React46.useRef({});
const mountNodeRef = React46.useRef(null);
const modalRef = React46.useRef(null);
const handleRef = useForkRef(modalRef, rootRef);
const [exited, setExited] = React46.useState(!open);
const hasTransition = getHasTransition(children);
let ariaHiddenProp = true;
if (parameters["aria-hidden"] === "false" || parameters["aria-hidden"] === false) {
ariaHiddenProp = false;
}
const getDoc = () => ownerDocument(mountNodeRef.current);
const getModal = () => {
modal.current.modalRef = modalRef.current;
modal.current.mount = mountNodeRef.current;
return modal.current;
};
const handleMounted = () => {
manager.mount(getModal(), {
disableScrollLock
});
if (modalRef.current) {
modalRef.current.scrollTop = 0;
}
};
const handleOpen = useEventCallback_default(() => {
const resolvedContainer = getContainer2(container) || getDoc().body;
manager.add(getModal(), resolvedContainer);
if (modalRef.current) {
handleMounted();
}
});
const isTopModal = React46.useCallback(() => manager.isTopModal(getModal()), [manager]);
const handlePortalRef = useEventCallback_default((node) => {
mountNodeRef.current = node;
if (!node) {
return;
}
if (open && isTopModal()) {
handleMounted();
} else if (modalRef.current) {
ariaHidden(modalRef.current, ariaHiddenProp);
}
});
const handleClose = React46.useCallback(() => {
manager.remove(getModal(), ariaHiddenProp);
}, [ariaHiddenProp, manager]);
React46.useEffect(() => {
return () => {
handleClose();
};
}, [handleClose]);
React46.useEffect(() => {
if (open) {
handleOpen();
} else if (!hasTransition || !closeAfterTransition) {
handleClose();
}
}, [open, handleClose, hasTransition, closeAfterTransition, handleOpen]);
const createHandleKeyDown = (otherHandlers) => (event) => {
var _otherHandlers$onKeyD;
(_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);
if (event.key !== "Escape" || event.which === 229 || // Wait until IME is settled.
!isTopModal()) {
return;
}
if (!disableEscapeKeyDown) {
event.stopPropagation();
if (onClose) {
onClose(event, "escapeKeyDown");
}
}
};
const createHandleBackdropClick = (otherHandlers) => (event) => {
var _otherHandlers$onClic;
(_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);
if (event.target !== event.currentTarget) {
return;
}
if (onClose) {
onClose(event, "backdropClick");
}
};
const getRootProps = (otherHandlers = {}) => {
const propsEventHandlers = extractEventHandlers(parameters);
delete propsEventHandlers.onTransitionEnter;
delete propsEventHandlers.onTransitionExited;
const externalEventHandlers = _extends({}, propsEventHandlers, otherHandlers);
return _extends({
role: "presentation"
}, externalEventHandlers, {
onKeyDown: createHandleKeyDown(externalEventHandlers),
ref: handleRef
});
};
const getBackdropProps = (otherHandlers = {}) => {
const externalEventHandlers = otherHandlers;
return _extends({
"aria-hidden": true
}, externalEventHandlers, {
onClick: createHandleBackdropClick(externalEventHandlers),
open
});
};
const getTransitionProps2 = () => {
const handleEnter = () => {
setExited(false);
if (onTransitionEnter) {
onTransitionEnter();
}
};
const handleExited = () => {
setExited(true);
if (onTransitionExited) {
onTransitionExited();
}
if (closeAfterTransition) {
handleClose();
}
};
return {
onEnter: createChainedFunction(handleEnter, children == null ? void 0 : children.props.onEnter),
onExited: createChainedFunction(handleExited, children == null ? void 0 : children.props.onExited)
};
};
return {
getRootProps,
getBackdropProps,
getTransitionProps: getTransitionProps2,
rootRef: handleRef,
portalRef: handlePortalRef,
isTopModal,
exited,
hasTransition
};
}
// node_modules/@mui/base/Modal/modalClasses.js
var COMPONENT_NAME10 = "Modal";
function getModalUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME10, slot);
}
var modalClasses = generateUtilityClasses2(COMPONENT_NAME10, ["root", "hidden", "backdrop"]);
// node_modules/@mui/base/Modal/Modal.js
var import_jsx_runtime26 = __toESM(require_jsx_runtime());
var import_jsx_runtime27 = __toESM(require_jsx_runtime());
var _excluded14 = ["children", "closeAfterTransition", "container", "disableAutoFocus", "disableEnforceFocus", "disableEscapeKeyDown", "disablePortal", "disableRestoreFocus", "disableScrollLock", "hideBackdrop", "keepMounted", "onBackdropClick", "onClose", "onKeyDown", "open", "onTransitionEnter", "onTransitionExited", "slotProps", "slots"];
var useUtilityClasses12 = (ownerState) => {
const {
open,
exited
} = ownerState;
const slots = {
root: ["root", !open && exited && "hidden"],
backdrop: ["backdrop"]
};
return composeClasses(slots, useClassNamesOverride(getModalUtilityClass));
};
var Modal = React47.forwardRef(function Modal2(props, forwardedRef) {
var _slots$root;
const {
children,
closeAfterTransition = false,
container,
disableAutoFocus = false,
disableEnforceFocus = false,
disableEscapeKeyDown = false,
disablePortal = false,
disableRestoreFocus = false,
disableScrollLock = false,
hideBackdrop = false,
keepMounted = false,
onBackdropClick,
open,
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded14);
const propsWithDefaults = _extends({}, props, {
closeAfterTransition,
disableAutoFocus,
disableEnforceFocus,
disableEscapeKeyDown,
disablePortal,
disableRestoreFocus,
disableScrollLock,
hideBackdrop,
keepMounted
});
const {
getRootProps,
getBackdropProps,
getTransitionProps: getTransitionProps2,
portalRef,
isTopModal,
exited,
hasTransition
} = useModal(_extends({}, propsWithDefaults, {
rootRef: forwardedRef
}));
const ownerState = _extends({}, propsWithDefaults, {
exited,
hasTransition
});
const classes = useUtilityClasses12(ownerState);
const childProps = {};
if (children.props.tabIndex === void 0) {
childProps.tabIndex = "-1";
}
if (hasTransition) {
const {
onEnter,
onExited
} = getTransitionProps2();
childProps.onEnter = onEnter;
childProps.onExited = onExited;
}
const Root = (_slots$root = slots.root) != null ? _slots$root : "div";
const rootProps = useSlotProps({
elementType: Root,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
getSlotProps: getRootProps,
className: classes.root,
ownerState
});
const BackdropComponent = slots.backdrop;
const backdropProps = useSlotProps({
elementType: BackdropComponent,
externalSlotProps: slotProps.backdrop,
getSlotProps: (otherHandlers) => {
return getBackdropProps(_extends({}, otherHandlers, {
onClick: (e) => {
if (onBackdropClick) {
onBackdropClick(e);
}
if (otherHandlers != null && otherHandlers.onClick) {
otherHandlers.onClick(e);
}
}
}));
},
className: classes.backdrop,
ownerState
});
if (!keepMounted && !open && (!hasTransition || exited)) {
return null;
}
return (0, import_jsx_runtime26.jsx)(Portal, {
ref: portalRef,
container,
disablePortal,
children: (0, import_jsx_runtime27.jsxs)(Root, _extends({}, rootProps, {
children: [!hideBackdrop && BackdropComponent ? (0, import_jsx_runtime26.jsx)(BackdropComponent, _extends({}, backdropProps)) : null, (0, import_jsx_runtime26.jsx)(FocusTrap, {
disableEnforceFocus,
disableAutoFocus,
disableRestoreFocus,
isEnabled: isTopModal,
open,
children: React47.cloneElement(children, childProps)
})]
}))
});
});
true ? Modal.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* A single child content element.
*/
children: elementAcceptingRef_default.isRequired,
/**
* When set to true the Modal waits until a nested Transition is completed before closing.
* @default false
*/
closeAfterTransition: import_prop_types19.default.bool,
/**
* An HTML element or function that returns one.
* The `container` will have the portal children appended to it.
*
* You can also provide a callback, which is called in a React layout effect.
* This lets you set the container from a ref, and also makes server-side rendering possible.
*
* By default, it uses the body of the top-level document object,
* so it's simply `document.body` most of the time.
*/
container: import_prop_types19.default.oneOfType([HTMLElementType, import_prop_types19.default.func]),
/**
* If `true`, the modal will not automatically shift focus to itself when it opens, and
* replace it to the last focused element when it closes.
* This also works correctly with any modal children that have the `disableAutoFocus` prop.
*
* Generally this should never be set to `true` as it makes the modal less
* accessible to assistive technologies, like screen readers.
* @default false
*/
disableAutoFocus: import_prop_types19.default.bool,
/**
* If `true`, the modal will not prevent focus from leaving the modal while open.
*
* Generally this should never be set to `true` as it makes the modal less
* accessible to assistive technologies, like screen readers.
* @default false
*/
disableEnforceFocus: import_prop_types19.default.bool,
/**
* If `true`, hitting escape will not fire the `onClose` callback.
* @default false
*/
disableEscapeKeyDown: import_prop_types19.default.bool,
/**
* The `children` will be under the DOM hierarchy of the parent component.
* @default false
*/
disablePortal: import_prop_types19.default.bool,
/**
* If `true`, the modal will not restore focus to previously focused element once
* modal is hidden or unmounted.
* @default false
*/
disableRestoreFocus: import_prop_types19.default.bool,
/**
* Disable the scroll lock behavior.
* @default false
*/
disableScrollLock: import_prop_types19.default.bool,
/**
* If `true`, the backdrop is not rendered.
* @default false
*/
hideBackdrop: import_prop_types19.default.bool,
/**
* Always keep the children in the DOM.
* This prop can be useful in SEO situation or
* when you want to maximize the responsiveness of the Modal.
* @default false
*/
keepMounted: import_prop_types19.default.bool,
/**
* Callback fired when the backdrop is clicked.
* @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.
*/
onBackdropClick: import_prop_types19.default.func,
/**
* Callback fired when the component requests to be closed.
* The `reason` parameter can optionally be used to control the response to `onClose`.
*
* @param {object} event The event source of the callback.
* @param {string} reason Can be: `"escapeKeyDown"`, `"backdropClick"`.
*/
onClose: import_prop_types19.default.func,
/**
* A function called when a transition enters.
*/
onTransitionEnter: import_prop_types19.default.func,
/**
* A function called when a transition has exited.
*/
onTransitionExited: import_prop_types19.default.func,
/**
* If `true`, the component is shown.
*/
open: import_prop_types19.default.bool.isRequired,
/**
* The props used for each slot inside the Modal.
* @default {}
*/
slotProps: import_prop_types19.default.shape({
backdrop: import_prop_types19.default.oneOfType([import_prop_types19.default.func, import_prop_types19.default.object]),
root: import_prop_types19.default.oneOfType([import_prop_types19.default.func, import_prop_types19.default.object])
}),
/**
* The components used for each slot inside the Modal.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types19.default.shape({
backdrop: import_prop_types19.default.elementType,
root: import_prop_types19.default.elementType
})
} : void 0;
// node_modules/@mui/base/Unstable_NumberInput/NumberInput.js
init_extends();
init_objectWithoutPropertiesLoose();
var React49 = __toESM(require_react());
var import_prop_types20 = __toESM(require_prop_types());
// node_modules/@mui/base/Unstable_NumberInput/numberInputClasses.js
var COMPONENT_NAME11 = "NumberInput";
function getNumberInputUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME11, slot);
}
var numberInputClasses = generateUtilityClasses2(COMPONENT_NAME11, ["root", "formControl", "focused", "disabled", "readOnly", "error", "input", "incrementButton", "decrementButton", "adornedStart", "adornedEnd"]);
// node_modules/@mui/base/unstable_useNumberInput/useNumberInput.js
init_extends();
init_formatMuiErrorMessage();
var React48 = __toESM(require_react());
init_utils();
// node_modules/@mui/base/unstable_useNumberInput/numberInputAction.types.js
var NumberInputActionTypes = {
clamp: "numberInput:clamp",
inputChange: "numberInput:inputChange",
increment: "numberInput:increment",
decrement: "numberInput:decrement",
decrementToMin: "numberInput:decrementToMin",
incrementToMax: "numberInput:incrementToMax",
resetInputValue: "numberInput:resetInputValue"
};
// node_modules/@mui/base/unstable_useNumberInput/numberInputReducer.js
init_extends();
// node_modules/@mui/base/unstable_useNumberInput/utils.js
init_utils();
function clampStepwise(val, min3 = Number.MIN_SAFE_INTEGER, max3 = Number.MAX_SAFE_INTEGER, stepProp = NaN) {
if (Number.isNaN(stepProp)) {
return clamp_default(val, min3, max3);
}
const step = stepProp || 1;
const remainder = val % step;
const positivity = Math.sign(remainder);
if (Math.abs(remainder) > step / 2) {
return clamp_default(val + positivity * (step - Math.abs(remainder)), min3, max3);
}
return clamp_default(val - positivity * Math.abs(remainder), min3, max3);
}
function isNumber(val) {
return typeof val === "number" && !Number.isNaN(val) && Number.isFinite(val);
}
// node_modules/@mui/base/unstable_useNumberInput/numberInputReducer.js
function getClampedValues(rawValue, context) {
const {
min: min3,
max: max3,
step
} = context;
const clampedValue = rawValue === null ? null : clampStepwise(rawValue, min3, max3, step);
const newInputValue = clampedValue === null ? "" : String(clampedValue);
return {
value: clampedValue,
inputValue: newInputValue
};
}
function stepValue(state, context, direction, multiplier) {
const {
value
} = state;
const {
step = 1,
min: min3,
max: max3
} = context;
if (isNumber(value)) {
return {
up: value + (step != null ? step : 1) * multiplier,
down: value - (step != null ? step : 1) * multiplier
}[direction];
}
return {
up: min3 != null ? min3 : 1,
down: max3 != null ? max3 : -1
}[direction];
}
function handleClamp(state, context, inputValue) {
const {
getInputValueAsString: getInputValueAsString2
} = context;
const numberValueAsString = getInputValueAsString2(inputValue);
const intermediateValue = numberValueAsString === "" || numberValueAsString === "-" ? null : parseInt(numberValueAsString, 10);
const clampedValues = getClampedValues(intermediateValue, context);
return _extends({}, state, clampedValues);
}
function handleInputChange(state, context, inputValue) {
const {
getInputValueAsString: getInputValueAsString2
} = context;
const numberValueAsString = getInputValueAsString2(inputValue);
if (numberValueAsString.match(/^-?\d+?$/) || numberValueAsString === "" || numberValueAsString === "-") {
return _extends({}, state, {
inputValue: numberValueAsString
});
}
return state;
}
function handleStep(state, context, applyMultiplier, direction) {
const multiplier = applyMultiplier ? context.shiftMultiplier : 1;
const newValue = stepValue(state, context, direction, multiplier);
const clampedValues = getClampedValues(newValue, context);
return _extends({}, state, clampedValues);
}
function handleToMinOrMax(state, context, to) {
const newValue = context[to];
if (!isNumber(newValue)) {
return state;
}
return _extends({}, state, {
value: newValue,
inputValue: String(newValue)
});
}
function numberInputReducer(state, action) {
const {
type,
context
} = action;
switch (type) {
case NumberInputActionTypes.clamp:
return handleClamp(state, context, action.inputValue);
case NumberInputActionTypes.inputChange:
return handleInputChange(state, context, action.inputValue);
case NumberInputActionTypes.increment:
return handleStep(state, context, action.applyMultiplier, "up");
case NumberInputActionTypes.decrement:
return handleStep(state, context, action.applyMultiplier, "down");
case NumberInputActionTypes.incrementToMax:
return handleToMinOrMax(state, context, "max");
case NumberInputActionTypes.decrementToMin:
return handleToMinOrMax(state, context, "min");
case NumberInputActionTypes.resetInputValue:
return _extends({}, state, {
inputValue: String(state.value)
});
default:
return state;
}
}
// node_modules/@mui/base/unstable_useNumberInput/useNumberInput.js
var STEP_KEYS = ["ArrowUp", "ArrowDown", "PageUp", "PageDown"];
var SUPPORTED_KEYS = [...STEP_KEYS, "Home", "End"];
function getInputValueAsString(v) {
return v ? String(v.trim()) : String(v);
}
function useNumberInput(parameters) {
var _ref;
const {
min: min3,
max: max3,
step,
shiftMultiplier = 10,
defaultValue: defaultValueProp,
disabled: disabledProp = false,
error: errorProp = false,
onBlur,
onInputChange,
onFocus,
onChange,
required: requiredProp = false,
readOnly: readOnlyProp = false,
value: valueProp,
inputRef: inputRefProp,
inputId: inputIdProp,
componentName = "useNumberInput"
} = parameters;
const formControlContext = useFormControlContext();
const {
current: isControlled
} = React48.useRef(valueProp != null);
const handleInputRefWarning = React48.useCallback((instance) => {
if (true) {
if (instance && instance.nodeName !== "INPUT" && !instance.focus) {
console.error(["MUI: You have provided a `slots.input` to the input component", "that does not correctly handle the `ref` prop.", "Make sure the `ref` prop is called with a HTMLInputElement."].join("\n"));
}
}
}, []);
const inputRef = React48.useRef(null);
const handleInputRef = useForkRef(inputRef, inputRefProp, handleInputRefWarning);
const inputId = useId(inputIdProp);
const [focused, setFocused] = React48.useState(false);
const handleStateChange = React48.useCallback((event, field, fieldValue, reason) => {
if (field === "value" && typeof fieldValue !== "string") {
switch (reason) {
case "numberInput:clamp":
onChange == null || onChange(event, fieldValue);
break;
case "numberInput:increment":
case "numberInput:decrement":
case "numberInput:incrementToMax":
case "numberInput:decrementToMin":
onChange == null || onChange(event, fieldValue);
break;
default:
break;
}
}
}, [onChange]);
const numberInputActionContext = React48.useMemo(() => {
return {
min: min3,
max: max3,
step,
shiftMultiplier,
getInputValueAsString
};
}, [min3, max3, step, shiftMultiplier]);
const initialValue = (_ref = valueProp != null ? valueProp : defaultValueProp) != null ? _ref : null;
const initialState = {
value: initialValue,
inputValue: initialValue ? String(initialValue) : ""
};
const controlledState = React48.useMemo(() => ({
value: valueProp
}), [valueProp]);
const [state, dispatch] = useControllableReducer({
reducer: numberInputReducer,
controlledProps: controlledState,
initialState,
onStateChange: handleStateChange,
actionContext: React48.useMemo(() => numberInputActionContext, [numberInputActionContext]),
componentName
});
const {
value,
inputValue
} = state;
React48.useEffect(() => {
if (!formControlContext && disabledProp && focused) {
setFocused(false);
onBlur == null || onBlur();
}
}, [formControlContext, disabledProp, focused, onBlur]);
React48.useEffect(() => {
if (isControlled && isNumber(value)) {
dispatch({
type: NumberInputActionTypes.resetInputValue
});
}
}, [value, dispatch, isControlled]);
const createHandleFocus = (otherHandlers) => (event) => {
var _otherHandlers$onFocu;
(_otherHandlers$onFocu = otherHandlers.onFocus) == null || _otherHandlers$onFocu.call(otherHandlers, event);
if (event.defaultMuiPrevented || event.defaultPrevented) {
return;
}
if (formControlContext && formControlContext.onFocus) {
var _formControlContext$o;
formControlContext == null || (_formControlContext$o = formControlContext.onFocus) == null || _formControlContext$o.call(formControlContext);
}
setFocused(true);
};
const createHandleInputChange = (otherHandlers) => (event) => {
var _formControlContext$o2, _otherHandlers$onInpu;
if (!isControlled && event.target === null) {
throw new Error(true ? `MUI: Expected valid input target. Did you use a custom \`slots.input\` and forget to forward refs? See https://mui.com/r/input-component-ref-interface for more info.` : formatMuiErrorMessage(17));
}
formControlContext == null || (_formControlContext$o2 = formControlContext.onChange) == null || _formControlContext$o2.call(formControlContext, event);
(_otherHandlers$onInpu = otherHandlers.onInputChange) == null || _otherHandlers$onInpu.call(otherHandlers, event);
if (event.defaultMuiPrevented || event.defaultPrevented) {
return;
}
dispatch({
type: NumberInputActionTypes.inputChange,
event,
inputValue: event.currentTarget.value
});
};
const createHandleBlur = (otherHandlers) => (event) => {
var _otherHandlers$onBlur;
formControlContext == null || formControlContext.onBlur();
(_otherHandlers$onBlur = otherHandlers.onBlur) == null || _otherHandlers$onBlur.call(otherHandlers, event);
if (event.defaultMuiPrevented || event.defaultPrevented) {
return;
}
dispatch({
type: NumberInputActionTypes.clamp,
event,
inputValue: event.currentTarget.value
});
setFocused(false);
};
const createHandleClick = (otherHandlers) => (event) => {
var _otherHandlers$onClic;
(_otherHandlers$onClic = otherHandlers.onClick) == null || _otherHandlers$onClic.call(otherHandlers, event);
if (event.defaultMuiPrevented || event.defaultPrevented) {
return;
}
if (inputRef.current && event.currentTarget === event.target) {
inputRef.current.focus();
}
};
const handleStep2 = (direction) => (event) => {
const applyMultiplier = Boolean(event.shiftKey);
const actionType = {
up: NumberInputActionTypes.increment,
down: NumberInputActionTypes.decrement
}[direction];
dispatch({
type: actionType,
event,
applyMultiplier
});
};
const createHandleKeyDown = (otherHandlers) => (event) => {
var _otherHandlers$onKeyD;
(_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);
if (event.defaultMuiPrevented || event.defaultPrevented) {
return;
}
if (SUPPORTED_KEYS.includes(event.key)) {
event.preventDefault();
}
switch (event.key) {
case "ArrowUp":
dispatch({
type: NumberInputActionTypes.increment,
event,
applyMultiplier: !!event.shiftKey
});
break;
case "ArrowDown":
dispatch({
type: NumberInputActionTypes.decrement,
event,
applyMultiplier: !!event.shiftKey
});
break;
case "PageUp":
dispatch({
type: NumberInputActionTypes.increment,
event,
applyMultiplier: true
});
break;
case "PageDown":
dispatch({
type: NumberInputActionTypes.decrement,
event,
applyMultiplier: true
});
break;
case "Home":
dispatch({
type: NumberInputActionTypes.incrementToMax,
event
});
break;
case "End":
dispatch({
type: NumberInputActionTypes.decrementToMin,
event
});
break;
default:
break;
}
};
const getRootProps = (externalProps = {}) => {
const propsEventHandlers = extractEventHandlers(parameters, [
// these are handled by the input slot
"onBlur",
"onInputChange",
"onFocus",
"onChange"
]);
const externalEventHandlers = _extends({}, propsEventHandlers, extractEventHandlers(externalProps));
return _extends({}, externalProps, externalEventHandlers, {
onClick: createHandleClick(externalEventHandlers)
});
};
const getInputProps = (externalProps = {}) => {
var _ref2;
const propsEventHandlers = {
onBlur,
onFocus,
// onChange from normal props is the custom onChange so we ignore it here
onChange: onInputChange
};
const externalEventHandlers = _extends({}, propsEventHandlers, extractEventHandlers(externalProps, [
// onClick is handled by the root slot
"onClick"
// do not ignore 'onInputChange', we want slotProps.input.onInputChange to enter the DOM and throw
]));
const mergedEventHandlers = _extends({}, externalEventHandlers, {
onFocus: createHandleFocus(externalEventHandlers),
// slotProps.onChange is renamed to onInputChange and passed to createHandleInputChange
onChange: createHandleInputChange(_extends({}, externalEventHandlers, {
onInputChange: externalEventHandlers.onChange
})),
onBlur: createHandleBlur(externalEventHandlers),
onKeyDown: createHandleKeyDown(externalEventHandlers)
});
const displayValue = (_ref2 = focused ? inputValue : value) != null ? _ref2 : "";
delete externalProps.onInputChange;
return _extends({
type: "text",
id: inputId,
"aria-invalid": errorProp || void 0,
defaultValue: void 0,
value: displayValue,
"aria-valuenow": displayValue,
"aria-valuetext": String(displayValue),
"aria-valuemin": min3,
"aria-valuemax": max3,
autoComplete: "off",
autoCorrect: "off",
spellCheck: "false",
required: requiredProp,
readOnly: readOnlyProp,
"aria-disabled": disabledProp,
disabled: disabledProp
}, externalProps, {
ref: handleInputRef
}, mergedEventHandlers);
};
const handleStepperButtonMouseDown = (event) => {
event.preventDefault();
if (inputRef.current) {
inputRef.current.focus();
}
};
const stepperButtonCommonProps = {
"aria-controls": inputId,
tabIndex: -1
};
const isIncrementDisabled = disabledProp || (isNumber(value) ? value >= (max3 != null ? max3 : Number.MAX_SAFE_INTEGER) : false);
const getIncrementButtonProps = (externalProps = {}) => {
return _extends({}, externalProps, stepperButtonCommonProps, {
disabled: isIncrementDisabled,
"aria-disabled": isIncrementDisabled,
onMouseDown: handleStepperButtonMouseDown,
onClick: handleStep2("up")
});
};
const isDecrementDisabled = disabledProp || (isNumber(value) ? value <= (min3 != null ? min3 : Number.MIN_SAFE_INTEGER) : false);
const getDecrementButtonProps = (externalProps = {}) => {
return _extends({}, externalProps, stepperButtonCommonProps, {
disabled: isDecrementDisabled,
"aria-disabled": isDecrementDisabled,
onMouseDown: handleStepperButtonMouseDown,
onClick: handleStep2("down")
});
};
return {
disabled: disabledProp,
error: errorProp,
focused,
formControlContext,
getInputProps,
getIncrementButtonProps,
getDecrementButtonProps,
getRootProps,
required: requiredProp,
value,
inputValue,
isIncrementDisabled,
isDecrementDisabled
};
}
// node_modules/@mui/base/Unstable_NumberInput/NumberInput.js
var import_jsx_runtime28 = __toESM(require_jsx_runtime());
var import_jsx_runtime29 = __toESM(require_jsx_runtime());
var _excluded15 = ["className", "defaultValue", "disabled", "endAdornment", "error", "id", "max", "min", "onBlur", "onInputChange", "onFocus", "onChange", "placeholder", "required", "readOnly", "shiftMultiplier", "startAdornment", "step", "value", "slotProps", "slots"];
var useUtilityClasses13 = (ownerState) => {
const {
disabled,
error,
focused,
readOnly,
formControlContext,
isIncrementDisabled,
isDecrementDisabled,
startAdornment,
endAdornment
} = ownerState;
const slots = {
root: ["root", disabled && "disabled", error && "error", focused && "focused", readOnly && "readOnly", Boolean(formControlContext) && "formControl", Boolean(startAdornment) && "adornedStart", Boolean(endAdornment) && "adornedEnd"],
input: ["input", disabled && "disabled", readOnly && "readOnly"],
incrementButton: ["incrementButton", isIncrementDisabled && "disabled"],
decrementButton: ["decrementButton", isDecrementDisabled && "disabled"]
};
return composeClasses(slots, useClassNamesOverride(getNumberInputUtilityClass));
};
var NumberInput = React49.forwardRef(function NumberInput2(props, forwardedRef) {
var _slots$root, _slots$input, _slots$incrementButto, _slots$decrementButto;
const {
className,
defaultValue,
disabled,
endAdornment,
error,
id,
max: max3,
min: min3,
onBlur,
onInputChange,
onFocus,
onChange,
placeholder,
required,
readOnly = false,
shiftMultiplier,
startAdornment,
step,
value,
slotProps = {},
slots = {}
} = props, rest = _objectWithoutPropertiesLoose(props, _excluded15);
const {
getRootProps,
getInputProps,
getIncrementButtonProps,
getDecrementButtonProps,
focused,
error: errorState,
disabled: disabledState,
formControlContext,
isIncrementDisabled,
isDecrementDisabled
} = useNumberInput({
min: min3,
max: max3,
step,
shiftMultiplier,
defaultValue,
disabled,
error,
onFocus,
onInputChange,
onBlur,
onChange,
required,
readOnly,
value,
inputId: id,
componentName: "NumberInput"
});
const ownerState = _extends({}, props, {
disabled: disabledState,
error: errorState,
focused,
readOnly,
formControlContext,
isIncrementDisabled,
isDecrementDisabled
});
const classes = useUtilityClasses13(ownerState);
const propsForwardedToInputSlot = {
placeholder
};
const Root = (_slots$root = slots.root) != null ? _slots$root : "div";
const rootProps = useSlotProps({
elementType: Root,
getSlotProps: getRootProps,
externalSlotProps: slotProps.root,
externalForwardedProps: rest,
additionalProps: {
ref: forwardedRef
},
ownerState,
className: [classes.root, className]
});
const Input5 = (_slots$input = slots.input) != null ? _slots$input : "input";
const inputProps = useSlotProps({
elementType: Input5,
getSlotProps: (otherHandlers) => getInputProps(_extends({}, propsForwardedToInputSlot, otherHandlers)),
externalSlotProps: slotProps.input,
ownerState,
className: classes.input
});
const IncrementButton = (_slots$incrementButto = slots.incrementButton) != null ? _slots$incrementButto : "button";
const incrementButtonProps = useSlotProps({
elementType: IncrementButton,
getSlotProps: getIncrementButtonProps,
externalSlotProps: slotProps.incrementButton,
ownerState,
className: classes.incrementButton
});
const DecrementButton = (_slots$decrementButto = slots.decrementButton) != null ? _slots$decrementButto : "button";
const decrementButtonProps = useSlotProps({
elementType: DecrementButton,
getSlotProps: getDecrementButtonProps,
externalSlotProps: slotProps.decrementButton,
ownerState,
className: classes.decrementButton
});
return (0, import_jsx_runtime29.jsxs)(Root, _extends({}, rootProps, {
children: [(0, import_jsx_runtime28.jsx)(DecrementButton, _extends({}, decrementButtonProps)), (0, import_jsx_runtime28.jsx)(IncrementButton, _extends({}, incrementButtonProps)), startAdornment, (0, import_jsx_runtime28.jsx)(Input5, _extends({}, inputProps)), endAdornment]
}));
});
true ? NumberInput.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* @ignore
*/
children: import_prop_types20.default.node,
/**
* @ignore
*/
className: import_prop_types20.default.string,
/**
* The default value. Use when the component is not controlled.
*/
defaultValue: import_prop_types20.default.number,
/**
* If `true`, the component is disabled.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
disabled: import_prop_types20.default.bool,
/**
* Trailing adornment for this input.
*/
endAdornment: import_prop_types20.default.node,
/**
* If `true`, the `input` will indicate an error by setting the `aria-invalid` attribute on the input and the `baseui--error` class on the root element.
*/
error: import_prop_types20.default.bool,
/**
* The id of the `input` element.
*/
id: import_prop_types20.default.string,
/**
* The maximum value.
*/
max: import_prop_types20.default.number,
/**
* The minimum value.
*/
min: import_prop_types20.default.number,
/**
* @ignore
*/
onBlur: import_prop_types20.default.func,
/**
* Callback fired after the value is clamped and changes - when the `input` is blurred or when
* the stepper buttons are triggered.
* Called with `undefined` when the value is unset.
*
* @param {React.FocusEvent<HTMLInputElement>|React.PointerEvent|React.KeyboardEvent} event The event source of the callback
* @param {number|undefined} value The new value of the component
*/
onChange: import_prop_types20.default.func,
/**
* @ignore
*/
onFocus: import_prop_types20.default.func,
/**
* Callback fired when the `input` value changes after each keypress, before clamping is applied.
* Note that `event.target.value` may contain values that fall outside of `min` and `max` or
* are otherwise "invalid".
*
* @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.
*/
onInputChange: import_prop_types20.default.func,
/**
* The short hint displayed in the `input` before the user enters a value.
*/
placeholder: import_prop_types20.default.string,
/**
* If `true`, the `input` element becomes read-only. The stepper buttons remain active,
* with the addition that they are now keyboard focusable.
* @default false
*/
readOnly: import_prop_types20.default.bool,
/**
* If `true`, the `input` element is required.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
required: import_prop_types20.default.bool,
/**
* Multiplier applied to `step` if the shift key is held while incrementing
* or decrementing the value. Defaults to `10`.
*/
shiftMultiplier: import_prop_types20.default.number,
/**
* The props used for each slot inside the NumberInput.
* @default {}
*/
slotProps: import_prop_types20.default.shape({
decrementButton: import_prop_types20.default.oneOfType([import_prop_types20.default.func, import_prop_types20.default.object]),
incrementButton: import_prop_types20.default.oneOfType([import_prop_types20.default.func, import_prop_types20.default.object]),
input: import_prop_types20.default.oneOfType([import_prop_types20.default.func, import_prop_types20.default.object]),
root: import_prop_types20.default.oneOfType([import_prop_types20.default.func, import_prop_types20.default.object])
}),
/**
* The components used for each slot inside the InputBase.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types20.default.shape({
decrementButton: import_prop_types20.default.elementType,
incrementButton: import_prop_types20.default.elementType,
input: import_prop_types20.default.elementType,
root: import_prop_types20.default.elementType
}),
/**
* Leading adornment for this input.
*/
startAdornment: import_prop_types20.default.node,
/**
* The amount that the value changes on each increment or decrement.
*/
step: import_prop_types20.default.number,
/**
* The current value. Use when the component is controlled.
* @default null
*/
value: import_prop_types20.default.number
} : void 0;
// node_modules/@mui/base/OptionGroup/OptionGroup.js
init_extends();
init_objectWithoutPropertiesLoose();
var React50 = __toESM(require_react());
var import_prop_types21 = __toESM(require_prop_types());
// node_modules/@mui/base/OptionGroup/optionGroupClasses.js
var COMPONENT_NAME12 = "OptionGroup";
function getOptionGroupUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME12, slot);
}
var optionGroupClasses = generateUtilityClasses2(COMPONENT_NAME12, ["root", "disabled", "label", "list"]);
// node_modules/@mui/base/OptionGroup/OptionGroup.js
var import_jsx_runtime30 = __toESM(require_jsx_runtime());
var import_jsx_runtime31 = __toESM(require_jsx_runtime());
var _excluded16 = ["disabled", "slotProps", "slots"];
function useUtilityClasses14(disabled) {
const slots = {
root: ["root", disabled && "disabled"],
label: ["label"],
list: ["list"]
};
return composeClasses(slots, useClassNamesOverride(getOptionGroupUtilityClass));
}
var OptionGroup = React50.forwardRef(function OptionGroup2(props, forwardedRef) {
const {
disabled = false,
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded16);
const Root = (slots == null ? void 0 : slots.root) || "li";
const Label = (slots == null ? void 0 : slots.label) || "span";
const List3 = (slots == null ? void 0 : slots.list) || "ul";
const classes = useUtilityClasses14(disabled);
const rootProps = useSlotProps({
elementType: Root,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
additionalProps: {
ref: forwardedRef
},
ownerState: props,
className: classes.root
});
const labelProps = useSlotProps({
elementType: Label,
externalSlotProps: slotProps.label,
ownerState: props,
className: classes.label
});
const listProps = useSlotProps({
elementType: List3,
externalSlotProps: slotProps.list,
ownerState: props,
className: classes.list
});
return (0, import_jsx_runtime31.jsxs)(Root, _extends({}, rootProps, {
children: [(0, import_jsx_runtime30.jsx)(Label, _extends({}, labelProps, {
children: props.label
})), (0, import_jsx_runtime30.jsx)(List3, _extends({}, listProps, {
children: props.children
}))]
}));
});
true ? OptionGroup.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* @ignore
*/
children: import_prop_types21.default.node,
/**
* @ignore
*/
className: import_prop_types21.default.string,
/**
* If `true` all the options in the group will be disabled.
* @default false
*/
disabled: import_prop_types21.default.bool,
/**
* The human-readable description of the group.
*/
label: import_prop_types21.default.node,
/**
* The props used for each slot inside the Input.
* @default {}
*/
slotProps: import_prop_types21.default.shape({
label: import_prop_types21.default.oneOfType([import_prop_types21.default.func, import_prop_types21.default.object]),
list: import_prop_types21.default.oneOfType([import_prop_types21.default.func, import_prop_types21.default.object]),
root: import_prop_types21.default.oneOfType([import_prop_types21.default.func, import_prop_types21.default.object])
}),
/**
* The components used for each slot inside the OptionGroup.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types21.default.shape({
label: import_prop_types21.default.elementType,
list: import_prop_types21.default.elementType,
root: import_prop_types21.default.elementType
})
} : void 0;
// node_modules/@mui/base/Option/Option.js
init_extends();
init_objectWithoutPropertiesLoose();
var React53 = __toESM(require_react());
var import_prop_types22 = __toESM(require_prop_types());
init_utils();
// node_modules/@mui/base/Option/optionClasses.js
var COMPONENT_NAME13 = "Option";
function getOptionUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME13, slot);
}
var optionClasses = generateUtilityClasses2(COMPONENT_NAME13, ["root", "disabled", "selected", "highlighted"]);
// node_modules/@mui/base/useOption/useOption.js
init_extends();
var React51 = __toESM(require_react());
init_utils();
function useOption(params) {
const {
value,
label,
disabled,
rootRef: optionRefParam,
id: idParam
} = params;
const {
getRootProps: getListItemProps,
highlighted,
selected
} = useListItem({
item: value
});
const {
getRootProps: getButtonProps,
rootRef: buttonRefHandler
} = useButton({
disabled,
focusableWhenDisabled: true
});
const id = useId(idParam);
const optionRef = React51.useRef(null);
const selectOption = React51.useMemo(() => ({
disabled,
label,
value,
ref: optionRef,
id
}), [disabled, label, value, id]);
const {
index: index2
} = useCompoundItem(value, selectOption);
const handleRef = useForkRef(optionRefParam, optionRef, buttonRefHandler);
const createHandleKeyDown = (otherHandlers) => (event) => {
var _otherHandlers$onKeyD;
(_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);
if (event.defaultMuiPrevented) {
return;
}
if ([" ", "Enter"].includes(event.key)) {
event.defaultMuiPrevented = true;
}
};
const getOwnHandlers = (otherHandlers = {}) => ({
onKeyDown: createHandleKeyDown(otherHandlers)
});
return {
getRootProps: (externalProps = {}) => {
const externalEventHandlers = extractEventHandlers(externalProps);
const getCombinedRootProps = combineHooksSlotProps(getListItemProps, combineHooksSlotProps(getButtonProps, getOwnHandlers));
return _extends({}, externalProps, externalEventHandlers, getCombinedRootProps(externalEventHandlers), {
id,
ref: handleRef,
role: "option",
"aria-selected": selected
});
},
highlighted,
index: index2,
selected,
rootRef: handleRef
};
}
// node_modules/@mui/base/useOption/useOptionContextStabilizer.js
var React52 = __toESM(require_react());
function useOptionContextStabilizer(value) {
const listContext = React52.useContext(ListContext);
if (!listContext) {
throw new Error("Option: ListContext was not found.");
}
const {
getItemState,
dispatch
} = listContext;
const {
highlighted,
selected,
focusable
} = getItemState(value);
const localGetItemState = React52.useCallback((itemValue) => {
if (itemValue !== value) {
throw new Error(["Base UI Option: Tried to access the state of another Option.", "This is unsupported when the Option uses the OptionContextStabilizer as a performance optimization."].join("/n"));
}
return {
highlighted,
selected,
focusable
};
}, [highlighted, selected, focusable, value]);
const localContextValue = React52.useMemo(() => ({
dispatch,
getItemState: localGetItemState
}), [dispatch, localGetItemState]);
return {
contextValue: localContextValue
};
}
// node_modules/@mui/base/Option/Option.js
var import_jsx_runtime32 = __toESM(require_jsx_runtime());
var _excluded17 = ["children", "disabled", "label", "slotProps", "slots", "value"];
function useUtilityClasses15(ownerState) {
const {
disabled,
highlighted,
selected
} = ownerState;
const slots = {
root: ["root", disabled && "disabled", highlighted && "highlighted", selected && "selected"]
};
return composeClasses(slots, useClassNamesOverride(getOptionUtilityClass));
}
var InnerOption = React53.memo(React53.forwardRef(function Option(props, forwardedRef) {
var _slots$root, _optionRef$current;
const {
children,
disabled = false,
label,
slotProps = {},
slots = {},
value
} = props, other = _objectWithoutPropertiesLoose(props, _excluded17);
const Root = (_slots$root = slots.root) != null ? _slots$root : "li";
const optionRef = React53.useRef(null);
const combinedRef = useForkRef(optionRef, forwardedRef);
const computedLabel = label != null ? label : typeof children === "string" ? children : (_optionRef$current = optionRef.current) == null || (_optionRef$current = _optionRef$current.textContent) == null ? void 0 : _optionRef$current.trim();
const {
getRootProps,
selected,
highlighted,
index: index2
} = useOption({
disabled,
label: computedLabel,
rootRef: combinedRef,
value
});
const ownerState = _extends({}, props, {
disabled,
highlighted,
index: index2,
selected
});
const classes = useUtilityClasses15(ownerState);
const rootProps = useSlotProps({
getSlotProps: getRootProps,
elementType: Root,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
className: classes.root,
ownerState
});
return (0, import_jsx_runtime32.jsx)(Root, _extends({}, rootProps, {
children
}));
}));
var Option2 = React53.forwardRef(function Option3(props, ref) {
const {
value
} = props;
const {
contextValue
} = useOptionContextStabilizer(value);
return (0, import_jsx_runtime32.jsx)(ListContext.Provider, {
value: contextValue,
children: (0, import_jsx_runtime32.jsx)(InnerOption, _extends({}, props, {
ref
}))
});
});
true ? Option2.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* @ignore
*/
children: import_prop_types22.default.node,
/**
* @ignore
*/
className: import_prop_types22.default.string,
/**
* If `true`, the option will be disabled.
* @default false
*/
disabled: import_prop_types22.default.bool,
/**
* A text representation of the option's content.
* Used for keyboard text navigation matching.
*/
label: import_prop_types22.default.string,
/**
* The props used for each slot inside the Option.
* @default {}
*/
slotProps: import_prop_types22.default.shape({
root: import_prop_types22.default.oneOfType([import_prop_types22.default.func, import_prop_types22.default.object])
}),
/**
* The components used for each slot inside the Option.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types22.default.shape({
root: import_prop_types22.default.elementType
}),
/**
* The value of the option.
*/
value: import_prop_types22.default.any.isRequired
} : void 0;
// node_modules/@mui/base/Select/Select.js
init_extends();
init_objectWithoutPropertiesLoose();
var React56 = __toESM(require_react());
var import_prop_types23 = __toESM(require_prop_types());
init_utils();
// node_modules/@mui/base/useSelect/useSelect.js
init_extends();
var React54 = __toESM(require_react());
init_utils();
// node_modules/@mui/base/useSelect/useSelect.types.js
var SelectActionTypes = {
buttonClick: "buttonClick",
browserAutoFill: "browserAutoFill"
};
// node_modules/@mui/base/useSelect/defaultOptionStringifier.js
var defaultOptionStringifier = (option) => {
const {
label,
value
} = option;
if (typeof label === "string") {
return label;
}
if (typeof value === "string") {
return value;
}
return String(option);
};
// node_modules/@mui/base/useSelect/selectReducer.js
init_extends();
function selectReducer(state, action) {
const {
open
} = state;
const {
context: {
selectionMode
}
} = action;
if (action.type === SelectActionTypes.buttonClick) {
var _state$selectedValues;
const itemToHighlight = (_state$selectedValues = state.selectedValues[0]) != null ? _state$selectedValues : moveHighlight(null, "start", action.context);
return _extends({}, state, {
open: !open,
highlightedValue: !open ? itemToHighlight : null
});
}
if (action.type === SelectActionTypes.browserAutoFill) {
return handleItemSelection(action.item, state, action.context);
}
const newState = listReducer(state, action);
switch (action.type) {
case ListActionTypes.keyDown:
if (state.open) {
if (action.event.key === "Escape") {
return _extends({}, newState, {
open: false
});
}
} else {
if (action.event.key === "ArrowDown") {
var _state$selectedValues2;
return _extends({}, state, {
open: true,
highlightedValue: (_state$selectedValues2 = state.selectedValues[0]) != null ? _state$selectedValues2 : moveHighlight(null, "start", action.context)
});
}
if (action.event.key === "ArrowUp") {
var _state$selectedValues3;
return _extends({}, state, {
open: true,
highlightedValue: (_state$selectedValues3 = state.selectedValues[0]) != null ? _state$selectedValues3 : moveHighlight(null, "end", action.context)
});
}
}
break;
case ListActionTypes.itemClick:
if (selectionMode === "single") {
return _extends({}, newState, {
open: false
});
}
break;
case ListActionTypes.blur:
return _extends({}, newState, {
open: false
});
default:
return newState;
}
return newState;
}
// node_modules/@mui/base/useSelect/useSelect.js
function defaultFormValueProvider(selectedOption) {
if (Array.isArray(selectedOption)) {
if (selectedOption.length === 0) {
return "";
}
return JSON.stringify(selectedOption.map((o) => o.value));
}
if ((selectedOption == null ? void 0 : selectedOption.value) == null) {
return "";
}
if (typeof selectedOption.value === "string" || typeof selectedOption.value === "number") {
return selectedOption.value;
}
return JSON.stringify(selectedOption.value);
}
function useSelect(props) {
const {
areOptionsEqual,
buttonRef: buttonRefProp,
defaultOpen = false,
defaultValue: defaultValueProp,
disabled = false,
listboxId: listboxIdProp,
listboxRef: listboxRefProp,
multiple = false,
name,
required,
onChange,
onHighlightChange,
onOpenChange,
open: openProp,
options: optionsParam,
getOptionAsString = defaultOptionStringifier,
getSerializedValue = defaultFormValueProvider,
value: valueProp,
componentName = "useSelect"
} = props;
const buttonRef = React54.useRef(null);
const handleButtonRef = useForkRef(buttonRefProp, buttonRef);
const listboxRef = React54.useRef(null);
const listboxId = useId(listboxIdProp);
let defaultValue;
if (valueProp === void 0 && defaultValueProp === void 0) {
defaultValue = [];
} else if (defaultValueProp !== void 0) {
if (multiple) {
defaultValue = defaultValueProp;
} else {
defaultValue = defaultValueProp == null ? [] : [defaultValueProp];
}
}
const value = React54.useMemo(() => {
if (valueProp !== void 0) {
if (multiple) {
return valueProp;
}
return valueProp == null ? [] : [valueProp];
}
return void 0;
}, [valueProp, multiple]);
const {
subitems,
contextValue: compoundComponentContextValue
} = useCompoundParent();
const options = React54.useMemo(() => {
if (optionsParam != null) {
return new Map(optionsParam.map((option, index2) => [option.value, {
value: option.value,
label: option.label,
disabled: option.disabled,
ref: React54.createRef(),
id: `${listboxId}_${index2}`
}]));
}
return subitems;
}, [optionsParam, subitems, listboxId]);
const handleListboxRef = useForkRef(listboxRefProp, listboxRef);
const {
getRootProps: getButtonRootProps,
active: buttonActive,
focusVisible: buttonFocusVisible,
rootRef: mergedButtonRef
} = useButton({
disabled,
rootRef: handleButtonRef
});
const optionValues = React54.useMemo(() => Array.from(options.keys()), [options]);
const getOptionByValue = React54.useCallback((valueToGet) => {
if (areOptionsEqual !== void 0) {
const similarValue = optionValues.find((optionValue) => areOptionsEqual(optionValue, valueToGet));
return options.get(similarValue);
}
return options.get(valueToGet);
}, [options, areOptionsEqual, optionValues]);
const isItemDisabled = React54.useCallback((valueToCheck) => {
var _option$disabled;
const option = getOptionByValue(valueToCheck);
return (_option$disabled = option == null ? void 0 : option.disabled) != null ? _option$disabled : false;
}, [getOptionByValue]);
const stringifyOption = React54.useCallback((valueToCheck) => {
const option = getOptionByValue(valueToCheck);
if (!option) {
return "";
}
return getOptionAsString(option);
}, [getOptionByValue, getOptionAsString]);
const controlledState = React54.useMemo(() => ({
selectedValues: value,
open: openProp
}), [value, openProp]);
const getItemId = React54.useCallback((itemValue) => {
var _options$get;
return (_options$get = options.get(itemValue)) == null ? void 0 : _options$get.id;
}, [options]);
const handleSelectionChange = React54.useCallback((event, newValues) => {
if (multiple) {
onChange == null || onChange(event, newValues);
} else {
var _newValues$;
onChange == null || onChange(event, (_newValues$ = newValues[0]) != null ? _newValues$ : null);
}
}, [multiple, onChange]);
const handleHighlightChange = React54.useCallback((event, newValue) => {
onHighlightChange == null || onHighlightChange(event, newValue != null ? newValue : null);
}, [onHighlightChange]);
const handleStateChange = React54.useCallback((event, field, fieldValue) => {
if (field === "open") {
onOpenChange == null || onOpenChange(fieldValue);
if (fieldValue === false && (event == null ? void 0 : event.type) !== "blur") {
var _buttonRef$current;
(_buttonRef$current = buttonRef.current) == null || _buttonRef$current.focus();
}
}
}, [onOpenChange]);
const getItemDomElement = React54.useCallback((itemId) => {
var _subitems$get$ref$cur, _subitems$get;
if (itemId == null) {
return null;
}
return (_subitems$get$ref$cur = (_subitems$get = subitems.get(itemId)) == null ? void 0 : _subitems$get.ref.current) != null ? _subitems$get$ref$cur : null;
}, [subitems]);
const useListParameters = {
getInitialState: () => {
var _defaultValue;
return {
highlightedValue: null,
selectedValues: (_defaultValue = defaultValue) != null ? _defaultValue : [],
open: defaultOpen
};
},
getItemId,
controlledProps: controlledState,
focusManagement: "DOM",
getItemDomElement,
itemComparer: areOptionsEqual,
isItemDisabled,
rootRef: handleListboxRef,
onChange: handleSelectionChange,
onHighlightChange: handleHighlightChange,
onStateChange: handleStateChange,
reducerActionContext: React54.useMemo(() => ({
multiple
}), [multiple]),
items: optionValues,
getItemAsString: stringifyOption,
selectionMode: multiple ? "multiple" : "single",
stateReducer: selectReducer,
componentName
};
const {
dispatch,
getRootProps: getListboxRootProps,
contextValue: listContextValue,
state: {
open,
highlightedValue: highlightedOption,
selectedValues: selectedOptions
},
rootRef: mergedListRootRef
} = useList(useListParameters);
const isInitiallyOpen = React54.useRef(open);
useEnhancedEffect_default(() => {
if (open && highlightedOption !== null) {
var _getOptionByValue;
const optionRef = (_getOptionByValue = getOptionByValue(highlightedOption)) == null ? void 0 : _getOptionByValue.ref;
if (!listboxRef.current || !(optionRef != null && optionRef.current)) {
return;
}
if (!isInitiallyOpen.current) {
optionRef.current.focus({
preventScroll: true
});
}
const listboxClientRect = listboxRef.current.getBoundingClientRect();
const optionClientRect = optionRef.current.getBoundingClientRect();
if (optionClientRect.top < listboxClientRect.top) {
listboxRef.current.scrollTop -= listboxClientRect.top - optionClientRect.top;
} else if (optionClientRect.bottom > listboxClientRect.bottom) {
listboxRef.current.scrollTop += optionClientRect.bottom - listboxClientRect.bottom;
}
}
}, [open, highlightedOption, getOptionByValue]);
const getOptionMetadata = React54.useCallback((optionValue) => getOptionByValue(optionValue), [getOptionByValue]);
const createHandleButtonClick = (externalEventHandlers) => (event) => {
var _externalEventHandler;
externalEventHandlers == null || (_externalEventHandler = externalEventHandlers.onClick) == null || _externalEventHandler.call(externalEventHandlers, event);
if (!event.defaultMuiPrevented) {
const action = {
type: SelectActionTypes.buttonClick,
event
};
dispatch(action);
}
};
const createHandleButtonKeyDown = (otherHandlers) => (event) => {
var _otherHandlers$onKeyD;
(_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);
if (event.defaultMuiPrevented) {
return;
}
if (event.key === "ArrowDown" || event.key === "ArrowUp") {
event.preventDefault();
dispatch({
type: ListActionTypes.keyDown,
key: event.key,
event
});
}
};
const getButtonOwnRootProps = (otherHandlers = {}) => ({
onClick: createHandleButtonClick(otherHandlers),
onKeyDown: createHandleButtonKeyDown(otherHandlers)
});
const getSelectTriggerProps = (otherHandlers = {}) => {
return _extends({}, otherHandlers, getButtonOwnRootProps(otherHandlers), {
role: "combobox",
"aria-expanded": open,
"aria-controls": listboxId
});
};
const getButtonProps = (externalProps = {}) => {
const externalEventHandlers = extractEventHandlers(externalProps);
const combinedProps = combineHooksSlotProps(getSelectTriggerProps, getButtonRootProps);
return _extends({}, externalProps, combinedProps(externalEventHandlers));
};
const createListboxHandleBlur = (otherHandlers) => (event) => {
var _otherHandlers$onBlur, _listboxRef$current;
(_otherHandlers$onBlur = otherHandlers.onBlur) == null || _otherHandlers$onBlur.call(otherHandlers, event);
if (event.defaultMuiPrevented) {
return;
}
if ((_listboxRef$current = listboxRef.current) != null && _listboxRef$current.contains(event.relatedTarget) || event.relatedTarget === buttonRef.current) {
event.defaultMuiPrevented = true;
}
};
const getOwnListboxHandlers = (otherHandlers = {}) => ({
onBlur: createListboxHandleBlur(otherHandlers)
});
const getListboxProps = (externalProps = {}) => {
const externalEventHandlers = extractEventHandlers(externalProps);
const getCombinedRootProps = combineHooksSlotProps(getOwnListboxHandlers, getListboxRootProps);
return _extends({
id: listboxId,
role: "listbox",
"aria-multiselectable": multiple ? "true" : void 0
}, externalProps, getCombinedRootProps(externalEventHandlers));
};
React54.useDebugValue({
selectedOptions,
highlightedOption,
open
});
const contextValue = React54.useMemo(() => _extends({}, listContextValue, compoundComponentContextValue), [listContextValue, compoundComponentContextValue]);
let selectValue;
if (props.multiple) {
selectValue = selectedOptions;
} else {
selectValue = selectedOptions.length > 0 ? selectedOptions[0] : null;
}
let selectedOptionsMetadata;
if (multiple) {
selectedOptionsMetadata = selectValue.map((v) => getOptionMetadata(v)).filter((o) => o !== void 0);
} else {
var _getOptionMetadata;
selectedOptionsMetadata = (_getOptionMetadata = getOptionMetadata(selectValue)) != null ? _getOptionMetadata : null;
}
const createHandleHiddenInputChange = (externalEventHandlers) => (event) => {
var _externalEventHandler2;
externalEventHandlers == null || (_externalEventHandler2 = externalEventHandlers.onChange) == null || _externalEventHandler2.call(externalEventHandlers, event);
if (event.defaultMuiPrevented) {
return;
}
const option = options.get(event.target.value);
if (event.target.value === "") {
dispatch({
type: ListActionTypes.clearSelection
});
} else if (option !== void 0) {
dispatch({
type: SelectActionTypes.browserAutoFill,
item: option.value,
event
});
}
};
const getHiddenInputProps = (externalProps = {}) => {
const externalEventHandlers = extractEventHandlers(externalProps);
return _extends({
name,
tabIndex: -1,
"aria-hidden": true,
required: required ? true : void 0,
value: getSerializedValue(selectedOptionsMetadata),
style: visuallyHidden_default
}, externalProps, {
onChange: createHandleHiddenInputChange(externalEventHandlers)
});
};
return {
buttonActive,
buttonFocusVisible,
buttonRef: mergedButtonRef,
contextValue,
disabled,
dispatch,
getButtonProps,
getHiddenInputProps,
getListboxProps,
getOptionMetadata,
listboxRef: mergedListRootRef,
open,
options: optionValues,
value: selectValue,
highlightedOption
};
}
// node_modules/@mui/base/useSelect/SelectProvider.js
var React55 = __toESM(require_react());
var import_jsx_runtime33 = __toESM(require_jsx_runtime());
function SelectProvider(props) {
const {
value,
children
} = props;
const {
dispatch,
getItemIndex,
getItemState,
registerItem,
totalSubitemCount
} = value;
const listContextValue = React55.useMemo(() => ({
dispatch,
getItemState,
getItemIndex
}), [dispatch, getItemIndex, getItemState]);
const compoundComponentContextValue = React55.useMemo(() => ({
getItemIndex,
registerItem,
totalSubitemCount
}), [registerItem, getItemIndex, totalSubitemCount]);
return (0, import_jsx_runtime33.jsx)(CompoundComponentContext.Provider, {
value: compoundComponentContextValue,
children: (0, import_jsx_runtime33.jsx)(ListContext.Provider, {
value: listContextValue,
children
})
});
}
// node_modules/@mui/base/Select/selectClasses.js
var COMPONENT_NAME14 = "Select";
function getSelectUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME14, slot);
}
var selectClasses = generateUtilityClasses2(COMPONENT_NAME14, ["root", "button", "listbox", "popup", "active", "expanded", "disabled", "focusVisible"]);
// node_modules/@mui/base/Select/Select.js
var import_jsx_runtime34 = __toESM(require_jsx_runtime());
var import_jsx_runtime35 = __toESM(require_jsx_runtime());
var _span;
var _excluded18 = ["areOptionsEqual", "autoComplete", "autoFocus", "children", "defaultValue", "defaultListboxOpen", "disabled", "getSerializedValue", "listboxId", "listboxOpen", "multiple", "name", "required", "onChange", "onListboxOpenChange", "getOptionAsString", "renderValue", "placeholder", "slotProps", "slots", "value"];
function defaultRenderValue(selectedOptions) {
var _selectedOptions$labe;
if (Array.isArray(selectedOptions)) {
return (0, import_jsx_runtime34.jsx)(React56.Fragment, {
children: selectedOptions.map((o) => o.label).join(", ")
});
}
return (_selectedOptions$labe = selectedOptions == null ? void 0 : selectedOptions.label) != null ? _selectedOptions$labe : null;
}
function useUtilityClasses16(ownerState) {
const {
active,
disabled,
open,
focusVisible
} = ownerState;
const slots = {
root: ["root", disabled && "disabled", focusVisible && "focusVisible", active && "active", open && "expanded"],
listbox: ["listbox", disabled && "disabled"],
popup: ["popup"]
};
return composeClasses(slots, useClassNamesOverride(getSelectUtilityClass));
}
var Select = React56.forwardRef(function Select2(props, forwardedRef) {
var _slots$root, _slots$listbox, _slots$popup, _ref, _renderValue;
const {
areOptionsEqual,
autoComplete,
autoFocus,
children,
defaultValue,
defaultListboxOpen = false,
disabled: disabledProp,
getSerializedValue,
listboxId,
listboxOpen: listboxOpenProp,
multiple = false,
name,
required = false,
onChange,
onListboxOpenChange,
getOptionAsString = defaultOptionStringifier,
renderValue: renderValueProp,
placeholder,
slotProps = {},
slots = {},
value: valueProp
} = props, other = _objectWithoutPropertiesLoose(props, _excluded18);
const renderValue = renderValueProp != null ? renderValueProp : defaultRenderValue;
const [buttonDefined, setButtonDefined] = React56.useState(false);
const buttonRef = React56.useRef(null);
const listboxRef = React56.useRef(null);
const Button5 = (_slots$root = slots.root) != null ? _slots$root : "button";
const ListboxRoot = (_slots$listbox = slots.listbox) != null ? _slots$listbox : "ul";
const PopupComponent = (_slots$popup = slots.popup) != null ? _slots$popup : "div";
const handleButtonRefChange = React56.useCallback((element) => {
setButtonDefined(element != null);
}, []);
const handleButtonRef = useForkRef(forwardedRef, buttonRef, handleButtonRefChange);
React56.useEffect(() => {
if (autoFocus) {
buttonRef.current.focus();
}
}, [autoFocus]);
const {
buttonActive,
buttonFocusVisible,
contextValue,
disabled,
getButtonProps,
getListboxProps,
getHiddenInputProps,
getOptionMetadata,
value,
open
} = useSelect({
name,
required,
getSerializedValue,
areOptionsEqual,
buttonRef: handleButtonRef,
defaultOpen: defaultListboxOpen,
defaultValue,
disabled: disabledProp,
listboxId,
multiple,
open: listboxOpenProp,
onChange,
onOpenChange: onListboxOpenChange,
getOptionAsString,
value: valueProp,
componentName: "Select"
});
const ownerState = _extends({}, props, {
active: buttonActive,
defaultListboxOpen,
disabled,
focusVisible: buttonFocusVisible,
open,
multiple,
renderValue,
value
});
const classes = useUtilityClasses16(ownerState);
const buttonProps = useSlotProps({
elementType: Button5,
getSlotProps: getButtonProps,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
ownerState,
className: classes.root
});
const listboxProps = useSlotProps({
elementType: ListboxRoot,
getSlotProps: getListboxProps,
externalSlotProps: slotProps.listbox,
additionalProps: {
ref: listboxRef
},
ownerState,
className: classes.listbox
});
const popupProps = useSlotProps({
elementType: PopupComponent,
externalSlotProps: slotProps.popup,
additionalProps: {
anchor: buttonRef.current,
keepMounted: true,
open,
placement: "bottom-start",
role: void 0
},
ownerState,
className: classes.popup
});
let selectedOptionsMetadata;
if (multiple) {
selectedOptionsMetadata = value.map((v) => getOptionMetadata(v)).filter((o) => o !== void 0);
} else {
var _getOptionMetadata;
selectedOptionsMetadata = (_getOptionMetadata = getOptionMetadata(value)) != null ? _getOptionMetadata : null;
}
return (0, import_jsx_runtime35.jsxs)(React56.Fragment, {
children: [(0, import_jsx_runtime34.jsx)(Button5, _extends({}, buttonProps, {
children: (_ref = (_renderValue = renderValue(selectedOptionsMetadata)) != null ? _renderValue : placeholder) != null ? _ref : (
// fall back to a zero-width space to prevent layout shift
// from https://github.com/mui/material-ui/pull/24563
_span || (_span = (0, import_jsx_runtime34.jsx)("span", {
className: "notranslate",
children: ""
}))
)
})), buttonDefined && (0, import_jsx_runtime34.jsx)(Popup, _extends({
slots: {
root: PopupComponent
}
}, popupProps, {
children: (0, import_jsx_runtime34.jsx)(ListboxRoot, _extends({}, listboxProps, {
children: (0, import_jsx_runtime34.jsx)(SelectProvider, {
value: contextValue,
children
})
}))
})), (0, import_jsx_runtime34.jsx)("input", _extends({}, getHiddenInputProps(), {
autoComplete
}))]
});
});
true ? Select.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* A function used to determine if two options' values are equal.
* By default, reference equality is used.
*
* There is a performance impact when using the `areOptionsEqual` prop (proportional to the number of options).
* Therefore, it's recommented to use the default reference equality comparison whenever possible.
*/
areOptionsEqual: import_prop_types23.default.func,
/**
* This prop helps users to fill forms faster, especially on mobile devices.
* The name can be confusing, as it's more like an autofill.
* You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).
*/
autoComplete: import_prop_types23.default.string,
/**
* If `true`, the select element is focused during the first mount
* @default false
*/
autoFocus: import_prop_types23.default.bool,
/**
* @ignore
*/
children: import_prop_types23.default.node,
/**
* @ignore
*/
className: import_prop_types23.default.string,
/**
* If `true`, the select will be initially open.
* @default false
*/
defaultListboxOpen: import_prop_types23.default.bool,
/**
* The default selected value. Use when the component is not controlled.
*/
defaultValue: import_prop_types23.default.any,
/**
* If `true`, the select is disabled.
* @default false
*/
disabled: import_prop_types23.default.bool,
/**
* A function used to convert the option label to a string.
* It's useful when labels are elements and need to be converted to plain text
* to enable navigation using character keys on a keyboard.
*
* @default defaultOptionStringifier
*/
getOptionAsString: import_prop_types23.default.func,
/**
* A function to convert the currently selected value to a string.
* Used to set a value of a hidden input associated with the select,
* so that the selected value can be posted with a form.
*/
getSerializedValue: import_prop_types23.default.func,
/**
* `id` attribute of the listbox element.
*/
listboxId: import_prop_types23.default.string,
/**
* Controls the open state of the select's listbox.
* @default undefined
*/
listboxOpen: import_prop_types23.default.bool,
/**
* If `true`, selecting multiple values is allowed.
* This affects the type of the `value`, `defaultValue`, and `onChange` props.
*
* @default false
*/
multiple: import_prop_types23.default.bool,
/**
* Name of the element. For example used by the server to identify the fields in form submits.
*/
name: import_prop_types23.default.string,
/**
* Callback fired when an option is selected.
*/
onChange: import_prop_types23.default.func,
/**
* Callback fired when the component requests to be opened.
* Use in controlled mode (see listboxOpen).
*/
onListboxOpenChange: import_prop_types23.default.func,
/**
* Text to show when there is no selected value.
*/
placeholder: import_prop_types23.default.node,
/**
* Function that customizes the rendering of the selected value.
*/
renderValue: import_prop_types23.default.func,
/**
* If `true`, the Select cannot be empty when submitting form.
* @default false
*/
required: import_prop_types23.default.bool,
/**
* The props used for each slot inside the Input.
* @default {}
*/
slotProps: import_prop_types23.default.shape({
listbox: import_prop_types23.default.oneOfType([import_prop_types23.default.func, import_prop_types23.default.object]),
popup: import_prop_types23.default.oneOfType([import_prop_types23.default.func, import_prop_types23.default.object]),
root: import_prop_types23.default.oneOfType([import_prop_types23.default.func, import_prop_types23.default.object])
}),
/**
* The components used for each slot inside the Select.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types23.default.shape({
listbox: import_prop_types23.default.elementType,
popup: import_prop_types23.default.elementType,
root: import_prop_types23.default.elementType
}),
/**
* The selected value.
* Set to `null` to deselect all options.
*/
value: import_prop_types23.default.any
} : void 0;
// node_modules/@mui/base/Slider/Slider.js
init_extends();
init_objectWithoutPropertiesLoose();
var React58 = __toESM(require_react());
var import_prop_types24 = __toESM(require_prop_types());
init_clsx();
init_utils();
// node_modules/@mui/base/Slider/sliderClasses.js
var COMPONENT_NAME15 = "Slider";
function getSliderUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME15, slot);
}
var sliderClasses = generateUtilityClasses2(COMPONENT_NAME15, ["root", "active", "focusVisible", "disabled", "dragging", "marked", "vertical", "trackInverted", "trackFalse", "rail", "track", "mark", "markActive", "markLabel", "markLabelActive", "thumb"]);
// node_modules/@mui/base/useSlider/useSlider.js
init_extends();
var React57 = __toESM(require_react());
init_utils();
var INTENTIONAL_DRAG_COUNT_THRESHOLD = 2;
function asc(a, b) {
return a - b;
}
function findClosest(values, currentValue) {
var _values$reduce;
const {
index: closestIndex
} = (_values$reduce = values.reduce((acc, value, index2) => {
const distance = Math.abs(currentValue - value);
if (acc === null || distance < acc.distance || distance === acc.distance) {
return {
distance,
index: index2
};
}
return acc;
}, null)) != null ? _values$reduce : {};
return closestIndex;
}
function trackFinger(event, touchId) {
if (touchId.current !== void 0 && event.changedTouches) {
const touchEvent = event;
for (let i = 0; i < touchEvent.changedTouches.length; i += 1) {
const touch = touchEvent.changedTouches[i];
if (touch.identifier === touchId.current) {
return {
x: touch.clientX,
y: touch.clientY
};
}
}
return false;
}
return {
x: event.clientX,
y: event.clientY
};
}
function valueToPercent(value, min3, max3) {
return (value - min3) * 100 / (max3 - min3);
}
function percentToValue(percent, min3, max3) {
return (max3 - min3) * percent + min3;
}
function getDecimalPrecision(num) {
if (Math.abs(num) < 1) {
const parts = num.toExponential().split("e-");
const matissaDecimalPart = parts[0].split(".")[1];
return (matissaDecimalPart ? matissaDecimalPart.length : 0) + parseInt(parts[1], 10);
}
const decimalPart = num.toString().split(".")[1];
return decimalPart ? decimalPart.length : 0;
}
function roundValueToStep(value, step, min3) {
const nearest = Math.round((value - min3) / step) * step + min3;
return Number(nearest.toFixed(getDecimalPrecision(step)));
}
function setValueIndex({
values,
newValue,
index: index2
}) {
const output = values.slice();
output[index2] = newValue;
return output.sort(asc);
}
function focusThumb({
sliderRef,
activeIndex,
setActive
}) {
var _sliderRef$current, _doc$activeElement;
const doc = ownerDocument(sliderRef.current);
if (!((_sliderRef$current = sliderRef.current) != null && _sliderRef$current.contains(doc.activeElement)) || Number(doc == null || (_doc$activeElement = doc.activeElement) == null ? void 0 : _doc$activeElement.getAttribute("data-index")) !== activeIndex) {
var _sliderRef$current2;
(_sliderRef$current2 = sliderRef.current) == null || _sliderRef$current2.querySelector(`[type="range"][data-index="${activeIndex}"]`).focus();
}
if (setActive) {
setActive(activeIndex);
}
}
function areValuesEqual(newValue, oldValue) {
if (typeof newValue === "number" && typeof oldValue === "number") {
return newValue === oldValue;
}
if (typeof newValue === "object" && typeof oldValue === "object") {
return areArraysEqual(newValue, oldValue);
}
return false;
}
var axisProps = {
horizontal: {
offset: (percent) => ({
left: `${percent}%`
}),
leap: (percent) => ({
width: `${percent}%`
})
},
"horizontal-reverse": {
offset: (percent) => ({
right: `${percent}%`
}),
leap: (percent) => ({
width: `${percent}%`
})
},
vertical: {
offset: (percent) => ({
bottom: `${percent}%`
}),
leap: (percent) => ({
height: `${percent}%`
})
}
};
var Identity = (x) => x;
var cachedSupportsTouchActionNone;
function doesSupportTouchActionNone() {
if (cachedSupportsTouchActionNone === void 0) {
if (typeof CSS !== "undefined" && typeof CSS.supports === "function") {
cachedSupportsTouchActionNone = CSS.supports("touch-action", "none");
} else {
cachedSupportsTouchActionNone = true;
}
}
return cachedSupportsTouchActionNone;
}
function useSlider(parameters) {
const {
"aria-labelledby": ariaLabelledby,
defaultValue,
disabled = false,
disableSwap = false,
isRtl = false,
marks: marksProp = false,
max: max3 = 100,
min: min3 = 0,
name,
onChange,
onChangeCommitted,
orientation = "horizontal",
rootRef: ref,
scale = Identity,
step = 1,
shiftStep = 10,
tabIndex,
value: valueProp
} = parameters;
const touchId = React57.useRef();
const [active, setActive] = React57.useState(-1);
const [open, setOpen] = React57.useState(-1);
const [dragging, setDragging] = React57.useState(false);
const moveCount = React57.useRef(0);
const [valueDerived, setValueState] = useControlled({
controlled: valueProp,
default: defaultValue != null ? defaultValue : min3,
name: "Slider"
});
const handleChange = onChange && ((event, value, thumbIndex) => {
const nativeEvent = event.nativeEvent || event;
const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);
Object.defineProperty(clonedEvent, "target", {
writable: true,
value: {
value,
name
}
});
onChange(clonedEvent, value, thumbIndex);
});
const range = Array.isArray(valueDerived);
let values = range ? valueDerived.slice().sort(asc) : [valueDerived];
values = values.map((value) => value == null ? min3 : clamp_default(value, min3, max3));
const marks = marksProp === true && step !== null ? [...Array(Math.floor((max3 - min3) / step) + 1)].map((_3, index2) => ({
value: min3 + step * index2
})) : marksProp || [];
const marksValues = marks.map((mark) => mark.value);
const {
isFocusVisibleRef,
onBlur: handleBlurVisible,
onFocus: handleFocusVisible,
ref: focusVisibleRef
} = useIsFocusVisible();
const [focusedThumbIndex, setFocusedThumbIndex] = React57.useState(-1);
const sliderRef = React57.useRef();
const handleFocusRef = useForkRef(focusVisibleRef, sliderRef);
const handleRef = useForkRef(ref, handleFocusRef);
const createHandleHiddenInputFocus = (otherHandlers) => (event) => {
var _otherHandlers$onFocu;
const index2 = Number(event.currentTarget.getAttribute("data-index"));
handleFocusVisible(event);
if (isFocusVisibleRef.current === true) {
setFocusedThumbIndex(index2);
}
setOpen(index2);
otherHandlers == null || (_otherHandlers$onFocu = otherHandlers.onFocus) == null || _otherHandlers$onFocu.call(otherHandlers, event);
};
const createHandleHiddenInputBlur = (otherHandlers) => (event) => {
var _otherHandlers$onBlur;
handleBlurVisible(event);
if (isFocusVisibleRef.current === false) {
setFocusedThumbIndex(-1);
}
setOpen(-1);
otherHandlers == null || (_otherHandlers$onBlur = otherHandlers.onBlur) == null || _otherHandlers$onBlur.call(otherHandlers, event);
};
const changeValue = (event, valueInput) => {
const index2 = Number(event.currentTarget.getAttribute("data-index"));
const value = values[index2];
const marksIndex = marksValues.indexOf(value);
let newValue = valueInput;
if (marks && step == null) {
const maxMarksValue = marksValues[marksValues.length - 1];
if (newValue > maxMarksValue) {
newValue = maxMarksValue;
} else if (newValue < marksValues[0]) {
newValue = marksValues[0];
} else {
newValue = newValue < value ? marksValues[marksIndex - 1] : marksValues[marksIndex + 1];
}
}
newValue = clamp_default(newValue, min3, max3);
if (range) {
if (disableSwap) {
newValue = clamp_default(newValue, values[index2 - 1] || -Infinity, values[index2 + 1] || Infinity);
}
const previousValue = newValue;
newValue = setValueIndex({
values,
newValue,
index: index2
});
let activeIndex = index2;
if (!disableSwap) {
activeIndex = newValue.indexOf(previousValue);
}
focusThumb({
sliderRef,
activeIndex
});
}
setValueState(newValue);
setFocusedThumbIndex(index2);
if (handleChange && !areValuesEqual(newValue, valueDerived)) {
handleChange(event, newValue, index2);
}
if (onChangeCommitted) {
onChangeCommitted(event, newValue);
}
};
const createHandleHiddenInputKeyDown = (otherHandlers) => (event) => {
var _otherHandlers$onKeyD;
if (step !== null) {
const index2 = Number(event.currentTarget.getAttribute("data-index"));
const value = values[index2];
let newValue = null;
if ((event.key === "ArrowLeft" || event.key === "ArrowDown") && event.shiftKey || event.key === "PageDown") {
newValue = Math.max(value - shiftStep, min3);
} else if ((event.key === "ArrowRight" || event.key === "ArrowUp") && event.shiftKey || event.key === "PageUp") {
newValue = Math.min(value + shiftStep, max3);
}
if (newValue !== null) {
changeValue(event, newValue);
event.preventDefault();
}
}
otherHandlers == null || (_otherHandlers$onKeyD = otherHandlers.onKeyDown) == null || _otherHandlers$onKeyD.call(otherHandlers, event);
};
useEnhancedEffect_default(() => {
if (disabled && sliderRef.current.contains(document.activeElement)) {
var _document$activeEleme;
(_document$activeEleme = document.activeElement) == null || _document$activeEleme.blur();
}
}, [disabled]);
if (disabled && active !== -1) {
setActive(-1);
}
if (disabled && focusedThumbIndex !== -1) {
setFocusedThumbIndex(-1);
}
const createHandleHiddenInputChange = (otherHandlers) => (event) => {
var _otherHandlers$onChan;
(_otherHandlers$onChan = otherHandlers.onChange) == null || _otherHandlers$onChan.call(otherHandlers, event);
changeValue(event, event.target.valueAsNumber);
};
const previousIndex = React57.useRef();
let axis = orientation;
if (isRtl && orientation === "horizontal") {
axis += "-reverse";
}
const getFingerNewValue = ({
finger,
move = false
}) => {
const {
current: slider
} = sliderRef;
const {
width,
height,
bottom: bottom2,
left: left2
} = slider.getBoundingClientRect();
let percent;
if (axis.indexOf("vertical") === 0) {
percent = (bottom2 - finger.y) / height;
} else {
percent = (finger.x - left2) / width;
}
if (axis.indexOf("-reverse") !== -1) {
percent = 1 - percent;
}
let newValue;
newValue = percentToValue(percent, min3, max3);
if (step) {
newValue = roundValueToStep(newValue, step, min3);
} else {
const closestIndex = findClosest(marksValues, newValue);
newValue = marksValues[closestIndex];
}
newValue = clamp_default(newValue, min3, max3);
let activeIndex = 0;
if (range) {
if (!move) {
activeIndex = findClosest(values, newValue);
} else {
activeIndex = previousIndex.current;
}
if (disableSwap) {
newValue = clamp_default(newValue, values[activeIndex - 1] || -Infinity, values[activeIndex + 1] || Infinity);
}
const previousValue = newValue;
newValue = setValueIndex({
values,
newValue,
index: activeIndex
});
if (!(disableSwap && move)) {
activeIndex = newValue.indexOf(previousValue);
previousIndex.current = activeIndex;
}
}
return {
newValue,
activeIndex
};
};
const handleTouchMove = useEventCallback_default((nativeEvent) => {
const finger = trackFinger(nativeEvent, touchId);
if (!finger) {
return;
}
moveCount.current += 1;
if (nativeEvent.type === "mousemove" && nativeEvent.buttons === 0) {
handleTouchEnd(nativeEvent);
return;
}
const {
newValue,
activeIndex
} = getFingerNewValue({
finger,
move: true
});
focusThumb({
sliderRef,
activeIndex,
setActive
});
setValueState(newValue);
if (!dragging && moveCount.current > INTENTIONAL_DRAG_COUNT_THRESHOLD) {
setDragging(true);
}
if (handleChange && !areValuesEqual(newValue, valueDerived)) {
handleChange(nativeEvent, newValue, activeIndex);
}
});
const handleTouchEnd = useEventCallback_default((nativeEvent) => {
const finger = trackFinger(nativeEvent, touchId);
setDragging(false);
if (!finger) {
return;
}
const {
newValue
} = getFingerNewValue({
finger,
move: true
});
setActive(-1);
if (nativeEvent.type === "touchend") {
setOpen(-1);
}
if (onChangeCommitted) {
onChangeCommitted(nativeEvent, newValue);
}
touchId.current = void 0;
stopListening();
});
const handleTouchStart = useEventCallback_default((nativeEvent) => {
if (disabled) {
return;
}
if (!doesSupportTouchActionNone()) {
nativeEvent.preventDefault();
}
const touch = nativeEvent.changedTouches[0];
if (touch != null) {
touchId.current = touch.identifier;
}
const finger = trackFinger(nativeEvent, touchId);
if (finger !== false) {
const {
newValue,
activeIndex
} = getFingerNewValue({
finger
});
focusThumb({
sliderRef,
activeIndex,
setActive
});
setValueState(newValue);
if (handleChange && !areValuesEqual(newValue, valueDerived)) {
handleChange(nativeEvent, newValue, activeIndex);
}
}
moveCount.current = 0;
const doc = ownerDocument(sliderRef.current);
doc.addEventListener("touchmove", handleTouchMove, {
passive: true
});
doc.addEventListener("touchend", handleTouchEnd, {
passive: true
});
});
const stopListening = React57.useCallback(() => {
const doc = ownerDocument(sliderRef.current);
doc.removeEventListener("mousemove", handleTouchMove);
doc.removeEventListener("mouseup", handleTouchEnd);
doc.removeEventListener("touchmove", handleTouchMove);
doc.removeEventListener("touchend", handleTouchEnd);
}, [handleTouchEnd, handleTouchMove]);
React57.useEffect(() => {
const {
current: slider
} = sliderRef;
slider.addEventListener("touchstart", handleTouchStart, {
passive: doesSupportTouchActionNone()
});
return () => {
slider.removeEventListener("touchstart", handleTouchStart);
stopListening();
};
}, [stopListening, handleTouchStart]);
React57.useEffect(() => {
if (disabled) {
stopListening();
}
}, [disabled, stopListening]);
const createHandleMouseDown = (otherHandlers) => (event) => {
var _otherHandlers$onMous;
(_otherHandlers$onMous = otherHandlers.onMouseDown) == null || _otherHandlers$onMous.call(otherHandlers, event);
if (disabled) {
return;
}
if (event.defaultPrevented) {
return;
}
if (event.button !== 0) {
return;
}
event.preventDefault();
const finger = trackFinger(event, touchId);
if (finger !== false) {
const {
newValue,
activeIndex
} = getFingerNewValue({
finger
});
focusThumb({
sliderRef,
activeIndex,
setActive
});
setValueState(newValue);
if (handleChange && !areValuesEqual(newValue, valueDerived)) {
handleChange(event, newValue, activeIndex);
}
}
moveCount.current = 0;
const doc = ownerDocument(sliderRef.current);
doc.addEventListener("mousemove", handleTouchMove, {
passive: true
});
doc.addEventListener("mouseup", handleTouchEnd);
};
const trackOffset = valueToPercent(range ? values[0] : min3, min3, max3);
const trackLeap = valueToPercent(values[values.length - 1], min3, max3) - trackOffset;
const getRootProps = (externalProps = {}) => {
const externalHandlers = extractEventHandlers(externalProps);
const ownEventHandlers = {
onMouseDown: createHandleMouseDown(externalHandlers || {})
};
const mergedEventHandlers = _extends({}, externalHandlers, ownEventHandlers);
return _extends({}, externalProps, {
ref: handleRef
}, mergedEventHandlers);
};
const createHandleMouseOver = (otherHandlers) => (event) => {
var _otherHandlers$onMous2;
(_otherHandlers$onMous2 = otherHandlers.onMouseOver) == null || _otherHandlers$onMous2.call(otherHandlers, event);
const index2 = Number(event.currentTarget.getAttribute("data-index"));
setOpen(index2);
};
const createHandleMouseLeave = (otherHandlers) => (event) => {
var _otherHandlers$onMous3;
(_otherHandlers$onMous3 = otherHandlers.onMouseLeave) == null || _otherHandlers$onMous3.call(otherHandlers, event);
setOpen(-1);
};
const getThumbProps = (externalProps = {}) => {
const externalHandlers = extractEventHandlers(externalProps);
const ownEventHandlers = {
onMouseOver: createHandleMouseOver(externalHandlers || {}),
onMouseLeave: createHandleMouseLeave(externalHandlers || {})
};
return _extends({}, externalProps, externalHandlers, ownEventHandlers);
};
const getThumbStyle = (index2) => {
return {
// So the non active thumb doesn't show its label on hover.
pointerEvents: active !== -1 && active !== index2 ? "none" : void 0
};
};
const getHiddenInputProps = (externalProps = {}) => {
var _parameters$step;
const externalHandlers = extractEventHandlers(externalProps);
const ownEventHandlers = {
onChange: createHandleHiddenInputChange(externalHandlers || {}),
onFocus: createHandleHiddenInputFocus(externalHandlers || {}),
onBlur: createHandleHiddenInputBlur(externalHandlers || {}),
onKeyDown: createHandleHiddenInputKeyDown(externalHandlers || {})
};
const mergedEventHandlers = _extends({}, externalHandlers, ownEventHandlers);
return _extends({
tabIndex,
"aria-labelledby": ariaLabelledby,
"aria-orientation": orientation,
"aria-valuemax": scale(max3),
"aria-valuemin": scale(min3),
name,
type: "range",
min: parameters.min,
max: parameters.max,
step: parameters.step === null && parameters.marks ? "any" : (_parameters$step = parameters.step) != null ? _parameters$step : void 0,
disabled
}, externalProps, mergedEventHandlers, {
style: _extends({}, visuallyHidden_default, {
direction: isRtl ? "rtl" : "ltr",
// So that VoiceOver's focus indicator matches the thumb's dimensions
width: "100%",
height: "100%"
})
});
};
return {
active,
axis,
axisProps,
dragging,
focusedThumbIndex,
getHiddenInputProps,
getRootProps,
getThumbProps,
marks,
open,
range,
rootRef: handleRef,
trackLeap,
trackOffset,
values,
getThumbStyle
};
}
// node_modules/@mui/base/Slider/Slider.js
var import_jsx_runtime36 = __toESM(require_jsx_runtime());
var import_jsx_runtime37 = __toESM(require_jsx_runtime());
var _excluded19 = ["aria-label", "aria-valuetext", "aria-labelledby", "className", "disableSwap", "disabled", "getAriaLabel", "getAriaValueText", "marks", "max", "min", "name", "onChange", "onChangeCommitted", "orientation", "shiftStep", "scale", "step", "tabIndex", "track", "value", "valueLabelFormat", "isRtl", "defaultValue", "slotProps", "slots"];
function Identity2(x) {
return x;
}
var useUtilityClasses17 = (ownerState) => {
const {
disabled,
dragging,
marked,
orientation,
track
} = ownerState;
const slots = {
root: ["root", disabled && "disabled", dragging && "dragging", marked && "marked", orientation === "vertical" && "vertical", track === "inverted" && "trackInverted", track === false && "trackFalse"],
rail: ["rail"],
track: ["track"],
mark: ["mark"],
markActive: ["markActive"],
markLabel: ["markLabel"],
markLabelActive: ["markLabelActive"],
valueLabel: ["valueLabel"],
thumb: ["thumb", disabled && "disabled"],
active: ["active"],
disabled: ["disabled"],
focusVisible: ["focusVisible"]
};
return composeClasses(slots, useClassNamesOverride(getSliderUtilityClass));
};
var Slider = React58.forwardRef(function Slider2(props, forwardedRef) {
var _slots$root, _slots$rail, _slots$track, _slots$thumb, _slots$mark, _slots$markLabel;
const {
"aria-label": ariaLabel,
"aria-valuetext": ariaValuetext,
"aria-labelledby": ariaLabelledby,
className,
disableSwap = false,
disabled = false,
getAriaLabel,
getAriaValueText,
marks: marksProp = false,
max: max3 = 100,
min: min3 = 0,
orientation = "horizontal",
shiftStep = 10,
scale = Identity2,
step = 1,
track = "normal",
valueLabelFormat = Identity2,
isRtl = false,
defaultValue,
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded19);
const partialOwnerState = _extends({}, props, {
marks: marksProp,
disabled,
disableSwap,
isRtl,
defaultValue,
max: max3,
min: min3,
orientation,
scale,
step,
shiftStep,
track,
valueLabelFormat
});
const {
axisProps: axisProps2,
getRootProps,
getHiddenInputProps,
getThumbProps,
active,
axis,
range,
focusedThumbIndex,
dragging,
marks,
values,
trackOffset,
trackLeap,
getThumbStyle
} = useSlider(_extends({}, partialOwnerState, {
rootRef: forwardedRef
}));
const ownerState = _extends({}, partialOwnerState, {
marked: marks.length > 0 && marks.some((mark) => mark.label),
dragging,
focusedThumbIndex,
activeThumbIndex: active
});
const classes = useUtilityClasses17(ownerState);
const Root = (_slots$root = slots.root) != null ? _slots$root : "span";
const rootProps = useSlotProps({
elementType: Root,
getSlotProps: getRootProps,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
ownerState,
className: [classes.root, className]
});
const Rail = (_slots$rail = slots.rail) != null ? _slots$rail : "span";
const railProps = useSlotProps({
elementType: Rail,
externalSlotProps: slotProps.rail,
ownerState,
className: classes.rail
});
const Track = (_slots$track = slots.track) != null ? _slots$track : "span";
const trackProps = useSlotProps({
elementType: Track,
externalSlotProps: slotProps.track,
additionalProps: {
style: _extends({}, axisProps2[axis].offset(trackOffset), axisProps2[axis].leap(trackLeap))
},
ownerState,
className: classes.track
});
const Thumb = (_slots$thumb = slots.thumb) != null ? _slots$thumb : "span";
const thumbProps = useSlotProps({
elementType: Thumb,
getSlotProps: getThumbProps,
externalSlotProps: slotProps.thumb,
ownerState,
skipResolvingSlotProps: true
});
const ValueLabel = slots.valueLabel;
const valueLabelProps = useSlotProps({
elementType: ValueLabel,
externalSlotProps: slotProps.valueLabel,
ownerState
});
const Mark = (_slots$mark = slots.mark) != null ? _slots$mark : "span";
const markProps = useSlotProps({
elementType: Mark,
externalSlotProps: slotProps.mark,
ownerState,
className: classes.mark
});
const MarkLabel = (_slots$markLabel = slots.markLabel) != null ? _slots$markLabel : "span";
const markLabelProps = useSlotProps({
elementType: MarkLabel,
externalSlotProps: slotProps.markLabel,
ownerState
});
const Input5 = slots.input || "input";
const inputProps = useSlotProps({
elementType: Input5,
getSlotProps: getHiddenInputProps,
externalSlotProps: slotProps.input,
ownerState
});
return (0, import_jsx_runtime37.jsxs)(Root, _extends({}, rootProps, {
children: [(0, import_jsx_runtime36.jsx)(Rail, _extends({}, railProps)), (0, import_jsx_runtime36.jsx)(Track, _extends({}, trackProps)), marks.filter((mark) => mark.value >= min3 && mark.value <= max3).map((mark, index2) => {
const percent = valueToPercent(mark.value, min3, max3);
const style = axisProps2[axis].offset(percent);
let markActive;
if (track === false) {
markActive = values.indexOf(mark.value) !== -1;
} else {
markActive = track === "normal" && (range ? mark.value >= values[0] && mark.value <= values[values.length - 1] : mark.value <= values[0]) || track === "inverted" && (range ? mark.value <= values[0] || mark.value >= values[values.length - 1] : mark.value >= values[0]);
}
return (0, import_jsx_runtime37.jsxs)(React58.Fragment, {
children: [(0, import_jsx_runtime36.jsx)(Mark, _extends({
"data-index": index2
}, markProps, !isHostComponent(Mark) && {
markActive
}, {
style: _extends({}, style, markProps.style),
className: clsx_default(markProps.className, markActive && classes.markActive)
})), mark.label != null ? (0, import_jsx_runtime36.jsx)(MarkLabel, _extends({
"aria-hidden": true,
"data-index": index2
}, markLabelProps, !isHostComponent(MarkLabel) && {
markLabelActive: markActive
}, {
style: _extends({}, style, markLabelProps.style),
className: clsx_default(classes.markLabel, markLabelProps.className, markActive && classes.markLabelActive),
children: mark.label
})) : null]
}, index2);
}), values.map((value, index2) => {
const percent = valueToPercent(value, min3, max3);
const style = axisProps2[axis].offset(percent);
const resolvedSlotProps = resolveComponentProps(slotProps.thumb, ownerState, {
index: index2,
focused: focusedThumbIndex === index2,
active: active === index2
});
return (0, import_jsx_runtime37.jsxs)(Thumb, _extends({
"data-index": index2
}, thumbProps, resolvedSlotProps, {
className: clsx_default(classes.thumb, thumbProps.className, resolvedSlotProps == null ? void 0 : resolvedSlotProps.className, active === index2 && classes.active, focusedThumbIndex === index2 && classes.focusVisible),
style: _extends({}, style, getThumbStyle(index2), thumbProps.style, resolvedSlotProps == null ? void 0 : resolvedSlotProps.style),
children: [(0, import_jsx_runtime36.jsx)(Input5, _extends({
"data-index": index2,
"aria-label": getAriaLabel ? getAriaLabel(index2) : ariaLabel,
"aria-valuenow": scale(value),
"aria-labelledby": ariaLabelledby,
"aria-valuetext": getAriaValueText ? getAriaValueText(scale(value), index2) : ariaValuetext,
value: values[index2]
}, inputProps)), ValueLabel ? (0, import_jsx_runtime36.jsx)(ValueLabel, _extends({}, !isHostComponent(ValueLabel) && {
valueLabelFormat,
index: index2,
disabled
}, valueLabelProps, {
children: typeof valueLabelFormat === "function" ? valueLabelFormat(scale(value), index2) : valueLabelFormat
})) : null]
}), index2);
})]
}));
});
true ? Slider.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The label of the slider.
*/
"aria-label": chainPropTypes(import_prop_types24.default.string, (props) => {
const range = Array.isArray(props.value || props.defaultValue);
if (range && props["aria-label"] != null) {
return new Error("MUI: You need to use the `getAriaLabel` prop instead of `aria-label` when using a range slider.");
}
return null;
}),
/**
* The id of the element containing a label for the slider.
*/
"aria-labelledby": import_prop_types24.default.string,
/**
* A string value that provides a user-friendly name for the current value of the slider.
*/
"aria-valuetext": chainPropTypes(import_prop_types24.default.string, (props) => {
const range = Array.isArray(props.value || props.defaultValue);
if (range && props["aria-valuetext"] != null) {
return new Error("MUI: You need to use the `getAriaValueText` prop instead of `aria-valuetext` when using a range slider.");
}
return null;
}),
/**
* The default value. Use when the component is not controlled.
*/
defaultValue: import_prop_types24.default.oneOfType([import_prop_types24.default.arrayOf(import_prop_types24.default.number), import_prop_types24.default.number]),
/**
* If `true`, the component is disabled.
* @default false
*/
disabled: import_prop_types24.default.bool,
/**
* If `true`, the active thumb doesn't swap when moving pointer over a thumb while dragging another thumb.
* @default false
*/
disableSwap: import_prop_types24.default.bool,
/**
* Accepts a function which returns a string value that provides a user-friendly name for the thumb labels of the slider.
* This is important for screen reader users.
* @param {number} index The thumb label's index to format.
* @returns {string}
*/
getAriaLabel: import_prop_types24.default.func,
/**
* Accepts a function which returns a string value that provides a user-friendly name for the current value of the slider.
* This is important for screen reader users.
* @param {number} value The thumb label's value to format.
* @param {number} index The thumb label's index to format.
* @returns {string}
*/
getAriaValueText: import_prop_types24.default.func,
/**
* If `true` the Slider will be rendered right-to-left (with the lowest value on the right-hand side).
* @default false
*/
isRtl: import_prop_types24.default.bool,
/**
* Marks indicate predetermined values to which the user can move the slider.
* If `true` the marks are spaced according the value of the `step` prop.
* If an array, it should contain objects with `value` and an optional `label` keys.
* @default false
*/
marks: import_prop_types24.default.oneOfType([import_prop_types24.default.arrayOf(import_prop_types24.default.shape({
label: import_prop_types24.default.node,
value: import_prop_types24.default.number.isRequired
})), import_prop_types24.default.bool]),
/**
* The maximum allowed value of the slider.
* Should not be equal to min.
* @default 100
*/
max: import_prop_types24.default.number,
/**
* The minimum allowed value of the slider.
* Should not be equal to max.
* @default 0
*/
min: import_prop_types24.default.number,
/**
* Name attribute of the hidden `input` element.
*/
name: import_prop_types24.default.string,
/**
* Callback function that is fired when the slider's value changed.
*
* @param {Event} event The event source of the callback.
* You can pull out the new value by accessing `event.target.value` (any).
* **Warning**: This is a generic event not a change event.
* @param {number | number[]} value The new value.
* @param {number} activeThumb Index of the currently moved thumb.
*/
onChange: import_prop_types24.default.func,
/**
* Callback function that is fired when the `mouseup` is triggered.
*
* @param {React.SyntheticEvent | Event} event The event source of the callback. **Warning**: This is a generic event not a change event.
* @param {number | number[]} value The new value.
*/
onChangeCommitted: import_prop_types24.default.func,
/**
* The component orientation.
* @default 'horizontal'
*/
orientation: import_prop_types24.default.oneOf(["horizontal", "vertical"]),
/**
* A transformation function, to change the scale of the slider.
* @param {any} x
* @returns {any}
* @default function Identity(x) {
* return x;
* }
*/
scale: import_prop_types24.default.func,
/**
* The granularity with which the slider can step through values when using Page Up/Page Down or Shift + Arrow Up/Arrow Down.
* @default 10
*/
shiftStep: import_prop_types24.default.number,
/**
* The props used for each slot inside the Slider.
* @default {}
*/
slotProps: import_prop_types24.default.shape({
input: import_prop_types24.default.oneOfType([import_prop_types24.default.func, import_prop_types24.default.object]),
mark: import_prop_types24.default.oneOfType([import_prop_types24.default.func, import_prop_types24.default.object]),
markLabel: import_prop_types24.default.oneOfType([import_prop_types24.default.func, import_prop_types24.default.object]),
rail: import_prop_types24.default.oneOfType([import_prop_types24.default.func, import_prop_types24.default.object]),
root: import_prop_types24.default.oneOfType([import_prop_types24.default.func, import_prop_types24.default.object]),
thumb: import_prop_types24.default.oneOfType([import_prop_types24.default.func, import_prop_types24.default.object]),
track: import_prop_types24.default.oneOfType([import_prop_types24.default.func, import_prop_types24.default.object]),
valueLabel: import_prop_types24.default.oneOfType([import_prop_types24.default.any, import_prop_types24.default.func])
}),
/**
* The components used for each slot inside the Slider.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types24.default.shape({
input: import_prop_types24.default.elementType,
mark: import_prop_types24.default.elementType,
markLabel: import_prop_types24.default.elementType,
rail: import_prop_types24.default.elementType,
root: import_prop_types24.default.elementType,
thumb: import_prop_types24.default.elementType,
track: import_prop_types24.default.elementType,
valueLabel: import_prop_types24.default.elementType
}),
/**
* The granularity with which the slider can step through values. (A "discrete" slider.)
* The `min` prop serves as the origin for the valid values.
* We recommend (max - min) to be evenly divisible by the step.
*
* When step is `null`, the thumb can only be slid onto marks provided with the `marks` prop.
* @default 1
*/
step: import_prop_types24.default.number,
/**
* Tab index attribute of the hidden `input` element.
*/
tabIndex: import_prop_types24.default.number,
/**
* The track presentation:
*
* - `normal` the track will render a bar representing the slider value.
* - `inverted` the track will render a bar representing the remaining slider value.
* - `false` the track will render without a bar.
* @default 'normal'
*/
track: import_prop_types24.default.oneOf(["inverted", "normal", false]),
/**
* The value of the slider.
* For ranged sliders, provide an array with two values.
*/
value: import_prop_types24.default.oneOfType([import_prop_types24.default.arrayOf(import_prop_types24.default.number), import_prop_types24.default.number]),
/**
* The format function the value label's value.
*
* When a function is provided, it should have the following signature:
*
* - {number} value The value label's value to format
* - {number} index The value label's index to format
* @param {any} x
* @returns {any}
* @default function Identity(x) {
* return x;
* }
*/
valueLabelFormat: import_prop_types24.default.oneOfType([import_prop_types24.default.func, import_prop_types24.default.string])
} : void 0;
// node_modules/@mui/base/Snackbar/Snackbar.js
init_extends();
init_objectWithoutPropertiesLoose();
var React60 = __toESM(require_react());
var import_prop_types25 = __toESM(require_prop_types());
// node_modules/@mui/base/Snackbar/snackbarClasses.js
var COMPONENT_NAME16 = "Snackbar";
function getSnackbarUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME16, slot);
}
var snackbarClasses = generateUtilityClasses2(COMPONENT_NAME16, ["root"]);
// node_modules/@mui/base/useSnackbar/useSnackbar.js
init_extends();
var React59 = __toESM(require_react());
init_utils();
function useSnackbar(parameters = {}) {
const {
autoHideDuration = null,
disableWindowBlurListener = false,
onClose,
open,
resumeHideDuration
} = parameters;
const timerAutoHide = useTimeout();
React59.useEffect(() => {
if (!open) {
return void 0;
}
function handleKeyDown2(nativeEvent) {
if (!nativeEvent.defaultPrevented) {
if (nativeEvent.key === "Escape" || nativeEvent.key === "Esc") {
onClose == null || onClose(nativeEvent, "escapeKeyDown");
}
}
}
document.addEventListener("keydown", handleKeyDown2);
return () => {
document.removeEventListener("keydown", handleKeyDown2);
};
}, [open, onClose]);
const handleClose = useEventCallback_default((event, reason) => {
onClose == null || onClose(event, reason);
});
const setAutoHideTimer = useEventCallback_default((autoHideDurationParam) => {
if (!onClose || autoHideDurationParam == null) {
return;
}
timerAutoHide.start(autoHideDurationParam, () => {
handleClose(null, "timeout");
});
});
React59.useEffect(() => {
if (open) {
setAutoHideTimer(autoHideDuration);
}
return timerAutoHide.clear;
}, [open, autoHideDuration, setAutoHideTimer, timerAutoHide]);
const handleClickAway = (event) => {
onClose == null || onClose(event, "clickaway");
};
const handlePause = timerAutoHide.clear;
const handleResume = React59.useCallback(() => {
if (autoHideDuration != null) {
setAutoHideTimer(resumeHideDuration != null ? resumeHideDuration : autoHideDuration * 0.5);
}
}, [autoHideDuration, resumeHideDuration, setAutoHideTimer]);
const createHandleBlur = (otherHandlers) => (event) => {
const onBlurCallback = otherHandlers.onBlur;
onBlurCallback == null || onBlurCallback(event);
handleResume();
};
const createHandleFocus = (otherHandlers) => (event) => {
const onFocusCallback = otherHandlers.onFocus;
onFocusCallback == null || onFocusCallback(event);
handlePause();
};
const createMouseEnter = (otherHandlers) => (event) => {
const onMouseEnterCallback = otherHandlers.onMouseEnter;
onMouseEnterCallback == null || onMouseEnterCallback(event);
handlePause();
};
const createMouseLeave = (otherHandlers) => (event) => {
const onMouseLeaveCallback = otherHandlers.onMouseLeave;
onMouseLeaveCallback == null || onMouseLeaveCallback(event);
handleResume();
};
React59.useEffect(() => {
if (!disableWindowBlurListener && open) {
window.addEventListener("focus", handleResume);
window.addEventListener("blur", handlePause);
return () => {
window.removeEventListener("focus", handleResume);
window.removeEventListener("blur", handlePause);
};
}
return void 0;
}, [disableWindowBlurListener, open, handleResume, handlePause]);
const getRootProps = (externalProps = {}) => {
const externalEventHandlers = _extends({}, extractEventHandlers(parameters), extractEventHandlers(externalProps));
return _extends({
// ClickAwayListener adds an `onClick` prop which results in the alert not being announced.
// See https://github.com/mui/material-ui/issues/29080
role: "presentation"
}, externalProps, externalEventHandlers, {
onBlur: createHandleBlur(externalEventHandlers),
onFocus: createHandleFocus(externalEventHandlers),
onMouseEnter: createMouseEnter(externalEventHandlers),
onMouseLeave: createMouseLeave(externalEventHandlers)
});
};
return {
getRootProps,
onClickAway: handleClickAway
};
}
// node_modules/@mui/base/Snackbar/Snackbar.js
var import_jsx_runtime38 = __toESM(require_jsx_runtime());
var _excluded20 = ["autoHideDuration", "children", "disableWindowBlurListener", "exited", "onBlur", "onClose", "onFocus", "onMouseEnter", "onMouseLeave", "open", "resumeHideDuration", "slotProps", "slots"];
var useUtilityClasses18 = () => {
const slots = {
root: ["root"]
};
return composeClasses(slots, useClassNamesOverride(getSnackbarUtilityClass));
};
var Snackbar = React60.forwardRef(function Snackbar2(props, forwardedRef) {
const {
autoHideDuration = null,
children,
disableWindowBlurListener = false,
exited = true,
onClose,
open,
resumeHideDuration,
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded20);
const classes = useUtilityClasses18();
const {
getRootProps,
onClickAway
} = useSnackbar(_extends({}, props, {
autoHideDuration,
disableWindowBlurListener,
onClose,
open,
resumeHideDuration
}));
const ownerState = props;
const Root = slots.root || "div";
const rootProps = useSlotProps({
elementType: Root,
getSlotProps: getRootProps,
externalForwardedProps: other,
externalSlotProps: slotProps.root,
additionalProps: {
ref: forwardedRef
},
ownerState,
className: classes.root
});
const clickAwayListenerProps = useSlotProps({
elementType: ClickAwayListener,
externalSlotProps: slotProps.clickAwayListener,
additionalProps: {
onClickAway
},
ownerState
});
delete clickAwayListenerProps.ownerState;
if (!open && exited) {
return null;
}
return (0, import_jsx_runtime38.jsx)(ClickAwayListener, _extends({}, clickAwayListenerProps, {
children: (0, import_jsx_runtime38.jsx)(Root, _extends({}, rootProps, {
children
}))
}));
});
true ? Snackbar.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The number of milliseconds to wait before automatically calling the
* `onClose` function. `onClose` should then set the state of the `open`
* prop to hide the Snackbar. This behavior is disabled by default with
* the `null` value.
* @default null
*/
autoHideDuration: import_prop_types25.default.number,
/**
* @ignore
*/
children: import_prop_types25.default.node,
/**
* If `true`, the `autoHideDuration` timer will expire even if the window is not focused.
* @default false
*/
disableWindowBlurListener: import_prop_types25.default.bool,
/**
* The prop used to handle exited transition and unmount the component.
* @default true
*/
exited: import_prop_types25.default.bool,
/**
* Callback fired when the component requests to be closed.
* Typically `onClose` is used to set state in the parent component,
* which is used to control the `Snackbar` `open` prop.
* The `reason` parameter can optionally be used to control the response to `onClose`,
* for example ignoring `clickaway`.
*
* @param {React.SyntheticEvent<any> | Event} event The event source of the callback.
* @param {string} reason Can be: `"timeout"` (`autoHideDuration` expired), `"clickaway"`, or `"escapeKeyDown"`.
*/
onClose: import_prop_types25.default.func,
/**
* If `true`, the component is shown.
*/
open: import_prop_types25.default.bool,
/**
* The number of milliseconds to wait before dismissing after user interaction.
* If `autoHideDuration` prop isn't specified, it does nothing.
* If `autoHideDuration` prop is specified but `resumeHideDuration` isn't,
* we default to `autoHideDuration / 2` ms.
*/
resumeHideDuration: import_prop_types25.default.number,
/**
* The props used for each slot inside the Snackbar.
* @default {}
*/
slotProps: import_prop_types25.default.shape({
clickAwayListener: import_prop_types25.default.oneOfType([import_prop_types25.default.func, import_prop_types25.default.shape({
children: import_prop_types25.default.element.isRequired,
disableReactTree: import_prop_types25.default.bool,
mouseEvent: import_prop_types25.default.oneOf(["onClick", "onMouseDown", "onMouseUp", "onPointerDown", "onPointerUp", false]),
onClickAway: import_prop_types25.default.func,
touchEvent: import_prop_types25.default.oneOf(["onTouchEnd", "onTouchStart", false])
})]),
root: import_prop_types25.default.oneOfType([import_prop_types25.default.func, import_prop_types25.default.object])
}),
/**
* The components used for each slot inside the Snackbar.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types25.default.shape({
root: import_prop_types25.default.elementType
})
} : void 0;
// node_modules/@mui/base/Switch/Switch.js
init_extends();
init_objectWithoutPropertiesLoose();
var React62 = __toESM(require_react());
var import_prop_types26 = __toESM(require_prop_types());
// node_modules/@mui/base/useSwitch/useSwitch.js
init_extends();
var React61 = __toESM(require_react());
init_utils();
function useSwitch(props) {
const {
checked: checkedProp,
defaultChecked,
disabled,
onBlur,
onChange,
onFocus,
onFocusVisible,
readOnly,
required
} = props;
const [checked, setCheckedState] = useControlled({
controlled: checkedProp,
default: Boolean(defaultChecked),
name: "Switch",
state: "checked"
});
const createHandleInputChange = (otherProps) => (event) => {
var _otherProps$onChange;
if (event.nativeEvent.defaultPrevented) {
return;
}
setCheckedState(event.target.checked);
onChange == null || onChange(event);
(_otherProps$onChange = otherProps.onChange) == null || _otherProps$onChange.call(otherProps, event);
};
const {
isFocusVisibleRef,
onBlur: handleBlurVisible,
onFocus: handleFocusVisible,
ref: focusVisibleRef
} = useIsFocusVisible();
const [focusVisible, setFocusVisible] = React61.useState(false);
if (disabled && focusVisible) {
setFocusVisible(false);
}
React61.useEffect(() => {
isFocusVisibleRef.current = focusVisible;
}, [focusVisible, isFocusVisibleRef]);
const inputRef = React61.useRef(null);
const createHandleFocus = (otherProps) => (event) => {
var _otherProps$onFocus;
if (!inputRef.current) {
inputRef.current = event.currentTarget;
}
handleFocusVisible(event);
if (isFocusVisibleRef.current === true) {
setFocusVisible(true);
onFocusVisible == null || onFocusVisible(event);
}
onFocus == null || onFocus(event);
(_otherProps$onFocus = otherProps.onFocus) == null || _otherProps$onFocus.call(otherProps, event);
};
const createHandleBlur = (otherProps) => (event) => {
var _otherProps$onBlur;
handleBlurVisible(event);
if (isFocusVisibleRef.current === false) {
setFocusVisible(false);
}
onBlur == null || onBlur(event);
(_otherProps$onBlur = otherProps.onBlur) == null || _otherProps$onBlur.call(otherProps, event);
};
const handleInputRef = useForkRef(focusVisibleRef, inputRef);
const getInputProps = (otherProps = {}) => _extends({
checked: checkedProp,
defaultChecked,
disabled,
readOnly,
ref: handleInputRef,
required,
type: "checkbox",
role: "switch",
"aria-checked": checkedProp
}, otherProps, {
onChange: createHandleInputChange(otherProps),
onFocus: createHandleFocus(otherProps),
onBlur: createHandleBlur(otherProps)
});
return {
checked,
disabled: Boolean(disabled),
focusVisible,
getInputProps,
inputRef: handleInputRef,
readOnly: Boolean(readOnly)
};
}
// node_modules/@mui/base/Switch/switchClasses.js
var COMPONENT_NAME17 = "Switch";
function getSwitchUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME17, slot);
}
var switchClasses = generateUtilityClasses2(COMPONENT_NAME17, ["root", "input", "track", "thumb", "checked", "disabled", "focusVisible", "readOnly"]);
// node_modules/@mui/base/Switch/Switch.js
var import_jsx_runtime39 = __toESM(require_jsx_runtime());
var import_jsx_runtime40 = __toESM(require_jsx_runtime());
var _excluded21 = ["checked", "defaultChecked", "disabled", "onBlur", "onChange", "onFocus", "onFocusVisible", "readOnly", "required", "slotProps", "slots"];
var useUtilityClasses19 = (ownerState) => {
const {
checked,
disabled,
focusVisible,
readOnly
} = ownerState;
const slots = {
root: ["root", checked && "checked", disabled && "disabled", focusVisible && "focusVisible", readOnly && "readOnly"],
thumb: ["thumb"],
input: ["input"],
track: ["track"]
};
return composeClasses(slots, useClassNamesOverride(getSwitchUtilityClass));
};
var Switch = React62.forwardRef(function Switch2(props, forwardedRef) {
var _slots$root, _slots$thumb, _slots$input, _slots$track;
const {
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded21);
const {
getInputProps,
checked,
disabled,
focusVisible,
readOnly
} = useSwitch(props);
const ownerState = _extends({}, props, {
checked,
disabled,
focusVisible,
readOnly
});
const classes = useUtilityClasses19(ownerState);
const Root = (_slots$root = slots.root) != null ? _slots$root : "span";
const rootProps = useSlotProps({
elementType: Root,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
additionalProps: {
ref: forwardedRef
},
ownerState,
className: classes.root
});
const Thumb = (_slots$thumb = slots.thumb) != null ? _slots$thumb : "span";
const thumbProps = useSlotProps({
elementType: Thumb,
externalSlotProps: slotProps.thumb,
ownerState,
className: classes.thumb
});
const Input5 = (_slots$input = slots.input) != null ? _slots$input : "input";
const inputProps = useSlotProps({
elementType: Input5,
getSlotProps: getInputProps,
externalSlotProps: slotProps.input,
ownerState,
className: classes.input
});
const Track = slots.track === null ? () => null : (_slots$track = slots.track) != null ? _slots$track : "span";
const trackProps = useSlotProps({
elementType: Track,
externalSlotProps: slotProps.track,
ownerState,
className: classes.track
});
return (0, import_jsx_runtime40.jsxs)(Root, _extends({}, rootProps, {
children: [(0, import_jsx_runtime39.jsx)(Track, _extends({}, trackProps)), (0, import_jsx_runtime39.jsx)(Thumb, _extends({}, thumbProps)), (0, import_jsx_runtime39.jsx)(Input5, _extends({}, inputProps))]
}));
});
true ? Switch.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* If `true`, the component is checked.
*/
checked: import_prop_types26.default.bool,
/**
* Class name applied to the root element.
*/
className: import_prop_types26.default.string,
/**
* The default checked state. Use when the component is not controlled.
*/
defaultChecked: import_prop_types26.default.bool,
/**
* If `true`, the component is disabled.
*/
disabled: import_prop_types26.default.bool,
/**
* @ignore
*/
onBlur: import_prop_types26.default.func,
/**
* Callback fired when the state is changed.
*
* @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.
* You can pull out the new value by accessing `event.target.value` (string).
* You can pull out the new checked state by accessing `event.target.checked` (boolean).
*/
onChange: import_prop_types26.default.func,
/**
* @ignore
*/
onFocus: import_prop_types26.default.func,
/**
* @ignore
*/
onFocusVisible: import_prop_types26.default.func,
/**
* If `true`, the component is read only.
*/
readOnly: import_prop_types26.default.bool,
/**
* If `true`, the `input` element is required.
*/
required: import_prop_types26.default.bool,
/**
* The props used for each slot inside the Switch.
* @default {}
*/
slotProps: import_prop_types26.default.shape({
input: import_prop_types26.default.oneOfType([import_prop_types26.default.func, import_prop_types26.default.object]),
root: import_prop_types26.default.oneOfType([import_prop_types26.default.func, import_prop_types26.default.object]),
thumb: import_prop_types26.default.oneOfType([import_prop_types26.default.func, import_prop_types26.default.object]),
track: import_prop_types26.default.oneOfType([import_prop_types26.default.func, import_prop_types26.default.object])
}),
/**
* The components used for each slot inside the Switch.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types26.default.shape({
input: import_prop_types26.default.elementType,
root: import_prop_types26.default.elementType,
thumb: import_prop_types26.default.elementType,
track: import_prop_types26.default.oneOfType([import_prop_types26.default.elementType, import_prop_types26.default.oneOf([null])])
})
} : void 0;
// node_modules/@mui/base/TablePagination/TablePagination.js
init_extends();
init_objectWithoutPropertiesLoose();
var React64 = __toESM(require_react());
var import_prop_types27 = __toESM(require_prop_types());
init_utils();
// node_modules/@mui/base/TablePagination/TablePaginationActions.js
init_extends();
init_objectWithoutPropertiesLoose();
var React63 = __toESM(require_react());
var import_jsx_runtime41 = __toESM(require_jsx_runtime());
var import_jsx_runtime42 = __toESM(require_jsx_runtime());
var _excluded23 = ["count", "getItemAriaLabel", "onPageChange", "page", "rowsPerPage", "showFirstButton", "showLastButton", "direction", "ownerState", "slotProps", "slots"];
var _span2;
var _span22;
var _span3;
var _span4;
function LastPageIconDefault() {
return _span2 || (_span2 = (0, import_jsx_runtime41.jsx)("span", {
children: "⇾|"
}));
}
function FirstPageIconDefault() {
return _span22 || (_span22 = (0, import_jsx_runtime41.jsx)("span", {
children: "|⇽"
}));
}
function NextPageIconDefault() {
return _span3 || (_span3 = (0, import_jsx_runtime41.jsx)("span", {
children: "⇾"
}));
}
function BackPageIconDefault() {
return _span4 || (_span4 = (0, import_jsx_runtime41.jsx)("span", {
children: "⇽"
}));
}
function defaultGetAriaLabel(type) {
return `Go to ${type} page`;
}
var TablePaginationActions = React63.forwardRef(function TablePaginationActions2(props, forwardedRef) {
var _slots$root, _slots$firstButton, _slots$lastButton, _slots$nextButton, _slots$backButton, _slots$lastPageIcon, _slots$firstPageIcon, _slots$nextPageIcon, _slots$backPageIcon;
const {
count,
getItemAriaLabel = defaultGetAriaLabel,
onPageChange,
page,
rowsPerPage,
showFirstButton = false,
showLastButton = false,
direction,
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded23);
const ownerState = props;
const handleFirstPageButtonClick = (event) => {
onPageChange(event, 0);
};
const handleBackButtonClick = (event) => {
onPageChange(event, page - 1);
};
const handleNextButtonClick = (event) => {
onPageChange(event, page + 1);
};
const handleLastPageButtonClick = (event) => {
onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
};
const Root = (_slots$root = slots.root) != null ? _slots$root : "div";
const rootProps = useSlotProps({
elementType: Root,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
additionalProps: {
ref: forwardedRef
},
ownerState
});
const FirstButton = (_slots$firstButton = slots.firstButton) != null ? _slots$firstButton : "button";
const firstButtonProps = useSlotProps({
elementType: FirstButton,
externalSlotProps: slotProps.firstButton,
additionalProps: {
onClick: handleFirstPageButtonClick,
disabled: page === 0,
"aria-label": getItemAriaLabel("first", page),
title: getItemAriaLabel("first", page)
},
ownerState
});
const LastButton = (_slots$lastButton = slots.lastButton) != null ? _slots$lastButton : "button";
const lastButtonProps = useSlotProps({
elementType: LastButton,
externalSlotProps: slotProps.lastButton,
additionalProps: {
onClick: handleLastPageButtonClick,
disabled: page >= Math.ceil(count / rowsPerPage) - 1,
"aria-label": getItemAriaLabel("last", page),
title: getItemAriaLabel("last", page)
},
ownerState
});
const NextButton = (_slots$nextButton = slots.nextButton) != null ? _slots$nextButton : "button";
const nextButtonProps = useSlotProps({
elementType: NextButton,
externalSlotProps: slotProps.nextButton,
additionalProps: {
onClick: handleNextButtonClick,
disabled: count !== -1 ? page >= Math.ceil(count / rowsPerPage) - 1 : false,
"aria-label": getItemAriaLabel("next", page),
title: getItemAriaLabel("next", page)
},
ownerState
});
const BackButton = (_slots$backButton = slots.backButton) != null ? _slots$backButton : "button";
const backButtonProps = useSlotProps({
elementType: BackButton,
externalSlotProps: slotProps.backButton,
additionalProps: {
onClick: handleBackButtonClick,
disabled: page === 0,
"aria-label": getItemAriaLabel("previous", page),
title: getItemAriaLabel("previous", page)
},
ownerState
});
const LastPageIcon = (_slots$lastPageIcon = slots.lastPageIcon) != null ? _slots$lastPageIcon : LastPageIconDefault;
const FirstPageIcon = (_slots$firstPageIcon = slots.firstPageIcon) != null ? _slots$firstPageIcon : FirstPageIconDefault;
const NextPageIcon = (_slots$nextPageIcon = slots.nextPageIcon) != null ? _slots$nextPageIcon : NextPageIconDefault;
const BackPageIcon = (_slots$backPageIcon = slots.backPageIcon) != null ? _slots$backPageIcon : BackPageIconDefault;
return (0, import_jsx_runtime42.jsxs)(Root, _extends({}, rootProps, {
children: [showFirstButton && (0, import_jsx_runtime41.jsx)(FirstButton, _extends({}, firstButtonProps, {
children: direction === "rtl" ? (0, import_jsx_runtime41.jsx)(LastPageIcon, {}) : (0, import_jsx_runtime41.jsx)(FirstPageIcon, {})
})), (0, import_jsx_runtime41.jsx)(BackButton, _extends({}, backButtonProps, {
children: direction === "rtl" ? (0, import_jsx_runtime41.jsx)(NextPageIcon, {}) : (0, import_jsx_runtime41.jsx)(BackPageIcon, {})
})), (0, import_jsx_runtime41.jsx)(NextButton, _extends({}, nextButtonProps, {
children: direction === "rtl" ? (0, import_jsx_runtime41.jsx)(BackPageIcon, {}) : (0, import_jsx_runtime41.jsx)(NextPageIcon, {})
})), showLastButton && (0, import_jsx_runtime41.jsx)(LastButton, _extends({}, lastButtonProps, {
children: direction === "rtl" ? (0, import_jsx_runtime41.jsx)(FirstPageIcon, {}) : (0, import_jsx_runtime41.jsx)(LastPageIcon, {})
}))]
}));
});
// node_modules/@mui/base/TablePagination/tablePaginationClasses.js
var COMPONENT_NAME18 = "TablePagination";
function getTablePaginationUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME18, slot);
}
var tablePaginationClasses = generateUtilityClasses2(COMPONENT_NAME18, ["root", "toolbar", "spacer", "selectLabel", "selectRoot", "select", "selectIcon", "input", "menuItem", "displayedRows", "actions"]);
// node_modules/@mui/base/TablePagination/TablePagination.js
var import_jsx_runtime43 = __toESM(require_jsx_runtime());
var import_react2 = __toESM(require_react());
var import_jsx_runtime44 = __toESM(require_jsx_runtime());
var _excluded24 = ["colSpan", "count", "getItemAriaLabel", "labelDisplayedRows", "labelId", "labelRowsPerPage", "onPageChange", "onRowsPerPageChange", "page", "rowsPerPage", "rowsPerPageOptions", "selectId", "slotProps", "slots"];
function defaultLabelDisplayedRows({
from,
to,
count
}) {
return `${from}${to} of ${count !== -1 ? count : `more than ${to}`}`;
}
function defaultGetAriaLabel2(type) {
return `Go to ${type} page`;
}
var useUtilityClasses20 = () => {
const slots = {
root: ["root"],
toolbar: ["toolbar"],
spacer: ["spacer"],
selectLabel: ["selectLabel"],
select: ["select"],
input: ["input"],
selectIcon: ["selectIcon"],
menuItem: ["menuItem"],
displayedRows: ["displayedRows"],
actions: ["actions"]
};
return composeClasses(slots, useClassNamesOverride(getTablePaginationUtilityClass));
};
var TablePagination = React64.forwardRef(function TablePagination2(props, forwardedRef) {
var _slots$root, _slots$select, _slots$actions, _slots$menuItem, _slots$selectLabel, _slots$displayedRows, _slots$toolbar, _slots$spacer;
const {
colSpan: colSpanProp,
count,
getItemAriaLabel = defaultGetAriaLabel2,
labelDisplayedRows = defaultLabelDisplayedRows,
labelId: labelIdProp,
labelRowsPerPage = "Rows per page:",
onPageChange,
onRowsPerPageChange,
page,
rowsPerPage,
rowsPerPageOptions = [10, 25, 50, 100],
selectId: selectIdProp,
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded24);
const ownerState = props;
const classes = useUtilityClasses20();
let colSpan;
const Root = (_slots$root = slots.root) != null ? _slots$root : "td";
if (Root === "td" || !isHostComponent(Root)) {
colSpan = colSpanProp || 1e3;
}
const getLabelDisplayedRowsTo = () => {
if (count === -1) {
return (page + 1) * rowsPerPage;
}
return rowsPerPage === -1 ? count : Math.min(count, (page + 1) * rowsPerPage);
};
const selectId = useId(selectIdProp);
const labelId = useId(labelIdProp);
const rootProps = useSlotProps({
elementType: Root,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
additionalProps: {
colSpan,
ref: forwardedRef
},
ownerState,
className: classes.root
});
const Select5 = (_slots$select = slots.select) != null ? _slots$select : "select";
const selectProps = useSlotProps({
elementType: Select5,
externalSlotProps: slotProps.select,
additionalProps: {
value: rowsPerPage,
id: selectId,
onChange: (event) => onRowsPerPageChange && onRowsPerPageChange(event),
"aria-label": rowsPerPage.toString(),
"aria-labelledby": [labelId, selectId].filter(Boolean).join(" ") || void 0
},
ownerState,
className: classes.select
});
const Actions = (_slots$actions = slots.actions) != null ? _slots$actions : TablePaginationActions;
const actionsProps = useSlotProps({
elementType: Actions,
externalSlotProps: slotProps.actions,
additionalProps: {
page,
rowsPerPage,
count,
onPageChange,
getItemAriaLabel
},
ownerState,
className: classes.actions
});
const MenuItem4 = (_slots$menuItem = slots.menuItem) != null ? _slots$menuItem : "option";
const menuItemProps = useSlotProps({
elementType: MenuItem4,
externalSlotProps: slotProps.menuItem,
additionalProps: {
value: void 0
},
ownerState,
className: classes.menuItem
});
const SelectLabel = (_slots$selectLabel = slots.selectLabel) != null ? _slots$selectLabel : "p";
const selectLabelProps = useSlotProps({
elementType: SelectLabel,
externalSlotProps: slotProps.selectLabel,
additionalProps: {
id: labelId
},
ownerState,
className: classes.selectLabel
});
const DisplayedRows = (_slots$displayedRows = slots.displayedRows) != null ? _slots$displayedRows : "p";
const displayedRowsProps = useSlotProps({
elementType: DisplayedRows,
externalSlotProps: slotProps.displayedRows,
ownerState,
className: classes.displayedRows
});
const Toolbar = (_slots$toolbar = slots.toolbar) != null ? _slots$toolbar : "div";
const toolbarProps = useSlotProps({
elementType: Toolbar,
externalSlotProps: slotProps.toolbar,
ownerState,
className: classes.toolbar
});
const Spacer = (_slots$spacer = slots.spacer) != null ? _slots$spacer : "div";
const spacerProps = useSlotProps({
elementType: Spacer,
externalSlotProps: slotProps.spacer,
ownerState,
className: classes.spacer
});
return (0, import_jsx_runtime43.jsx)(Root, _extends({}, rootProps, {
children: (0, import_jsx_runtime44.jsxs)(Toolbar, _extends({}, toolbarProps, {
children: [(0, import_jsx_runtime43.jsx)(Spacer, _extends({}, spacerProps)), rowsPerPageOptions.length > 1 && (0, import_jsx_runtime43.jsx)(SelectLabel, _extends({}, selectLabelProps, {
children: labelRowsPerPage
})), rowsPerPageOptions.length > 1 && (0, import_jsx_runtime43.jsx)(Select5, _extends({}, selectProps, {
children: rowsPerPageOptions.map((rowsPerPageOption) => (0, import_react2.createElement)(MenuItem4, _extends({}, menuItemProps, {
key: typeof rowsPerPageOption !== "number" && rowsPerPageOption.label ? rowsPerPageOption.label : rowsPerPageOption,
value: typeof rowsPerPageOption !== "number" && rowsPerPageOption.value ? rowsPerPageOption.value : rowsPerPageOption
}), typeof rowsPerPageOption !== "number" && rowsPerPageOption.label ? rowsPerPageOption.label : rowsPerPageOption))
})), (0, import_jsx_runtime43.jsx)(DisplayedRows, _extends({}, displayedRowsProps, {
children: labelDisplayedRows({
from: count === 0 ? 0 : page * rowsPerPage + 1,
to: getLabelDisplayedRowsTo(),
count: count === -1 ? -1 : count,
page
})
})), (0, import_jsx_runtime43.jsx)(Actions, _extends({}, actionsProps))]
}))
}));
});
true ? TablePagination.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* @ignore
*/
colSpan: import_prop_types27.default.number,
/**
* The total number of rows.
*
* To enable server side pagination for an unknown number of items, provide -1.
*/
count: import_prop_types27.default.number.isRequired,
/**
* Accepts a function which returns a string value that provides a user-friendly name for the current page.
* This is important for screen reader users.
*
* For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).
* @param {string} type The link or button type to format ('first' | 'last' | 'next' | 'previous').
* @returns {string}
* @default function defaultGetAriaLabel(type: ItemAriaLabelType) {
* return `Go to ${type} page`;
* }
*/
getItemAriaLabel: import_prop_types27.default.func,
/**
* Customize the displayed rows label. Invoked with a `{ from, to, count, page }`
* object.
*
* For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).
* @default function defaultLabelDisplayedRows({ from, to, count }: LabelDisplayedRowsArgs) {
* return `${from}${to} of ${count !== -1 ? count : `more than ${to}`}`;
* }
*/
labelDisplayedRows: import_prop_types27.default.func,
/**
* Id of the label element within the pagination.
*/
labelId: import_prop_types27.default.string,
/**
* Customize the rows per page label.
*
* For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).
* @default 'Rows per page:'
*/
labelRowsPerPage: import_prop_types27.default.node,
/**
* Callback fired when the page is changed.
*
* @param {React.MouseEvent<HTMLButtonElement> | null} event The event source of the callback.
* @param {number} page The page selected.
*/
onPageChange: import_prop_types27.default.func.isRequired,
/**
* Callback fired when the number of rows per page is changed.
*
* @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.
*/
onRowsPerPageChange: import_prop_types27.default.func,
/**
* The zero-based index of the current page.
*/
page: chainPropTypes(integerPropType_default.isRequired, (props) => {
const {
count,
page,
rowsPerPage
} = props;
if (count === -1) {
return null;
}
const newLastPage = Math.max(0, Math.ceil(count / rowsPerPage) - 1);
if (page < 0 || page > newLastPage) {
return new Error(`MUI: The page prop of a TablePagination is out of range (0 to ${newLastPage}, but page is ${page}).`);
}
return null;
}),
/**
* The number of rows per page.
*
* Set -1 to display all the rows.
*/
rowsPerPage: integerPropType_default.isRequired,
/**
* Customizes the options of the rows per page select field. If less than two options are
* available, no select field will be displayed.
* Use -1 for the value with a custom label to show all the rows.
* @default [10, 25, 50, 100]
*/
rowsPerPageOptions: import_prop_types27.default.arrayOf(import_prop_types27.default.oneOfType([import_prop_types27.default.number, import_prop_types27.default.shape({
label: import_prop_types27.default.string.isRequired,
value: import_prop_types27.default.number.isRequired
})]).isRequired),
/**
* Id of the select element within the pagination.
*/
selectId: import_prop_types27.default.string,
/**
* The props used for each slot inside the TablePagination.
* @default {}
*/
slotProps: import_prop_types27.default.shape({
actions: import_prop_types27.default.oneOfType([import_prop_types27.default.func, import_prop_types27.default.object]),
displayedRows: import_prop_types27.default.oneOfType([import_prop_types27.default.func, import_prop_types27.default.object]),
menuItem: import_prop_types27.default.oneOfType([import_prop_types27.default.func, import_prop_types27.default.object]),
root: import_prop_types27.default.oneOfType([import_prop_types27.default.func, import_prop_types27.default.object]),
select: import_prop_types27.default.oneOfType([import_prop_types27.default.func, import_prop_types27.default.object]),
selectLabel: import_prop_types27.default.oneOfType([import_prop_types27.default.func, import_prop_types27.default.object]),
spacer: import_prop_types27.default.oneOfType([import_prop_types27.default.func, import_prop_types27.default.object]),
toolbar: import_prop_types27.default.oneOfType([import_prop_types27.default.func, import_prop_types27.default.object])
}),
/**
* The components used for each slot inside the TablePagination.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types27.default.shape({
actions: import_prop_types27.default.elementType,
displayedRows: import_prop_types27.default.elementType,
menuItem: import_prop_types27.default.elementType,
root: import_prop_types27.default.elementType,
select: import_prop_types27.default.elementType,
selectLabel: import_prop_types27.default.elementType,
spacer: import_prop_types27.default.elementType,
toolbar: import_prop_types27.default.elementType
})
} : void 0;
// node_modules/@mui/base/TabPanel/TabPanel.js
init_extends();
init_objectWithoutPropertiesLoose();
var React70 = __toESM(require_react());
var import_prop_types29 = __toESM(require_prop_types());
// node_modules/@mui/base/TabPanel/tabPanelClasses.js
var COMPONENT_NAME19 = "TabPanel";
function getTabPanelUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME19, slot);
}
var tabPanelClasses = generateUtilityClasses2(COMPONENT_NAME19, ["root", "hidden"]);
// node_modules/@mui/base/useTabPanel/useTabPanel.js
init_extends();
var React69 = __toESM(require_react());
init_utils();
// node_modules/@mui/base/Tabs/Tabs.js
init_extends();
init_objectWithoutPropertiesLoose();
var React68 = __toESM(require_react());
var import_prop_types28 = __toESM(require_prop_types());
// node_modules/@mui/base/Tabs/tabsClasses.js
var COMPONENT_NAME20 = "Tabs";
function getTabsUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME20, slot);
}
var tabsClasses = generateUtilityClasses2(COMPONENT_NAME20, ["root", "horizontal", "vertical"]);
// node_modules/@mui/base/useTabs/useTabs.js
init_extends();
var React65 = __toESM(require_react());
init_utils();
function useTabs(parameters) {
const {
value: valueProp,
defaultValue,
onChange,
orientation = "horizontal",
direction = "ltr",
selectionFollowsFocus = false
} = parameters;
const [value, setValue] = useControlled({
controlled: valueProp,
default: defaultValue,
name: "Tabs",
state: "value"
});
const onSelected = React65.useCallback((event, newValue) => {
setValue(newValue);
onChange == null || onChange(event, newValue);
}, [onChange, setValue]);
const {
subitems: tabPanels,
contextValue: compoundComponentContextValue
} = useCompoundParent();
const tabIdLookup = React65.useRef(() => void 0);
const getTabPanelId = React65.useCallback((tabValue) => {
var _tabPanels$get;
return (_tabPanels$get = tabPanels.get(tabValue)) == null ? void 0 : _tabPanels$get.id;
}, [tabPanels]);
const getTabId = React65.useCallback((tabPanelId) => {
return tabIdLookup.current(tabPanelId);
}, []);
const registerTabIdLookup = React65.useCallback((lookupFunction) => {
tabIdLookup.current = lookupFunction;
}, []);
return {
contextValue: _extends({
direction,
getTabId,
getTabPanelId,
onSelected,
orientation,
registerTabIdLookup,
selectionFollowsFocus,
value
}, compoundComponentContextValue)
};
}
// node_modules/@mui/base/useTabs/TabsProvider.js
var React67 = __toESM(require_react());
// node_modules/@mui/base/Tabs/TabsContext.js
var React66 = __toESM(require_react());
var TabsContext = React66.createContext(null);
if (true) {
TabsContext.displayName = "TabsContext";
}
function useTabsContext() {
const context = React66.useContext(TabsContext);
if (context == null) {
throw new Error("No TabsContext provided");
}
return context;
}
// node_modules/@mui/base/useTabs/TabsProvider.js
var import_jsx_runtime45 = __toESM(require_jsx_runtime());
function TabsProvider(props) {
const {
value: valueProp,
children
} = props;
const {
direction,
getItemIndex,
onSelected,
orientation,
registerItem,
registerTabIdLookup,
selectionFollowsFocus,
totalSubitemCount,
value,
getTabId,
getTabPanelId
} = valueProp;
const compoundComponentContextValue = React67.useMemo(() => ({
getItemIndex,
registerItem,
totalSubitemCount
}), [registerItem, getItemIndex, totalSubitemCount]);
const tabsContextValue = React67.useMemo(() => ({
direction,
getTabId,
getTabPanelId,
onSelected,
orientation,
registerTabIdLookup,
selectionFollowsFocus,
value
}), [direction, getTabId, getTabPanelId, onSelected, orientation, registerTabIdLookup, selectionFollowsFocus, value]);
return (0, import_jsx_runtime45.jsx)(CompoundComponentContext.Provider, {
value: compoundComponentContextValue,
children: (0, import_jsx_runtime45.jsx)(TabsContext.Provider, {
value: tabsContextValue,
children
})
});
}
// node_modules/@mui/base/Tabs/Tabs.js
var import_jsx_runtime46 = __toESM(require_jsx_runtime());
var _excluded25 = ["children", "value", "defaultValue", "orientation", "direction", "onChange", "selectionFollowsFocus", "slotProps", "slots"];
var useUtilityClasses21 = (ownerState) => {
const {
orientation
} = ownerState;
const slots = {
root: ["root", orientation]
};
return composeClasses(slots, useClassNamesOverride(getTabsUtilityClass));
};
var Tabs = React68.forwardRef(function Tabs2(props, forwardedRef) {
var _slots$root;
const {
children,
orientation = "horizontal",
direction = "ltr",
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded25);
const ownerState = _extends({}, props, {
orientation,
direction
});
const {
contextValue
} = useTabs(ownerState);
const classes = useUtilityClasses21(ownerState);
const TabsRoot = (_slots$root = slots.root) != null ? _slots$root : "div";
const tabsRootProps = useSlotProps({
elementType: TabsRoot,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
additionalProps: {
ref: forwardedRef
},
ownerState,
className: classes.root
});
return (0, import_jsx_runtime46.jsx)(TabsRoot, _extends({}, tabsRootProps, {
children: (0, import_jsx_runtime46.jsx)(TabsProvider, {
value: contextValue,
children
})
}));
});
true ? Tabs.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component.
*/
children: import_prop_types28.default.node,
/**
* @ignore
*/
className: import_prop_types28.default.string,
/**
* The default value. Use when the component is not controlled.
*/
defaultValue: import_prop_types28.default.oneOfType([import_prop_types28.default.number, import_prop_types28.default.string]),
/**
* The direction of the text.
* @default 'ltr'
*/
direction: import_prop_types28.default.oneOf(["ltr", "rtl"]),
/**
* Callback invoked when new value is being set.
*/
onChange: import_prop_types28.default.func,
/**
* The component orientation (layout flow direction).
* @default 'horizontal'
*/
orientation: import_prop_types28.default.oneOf(["horizontal", "vertical"]),
/**
* If `true` the selected tab changes on focus. Otherwise it only
* changes on activation.
*/
selectionFollowsFocus: import_prop_types28.default.bool,
/**
* The props used for each slot inside the Tabs.
* @default {}
*/
slotProps: import_prop_types28.default.shape({
root: import_prop_types28.default.oneOfType([import_prop_types28.default.func, import_prop_types28.default.object])
}),
/**
* The components used for each slot inside the Tabs.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types28.default.shape({
root: import_prop_types28.default.elementType
}),
/**
* The value of the currently selected `Tab`.
* If you don't want any selected `Tab`, you can set this prop to `null`.
*/
value: import_prop_types28.default.oneOfType([import_prop_types28.default.number, import_prop_types28.default.string])
} : void 0;
// node_modules/@mui/base/useTabPanel/useTabPanel.js
function tabPanelValueGenerator(otherTabPanelValues) {
return otherTabPanelValues.size;
}
function useTabPanel(parameters) {
const {
value: valueParam,
id: idParam,
rootRef: externalRef
} = parameters;
const context = useTabsContext();
if (context === null) {
throw new Error("No TabContext provided");
}
const {
value: selectedTabValue,
getTabId
} = context;
const id = useId(idParam);
const ref = React69.useRef(null);
const handleRef = useForkRef(ref, externalRef);
const metadata = React69.useMemo(() => ({
id,
ref
}), [id]);
const {
id: value
} = useCompoundItem(valueParam != null ? valueParam : tabPanelValueGenerator, metadata);
const hidden = value !== selectedTabValue;
const correspondingTabId = value !== void 0 ? getTabId(value) : void 0;
const getRootProps = (externalProps = {}) => {
return _extends({
"aria-labelledby": correspondingTabId != null ? correspondingTabId : void 0,
hidden,
id: id != null ? id : void 0
}, externalProps, {
ref: handleRef
});
};
return {
hidden,
getRootProps,
rootRef: handleRef
};
}
// node_modules/@mui/base/TabPanel/TabPanel.js
var import_jsx_runtime47 = __toESM(require_jsx_runtime());
var _excluded26 = ["children", "value", "slotProps", "slots"];
var useUtilityClasses22 = (ownerState) => {
const {
hidden
} = ownerState;
const slots = {
root: ["root", hidden && "hidden"]
};
return composeClasses(slots, useClassNamesOverride(getTabPanelUtilityClass));
};
var TabPanel = React70.forwardRef(function TabPanel2(props, forwardedRef) {
var _slots$root;
const {
children,
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded26);
const {
hidden,
getRootProps
} = useTabPanel(props);
const ownerState = _extends({}, props, {
hidden
});
const classes = useUtilityClasses22(ownerState);
const TabPanelRoot = (_slots$root = slots.root) != null ? _slots$root : "div";
const tabPanelRootProps = useSlotProps({
elementType: TabPanelRoot,
getSlotProps: getRootProps,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
additionalProps: {
role: "tabpanel",
ref: forwardedRef
},
ownerState,
className: classes.root
});
return (0, import_jsx_runtime47.jsx)(TabPanelRoot, _extends({}, tabPanelRootProps, {
children: !hidden && children
}));
});
true ? TabPanel.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component.
*/
children: import_prop_types29.default.node,
/**
* @ignore
*/
className: import_prop_types29.default.string,
/**
* The props used for each slot inside the TabPanel.
* @default {}
*/
slotProps: import_prop_types29.default.shape({
root: import_prop_types29.default.oneOfType([import_prop_types29.default.func, import_prop_types29.default.object])
}),
/**
* The components used for each slot inside the TabPanel.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types29.default.shape({
root: import_prop_types29.default.elementType
}),
/**
* The value of the TabPanel. It will be shown when the Tab with the corresponding value is selected.
* If not provided, it will fall back to the index of the panel.
* It is recommended to explicitly provide it, as it's required for the tab panel to be rendered on the server.
*/
value: import_prop_types29.default.oneOfType([import_prop_types29.default.number, import_prop_types29.default.string])
} : void 0;
// node_modules/@mui/base/TabsList/TabsList.js
init_extends();
init_objectWithoutPropertiesLoose();
var React73 = __toESM(require_react());
var import_prop_types30 = __toESM(require_prop_types());
// node_modules/@mui/base/TabsList/tabsListClasses.js
var COMPONENT_NAME21 = "TabsList";
function getTabsListUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME21, slot);
}
var tabsListClasses = generateUtilityClasses2(COMPONENT_NAME21, ["root", "horizontal", "vertical"]);
// node_modules/@mui/base/useTabsList/useTabsList.js
init_extends();
var React71 = __toESM(require_react());
// node_modules/@mui/base/useTabsList/useTabsList.types.js
var TabsListActionTypes = {
valueChange: "valueChange"
};
// node_modules/@mui/base/useTabsList/tabsListReducer.js
init_extends();
function tabsListReducer(state, action) {
if (action.type === TabsListActionTypes.valueChange) {
return _extends({}, state, {
highlightedValue: action.value
});
}
const newState = listReducer(state, action);
const {
context: {
selectionFollowsFocus
}
} = action;
if (action.type === ListActionTypes.itemsChange) {
if (newState.selectedValues.length > 0) {
return _extends({}, newState, {
highlightedValue: newState.selectedValues[0]
});
}
moveHighlight(null, "reset", action.context);
}
if (selectionFollowsFocus && newState.highlightedValue != null) {
return _extends({}, newState, {
selectedValues: [newState.highlightedValue]
});
}
return newState;
}
// node_modules/@mui/base/useTabsList/useTabsList.js
function useTabsList(parameters) {
var _selectedValues$;
const {
rootRef: externalRef
} = parameters;
const {
direction = "ltr",
onSelected,
orientation = "horizontal",
value,
registerTabIdLookup,
selectionFollowsFocus
} = useTabsContext();
const {
subitems,
contextValue: compoundComponentContextValue
} = useCompoundParent();
const tabIdLookup = React71.useCallback((tabValue) => {
var _subitems$get;
return (_subitems$get = subitems.get(tabValue)) == null ? void 0 : _subitems$get.id;
}, [subitems]);
registerTabIdLookup(tabIdLookup);
const subitemKeys = React71.useMemo(() => Array.from(subitems.keys()), [subitems]);
const getTabElement = React71.useCallback((tabValue) => {
var _subitems$get$ref$cur, _subitems$get2;
if (tabValue == null) {
return null;
}
return (_subitems$get$ref$cur = (_subitems$get2 = subitems.get(tabValue)) == null ? void 0 : _subitems$get2.ref.current) != null ? _subitems$get$ref$cur : null;
}, [subitems]);
const isRtl = direction === "rtl";
let listOrientation;
if (orientation === "vertical") {
listOrientation = "vertical";
} else {
listOrientation = isRtl ? "horizontal-rtl" : "horizontal-ltr";
}
const handleChange = React71.useCallback((event, newValue) => {
var _newValue$;
onSelected(event, (_newValue$ = newValue[0]) != null ? _newValue$ : null);
}, [onSelected]);
const controlledProps = React71.useMemo(() => {
if (value === void 0) {
return {};
}
return value != null ? {
selectedValues: [value]
} : {
selectedValues: []
};
}, [value]);
const isItemDisabled = React71.useCallback((item) => {
var _subitems$get$disable, _subitems$get3;
return (_subitems$get$disable = (_subitems$get3 = subitems.get(item)) == null ? void 0 : _subitems$get3.disabled) != null ? _subitems$get$disable : false;
}, [subitems]);
const {
contextValue: listContextValue,
dispatch,
getRootProps: getListboxRootProps,
state: {
highlightedValue,
selectedValues
},
rootRef: mergedRootRef
} = useList({
controlledProps,
disabledItemsFocusable: !selectionFollowsFocus,
focusManagement: "DOM",
getItemDomElement: getTabElement,
isItemDisabled,
items: subitemKeys,
rootRef: externalRef,
onChange: handleChange,
orientation: listOrientation,
reducerActionContext: React71.useMemo(() => ({
selectionFollowsFocus: selectionFollowsFocus || false
}), [selectionFollowsFocus]),
selectionMode: "single",
stateReducer: tabsListReducer
});
React71.useEffect(() => {
if (value === void 0) {
return;
}
if (value != null) {
dispatch({
type: TabsListActionTypes.valueChange,
value
});
}
}, [dispatch, value]);
const getRootProps = (externalProps = {}) => {
return _extends({}, externalProps, getListboxRootProps(externalProps), {
"aria-orientation": orientation === "vertical" ? "vertical" : void 0,
role: "tablist"
});
};
const contextValue = React71.useMemo(() => _extends({}, compoundComponentContextValue, listContextValue), [compoundComponentContextValue, listContextValue]);
return {
contextValue,
dispatch,
getRootProps,
highlightedValue,
isRtl,
orientation,
rootRef: mergedRootRef,
selectedValue: (_selectedValues$ = selectedValues[0]) != null ? _selectedValues$ : null
};
}
// node_modules/@mui/base/useTabsList/TabsListProvider.js
var React72 = __toESM(require_react());
var import_jsx_runtime48 = __toESM(require_jsx_runtime());
function TabsListProvider(props) {
const {
value,
children
} = props;
const {
dispatch,
getItemIndex,
getItemState,
registerItem,
totalSubitemCount
} = value;
const listContextValue = React72.useMemo(() => ({
dispatch,
getItemState,
getItemIndex
}), [dispatch, getItemIndex, getItemState]);
const compoundComponentContextValue = React72.useMemo(() => ({
getItemIndex,
registerItem,
totalSubitemCount
}), [registerItem, getItemIndex, totalSubitemCount]);
return (0, import_jsx_runtime48.jsx)(CompoundComponentContext.Provider, {
value: compoundComponentContextValue,
children: (0, import_jsx_runtime48.jsx)(ListContext.Provider, {
value: listContextValue,
children
})
});
}
// node_modules/@mui/base/TabsList/TabsList.js
var import_jsx_runtime49 = __toESM(require_jsx_runtime());
var _excluded27 = ["children", "slotProps", "slots"];
var useUtilityClasses23 = (ownerState) => {
const {
orientation
} = ownerState;
const slots = {
root: ["root", orientation]
};
return composeClasses(slots, useClassNamesOverride(getTabsListUtilityClass));
};
var TabsList = React73.forwardRef(function TabsList2(props, forwardedRef) {
var _slots$root;
const {
children,
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded27);
const {
isRtl,
orientation,
getRootProps,
contextValue
} = useTabsList({
rootRef: forwardedRef
});
const ownerState = _extends({}, props, {
isRtl,
orientation
});
const classes = useUtilityClasses23(ownerState);
const TabsListRoot = (_slots$root = slots.root) != null ? _slots$root : "div";
const tabsListRootProps = useSlotProps({
elementType: TabsListRoot,
getSlotProps: getRootProps,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
ownerState,
className: classes.root
});
return (0, import_jsx_runtime49.jsx)(TabsListProvider, {
value: contextValue,
children: (0, import_jsx_runtime49.jsx)(TabsListRoot, _extends({}, tabsListRootProps, {
children
}))
});
});
true ? TabsList.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component.
*/
children: import_prop_types30.default.node,
/**
* @ignore
*/
className: import_prop_types30.default.string,
/**
* The props used for each slot inside the TabsList.
* @default {}
*/
slotProps: import_prop_types30.default.shape({
root: import_prop_types30.default.oneOfType([import_prop_types30.default.func, import_prop_types30.default.object])
}),
/**
* The components used for each slot inside the TabsList.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types30.default.shape({
root: import_prop_types30.default.elementType
})
} : void 0;
// node_modules/@mui/base/Tab/Tab.js
init_extends();
init_objectWithoutPropertiesLoose();
var React75 = __toESM(require_react());
var import_prop_types31 = __toESM(require_prop_types());
init_utils();
// node_modules/@mui/base/Tab/tabClasses.js
var COMPONENT_NAME22 = "Tab";
function getTabUtilityClass(slot) {
return generateUtilityClass2(COMPONENT_NAME22, slot);
}
var tabClasses = generateUtilityClasses2(COMPONENT_NAME22, ["root", "selected", "disabled"]);
// node_modules/@mui/base/useTab/useTab.js
init_extends();
var React74 = __toESM(require_react());
init_utils();
function tabValueGenerator(otherTabValues) {
return otherTabValues.size;
}
function useTab(parameters) {
const {
value: valueParam,
rootRef: externalRef,
disabled = false,
id: idParam
} = parameters;
const tabRef = React74.useRef(null);
const id = useId(idParam);
const {
value: selectedValue,
selectionFollowsFocus,
getTabPanelId
} = useTabsContext();
const tabMetadata = React74.useMemo(() => ({
disabled,
ref: tabRef,
id
}), [disabled, tabRef, id]);
const {
id: value,
index: index2,
totalItemCount: totalTabsCount
} = useCompoundItem(valueParam != null ? valueParam : tabValueGenerator, tabMetadata);
const {
getRootProps: getTabProps,
highlighted,
selected
} = useListItem({
item: value
});
const {
getRootProps: getButtonProps,
rootRef: buttonRefHandler,
active,
focusVisible,
setFocusVisible
} = useButton({
disabled,
focusableWhenDisabled: !selectionFollowsFocus,
type: "button"
});
const handleRef = useForkRef(tabRef, externalRef, buttonRefHandler);
const tabPanelId = value !== void 0 ? getTabPanelId(value) : void 0;
const getRootProps = (externalProps = {}) => {
const externalEventHandlers = extractEventHandlers(externalProps);
const getCombinedRootProps = combineHooksSlotProps(getTabProps, getButtonProps);
return _extends({}, externalProps, getCombinedRootProps(externalEventHandlers), {
role: "tab",
"aria-controls": tabPanelId,
"aria-selected": selected,
id,
ref: handleRef
});
};
return {
getRootProps,
active,
focusVisible,
highlighted,
index: index2,
rootRef: handleRef,
// the `selected` state isn't set on the server (it relies on effects to be calculated),
// so we fall back to checking the `value` prop with the selectedValue from the TabsContext
selected: selected || value === selectedValue,
setFocusVisible,
totalTabsCount
};
}
// node_modules/@mui/base/Tab/Tab.js
var import_jsx_runtime50 = __toESM(require_jsx_runtime());
var _excluded28 = ["action", "children", "disabled", "onChange", "onClick", "onFocus", "slotProps", "slots", "value"];
var useUtilityClasses24 = (ownerState) => {
const {
selected,
disabled
} = ownerState;
const slots = {
root: ["root", selected && "selected", disabled && "disabled"]
};
return composeClasses(slots, useClassNamesOverride(getTabUtilityClass));
};
var Tab = React75.forwardRef(function Tab2(props, forwardedRef) {
var _slots$root;
const {
children,
disabled = false,
slotProps = {},
slots = {},
value
} = props, other = _objectWithoutPropertiesLoose(props, _excluded28);
const tabRef = React75.useRef();
const handleRef = useForkRef(tabRef, forwardedRef);
const {
active,
highlighted,
selected,
getRootProps
} = useTab(_extends({}, props, {
rootRef: handleRef,
value
}));
const ownerState = _extends({}, props, {
active,
disabled,
highlighted,
selected
});
const classes = useUtilityClasses24(ownerState);
const TabRoot = (_slots$root = slots.root) != null ? _slots$root : "button";
const tabRootProps = useSlotProps({
elementType: TabRoot,
getSlotProps: getRootProps,
externalSlotProps: slotProps.root,
externalForwardedProps: other,
additionalProps: {
ref: forwardedRef
},
ownerState,
className: classes.root
});
return (0, import_jsx_runtime50.jsx)(TabRoot, _extends({}, tabRootProps, {
children
}));
});
true ? Tab.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the TypeScript types and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* A ref for imperative actions. It currently only supports `focusVisible()` action.
*/
action: import_prop_types31.default.oneOfType([import_prop_types31.default.func, import_prop_types31.default.shape({
current: import_prop_types31.default.shape({
focusVisible: import_prop_types31.default.func.isRequired
})
})]),
/**
* @ignore
*/
children: import_prop_types31.default.node,
/**
* If `true`, the component is disabled.
* @default false
*/
disabled: import_prop_types31.default.bool,
/**
* Callback invoked when new value is being set.
*/
onChange: import_prop_types31.default.func,
/**
* The props used for each slot inside the Tab.
* @default {}
*/
slotProps: import_prop_types31.default.shape({
root: import_prop_types31.default.oneOfType([import_prop_types31.default.func, import_prop_types31.default.object])
}),
/**
* The components used for each slot inside the Tab.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types31.default.shape({
root: import_prop_types31.default.elementType
}),
/**
* You can provide your own value. Otherwise, it falls back to the child position index.
*/
value: import_prop_types31.default.oneOfType([import_prop_types31.default.number, import_prop_types31.default.string])
} : void 0;
// node_modules/@mui/base/Transitions/CssAnimation.js
init_extends();
init_objectWithoutPropertiesLoose();
var React76 = __toESM(require_react());
var import_prop_types32 = __toESM(require_prop_types());
init_clsx();
var import_jsx_runtime51 = __toESM(require_jsx_runtime());
var _excluded29 = ["children", "className", "enterAnimationName", "enterClassName", "exitAnimationName", "exitClassName"];
function CssAnimation(props) {
const {
children,
className,
enterAnimationName,
enterClassName,
exitAnimationName,
exitClassName
} = props, other = _objectWithoutPropertiesLoose(props, _excluded29);
const {
requestedEnter,
onExited
} = useTransitionStateManager();
const hasExited = React76.useRef(true);
React76.useEffect(() => {
if (requestedEnter && hasExited.current) {
hasExited.current = false;
}
}, [requestedEnter]);
const handleAnimationEnd = React76.useCallback((event) => {
if (event.animationName === exitAnimationName) {
onExited();
hasExited.current = true;
} else if (event.animationName === enterAnimationName) {
hasExited.current = false;
}
}, [onExited, exitAnimationName, enterAnimationName]);
return (0, import_jsx_runtime51.jsx)("div", _extends({
onAnimationEnd: handleAnimationEnd,
className: clsx_default(className, requestedEnter ? enterClassName : exitClassName)
}, other, {
children
}));
}
true ? CssAnimation.propTypes = {
children: import_prop_types32.default.node,
className: import_prop_types32.default.string,
enterAnimationName: import_prop_types32.default.string,
enterClassName: import_prop_types32.default.string,
exitAnimationName: import_prop_types32.default.string,
exitClassName: import_prop_types32.default.string
} : void 0;
// node_modules/@mui/base/Transitions/CssTransition.js
init_extends();
init_objectWithoutPropertiesLoose();
var React77 = __toESM(require_react());
var import_prop_types33 = __toESM(require_prop_types());
init_clsx();
var import_jsx_runtime52 = __toESM(require_jsx_runtime());
var _excluded30 = ["children", "className", "lastTransitionedPropertyOnExit", "enterClassName", "exitClassName"];
var CssTransition = React77.forwardRef(function CssTransition2(props, forwardedRef) {
const {
children,
className,
lastTransitionedPropertyOnExit,
enterClassName,
exitClassName
} = props, other = _objectWithoutPropertiesLoose(props, _excluded30);
const {
requestedEnter,
onExited
} = useTransitionStateManager();
const [isEntering, setIsEntering] = React77.useState(false);
React77.useEffect(() => {
if (requestedEnter) {
requestAnimationFrame(() => {
setIsEntering(true);
});
} else {
setIsEntering(false);
}
}, [requestedEnter]);
const handleTransitionEnd = React77.useCallback((event) => {
if (!requestedEnter && (lastTransitionedPropertyOnExit == null || event.propertyName === lastTransitionedPropertyOnExit)) {
onExited();
}
}, [onExited, requestedEnter, lastTransitionedPropertyOnExit]);
return (0, import_jsx_runtime52.jsx)("div", _extends({
onTransitionEnd: handleTransitionEnd,
className: clsx_default(className, isEntering ? enterClassName : exitClassName)
}, other, {
ref: forwardedRef,
children
}));
});
true ? CssTransition.propTypes = {
children: import_prop_types33.default.node,
className: import_prop_types33.default.string,
enterClassName: import_prop_types33.default.string,
exitClassName: import_prop_types33.default.string,
lastTransitionedPropertyOnEnter: import_prop_types33.default.string,
lastTransitionedPropertyOnExit: import_prop_types33.default.string
} : void 0;
// node_modules/@mui/material/InputBase/InputBase.js
init_composeClasses();
// node_modules/@mui/material/FormControl/formControlState.js
function formControlState({
props,
states,
muiFormControl
}) {
return states.reduce((acc, state) => {
acc[state] = props[state];
if (muiFormControl) {
if (typeof props[state] === "undefined") {
acc[state] = muiFormControl[state];
}
}
return acc;
}, {});
}
// node_modules/@mui/material/InputBase/InputBase.js
init_styled();
init_useThemeProps();
init_capitalize();
init_useForkRef();
init_useEnhancedEffect();
// node_modules/@mui/material/InputBase/utils.js
function hasValue2(value) {
return value != null && !(Array.isArray(value) && value.length === 0);
}
function isFilled(obj, SSR = false) {
return obj && (hasValue2(obj.value) && obj.value !== "" || SSR && hasValue2(obj.defaultValue) && obj.defaultValue !== "");
}
function isAdornedStart(obj) {
return obj.startAdornment;
}
// node_modules/@mui/material/InputBase/InputBase.js
var import_jsx_runtime53 = __toESM(require_jsx_runtime());
var import_jsx_runtime54 = __toESM(require_jsx_runtime());
var _excluded31 = ["aria-describedby", "autoComplete", "autoFocus", "className", "color", "components", "componentsProps", "defaultValue", "disabled", "disableInjectingGlobalStyles", "endAdornment", "error", "fullWidth", "id", "inputComponent", "inputProps", "inputRef", "margin", "maxRows", "minRows", "multiline", "name", "onBlur", "onChange", "onClick", "onFocus", "onKeyDown", "onKeyUp", "placeholder", "readOnly", "renderSuffix", "rows", "size", "slotProps", "slots", "startAdornment", "type", "value"];
var rootOverridesResolver = (props, styles4) => {
const {
ownerState
} = props;
return [styles4.root, ownerState.formControl && styles4.formControl, ownerState.startAdornment && styles4.adornedStart, ownerState.endAdornment && styles4.adornedEnd, ownerState.error && styles4.error, ownerState.size === "small" && styles4.sizeSmall, ownerState.multiline && styles4.multiline, ownerState.color && styles4[`color${capitalize_default(ownerState.color)}`], ownerState.fullWidth && styles4.fullWidth, ownerState.hiddenLabel && styles4.hiddenLabel];
};
var inputOverridesResolver = (props, styles4) => {
const {
ownerState
} = props;
return [styles4.input, ownerState.size === "small" && styles4.inputSizeSmall, ownerState.multiline && styles4.inputMultiline, ownerState.type === "search" && styles4.inputTypeSearch, ownerState.startAdornment && styles4.inputAdornedStart, ownerState.endAdornment && styles4.inputAdornedEnd, ownerState.hiddenLabel && styles4.inputHiddenLabel];
};
var useUtilityClasses25 = (ownerState) => {
const {
classes,
color,
disabled,
error,
endAdornment,
focused,
formControl,
fullWidth,
hiddenLabel,
multiline,
readOnly,
size: size3,
startAdornment,
type
} = ownerState;
const slots = {
root: ["root", `color${capitalize_default(color)}`, disabled && "disabled", error && "error", fullWidth && "fullWidth", focused && "focused", formControl && "formControl", size3 && size3 !== "medium" && `size${capitalize_default(size3)}`, multiline && "multiline", startAdornment && "adornedStart", endAdornment && "adornedEnd", hiddenLabel && "hiddenLabel", readOnly && "readOnly"],
input: ["input", disabled && "disabled", type === "search" && "inputTypeSearch", multiline && "inputMultiline", size3 === "small" && "inputSizeSmall", hiddenLabel && "inputHiddenLabel", startAdornment && "inputAdornedStart", endAdornment && "inputAdornedEnd", readOnly && "readOnly"]
};
return composeClasses(slots, getInputBaseUtilityClass, classes);
};
var InputBaseRoot = styled_default("div", {
name: "MuiInputBase",
slot: "Root",
overridesResolver: rootOverridesResolver
})(({
theme,
ownerState
}) => _extends({}, theme.typography.body1, {
color: (theme.vars || theme).palette.text.primary,
lineHeight: "1.4375em",
// 23px
boxSizing: "border-box",
// Prevent padding issue with fullWidth.
position: "relative",
cursor: "text",
display: "inline-flex",
alignItems: "center",
[`&.${inputBaseClasses_default.disabled}`]: {
color: (theme.vars || theme).palette.text.disabled,
cursor: "default"
}
}, ownerState.multiline && _extends({
padding: "4px 0 5px"
}, ownerState.size === "small" && {
paddingTop: 1
}), ownerState.fullWidth && {
width: "100%"
}));
var InputBaseComponent = styled_default("input", {
name: "MuiInputBase",
slot: "Input",
overridesResolver: inputOverridesResolver
})(({
theme,
ownerState
}) => {
const light = theme.palette.mode === "light";
const placeholder = _extends({
color: "currentColor"
}, theme.vars ? {
opacity: theme.vars.opacity.inputPlaceholder
} : {
opacity: light ? 0.42 : 0.5
}, {
transition: theme.transitions.create("opacity", {
duration: theme.transitions.duration.shorter
})
});
const placeholderHidden = {
opacity: "0 !important"
};
const placeholderVisible = theme.vars ? {
opacity: theme.vars.opacity.inputPlaceholder
} : {
opacity: light ? 0.42 : 0.5
};
return _extends({
font: "inherit",
letterSpacing: "inherit",
color: "currentColor",
padding: "4px 0 5px",
border: 0,
boxSizing: "content-box",
background: "none",
height: "1.4375em",
// Reset 23pxthe native input line-height
margin: 0,
// Reset for Safari
WebkitTapHighlightColor: "transparent",
display: "block",
// Make the flex item shrink with Firefox
minWidth: 0,
width: "100%",
// Fix IE11 width issue
animationName: "mui-auto-fill-cancel",
animationDuration: "10ms",
"&::-webkit-input-placeholder": placeholder,
"&::-moz-placeholder": placeholder,
// Firefox 19+
"&:-ms-input-placeholder": placeholder,
// IE11
"&::-ms-input-placeholder": placeholder,
// Edge
"&:focus": {
outline: 0
},
// Reset Firefox invalid required input style
"&:invalid": {
boxShadow: "none"
},
"&::-webkit-search-decoration": {
// Remove the padding when type=search.
WebkitAppearance: "none"
},
// Show and hide the placeholder logic
[`label[data-shrink=false] + .${inputBaseClasses_default.formControl} &`]: {
"&::-webkit-input-placeholder": placeholderHidden,
"&::-moz-placeholder": placeholderHidden,
// Firefox 19+
"&:-ms-input-placeholder": placeholderHidden,
// IE11
"&::-ms-input-placeholder": placeholderHidden,
// Edge
"&:focus::-webkit-input-placeholder": placeholderVisible,
"&:focus::-moz-placeholder": placeholderVisible,
// Firefox 19+
"&:focus:-ms-input-placeholder": placeholderVisible,
// IE11
"&:focus::-ms-input-placeholder": placeholderVisible
// Edge
},
[`&.${inputBaseClasses_default.disabled}`]: {
opacity: 1,
// Reset iOS opacity
WebkitTextFillColor: (theme.vars || theme).palette.text.disabled
// Fix opacity Safari bug
},
"&:-webkit-autofill": {
animationDuration: "5000s",
animationName: "mui-auto-fill"
}
}, ownerState.size === "small" && {
paddingTop: 1
}, ownerState.multiline && {
height: "auto",
resize: "none",
padding: 0,
paddingTop: 0
}, ownerState.type === "search" && {
// Improve type search style.
MozAppearance: "textfield"
});
});
var inputGlobalStyles = (0, import_jsx_runtime53.jsx)(GlobalStyles_default, {
styles: {
"@keyframes mui-auto-fill": {
from: {
display: "block"
}
},
"@keyframes mui-auto-fill-cancel": {
from: {
display: "block"
}
}
}
});
var InputBase = React78.forwardRef(function InputBase2(inProps, ref) {
var _slotProps$input;
const props = useThemeProps({
props: inProps,
name: "MuiInputBase"
});
const {
"aria-describedby": ariaDescribedby,
autoComplete,
autoFocus,
className,
components = {},
componentsProps = {},
defaultValue,
disabled,
disableInjectingGlobalStyles,
endAdornment,
fullWidth = false,
id,
inputComponent = "input",
inputProps: inputPropsProp = {},
inputRef: inputRefProp,
maxRows,
minRows,
multiline = false,
name,
onBlur,
onChange,
onClick,
onFocus,
onKeyDown,
onKeyUp,
placeholder,
readOnly,
renderSuffix,
rows,
slotProps = {},
slots = {},
startAdornment,
type = "text",
value: valueProp
} = props, other = _objectWithoutPropertiesLoose(props, _excluded31);
const value = inputPropsProp.value != null ? inputPropsProp.value : valueProp;
const {
current: isControlled
} = React78.useRef(value != null);
const inputRef = React78.useRef();
const handleInputRefWarning = React78.useCallback((instance) => {
if (true) {
if (instance && instance.nodeName !== "INPUT" && !instance.focus) {
console.error(["MUI: You have provided a `inputComponent` to the input component", "that does not correctly handle the `ref` prop.", "Make sure the `ref` prop is called with a HTMLInputElement."].join("\n"));
}
}
}, []);
const handleInputRef = useForkRef_default(inputRef, inputRefProp, inputPropsProp.ref, handleInputRefWarning);
const [focused, setFocused] = React78.useState(false);
const muiFormControl = useFormControl();
if (true) {
React78.useEffect(() => {
if (muiFormControl) {
return muiFormControl.registerEffect();
}
return void 0;
}, [muiFormControl]);
}
const fcs = formControlState({
props,
muiFormControl,
states: ["color", "disabled", "error", "hiddenLabel", "size", "required", "filled"]
});
fcs.focused = muiFormControl ? muiFormControl.focused : focused;
React78.useEffect(() => {
if (!muiFormControl && disabled && focused) {
setFocused(false);
if (onBlur) {
onBlur();
}
}
}, [muiFormControl, disabled, focused, onBlur]);
const onFilled = muiFormControl && muiFormControl.onFilled;
const onEmpty = muiFormControl && muiFormControl.onEmpty;
const checkDirty = React78.useCallback((obj) => {
if (isFilled(obj)) {
if (onFilled) {
onFilled();
}
} else if (onEmpty) {
onEmpty();
}
}, [onFilled, onEmpty]);
useEnhancedEffect_default2(() => {
if (isControlled) {
checkDirty({
value
});
}
}, [value, checkDirty, isControlled]);
const handleFocus = (event) => {
if (fcs.disabled) {
event.stopPropagation();
return;
}
if (onFocus) {
onFocus(event);
}
if (inputPropsProp.onFocus) {
inputPropsProp.onFocus(event);
}
if (muiFormControl && muiFormControl.onFocus) {
muiFormControl.onFocus(event);
} else {
setFocused(true);
}
};
const handleBlur2 = (event) => {
if (onBlur) {
onBlur(event);
}
if (inputPropsProp.onBlur) {
inputPropsProp.onBlur(event);
}
if (muiFormControl && muiFormControl.onBlur) {
muiFormControl.onBlur(event);
} else {
setFocused(false);
}
};
const handleChange = (event, ...args) => {
if (!isControlled) {
const element = event.target || inputRef.current;
if (element == null) {
throw new Error(true ? `MUI: Expected valid input target. Did you use a custom \`inputComponent\` and forget to forward refs? See https://mui.com/r/input-component-ref-interface for more info.` : formatMuiErrorMessage(1));
}
checkDirty({
value: element.value
});
}
if (inputPropsProp.onChange) {
inputPropsProp.onChange(event, ...args);
}
if (onChange) {
onChange(event, ...args);
}
};
React78.useEffect(() => {
checkDirty(inputRef.current);
}, []);
const handleClick = (event) => {
if (inputRef.current && event.currentTarget === event.target) {
inputRef.current.focus();
}
if (onClick) {
onClick(event);
}
};
let InputComponent = inputComponent;
let inputProps = inputPropsProp;
if (multiline && InputComponent === "input") {
if (rows) {
if (true) {
if (minRows || maxRows) {
console.warn("MUI: You can not use the `minRows` or `maxRows` props when the input `rows` prop is set.");
}
}
inputProps = _extends({
type: void 0,
minRows: rows,
maxRows: rows
}, inputProps);
} else {
inputProps = _extends({
type: void 0,
maxRows,
minRows
}, inputProps);
}
InputComponent = TextareaAutosize;
}
const handleAutoFill = (event) => {
checkDirty(event.animationName === "mui-auto-fill-cancel" ? inputRef.current : {
value: "x"
});
};
React78.useEffect(() => {
if (muiFormControl) {
muiFormControl.setAdornedStart(Boolean(startAdornment));
}
}, [muiFormControl, startAdornment]);
const ownerState = _extends({}, props, {
color: fcs.color || "primary",
disabled: fcs.disabled,
endAdornment,
error: fcs.error,
focused: fcs.focused,
formControl: muiFormControl,
fullWidth,
hiddenLabel: fcs.hiddenLabel,
multiline,
size: fcs.size,
startAdornment,
type
});
const classes = useUtilityClasses25(ownerState);
const Root = slots.root || components.Root || InputBaseRoot;
const rootProps = slotProps.root || componentsProps.root || {};
const Input5 = slots.input || components.Input || InputBaseComponent;
inputProps = _extends({}, inputProps, (_slotProps$input = slotProps.input) != null ? _slotProps$input : componentsProps.input);
return (0, import_jsx_runtime54.jsxs)(React78.Fragment, {
children: [!disableInjectingGlobalStyles && inputGlobalStyles, (0, import_jsx_runtime54.jsxs)(Root, _extends({}, rootProps, !isHostComponent(Root) && {
ownerState: _extends({}, ownerState, rootProps.ownerState)
}, {
ref,
onClick: handleClick
}, other, {
className: clsx_default(classes.root, rootProps.className, className, readOnly && "MuiInputBase-readOnly"),
children: [startAdornment, (0, import_jsx_runtime53.jsx)(FormControlContext_default.Provider, {
value: null,
children: (0, import_jsx_runtime53.jsx)(Input5, _extends({
ownerState,
"aria-invalid": fcs.error,
"aria-describedby": ariaDescribedby,
autoComplete,
autoFocus,
defaultValue,
disabled: fcs.disabled,
id,
onAnimationStart: handleAutoFill,
name,
placeholder,
readOnly,
required: fcs.required,
rows,
value,
onKeyDown,
onKeyUp,
type
}, inputProps, !isHostComponent(Input5) && {
as: InputComponent,
ownerState: _extends({}, ownerState, inputProps.ownerState)
}, {
ref: handleInputRef,
className: clsx_default(classes.input, inputProps.className, readOnly && "MuiInputBase-readOnly"),
onBlur: handleBlur2,
onChange: handleChange,
onFocus: handleFocus
}))
}), endAdornment, renderSuffix ? renderSuffix(_extends({}, fcs, {
startAdornment
})) : null]
}))]
});
});
true ? InputBase.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* @ignore
*/
"aria-describedby": import_prop_types34.default.string,
/**
* This prop helps users to fill forms faster, especially on mobile devices.
* The name can be confusing, as it's more like an autofill.
* You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).
*/
autoComplete: import_prop_types34.default.string,
/**
* If `true`, the `input` element is focused during the first mount.
*/
autoFocus: import_prop_types34.default.bool,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types34.default.object,
/**
* @ignore
*/
className: import_prop_types34.default.string,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
* The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.
*/
color: import_prop_types34.default.oneOfType([import_prop_types34.default.oneOf(["primary", "secondary", "error", "info", "success", "warning"]), import_prop_types34.default.string]),
/**
* The components used for each slot inside.
*
* This prop is an alias for the `slots` prop.
* It's recommended to use the `slots` prop instead.
*
* @default {}
*/
components: import_prop_types34.default.shape({
Input: import_prop_types34.default.elementType,
Root: import_prop_types34.default.elementType
}),
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* This prop is an alias for the `slotProps` prop.
* It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.
*
* @default {}
*/
componentsProps: import_prop_types34.default.shape({
input: import_prop_types34.default.object,
root: import_prop_types34.default.object
}),
/**
* The default value. Use when the component is not controlled.
*/
defaultValue: import_prop_types34.default.any,
/**
* If `true`, the component is disabled.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
disabled: import_prop_types34.default.bool,
/**
* If `true`, GlobalStyles for the auto-fill keyframes will not be injected/removed on mount/unmount. Make sure to inject them at the top of your application.
* This option is intended to help with boosting the initial rendering performance if you are loading a big amount of Input components at once.
* @default false
*/
disableInjectingGlobalStyles: import_prop_types34.default.bool,
/**
* End `InputAdornment` for this component.
*/
endAdornment: import_prop_types34.default.node,
/**
* If `true`, the `input` will indicate an error.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
error: import_prop_types34.default.bool,
/**
* If `true`, the `input` will take up the full width of its container.
* @default false
*/
fullWidth: import_prop_types34.default.bool,
/**
* The id of the `input` element.
*/
id: import_prop_types34.default.string,
/**
* The component used for the `input` element.
* Either a string to use a HTML element or a component.
* @default 'input'
*/
inputComponent: elementTypeAcceptingRef_default,
/**
* [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.
* @default {}
*/
inputProps: import_prop_types34.default.object,
/**
* Pass a ref to the `input` element.
*/
inputRef: refType_default,
/**
* If `dense`, will adjust vertical spacing. This is normally obtained via context from
* FormControl.
* The prop defaults to the value (`'none'`) inherited from the parent FormControl component.
*/
margin: import_prop_types34.default.oneOf(["dense", "none"]),
/**
* Maximum number of rows to display when multiline option is set to true.
*/
maxRows: import_prop_types34.default.oneOfType([import_prop_types34.default.number, import_prop_types34.default.string]),
/**
* Minimum number of rows to display when multiline option is set to true.
*/
minRows: import_prop_types34.default.oneOfType([import_prop_types34.default.number, import_prop_types34.default.string]),
/**
* If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.
* @default false
*/
multiline: import_prop_types34.default.bool,
/**
* Name attribute of the `input` element.
*/
name: import_prop_types34.default.string,
/**
* Callback fired when the `input` is blurred.
*
* Notice that the first argument (event) might be undefined.
*/
onBlur: import_prop_types34.default.func,
/**
* Callback fired when the value is changed.
*
* @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.
* You can pull out the new value by accessing `event.target.value` (string).
*/
onChange: import_prop_types34.default.func,
/**
* @ignore
*/
onClick: import_prop_types34.default.func,
/**
* @ignore
*/
onFocus: import_prop_types34.default.func,
/**
* Callback fired when the `input` doesn't satisfy its constraints.
*/
onInvalid: import_prop_types34.default.func,
/**
* @ignore
*/
onKeyDown: import_prop_types34.default.func,
/**
* @ignore
*/
onKeyUp: import_prop_types34.default.func,
/**
* The short hint displayed in the `input` before the user enters a value.
*/
placeholder: import_prop_types34.default.string,
/**
* It prevents the user from changing the value of the field
* (not from interacting with the field).
*/
readOnly: import_prop_types34.default.bool,
/**
* @ignore
*/
renderSuffix: import_prop_types34.default.func,
/**
* If `true`, the `input` element is required.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
required: import_prop_types34.default.bool,
/**
* Number of rows to display when multiline option is set to true.
*/
rows: import_prop_types34.default.oneOfType([import_prop_types34.default.number, import_prop_types34.default.string]),
/**
* The size of the component.
*/
size: import_prop_types34.default.oneOfType([import_prop_types34.default.oneOf(["medium", "small"]), import_prop_types34.default.string]),
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.
*
* @default {}
*/
slotProps: import_prop_types34.default.shape({
input: import_prop_types34.default.object,
root: import_prop_types34.default.object
}),
/**
* The components used for each slot inside.
*
* This prop is an alias for the `components` prop, which will be deprecated in the future.
*
* @default {}
*/
slots: import_prop_types34.default.shape({
input: import_prop_types34.default.elementType,
root: import_prop_types34.default.elementType
}),
/**
* Start `InputAdornment` for this component.
*/
startAdornment: import_prop_types34.default.node,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types34.default.oneOfType([import_prop_types34.default.arrayOf(import_prop_types34.default.oneOfType([import_prop_types34.default.func, import_prop_types34.default.object, import_prop_types34.default.bool])), import_prop_types34.default.func, import_prop_types34.default.object]),
/**
* Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).
* @default 'text'
*/
type: import_prop_types34.default.string,
/**
* The value of the `input` element, required for a controlled component.
*/
value: import_prop_types34.default.any
} : void 0;
var InputBase_default = InputBase;
// node_modules/@mui/material/Input/inputClasses.js
init_extends();
init_generateUtilityClasses();
init_generateUtilityClass();
function getInputUtilityClass2(slot) {
return generateUtilityClass("MuiInput", slot);
}
var inputClasses2 = _extends({}, inputBaseClasses_default, generateUtilityClasses("MuiInput", ["root", "underline", "input"]));
var inputClasses_default = inputClasses2;
// node_modules/@mui/material/OutlinedInput/outlinedInputClasses.js
init_extends();
init_generateUtilityClasses();
init_generateUtilityClass();
function getOutlinedInputUtilityClass(slot) {
return generateUtilityClass("MuiOutlinedInput", slot);
}
var outlinedInputClasses = _extends({}, inputBaseClasses_default, generateUtilityClasses("MuiOutlinedInput", ["root", "notchedOutline", "input"]));
var outlinedInputClasses_default = outlinedInputClasses;
// node_modules/@mui/material/FilledInput/filledInputClasses.js
init_extends();
init_generateUtilityClasses();
init_generateUtilityClass();
function getFilledInputUtilityClass(slot) {
return generateUtilityClass("MuiFilledInput", slot);
}
var filledInputClasses = _extends({}, inputBaseClasses_default, generateUtilityClasses("MuiFilledInput", ["root", "underline", "input"]));
var filledInputClasses_default = filledInputClasses;
// node_modules/@mui/material/Autocomplete/autocompleteClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getAutocompleteUtilityClass(slot) {
return generateUtilityClass("MuiAutocomplete", slot);
}
var 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"]);
var autocompleteClasses_default = autocompleteClasses;
// node_modules/@mui/material/Autocomplete/Autocomplete.js
init_objectWithoutPropertiesLoose();
init_extends();
var React81 = __toESM(require_react());
var import_prop_types35 = __toESM(require_prop_types());
init_clsx();
init_integerPropType();
init_chainPropTypes();
init_composeClasses();
var import_colorManipulator2 = __toESM(require_colorManipulator());
// node_modules/@mui/material/internal/svg-icons/Close.js
var React79 = __toESM(require_react());
init_createSvgIcon();
var import_jsx_runtime55 = __toESM(require_jsx_runtime());
var Close_default = createSvgIcon((0, import_jsx_runtime55.jsx)("path", {
d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"
}), "Close");
// node_modules/@mui/material/internal/svg-icons/ArrowDropDown.js
var React80 = __toESM(require_react());
init_createSvgIcon();
var import_jsx_runtime56 = __toESM(require_jsx_runtime());
var ArrowDropDown_default = createSvgIcon((0, import_jsx_runtime56.jsx)("path", {
d: "M7 10l5 5 5-5z"
}), "ArrowDropDown");
// node_modules/@mui/material/Autocomplete/Autocomplete.js
init_useThemeProps();
init_styled();
init_capitalize();
init_useForkRef();
var import_jsx_runtime57 = __toESM(require_jsx_runtime());
var import_jsx_runtime58 = __toESM(require_jsx_runtime());
var import_react3 = __toESM(require_react());
var _ClearIcon;
var _ArrowDropDownIcon;
var _excluded32 = ["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"];
var _excluded210 = ["ref"];
var useUtilityClasses26 = (ownerState) => {
const {
classes,
disablePortal,
expanded,
focused,
fullWidth,
hasClearIcon,
hasPopupIcon,
inputFocused,
popupOpen,
size: size3
} = ownerState;
const slots = {
root: ["root", expanded && "expanded", focused && "focused", fullWidth && "fullWidth", hasClearIcon && "hasClearIcon", hasPopupIcon && "hasPopupIcon"],
inputRoot: ["inputRoot"],
input: ["input", inputFocused && "inputFocused"],
tag: ["tag", `tagSize${capitalize_default(size3)}`],
endAdornment: ["endAdornment"],
clearIndicator: ["clearIndicator"],
popupIndicator: ["popupIndicator", popupOpen && "popupIndicatorOpen"],
popper: ["popper", disablePortal && "popperDisablePortal"],
paper: ["paper"],
listbox: ["listbox"],
loading: ["loading"],
noOptions: ["noOptions"],
option: ["option"],
groupLabel: ["groupLabel"],
groupUl: ["groupUl"]
};
return composeClasses(slots, getAutocompleteUtilityClass, classes);
};
var AutocompleteRoot = styled_default("div", {
name: "MuiAutocomplete",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
const {
fullWidth,
hasClearIcon,
hasPopupIcon,
inputFocused,
size: size3
} = ownerState;
return [{
[`& .${autocompleteClasses_default.tag}`]: styles4.tag
}, {
[`& .${autocompleteClasses_default.tag}`]: styles4[`tagSize${capitalize_default(size3)}`]
}, {
[`& .${autocompleteClasses_default.inputRoot}`]: styles4.inputRoot
}, {
[`& .${autocompleteClasses_default.input}`]: styles4.input
}, {
[`& .${autocompleteClasses_default.input}`]: inputFocused && styles4.inputFocused
}, styles4.root, fullWidth && styles4.fullWidth, hasPopupIcon && styles4.hasPopupIcon, hasClearIcon && styles4.hasClearIcon];
}
})(({
ownerState
}) => _extends({
[`&.${autocompleteClasses_default.focused} .${autocompleteClasses_default.clearIndicator}`]: {
visibility: "visible"
},
/* Avoid double tap issue on iOS */
"@media (pointer: fine)": {
[`&:hover .${autocompleteClasses_default.clearIndicator}`]: {
visibility: "visible"
}
}
}, ownerState.fullWidth && {
width: "100%"
}, {
[`& .${autocompleteClasses_default.tag}`]: _extends({
margin: 3,
maxWidth: "calc(100% - 6px)"
}, ownerState.size === "small" && {
margin: 2,
maxWidth: "calc(100% - 4px)"
}),
[`& .${autocompleteClasses_default.inputRoot}`]: {
flexWrap: "wrap",
[`.${autocompleteClasses_default.hasPopupIcon}&, .${autocompleteClasses_default.hasClearIcon}&`]: {
paddingRight: 26 + 4
},
[`.${autocompleteClasses_default.hasPopupIcon}.${autocompleteClasses_default.hasClearIcon}&`]: {
paddingRight: 52 + 4
},
[`& .${autocompleteClasses_default.input}`]: {
width: 0,
minWidth: 30
}
},
[`& .${inputClasses_default.root}`]: {
paddingBottom: 1,
"& .MuiInput-input": {
padding: "4px 4px 4px 0px"
}
},
[`& .${inputClasses_default.root}.${inputBaseClasses_default.sizeSmall}`]: {
[`& .${inputClasses_default.input}`]: {
padding: "2px 4px 3px 0"
}
},
[`& .${outlinedInputClasses_default.root}`]: {
padding: 9,
[`.${autocompleteClasses_default.hasPopupIcon}&, .${autocompleteClasses_default.hasClearIcon}&`]: {
paddingRight: 26 + 4 + 9
},
[`.${autocompleteClasses_default.hasPopupIcon}.${autocompleteClasses_default.hasClearIcon}&`]: {
paddingRight: 52 + 4 + 9
},
[`& .${autocompleteClasses_default.input}`]: {
padding: "7.5px 4px 7.5px 5px"
},
[`& .${autocompleteClasses_default.endAdornment}`]: {
right: 9
}
},
[`& .${outlinedInputClasses_default.root}.${inputBaseClasses_default.sizeSmall}`]: {
// Don't specify paddingRight, as it overrides the default value set when there is only
// one of the popup or clear icon as the specificity is equal so the latter one wins
paddingTop: 6,
paddingBottom: 6,
paddingLeft: 6,
[`& .${autocompleteClasses_default.input}`]: {
padding: "2.5px 4px 2.5px 8px"
}
},
[`& .${filledInputClasses_default.root}`]: {
paddingTop: 19,
paddingLeft: 8,
[`.${autocompleteClasses_default.hasPopupIcon}&, .${autocompleteClasses_default.hasClearIcon}&`]: {
paddingRight: 26 + 4 + 9
},
[`.${autocompleteClasses_default.hasPopupIcon}.${autocompleteClasses_default.hasClearIcon}&`]: {
paddingRight: 52 + 4 + 9
},
[`& .${filledInputClasses_default.input}`]: {
padding: "7px 4px"
},
[`& .${autocompleteClasses_default.endAdornment}`]: {
right: 9
}
},
[`& .${filledInputClasses_default.root}.${inputBaseClasses_default.sizeSmall}`]: {
paddingBottom: 1,
[`& .${filledInputClasses_default.input}`]: {
padding: "2.5px 4px"
}
},
[`& .${inputBaseClasses_default.hiddenLabel}`]: {
paddingTop: 8
},
[`& .${filledInputClasses_default.root}.${inputBaseClasses_default.hiddenLabel}`]: {
paddingTop: 0,
paddingBottom: 0,
[`& .${autocompleteClasses_default.input}`]: {
paddingTop: 16,
paddingBottom: 17
}
},
[`& .${filledInputClasses_default.root}.${inputBaseClasses_default.hiddenLabel}.${inputBaseClasses_default.sizeSmall}`]: {
[`& .${autocompleteClasses_default.input}`]: {
paddingTop: 8,
paddingBottom: 9
}
},
[`& .${autocompleteClasses_default.input}`]: _extends({
flexGrow: 1,
textOverflow: "ellipsis",
opacity: 0
}, ownerState.inputFocused && {
opacity: 1
})
}));
var AutocompleteEndAdornment = styled_default("div", {
name: "MuiAutocomplete",
slot: "EndAdornment",
overridesResolver: (props, styles4) => styles4.endAdornment
})({
// We use a position absolute to support wrapping tags.
position: "absolute",
right: 0,
top: "50%",
transform: "translate(0, -50%)"
});
var AutocompleteClearIndicator = styled_default(IconButton_default, {
name: "MuiAutocomplete",
slot: "ClearIndicator",
overridesResolver: (props, styles4) => styles4.clearIndicator
})({
marginRight: -2,
padding: 4,
visibility: "hidden"
});
var AutocompletePopupIndicator = styled_default(IconButton_default, {
name: "MuiAutocomplete",
slot: "PopupIndicator",
overridesResolver: ({
ownerState
}, styles4) => _extends({}, styles4.popupIndicator, ownerState.popupOpen && styles4.popupIndicatorOpen)
})(({
ownerState
}) => _extends({
padding: 2,
marginRight: -2
}, ownerState.popupOpen && {
transform: "rotate(180deg)"
}));
var AutocompletePopper = styled_default(Popper_default, {
name: "MuiAutocomplete",
slot: "Popper",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [{
[`& .${autocompleteClasses_default.option}`]: styles4.option
}, styles4.popper, ownerState.disablePortal && styles4.popperDisablePortal];
}
})(({
theme,
ownerState
}) => _extends({
zIndex: (theme.vars || theme).zIndex.modal
}, ownerState.disablePortal && {
position: "absolute"
}));
var AutocompletePaper = styled_default(Paper_default, {
name: "MuiAutocomplete",
slot: "Paper",
overridesResolver: (props, styles4) => styles4.paper
})(({
theme
}) => _extends({}, theme.typography.body1, {
overflow: "auto"
}));
var AutocompleteLoading = styled_default("div", {
name: "MuiAutocomplete",
slot: "Loading",
overridesResolver: (props, styles4) => styles4.loading
})(({
theme
}) => ({
color: (theme.vars || theme).palette.text.secondary,
padding: "14px 16px"
}));
var AutocompleteNoOptions = styled_default("div", {
name: "MuiAutocomplete",
slot: "NoOptions",
overridesResolver: (props, styles4) => styles4.noOptions
})(({
theme
}) => ({
color: (theme.vars || theme).palette.text.secondary,
padding: "14px 16px"
}));
var AutocompleteListbox = styled_default("div", {
name: "MuiAutocomplete",
slot: "Listbox",
overridesResolver: (props, styles4) => styles4.listbox
})(({
theme
}) => ({
listStyle: "none",
margin: 0,
padding: "8px 0",
maxHeight: "40vh",
overflow: "auto",
position: "relative",
[`& .${autocompleteClasses_default.option}`]: {
minHeight: 48,
display: "flex",
overflow: "hidden",
justifyContent: "flex-start",
alignItems: "center",
cursor: "pointer",
paddingTop: 6,
boxSizing: "border-box",
outline: "0",
WebkitTapHighlightColor: "transparent",
paddingBottom: 6,
paddingLeft: 16,
paddingRight: 16,
[theme.breakpoints.up("sm")]: {
minHeight: "auto"
},
[`&.${autocompleteClasses_default.focused}`]: {
backgroundColor: (theme.vars || theme).palette.action.hover,
// Reset on touch devices, it doesn't add specificity
"@media (hover: none)": {
backgroundColor: "transparent"
}
},
'&[aria-disabled="true"]': {
opacity: (theme.vars || theme).palette.action.disabledOpacity,
pointerEvents: "none"
},
[`&.${autocompleteClasses_default.focusVisible}`]: {
backgroundColor: (theme.vars || theme).palette.action.focus
},
'&[aria-selected="true"]': {
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / ${theme.vars.palette.action.selectedOpacity})` : (0, import_colorManipulator2.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity),
[`&.${autocompleteClasses_default.focused}`]: {
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.hoverOpacity}))` : (0, import_colorManipulator2.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.hoverOpacity),
// Reset on touch devices, it doesn't add specificity
"@media (hover: none)": {
backgroundColor: (theme.vars || theme).palette.action.selected
}
},
[`&.${autocompleteClasses_default.focusVisible}`]: {
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.primary.mainChannel} / calc(${theme.vars.palette.action.selectedOpacity} + ${theme.vars.palette.action.focusOpacity}))` : (0, import_colorManipulator2.alpha)(theme.palette.primary.main, theme.palette.action.selectedOpacity + theme.palette.action.focusOpacity)
}
}
}
}));
var AutocompleteGroupLabel = styled_default(ListSubheader_default, {
name: "MuiAutocomplete",
slot: "GroupLabel",
overridesResolver: (props, styles4) => styles4.groupLabel
})(({
theme
}) => ({
backgroundColor: (theme.vars || theme).palette.background.paper,
top: -8
}));
var AutocompleteGroupUl = styled_default("ul", {
name: "MuiAutocomplete",
slot: "GroupUl",
overridesResolver: (props, styles4) => styles4.groupUl
})({
padding: 0,
[`& .${autocompleteClasses_default.option}`]: {
paddingLeft: 24
}
});
var Autocomplete = React81.forwardRef(function Autocomplete2(inProps, ref) {
var _slotProps$clearIndic, _slotProps$paper, _slotProps$popper, _slotProps$popupIndic;
const props = useThemeProps({
props: inProps,
name: "MuiAutocomplete"
});
const {
autoComplete = false,
autoHighlight = false,
autoSelect = false,
blurOnSelect = false,
ChipProps,
className,
clearIcon = _ClearIcon || (_ClearIcon = (0, import_jsx_runtime57.jsx)(Close_default, {
fontSize: "small"
})),
clearOnBlur = !props.freeSolo,
clearOnEscape = false,
clearText = "Clear",
closeText = "Close",
componentsProps = {},
defaultValue = props.multiple ? [] : null,
disableClearable = false,
disableCloseOnSelect = false,
disabled = false,
disabledItemsFocusable = false,
disableListWrap = false,
disablePortal = false,
filterSelectedOptions = false,
forcePopupIcon = "auto",
freeSolo = false,
fullWidth = false,
getLimitTagsText = (more) => `+${more}`,
getOptionLabel: getOptionLabelProp,
groupBy,
handleHomeEndKeys = !props.freeSolo,
includeInputInList = false,
limitTags = -1,
ListboxComponent = "ul",
ListboxProps,
loading = false,
loadingText = "Loading…",
multiple = false,
noOptionsText = "No options",
openOnFocus = false,
openText = "Open",
PaperComponent = Paper_default,
PopperComponent = Popper_default,
popupIcon = _ArrowDropDownIcon || (_ArrowDropDownIcon = (0, import_jsx_runtime57.jsx)(ArrowDropDown_default, {})),
readOnly = false,
renderGroup: renderGroupProp,
renderInput,
renderOption: renderOptionProp,
renderTags,
selectOnFocus = !props.freeSolo,
size: size3 = "medium",
slotProps = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded32);
const {
getRootProps,
getInputProps,
getInputLabelProps,
getPopupIndicatorProps,
getClearProps,
getTagProps,
getListboxProps,
getOptionProps,
value,
dirty,
expanded,
id,
popupOpen,
focused,
focusedTag,
anchorEl,
setAnchorEl,
inputValue,
groupedOptions
} = useAutocomplete(_extends({}, props, {
componentName: "Autocomplete"
}));
const hasClearIcon = !disableClearable && !disabled && dirty && !readOnly;
const hasPopupIcon = (!freeSolo || forcePopupIcon === true) && forcePopupIcon !== false;
const {
onMouseDown: handleInputMouseDown
} = getInputProps();
const {
ref: externalListboxRef
} = ListboxProps != null ? ListboxProps : {};
const _getListboxProps = getListboxProps(), {
ref: listboxRef
} = _getListboxProps, otherListboxProps = _objectWithoutPropertiesLoose(_getListboxProps, _excluded210);
const combinedListboxRef = useForkRef_default(listboxRef, externalListboxRef);
const defaultGetOptionLabel = (option) => {
var _option$label;
return (_option$label = option.label) != null ? _option$label : option;
};
const getOptionLabel = getOptionLabelProp || defaultGetOptionLabel;
const ownerState = _extends({}, props, {
disablePortal,
expanded,
focused,
fullWidth,
getOptionLabel,
hasClearIcon,
hasPopupIcon,
inputFocused: focusedTag === -1,
popupOpen,
size: size3
});
const classes = useUtilityClasses26(ownerState);
let startAdornment;
if (multiple && value.length > 0) {
const getCustomizedTagProps = (params) => _extends({
className: classes.tag,
disabled
}, getTagProps(params));
if (renderTags) {
startAdornment = renderTags(value, getCustomizedTagProps, ownerState);
} else {
startAdornment = value.map((option, index2) => (0, import_jsx_runtime57.jsx)(Chip_default, _extends({
label: getOptionLabel(option),
size: size3
}, getCustomizedTagProps({
index: index2
}), ChipProps)));
}
}
if (limitTags > -1 && Array.isArray(startAdornment)) {
const more = startAdornment.length - limitTags;
if (!focused && more > 0) {
startAdornment = startAdornment.splice(0, limitTags);
startAdornment.push((0, import_jsx_runtime57.jsx)("span", {
className: classes.tag,
children: getLimitTagsText(more)
}, startAdornment.length));
}
}
const defaultRenderGroup = (params) => (0, import_jsx_runtime58.jsxs)("li", {
children: [(0, import_jsx_runtime57.jsx)(AutocompleteGroupLabel, {
className: classes.groupLabel,
ownerState,
component: "div",
children: params.group
}), (0, import_jsx_runtime57.jsx)(AutocompleteGroupUl, {
className: classes.groupUl,
ownerState,
children: params.children
})]
}, params.key);
const renderGroup = renderGroupProp || defaultRenderGroup;
const defaultRenderOption = (props2, option) => {
return (0, import_react3.createElement)("li", _extends({}, props2, {
key: props2.key
}), getOptionLabel(option));
};
const renderOption = renderOptionProp || defaultRenderOption;
const renderListOption = (option, index2) => {
const optionProps = getOptionProps({
option,
index: index2
});
return renderOption(_extends({}, optionProps, {
className: classes.option
}), option, {
selected: optionProps["aria-selected"],
index: index2,
inputValue
}, ownerState);
};
const clearIndicatorSlotProps = (_slotProps$clearIndic = slotProps.clearIndicator) != null ? _slotProps$clearIndic : componentsProps.clearIndicator;
const paperSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : componentsProps.paper;
const popperSlotProps = (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper;
const popupIndicatorSlotProps = (_slotProps$popupIndic = slotProps.popupIndicator) != null ? _slotProps$popupIndic : componentsProps.popupIndicator;
const renderAutocompletePopperChildren = (children) => (0, import_jsx_runtime57.jsx)(AutocompletePopper, _extends({
as: PopperComponent,
disablePortal,
style: {
width: anchorEl ? anchorEl.clientWidth : null
},
ownerState,
role: "presentation",
anchorEl,
open: popupOpen
}, popperSlotProps, {
className: clsx_default(classes.popper, popperSlotProps == null ? void 0 : popperSlotProps.className),
children: (0, import_jsx_runtime57.jsx)(AutocompletePaper, _extends({
ownerState,
as: PaperComponent
}, paperSlotProps, {
className: clsx_default(classes.paper, paperSlotProps == null ? void 0 : paperSlotProps.className),
children
}))
}));
let autocompletePopper = null;
if (!loading && groupedOptions.length > 0) {
autocompletePopper = renderAutocompletePopperChildren((0, import_jsx_runtime57.jsx)(AutocompleteListbox, _extends({
as: ListboxComponent,
className: classes.listbox,
ownerState
}, otherListboxProps, ListboxProps, {
ref: combinedListboxRef,
children: groupedOptions.map((option, index2) => {
if (groupBy) {
return renderGroup({
key: option.key,
group: option.group,
children: option.options.map((option2, index22) => renderListOption(option2, option.index + index22))
});
}
return renderListOption(option, index2);
})
})));
} else if (loading && groupedOptions.length === 0) {
autocompletePopper = renderAutocompletePopperChildren((0, import_jsx_runtime57.jsx)(AutocompleteLoading, {
className: classes.loading,
ownerState,
children: loadingText
}));
} else if (groupedOptions.length === 0 && !freeSolo && !loading) {
autocompletePopper = renderAutocompletePopperChildren((0, import_jsx_runtime57.jsx)(AutocompleteNoOptions, {
className: classes.noOptions,
ownerState,
role: "presentation",
onMouseDown: (event) => {
event.preventDefault();
},
children: noOptionsText
}));
}
return (0, import_jsx_runtime58.jsxs)(React81.Fragment, {
children: [(0, import_jsx_runtime57.jsx)(AutocompleteRoot, _extends({
ref,
className: clsx_default(classes.root, className),
ownerState
}, getRootProps(other), {
children: renderInput({
id,
disabled,
fullWidth: true,
size: size3 === "small" ? "small" : void 0,
InputLabelProps: getInputLabelProps(),
InputProps: _extends({
ref: setAnchorEl,
className: classes.inputRoot,
startAdornment,
onClick: (event) => {
if (event.target === event.currentTarget) {
handleInputMouseDown(event);
}
}
}, (hasClearIcon || hasPopupIcon) && {
endAdornment: (0, import_jsx_runtime58.jsxs)(AutocompleteEndAdornment, {
className: classes.endAdornment,
ownerState,
children: [hasClearIcon ? (0, import_jsx_runtime57.jsx)(AutocompleteClearIndicator, _extends({}, getClearProps(), {
"aria-label": clearText,
title: clearText,
ownerState
}, clearIndicatorSlotProps, {
className: clsx_default(classes.clearIndicator, clearIndicatorSlotProps == null ? void 0 : clearIndicatorSlotProps.className),
children: clearIcon
})) : null, hasPopupIcon ? (0, import_jsx_runtime57.jsx)(AutocompletePopupIndicator, _extends({}, getPopupIndicatorProps(), {
disabled,
"aria-label": popupOpen ? closeText : openText,
title: popupOpen ? closeText : openText,
ownerState
}, popupIndicatorSlotProps, {
className: clsx_default(classes.popupIndicator, popupIndicatorSlotProps == null ? void 0 : popupIndicatorSlotProps.className),
children: popupIcon
})) : null]
})
}),
inputProps: _extends({
className: classes.input,
disabled,
readOnly
}, getInputProps())
})
})), anchorEl ? autocompletePopper : null]
});
});
true ? Autocomplete.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* If `true`, the portion of the selected suggestion that the user hasn't typed,
* known as the completion string, appears inline after the input cursor in the textbox.
* The inline completion string is visually highlighted and has a selected state.
* @default false
*/
autoComplete: import_prop_types35.default.bool,
/**
* If `true`, the first option is automatically highlighted.
* @default false
*/
autoHighlight: import_prop_types35.default.bool,
/**
* If `true`, the selected option becomes the value of the input
* when the Autocomplete loses focus unless the user chooses
* a different option or changes the character string in the input.
*
* When using the `freeSolo` mode, the typed value will be the input value
* if the Autocomplete loses focus without highlighting an option.
* @default false
*/
autoSelect: import_prop_types35.default.bool,
/**
* Control if the input should be blurred when an option is selected:
*
* - `false` the input is not blurred.
* - `true` the input is always blurred.
* - `touch` the input is blurred after a touch event.
* - `mouse` the input is blurred after a mouse event.
* @default false
*/
blurOnSelect: import_prop_types35.default.oneOfType([import_prop_types35.default.oneOf(["mouse", "touch"]), import_prop_types35.default.bool]),
/**
* Props applied to the [`Chip`](/material-ui/api/chip/) element.
*/
ChipProps: import_prop_types35.default.object,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types35.default.object,
/**
* @ignore
*/
className: import_prop_types35.default.string,
/**
* The icon to display in place of the default clear icon.
* @default <ClearIcon fontSize="small" />
*/
clearIcon: import_prop_types35.default.node,
/**
* If `true`, the input's text is cleared on blur if no value is selected.
*
* Set it to `true` if you want to help the user enter a new value.
* Set it to `false` if you want to help the user resume their search.
* @default !props.freeSolo
*/
clearOnBlur: import_prop_types35.default.bool,
/**
* If `true`, clear all values when the user presses escape and the popup is closed.
* @default false
*/
clearOnEscape: import_prop_types35.default.bool,
/**
* Override the default text for the *clear* icon button.
*
* For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).
* @default 'Clear'
*/
clearText: import_prop_types35.default.string,
/**
* Override the default text for the *close popup* icon button.
*
* For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).
* @default 'Close'
*/
closeText: import_prop_types35.default.string,
/**
* The props used for each slot inside.
* @default {}
*/
componentsProps: import_prop_types35.default.shape({
clearIndicator: import_prop_types35.default.object,
paper: import_prop_types35.default.object,
popper: import_prop_types35.default.object,
popupIndicator: import_prop_types35.default.object
}),
/**
* The default value. Use when the component is not controlled.
* @default props.multiple ? [] : null
*/
defaultValue: chainPropTypes(import_prop_types35.default.any, (props) => {
if (props.multiple && props.defaultValue !== void 0 && !Array.isArray(props.defaultValue)) {
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"));
}
return null;
}),
/**
* If `true`, the input can't be cleared.
* @default false
*/
disableClearable: import_prop_types35.default.bool,
/**
* If `true`, the popup won't close when a value is selected.
* @default false
*/
disableCloseOnSelect: import_prop_types35.default.bool,
/**
* If `true`, the component is disabled.
* @default false
*/
disabled: import_prop_types35.default.bool,
/**
* If `true`, will allow focus on disabled items.
* @default false
*/
disabledItemsFocusable: import_prop_types35.default.bool,
/**
* If `true`, the list box in the popup will not wrap focus.
* @default false
*/
disableListWrap: import_prop_types35.default.bool,
/**
* If `true`, the `Popper` content will be under the DOM hierarchy of the parent component.
* @default false
*/
disablePortal: import_prop_types35.default.bool,
/**
* A function that determines the filtered options to be rendered on search.
*
* @default createFilterOptions()
* @param {Value[]} options The options to render.
* @param {object} state The state of the component.
* @returns {Value[]}
*/
filterOptions: import_prop_types35.default.func,
/**
* If `true`, hide the selected options from the list box.
* @default false
*/
filterSelectedOptions: import_prop_types35.default.bool,
/**
* Force the visibility display of the popup icon.
* @default 'auto'
*/
forcePopupIcon: import_prop_types35.default.oneOfType([import_prop_types35.default.oneOf(["auto"]), import_prop_types35.default.bool]),
/**
* If `true`, the Autocomplete is free solo, meaning that the user input is not bound to provided options.
* @default false
*/
freeSolo: import_prop_types35.default.bool,
/**
* If `true`, the input will take up the full width of its container.
* @default false
*/
fullWidth: import_prop_types35.default.bool,
/**
* The label to display when the tags are truncated (`limitTags`).
*
* @param {number} more The number of truncated tags.
* @returns {ReactNode}
* @default (more) => `+${more}`
*/
getLimitTagsText: import_prop_types35.default.func,
/**
* Used to determine the disabled state for a given option.
*
* @param {Value} option The option to test.
* @returns {boolean}
*/
getOptionDisabled: import_prop_types35.default.func,
/**
* Used to determine the key for a given option.
* This can be useful when the labels of options are not unique (since labels are used as keys by default).
*
* @param {Value} option The option to get the key for.
* @returns {string | number}
*/
getOptionKey: import_prop_types35.default.func,
/**
* Used to determine the string value for a given option.
* It's used to fill the input (and the list box options if `renderOption` is not provided).
*
* If used in free solo mode, it must accept both the type of the options and a string.
*
* @param {Value} option
* @returns {string}
* @default (option) => option.label ?? option
*/
getOptionLabel: import_prop_types35.default.func,
/**
* If provided, the options will be grouped under the returned string.
* The groupBy value is also used as the text for group headings when `renderGroup` is not provided.
*
* @param {Value} options The options to group.
* @returns {string}
*/
groupBy: import_prop_types35.default.func,
/**
* If `true`, the component handles the "Home" and "End" keys when the popup is open.
* It should move focus to the first option and last option, respectively.
* @default !props.freeSolo
*/
handleHomeEndKeys: import_prop_types35.default.bool,
/**
* This prop is used to help implement the accessibility logic.
* If you don't provide an id it will fall back to a randomly generated one.
*/
id: import_prop_types35.default.string,
/**
* If `true`, the highlight can move to the input.
* @default false
*/
includeInputInList: import_prop_types35.default.bool,
/**
* The input value.
*/
inputValue: import_prop_types35.default.string,
/**
* Used to determine if the option represents the given value.
* Uses strict equality by default.
* ⚠️ Both arguments need to be handled, an option can only match with one value.
*
* @param {Value} option The option to test.
* @param {Value} value The value to test against.
* @returns {boolean}
*/
isOptionEqualToValue: import_prop_types35.default.func,
/**
* The maximum number of tags that will be visible when not focused.
* Set `-1` to disable the limit.
* @default -1
*/
limitTags: integerPropType_default,
/**
* The component used to render the listbox.
* @default 'ul'
*/
ListboxComponent: import_prop_types35.default.elementType,
/**
* Props applied to the Listbox element.
*/
ListboxProps: import_prop_types35.default.object,
/**
* If `true`, the component is in a loading state.
* This shows the `loadingText` in place of suggestions (only if there are no suggestions to show, e.g. `options` are empty).
* @default false
*/
loading: import_prop_types35.default.bool,
/**
* Text to display when in a loading state.
*
* For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).
* @default 'Loading…'
*/
loadingText: import_prop_types35.default.node,
/**
* If `true`, `value` must be an array and the menu will support multiple selections.
* @default false
*/
multiple: import_prop_types35.default.bool,
/**
* Text to display when there are no options.
*
* For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).
* @default 'No options'
*/
noOptionsText: import_prop_types35.default.node,
/**
* Callback fired when the value changes.
*
* @param {React.SyntheticEvent} event The event source of the callback.
* @param {Value|Value[]} value The new value of the component.
* @param {string} reason One of "createOption", "selectOption", "removeOption", "blur" or "clear".
* @param {string} [details]
*/
onChange: import_prop_types35.default.func,
/**
* Callback fired when the popup requests to be closed.
* Use in controlled mode (see open).
*
* @param {React.SyntheticEvent} event The event source of the callback.
* @param {string} reason Can be: `"toggleInput"`, `"escape"`, `"selectOption"`, `"removeOption"`, `"blur"`.
*/
onClose: import_prop_types35.default.func,
/**
* Callback fired when the highlight option changes.
*
* @param {React.SyntheticEvent} event The event source of the callback.
* @param {Value} option The highlighted option.
* @param {string} reason Can be: `"keyboard"`, `"auto"`, `"mouse"`, `"touch"`.
*/
onHighlightChange: import_prop_types35.default.func,
/**
* Callback fired when the input value changes.
*
* @param {React.SyntheticEvent} event The event source of the callback.
* @param {string} value The new value of the text input.
* @param {string} reason Can be: `"input"` (user input), `"reset"` (programmatic change), `"clear"`.
*/
onInputChange: import_prop_types35.default.func,
/**
* @ignore
*/
onKeyDown: import_prop_types35.default.func,
/**
* Callback fired when the popup requests to be opened.
* Use in controlled mode (see open).
*
* @param {React.SyntheticEvent} event The event source of the callback.
*/
onOpen: import_prop_types35.default.func,
/**
* If `true`, the component is shown.
*/
open: import_prop_types35.default.bool,
/**
* If `true`, the popup will open on input focus.
* @default false
*/
openOnFocus: import_prop_types35.default.bool,
/**
* Override the default text for the *open popup* icon button.
*
* For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).
* @default 'Open'
*/
openText: import_prop_types35.default.string,
/**
* Array of options.
*/
options: import_prop_types35.default.array.isRequired,
/**
* The component used to render the body of the popup.
* @default Paper
*/
PaperComponent: import_prop_types35.default.elementType,
/**
* The component used to position the popup.
* @default Popper
*/
PopperComponent: import_prop_types35.default.elementType,
/**
* The icon to display in place of the default popup icon.
* @default <ArrowDropDownIcon />
*/
popupIcon: import_prop_types35.default.node,
/**
* If `true`, the component becomes readonly. It is also supported for multiple tags where the tag cannot be deleted.
* @default false
*/
readOnly: import_prop_types35.default.bool,
/**
* Render the group.
*
* @param {AutocompleteRenderGroupParams} params The group to render.
* @returns {ReactNode}
*/
renderGroup: import_prop_types35.default.func,
/**
* Render the input.
*
* @param {object} params
* @returns {ReactNode}
*/
renderInput: import_prop_types35.default.func.isRequired,
/**
* Render the option, use `getOptionLabel` by default.
*
* @param {object} props The props to apply on the li element.
* @param {Value} option The option to render.
* @param {object} state The state of each option.
* @param {object} ownerState The state of the Autocomplete component.
* @returns {ReactNode}
*/
renderOption: import_prop_types35.default.func,
/**
* Render the selected value.
*
* @param {Value[]} value The `value` provided to the component.
* @param {function} getTagProps A tag props getter.
* @param {object} ownerState The state of the Autocomplete component.
* @returns {ReactNode}
*/
renderTags: import_prop_types35.default.func,
/**
* If `true`, the input's text is selected on focus.
* It helps the user clear the selected value.
* @default !props.freeSolo
*/
selectOnFocus: import_prop_types35.default.bool,
/**
* The size of the component.
* @default 'medium'
*/
size: import_prop_types35.default.oneOfType([import_prop_types35.default.oneOf(["small", "medium"]), import_prop_types35.default.string]),
/**
* The props used for each slot inside.
* @default {}
*/
slotProps: import_prop_types35.default.shape({
clearIndicator: import_prop_types35.default.object,
paper: import_prop_types35.default.object,
popper: import_prop_types35.default.object,
popupIndicator: import_prop_types35.default.object
}),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types35.default.oneOfType([import_prop_types35.default.arrayOf(import_prop_types35.default.oneOfType([import_prop_types35.default.func, import_prop_types35.default.object, import_prop_types35.default.bool])), import_prop_types35.default.func, import_prop_types35.default.object]),
/**
* The value of the autocomplete.
*
* The value must have reference equality with the option in order to be selected.
* You can customize the equality behavior with the `isOptionEqualToValue` prop.
*/
value: chainPropTypes(import_prop_types35.default.any, (props) => {
if (props.multiple && props.value !== void 0 && !Array.isArray(props.value)) {
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"));
}
return null;
})
} : void 0;
var Autocomplete_default = Autocomplete;
// node_modules/@mui/material/Fade/Fade.js
init_extends();
init_objectWithoutPropertiesLoose();
var React82 = __toESM(require_react());
var import_prop_types36 = __toESM(require_prop_types());
init_elementAcceptingRef();
// node_modules/@mui/material/transitions/utils.js
var reflow = (node) => node.scrollTop;
function getTransitionProps(props, options) {
var _style$transitionDura, _style$transitionTimi;
const {
timeout,
easing,
style = {}
} = props;
return {
duration: (_style$transitionDura = style.transitionDuration) != null ? _style$transitionDura : typeof timeout === "number" ? timeout : timeout[options.mode] || 0,
easing: (_style$transitionTimi = style.transitionTimingFunction) != null ? _style$transitionTimi : typeof easing === "object" ? easing[options.mode] : easing,
delay: style.transitionDelay
};
}
// node_modules/@mui/material/Fade/Fade.js
init_useForkRef();
var import_jsx_runtime59 = __toESM(require_jsx_runtime());
var _excluded33 = ["addEndListener", "appear", "children", "easing", "in", "onEnter", "onEntered", "onEntering", "onExit", "onExited", "onExiting", "style", "timeout", "TransitionComponent"];
var styles2 = {
entering: {
opacity: 1
},
entered: {
opacity: 1
}
};
var Fade = React82.forwardRef(function Fade2(props, ref) {
const theme = useTheme();
const defaultTimeout = {
enter: theme.transitions.duration.enteringScreen,
exit: theme.transitions.duration.leavingScreen
};
const {
addEndListener,
appear = true,
children,
easing,
in: inProp,
onEnter,
onEntered,
onEntering,
onExit,
onExited,
onExiting,
style,
timeout = defaultTimeout,
// eslint-disable-next-line react/prop-types
TransitionComponent = Transition_default
} = props, other = _objectWithoutPropertiesLoose(props, _excluded33);
const enableStrictModeCompat = true;
const nodeRef = React82.useRef(null);
const handleRef = useForkRef_default(nodeRef, children.ref, ref);
const normalizedTransitionCallback = (callback) => (maybeIsAppearing) => {
if (callback) {
const node = nodeRef.current;
if (maybeIsAppearing === void 0) {
callback(node);
} else {
callback(node, maybeIsAppearing);
}
}
};
const handleEntering = normalizedTransitionCallback(onEntering);
const handleEnter = normalizedTransitionCallback((node, isAppearing) => {
reflow(node);
const transitionProps = getTransitionProps({
style,
timeout,
easing
}, {
mode: "enter"
});
node.style.webkitTransition = theme.transitions.create("opacity", transitionProps);
node.style.transition = theme.transitions.create("opacity", transitionProps);
if (onEnter) {
onEnter(node, isAppearing);
}
});
const handleEntered = normalizedTransitionCallback(onEntered);
const handleExiting = normalizedTransitionCallback(onExiting);
const handleExit = normalizedTransitionCallback((node) => {
const transitionProps = getTransitionProps({
style,
timeout,
easing
}, {
mode: "exit"
});
node.style.webkitTransition = theme.transitions.create("opacity", transitionProps);
node.style.transition = theme.transitions.create("opacity", transitionProps);
if (onExit) {
onExit(node);
}
});
const handleExited = normalizedTransitionCallback(onExited);
const handleAddEndListener = (next) => {
if (addEndListener) {
addEndListener(nodeRef.current, next);
}
};
return (0, import_jsx_runtime59.jsx)(TransitionComponent, _extends({
appear,
in: inProp,
nodeRef: enableStrictModeCompat ? nodeRef : void 0,
onEnter: handleEnter,
onEntered: handleEntered,
onEntering: handleEntering,
onExit: handleExit,
onExited: handleExited,
onExiting: handleExiting,
addEndListener: handleAddEndListener,
timeout
}, other, {
children: (state, childProps) => {
return React82.cloneElement(children, _extends({
style: _extends({
opacity: 0,
visibility: state === "exited" && !inProp ? "hidden" : void 0
}, styles2[state], style, children.props.style),
ref: handleRef
}, childProps));
}
}));
});
true ? Fade.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* Add a custom transition end trigger. Called with the transitioning DOM
* node and a done callback. Allows for more fine grained transition end
* logic. Note: Timeouts are still used as a fallback if provided.
*/
addEndListener: import_prop_types36.default.func,
/**
* Perform the enter transition when it first mounts if `in` is also `true`.
* Set this to `false` to disable this behavior.
* @default true
*/
appear: import_prop_types36.default.bool,
/**
* A single child content element.
*/
children: elementAcceptingRef_default.isRequired,
/**
* The transition timing function.
* You may specify a single easing or a object containing enter and exit values.
*/
easing: import_prop_types36.default.oneOfType([import_prop_types36.default.shape({
enter: import_prop_types36.default.string,
exit: import_prop_types36.default.string
}), import_prop_types36.default.string]),
/**
* If `true`, the component will transition in.
*/
in: import_prop_types36.default.bool,
/**
* @ignore
*/
onEnter: import_prop_types36.default.func,
/**
* @ignore
*/
onEntered: import_prop_types36.default.func,
/**
* @ignore
*/
onEntering: import_prop_types36.default.func,
/**
* @ignore
*/
onExit: import_prop_types36.default.func,
/**
* @ignore
*/
onExited: import_prop_types36.default.func,
/**
* @ignore
*/
onExiting: import_prop_types36.default.func,
/**
* @ignore
*/
style: import_prop_types36.default.object,
/**
* The duration for the transition, in milliseconds.
* You may specify a single timeout for all transitions, or individually with an object.
* @default {
* enter: theme.transitions.duration.enteringScreen,
* exit: theme.transitions.duration.leavingScreen,
* }
*/
timeout: import_prop_types36.default.oneOfType([import_prop_types36.default.number, import_prop_types36.default.shape({
appear: import_prop_types36.default.number,
enter: import_prop_types36.default.number,
exit: import_prop_types36.default.number
})])
} : void 0;
var Fade_default = Fade;
// node_modules/@mui/material/Backdrop/backdropClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getBackdropUtilityClass(slot) {
return generateUtilityClass("MuiBackdrop", slot);
}
var backdropClasses = generateUtilityClasses("MuiBackdrop", ["root", "invisible"]);
var backdropClasses_default = backdropClasses;
// node_modules/@mui/material/Backdrop/Backdrop.js
init_objectWithoutPropertiesLoose();
init_extends();
var React83 = __toESM(require_react());
var import_prop_types37 = __toESM(require_prop_types());
init_clsx();
init_composeClasses();
init_styled();
init_useThemeProps();
var import_jsx_runtime60 = __toESM(require_jsx_runtime());
var _excluded34 = ["children", "className", "component", "components", "componentsProps", "invisible", "open", "slotProps", "slots", "TransitionComponent", "transitionDuration"];
var useUtilityClasses27 = (ownerState) => {
const {
classes,
invisible
} = ownerState;
const slots = {
root: ["root", invisible && "invisible"]
};
return composeClasses(slots, getBackdropUtilityClass, classes);
};
var BackdropRoot = styled_default("div", {
name: "MuiBackdrop",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.root, ownerState.invisible && styles4.invisible];
}
})(({
ownerState
}) => _extends({
position: "fixed",
display: "flex",
alignItems: "center",
justifyContent: "center",
right: 0,
bottom: 0,
top: 0,
left: 0,
backgroundColor: "rgba(0, 0, 0, 0.5)",
WebkitTapHighlightColor: "transparent"
}, ownerState.invisible && {
backgroundColor: "transparent"
}));
var Backdrop = React83.forwardRef(function Backdrop2(inProps, ref) {
var _slotProps$root, _ref, _slots$root;
const props = useThemeProps({
props: inProps,
name: "MuiBackdrop"
});
const {
children,
className,
component = "div",
components = {},
componentsProps = {},
invisible = false,
open,
slotProps = {},
slots = {},
TransitionComponent = Fade_default,
transitionDuration
} = props, other = _objectWithoutPropertiesLoose(props, _excluded34);
const ownerState = _extends({}, props, {
component,
invisible
});
const classes = useUtilityClasses27(ownerState);
const rootSlotProps = (_slotProps$root = slotProps.root) != null ? _slotProps$root : componentsProps.root;
return (0, import_jsx_runtime60.jsx)(TransitionComponent, _extends({
in: open,
timeout: transitionDuration
}, other, {
children: (0, import_jsx_runtime60.jsx)(BackdropRoot, _extends({
"aria-hidden": true
}, rootSlotProps, {
as: (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : component,
className: clsx_default(classes.root, className, rootSlotProps == null ? void 0 : rootSlotProps.className),
ownerState: _extends({}, ownerState, rootSlotProps == null ? void 0 : rootSlotProps.ownerState),
classes,
ref,
children
}))
}));
});
true ? Backdrop.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component.
*/
children: import_prop_types37.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types37.default.object,
/**
* @ignore
*/
className: import_prop_types37.default.string,
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types37.default.elementType,
/**
* The components used for each slot inside.
*
* This prop is an alias for the `slots` prop.
* It's recommended to use the `slots` prop instead.
*
* @default {}
*/
components: import_prop_types37.default.shape({
Root: import_prop_types37.default.elementType
}),
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* This prop is an alias for the `slotProps` prop.
* It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.
*
* @default {}
*/
componentsProps: import_prop_types37.default.shape({
root: import_prop_types37.default.object
}),
/**
* If `true`, the backdrop is invisible.
* It can be used when rendering a popover or a custom select component.
* @default false
*/
invisible: import_prop_types37.default.bool,
/**
* If `true`, the component is shown.
*/
open: import_prop_types37.default.bool.isRequired,
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.
*
* @default {}
*/
slotProps: import_prop_types37.default.shape({
root: import_prop_types37.default.object
}),
/**
* The components used for each slot inside.
*
* This prop is an alias for the `components` prop, which will be deprecated in the future.
*
* @default {}
*/
slots: import_prop_types37.default.shape({
root: import_prop_types37.default.elementType
}),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types37.default.oneOfType([import_prop_types37.default.arrayOf(import_prop_types37.default.oneOfType([import_prop_types37.default.func, import_prop_types37.default.object, import_prop_types37.default.bool])), import_prop_types37.default.func, import_prop_types37.default.object]),
/**
* The component used for the transition.
* [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.
* @default Fade
*/
TransitionComponent: import_prop_types37.default.elementType,
/**
* The duration for the transition, in milliseconds.
* You may specify a single timeout for all transitions, or individually with an object.
*/
transitionDuration: import_prop_types37.default.oneOfType([import_prop_types37.default.number, import_prop_types37.default.shape({
appear: import_prop_types37.default.number,
enter: import_prop_types37.default.number,
exit: import_prop_types37.default.number
})])
} : void 0;
var Backdrop_default = Backdrop;
// node_modules/@mui/material/Badge/badgeClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getBadgeUtilityClass2(slot) {
return generateUtilityClass("MuiBadge", slot);
}
var badgeClasses2 = generateUtilityClasses("MuiBadge", [
"root",
"badge",
"dot",
"standard",
"anchorOriginTopRight",
"anchorOriginBottomRight",
"anchorOriginTopLeft",
"anchorOriginBottomLeft",
"invisible",
"colorError",
"colorInfo",
"colorPrimary",
"colorSecondary",
"colorSuccess",
"colorWarning",
"overlapRectangular",
"overlapCircular",
// TODO: v6 remove the overlap value from these class keys
"anchorOriginTopLeftCircular",
"anchorOriginTopLeftRectangular",
"anchorOriginTopRightCircular",
"anchorOriginTopRightRectangular",
"anchorOriginBottomLeftCircular",
"anchorOriginBottomLeftRectangular",
"anchorOriginBottomRightCircular",
"anchorOriginBottomRightRectangular"
]);
var badgeClasses_default = badgeClasses2;
// node_modules/@mui/material/Badge/Badge.js
init_extends();
init_objectWithoutPropertiesLoose();
var React84 = __toESM(require_react());
var import_prop_types38 = __toESM(require_prop_types());
init_clsx();
init_usePreviousProps();
init_composeClasses();
init_capitalize();
var import_jsx_runtime61 = __toESM(require_jsx_runtime());
var import_jsx_runtime62 = __toESM(require_jsx_runtime());
var _excluded35 = ["anchorOrigin", "className", "classes", "component", "components", "componentsProps", "children", "overlap", "color", "invisible", "max", "badgeContent", "slots", "slotProps", "showZero", "variant"];
var RADIUS_STANDARD = 10;
var RADIUS_DOT = 4;
var useThemeProps2 = createUseThemeProps("MuiBadge");
var useUtilityClasses28 = (ownerState) => {
const {
color,
anchorOrigin,
invisible,
overlap,
variant,
classes = {}
} = ownerState;
const slots = {
root: ["root"],
badge: ["badge", variant, invisible && "invisible", `anchorOrigin${capitalize_default(anchorOrigin.vertical)}${capitalize_default(anchorOrigin.horizontal)}`, `anchorOrigin${capitalize_default(anchorOrigin.vertical)}${capitalize_default(anchorOrigin.horizontal)}${capitalize_default(overlap)}`, `overlap${capitalize_default(overlap)}`, color !== "default" && `color${capitalize_default(color)}`]
};
return composeClasses(slots, getBadgeUtilityClass2, classes);
};
var BadgeRoot = styled_default("span", {
name: "MuiBadge",
slot: "Root",
overridesResolver: (props, styles4) => styles4.root
})({
position: "relative",
display: "inline-flex",
// For correct alignment with the text.
verticalAlign: "middle",
flexShrink: 0
});
var BadgeBadge = styled_default("span", {
name: "MuiBadge",
slot: "Badge",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.badge, styles4[ownerState.variant], styles4[`anchorOrigin${capitalize_default(ownerState.anchorOrigin.vertical)}${capitalize_default(ownerState.anchorOrigin.horizontal)}${capitalize_default(ownerState.overlap)}`], ownerState.color !== "default" && styles4[`color${capitalize_default(ownerState.color)}`], ownerState.invisible && styles4.invisible];
}
})(({
theme
}) => {
var _theme$vars;
return {
display: "flex",
flexDirection: "row",
flexWrap: "wrap",
justifyContent: "center",
alignContent: "center",
alignItems: "center",
position: "absolute",
boxSizing: "border-box",
fontFamily: theme.typography.fontFamily,
fontWeight: theme.typography.fontWeightMedium,
fontSize: theme.typography.pxToRem(12),
minWidth: RADIUS_STANDARD * 2,
lineHeight: 1,
padding: "0 6px",
height: RADIUS_STANDARD * 2,
borderRadius: RADIUS_STANDARD,
zIndex: 1,
// Render the badge on top of potential ripples.
transition: theme.transitions.create("transform", {
easing: theme.transitions.easing.easeInOut,
duration: theme.transitions.duration.enteringScreen
}),
variants: [...Object.keys(((_theme$vars = theme.vars) != null ? _theme$vars : theme).palette).filter((key) => {
var _theme$vars2, _theme$vars3;
return ((_theme$vars2 = theme.vars) != null ? _theme$vars2 : theme).palette[key].main && ((_theme$vars3 = theme.vars) != null ? _theme$vars3 : theme).palette[key].contrastText;
}).map((color) => ({
props: {
color
},
style: {
backgroundColor: (theme.vars || theme).palette[color].main,
color: (theme.vars || theme).palette[color].contrastText
}
})), {
props: {
variant: "dot"
},
style: {
borderRadius: RADIUS_DOT,
height: RADIUS_DOT * 2,
minWidth: RADIUS_DOT * 2,
padding: 0
}
}, {
props: ({
ownerState
}) => ownerState.anchorOrigin.vertical === "top" && ownerState.anchorOrigin.horizontal === "right" && ownerState.overlap === "rectangular",
style: {
top: 0,
right: 0,
transform: "scale(1) translate(50%, -50%)",
transformOrigin: "100% 0%",
[`&.${badgeClasses_default.invisible}`]: {
transform: "scale(0) translate(50%, -50%)"
}
}
}, {
props: ({
ownerState
}) => ownerState.anchorOrigin.vertical === "bottom" && ownerState.anchorOrigin.horizontal === "right" && ownerState.overlap === "rectangular",
style: {
bottom: 0,
right: 0,
transform: "scale(1) translate(50%, 50%)",
transformOrigin: "100% 100%",
[`&.${badgeClasses_default.invisible}`]: {
transform: "scale(0) translate(50%, 50%)"
}
}
}, {
props: ({
ownerState
}) => ownerState.anchorOrigin.vertical === "top" && ownerState.anchorOrigin.horizontal === "left" && ownerState.overlap === "rectangular",
style: {
top: 0,
left: 0,
transform: "scale(1) translate(-50%, -50%)",
transformOrigin: "0% 0%",
[`&.${badgeClasses_default.invisible}`]: {
transform: "scale(0) translate(-50%, -50%)"
}
}
}, {
props: ({
ownerState
}) => ownerState.anchorOrigin.vertical === "bottom" && ownerState.anchorOrigin.horizontal === "left" && ownerState.overlap === "rectangular",
style: {
bottom: 0,
left: 0,
transform: "scale(1) translate(-50%, 50%)",
transformOrigin: "0% 100%",
[`&.${badgeClasses_default.invisible}`]: {
transform: "scale(0) translate(-50%, 50%)"
}
}
}, {
props: ({
ownerState
}) => ownerState.anchorOrigin.vertical === "top" && ownerState.anchorOrigin.horizontal === "right" && ownerState.overlap === "circular",
style: {
top: "14%",
right: "14%",
transform: "scale(1) translate(50%, -50%)",
transformOrigin: "100% 0%",
[`&.${badgeClasses_default.invisible}`]: {
transform: "scale(0) translate(50%, -50%)"
}
}
}, {
props: ({
ownerState
}) => ownerState.anchorOrigin.vertical === "bottom" && ownerState.anchorOrigin.horizontal === "right" && ownerState.overlap === "circular",
style: {
bottom: "14%",
right: "14%",
transform: "scale(1) translate(50%, 50%)",
transformOrigin: "100% 100%",
[`&.${badgeClasses_default.invisible}`]: {
transform: "scale(0) translate(50%, 50%)"
}
}
}, {
props: ({
ownerState
}) => ownerState.anchorOrigin.vertical === "top" && ownerState.anchorOrigin.horizontal === "left" && ownerState.overlap === "circular",
style: {
top: "14%",
left: "14%",
transform: "scale(1) translate(-50%, -50%)",
transformOrigin: "0% 0%",
[`&.${badgeClasses_default.invisible}`]: {
transform: "scale(0) translate(-50%, -50%)"
}
}
}, {
props: ({
ownerState
}) => ownerState.anchorOrigin.vertical === "bottom" && ownerState.anchorOrigin.horizontal === "left" && ownerState.overlap === "circular",
style: {
bottom: "14%",
left: "14%",
transform: "scale(1) translate(-50%, 50%)",
transformOrigin: "0% 100%",
[`&.${badgeClasses_default.invisible}`]: {
transform: "scale(0) translate(-50%, 50%)"
}
}
}, {
props: {
invisible: true
},
style: {
transition: theme.transitions.create("transform", {
easing: theme.transitions.easing.easeInOut,
duration: theme.transitions.duration.leavingScreen
})
}
}]
};
});
var Badge3 = React84.forwardRef(function Badge4(inProps, ref) {
var _ref, _slots$root, _ref2, _slots$badge, _slotProps$root, _slotProps$badge;
const props = useThemeProps2({
props: inProps,
name: "MuiBadge"
});
const {
anchorOrigin: anchorOriginProp = {
vertical: "top",
horizontal: "right"
},
className,
component,
components = {},
componentsProps = {},
children,
overlap: overlapProp = "rectangular",
color: colorProp = "default",
invisible: invisibleProp = false,
max: maxProp = 99,
badgeContent: badgeContentProp,
slots,
slotProps,
showZero = false,
variant: variantProp = "standard"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded35);
const {
badgeContent,
invisible: invisibleFromHook,
max: max3,
displayValue: displayValueFromHook
} = useBadge({
max: maxProp,
invisible: invisibleProp,
badgeContent: badgeContentProp,
showZero
});
const prevProps = usePreviousProps_default({
anchorOrigin: anchorOriginProp,
color: colorProp,
overlap: overlapProp,
variant: variantProp,
badgeContent: badgeContentProp
});
const invisible = invisibleFromHook || badgeContent == null && variantProp !== "dot";
const {
color = colorProp,
overlap = overlapProp,
anchorOrigin = anchorOriginProp,
variant = variantProp
} = invisible ? prevProps : props;
const displayValue = variant !== "dot" ? displayValueFromHook : void 0;
const ownerState = _extends({}, props, {
badgeContent,
invisible,
max: max3,
displayValue,
showZero,
anchorOrigin,
color,
overlap,
variant
});
const classes = useUtilityClasses28(ownerState);
const RootSlot = (_ref = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components.Root) != null ? _ref : BadgeRoot;
const BadgeSlot = (_ref2 = (_slots$badge = slots == null ? void 0 : slots.badge) != null ? _slots$badge : components.Badge) != null ? _ref2 : BadgeBadge;
const rootSlotProps = (_slotProps$root = slotProps == null ? void 0 : slotProps.root) != null ? _slotProps$root : componentsProps.root;
const badgeSlotProps = (_slotProps$badge = slotProps == null ? void 0 : slotProps.badge) != null ? _slotProps$badge : componentsProps.badge;
const rootProps = useSlotProps({
elementType: RootSlot,
externalSlotProps: rootSlotProps,
externalForwardedProps: other,
additionalProps: {
ref,
as: component
},
ownerState,
className: clsx_default(rootSlotProps == null ? void 0 : rootSlotProps.className, classes.root, className)
});
const badgeProps = useSlotProps({
elementType: BadgeSlot,
externalSlotProps: badgeSlotProps,
ownerState,
className: clsx_default(classes.badge, badgeSlotProps == null ? void 0 : badgeSlotProps.className)
});
return (0, import_jsx_runtime62.jsxs)(RootSlot, _extends({}, rootProps, {
children: [children, (0, import_jsx_runtime61.jsx)(BadgeSlot, _extends({}, badgeProps, {
children: displayValue
}))]
}));
});
true ? Badge3.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The anchor of the badge.
* @default {
* vertical: 'top',
* horizontal: 'right',
* }
*/
anchorOrigin: import_prop_types38.default.shape({
horizontal: import_prop_types38.default.oneOf(["left", "right"]).isRequired,
vertical: import_prop_types38.default.oneOf(["bottom", "top"]).isRequired
}),
/**
* The content rendered within the badge.
*/
badgeContent: import_prop_types38.default.node,
/**
* The badge will be added relative to this node.
*/
children: import_prop_types38.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types38.default.object,
/**
* @ignore
*/
className: import_prop_types38.default.string,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
* @default 'default'
*/
color: import_prop_types38.default.oneOfType([import_prop_types38.default.oneOf(["default", "primary", "secondary", "error", "info", "success", "warning"]), import_prop_types38.default.string]),
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types38.default.elementType,
/**
* The components used for each slot inside.
*
* This prop is an alias for the `slots` prop.
* It's recommended to use the `slots` prop instead.
*
* @default {}
*/
components: import_prop_types38.default.shape({
Badge: import_prop_types38.default.elementType,
Root: import_prop_types38.default.elementType
}),
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* This prop is an alias for the `slotProps` prop.
* It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.
*
* @default {}
*/
componentsProps: import_prop_types38.default.shape({
badge: import_prop_types38.default.oneOfType([import_prop_types38.default.func, import_prop_types38.default.object]),
root: import_prop_types38.default.oneOfType([import_prop_types38.default.func, import_prop_types38.default.object])
}),
/**
* If `true`, the badge is invisible.
* @default false
*/
invisible: import_prop_types38.default.bool,
/**
* Max count to show.
* @default 99
*/
max: import_prop_types38.default.number,
/**
* Wrapped shape the badge should overlap.
* @default 'rectangular'
*/
overlap: import_prop_types38.default.oneOf(["circular", "rectangular"]),
/**
* Controls whether the badge is hidden when `badgeContent` is zero.
* @default false
*/
showZero: import_prop_types38.default.bool,
/**
* The props used for each slot inside the Badge.
* @default {}
*/
slotProps: import_prop_types38.default.shape({
badge: import_prop_types38.default.oneOfType([import_prop_types38.default.func, import_prop_types38.default.object]),
root: import_prop_types38.default.oneOfType([import_prop_types38.default.func, import_prop_types38.default.object])
}),
/**
* The components used for each slot inside the Badge.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types38.default.shape({
badge: import_prop_types38.default.elementType,
root: import_prop_types38.default.elementType
}),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types38.default.oneOfType([import_prop_types38.default.arrayOf(import_prop_types38.default.oneOfType([import_prop_types38.default.func, import_prop_types38.default.object, import_prop_types38.default.bool])), import_prop_types38.default.func, import_prop_types38.default.object]),
/**
* The variant to use.
* @default 'standard'
*/
variant: import_prop_types38.default.oneOfType([import_prop_types38.default.oneOf(["dot", "standard"]), import_prop_types38.default.string])
} : void 0;
var Badge_default = Badge3;
// node_modules/@mui/material/Box/boxClasses.js
init_generateUtilityClasses();
var boxClasses = generateUtilityClasses("MuiBox", ["root"]);
var boxClasses_default = boxClasses;
// node_modules/@mui/material/Box/Box.js
var import_prop_types39 = __toESM(require_prop_types());
// node_modules/@mui/material/className/index.js
init_utils();
// node_modules/@mui/material/Box/Box.js
init_identifier();
var defaultTheme = createTheme_default();
var Box = createBox({
themeId: identifier_default,
defaultTheme,
defaultClassName: boxClasses_default.root,
generateClassName: ClassNameGenerator_default.generate
});
true ? Box.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* @ignore
*/
children: import_prop_types39.default.node,
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types39.default.elementType,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types39.default.oneOfType([import_prop_types39.default.arrayOf(import_prop_types39.default.oneOfType([import_prop_types39.default.func, import_prop_types39.default.object, import_prop_types39.default.bool])), import_prop_types39.default.func, import_prop_types39.default.object])
} : void 0;
var Box_default = Box;
// node_modules/@mui/material/Button/buttonClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getButtonUtilityClass2(slot) {
return generateUtilityClass("MuiButton", slot);
}
var buttonClasses2 = generateUtilityClasses("MuiButton", ["root", "text", "textInherit", "textPrimary", "textSecondary", "textSuccess", "textError", "textInfo", "textWarning", "outlined", "outlinedInherit", "outlinedPrimary", "outlinedSecondary", "outlinedSuccess", "outlinedError", "outlinedInfo", "outlinedWarning", "contained", "containedInherit", "containedPrimary", "containedSecondary", "containedSuccess", "containedError", "containedInfo", "containedWarning", "disableElevation", "focusVisible", "disabled", "colorInherit", "colorPrimary", "colorSecondary", "colorSuccess", "colorError", "colorInfo", "colorWarning", "textSizeSmall", "textSizeMedium", "textSizeLarge", "outlinedSizeSmall", "outlinedSizeMedium", "outlinedSizeLarge", "containedSizeSmall", "containedSizeMedium", "containedSizeLarge", "sizeMedium", "sizeSmall", "sizeLarge", "fullWidth", "startIcon", "endIcon", "icon", "iconSizeSmall", "iconSizeMedium", "iconSizeLarge"]);
var buttonClasses_default = buttonClasses2;
// node_modules/@mui/material/ButtonGroup/ButtonGroupContext.js
var React85 = __toESM(require_react());
var ButtonGroupContext = React85.createContext({});
if (true) {
ButtonGroupContext.displayName = "ButtonGroupContext";
}
var ButtonGroupContext_default = ButtonGroupContext;
// node_modules/@mui/material/ButtonGroup/ButtonGroupButtonContext.js
var React86 = __toESM(require_react());
var ButtonGroupButtonContext = React86.createContext(void 0);
if (true) {
ButtonGroupButtonContext.displayName = "ButtonGroupButtonContext";
}
var ButtonGroupButtonContext_default = ButtonGroupButtonContext;
// node_modules/@mui/material/Button/Button.js
init_objectWithoutPropertiesLoose();
init_extends();
var React87 = __toESM(require_react());
var import_prop_types40 = __toESM(require_prop_types());
init_clsx();
init_resolveProps();
init_composeClasses();
var import_colorManipulator3 = __toESM(require_colorManipulator());
init_styled();
init_useThemeProps();
init_capitalize();
var import_jsx_runtime63 = __toESM(require_jsx_runtime());
var import_jsx_runtime64 = __toESM(require_jsx_runtime());
var _excluded36 = ["children", "color", "component", "className", "disabled", "disableElevation", "disableFocusRipple", "endIcon", "focusVisibleClassName", "fullWidth", "size", "startIcon", "type", "variant"];
var useUtilityClasses29 = (ownerState) => {
const {
color,
disableElevation,
fullWidth,
size: size3,
variant,
classes
} = ownerState;
const slots = {
root: ["root", variant, `${variant}${capitalize_default(color)}`, `size${capitalize_default(size3)}`, `${variant}Size${capitalize_default(size3)}`, `color${capitalize_default(color)}`, disableElevation && "disableElevation", fullWidth && "fullWidth"],
label: ["label"],
startIcon: ["icon", "startIcon", `iconSize${capitalize_default(size3)}`],
endIcon: ["icon", "endIcon", `iconSize${capitalize_default(size3)}`]
};
const composedClasses = composeClasses(slots, getButtonUtilityClass2, classes);
return _extends({}, classes, composedClasses);
};
var commonIconStyles = (ownerState) => _extends({}, ownerState.size === "small" && {
"& > *:nth-of-type(1)": {
fontSize: 18
}
}, ownerState.size === "medium" && {
"& > *:nth-of-type(1)": {
fontSize: 20
}
}, ownerState.size === "large" && {
"& > *:nth-of-type(1)": {
fontSize: 22
}
});
var ButtonRoot = styled_default(ButtonBase_default, {
shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
name: "MuiButton",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.root, styles4[ownerState.variant], styles4[`${ownerState.variant}${capitalize_default(ownerState.color)}`], styles4[`size${capitalize_default(ownerState.size)}`], styles4[`${ownerState.variant}Size${capitalize_default(ownerState.size)}`], ownerState.color === "inherit" && styles4.colorInherit, ownerState.disableElevation && styles4.disableElevation, ownerState.fullWidth && styles4.fullWidth];
}
})(({
theme,
ownerState
}) => {
var _theme$palette$getCon, _theme$palette;
const inheritContainedBackgroundColor = theme.palette.mode === "light" ? theme.palette.grey[300] : theme.palette.grey[800];
const inheritContainedHoverBackgroundColor = theme.palette.mode === "light" ? theme.palette.grey.A100 : theme.palette.grey[700];
return _extends({}, theme.typography.button, {
minWidth: 64,
padding: "6px 16px",
borderRadius: (theme.vars || theme).shape.borderRadius,
transition: theme.transitions.create(["background-color", "box-shadow", "border-color", "color"], {
duration: theme.transitions.duration.short
}),
"&:hover": _extends({
textDecoration: "none",
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.text.primaryChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0, import_colorManipulator3.alpha)(theme.palette.text.primary, theme.palette.action.hoverOpacity),
// Reset on touch devices, it doesn't add specificity
"@media (hover: none)": {
backgroundColor: "transparent"
}
}, ownerState.variant === "text" && ownerState.color !== "inherit" && {
backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0, import_colorManipulator3.alpha)(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),
// Reset on touch devices, it doesn't add specificity
"@media (hover: none)": {
backgroundColor: "transparent"
}
}, ownerState.variant === "outlined" && ownerState.color !== "inherit" && {
border: `1px solid ${(theme.vars || theme).palette[ownerState.color].main}`,
backgroundColor: theme.vars ? `rgba(${theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0, import_colorManipulator3.alpha)(theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),
// Reset on touch devices, it doesn't add specificity
"@media (hover: none)": {
backgroundColor: "transparent"
}
}, ownerState.variant === "contained" && {
backgroundColor: theme.vars ? theme.vars.palette.Button.inheritContainedHoverBg : inheritContainedHoverBackgroundColor,
boxShadow: (theme.vars || theme).shadows[4],
// Reset on touch devices, it doesn't add specificity
"@media (hover: none)": {
boxShadow: (theme.vars || theme).shadows[2],
backgroundColor: (theme.vars || theme).palette.grey[300]
}
}, ownerState.variant === "contained" && ownerState.color !== "inherit" && {
backgroundColor: (theme.vars || theme).palette[ownerState.color].dark,
// Reset on touch devices, it doesn't add specificity
"@media (hover: none)": {
backgroundColor: (theme.vars || theme).palette[ownerState.color].main
}
}),
"&:active": _extends({}, ownerState.variant === "contained" && {
boxShadow: (theme.vars || theme).shadows[8]
}),
[`&.${buttonClasses_default.focusVisible}`]: _extends({}, ownerState.variant === "contained" && {
boxShadow: (theme.vars || theme).shadows[6]
}),
[`&.${buttonClasses_default.disabled}`]: _extends({
color: (theme.vars || theme).palette.action.disabled
}, ownerState.variant === "outlined" && {
border: `1px solid ${(theme.vars || theme).palette.action.disabledBackground}`
}, ownerState.variant === "contained" && {
color: (theme.vars || theme).palette.action.disabled,
boxShadow: (theme.vars || theme).shadows[0],
backgroundColor: (theme.vars || theme).palette.action.disabledBackground
})
}, ownerState.variant === "text" && {
padding: "6px 8px"
}, ownerState.variant === "text" && ownerState.color !== "inherit" && {
color: (theme.vars || theme).palette[ownerState.color].main
}, ownerState.variant === "outlined" && {
padding: "5px 15px",
border: "1px solid currentColor"
}, ownerState.variant === "outlined" && ownerState.color !== "inherit" && {
color: (theme.vars || theme).palette[ownerState.color].main,
border: theme.vars ? `1px solid rgba(${theme.vars.palette[ownerState.color].mainChannel} / 0.5)` : `1px solid ${(0, import_colorManipulator3.alpha)(theme.palette[ownerState.color].main, 0.5)}`
}, ownerState.variant === "contained" && {
color: theme.vars ? (
// this is safe because grey does not change between default light/dark mode
theme.vars.palette.text.primary
) : (_theme$palette$getCon = (_theme$palette = theme.palette).getContrastText) == null ? void 0 : _theme$palette$getCon.call(_theme$palette, theme.palette.grey[300]),
backgroundColor: theme.vars ? theme.vars.palette.Button.inheritContainedBg : inheritContainedBackgroundColor,
boxShadow: (theme.vars || theme).shadows[2]
}, ownerState.variant === "contained" && ownerState.color !== "inherit" && {
color: (theme.vars || theme).palette[ownerState.color].contrastText,
backgroundColor: (theme.vars || theme).palette[ownerState.color].main
}, ownerState.color === "inherit" && {
color: "inherit",
borderColor: "currentColor"
}, ownerState.size === "small" && ownerState.variant === "text" && {
padding: "4px 5px",
fontSize: theme.typography.pxToRem(13)
}, ownerState.size === "large" && ownerState.variant === "text" && {
padding: "8px 11px",
fontSize: theme.typography.pxToRem(15)
}, ownerState.size === "small" && ownerState.variant === "outlined" && {
padding: "3px 9px",
fontSize: theme.typography.pxToRem(13)
}, ownerState.size === "large" && ownerState.variant === "outlined" && {
padding: "7px 21px",
fontSize: theme.typography.pxToRem(15)
}, ownerState.size === "small" && ownerState.variant === "contained" && {
padding: "4px 10px",
fontSize: theme.typography.pxToRem(13)
}, ownerState.size === "large" && ownerState.variant === "contained" && {
padding: "8px 22px",
fontSize: theme.typography.pxToRem(15)
}, ownerState.fullWidth && {
width: "100%"
});
}, ({
ownerState
}) => ownerState.disableElevation && {
boxShadow: "none",
"&:hover": {
boxShadow: "none"
},
[`&.${buttonClasses_default.focusVisible}`]: {
boxShadow: "none"
},
"&:active": {
boxShadow: "none"
},
[`&.${buttonClasses_default.disabled}`]: {
boxShadow: "none"
}
});
var ButtonStartIcon = styled_default("span", {
name: "MuiButton",
slot: "StartIcon",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.startIcon, styles4[`iconSize${capitalize_default(ownerState.size)}`]];
}
})(({
ownerState
}) => _extends({
display: "inherit",
marginRight: 8,
marginLeft: -4
}, ownerState.size === "small" && {
marginLeft: -2
}, commonIconStyles(ownerState)));
var ButtonEndIcon = styled_default("span", {
name: "MuiButton",
slot: "EndIcon",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.endIcon, styles4[`iconSize${capitalize_default(ownerState.size)}`]];
}
})(({
ownerState
}) => _extends({
display: "inherit",
marginRight: -4,
marginLeft: 8
}, ownerState.size === "small" && {
marginRight: -2
}, commonIconStyles(ownerState)));
var Button3 = React87.forwardRef(function Button4(inProps, ref) {
const contextProps = React87.useContext(ButtonGroupContext_default);
const buttonGroupButtonContextPositionClassName = React87.useContext(ButtonGroupButtonContext_default);
const resolvedProps = resolveProps(contextProps, inProps);
const props = useThemeProps({
props: resolvedProps,
name: "MuiButton"
});
const {
children,
color = "primary",
component = "button",
className,
disabled = false,
disableElevation = false,
disableFocusRipple = false,
endIcon: endIconProp,
focusVisibleClassName,
fullWidth = false,
size: size3 = "medium",
startIcon: startIconProp,
type,
variant = "text"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded36);
const ownerState = _extends({}, props, {
color,
component,
disabled,
disableElevation,
disableFocusRipple,
fullWidth,
size: size3,
type,
variant
});
const classes = useUtilityClasses29(ownerState);
const startIcon = startIconProp && (0, import_jsx_runtime63.jsx)(ButtonStartIcon, {
className: classes.startIcon,
ownerState,
children: startIconProp
});
const endIcon = endIconProp && (0, import_jsx_runtime63.jsx)(ButtonEndIcon, {
className: classes.endIcon,
ownerState,
children: endIconProp
});
const positionClassName = buttonGroupButtonContextPositionClassName || "";
return (0, import_jsx_runtime64.jsxs)(ButtonRoot, _extends({
ownerState,
className: clsx_default(contextProps.className, classes.root, className, positionClassName),
component,
disabled,
focusRipple: !disableFocusRipple,
focusVisibleClassName: clsx_default(classes.focusVisible, focusVisibleClassName),
ref,
type
}, other, {
classes,
children: [startIcon, children, endIcon]
}));
});
true ? Button3.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component.
*/
children: import_prop_types40.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types40.default.object,
/**
* @ignore
*/
className: import_prop_types40.default.string,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
* @default 'primary'
*/
color: import_prop_types40.default.oneOfType([import_prop_types40.default.oneOf(["inherit", "primary", "secondary", "success", "error", "info", "warning"]), import_prop_types40.default.string]),
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types40.default.elementType,
/**
* If `true`, the component is disabled.
* @default false
*/
disabled: import_prop_types40.default.bool,
/**
* If `true`, no elevation is used.
* @default false
*/
disableElevation: import_prop_types40.default.bool,
/**
* If `true`, the keyboard focus ripple is disabled.
* @default false
*/
disableFocusRipple: import_prop_types40.default.bool,
/**
* If `true`, the ripple effect is disabled.
*
* ⚠️ Without a ripple there is no styling for :focus-visible by default. Be sure
* to highlight the element by applying separate styles with the `.Mui-focusVisible` class.
* @default false
*/
disableRipple: import_prop_types40.default.bool,
/**
* Element placed after the children.
*/
endIcon: import_prop_types40.default.node,
/**
* @ignore
*/
focusVisibleClassName: import_prop_types40.default.string,
/**
* If `true`, the button will take up the full width of its container.
* @default false
*/
fullWidth: import_prop_types40.default.bool,
/**
* The URL to link to when the button is clicked.
* If defined, an `a` element will be used as the root node.
*/
href: import_prop_types40.default.string,
/**
* The size of the component.
* `small` is equivalent to the dense button styling.
* @default 'medium'
*/
size: import_prop_types40.default.oneOfType([import_prop_types40.default.oneOf(["small", "medium", "large"]), import_prop_types40.default.string]),
/**
* Element placed before the children.
*/
startIcon: import_prop_types40.default.node,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types40.default.oneOfType([import_prop_types40.default.arrayOf(import_prop_types40.default.oneOfType([import_prop_types40.default.func, import_prop_types40.default.object, import_prop_types40.default.bool])), import_prop_types40.default.func, import_prop_types40.default.object]),
/**
* @ignore
*/
type: import_prop_types40.default.oneOfType([import_prop_types40.default.oneOf(["button", "reset", "submit"]), import_prop_types40.default.string]),
/**
* The variant to use.
* @default 'text'
*/
variant: import_prop_types40.default.oneOfType([import_prop_types40.default.oneOf(["contained", "outlined", "text"]), import_prop_types40.default.string])
} : void 0;
var Button_default = Button3;
// node_modules/@mui/material/Checkbox/checkboxClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getCheckboxUtilityClass(slot) {
return generateUtilityClass("MuiCheckbox", slot);
}
var checkboxClasses = generateUtilityClasses("MuiCheckbox", ["root", "checked", "disabled", "indeterminate", "colorPrimary", "colorSecondary", "sizeSmall", "sizeMedium"]);
var checkboxClasses_default = checkboxClasses;
// node_modules/@mui/material/Checkbox/Checkbox.js
init_objectWithoutPropertiesLoose();
init_extends();
var React92 = __toESM(require_react());
var import_prop_types42 = __toESM(require_prop_types());
init_clsx();
init_refType();
init_composeClasses();
var import_colorManipulator4 = __toESM(require_colorManipulator());
// node_modules/@mui/material/internal/SwitchBase.js
init_objectWithoutPropertiesLoose();
init_extends();
var React88 = __toESM(require_react());
var import_prop_types41 = __toESM(require_prop_types());
init_clsx();
init_refType();
init_composeClasses();
init_capitalize();
init_styled();
init_useControlled2();
// node_modules/@mui/material/internal/switchBaseClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getSwitchBaseUtilityClass(slot) {
return generateUtilityClass("PrivateSwitchBase", slot);
}
var switchBaseClasses = generateUtilityClasses("PrivateSwitchBase", ["root", "checked", "disabled", "input", "edgeStart", "edgeEnd"]);
// node_modules/@mui/material/internal/SwitchBase.js
var import_jsx_runtime65 = __toESM(require_jsx_runtime());
var import_jsx_runtime66 = __toESM(require_jsx_runtime());
var _excluded37 = ["autoFocus", "checked", "checkedIcon", "className", "defaultChecked", "disabled", "disableFocusRipple", "edge", "icon", "id", "inputProps", "inputRef", "name", "onBlur", "onChange", "onFocus", "readOnly", "required", "tabIndex", "type", "value"];
var useUtilityClasses30 = (ownerState) => {
const {
classes,
checked,
disabled,
edge
} = ownerState;
const slots = {
root: ["root", checked && "checked", disabled && "disabled", edge && `edge${capitalize_default(edge)}`],
input: ["input"]
};
return composeClasses(slots, getSwitchBaseUtilityClass, classes);
};
var SwitchBaseRoot = styled_default(ButtonBase_default)(({
ownerState
}) => _extends({
padding: 9,
borderRadius: "50%"
}, ownerState.edge === "start" && {
marginLeft: ownerState.size === "small" ? -3 : -12
}, ownerState.edge === "end" && {
marginRight: ownerState.size === "small" ? -3 : -12
}));
var SwitchBaseInput = styled_default("input", {
shouldForwardProp: rootShouldForwardProp
})({
cursor: "inherit",
position: "absolute",
opacity: 0,
width: "100%",
height: "100%",
top: 0,
left: 0,
margin: 0,
padding: 0,
zIndex: 1
});
var SwitchBase = React88.forwardRef(function SwitchBase2(props, ref) {
const {
autoFocus,
checked: checkedProp,
checkedIcon,
className,
defaultChecked,
disabled: disabledProp,
disableFocusRipple = false,
edge = false,
icon,
id,
inputProps,
inputRef,
name,
onBlur,
onChange,
onFocus,
readOnly,
required = false,
tabIndex,
type,
value
} = props, other = _objectWithoutPropertiesLoose(props, _excluded37);
const [checked, setCheckedState] = useControlled_default({
controlled: checkedProp,
default: Boolean(defaultChecked),
name: "SwitchBase",
state: "checked"
});
const muiFormControl = useFormControl();
const handleFocus = (event) => {
if (onFocus) {
onFocus(event);
}
if (muiFormControl && muiFormControl.onFocus) {
muiFormControl.onFocus(event);
}
};
const handleBlur2 = (event) => {
if (onBlur) {
onBlur(event);
}
if (muiFormControl && muiFormControl.onBlur) {
muiFormControl.onBlur(event);
}
};
const handleInputChange2 = (event) => {
if (event.nativeEvent.defaultPrevented) {
return;
}
const newChecked = event.target.checked;
setCheckedState(newChecked);
if (onChange) {
onChange(event, newChecked);
}
};
let disabled = disabledProp;
if (muiFormControl) {
if (typeof disabled === "undefined") {
disabled = muiFormControl.disabled;
}
}
const hasLabelFor = type === "checkbox" || type === "radio";
const ownerState = _extends({}, props, {
checked,
disabled,
disableFocusRipple,
edge
});
const classes = useUtilityClasses30(ownerState);
return (0, import_jsx_runtime66.jsxs)(SwitchBaseRoot, _extends({
component: "span",
className: clsx_default(classes.root, className),
centerRipple: true,
focusRipple: !disableFocusRipple,
disabled,
tabIndex: null,
role: void 0,
onFocus: handleFocus,
onBlur: handleBlur2,
ownerState,
ref
}, other, {
children: [(0, import_jsx_runtime65.jsx)(SwitchBaseInput, _extends({
autoFocus,
checked: checkedProp,
defaultChecked,
className: classes.input,
disabled,
id: hasLabelFor ? id : void 0,
name,
onChange: handleInputChange2,
readOnly,
ref: inputRef,
required,
ownerState,
tabIndex,
type
}, type === "checkbox" && value === void 0 ? {} : {
value
}, inputProps)), checked ? checkedIcon : icon]
}));
});
true ? SwitchBase.propTypes = {
/**
* If `true`, the `input` element is focused during the first mount.
*/
autoFocus: import_prop_types41.default.bool,
/**
* If `true`, the component is checked.
*/
checked: import_prop_types41.default.bool,
/**
* The icon to display when the component is checked.
*/
checkedIcon: import_prop_types41.default.node.isRequired,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types41.default.object,
/**
* @ignore
*/
className: import_prop_types41.default.string,
/**
* @ignore
*/
defaultChecked: import_prop_types41.default.bool,
/**
* If `true`, the component is disabled.
*/
disabled: import_prop_types41.default.bool,
/**
* If `true`, the keyboard focus ripple is disabled.
* @default false
*/
disableFocusRipple: import_prop_types41.default.bool,
/**
* If given, uses a negative margin to counteract the padding on one
* side (this is often helpful for aligning the left or right
* side of the icon with content above or below, without ruining the border
* size and shape).
* @default false
*/
edge: import_prop_types41.default.oneOf(["end", "start", false]),
/**
* The icon to display when the component is unchecked.
*/
icon: import_prop_types41.default.node.isRequired,
/**
* The id of the `input` element.
*/
id: import_prop_types41.default.string,
/**
* [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.
*/
inputProps: import_prop_types41.default.object,
/**
* Pass a ref to the `input` element.
*/
inputRef: refType_default,
/*
* @ignore
*/
name: import_prop_types41.default.string,
/**
* @ignore
*/
onBlur: import_prop_types41.default.func,
/**
* Callback fired when the state is changed.
*
* @param {object} event The event source of the callback.
* You can pull out the new checked state by accessing `event.target.checked` (boolean).
*/
onChange: import_prop_types41.default.func,
/**
* @ignore
*/
onFocus: import_prop_types41.default.func,
/**
* It prevents the user from changing the value of the field
* (not from interacting with the field).
*/
readOnly: import_prop_types41.default.bool,
/**
* If `true`, the `input` element is required.
*/
required: import_prop_types41.default.bool,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types41.default.object,
/**
* @ignore
*/
tabIndex: import_prop_types41.default.oneOfType([import_prop_types41.default.number, import_prop_types41.default.string]),
/**
* The input component prop `type`.
*/
type: import_prop_types41.default.string.isRequired,
/**
* The value of the component.
*/
value: import_prop_types41.default.any
} : void 0;
var SwitchBase_default = SwitchBase;
// node_modules/@mui/material/internal/svg-icons/CheckBoxOutlineBlank.js
var React89 = __toESM(require_react());
init_createSvgIcon();
var import_jsx_runtime67 = __toESM(require_jsx_runtime());
var CheckBoxOutlineBlank_default = createSvgIcon((0, import_jsx_runtime67.jsx)("path", {
d: "M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"
}), "CheckBoxOutlineBlank");
// node_modules/@mui/material/internal/svg-icons/CheckBox.js
var React90 = __toESM(require_react());
init_createSvgIcon();
var import_jsx_runtime68 = __toESM(require_jsx_runtime());
var CheckBox_default = createSvgIcon((0, import_jsx_runtime68.jsx)("path", {
d: "M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"
}), "CheckBox");
// node_modules/@mui/material/internal/svg-icons/IndeterminateCheckBox.js
var React91 = __toESM(require_react());
init_createSvgIcon();
var import_jsx_runtime69 = __toESM(require_jsx_runtime());
var IndeterminateCheckBox_default = createSvgIcon((0, import_jsx_runtime69.jsx)("path", {
d: "M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"
}), "IndeterminateCheckBox");
// node_modules/@mui/material/Checkbox/Checkbox.js
init_capitalize();
init_useThemeProps();
init_styled();
var import_jsx_runtime70 = __toESM(require_jsx_runtime());
var _excluded38 = ["checkedIcon", "color", "icon", "indeterminate", "indeterminateIcon", "inputProps", "size", "className"];
var useUtilityClasses31 = (ownerState) => {
const {
classes,
indeterminate,
color,
size: size3
} = ownerState;
const slots = {
root: ["root", indeterminate && "indeterminate", `color${capitalize_default(color)}`, `size${capitalize_default(size3)}`]
};
const composedClasses = composeClasses(slots, getCheckboxUtilityClass, classes);
return _extends({}, classes, composedClasses);
};
var CheckboxRoot = styled_default(SwitchBase_default, {
shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
name: "MuiCheckbox",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.root, ownerState.indeterminate && styles4.indeterminate, styles4[`size${capitalize_default(ownerState.size)}`], ownerState.color !== "default" && styles4[`color${capitalize_default(ownerState.color)}`]];
}
})(({
theme,
ownerState
}) => _extends({
color: (theme.vars || theme).palette.text.secondary
}, !ownerState.disableRipple && {
"&:hover": {
backgroundColor: theme.vars ? `rgba(${ownerState.color === "default" ? theme.vars.palette.action.activeChannel : theme.vars.palette[ownerState.color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0, import_colorManipulator4.alpha)(ownerState.color === "default" ? theme.palette.action.active : theme.palette[ownerState.color].main, theme.palette.action.hoverOpacity),
// Reset on touch devices, it doesn't add specificity
"@media (hover: none)": {
backgroundColor: "transparent"
}
}
}, ownerState.color !== "default" && {
[`&.${checkboxClasses_default.checked}, &.${checkboxClasses_default.indeterminate}`]: {
color: (theme.vars || theme).palette[ownerState.color].main
},
[`&.${checkboxClasses_default.disabled}`]: {
color: (theme.vars || theme).palette.action.disabled
}
}));
var defaultCheckedIcon = (0, import_jsx_runtime70.jsx)(CheckBox_default, {});
var defaultIcon = (0, import_jsx_runtime70.jsx)(CheckBoxOutlineBlank_default, {});
var defaultIndeterminateIcon = (0, import_jsx_runtime70.jsx)(IndeterminateCheckBox_default, {});
var Checkbox = React92.forwardRef(function Checkbox2(inProps, ref) {
var _icon$props$fontSize, _indeterminateIcon$pr;
const props = useThemeProps({
props: inProps,
name: "MuiCheckbox"
});
const {
checkedIcon = defaultCheckedIcon,
color = "primary",
icon: iconProp = defaultIcon,
indeterminate = false,
indeterminateIcon: indeterminateIconProp = defaultIndeterminateIcon,
inputProps,
size: size3 = "medium",
className
} = props, other = _objectWithoutPropertiesLoose(props, _excluded38);
const icon = indeterminate ? indeterminateIconProp : iconProp;
const indeterminateIcon = indeterminate ? indeterminateIconProp : checkedIcon;
const ownerState = _extends({}, props, {
color,
indeterminate,
size: size3
});
const classes = useUtilityClasses31(ownerState);
return (0, import_jsx_runtime70.jsx)(CheckboxRoot, _extends({
type: "checkbox",
inputProps: _extends({
"data-indeterminate": indeterminate
}, inputProps),
icon: React92.cloneElement(icon, {
fontSize: (_icon$props$fontSize = icon.props.fontSize) != null ? _icon$props$fontSize : size3
}),
checkedIcon: React92.cloneElement(indeterminateIcon, {
fontSize: (_indeterminateIcon$pr = indeterminateIcon.props.fontSize) != null ? _indeterminateIcon$pr : size3
}),
ownerState,
ref,
className: clsx_default(classes.root, className)
}, other, {
classes
}));
});
true ? Checkbox.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* If `true`, the component is checked.
*/
checked: import_prop_types42.default.bool,
/**
* The icon to display when the component is checked.
* @default <CheckBoxIcon />
*/
checkedIcon: import_prop_types42.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types42.default.object,
/**
* @ignore
*/
className: import_prop_types42.default.string,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
* @default 'primary'
*/
color: import_prop_types42.default.oneOfType([import_prop_types42.default.oneOf(["default", "primary", "secondary", "error", "info", "success", "warning"]), import_prop_types42.default.string]),
/**
* The default checked state. Use when the component is not controlled.
*/
defaultChecked: import_prop_types42.default.bool,
/**
* If `true`, the component is disabled.
* @default false
*/
disabled: import_prop_types42.default.bool,
/**
* If `true`, the ripple effect is disabled.
* @default false
*/
disableRipple: import_prop_types42.default.bool,
/**
* The icon to display when the component is unchecked.
* @default <CheckBoxOutlineBlankIcon />
*/
icon: import_prop_types42.default.node,
/**
* The id of the `input` element.
*/
id: import_prop_types42.default.string,
/**
* If `true`, the component appears indeterminate.
* This does not set the native input element to indeterminate due
* to inconsistent behavior across browsers.
* However, we set a `data-indeterminate` attribute on the `input`.
* @default false
*/
indeterminate: import_prop_types42.default.bool,
/**
* The icon to display when the component is indeterminate.
* @default <IndeterminateCheckBoxIcon />
*/
indeterminateIcon: import_prop_types42.default.node,
/**
* [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.
*/
inputProps: import_prop_types42.default.object,
/**
* Pass a ref to the `input` element.
*/
inputRef: refType_default,
/**
* Callback fired when the state is changed.
*
* @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.
* You can pull out the new checked state by accessing `event.target.checked` (boolean).
*/
onChange: import_prop_types42.default.func,
/**
* If `true`, the `input` element is required.
* @default false
*/
required: import_prop_types42.default.bool,
/**
* The size of the component.
* `small` is equivalent to the dense checkbox styling.
* @default 'medium'
*/
size: import_prop_types42.default.oneOfType([import_prop_types42.default.oneOf(["medium", "small"]), import_prop_types42.default.string]),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types42.default.oneOfType([import_prop_types42.default.arrayOf(import_prop_types42.default.oneOfType([import_prop_types42.default.func, import_prop_types42.default.object, import_prop_types42.default.bool])), import_prop_types42.default.func, import_prop_types42.default.object]),
/**
* The value of the component. The DOM API casts this to a string.
* The browser uses "on" as the default value.
*/
value: import_prop_types42.default.any
} : void 0;
var Checkbox_default = Checkbox;
// node_modules/@mui/material/CircularProgress/circularProgressClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getCircularProgressUtilityClass(slot) {
return generateUtilityClass("MuiCircularProgress", slot);
}
var circularProgressClasses = generateUtilityClasses("MuiCircularProgress", ["root", "determinate", "indeterminate", "colorPrimary", "colorSecondary", "svg", "circle", "circleDeterminate", "circleIndeterminate", "circleDisableShrink"]);
var circularProgressClasses_default = circularProgressClasses;
// node_modules/@mui/material/CircularProgress/CircularProgress.js
init_objectWithoutPropertiesLoose();
init_extends();
var React93 = __toESM(require_react());
var import_prop_types43 = __toESM(require_prop_types());
init_clsx();
init_chainPropTypes();
init_composeClasses();
init_capitalize();
init_useThemeProps();
init_styled();
var import_jsx_runtime71 = __toESM(require_jsx_runtime());
var _excluded39 = ["className", "color", "disableShrink", "size", "style", "thickness", "value", "variant"];
var _ = (t) => t;
var _t;
var _t2;
var _t3;
var _t4;
var SIZE = 44;
var circularRotateKeyframe = keyframes(_t || (_t = _`
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
`));
var circularDashKeyframe = keyframes(_t2 || (_t2 = _`
0% {
stroke-dasharray: 1px, 200px;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 100px, 200px;
stroke-dashoffset: -15px;
}
100% {
stroke-dasharray: 100px, 200px;
stroke-dashoffset: -125px;
}
`));
var useUtilityClasses32 = (ownerState) => {
const {
classes,
variant,
color,
disableShrink
} = ownerState;
const slots = {
root: ["root", variant, `color${capitalize_default(color)}`],
svg: ["svg"],
circle: ["circle", `circle${capitalize_default(variant)}`, disableShrink && "circleDisableShrink"]
};
return composeClasses(slots, getCircularProgressUtilityClass, classes);
};
var CircularProgressRoot = styled_default("span", {
name: "MuiCircularProgress",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.root, styles4[ownerState.variant], styles4[`color${capitalize_default(ownerState.color)}`]];
}
})(({
ownerState,
theme
}) => _extends({
display: "inline-block"
}, ownerState.variant === "determinate" && {
transition: theme.transitions.create("transform")
}, ownerState.color !== "inherit" && {
color: (theme.vars || theme).palette[ownerState.color].main
}), ({
ownerState
}) => ownerState.variant === "indeterminate" && css(_t3 || (_t3 = _`
animation: ${0} 1.4s linear infinite;
`), circularRotateKeyframe));
var CircularProgressSVG = styled_default("svg", {
name: "MuiCircularProgress",
slot: "Svg",
overridesResolver: (props, styles4) => styles4.svg
})({
display: "block"
// Keeps the progress centered
});
var CircularProgressCircle = styled_default("circle", {
name: "MuiCircularProgress",
slot: "Circle",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.circle, styles4[`circle${capitalize_default(ownerState.variant)}`], ownerState.disableShrink && styles4.circleDisableShrink];
}
})(({
ownerState,
theme
}) => _extends({
stroke: "currentColor"
}, ownerState.variant === "determinate" && {
transition: theme.transitions.create("stroke-dashoffset")
}, ownerState.variant === "indeterminate" && {
// Some default value that looks fine waiting for the animation to kicks in.
strokeDasharray: "80px, 200px",
strokeDashoffset: 0
// Add the unit to fix a Edge 16 and below bug.
}), ({
ownerState
}) => ownerState.variant === "indeterminate" && !ownerState.disableShrink && css(_t4 || (_t4 = _`
animation: ${0} 1.4s ease-in-out infinite;
`), circularDashKeyframe));
var CircularProgress = React93.forwardRef(function CircularProgress2(inProps, ref) {
const props = useThemeProps({
props: inProps,
name: "MuiCircularProgress"
});
const {
className,
color = "primary",
disableShrink = false,
size: size3 = 40,
style,
thickness = 3.6,
value = 0,
variant = "indeterminate"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded39);
const ownerState = _extends({}, props, {
color,
disableShrink,
size: size3,
thickness,
value,
variant
});
const classes = useUtilityClasses32(ownerState);
const circleStyle = {};
const rootStyle = {};
const rootProps = {};
if (variant === "determinate") {
const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);
circleStyle.strokeDasharray = circumference.toFixed(3);
rootProps["aria-valuenow"] = Math.round(value);
circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;
rootStyle.transform = "rotate(-90deg)";
}
return (0, import_jsx_runtime71.jsx)(CircularProgressRoot, _extends({
className: clsx_default(classes.root, className),
style: _extends({
width: size3,
height: size3
}, rootStyle, style),
ownerState,
ref,
role: "progressbar"
}, rootProps, other, {
children: (0, import_jsx_runtime71.jsx)(CircularProgressSVG, {
className: classes.svg,
ownerState,
viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,
children: (0, import_jsx_runtime71.jsx)(CircularProgressCircle, {
className: classes.circle,
style: circleStyle,
ownerState,
cx: SIZE,
cy: SIZE,
r: (SIZE - thickness) / 2,
fill: "none",
strokeWidth: thickness
})
})
}));
});
true ? CircularProgress.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types43.default.object,
/**
* @ignore
*/
className: import_prop_types43.default.string,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
* @default 'primary'
*/
color: import_prop_types43.default.oneOfType([import_prop_types43.default.oneOf(["inherit", "primary", "secondary", "error", "info", "success", "warning"]), import_prop_types43.default.string]),
/**
* If `true`, the shrink animation is disabled.
* This only works if variant is `indeterminate`.
* @default false
*/
disableShrink: chainPropTypes(import_prop_types43.default.bool, (props) => {
if (props.disableShrink && props.variant && props.variant !== "indeterminate") {
return new Error("MUI: You have provided the `disableShrink` prop with a variant other than `indeterminate`. This will have no effect.");
}
return null;
}),
/**
* The size of the component.
* If using a number, the pixel unit is assumed.
* If using a string, you need to provide the CSS unit, e.g. '3rem'.
* @default 40
*/
size: import_prop_types43.default.oneOfType([import_prop_types43.default.number, import_prop_types43.default.string]),
/**
* @ignore
*/
style: import_prop_types43.default.object,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types43.default.oneOfType([import_prop_types43.default.arrayOf(import_prop_types43.default.oneOfType([import_prop_types43.default.func, import_prop_types43.default.object, import_prop_types43.default.bool])), import_prop_types43.default.func, import_prop_types43.default.object]),
/**
* The thickness of the circle.
* @default 3.6
*/
thickness: import_prop_types43.default.number,
/**
* The value of the progress indicator for the determinate variant.
* Value between 0 and 100.
* @default 0
*/
value: import_prop_types43.default.number,
/**
* The variant to use.
* Use indeterminate when there is no progress value.
* @default 'indeterminate'
*/
variant: import_prop_types43.default.oneOf(["determinate", "indeterminate"])
} : void 0;
var CircularProgress_default = CircularProgress;
// node_modules/@mui/material/Modal/modalClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getModalUtilityClass2(slot) {
return generateUtilityClass("MuiModal", slot);
}
var modalClasses2 = generateUtilityClasses("MuiModal", ["root", "hidden", "backdrop"]);
var modalClasses_default = modalClasses2;
// node_modules/@mui/material/Modal/Modal.js
init_objectWithoutPropertiesLoose();
init_extends();
var React94 = __toESM(require_react());
var import_prop_types44 = __toESM(require_prop_types());
init_clsx();
init_HTMLElementType();
init_elementAcceptingRef();
init_composeClasses();
init_styled();
init_useThemeProps();
var import_jsx_runtime72 = __toESM(require_jsx_runtime());
var import_jsx_runtime73 = __toESM(require_jsx_runtime());
var _excluded40 = ["BackdropComponent", "BackdropProps", "classes", "className", "closeAfterTransition", "children", "container", "component", "components", "componentsProps", "disableAutoFocus", "disableEnforceFocus", "disableEscapeKeyDown", "disablePortal", "disableRestoreFocus", "disableScrollLock", "hideBackdrop", "keepMounted", "onBackdropClick", "onClose", "onTransitionEnter", "onTransitionExited", "open", "slotProps", "slots", "theme"];
var useUtilityClasses33 = (ownerState) => {
const {
open,
exited,
classes
} = ownerState;
const slots = {
root: ["root", !open && exited && "hidden"],
backdrop: ["backdrop"]
};
return composeClasses(slots, getModalUtilityClass2, classes);
};
var ModalRoot = styled_default("div", {
name: "MuiModal",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.root, !ownerState.open && ownerState.exited && styles4.hidden];
}
})(({
theme,
ownerState
}) => _extends({
position: "fixed",
zIndex: (theme.vars || theme).zIndex.modal,
right: 0,
bottom: 0,
top: 0,
left: 0
}, !ownerState.open && ownerState.exited && {
visibility: "hidden"
}));
var ModalBackdrop = styled_default(Backdrop_default, {
name: "MuiModal",
slot: "Backdrop",
overridesResolver: (props, styles4) => {
return styles4.backdrop;
}
})({
zIndex: -1
});
var Modal3 = React94.forwardRef(function Modal4(inProps, ref) {
var _ref, _slots$root, _ref2, _slots$backdrop, _slotProps$root, _slotProps$backdrop;
const props = useThemeProps({
name: "MuiModal",
props: inProps
});
const {
BackdropComponent = ModalBackdrop,
BackdropProps,
className,
closeAfterTransition = false,
children,
container,
component,
components = {},
componentsProps = {},
disableAutoFocus = false,
disableEnforceFocus = false,
disableEscapeKeyDown = false,
disablePortal = false,
disableRestoreFocus = false,
disableScrollLock = false,
hideBackdrop = false,
keepMounted = false,
onBackdropClick,
open,
slotProps,
slots
// eslint-disable-next-line react/prop-types
} = props, other = _objectWithoutPropertiesLoose(props, _excluded40);
const propsWithDefaults = _extends({}, props, {
closeAfterTransition,
disableAutoFocus,
disableEnforceFocus,
disableEscapeKeyDown,
disablePortal,
disableRestoreFocus,
disableScrollLock,
hideBackdrop,
keepMounted
});
const {
getRootProps,
getBackdropProps,
getTransitionProps: getTransitionProps2,
portalRef,
isTopModal,
exited,
hasTransition
} = useModal(_extends({}, propsWithDefaults, {
rootRef: ref
}));
const ownerState = _extends({}, propsWithDefaults, {
exited
});
const classes = useUtilityClasses33(ownerState);
const childProps = {};
if (children.props.tabIndex === void 0) {
childProps.tabIndex = "-1";
}
if (hasTransition) {
const {
onEnter,
onExited
} = getTransitionProps2();
childProps.onEnter = onEnter;
childProps.onExited = onExited;
}
const RootSlot = (_ref = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : components.Root) != null ? _ref : ModalRoot;
const BackdropSlot = (_ref2 = (_slots$backdrop = slots == null ? void 0 : slots.backdrop) != null ? _slots$backdrop : components.Backdrop) != null ? _ref2 : BackdropComponent;
const rootSlotProps = (_slotProps$root = slotProps == null ? void 0 : slotProps.root) != null ? _slotProps$root : componentsProps.root;
const backdropSlotProps = (_slotProps$backdrop = slotProps == null ? void 0 : slotProps.backdrop) != null ? _slotProps$backdrop : componentsProps.backdrop;
const rootProps = useSlotProps({
elementType: RootSlot,
externalSlotProps: rootSlotProps,
externalForwardedProps: other,
getSlotProps: getRootProps,
additionalProps: {
ref,
as: component
},
ownerState,
className: clsx_default(className, rootSlotProps == null ? void 0 : rootSlotProps.className, classes == null ? void 0 : classes.root, !ownerState.open && ownerState.exited && (classes == null ? void 0 : classes.hidden))
});
const backdropProps = useSlotProps({
elementType: BackdropSlot,
externalSlotProps: backdropSlotProps,
additionalProps: BackdropProps,
getSlotProps: (otherHandlers) => {
return getBackdropProps(_extends({}, otherHandlers, {
onClick: (e) => {
if (onBackdropClick) {
onBackdropClick(e);
}
if (otherHandlers != null && otherHandlers.onClick) {
otherHandlers.onClick(e);
}
}
}));
},
className: clsx_default(backdropSlotProps == null ? void 0 : backdropSlotProps.className, BackdropProps == null ? void 0 : BackdropProps.className, classes == null ? void 0 : classes.backdrop),
ownerState
});
if (!keepMounted && !open && (!hasTransition || exited)) {
return null;
}
return (0, import_jsx_runtime72.jsx)(Portal, {
ref: portalRef,
container,
disablePortal,
children: (0, import_jsx_runtime73.jsxs)(RootSlot, _extends({}, rootProps, {
children: [!hideBackdrop && BackdropComponent ? (0, import_jsx_runtime72.jsx)(BackdropSlot, _extends({}, backdropProps)) : null, (0, import_jsx_runtime72.jsx)(FocusTrap, {
disableEnforceFocus,
disableAutoFocus,
disableRestoreFocus,
isEnabled: isTopModal,
open,
children: React94.cloneElement(children, childProps)
})]
}))
});
});
true ? Modal3.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* A backdrop component. This prop enables custom backdrop rendering.
* @deprecated Use `slots.backdrop` instead. While this prop currently works, it will be removed in the next major version.
* Use the `slots.backdrop` prop to make your application ready for the next version of Material UI.
* @default styled(Backdrop, {
* name: 'MuiModal',
* slot: 'Backdrop',
* overridesResolver: (props, styles) => {
* return styles.backdrop;
* },
* })({
* zIndex: -1,
* })
*/
BackdropComponent: import_prop_types44.default.elementType,
/**
* Props applied to the [`Backdrop`](/material-ui/api/backdrop/) element.
* @deprecated Use `slotProps.backdrop` instead.
*/
BackdropProps: import_prop_types44.default.object,
/**
* A single child content element.
*/
children: elementAcceptingRef_default.isRequired,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types44.default.object,
/**
* @ignore
*/
className: import_prop_types44.default.string,
/**
* When set to true the Modal waits until a nested Transition is completed before closing.
* @default false
*/
closeAfterTransition: import_prop_types44.default.bool,
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types44.default.elementType,
/**
* The components used for each slot inside.
*
* This prop is an alias for the `slots` prop.
* It's recommended to use the `slots` prop instead.
*
* @default {}
*/
components: import_prop_types44.default.shape({
Backdrop: import_prop_types44.default.elementType,
Root: import_prop_types44.default.elementType
}),
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* This prop is an alias for the `slotProps` prop.
* It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.
*
* @default {}
*/
componentsProps: import_prop_types44.default.shape({
backdrop: import_prop_types44.default.oneOfType([import_prop_types44.default.func, import_prop_types44.default.object]),
root: import_prop_types44.default.oneOfType([import_prop_types44.default.func, import_prop_types44.default.object])
}),
/**
* An HTML element or function that returns one.
* The `container` will have the portal children appended to it.
*
* You can also provide a callback, which is called in a React layout effect.
* This lets you set the container from a ref, and also makes server-side rendering possible.
*
* By default, it uses the body of the top-level document object,
* so it's simply `document.body` most of the time.
*/
container: import_prop_types44.default.oneOfType([HTMLElementType, import_prop_types44.default.func]),
/**
* If `true`, the modal will not automatically shift focus to itself when it opens, and
* replace it to the last focused element when it closes.
* This also works correctly with any modal children that have the `disableAutoFocus` prop.
*
* Generally this should never be set to `true` as it makes the modal less
* accessible to assistive technologies, like screen readers.
* @default false
*/
disableAutoFocus: import_prop_types44.default.bool,
/**
* If `true`, the modal will not prevent focus from leaving the modal while open.
*
* Generally this should never be set to `true` as it makes the modal less
* accessible to assistive technologies, like screen readers.
* @default false
*/
disableEnforceFocus: import_prop_types44.default.bool,
/**
* If `true`, hitting escape will not fire the `onClose` callback.
* @default false
*/
disableEscapeKeyDown: import_prop_types44.default.bool,
/**
* The `children` will be under the DOM hierarchy of the parent component.
* @default false
*/
disablePortal: import_prop_types44.default.bool,
/**
* If `true`, the modal will not restore focus to previously focused element once
* modal is hidden or unmounted.
* @default false
*/
disableRestoreFocus: import_prop_types44.default.bool,
/**
* Disable the scroll lock behavior.
* @default false
*/
disableScrollLock: import_prop_types44.default.bool,
/**
* If `true`, the backdrop is not rendered.
* @default false
*/
hideBackdrop: import_prop_types44.default.bool,
/**
* Always keep the children in the DOM.
* This prop can be useful in SEO situation or
* when you want to maximize the responsiveness of the Modal.
* @default false
*/
keepMounted: import_prop_types44.default.bool,
/**
* Callback fired when the backdrop is clicked.
* @deprecated Use the `onClose` prop with the `reason` argument to handle the `backdropClick` events.
*/
onBackdropClick: import_prop_types44.default.func,
/**
* Callback fired when the component requests to be closed.
* The `reason` parameter can optionally be used to control the response to `onClose`.
*
* @param {object} event The event source of the callback.
* @param {string} reason Can be: `"escapeKeyDown"`, `"backdropClick"`.
*/
onClose: import_prop_types44.default.func,
/**
* A function called when a transition enters.
*/
onTransitionEnter: import_prop_types44.default.func,
/**
* A function called when a transition has exited.
*/
onTransitionExited: import_prop_types44.default.func,
/**
* If `true`, the component is shown.
*/
open: import_prop_types44.default.bool.isRequired,
/**
* The props used for each slot inside the Modal.
* @default {}
*/
slotProps: import_prop_types44.default.shape({
backdrop: import_prop_types44.default.oneOfType([import_prop_types44.default.func, import_prop_types44.default.object]),
root: import_prop_types44.default.oneOfType([import_prop_types44.default.func, import_prop_types44.default.object])
}),
/**
* The components used for each slot inside the Modal.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types44.default.shape({
backdrop: import_prop_types44.default.elementType,
root: import_prop_types44.default.elementType
}),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types44.default.oneOfType([import_prop_types44.default.arrayOf(import_prop_types44.default.oneOfType([import_prop_types44.default.func, import_prop_types44.default.object, import_prop_types44.default.bool])), import_prop_types44.default.func, import_prop_types44.default.object])
} : void 0;
var Modal_default = Modal3;
// node_modules/@mui/material/FilledInput/FilledInput.js
init_objectWithoutPropertiesLoose();
init_extends();
var React95 = __toESM(require_react());
init_deepmerge();
init_refType();
var import_prop_types45 = __toESM(require_prop_types());
init_composeClasses();
init_styled();
init_useThemeProps();
var import_jsx_runtime74 = __toESM(require_jsx_runtime());
var _excluded41 = ["disableUnderline", "components", "componentsProps", "fullWidth", "hiddenLabel", "inputComponent", "multiline", "slotProps", "slots", "type"];
var useUtilityClasses34 = (ownerState) => {
const {
classes,
disableUnderline
} = ownerState;
const slots = {
root: ["root", !disableUnderline && "underline"],
input: ["input"]
};
const composedClasses = composeClasses(slots, getFilledInputUtilityClass, classes);
return _extends({}, classes, composedClasses);
};
var FilledInputRoot = styled_default(InputBaseRoot, {
shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
name: "MuiFilledInput",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [...rootOverridesResolver(props, styles4), !ownerState.disableUnderline && styles4.underline];
}
})(({
theme,
ownerState
}) => {
var _palette;
const light = theme.palette.mode === "light";
const bottomLineColor = light ? "rgba(0, 0, 0, 0.42)" : "rgba(255, 255, 255, 0.7)";
const backgroundColor = light ? "rgba(0, 0, 0, 0.06)" : "rgba(255, 255, 255, 0.09)";
const hoverBackground = light ? "rgba(0, 0, 0, 0.09)" : "rgba(255, 255, 255, 0.13)";
const disabledBackground = light ? "rgba(0, 0, 0, 0.12)" : "rgba(255, 255, 255, 0.12)";
return _extends({
position: "relative",
backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor,
borderTopLeftRadius: (theme.vars || theme).shape.borderRadius,
borderTopRightRadius: (theme.vars || theme).shape.borderRadius,
transition: theme.transitions.create("background-color", {
duration: theme.transitions.duration.shorter,
easing: theme.transitions.easing.easeOut
}),
"&:hover": {
backgroundColor: theme.vars ? theme.vars.palette.FilledInput.hoverBg : hoverBackground,
// Reset on touch devices, it doesn't add specificity
"@media (hover: none)": {
backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor
}
},
[`&.${filledInputClasses_default.focused}`]: {
backgroundColor: theme.vars ? theme.vars.palette.FilledInput.bg : backgroundColor
},
[`&.${filledInputClasses_default.disabled}`]: {
backgroundColor: theme.vars ? theme.vars.palette.FilledInput.disabledBg : disabledBackground
}
}, !ownerState.disableUnderline && {
"&::after": {
borderBottom: `2px solid ${(_palette = (theme.vars || theme).palette[ownerState.color || "primary"]) == null ? void 0 : _palette.main}`,
left: 0,
bottom: 0,
// Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
content: '""',
position: "absolute",
right: 0,
transform: "scaleX(0)",
transition: theme.transitions.create("transform", {
duration: theme.transitions.duration.shorter,
easing: theme.transitions.easing.easeOut
}),
pointerEvents: "none"
// Transparent to the hover style.
},
[`&.${filledInputClasses_default.focused}:after`]: {
// translateX(0) is a workaround for Safari transform scale bug
// See https://github.com/mui/material-ui/issues/31766
transform: "scaleX(1) translateX(0)"
},
[`&.${filledInputClasses_default.error}`]: {
"&::before, &::after": {
borderBottomColor: (theme.vars || theme).palette.error.main
}
},
"&::before": {
borderBottom: `1px solid ${theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})` : bottomLineColor}`,
left: 0,
bottom: 0,
// Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
content: '"\\00a0"',
position: "absolute",
right: 0,
transition: theme.transitions.create("border-bottom-color", {
duration: theme.transitions.duration.shorter
}),
pointerEvents: "none"
// Transparent to the hover style.
},
[`&:hover:not(.${filledInputClasses_default.disabled}, .${filledInputClasses_default.error}):before`]: {
borderBottom: `1px solid ${(theme.vars || theme).palette.text.primary}`
},
[`&.${filledInputClasses_default.disabled}:before`]: {
borderBottomStyle: "dotted"
}
}, ownerState.startAdornment && {
paddingLeft: 12
}, ownerState.endAdornment && {
paddingRight: 12
}, ownerState.multiline && _extends({
padding: "25px 12px 8px"
}, ownerState.size === "small" && {
paddingTop: 21,
paddingBottom: 4
}, ownerState.hiddenLabel && {
paddingTop: 16,
paddingBottom: 17
}, ownerState.hiddenLabel && ownerState.size === "small" && {
paddingTop: 8,
paddingBottom: 9
}));
});
var FilledInputInput = styled_default(InputBaseComponent, {
name: "MuiFilledInput",
slot: "Input",
overridesResolver: inputOverridesResolver
})(({
theme,
ownerState
}) => _extends({
paddingTop: 25,
paddingRight: 12,
paddingBottom: 8,
paddingLeft: 12
}, !theme.vars && {
"&:-webkit-autofill": {
WebkitBoxShadow: theme.palette.mode === "light" ? null : "0 0 0 100px #266798 inset",
WebkitTextFillColor: theme.palette.mode === "light" ? null : "#fff",
caretColor: theme.palette.mode === "light" ? null : "#fff",
borderTopLeftRadius: "inherit",
borderTopRightRadius: "inherit"
}
}, theme.vars && {
"&:-webkit-autofill": {
borderTopLeftRadius: "inherit",
borderTopRightRadius: "inherit"
},
[theme.getColorSchemeSelector("dark")]: {
"&:-webkit-autofill": {
WebkitBoxShadow: "0 0 0 100px #266798 inset",
WebkitTextFillColor: "#fff",
caretColor: "#fff"
}
}
}, ownerState.size === "small" && {
paddingTop: 21,
paddingBottom: 4
}, ownerState.hiddenLabel && {
paddingTop: 16,
paddingBottom: 17
}, ownerState.startAdornment && {
paddingLeft: 0
}, ownerState.endAdornment && {
paddingRight: 0
}, ownerState.hiddenLabel && ownerState.size === "small" && {
paddingTop: 8,
paddingBottom: 9
}, ownerState.multiline && {
paddingTop: 0,
paddingBottom: 0,
paddingLeft: 0,
paddingRight: 0
}));
var FilledInput = React95.forwardRef(function FilledInput2(inProps, ref) {
var _ref, _slots$root, _ref2, _slots$input;
const props = useThemeProps({
props: inProps,
name: "MuiFilledInput"
});
const {
components = {},
componentsProps: componentsPropsProp,
fullWidth = false,
// declare here to prevent spreading to DOM
inputComponent = "input",
multiline = false,
slotProps,
slots = {},
type = "text"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded41);
const ownerState = _extends({}, props, {
fullWidth,
inputComponent,
multiline,
type
});
const classes = useUtilityClasses34(props);
const filledInputComponentsProps = {
root: {
ownerState
},
input: {
ownerState
}
};
const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(filledInputComponentsProps, slotProps != null ? slotProps : componentsPropsProp) : filledInputComponentsProps;
const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : FilledInputRoot;
const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : FilledInputInput;
return (0, import_jsx_runtime74.jsx)(InputBase_default, _extends({
slots: {
root: RootSlot,
input: InputSlot
},
componentsProps,
fullWidth,
inputComponent,
multiline,
ref,
type
}, other, {
classes
}));
});
true ? FilledInput.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* This prop helps users to fill forms faster, especially on mobile devices.
* The name can be confusing, as it's more like an autofill.
* You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).
*/
autoComplete: import_prop_types45.default.string,
/**
* If `true`, the `input` element is focused during the first mount.
*/
autoFocus: import_prop_types45.default.bool,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types45.default.object,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
* The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.
*/
color: import_prop_types45.default.oneOfType([import_prop_types45.default.oneOf(["primary", "secondary"]), import_prop_types45.default.string]),
/**
* The components used for each slot inside.
*
* This prop is an alias for the `slots` prop.
* It's recommended to use the `slots` prop instead.
*
* @default {}
*/
components: import_prop_types45.default.shape({
Input: import_prop_types45.default.elementType,
Root: import_prop_types45.default.elementType
}),
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* This prop is an alias for the `slotProps` prop.
* It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.
*
* @default {}
*/
componentsProps: import_prop_types45.default.shape({
input: import_prop_types45.default.object,
root: import_prop_types45.default.object
}),
/**
* The default value. Use when the component is not controlled.
*/
defaultValue: import_prop_types45.default.any,
/**
* If `true`, the component is disabled.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
disabled: import_prop_types45.default.bool,
/**
* If `true`, the input will not have an underline.
*/
disableUnderline: import_prop_types45.default.bool,
/**
* End `InputAdornment` for this component.
*/
endAdornment: import_prop_types45.default.node,
/**
* If `true`, the `input` will indicate an error.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
error: import_prop_types45.default.bool,
/**
* If `true`, the `input` will take up the full width of its container.
* @default false
*/
fullWidth: import_prop_types45.default.bool,
/**
* If `true`, the label is hidden.
* This is used to increase density for a `FilledInput`.
* Be sure to add `aria-label` to the `input` element.
* @default false
*/
hiddenLabel: import_prop_types45.default.bool,
/**
* The id of the `input` element.
*/
id: import_prop_types45.default.string,
/**
* The component used for the `input` element.
* Either a string to use a HTML element or a component.
* @default 'input'
*/
inputComponent: import_prop_types45.default.elementType,
/**
* [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.
* @default {}
*/
inputProps: import_prop_types45.default.object,
/**
* Pass a ref to the `input` element.
*/
inputRef: refType_default,
/**
* If `dense`, will adjust vertical spacing. This is normally obtained via context from
* FormControl.
* The prop defaults to the value (`'none'`) inherited from the parent FormControl component.
*/
margin: import_prop_types45.default.oneOf(["dense", "none"]),
/**
* Maximum number of rows to display when multiline option is set to true.
*/
maxRows: import_prop_types45.default.oneOfType([import_prop_types45.default.number, import_prop_types45.default.string]),
/**
* Minimum number of rows to display when multiline option is set to true.
*/
minRows: import_prop_types45.default.oneOfType([import_prop_types45.default.number, import_prop_types45.default.string]),
/**
* If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.
* @default false
*/
multiline: import_prop_types45.default.bool,
/**
* Name attribute of the `input` element.
*/
name: import_prop_types45.default.string,
/**
* Callback fired when the value is changed.
*
* @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.
* You can pull out the new value by accessing `event.target.value` (string).
*/
onChange: import_prop_types45.default.func,
/**
* The short hint displayed in the `input` before the user enters a value.
*/
placeholder: import_prop_types45.default.string,
/**
* It prevents the user from changing the value of the field
* (not from interacting with the field).
*/
readOnly: import_prop_types45.default.bool,
/**
* If `true`, the `input` element is required.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
required: import_prop_types45.default.bool,
/**
* Number of rows to display when multiline option is set to true.
*/
rows: import_prop_types45.default.oneOfType([import_prop_types45.default.number, import_prop_types45.default.string]),
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.
*
* @default {}
*/
slotProps: import_prop_types45.default.shape({
input: import_prop_types45.default.object,
root: import_prop_types45.default.object
}),
/**
* The components used for each slot inside.
*
* This prop is an alias for the `components` prop, which will be deprecated in the future.
*
* @default {}
*/
slots: import_prop_types45.default.shape({
input: import_prop_types45.default.elementType,
root: import_prop_types45.default.elementType
}),
/**
* Start `InputAdornment` for this component.
*/
startAdornment: import_prop_types45.default.node,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types45.default.oneOfType([import_prop_types45.default.arrayOf(import_prop_types45.default.oneOfType([import_prop_types45.default.func, import_prop_types45.default.object, import_prop_types45.default.bool])), import_prop_types45.default.func, import_prop_types45.default.object]),
/**
* Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).
* @default 'text'
*/
type: import_prop_types45.default.string,
/**
* The value of the `input` element, required for a controlled component.
*/
value: import_prop_types45.default.any
} : void 0;
FilledInput.muiName = "Input";
var FilledInput_default = FilledInput;
// node_modules/@mui/material/FormControl/formControlClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getFormControlUtilityClasses(slot) {
return generateUtilityClass("MuiFormControl", slot);
}
var formControlClasses2 = generateUtilityClasses("MuiFormControl", ["root", "marginNone", "marginNormal", "marginDense", "fullWidth", "disabled"]);
var formControlClasses_default = formControlClasses2;
// node_modules/@mui/material/FormControl/FormControl.js
init_objectWithoutPropertiesLoose();
init_extends();
var React96 = __toESM(require_react());
var import_prop_types46 = __toESM(require_prop_types());
init_clsx();
init_composeClasses();
init_useThemeProps();
init_styled();
init_capitalize();
init_isMuiElement();
var import_jsx_runtime75 = __toESM(require_jsx_runtime());
var _excluded42 = ["children", "className", "color", "component", "disabled", "error", "focused", "fullWidth", "hiddenLabel", "margin", "required", "size", "variant"];
var useUtilityClasses35 = (ownerState) => {
const {
classes,
margin,
fullWidth
} = ownerState;
const slots = {
root: ["root", margin !== "none" && `margin${capitalize_default(margin)}`, fullWidth && "fullWidth"]
};
return composeClasses(slots, getFormControlUtilityClasses, classes);
};
var FormControlRoot = styled_default("div", {
name: "MuiFormControl",
slot: "Root",
overridesResolver: ({
ownerState
}, styles4) => {
return _extends({}, styles4.root, styles4[`margin${capitalize_default(ownerState.margin)}`], ownerState.fullWidth && styles4.fullWidth);
}
})(({
ownerState
}) => _extends({
display: "inline-flex",
flexDirection: "column",
position: "relative",
// Reset fieldset default style.
minWidth: 0,
padding: 0,
margin: 0,
border: 0,
verticalAlign: "top"
}, ownerState.margin === "normal" && {
marginTop: 16,
marginBottom: 8
}, ownerState.margin === "dense" && {
marginTop: 8,
marginBottom: 4
}, ownerState.fullWidth && {
width: "100%"
}));
var FormControl3 = React96.forwardRef(function FormControl4(inProps, ref) {
const props = useThemeProps({
props: inProps,
name: "MuiFormControl"
});
const {
children,
className,
color = "primary",
component = "div",
disabled = false,
error = false,
focused: visuallyFocused,
fullWidth = false,
hiddenLabel = false,
margin = "none",
required = false,
size: size3 = "medium",
variant = "outlined"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded42);
const ownerState = _extends({}, props, {
color,
component,
disabled,
error,
fullWidth,
hiddenLabel,
margin,
required,
size: size3,
variant
});
const classes = useUtilityClasses35(ownerState);
const [adornedStart, setAdornedStart] = React96.useState(() => {
let initialAdornedStart = false;
if (children) {
React96.Children.forEach(children, (child) => {
if (!isMuiElement_default(child, ["Input", "Select"])) {
return;
}
const input = isMuiElement_default(child, ["Select"]) ? child.props.input : child;
if (input && isAdornedStart(input.props)) {
initialAdornedStart = true;
}
});
}
return initialAdornedStart;
});
const [filled, setFilled] = React96.useState(() => {
let initialFilled = false;
if (children) {
React96.Children.forEach(children, (child) => {
if (!isMuiElement_default(child, ["Input", "Select"])) {
return;
}
if (isFilled(child.props, true) || isFilled(child.props.inputProps, true)) {
initialFilled = true;
}
});
}
return initialFilled;
});
const [focusedState, setFocused] = React96.useState(false);
if (disabled && focusedState) {
setFocused(false);
}
const focused = visuallyFocused !== void 0 && !disabled ? visuallyFocused : focusedState;
let registerEffect;
if (true) {
const registeredInput = React96.useRef(false);
registerEffect = () => {
if (registeredInput.current) {
console.error(["MUI: There are multiple `InputBase` components inside a FormControl.", "This creates visual inconsistencies, only use one `InputBase`."].join("\n"));
}
registeredInput.current = true;
return () => {
registeredInput.current = false;
};
};
}
const childContext = React96.useMemo(() => {
return {
adornedStart,
setAdornedStart,
color,
disabled,
error,
filled,
focused,
fullWidth,
hiddenLabel,
size: size3,
onBlur: () => {
setFocused(false);
},
onEmpty: () => {
setFilled(false);
},
onFilled: () => {
setFilled(true);
},
onFocus: () => {
setFocused(true);
},
registerEffect,
required,
variant
};
}, [adornedStart, color, disabled, error, filled, focused, fullWidth, hiddenLabel, registerEffect, required, size3, variant]);
return (0, import_jsx_runtime75.jsx)(FormControlContext_default.Provider, {
value: childContext,
children: (0, import_jsx_runtime75.jsx)(FormControlRoot, _extends({
as: component,
ownerState,
className: clsx_default(classes.root, className),
ref
}, other, {
children
}))
});
});
true ? FormControl3.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component.
*/
children: import_prop_types46.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types46.default.object,
/**
* @ignore
*/
className: import_prop_types46.default.string,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
* @default 'primary'
*/
color: import_prop_types46.default.oneOfType([import_prop_types46.default.oneOf(["primary", "secondary", "error", "info", "success", "warning"]), import_prop_types46.default.string]),
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types46.default.elementType,
/**
* If `true`, the label, input and helper text should be displayed in a disabled state.
* @default false
*/
disabled: import_prop_types46.default.bool,
/**
* If `true`, the label is displayed in an error state.
* @default false
*/
error: import_prop_types46.default.bool,
/**
* If `true`, the component is displayed in focused state.
*/
focused: import_prop_types46.default.bool,
/**
* If `true`, the component will take up the full width of its container.
* @default false
*/
fullWidth: import_prop_types46.default.bool,
/**
* If `true`, the label is hidden.
* This is used to increase density for a `FilledInput`.
* Be sure to add `aria-label` to the `input` element.
* @default false
*/
hiddenLabel: import_prop_types46.default.bool,
/**
* If `dense` or `normal`, will adjust vertical spacing of this and contained components.
* @default 'none'
*/
margin: import_prop_types46.default.oneOf(["dense", "none", "normal"]),
/**
* If `true`, the label will indicate that the `input` is required.
* @default false
*/
required: import_prop_types46.default.bool,
/**
* The size of the component.
* @default 'medium'
*/
size: import_prop_types46.default.oneOfType([import_prop_types46.default.oneOf(["medium", "small"]), import_prop_types46.default.string]),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types46.default.oneOfType([import_prop_types46.default.arrayOf(import_prop_types46.default.oneOfType([import_prop_types46.default.func, import_prop_types46.default.object, import_prop_types46.default.bool])), import_prop_types46.default.func, import_prop_types46.default.object]),
/**
* The variant to use.
* @default 'outlined'
*/
variant: import_prop_types46.default.oneOf(["filled", "outlined", "standard"])
} : void 0;
var FormControl_default = FormControl3;
// node_modules/@mui/material/FormControlLabel/formControlLabelClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getFormControlLabelUtilityClasses(slot) {
return generateUtilityClass("MuiFormControlLabel", slot);
}
var formControlLabelClasses = generateUtilityClasses("MuiFormControlLabel", ["root", "labelPlacementStart", "labelPlacementTop", "labelPlacementBottom", "disabled", "label", "error", "required", "asterisk"]);
var formControlLabelClasses_default = formControlLabelClasses;
// node_modules/@mui/material/FormControlLabel/FormControlLabel.js
init_objectWithoutPropertiesLoose();
init_extends();
var React97 = __toESM(require_react());
var import_prop_types47 = __toESM(require_prop_types());
init_clsx();
init_refType();
init_composeClasses();
init_capitalize();
init_styled();
init_useThemeProps();
var import_jsx_runtime76 = __toESM(require_jsx_runtime());
var import_jsx_runtime77 = __toESM(require_jsx_runtime());
var _excluded43 = ["checked", "className", "componentsProps", "control", "disabled", "disableTypography", "inputRef", "label", "labelPlacement", "name", "onChange", "required", "slotProps", "value"];
var useUtilityClasses36 = (ownerState) => {
const {
classes,
disabled,
labelPlacement,
error,
required
} = ownerState;
const slots = {
root: ["root", disabled && "disabled", `labelPlacement${capitalize_default(labelPlacement)}`, error && "error", required && "required"],
label: ["label", disabled && "disabled"],
asterisk: ["asterisk", error && "error"]
};
return composeClasses(slots, getFormControlLabelUtilityClasses, classes);
};
var FormControlLabelRoot = styled_default("label", {
name: "MuiFormControlLabel",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [{
[`& .${formControlLabelClasses_default.label}`]: styles4.label
}, styles4.root, styles4[`labelPlacement${capitalize_default(ownerState.labelPlacement)}`]];
}
})(({
theme,
ownerState
}) => _extends({
display: "inline-flex",
alignItems: "center",
cursor: "pointer",
// For correct alignment with the text.
verticalAlign: "middle",
WebkitTapHighlightColor: "transparent",
marginLeft: -11,
marginRight: 16,
// used for row presentation of radio/checkbox
[`&.${formControlLabelClasses_default.disabled}`]: {
cursor: "default"
}
}, ownerState.labelPlacement === "start" && {
flexDirection: "row-reverse",
marginLeft: 16,
// used for row presentation of radio/checkbox
marginRight: -11
}, ownerState.labelPlacement === "top" && {
flexDirection: "column-reverse",
marginLeft: 16
}, ownerState.labelPlacement === "bottom" && {
flexDirection: "column",
marginLeft: 16
}, {
[`& .${formControlLabelClasses_default.label}`]: {
[`&.${formControlLabelClasses_default.disabled}`]: {
color: (theme.vars || theme).palette.text.disabled
}
}
}));
var AsteriskComponent = styled_default("span", {
name: "MuiFormControlLabel",
slot: "Asterisk",
overridesResolver: (props, styles4) => styles4.asterisk
})(({
theme
}) => ({
[`&.${formControlLabelClasses_default.error}`]: {
color: (theme.vars || theme).palette.error.main
}
}));
var FormControlLabel = React97.forwardRef(function FormControlLabel2(inProps, ref) {
var _ref, _slotProps$typography;
const props = useThemeProps({
props: inProps,
name: "MuiFormControlLabel"
});
const {
className,
componentsProps = {},
control,
disabled: disabledProp,
disableTypography,
label: labelProp,
labelPlacement = "end",
required: requiredProp,
slotProps = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded43);
const muiFormControl = useFormControl();
const disabled = (_ref = disabledProp != null ? disabledProp : control.props.disabled) != null ? _ref : muiFormControl == null ? void 0 : muiFormControl.disabled;
const required = requiredProp != null ? requiredProp : control.props.required;
const controlProps = {
disabled,
required
};
["checked", "name", "onChange", "value", "inputRef"].forEach((key) => {
if (typeof control.props[key] === "undefined" && typeof props[key] !== "undefined") {
controlProps[key] = props[key];
}
});
const fcs = formControlState({
props,
muiFormControl,
states: ["error"]
});
const ownerState = _extends({}, props, {
disabled,
labelPlacement,
required,
error: fcs.error
});
const classes = useUtilityClasses36(ownerState);
const typographySlotProps = (_slotProps$typography = slotProps.typography) != null ? _slotProps$typography : componentsProps.typography;
let label = labelProp;
if (label != null && label.type !== Typography_default && !disableTypography) {
label = (0, import_jsx_runtime76.jsx)(Typography_default, _extends({
component: "span"
}, typographySlotProps, {
className: clsx_default(classes.label, typographySlotProps == null ? void 0 : typographySlotProps.className),
children: label
}));
}
return (0, import_jsx_runtime77.jsxs)(FormControlLabelRoot, _extends({
className: clsx_default(classes.root, className),
ownerState,
ref
}, other, {
children: [React97.cloneElement(control, controlProps), required ? (0, import_jsx_runtime77.jsxs)(Stack_default, {
display: "block",
children: [label, (0, import_jsx_runtime77.jsxs)(AsteriskComponent, {
ownerState,
"aria-hidden": true,
className: classes.asterisk,
children: ["", "*"]
})]
}) : label]
}));
});
true ? FormControlLabel.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* If `true`, the component appears selected.
*/
checked: import_prop_types47.default.bool,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types47.default.object,
/**
* @ignore
*/
className: import_prop_types47.default.string,
/**
* The props used for each slot inside.
* @default {}
*/
componentsProps: import_prop_types47.default.shape({
typography: import_prop_types47.default.object
}),
/**
* A control element. For instance, it can be a `Radio`, a `Switch` or a `Checkbox`.
*/
control: import_prop_types47.default.element.isRequired,
/**
* If `true`, the control is disabled.
*/
disabled: import_prop_types47.default.bool,
/**
* If `true`, the label is rendered as it is passed without an additional typography node.
*/
disableTypography: import_prop_types47.default.bool,
/**
* Pass a ref to the `input` element.
*/
inputRef: refType_default,
/**
* A text or an element to be used in an enclosing label element.
*/
label: import_prop_types47.default.node,
/**
* The position of the label.
* @default 'end'
*/
labelPlacement: import_prop_types47.default.oneOf(["bottom", "end", "start", "top"]),
/**
* @ignore
*/
name: import_prop_types47.default.string,
/**
* Callback fired when the state is changed.
*
* @param {React.SyntheticEvent} event The event source of the callback.
* You can pull out the new checked state by accessing `event.target.checked` (boolean).
*/
onChange: import_prop_types47.default.func,
/**
* If `true`, the label will indicate that the `input` is required.
*/
required: import_prop_types47.default.bool,
/**
* The props used for each slot inside.
* @default {}
*/
slotProps: import_prop_types47.default.shape({
typography: import_prop_types47.default.object
}),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types47.default.oneOfType([import_prop_types47.default.arrayOf(import_prop_types47.default.oneOfType([import_prop_types47.default.func, import_prop_types47.default.object, import_prop_types47.default.bool])), import_prop_types47.default.func, import_prop_types47.default.object]),
/**
* The value of the component.
*/
value: import_prop_types47.default.any
} : void 0;
var FormControlLabel_default = FormControlLabel;
// node_modules/@mui/material/FormHelperText/formHelperTextClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getFormHelperTextUtilityClasses(slot) {
return generateUtilityClass("MuiFormHelperText", slot);
}
var formHelperTextClasses = generateUtilityClasses("MuiFormHelperText", ["root", "error", "disabled", "sizeSmall", "sizeMedium", "contained", "focused", "filled", "required"]);
var formHelperTextClasses_default = formHelperTextClasses;
// node_modules/@mui/material/FormHelperText/FormHelperText.js
init_objectWithoutPropertiesLoose();
init_extends();
var React98 = __toESM(require_react());
var import_prop_types48 = __toESM(require_prop_types());
init_clsx();
init_composeClasses();
init_styled();
init_capitalize();
init_useThemeProps();
var import_jsx_runtime78 = __toESM(require_jsx_runtime());
var _span5;
var _excluded44 = ["children", "className", "component", "disabled", "error", "filled", "focused", "margin", "required", "variant"];
var useUtilityClasses37 = (ownerState) => {
const {
classes,
contained,
size: size3,
disabled,
error,
filled,
focused,
required
} = ownerState;
const slots = {
root: ["root", disabled && "disabled", error && "error", size3 && `size${capitalize_default(size3)}`, contained && "contained", focused && "focused", filled && "filled", required && "required"]
};
return composeClasses(slots, getFormHelperTextUtilityClasses, classes);
};
var FormHelperTextRoot = styled_default("p", {
name: "MuiFormHelperText",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.root, ownerState.size && styles4[`size${capitalize_default(ownerState.size)}`], ownerState.contained && styles4.contained, ownerState.filled && styles4.filled];
}
})(({
theme,
ownerState
}) => _extends({
color: (theme.vars || theme).palette.text.secondary
}, theme.typography.caption, {
textAlign: "left",
marginTop: 3,
marginRight: 0,
marginBottom: 0,
marginLeft: 0,
[`&.${formHelperTextClasses_default.disabled}`]: {
color: (theme.vars || theme).palette.text.disabled
},
[`&.${formHelperTextClasses_default.error}`]: {
color: (theme.vars || theme).palette.error.main
}
}, ownerState.size === "small" && {
marginTop: 4
}, ownerState.contained && {
marginLeft: 14,
marginRight: 14
}));
var FormHelperText = React98.forwardRef(function FormHelperText2(inProps, ref) {
const props = useThemeProps({
props: inProps,
name: "MuiFormHelperText"
});
const {
children,
className,
component = "p"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded44);
const muiFormControl = useFormControl();
const fcs = formControlState({
props,
muiFormControl,
states: ["variant", "size", "disabled", "error", "filled", "focused", "required"]
});
const ownerState = _extends({}, props, {
component,
contained: fcs.variant === "filled" || fcs.variant === "outlined",
variant: fcs.variant,
size: fcs.size,
disabled: fcs.disabled,
error: fcs.error,
filled: fcs.filled,
focused: fcs.focused,
required: fcs.required
});
const classes = useUtilityClasses37(ownerState);
return (0, import_jsx_runtime78.jsx)(FormHelperTextRoot, _extends({
as: component,
ownerState,
className: clsx_default(classes.root, className),
ref
}, other, {
children: children === " " ? (
// notranslate needed while Google Translate will not fix zero-width space issue
_span5 || (_span5 = (0, import_jsx_runtime78.jsx)("span", {
className: "notranslate",
children: ""
}))
) : children
}));
});
true ? FormHelperText.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component.
*
* If `' '` is provided, the component reserves one line height for displaying a future message.
*/
children: import_prop_types48.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types48.default.object,
/**
* @ignore
*/
className: import_prop_types48.default.string,
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types48.default.elementType,
/**
* If `true`, the helper text should be displayed in a disabled state.
*/
disabled: import_prop_types48.default.bool,
/**
* If `true`, helper text should be displayed in an error state.
*/
error: import_prop_types48.default.bool,
/**
* If `true`, the helper text should use filled classes key.
*/
filled: import_prop_types48.default.bool,
/**
* If `true`, the helper text should use focused classes key.
*/
focused: import_prop_types48.default.bool,
/**
* If `dense`, will adjust vertical spacing. This is normally obtained via context from
* FormControl.
*/
margin: import_prop_types48.default.oneOf(["dense"]),
/**
* If `true`, the helper text should use required classes key.
*/
required: import_prop_types48.default.bool,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types48.default.oneOfType([import_prop_types48.default.arrayOf(import_prop_types48.default.oneOfType([import_prop_types48.default.func, import_prop_types48.default.object, import_prop_types48.default.bool])), import_prop_types48.default.func, import_prop_types48.default.object]),
/**
* The variant to use.
*/
variant: import_prop_types48.default.oneOfType([import_prop_types48.default.oneOf(["filled", "outlined", "standard"]), import_prop_types48.default.string])
} : void 0;
var FormHelperText_default = FormHelperText;
// node_modules/@mui/material/FormLabel/formLabelClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getFormLabelUtilityClasses(slot) {
return generateUtilityClass("MuiFormLabel", slot);
}
var formLabelClasses = generateUtilityClasses("MuiFormLabel", ["root", "colorSecondary", "focused", "disabled", "error", "filled", "required", "asterisk"]);
var formLabelClasses_default = formLabelClasses;
// node_modules/@mui/material/FormLabel/FormLabel.js
init_objectWithoutPropertiesLoose();
init_extends();
var React99 = __toESM(require_react());
var import_prop_types49 = __toESM(require_prop_types());
init_clsx();
init_composeClasses();
init_capitalize();
init_useThemeProps();
init_styled();
var import_jsx_runtime79 = __toESM(require_jsx_runtime());
var _excluded45 = ["children", "className", "color", "component", "disabled", "error", "filled", "focused", "required"];
var useUtilityClasses38 = (ownerState) => {
const {
classes,
color,
focused,
disabled,
error,
filled,
required
} = ownerState;
const slots = {
root: ["root", `color${capitalize_default(color)}`, disabled && "disabled", error && "error", filled && "filled", focused && "focused", required && "required"],
asterisk: ["asterisk", error && "error"]
};
return composeClasses(slots, getFormLabelUtilityClasses, classes);
};
var FormLabelRoot = styled_default("label", {
name: "MuiFormLabel",
slot: "Root",
overridesResolver: ({
ownerState
}, styles4) => {
return _extends({}, styles4.root, ownerState.color === "secondary" && styles4.colorSecondary, ownerState.filled && styles4.filled);
}
})(({
theme,
ownerState
}) => _extends({
color: (theme.vars || theme).palette.text.secondary
}, theme.typography.body1, {
lineHeight: "1.4375em",
padding: 0,
position: "relative",
[`&.${formLabelClasses_default.focused}`]: {
color: (theme.vars || theme).palette[ownerState.color].main
},
[`&.${formLabelClasses_default.disabled}`]: {
color: (theme.vars || theme).palette.text.disabled
},
[`&.${formLabelClasses_default.error}`]: {
color: (theme.vars || theme).palette.error.main
}
}));
var AsteriskComponent2 = styled_default("span", {
name: "MuiFormLabel",
slot: "Asterisk",
overridesResolver: (props, styles4) => styles4.asterisk
})(({
theme
}) => ({
[`&.${formLabelClasses_default.error}`]: {
color: (theme.vars || theme).palette.error.main
}
}));
var FormLabel = React99.forwardRef(function FormLabel2(inProps, ref) {
const props = useThemeProps({
props: inProps,
name: "MuiFormLabel"
});
const {
children,
className,
component = "label"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded45);
const muiFormControl = useFormControl();
const fcs = formControlState({
props,
muiFormControl,
states: ["color", "required", "focused", "disabled", "error", "filled"]
});
const ownerState = _extends({}, props, {
color: fcs.color || "primary",
component,
disabled: fcs.disabled,
error: fcs.error,
filled: fcs.filled,
focused: fcs.focused,
required: fcs.required
});
const classes = useUtilityClasses38(ownerState);
return (0, import_jsx_runtime79.jsxs)(FormLabelRoot, _extends({
as: component,
ownerState,
className: clsx_default(classes.root, className),
ref
}, other, {
children: [children, fcs.required && (0, import_jsx_runtime79.jsxs)(AsteriskComponent2, {
ownerState,
"aria-hidden": true,
className: classes.asterisk,
children: ["", "*"]
})]
}));
});
true ? FormLabel.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component.
*/
children: import_prop_types49.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types49.default.object,
/**
* @ignore
*/
className: import_prop_types49.default.string,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
*/
color: import_prop_types49.default.oneOfType([import_prop_types49.default.oneOf(["error", "info", "primary", "secondary", "success", "warning"]), import_prop_types49.default.string]),
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types49.default.elementType,
/**
* If `true`, the label should be displayed in a disabled state.
*/
disabled: import_prop_types49.default.bool,
/**
* If `true`, the label is displayed in an error state.
*/
error: import_prop_types49.default.bool,
/**
* If `true`, the label should use filled classes key.
*/
filled: import_prop_types49.default.bool,
/**
* If `true`, the input of this label is focused (used by `FormGroup` components).
*/
focused: import_prop_types49.default.bool,
/**
* If `true`, the label will indicate that the `input` is required.
*/
required: import_prop_types49.default.bool,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types49.default.oneOfType([import_prop_types49.default.arrayOf(import_prop_types49.default.oneOfType([import_prop_types49.default.func, import_prop_types49.default.object, import_prop_types49.default.bool])), import_prop_types49.default.func, import_prop_types49.default.object])
} : void 0;
var FormLabel_default = FormLabel;
// node_modules/@mui/material/Grow/Grow.js
init_extends();
init_objectWithoutPropertiesLoose();
var React100 = __toESM(require_react());
var import_prop_types50 = __toESM(require_prop_types());
init_useTimeout();
init_elementAcceptingRef();
init_useForkRef();
var import_jsx_runtime80 = __toESM(require_jsx_runtime());
var _excluded46 = ["addEndListener", "appear", "children", "easing", "in", "onEnter", "onEntered", "onEntering", "onExit", "onExited", "onExiting", "style", "timeout", "TransitionComponent"];
function getScale2(value) {
return `scale(${value}, ${value ** 2})`;
}
var styles3 = {
entering: {
opacity: 1,
transform: getScale2(1)
},
entered: {
opacity: 1,
transform: "none"
}
};
var isWebKit154 = typeof navigator !== "undefined" && /^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent) && /(os |version\/)15(.|_)4/i.test(navigator.userAgent);
var Grow = React100.forwardRef(function Grow2(props, ref) {
const {
addEndListener,
appear = true,
children,
easing,
in: inProp,
onEnter,
onEntered,
onEntering,
onExit,
onExited,
onExiting,
style,
timeout = "auto",
// eslint-disable-next-line react/prop-types
TransitionComponent = Transition_default
} = props, other = _objectWithoutPropertiesLoose(props, _excluded46);
const timer = useTimeout();
const autoTimeout = React100.useRef();
const theme = useTheme();
const nodeRef = React100.useRef(null);
const handleRef = useForkRef_default(nodeRef, children.ref, ref);
const normalizedTransitionCallback = (callback) => (maybeIsAppearing) => {
if (callback) {
const node = nodeRef.current;
if (maybeIsAppearing === void 0) {
callback(node);
} else {
callback(node, maybeIsAppearing);
}
}
};
const handleEntering = normalizedTransitionCallback(onEntering);
const handleEnter = normalizedTransitionCallback((node, isAppearing) => {
reflow(node);
const {
duration: transitionDuration,
delay,
easing: transitionTimingFunction
} = getTransitionProps({
style,
timeout,
easing
}, {
mode: "enter"
});
let duration;
if (timeout === "auto") {
duration = theme.transitions.getAutoHeightDuration(node.clientHeight);
autoTimeout.current = duration;
} else {
duration = transitionDuration;
}
node.style.transition = [theme.transitions.create("opacity", {
duration,
delay
}), theme.transitions.create("transform", {
duration: isWebKit154 ? duration : duration * 0.666,
delay,
easing: transitionTimingFunction
})].join(",");
if (onEnter) {
onEnter(node, isAppearing);
}
});
const handleEntered = normalizedTransitionCallback(onEntered);
const handleExiting = normalizedTransitionCallback(onExiting);
const handleExit = normalizedTransitionCallback((node) => {
const {
duration: transitionDuration,
delay,
easing: transitionTimingFunction
} = getTransitionProps({
style,
timeout,
easing
}, {
mode: "exit"
});
let duration;
if (timeout === "auto") {
duration = theme.transitions.getAutoHeightDuration(node.clientHeight);
autoTimeout.current = duration;
} else {
duration = transitionDuration;
}
node.style.transition = [theme.transitions.create("opacity", {
duration,
delay
}), theme.transitions.create("transform", {
duration: isWebKit154 ? duration : duration * 0.666,
delay: isWebKit154 ? delay : delay || duration * 0.333,
easing: transitionTimingFunction
})].join(",");
node.style.opacity = 0;
node.style.transform = getScale2(0.75);
if (onExit) {
onExit(node);
}
});
const handleExited = normalizedTransitionCallback(onExited);
const handleAddEndListener = (next) => {
if (timeout === "auto") {
timer.start(autoTimeout.current || 0, next);
}
if (addEndListener) {
addEndListener(nodeRef.current, next);
}
};
return (0, import_jsx_runtime80.jsx)(TransitionComponent, _extends({
appear,
in: inProp,
nodeRef,
onEnter: handleEnter,
onEntered: handleEntered,
onEntering: handleEntering,
onExit: handleExit,
onExited: handleExited,
onExiting: handleExiting,
addEndListener: handleAddEndListener,
timeout: timeout === "auto" ? null : timeout
}, other, {
children: (state, childProps) => {
return React100.cloneElement(children, _extends({
style: _extends({
opacity: 0,
transform: getScale2(0.75),
visibility: state === "exited" && !inProp ? "hidden" : void 0
}, styles3[state], style, children.props.style),
ref: handleRef
}, childProps));
}
}));
});
true ? Grow.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* Add a custom transition end trigger. Called with the transitioning DOM
* node and a done callback. Allows for more fine grained transition end
* logic. Note: Timeouts are still used as a fallback if provided.
*/
addEndListener: import_prop_types50.default.func,
/**
* Perform the enter transition when it first mounts if `in` is also `true`.
* Set this to `false` to disable this behavior.
* @default true
*/
appear: import_prop_types50.default.bool,
/**
* A single child content element.
*/
children: elementAcceptingRef_default.isRequired,
/**
* The transition timing function.
* You may specify a single easing or a object containing enter and exit values.
*/
easing: import_prop_types50.default.oneOfType([import_prop_types50.default.shape({
enter: import_prop_types50.default.string,
exit: import_prop_types50.default.string
}), import_prop_types50.default.string]),
/**
* If `true`, the component will transition in.
*/
in: import_prop_types50.default.bool,
/**
* @ignore
*/
onEnter: import_prop_types50.default.func,
/**
* @ignore
*/
onEntered: import_prop_types50.default.func,
/**
* @ignore
*/
onEntering: import_prop_types50.default.func,
/**
* @ignore
*/
onExit: import_prop_types50.default.func,
/**
* @ignore
*/
onExited: import_prop_types50.default.func,
/**
* @ignore
*/
onExiting: import_prop_types50.default.func,
/**
* @ignore
*/
style: import_prop_types50.default.object,
/**
* The duration for the transition, in milliseconds.
* You may specify a single timeout for all transitions, or individually with an object.
*
* Set to 'auto' to automatically calculate transition time based on height.
* @default 'auto'
*/
timeout: import_prop_types50.default.oneOfType([import_prop_types50.default.oneOf(["auto"]), import_prop_types50.default.number, import_prop_types50.default.shape({
appear: import_prop_types50.default.number,
enter: import_prop_types50.default.number,
exit: import_prop_types50.default.number
})])
} : void 0;
Grow.muiSupportAuto = true;
var Grow_default = Grow;
// node_modules/@mui/material/Input/Input.js
init_objectWithoutPropertiesLoose();
init_extends();
var React101 = __toESM(require_react());
var import_prop_types51 = __toESM(require_prop_types());
init_composeClasses();
init_deepmerge();
init_refType();
init_styled();
init_useThemeProps();
var import_jsx_runtime81 = __toESM(require_jsx_runtime());
var _excluded47 = ["disableUnderline", "components", "componentsProps", "fullWidth", "inputComponent", "multiline", "slotProps", "slots", "type"];
var useUtilityClasses39 = (ownerState) => {
const {
classes,
disableUnderline
} = ownerState;
const slots = {
root: ["root", !disableUnderline && "underline"],
input: ["input"]
};
const composedClasses = composeClasses(slots, getInputUtilityClass2, classes);
return _extends({}, classes, composedClasses);
};
var InputRoot = styled_default(InputBaseRoot, {
shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
name: "MuiInput",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [...rootOverridesResolver(props, styles4), !ownerState.disableUnderline && styles4.underline];
}
})(({
theme,
ownerState
}) => {
const light = theme.palette.mode === "light";
let bottomLineColor = light ? "rgba(0, 0, 0, 0.42)" : "rgba(255, 255, 255, 0.7)";
if (theme.vars) {
bottomLineColor = `rgba(${theme.vars.palette.common.onBackgroundChannel} / ${theme.vars.opacity.inputUnderline})`;
}
return _extends({
position: "relative"
}, ownerState.formControl && {
"label + &": {
marginTop: 16
}
}, !ownerState.disableUnderline && {
"&::after": {
borderBottom: `2px solid ${(theme.vars || theme).palette[ownerState.color].main}`,
left: 0,
bottom: 0,
// Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
content: '""',
position: "absolute",
right: 0,
transform: "scaleX(0)",
transition: theme.transitions.create("transform", {
duration: theme.transitions.duration.shorter,
easing: theme.transitions.easing.easeOut
}),
pointerEvents: "none"
// Transparent to the hover style.
},
[`&.${inputClasses_default.focused}:after`]: {
// translateX(0) is a workaround for Safari transform scale bug
// See https://github.com/mui/material-ui/issues/31766
transform: "scaleX(1) translateX(0)"
},
[`&.${inputClasses_default.error}`]: {
"&::before, &::after": {
borderBottomColor: (theme.vars || theme).palette.error.main
}
},
"&::before": {
borderBottom: `1px solid ${bottomLineColor}`,
left: 0,
bottom: 0,
// Doing the other way around crash on IE11 "''" https://github.com/cssinjs/jss/issues/242
content: '"\\00a0"',
position: "absolute",
right: 0,
transition: theme.transitions.create("border-bottom-color", {
duration: theme.transitions.duration.shorter
}),
pointerEvents: "none"
// Transparent to the hover style.
},
[`&:hover:not(.${inputClasses_default.disabled}, .${inputClasses_default.error}):before`]: {
borderBottom: `2px solid ${(theme.vars || theme).palette.text.primary}`,
// Reset on touch devices, it doesn't add specificity
"@media (hover: none)": {
borderBottom: `1px solid ${bottomLineColor}`
}
},
[`&.${inputClasses_default.disabled}:before`]: {
borderBottomStyle: "dotted"
}
});
});
var InputInput = styled_default(InputBaseComponent, {
name: "MuiInput",
slot: "Input",
overridesResolver: inputOverridesResolver
})({});
var Input3 = React101.forwardRef(function Input4(inProps, ref) {
var _ref, _slots$root, _ref2, _slots$input;
const props = useThemeProps({
props: inProps,
name: "MuiInput"
});
const {
disableUnderline,
components = {},
componentsProps: componentsPropsProp,
fullWidth = false,
inputComponent = "input",
multiline = false,
slotProps,
slots = {},
type = "text"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded47);
const classes = useUtilityClasses39(props);
const ownerState = {
disableUnderline
};
const inputComponentsProps = {
root: {
ownerState
}
};
const componentsProps = (slotProps != null ? slotProps : componentsPropsProp) ? deepmerge(slotProps != null ? slotProps : componentsPropsProp, inputComponentsProps) : inputComponentsProps;
const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : InputRoot;
const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : InputInput;
return (0, import_jsx_runtime81.jsx)(InputBase_default, _extends({
slots: {
root: RootSlot,
input: InputSlot
},
slotProps: componentsProps,
fullWidth,
inputComponent,
multiline,
ref,
type
}, other, {
classes
}));
});
true ? Input3.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* This prop helps users to fill forms faster, especially on mobile devices.
* The name can be confusing, as it's more like an autofill.
* You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).
*/
autoComplete: import_prop_types51.default.string,
/**
* If `true`, the `input` element is focused during the first mount.
*/
autoFocus: import_prop_types51.default.bool,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types51.default.object,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
* The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.
*/
color: import_prop_types51.default.oneOfType([import_prop_types51.default.oneOf(["primary", "secondary"]), import_prop_types51.default.string]),
/**
* The components used for each slot inside.
*
* This prop is an alias for the `slots` prop.
* It's recommended to use the `slots` prop instead.
*
* @default {}
*/
components: import_prop_types51.default.shape({
Input: import_prop_types51.default.elementType,
Root: import_prop_types51.default.elementType
}),
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* This prop is an alias for the `slotProps` prop.
* It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.
*
* @default {}
*/
componentsProps: import_prop_types51.default.shape({
input: import_prop_types51.default.object,
root: import_prop_types51.default.object
}),
/**
* The default value. Use when the component is not controlled.
*/
defaultValue: import_prop_types51.default.any,
/**
* If `true`, the component is disabled.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
disabled: import_prop_types51.default.bool,
/**
* If `true`, the `input` will not have an underline.
*/
disableUnderline: import_prop_types51.default.bool,
/**
* End `InputAdornment` for this component.
*/
endAdornment: import_prop_types51.default.node,
/**
* If `true`, the `input` will indicate an error.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
error: import_prop_types51.default.bool,
/**
* If `true`, the `input` will take up the full width of its container.
* @default false
*/
fullWidth: import_prop_types51.default.bool,
/**
* The id of the `input` element.
*/
id: import_prop_types51.default.string,
/**
* The component used for the `input` element.
* Either a string to use a HTML element or a component.
* @default 'input'
*/
inputComponent: import_prop_types51.default.elementType,
/**
* [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.
* @default {}
*/
inputProps: import_prop_types51.default.object,
/**
* Pass a ref to the `input` element.
*/
inputRef: refType_default,
/**
* If `dense`, will adjust vertical spacing. This is normally obtained via context from
* FormControl.
* The prop defaults to the value (`'none'`) inherited from the parent FormControl component.
*/
margin: import_prop_types51.default.oneOf(["dense", "none"]),
/**
* Maximum number of rows to display when multiline option is set to true.
*/
maxRows: import_prop_types51.default.oneOfType([import_prop_types51.default.number, import_prop_types51.default.string]),
/**
* Minimum number of rows to display when multiline option is set to true.
*/
minRows: import_prop_types51.default.oneOfType([import_prop_types51.default.number, import_prop_types51.default.string]),
/**
* If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.
* @default false
*/
multiline: import_prop_types51.default.bool,
/**
* Name attribute of the `input` element.
*/
name: import_prop_types51.default.string,
/**
* Callback fired when the value is changed.
*
* @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.
* You can pull out the new value by accessing `event.target.value` (string).
*/
onChange: import_prop_types51.default.func,
/**
* The short hint displayed in the `input` before the user enters a value.
*/
placeholder: import_prop_types51.default.string,
/**
* It prevents the user from changing the value of the field
* (not from interacting with the field).
*/
readOnly: import_prop_types51.default.bool,
/**
* If `true`, the `input` element is required.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
required: import_prop_types51.default.bool,
/**
* Number of rows to display when multiline option is set to true.
*/
rows: import_prop_types51.default.oneOfType([import_prop_types51.default.number, import_prop_types51.default.string]),
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.
*
* @default {}
*/
slotProps: import_prop_types51.default.shape({
input: import_prop_types51.default.object,
root: import_prop_types51.default.object
}),
/**
* The components used for each slot inside.
*
* This prop is an alias for the `components` prop, which will be deprecated in the future.
*
* @default {}
*/
slots: import_prop_types51.default.shape({
input: import_prop_types51.default.elementType,
root: import_prop_types51.default.elementType
}),
/**
* Start `InputAdornment` for this component.
*/
startAdornment: import_prop_types51.default.node,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types51.default.oneOfType([import_prop_types51.default.arrayOf(import_prop_types51.default.oneOfType([import_prop_types51.default.func, import_prop_types51.default.object, import_prop_types51.default.bool])), import_prop_types51.default.func, import_prop_types51.default.object]),
/**
* Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).
* @default 'text'
*/
type: import_prop_types51.default.string,
/**
* The value of the `input` element, required for a controlled component.
*/
value: import_prop_types51.default.any
} : void 0;
Input3.muiName = "Input";
var Input_default = Input3;
// node_modules/@mui/material/InputAdornment/inputAdornmentClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getInputAdornmentUtilityClass(slot) {
return generateUtilityClass("MuiInputAdornment", slot);
}
var inputAdornmentClasses = generateUtilityClasses("MuiInputAdornment", ["root", "filled", "standard", "outlined", "positionStart", "positionEnd", "disablePointerEvents", "hiddenLabel", "sizeSmall"]);
var inputAdornmentClasses_default = inputAdornmentClasses;
// node_modules/@mui/material/InputAdornment/InputAdornment.js
init_objectWithoutPropertiesLoose();
init_extends();
var React102 = __toESM(require_react());
var import_prop_types52 = __toESM(require_prop_types());
init_clsx();
init_composeClasses();
init_capitalize();
init_styled();
init_useThemeProps();
var import_jsx_runtime82 = __toESM(require_jsx_runtime());
var import_jsx_runtime83 = __toESM(require_jsx_runtime());
var _span6;
var _excluded48 = ["children", "className", "component", "disablePointerEvents", "disableTypography", "position", "variant"];
var overridesResolver = (props, styles4) => {
const {
ownerState
} = props;
return [styles4.root, styles4[`position${capitalize_default(ownerState.position)}`], ownerState.disablePointerEvents === true && styles4.disablePointerEvents, styles4[ownerState.variant]];
};
var useUtilityClasses40 = (ownerState) => {
const {
classes,
disablePointerEvents,
hiddenLabel,
position,
size: size3,
variant
} = ownerState;
const slots = {
root: ["root", disablePointerEvents && "disablePointerEvents", position && `position${capitalize_default(position)}`, variant, hiddenLabel && "hiddenLabel", size3 && `size${capitalize_default(size3)}`]
};
return composeClasses(slots, getInputAdornmentUtilityClass, classes);
};
var InputAdornmentRoot = styled_default("div", {
name: "MuiInputAdornment",
slot: "Root",
overridesResolver
})(({
theme,
ownerState
}) => _extends({
display: "flex",
height: "0.01em",
// Fix IE11 flexbox alignment. To remove at some point.
maxHeight: "2em",
alignItems: "center",
whiteSpace: "nowrap",
color: (theme.vars || theme).palette.action.active
}, ownerState.variant === "filled" && {
// Styles applied to the root element if `variant="filled"`.
[`&.${inputAdornmentClasses_default.positionStart}&:not(.${inputAdornmentClasses_default.hiddenLabel})`]: {
marginTop: 16
}
}, ownerState.position === "start" && {
// Styles applied to the root element if `position="start"`.
marginRight: 8
}, ownerState.position === "end" && {
// Styles applied to the root element if `position="end"`.
marginLeft: 8
}, ownerState.disablePointerEvents === true && {
// Styles applied to the root element if `disablePointerEvents={true}`.
pointerEvents: "none"
}));
var InputAdornment = React102.forwardRef(function InputAdornment2(inProps, ref) {
const props = useThemeProps({
props: inProps,
name: "MuiInputAdornment"
});
const {
children,
className,
component = "div",
disablePointerEvents = false,
disableTypography = false,
position,
variant: variantProp
} = props, other = _objectWithoutPropertiesLoose(props, _excluded48);
const muiFormControl = useFormControl() || {};
let variant = variantProp;
if (variantProp && muiFormControl.variant) {
if (true) {
if (variantProp === muiFormControl.variant) {
console.error("MUI: The `InputAdornment` variant infers the variant prop you do not have to provide one.");
}
}
}
if (muiFormControl && !variant) {
variant = muiFormControl.variant;
}
const ownerState = _extends({}, props, {
hiddenLabel: muiFormControl.hiddenLabel,
size: muiFormControl.size,
disablePointerEvents,
position,
variant
});
const classes = useUtilityClasses40(ownerState);
return (0, import_jsx_runtime82.jsx)(FormControlContext_default.Provider, {
value: null,
children: (0, import_jsx_runtime82.jsx)(InputAdornmentRoot, _extends({
as: component,
ownerState,
className: clsx_default(classes.root, className),
ref
}, other, {
children: typeof children === "string" && !disableTypography ? (0, import_jsx_runtime82.jsx)(Typography_default, {
color: "text.secondary",
children
}) : (0, import_jsx_runtime83.jsxs)(React102.Fragment, {
children: [position === "start" ? (
/* notranslate needed while Google Translate will not fix zero-width space issue */
_span6 || (_span6 = (0, import_jsx_runtime82.jsx)("span", {
className: "notranslate",
children: ""
}))
) : null, children]
})
}))
});
});
true ? InputAdornment.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component, normally an `IconButton` or string.
*/
children: import_prop_types52.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types52.default.object,
/**
* @ignore
*/
className: import_prop_types52.default.string,
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types52.default.elementType,
/**
* Disable pointer events on the root.
* This allows for the content of the adornment to focus the `input` on click.
* @default false
*/
disablePointerEvents: import_prop_types52.default.bool,
/**
* If children is a string then disable wrapping in a Typography component.
* @default false
*/
disableTypography: import_prop_types52.default.bool,
/**
* The position this adornment should appear relative to the `Input`.
*/
position: import_prop_types52.default.oneOf(["end", "start"]).isRequired,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types52.default.oneOfType([import_prop_types52.default.arrayOf(import_prop_types52.default.oneOfType([import_prop_types52.default.func, import_prop_types52.default.object, import_prop_types52.default.bool])), import_prop_types52.default.func, import_prop_types52.default.object]),
/**
* The variant to use.
* Note: If you are using the `TextField` component or the `FormControl` component
* you do not have to set this manually.
*/
variant: import_prop_types52.default.oneOf(["filled", "outlined", "standard"])
} : void 0;
var InputAdornment_default = InputAdornment;
// node_modules/@mui/material/InputLabel/inputLabelClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getInputLabelUtilityClasses(slot) {
return generateUtilityClass("MuiInputLabel", slot);
}
var inputLabelClasses = generateUtilityClasses("MuiInputLabel", ["root", "focused", "disabled", "error", "required", "asterisk", "formControl", "sizeSmall", "shrink", "animated", "standard", "filled", "outlined"]);
var inputLabelClasses_default = inputLabelClasses;
// node_modules/@mui/material/InputLabel/InputLabel.js
init_objectWithoutPropertiesLoose();
init_extends();
var React103 = __toESM(require_react());
var import_prop_types53 = __toESM(require_prop_types());
init_composeClasses();
init_clsx();
init_useThemeProps();
init_capitalize();
init_styled();
var import_jsx_runtime84 = __toESM(require_jsx_runtime());
var _excluded49 = ["disableAnimation", "margin", "shrink", "variant", "className"];
var useUtilityClasses41 = (ownerState) => {
const {
classes,
formControl,
size: size3,
shrink,
disableAnimation,
variant,
required
} = ownerState;
const slots = {
root: ["root", formControl && "formControl", !disableAnimation && "animated", shrink && "shrink", size3 && size3 !== "normal" && `size${capitalize_default(size3)}`, variant],
asterisk: [required && "asterisk"]
};
const composedClasses = composeClasses(slots, getInputLabelUtilityClasses, classes);
return _extends({}, classes, composedClasses);
};
var InputLabelRoot = styled_default(FormLabel_default, {
shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
name: "MuiInputLabel",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [{
[`& .${formLabelClasses_default.asterisk}`]: styles4.asterisk
}, styles4.root, ownerState.formControl && styles4.formControl, ownerState.size === "small" && styles4.sizeSmall, ownerState.shrink && styles4.shrink, !ownerState.disableAnimation && styles4.animated, ownerState.focused && styles4.focused, styles4[ownerState.variant]];
}
})(({
theme,
ownerState
}) => _extends({
display: "block",
transformOrigin: "top left",
whiteSpace: "nowrap",
overflow: "hidden",
textOverflow: "ellipsis",
maxWidth: "100%"
}, ownerState.formControl && {
position: "absolute",
left: 0,
top: 0,
// slight alteration to spec spacing to match visual spec result
transform: "translate(0, 20px) scale(1)"
}, ownerState.size === "small" && {
// Compensation for the `Input.inputSizeSmall` style.
transform: "translate(0, 17px) scale(1)"
}, ownerState.shrink && {
transform: "translate(0, -1.5px) scale(0.75)",
transformOrigin: "top left",
maxWidth: "133%"
}, !ownerState.disableAnimation && {
transition: theme.transitions.create(["color", "transform", "max-width"], {
duration: theme.transitions.duration.shorter,
easing: theme.transitions.easing.easeOut
})
}, ownerState.variant === "filled" && _extends({
// Chrome's autofill feature gives the input field a yellow background.
// Since the input field is behind the label in the HTML tree,
// the input field is drawn last and hides the label with an opaque background color.
// zIndex: 1 will raise the label above opaque background-colors of input.
zIndex: 1,
pointerEvents: "none",
transform: "translate(12px, 16px) scale(1)",
maxWidth: "calc(100% - 24px)"
}, ownerState.size === "small" && {
transform: "translate(12px, 13px) scale(1)"
}, ownerState.shrink && _extends({
userSelect: "none",
pointerEvents: "auto",
transform: "translate(12px, 7px) scale(0.75)",
maxWidth: "calc(133% - 24px)"
}, ownerState.size === "small" && {
transform: "translate(12px, 4px) scale(0.75)"
})), ownerState.variant === "outlined" && _extends({
// see comment above on filled.zIndex
zIndex: 1,
pointerEvents: "none",
transform: "translate(14px, 16px) scale(1)",
maxWidth: "calc(100% - 24px)"
}, ownerState.size === "small" && {
transform: "translate(14px, 9px) scale(1)"
}, ownerState.shrink && {
userSelect: "none",
pointerEvents: "auto",
// Theoretically, we should have (8+5)*2/0.75 = 34px
// but it feels a better when it bleeds a bit on the left, so 32px.
maxWidth: "calc(133% - 32px)",
transform: "translate(14px, -9px) scale(0.75)"
})));
var InputLabel = React103.forwardRef(function InputLabel2(inProps, ref) {
const props = useThemeProps({
name: "MuiInputLabel",
props: inProps
});
const {
disableAnimation = false,
shrink: shrinkProp,
className
} = props, other = _objectWithoutPropertiesLoose(props, _excluded49);
const muiFormControl = useFormControl();
let shrink = shrinkProp;
if (typeof shrink === "undefined" && muiFormControl) {
shrink = muiFormControl.filled || muiFormControl.focused || muiFormControl.adornedStart;
}
const fcs = formControlState({
props,
muiFormControl,
states: ["size", "variant", "required", "focused"]
});
const ownerState = _extends({}, props, {
disableAnimation,
formControl: muiFormControl,
shrink,
size: fcs.size,
variant: fcs.variant,
required: fcs.required,
focused: fcs.focused
});
const classes = useUtilityClasses41(ownerState);
return (0, import_jsx_runtime84.jsx)(InputLabelRoot, _extends({
"data-shrink": shrink,
ownerState,
ref,
className: clsx_default(classes.root, className)
}, other, {
classes
}));
});
true ? InputLabel.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component.
*/
children: import_prop_types53.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types53.default.object,
/**
* @ignore
*/
className: import_prop_types53.default.string,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
*/
color: import_prop_types53.default.oneOfType([import_prop_types53.default.oneOf(["error", "info", "primary", "secondary", "success", "warning"]), import_prop_types53.default.string]),
/**
* If `true`, the transition animation is disabled.
* @default false
*/
disableAnimation: import_prop_types53.default.bool,
/**
* If `true`, the component is disabled.
*/
disabled: import_prop_types53.default.bool,
/**
* If `true`, the label is displayed in an error state.
*/
error: import_prop_types53.default.bool,
/**
* If `true`, the `input` of this label is focused.
*/
focused: import_prop_types53.default.bool,
/**
* If `dense`, will adjust vertical spacing. This is normally obtained via context from
* FormControl.
*/
margin: import_prop_types53.default.oneOf(["dense"]),
/**
* if `true`, the label will indicate that the `input` is required.
*/
required: import_prop_types53.default.bool,
/**
* If `true`, the label is shrunk.
*/
shrink: import_prop_types53.default.bool,
/**
* The size of the component.
* @default 'normal'
*/
size: import_prop_types53.default.oneOfType([import_prop_types53.default.oneOf(["normal", "small"]), import_prop_types53.default.string]),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types53.default.oneOfType([import_prop_types53.default.arrayOf(import_prop_types53.default.oneOfType([import_prop_types53.default.func, import_prop_types53.default.object, import_prop_types53.default.bool])), import_prop_types53.default.func, import_prop_types53.default.object]),
/**
* The variant to use.
*/
variant: import_prop_types53.default.oneOf(["filled", "outlined", "standard"])
} : void 0;
var InputLabel_default = InputLabel;
// node_modules/@mui/material/List/listClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getListUtilityClass(slot) {
return generateUtilityClass("MuiList", slot);
}
var listClasses = generateUtilityClasses("MuiList", ["root", "padding", "dense", "subheader"]);
var listClasses_default = listClasses;
// node_modules/@mui/material/List/List.js
init_objectWithoutPropertiesLoose();
init_extends();
var React104 = __toESM(require_react());
var import_prop_types54 = __toESM(require_prop_types());
init_clsx();
init_composeClasses();
init_styled();
init_useThemeProps();
var import_jsx_runtime85 = __toESM(require_jsx_runtime());
var import_jsx_runtime86 = __toESM(require_jsx_runtime());
var _excluded50 = ["children", "className", "component", "dense", "disablePadding", "subheader"];
var useUtilityClasses42 = (ownerState) => {
const {
classes,
disablePadding,
dense,
subheader
} = ownerState;
const slots = {
root: ["root", !disablePadding && "padding", dense && "dense", subheader && "subheader"]
};
return composeClasses(slots, getListUtilityClass, classes);
};
var ListRoot = styled_default("ul", {
name: "MuiList",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.root, !ownerState.disablePadding && styles4.padding, ownerState.dense && styles4.dense, ownerState.subheader && styles4.subheader];
}
})(({
ownerState
}) => _extends({
listStyle: "none",
margin: 0,
padding: 0,
position: "relative"
}, !ownerState.disablePadding && {
paddingTop: 8,
paddingBottom: 8
}, ownerState.subheader && {
paddingTop: 0
}));
var List = React104.forwardRef(function List2(inProps, ref) {
const props = useThemeProps({
props: inProps,
name: "MuiList"
});
const {
children,
className,
component = "ul",
dense = false,
disablePadding = false,
subheader
} = props, other = _objectWithoutPropertiesLoose(props, _excluded50);
const context = React104.useMemo(() => ({
dense
}), [dense]);
const ownerState = _extends({}, props, {
component,
dense,
disablePadding
});
const classes = useUtilityClasses42(ownerState);
return (0, import_jsx_runtime86.jsx)(ListContext_default.Provider, {
value: context,
children: (0, import_jsx_runtime85.jsxs)(ListRoot, _extends({
as: component,
className: clsx_default(classes.root, className),
ref,
ownerState
}, other, {
children: [subheader, children]
}))
});
});
true ? List.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The content of the component.
*/
children: import_prop_types54.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types54.default.object,
/**
* @ignore
*/
className: import_prop_types54.default.string,
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types54.default.elementType,
/**
* If `true`, compact vertical padding designed for keyboard and mouse input is used for
* the list and list items.
* The prop is available to descendant components as the `dense` context.
* @default false
*/
dense: import_prop_types54.default.bool,
/**
* If `true`, vertical padding is removed from the list.
* @default false
*/
disablePadding: import_prop_types54.default.bool,
/**
* The content of the subheader, normally `ListSubheader`.
*/
subheader: import_prop_types54.default.node,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types54.default.oneOfType([import_prop_types54.default.arrayOf(import_prop_types54.default.oneOfType([import_prop_types54.default.func, import_prop_types54.default.object, import_prop_types54.default.bool])), import_prop_types54.default.func, import_prop_types54.default.object])
} : void 0;
var List_default = List;
// node_modules/@mui/material/MenuList/MenuList.js
init_extends();
init_objectWithoutPropertiesLoose();
var React105 = __toESM(require_react());
var import_react_is = __toESM(require_react_is());
var import_prop_types55 = __toESM(require_prop_types());
init_ownerDocument();
// node_modules/@mui/material/utils/getScrollbarSize.js
init_getScrollbarSize();
var getScrollbarSize_default = getScrollbarSize;
// node_modules/@mui/material/MenuList/MenuList.js
init_useForkRef();
init_useEnhancedEffect();
var import_jsx_runtime87 = __toESM(require_jsx_runtime());
var _excluded51 = ["actions", "autoFocus", "autoFocusItem", "children", "className", "disabledItemsFocusable", "disableListWrap", "onKeyDown", "variant"];
function nextItem(list, item, disableListWrap) {
if (list === item) {
return list.firstChild;
}
if (item && item.nextElementSibling) {
return item.nextElementSibling;
}
return disableListWrap ? null : list.firstChild;
}
function previousItem(list, item, disableListWrap) {
if (list === item) {
return disableListWrap ? list.firstChild : list.lastChild;
}
if (item && item.previousElementSibling) {
return item.previousElementSibling;
}
return disableListWrap ? null : list.lastChild;
}
function textCriteriaMatches2(nextFocus, textCriteria) {
if (textCriteria === void 0) {
return true;
}
let text = nextFocus.innerText;
if (text === void 0) {
text = nextFocus.textContent;
}
text = text.trim().toLowerCase();
if (text.length === 0) {
return false;
}
if (textCriteria.repeating) {
return text[0] === textCriteria.keys[0];
}
return text.indexOf(textCriteria.keys.join("")) === 0;
}
function moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, traversalFunction, textCriteria) {
let wrappedOnce = false;
let nextFocus = traversalFunction(list, currentFocus, currentFocus ? disableListWrap : false);
while (nextFocus) {
if (nextFocus === list.firstChild) {
if (wrappedOnce) {
return false;
}
wrappedOnce = true;
}
const nextFocusDisabled = disabledItemsFocusable ? false : nextFocus.disabled || nextFocus.getAttribute("aria-disabled") === "true";
if (!nextFocus.hasAttribute("tabindex") || !textCriteriaMatches2(nextFocus, textCriteria) || nextFocusDisabled) {
nextFocus = traversalFunction(list, nextFocus, disableListWrap);
} else {
nextFocus.focus();
return true;
}
}
return false;
}
var MenuList = React105.forwardRef(function MenuList2(props, ref) {
const {
// private
// eslint-disable-next-line react/prop-types
actions,
autoFocus = false,
autoFocusItem = false,
children,
className,
disabledItemsFocusable = false,
disableListWrap = false,
onKeyDown,
variant = "selectedMenu"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded51);
const listRef = React105.useRef(null);
const textCriteriaRef = React105.useRef({
keys: [],
repeating: true,
previousKeyMatched: true,
lastTime: null
});
useEnhancedEffect_default2(() => {
if (autoFocus) {
listRef.current.focus();
}
}, [autoFocus]);
React105.useImperativeHandle(actions, () => ({
adjustStyleForScrollbar: (containerElement, {
direction
}) => {
const noExplicitWidth = !listRef.current.style.width;
if (containerElement.clientHeight < listRef.current.clientHeight && noExplicitWidth) {
const scrollbarSize = `${getScrollbarSize_default(ownerDocument_default(containerElement))}px`;
listRef.current.style[direction === "rtl" ? "paddingLeft" : "paddingRight"] = scrollbarSize;
listRef.current.style.width = `calc(100% + ${scrollbarSize})`;
}
return listRef.current;
}
}), []);
const handleKeyDown2 = (event) => {
const list = listRef.current;
const key = event.key;
const currentFocus = ownerDocument_default(list).activeElement;
if (key === "ArrowDown") {
event.preventDefault();
moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, nextItem);
} else if (key === "ArrowUp") {
event.preventDefault();
moveFocus(list, currentFocus, disableListWrap, disabledItemsFocusable, previousItem);
} else if (key === "Home") {
event.preventDefault();
moveFocus(list, null, disableListWrap, disabledItemsFocusable, nextItem);
} else if (key === "End") {
event.preventDefault();
moveFocus(list, null, disableListWrap, disabledItemsFocusable, previousItem);
} else if (key.length === 1) {
const criteria = textCriteriaRef.current;
const lowerKey = key.toLowerCase();
const currTime = performance.now();
if (criteria.keys.length > 0) {
if (currTime - criteria.lastTime > 500) {
criteria.keys = [];
criteria.repeating = true;
criteria.previousKeyMatched = true;
} else if (criteria.repeating && lowerKey !== criteria.keys[0]) {
criteria.repeating = false;
}
}
criteria.lastTime = currTime;
criteria.keys.push(lowerKey);
const keepFocusOnCurrent = currentFocus && !criteria.repeating && textCriteriaMatches2(currentFocus, criteria);
if (criteria.previousKeyMatched && (keepFocusOnCurrent || moveFocus(list, currentFocus, false, disabledItemsFocusable, nextItem, criteria))) {
event.preventDefault();
} else {
criteria.previousKeyMatched = false;
}
}
if (onKeyDown) {
onKeyDown(event);
}
};
const handleRef = useForkRef_default(listRef, ref);
let activeItemIndex = -1;
React105.Children.forEach(children, (child, index2) => {
if (!React105.isValidElement(child)) {
if (activeItemIndex === index2) {
activeItemIndex += 1;
if (activeItemIndex >= children.length) {
activeItemIndex = -1;
}
}
return;
}
if (true) {
if ((0, import_react_is.isFragment)(child)) {
console.error(["MUI: The Menu component doesn't accept a Fragment as a child.", "Consider providing an array instead."].join("\n"));
}
}
if (!child.props.disabled) {
if (variant === "selectedMenu" && child.props.selected) {
activeItemIndex = index2;
} else if (activeItemIndex === -1) {
activeItemIndex = index2;
}
}
if (activeItemIndex === index2 && (child.props.disabled || child.props.muiSkipListHighlight || child.type.muiSkipListHighlight)) {
activeItemIndex += 1;
if (activeItemIndex >= children.length) {
activeItemIndex = -1;
}
}
});
const items = React105.Children.map(children, (child, index2) => {
if (index2 === activeItemIndex) {
const newChildProps = {};
if (autoFocusItem) {
newChildProps.autoFocus = true;
}
if (child.props.tabIndex === void 0 && variant === "selectedMenu") {
newChildProps.tabIndex = 0;
}
return React105.cloneElement(child, newChildProps);
}
return child;
});
return (0, import_jsx_runtime87.jsx)(List_default, _extends({
role: "menu",
ref: handleRef,
className,
onKeyDown: handleKeyDown2,
tabIndex: autoFocus ? 0 : -1
}, other, {
children: items
}));
});
true ? MenuList.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* If `true`, will focus the `[role="menu"]` container and move into tab order.
* @default false
*/
autoFocus: import_prop_types55.default.bool,
/**
* If `true`, will focus the first menuitem if `variant="menu"` or selected item
* if `variant="selectedMenu"`.
* @default false
*/
autoFocusItem: import_prop_types55.default.bool,
/**
* MenuList contents, normally `MenuItem`s.
*/
children: import_prop_types55.default.node,
/**
* @ignore
*/
className: import_prop_types55.default.string,
/**
* If `true`, will allow focus on disabled items.
* @default false
*/
disabledItemsFocusable: import_prop_types55.default.bool,
/**
* If `true`, the menu items will not wrap focus.
* @default false
*/
disableListWrap: import_prop_types55.default.bool,
/**
* @ignore
*/
onKeyDown: import_prop_types55.default.func,
/**
* The variant to use. Use `menu` to prevent selected items from impacting the initial focus
* and the vertical alignment relative to the anchor element.
* @default 'selectedMenu'
*/
variant: import_prop_types55.default.oneOf(["menu", "selectedMenu"])
} : void 0;
var MenuList_default = MenuList;
// node_modules/@mui/material/Popover/popoverClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getPopoverUtilityClass(slot) {
return generateUtilityClass("MuiPopover", slot);
}
var popoverClasses = generateUtilityClasses("MuiPopover", ["root", "paper"]);
var popoverClasses_default = popoverClasses;
// node_modules/@mui/material/Popover/Popover.js
init_extends();
init_objectWithoutPropertiesLoose();
var React106 = __toESM(require_react());
var import_prop_types56 = __toESM(require_prop_types());
init_clsx();
init_composeClasses();
init_HTMLElementType();
init_refType();
init_elementTypeAcceptingRef();
init_integerPropType();
init_chainPropTypes();
init_styled();
init_useThemeProps();
init_debounce();
init_ownerDocument();
init_ownerWindow();
init_useForkRef();
var import_jsx_runtime88 = __toESM(require_jsx_runtime());
var _excluded52 = ["onEntering"];
var _excluded211 = ["action", "anchorEl", "anchorOrigin", "anchorPosition", "anchorReference", "children", "className", "container", "elevation", "marginThreshold", "open", "PaperProps", "slots", "slotProps", "transformOrigin", "TransitionComponent", "transitionDuration", "TransitionProps", "disableScrollLock"];
var _excluded310 = ["slotProps"];
function getOffsetTop(rect, vertical) {
let offset3 = 0;
if (typeof vertical === "number") {
offset3 = vertical;
} else if (vertical === "center") {
offset3 = rect.height / 2;
} else if (vertical === "bottom") {
offset3 = rect.height;
}
return offset3;
}
function getOffsetLeft(rect, horizontal) {
let offset3 = 0;
if (typeof horizontal === "number") {
offset3 = horizontal;
} else if (horizontal === "center") {
offset3 = rect.width / 2;
} else if (horizontal === "right") {
offset3 = rect.width;
}
return offset3;
}
function getTransformOriginValue(transformOrigin) {
return [transformOrigin.horizontal, transformOrigin.vertical].map((n) => typeof n === "number" ? `${n}px` : n).join(" ");
}
function resolveAnchorEl2(anchorEl) {
return typeof anchorEl === "function" ? anchorEl() : anchorEl;
}
var useUtilityClasses43 = (ownerState) => {
const {
classes
} = ownerState;
const slots = {
root: ["root"],
paper: ["paper"]
};
return composeClasses(slots, getPopoverUtilityClass, classes);
};
var PopoverRoot = styled_default(Modal_default, {
name: "MuiPopover",
slot: "Root",
overridesResolver: (props, styles4) => styles4.root
})({});
var PopoverPaper = styled_default(Paper_default, {
name: "MuiPopover",
slot: "Paper",
overridesResolver: (props, styles4) => styles4.paper
})({
position: "absolute",
overflowY: "auto",
overflowX: "hidden",
// So we see the popover when it's empty.
// It's most likely on issue on userland.
minWidth: 16,
minHeight: 16,
maxWidth: "calc(100% - 32px)",
maxHeight: "calc(100% - 32px)",
// We disable the focus ring for mouse, touch and keyboard users.
outline: 0
});
var Popover = React106.forwardRef(function Popover2(inProps, ref) {
var _slotProps$paper, _slots$root, _slots$paper;
const props = useThemeProps({
props: inProps,
name: "MuiPopover"
});
const {
action,
anchorEl,
anchorOrigin = {
vertical: "top",
horizontal: "left"
},
anchorPosition,
anchorReference = "anchorEl",
children,
className,
container: containerProp,
elevation = 8,
marginThreshold = 16,
open,
PaperProps: PaperPropsProp = {},
slots,
slotProps,
transformOrigin = {
vertical: "top",
horizontal: "left"
},
TransitionComponent = Grow_default,
transitionDuration: transitionDurationProp = "auto",
TransitionProps: {
onEntering
} = {},
disableScrollLock = false
} = props, TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded52), other = _objectWithoutPropertiesLoose(props, _excluded211);
const externalPaperSlotProps = (_slotProps$paper = slotProps == null ? void 0 : slotProps.paper) != null ? _slotProps$paper : PaperPropsProp;
const paperRef = React106.useRef();
const handlePaperRef = useForkRef_default(paperRef, externalPaperSlotProps.ref);
const ownerState = _extends({}, props, {
anchorOrigin,
anchorReference,
elevation,
marginThreshold,
externalPaperSlotProps,
transformOrigin,
TransitionComponent,
transitionDuration: transitionDurationProp,
TransitionProps
});
const classes = useUtilityClasses43(ownerState);
const getAnchorOffset = React106.useCallback(() => {
if (anchorReference === "anchorPosition") {
if (true) {
if (!anchorPosition) {
console.error('MUI: You need to provide a `anchorPosition` prop when using <Popover anchorReference="anchorPosition" />.');
}
}
return anchorPosition;
}
const resolvedAnchorEl = resolveAnchorEl2(anchorEl);
const anchorElement = resolvedAnchorEl && resolvedAnchorEl.nodeType === 1 ? resolvedAnchorEl : ownerDocument_default(paperRef.current).body;
const anchorRect = anchorElement.getBoundingClientRect();
if (true) {
const box = anchorElement.getBoundingClientRect();
if (box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
console.warn(["MUI: The `anchorEl` prop provided to the component is invalid.", "The anchor element should be part of the document layout.", "Make sure the element is present in the document or that it's not display none."].join("\n"));
}
}
return {
top: anchorRect.top + getOffsetTop(anchorRect, anchorOrigin.vertical),
left: anchorRect.left + getOffsetLeft(anchorRect, anchorOrigin.horizontal)
};
}, [anchorEl, anchorOrigin.horizontal, anchorOrigin.vertical, anchorPosition, anchorReference]);
const getTransformOrigin = React106.useCallback((elemRect) => {
return {
vertical: getOffsetTop(elemRect, transformOrigin.vertical),
horizontal: getOffsetLeft(elemRect, transformOrigin.horizontal)
};
}, [transformOrigin.horizontal, transformOrigin.vertical]);
const getPositioningStyle = React106.useCallback((element) => {
const elemRect = {
width: element.offsetWidth,
height: element.offsetHeight
};
const elemTransformOrigin = getTransformOrigin(elemRect);
if (anchorReference === "none") {
return {
top: null,
left: null,
transformOrigin: getTransformOriginValue(elemTransformOrigin)
};
}
const anchorOffset = getAnchorOffset();
let top2 = anchorOffset.top - elemTransformOrigin.vertical;
let left2 = anchorOffset.left - elemTransformOrigin.horizontal;
const bottom2 = top2 + elemRect.height;
const right2 = left2 + elemRect.width;
const containerWindow = ownerWindow_default(resolveAnchorEl2(anchorEl));
const heightThreshold = containerWindow.innerHeight - marginThreshold;
const widthThreshold = containerWindow.innerWidth - marginThreshold;
if (marginThreshold !== null && top2 < marginThreshold) {
const diff = top2 - marginThreshold;
top2 -= diff;
elemTransformOrigin.vertical += diff;
} else if (marginThreshold !== null && bottom2 > heightThreshold) {
const diff = bottom2 - heightThreshold;
top2 -= diff;
elemTransformOrigin.vertical += diff;
}
if (true) {
if (elemRect.height > heightThreshold && elemRect.height && heightThreshold) {
console.error(["MUI: The popover component is too tall.", `Some part of it can not be seen on the screen (${elemRect.height - heightThreshold}px).`, "Please consider adding a `max-height` to improve the user-experience."].join("\n"));
}
}
if (marginThreshold !== null && left2 < marginThreshold) {
const diff = left2 - marginThreshold;
left2 -= diff;
elemTransformOrigin.horizontal += diff;
} else if (right2 > widthThreshold) {
const diff = right2 - widthThreshold;
left2 -= diff;
elemTransformOrigin.horizontal += diff;
}
return {
top: `${Math.round(top2)}px`,
left: `${Math.round(left2)}px`,
transformOrigin: getTransformOriginValue(elemTransformOrigin)
};
}, [anchorEl, anchorReference, getAnchorOffset, getTransformOrigin, marginThreshold]);
const [isPositioned, setIsPositioned] = React106.useState(open);
const setPositioningStyles = React106.useCallback(() => {
const element = paperRef.current;
if (!element) {
return;
}
const positioning = getPositioningStyle(element);
if (positioning.top !== null) {
element.style.top = positioning.top;
}
if (positioning.left !== null) {
element.style.left = positioning.left;
}
element.style.transformOrigin = positioning.transformOrigin;
setIsPositioned(true);
}, [getPositioningStyle]);
React106.useEffect(() => {
if (disableScrollLock) {
window.addEventListener("scroll", setPositioningStyles);
}
return () => window.removeEventListener("scroll", setPositioningStyles);
}, [anchorEl, disableScrollLock, setPositioningStyles]);
const handleEntering = (element, isAppearing) => {
if (onEntering) {
onEntering(element, isAppearing);
}
setPositioningStyles();
};
const handleExited = () => {
setIsPositioned(false);
};
React106.useEffect(() => {
if (open) {
setPositioningStyles();
}
});
React106.useImperativeHandle(action, () => open ? {
updatePosition: () => {
setPositioningStyles();
}
} : null, [open, setPositioningStyles]);
React106.useEffect(() => {
if (!open) {
return void 0;
}
const handleResize = debounce_default(() => {
setPositioningStyles();
});
const containerWindow = ownerWindow_default(anchorEl);
containerWindow.addEventListener("resize", handleResize);
return () => {
handleResize.clear();
containerWindow.removeEventListener("resize", handleResize);
};
}, [anchorEl, open, setPositioningStyles]);
let transitionDuration = transitionDurationProp;
if (transitionDurationProp === "auto" && !TransitionComponent.muiSupportAuto) {
transitionDuration = void 0;
}
const container = containerProp || (anchorEl ? ownerDocument_default(resolveAnchorEl2(anchorEl)).body : void 0);
const RootSlot = (_slots$root = slots == null ? void 0 : slots.root) != null ? _slots$root : PopoverRoot;
const PaperSlot = (_slots$paper = slots == null ? void 0 : slots.paper) != null ? _slots$paper : PopoverPaper;
const paperProps = useSlotProps({
elementType: PaperSlot,
externalSlotProps: _extends({}, externalPaperSlotProps, {
style: isPositioned ? externalPaperSlotProps.style : _extends({}, externalPaperSlotProps.style, {
opacity: 0
})
}),
additionalProps: {
elevation,
ref: handlePaperRef
},
ownerState,
className: clsx_default(classes.paper, externalPaperSlotProps == null ? void 0 : externalPaperSlotProps.className)
});
const _useSlotProps = useSlotProps({
elementType: RootSlot,
externalSlotProps: (slotProps == null ? void 0 : slotProps.root) || {},
externalForwardedProps: other,
additionalProps: {
ref,
slotProps: {
backdrop: {
invisible: true
}
},
container,
open
},
ownerState,
className: clsx_default(classes.root, className)
}), {
slotProps: rootSlotPropsProp
} = _useSlotProps, rootProps = _objectWithoutPropertiesLoose(_useSlotProps, _excluded310);
return (0, import_jsx_runtime88.jsx)(RootSlot, _extends({}, rootProps, !isHostComponent(RootSlot) && {
slotProps: rootSlotPropsProp,
disableScrollLock
}, {
children: (0, import_jsx_runtime88.jsx)(TransitionComponent, _extends({
appear: true,
in: open,
onEntering: handleEntering,
onExited: handleExited,
timeout: transitionDuration
}, TransitionProps, {
children: (0, import_jsx_runtime88.jsx)(PaperSlot, _extends({}, paperProps, {
children
}))
}))
}));
});
true ? Popover.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* A ref for imperative actions.
* It currently only supports updatePosition() action.
*/
action: refType_default,
/**
* An HTML element, [PopoverVirtualElement](/material-ui/react-popover/#virtual-element),
* or a function that returns either.
* It's used to set the position of the popover.
*/
anchorEl: chainPropTypes(import_prop_types56.default.oneOfType([HTMLElementType, import_prop_types56.default.func]), (props) => {
if (props.open && (!props.anchorReference || props.anchorReference === "anchorEl")) {
const resolvedAnchorEl = resolveAnchorEl2(props.anchorEl);
if (resolvedAnchorEl && resolvedAnchorEl.nodeType === 1) {
const box = resolvedAnchorEl.getBoundingClientRect();
if (box.top === 0 && box.left === 0 && box.right === 0 && box.bottom === 0) {
return new Error(["MUI: The `anchorEl` prop provided to the component is invalid.", "The anchor element should be part of the document layout.", "Make sure the element is present in the document or that it's not display none."].join("\n"));
}
} else {
return new Error(["MUI: The `anchorEl` prop provided to the component is invalid.", `It should be an Element or PopoverVirtualElement instance but it's \`${resolvedAnchorEl}\` instead.`].join("\n"));
}
}
return null;
}),
/**
* This is the point on the anchor where the popover's
* `anchorEl` will attach to. This is not used when the
* anchorReference is 'anchorPosition'.
*
* Options:
* vertical: [top, center, bottom];
* horizontal: [left, center, right].
* @default {
* vertical: 'top',
* horizontal: 'left',
* }
*/
anchorOrigin: import_prop_types56.default.shape({
horizontal: import_prop_types56.default.oneOfType([import_prop_types56.default.oneOf(["center", "left", "right"]), import_prop_types56.default.number]).isRequired,
vertical: import_prop_types56.default.oneOfType([import_prop_types56.default.oneOf(["bottom", "center", "top"]), import_prop_types56.default.number]).isRequired
}),
/**
* This is the position that may be used to set the position of the popover.
* The coordinates are relative to the application's client area.
*/
anchorPosition: import_prop_types56.default.shape({
left: import_prop_types56.default.number.isRequired,
top: import_prop_types56.default.number.isRequired
}),
/**
* This determines which anchor prop to refer to when setting
* the position of the popover.
* @default 'anchorEl'
*/
anchorReference: import_prop_types56.default.oneOf(["anchorEl", "anchorPosition", "none"]),
/**
* The content of the component.
*/
children: import_prop_types56.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types56.default.object,
/**
* @ignore
*/
className: import_prop_types56.default.string,
/**
* An HTML element, component instance, or function that returns either.
* The `container` will passed to the Modal component.
*
* By default, it uses the body of the anchorEl's top-level document object,
* so it's simply `document.body` most of the time.
*/
container: import_prop_types56.default.oneOfType([HTMLElementType, import_prop_types56.default.func]),
/**
* Disable the scroll lock behavior.
* @default false
*/
disableScrollLock: import_prop_types56.default.bool,
/**
* The elevation of the popover.
* @default 8
*/
elevation: integerPropType_default,
/**
* Specifies how close to the edge of the window the popover can appear.
* If null, the popover will not be constrained by the window.
* @default 16
*/
marginThreshold: import_prop_types56.default.number,
/**
* Callback fired when the component requests to be closed.
* The `reason` parameter can optionally be used to control the response to `onClose`.
*/
onClose: import_prop_types56.default.func,
/**
* If `true`, the component is shown.
*/
open: import_prop_types56.default.bool.isRequired,
/**
* Props applied to the [`Paper`](/material-ui/api/paper/) element.
*
* This prop is an alias for `slotProps.paper` and will be overriden by it if both are used.
* @deprecated Use `slotProps.paper` instead.
*
* @default {}
*/
PaperProps: import_prop_types56.default.shape({
component: elementTypeAcceptingRef_default
}),
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* @default {}
*/
slotProps: import_prop_types56.default.shape({
paper: import_prop_types56.default.oneOfType([import_prop_types56.default.func, import_prop_types56.default.object]),
root: import_prop_types56.default.oneOfType([import_prop_types56.default.func, import_prop_types56.default.object])
}),
/**
* The components used for each slot inside.
*
* @default {}
*/
slots: import_prop_types56.default.shape({
paper: import_prop_types56.default.elementType,
root: import_prop_types56.default.elementType
}),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types56.default.oneOfType([import_prop_types56.default.arrayOf(import_prop_types56.default.oneOfType([import_prop_types56.default.func, import_prop_types56.default.object, import_prop_types56.default.bool])), import_prop_types56.default.func, import_prop_types56.default.object]),
/**
* This is the point on the popover which
* will attach to the anchor's origin.
*
* Options:
* vertical: [top, center, bottom, x(px)];
* horizontal: [left, center, right, x(px)].
* @default {
* vertical: 'top',
* horizontal: 'left',
* }
*/
transformOrigin: import_prop_types56.default.shape({
horizontal: import_prop_types56.default.oneOfType([import_prop_types56.default.oneOf(["center", "left", "right"]), import_prop_types56.default.number]).isRequired,
vertical: import_prop_types56.default.oneOfType([import_prop_types56.default.oneOf(["bottom", "center", "top"]), import_prop_types56.default.number]).isRequired
}),
/**
* The component used for the transition.
* [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.
* @default Grow
*/
TransitionComponent: import_prop_types56.default.elementType,
/**
* Set to 'auto' to automatically calculate transition time based on height.
* @default 'auto'
*/
transitionDuration: import_prop_types56.default.oneOfType([import_prop_types56.default.oneOf(["auto"]), import_prop_types56.default.number, import_prop_types56.default.shape({
appear: import_prop_types56.default.number,
enter: import_prop_types56.default.number,
exit: import_prop_types56.default.number
})]),
/**
* Props applied to the transition element.
* By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
* @default {}
*/
TransitionProps: import_prop_types56.default.object
} : void 0;
var Popover_default = Popover;
// node_modules/@mui/material/Menu/menuClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getMenuUtilityClass2(slot) {
return generateUtilityClass("MuiMenu", slot);
}
var menuClasses2 = generateUtilityClasses("MuiMenu", ["root", "paper", "list"]);
var menuClasses_default = menuClasses2;
// node_modules/@mui/material/Menu/Menu.js
init_extends();
init_objectWithoutPropertiesLoose();
var React107 = __toESM(require_react());
var import_react_is2 = __toESM(require_react_is());
var import_prop_types57 = __toESM(require_prop_types());
init_clsx();
init_composeClasses();
init_HTMLElementType();
init_styled();
init_useThemeProps();
var import_jsx_runtime89 = __toESM(require_jsx_runtime());
var _excluded53 = ["onEntering"];
var _excluded212 = ["autoFocus", "children", "className", "disableAutoFocusItem", "MenuListProps", "onClose", "open", "PaperProps", "PopoverClasses", "transitionDuration", "TransitionProps", "variant", "slots", "slotProps"];
var RTL_ORIGIN = {
vertical: "top",
horizontal: "right"
};
var LTR_ORIGIN = {
vertical: "top",
horizontal: "left"
};
var useUtilityClasses44 = (ownerState) => {
const {
classes
} = ownerState;
const slots = {
root: ["root"],
paper: ["paper"],
list: ["list"]
};
return composeClasses(slots, getMenuUtilityClass2, classes);
};
var MenuRoot = styled_default(Popover_default, {
shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
name: "MuiMenu",
slot: "Root",
overridesResolver: (props, styles4) => styles4.root
})({});
var MenuPaper = styled_default(PopoverPaper, {
name: "MuiMenu",
slot: "Paper",
overridesResolver: (props, styles4) => styles4.paper
})({
// specZ: The maximum height of a simple menu should be one or more rows less than the view
// height. This ensures a tappable area outside of the simple menu with which to dismiss
// the menu.
maxHeight: "calc(100% - 96px)",
// Add iOS momentum scrolling for iOS < 13.0
WebkitOverflowScrolling: "touch"
});
var MenuMenuList = styled_default(MenuList_default, {
name: "MuiMenu",
slot: "List",
overridesResolver: (props, styles4) => styles4.list
})({
// We disable the focus ring for mouse, touch and keyboard users.
outline: 0
});
var Menu3 = React107.forwardRef(function Menu4(inProps, ref) {
var _slots$paper, _slotProps$paper;
const props = useThemeProps({
props: inProps,
name: "MuiMenu"
});
const {
autoFocus = true,
children,
className,
disableAutoFocusItem = false,
MenuListProps = {},
onClose,
open,
PaperProps = {},
PopoverClasses,
transitionDuration = "auto",
TransitionProps: {
onEntering
} = {},
variant = "selectedMenu",
slots = {},
slotProps = {}
} = props, TransitionProps = _objectWithoutPropertiesLoose(props.TransitionProps, _excluded53), other = _objectWithoutPropertiesLoose(props, _excluded212);
const isRtl = useRtl();
const ownerState = _extends({}, props, {
autoFocus,
disableAutoFocusItem,
MenuListProps,
onEntering,
PaperProps,
transitionDuration,
TransitionProps,
variant
});
const classes = useUtilityClasses44(ownerState);
const autoFocusItem = autoFocus && !disableAutoFocusItem && open;
const menuListActionsRef = React107.useRef(null);
const handleEntering = (element, isAppearing) => {
if (menuListActionsRef.current) {
menuListActionsRef.current.adjustStyleForScrollbar(element, {
direction: isRtl ? "rtl" : "ltr"
});
}
if (onEntering) {
onEntering(element, isAppearing);
}
};
const handleListKeyDown = (event) => {
if (event.key === "Tab") {
event.preventDefault();
if (onClose) {
onClose(event, "tabKeyDown");
}
}
};
let activeItemIndex = -1;
React107.Children.map(children, (child, index2) => {
if (!React107.isValidElement(child)) {
return;
}
if (true) {
if ((0, import_react_is2.isFragment)(child)) {
console.error(["MUI: The Menu component doesn't accept a Fragment as a child.", "Consider providing an array instead."].join("\n"));
}
}
if (!child.props.disabled) {
if (variant === "selectedMenu" && child.props.selected) {
activeItemIndex = index2;
} else if (activeItemIndex === -1) {
activeItemIndex = index2;
}
}
});
const PaperSlot = (_slots$paper = slots.paper) != null ? _slots$paper : MenuPaper;
const paperExternalSlotProps = (_slotProps$paper = slotProps.paper) != null ? _slotProps$paper : PaperProps;
const rootSlotProps = useSlotProps({
elementType: slots.root,
externalSlotProps: slotProps.root,
ownerState,
className: [classes.root, className]
});
const paperSlotProps = useSlotProps({
elementType: PaperSlot,
externalSlotProps: paperExternalSlotProps,
ownerState,
className: classes.paper
});
return (0, import_jsx_runtime89.jsx)(MenuRoot, _extends({
onClose,
anchorOrigin: {
vertical: "bottom",
horizontal: isRtl ? "right" : "left"
},
transformOrigin: isRtl ? RTL_ORIGIN : LTR_ORIGIN,
slots: {
paper: PaperSlot,
root: slots.root
},
slotProps: {
root: rootSlotProps,
paper: paperSlotProps
},
open,
ref,
transitionDuration,
TransitionProps: _extends({
onEntering: handleEntering
}, TransitionProps),
ownerState
}, other, {
classes: PopoverClasses,
children: (0, import_jsx_runtime89.jsx)(MenuMenuList, _extends({
onKeyDown: handleListKeyDown,
actions: menuListActionsRef,
autoFocus: autoFocus && (activeItemIndex === -1 || disableAutoFocusItem),
autoFocusItem,
variant
}, MenuListProps, {
className: clsx_default(classes.list, MenuListProps.className),
children
}))
}));
});
true ? Menu3.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* An HTML element, or a function that returns one.
* It's used to set the position of the menu.
*/
anchorEl: import_prop_types57.default.oneOfType([HTMLElementType, import_prop_types57.default.func]),
/**
* If `true` (Default) will focus the `[role="menu"]` if no focusable child is found. Disabled
* children are not focusable. If you set this prop to `false` focus will be placed
* on the parent modal container. This has severe accessibility implications
* and should only be considered if you manage focus otherwise.
* @default true
*/
autoFocus: import_prop_types57.default.bool,
/**
* Menu contents, normally `MenuItem`s.
*/
children: import_prop_types57.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types57.default.object,
/**
* @ignore
*/
className: import_prop_types57.default.string,
/**
* When opening the menu will not focus the active item but the `[role="menu"]`
* unless `autoFocus` is also set to `false`. Not using the default means not
* following WAI-ARIA authoring practices. Please be considerate about possible
* accessibility implications.
* @default false
*/
disableAutoFocusItem: import_prop_types57.default.bool,
/**
* Props applied to the [`MenuList`](/material-ui/api/menu-list/) element.
* @default {}
*/
MenuListProps: import_prop_types57.default.object,
/**
* Callback fired when the component requests to be closed.
*
* @param {object} event The event source of the callback.
* @param {string} reason Can be: `"escapeKeyDown"`, `"backdropClick"`, `"tabKeyDown"`.
*/
onClose: import_prop_types57.default.func,
/**
* If `true`, the component is shown.
*/
open: import_prop_types57.default.bool.isRequired,
/**
* @ignore
*/
PaperProps: import_prop_types57.default.object,
/**
* `classes` prop applied to the [`Popover`](/material-ui/api/popover/) element.
*/
PopoverClasses: import_prop_types57.default.object,
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* @default {}
*/
slotProps: import_prop_types57.default.shape({
paper: import_prop_types57.default.oneOfType([import_prop_types57.default.func, import_prop_types57.default.object]),
root: import_prop_types57.default.oneOfType([import_prop_types57.default.func, import_prop_types57.default.object])
}),
/**
* The components used for each slot inside.
*
* @default {}
*/
slots: import_prop_types57.default.shape({
paper: import_prop_types57.default.elementType,
root: import_prop_types57.default.elementType
}),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types57.default.oneOfType([import_prop_types57.default.arrayOf(import_prop_types57.default.oneOfType([import_prop_types57.default.func, import_prop_types57.default.object, import_prop_types57.default.bool])), import_prop_types57.default.func, import_prop_types57.default.object]),
/**
* The length of the transition in `ms`, or 'auto'
* @default 'auto'
*/
transitionDuration: import_prop_types57.default.oneOfType([import_prop_types57.default.oneOf(["auto"]), import_prop_types57.default.number, import_prop_types57.default.shape({
appear: import_prop_types57.default.number,
enter: import_prop_types57.default.number,
exit: import_prop_types57.default.number
})]),
/**
* Props applied to the transition element.
* By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
* @default {}
*/
TransitionProps: import_prop_types57.default.object,
/**
* The variant to use. Use `menu` to prevent selected items from impacting the initial focus.
* @default 'selectedMenu'
*/
variant: import_prop_types57.default.oneOf(["menu", "selectedMenu"])
} : void 0;
var Menu_default = Menu3;
// node_modules/@mui/material/NativeSelect/nativeSelectClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getNativeSelectUtilityClasses(slot) {
return generateUtilityClass("MuiNativeSelect", slot);
}
var nativeSelectClasses = generateUtilityClasses("MuiNativeSelect", ["root", "select", "multiple", "filled", "outlined", "standard", "disabled", "icon", "iconOpen", "iconFilled", "iconOutlined", "iconStandard", "nativeInput", "error"]);
var nativeSelectClasses_default = nativeSelectClasses;
// node_modules/@mui/material/OutlinedInput/OutlinedInput.js
init_objectWithoutPropertiesLoose();
init_extends();
var React109 = __toESM(require_react());
var import_prop_types59 = __toESM(require_prop_types());
init_refType();
init_composeClasses();
// node_modules/@mui/material/OutlinedInput/NotchedOutline.js
init_objectWithoutPropertiesLoose();
init_extends();
var React108 = __toESM(require_react());
var import_prop_types58 = __toESM(require_prop_types());
init_styled();
var import_jsx_runtime90 = __toESM(require_jsx_runtime());
var _span7;
var _excluded54 = ["children", "classes", "className", "label", "notched"];
var NotchedOutlineRoot = styled_default("fieldset", {
shouldForwardProp: rootShouldForwardProp
})({
textAlign: "left",
position: "absolute",
bottom: 0,
right: 0,
top: -5,
left: 0,
margin: 0,
padding: "0 8px",
pointerEvents: "none",
borderRadius: "inherit",
borderStyle: "solid",
borderWidth: 1,
overflow: "hidden",
minWidth: "0%"
});
var NotchedOutlineLegend = styled_default("legend", {
shouldForwardProp: rootShouldForwardProp
})(({
ownerState,
theme
}) => _extends({
float: "unset",
// Fix conflict with bootstrap
width: "auto",
// Fix conflict with bootstrap
overflow: "hidden"
}, !ownerState.withLabel && {
padding: 0,
lineHeight: "11px",
// sync with `height` in `legend` styles
transition: theme.transitions.create("width", {
duration: 150,
easing: theme.transitions.easing.easeOut
})
}, ownerState.withLabel && _extends({
display: "block",
// Fix conflict with normalize.css and sanitize.css
padding: 0,
height: 11,
// sync with `lineHeight` in `legend` styles
fontSize: "0.75em",
visibility: "hidden",
maxWidth: 0.01,
transition: theme.transitions.create("max-width", {
duration: 50,
easing: theme.transitions.easing.easeOut
}),
whiteSpace: "nowrap",
"& > span": {
paddingLeft: 5,
paddingRight: 5,
display: "inline-block",
opacity: 0,
visibility: "visible"
}
}, ownerState.notched && {
maxWidth: "100%",
transition: theme.transitions.create("max-width", {
duration: 100,
easing: theme.transitions.easing.easeOut,
delay: 50
})
})));
function NotchedOutline(props) {
const {
className,
label,
notched
} = props, other = _objectWithoutPropertiesLoose(props, _excluded54);
const withLabel = label != null && label !== "";
const ownerState = _extends({}, props, {
notched,
withLabel
});
return (0, import_jsx_runtime90.jsx)(NotchedOutlineRoot, _extends({
"aria-hidden": true,
className,
ownerState
}, other, {
children: (0, import_jsx_runtime90.jsx)(NotchedOutlineLegend, {
ownerState,
children: withLabel ? (0, import_jsx_runtime90.jsx)("span", {
children: label
}) : (
// notranslate needed while Google Translate will not fix zero-width space issue
_span7 || (_span7 = (0, import_jsx_runtime90.jsx)("span", {
className: "notranslate",
children: ""
}))
)
})
}));
}
true ? NotchedOutline.propTypes = {
/**
* The content of the component.
*/
children: import_prop_types58.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types58.default.object,
/**
* @ignore
*/
className: import_prop_types58.default.string,
/**
* The label.
*/
label: import_prop_types58.default.node,
/**
* If `true`, the outline is notched to accommodate the label.
*/
notched: import_prop_types58.default.bool.isRequired,
/**
* @ignore
*/
style: import_prop_types58.default.object
} : void 0;
// node_modules/@mui/material/OutlinedInput/OutlinedInput.js
init_styled();
init_useThemeProps();
var import_jsx_runtime91 = __toESM(require_jsx_runtime());
var import_jsx_runtime92 = __toESM(require_jsx_runtime());
var _excluded55 = ["components", "fullWidth", "inputComponent", "label", "multiline", "notched", "slots", "type"];
var useUtilityClasses45 = (ownerState) => {
const {
classes
} = ownerState;
const slots = {
root: ["root"],
notchedOutline: ["notchedOutline"],
input: ["input"]
};
const composedClasses = composeClasses(slots, getOutlinedInputUtilityClass, classes);
return _extends({}, classes, composedClasses);
};
var OutlinedInputRoot = styled_default(InputBaseRoot, {
shouldForwardProp: (prop) => rootShouldForwardProp(prop) || prop === "classes",
name: "MuiOutlinedInput",
slot: "Root",
overridesResolver: rootOverridesResolver
})(({
theme,
ownerState
}) => {
const borderColor = theme.palette.mode === "light" ? "rgba(0, 0, 0, 0.23)" : "rgba(255, 255, 255, 0.23)";
return _extends({
position: "relative",
borderRadius: (theme.vars || theme).shape.borderRadius,
[`&:hover .${outlinedInputClasses_default.notchedOutline}`]: {
borderColor: (theme.vars || theme).palette.text.primary
},
// Reset on touch devices, it doesn't add specificity
"@media (hover: none)": {
[`&:hover .${outlinedInputClasses_default.notchedOutline}`]: {
borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor
}
},
[`&.${outlinedInputClasses_default.focused} .${outlinedInputClasses_default.notchedOutline}`]: {
borderColor: (theme.vars || theme).palette[ownerState.color].main,
borderWidth: 2
},
[`&.${outlinedInputClasses_default.error} .${outlinedInputClasses_default.notchedOutline}`]: {
borderColor: (theme.vars || theme).palette.error.main
},
[`&.${outlinedInputClasses_default.disabled} .${outlinedInputClasses_default.notchedOutline}`]: {
borderColor: (theme.vars || theme).palette.action.disabled
}
}, ownerState.startAdornment && {
paddingLeft: 14
}, ownerState.endAdornment && {
paddingRight: 14
}, ownerState.multiline && _extends({
padding: "16.5px 14px"
}, ownerState.size === "small" && {
padding: "8.5px 14px"
}));
});
var NotchedOutlineRoot2 = styled_default(NotchedOutline, {
name: "MuiOutlinedInput",
slot: "NotchedOutline",
overridesResolver: (props, styles4) => styles4.notchedOutline
})(({
theme
}) => {
const borderColor = theme.palette.mode === "light" ? "rgba(0, 0, 0, 0.23)" : "rgba(255, 255, 255, 0.23)";
return {
borderColor: theme.vars ? `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.23)` : borderColor
};
});
var OutlinedInputInput = styled_default(InputBaseComponent, {
name: "MuiOutlinedInput",
slot: "Input",
overridesResolver: inputOverridesResolver
})(({
theme,
ownerState
}) => _extends({
padding: "16.5px 14px"
}, !theme.vars && {
"&:-webkit-autofill": {
WebkitBoxShadow: theme.palette.mode === "light" ? null : "0 0 0 100px #266798 inset",
WebkitTextFillColor: theme.palette.mode === "light" ? null : "#fff",
caretColor: theme.palette.mode === "light" ? null : "#fff",
borderRadius: "inherit"
}
}, theme.vars && {
"&:-webkit-autofill": {
borderRadius: "inherit"
},
[theme.getColorSchemeSelector("dark")]: {
"&:-webkit-autofill": {
WebkitBoxShadow: "0 0 0 100px #266798 inset",
WebkitTextFillColor: "#fff",
caretColor: "#fff"
}
}
}, ownerState.size === "small" && {
padding: "8.5px 14px"
}, ownerState.multiline && {
padding: 0
}, ownerState.startAdornment && {
paddingLeft: 0
}, ownerState.endAdornment && {
paddingRight: 0
}));
var OutlinedInput = React109.forwardRef(function OutlinedInput2(inProps, ref) {
var _ref, _slots$root, _ref2, _slots$input, _React$Fragment;
const props = useThemeProps({
props: inProps,
name: "MuiOutlinedInput"
});
const {
components = {},
fullWidth = false,
inputComponent = "input",
label,
multiline = false,
notched,
slots = {},
type = "text"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded55);
const classes = useUtilityClasses45(props);
const muiFormControl = useFormControl();
const fcs = formControlState({
props,
muiFormControl,
states: ["color", "disabled", "error", "focused", "hiddenLabel", "size", "required"]
});
const ownerState = _extends({}, props, {
color: fcs.color || "primary",
disabled: fcs.disabled,
error: fcs.error,
focused: fcs.focused,
formControl: muiFormControl,
fullWidth,
hiddenLabel: fcs.hiddenLabel,
multiline,
size: fcs.size,
type
});
const RootSlot = (_ref = (_slots$root = slots.root) != null ? _slots$root : components.Root) != null ? _ref : OutlinedInputRoot;
const InputSlot = (_ref2 = (_slots$input = slots.input) != null ? _slots$input : components.Input) != null ? _ref2 : OutlinedInputInput;
return (0, import_jsx_runtime92.jsx)(InputBase_default, _extends({
slots: {
root: RootSlot,
input: InputSlot
},
renderSuffix: (state) => (0, import_jsx_runtime92.jsx)(NotchedOutlineRoot2, {
ownerState,
className: classes.notchedOutline,
label: label != null && label !== "" && fcs.required ? _React$Fragment || (_React$Fragment = (0, import_jsx_runtime91.jsxs)(React109.Fragment, {
children: [label, "", "*"]
})) : label,
notched: typeof notched !== "undefined" ? notched : Boolean(state.startAdornment || state.filled || state.focused)
}),
fullWidth,
inputComponent,
multiline,
ref,
type
}, other, {
classes: _extends({}, classes, {
notchedOutline: null
})
}));
});
true ? OutlinedInput.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* This prop helps users to fill forms faster, especially on mobile devices.
* The name can be confusing, as it's more like an autofill.
* You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).
*/
autoComplete: import_prop_types59.default.string,
/**
* If `true`, the `input` element is focused during the first mount.
*/
autoFocus: import_prop_types59.default.bool,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types59.default.object,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
* The prop defaults to the value (`'primary'`) inherited from the parent FormControl component.
*/
color: import_prop_types59.default.oneOfType([import_prop_types59.default.oneOf(["primary", "secondary"]), import_prop_types59.default.string]),
/**
* The components used for each slot inside.
*
* This prop is an alias for the `slots` prop.
* It's recommended to use the `slots` prop instead.
*
* @default {}
*/
components: import_prop_types59.default.shape({
Input: import_prop_types59.default.elementType,
Root: import_prop_types59.default.elementType
}),
/**
* The default value. Use when the component is not controlled.
*/
defaultValue: import_prop_types59.default.any,
/**
* If `true`, the component is disabled.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
disabled: import_prop_types59.default.bool,
/**
* End `InputAdornment` for this component.
*/
endAdornment: import_prop_types59.default.node,
/**
* If `true`, the `input` will indicate an error.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
error: import_prop_types59.default.bool,
/**
* If `true`, the `input` will take up the full width of its container.
* @default false
*/
fullWidth: import_prop_types59.default.bool,
/**
* The id of the `input` element.
*/
id: import_prop_types59.default.string,
/**
* The component used for the `input` element.
* Either a string to use a HTML element or a component.
* @default 'input'
*/
inputComponent: import_prop_types59.default.elementType,
/**
* [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.
* @default {}
*/
inputProps: import_prop_types59.default.object,
/**
* Pass a ref to the `input` element.
*/
inputRef: refType_default,
/**
* The label of the `input`. It is only used for layout. The actual labelling
* is handled by `InputLabel`.
*/
label: import_prop_types59.default.node,
/**
* If `dense`, will adjust vertical spacing. This is normally obtained via context from
* FormControl.
* The prop defaults to the value (`'none'`) inherited from the parent FormControl component.
*/
margin: import_prop_types59.default.oneOf(["dense", "none"]),
/**
* Maximum number of rows to display when multiline option is set to true.
*/
maxRows: import_prop_types59.default.oneOfType([import_prop_types59.default.number, import_prop_types59.default.string]),
/**
* Minimum number of rows to display when multiline option is set to true.
*/
minRows: import_prop_types59.default.oneOfType([import_prop_types59.default.number, import_prop_types59.default.string]),
/**
* If `true`, a [TextareaAutosize](/material-ui/react-textarea-autosize/) element is rendered.
* @default false
*/
multiline: import_prop_types59.default.bool,
/**
* Name attribute of the `input` element.
*/
name: import_prop_types59.default.string,
/**
* If `true`, the outline is notched to accommodate the label.
*/
notched: import_prop_types59.default.bool,
/**
* Callback fired when the value is changed.
*
* @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.
* You can pull out the new value by accessing `event.target.value` (string).
*/
onChange: import_prop_types59.default.func,
/**
* The short hint displayed in the `input` before the user enters a value.
*/
placeholder: import_prop_types59.default.string,
/**
* It prevents the user from changing the value of the field
* (not from interacting with the field).
*/
readOnly: import_prop_types59.default.bool,
/**
* If `true`, the `input` element is required.
* The prop defaults to the value (`false`) inherited from the parent FormControl component.
*/
required: import_prop_types59.default.bool,
/**
* Number of rows to display when multiline option is set to true.
*/
rows: import_prop_types59.default.oneOfType([import_prop_types59.default.number, import_prop_types59.default.string]),
/**
* The components used for each slot inside.
*
* This prop is an alias for the `components` prop, which will be deprecated in the future.
*
* @default {}
*/
slots: import_prop_types59.default.shape({
input: import_prop_types59.default.elementType,
root: import_prop_types59.default.elementType
}),
/**
* Start `InputAdornment` for this component.
*/
startAdornment: import_prop_types59.default.node,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types59.default.oneOfType([import_prop_types59.default.arrayOf(import_prop_types59.default.oneOfType([import_prop_types59.default.func, import_prop_types59.default.object, import_prop_types59.default.bool])), import_prop_types59.default.func, import_prop_types59.default.object]),
/**
* Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).
* @default 'text'
*/
type: import_prop_types59.default.string,
/**
* The value of the `input` element, required for a controlled component.
*/
value: import_prop_types59.default.any
} : void 0;
OutlinedInput.muiName = "Input";
var OutlinedInput_default = OutlinedInput;
// node_modules/@mui/material/Select/selectClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getSelectUtilityClasses(slot) {
return generateUtilityClass("MuiSelect", slot);
}
var selectClasses2 = generateUtilityClasses("MuiSelect", ["root", "select", "multiple", "filled", "outlined", "standard", "disabled", "focused", "icon", "iconOpen", "iconFilled", "iconOutlined", "iconStandard", "nativeInput", "error"]);
var selectClasses_default = selectClasses2;
// node_modules/@mui/material/Select/Select.js
init_extends();
init_objectWithoutPropertiesLoose();
var React112 = __toESM(require_react());
var import_prop_types62 = __toESM(require_prop_types());
init_clsx();
init_deepmerge();
// node_modules/@mui/material/Select/SelectInput.js
init_extends();
init_objectWithoutPropertiesLoose();
init_formatMuiErrorMessage();
var React111 = __toESM(require_react());
var import_react_is3 = __toESM(require_react_is());
var import_prop_types61 = __toESM(require_prop_types());
init_clsx();
init_composeClasses();
init_useId();
init_refType();
init_ownerDocument();
init_capitalize();
// node_modules/@mui/material/NativeSelect/NativeSelectInput.js
init_objectWithoutPropertiesLoose();
init_extends();
var React110 = __toESM(require_react());
var import_prop_types60 = __toESM(require_prop_types());
init_clsx();
init_refType();
init_composeClasses();
init_capitalize();
init_styled();
var import_jsx_runtime93 = __toESM(require_jsx_runtime());
var import_jsx_runtime94 = __toESM(require_jsx_runtime());
var _excluded56 = ["className", "disabled", "error", "IconComponent", "inputRef", "variant"];
var useUtilityClasses46 = (ownerState) => {
const {
classes,
variant,
disabled,
multiple,
open,
error
} = ownerState;
const slots = {
select: ["select", variant, disabled && "disabled", multiple && "multiple", error && "error"],
icon: ["icon", `icon${capitalize_default(variant)}`, open && "iconOpen", disabled && "disabled"]
};
return composeClasses(slots, getNativeSelectUtilityClasses, classes);
};
var nativeSelectSelectStyles = ({
ownerState,
theme
}) => _extends({
MozAppearance: "none",
// Reset
WebkitAppearance: "none",
// Reset
// When interacting quickly, the text can end up selected.
// Native select can't be selected either.
userSelect: "none",
borderRadius: 0,
// Reset
cursor: "pointer",
"&:focus": _extends({}, theme.vars ? {
backgroundColor: `rgba(${theme.vars.palette.common.onBackgroundChannel} / 0.05)`
} : {
backgroundColor: theme.palette.mode === "light" ? "rgba(0, 0, 0, 0.05)" : "rgba(255, 255, 255, 0.05)"
}, {
borderRadius: 0
// Reset Chrome style
}),
// Remove IE11 arrow
"&::-ms-expand": {
display: "none"
},
[`&.${nativeSelectClasses_default.disabled}`]: {
cursor: "default"
},
"&[multiple]": {
height: "auto"
},
"&:not([multiple]) option, &:not([multiple]) optgroup": {
backgroundColor: (theme.vars || theme).palette.background.paper
},
// Bump specificity to allow extending custom inputs
"&&&": {
paddingRight: 24,
minWidth: 16
// So it doesn't collapse.
}
}, ownerState.variant === "filled" && {
"&&&": {
paddingRight: 32
}
}, ownerState.variant === "outlined" && {
borderRadius: (theme.vars || theme).shape.borderRadius,
"&:focus": {
borderRadius: (theme.vars || theme).shape.borderRadius
// Reset the reset for Chrome style
},
"&&&": {
paddingRight: 32
}
});
var NativeSelectSelect = styled_default("select", {
name: "MuiNativeSelect",
slot: "Select",
shouldForwardProp: rootShouldForwardProp,
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.select, styles4[ownerState.variant], ownerState.error && styles4.error, {
[`&.${nativeSelectClasses_default.multiple}`]: styles4.multiple
}];
}
})(nativeSelectSelectStyles);
var nativeSelectIconStyles = ({
ownerState,
theme
}) => _extends({
// We use a position absolute over a flexbox in order to forward the pointer events
// to the input and to support wrapping tags..
position: "absolute",
right: 0,
top: "calc(50% - .5em)",
// Center vertically, height is 1em
pointerEvents: "none",
// Don't block pointer events on the select under the icon.
color: (theme.vars || theme).palette.action.active,
[`&.${nativeSelectClasses_default.disabled}`]: {
color: (theme.vars || theme).palette.action.disabled
}
}, ownerState.open && {
transform: "rotate(180deg)"
}, ownerState.variant === "filled" && {
right: 7
}, ownerState.variant === "outlined" && {
right: 7
});
var NativeSelectIcon = styled_default("svg", {
name: "MuiNativeSelect",
slot: "Icon",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.icon, ownerState.variant && styles4[`icon${capitalize_default(ownerState.variant)}`], ownerState.open && styles4.iconOpen];
}
})(nativeSelectIconStyles);
var NativeSelectInput = React110.forwardRef(function NativeSelectInput2(props, ref) {
const {
className,
disabled,
error,
IconComponent,
inputRef,
variant = "standard"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded56);
const ownerState = _extends({}, props, {
disabled,
variant,
error
});
const classes = useUtilityClasses46(ownerState);
return (0, import_jsx_runtime94.jsxs)(React110.Fragment, {
children: [(0, import_jsx_runtime93.jsx)(NativeSelectSelect, _extends({
ownerState,
className: clsx_default(classes.select, className),
disabled,
ref: inputRef || ref
}, other)), props.multiple ? null : (0, import_jsx_runtime93.jsx)(NativeSelectIcon, {
as: IconComponent,
ownerState,
className: classes.icon
})]
});
});
true ? NativeSelectInput.propTypes = {
/**
* The option elements to populate the select with.
* Can be some `<option>` elements.
*/
children: import_prop_types60.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types60.default.object,
/**
* The CSS class name of the select element.
*/
className: import_prop_types60.default.string,
/**
* If `true`, the select is disabled.
*/
disabled: import_prop_types60.default.bool,
/**
* If `true`, the `select input` will indicate an error.
*/
error: import_prop_types60.default.bool,
/**
* The icon that displays the arrow.
*/
IconComponent: import_prop_types60.default.elementType.isRequired,
/**
* Use that prop to pass a ref to the native select element.
* @deprecated
*/
inputRef: refType_default,
/**
* @ignore
*/
multiple: import_prop_types60.default.bool,
/**
* Name attribute of the `select` or hidden `input` element.
*/
name: import_prop_types60.default.string,
/**
* Callback fired when a menu item is selected.
*
* @param {object} event The event source of the callback.
* You can pull out the new value by accessing `event.target.value` (string).
*/
onChange: import_prop_types60.default.func,
/**
* The input value.
*/
value: import_prop_types60.default.any,
/**
* The variant to use.
*/
variant: import_prop_types60.default.oneOf(["standard", "outlined", "filled"])
} : void 0;
var NativeSelectInput_default = NativeSelectInput;
// node_modules/@mui/material/Select/SelectInput.js
init_styled();
init_useForkRef();
init_useControlled2();
var import_jsx_runtime95 = __toESM(require_jsx_runtime());
var import_jsx_runtime96 = __toESM(require_jsx_runtime());
var _span8;
var _excluded57 = ["aria-describedby", "aria-label", "autoFocus", "autoWidth", "children", "className", "defaultOpen", "defaultValue", "disabled", "displayEmpty", "error", "IconComponent", "inputRef", "labelId", "MenuProps", "multiple", "name", "onBlur", "onChange", "onClose", "onFocus", "onOpen", "open", "readOnly", "renderValue", "SelectDisplayProps", "tabIndex", "type", "value", "variant"];
var SelectSelect = styled_default("div", {
name: "MuiSelect",
slot: "Select",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [
// Win specificity over the input base
{
[`&.${selectClasses_default.select}`]: styles4.select
},
{
[`&.${selectClasses_default.select}`]: styles4[ownerState.variant]
},
{
[`&.${selectClasses_default.error}`]: styles4.error
},
{
[`&.${selectClasses_default.multiple}`]: styles4.multiple
}
];
}
})(nativeSelectSelectStyles, {
// Win specificity over the input base
[`&.${selectClasses_default.select}`]: {
height: "auto",
// Resets for multiple select with chips
minHeight: "1.4375em",
// Required for select\text-field height consistency
textOverflow: "ellipsis",
whiteSpace: "nowrap",
overflow: "hidden"
}
});
var SelectIcon = styled_default("svg", {
name: "MuiSelect",
slot: "Icon",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.icon, ownerState.variant && styles4[`icon${capitalize_default(ownerState.variant)}`], ownerState.open && styles4.iconOpen];
}
})(nativeSelectIconStyles);
var SelectNativeInput = styled_default("input", {
shouldForwardProp: (prop) => slotShouldForwardProp(prop) && prop !== "classes",
name: "MuiSelect",
slot: "NativeInput",
overridesResolver: (props, styles4) => styles4.nativeInput
})({
bottom: 0,
left: 0,
position: "absolute",
opacity: 0,
pointerEvents: "none",
width: "100%",
boxSizing: "border-box"
});
function areEqualValues(a, b) {
if (typeof b === "object" && b !== null) {
return a === b;
}
return String(a) === String(b);
}
function isEmpty2(display) {
return display == null || typeof display === "string" && !display.trim();
}
var useUtilityClasses47 = (ownerState) => {
const {
classes,
variant,
disabled,
multiple,
open,
error
} = ownerState;
const slots = {
select: ["select", variant, disabled && "disabled", multiple && "multiple", error && "error"],
icon: ["icon", `icon${capitalize_default(variant)}`, open && "iconOpen", disabled && "disabled"],
nativeInput: ["nativeInput"]
};
return composeClasses(slots, getSelectUtilityClasses, classes);
};
var SelectInput = React111.forwardRef(function SelectInput2(props, ref) {
var _MenuProps$slotProps;
const {
"aria-describedby": ariaDescribedby,
"aria-label": ariaLabel,
autoFocus,
autoWidth,
children,
className,
defaultOpen,
defaultValue,
disabled,
displayEmpty,
error = false,
IconComponent,
inputRef: inputRefProp,
labelId,
MenuProps = {},
multiple,
name,
onBlur,
onChange,
onClose,
onFocus,
onOpen,
open: openProp,
readOnly,
renderValue,
SelectDisplayProps = {},
tabIndex: tabIndexProp,
value: valueProp,
variant = "standard"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded57);
const [value, setValueState] = useControlled_default({
controlled: valueProp,
default: defaultValue,
name: "Select"
});
const [openState, setOpenState] = useControlled_default({
controlled: openProp,
default: defaultOpen,
name: "Select"
});
const inputRef = React111.useRef(null);
const displayRef = React111.useRef(null);
const [displayNode, setDisplayNode] = React111.useState(null);
const {
current: isOpenControlled
} = React111.useRef(openProp != null);
const [menuMinWidthState, setMenuMinWidthState] = React111.useState();
const handleRef = useForkRef_default(ref, inputRefProp);
const handleDisplayRef = React111.useCallback((node) => {
displayRef.current = node;
if (node) {
setDisplayNode(node);
}
}, []);
const anchorElement = displayNode == null ? void 0 : displayNode.parentNode;
React111.useImperativeHandle(handleRef, () => ({
focus: () => {
displayRef.current.focus();
},
node: inputRef.current,
value
}), [value]);
React111.useEffect(() => {
if (defaultOpen && openState && displayNode && !isOpenControlled) {
setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);
displayRef.current.focus();
}
}, [displayNode, autoWidth]);
React111.useEffect(() => {
if (autoFocus) {
displayRef.current.focus();
}
}, [autoFocus]);
React111.useEffect(() => {
if (!labelId) {
return void 0;
}
const label = ownerDocument_default(displayRef.current).getElementById(labelId);
if (label) {
const handler = () => {
if (getSelection().isCollapsed) {
displayRef.current.focus();
}
};
label.addEventListener("click", handler);
return () => {
label.removeEventListener("click", handler);
};
}
return void 0;
}, [labelId]);
const update = (open2, event) => {
if (open2) {
if (onOpen) {
onOpen(event);
}
} else if (onClose) {
onClose(event);
}
if (!isOpenControlled) {
setMenuMinWidthState(autoWidth ? null : anchorElement.clientWidth);
setOpenState(open2);
}
};
const handleMouseDown = (event) => {
if (event.button !== 0) {
return;
}
event.preventDefault();
displayRef.current.focus();
update(true, event);
};
const handleClose = (event) => {
update(false, event);
};
const childrenArray = React111.Children.toArray(children);
const handleChange = (event) => {
const child = childrenArray.find((childItem) => childItem.props.value === event.target.value);
if (child === void 0) {
return;
}
setValueState(child.props.value);
if (onChange) {
onChange(event, child);
}
};
const handleItemClick = (child) => (event) => {
let newValue;
if (!event.currentTarget.hasAttribute("tabindex")) {
return;
}
if (multiple) {
newValue = Array.isArray(value) ? value.slice() : [];
const itemIndex = value.indexOf(child.props.value);
if (itemIndex === -1) {
newValue.push(child.props.value);
} else {
newValue.splice(itemIndex, 1);
}
} else {
newValue = child.props.value;
}
if (child.props.onClick) {
child.props.onClick(event);
}
if (value !== newValue) {
setValueState(newValue);
if (onChange) {
const nativeEvent = event.nativeEvent || event;
const clonedEvent = new nativeEvent.constructor(nativeEvent.type, nativeEvent);
Object.defineProperty(clonedEvent, "target", {
writable: true,
value: {
value: newValue,
name
}
});
onChange(clonedEvent, child);
}
}
if (!multiple) {
update(false, event);
}
};
const handleKeyDown2 = (event) => {
if (!readOnly) {
const validKeys = [
" ",
"ArrowUp",
"ArrowDown",
// The native select doesn't respond to enter on macOS, but it's recommended by
// https://www.w3.org/WAI/ARIA/apg/patterns/combobox/examples/combobox-select-only/
"Enter"
];
if (validKeys.indexOf(event.key) !== -1) {
event.preventDefault();
update(true, event);
}
}
};
const open = displayNode !== null && openState;
const handleBlur2 = (event) => {
if (!open && onBlur) {
Object.defineProperty(event, "target", {
writable: true,
value: {
value,
name
}
});
onBlur(event);
}
};
delete other["aria-invalid"];
let display;
let displaySingle;
const displayMultiple = [];
let computeDisplay = false;
let foundMatch = false;
if (isFilled({
value
}) || displayEmpty) {
if (renderValue) {
display = renderValue(value);
} else {
computeDisplay = true;
}
}
const items = childrenArray.map((child) => {
if (!React111.isValidElement(child)) {
return null;
}
if (true) {
if ((0, import_react_is3.isFragment)(child)) {
console.error(["MUI: The Select component doesn't accept a Fragment as a child.", "Consider providing an array instead."].join("\n"));
}
}
let selected;
if (multiple) {
if (!Array.isArray(value)) {
throw new Error(true ? `MUI: The \`value\` prop must be an array when using the \`Select\` component with \`multiple\`.` : formatMuiErrorMessage(2));
}
selected = value.some((v) => areEqualValues(v, child.props.value));
if (selected && computeDisplay) {
displayMultiple.push(child.props.children);
}
} else {
selected = areEqualValues(value, child.props.value);
if (selected && computeDisplay) {
displaySingle = child.props.children;
}
}
if (selected) {
foundMatch = true;
}
return React111.cloneElement(child, {
"aria-selected": selected ? "true" : "false",
onClick: handleItemClick(child),
onKeyUp: (event) => {
if (event.key === " ") {
event.preventDefault();
}
if (child.props.onKeyUp) {
child.props.onKeyUp(event);
}
},
role: "option",
selected,
value: void 0,
// The value is most likely not a valid HTML attribute.
"data-value": child.props.value
// Instead, we provide it as a data attribute.
});
});
if (true) {
React111.useEffect(() => {
if (!foundMatch && !multiple && value !== "") {
const values = childrenArray.map((child) => child.props.value);
console.warn([`MUI: You have provided an out-of-range value \`${value}\` for the select ${name ? `(name="${name}") ` : ""}component.`, "Consider providing a value that matches one of the available options or ''.", `The available values are ${values.filter((x) => x != null).map((x) => `\`${x}\``).join(", ") || '""'}.`].join("\n"));
}
}, [foundMatch, childrenArray, multiple, name, value]);
}
if (computeDisplay) {
if (multiple) {
if (displayMultiple.length === 0) {
display = null;
} else {
display = displayMultiple.reduce((output, child, index2) => {
output.push(child);
if (index2 < displayMultiple.length - 1) {
output.push(", ");
}
return output;
}, []);
}
} else {
display = displaySingle;
}
}
let menuMinWidth = menuMinWidthState;
if (!autoWidth && isOpenControlled && displayNode) {
menuMinWidth = anchorElement.clientWidth;
}
let tabIndex;
if (typeof tabIndexProp !== "undefined") {
tabIndex = tabIndexProp;
} else {
tabIndex = disabled ? null : 0;
}
const buttonId = SelectDisplayProps.id || (name ? `mui-component-select-${name}` : void 0);
const ownerState = _extends({}, props, {
variant,
value,
open,
error
});
const classes = useUtilityClasses47(ownerState);
const paperProps = _extends({}, MenuProps.PaperProps, (_MenuProps$slotProps = MenuProps.slotProps) == null ? void 0 : _MenuProps$slotProps.paper);
const listboxId = useId();
return (0, import_jsx_runtime96.jsxs)(React111.Fragment, {
children: [(0, import_jsx_runtime95.jsx)(SelectSelect, _extends({
ref: handleDisplayRef,
tabIndex,
role: "combobox",
"aria-controls": listboxId,
"aria-disabled": disabled ? "true" : void 0,
"aria-expanded": open ? "true" : "false",
"aria-haspopup": "listbox",
"aria-label": ariaLabel,
"aria-labelledby": [labelId, buttonId].filter(Boolean).join(" ") || void 0,
"aria-describedby": ariaDescribedby,
onKeyDown: handleKeyDown2,
onMouseDown: disabled || readOnly ? null : handleMouseDown,
onBlur: handleBlur2,
onFocus
}, SelectDisplayProps, {
ownerState,
className: clsx_default(SelectDisplayProps.className, classes.select, className),
id: buttonId,
children: isEmpty2(display) ? (
// notranslate needed while Google Translate will not fix zero-width space issue
_span8 || (_span8 = (0, import_jsx_runtime95.jsx)("span", {
className: "notranslate",
children: ""
}))
) : display
})), (0, import_jsx_runtime95.jsx)(SelectNativeInput, _extends({
"aria-invalid": error,
value: Array.isArray(value) ? value.join(",") : value,
name,
ref: inputRef,
"aria-hidden": true,
onChange: handleChange,
tabIndex: -1,
disabled,
className: classes.nativeInput,
autoFocus,
ownerState
}, other)), (0, import_jsx_runtime95.jsx)(SelectIcon, {
as: IconComponent,
className: classes.icon,
ownerState
}), (0, import_jsx_runtime95.jsx)(Menu_default, _extends({
id: `menu-${name || ""}`,
anchorEl: anchorElement,
open,
onClose: handleClose,
anchorOrigin: {
vertical: "bottom",
horizontal: "center"
},
transformOrigin: {
vertical: "top",
horizontal: "center"
}
}, MenuProps, {
MenuListProps: _extends({
"aria-labelledby": labelId,
role: "listbox",
"aria-multiselectable": multiple ? "true" : void 0,
disableListWrap: true,
id: listboxId
}, MenuProps.MenuListProps),
slotProps: _extends({}, MenuProps.slotProps, {
paper: _extends({}, paperProps, {
style: _extends({
minWidth: menuMinWidth
}, paperProps != null ? paperProps.style : null)
})
}),
children: items
}))]
});
});
true ? SelectInput.propTypes = {
/**
* @ignore
*/
"aria-describedby": import_prop_types61.default.string,
/**
* @ignore
*/
"aria-label": import_prop_types61.default.string,
/**
* @ignore
*/
autoFocus: import_prop_types61.default.bool,
/**
* If `true`, the width of the popover will automatically be set according to the items inside the
* menu, otherwise it will be at least the width of the select input.
*/
autoWidth: import_prop_types61.default.bool,
/**
* The option elements to populate the select with.
* Can be some `<MenuItem>` elements.
*/
children: import_prop_types61.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types61.default.object,
/**
* The CSS class name of the select element.
*/
className: import_prop_types61.default.string,
/**
* If `true`, the component is toggled on mount. Use when the component open state is not controlled.
* You can only use it when the `native` prop is `false` (default).
*/
defaultOpen: import_prop_types61.default.bool,
/**
* The default value. Use when the component is not controlled.
*/
defaultValue: import_prop_types61.default.any,
/**
* If `true`, the select is disabled.
*/
disabled: import_prop_types61.default.bool,
/**
* If `true`, the selected item is displayed even if its value is empty.
*/
displayEmpty: import_prop_types61.default.bool,
/**
* If `true`, the `select input` will indicate an error.
*/
error: import_prop_types61.default.bool,
/**
* The icon that displays the arrow.
*/
IconComponent: import_prop_types61.default.elementType.isRequired,
/**
* Imperative handle implementing `{ value: T, node: HTMLElement, focus(): void }`
* Equivalent to `ref`
*/
inputRef: refType_default,
/**
* The ID of an element that acts as an additional label. The Select will
* be labelled by the additional label and the selected value.
*/
labelId: import_prop_types61.default.string,
/**
* Props applied to the [`Menu`](/material-ui/api/menu/) element.
*/
MenuProps: import_prop_types61.default.object,
/**
* If `true`, `value` must be an array and the menu will support multiple selections.
*/
multiple: import_prop_types61.default.bool,
/**
* Name attribute of the `select` or hidden `input` element.
*/
name: import_prop_types61.default.string,
/**
* @ignore
*/
onBlur: import_prop_types61.default.func,
/**
* Callback fired when a menu item is selected.
*
* @param {object} event The event source of the callback.
* You can pull out the new value by accessing `event.target.value` (any).
* @param {object} [child] The react element that was selected.
*/
onChange: import_prop_types61.default.func,
/**
* Callback fired when the component requests to be closed.
* Use in controlled mode (see open).
*
* @param {object} event The event source of the callback.
*/
onClose: import_prop_types61.default.func,
/**
* @ignore
*/
onFocus: import_prop_types61.default.func,
/**
* Callback fired when the component requests to be opened.
* Use in controlled mode (see open).
*
* @param {object} event The event source of the callback.
*/
onOpen: import_prop_types61.default.func,
/**
* If `true`, the component is shown.
*/
open: import_prop_types61.default.bool,
/**
* @ignore
*/
readOnly: import_prop_types61.default.bool,
/**
* Render the selected value.
*
* @param {any} value The `value` provided to the component.
* @returns {ReactNode}
*/
renderValue: import_prop_types61.default.func,
/**
* Props applied to the clickable div element.
*/
SelectDisplayProps: import_prop_types61.default.object,
/**
* @ignore
*/
tabIndex: import_prop_types61.default.oneOfType([import_prop_types61.default.number, import_prop_types61.default.string]),
/**
* @ignore
*/
type: import_prop_types61.default.any,
/**
* The input value.
*/
value: import_prop_types61.default.any,
/**
* The variant to use.
*/
variant: import_prop_types61.default.oneOf(["standard", "outlined", "filled"])
} : void 0;
var SelectInput_default = SelectInput;
// node_modules/@mui/material/Select/Select.js
init_useThemeProps();
init_useForkRef();
init_styled();
var import_jsx_runtime97 = __toESM(require_jsx_runtime());
var _excluded58 = ["autoWidth", "children", "classes", "className", "defaultOpen", "displayEmpty", "IconComponent", "id", "input", "inputProps", "label", "labelId", "MenuProps", "multiple", "native", "onClose", "onOpen", "open", "renderValue", "SelectDisplayProps", "variant"];
var _excluded213 = ["root"];
var useUtilityClasses48 = (ownerState) => {
const {
classes
} = ownerState;
return classes;
};
var styledRootConfig = {
name: "MuiSelect",
overridesResolver: (props, styles4) => styles4.root,
shouldForwardProp: (prop) => rootShouldForwardProp(prop) && prop !== "variant",
slot: "Root"
};
var StyledInput = styled_default(Input_default, styledRootConfig)("");
var StyledOutlinedInput = styled_default(OutlinedInput_default, styledRootConfig)("");
var StyledFilledInput = styled_default(FilledInput_default, styledRootConfig)("");
var Select3 = React112.forwardRef(function Select4(inProps, ref) {
const props = useThemeProps({
name: "MuiSelect",
props: inProps
});
const {
autoWidth = false,
children,
classes: classesProp = {},
className,
defaultOpen = false,
displayEmpty = false,
IconComponent = ArrowDropDown_default,
id,
input,
inputProps,
label,
labelId,
MenuProps,
multiple = false,
native = false,
onClose,
onOpen,
open,
renderValue,
SelectDisplayProps,
variant: variantProp = "outlined"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded58);
const inputComponent = native ? NativeSelectInput_default : SelectInput_default;
const muiFormControl = useFormControl();
const fcs = formControlState({
props,
muiFormControl,
states: ["variant", "error"]
});
const variant = fcs.variant || variantProp;
const ownerState = _extends({}, props, {
variant,
classes: classesProp
});
const classes = useUtilityClasses48(ownerState);
const restOfClasses = _objectWithoutPropertiesLoose(classes, _excluded213);
const InputComponent = input || {
standard: (0, import_jsx_runtime97.jsx)(StyledInput, {
ownerState
}),
outlined: (0, import_jsx_runtime97.jsx)(StyledOutlinedInput, {
label,
ownerState
}),
filled: (0, import_jsx_runtime97.jsx)(StyledFilledInput, {
ownerState
})
}[variant];
const inputComponentRef = useForkRef_default(ref, InputComponent.ref);
return (0, import_jsx_runtime97.jsx)(React112.Fragment, {
children: React112.cloneElement(InputComponent, _extends({
// Most of the logic is implemented in `SelectInput`.
// The `Select` component is a simple API wrapper to expose something better to play with.
inputComponent,
inputProps: _extends({
children,
error: fcs.error,
IconComponent,
variant,
type: void 0,
// We render a select. We can ignore the type provided by the `Input`.
multiple
}, native ? {
id
} : {
autoWidth,
defaultOpen,
displayEmpty,
labelId,
MenuProps,
onClose,
onOpen,
open,
renderValue,
SelectDisplayProps: _extends({
id
}, SelectDisplayProps)
}, inputProps, {
classes: inputProps ? deepmerge(restOfClasses, inputProps.classes) : restOfClasses
}, input ? input.props.inputProps : {})
}, (multiple && native || displayEmpty) && variant === "outlined" ? {
notched: true
} : {}, {
ref: inputComponentRef,
className: clsx_default(InputComponent.props.className, className, classes.root)
}, !input && {
variant
}, other))
});
});
true ? Select3.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* If `true`, the width of the popover will automatically be set according to the items inside the
* menu, otherwise it will be at least the width of the select input.
* @default false
*/
autoWidth: import_prop_types62.default.bool,
/**
* The option elements to populate the select with.
* Can be some `MenuItem` when `native` is false and `option` when `native` is true.
*
* ⚠The `MenuItem` elements **must** be direct descendants when `native` is false.
*/
children: import_prop_types62.default.node,
/**
* Override or extend the styles applied to the component.
* @default {}
*/
classes: import_prop_types62.default.object,
/**
* @ignore
*/
className: import_prop_types62.default.string,
/**
* If `true`, the component is initially open. Use when the component open state is not controlled (i.e. the `open` prop is not defined).
* You can only use it when the `native` prop is `false` (default).
* @default false
*/
defaultOpen: import_prop_types62.default.bool,
/**
* The default value. Use when the component is not controlled.
*/
defaultValue: import_prop_types62.default.any,
/**
* If `true`, a value is displayed even if no items are selected.
*
* In order to display a meaningful value, a function can be passed to the `renderValue` prop which
* returns the value to be displayed when no items are selected.
*
* ⚠️ When using this prop, make sure the label doesn't overlap with the empty displayed value.
* The label should either be hidden or forced to a shrunk state.
* @default false
*/
displayEmpty: import_prop_types62.default.bool,
/**
* The icon that displays the arrow.
* @default ArrowDropDownIcon
*/
IconComponent: import_prop_types62.default.elementType,
/**
* The `id` of the wrapper element or the `select` element when `native`.
*/
id: import_prop_types62.default.string,
/**
* An `Input` element; does not have to be a material-ui specific `Input`.
*/
input: import_prop_types62.default.element,
/**
* [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.
* When `native` is `true`, the attributes are applied on the `select` element.
*/
inputProps: import_prop_types62.default.object,
/**
* See [OutlinedInput#label](/material-ui/api/outlined-input/#props)
*/
label: import_prop_types62.default.node,
/**
* The ID of an element that acts as an additional label. The Select will
* be labelled by the additional label and the selected value.
*/
labelId: import_prop_types62.default.string,
/**
* Props applied to the [`Menu`](/material-ui/api/menu/) element.
*/
MenuProps: import_prop_types62.default.object,
/**
* If `true`, `value` must be an array and the menu will support multiple selections.
* @default false
*/
multiple: import_prop_types62.default.bool,
/**
* If `true`, the component uses a native `select` element.
* @default false
*/
native: import_prop_types62.default.bool,
/**
* Callback fired when a menu item is selected.
*
* @param {SelectChangeEvent<Value>} event The event source of the callback.
* You can pull out the new value by accessing `event.target.value` (any).
* **Warning**: This is a generic event, not a change event, unless the change event is caused by browser autofill.
* @param {object} [child] The react element that was selected when `native` is `false` (default).
*/
onChange: import_prop_types62.default.func,
/**
* Callback fired when the component requests to be closed.
* Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select collapses).
*
* @param {object} event The event source of the callback.
*/
onClose: import_prop_types62.default.func,
/**
* Callback fired when the component requests to be opened.
* Use it in either controlled (see the `open` prop), or uncontrolled mode (to detect when the Select expands).
*
* @param {object} event The event source of the callback.
*/
onOpen: import_prop_types62.default.func,
/**
* If `true`, the component is shown.
* You can only use it when the `native` prop is `false` (default).
*/
open: import_prop_types62.default.bool,
/**
* Render the selected value.
* You can only use it when the `native` prop is `false` (default).
*
* @param {any} value The `value` provided to the component.
* @returns {ReactNode}
*/
renderValue: import_prop_types62.default.func,
/**
* Props applied to the clickable div element.
*/
SelectDisplayProps: import_prop_types62.default.object,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types62.default.oneOfType([import_prop_types62.default.arrayOf(import_prop_types62.default.oneOfType([import_prop_types62.default.func, import_prop_types62.default.object, import_prop_types62.default.bool])), import_prop_types62.default.func, import_prop_types62.default.object]),
/**
* The `input` value. Providing an empty string will select no options.
* Set to an empty string `''` if you don't want any of the available options to be selected.
*
* If the value is an object it must have reference equality with the option in order to be selected.
* If the value is not an object, the string representation must match with the string representation of the option in order to be selected.
*/
value: import_prop_types62.default.oneOfType([import_prop_types62.default.oneOf([""]), import_prop_types62.default.any]),
/**
* The variant to use.
* @default 'outlined'
*/
variant: import_prop_types62.default.oneOf(["filled", "outlined", "standard"])
} : void 0;
Select3.muiName = "Select";
var Select_default = Select3;
// node_modules/@mui/material/Skeleton/skeletonClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getSkeletonUtilityClass(slot) {
return generateUtilityClass("MuiSkeleton", slot);
}
var skeletonClasses = generateUtilityClasses("MuiSkeleton", ["root", "text", "rectangular", "rounded", "circular", "pulse", "wave", "withChildren", "fitContent", "heightAuto"]);
var skeletonClasses_default = skeletonClasses;
// node_modules/@mui/material/Skeleton/Skeleton.js
init_objectWithoutPropertiesLoose();
init_extends();
var React113 = __toESM(require_react());
init_clsx();
var import_prop_types63 = __toESM(require_prop_types());
init_composeClasses();
init_styled();
init_useThemeProps();
var import_jsx_runtime98 = __toESM(require_jsx_runtime());
var _excluded59 = ["animation", "className", "component", "height", "style", "variant", "width"];
var _2 = (t) => t;
var _t5;
var _t22;
var _t32;
var _t42;
var useUtilityClasses49 = (ownerState) => {
const {
classes,
variant,
animation,
hasChildren,
width,
height
} = ownerState;
const slots = {
root: ["root", variant, animation, hasChildren && "withChildren", hasChildren && !width && "fitContent", hasChildren && !height && "heightAuto"]
};
return composeClasses(slots, getSkeletonUtilityClass, classes);
};
var pulseKeyframe = keyframes(_t5 || (_t5 = _2`
0% {
opacity: 1;
}
50% {
opacity: 0.4;
}
100% {
opacity: 1;
}
`));
var waveKeyframe = keyframes(_t22 || (_t22 = _2`
0% {
transform: translateX(-100%);
}
50% {
/* +0.5s of delay between each loop */
transform: translateX(100%);
}
100% {
transform: translateX(100%);
}
`));
var SkeletonRoot = styled_default("span", {
name: "MuiSkeleton",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.root, styles4[ownerState.variant], ownerState.animation !== false && styles4[ownerState.animation], ownerState.hasChildren && styles4.withChildren, ownerState.hasChildren && !ownerState.width && styles4.fitContent, ownerState.hasChildren && !ownerState.height && styles4.heightAuto];
}
})(({
theme,
ownerState
}) => {
const radiusUnit = getUnit(theme.shape.borderRadius) || "px";
const radiusValue = toUnitless(theme.shape.borderRadius);
return _extends({
display: "block",
// Create a "on paper" color with sufficient contrast retaining the color
backgroundColor: theme.vars ? theme.vars.palette.Skeleton.bg : alpha(theme.palette.text.primary, theme.palette.mode === "light" ? 0.11 : 0.13),
height: "1.2em"
}, ownerState.variant === "text" && {
marginTop: 0,
marginBottom: 0,
height: "auto",
transformOrigin: "0 55%",
transform: "scale(1, 0.60)",
borderRadius: `${radiusValue}${radiusUnit}/${Math.round(radiusValue / 0.6 * 10) / 10}${radiusUnit}`,
"&:empty:before": {
content: '"\\00a0"'
}
}, ownerState.variant === "circular" && {
borderRadius: "50%"
}, ownerState.variant === "rounded" && {
borderRadius: (theme.vars || theme).shape.borderRadius
}, ownerState.hasChildren && {
"& > *": {
visibility: "hidden"
}
}, ownerState.hasChildren && !ownerState.width && {
maxWidth: "fit-content"
}, ownerState.hasChildren && !ownerState.height && {
height: "auto"
});
}, ({
ownerState
}) => ownerState.animation === "pulse" && css(_t32 || (_t32 = _2`
animation: ${0} 2s ease-in-out 0.5s infinite;
`), pulseKeyframe), ({
ownerState,
theme
}) => ownerState.animation === "wave" && css(_t42 || (_t42 = _2`
position: relative;
overflow: hidden;
/* Fix bug in Safari https://bugs.webkit.org/show_bug.cgi?id=68196 */
-webkit-mask-image: -webkit-radial-gradient(white, black);
&::after {
animation: ${0} 2s linear 0.5s infinite;
background: linear-gradient(
90deg,
transparent,
${0},
transparent
);
content: '';
position: absolute;
transform: translateX(-100%); /* Avoid flash during server-side hydration */
bottom: 0;
left: 0;
right: 0;
top: 0;
}
`), waveKeyframe, (theme.vars || theme).palette.action.hover));
var Skeleton = React113.forwardRef(function Skeleton2(inProps, ref) {
const props = useThemeProps({
props: inProps,
name: "MuiSkeleton"
});
const {
animation = "pulse",
className,
component = "span",
height,
style,
variant = "text",
width
} = props, other = _objectWithoutPropertiesLoose(props, _excluded59);
const ownerState = _extends({}, props, {
animation,
component,
variant,
hasChildren: Boolean(other.children)
});
const classes = useUtilityClasses49(ownerState);
return (0, import_jsx_runtime98.jsx)(SkeletonRoot, _extends({
as: component,
ref,
className: clsx_default(classes.root, className),
ownerState
}, other, {
style: _extends({
width,
height
}, style)
}));
});
true ? Skeleton.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The animation.
* If `false` the animation effect is disabled.
* @default 'pulse'
*/
animation: import_prop_types63.default.oneOf(["pulse", "wave", false]),
/**
* Optional children to infer width and height from.
*/
children: import_prop_types63.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types63.default.object,
/**
* @ignore
*/
className: import_prop_types63.default.string,
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types63.default.elementType,
/**
* Height of the skeleton.
* Useful when you don't want to adapt the skeleton to a text element but for instance a card.
*/
height: import_prop_types63.default.oneOfType([import_prop_types63.default.number, import_prop_types63.default.string]),
/**
* @ignore
*/
style: import_prop_types63.default.object,
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types63.default.oneOfType([import_prop_types63.default.arrayOf(import_prop_types63.default.oneOfType([import_prop_types63.default.func, import_prop_types63.default.object, import_prop_types63.default.bool])), import_prop_types63.default.func, import_prop_types63.default.object]),
/**
* The type of content that will be rendered.
* @default 'text'
*/
variant: import_prop_types63.default.oneOfType([import_prop_types63.default.oneOf(["circular", "rectangular", "rounded", "text"]), import_prop_types63.default.string]),
/**
* Width of the skeleton.
* Useful when the skeleton is inside an inline element with no width of its own.
*/
width: import_prop_types63.default.oneOfType([import_prop_types63.default.number, import_prop_types63.default.string])
} : void 0;
var Skeleton_default = Skeleton;
// node_modules/@mui/material/Tooltip/tooltipClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getTooltipUtilityClass(slot) {
return generateUtilityClass("MuiTooltip", slot);
}
var tooltipClasses = generateUtilityClasses("MuiTooltip", ["popper", "popperInteractive", "popperArrow", "popperClose", "tooltip", "tooltipArrow", "touch", "tooltipPlacementLeft", "tooltipPlacementRight", "tooltipPlacementTop", "tooltipPlacementBottom", "arrow"]);
var tooltipClasses_default = tooltipClasses;
// node_modules/@mui/material/Tooltip/Tooltip.js
init_objectWithoutPropertiesLoose();
init_extends();
var React114 = __toESM(require_react());
var import_prop_types64 = __toESM(require_prop_types());
init_clsx();
init_useTimeout();
init_elementAcceptingRef();
init_composeClasses();
var import_colorManipulator5 = __toESM(require_colorManipulator());
init_styled();
init_useThemeProps();
init_capitalize();
init_useEventCallback();
init_useForkRef();
init_useId2();
init_useIsFocusVisible();
init_useControlled2();
var import_jsx_runtime99 = __toESM(require_jsx_runtime());
var import_jsx_runtime100 = __toESM(require_jsx_runtime());
var _excluded60 = ["arrow", "children", "classes", "components", "componentsProps", "describeChild", "disableFocusListener", "disableHoverListener", "disableInteractive", "disableTouchListener", "enterDelay", "enterNextDelay", "enterTouchDelay", "followCursor", "id", "leaveDelay", "leaveTouchDelay", "onClose", "onOpen", "open", "placement", "PopperComponent", "PopperProps", "slotProps", "slots", "title", "TransitionComponent", "TransitionProps"];
function round3(value) {
return Math.round(value * 1e5) / 1e5;
}
var useUtilityClasses50 = (ownerState) => {
const {
classes,
disableInteractive,
arrow: arrow4,
touch,
placement
} = ownerState;
const slots = {
popper: ["popper", !disableInteractive && "popperInteractive", arrow4 && "popperArrow"],
tooltip: ["tooltip", arrow4 && "tooltipArrow", touch && "touch", `tooltipPlacement${capitalize_default(placement.split("-")[0])}`],
arrow: ["arrow"]
};
return composeClasses(slots, getTooltipUtilityClass, classes);
};
var TooltipPopper = styled_default(Popper_default, {
name: "MuiTooltip",
slot: "Popper",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.popper, !ownerState.disableInteractive && styles4.popperInteractive, ownerState.arrow && styles4.popperArrow, !ownerState.open && styles4.popperClose];
}
})(({
theme,
ownerState,
open
}) => _extends({
zIndex: (theme.vars || theme).zIndex.tooltip,
pointerEvents: "none"
}, !ownerState.disableInteractive && {
pointerEvents: "auto"
}, !open && {
pointerEvents: "none"
}, ownerState.arrow && {
[`&[data-popper-placement*="bottom"] .${tooltipClasses_default.arrow}`]: {
top: 0,
marginTop: "-0.71em",
"&::before": {
transformOrigin: "0 100%"
}
},
[`&[data-popper-placement*="top"] .${tooltipClasses_default.arrow}`]: {
bottom: 0,
marginBottom: "-0.71em",
"&::before": {
transformOrigin: "100% 0"
}
},
[`&[data-popper-placement*="right"] .${tooltipClasses_default.arrow}`]: _extends({}, !ownerState.isRtl ? {
left: 0,
marginLeft: "-0.71em"
} : {
right: 0,
marginRight: "-0.71em"
}, {
height: "1em",
width: "0.71em",
"&::before": {
transformOrigin: "100% 100%"
}
}),
[`&[data-popper-placement*="left"] .${tooltipClasses_default.arrow}`]: _extends({}, !ownerState.isRtl ? {
right: 0,
marginRight: "-0.71em"
} : {
left: 0,
marginLeft: "-0.71em"
}, {
height: "1em",
width: "0.71em",
"&::before": {
transformOrigin: "0 0"
}
})
}));
var TooltipTooltip = styled_default("div", {
name: "MuiTooltip",
slot: "Tooltip",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.tooltip, ownerState.touch && styles4.touch, ownerState.arrow && styles4.tooltipArrow, styles4[`tooltipPlacement${capitalize_default(ownerState.placement.split("-")[0])}`]];
}
})(({
theme,
ownerState
}) => _extends({
backgroundColor: theme.vars ? theme.vars.palette.Tooltip.bg : (0, import_colorManipulator5.alpha)(theme.palette.grey[700], 0.92),
borderRadius: (theme.vars || theme).shape.borderRadius,
color: (theme.vars || theme).palette.common.white,
fontFamily: theme.typography.fontFamily,
padding: "4px 8px",
fontSize: theme.typography.pxToRem(11),
maxWidth: 300,
margin: 2,
wordWrap: "break-word",
fontWeight: theme.typography.fontWeightMedium
}, ownerState.arrow && {
position: "relative",
margin: 0
}, ownerState.touch && {
padding: "8px 16px",
fontSize: theme.typography.pxToRem(14),
lineHeight: `${round3(16 / 14)}em`,
fontWeight: theme.typography.fontWeightRegular
}, {
[`.${tooltipClasses_default.popper}[data-popper-placement*="left"] &`]: _extends({
transformOrigin: "right center"
}, !ownerState.isRtl ? _extends({
marginRight: "14px"
}, ownerState.touch && {
marginRight: "24px"
}) : _extends({
marginLeft: "14px"
}, ownerState.touch && {
marginLeft: "24px"
})),
[`.${tooltipClasses_default.popper}[data-popper-placement*="right"] &`]: _extends({
transformOrigin: "left center"
}, !ownerState.isRtl ? _extends({
marginLeft: "14px"
}, ownerState.touch && {
marginLeft: "24px"
}) : _extends({
marginRight: "14px"
}, ownerState.touch && {
marginRight: "24px"
})),
[`.${tooltipClasses_default.popper}[data-popper-placement*="top"] &`]: _extends({
transformOrigin: "center bottom",
marginBottom: "14px"
}, ownerState.touch && {
marginBottom: "24px"
}),
[`.${tooltipClasses_default.popper}[data-popper-placement*="bottom"] &`]: _extends({
transformOrigin: "center top",
marginTop: "14px"
}, ownerState.touch && {
marginTop: "24px"
})
}));
var TooltipArrow = styled_default("span", {
name: "MuiTooltip",
slot: "Arrow",
overridesResolver: (props, styles4) => styles4.arrow
})(({
theme
}) => ({
overflow: "hidden",
position: "absolute",
width: "1em",
height: "0.71em",
boxSizing: "border-box",
color: theme.vars ? theme.vars.palette.Tooltip.bg : (0, import_colorManipulator5.alpha)(theme.palette.grey[700], 0.9),
"&::before": {
content: '""',
margin: "auto",
display: "block",
width: "100%",
height: "100%",
backgroundColor: "currentColor",
transform: "rotate(45deg)"
}
}));
var hystersisOpen = false;
var hystersisTimer = new Timeout();
var cursorPosition = {
x: 0,
y: 0
};
function composeEventHandler(handler, eventHandler) {
return (event, ...params) => {
if (eventHandler) {
eventHandler(event, ...params);
}
handler(event, ...params);
};
}
var Tooltip = React114.forwardRef(function Tooltip2(inProps, ref) {
var _ref, _slots$popper, _ref2, _ref3, _slots$transition, _ref4, _slots$tooltip, _ref5, _slots$arrow, _slotProps$popper, _ref6, _slotProps$popper2, _slotProps$transition, _slotProps$tooltip, _ref7, _slotProps$tooltip2, _slotProps$arrow, _ref8, _slotProps$arrow2;
const props = useThemeProps({
props: inProps,
name: "MuiTooltip"
});
const {
arrow: arrow4 = false,
children: childrenProp,
components = {},
componentsProps = {},
describeChild = false,
disableFocusListener = false,
disableHoverListener = false,
disableInteractive: disableInteractiveProp = false,
disableTouchListener = false,
enterDelay = 100,
enterNextDelay = 0,
enterTouchDelay = 700,
followCursor = false,
id: idProp,
leaveDelay = 0,
leaveTouchDelay = 1500,
onClose,
onOpen,
open: openProp,
placement = "bottom",
PopperComponent: PopperComponentProp,
PopperProps = {},
slotProps = {},
slots = {},
title,
TransitionComponent: TransitionComponentProp = Grow_default,
TransitionProps
} = props, other = _objectWithoutPropertiesLoose(props, _excluded60);
const children = React114.isValidElement(childrenProp) ? childrenProp : (0, import_jsx_runtime99.jsx)("span", {
children: childrenProp
});
const theme = useTheme();
const isRtl = useRtl();
const [childNode, setChildNode] = React114.useState();
const [arrowRef, setArrowRef] = React114.useState(null);
const ignoreNonTouchEvents = React114.useRef(false);
const disableInteractive = disableInteractiveProp || followCursor;
const closeTimer = useTimeout();
const enterTimer = useTimeout();
const leaveTimer = useTimeout();
const touchTimer = useTimeout();
const [openState, setOpenState] = useControlled_default({
controlled: openProp,
default: false,
name: "Tooltip",
state: "open"
});
let open = openState;
if (true) {
const {
current: isControlled
} = React114.useRef(openProp !== void 0);
React114.useEffect(() => {
if (childNode && childNode.disabled && !isControlled && title !== "" && childNode.tagName.toLowerCase() === "button") {
console.error(["MUI: You are providing a disabled `button` child to the Tooltip component.", "A disabled element does not fire events.", "Tooltip needs to listen to the child element's events to display the title.", "", "Add a simple wrapper element, such as a `span`."].join("\n"));
}
}, [title, childNode, isControlled]);
}
const id = useId_default(idProp);
const prevUserSelect = React114.useRef();
const stopTouchInteraction = useEventCallback_default2(() => {
if (prevUserSelect.current !== void 0) {
document.body.style.WebkitUserSelect = prevUserSelect.current;
prevUserSelect.current = void 0;
}
touchTimer.clear();
});
React114.useEffect(() => stopTouchInteraction, [stopTouchInteraction]);
const handleOpen = (event) => {
hystersisTimer.clear();
hystersisOpen = true;
setOpenState(true);
if (onOpen && !open) {
onOpen(event);
}
};
const handleClose = useEventCallback_default2(
/**
* @param {React.SyntheticEvent | Event} event
*/
(event) => {
hystersisTimer.start(800 + leaveDelay, () => {
hystersisOpen = false;
});
setOpenState(false);
if (onClose && open) {
onClose(event);
}
closeTimer.start(theme.transitions.duration.shortest, () => {
ignoreNonTouchEvents.current = false;
});
}
);
const handleMouseOver = (event) => {
if (ignoreNonTouchEvents.current && event.type !== "touchstart") {
return;
}
if (childNode) {
childNode.removeAttribute("title");
}
enterTimer.clear();
leaveTimer.clear();
if (enterDelay || hystersisOpen && enterNextDelay) {
enterTimer.start(hystersisOpen ? enterNextDelay : enterDelay, () => {
handleOpen(event);
});
} else {
handleOpen(event);
}
};
const handleMouseLeave = (event) => {
enterTimer.clear();
leaveTimer.start(leaveDelay, () => {
handleClose(event);
});
};
const {
isFocusVisibleRef,
onBlur: handleBlurVisible,
onFocus: handleFocusVisible,
ref: focusVisibleRef
} = useIsFocusVisible_default();
const [, setChildIsFocusVisible] = React114.useState(false);
const handleBlur2 = (event) => {
handleBlurVisible(event);
if (isFocusVisibleRef.current === false) {
setChildIsFocusVisible(false);
handleMouseLeave(event);
}
};
const handleFocus = (event) => {
if (!childNode) {
setChildNode(event.currentTarget);
}
handleFocusVisible(event);
if (isFocusVisibleRef.current === true) {
setChildIsFocusVisible(true);
handleMouseOver(event);
}
};
const detectTouchStart = (event) => {
ignoreNonTouchEvents.current = true;
const childrenProps2 = children.props;
if (childrenProps2.onTouchStart) {
childrenProps2.onTouchStart(event);
}
};
const handleTouchStart = (event) => {
detectTouchStart(event);
leaveTimer.clear();
closeTimer.clear();
stopTouchInteraction();
prevUserSelect.current = document.body.style.WebkitUserSelect;
document.body.style.WebkitUserSelect = "none";
touchTimer.start(enterTouchDelay, () => {
document.body.style.WebkitUserSelect = prevUserSelect.current;
handleMouseOver(event);
});
};
const handleTouchEnd = (event) => {
if (children.props.onTouchEnd) {
children.props.onTouchEnd(event);
}
stopTouchInteraction();
leaveTimer.start(leaveTouchDelay, () => {
handleClose(event);
});
};
React114.useEffect(() => {
if (!open) {
return void 0;
}
function handleKeyDown2(nativeEvent) {
if (nativeEvent.key === "Escape" || nativeEvent.key === "Esc") {
handleClose(nativeEvent);
}
}
document.addEventListener("keydown", handleKeyDown2);
return () => {
document.removeEventListener("keydown", handleKeyDown2);
};
}, [handleClose, open]);
const handleRef = useForkRef_default(children.ref, focusVisibleRef, setChildNode, ref);
if (!title && title !== 0) {
open = false;
}
const popperRef = React114.useRef();
const handleMouseMove = (event) => {
const childrenProps2 = children.props;
if (childrenProps2.onMouseMove) {
childrenProps2.onMouseMove(event);
}
cursorPosition = {
x: event.clientX,
y: event.clientY
};
if (popperRef.current) {
popperRef.current.update();
}
};
const nameOrDescProps = {};
const titleIsString = typeof title === "string";
if (describeChild) {
nameOrDescProps.title = !open && titleIsString && !disableHoverListener ? title : null;
nameOrDescProps["aria-describedby"] = open ? id : null;
} else {
nameOrDescProps["aria-label"] = titleIsString ? title : null;
nameOrDescProps["aria-labelledby"] = open && !titleIsString ? id : null;
}
const childrenProps = _extends({}, nameOrDescProps, other, children.props, {
className: clsx_default(other.className, children.props.className),
onTouchStart: detectTouchStart,
ref: handleRef
}, followCursor ? {
onMouseMove: handleMouseMove
} : {});
if (true) {
childrenProps["data-mui-internal-clone-element"] = true;
React114.useEffect(() => {
if (childNode && !childNode.getAttribute("data-mui-internal-clone-element")) {
console.error(["MUI: The `children` component of the Tooltip is not forwarding its props correctly.", "Please make sure that props are spread on the same element that the ref is applied to."].join("\n"));
}
}, [childNode]);
}
const interactiveWrapperListeners = {};
if (!disableTouchListener) {
childrenProps.onTouchStart = handleTouchStart;
childrenProps.onTouchEnd = handleTouchEnd;
}
if (!disableHoverListener) {
childrenProps.onMouseOver = composeEventHandler(handleMouseOver, childrenProps.onMouseOver);
childrenProps.onMouseLeave = composeEventHandler(handleMouseLeave, childrenProps.onMouseLeave);
if (!disableInteractive) {
interactiveWrapperListeners.onMouseOver = handleMouseOver;
interactiveWrapperListeners.onMouseLeave = handleMouseLeave;
}
}
if (!disableFocusListener) {
childrenProps.onFocus = composeEventHandler(handleFocus, childrenProps.onFocus);
childrenProps.onBlur = composeEventHandler(handleBlur2, childrenProps.onBlur);
if (!disableInteractive) {
interactiveWrapperListeners.onFocus = handleFocus;
interactiveWrapperListeners.onBlur = handleBlur2;
}
}
if (true) {
if (children.props.title) {
console.error(["MUI: You have provided a `title` prop to the child of <Tooltip />.", `Remove this title prop \`${children.props.title}\` or the Tooltip component.`].join("\n"));
}
}
const popperOptions = React114.useMemo(() => {
var _PopperProps$popperOp;
let tooltipModifiers = [{
name: "arrow",
enabled: Boolean(arrowRef),
options: {
element: arrowRef,
padding: 4
}
}];
if ((_PopperProps$popperOp = PopperProps.popperOptions) != null && _PopperProps$popperOp.modifiers) {
tooltipModifiers = tooltipModifiers.concat(PopperProps.popperOptions.modifiers);
}
return _extends({}, PopperProps.popperOptions, {
modifiers: tooltipModifiers
});
}, [arrowRef, PopperProps]);
const ownerState = _extends({}, props, {
isRtl,
arrow: arrow4,
disableInteractive,
placement,
PopperComponentProp,
touch: ignoreNonTouchEvents.current
});
const classes = useUtilityClasses50(ownerState);
const PopperComponent = (_ref = (_slots$popper = slots.popper) != null ? _slots$popper : components.Popper) != null ? _ref : TooltipPopper;
const TransitionComponent = (_ref2 = (_ref3 = (_slots$transition = slots.transition) != null ? _slots$transition : components.Transition) != null ? _ref3 : TransitionComponentProp) != null ? _ref2 : Grow_default;
const TooltipComponent = (_ref4 = (_slots$tooltip = slots.tooltip) != null ? _slots$tooltip : components.Tooltip) != null ? _ref4 : TooltipTooltip;
const ArrowComponent = (_ref5 = (_slots$arrow = slots.arrow) != null ? _slots$arrow : components.Arrow) != null ? _ref5 : TooltipArrow;
const popperProps = appendOwnerState(PopperComponent, _extends({}, PopperProps, (_slotProps$popper = slotProps.popper) != null ? _slotProps$popper : componentsProps.popper, {
className: clsx_default(classes.popper, PopperProps == null ? void 0 : PopperProps.className, (_ref6 = (_slotProps$popper2 = slotProps.popper) != null ? _slotProps$popper2 : componentsProps.popper) == null ? void 0 : _ref6.className)
}), ownerState);
const transitionProps = appendOwnerState(TransitionComponent, _extends({}, TransitionProps, (_slotProps$transition = slotProps.transition) != null ? _slotProps$transition : componentsProps.transition), ownerState);
const tooltipProps = appendOwnerState(TooltipComponent, _extends({}, (_slotProps$tooltip = slotProps.tooltip) != null ? _slotProps$tooltip : componentsProps.tooltip, {
className: clsx_default(classes.tooltip, (_ref7 = (_slotProps$tooltip2 = slotProps.tooltip) != null ? _slotProps$tooltip2 : componentsProps.tooltip) == null ? void 0 : _ref7.className)
}), ownerState);
const tooltipArrowProps = appendOwnerState(ArrowComponent, _extends({}, (_slotProps$arrow = slotProps.arrow) != null ? _slotProps$arrow : componentsProps.arrow, {
className: clsx_default(classes.arrow, (_ref8 = (_slotProps$arrow2 = slotProps.arrow) != null ? _slotProps$arrow2 : componentsProps.arrow) == null ? void 0 : _ref8.className)
}), ownerState);
return (0, import_jsx_runtime100.jsxs)(React114.Fragment, {
children: [React114.cloneElement(children, childrenProps), (0, import_jsx_runtime99.jsx)(PopperComponent, _extends({
as: PopperComponentProp != null ? PopperComponentProp : Popper_default,
placement,
anchorEl: followCursor ? {
getBoundingClientRect: () => ({
top: cursorPosition.y,
left: cursorPosition.x,
right: cursorPosition.x,
bottom: cursorPosition.y,
width: 0,
height: 0
})
} : childNode,
popperRef,
open: childNode ? open : false,
id,
transition: true
}, interactiveWrapperListeners, popperProps, {
popperOptions,
children: ({
TransitionProps: TransitionPropsInner
}) => (0, import_jsx_runtime99.jsx)(TransitionComponent, _extends({
timeout: theme.transitions.duration.shorter
}, TransitionPropsInner, transitionProps, {
children: (0, import_jsx_runtime100.jsxs)(TooltipComponent, _extends({}, tooltipProps, {
children: [title, arrow4 ? (0, import_jsx_runtime99.jsx)(ArrowComponent, _extends({}, tooltipArrowProps, {
ref: setArrowRef
})) : null]
}))
}))
}))]
});
});
true ? Tooltip.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* If `true`, adds an arrow to the tooltip.
* @default false
*/
arrow: import_prop_types64.default.bool,
/**
* Tooltip reference element.
*/
children: elementAcceptingRef_default.isRequired,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types64.default.object,
/**
* @ignore
*/
className: import_prop_types64.default.string,
/**
* The components used for each slot inside.
*
* This prop is an alias for the `slots` prop.
* It's recommended to use the `slots` prop instead.
*
* @default {}
*/
components: import_prop_types64.default.shape({
Arrow: import_prop_types64.default.elementType,
Popper: import_prop_types64.default.elementType,
Tooltip: import_prop_types64.default.elementType,
Transition: import_prop_types64.default.elementType
}),
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* This prop is an alias for the `slotProps` prop.
* It's recommended to use the `slotProps` prop instead, as `componentsProps` will be deprecated in the future.
*
* @default {}
*/
componentsProps: import_prop_types64.default.shape({
arrow: import_prop_types64.default.object,
popper: import_prop_types64.default.object,
tooltip: import_prop_types64.default.object,
transition: import_prop_types64.default.object
}),
/**
* Set to `true` if the `title` acts as an accessible description.
* By default the `title` acts as an accessible label for the child.
* @default false
*/
describeChild: import_prop_types64.default.bool,
/**
* Do not respond to focus-visible events.
* @default false
*/
disableFocusListener: import_prop_types64.default.bool,
/**
* Do not respond to hover events.
* @default false
*/
disableHoverListener: import_prop_types64.default.bool,
/**
* Makes a tooltip not interactive, i.e. it will close when the user
* hovers over the tooltip before the `leaveDelay` is expired.
* @default false
*/
disableInteractive: import_prop_types64.default.bool,
/**
* Do not respond to long press touch events.
* @default false
*/
disableTouchListener: import_prop_types64.default.bool,
/**
* The number of milliseconds to wait before showing the tooltip.
* This prop won't impact the enter touch delay (`enterTouchDelay`).
* @default 100
*/
enterDelay: import_prop_types64.default.number,
/**
* The number of milliseconds to wait before showing the tooltip when one was already recently opened.
* @default 0
*/
enterNextDelay: import_prop_types64.default.number,
/**
* The number of milliseconds a user must touch the element before showing the tooltip.
* @default 700
*/
enterTouchDelay: import_prop_types64.default.number,
/**
* If `true`, the tooltip follow the cursor over the wrapped element.
* @default false
*/
followCursor: import_prop_types64.default.bool,
/**
* This prop is used to help implement the accessibility logic.
* If you don't provide this prop. It falls back to a randomly generated id.
*/
id: import_prop_types64.default.string,
/**
* The number of milliseconds to wait before hiding the tooltip.
* This prop won't impact the leave touch delay (`leaveTouchDelay`).
* @default 0
*/
leaveDelay: import_prop_types64.default.number,
/**
* The number of milliseconds after the user stops touching an element before hiding the tooltip.
* @default 1500
*/
leaveTouchDelay: import_prop_types64.default.number,
/**
* Callback fired when the component requests to be closed.
*
* @param {React.SyntheticEvent} event The event source of the callback.
*/
onClose: import_prop_types64.default.func,
/**
* Callback fired when the component requests to be open.
*
* @param {React.SyntheticEvent} event The event source of the callback.
*/
onOpen: import_prop_types64.default.func,
/**
* If `true`, the component is shown.
*/
open: import_prop_types64.default.bool,
/**
* Tooltip placement.
* @default 'bottom'
*/
placement: import_prop_types64.default.oneOf(["bottom-end", "bottom-start", "bottom", "left-end", "left-start", "left", "right-end", "right-start", "right", "top-end", "top-start", "top"]),
/**
* The component used for the popper.
* @default Popper
*/
PopperComponent: import_prop_types64.default.elementType,
/**
* Props applied to the [`Popper`](/material-ui/api/popper/) element.
* @default {}
*/
PopperProps: import_prop_types64.default.object,
/**
* The extra props for the slot components.
* You can override the existing props or add new ones.
*
* This prop is an alias for the `componentsProps` prop, which will be deprecated in the future.
*
* @default {}
*/
slotProps: import_prop_types64.default.shape({
arrow: import_prop_types64.default.object,
popper: import_prop_types64.default.object,
tooltip: import_prop_types64.default.object,
transition: import_prop_types64.default.object
}),
/**
* The components used for each slot inside.
*
* This prop is an alias for the `components` prop, which will be deprecated in the future.
*
* @default {}
*/
slots: import_prop_types64.default.shape({
arrow: import_prop_types64.default.elementType,
popper: import_prop_types64.default.elementType,
tooltip: import_prop_types64.default.elementType,
transition: import_prop_types64.default.elementType
}),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types64.default.oneOfType([import_prop_types64.default.arrayOf(import_prop_types64.default.oneOfType([import_prop_types64.default.func, import_prop_types64.default.object, import_prop_types64.default.bool])), import_prop_types64.default.func, import_prop_types64.default.object]),
/**
* Tooltip title. Zero-length titles string, undefined, null and false are never displayed.
*/
title: import_prop_types64.default.node,
/**
* The component used for the transition.
* [Follow this guide](/material-ui/transitions/#transitioncomponent-prop) to learn more about the requirements for this component.
* @default Grow
*/
TransitionComponent: import_prop_types64.default.elementType,
/**
* Props applied to the transition element.
* By default, the element is based on this [`Transition`](https://reactcommunity.org/react-transition-group/transition/) component.
*/
TransitionProps: import_prop_types64.default.object
} : void 0;
var Tooltip_default = Tooltip;
// node_modules/@mui/material/Switch/switchClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getSwitchUtilityClass2(slot) {
return generateUtilityClass("MuiSwitch", slot);
}
var switchClasses2 = generateUtilityClasses("MuiSwitch", ["root", "edgeStart", "edgeEnd", "switchBase", "colorPrimary", "colorSecondary", "sizeSmall", "sizeMedium", "checked", "disabled", "input", "thumb", "track"]);
var switchClasses_default = switchClasses2;
// node_modules/@mui/material/Switch/Switch.js
init_objectWithoutPropertiesLoose();
init_extends();
var React115 = __toESM(require_react());
var import_prop_types65 = __toESM(require_prop_types());
init_clsx();
init_refType();
init_composeClasses();
var import_colorManipulator6 = __toESM(require_colorManipulator());
init_capitalize();
var import_jsx_runtime101 = __toESM(require_jsx_runtime());
var import_jsx_runtime102 = __toESM(require_jsx_runtime());
var _excluded61 = ["className", "color", "edge", "size", "sx"];
var useThemeProps3 = createUseThemeProps("MuiSwitch");
var useUtilityClasses51 = (ownerState) => {
const {
classes,
edge,
size: size3,
color,
checked,
disabled
} = ownerState;
const slots = {
root: ["root", edge && `edge${capitalize_default(edge)}`, `size${capitalize_default(size3)}`],
switchBase: ["switchBase", `color${capitalize_default(color)}`, checked && "checked", disabled && "disabled"],
thumb: ["thumb"],
track: ["track"],
input: ["input"]
};
const composedClasses = composeClasses(slots, getSwitchUtilityClass2, classes);
return _extends({}, classes, composedClasses);
};
var SwitchRoot = styled_default("span", {
name: "MuiSwitch",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.root, ownerState.edge && styles4[`edge${capitalize_default(ownerState.edge)}`], styles4[`size${capitalize_default(ownerState.size)}`]];
}
})({
display: "inline-flex",
width: 34 + 12 * 2,
height: 14 + 12 * 2,
overflow: "hidden",
padding: 12,
boxSizing: "border-box",
position: "relative",
flexShrink: 0,
zIndex: 0,
// Reset the stacking context.
verticalAlign: "middle",
// For correct alignment with the text.
"@media print": {
colorAdjust: "exact"
},
variants: [{
props: {
edge: "start"
},
style: {
marginLeft: -8
}
}, {
props: {
edge: "end"
},
style: {
marginRight: -8
}
}, {
props: {
size: "small"
},
style: {
width: 40,
height: 24,
padding: 7,
[`& .${switchClasses_default.thumb}`]: {
width: 16,
height: 16
},
[`& .${switchClasses_default.switchBase}`]: {
padding: 4,
[`&.${switchClasses_default.checked}`]: {
transform: "translateX(16px)"
}
}
}
}]
});
var SwitchSwitchBase = styled_default(SwitchBase_default, {
name: "MuiSwitch",
slot: "SwitchBase",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.switchBase, {
[`& .${switchClasses_default.input}`]: styles4.input
}, ownerState.color !== "default" && styles4[`color${capitalize_default(ownerState.color)}`]];
}
})(({
theme
}) => ({
position: "absolute",
top: 0,
left: 0,
zIndex: 1,
// Render above the focus ripple.
color: theme.vars ? theme.vars.palette.Switch.defaultColor : `${theme.palette.mode === "light" ? theme.palette.common.white : theme.palette.grey[300]}`,
transition: theme.transitions.create(["left", "transform"], {
duration: theme.transitions.duration.shortest
}),
[`&.${switchClasses_default.checked}`]: {
transform: "translateX(20px)"
},
[`&.${switchClasses_default.disabled}`]: {
color: theme.vars ? theme.vars.palette.Switch.defaultDisabledColor : `${theme.palette.mode === "light" ? theme.palette.grey[100] : theme.palette.grey[600]}`
},
[`&.${switchClasses_default.checked} + .${switchClasses_default.track}`]: {
opacity: 0.5
},
[`&.${switchClasses_default.disabled} + .${switchClasses_default.track}`]: {
opacity: theme.vars ? theme.vars.opacity.switchTrackDisabled : `${theme.palette.mode === "light" ? 0.12 : 0.2}`
},
[`& .${switchClasses_default.input}`]: {
left: "-100%",
width: "300%"
}
}), ({
theme
}) => ({
"&:hover": {
backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0, import_colorManipulator6.alpha)(theme.palette.action.active, theme.palette.action.hoverOpacity),
// Reset on touch devices, it doesn't add specificity
"@media (hover: none)": {
backgroundColor: "transparent"
}
},
variants: [...Object.entries(theme.palette).filter(([, value]) => value.main && value.light).map(([color]) => ({
props: {
color
},
style: {
[`&.${switchClasses_default.checked}`]: {
color: (theme.vars || theme).palette[color].main,
"&:hover": {
backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : (0, import_colorManipulator6.alpha)(theme.palette[color].main, theme.palette.action.hoverOpacity),
"@media (hover: none)": {
backgroundColor: "transparent"
}
},
[`&.${switchClasses_default.disabled}`]: {
color: theme.vars ? theme.vars.palette.Switch[`${color}DisabledColor`] : `${theme.palette.mode === "light" ? (0, import_colorManipulator6.lighten)(theme.palette[color].main, 0.62) : (0, import_colorManipulator6.darken)(theme.palette[color].main, 0.55)}`
}
},
[`&.${switchClasses_default.checked} + .${switchClasses_default.track}`]: {
backgroundColor: (theme.vars || theme).palette[color].main
}
}
}))]
}));
var SwitchTrack = styled_default("span", {
name: "MuiSwitch",
slot: "Track",
overridesResolver: (props, styles4) => styles4.track
})(({
theme
}) => ({
height: "100%",
width: "100%",
borderRadius: 14 / 2,
zIndex: -1,
transition: theme.transitions.create(["opacity", "background-color"], {
duration: theme.transitions.duration.shortest
}),
backgroundColor: theme.vars ? theme.vars.palette.common.onBackground : `${theme.palette.mode === "light" ? theme.palette.common.black : theme.palette.common.white}`,
opacity: theme.vars ? theme.vars.opacity.switchTrack : `${theme.palette.mode === "light" ? 0.38 : 0.3}`
}));
var SwitchThumb = styled_default("span", {
name: "MuiSwitch",
slot: "Thumb",
overridesResolver: (props, styles4) => styles4.thumb
})(({
theme
}) => ({
boxShadow: (theme.vars || theme).shadows[1],
backgroundColor: "currentColor",
width: 20,
height: 20,
borderRadius: "50%"
}));
var Switch3 = React115.forwardRef(function Switch4(inProps, ref) {
const props = useThemeProps3({
props: inProps,
name: "MuiSwitch"
});
const {
className,
color = "primary",
edge = false,
size: size3 = "medium",
sx
} = props, other = _objectWithoutPropertiesLoose(props, _excluded61);
const ownerState = _extends({}, props, {
color,
edge,
size: size3
});
const classes = useUtilityClasses51(ownerState);
const icon = (0, import_jsx_runtime101.jsx)(SwitchThumb, {
className: classes.thumb,
ownerState
});
return (0, import_jsx_runtime102.jsxs)(SwitchRoot, {
className: clsx_default(classes.root, className),
sx,
ownerState,
children: [(0, import_jsx_runtime101.jsx)(SwitchSwitchBase, _extends({
type: "checkbox",
icon,
checkedIcon: icon,
ref,
ownerState
}, other, {
classes: _extends({}, classes, {
root: classes.switchBase
})
})), (0, import_jsx_runtime101.jsx)(SwitchTrack, {
className: classes.track,
ownerState
})]
});
});
true ? Switch3.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* If `true`, the component is checked.
*/
checked: import_prop_types65.default.bool,
/**
* The icon to display when the component is checked.
*/
checkedIcon: import_prop_types65.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types65.default.object,
/**
* @ignore
*/
className: import_prop_types65.default.string,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
* @default 'primary'
*/
color: import_prop_types65.default.oneOfType([import_prop_types65.default.oneOf(["default", "primary", "secondary", "error", "info", "success", "warning"]), import_prop_types65.default.string]),
/**
* The default checked state. Use when the component is not controlled.
*/
defaultChecked: import_prop_types65.default.bool,
/**
* If `true`, the component is disabled.
*/
disabled: import_prop_types65.default.bool,
/**
* If `true`, the ripple effect is disabled.
* @default false
*/
disableRipple: import_prop_types65.default.bool,
/**
* If given, uses a negative margin to counteract the padding on one
* side (this is often helpful for aligning the left or right
* side of the icon with content above or below, without ruining the border
* size and shape).
* @default false
*/
edge: import_prop_types65.default.oneOf(["end", "start", false]),
/**
* The icon to display when the component is unchecked.
*/
icon: import_prop_types65.default.node,
/**
* The id of the `input` element.
*/
id: import_prop_types65.default.string,
/**
* [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.
*/
inputProps: import_prop_types65.default.object,
/**
* Pass a ref to the `input` element.
*/
inputRef: refType_default,
/**
* Callback fired when the state is changed.
*
* @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.
* You can pull out the new value by accessing `event.target.value` (string).
* You can pull out the new checked state by accessing `event.target.checked` (boolean).
*/
onChange: import_prop_types65.default.func,
/**
* If `true`, the `input` element is required.
* @default false
*/
required: import_prop_types65.default.bool,
/**
* The size of the component.
* `small` is equivalent to the dense switch styling.
* @default 'medium'
*/
size: import_prop_types65.default.oneOfType([import_prop_types65.default.oneOf(["medium", "small"]), import_prop_types65.default.string]),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types65.default.oneOfType([import_prop_types65.default.arrayOf(import_prop_types65.default.oneOfType([import_prop_types65.default.func, import_prop_types65.default.object, import_prop_types65.default.bool])), import_prop_types65.default.func, import_prop_types65.default.object]),
/**
* The value of the component. The DOM API casts this to a string.
* The browser uses "on" as the default value.
*/
value: import_prop_types65.default.any
} : void 0;
var Switch_default = Switch3;
// node_modules/@mui/material/TableCell/tableCellClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getTableCellUtilityClass(slot) {
return generateUtilityClass("MuiTableCell", slot);
}
var tableCellClasses = generateUtilityClasses("MuiTableCell", ["root", "head", "body", "footer", "sizeSmall", "sizeMedium", "paddingCheckbox", "paddingNone", "alignLeft", "alignCenter", "alignRight", "alignJustify", "stickyHeader"]);
var tableCellClasses_default = tableCellClasses;
// node_modules/@mui/material/TableCell/TableCell.js
init_objectWithoutPropertiesLoose();
init_extends();
var React118 = __toESM(require_react());
var import_prop_types66 = __toESM(require_prop_types());
init_clsx();
init_composeClasses();
var import_colorManipulator7 = __toESM(require_colorManipulator());
init_capitalize();
// node_modules/@mui/material/Table/TableContext.js
var React116 = __toESM(require_react());
var TableContext = React116.createContext();
if (true) {
TableContext.displayName = "TableContext";
}
var TableContext_default = TableContext;
// node_modules/@mui/material/Table/Tablelvl2Context.js
var React117 = __toESM(require_react());
var Tablelvl2Context = React117.createContext();
if (true) {
Tablelvl2Context.displayName = "Tablelvl2Context";
}
var Tablelvl2Context_default = Tablelvl2Context;
// node_modules/@mui/material/TableCell/TableCell.js
init_useThemeProps();
init_styled();
var import_jsx_runtime103 = __toESM(require_jsx_runtime());
var _excluded62 = ["align", "className", "component", "padding", "scope", "size", "sortDirection", "variant"];
var useUtilityClasses52 = (ownerState) => {
const {
classes,
variant,
align,
padding,
size: size3,
stickyHeader
} = ownerState;
const slots = {
root: ["root", variant, stickyHeader && "stickyHeader", align !== "inherit" && `align${capitalize_default(align)}`, padding !== "normal" && `padding${capitalize_default(padding)}`, `size${capitalize_default(size3)}`]
};
return composeClasses(slots, getTableCellUtilityClass, classes);
};
var TableCellRoot = styled_default("td", {
name: "MuiTableCell",
slot: "Root",
overridesResolver: (props, styles4) => {
const {
ownerState
} = props;
return [styles4.root, styles4[ownerState.variant], styles4[`size${capitalize_default(ownerState.size)}`], ownerState.padding !== "normal" && styles4[`padding${capitalize_default(ownerState.padding)}`], ownerState.align !== "inherit" && styles4[`align${capitalize_default(ownerState.align)}`], ownerState.stickyHeader && styles4.stickyHeader];
}
})(({
theme,
ownerState
}) => _extends({}, theme.typography.body2, {
display: "table-cell",
verticalAlign: "inherit",
// Workaround for a rendering bug with spanned columns in Chrome 62.0.
// Removes the alpha (sets it to 1), and lightens or darkens the theme color.
borderBottom: theme.vars ? `1px solid ${theme.vars.palette.TableCell.border}` : `1px solid
${theme.palette.mode === "light" ? (0, import_colorManipulator7.lighten)((0, import_colorManipulator7.alpha)(theme.palette.divider, 1), 0.88) : (0, import_colorManipulator7.darken)((0, import_colorManipulator7.alpha)(theme.palette.divider, 1), 0.68)}`,
textAlign: "left",
padding: 16
}, ownerState.variant === "head" && {
color: (theme.vars || theme).palette.text.primary,
lineHeight: theme.typography.pxToRem(24),
fontWeight: theme.typography.fontWeightMedium
}, ownerState.variant === "body" && {
color: (theme.vars || theme).palette.text.primary
}, ownerState.variant === "footer" && {
color: (theme.vars || theme).palette.text.secondary,
lineHeight: theme.typography.pxToRem(21),
fontSize: theme.typography.pxToRem(12)
}, ownerState.size === "small" && {
padding: "6px 16px",
[`&.${tableCellClasses_default.paddingCheckbox}`]: {
width: 24,
// prevent the checkbox column from growing
padding: "0 12px 0 16px",
"& > *": {
padding: 0
}
}
}, ownerState.padding === "checkbox" && {
width: 48,
// prevent the checkbox column from growing
padding: "0 0 0 4px"
}, ownerState.padding === "none" && {
padding: 0
}, ownerState.align === "left" && {
textAlign: "left"
}, ownerState.align === "center" && {
textAlign: "center"
}, ownerState.align === "right" && {
textAlign: "right",
flexDirection: "row-reverse"
}, ownerState.align === "justify" && {
textAlign: "justify"
}, ownerState.stickyHeader && {
position: "sticky",
top: 0,
zIndex: 2,
backgroundColor: (theme.vars || theme).palette.background.default
}));
var TableCell = React118.forwardRef(function TableCell2(inProps, ref) {
const props = useThemeProps({
props: inProps,
name: "MuiTableCell"
});
const {
align = "inherit",
className,
component: componentProp,
padding: paddingProp,
scope: scopeProp,
size: sizeProp,
sortDirection,
variant: variantProp
} = props, other = _objectWithoutPropertiesLoose(props, _excluded62);
const table = React118.useContext(TableContext_default);
const tablelvl2 = React118.useContext(Tablelvl2Context_default);
const isHeadCell = tablelvl2 && tablelvl2.variant === "head";
let component;
if (componentProp) {
component = componentProp;
} else {
component = isHeadCell ? "th" : "td";
}
let scope = scopeProp;
if (component === "td") {
scope = void 0;
} else if (!scope && isHeadCell) {
scope = "col";
}
const variant = variantProp || tablelvl2 && tablelvl2.variant;
const ownerState = _extends({}, props, {
align,
component,
padding: paddingProp || (table && table.padding ? table.padding : "normal"),
size: sizeProp || (table && table.size ? table.size : "medium"),
sortDirection,
stickyHeader: variant === "head" && table && table.stickyHeader,
variant
});
const classes = useUtilityClasses52(ownerState);
let ariaSort = null;
if (sortDirection) {
ariaSort = sortDirection === "asc" ? "ascending" : "descending";
}
return (0, import_jsx_runtime103.jsx)(TableCellRoot, _extends({
as: component,
ref,
className: clsx_default(classes.root, className),
"aria-sort": ariaSort,
scope,
ownerState
}, other));
});
true ? TableCell.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* Set the text-align on the table cell content.
*
* Monetary or generally number fields **should be right aligned** as that allows
* you to add them up quickly in your head without having to worry about decimals.
* @default 'inherit'
*/
align: import_prop_types66.default.oneOf(["center", "inherit", "justify", "left", "right"]),
/**
* The content of the component.
*/
children: import_prop_types66.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types66.default.object,
/**
* @ignore
*/
className: import_prop_types66.default.string,
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types66.default.elementType,
/**
* Sets the padding applied to the cell.
* The prop defaults to the value (`'default'`) inherited from the parent Table component.
*/
padding: import_prop_types66.default.oneOf(["checkbox", "none", "normal"]),
/**
* Set scope attribute.
*/
scope: import_prop_types66.default.string,
/**
* Specify the size of the cell.
* The prop defaults to the value (`'medium'`) inherited from the parent Table component.
*/
size: import_prop_types66.default.oneOfType([import_prop_types66.default.oneOf(["medium", "small"]), import_prop_types66.default.string]),
/**
* Set aria-sort direction.
*/
sortDirection: import_prop_types66.default.oneOf(["asc", "desc", false]),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types66.default.oneOfType([import_prop_types66.default.arrayOf(import_prop_types66.default.oneOfType([import_prop_types66.default.func, import_prop_types66.default.object, import_prop_types66.default.bool])), import_prop_types66.default.func, import_prop_types66.default.object]),
/**
* Specify the cell type.
* The prop defaults to the value inherited from the parent TableHead, TableBody, or TableFooter components.
*/
variant: import_prop_types66.default.oneOfType([import_prop_types66.default.oneOf(["body", "footer", "head"]), import_prop_types66.default.string])
} : void 0;
var TableCell_default = TableCell;
// node_modules/@mui/material/TablePagination/tablePaginationClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getTablePaginationUtilityClass2(slot) {
return generateUtilityClass("MuiTablePagination", slot);
}
var tablePaginationClasses2 = generateUtilityClasses("MuiTablePagination", ["root", "toolbar", "spacer", "selectLabel", "selectRoot", "select", "selectIcon", "input", "menuItem", "displayedRows", "actions"]);
var tablePaginationClasses_default = tablePaginationClasses2;
// node_modules/@mui/material/TablePagination/TablePagination.js
init_objectWithoutPropertiesLoose();
init_extends();
var React124 = __toESM(require_react());
var import_prop_types68 = __toESM(require_prop_types());
init_clsx();
init_integerPropType();
init_chainPropTypes();
init_composeClasses();
init_styled();
init_useThemeProps();
// node_modules/@mui/material/TablePagination/TablePaginationActions.js
init_extends();
init_objectWithoutPropertiesLoose();
var React123 = __toESM(require_react());
var import_prop_types67 = __toESM(require_prop_types());
// node_modules/@mui/material/internal/svg-icons/KeyboardArrowLeft.js
var React119 = __toESM(require_react());
init_createSvgIcon();
var import_jsx_runtime104 = __toESM(require_jsx_runtime());
var KeyboardArrowLeft_default = createSvgIcon((0, import_jsx_runtime104.jsx)("path", {
d: "M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"
}), "KeyboardArrowLeft");
// node_modules/@mui/material/internal/svg-icons/KeyboardArrowRight.js
var React120 = __toESM(require_react());
init_createSvgIcon();
var import_jsx_runtime105 = __toESM(require_jsx_runtime());
var KeyboardArrowRight_default = createSvgIcon((0, import_jsx_runtime105.jsx)("path", {
d: "M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"
}), "KeyboardArrowRight");
// node_modules/@mui/material/internal/svg-icons/LastPage.js
var React121 = __toESM(require_react());
init_createSvgIcon();
var import_jsx_runtime106 = __toESM(require_jsx_runtime());
var LastPage_default = createSvgIcon((0, import_jsx_runtime106.jsx)("path", {
d: "M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z"
}), "LastPage");
// node_modules/@mui/material/internal/svg-icons/FirstPage.js
var React122 = __toESM(require_react());
init_createSvgIcon();
var import_jsx_runtime107 = __toESM(require_jsx_runtime());
var FirstPage_default = createSvgIcon((0, import_jsx_runtime107.jsx)("path", {
d: "M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z"
}), "FirstPage");
// node_modules/@mui/material/TablePagination/TablePaginationActions.js
var import_jsx_runtime108 = __toESM(require_jsx_runtime());
var import_jsx_runtime109 = __toESM(require_jsx_runtime());
var _excluded63 = ["backIconButtonProps", "count", "disabled", "getItemAriaLabel", "nextIconButtonProps", "onPageChange", "page", "rowsPerPage", "showFirstButton", "showLastButton", "slots", "slotProps"];
var TablePaginationActions3 = React123.forwardRef(function TablePaginationActions4(props, ref) {
var _slots$firstButton, _slots$lastButton, _slots$nextButton, _slots$previousButton, _slots$firstButtonIco, _slots$lastButtonIcon, _slots$nextButtonIcon, _slots$previousButton2;
const {
backIconButtonProps,
count,
disabled = false,
getItemAriaLabel,
nextIconButtonProps,
onPageChange,
page,
rowsPerPage,
showFirstButton,
showLastButton,
slots = {},
slotProps = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded63);
const isRtl = useRtl();
const handleFirstPageButtonClick = (event) => {
onPageChange(event, 0);
};
const handleBackButtonClick = (event) => {
onPageChange(event, page - 1);
};
const handleNextButtonClick = (event) => {
onPageChange(event, page + 1);
};
const handleLastPageButtonClick = (event) => {
onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
};
const FirstButton = (_slots$firstButton = slots.firstButton) != null ? _slots$firstButton : IconButton_default;
const LastButton = (_slots$lastButton = slots.lastButton) != null ? _slots$lastButton : IconButton_default;
const NextButton = (_slots$nextButton = slots.nextButton) != null ? _slots$nextButton : IconButton_default;
const PreviousButton = (_slots$previousButton = slots.previousButton) != null ? _slots$previousButton : IconButton_default;
const FirstButtonIcon = (_slots$firstButtonIco = slots.firstButtonIcon) != null ? _slots$firstButtonIco : FirstPage_default;
const LastButtonIcon = (_slots$lastButtonIcon = slots.lastButtonIcon) != null ? _slots$lastButtonIcon : LastPage_default;
const NextButtonIcon = (_slots$nextButtonIcon = slots.nextButtonIcon) != null ? _slots$nextButtonIcon : KeyboardArrowRight_default;
const PreviousButtonIcon = (_slots$previousButton2 = slots.previousButtonIcon) != null ? _slots$previousButton2 : KeyboardArrowLeft_default;
const FirstButtonSlot = isRtl ? LastButton : FirstButton;
const PreviousButtonSlot = isRtl ? NextButton : PreviousButton;
const NextButtonSlot = isRtl ? PreviousButton : NextButton;
const LastButtonSlot = isRtl ? FirstButton : LastButton;
const firstButtonSlotProps = isRtl ? slotProps.lastButton : slotProps.firstButton;
const previousButtonSlotProps = isRtl ? slotProps.nextButton : slotProps.previousButton;
const nextButtonSlotProps = isRtl ? slotProps.previousButton : slotProps.nextButton;
const lastButtonSlotProps = isRtl ? slotProps.firstButton : slotProps.lastButton;
return (0, import_jsx_runtime109.jsxs)("div", _extends({
ref
}, other, {
children: [showFirstButton && (0, import_jsx_runtime108.jsx)(FirstButtonSlot, _extends({
onClick: handleFirstPageButtonClick,
disabled: disabled || page === 0,
"aria-label": getItemAriaLabel("first", page),
title: getItemAriaLabel("first", page)
}, firstButtonSlotProps, {
children: isRtl ? (0, import_jsx_runtime108.jsx)(LastButtonIcon, _extends({}, slotProps.lastButtonIcon)) : (0, import_jsx_runtime108.jsx)(FirstButtonIcon, _extends({}, slotProps.firstButtonIcon))
})), (0, import_jsx_runtime108.jsx)(PreviousButtonSlot, _extends({
onClick: handleBackButtonClick,
disabled: disabled || page === 0,
color: "inherit",
"aria-label": getItemAriaLabel("previous", page),
title: getItemAriaLabel("previous", page)
}, previousButtonSlotProps != null ? previousButtonSlotProps : backIconButtonProps, {
children: isRtl ? (0, import_jsx_runtime108.jsx)(NextButtonIcon, _extends({}, slotProps.nextButtonIcon)) : (0, import_jsx_runtime108.jsx)(PreviousButtonIcon, _extends({}, slotProps.previousButtonIcon))
})), (0, import_jsx_runtime108.jsx)(NextButtonSlot, _extends({
onClick: handleNextButtonClick,
disabled: disabled || (count !== -1 ? page >= Math.ceil(count / rowsPerPage) - 1 : false),
color: "inherit",
"aria-label": getItemAriaLabel("next", page),
title: getItemAriaLabel("next", page)
}, nextButtonSlotProps != null ? nextButtonSlotProps : nextIconButtonProps, {
children: isRtl ? (0, import_jsx_runtime108.jsx)(PreviousButtonIcon, _extends({}, slotProps.previousButtonIcon)) : (0, import_jsx_runtime108.jsx)(NextButtonIcon, _extends({}, slotProps.nextButtonIcon))
})), showLastButton && (0, import_jsx_runtime108.jsx)(LastButtonSlot, _extends({
onClick: handleLastPageButtonClick,
disabled: disabled || page >= Math.ceil(count / rowsPerPage) - 1,
"aria-label": getItemAriaLabel("last", page),
title: getItemAriaLabel("last", page)
}, lastButtonSlotProps, {
children: isRtl ? (0, import_jsx_runtime108.jsx)(FirstButtonIcon, _extends({}, slotProps.firstButtonIcon)) : (0, import_jsx_runtime108.jsx)(LastButtonIcon, _extends({}, slotProps.lastButtonIcon))
}))]
}));
});
true ? TablePaginationActions3.propTypes = {
/**
* Props applied to the back arrow [`IconButton`](/material-ui/api/icon-button/) element.
*/
backIconButtonProps: import_prop_types67.default.object,
/**
* The total number of rows.
*/
count: import_prop_types67.default.number.isRequired,
/**
* If `true`, the component is disabled.
* @default false
*/
disabled: import_prop_types67.default.bool,
/**
* Accepts a function which returns a string value that provides a user-friendly name for the current page.
*
* For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).
*
* @param {string} type The link or button type to format ('page' | 'first' | 'last' | 'next' | 'previous'). Defaults to 'page'.
* @param {number} page The page number to format.
* @returns {string}
*/
getItemAriaLabel: import_prop_types67.default.func.isRequired,
/**
* Props applied to the next arrow [`IconButton`](/material-ui/api/icon-button/) element.
*/
nextIconButtonProps: import_prop_types67.default.object,
/**
* Callback fired when the page is changed.
*
* @param {object} event The event source of the callback.
* @param {number} page The page selected.
*/
onPageChange: import_prop_types67.default.func.isRequired,
/**
* The zero-based index of the current page.
*/
page: import_prop_types67.default.number.isRequired,
/**
* The number of rows per page.
*/
rowsPerPage: import_prop_types67.default.number.isRequired,
/**
* If `true`, show the first-page button.
*/
showFirstButton: import_prop_types67.default.bool.isRequired,
/**
* If `true`, show the last-page button.
*/
showLastButton: import_prop_types67.default.bool.isRequired,
/**
* The props used for each slot inside the TablePaginationActions.
* @default {}
*/
slotProps: import_prop_types67.default.shape({
firstButton: import_prop_types67.default.object,
firstButtonIcon: import_prop_types67.default.object,
lastButton: import_prop_types67.default.object,
lastButtonIcon: import_prop_types67.default.object,
nextButton: import_prop_types67.default.object,
nextButtonIcon: import_prop_types67.default.object,
previousButton: import_prop_types67.default.object,
previousButtonIcon: import_prop_types67.default.object
}),
/**
* The components used for each slot inside the TablePaginationActions.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types67.default.shape({
firstButton: import_prop_types67.default.elementType,
firstButtonIcon: import_prop_types67.default.elementType,
lastButton: import_prop_types67.default.elementType,
lastButtonIcon: import_prop_types67.default.elementType,
nextButton: import_prop_types67.default.elementType,
nextButtonIcon: import_prop_types67.default.elementType,
previousButton: import_prop_types67.default.elementType,
previousButtonIcon: import_prop_types67.default.elementType
})
} : void 0;
var TablePaginationActions_default = TablePaginationActions3;
// node_modules/@mui/material/TablePagination/TablePagination.js
init_useId2();
var import_jsx_runtime110 = __toESM(require_jsx_runtime());
var import_react4 = __toESM(require_react());
var import_jsx_runtime111 = __toESM(require_jsx_runtime());
var _InputBase;
var _excluded64 = ["ActionsComponent", "backIconButtonProps", "className", "colSpan", "component", "count", "disabled", "getItemAriaLabel", "labelDisplayedRows", "labelRowsPerPage", "nextIconButtonProps", "onPageChange", "onRowsPerPageChange", "page", "rowsPerPage", "rowsPerPageOptions", "SelectProps", "showFirstButton", "showLastButton", "slotProps", "slots"];
var TablePaginationRoot = styled_default(TableCell_default, {
name: "MuiTablePagination",
slot: "Root",
overridesResolver: (props, styles4) => styles4.root
})(({
theme
}) => ({
overflow: "auto",
color: (theme.vars || theme).palette.text.primary,
fontSize: theme.typography.pxToRem(14),
// Increase the specificity to override TableCell.
"&:last-child": {
padding: 0
}
}));
var TablePaginationToolbar = styled_default(Toolbar_default, {
name: "MuiTablePagination",
slot: "Toolbar",
overridesResolver: (props, styles4) => _extends({
[`& .${tablePaginationClasses_default.actions}`]: styles4.actions
}, styles4.toolbar)
})(({
theme
}) => ({
minHeight: 52,
paddingRight: 2,
[`${theme.breakpoints.up("xs")} and (orientation: landscape)`]: {
minHeight: 52
},
[theme.breakpoints.up("sm")]: {
minHeight: 52,
paddingRight: 2
},
[`& .${tablePaginationClasses_default.actions}`]: {
flexShrink: 0,
marginLeft: 20
}
}));
var TablePaginationSpacer = styled_default("div", {
name: "MuiTablePagination",
slot: "Spacer",
overridesResolver: (props, styles4) => styles4.spacer
})({
flex: "1 1 100%"
});
var TablePaginationSelectLabel = styled_default("p", {
name: "MuiTablePagination",
slot: "SelectLabel",
overridesResolver: (props, styles4) => styles4.selectLabel
})(({
theme
}) => _extends({}, theme.typography.body2, {
flexShrink: 0
}));
var TablePaginationSelect = styled_default(Select_default, {
name: "MuiTablePagination",
slot: "Select",
overridesResolver: (props, styles4) => _extends({
[`& .${tablePaginationClasses_default.selectIcon}`]: styles4.selectIcon,
[`& .${tablePaginationClasses_default.select}`]: styles4.select
}, styles4.input, styles4.selectRoot)
})({
color: "inherit",
fontSize: "inherit",
flexShrink: 0,
marginRight: 32,
marginLeft: 8,
[`& .${tablePaginationClasses_default.select}`]: {
paddingLeft: 8,
paddingRight: 24,
textAlign: "right",
textAlignLast: "right"
// Align <select> on Chrome.
}
});
var TablePaginationMenuItem = styled_default(MenuItem_default, {
name: "MuiTablePagination",
slot: "MenuItem",
overridesResolver: (props, styles4) => styles4.menuItem
})({});
var TablePaginationDisplayedRows = styled_default("p", {
name: "MuiTablePagination",
slot: "DisplayedRows",
overridesResolver: (props, styles4) => styles4.displayedRows
})(({
theme
}) => _extends({}, theme.typography.body2, {
flexShrink: 0
}));
function defaultLabelDisplayedRows2({
from,
to,
count
}) {
return `${from}${to} of ${count !== -1 ? count : `more than ${to}`}`;
}
function defaultGetAriaLabel3(type) {
return `Go to ${type} page`;
}
var useUtilityClasses53 = (ownerState) => {
const {
classes
} = ownerState;
const slots = {
root: ["root"],
toolbar: ["toolbar"],
spacer: ["spacer"],
selectLabel: ["selectLabel"],
select: ["select"],
input: ["input"],
selectIcon: ["selectIcon"],
menuItem: ["menuItem"],
displayedRows: ["displayedRows"],
actions: ["actions"]
};
return composeClasses(slots, getTablePaginationUtilityClass2, classes);
};
var TablePagination3 = React124.forwardRef(function TablePagination4(inProps, ref) {
var _slotProps$select;
const props = useThemeProps({
props: inProps,
name: "MuiTablePagination"
});
const {
ActionsComponent = TablePaginationActions_default,
backIconButtonProps,
className,
colSpan: colSpanProp,
component = TableCell_default,
count,
disabled = false,
getItemAriaLabel = defaultGetAriaLabel3,
labelDisplayedRows = defaultLabelDisplayedRows2,
labelRowsPerPage = "Rows per page:",
nextIconButtonProps,
onPageChange,
onRowsPerPageChange,
page,
rowsPerPage,
rowsPerPageOptions = [10, 25, 50, 100],
SelectProps = {},
showFirstButton = false,
showLastButton = false,
slotProps = {},
slots = {}
} = props, other = _objectWithoutPropertiesLoose(props, _excluded64);
const ownerState = props;
const classes = useUtilityClasses53(ownerState);
const selectProps = (_slotProps$select = slotProps == null ? void 0 : slotProps.select) != null ? _slotProps$select : SelectProps;
const MenuItemComponent = selectProps.native ? "option" : TablePaginationMenuItem;
let colSpan;
if (component === TableCell_default || component === "td") {
colSpan = colSpanProp || 1e3;
}
const selectId = useId_default(selectProps.id);
const labelId = useId_default(selectProps.labelId);
const getLabelDisplayedRowsTo = () => {
if (count === -1) {
return (page + 1) * rowsPerPage;
}
return rowsPerPage === -1 ? count : Math.min(count, (page + 1) * rowsPerPage);
};
return (0, import_jsx_runtime110.jsx)(TablePaginationRoot, _extends({
colSpan,
ref,
as: component,
ownerState,
className: clsx_default(classes.root, className)
}, other, {
children: (0, import_jsx_runtime111.jsxs)(TablePaginationToolbar, {
className: classes.toolbar,
children: [(0, import_jsx_runtime110.jsx)(TablePaginationSpacer, {
className: classes.spacer
}), rowsPerPageOptions.length > 1 && (0, import_jsx_runtime110.jsx)(TablePaginationSelectLabel, {
className: classes.selectLabel,
id: labelId,
children: labelRowsPerPage
}), rowsPerPageOptions.length > 1 && (0, import_jsx_runtime110.jsx)(TablePaginationSelect, _extends({
variant: "standard"
}, !selectProps.variant && {
input: _InputBase || (_InputBase = (0, import_jsx_runtime110.jsx)(InputBase_default, {}))
}, {
value: rowsPerPage,
onChange: onRowsPerPageChange,
id: selectId,
labelId
}, selectProps, {
classes: _extends({}, selectProps.classes, {
// TODO v5 remove `classes.input`
root: clsx_default(classes.input, classes.selectRoot, (selectProps.classes || {}).root),
select: clsx_default(classes.select, (selectProps.classes || {}).select),
// TODO v5 remove `selectIcon`
icon: clsx_default(classes.selectIcon, (selectProps.classes || {}).icon)
}),
disabled,
children: rowsPerPageOptions.map((rowsPerPageOption) => (0, import_react4.createElement)(MenuItemComponent, _extends({}, !isHostComponent(MenuItemComponent) && {
ownerState
}, {
className: classes.menuItem,
key: rowsPerPageOption.label ? rowsPerPageOption.label : rowsPerPageOption,
value: rowsPerPageOption.value ? rowsPerPageOption.value : rowsPerPageOption
}), rowsPerPageOption.label ? rowsPerPageOption.label : rowsPerPageOption))
})), (0, import_jsx_runtime110.jsx)(TablePaginationDisplayedRows, {
className: classes.displayedRows,
children: labelDisplayedRows({
from: count === 0 ? 0 : page * rowsPerPage + 1,
to: getLabelDisplayedRowsTo(),
count: count === -1 ? -1 : count,
page
})
}), (0, import_jsx_runtime110.jsx)(ActionsComponent, {
className: classes.actions,
backIconButtonProps,
count,
nextIconButtonProps,
onPageChange,
page,
rowsPerPage,
showFirstButton,
showLastButton,
slotProps: slotProps.actions,
slots: slots.actions,
getItemAriaLabel,
disabled
})]
})
}));
});
true ? TablePagination3.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* The component used for displaying the actions.
* Either a string to use a HTML element or a component.
* @default TablePaginationActions
*/
ActionsComponent: import_prop_types68.default.elementType,
/**
* Props applied to the back arrow [`IconButton`](/material-ui/api/icon-button/) component.
*
* This prop is an alias for `slotProps.actions.previousButton` and will be overriden by it if both are used.
* @deprecated Use `slotProps.actions.previousButton` instead.
*/
backIconButtonProps: import_prop_types68.default.object,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types68.default.object,
/**
* @ignore
*/
className: import_prop_types68.default.string,
/**
* @ignore
*/
colSpan: import_prop_types68.default.number,
/**
* The component used for the root node.
* Either a string to use a HTML element or a component.
*/
component: import_prop_types68.default.elementType,
/**
* The total number of rows.
*
* To enable server side pagination for an unknown number of items, provide -1.
*/
count: integerPropType_default.isRequired,
/**
* If `true`, the component is disabled.
* @default false
*/
disabled: import_prop_types68.default.bool,
/**
* Accepts a function which returns a string value that provides a user-friendly name for the current page.
* This is important for screen reader users.
*
* For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).
* @param {string} type The link or button type to format ('first' | 'last' | 'next' | 'previous').
* @returns {string}
* @default function defaultGetAriaLabel(type) {
* return `Go to ${type} page`;
* }
*/
getItemAriaLabel: import_prop_types68.default.func,
/**
* Customize the displayed rows label. Invoked with a `{ from, to, count, page }`
* object.
*
* For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).
* @default function defaultLabelDisplayedRows({ from, to, count }) {
* return `${from}${to} of ${count !== -1 ? count : `more than ${to}`}`;
* }
*/
labelDisplayedRows: import_prop_types68.default.func,
/**
* Customize the rows per page label.
*
* For localization purposes, you can use the provided [translations](/material-ui/guides/localization/).
* @default 'Rows per page:'
*/
labelRowsPerPage: import_prop_types68.default.node,
/**
* Props applied to the next arrow [`IconButton`](/material-ui/api/icon-button/) element.
*
* This prop is an alias for `slotProps.actions.nextButton` and will be overriden by it if both are used.
* @deprecated Use `slotProps.actions.nextButton` instead.
*/
nextIconButtonProps: import_prop_types68.default.object,
/**
* Callback fired when the page is changed.
*
* @param {React.MouseEvent<HTMLButtonElement> | null} event The event source of the callback.
* @param {number} page The page selected.
*/
onPageChange: import_prop_types68.default.func.isRequired,
/**
* Callback fired when the number of rows per page is changed.
*
* @param {React.ChangeEvent<HTMLTextAreaElement | HTMLInputElement>} event The event source of the callback.
*/
onRowsPerPageChange: import_prop_types68.default.func,
/**
* The zero-based index of the current page.
*/
page: chainPropTypes(integerPropType_default.isRequired, (props) => {
const {
count,
page,
rowsPerPage
} = props;
if (count === -1) {
return null;
}
const newLastPage = Math.max(0, Math.ceil(count / rowsPerPage) - 1);
if (page < 0 || page > newLastPage) {
return new Error(`MUI: The page prop of a TablePagination is out of range (0 to ${newLastPage}, but page is ${page}).`);
}
return null;
}),
/**
* The number of rows per page.
*
* Set -1 to display all the rows.
*/
rowsPerPage: integerPropType_default.isRequired,
/**
* Customizes the options of the rows per page select field. If less than two options are
* available, no select field will be displayed.
* Use -1 for the value with a custom label to show all the rows.
* @default [10, 25, 50, 100]
*/
rowsPerPageOptions: import_prop_types68.default.arrayOf(import_prop_types68.default.oneOfType([import_prop_types68.default.number, import_prop_types68.default.shape({
label: import_prop_types68.default.string.isRequired,
value: import_prop_types68.default.number.isRequired
})]).isRequired),
/**
* Props applied to the rows per page [`Select`](/material-ui/api/select/) element.
*
* This prop is an alias for `slotProps.select` and will be overriden by it if both are used.
* @deprecated Use `slotProps.select` instead.
*
* @default {}
*/
SelectProps: import_prop_types68.default.object,
/**
* If `true`, show the first-page button.
* @default false
*/
showFirstButton: import_prop_types68.default.bool,
/**
* If `true`, show the last-page button.
* @default false
*/
showLastButton: import_prop_types68.default.bool,
/**
* The props used for each slot inside the TablePagination.
* @default {}
*/
slotProps: import_prop_types68.default.shape({
actions: import_prop_types68.default.shape({
firstButton: import_prop_types68.default.object,
firstButtonIcon: import_prop_types68.default.object,
lastButton: import_prop_types68.default.object,
lastButtonIcon: import_prop_types68.default.object,
nextButton: import_prop_types68.default.object,
nextButtonIcon: import_prop_types68.default.object,
previousButton: import_prop_types68.default.object,
previousButtonIcon: import_prop_types68.default.object
}),
select: import_prop_types68.default.object
}),
/**
* The components used for each slot inside the TablePagination.
* Either a string to use a HTML element or a component.
* @default {}
*/
slots: import_prop_types68.default.shape({
actions: import_prop_types68.default.shape({
firstButton: import_prop_types68.default.elementType,
firstButtonIcon: import_prop_types68.default.elementType,
lastButton: import_prop_types68.default.elementType,
lastButtonIcon: import_prop_types68.default.elementType,
nextButton: import_prop_types68.default.elementType,
nextButtonIcon: import_prop_types68.default.elementType,
previousButton: import_prop_types68.default.elementType,
previousButtonIcon: import_prop_types68.default.elementType
})
}),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types68.default.oneOfType([import_prop_types68.default.arrayOf(import_prop_types68.default.oneOfType([import_prop_types68.default.func, import_prop_types68.default.object, import_prop_types68.default.bool])), import_prop_types68.default.func, import_prop_types68.default.object])
} : void 0;
var TablePagination_default = TablePagination3;
// node_modules/@mui/material/TextField/textFieldClasses.js
init_generateUtilityClasses();
init_generateUtilityClass();
function getTextFieldUtilityClass(slot) {
return generateUtilityClass("MuiTextField", slot);
}
var textFieldClasses = generateUtilityClasses("MuiTextField", ["root"]);
var textFieldClasses_default = textFieldClasses;
// node_modules/@mui/material/TextField/TextField.js
init_extends();
init_objectWithoutPropertiesLoose();
var React125 = __toESM(require_react());
var import_prop_types69 = __toESM(require_prop_types());
init_clsx();
init_composeClasses();
init_useId();
init_refType();
init_styled();
init_useThemeProps();
var import_jsx_runtime112 = __toESM(require_jsx_runtime());
var import_jsx_runtime113 = __toESM(require_jsx_runtime());
var _excluded65 = ["autoComplete", "autoFocus", "children", "className", "color", "defaultValue", "disabled", "error", "FormHelperTextProps", "fullWidth", "helperText", "id", "InputLabelProps", "inputProps", "InputProps", "inputRef", "label", "maxRows", "minRows", "multiline", "name", "onBlur", "onChange", "onFocus", "placeholder", "required", "rows", "select", "SelectProps", "type", "value", "variant"];
var variantComponent = {
standard: Input_default,
filled: FilledInput_default,
outlined: OutlinedInput_default
};
var useUtilityClasses54 = (ownerState) => {
const {
classes
} = ownerState;
const slots = {
root: ["root"]
};
return composeClasses(slots, getTextFieldUtilityClass, classes);
};
var TextFieldRoot = styled_default(FormControl_default, {
name: "MuiTextField",
slot: "Root",
overridesResolver: (props, styles4) => styles4.root
})({});
var TextField = React125.forwardRef(function TextField2(inProps, ref) {
const props = useThemeProps({
props: inProps,
name: "MuiTextField"
});
const {
autoComplete,
autoFocus = false,
children,
className,
color = "primary",
defaultValue,
disabled = false,
error = false,
FormHelperTextProps,
fullWidth = false,
helperText,
id: idOverride,
InputLabelProps,
inputProps,
InputProps,
inputRef,
label,
maxRows,
minRows,
multiline = false,
name,
onBlur,
onChange,
onFocus,
placeholder,
required = false,
rows,
select = false,
SelectProps,
type,
value,
variant = "outlined"
} = props, other = _objectWithoutPropertiesLoose(props, _excluded65);
const ownerState = _extends({}, props, {
autoFocus,
color,
disabled,
error,
fullWidth,
multiline,
required,
select,
variant
});
const classes = useUtilityClasses54(ownerState);
if (true) {
if (select && !children) {
console.error("MUI: `children` must be passed when using the `TextField` component with `select`.");
}
}
const InputMore = {};
if (variant === "outlined") {
if (InputLabelProps && typeof InputLabelProps.shrink !== "undefined") {
InputMore.notched = InputLabelProps.shrink;
}
InputMore.label = label;
}
if (select) {
if (!SelectProps || !SelectProps.native) {
InputMore.id = void 0;
}
InputMore["aria-describedby"] = void 0;
}
const id = useId(idOverride);
const helperTextId = helperText && id ? `${id}-helper-text` : void 0;
const inputLabelId = label && id ? `${id}-label` : void 0;
const InputComponent = variantComponent[variant];
const InputElement = (0, import_jsx_runtime112.jsx)(InputComponent, _extends({
"aria-describedby": helperTextId,
autoComplete,
autoFocus,
defaultValue,
fullWidth,
multiline,
name,
rows,
maxRows,
minRows,
type,
value,
id,
inputRef,
onBlur,
onChange,
onFocus,
placeholder,
inputProps
}, InputMore, InputProps));
return (0, import_jsx_runtime113.jsxs)(TextFieldRoot, _extends({
className: clsx_default(classes.root, className),
disabled,
error,
fullWidth,
ref,
required,
color,
variant,
ownerState
}, other, {
children: [label != null && label !== "" && (0, import_jsx_runtime112.jsx)(InputLabel_default, _extends({
htmlFor: id,
id: inputLabelId
}, InputLabelProps, {
children: label
})), select ? (0, import_jsx_runtime112.jsx)(Select_default, _extends({
"aria-describedby": helperTextId,
id,
labelId: inputLabelId,
value,
input: InputElement
}, SelectProps, {
children
})) : InputElement, helperText && (0, import_jsx_runtime112.jsx)(FormHelperText_default, _extends({
id: helperTextId
}, FormHelperTextProps, {
children: helperText
}))]
}));
});
true ? TextField.propTypes = {
// ┌────────────────────────────── Warning ──────────────────────────────┐
// │ These PropTypes are generated from the TypeScript type definitions. │
// │ To update them, edit the d.ts file and run `pnpm proptypes`. │
// └─────────────────────────────────────────────────────────────────────┘
/**
* This prop helps users to fill forms faster, especially on mobile devices.
* The name can be confusing, as it's more like an autofill.
* You can learn more about it [following the specification](https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#autofill).
*/
autoComplete: import_prop_types69.default.string,
/**
* If `true`, the `input` element is focused during the first mount.
* @default false
*/
autoFocus: import_prop_types69.default.bool,
/**
* @ignore
*/
children: import_prop_types69.default.node,
/**
* Override or extend the styles applied to the component.
*/
classes: import_prop_types69.default.object,
/**
* @ignore
*/
className: import_prop_types69.default.string,
/**
* The color of the component.
* It supports both default and custom theme colors, which can be added as shown in the
* [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
* @default 'primary'
*/
color: import_prop_types69.default.oneOfType([import_prop_types69.default.oneOf(["primary", "secondary", "error", "info", "success", "warning"]), import_prop_types69.default.string]),
/**
* The default value. Use when the component is not controlled.
*/
defaultValue: import_prop_types69.default.any,
/**
* If `true`, the component is disabled.
* @default false
*/
disabled: import_prop_types69.default.bool,
/**
* If `true`, the label is displayed in an error state.
* @default false
*/
error: import_prop_types69.default.bool,
/**
* Props applied to the [`FormHelperText`](/material-ui/api/form-helper-text/) element.
*/
FormHelperTextProps: import_prop_types69.default.object,
/**
* If `true`, the input will take up the full width of its container.
* @default false
*/
fullWidth: import_prop_types69.default.bool,
/**
* The helper text content.
*/
helperText: import_prop_types69.default.node,
/**
* The id of the `input` element.
* Use this prop to make `label` and `helperText` accessible for screen readers.
*/
id: import_prop_types69.default.string,
/**
* Props applied to the [`InputLabel`](/material-ui/api/input-label/) element.
* Pointer events like `onClick` are enabled if and only if `shrink` is `true`.
*/
InputLabelProps: import_prop_types69.default.object,
/**
* [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.
*/
inputProps: import_prop_types69.default.object,
/**
* Props applied to the Input element.
* It will be a [`FilledInput`](/material-ui/api/filled-input/),
* [`OutlinedInput`](/material-ui/api/outlined-input/) or [`Input`](/material-ui/api/input/)
* component depending on the `variant` prop value.
*/
InputProps: import_prop_types69.default.object,
/**
* Pass a ref to the `input` element.
*/
inputRef: refType_default,
/**
* The label content.
*/
label: import_prop_types69.default.node,
/**
* If `dense` or `normal`, will adjust vertical spacing of this and contained components.
* @default 'none'
*/
margin: import_prop_types69.default.oneOf(["dense", "none", "normal"]),
/**
* Maximum number of rows to display when multiline option is set to true.
*/
maxRows: import_prop_types69.default.oneOfType([import_prop_types69.default.number, import_prop_types69.default.string]),
/**
* Minimum number of rows to display when multiline option is set to true.
*/
minRows: import_prop_types69.default.oneOfType([import_prop_types69.default.number, import_prop_types69.default.string]),
/**
* If `true`, a `textarea` element is rendered instead of an input.
* @default false
*/
multiline: import_prop_types69.default.bool,
/**
* Name attribute of the `input` element.
*/
name: import_prop_types69.default.string,
/**
* @ignore
*/
onBlur: import_prop_types69.default.func,
/**
* Callback fired when the value is changed.
*
* @param {object} event The event source of the callback.
* You can pull out the new value by accessing `event.target.value` (string).
*/
onChange: import_prop_types69.default.func,
/**
* @ignore
*/
onFocus: import_prop_types69.default.func,
/**
* The short hint displayed in the `input` before the user enters a value.
*/
placeholder: import_prop_types69.default.string,
/**
* If `true`, the label is displayed as required and the `input` element is required.
* @default false
*/
required: import_prop_types69.default.bool,
/**
* Number of rows to display when multiline option is set to true.
*/
rows: import_prop_types69.default.oneOfType([import_prop_types69.default.number, import_prop_types69.default.string]),
/**
* Render a [`Select`](/material-ui/api/select/) element while passing the Input element to `Select` as `input` parameter.
* If this option is set you must pass the options of the select as children.
* @default false
*/
select: import_prop_types69.default.bool,
/**
* Props applied to the [`Select`](/material-ui/api/select/) element.
*/
SelectProps: import_prop_types69.default.object,
/**
* The size of the component.
*/
size: import_prop_types69.default.oneOfType([import_prop_types69.default.oneOf(["medium", "small"]), import_prop_types69.default.string]),
/**
* The system prop that allows defining system overrides as well as additional CSS styles.
*/
sx: import_prop_types69.default.oneOfType([import_prop_types69.default.arrayOf(import_prop_types69.default.oneOfType([import_prop_types69.default.func, import_prop_types69.default.object, import_prop_types69.default.bool])), import_prop_types69.default.func, import_prop_types69.default.object]),
/**
* Type of the `input` element. It should be [a valid HTML5 input type](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types).
*/
type: import_prop_types69.default.string,
/**
* The value of the `input` element, required for a controlled component.
*/
value: import_prop_types69.default.any,
/**
* The variant to use.
* @default 'outlined'
*/
variant: import_prop_types69.default.oneOf(["filled", "outlined", "standard"])
} : void 0;
var TextField_default = TextField;
export {
reflow,
getTransitionProps,
Close_default,
ClickAwayListener,
FocusTrap,
Portal,
ModalManager,
NoSsr,
valueToPercent,
useSlider,
useSnackbar,
TextareaAutosize,
createFilterOptions,
useAutocomplete,
Popper_default,
getListSubheaderUtilityClass,
listSubheaderClasses_default,
ListSubheader_default,
getChipUtilityClass,
chipClasses_default,
Chip_default,
formControlState,
useFormControl,
getInputBaseUtilityClass,
inputBaseClasses_default,
InputBase_default,
getInputUtilityClass2 as getInputUtilityClass,
inputClasses_default,
getOutlinedInputUtilityClass,
outlinedInputClasses_default,
getFilledInputUtilityClass,
filledInputClasses_default,
ArrowDropDown_default,
getAutocompleteUtilityClass,
autocompleteClasses_default,
Autocomplete_default,
Fade_default,
getBackdropUtilityClass,
backdropClasses_default,
Backdrop_default,
getBadgeUtilityClass2 as getBadgeUtilityClass,
badgeClasses_default,
Badge_default,
boxClasses_default,
Box_default,
getButtonUtilityClass2 as getButtonUtilityClass,
buttonClasses_default,
ButtonGroupContext_default,
ButtonGroupButtonContext_default,
Button_default,
SwitchBase_default,
getCheckboxUtilityClass,
checkboxClasses_default,
Checkbox_default,
getCircularProgressUtilityClass,
circularProgressClasses_default,
CircularProgress_default,
getModalUtilityClass2 as getModalUtilityClass,
modalClasses_default,
Modal_default,
FilledInput_default,
getFormControlUtilityClasses,
formControlClasses_default,
FormControl_default,
getFormControlLabelUtilityClasses,
formControlLabelClasses_default,
FormControlLabel_default,
getFormHelperTextUtilityClasses,
formHelperTextClasses_default,
FormHelperText_default,
getFormLabelUtilityClasses,
formLabelClasses_default,
FormLabelRoot,
FormLabel_default,
Grow_default,
Input_default,
getInputAdornmentUtilityClass,
inputAdornmentClasses_default,
InputAdornment_default,
getInputLabelUtilityClasses,
inputLabelClasses_default,
InputLabel_default,
getListUtilityClass,
listClasses_default,
List_default,
MenuList_default,
getPopoverUtilityClass,
popoverClasses_default,
getOffsetTop,
getOffsetLeft,
PopoverRoot,
PopoverPaper,
Popover_default,
getMenuUtilityClass2 as getMenuUtilityClass,
menuClasses_default,
Menu_default,
getNativeSelectUtilityClasses,
nativeSelectClasses_default,
NativeSelectInput_default,
OutlinedInput_default,
FirstPage_default,
LastPage_default,
getSelectUtilityClasses,
selectClasses_default,
Select_default,
getSkeletonUtilityClass,
skeletonClasses_default,
Skeleton_default,
getTooltipUtilityClass,
tooltipClasses_default,
Tooltip_default,
getSwitchUtilityClass2 as getSwitchUtilityClass,
switchClasses_default,
Switch_default,
TableContext_default,
Tablelvl2Context_default,
getTableCellUtilityClass,
tableCellClasses_default,
TableCell_default,
KeyboardArrowLeft_default,
KeyboardArrowRight_default,
getTablePaginationUtilityClass2 as getTablePaginationUtilityClass,
tablePaginationClasses_default,
TablePagination_default,
getTextFieldUtilityClass,
textFieldClasses_default,
TextField_default
};
/*! Bundled license information:
@mui/base/index.js:
(**
* @mui/base v5.0.0-beta.39
*
* @license MIT
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*)
*/
//# sourceMappingURL=chunk-VZNKVN7E.js.map
<EFBFBD>^<5E><><EFBFBD><04>6<EFBFBD>!<17>e<>^<5E>e<EFBFBD>^<5E>F<EFBFBD>O1gՐ<67>xO^partitionKey=%28http%2Clocalhost%2C5173%29,:http://localhost:5173/node_modules/.vite/deps/chunk-VZNKVN7E.js?v=e565559anecko:classified1strongly-framed1request-methodGETresponse-headHTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/javascript
Cache-Control: max-age=31536000,immutable
Etag: W/"e6cf0-dIANhv24U1Jksa+DHmAdQfoIlxo"
Date: Fri, 15 Mar 2024 14:37:23 GMT
Content-Length: 945392
original-response-headersAccess-Control-Allow-Origin: *
Content-Type: application/javascript
Cache-Control: max-age=31536000,immutable
Etag: W/"e6cf0-dIANhv24U1Jksa+DHmAdQfoIlxo"
Date: Fri, 15 Mar 2024 14:37:23 GMT
Connection: keep-alive
Keep-Alive: timeout=5
Content-Length: 945392
ctid2uncompressed-len0net-response-time-onstart59net-response-time-onstop78l<>