PageSourceSearch

https://lanekassen.no/dist/assets/InformationSquare-BGYjnciP.js

js lanekassen.no collected 2026-10-02 03:04:45 UTC 34,972 bytes, 917 lines download raw bytes

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.