if (registrationNameDependencies.hasOwnProperty(propKey)) "function" !== typeof value && warnForInvalidEventListener(propKey, value); else if (true !== props.suppressHydrationWarning) switch (propKey) { case "children": "string" !== typeof value && "number" !== typeof value || warnForPropDifference( "children", domElement.textContent, value, serverDifferences ); continue; case "suppressContentEditableWarning": case "suppressHydrationWarning": case "defaultValue": case "defaultChecked": case "innerHTML": case "ref": continue; case "dangerouslySetInnerHTML": attributes = domElement.innerHTML; value = value ? value.__html : void 0; null != value && (value = normalizeHTML(domElement, value), warnForPropDifference( propKey, attributes, value, serverDifferences )); continue; case "style": extraAttributes.delete(propKey); diffHydratedStyles(domElement, value, serverDifferences); continue; case "offsetParent": case "offsetTop": case "offsetLeft": case "offsetWidth": case "offsetHeight": case "isContentEditable": case "outerText": case "outerHTML": extraAttributes.delete(propKey.toLowerCase()); console.error( "Assignment to read-only property will result in a no-op: `%s`", propKey ); continue; case "className": extraAttributes.delete("class"); attributes = getValueForAttributeOnCustomComponent( domElement, "class", value ); warnForPropDifference( "className", attributes, value, serverDifferences ); continue; default: hostContext.context === HostContextNamespaceNone && "svg" !== tag && "math" !== tag ? extraAttributes.delete(propKey.toLowerCase()) : extraAttributes.delete(propKey), attributes = getValueForAttributeOnCustomComponent( domElement, propKey, value ), warnForPropDifference( propKey, attributes, value, serverDifferences ); } } } } else for (value in props) if (props.hasOwnProperty(value) && (propKey = props[value], null != propKey)) { if (registrationNameDependencies.hasOwnProperty(value)) "function" !== typeof propKey && warnForInvalidEventListener(value, propKey); else if (true !== props.suppressHydrationWarning) switch (value) { case "children": "string" !== typeof propKey && "number" !== typeof propKey || warnForPropDifference( "children", domElement.textContent, propKey, serverDifferences ); continue; case "suppressContentEditableWarning": case "suppressHydrationWarning": case "value": case "checked": case "selected": case "defaultValue": case "defaultChecked": case "innerHTML": case "ref": continue; case "dangerouslySetInnerHTML": attributes = domElement.innerHTML; propKey = propKey ? propKey.__html : void 0; null != propKey && (propKey = normalizeHTML(domElement, propKey), attributes !== propKey && (serverDifferences[value] = { __html: attributes })); continue; case "className": hydrateAttribute( domElement, value, "class", propKey, extraAttributes, serverDifferences ); continue; case "tabIndex": hydrateAttribute( domElement, value, "tabindex", propKey, extraAttributes, serverDifferences ); continue; case "style": extraAttributes.delete(value); diffHydratedStyles(domElement, propKey, serverDifferences); continue; case "multiple": extraAttributes.delete(value); warnForPropDifference( value, domElement.multiple, propKey, serverDifferences ); continue; case "muted": extraAttributes.delete(value); warnForPropDifference( value, domElement.muted, propKey, serverDifferences ); continue; case "autoFocus": extraAttributes.delete("autofocus"); warnForPropDifference( value, domElement.autofocus, propKey, serverDifferences ); continue; case "data": if ("object" !== tag) { extraAttributes.delete(value); attributes = domElement.getAttribute("data"); warnForPropDifference( value, attributes, propKey, serverDifferences ); continue; } case "src": case "href": if (!("" !== propKey || "a" === tag && "href" === value || "object" === tag && "data" === value)) { "src" === value ? console.error( 'An empty string ("") was passed to the %s attribute. This may cause the browser to download the whole page again over the network. To fix this, either do not render the element at all or pass null to %s instead of an empty string.', value, value ) : console.error( 'An empty string ("") was passed to the %s attribute. To fix this, either do not render the element at all or pass null to %s instead of an empty string.', value, value ); hydrateSanitizedAttribute( domElement, value, value, null, extraAttributes, serverDifferences ); continue; } hydrateSanitizedAttribute( domElement, value, value, propKey, extraAttributes, serverDifferences ); continue; case "action": case "formAction": attributes = domElement.getAttribute(value); if ("function" === typeof propKey) { extraAttributes.delete(value.toLowerCase()); "formAction" === value ? (extraAttributes.delete("name"), extraAttributes.delete("formenctype"), extraAttributes.delete("formmethod"), extraAttributes.delete("formtarget")) : (extraAttributes.delete("enctype"), extraAttributes.delete("method"), extraAttributes.delete("target")); continue; } else if (attributes === EXPECTED_FORM_ACTION_URL) { extraAttributes.delete(value.toLowerCase()); warnForPropDifference( value, "function", propKey, serverDifferences ); continue; } hydrateSanitizedAttribute( domElement, value, value.toLowerCase(), propKey, extraAttributes, serverDifferences ); continue; case "xlinkHref": hydrateSanitizedAttribute( domElement, value, "xlink:href", propKey, extraAttributes, serverDifferences ); continue; case "contentEditable": hydrateBooleanishAttribute( domElement, value, "contenteditable", propKey, extraAttributes, serverDifferences ); continue; case "spellCheck": hydrateBooleanishAttribute( domElement, value, "spellcheck", propKey, extraAttributes, serverDifferences ); continue; case "draggable": case "autoReverse": case "externalResourcesRequired": case "focusable": case "preserveAlpha": hydrateBooleanishAttribute( domElement, value, value, propKey, extraAttributes, serverDifferences ); continue; case "allowFullScreen": case "async": case "autoPlay": case "controls": case "default": case "defer": case "disabled": case "disablePictureInPicture": case "disableRemotePlayback": case "formNoValidate": case "hidden": case "loop": case "noModule": case "noValidate": case "open": case "playsInline": case "readOnly": case "required": case "reversed": case "scoped": case "seamless": case "itemScope": hydrateBooleanAttribute( domElement, value, value.toLowerCase(), propKey, extraAttributes, serverDifferences ); continue; case "capture": case "download": a: { i = domElement; var attributeName = attributes = value, serverDifferences$jscomp$0 = serverDifferences; extraAttributes.delete(attributeName); i = i.getAttribute(attributeName); if (null === i) switch (typeof propKey) { case "undefined": case "function": case "symbol": break a; default: if (false === propKey) break a; } else if (null != propKey) switch (typeof propKey) { case "function": case "symbol": break; case "boolean": if (true === propKey && "" === i) break a; break; default: if (checkAttributeStringCoercion(propKey, attributes), i === "" + propKey) break a; } warnForPropDifference( attributes, i, propKey, serverDifferences$jscomp$0 ); } continue; case "cols": case "rows": case "size": case "span": a: { i = domElement; attributeName = attributes = value; serverDifferences$jscomp$0 = serverDifferences; extraAttributes.delete(attributeName); i = i.getAttribute(attributeName); if (null === i) switch (typeof propKey) { case "undefined": case "function": case "symbol": case "boolean": break a; default: if (isNaN(propKey) || 1 > propKey) break a; } else if (null != propKey) switch (typeof propKey) { case "function": case "symbol": case "boolean": break; default: if (!(isNaN(propKey) || 1 > propKey) && (checkAttributeStringCoercion(propKey, attributes), i === "" + propKey)) break a; } warnForPropDifference( attributes, i, propKey, serverDifferences$jscomp$0 ); } continue; case "rowSpan": hydrateNumericAttribute( domElement, value, "rowspan", propKey, extraAttributes, serverDifferences ); continue; case "start": hydrateNumericAttribute( domElement, value, value, propKey, extraAttributes, serverDifferences ); continue; case "xHeight": hydrateAttribute( domElement, value, "x-height", propKey, extraAttributes, serverDifferences ); continue; case "xlinkActuate": hydrateAttribute( domElement, value, "xlink:actuate", propKey, extraAttributes, serverDifferences ); continue; case "xlinkArcrole": hydrateAttribute( domElement, value, "xlink:arcrole", propKey, extraAttributes, serverDifferences ); continue; case "xlinkRole": hydrateAttribute( domElement, value, "xlink:role", propKey, extraAttributes, serverDifferences ); continue; case "xlinkShow": hydrateAttribute( domElement, value, "xlink:show", propKey, extraAttributes, serverDifferences ); continue; case "xlinkTitle": hydrateAttribute( domElement, value, "xlink:title", propKey, extraAttributes, serverDifferences ); continue; case "xlinkType": hydrateAttribute( domElement, value, "xlink:type", propKey, extraAttributes, serverDifferences ); continue; case "xmlBase": hydrateAttribute( domElement, value, "xml:base", propKey, extraAttributes, serverDifferences ); continue; case "xmlLang": hydrateAttribute( domElement, value, "xml:lang", propKey, extraAttributes, serverDifferences ); continue; case "xmlSpace": hydrateAttribute( domElement, value, "xml:space", propKey, extraAttributes, serverDifferences ); continue; case "inert": "" !== propKey || didWarnForNewBooleanPropsWithEmptyValue[value] || (didWarnForNewBooleanPropsWithEmptyValue[value] = true, console.error( "Received an empty string for a boolean attribute `%s`. This will treat the attribute as if it were false. Either pass `false` to silence this warning, or pass `true` if you used an empty string in earlier versions of React to indicate this attribute is true.", value )); hydrateBooleanAttribute( domElement, value, value, propKey, extraAttributes, serverDifferences ); continue; default: if (!(2 < value.length) || "o" !== value[0] && "O" !== value[0] || "n" !== value[1] && "N" !== value[1]) { i = getAttributeAlias(value); attributes = false; hostContext.context === HostContextNamespaceNone && "svg" !== tag && "math" !== tag ? extraAttributes.delete(i.toLowerCase()) : (attributeName = value.toLowerCase(), attributeName = possibleStandardNames.hasOwnProperty( attributeName ) ? possibleStandardNames[attributeName] || null : null, null !== attributeName && attributeName !== value && (attributes = true, extraAttributes.delete(attributeName)), extraAttributes.delete(i)); a: if (attributeName = domElement, serverDifferences$jscomp$0 = i, i = propKey, isAttributeNameSafe(serverDifferences$jscomp$0)) if (attributeName.hasAttribute(serverDifferences$jscomp$0)) attributeName = attributeName.getAttribute( serverDifferences$jscomp$0 ), checkAttributeStringCoercion( i, serverDifferences$jscomp$0 ), i = attributeName === "" + i ? i : attributeName; else { switch (typeof i) { case "function": case "symbol": break a; case "boolean": if (attributeName = serverDifferences$jscomp$0.toLowerCase().slice(0, 5), "data-" !== attributeName && "aria-" !== attributeName) break a; } i = void 0 === i ? void 0 : null; } else i = void 0; attributes || warnForPropDifference( value, i, propKey, serverDifferences ); } } } 0 < extraAttributes.size && true !== props.suppressHydrationWarning && warnForExtraAttributes(domElement, extraAttributes, serverDifferences); return 0 === Object.keys(serverDifferences).length ? null : serverDifferences; } function propNamesListJoin(list, combinator) { switch (list.length) { case 0: return ""; case 1: return list[0]; case 2: return list[0] + " " + combinator + " " + list[1]; default: return list.slice(0, -1).join(", ") + ", " + combinator + " " + list[list.length - 1]; } } function getOwnerDocumentFromRootContainer(rootContainerElement) { return 9 === rootContainerElement.nodeType ? rootContainerElement : rootContainerElement.ownerDocument; } function getOwnHostContext(namespaceURI) { switch (namespaceURI) { case SVG_NAMESPACE: return HostContextNamespaceSvg; case MATH_NAMESPACE: return HostContextNamespaceMath; default: return HostContextNamespaceNone; } } function getChildHostContextProd(parentNamespace, type) { if (parentNamespace === HostContextNamespaceNone) switch (type) { case "svg": return HostContextNamespaceSvg; case "math": return HostContextNamespaceMath; default: return HostContextNamespaceNone; } return parentNamespace === HostContextNamespaceSvg && "foreignObject" === type ? HostContextNamespaceNone : parentNamespace; } function shouldSetTextContent(type, props) { return "textarea" === type || "noscript" === type || "string" === typeof props.children || "number" === typeof props.children || "bigint" === typeof props.children || "object" === typeof props.dangerouslySetInnerHTML && null !== props.dangerouslySetInnerHTML && null != props.dangerouslySetInnerHTML.__html; } function shouldAttemptEagerTransition() { var event = window.event; if (event && "popstate" === event.type) { if (event === currentPopstateTransitionEvent) return false; currentPopstateTransitionEvent = event; return true; } currentPopstateTransitionEvent = null; return false; } function handleErrorInNextTick(error) { setTimeout(function() { throw error; }); } function commitMount(domElement, type, newProps) { switch (type) { case "button": case "input": case "select": case "textarea": newProps.autoFocus && domElement.focus(); break; case "img": newProps.src ? domElement.src = newProps.src : newProps.srcSet && (domElement.srcset = newProps.srcSet); } } function commitUpdate(domElement, type, oldProps, newProps) { updateProperties(domElement, type, oldProps, newProps); domElement[internalPropsKey] = newProps; } function resetTextContent(domElement) { setTextContent(domElement, ""); } function commitTextUpdate(textInstance, oldText, newText) { textInstance.nodeValue = newText; } function removeChild(parentInstance, child) { parentInstance.removeChild(child); } function removeChildFromContainer(container, child) { 8 === container.nodeType ? container.parentNode.removeChild(child) : container.removeChild(child); } function clearSuspenseBoundary(parentInstance, suspenseInstance) { var node = suspenseInstance, depth = 0; do { var nextNode = node.nextSibling; parentInstance.removeChild(node); if (nextNode && 8 === nextNode.nodeType) if (node = nextNode.data, node === SUSPENSE_END_DATA) { if (0 === depth) { parentInstance.removeChild(nextNode); retryIfBlockedOn(suspenseInstance); return; } depth--; } else node !== SUSPENSE_START_DATA && node !== SUSPENSE_PENDING_START_DATA && node !== SUSPENSE_FALLBACK_START_DATA || depth++; node = nextNode; } while (node); retryIfBlockedOn(suspenseInstance); } function hideInstance(instance) { instance = instance.style; "function" === typeof instance.setProperty ? instance.setProperty("display", "none", "important") : instance.display = "none"; } function hideTextInstance(textInstance) { textInstance.nodeValue = ""; } function unhideInstance(instance, props) { props = props[STYLE]; props = void 0 !== props && null !== props && props.hasOwnProperty("display") ? props.display : null; instance.style.display = null == props || "boolean" === typeof props ? "" : ("" + props).trim(); } function unhideTextInstance(textInstance, text) { textInstance.nodeValue = text; } function clearContainerSparingly(container) { var nextNode = container.firstChild; nextNode && 10 === nextNode.nodeType && (nextNode = nextNode.nextSibling); for (; nextNode; ) { var node = nextNode; nextNode = nextNode.nextSibling; switch (node.nodeName) { case "HTML": case "HEAD": case "BODY": clearContainerSparingly(node); detachDeletedInstance(node); continue; case "SCRIPT": case "STYLE": continue; case "LINK": if ("stylesheet" === node.rel.toLowerCase()) continue; } container.removeChild(node); } } function canHydrateInstance(instance, type, props, inRootOrSingleton) { for (; 1 === instance.nodeType; ) { var anyProps = props; if (instance.nodeName.toLowerCase() !== type.toLowerCase()) { if (!inRootOrSingleton && ("INPUT" !== instance.nodeName || "hidden" !== instance.type)) break; } else if (!inRootOrSingleton) if ("input" === type && "hidden" === instance.type) { checkAttributeStringCoercion(anyProps.name, "name"); var name = null == anyProps.name ? null : "" + anyProps.name; if ("hidden" === anyProps.type && instance.getAttribute("name") === name) return instance; } else return instance; else if (!instance[internalHoistableMarker]) switch (type) { case "meta": if (!instance.hasAttribute("itemprop")) break; return instance; case "link": name = instance.getAttribute("rel"); if ("stylesheet" === name && instance.hasAttribute("data-precedence")) break; else if (name !== anyProps.rel || instance.getAttribute("href") !== (null == anyProps.href ? null : anyProps.href) || instance.getAttribute("crossorigin") !== (null == anyProps.crossOrigin ? null : anyProps.crossOrigin) || instance.getAttribute("title") !== (null == anyProps.title ? null : anyProps.title)) break; return instance; case "style": if (instance.hasAttribute("data-precedence")) break; return instance; case "script": name = instance.getAttribute("src"); if ((name !== (null == anyProps.src ? null : anyProps.src) || instance.getAttribute("type") !== (null == anyProps.type ? null : anyProps.type) || instance.getAttribute("crossorigin") !== (null == anyProps.crossOrigin ? null : anyProps.crossOrigin)) && name && instance.hasAttribute("async") && !instance.hasAttribute("itemprop")) break; return instance; default: return instance; } instance = getNextHydratable(instance.nextSibling); if (null === instance) break; } return null; } function canHydrateTextInstance(instance, text, inRootOrSingleton) { if ("" === text) return null; for (; 3 !== instance.nodeType; ) { if ((1 !== instance.nodeType || "INPUT" !== instance.nodeName || "hidden" !== instance.type) && !inRootOrSingleton) return null; instance = getNextHydratable(instance.nextSibling); if (null === instance) return null; } return instance; } function getNextHydratable(node) { for (; null != node; node = node.nextSibling) { var nodeType = node.nodeType; if (1 === nodeType || 3 === nodeType) break; if (8 === nodeType) { nodeType = node.data; if (nodeType === SUSPENSE_START_DATA || nodeType === SUSPENSE_FALLBACK_START_DATA || nodeType === SUSPENSE_PENDING_START_DATA || nodeType === FORM_STATE_IS_MATCHING || nodeType === FORM_STATE_IS_NOT_MATCHING) break; if (nodeType === SUSPENSE_END_DATA) return null; } } return node; } function describeHydratableInstanceForDevWarnings(instance) { if (1 === instance.nodeType) { for (var JSCompiler_temp_const = instance.nodeName.toLowerCase(), serverDifferences = {}, attributes = instance.attributes, i = 0; i < attributes.length; i++) { var attr = attributes[i]; serverDifferences[getPropNameFromAttributeName(attr.name)] = "style" === attr.name.toLowerCase() ? getStylesObjectFromElement(instance) : attr.value; } return { type: JSCompiler_temp_const, props: serverDifferences }; } return 8 === instance.nodeType ? { type: "Suspense", props: {} } : instance.nodeValue; } function diffHydratedTextForDevWarnings(textInstance, text, parentProps) { return null === parentProps || true !== parentProps[SUPPRESS_HYDRATION_WARNING] ? (textInstance.nodeValue === text ? textInstance = null : (text = normalizeMarkupForTextOrAttribute(text), textInstance = normalizeMarkupForTextOrAttribute(textInstance.nodeValue) === text ? null : textInstance.nodeValue), textInstance) : null; } function getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance) { suspenseInstance = suspenseInstance.nextSibling; for (var depth = 0; suspenseInstance; ) { if (8 === suspenseInstance.nodeType) { var data = suspenseInstance.data; if (data === SUSPENSE_END_DATA) { if (0 === depth) return getNextHydratable(suspenseInstance.nextSibling); depth--; } else data !== SUSPENSE_START_DATA && data !== SUSPENSE_FALLBACK_START_DATA && data !== SUSPENSE_PENDING_START_DATA || depth++; } suspenseInstance = suspenseInstance.nextSibling; } return null; } function getParentSuspenseInstance(targetInstance) { targetInstance = targetInstance.previousSibling; for (var depth = 0; targetInstance; ) { if (8 === targetInstance.nodeType) { var data = targetInstance.data; if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) { if (0 === depth) return targetInstance; depth--; } else data === SUSPENSE_END_DATA && depth++; } targetInstance = targetInstance.previousSibling; } return null; } function commitHydratedContainer(container) { retryIfBlockedOn(container); } function commitHydratedSuspenseInstance(suspenseInstance) { retryIfBlockedOn(suspenseInstance); } function resolveSingletonInstance(type, props, rootContainerInstance, hostContext, validateDOMNestingDev) { validateDOMNestingDev && validateDOMNesting(type, hostContext.ancestorInfo); props = getOwnerDocumentFromRootContainer(rootContainerInstance); switch (type) { case "html": type = props.documentElement; if (!type) throw Error( "React expected an element (document.documentElement) to exist in the Document but one was not found. React never removes the documentElement for any Document it renders into so the cause is likely in some other script running on this page." ); return type; case "head": type = props.head; if (!type) throw Error( "React expected a element (document.head) to exist in the Document but one was not found. React never removes the head for any Document it renders into so the cause is likely in some other script running on this page." ); return type; case "body": type = props.body; if (!type) throw Error( "React expected a element (document.body) to exist in the Document but one was not found. React never removes the body for any Document it renders into so the cause is likely in some other script running on this page." ); return type; default: throw Error( "resolveSingletonInstance was called with an element type that is not supported. This is a bug in React." ); } } function acquireSingletonInstance(type, props, instance, internalInstanceHandle) { if (getInstanceFromNode(instance)) { var tagName = instance.tagName.toLowerCase(); console.error( "You are mounting a new %s component when a previous one has not first unmounted. It is an error to render more than one %s component at a time and attributes and children of these components will likely fail in unpredictable ways. Please only render a single instance of <%s> and if you need to mount a new one, ensure any previous ones have unmounted first.", tagName, tagName, tagName ); } switch (type) { case "html": case "head": case "body": break; default: console.error( "acquireSingletonInstance was called with an element type that is not supported. This is a bug in React." ); } for (tagName = instance.attributes; tagName.length; ) instance.removeAttributeNode(tagName[0]); setInitialProperties(instance, type, props); instance[internalInstanceKey] = internalInstanceHandle; instance[internalPropsKey] = props; } function getHoistableRoot(container) { return "function" === typeof container.getRootNode ? container.getRootNode() : container.ownerDocument; } function preconnectAs(rel, href, crossOrigin) { var ownerDocument = globalDocument; if (ownerDocument && "string" === typeof href && href) { var limitedEscapedHref = escapeSelectorAttributeValueInsideDoubleQuotes(href); limitedEscapedHref = 'link[rel="' + rel + '"][href="' + limitedEscapedHref + '"]'; "string" === typeof crossOrigin && (limitedEscapedHref += '[crossorigin="' + crossOrigin + '"]'); preconnectsSet.has(limitedEscapedHref) || (preconnectsSet.add(limitedEscapedHref), rel = { rel, crossOrigin, href }, null === ownerDocument.querySelector(limitedEscapedHref) && (href = ownerDocument.createElement("link"), setInitialProperties(href, "link", rel), markNodeAsHoistable(href), ownerDocument.head.appendChild(href))); } } function getResource(type, currentProps, pendingProps, currentResource) { var resourceRoot = (resourceRoot = rootInstanceStackCursor.current) ? getHoistableRoot(resourceRoot) : null; if (!resourceRoot) throw Error( '"resourceRoot" was expected to exist. This is a bug in React.' ); switch (type) { case "meta": case "title": return null; case "style": return "string" === typeof pendingProps.precedence && "string" === typeof pendingProps.href ? (pendingProps = getStyleKey(pendingProps.href), currentProps = getResourcesFromRoot(resourceRoot).hoistableStyles, currentResource = currentProps.get(pendingProps), currentResource || (currentResource = { type: "style", instance: null, count: 0, state: null }, currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null }; case "link": if ("stylesheet" === pendingProps.rel && "string" === typeof pendingProps.href && "string" === typeof pendingProps.precedence) { type = getStyleKey(pendingProps.href); var _styles = getResourcesFromRoot(resourceRoot).hoistableStyles, _resource = _styles.get(type); if (!_resource && (resourceRoot = resourceRoot.ownerDocument || resourceRoot, _resource = { type: "stylesheet", instance: null, count: 0, state: { loading: NotLoaded, preload: null } }, _styles.set(type, _resource), (_styles = resourceRoot.querySelector( getStylesheetSelectorFromKey(type) )) && !_styles._p && (_resource.instance = _styles, _resource.state.loading = Loaded | Inserted), !preloadPropsMap.has(type))) { var preloadProps = { rel: "preload", as: "style", href: pendingProps.href, crossOrigin: pendingProps.crossOrigin, integrity: pendingProps.integrity, media: pendingProps.media, hrefLang: pendingProps.hrefLang, referrerPolicy: pendingProps.referrerPolicy }; preloadPropsMap.set(type, preloadProps); _styles || preloadStylesheet( resourceRoot, type, preloadProps, _resource.state ); } if (currentProps && null === currentResource) throw pendingProps = "\n\n - " + describeLinkForResourceErrorDEV(currentProps) + "\n + " + describeLinkForResourceErrorDEV(pendingProps), Error( "Expected not to update to be updated to a stylesheet with precedence. Check the `rel`, `href`, and `precedence` props of this component. Alternatively, check whether two different components render in the same slot or share the same key." + pendingProps ); return _resource; } if (currentProps && null !== currentResource) throw pendingProps = "\n\n - " + describeLinkForResourceErrorDEV(currentProps) + "\n + " + describeLinkForResourceErrorDEV(pendingProps), Error( "Expected stylesheet with precedence to not be updated to a different kind of . Check the `rel`, `href`, and `precedence` props of this component. Alternatively, check whether two different components render in the same slot or share the same key." + pendingProps ); return null; case "script": return currentProps = pendingProps.async, pendingProps = pendingProps.src, "string" === typeof pendingProps && currentProps && "function" !== typeof currentProps && "symbol" !== typeof currentProps ? (pendingProps = getScriptKey(pendingProps), currentProps = getResourcesFromRoot(resourceRoot).hoistableScripts, currentResource = currentProps.get(pendingProps), currentResource || (currentResource = { type: "script", instance: null, count: 0, state: null }, currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null }; default: throw Error( 'getResource encountered a type it did not expect: "' + type + '". this is a bug in React.' ); } } function describeLinkForResourceErrorDEV(props) { var describedProps = 0, description = " describedProps && (description += " ..."); return description + " />"; } function getStyleKey(href) { return 'href="' + escapeSelectorAttributeValueInsideDoubleQuotes(href) + '"'; } function getStylesheetSelectorFromKey(key) { return 'link[rel="stylesheet"][' + key + "]"; } function stylesheetPropsFromRawProps(rawProps) { return assign({}, rawProps, { "data-precedence": rawProps.precedence, precedence: null }); } function preloadStylesheet(ownerDocument, key, preloadProps, state) { ownerDocument.querySelector( 'link[rel="preload"][as="style"][' + key + "]" ) ? state.loading = Loaded : (key = ownerDocument.createElement("link"), state.preload = key, key.addEventListener("load", function() { return state.loading |= Loaded; }), key.addEventListener("error", function() { return state.loading |= Errored; }), setInitialProperties(key, "link", preloadProps), markNodeAsHoistable(key), ownerDocument.head.appendChild(key)); } function getScriptKey(src) { return '[src="' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '"]'; } function getScriptSelectorFromKey(key) { return "script[async]" + key; } function acquireResource(hoistableRoot, resource, props) { resource.count++; if (null === resource.instance) switch (resource.type) { case "style": var instance = hoistableRoot.querySelector( 'style[data-href~="' + escapeSelectorAttributeValueInsideDoubleQuotes(props.href) + '"]' ); if (instance) return resource.instance = instance, markNodeAsHoistable(instance), instance; var styleProps = assign({}, props, { "data-href": props.href, "data-precedence": props.precedence, href: null, precedence: null }); instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement("style"); markNodeAsHoistable(instance); setInitialProperties(instance, "style", styleProps); insertStylesheet(instance, props.precedence, hoistableRoot); return resource.instance = instance; case "stylesheet": styleProps = getStyleKey(props.href); var _instance = hoistableRoot.querySelector( getStylesheetSelectorFromKey(styleProps) ); if (_instance) return resource.state.loading |= Inserted, resource.instance = _instance, markNodeAsHoistable(_instance), _instance; instance = stylesheetPropsFromRawProps(props); (styleProps = preloadPropsMap.get(styleProps)) && adoptPreloadPropsForStylesheet(instance, styleProps); _instance = (hoistableRoot.ownerDocument || hoistableRoot).createElement("link"); markNodeAsHoistable(_instance); var linkInstance = _instance; linkInstance._p = new Promise(function(resolve, reject) { linkInstance.onload = resolve; linkInstance.onerror = reject; }); setInitialProperties(_instance, "link", instance); resource.state.loading |= Inserted; insertStylesheet(_instance, props.precedence, hoistableRoot); return resource.instance = _instance; case "script": _instance = getScriptKey(props.src); if (styleProps = hoistableRoot.querySelector( getScriptSelectorFromKey(_instance) )) return resource.instance = styleProps, markNodeAsHoistable(styleProps), styleProps; instance = props; if (styleProps = preloadPropsMap.get(_instance)) instance = assign({}, props), adoptPreloadPropsForScript(instance, styleProps); hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot; styleProps = hoistableRoot.createElement("script"); markNodeAsHoistable(styleProps); setInitialProperties(styleProps, "link", instance); hoistableRoot.head.appendChild(styleProps); return resource.instance = styleProps; case "void": return null; default: throw Error( 'acquireResource encountered a resource type it did not expect: "' + resource.type + '". this is a bug in React.' ); } else "stylesheet" === resource.type && (resource.state.loading & Inserted) === NotLoaded && (instance = resource.instance, resource.state.loading |= Inserted, insertStylesheet(instance, props.precedence, hoistableRoot)); return resource.instance; } function insertStylesheet(instance, precedence, root2) { for (var nodes = root2.querySelectorAll( 'link[rel="stylesheet"][data-precedence],style[data-precedence]' ), last = nodes.length ? nodes[nodes.length - 1] : null, prior = last, i = 0; i < nodes.length; i++) { var node = nodes[i]; if (node.dataset.precedence === precedence) prior = node; else if (prior !== last) break; } prior ? prior.parentNode.insertBefore(instance, prior.nextSibling) : (precedence = 9 === root2.nodeType ? root2.head : root2, precedence.insertBefore(instance, precedence.firstChild)); } function adoptPreloadPropsForStylesheet(stylesheetProps, preloadProps) { null == stylesheetProps.crossOrigin && (stylesheetProps.crossOrigin = preloadProps.crossOrigin); null == stylesheetProps.referrerPolicy && (stylesheetProps.referrerPolicy = preloadProps.referrerPolicy); null == stylesheetProps.title && (stylesheetProps.title = preloadProps.title); } function adoptPreloadPropsForScript(scriptProps, preloadProps) { null == scriptProps.crossOrigin && (scriptProps.crossOrigin = preloadProps.crossOrigin); null == scriptProps.referrerPolicy && (scriptProps.referrerPolicy = preloadProps.referrerPolicy); null == scriptProps.integrity && (scriptProps.integrity = preloadProps.integrity); } function getHydratableHoistableCache(type, keyAttribute, ownerDocument) { if (null === tagCaches) { var cache = /* @__PURE__ */ new Map(); var caches = tagCaches = /* @__PURE__ */ new Map(); caches.set(ownerDocument, cache); } else caches = tagCaches, cache = caches.get(ownerDocument), cache || (cache = /* @__PURE__ */ new Map(), caches.set(ownerDocument, cache)); if (cache.has(type)) return cache; cache.set(type, null); ownerDocument = ownerDocument.getElementsByTagName(type); for (caches = 0; caches < ownerDocument.length; caches++) { var node = ownerDocument[caches]; if (!(node[internalHoistableMarker] || node[internalInstanceKey] || "link" === type && "stylesheet" === node.getAttribute("rel")) && node.namespaceURI !== SVG_NAMESPACE) { var nodeKey = node.getAttribute(keyAttribute) || ""; nodeKey = type + nodeKey; var existing = cache.get(nodeKey); existing ? existing.push(node) : cache.set(nodeKey, [node]); } } return cache; } function mountHoistable(hoistableRoot, type, instance) { hoistableRoot = hoistableRoot.ownerDocument || hoistableRoot; hoistableRoot.head.insertBefore( instance, "title" === type ? hoistableRoot.querySelector("head > title") : null ); } function isHostHoistableType(type, props, hostContext) { var outsideHostContainerContext = !hostContext.ancestorInfo.containerTagInScope; if (hostContext.context === HostContextNamespaceSvg || null != props.itemProp) return !outsideHostContainerContext || null == props.itemProp || "meta" !== type && "title" !== type && "style" !== type && "link" !== type && "script" !== type || console.error( "Cannot render a <%s> outside the main document if it has an `itemProp` prop. `itemProp` suggests the tag belongs to an `itemScope` which can appear anywhere in the DOM. If you were intending for React to hoist this <%s> remove the `itemProp` prop. Otherwise, try moving this tag into the or of the Document.", type, type ), false; switch (type) { case "meta": case "title": return true; case "style": if ("string" !== typeof props.precedence || "string" !== typeof props.href || "" === props.href) { outsideHostContainerContext && console.error( 'Cannot render a