dWork, commitCallbacks, updateQueue, instance ); } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } } } function callGetSnapshotBeforeUpdates(instance, prevProps, prevState) { return instance.getSnapshotBeforeUpdate(prevProps, prevState); } function commitClassSnapshot(finishedWork, current2) { var prevProps = current2.memoizedProps, prevState = current2.memoizedState; current2 = finishedWork.stateNode; finishedWork.type.defaultProps || "ref" in finishedWork.memoizedProps || didWarnAboutReassigningProps || (current2.props !== finishedWork.memoizedProps && console.error( "Expected %s props to match memoized props before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance" ), current2.state !== finishedWork.memoizedState && console.error( "Expected %s state to match memoized state before getSnapshotBeforeUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance" )); try { var resolvedPrevProps = resolveClassComponentProps( finishedWork.type, prevProps, finishedWork.elementType === finishedWork.type ); var snapshot = runWithFiberInDEV( finishedWork, callGetSnapshotBeforeUpdates, current2, resolvedPrevProps, prevState ); prevProps = didWarnAboutUndefinedSnapshotBeforeUpdate; void 0 !== snapshot || prevProps.has(finishedWork.type) || (prevProps.add(finishedWork.type), runWithFiberInDEV(finishedWork, function() { console.error( "%s.getSnapshotBeforeUpdate(): A snapshot value (or null) must be returned. You have returned undefined.", getComponentNameFromFiber(finishedWork) ); })); current2.__reactInternalSnapshotBeforeUpdate = snapshot; } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } } function safelyCallComponentWillUnmount(current2, nearestMountedAncestor, instance) { instance.props = resolveClassComponentProps( current2.type, current2.memoizedProps ); instance.state = current2.memoizedState; shouldProfile(current2) ? (startEffectTimer(), runWithFiberInDEV( current2, callComponentWillUnmountInDEV, current2, nearestMountedAncestor, instance ), recordEffectDuration()) : runWithFiberInDEV( current2, callComponentWillUnmountInDEV, current2, nearestMountedAncestor, instance ); } function commitAttachRef(finishedWork) { var ref = finishedWork.ref; if (null !== ref) { var instance = finishedWork.stateNode; if ("function" === typeof ref) if (shouldProfile(finishedWork)) try { startEffectTimer(), finishedWork.refCleanup = ref(instance); } finally { recordEffectDuration(); } else finishedWork.refCleanup = ref(instance); else "string" === typeof ref ? console.error("String refs are no longer supported.") : ref.hasOwnProperty("current") || console.error( "Unexpected ref object provided for %s. Use either a ref-setter function or React.createRef().", getComponentNameFromFiber(finishedWork) ), ref.current = instance; } } function safelyAttachRef(current2, nearestMountedAncestor) { try { runWithFiberInDEV(current2, commitAttachRef, current2); } catch (error) { captureCommitPhaseError(current2, nearestMountedAncestor, error); } } function safelyDetachRef(current2, nearestMountedAncestor) { var ref = current2.ref, refCleanup = current2.refCleanup; if (null !== ref) if ("function" === typeof refCleanup) try { if (shouldProfile(current2)) try { startEffectTimer(), runWithFiberInDEV(current2, refCleanup); } finally { recordEffectDuration(current2); } else runWithFiberInDEV(current2, refCleanup); } catch (error) { captureCommitPhaseError(current2, nearestMountedAncestor, error); } finally { current2.refCleanup = null, current2 = current2.alternate, null != current2 && (current2.refCleanup = null); } else if ("function" === typeof ref) try { if (shouldProfile(current2)) try { startEffectTimer(), runWithFiberInDEV(current2, ref, null); } finally { recordEffectDuration(current2); } else runWithFiberInDEV(current2, ref, null); } catch (error$6) { captureCommitPhaseError(current2, nearestMountedAncestor, error$6); } else ref.current = null; } function commitProfiler(finishedWork, current2, commitStartTime2, effectDuration) { var _finishedWork$memoize = finishedWork.memoizedProps, id = _finishedWork$memoize.id, onCommit = _finishedWork$memoize.onCommit; _finishedWork$memoize = _finishedWork$memoize.onRender; current2 = null === current2 ? "mount" : "update"; currentUpdateIsNested && (current2 = "nested-update"); "function" === typeof _finishedWork$memoize && _finishedWork$memoize( id, current2, finishedWork.actualDuration, finishedWork.treeBaseDuration, finishedWork.actualStartTime, commitStartTime2 ); "function" === typeof onCommit && onCommit( finishedWork.memoizedProps.id, current2, effectDuration, commitStartTime2 ); } function commitProfilerPostCommitImpl(finishedWork, current2, commitStartTime2, passiveEffectDuration) { var _finishedWork$memoize2 = finishedWork.memoizedProps; finishedWork = _finishedWork$memoize2.id; _finishedWork$memoize2 = _finishedWork$memoize2.onPostCommit; current2 = null === current2 ? "mount" : "update"; currentUpdateIsNested && (current2 = "nested-update"); "function" === typeof _finishedWork$memoize2 && _finishedWork$memoize2( finishedWork, current2, passiveEffectDuration, commitStartTime2 ); } function commitHostMount(finishedWork) { var type = finishedWork.type, props = finishedWork.memoizedProps, instance = finishedWork.stateNode; try { runWithFiberInDEV( finishedWork, commitMount, instance, type, props, finishedWork ); } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } } function commitHostUpdate(finishedWork, newProps, oldProps) { try { runWithFiberInDEV( finishedWork, commitUpdate, finishedWork.stateNode, finishedWork.type, oldProps, newProps, finishedWork ); } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } } function isHostParent(fiber) { return 5 === fiber.tag || 3 === fiber.tag || 26 === fiber.tag || 27 === fiber.tag || 4 === fiber.tag; } function getHostSibling(fiber) { a: for (; ; ) { for (; null === fiber.sibling; ) { if (null === fiber.return || isHostParent(fiber.return)) return null; fiber = fiber.return; } fiber.sibling.return = fiber.return; for (fiber = fiber.sibling; 5 !== fiber.tag && 6 !== fiber.tag && 27 !== fiber.tag && 18 !== fiber.tag; ) { if (fiber.flags & 2) continue a; if (null === fiber.child || 4 === fiber.tag) continue a; else fiber.child.return = fiber, fiber = fiber.child; } if (!(fiber.flags & 2)) return fiber.stateNode; } } function insertOrAppendPlacementNodeIntoContainer(node, before, parent) { var tag = node.tag; if (5 === tag || 6 === tag) node = node.stateNode, before ? 8 === parent.nodeType ? parent.parentNode.insertBefore(node, before) : parent.insertBefore(node, before) : (8 === parent.nodeType ? (before = parent.parentNode, before.insertBefore(node, parent)) : (before = parent, before.appendChild(node)), parent = parent._reactRootContainer, null !== parent && void 0 !== parent || null !== before.onclick || (before.onclick = noop$1)); else if (4 !== tag && 27 !== tag && (node = node.child, null !== node)) for (insertOrAppendPlacementNodeIntoContainer(node, before, parent), node = node.sibling; null !== node; ) insertOrAppendPlacementNodeIntoContainer(node, before, parent), node = node.sibling; } function insertOrAppendPlacementNode(node, before, parent) { var tag = node.tag; if (5 === tag || 6 === tag) node = node.stateNode, before ? parent.insertBefore(node, before) : parent.appendChild(node); else if (4 !== tag && 27 !== tag && (node = node.child, null !== node)) for (insertOrAppendPlacementNode(node, before, parent), node = node.sibling; null !== node; ) insertOrAppendPlacementNode(node, before, parent), node = node.sibling; } function commitPlacement(finishedWork) { if (27 !== finishedWork.tag) { a: { for (var parent = finishedWork.return; null !== parent; ) { if (isHostParent(parent)) { var parentFiber = parent; break a; } parent = parent.return; } throw Error( "Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue." ); } switch (parentFiber.tag) { case 27: parent = parentFiber.stateNode; parentFiber = getHostSibling(finishedWork); insertOrAppendPlacementNode(finishedWork, parentFiber, parent); break; case 5: parent = parentFiber.stateNode; parentFiber.flags & 32 && (resetTextContent(parent), parentFiber.flags &= -33); parentFiber = getHostSibling(finishedWork); insertOrAppendPlacementNode(finishedWork, parentFiber, parent); break; case 3: case 4: parent = parentFiber.stateNode.containerInfo; parentFiber = getHostSibling(finishedWork); insertOrAppendPlacementNodeIntoContainer( finishedWork, parentFiber, parent ); break; default: throw Error( "Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue." ); } } } function commitBeforeMutationEffects(root2, firstChild) { root2 = root2.containerInfo; eventsEnabled = _enabled; root2 = getActiveElementDeep(root2); if (hasSelectionCapabilities(root2)) { if ("selectionStart" in root2) var JSCompiler_temp = { start: root2.selectionStart, end: root2.selectionEnd }; else a: { JSCompiler_temp = (JSCompiler_temp = root2.ownerDocument) && JSCompiler_temp.defaultView || window; var selection = JSCompiler_temp.getSelection && JSCompiler_temp.getSelection(); if (selection && 0 !== selection.rangeCount) { JSCompiler_temp = selection.anchorNode; var anchorOffset = selection.anchorOffset, focusNode = selection.focusNode; selection = selection.focusOffset; try { JSCompiler_temp.nodeType, focusNode.nodeType; } catch (e$2) { JSCompiler_temp = null; break a; } var length = 0, start = -1, end = -1, indexWithinAnchor = 0, indexWithinFocus = 0, node = root2, parentNode = null; b: for (; ; ) { for (var next; ; ) { node !== JSCompiler_temp || 0 !== anchorOffset && 3 !== node.nodeType || (start = length + anchorOffset); node !== focusNode || 0 !== selection && 3 !== node.nodeType || (end = length + selection); 3 === node.nodeType && (length += node.nodeValue.length); if (null === (next = node.firstChild)) break; parentNode = node; node = next; } for (; ; ) { if (node === root2) break b; parentNode === JSCompiler_temp && ++indexWithinAnchor === anchorOffset && (start = length); parentNode === focusNode && ++indexWithinFocus === selection && (end = length); if (null !== (next = node.nextSibling)) break; node = parentNode; parentNode = node.parentNode; } node = next; } JSCompiler_temp = -1 === start || -1 === end ? null : { start, end }; } else JSCompiler_temp = null; } JSCompiler_temp = JSCompiler_temp || { start: 0, end: 0 }; } else JSCompiler_temp = null; selectionInformation = { focusedElem: root2, selectionRange: JSCompiler_temp }; _enabled = false; for (nextEffect = firstChild; null !== nextEffect; ) if (firstChild = nextEffect, root2 = firstChild.child, 0 !== (firstChild.subtreeFlags & 1028) && null !== root2) root2.return = firstChild, nextEffect = root2; else for (; null !== nextEffect; ) { root2 = firstChild = nextEffect; JSCompiler_temp = root2.alternate; anchorOffset = root2.flags; switch (root2.tag) { case 0: break; case 11: case 15: break; case 1: 0 !== (anchorOffset & 1024) && null !== JSCompiler_temp && commitClassSnapshot(root2, JSCompiler_temp); break; case 3: if (0 !== (anchorOffset & 1024)) { if (root2 = root2.stateNode.containerInfo, JSCompiler_temp = root2.nodeType, 9 === JSCompiler_temp) clearContainerSparingly(root2); else if (1 === JSCompiler_temp) switch (root2.nodeName) { case "HEAD": case "HTML": case "BODY": clearContainerSparingly(root2); break; default: root2.textContent = ""; } } break; case 5: case 26: case 27: case 6: case 4: case 17: break; default: if (0 !== (anchorOffset & 1024)) throw Error( "This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue." ); } root2 = firstChild.sibling; if (null !== root2) { root2.return = firstChild.return; nextEffect = root2; break; } nextEffect = firstChild.return; } firstChild = shouldFireAfterActiveInstanceBlur; shouldFireAfterActiveInstanceBlur = false; return firstChild; } function commitLayoutEffectOnFiber(finishedRoot, current2, finishedWork) { var flags = finishedWork.flags; switch (finishedWork.tag) { case 0: case 11: case 15: recursivelyTraverseLayoutEffects(finishedRoot, finishedWork); flags & 4 && commitHookLayoutEffects(finishedWork, Layout | HasEffect); break; case 1: recursivelyTraverseLayoutEffects(finishedRoot, finishedWork); if (flags & 4) if (finishedRoot = finishedWork.stateNode, null === current2) finishedWork.type.defaultProps || "ref" in finishedWork.memoizedProps || didWarnAboutReassigningProps || (finishedRoot.props !== finishedWork.memoizedProps && console.error( "Expected %s props to match memoized props before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance" ), finishedRoot.state !== finishedWork.memoizedState && console.error( "Expected %s state to match memoized state before componentDidMount. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance" )), shouldProfile(finishedWork) ? (startEffectTimer(), runWithFiberInDEV( finishedWork, callComponentDidMountInDEV, finishedWork, finishedRoot ), recordEffectDuration()) : runWithFiberInDEV( finishedWork, callComponentDidMountInDEV, finishedWork, finishedRoot ); else { var prevProps = resolveClassComponentProps( finishedWork.type, current2.memoizedProps ); current2 = current2.memoizedState; finishedWork.type.defaultProps || "ref" in finishedWork.memoizedProps || didWarnAboutReassigningProps || (finishedRoot.props !== finishedWork.memoizedProps && console.error( "Expected %s props to match memoized props before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.props`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance" ), finishedRoot.state !== finishedWork.memoizedState && console.error( "Expected %s state to match memoized state before componentDidUpdate. This might either be because of a bug in React, or because a component reassigns its own `this.state`. Please file an issue.", getComponentNameFromFiber(finishedWork) || "instance" )); shouldProfile(finishedWork) ? (startEffectTimer(), runWithFiberInDEV( finishedWork, callComponentDidUpdateInDEV, finishedWork, finishedRoot, prevProps, current2, finishedRoot.__reactInternalSnapshotBeforeUpdate ), recordEffectDuration()) : runWithFiberInDEV( finishedWork, callComponentDidUpdateInDEV, finishedWork, finishedRoot, prevProps, current2, finishedRoot.__reactInternalSnapshotBeforeUpdate ); } flags & 64 && commitClassCallbacks(finishedWork); flags & 512 && safelyAttachRef(finishedWork, finishedWork.return); break; case 3: current2 = pushNestedEffectDurations(); recursivelyTraverseLayoutEffects(finishedRoot, finishedWork); if (flags & 64 && (flags = finishedWork.updateQueue, null !== flags)) { prevProps = null; if (null !== finishedWork.child) switch (finishedWork.child.tag) { case 27: case 5: prevProps = finishedWork.child.stateNode; break; case 1: prevProps = finishedWork.child.stateNode; } try { runWithFiberInDEV( finishedWork, commitCallbacks, flags, prevProps ); } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } } finishedRoot.effectDuration += popNestedEffectDurations(current2); break; case 26: recursivelyTraverseLayoutEffects(finishedRoot, finishedWork); flags & 512 && safelyAttachRef(finishedWork, finishedWork.return); break; case 27: case 5: recursivelyTraverseLayoutEffects(finishedRoot, finishedWork); null === current2 && flags & 4 && commitHostMount(finishedWork); flags & 512 && safelyAttachRef(finishedWork, finishedWork.return); break; case 12: if (flags & 4) { flags = pushNestedEffectDurations(); recursivelyTraverseLayoutEffects(finishedRoot, finishedWork); finishedRoot = finishedWork.stateNode; finishedRoot.effectDuration += bubbleNestedEffectDurations(flags); try { runWithFiberInDEV( finishedWork, commitProfiler, finishedWork, current2, commitStartTime, finishedRoot.effectDuration ); } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } } else recursivelyTraverseLayoutEffects(finishedRoot, finishedWork); break; case 13: recursivelyTraverseLayoutEffects(finishedRoot, finishedWork); flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork); break; case 22: prevProps = null !== finishedWork.memoizedState || offscreenSubtreeIsHidden; if (!prevProps) { current2 = null !== current2 && null !== current2.memoizedState || offscreenSubtreeWasHidden; var prevOffscreenSubtreeIsHidden = offscreenSubtreeIsHidden, prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden; offscreenSubtreeIsHidden = prevProps; (offscreenSubtreeWasHidden = current2) && !prevOffscreenSubtreeWasHidden ? recursivelyTraverseReappearLayoutEffects( finishedRoot, finishedWork, 0 !== (finishedWork.subtreeFlags & 8772) ) : recursivelyTraverseLayoutEffects(finishedRoot, finishedWork); offscreenSubtreeIsHidden = prevOffscreenSubtreeIsHidden; offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden; } flags & 512 && ("manual" === finishedWork.memoizedProps.mode ? safelyAttachRef(finishedWork, finishedWork.return) : safelyDetachRef(finishedWork, finishedWork.return)); break; default: recursivelyTraverseLayoutEffects(finishedRoot, finishedWork); } } function detachFiberAfterEffects(fiber) { var alternate = fiber.alternate; null !== alternate && (fiber.alternate = null, detachFiberAfterEffects(alternate)); fiber.child = null; fiber.deletions = null; fiber.sibling = null; 5 === fiber.tag && (alternate = fiber.stateNode, null !== alternate && detachDeletedInstance(alternate)); fiber.stateNode = null; fiber._debugOwner = null; fiber.return = null; fiber.dependencies = null; fiber.memoizedProps = null; fiber.memoizedState = null; fiber.pendingProps = null; fiber.stateNode = null; fiber.updateQueue = null; } function recursivelyTraverseDeletionEffects(finishedRoot, nearestMountedAncestor, parent) { for (parent = parent.child; null !== parent; ) commitDeletionEffectsOnFiber( finishedRoot, nearestMountedAncestor, parent ), parent = parent.sibling; } function commitDeletionEffectsOnFiber(finishedRoot, nearestMountedAncestor, deletedFiber) { if (injectedHook && "function" === typeof injectedHook.onCommitFiberUnmount) try { injectedHook.onCommitFiberUnmount(rendererID, deletedFiber); } catch (err) { hasLoggedError || (hasLoggedError = true, console.error( "React instrumentation encountered an error: %s", err )); } switch (deletedFiber.tag) { case 26: offscreenSubtreeWasHidden || safelyDetachRef(deletedFiber, nearestMountedAncestor); recursivelyTraverseDeletionEffects( finishedRoot, nearestMountedAncestor, deletedFiber ); deletedFiber.memoizedState ? deletedFiber.memoizedState.count-- : deletedFiber.stateNode && (deletedFiber = deletedFiber.stateNode, deletedFiber.parentNode.removeChild(deletedFiber)); break; case 27: offscreenSubtreeWasHidden || safelyDetachRef(deletedFiber, nearestMountedAncestor); var prevHostParent = hostParent, prevHostParentIsContainer = hostParentIsContainer; hostParent = deletedFiber.stateNode; recursivelyTraverseDeletionEffects( finishedRoot, nearestMountedAncestor, deletedFiber ); deletedFiber = deletedFiber.stateNode; for (finishedRoot = deletedFiber.attributes; finishedRoot.length; ) deletedFiber.removeAttributeNode(finishedRoot[0]); detachDeletedInstance(deletedFiber); hostParent = prevHostParent; hostParentIsContainer = prevHostParentIsContainer; break; case 5: offscreenSubtreeWasHidden || safelyDetachRef(deletedFiber, nearestMountedAncestor); case 6: prevHostParent = hostParent; prevHostParentIsContainer = hostParentIsContainer; hostParent = null; recursivelyTraverseDeletionEffects( finishedRoot, nearestMountedAncestor, deletedFiber ); hostParent = prevHostParent; hostParentIsContainer = prevHostParentIsContainer; if (null !== hostParent) if (hostParentIsContainer) try { runWithFiberInDEV( deletedFiber, removeChildFromContainer, hostParent, deletedFiber.stateNode ); } catch (error) { captureCommitPhaseError( deletedFiber, nearestMountedAncestor, error ); } else try { runWithFiberInDEV( deletedFiber, removeChild, hostParent, deletedFiber.stateNode ); } catch (error) { captureCommitPhaseError( deletedFiber, nearestMountedAncestor, error ); } break; case 18: null !== hostParent && (hostParentIsContainer ? (finishedRoot = hostParent, deletedFiber = deletedFiber.stateNode, 8 === finishedRoot.nodeType ? clearSuspenseBoundary(finishedRoot.parentNode, deletedFiber) : 1 === finishedRoot.nodeType && clearSuspenseBoundary(finishedRoot, deletedFiber), retryIfBlockedOn(finishedRoot)) : clearSuspenseBoundary(hostParent, deletedFiber.stateNode)); break; case 4: prevHostParent = hostParent; prevHostParentIsContainer = hostParentIsContainer; hostParent = deletedFiber.stateNode.containerInfo; hostParentIsContainer = true; recursivelyTraverseDeletionEffects( finishedRoot, nearestMountedAncestor, deletedFiber ); hostParent = prevHostParent; hostParentIsContainer = prevHostParentIsContainer; break; case 0: case 11: case 14: case 15: offscreenSubtreeWasHidden || commitHookEffectListUnmount( Insertion, deletedFiber, nearestMountedAncestor ); offscreenSubtreeWasHidden || commitHookLayoutUnmountEffects( deletedFiber, nearestMountedAncestor, Layout ); recursivelyTraverseDeletionEffects( finishedRoot, nearestMountedAncestor, deletedFiber ); break; case 1: offscreenSubtreeWasHidden || (safelyDetachRef(deletedFiber, nearestMountedAncestor), prevHostParent = deletedFiber.stateNode, "function" === typeof prevHostParent.componentWillUnmount && safelyCallComponentWillUnmount( deletedFiber, nearestMountedAncestor, prevHostParent )); recursivelyTraverseDeletionEffects( finishedRoot, nearestMountedAncestor, deletedFiber ); break; case 21: recursivelyTraverseDeletionEffects( finishedRoot, nearestMountedAncestor, deletedFiber ); break; case 22: offscreenSubtreeWasHidden || safelyDetachRef(deletedFiber, nearestMountedAncestor); offscreenSubtreeWasHidden = (prevHostParent = offscreenSubtreeWasHidden) || null !== deletedFiber.memoizedState; recursivelyTraverseDeletionEffects( finishedRoot, nearestMountedAncestor, deletedFiber ); offscreenSubtreeWasHidden = prevHostParent; break; default: recursivelyTraverseDeletionEffects( finishedRoot, nearestMountedAncestor, deletedFiber ); } } function commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) { if (null === finishedWork.memoizedState && (finishedRoot = finishedWork.alternate, null !== finishedRoot && (finishedRoot = finishedRoot.memoizedState, null !== finishedRoot && (finishedRoot = finishedRoot.dehydrated, null !== finishedRoot)))) try { runWithFiberInDEV( finishedWork, commitHydratedSuspenseInstance, finishedRoot ); } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } } function getRetryCache(finishedWork) { switch (finishedWork.tag) { case 13: case 19: var retryCache = finishedWork.stateNode; null === retryCache && (retryCache = finishedWork.stateNode = new PossiblyWeakSet()); return retryCache; case 22: return finishedWork = finishedWork.stateNode, retryCache = finishedWork._retryCache, null === retryCache && (retryCache = finishedWork._retryCache = new PossiblyWeakSet()), retryCache; default: throw Error( "Unexpected Suspense handler tag (" + finishedWork.tag + "). This is a bug in React." ); } } function attachSuspenseRetryListeners(finishedWork, wakeables) { var retryCache = getRetryCache(finishedWork); wakeables.forEach(function(wakeable) { var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable); if (!retryCache.has(wakeable)) { retryCache.add(wakeable); if (isDevToolsPresent) if (null !== inProgressLanes && null !== inProgressRoot) restorePendingUpdaters(inProgressRoot, inProgressLanes); else throw Error( "Expected finished root and lanes to be set. This is a bug in React." ); wakeable.then(retry, retry); } }); } function commitMutationEffects(root2, finishedWork, committedLanes) { inProgressLanes = committedLanes; inProgressRoot = root2; commitMutationEffectsOnFiber(finishedWork, root2); inProgressRoot = inProgressLanes = null; } function recursivelyTraverseMutationEffects(root$jscomp$0, parentFiber) { var deletions = parentFiber.deletions; if (null !== deletions) for (var i = 0; i < deletions.length; i++) { var root2 = root$jscomp$0, returnFiber = parentFiber, deletedFiber = deletions[i], parent = returnFiber; a: for (; null !== parent; ) { switch (parent.tag) { case 27: case 5: hostParent = parent.stateNode; hostParentIsContainer = false; break a; case 3: hostParent = parent.stateNode.containerInfo; hostParentIsContainer = true; break a; case 4: hostParent = parent.stateNode.containerInfo; hostParentIsContainer = true; break a; } parent = parent.return; } if (null === hostParent) throw Error( "Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue." ); commitDeletionEffectsOnFiber(root2, returnFiber, deletedFiber); hostParent = null; hostParentIsContainer = false; root2 = deletedFiber; returnFiber = root2.alternate; null !== returnFiber && (returnFiber.return = null); root2.return = null; } if (parentFiber.subtreeFlags & 13878) for (parentFiber = parentFiber.child; null !== parentFiber; ) commitMutationEffectsOnFiber(parentFiber, root$jscomp$0), parentFiber = parentFiber.sibling; } function commitMutationEffectsOnFiber(finishedWork, root2) { var current2 = finishedWork.alternate, flags = finishedWork.flags; switch (finishedWork.tag) { case 0: case 11: case 14: case 15: recursivelyTraverseMutationEffects(root2, finishedWork); commitReconciliationEffects(finishedWork); flags & 4 && (commitHookEffectListUnmount( Insertion | HasEffect, finishedWork, finishedWork.return ), commitHookEffectListMount(Insertion | HasEffect, finishedWork), commitHookLayoutUnmountEffects( finishedWork, finishedWork.return, Layout | HasEffect )); break; case 1: recursivelyTraverseMutationEffects(root2, finishedWork); commitReconciliationEffects(finishedWork); flags & 512 && (offscreenSubtreeWasHidden || null === current2 || safelyDetachRef(current2, current2.return)); flags & 64 && offscreenSubtreeIsHidden && (finishedWork = finishedWork.updateQueue, null !== finishedWork && (flags = finishedWork.callbacks, null !== flags && (current2 = finishedWork.shared.hiddenCallbacks, finishedWork.shared.hiddenCallbacks = null === current2 ? flags : current2.concat(flags)))); break; case 26: var hoistableRoot = currentHoistableRoot; recursivelyTraverseMutationEffects(root2, finishedWork); commitReconciliationEffects(finishedWork); flags & 512 && (offscreenSubtreeWasHidden || null === current2 || safelyDetachRef(current2, current2.return)); if (flags & 4) if (root2 = null !== current2 ? current2.memoizedState : null, flags = finishedWork.memoizedState, null === current2) if (null === flags) if (null === finishedWork.stateNode) { a: { flags = finishedWork.type; current2 = finishedWork.memoizedProps; root2 = hoistableRoot.ownerDocument || hoistableRoot; b: switch (flags) { case "title": hoistableRoot = root2.getElementsByTagName("title")[0]; if (!hoistableRoot || hoistableRoot[internalHoistableMarker] || hoistableRoot[internalInstanceKey] || hoistableRoot.namespaceURI === SVG_NAMESPACE || hoistableRoot.hasAttribute("itemprop")) hoistableRoot = root2.createElement(flags), root2.head.insertBefore( hoistableRoot, root2.querySelector("head > title") ); setInitialProperties(hoistableRoot, flags, current2); hoistableRoot[internalInstanceKey] = finishedWork; markNodeAsHoistable(hoistableRoot); flags = hoistableRoot; break a; case "link": var maybeNodes = getHydratableHoistableCache( "link", "href", root2 ).get(flags + (current2.href || "")); if (maybeNodes) { for (var i = 0; i < maybeNodes.length; i++) if (hoistableRoot = maybeNodes[i], hoistableRoot.getAttribute("href") === (null == current2.href ? null : current2.href) && hoistableRoot.getAttribute("rel") === (null == current2.rel ? null : current2.rel) && hoistableRoot.getAttribute("title") === (null == current2.title ? null : current2.title) && hoistableRoot.getAttribute("crossorigin") === (null == current2.crossOrigin ? null : current2.crossOrigin)) { maybeNodes.splice(i, 1); break b; } } hoistableRoot = root2.createElement(flags); setInitialProperties(hoistableRoot, flags, current2); root2.head.appendChild(hoistableRoot); break; case "meta": if (maybeNodes = getHydratableHoistableCache( "meta", "content", root2 ).get(flags + (current2.content || ""))) { for (i = 0; i < maybeNodes.length; i++) if (hoistableRoot = maybeNodes[i], checkAttributeStringCoercion( current2.content, "content" ), hoistableRoot.getAttribute("content") === (null == current2.content ? null : "" + current2.content) && hoistableRoot.getAttribute("name") === (null == current2.name ? null : current2.name) && hoistableRoot.getAttribute("property") === (null == current2.property ? null : current2.property) && hoistableRoot.getAttribute("http-equiv") === (null == current2.httpEquiv ? null : current2.httpEquiv) && hoistableRoot.getAttribute("charset") === (null == current2.charSet ? null : current2.charSet)) { maybeNodes.splice(i, 1); break b; } } hoistableRoot = root2.createElement(flags); setInitialProperties(hoistableRoot, flags, current2); root2.head.appendChild(hoistableRoot); break; default: throw Error( 'getNodesForType encountered a type it did not expect: "' + flags + '". This is a bug in React.' ); } hoistableRoot[internalInstanceKey] = finishedWork; markNodeAsHoistable(hoistableRoot); flags = hoistableRoot; } finishedWork.stateNode = flags; } else mountHoistable( hoistableRoot, finishedWork.type, finishedWork.stateNode ); else finishedWork.stateNode = acquireResource( hoistableRoot, flags, finishedWork.memoizedProps ); else root2 !== flags ? (null === root2 ? null !== current2.stateNode && (current2 = current2.stateNode, current2.parentNode.removeChild(current2)) : root2.count--, null === flags ? mountHoistable( hoistableRoot, finishedWork.type, finishedWork.stateNode ) : acquireResource( hoistableRoot, flags, finishedWork.memoizedProps )) : null === flags && null !== finishedWork.stateNode && commitHostUpdate( finishedWork, finishedWork.memoizedProps, current2.memoizedProps ); break; case 27: if (flags & 4 && null === finishedWork.alternate) { hoistableRoot = finishedWork.stateNode; maybeNodes = finishedWork.memoizedProps; try { for (i = hoistableRoot.firstChild; i; ) { var nextNode = i.nextSibling, nodeName = i.nodeName; i[internalHoistableMarker] || "HEAD" === nodeName || "BODY" === nodeName || "SCRIPT" === nodeName || "STYLE" === nodeName || "LINK" === nodeName && "stylesheet" === i.rel.toLowerCase() || hoistableRoot.removeChild(i); i = nextNode; } runWithFiberInDEV( finishedWork, acquireSingletonInstance, finishedWork.type, maybeNodes, hoistableRoot, finishedWork ); } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } } case 5: recursivelyTraverseMutationEffects(root2, finishedWork); commitReconciliationEffects(finishedWork); flags & 512 && (offscreenSubtreeWasHidden || null === current2 || safelyDetachRef(current2, current2.return)); if (finishedWork.flags & 32) { root2 = finishedWork.stateNode; try { runWithFiberInDEV(finishedWork, resetTextContent, root2); } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } } flags & 4 && null != finishedWork.stateNode && (root2 = finishedWork.memoizedProps, commitHostUpdate( finishedWork, root2, null !== current2 ? current2.memoizedProps : root2 )); flags & 1024 && (needsFormReset = true, "form" !== finishedWork.type && console.error( "Unexpected host component type. Expected a form. This is a bug in React." )); break; case 6: recursivelyTraverseMutationEffects(root2, finishedWork); commitReconciliationEffects(finishedWork); if (flags & 4) { if (null === finishedWork.stateNode) throw Error( "This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue." ); flags = finishedWork.memoizedProps; current2 = null !== current2 ? current2.memoizedProps : flags; root2 = finishedWork.stateNode; try { runWithFiberInDEV( finishedWork, commitTextUpdate, root2, current2, flags ); } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } } break; case 3: hoistableRoot = pushNestedEffectDurations(); tagCaches = null; maybeNodes = currentHoistableRoot; currentHoistableRoot = getHoistableRoot(root2.containerInfo); recursivelyTraverseMutationEffects(root2, finishedWork); currentHoistableRoot = maybeNodes; commitReconciliationEffects(finishedWork); if (flags & 4 && null !== current2 && current2.memoizedState.isDehydrated) try { runWithFiberInDEV( finishedWork, commitHydratedContainer, root2.containerInfo ); } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } needsFormReset && (needsFormReset = false, recursivelyResetForms(finishedWork)); root2.effectDuration += popNestedEffectDurations(hoistableRoot); break; case 4: flags = currentHoistableRoot; currentHoistableRoot = getHoistableRoot( finishedWork.stateNode.containerInfo ); recursivelyTraverseMutationEffects(root2, finishedWork); commitReconciliationEffects(finishedWork); currentHoistableRoot = flags; break; case 12: flags = pushNestedEffectDurations(); recursivelyTraverseMutationEffects(root2, finishedWork); commitReconciliationEffects(finishedWork); finishedWork.stateNode.effectDuration += bubbleNestedEffectDurations(flags); break; case 13: recursivelyTraverseMutationEffects(root2, finishedWork); commitReconciliationEffects(finishedWork); finishedWork.child.flags & 8192 && null !== finishedWork.memoizedState !== (null !== current2 && null !== current2.memoizedState) && (globalMostRecentFallbackTime = now$1()); flags & 4 && (flags = finishedWork.updateQueue, null !== flags && (finishedWork.updateQueue = null, attachSuspenseRetryListeners(finishedWork, flags))); break; case 22: flags & 512 && (offscreenSubtreeWasHidden || null === current2 || safelyDetachRef(current2, current2.return)); i = null !== finishedWork.memoizedState; nextNode = null !== current2 && null !== current2.memoizedState; nodeName = offscreenSubtreeIsHidden; var prevOffscreenSubtreeWasHidden = offscreenSubtreeWasHidden; offscreenSubtreeIsHidden = nodeName || i; offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden || nextNode; recursivelyTraverseMutationEffects(root2, finishedWork); offscreenSubtreeWasHidden = prevOffscreenSubtreeWasHidden; offscreenSubtreeIsHidden = nodeName; commitReconciliationEffects(finishedWork); root2 = finishedWork.stateNode; root2._current = finishedWork; root2._visibility &= ~OffscreenDetached; root2._visibility |= root2._pendingVisibility & OffscreenDetached; if (flags & 8192 && (root2._visibility = i ? root2._visibility & ~OffscreenVisible : root2._visibility | OffscreenVisible, i && (root2 = offscreenSubtreeIsHidden || offscreenSubtreeWasHidden, null === current2 || nextNode || root2 || recursivelyTraverseDisappearLayoutEffects(finishedWork)), null === finishedWork.memoizedProps || "manual" !== finishedWork.memoizedProps.mode)) a: for (current2 = null, root2 = finishedWork; ; ) { if (5 === root2.tag || 26 === root2.tag || 27 === root2.tag) { if (null === current2) { nextNode = current2 = root2; try { hoistableRoot = nextNode.stateNode, i ? runWithFiberInDEV( nextNode, hideInstance, hoistableRoot ) : runWithFiberInDEV( nextNode, unhideInstance, nextNode.stateNode, nextNode.memoizedProps ); } catch (error) { captureCommitPhaseError(nextNode, nextNode.return, error); } } } else if (6 === root2.tag) { if (null === current2) { nextNode = root2; try { maybeNodes = nextNode.stateNode, i ? runWithFiberInDEV( nextNode, hideTextInstance, maybeNodes ) : runWithFiberInDEV( nextNode, unhideTextInstance, maybeNodes, nextNode.memoizedProps ); } catch (error) { captureCommitPhaseError(nextNode, nextNode.return, error); } } } else if ((22 !== root2.tag && 23 !== root2.tag || null === root2.memoizedState || root2 === finishedWork) && null !== root2.child) { root2.child.return = root2; root2 = root2.child; continue; } if (root2 === finishedWork) break a; for (; null === root2.sibling; ) { if (null === root2.return || root2.return === finishedWork) break a; current2 === root2 && (current2 = null); root2 = root2.return; } current2 === root2 && (current2 = null); root2.sibling.return = root2.return; root2 = root2.sibling; } flags & 4 && (flags = finishedWork.updateQueue, null !== flags && (current2 = flags.retryQueue, null !== current2 && (flags.retryQueue = null, attachSuspenseRetryListeners(finishedWork, current2)))); break; case 19: recursivelyTraverseMutationEffects(root2, finishedWork); commitReconciliationEffects(finishedWork); flags & 4 && (flags = finishedWork.updateQueue, null !== flags && (finishedWork.updateQueue = null, attachSuspenseRetryListeners(finishedWork, flags))); break; case 21: break; default: recursivelyTraverseMutationEffects(root2, finishedWork), commitReconciliationEffects(finishedWork); } } function commitReconciliationEffects(finishedWork) { var flags = finishedWork.flags; if (flags & 2) { try { runWithFiberInDEV(finishedWork, commitPlacement, finishedWork); } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } finishedWork.flags &= -3; } flags & 4096 && (finishedWork.flags &= -4097); } function recursivelyResetForms(parentFiber) { if (parentFiber.subtreeFlags & 1024) for (parentFiber = parentFiber.child; null !== parentFiber; ) { var fiber = parentFiber; recursivelyResetForms(fiber); 5 === fiber.tag && fiber.flags & 1024 && fiber.stateNode.reset(); parentFiber = parentFiber.sibling; } } function commitLayoutEffects(finishedWork, root2, committedLanes) { inProgressLanes = committedLanes; inProgressRoot = root2; commitLayoutEffectOnFiber(root2, finishedWork.alternate, finishedWork); inProgressRoot = inProgressLanes = null; } function recursivelyTraverseLayoutEffects(root2, parentFiber) { if (parentFiber.subtreeFlags & 8772) for (parentFiber = parentFiber.child; null !== parentFiber; ) commitLayoutEffectOnFiber(root2, parentFiber.alternate, parentFiber), parentFiber = parentFiber.sibling; } function disappearLayoutEffects(finishedWork) { switch (finishedWork.tag) { case 0: case 11: case 14: case 15: commitHookLayoutUnmountEffects( finishedWork, finishedWork.return, Layout ); recursivelyTraverseDisappearLayoutEffects(finishedWork); break; case 1: safelyDetachRef(finishedWork, finishedWork.return); var instance = finishedWork.stateNode; "function" === typeof instance.componentWillUnmount && safelyCallComponentWillUnmount( finishedWork, finishedWork.return, instance ); recursivelyTraverseDisappearLayoutEffects(finishedWork); break; case 26: case 27: case 5: safelyDetachRef(finishedWork, finishedWork.return); recursivelyTraverseDisappearLayoutEffects(finishedWork); break; case 22: safelyDetachRef(finishedWork, finishedWork.return); null === finishedWork.memoizedState && recursivelyTraverseDisappearLayoutEffects(finishedWork); break; default: recursivelyTraverseDisappearLayoutEffects(finishedWork); } } function recursivelyTraverseDisappearLayoutEffects(parentFiber) { for (parentFiber = parentFiber.child; null !== parentFiber; ) disappearLayoutEffects(parentFiber), parentFiber = parentFiber.sibling; } function reappearLayoutEffects(finishedRoot, current2, finishedWork, includeWorkInProgressEffects) { var flags = finishedWork.flags; switch (finishedWork.tag) { case 0: case 11: case 15: recursivelyTraverseReappearLayoutEffects( finishedRoot, finishedWork, includeWorkInProgressEffects ); commitHookLayoutEffects(finishedWork, Layout); break; case 1: recursivelyTraverseReappearLayoutEffects( finishedRoot, finishedWork, includeWorkInProgressEffects ); current2 = finishedWork.stateNode; "function" === typeof current2.componentDidMount && runWithFiberInDEV( finishedWork, callComponentDidMountInDEV, finishedWork, current2 ); current2 = finishedWork.updateQueue; if (null !== current2) { finishedRoot = finishedWork.stateNode; try { runWithFiberInDEV( finishedWork, commitHiddenCallbacks, current2, finishedRoot ); } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } } includeWorkInProgressEffects && flags & 64 && commitClassCallbacks(finishedWork); safelyAttachRef(finishedWork, finishedWork.return); break; case 26: case 27: case 5: recursivelyTraverseReappearLayoutEffects( finishedRoot, finishedWork, includeWorkInProgressEffects ); includeWorkInProgressEffects && null === current2 && flags & 4 && commitHostMount(finishedWork); safelyAttachRef(finishedWork, finishedWork.return); break; case 12: if (includeWorkInProgressEffects && flags & 4) { flags = pushNestedEffectDurations(); recursivelyTraverseReappearLayoutEffects( finishedRoot, finishedWork, includeWorkInProgressEffects ); includeWorkInProgressEffects = finishedWork.stateNode; includeWorkInProgressEffects.effectDuration += bubbleNestedEffectDurations(flags); try { runWithFiberInDEV( finishedWork, commitProfiler, finishedWork, current2, commitStartTime, includeWorkInProgressEffects.effectDuration ); } catch (error) { captureCommitPhaseError(finishedWork, finishedWork.return, error); } } else recursivelyTraverseReappearLayoutEffects( finishedRoot, finishedWork, includeWorkInProgressEffects ); break; case 13: recursivelyTraverseReappearLayoutEffects( finishedRoot, finishedWork, includeWorkInProgressEffects ); includeWorkInProgressEffects && flags & 4 && commitSuspenseHydrationCallbacks(finishedRoot, finishedWork); break; case 22: null === finishedWork.memoizedState && recursivelyTraverseReappearLayoutEffects( finishedRoot, finishedWork, includeWorkInProgressEffects ); safelyAttachRef(finishedWork, finishedWork.return); break; default: recursivelyTraverseReappearLayoutEffects( finishedRoot, finishedWork, includeWorkInProgressEffects ); } } function recursivelyTraverseReappearLayoutEffects(finishedRoot, parentFiber, includeWorkInProgressEffects) { includeWorkInProgressEffects = includeWorkInProgressEffects && 0 !== (parentFiber.subtreeFlags & 8772); for (parentFiber = parentFiber.child; null !== parentFiber; ) reappearLayoutEffects( finishedRoot, parentFiber.alternate, parentFiber, includeWorkInProgressEffects ), parentFiber = parentFiber.sibling; } function commitOffscreenPassiveMountEffects(current2, finishedWork) { var previousCache = null; null !== current2 && null !== current2.memoizedState && null !== current2.memoizedState.cachePool && (previousCache = current2.memoizedState.cachePool.pool); current2 = null; null !== finishedWork.memoizedState && null !== finishedWork.memoizedState.cachePool && (current2 = finishedWork.memoizedState.cachePool.pool); current2 !== previousCache && (null != current2 && retainCache(current2), null != previousCache && releaseCache(previousCache)); } function commitCachePassiveMountEffect(current2, finishedWork) { current2 = null; null !== finishedWork.alternate && (current2 = finishedWork.alternate.memoizedState.cache); finishedWork = finishedWork.memoizedState.cache; finishedWork !== current2 && (retainCache(finishedWork), null != current2 && releaseCache(current2)); } function recursivelyTraversePassiveMountEffects(root2, parentFiber, committedLanes, committedTransitions) { if (parentFiber.subtreeFlags & 10256) for (parentFiber = parentFiber.child; null !== parentFiber; ) commitPassiveMountOnFiber( root2, parentFiber, committedLanes, committedTransitions ), parentFiber = parentFiber.