1import { c as __toESM, r as require_react, t as require_jsx_runtime } from "./jsx-runtime-d1SSMKUy.js"; 2import { E as clsx, T as generateUtilityClass, c as styled, h as composeClasses, s as useDefaultProps } from "./spinner-C4mLLJfB-QHt8YJA1.js"; 3import { A as getTransitionProps, C as useSlot, F as Transition, I as useForkRef_default, K as useTheme, L as useForkRef, M as reflow, T as extractEventHandlers, U as memoTheme, V as ownerDocument, g as contains, h as getReactElementRef, j as normalizedTransitionCallback, k as getTransitionChildStyle, m as Portal, q as generateUtilityClasses, u as useId, z as useEventCallback } from "./card-Rzci524d-DwmRKyFW.js"; 4//#region ../../node_modules/.pnpm/@[email protected]_@[email protected][email protected]/node_modules/@mui/utils/esm/createChainedFunction/createChainedFunction.js 5/** 6* Safe chained function. 7* 8* Will only create a new function if needed, 9* otherwise will pass back existing functions or null. 10*/ 11function createChainedFunction(...funcs) { 12 return funcs.reduce((acc, func) => { 13 if (func == null) return acc; 14 return function chainedFunction(...args) { 15 acc.apply(this, args); 16 func.apply(this, args); 17 }; 18 }, () => {}); 19} 20//#endregion 21//#region ../../node_modules/.pnpm/@[email protected]_@[email protected][email protected]/node_modules/@mui/utils/esm/ownerWindow/ownerWindow.js 22function ownerWindow(node) { 23 return ownerDocument(node).defaultView || window; 24} 25//#endregion 26//#region ../../node_modules/.pnpm/@[email protected]_@[email protected][email protected]/node_modules/@mui/utils/esm/getActiveElement/getActiveElement.js 27/** 28* Gets the actual active element, traversing through shadow roots if necessary. 29* 30* When an element inside a shadow root has focus, `document.activeElement` returns 31* the shadow host element. This function recursively traverses shadow roots to find 32* the actual focused element. 33* 34* @param root - The document or shadow root to start the search from. 35* @returns The actual focused element, or null if no element has focus. 36* 37* @example 38* // In a shadow DOM context 39* const activeElement = getActiveElement(document); 40* // Returns the actual focused element inside the shadow root 41* 42* @example 43* // Starting from a specific document 44* const activeElement = getActiveElement(ownerDocument(element)); 45*/ 46function activeElement(doc) { 47 let element = doc.activeElement; 48 while (element?.shadowRoot?.activeElement != null) element = element.shadowRoot.activeElement; 49 return element; 50} 51//#endregion 52//#region ../../node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected][email protected]__@emotion_c85e702676c56cce11ad657bc0a2dd75/node_modules/@mui/material/esm/utils/getActiveElement.js 53var import_react = /* @__PURE__ */ __toESM(require_react()); 54var import_jsx_runtime = require_jsx_runtime(); 55var getActiveElement_default = activeElement; 56//#endregion 57//#region ../../node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected][email protected]__@emotion_c85e702676c56cce11ad657bc0a2dd75/node_modules/@mui/material/esm/Fade/Fade.js 58var styles = { 59 entering: { opacity: 1 }, 60 entered: { opacity: 1 }, 61 exiting: { opacity: 0 }, 62 exited: { opacity: 0 } 63}; 64var hiddenStyles = { 65 opacity: 0, 66 visibility: "hidden" 67}; 68/** 69* The Fade transition is used by the [Modal](/material-ui/react-modal/) component. 70* It uses [react-transition-group](https://github.com/reactjs/react-transition-group) internally. 71*/ 72var Fade = /*#__PURE__*/ import_react.forwardRef(function Fade(props, ref) { 73 const theme = useTheme(); 74 const defaultTimeout = {
75 enter: theme.transitions.duration.enteringScreen, 76 exit: theme.transitions.duration.leavingScreen 77 }; 78 const { addEndListener, appear = true, children, easing, in: inProp, onEnter, onEntered, onEntering, onExit, onExited, onExiting, style, timeout = defaultTimeout, ...other } = props; 79 const nodeRef = import_react.useRef(null); 80 const handleRef = useForkRef_default(nodeRef, getReactElementRef(children), ref); 81 const handleEntering = normalizedTransitionCallback(nodeRef, onEntering); 82 const handleEnter = normalizedTransitionCallback(nodeRef, (node, isAppearing) => { 83 reflow(node); 84 const transitionProps = getTransitionProps({ 85 style, 86 timeout, 87 easing 88 }, { mode: "enter" }); 89 node.style.transition = theme.transitions.create("opacity", transitionProps); 90 if (onEnter) onEnter(node, isAppearing); 91 }); 92 const handleEntered = normalizedTransitionCallback(nodeRef, onEntered); 93 const handleExiting = normalizedTransitionCallback(nodeRef, onExiting); 94 const handleExit = normalizedTransitionCallback(nodeRef, (node) => { 95 const transitionProps = getTransitionProps({ 96 style, 97 timeout, 98 easing 99 }, { mode: "exit" }); 100 node.style.transition = theme.transitions.create("opacity", transitionProps); 101 if (onExit) onExit(node); 102 }); 103 const handleExited = normalizedTransitionCallback(nodeRef, (node) => { 104 node.style.transition = ""; 105 if (onExited) onExited(node); 106 }); 107 const handleAddEndListener = (next) => { 108 if (addEndListener) addEndListener(nodeRef.current, next); 109 }; 110 return /*#__PURE__*/ (0, import_jsx_runtime.jsx)(Transition, { 111 appear, 112 in: inProp, 113 nodeRef, 114 onEnter: handleEnter, 115 onEntered: handleEntered, 116 onEntering: handleEntering, 117 onExit: handleExit, 118 onExited: handleExited, 119 onExiting: handleExiting, 120 addEndListener: handleAddEndListener, 121 timeout, 122 ...other, 123 children: (state, { ownerState, ...restChildProps }) => { 124 const childStyle = getTransitionChildStyle(state, inProp, styles, hiddenStyles, style, children.props.style); 125 return /*#__PURE__*/ import_react.cloneElement(children, { 126 style: childStyle, 127 ref: handleRef, 128 ...restChildProps 129 }); 130 } 131 }); 132}); 133//#endregion 134//#region ../../node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected][email protected]__@emotion_c85e702676c56cce11ad657bc0a2dd75/node_modules/@mui/material/esm/Backdrop/backdropClasses.js 135function getBackdropUtilityClass(slot) { 136 return generateUtilityClass("MuiBackdrop", slot); 137} 138generateUtilityClasses("MuiBackdrop", ["root", "invisible"]); 139//#endregion 140//#region ../../node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected][email protected]__@emotion_c85e702676c56cce11ad657bc0a2dd75/node_modules/@mui/material/esm/Backdrop/Backdrop.js 141var useUtilityClasses$1 = (ownerState) => { 142 const { classes, invisible } = ownerState; 143 return composeClasses({ root: ["root", invisible && "invisible"] }, getBackdropUtilityClass, classes); 144}; 145var BackdropRoot = styled("div", { 146 name: "MuiBackdrop", 147 slot: "Root", 148 overridesResolver: (props, styles) => { 149 const { ownerState } = props; 150 return [styles.root, ownerState.invisible && styles.invisible]; 151 } 152})({ 153 position: "fixed", 154 display: "flex", 155 alignItems: "center", 156 justifyContent: "center", 157 right: 0, 158 bottom: 0, 159 top: 0, 160 left: 0, 161 backgroundColor: "rgba(0, 0, 0, 0.5)", 162 WebkitTapHighlightColor: "transparent", 163 variants: [{ 164 props: { invisible: true }, 165 style: { backgroundColor: "transparent" } 166 }] 167}); 168var Backdrop = /*#__PURE__*/ import_react.forwardRef(function Backdrop(inProps, ref) { 169 const props = useDefaultProps({ 170 props: inProps, 171 name: "MuiBackdrop" 172 }); 173 const { children, className, component = "div", invisible = false, open, components = {}, componentsProps = {}, slotProps = {}, slots = {}, TransitionComponent: TransitionComponentProp, transitionDuration, ...other } = props; 174 const ownerState = { 175 ...props, 176 component, 177 invisible 178 }; 179 const classes = useUtilityClasses$1(ownerState); 180 const externalForwardedProps = { 181 component, 182 slots: { 183 transition: TransitionComponentProp, 184 root: components.Root, 185 ...slots 186 }, 187 slotProps: { 188 ...componentsProps, 189 ...slotProps 190 } 191 }; 192 const [RootSlot, rootProps] = useSlot("root", { 193 elementType: BackdropRoot, 194 externalForwardedProps, 195 className: clsx(classes.root, className), 196 ownerState 197 }); 198 const [TransitionSlot, transitionProps] = useSlot("transition", { 199 elementType: Fade, 200 externalForwardedProps, 201 ownerState 202 }); 203 return /*#__PURE__*/ (0, import_jsx_runtime.jsx)(TransitionSlot, { 204 in: open, 205 timeout: transitionDuration, 206 ...other, 207 ...transitionProps, 208 children: /*#__PURE__*/ (0, import_jsx_runtime.jsx)(RootSlot, { 209 "aria-hidden": true, 210 ...rootProps, 211 ref, 212 children 213 }) 214 }); 215}); 216//#endregion 217//#region ../../node_modules/.pnpm/@[email protected]_@[email protected][email protected]/node_modules/@mui/utils/esm/getScrollbarSize/getScrollbarSize.js 218function getScrollbarSize(win = window) { 219 const documentWidth = win.document.documentElement.clientWidth; 220 return win.innerWidth - documentWidth; 221} 222//#endregion 223//#region ../../node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected][email protected]__@emotion_c85e702676c56cce11ad657bc0a2dd75/node_modules/@mui/material/esm/Modal/ModalManager.js 224function isOverflowing(container) { 225 const doc = ownerDocument(container); 226 if (doc.body === container) return ownerWindow(container).innerWidth > doc.documentElement.clientWidth; 227 return container.scrollHeight > container.clientHeight; 228} 229function ariaHidden(element, hide) { 230 if (hide) element.setAttribute("aria-hidden", "true"); 231 else element.removeAttribute("aria-hidden"); 232} 233function getPaddingRight(element) { 234 return parseFloat(ownerWindow(element).getComputedStyle(element).paddingRight) || 0; 235} 236function isAriaHiddenForbiddenOnElement(element) { 237 const isForbiddenTagName = [ 238 "TEMPLATE", 239 "SCRIPT", 240 "STYLE", 241 "LINK", 242 "MAP", 243 "META",
244 "NOSCRIPT", 245 "PICTURE", 246 "COL", 247 "COLGROUP", 248 "PARAM", 249 "SLOT", 250 "SOURCE", 251 "TRACK" 252 ].includes(element.tagName); 253 const isInputHidden = element.tagName === "INPUT" && element.getAttribute("type") === "hidden"; 254 return isForbiddenTagName || isInputHidden; 255} 256function ariaHiddenSiblings(container, mountElement, currentElement, elementsToExclude, hide) { 257 const blacklist = [ 258 mountElement, 259 currentElement, 260 ...elementsToExclude 261 ]; 262 [].forEach.call(container.children, (element) => { 263 const isNotExcludedElement = !blacklist.includes(element); 264 const isNotForbiddenElement = !isAriaHiddenForbiddenOnElement(element); 265 if (isNotExcludedElement && isNotForbiddenElement) ariaHidden(element, hide); 266 }); 267} 268function findIndexOf(items, callback) { 269 let idx = -1; 270 items.some((item, index) => { 271 if (callback(item)) { 272 idx = index; 273 return true; 274 } 275 return false; 276 }); 277 return idx; 278} 279function handleContainer(containerInfo, props) { 280 const restoreStyle = []; 281 const container = containerInfo.container; 282 if (!props.disableScrollLock) { 283 if (isOverflowing(container)) { 284 const scrollbarSize = getScrollbarSize(ownerWindow(container)); 285 restoreStyle.push({ 286 value: container.style.paddingRight, 287 property: "padding-right", 288 el: container 289 }); 290 container.style.paddingRight = `${getPaddingRight(container) + scrollbarSize}px`; 291 const fixedElements = ownerDocument(container).querySelectorAll(".mui-fixed"); 292 [].forEach.call(fixedElements, (element) => { 293 restoreStyle.push({ 294 value: element.style.paddingRight, 295 property: "padding-right", 296 el: element 297 }); 298 element.style.paddingRight = `${getPaddingRight(element) + scrollbarSize}px`; 299 }); 300 } 301 let scrollContainer; 302 if (container.parentNode instanceof DocumentFragment) scrollContainer = ownerDocument(container).body; 303 else { 304 const parent = container.parentElement; 305 const containerWindow = ownerWindow(container); 306 scrollContainer = parent?.nodeName === "HTML" && containerWindow.getComputedStyle(parent).overflowY === "scroll" ? parent : container; 307 } 308 restoreStyle.push({ 309 value: scrollContainer.style.overflow, 310 property: "overflow", 311 el: scrollContainer 312 }, { 313 value: scrollContainer.style.overflowX, 314 property: "overflow-x", 315 el: scrollContainer 316 }, { 317 value: scrollContainer.style.overflowY, 318 property: "overflow-y", 319 el: scrollContainer 320 }); 321 scrollContainer.style.overflow = "hidden"; 322 } 323 const restore = () => { 324 restoreStyle.forEach(({ value, el, property }) => { 325 if (value) el.style.setProperty(property, value); 326 else el.style.removeProperty(property); 327 }); 328 }; 329 return restore; 330} 331function getHiddenSiblings(container) { 332 const hiddenSiblings = []; 333 [].forEach.call(container.children, (element) => { 334 if (element.getAttribute("aria-hidden") === "true") hiddenSiblings.push(element); 335 }); 336 return hiddenSiblings; 337} 338/** 339* @ignore - do not document. 340* 341* Proper state management for containers and the modals in those containers. 342* Simplified, but inspired by react-overlay's ModalManager class. 343* Used by the Modal to ensure proper styling of containers. 344*/ 345var ModalManager = class { 346 constructor() { 347 this.modals = []; 348 this.containers = []; 349 } 350 add(modal, container) { 351 let modalIndex = this.modals.indexOf(modal); 352 if (modalIndex !== -1) return modalIndex; 353 modalIndex = this.modals.length; 354 this.modals.push(modal); 355 if (modal.modalRef) ariaHidden(modal.modalRef, false); 356 const hiddenSiblings = getHiddenSiblings(container); 357 ariaHiddenSiblings(container, modal.mount, modal.modalRef, hiddenSiblings, true); 358 const containerIndex = findIndexOf(this.containers, (item) => item.container === container); 359 if (containerIndex !== -1) { 360 this.containers[containerIndex].modals.push(modal); 361 return modalIndex; 362 } 363 this.containers.push({ 364 modals: [modal], 365 container, 366 restore: null, 367 hiddenSiblings 368 }); 369 return modalIndex; 370 } 371 mount(modal, props) { 372 const containerIndex = findIndexOf(this.containers, (item) => item.modals.includes(modal)); 373 const containerInfo = this.containers[containerIndex]; 374 if (!containerInfo.restore) containerInfo.restore = handleContainer(containerInfo, props); 375 } 376 remove(modal, ariaHiddenState = true) { 377 const modalIndex = this.modals.indexOf(modal); 378 if (modalIndex === -1) return modalIndex; 379 const containerIndex = findIndexOf(this.containers, (item) => item.modals.includes(modal)); 380 const containerInfo = this.containers[containerIndex]; 381 containerInfo.modals.splice(containerInfo.modals.indexOf(modal), 1); 382 this.modals.splice(modalIndex, 1); 383 if (containerInfo.modals.length === 0) {
384 if (containerInfo.restore) containerInfo.restore(); 385 if (modal.modalRef) ariaHidden(modal.modalRef, ariaHiddenState); 386 ariaHiddenSiblings(containerInfo.container, modal.mount, modal.modalRef, containerInfo.hiddenSiblings, false); 387 this.containers.splice(containerIndex, 1); 388 } else { 389 const nextTop = containerInfo.modals[containerInfo.modals.length - 1]; 390 if (nextTop.modalRef) ariaHidden(nextTop.modalRef, false); 391 } 392 return modalIndex; 393 } 394 isTopModal(modal) { 395 return this.modals.length > 0 && this.modals[this.modals.length - 1] === modal; 396 } 397}; 398//#endregion 399//#region ../../node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected][email protected]__@emotion_c85e702676c56cce11ad657bc0a2dd75/node_modules/@mui/material/esm/utils/contains.js 400var contains_default = contains; 401//#endregion 402//#region ../../node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected][email protected]__@emotion_c85e702676c56cce11ad657bc0a2dd75/node_modules/@mui/material/esm/utils/focusable.js 403var FOCUSABLE_ATTRIBUTE = "data-mui-focusable"; 404/** 405* Returns the element marked as the initial focus target inside a focus trap. 406* The root element takes precedence over marked descendants so components can 407* opt into focusing their own root surface directly. 408*/ 409function getFocusTarget(rootElement) { 410 if (!rootElement) return null; 411 return rootElement.hasAttribute("data-mui-focusable") ? rootElement : rootElement.querySelector(`[${FOCUSABLE_ATTRIBUTE}]`); 412} 413//#endregion 414//#region ../../node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected][email protected]__@emotion_c85e702676c56cce11ad657bc0a2dd75/node_modules/@mui/material/esm/Unstable_TrapFocus/FocusTrap.js 415var candidatesSelector = [ 416 "input", 417 "select", 418 "textarea", 419 "a[href]", 420 "button", 421 "[tabindex]", 422 "audio[controls]", 423 "video[controls]", 424 "[contenteditable]:not([contenteditable=\"false\"])" 425].join(","); 426function getTabIndex(node) { 427 const tabindexAttr = parseInt(node.getAttribute("tabindex") || "", 10); 428 if (!Number.isNaN(tabindexAttr)) return tabindexAttr; 429 if (node.contentEditable === "true" || (node.nodeName === "AUDIO" || node.nodeName === "VIDEO" || node.nodeName === "DETAILS") && node.getAttribute("tabindex") === null) return 0; 430 return node.tabIndex; 431} 432function isNonTabbableRadio(node) { 433 if (node.tagName !== "INPUT" || node.type !== "radio") return false; 434 if (!node.name) return false; 435 const getRadio = (selector) => node.ownerDocument.querySelector(`input[type="radio"]${selector}`); 436 let roving = getRadio(`[name="${node.name}"]:checked`); 437 if (!roving) roving = getRadio(`[name="${node.name}"]`); 438 return roving !== node; 439} 440function isNodeMatchingSelectorFocusable(node) { 441 if (node.disabled || node.tagName === "INPUT" && node.type === "hidden" || isNonTabbableRadio(node)) return false; 442 return true; 443} 444function defaultGetTabbable(root) { 445 const regularTabNodes = []; 446 const orderedTabNodes = []; 447 Array.from(root.querySelectorAll(candidatesSelector)).forEach((node, i) => { 448 const nodeTabIndex = getTabIndex(node); 449 if (nodeTabIndex === -1 || !isNodeMatchingSelectorFocusable(node)) return; 450 if (nodeTabIndex === 0) regularTabNodes.push(node); 451 else orderedTabNodes.push({ 452 documentOrder: i, 453 tabIndex: nodeTabIndex, 454 node 455 }); 456 }); 457 return orderedTabNodes.sort((a, b) => a.tabIndex === b.tabIndex ? a.documentOrder - b.documentOrder : a.tabIndex - b.tabIndex).map((a) => a.node).concat(regularTabNodes); 458} 459function defaultIsEnabled() { 460 return true; 461} 462/** 463* @ignore - internal component. 464*/ 465function FocusTrap(props) { 466 const { children, disableAutoFocus = false, disableEnforceFocus = false, disableRestoreFocus = false, getTabbable = defaultGetTabbable, isEnabled = defaultIsEnabled, open } = props; 467 const ignoreNextEnforceFocus = import_react.useRef(false); 468 const sentinelStart = import_react.useRef(null); 469 const sentinelEnd = import_react.useRef(null); 470 const nodeToRestore = import_react.useRef(null); 471 const reactFocusEventTarget = import_react.useRef(null); 472 const activated = import_react.useRef(false); 473 const rootRef = import_react.useRef(null); 474 const handleRef = useForkRef(getReactElementRef(children), rootRef); 475 const lastKeydown = import_react.useRef(null); 476 import_react.useEffect(() => { 477 if (!open || !rootRef.current) return; 478 activated.current = !disableAutoFocus; 479 }, [disableAutoFocus, open]); 480 import_react.useEffect(() => { 481 ignoreNextEnforceFocus.current = false;
482 if (!open || !rootRef.current) return; 483 const activeElement = getActiveElement_default(ownerDocument(rootRef.current)); 484 const focusTarget = getFocusTarget(rootRef.current) ?? rootRef.current; 485 if (!contains_default(rootRef.current, activeElement)) { 486 if (!focusTarget.hasAttribute("tabIndex")) focusTarget.setAttribute("tabIndex", "-1"); 487 if (activated.current) focusTarget.focus(); 488 } 489 return () => { 490 if (!disableRestoreFocus) { 491 if (nodeToRestore.current && nodeToRestore.current.focus) { 492 ignoreNextEnforceFocus.current = true; 493 nodeToRestore.current.focus(); 494 } 495 nodeToRestore.current = null; 496 } 497 }; 498 }, [open]); 499 import_react.useEffect(() => { 500 if (!open || !rootRef.current) return; 501 const doc = ownerDocument(rootRef.current); 502 const loopFocus = (nativeEvent) => { 503 lastKeydown.current = nativeEvent; 504 if (disableEnforceFocus || !isEnabled() || nativeEvent.key !== "Tab") return; 505 if (getActiveElement_default(doc) === rootRef.current && nativeEvent.shiftKey) { 506 ignoreNextEnforceFocus.current = true; 507 if (sentinelEnd.current) sentinelEnd.current.focus(); 508 } 509 }; 510 const contain = () => { 511 const rootElement = rootRef.current; 512 if (rootElement === null) return; 513 const activeEl = getActiveElement_default(doc); 514 if (!doc.hasFocus() || !isEnabled() || ignoreNextEnforceFocus.current) { 515 ignoreNextEnforceFocus.current = false; 516 return; 517 } 518 if (contains_default(rootElement, activeEl)) return; 519 if (disableEnforceFocus && activeEl !== sentinelStart.current && activeEl !== sentinelEnd.current) return; 520 if (activeEl !== reactFocusEventTarget.current) reactFocusEventTarget.current = null; 521 else if (reactFocusEventTarget.current !== null) return; 522 if (!activated.current) return; 523 let tabbable = []; 524 if (activeEl === sentinelStart.current || activeEl === sentinelEnd.current) tabbable = getTabbable(rootRef.current); 525 if (tabbable.length > 0) { 526 const isShiftTab = Boolean(lastKeydown.current?.shiftKey && lastKeydown.current?.key === "Tab"); 527 const focusNext = tabbable[0]; 528 const focusPrevious = tabbable[tabbable.length - 1]; 529 if (typeof focusNext !== "string" && typeof focusPrevious !== "string") if (isShiftTab) focusPrevious.focus(); 530 else focusNext.focus(); 531 } else rootElement.focus(); 532 }; 533 doc.addEventListener("focusin", contain); 534 doc.addEventListener("keydown", loopFocus, true); 535 const interval = setInterval(() => { 536 const activeEl = getActiveElement_default(doc); 537 if (activeEl && activeEl.tagName === "BODY") contain(); 538 }, 50); 539 return () => { 540 clearInterval(interval); 541 doc.removeEventListener("focusin", contain); 542 doc.removeEventListener("keydown", loopFocus, true); 543 }; 544 }, [ 545 disableAutoFocus, 546 disableEnforceFocus, 547 disableRestoreFocus, 548 isEnabled, 549 open, 550 getTabbable 551 ]); 552 const onFocus = (event) => { 553 if (nodeToRestore.current === null) nodeToRestore.current = event.relatedTarget; 554 activated.current = true; 555 reactFocusEventTarget.current = event.target; 556 const childrenPropsHandler = children.props.onFocus; 557 if (childrenPropsHandler) childrenPropsHandler(event); 558 }; 559 const handleFocusSentinel = (event) => { 560 if (nodeToRestore.current === null) nodeToRestore.current = event.relatedTarget; 561 activated.current = true; 562 }; 563 return /*#__PURE__*/ (0, import_jsx_runtime.jsxs)(import_react.Fragment, { children: [ 564 /*#__PURE__*/ (0, import_jsx_runtime.jsx)("div", { 565 tabIndex: open ? 0 : -1, 566 onFocus: handleFocusSentinel, 567 ref: sentinelStart, 568 "data-testid": "sentinelStart" 569 }), 570 /*#__PURE__*/ import_react.cloneElement(children, { 571 ref: handleRef, 572 onFocus 573 }), 574 /*#__PURE__*/ (0, import_jsx_runtime.jsx)("div", { 575 tabIndex: open ? 0 : -1, 576 onFocus: handleFocusSentinel, 577 ref: sentinelEnd, 578 "data-testid": "sentinelEnd" 579 }) 580 ] }); 581} 582//#endregion 583//#region ../../node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected][email protected]__@emotion_c85e702676c56cce11ad657bc0a2dd75/node_modules/@mui/material/esm/Modal/useModal.js 584function getContainer(container) { 585 return typeof container === "function" ? container() : container; 586} 587function getHasTransition(children) { 588 return children ? children.props.hasOwnProperty("in") : false;
589} 590var noop = () => {}; 591var manager = new ModalManager(); 592function useModal(parameters) { 593 const { container, disableEscapeKeyDown = false, disableScrollLock = false, closeAfterTransition = false, onTransitionEnter, onTransitionExited, children, onClose, open, rootRef } = parameters; 594 const modal = import_react.useRef({}); 595 const mountNodeRef = import_react.useRef(null); 596 const modalRef = import_react.useRef(null); 597 const handleRef = useForkRef(modalRef, rootRef); 598 const [exited, setExited] = import_react.useState(!open); 599 const hasTransition = getHasTransition(children); 600 let ariaHiddenProp = true; 601 if (parameters["aria-hidden"] === "false" || parameters["aria-hidden"] === false) ariaHiddenProp = false; 602 const getDoc = () => ownerDocument(mountNodeRef.current); 603 const getModal = () => { 604 modal.current.modalRef = modalRef.current; 605 modal.current.mount = mountNodeRef.current; 606 return modal.current; 607 }; 608 const handleMounted = () => { 609 manager.mount(getModal(), { disableScrollLock }); 610 if (modalRef.current) modalRef.current.scrollTop = 0; 611 }; 612 const handleOpen = useEventCallback(() => { 613 const resolvedContainer = getContainer(container) || getDoc().body; 614 manager.add(getModal(), resolvedContainer); 615 if (modalRef.current) handleMounted(); 616 }); 617 const isTopModal = () => manager.isTopModal(getModal()); 618 const handlePortalRef = useEventCallback((node) => { 619 mountNodeRef.current = node; 620 if (!node) return; 621 if (open && isTopModal()) handleMounted(); 622 else if (modalRef.current) ariaHidden(modalRef.current, ariaHiddenProp); 623 }); 624 const handleClose = import_react.useCallback(() => { 625 manager.remove(getModal(), ariaHiddenProp); 626 }, [ariaHiddenProp]); 627 import_react.useEffect(() => { 628 return () => { 629 handleClose(); 630 }; 631 }, [handleClose]); 632 import_react.useEffect(() => { 633 if (open) handleOpen(); 634 else if (!hasTransition || !closeAfterTransition) handleClose(); 635 }, [ 636 open, 637 handleClose, 638 hasTransition, 639 closeAfterTransition, 640 handleOpen 641 ]); 642 const createHandleKeyDown = (otherHandlers) => (event) => { 643 otherHandlers.onKeyDown?.(event); 644 if (event.key !== "Escape" || event.which === 229 || !isTopModal()) return; 645 if (!disableEscapeKeyDown) { 646 event.stopPropagation(); 647 if (onClose) onClose(event, "escapeKeyDown"); 648 } 649 }; 650 const createHandleBackdropClick = (otherHandlers) => (event) => { 651 otherHandlers.onClick?.(event); 652 if (event.target !== event.currentTarget) return; 653 if (onClose) onClose(event, "backdropClick"); 654 }; 655 const getRootProps = (otherHandlers = {}) => { 656 const propsEventHandlers = extractEventHandlers(parameters); 657 delete propsEventHandlers.onTransitionEnter; 658 delete propsEventHandlers.onTransitionExited; 659 const externalEventHandlers = { 660 ...propsEventHandlers, 661 ...otherHandlers 662 }; 663 return { 664 role: "presentation", 665 ...externalEventHandlers, 666 onKeyDown: createHandleKeyDown(externalEventHandlers), 667 ref: handleRef 668 }; 669 }; 670 const getBackdropProps = (otherHandlers = {}) => { 671 const externalEventHandlers = otherHandlers; 672 return { 673 "aria-hidden": true, 674 ...externalEventHandlers, 675 onClick: createHandleBackdropClick(externalEventHandlers), 676 open 677 }; 678 }; 679 const getTransitionProps = () => { 680 const handleEnter = () => { 681 setExited(false); 682 if (onTransitionEnter) onTransitionEnter(); 683 }; 684 const handleExited = () => { 685 setExited(true); 686 if (onTransitionExited) onTransitionExited(); 687 if (closeAfterTransition) handleClose(); 688 }; 689 return { 690 onEnter: createChainedFunction(handleEnter, children?.props.onEnter ?? noop), 691 onExited: createChainedFunction(handleExited, children?.props.onExited ?? noop) 692 }; 693 }; 694 return { 695 getRootProps, 696 getBackdropProps, 697 getTransitionProps, 698 rootRef: handleRef, 699 portalRef: handlePortalRef, 700 isTopModal, 701 exited, 702 hasTransition 703 }; 704} 705//#endregion 706//#region ../../node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected][email protected]__@emotion_c85e702676c56cce11ad657bc0a2dd75/node_modules/@mui/material/esm/Modal/modalClasses.js 707function getModalUtilityClass(slot) { 708 return generateUtilityClass("MuiModal", slot); 709} 710generateUtilityClasses("MuiModal", [ 711 "root", 712 "hidden", 713 "backdrop" 714]); 715//#endregion 716//#region ../../node_modules/.pnpm/@[email protected]_@[email protected]_@[email protected][email protected]__@emotion_c85e702676c56cce11ad657bc0a2dd75/node_modules/@mui/material/esm/Modal/Modal.js 717var useUtilityClasses = (ownerState) => { 718 const { open, exited, classes } = ownerState; 719 return composeClasses({ 720 root: ["root", !open && exited && "hidden"], 721 backdrop: ["backdrop"] 722 }, getModalUtilityClass, classes); 723}; 724var ModalRoot = styled("div", {
725 name: "MuiModal", 726 slot: "Root", 727 overridesResolver: (props, styles) => { 728 const { ownerState } = props; 729 return [styles.root, !ownerState.open && ownerState.exited && styles.hidden]; 730 } 731})(memoTheme(({ theme }) => ({ 732 position: "fixed", 733 zIndex: (theme.vars || theme).zIndex.modal, 734 right: 0, 735 bottom: 0, 736 top: 0, 737 left: 0, 738 variants: [{ 739 props: ({ ownerState }) => !ownerState.open && ownerState.exited, 740 style: { visibility: "hidden" } 741 }] 742}))); 743var ModalBackdrop = styled(Backdrop, { 744 name: "MuiModal", 745 slot: "Backdrop" 746})({ zIndex: -1 }); 747/** 748* Modal is a lower-level construct that is leveraged by the following components: 749* 750* - [Dialog](/material-ui/api/dialog/) 751* - [Drawer](/material-ui/api/drawer/) 752* - [Menu](/material-ui/api/menu/) 753* - [Popover](/material-ui/api/popover/) 754* 755* If you are creating a modal dialog, you probably want to use the [Dialog](/material-ui/api/dialog/) component 756* rather than directly using Modal. 757* 758* This component shares many concepts with [react-overlays](https://react-bootstrap.github.io/react-overlays/#modals). 759*/ 760var Modal = /*#__PURE__*/ import_react.forwardRef(function Modal(inProps, ref) { 761 const props = useDefaultProps({ 762 name: "MuiModal", 763 props: inProps 764 }); 765 const { BackdropComponent = ModalBackdrop, BackdropProps, classes: classesProp, className, closeAfterTransition = false, children, container, component, components = {}, componentsProps = {}, disableAutoFocus = false, disableEnforceFocus = false, disableEscapeKeyDown = false, disablePortal = false, disableRestoreFocus = false, disableScrollLock = false, hideBackdrop = false, keepMounted = false, onClose, onTransitionEnter, onTransitionExited, open, slotProps = {}, slots = {}, theme, ...other } = props; 766 const propsWithDefaults = { 767 ...props, 768 closeAfterTransition, 769 disableAutoFocus, 770 disableEnforceFocus, 771 disableEscapeKeyDown, 772 disablePortal, 773 disableRestoreFocus, 774 disableScrollLock, 775 hideBackdrop, 776 keepMounted 777 }; 778 const { getRootProps, getBackdropProps, getTransitionProps, portalRef, isTopModal, exited, hasTransition } = useModal({ 779 ...propsWithDefaults, 780 rootRef: ref 781 }); 782 const ownerState = { 783 ...propsWithDefaults, 784 exited 785 }; 786 const classes = useUtilityClasses(ownerState); 787 const childProps = {}; 788 if (children.props.tabIndex === void 0) childProps.tabIndex = "-1"; 789 if (hasTransition) { 790 const { onEnter, onExited } = getTransitionProps(); 791 childProps.onEnter = onEnter; 792 childProps.onExited = onExited; 793 } 794 const externalForwardedProps = { 795 slots: { 796 root: components.Root, 797 backdrop: components.Backdrop, 798 ...slots 799 }, 800 slotProps: { 801 ...componentsProps, 802 ...slotProps 803 } 804 }; 805 const [RootSlot, rootProps] = useSlot("root", { 806 ref, 807 elementType: ModalRoot, 808 externalForwardedProps: { 809 ...externalForwardedProps, 810 ...other, 811 component 812 }, 813 getSlotProps: getRootProps, 814 ownerState, 815 className: clsx(className, classes?.root, !ownerState.open && ownerState.exited && classes?.hidden) 816 }); 817 const [BackdropSlot, backdropProps] = useSlot("backdrop", { 818 ref: BackdropProps?.ref, 819 elementType: BackdropComponent, 820 externalForwardedProps, 821 shouldForwardComponentProp: true, 822 additionalProps: BackdropProps, 823 getSlotProps: (otherHandlers) => { 824 return getBackdropProps({ 825 ...otherHandlers, 826 onClick: (event) => { 827 if (otherHandlers?.onClick) otherHandlers.onClick(event); 828 } 829 }); 830 }, 831 className: clsx(BackdropProps?.className, classes?.backdrop), 832 ownerState 833 }); 834 if (!keepMounted && !open && (!hasTransition || exited)) return null; 835 return /*#__PURE__*/ (0, import_jsx_runtime.jsx)(Portal, { 836 ref: portalRef, 837 container, 838 disablePortal, 839 children: /*#__PURE__*/ (0, import_jsx_runtime.jsxs)(RootSlot, { 840 ...rootProps, 841 children: [!hideBackdrop && BackdropComponent ? /*#__PURE__*/ (0, import_jsx_runtime.jsx)(BackdropSlot, { ...backdropProps }) : null, /*#__PURE__*/ (0, import_jsx_runtime.jsx)(FocusTrap, { 842 disableEnforceFocus, 843 disableAutoFocus, 844 disableRestoreFocus, 845 isEnabled: isTopModal, 846 open, 847 children: /*#__PURE__*/ import_react.cloneElement(children, childProps) 848 })] 849 }) 850 }); 851}); 852//#endregion 853//#region ../../node_modules/.pnpm/@[email protected]/node_modules/@navikt/aksel-icons/dist/react/esm/ExclamationmarkTriangle.js 854var __rest$1 = function(s, e) { 855 var t = {}; 856 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; 857 if (s != null && typeof Object.getOwnPropertySymbols === "function") { 858 for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; 859 } 860 return t; 861}; 862var SvgExclamationmarkTriangle = (0, import_react.forwardRef)((_a, ref) => { 863 var { title, titleId: _titleId } = _a, props = __rest$1(_a, ["title", "titleId"]); 864 let titleId = useId(); 865 titleId = title ? _titleId ? _titleId : "title-" + titleId : void 0; 866 return import_react.createElement("svg", Object.assign({ 867 xmlns: "http://www.w3.org/2000/svg", 868 width: "1em", 869 height: "1em", 870 fill: "none", 871 viewBox: "0 0 24 24", 872 focusable: false, 873 role: "img", 874 ref, 875 "aria-labelledby": titleId 876 }, props), title ? import_react.createElement("title", { id: titleId }, title) : null, import_react.createElement("path", { 877 fill: "currentColor", 878 fillRule: "evenodd", 879 d: "M12 2.25a.75.75 0 0 1 .656.387l9.527 17.25A.75.75 0 0 1 21.526 21H2.474a.75.75 0 0 1-.657-1.113l9.527-17.25A.7
8795.75 0 0 1 12 2.25m8.255 17.25L12 4.551 3.745 19.5zM12 8.75a.75.75 0 0 1 .75.75v4a.75.75 0 0 1-1.5 0v-4a.75.75 0 0 1 .75-.75m0 6.75a1 1 0 1 0 0 2 1 1 0 0 0 0-2", 880 clipRule: "evenodd" 881 })); 882}); 883//#endregion 884//#region ../../node_modules/.pnpm/@[email protected]/node_modules/@navikt/aksel-icons/dist/react/esm/InformationSquare.js 885var __rest = function(s, e) { 886 var t = {}; 887 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; 888 if (s != null && typeof Object.getOwnPropertySymbols === "function") { 889 for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; 890 } 891 return t; 892}; 893var SvgInformationSquare = (0, import_react.forwardRef)((_a, ref) => { 894 var { title, titleId: _titleId } = _a, props = __rest(_a, ["title", "titleId"]); 895 let titleId = useId(); 896 titleId = title ? _titleId ? _titleId : "title-" + titleId : void 0; 897 return import_react.createElement("svg", Object.assign({ 898 xmlns: "http://www.w3.org/2000/svg", 899 width: "1em", 900 height: "1em", 901 fill: "none", 902 viewBox: "0 0 24 24", 903 focusable: false, 904 role: "img", 905 ref, 906 "aria-labelledby": titleId 907 }, props), title ? import_react.createElement("title", { id: titleId }, title) : null, import_react.createElement("path", { 908 fill: "currentColor", 909 fillRule: "evenodd", 910 d: "M4 3.25a.75.75 0 0 0-.75.75v16c0 .414.336.75.75.75h16a.75.75 0 0 0 .75-.75V4a.75.75 0 0 0-.75-.75zm.75 16V4.75h14.5v14.5zM11 7.75a1 1 0 1 1 2 0 1 1 0 0 1-2 0M10.5 10a.75.75 0 0 0 0 1.5h.75v4h-.75a.75.75 0 0 0 0 1.5h3a.75.75 0 0 0 0-1.5h-.75v-4.75A.75.75 0 0 0 12 10z", 911 clipRule: "evenodd" 912 })); 913}); 914//#endregion 915export { getScrollbarSize as a, getActiveElement_default as c, FOCUSABLE_ATTRIBUTE as i, ownerWindow as l, SvgExclamationmarkTriangle as n, Backdrop as o, Modal as r, Fade as s, SvgInformationSquare as t }; 916 917//# sourceMappingURL=InformationSquare-BGYjnciP.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.