@reckona/mreact-compat 0.0.159 → 0.0.161
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/class-component.d.ts +5 -0
- package/dist/class-component.d.ts.map +1 -1
- package/dist/class-component.js +36 -11
- package/dist/class-component.js.map +1 -1
- package/dist/context.d.ts +4 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +4 -0
- package/dist/context.js.map +1 -1
- package/dist/element.d.ts +28 -0
- package/dist/element.d.ts.map +1 -1
- package/dist/element.js +21 -1
- package/dist/element.js.map +1 -1
- package/dist/event-priority.d.ts +1 -0
- package/dist/event-priority.d.ts.map +1 -1
- package/dist/event-priority.js +1 -0
- package/dist/event-priority.js.map +1 -1
- package/dist/event-replay.d.ts +6 -0
- package/dist/event-replay.d.ts.map +1 -1
- package/dist/event-replay.js +4 -0
- package/dist/event-replay.js.map +1 -1
- package/dist/flight-decoder.d.ts +1 -0
- package/dist/flight-decoder.d.ts.map +1 -1
- package/dist/flight-decoder.js.map +1 -1
- package/dist/flight-protocol.d.ts +2 -0
- package/dist/flight-protocol.d.ts.map +1 -1
- package/dist/flight-protocol.js +1 -0
- package/dist/flight-protocol.js.map +1 -1
- package/dist/flight-types.d.ts +21 -0
- package/dist/flight-types.d.ts.map +1 -1
- package/dist/flight-types.js.map +1 -1
- package/dist/flight.d.ts +7 -0
- package/dist/flight.d.ts.map +1 -1
- package/dist/flight.js +5 -0
- package/dist/flight.js.map +1 -1
- package/dist/hooks-entry.d.ts +2 -0
- package/dist/hooks-entry.d.ts.map +1 -1
- package/dist/hooks-entry.js +1 -0
- package/dist/hooks-entry.js.map +1 -1
- package/dist/hooks.d.ts +36 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +42 -10
- package/dist/hooks.js.map +1 -1
- package/dist/host-reconciler.js +30 -30
- package/dist/host-reconciler.js.map +1 -1
- package/dist/hydration.d.ts +2 -0
- package/dist/hydration.d.ts.map +1 -1
- package/dist/hydration.js +1 -0
- package/dist/hydration.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/internal.d.ts +1 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +1 -0
- package/dist/internal.js.map +1 -1
- package/dist/jsx-dev-runtime.d.ts +5 -0
- package/dist/jsx-dev-runtime.d.ts.map +1 -1
- package/dist/jsx-dev-runtime.js +3 -0
- package/dist/jsx-dev-runtime.js.map +1 -1
- package/dist/jsx-runtime.d.ts +13 -0
- package/dist/jsx-runtime.d.ts.map +1 -1
- package/dist/jsx-runtime.js +4 -0
- package/dist/jsx-runtime.js.map +1 -1
- package/dist/react-default.d.ts +2 -0
- package/dist/react-default.d.ts.map +1 -1
- package/dist/react-default.js +2 -0
- package/dist/react-default.js.map +1 -1
- package/dist/root.d.ts +13 -0
- package/dist/root.d.ts.map +1 -1
- package/dist/root.js +6 -0
- package/dist/root.js.map +1 -1
- package/dist/scheduler.d.ts +23 -0
- package/dist/scheduler.d.ts.map +1 -1
- package/dist/scheduler.js +19 -0
- package/dist/scheduler.js.map +1 -1
- package/dist/server-render.d.ts +1 -0
- package/dist/server-render.d.ts.map +1 -1
- package/dist/server-render.js +1 -0
- package/dist/server-render.js.map +1 -1
- package/package.json +3 -3
- package/src/class-component.ts +47 -11
- package/src/context.ts +4 -0
- package/src/element.ts +33 -6
- package/src/event-priority.ts +1 -0
- package/src/event-replay.ts +6 -0
- package/src/flight-decoder.ts +1 -0
- package/src/flight-protocol.ts +2 -0
- package/src/flight-types.ts +21 -0
- package/src/flight.ts +7 -0
- package/src/hooks-entry.ts +2 -0
- package/src/hooks.ts +55 -15
- package/src/host-reconciler.ts +39 -38
- package/src/hydration.ts +2 -0
- package/src/index.ts +3 -0
- package/src/internal.ts +1 -0
- package/src/jsx-dev-runtime.ts +5 -0
- package/src/jsx-runtime.ts +13 -0
- package/src/react-default.ts +2 -0
- package/src/root.ts +13 -0
- package/src/scheduler.ts +23 -0
- package/src/server-render.ts +1 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-reconciler.js","sourceRoot":"","sources":["../src/host-reconciler.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Activity,\n ERROR_BOUNDARY_TYPE,\n FORWARD_REF_TYPE,\n Fragment,\n HOST_CHILDREN_ONLY_PROPS_META,\n LAZY_TYPE,\n MEMO_TYPE,\n Profiler,\n REACTIVE_TEXT_BINDING_META,\n STRICT_MODE_TYPE,\n Suspense,\n SuspenseList,\n type ReactCompatElement,\n type ReactCompatPortal,\n isReactCompatElement,\n isReactCompatPortal,\n type ReactCompatNode,\n} from \"./element.js\";\nimport {\n consumerContext,\n isReactCompatConsumer,\n isReactCompatProvider,\n renderWithContextProvider,\n useContext,\n} from \"./context.js\";\nimport { applyPostChildFormProps, applyProps } from \"./dom-props.js\";\nimport { syncChildNodes, syncOwnedChildNodes, syncScopedChildNodes } from \"./dom-children.js\";\nimport { setLogicalEventParent } from \"./host-event-binder.js\";\nimport { NoFlags, Placement, Update } from \"./fiber-flags.js\";\nimport {\n createHostElement,\n hostElementMatches,\n isHostElement,\n namespaceForHostChildren,\n namespaceForHostElement,\n type HostNamespace,\n} from \"./dom-host-rules.js\";\nimport { createFiber, createWorkInProgress, type Fiber, type FiberRoot } from \"./fiber.js\";\nimport {\n renderWithRootRuntime,\n renderWithProfiler,\n renderWithStrictModeMemoCapture,\n renderStrictModeReplay,\n runWithHostCommit,\n restoreRuntimeSnapshot,\n takeRuntimeSnapshot,\n getDevToolsHookState,\n collectRuntimeInstanceKeys,\n hasContextDependency,\n hasChangedContextDependency,\n subscribeReactiveTextBinding,\n type RootRuntime,\n} from \"./hooks.js\";\nimport { isThenable } from \"./thenable.js\";\nimport {\n hasDirtyClassUpdate,\n isClassComponentType,\n recoverClassComponentError,\n renderClassComponentWithRuntime,\n type ClassComponentInstance,\n} from \"./class-component.js\";\nimport { areMemoPropsEqual, getPendingProps, shallowEqual } from \"./prop-comparison.js\";\nimport {\n reportElementTextMismatch,\n reportExtraHydrationNodes,\n reportHydrationNodeTypeMismatch,\n reportMissingHydrationNode,\n reportReactSuspenseServerError,\n reportRecoverable,\n type HydrationScope,\n type RenderOptions,\n withHydrationComponentStack,\n} from \"./hydration.js\";\n\ninterface MemoFiberState {\n props: Record<string, unknown>;\n instanceKeys: string[];\n}\n\ninterface FunctionFiberState {\n element: ReactCompatElement;\n props: Record<string, unknown>;\n instanceKeys: string[];\n hasContextDependencies: boolean;\n}\n\ninterface SuspenseFiberState {\n didSuspend: boolean;\n}\n\nconst committedPortalContainers = new Set<Element>();\n\ninterface FiberHydrationOptions extends RenderOptions {\n previousNodes?: readonly Node[];\n resumeId?: string;\n consumeResumeMarkers?: boolean;\n namespace?: HostNamespace;\n documentRef?: Document;\n}\n\nconst SKIP_COMMIT_PATH = \"\\0\";\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\ninterface FiberReconcileResult {\n fiber: Fiber | undefined;\n consumed: number;\n}\n\ninterface ReactSuspenseBoundary {\n previousNodes?: Node[];\n consumed: number;\n serverError?: {\n message: string;\n componentStack?: string;\n };\n}\n\nlet suspensePrimaryRenderDepth = 0;\n\nexport function canRenderHostFiber(node: ReactCompatNode): boolean {\n if (\n node === null ||\n node === undefined ||\n typeof node === \"boolean\" ||\n typeof node === \"string\" ||\n typeof node === \"number\"\n ) {\n return true;\n }\n\n if (Array.isArray(node)) {\n return node.every(canRenderHostFiber);\n }\n\n if (isReactCompatPortal(node)) {\n return canRenderHostFiber(node.children);\n }\n\n if (!isReactCompatElement(node)) {\n return false;\n }\n\n if (\n node.type === Fragment ||\n node.type === Profiler ||\n node.type === STRICT_MODE_TYPE\n ) {\n return canRenderHostFiber(node.props.children as ReactCompatNode);\n }\n\n if (node.type === Activity) {\n return (node.props as { mode?: unknown }).mode === \"hidden\"\n ? true\n : canRenderHostFiber(node.props.children as ReactCompatNode);\n }\n\n if (node.type === Suspense || node.type === SuspenseList) {\n return true;\n }\n\n if (node.type === ERROR_BOUNDARY_TYPE) {\n return true;\n }\n\n if (isReactCompatProvider(node.type)) {\n return canRenderHostFiber(node.props.children as ReactCompatNode);\n }\n\n if (isReactCompatConsumer(node.type)) {\n return true;\n }\n\n if (isForwardRefType(node.type)) {\n return true;\n }\n\n if (isMemoType(node.type)) {\n return true;\n }\n\n if (isLazyType(node.type)) {\n return true;\n }\n\n if (isClassComponentType(node.type)) {\n return true;\n }\n\n return (\n typeof node.type === \"string\" &&\n canRenderHostFiber(node.props.children as ReactCompatNode)\n ) || isFunctionComponentType(node.type);\n}\n\nexport function renderHostFiberRoot(\n root: FiberRoot,\n element: ReactCompatNode,\n runtime?: RootRuntime,\n options: FiberHydrationOptions = {},\n): Fiber {\n const workInProgress = createWorkInProgress(root.current, { children: element });\n const rootDocument = root.container.ownerDocument;\n const result = reconcileHostChild(\n workInProgress,\n root.current.child,\n element,\n runtime,\n options.previousNodes === undefined ? \"0\" : \"\",\n { ...options, documentRef: options.documentRef ?? rootDocument },\n );\n workInProgress.child = result.fiber;\n workInProgress.memoizedProps = { children: element };\n root.refCleanupKnown = true;\n return workInProgress;\n}\n\nexport function renderHydratingHostFiberRoot(\n root: FiberRoot,\n element: ReactCompatNode,\n runtime: RootRuntime,\n scope: HydrationScope,\n options: FiberHydrationOptions = {},\n): Fiber {\n root.hydrationState = {\n parent: scope.parent,\n nextHydratableNode: scope.previousNodes[0] ?? null,\n before: scope.before,\n after: scope.after,\n ...(options.resumeId === undefined ? {} : { resumeId: options.resumeId }),\n };\n return renderHostFiberRoot(root, element, runtime, {\n ...options,\n previousNodes: scope.previousNodes,\n });\n}\n\nexport function commitHostFiberRoot(\n root: FiberRoot,\n finishedWork: Fiber,\n options: RenderOptions = {},\n): void {\n runWithHostCommit(() => {\n try {\n committedPortalContainers.clear();\n const commitPath = getRootCommitPath(options);\n if (!hasChildListMutation(finishedWork)) {\n commitHostDirtyChildren(finishedWork.child, root.container, root.container, commitPath, options);\n return;\n }\n\n if (\n !finishedWork.childListChanged &&\n finishedWork.subtreeChildListChanged &&\n commitHostKeyedChildListMutation(finishedWork.child, root.container, root.container, commitPath, options)\n ) {\n return;\n }\n\n const nodes = commitHostChildren(finishedWork.child, root.container, root.container, commitPath, options);\n syncChildNodes(root.container, nodes);\n } finally {\n committedPortalContainers.clear();\n }\n });\n}\n\nexport function commitHydratingHostFiberRoot(\n root: FiberRoot,\n finishedWork: Fiber,\n scope: HydrationScope,\n options: FiberHydrationOptions = {},\n): void {\n runWithHostCommit(() => {\n try {\n committedPortalContainers.clear();\n const eventRoot = root.container;\n const nodes = commitHostChildren(finishedWork.child, scope.parent, eventRoot, \"\", options);\n syncScopedChildNodes(scope.parent, scope.before, scope.after, nodes);\n } finally {\n committedPortalContainers.clear();\n }\n });\n\n if (options.consumeResumeMarkers === true) {\n scope.before?.parentNode?.removeChild(scope.before);\n scope.after?.parentNode?.removeChild(scope.after);\n }\n}\n\nfunction reconcileHostChild(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n node: ReactCompatNode,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n resetFiberRefSubtree(parent);\n parent.subtreeFlags = NoFlags;\n parent.childListChanged = false;\n parent.subtreeChildListChanged = false;\n\n if (node === null || node === undefined || typeof node === \"boolean\") {\n parent.childListChanged = currentFirstChild !== undefined;\n return { fiber: undefined, consumed: 0 };\n }\n\n const children = Array.isArray(node) ? node : undefined;\n const rowResult =\n children === undefined\n ? undefined\n : reconcileKeyedRowHostChildren(parent, currentFirstChild, children, options);\n if (rowResult !== undefined) {\n return rowResult;\n }\n\n const childCount = children === undefined ? 1 : children.length;\n const hasKeyedChildren = children !== undefined && hasKeyedChild(children);\n let existingByKey: Map<string, Fiber> | undefined;\n let currentKeyed: Fiber | undefined = currentFirstChild;\n let currentUnkeyed = currentFirstChild;\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let consumed = 0;\n let skipRemainingKeyedLookup = false;\n\n for (let index = 0; index < childCount; index += 1) {\n const child = children === undefined ? node : children[index];\n const key = getNodeKey(child);\n let matchedCurrent: Fiber | undefined;\n\n if (key === undefined) {\n matchedCurrent = currentUnkeyed;\n } else if (skipRemainingKeyedLookup) {\n matchedCurrent = undefined;\n } else if (existingByKey !== undefined) {\n matchedCurrent = existingByKey.get(key);\n } else if (currentKeyed?.key === key) {\n matchedCurrent = currentKeyed;\n currentKeyed = currentKeyed.sibling;\n } else if (\n children !== undefined &&\n currentKeyed?.sibling?.key === key &&\n canSkipSingleDeletedKeyedFiber(children, index, currentKeyed.sibling)\n ) {\n matchedCurrent = currentKeyed.sibling;\n currentKeyed = currentKeyed.sibling.sibling;\n } else {\n if (\n children !== undefined &&\n hasKeyedChildren &&\n canSkipRemainingKeyedLookup(currentKeyed, children, index)\n ) {\n skipRemainingKeyedLookup = true;\n currentKeyed = undefined;\n } else if (hasKeyedChildren) {\n existingByKey = collectExistingKeyedFibers(currentKeyed);\n matchedCurrent = existingByKey.get(key);\n }\n }\n\n const previousNodes =\n options.previousNodes === undefined\n ? undefined\n : options.previousNodes.slice(consumed);\n const result = createHostFiber(\n parent,\n matchedCurrent,\n child,\n key,\n runtime,\n getReconcileChildPath(path, child, index, options),\n previousNodes === undefined ? options : { ...options, previousNodes },\n );\n const fiber = result.fiber;\n\n if (fiber === undefined) {\n continue;\n }\n\n if (key === undefined) {\n currentUnkeyed = currentUnkeyed?.sibling;\n }\n consumed += result.consumed;\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n bubbleHostChild(parent, fiber);\n if (\n fiber.tag !== \"memo\" &&\n fiber.tag !== \"function-component\" &&\n fiber.tag !== \"forward-ref\" &&\n fiber.tag !== \"profiler\" &&\n fiber.tag !== \"suspense\" &&\n fiber.tag !== \"suspense-list\"\n && fiber.memoizedState === undefined\n ) {\n fiber.memoizedState = index;\n }\n previous = fiber;\n }\n\n parent.childListChanged = childFiberListShapeChanged(currentFirstChild, first);\n\n return { fiber: first, consumed };\n}\n\nfunction reconcileKeyedRowHostChildren(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n options: FiberHydrationOptions,\n): FiberReconcileResult | undefined {\n if (\n children.length === 0 ||\n currentFirstChild === undefined ||\n options.previousNodes !== undefined ||\n !shouldUseDirectHostTextChild()\n ) {\n return undefined;\n }\n\n let currentKeyed: Fiber | undefined = currentFirstChild;\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let listShapeChanged = currentFirstChild === undefined;\n let skipRemainingKeyedLookup = false;\n let subtreeFlags = NoFlags;\n let subtreeChildListChanged = false;\n let hasRefSubtree = false;\n const currentSiblingCount = countFiberSiblings(currentFirstChild);\n const canReuseUnchangedRows =\n currentSiblingCount === children.length ||\n isKeyedAppendOnly(currentFirstChild, children, currentSiblingCount);\n const row = createKeyedRowHostElementScratch();\n\n for (let index = 0; index < children.length; index += 1) {\n const child = children[index];\n\n if (!readKeyedRowHostElement(child, row)) {\n return undefined;\n }\n\n let matchedCurrent: Fiber | undefined;\n\n if (skipRemainingKeyedLookup) {\n matchedCurrent = undefined;\n } else if (currentKeyed === undefined) {\n listShapeChanged = true;\n skipRemainingKeyedLookup = true;\n matchedCurrent = undefined;\n } else if (currentKeyed?.key === row.key) {\n matchedCurrent = currentKeyed;\n currentKeyed = currentKeyed.sibling;\n } else if (\n currentKeyed?.sibling?.key === row.key &&\n canSkipSingleDeletedKeyedFiber(children, index, currentKeyed.sibling)\n ) {\n listShapeChanged = true;\n matchedCurrent = currentKeyed.sibling;\n currentKeyed = currentKeyed.sibling.sibling;\n } else if (canSkipRemainingKeyedLookup(currentKeyed, children, index)) {\n listShapeChanged = true;\n skipRemainingKeyedLookup = true;\n currentKeyed = undefined;\n matchedCurrent = undefined;\n } else {\n return undefined;\n }\n\n const fiber =\n matchedCurrent === undefined\n ? createKeyedRowHostFiber(parent, undefined, row, options)\n : (canReuseUnchangedRows ? getReusableKeyedRowHostFiber(matchedCurrent, row) : undefined) ??\n createKeyedRowHostFiber(parent, matchedCurrent, row, options);\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n if (fiber.hasRefSubtree) {\n hasRefSubtree = true;\n }\n subtreeFlags |= fiber.flags | fiber.subtreeFlags;\n subtreeChildListChanged =\n subtreeChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged;\n if (fiber.memoizedState === undefined) {\n fiber.memoizedState = index;\n }\n previous = fiber;\n }\n\n if (currentKeyed !== undefined) {\n listShapeChanged = true;\n }\n\n parent.hasRefSubtree = hasRefSubtree;\n parent.subtreeFlags = subtreeFlags;\n parent.subtreeChildListChanged = subtreeChildListChanged;\n parent.childListChanged = listShapeChanged;\n return { fiber: first, consumed: 0 };\n}\n\nfunction countFiberSiblings(first: Fiber): number {\n let count = 0;\n let cursor: Fiber | undefined = first;\n\n while (cursor !== undefined) {\n count += 1;\n cursor = cursor.sibling;\n }\n\n return count;\n}\n\nfunction isKeyedAppendOnly(\n currentFirstChild: Fiber,\n children: readonly ReactCompatNode[],\n currentSiblingCount: number,\n): boolean {\n if (children.length <= currentSiblingCount) {\n return false;\n }\n\n let current: Fiber | undefined = currentFirstChild;\n\n for (let index = 0; index < currentSiblingCount; index += 1) {\n if (current === undefined || current.key !== getNodeKey(children[index])) {\n return false;\n }\n current = current.sibling;\n }\n\n return current === undefined;\n}\n\nfunction getReusableKeyedRowHostFiber(\n current: Fiber,\n row: KeyedRowHostElement,\n): Fiber | undefined {\n if (\n current.tag !== \"host-component\" ||\n current.type !== row.type ||\n current.hydrateExisting ||\n current.child !== undefined ||\n !isHostElement(current.stateNode)\n ) {\n return undefined;\n }\n\n const previousProps = current.memoizedProps ?? current.pendingProps;\n\n if (typeof previousProps !== \"object\" || previousProps === null) {\n return undefined;\n }\n\n const previousRecord = previousProps as Record<string, unknown>;\n\n if (\n getDirectHostTextChild(previousRecord.children) !== row.text ||\n !hostOwnPropsEqual(previousRecord, row.element.props)\n ) {\n return undefined;\n }\n\n current.pendingProps = row.element.props;\n current.flags = NoFlags;\n current.subtreeFlags = NoFlags;\n current.childListChanged = false;\n current.subtreeChildListChanged = false;\n current.hostChildListChanged = false;\n current.hasRefSubtree = false;\n return current;\n}\n\ninterface KeyedRowHostElement {\n element: ReactCompatElement;\n key: string;\n type: string;\n text: string;\n}\n\nfunction createKeyedRowHostElementScratch(): KeyedRowHostElement {\n return {\n element: undefined as unknown as ReactCompatElement,\n key: \"\",\n type: \"\",\n text: \"\",\n };\n}\n\nfunction readKeyedRowHostElement(\n node: ReactCompatNode,\n row: KeyedRowHostElement,\n): boolean {\n if (\n !isReactCompatElement(node) ||\n typeof node.type !== \"string\" ||\n node.key === null ||\n node.ref !== null\n ) {\n return false;\n }\n\n // Any keyed host row whose children collapse to a single text value\n // qualifies; row props are compared per reuse with hostOwnPropsEqual.\n const text = getDirectHostTextChild((node.props as Record<string, unknown>).children);\n\n if (text === undefined) {\n return false;\n }\n\n row.element = node;\n row.key = node.key;\n row.type = node.type;\n row.text = text;\n return true;\n}\n\nfunction createKeyedRowHostFiber(\n parent: Fiber,\n current: Fiber | undefined,\n row: KeyedRowHostElement,\n options: FiberHydrationOptions,\n): Fiber {\n const node = row.element;\n const elementNamespace = namespaceForHostElement(options.namespace ?? \"html\", row.type);\n const fiber =\n current?.tag === \"host-component\" && current.type === row.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"host-component\", node.props, row.key);\n\n fiber.type = row.type;\n fiber.stateNode =\n current?.tag === \"host-component\" &&\n current.type === row.type &&\n isHostElement(current.stateNode) &&\n hostElementMatches(current.stateNode, row.type, elementNamespace)\n ? current.stateNode\n : createHostElement(getDocumentRef(options), row.type, options.namespace ?? \"html\");\n fiber.child = undefined;\n fiber.pendingProps = node.props;\n fiber.hostChildListChanged = false;\n fiber.hasRefSubtree = false;\n\n if (current === undefined || fiber.alternate !== current) {\n fiber.flags |= Placement;\n fiber.hostChildListChanged = true;\n return fiber;\n }\n\n const previousProps = current.memoizedProps ?? current.pendingProps;\n const previousText = getDirectHostTextChild(hostFiberChildrenProp(previousProps));\n\n if (previousText !== row.text || !hostOwnPropsEqual(previousProps, row.element.props)) {\n fiber.flags |= Update;\n }\n\n return fiber;\n}\n\nfunction canReuseStaticHostSubtree(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (\n cursor.tag !== \"host-component\" &&\n cursor.tag !== \"host-text\" &&\n cursor.tag !== \"fragment\" &&\n cursor.tag !== \"strict-mode\"\n ) {\n return false;\n }\n\n if (cursor.child !== undefined && !canReuseStaticHostSubtree(cursor.child)) {\n return false;\n }\n\n cursor = cursor.sibling;\n }\n\n return true;\n}\n\nfunction canSkipSingleDeletedKeyedFiber(\n children: readonly ReactCompatNode[],\n index: number,\n matched: Fiber,\n): boolean {\n const nextKey = index + 1 < children.length ? getNodeKey(children[index + 1]) : undefined;\n const afterMatched = matched.sibling;\n\n return nextKey === undefined ? afterMatched === undefined : afterMatched?.key === nextKey;\n}\n\nfunction canSkipRemainingKeyedLookup(\n current: Fiber | undefined,\n children: readonly ReactCompatNode[],\n startIndex: number,\n): boolean {\n const currentRange = readContiguousNumericFiberKeyRange(current);\n\n if (currentRange === undefined) {\n return false;\n }\n\n const nextRange = readContiguousNumericNodeKeyRange(children, startIndex);\n\n if (nextRange === undefined) {\n return false;\n }\n\n return (\n currentRange.end < nextRange.start ||\n nextRange.end < currentRange.start\n );\n}\n\nfunction readContiguousNumericFiberKeyRange(\n fiber: Fiber | undefined,\n): { start: number; end: number } | undefined {\n let cursor = fiber;\n let start: number | undefined;\n let previous: number | undefined;\n\n while (cursor !== undefined) {\n const value = parseNumericKey(cursor.key);\n\n if (value === undefined || (previous !== undefined && value !== previous + 1)) {\n return undefined;\n }\n\n start ??= value;\n previous = value;\n cursor = cursor.sibling;\n }\n\n return start === undefined || previous === undefined\n ? undefined\n : { start, end: previous };\n}\n\nfunction readContiguousNumericNodeKeyRange(\n children: readonly ReactCompatNode[],\n startIndex: number,\n): { start: number; end: number } | undefined {\n let start: number | undefined;\n let previous: number | undefined;\n\n for (let index = startIndex; index < children.length; index += 1) {\n const value = parseNumericKey(getNodeKey(children[index]));\n\n if (value === undefined || (previous !== undefined && value !== previous + 1)) {\n return undefined;\n }\n\n start ??= value;\n previous = value;\n }\n\n return start === undefined || previous === undefined\n ? undefined\n : { start, end: previous };\n}\n\nfunction parseNumericKey(key: string | undefined): number | undefined {\n if (key === undefined || key.length === 0) {\n return undefined;\n }\n\n const value = Number(key);\n\n return Number.isSafeInteger(value) && String(value) === key ? value : undefined;\n}\n\nfunction childFiberListShapeChanged(\n current: Fiber | undefined,\n next: Fiber | undefined,\n): boolean {\n let currentCursor = current;\n let nextCursor = next;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n const isSameSlot =\n nextCursor === currentCursor ||\n nextCursor.alternate === currentCursor;\n\n if (\n !isSameSlot ||\n currentCursor.tag !== nextCursor.tag ||\n currentCursor.type !== nextCursor.type ||\n currentCursor.key !== nextCursor.key\n ) {\n return true;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n }\n\n return currentCursor !== undefined || nextCursor !== undefined;\n}\n\nfunction bubbleHostChild(parent: Fiber, child: Fiber): void {\n if (child.hasRefSubtree) {\n parent.hasRefSubtree = true;\n }\n parent.subtreeFlags |= child.flags | child.subtreeFlags;\n parent.subtreeChildListChanged =\n parent.subtreeChildListChanged ||\n child.childListChanged ||\n child.subtreeChildListChanged;\n}\n\nfunction resetFiberRefSubtree(fiber: Fiber): void {\n fiber.hasRefSubtree = false;\n}\n\nfunction includeNodeRef(fiber: Fiber, node: ReactCompatNode): void {\n fiber.hasRefSubtree =\n fiber.hasRefSubtree ||\n (isReactCompatElement(node) && node.ref !== null);\n}\n\nfunction markHostFiberEffects(\n fiber: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n): void {\n if (current === undefined || fiber.alternate !== current) {\n fiber.flags |= Placement;\n fiber.hostChildListChanged = true;\n return;\n }\n\n if (fiber.tag === \"host-text\") {\n if (!Object.is(current.memoizedProps ?? current.pendingProps, fiber.pendingProps)) {\n fiber.flags |= Update;\n }\n return;\n }\n\n if (fiber.tag !== \"host-component\") {\n return;\n }\n\n const previousProps = current.memoizedProps ?? current.pendingProps;\n const nextProps = fiber.pendingProps as Record<string, unknown>;\n\n fiber.hostChildListChanged = hostChildListChanged(previousProps, nextProps);\n\n if (!hostOwnPropsEqual(previousProps, nextProps) || hostDirectTextChildChanged(previousProps, nextProps)) {\n fiber.flags |= Update;\n }\n\n if (isReactCompatElement(node) && node.ref !== null) {\n fiber.flags |= Update;\n }\n}\n\nfunction createHostFiber(\n parent: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n const result = createHostFiberImpl(parent, current, node, key, runtime, path, options);\n\n if (result.fiber !== undefined) {\n if (canFinalizeNewHostFiber(result.fiber, current, node, options)) {\n result.fiber.flags |= Placement;\n result.fiber.hostChildListChanged = true;\n return result;\n }\n\n result.fiber.pendingProps = getPendingProps(node);\n includeNodeRef(result.fiber, node);\n markHostFiberEffects(result.fiber, current, node);\n }\n\n return result;\n}\n\nfunction canFinalizeNewHostFiber(\n fiber: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n options: FiberHydrationOptions,\n): boolean {\n return (\n current === undefined &&\n options.previousNodes === undefined &&\n fiber.tag === \"host-component\" &&\n isReactCompatElement(node) &&\n node.ref === null &&\n typeof node.type === \"string\"\n );\n}\n\nfunction createHostFiberImpl(\n parent: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return { fiber: undefined, consumed: 0 };\n }\n\n if (typeof node === \"string\" || typeof node === \"number\") {\n const existing = options.previousNodes?.[0];\n const fiber =\n current?.tag === \"host-text\"\n ? createWorkInProgress(current, String(node))\n : createFiber(\"host-text\", String(node), key);\n if (existing === undefined && options.previousNodes !== undefined) {\n reportMissingHydrationNode(options, path);\n } else if (existing !== undefined && !(existing instanceof Text)) {\n reportHydrationNodeTypeMismatch(options, path, \"text\", existing);\n }\n fiber.stateNode =\n existing instanceof Text\n ? existing\n : current?.tag === \"host-text\" && current.stateNode instanceof Text\n ? current.stateNode\n : getDocumentRef(options).createTextNode(\"\");\n\n if (existing instanceof Text && existing.data !== String(node)) {\n reportRecoverable(\n options,\n \"text\",\n path,\n new Error(\"Hydration text mismatch.\"),\n );\n }\n\n return { fiber, consumed: existing instanceof Text ? 1 : 0 };\n }\n\n if (Array.isArray(node)) {\n const fiber =\n current?.tag === \"fragment\"\n ? createWorkInProgress(current, node)\n : createFiber(\"fragment\", node, key);\n const childResult = reconcileHostChild(\n fiber,\n current?.child,\n node,\n runtime,\n path,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (!isReactCompatElement(node)) {\n if (isReactCompatPortal(node)) {\n return createPortalFiber(parent, current, node, key, runtime, path, options);\n }\n\n return { fiber: undefined, consumed: 0 };\n }\n\n if (node.type === Fragment) {\n const fiber =\n current?.tag === \"fragment\"\n ? createWorkInProgress(current, node.props.children)\n : createFiber(\"fragment\", node.props.children, key);\n const childResult = reconcileHostChild(\n fiber,\n current?.child,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.f`,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (node.type === Activity) {\n const children =\n (node.props as { mode?: unknown }).mode === \"hidden\"\n ? null\n : node.props.children;\n const fiber =\n current?.tag === \"fragment\"\n ? createWorkInProgress(current, children)\n : createFiber(\"fragment\", children, key);\n fiber.type = node.type;\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"fragment\" ? current.child : undefined,\n children as ReactCompatNode,\n runtime,\n `${path}.activity`,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (node.type === Profiler) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const fiber =\n current?.tag === \"profiler\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"profiler\", node.props, key);\n fiber.type = node.type;\n const childResult = renderWithProfiler(\n runtime,\n `${path}.profiler`,\n node.props,\n () =>\n reconcileHostChild(\n fiber,\n current?.tag === \"profiler\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.profiler`,\n options,\n ),\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (node.type === STRICT_MODE_TYPE) {\n return createStrictModeFiber(current, node, key, runtime, path, options);\n }\n\n if (node.type === Suspense) {\n return createSuspenseFiber(current, node, key, runtime, path, options);\n }\n\n if (node.type === SuspenseList) {\n return createSuspenseListFiber(current, node, key, runtime, path, options);\n }\n\n if (node.type === ERROR_BOUNDARY_TYPE) {\n const fiber =\n current?.tag === \"error-boundary\"\n ? createWorkInProgress(current, node.props)\n : createFiber(\"error-boundary\", node.props, key);\n fiber.type = node.type;\n\n try {\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"error-boundary\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.eb`,\n options,\n );\n fiber.child = childResult.fiber;\n } catch (error) {\n if (isThenable(error)) {\n throw error;\n }\n\n const normalizedError =\n error instanceof Error ? error : new Error(String(error));\n const onError = node.props.onError;\n\n if (typeof onError === \"function\") {\n (onError as (error: Error) => void)(normalizedError);\n }\n\n const fallback = node.props.fallback;\n const fallbackNode =\n typeof fallback === \"function\"\n ? (fallback as (error: Error) => ReactCompatNode)(normalizedError)\n : null;\n const fallbackResult = reconcileHostChild(\n fiber,\n current?.tag === \"error-boundary\" ? current.child : undefined,\n fallbackNode,\n runtime,\n `${path}.eb.fallback`,\n options,\n );\n fiber.child = fallbackResult.fiber;\n }\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n if (isReactCompatProvider(node.type)) {\n const fiber =\n current?.tag === \"context-provider\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"context-provider\", node.props, key);\n fiber.type = node.type;\n const childResult = renderWithContextProvider(node.type, node.props.value, () =>\n reconcileHostChild(\n fiber,\n current?.tag === \"context-provider\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.provider`,\n options,\n ),\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isReactCompatConsumer(node.type)) {\n const fiber =\n current?.tag === \"context-consumer\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"context-consumer\", node.props, key);\n fiber.type = node.type;\n const children = node.props.children;\n const render =\n typeof children === \"function\"\n ? (children as (value: unknown) => ReactCompatNode)\n : () => null;\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"context-consumer\" ? current.child : undefined,\n render(useContext(consumerContext(node.type))),\n runtime,\n `${path}.consumer`,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isForwardRefType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const forwardRefType = node.type;\n const fiber =\n current?.tag === \"forward-ref\" && current.type === forwardRefType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"forward-ref\", node.props, key);\n fiber.type = forwardRefType;\n const rendered = renderWithRootRuntime(runtime, path, () =>\n forwardRefType.render(node.props, node.ref),\n forwardRefType,\n );\n fiber.memoizedState = getDevToolsHookState(runtime, path);\n const childOptions = withHydrationComponentStack(\n options,\n getComponentName(forwardRefType.render),\n );\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"forward-ref\" ? current.child : undefined,\n rendered,\n runtime,\n `${path}.forwardRef`,\n childOptions,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isMemoType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const memoType = node.type;\n const memoPath = `${path}.memo`;\n const previousMemoState =\n current?.tag === \"memo\"\n ? (current.memoizedState as MemoFiberState | undefined)\n : undefined;\n const fiber =\n current?.tag === \"memo\" && current.type === memoType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"memo\", node.props, key);\n fiber.type = memoType;\n\n if (\n previousMemoState !== undefined &&\n !hasDirtyInstance(runtime, previousMemoState.instanceKeys, memoPath) &&\n !hasUnflushedMountEffectInstance(runtime, previousMemoState.instanceKeys) &&\n areMemoPropsEqual(memoType, previousMemoState.props, node.props)\n ) {\n markActiveInstanceKeys(runtime, previousMemoState.instanceKeys);\n fiber.child = current?.child;\n fiber.memoizedState = previousMemoState;\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n const renderedElement: ReactCompatElement = {\n ...node,\n type: memoType.type,\n };\n const childResult = createHostFiber(\n fiber,\n current?.tag === \"memo\" ? current.child : undefined,\n renderedElement,\n key,\n runtime,\n memoPath,\n options,\n );\n fiber.child = childResult.fiber;\n if (fiber.child !== undefined) {\n fiber.child.return = fiber;\n fiber.child.sibling = undefined;\n bubbleHostChild(fiber, fiber.child);\n }\n fiber.memoizedState = {\n props: { ...node.props },\n instanceKeys: collectInstanceKeys(runtime, memoPath),\n };\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isLazyType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const lazyType = node.type;\n const fiber =\n current?.tag === \"lazy\" && current.type === lazyType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"lazy\", node.props, key);\n fiber.type = lazyType;\n\n if (lazyType.status === \"resolved\" && lazyType.resolved !== undefined) {\n const renderedElement: ReactCompatElement = {\n ...node,\n type: lazyType.resolved,\n };\n const childResult = createHostFiber(\n fiber,\n current?.tag === \"lazy\" ? current.child : undefined,\n renderedElement,\n key,\n runtime,\n `${path}.lazy`,\n options,\n );\n fiber.child = childResult.fiber;\n if (fiber.child !== undefined) {\n fiber.child.return = fiber;\n fiber.child.sibling = undefined;\n bubbleHostChild(fiber, fiber.child);\n }\n return { fiber, consumed: childResult.consumed };\n }\n\n if (lazyType.status === \"rejected\") {\n throw lazyType.error;\n }\n\n if (lazyType.status === \"uninitialized\") {\n lazyType.status = \"pending\";\n lazyType.promise = lazyType\n .load()\n .then((module) => {\n lazyType.status = \"resolved\";\n lazyType.resolved = module.default;\n runtime.rerender();\n })\n .catch((error: unknown) => {\n lazyType.status = \"rejected\";\n lazyType.error = error;\n runtime.rerender();\n });\n }\n\n if (suspensePrimaryRenderDepth > 0) {\n throw lazyType.promise;\n }\n\n fiber.child = undefined;\n return { fiber, consumed: 0 };\n }\n\n if (isClassComponentType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const classType = node.type;\n const fiber =\n current?.tag === \"class-component\" && current.type === classType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"class-component\", node.props, key);\n fiber.type = classType;\n const previousClassChildKeys = collectInstanceKeys(runtime, `${path}.class`);\n const currentClassInstance =\n current?.tag === \"class-component\" && current.type === classType\n ? (current.stateNode as ClassComponentInstance)\n : undefined;\n const rendered = renderClassComponentWithRuntime(\n classType,\n node.props,\n runtime,\n path,\n {\n ...(currentClassInstance === undefined\n ? {}\n : { currentInstance: currentClassInstance }),\n hasDirtyDescendant: hasDirtyInstance(\n runtime,\n previousClassChildKeys,\n `${path}.class`,\n ),\n },\n );\n applyRef(node.ref, rendered.kind === \"skip\" ? current?.stateNode : rendered.instance);\n\n if (rendered.kind === \"skip\") {\n fiber.child = current?.child;\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n const childOptions = withHydrationComponentStack(\n options,\n getComponentName(classType),\n );\n\n try {\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"class-component\" ? current.child : undefined,\n rendered.node,\n runtime,\n `${path}.class`,\n childOptions,\n );\n fiber.child = childResult.fiber;\n fiber.stateNode = rendered.instance;\n } catch (error) {\n const fallbackNode = recoverClassComponentError(\n rendered.type,\n rendered.instance,\n error,\n );\n\n if (fallbackNode === undefined) {\n throw error;\n }\n\n const fallbackResult = reconcileHostChild(\n fiber,\n current?.tag === \"class-component\" ? current.child : undefined,\n fallbackNode,\n runtime,\n `${path}.class.fallback`,\n childOptions,\n );\n fiber.child = fallbackResult.fiber;\n }\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n if (isFunctionComponentType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const previousFunctionState =\n current?.tag === \"function-component\"\n ? (current.stateNode as FunctionFiberState | undefined)\n : undefined;\n const fiber =\n current?.tag === \"function-component\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"function-component\", node.props, key);\n fiber.type = node.type;\n\n const canReuseSameElement =\n previousFunctionState !== undefined &&\n previousFunctionState.hasContextDependencies !== true &&\n previousFunctionState.element === node;\n const canReuseExternalStoreSnapshot =\n previousFunctionState !== undefined &&\n runtime.externalStoreUpdate &&\n shallowEqual(previousFunctionState.props, node.props) &&\n !hasChangedContextDependency(runtime, previousFunctionState.instanceKeys);\n\n if (\n runtime.strictReplayDepth === 0 &&\n previousFunctionState !== undefined &&\n (canReuseSameElement || canReuseExternalStoreSnapshot) &&\n !hasDirtyInstance(runtime, previousFunctionState.instanceKeys, path) &&\n !hasUnflushedMountEffectInstance(runtime, previousFunctionState.instanceKeys) &&\n !hasPendingAsyncChild(current?.child)\n ) {\n markActiveInstanceKeys(runtime, previousFunctionState.instanceKeys);\n fiber.child = current?.child;\n fiber.memoizedState = current?.memoizedState;\n fiber.stateNode = previousFunctionState;\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n const rendered = renderWithRootRuntime(runtime, path, () =>\n (node.type as (props: Record<string, unknown>) => ReactCompatNode)(node.props),\n node.type,\n );\n fiber.memoizedState = getDevToolsHookState(runtime, path);\n const childOptions = withHydrationComponentStack(\n options,\n getComponentName(node.type as Function),\n );\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"function-component\" ? current.child : undefined,\n rendered,\n runtime,\n `${path}.0`,\n childOptions,\n );\n fiber.child = childResult.fiber;\n const instanceKeys = collectInstanceKeys(runtime, path);\n fiber.stateNode = {\n element: node,\n props: { ...node.props },\n instanceKeys,\n hasContextDependencies: hasContextDependency(runtime, instanceKeys),\n } satisfies FunctionFiberState;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (typeof node.type !== \"string\") {\n return { fiber: undefined, consumed: 0 };\n }\n\n const elementNamespace = namespaceForHostElement(options.namespace ?? \"html\", node.type);\n const childNamespace = namespaceForHostChildren(elementNamespace, node.type);\n const fiber =\n current?.tag === \"host-component\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"host-component\", node.props, key);\n const existing = options.previousNodes?.[0];\n const existingElement = isHostElement(existing) ? existing : undefined;\n const tagMatches =\n existingElement !== undefined &&\n hostElementMatches(existingElement, node.type, elementNamespace);\n\n if (existing === undefined && options.previousNodes !== undefined) {\n reportMissingHydrationNode(options, path);\n } else if (existing !== undefined && !isHostElement(existing)) {\n reportHydrationNodeTypeMismatch(options, path, `<${node.type}>`, existing);\n }\n\n if (existingElement !== undefined && !tagMatches) {\n reportRecoverable(\n options,\n \"tag\",\n path,\n new Error(\n `Hydration tag mismatch: expected <${node.type}> but found <${existingElement.tagName.toLowerCase()}>.`,\n ),\n );\n reportElementTextMismatch(options, `${path}.c`, existingElement, node.props.children);\n }\n\n fiber.type = node.type;\n fiber.stateNode =\n tagMatches\n ? existingElement\n : current?.tag === \"host-component\" &&\n current.type === node.type &&\n isHostElement(current.stateNode) &&\n hostElementMatches(current.stateNode, node.type, elementNamespace)\n ? current.stateNode\n : createHostElement(getDocumentRef(options), node.type, options.namespace ?? \"html\");\n fiber.hydrateExisting = tagMatches && options.previousNodes !== undefined;\n const previousChildNodes =\n tagMatches && existingElement !== undefined\n ? Array.from(existingElement.childNodes)\n : undefined;\n const directTextChild =\n shouldUseDirectHostTextChild() && previousChildNodes === undefined\n ? getDirectHostTextChild(node.props.children)\n : undefined;\n if (\n previousChildNodes === undefined &&\n current?.tag === \"host-component\" &&\n current.type === node.type &&\n Object.is(hostFiberChildrenProp(current.memoizedProps), node.props.children) &&\n !hasDirtyInstance(runtime, [], `${path}.c`) &&\n canReuseStaticHostSubtree(current.child)\n ) {\n fiber.child = current.child;\n if (fiber.child !== undefined) {\n fiber.child.return = fiber;\n }\n parent.child ??= fiber;\n return { fiber, consumed: existing === undefined ? 0 : 1 };\n }\n\n if (directTextChild !== undefined) {\n fiber.child = undefined;\n parent.child ??= fiber;\n return { fiber, consumed: existing === undefined ? 0 : 1 };\n }\n\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"host-component\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.c`,\n {\n ...options,\n namespace: childNamespace,\n ...(previousChildNodes === undefined ? {} : { previousNodes: previousChildNodes }),\n },\n );\n fiber.child = childResult.fiber;\n if (previousChildNodes !== undefined) {\n reportExtraHydrationNodes(options, `${path}.c`, previousChildNodes, childResult.consumed);\n }\n parent.child ??= fiber;\n return { fiber, consumed: existing === undefined ? 0 : 1 };\n}\n\nfunction isFunctionComponentType(value: unknown): value is (\n props: Record<string, unknown>,\n) => ReactCompatNode {\n return (\n typeof value === \"function\" &&\n typeof (value as { prototype?: { render?: unknown } }).prototype?.render !==\n \"function\"\n );\n}\n\nfunction commitHostChildren(\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): Node[] {\n const nodes: Node[] = [];\n let cursor = fiber;\n let index = 0;\n\n while (cursor !== undefined) {\n for (const node of commitHostFiber(cursor, parent, eventRoot, joinCommitPath(path, String(index)), options)) {\n nodes.push(node);\n }\n cursor = cursor.sibling;\n index += 1;\n }\n\n return nodes;\n}\n\nfunction commitHostDirtyChildren(\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): void {\n let cursor = fiber;\n let index = 0;\n\n while (cursor !== undefined) {\n if (hasHostCommitWork(cursor)) {\n commitHostDirtyFiber(cursor, parent, eventRoot, joinCommitPath(path, String(index)), options);\n }\n cursor = cursor.sibling;\n index += 1;\n }\n}\n\nfunction commitHostDirtyFiber(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): void {\n if (fiber.tag === \"host-text\") {\n commitHostFiber(fiber, parent, eventRoot, path, options);\n return;\n }\n\n if (fiber.tag === \"host-component\") {\n const element = fiber.stateNode;\n\n if (!isHostElement(element)) {\n finishCommittedFiber(fiber);\n return;\n }\n\n const props = fiber.pendingProps as Record<string, unknown>;\n const previousProps = fiber.memoizedProps as Record<string, unknown> | undefined;\n const directTextChild =\n fiber.child === undefined && fiber.hydrateExisting !== true\n ? getDirectHostTextChild(props.children)\n : undefined;\n const textOnlyChildrenUpdate =\n directTextChild !== undefined &&\n hostPropsAreKnownChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreKnownChildrenOnly(props);\n const propsAreUnchanged =\n fiber.hydrateExisting !== true &&\n !textOnlyChildrenUpdate &&\n hostPropsEqual(fiber.memoizedProps, props);\n const propsAreChildrenOnly =\n textOnlyChildrenUpdate ||\n (fiber.hydrateExisting !== true &&\n hostPropsAreChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreChildrenOnly(props));\n const textOnlyRowUpdate =\n !propsAreUnchanged &&\n !propsAreChildrenOnly &&\n fiber.hydrateExisting !== true &&\n isRowTextOnlyUpdate(fiber.memoizedProps, props);\n\n if (!propsAreUnchanged && !propsAreChildrenOnly && !textOnlyRowUpdate) {\n applyProps(element, props, path, {\n ...options,\n eventRoot,\n preserveHydrationAttributes: fiber.hydrateExisting,\n });\n applyChangedRef(previousProps?.ref, props.ref, element);\n }\n\n if (directTextChild !== undefined) {\n const text = syncDirectHostTextChild(element, directTextChild);\n subscribeReactiveHostTextBinding(props, text);\n } else if (fiber.subtreeFlags !== NoFlags) {\n commitHostDirtyChildren(fiber.child, element, eventRoot, `${path}.c`, options);\n }\n\n applyPostChildFormProps(element, props, previousProps);\n fiber.memoizedProps = props;\n finishCommittedFiber(fiber);\n return;\n }\n\n if (fiber.tag === \"portal\") {\n const container = fiber.stateNode;\n\n if (container instanceof Element) {\n setLogicalEventParent(container, parent);\n commitHostDirtyChildren(fiber.child, container, container, `${path}.portal`, options);\n }\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return;\n }\n\n if (fiber.subtreeFlags !== NoFlags) {\n commitHostDirtyChildren(fiber.child, parent, eventRoot, path, options);\n }\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n}\n\nfunction hasHostCommitWork(fiber: Fiber): boolean {\n return (\n fiber.flags !== NoFlags ||\n fiber.subtreeFlags !== NoFlags ||\n fiber.hostChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged ||\n fiber.hydrateExisting\n );\n}\n\nfunction commitHostKeyedChildListMutation(\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): boolean {\n let cursor = fiber;\n let index = 0;\n let committed = false;\n\n while (cursor !== undefined) {\n if (!hasHostCommitWork(cursor)) {\n cursor = cursor.sibling;\n index += 1;\n continue;\n }\n\n const childPath = joinCommitPath(path, String(index));\n const didCommit = commitHostKeyedChildListMutationFiber(\n cursor,\n parent,\n eventRoot,\n childPath,\n options,\n );\n\n if (!didCommit) {\n return false;\n }\n\n committed = true;\n cursor = cursor.sibling;\n index += 1;\n }\n\n return committed;\n}\n\nfunction commitHostKeyedChildListMutationFiber(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): boolean {\n if (fiber.childListChanged) {\n const mutationParent =\n fiber.tag === \"host-component\" && isHostElement(fiber.stateNode)\n ? fiber.stateNode\n : parent;\n\n if (fiber.tag === \"host-component\" && !isHostElement(fiber.stateNode)) {\n return false;\n }\n\n if (commitHostAppendSuffix(fiber, mutationParent, eventRoot, path, options)) {\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n if (commitHostSingleRemoval(fiber, mutationParent)) {\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n return false;\n }\n\n if (fiber.subtreeChildListChanged) {\n if (fiber.tag === \"host-component\") {\n const element = fiber.stateNode;\n\n if (!isHostElement(element)) {\n return false;\n }\n\n if (!commitHostKeyedChildListMutation(fiber.child, element, eventRoot, `${path}.c`, options)) {\n return false;\n }\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n if (!commitHostKeyedChildListMutation(fiber.child, parent, eventRoot, path, options)) {\n return false;\n }\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n commitHostDirtyFiber(fiber, parent, eventRoot, path, options);\n return true;\n}\n\nfunction commitHostAppendSuffix(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions,\n): boolean {\n const append = getPlacementAppendSuffix(fiber.child) ?? getAppendSuffix(fiber.alternate?.child, fiber.child);\n\n if (append === undefined) {\n return false;\n }\n\n let cursor: Fiber | undefined = append.fiber;\n let index = append.index;\n\n while (cursor !== undefined) {\n for (const node of commitHostFiber(cursor, parent, eventRoot, joinCommitPath(path, String(index)), options)) {\n parent.appendChild(node);\n }\n cursor = cursor.sibling;\n index += 1;\n }\n\n return true;\n}\n\nfunction getPlacementAppendSuffix(next: Fiber | undefined): { fiber: Fiber; index: number } | undefined {\n let nextCursor = next;\n let index = 0;\n\n while (nextCursor !== undefined) {\n if ((nextCursor.flags & Placement) !== NoFlags) {\n if (index === 0) {\n return undefined;\n }\n\n let appendCursor: Fiber | undefined = nextCursor;\n\n while (appendCursor !== undefined) {\n if ((appendCursor.flags & Placement) === NoFlags) {\n return undefined;\n }\n appendCursor = appendCursor.sibling;\n }\n\n return { fiber: nextCursor, index };\n }\n\n if (hasHostCommitWork(nextCursor)) {\n return undefined;\n }\n\n nextCursor = nextCursor.sibling;\n index += 1;\n }\n\n return undefined;\n}\n\nfunction commitHostSingleRemoval(fiber: Fiber, parent: ParentNode): boolean {\n const removed = getSingleRemovedFiber(fiber.alternate?.child, fiber.child);\n\n if (removed === undefined) {\n return false;\n }\n\n let removedAny = false;\n\n for (const node of collectCommittedHostNodes(removed)) {\n if (node.parentNode !== parent) {\n return false;\n }\n\n parent.removeChild(node);\n removedAny = true;\n }\n\n return removedAny;\n}\n\nfunction getAppendSuffix(\n current: Fiber | undefined,\n next: Fiber | undefined,\n): { fiber: Fiber; index: number } | undefined {\n let currentCursor = current;\n let nextCursor = next;\n let index = 0;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n if (!isSameFiberSlot(currentCursor, nextCursor) || hasHostCommitWork(nextCursor)) {\n return undefined;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n index += 1;\n }\n\n if (currentCursor !== undefined || nextCursor === undefined) {\n return undefined;\n }\n\n return { fiber: nextCursor, index };\n}\n\nfunction getSingleRemovedFiber(\n current: Fiber | undefined,\n next: Fiber | undefined,\n): Fiber | undefined {\n let currentCursor = current;\n let nextCursor = next;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n if (!isSameFiberSlot(currentCursor, nextCursor)) {\n break;\n }\n\n if (hasHostCommitWork(nextCursor)) {\n return undefined;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n }\n\n if (currentCursor === undefined) {\n return undefined;\n }\n\n const removed = currentCursor;\n currentCursor = currentCursor.sibling;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n if (!isSameFiberSlot(currentCursor, nextCursor) || hasHostCommitWork(nextCursor)) {\n return undefined;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n }\n\n return currentCursor === undefined && nextCursor === undefined ? removed : undefined;\n}\n\nfunction isSameFiberSlot(current: Fiber, next: Fiber): boolean {\n return (\n (next === current || next.alternate === current) &&\n current.tag === next.tag &&\n current.type === next.type &&\n current.key === next.key\n );\n}\n\nfunction collectCommittedHostNodes(fiber: Fiber): Node[] {\n if (\n (fiber.tag === \"host-component\" || fiber.tag === \"host-text\") &&\n fiber.stateNode instanceof Node\n ) {\n return [fiber.stateNode];\n }\n\n const nodes: Node[] = [];\n let child = fiber.child;\n\n while (child !== undefined) {\n nodes.push(...collectCommittedHostNodes(child));\n child = child.sibling;\n }\n\n return nodes;\n}\n\nfunction finishHostPassthroughFiber(fiber: Fiber): void {\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n}\n\nfunction commitHostFiber(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): Node[] {\n if (fiber.tag === \"host-text\") {\n const text = fiber.stateNode;\n\n if (!(text instanceof Text)) {\n finishCommittedFiber(fiber);\n return [];\n }\n\n const nextText = String(fiber.pendingProps);\n if (text.data !== nextText) {\n text.data = nextText;\n }\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return [text];\n }\n\n if (fiber.tag === \"host-component\") {\n const element = fiber.stateNode;\n\n if (!isHostElement(element)) {\n finishCommittedFiber(fiber);\n return [];\n }\n\n if (\n fiber.hydrateExisting !== true &&\n fiber.flags === NoFlags &&\n fiber.subtreeFlags === NoFlags &&\n fiber.hostChildListChanged !== true\n ) {\n fiber.memoizedProps = fiber.pendingProps;\n return [element];\n }\n\n const props = fiber.pendingProps as Record<string, unknown>;\n const previousProps = fiber.memoizedProps as Record<string, unknown> | undefined;\n const directTextChild =\n fiber.child === undefined && fiber.hydrateExisting !== true\n ? getDirectHostTextChild(props.children)\n : undefined;\n const textOnlyChildrenUpdate =\n directTextChild !== undefined &&\n hostPropsAreKnownChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreKnownChildrenOnly(props);\n const propsAreUnchanged =\n fiber.hydrateExisting !== true &&\n !textOnlyChildrenUpdate &&\n hostPropsEqual(fiber.memoizedProps, props);\n const propsAreChildrenOnly =\n textOnlyChildrenUpdate ||\n (fiber.hydrateExisting !== true &&\n hostPropsAreChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreChildrenOnly(props));\n const textOnlyRowUpdate =\n !propsAreUnchanged &&\n !propsAreChildrenOnly &&\n fiber.hydrateExisting !== true &&\n isRowTextOnlyUpdate(fiber.memoizedProps, props);\n\n if (!propsAreUnchanged && !propsAreChildrenOnly && !textOnlyRowUpdate) {\n applyProps(element, props, path, {\n ...options,\n eventRoot,\n preserveHydrationAttributes: fiber.hydrateExisting,\n });\n applyChangedRef(previousProps?.ref, props.ref, element);\n }\n if (directTextChild !== undefined) {\n const text = syncDirectHostTextChild(element, directTextChild);\n subscribeReactiveHostTextBinding(props, text);\n } else if (\n fiber.hostChildListChanged ||\n fiber.childListChanged ||\n fiber.hydrateExisting === true ||\n (fiber.subtreeFlags & Placement) !== NoFlags\n ) {\n const childNodes = commitHostChildren(fiber.child, element, eventRoot, `${path}.c`, options);\n if (\n !(childNodes.length === 0 && committedPortalContainers.has(element)) &&\n !shouldPreserveContentEditableChildren(element, props, childNodes)\n ) {\n syncChildNodes(element, childNodes);\n }\n } else if (fiber.subtreeFlags !== NoFlags) {\n commitHostChildren(fiber.child, element, eventRoot, `${path}.c`, options);\n }\n\n applyPostChildFormProps(element, props, previousProps);\n fiber.memoizedProps = props;\n finishCommittedFiber(fiber);\n return [element];\n }\n\n if (fiber.tag === \"fragment\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.f`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"profiler\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.profiler`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"strict-mode\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.strict`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"suspense\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.s`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"suspense-list\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.sl`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"context-provider\" || fiber.tag === \"context-consumer\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.ctx`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"function-component\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.fc`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"forward-ref\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.fr`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"memo\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.memo`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"lazy\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.lazy`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"error-boundary\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.eb`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"class-component\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.class`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"portal\") {\n const container = fiber.stateNode;\n\n if (!(container instanceof Element)) {\n return [];\n }\n\n setLogicalEventParent(container, parent);\n committedPortalContainers.add(container);\n const portalEventRoot =\n eventRoot !== container && eventRoot.contains(container) ? eventRoot : container;\n const childNodes = commitHostChildren(\n fiber.child,\n container,\n portalEventRoot,\n `${path}.portal`,\n options,\n );\n const previousNodes = Array.isArray(fiber.alternate?.memoizedState)\n ? fiber.alternate.memoizedState.filter((node): node is Node => node instanceof Node)\n : [];\n syncOwnedChildNodes(container, previousNodes, childNodes);\n fiber.memoizedState = childNodes;\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return [];\n }\n\n finishCommittedFiber(fiber);\n return [];\n}\n\nfunction finishCommittedFiber(fiber: Fiber): void {\n fiber.flags = NoFlags;\n fiber.subtreeFlags = NoFlags;\n fiber.childListChanged = false;\n fiber.subtreeChildListChanged = false;\n fiber.hostChildListChanged = false;\n}\n\nfunction hasChildListMutation(fiber: Fiber): boolean {\n return fiber.childListChanged || fiber.subtreeChildListChanged;\n}\n\nfunction hostPropsEqual(previous: unknown, next: Record<string, unknown>): boolean {\n if (previous === next) {\n return true;\n }\n\n if (typeof previous !== \"object\" || previous === null) {\n return false;\n }\n\n const previousProps = previous as Record<string, unknown>;\n let previousCount = 0;\n let nextCount = 0;\n\n for (const key in previousProps) {\n if (!hasOwnProperty.call(previousProps, key)) {\n continue;\n }\n previousCount += 1;\n if (!hasOwnProperty.call(next, key)) {\n return false;\n }\n\n if (!Object.is(previousProps[key], next[key])) {\n return false;\n }\n }\n\n for (const key in next) {\n if (hasOwnProperty.call(next, key)) {\n nextCount += 1;\n }\n }\n\n return previousCount === nextCount;\n}\n\nfunction hostOwnPropsEqual(previous: unknown, next: Record<string, unknown>): boolean {\n if (previous === next) {\n return true;\n }\n\n if (typeof previous !== \"object\" || previous === null) {\n return false;\n }\n\n const previousProps = previous as Record<string, unknown>;\n\n let previousCount = 0;\n let nextCount = 0;\n\n for (const key in previousProps) {\n if (!hasOwnProperty.call(previousProps, key) || key === \"children\") {\n continue;\n }\n previousCount += 1;\n if (!hasOwnProperty.call(next, key)) {\n return false;\n }\n\n if (!Object.is(previousProps[key], next[key])) {\n return false;\n }\n }\n\n for (const key in next) {\n if (hasOwnProperty.call(next, key) && key !== \"children\") {\n nextCount += 1;\n }\n }\n\n return previousCount === nextCount;\n}\n\nfunction hostDirectTextChildChanged(previous: unknown, next: Record<string, unknown>): boolean {\n const previousText = getDirectHostTextChild(hostFiberChildrenProp(previous));\n const nextText = getDirectHostTextChild(next.children);\n\n return (previousText !== undefined || nextText !== undefined) && previousText !== nextText;\n}\n\nfunction hostChildListChanged(previous: unknown, next: Record<string, unknown>): boolean {\n const previousChildren = hostFiberChildrenProp(previous);\n const nextChildren = next.children;\n\n if (Object.is(previousChildren, nextChildren)) {\n return false;\n }\n\n if (\n getDirectHostTextChild(previousChildren) !== undefined ||\n getDirectHostTextChild(nextChildren) !== undefined\n ) {\n return false;\n }\n\n if (sameSingleHostChild(previousChildren, nextChildren)) {\n return false;\n }\n\n if (sameHostChildList(previousChildren, nextChildren)) {\n return false;\n }\n\n return true;\n}\n\nfunction sameSingleHostChild(previous: unknown, next: unknown): boolean {\n return (\n isReactCompatElement(previous) &&\n isReactCompatElement(next) &&\n previous.key === next.key &&\n previous.type === next.type\n );\n}\n\nfunction sameHostChildList(previous: unknown, next: unknown): boolean {\n if (!Array.isArray(previous) || !Array.isArray(next) || previous.length !== next.length) {\n return false;\n }\n\n for (let index = 0; index < previous.length; index += 1) {\n const previousChild = previous[index];\n const nextChild = next[index];\n\n if (Object.is(previousChild, nextChild)) {\n continue;\n }\n\n if (!sameSingleHostChild(previousChild, nextChild)) {\n return false;\n }\n }\n\n return (\n previous.length > 0 ||\n (Array.isArray(previous) && Array.isArray(next))\n );\n}\n\nfunction hostPropsAreChildrenOnly(props: unknown): boolean {\n if (typeof props !== \"object\" || props === null) {\n return false;\n }\n\n for (const key in props) {\n if (\n Object.prototype.hasOwnProperty.call(props, key) &&\n key !== \"children\"\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction hostPropsAreKnownChildrenOnly(props: unknown): boolean {\n return (\n typeof props === \"object\" &&\n props !== null &&\n (props as { [HOST_CHILDREN_ONLY_PROPS_META]?: true })[\n HOST_CHILDREN_ONLY_PROPS_META\n ] === true\n );\n}\n\nfunction isRowTextOnlyUpdate(previous: unknown, next: Record<string, unknown>): boolean {\n if (typeof previous !== \"object\" || previous === null) {\n return false;\n }\n\n const previousProps = previous as Record<string, unknown>;\n const previousText = getDirectHostTextChild(previousProps.children);\n const nextText = getDirectHostTextChild(next.children);\n\n return (\n previousText !== undefined &&\n nextText !== undefined &&\n previousText !== nextText &&\n hostOwnPropsEqual(previousProps, next)\n );\n}\n\nfunction hostFiberChildrenProp(props: unknown): unknown {\n return typeof props === \"object\" && props !== null\n ? (props as { children?: unknown }).children\n : undefined;\n}\n\nfunction getDirectHostTextChild(children: unknown): string | undefined {\n return typeof children === \"string\" || typeof children === \"number\"\n ? String(children)\n : undefined;\n}\n\n// This package has no Node type dependency; declare the minimal process\n// shape needed for the literal process.env.NODE_ENV expression below.\ndeclare const process: { env: Record<string, string | undefined> };\n\ntype HostFastPathMode = \"static-fast\" | \"dynamic\";\n\nconst hostFastPathMode: HostFastPathMode = (() => {\n try {\n // The literal process.env.NODE_ENV member expression is what bundler\n // define rewriting matches; a globalThis.process indirection is never\n // rewritten and leaves deployed browser bundles without any fast path.\n return process.env.NODE_ENV === \"production\" ? \"static-fast\" : \"dynamic\";\n } catch {\n // No process global at all: an unbundled browser runtime. Treat it as\n // production rather than running every host update on the slow path.\n return \"static-fast\";\n }\n})();\n\nfunction shouldUseDirectHostTextChild(): boolean {\n if (hostFastPathMode === \"static-fast\") {\n return true;\n }\n\n // Node dev/test environments keep the per-call env read so test harnesses\n // can flip NODE_ENV (vi.stubEnv) without re-importing this module.\n return process.env.NODE_ENV === \"production\";\n}\n\nfunction syncDirectHostTextChild(element: Element, text: string): Text {\n const firstChild = element.firstChild;\n\n if (firstChild instanceof Text && firstChild.nextSibling === null) {\n if (firstChild.data !== text) {\n firstChild.data = text;\n }\n return firstChild;\n }\n\n element.textContent = text;\n const nextFirstChild = element.firstChild;\n\n if (!(nextFirstChild instanceof Text)) {\n const textNode = document.createTextNode(text);\n element.replaceChildren(textNode);\n return textNode;\n }\n\n return nextFirstChild;\n}\n\nfunction subscribeReactiveHostTextBinding(\n props: Record<string, unknown>,\n text: Text,\n): void {\n subscribeReactiveTextBinding(\n (props as Record<PropertyKey, unknown>)[REACTIVE_TEXT_BINDING_META],\n text,\n );\n}\n\nfunction shouldPreserveContentEditableChildren(\n element: Element,\n props: Record<string, unknown>,\n childNodes: readonly Node[],\n): boolean {\n void childNodes;\n\n if (\n !element.hasAttribute(\"contenteditable\") ||\n element.getAttribute(\"contenteditable\") === \"false\"\n ) {\n return false;\n }\n\n const children = props.children;\n return (\n children === undefined ||\n children === null ||\n children === false ||\n (Array.isArray(children) && children.length === 0)\n );\n}\n\nfunction createSuspenseFiber(\n current: Fiber | undefined,\n element: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const boundary = findReactSuspenseBoundary(options.previousNodes ?? []);\n if (boundary?.serverError !== undefined) {\n reportReactSuspenseServerError(\n options,\n path,\n boundary.serverError.message,\n boundary.serverError.componentStack,\n );\n }\n const { previousNodes: _previousNodes, ...optionsWithoutPreviousNodes } = options;\n const boundaryOptions =\n boundary === undefined\n ? options\n : boundary.serverError === undefined\n ? boundary.previousNodes === undefined\n ? optionsWithoutPreviousNodes\n : { ...options, previousNodes: boundary.previousNodes }\n : optionsWithoutPreviousNodes;\n const fiber =\n current?.tag === \"suspense\" && current.type === element.type\n ? createWorkInProgress(current, element.props)\n : createFiber(\"suspense\", element.props, key);\n fiber.type = element.type;\n\n const snapshot = takeRuntimeSnapshot(runtime);\n\n try {\n suspensePrimaryRenderDepth += 1;\n let childResult: FiberReconcileResult;\n\n try {\n childResult = reconcileHostChild(\n fiber,\n current?.tag === \"suspense\" ? current.child : undefined,\n element.props.children as ReactCompatNode,\n runtime,\n `${path}.s`,\n boundaryOptions,\n );\n } finally {\n suspensePrimaryRenderDepth -= 1;\n }\n\n fiber.child = childResult.fiber;\n fiber.memoizedState = { didSuspend: false } satisfies SuspenseFiberState;\n } catch (error) {\n if (!isThenable(error)) {\n throw error;\n }\n\n restoreRuntimeSnapshot(runtime, snapshot);\n error.then(\n () => runtime.rerender(),\n () => runtime.rerender(),\n );\n const fallbackResult = reconcileHostChild(\n fiber,\n current?.tag === \"suspense\" ? current.child : undefined,\n element.props.fallback as ReactCompatNode,\n runtime,\n `${path}.fallback`,\n boundaryOptions,\n );\n fiber.child = fallbackResult.fiber;\n fiber.memoizedState = { didSuspend: true } satisfies SuspenseFiberState;\n }\n\n return {\n fiber,\n consumed: boundary?.consumed ?? options.previousNodes?.length ?? 0,\n };\n}\n\nfunction createStrictModeFiber(\n current: Fiber | undefined,\n element: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const fiber =\n current?.tag === \"strict-mode\" && current.type === element.type\n ? createWorkInProgress(current, element.props)\n : createFiber(\"strict-mode\", element.props, key);\n fiber.type = element.type;\n\n const { result: childResult, memoValues, memoValuesByHook } = renderWithStrictModeMemoCapture(\n runtime,\n () =>\n reconcileHostChild(\n fiber,\n current?.tag === \"strict-mode\" ? current.child : undefined,\n element.props.children as ReactCompatNode,\n runtime,\n `${path}.strict`,\n options,\n ),\n );\n fiber.child = childResult.fiber;\n\n const snapshot = takeRuntimeSnapshot(runtime);\n try {\n renderStrictModeReplay(\n runtime,\n memoValues,\n memoValuesByHook,\n () =>\n reconcileHostChild(\n fiber,\n childResult.fiber,\n element.props.children as ReactCompatNode,\n runtime,\n `${path}.strict`,\n options.previousNodes === undefined\n ? options\n : { ...options, previousNodes: [] },\n ),\n );\n } finally {\n restoreRuntimeSnapshot(runtime, snapshot);\n }\n\n return { fiber, consumed: childResult.consumed };\n}\n\nfunction createSuspenseListFiber(\n current: Fiber | undefined,\n element: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const fiber =\n current?.tag === \"suspense-list\" && current.type === element.type\n ? createWorkInProgress(current, element.props)\n : createFiber(\"suspense-list\", element.props, key);\n fiber.type = element.type;\n const children = normalizeChildren(element.props.children as ReactCompatNode);\n const revealOrder = element.props.revealOrder;\n\n if (revealOrder === \"forwards\") {\n const childResult = reconcileSuspenseListForwards(\n fiber,\n current?.tag === \"suspense-list\" ? current.child : undefined,\n children,\n runtime,\n path,\n options,\n );\n fiber.child = childResult.fiber;\n fiber.memoizedState = {\n didSuspend: hasSuspendedChild(fiber.child),\n } satisfies SuspenseFiberState;\n return { fiber, consumed: childResult.consumed };\n } else if (revealOrder === \"backwards\") {\n const childResult = reconcileSuspenseListBackwards(\n fiber,\n current?.tag === \"suspense-list\" ? current.child : undefined,\n children,\n runtime,\n path,\n options,\n );\n fiber.child = childResult.fiber;\n fiber.memoizedState = {\n didSuspend: hasSuspendedChild(fiber.child),\n } satisfies SuspenseFiberState;\n return { fiber, consumed: childResult.consumed };\n } else {\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"suspense-list\" ? current.child : undefined,\n children,\n runtime,\n `${path}.sl`,\n options,\n );\n fiber.child = childResult.fiber;\n fiber.memoizedState = {\n didSuspend: hasSuspendedChild(fiber.child),\n } satisfies SuspenseFiberState;\n return { fiber, consumed: childResult.consumed };\n }\n}\n\nfunction reconcileSuspenseListForwards(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n runtime: RootRuntime,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let consumed = 0;\n const currentByKey = collectExistingKeyedFibers(currentFirstChild);\n let currentUnkeyed = currentFirstChild;\n\n for (const [index, child] of children.entries()) {\n const key = getNodeKey(child);\n const current = key === undefined ? currentUnkeyed : currentByKey.get(key);\n const childOptions =\n options.previousNodes === undefined\n ? options\n : { ...options, previousNodes: options.previousNodes.slice(consumed) };\n const result = createHostFiber(\n parent,\n current,\n child,\n key,\n runtime,\n `${path}.sl.${getNodePathSegment(child, index)}`,\n childOptions,\n );\n const fiber = result.fiber;\n\n if (key === undefined) {\n currentUnkeyed = currentUnkeyed?.sibling;\n }\n consumed += result.consumed;\n\n if (fiber === undefined) {\n continue;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n bubbleHostChild(parent, fiber);\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n previous = fiber;\n\n if (isSuspendedSuspenseFiber(fiber)) {\n break;\n }\n }\n\n return { fiber: first, consumed };\n}\n\nfunction reconcileSuspenseListBackwards(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n runtime: RootRuntime,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n const fibers: Fiber[] = [];\n const currentByKey = collectExistingKeyedFibers(currentFirstChild);\n let consumed = 0;\n\n for (let index = children.length - 1; index >= 0; index -= 1) {\n const child = children[index] as ReactCompatNode;\n const key = getNodeKey(child);\n const result = createHostFiber(\n parent,\n key === undefined ? undefined : currentByKey.get(key),\n child,\n key,\n runtime,\n `${path}.sl.${getNodePathSegment(child, index)}`,\n options.previousNodes === undefined\n ? options\n : { ...options, previousNodes: options.previousNodes.slice(consumed) },\n );\n const fiber = result.fiber;\n consumed += result.consumed;\n\n if (fiber === undefined) {\n continue;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n bubbleHostChild(parent, fiber);\n fibers.unshift(fiber);\n\n if (isSuspendedSuspenseFiber(fiber)) {\n break;\n }\n }\n\n return { fiber: linkFiberSiblings(fibers), consumed };\n}\n\nfunction linkFiberSiblings(fibers: readonly Fiber[]): Fiber | undefined {\n let previous: Fiber | undefined;\n\n for (const fiber of fibers) {\n if (previous !== undefined) {\n previous.sibling = fiber;\n }\n previous = fiber;\n }\n\n return fibers[0];\n}\n\nfunction hasSuspendedChild(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (isSuspendedSuspenseFiber(cursor)) {\n return true;\n }\n\n cursor = cursor.sibling;\n }\n\n return false;\n}\n\nfunction hasPendingAsyncChild(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (isPendingLazyFiber(cursor) || isSuspendedSuspenseFiber(cursor)) {\n return true;\n }\n\n if (cursor.child !== undefined && hasPendingAsyncChild(cursor.child)) {\n return true;\n }\n\n cursor = cursor.sibling;\n }\n\n return false;\n}\n\nfunction isPendingLazyFiber(fiber: Fiber): boolean {\n if (fiber.tag !== \"lazy\" || !isLazyType(fiber.type)) {\n return false;\n }\n\n return fiber.type.status !== \"resolved\" || fiber.child === undefined;\n}\n\nfunction isSuspendedSuspenseFiber(fiber: Fiber): boolean {\n return (\n fiber.tag === \"suspense\" &&\n (fiber.memoizedState as SuspenseFiberState | undefined)?.didSuspend === true\n );\n}\n\nfunction findReactSuspenseBoundary(\n previousNodes: readonly Node[],\n): ReactSuspenseBoundary | undefined {\n const startIndex = previousNodes.findIndex(isReactSuspenseStartComment);\n\n if (startIndex < 0) {\n return undefined;\n }\n\n let depth = 0;\n\n for (let index = startIndex; index < previousNodes.length; index += 1) {\n const node = previousNodes[index];\n\n if (isReactSuspenseStartComment(node)) {\n depth += 1;\n continue;\n }\n\n if (isReactSuspenseEndComment(node)) {\n depth -= 1;\n\n if (depth === 0) {\n const start = previousNodes[startIndex] as Comment;\n const boundaryNodes = previousNodes.slice(startIndex + 1, index);\n const boundary: ReactSuspenseBoundary = {\n consumed: index - startIndex + 1,\n ...readReactSuspenseServerError(start, boundaryNodes),\n };\n\n if (!isReactSuspenseErrorStartComment(start)) {\n boundary.previousNodes = isReactSuspensePendingStartComment(start)\n ? removeReactSuspensePendingTemplate(boundaryNodes)\n : boundaryNodes;\n }\n\n return boundary;\n }\n }\n }\n\n return undefined;\n}\n\nfunction isReactSuspenseStartComment(node: Node | undefined): node is Comment {\n return node instanceof Comment && reactSuspenseStartComments.has(node.data);\n}\n\nfunction isReactSuspensePendingStartComment(node: Comment): boolean {\n return node.data === \"$?\" || node.data === \"$!\";\n}\n\nfunction isReactSuspenseErrorStartComment(node: Comment): boolean {\n return node.data === \"$!\";\n}\n\nfunction isReactSuspenseEndComment(node: Node | undefined): node is Comment {\n return node instanceof Comment && node.data === \"/$\";\n}\n\nfunction removeReactSuspensePendingTemplate(nodes: readonly Node[]): Node[] {\n const [firstNode, ...remainingNodes] = nodes;\n\n return firstNode instanceof HTMLTemplateElement\n ? remainingNodes\n : [...nodes];\n}\n\nconst reactSuspenseStartComments = new Set([\"$\", \"$?\", \"$!\"]);\n\nfunction readReactSuspenseServerError(\n start: Comment,\n boundaryNodes: readonly Node[],\n): { serverError: { message: string; componentStack?: string } } | {} {\n if (start.data !== \"$!\") {\n return {};\n }\n\n const template = boundaryNodes[0];\n const message =\n template instanceof HTMLTemplateElement\n ? template.getAttribute(\"data-msg\")\n : null;\n const componentStack =\n template instanceof HTMLTemplateElement\n ? template.getAttribute(\"data-stck\")\n : null;\n\n return {\n serverError: {\n message: message ?? \"React Suspense server rendering error.\",\n ...(componentStack === null ? {} : { componentStack }),\n },\n };\n}\n\nfunction createPortalFiber(\n parent: Fiber,\n current: Fiber | undefined,\n portal: ReactCompatPortal,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n runtime.portalContainers.add(portal.container);\n const fiber =\n current?.tag === \"portal\" && current.stateNode === portal.container\n ? createWorkInProgress(current, portal.children)\n : createFiber(\"portal\", portal.children, key);\n fiber.stateNode = portal.container;\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"portal\" ? current.child : undefined,\n portal.children,\n runtime,\n `${path}.portal`,\n { ...options, documentRef: portal.container.ownerDocument },\n );\n fiber.child = childResult.fiber;\n fiber.return = parent;\n return { fiber, consumed: childResult.consumed };\n}\n\nfunction normalizeChildren(node: ReactCompatNode): ReactCompatNode[] {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return [];\n }\n\n return Array.isArray(node) ? node : [node];\n}\n\nfunction getDocumentRef(options: FiberHydrationOptions): Document {\n return options.documentRef ?? document;\n}\n\nfunction collectExistingKeyedFibers(\n firstChild: Fiber | undefined,\n): Map<string, Fiber> {\n const keyed = new Map<string, Fiber>();\n let cursor = firstChild;\n\n while (cursor !== undefined) {\n if (cursor.key !== undefined) {\n keyed.set(cursor.key, cursor);\n }\n\n cursor = cursor.sibling;\n }\n\n return keyed;\n}\n\nfunction getNodeKey(node: ReactCompatNode): string | undefined {\n return isReactCompatElement(node) && node.key !== null ? node.key : undefined;\n}\n\nfunction hasKeyedChild(children: readonly ReactCompatNode[]): boolean {\n for (const child of children) {\n if (getNodeKey(child) !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getNodePathSegment(node: ReactCompatNode, index: number): string {\n const key = getNodeKey(node);\n return key === undefined ? String(index) : `k:${key}`;\n}\n\nfunction getReconcileChildPath(\n path: string,\n node: ReactCompatNode,\n index: number,\n options: FiberHydrationOptions,\n): string {\n if (!shouldTrackReconcilePath(node, options)) {\n return \"\";\n }\n\n return joinPath(path, getNodePathSegment(node, index));\n}\n\nfunction shouldTrackReconcilePath(\n node: ReactCompatNode,\n options: FiberHydrationOptions,\n): boolean {\n if (\n options.previousNodes !== undefined ||\n options.hydration?.onRecoverableError !== undefined ||\n options.resumeId !== undefined\n ) {\n return true;\n }\n\n return !isHostElementWithDirectTextChild(node);\n}\n\nfunction isHostElementWithDirectTextChild(node: ReactCompatNode): boolean {\n return (\n isReactCompatElement(node) &&\n typeof node.type === \"string\" &&\n getDirectHostTextChild(node.props.children) !== undefined\n );\n}\n\nfunction getRootCommitPath(options: RenderOptions): string {\n return options.hydration?.onRecoverableError === undefined ? SKIP_COMMIT_PATH : \"0\";\n}\n\nfunction joinCommitPath(path: string, segment: string): string {\n return path === SKIP_COMMIT_PATH ? \"\" : joinPath(path, segment);\n}\n\nfunction getComponentName(component: Function): string {\n return component.name === \"\" ? \"Anonymous\" : component.name;\n}\n\nfunction joinPath(path: string, segment: string): string {\n return path === \"\" ? segment : `${path}.${segment}`;\n}\n\nfunction isForwardRefType(\n value: unknown,\n): value is {\n $$typeof: typeof FORWARD_REF_TYPE;\n render: (props: Record<string, unknown>, ref: unknown) => ReactCompatNode;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === FORWARD_REF_TYPE\n );\n}\n\nfunction isMemoType(\n value: unknown,\n): value is {\n $$typeof: typeof MEMO_TYPE;\n type: ReactCompatElement[\"type\"];\n compare?: (\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n ) => boolean;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === MEMO_TYPE\n );\n}\n\nfunction isLazyType(\n value: unknown,\n): value is {\n $$typeof: typeof LAZY_TYPE;\n load: () => Promise<{ default: ReactCompatElement[\"type\"] }>;\n status: \"uninitialized\" | \"pending\" | \"resolved\" | \"rejected\";\n promise?: Promise<void>;\n resolved?: ReactCompatElement[\"type\"];\n error?: unknown;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === LAZY_TYPE\n );\n}\n\nfunction collectInstanceKeys(runtime: RootRuntime, prefix: string): string[] {\n return collectRuntimeInstanceKeys(runtime, prefix);\n}\n\nfunction markActiveInstanceKeys(runtime: RootRuntime, keys: readonly string[]): void {\n for (const key of keys) {\n runtime.activeInstanceKeys?.add(key);\n }\n}\n\nfunction hasDirtyInstance(\n runtime: RootRuntime | undefined,\n keys: readonly string[],\n prefix?: string,\n): boolean {\n if (runtime === undefined) {\n return false;\n }\n\n if (hasDirtyClassUpdate(runtime, keys, prefix)) {\n return true;\n }\n\n if (keys.some(\n (key) =>\n (runtime.instances.get(key) as { dirty?: boolean } | undefined)?.dirty === true,\n )) {\n return true;\n }\n\n if (prefix === undefined) {\n return false;\n }\n\n for (const [key, instance] of runtime.instances) {\n if (\n (key === prefix || key.startsWith(`${prefix}.`)) &&\n (instance as { dirty?: boolean }).dirty === true\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction hasUnflushedMountEffectInstance(runtime: RootRuntime, keys: readonly string[]): boolean {\n return keys.some((key) => {\n const instance = runtime.instances.get(key) as\n | { hooks?: readonly ({ kind?: string; mounted?: boolean; disposed?: boolean } | undefined)[] }\n | undefined;\n\n return instance?.hooks?.some(\n (slot) =>\n slot?.kind === \"effect\" &&\n slot.disposed !== true &&\n slot.mounted !== true,\n ) === true;\n });\n}\n\nfunction applyRef(ref: unknown, node: unknown): void {\n if (typeof ref === \"function\") {\n ref(node);\n return;\n }\n\n if (typeof ref === \"object\" && ref !== null && \"current\" in ref) {\n (ref as { current: unknown }).current = node;\n }\n}\n\nfunction applyChangedRef(previousRef: unknown, nextRef: unknown, node: unknown): void {\n if (Object.is(previousRef, nextRef)) {\n return;\n }\n\n applyRef(previousRef, null);\n applyRef(nextRef, node);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"host-reconciler.js","sourceRoot":"","sources":["../src/host-reconciler.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Activity,\n ERROR_BOUNDARY_TYPE,\n FORWARD_REF_TYPE,\n Fragment,\n HOST_CHILDREN_ONLY_PROPS_META,\n LAZY_TYPE,\n MEMO_TYPE,\n Profiler,\n REACTIVE_TEXT_BINDING_META,\n STRICT_MODE_TYPE,\n Suspense,\n SuspenseList,\n type ReactCompatElement,\n type ReactCompatPortal,\n isReactCompatElement,\n isReactCompatPortal,\n type ReactCompatNode,\n} from \"./element.js\";\nimport {\n consumerContext,\n isReactCompatConsumer,\n isReactCompatProvider,\n renderWithContextProvider,\n useContext,\n} from \"./context.js\";\nimport { applyPostChildFormProps, applyProps } from \"./dom-props.js\";\nimport { syncChildNodes, syncOwnedChildNodes, syncScopedChildNodes } from \"./dom-children.js\";\nimport { setLogicalEventParent } from \"./host-event-binder.js\";\nimport { NoFlags, Placement, Update } from \"./fiber-flags.js\";\nimport {\n createHostElement,\n hostElementMatches,\n isHostElement,\n namespaceForHostChildren,\n namespaceForHostElement,\n type HostNamespace,\n} from \"./dom-host-rules.js\";\nimport { createFiber, createWorkInProgress, type Fiber, type FiberRoot } from \"./fiber.js\";\nimport {\n renderWithRootRuntime,\n renderWithProfiler,\n renderWithStrictModeMemoCapture,\n renderStrictModeReplay,\n runWithHostCommit,\n restoreRuntimeSnapshot,\n takeRuntimeSnapshot,\n getDevToolsHookState,\n collectRuntimeInstanceKeys,\n hasContextDependency,\n hasChangedContextDependency,\n subscribeReactiveTextBinding,\n type RootRuntime,\n} from \"./hooks.js\";\nimport { isThenable } from \"./thenable.js\";\nimport {\n hasDirtyClassUpdate,\n isClassComponentType,\n recoverClassComponentError,\n renderClassComponentWithRuntime,\n type ClassComponentInstance,\n} from \"./class-component.js\";\nimport { areMemoPropsEqual, getPendingProps, shallowEqual } from \"./prop-comparison.js\";\nimport {\n reportElementTextMismatch,\n reportExtraHydrationNodes,\n reportHydrationNodeTypeMismatch,\n reportMissingHydrationNode,\n reportReactSuspenseServerError,\n reportRecoverable,\n type HydrationScope,\n type RenderOptions,\n withHydrationComponentStack,\n} from \"./hydration.js\";\n\ninterface MemoFiberState {\n props: Record<string, unknown>;\n instanceKeys: string[];\n}\n\ninterface FunctionFiberState {\n element: ReactCompatElement;\n props: Record<string, unknown>;\n instanceKeys: string[];\n hasContextDependencies: boolean;\n}\n\ninterface SuspenseFiberState {\n didSuspend: boolean;\n}\n\nconst committedPortalContainers = new Set<Element>();\n\ninterface FiberHydrationOptions extends RenderOptions {\n previousNodes?: readonly Node[];\n resumeId?: string;\n consumeResumeMarkers?: boolean;\n namespace?: HostNamespace;\n documentRef?: Document;\n}\n\nconst SKIP_COMMIT_PATH = \"\\0\";\nconst hasOwnProperty = Object.prototype.hasOwnProperty;\n\ninterface FiberReconcileResult {\n fiber: Fiber | undefined;\n consumed: number;\n}\n\ninterface ReactSuspenseBoundary {\n previousNodes?: Node[];\n consumed: number;\n serverError?: {\n message: string;\n componentStack?: string;\n };\n}\n\nlet suspensePrimaryRenderDepth = 0;\n\nexport function canRenderHostFiber(node: ReactCompatNode): boolean {\n if (\n node === null ||\n node === undefined ||\n typeof node === \"boolean\" ||\n typeof node === \"string\" ||\n typeof node === \"number\"\n ) {\n return true;\n }\n\n if (Array.isArray(node)) {\n return node.every(canRenderHostFiber);\n }\n\n if (isReactCompatPortal(node)) {\n return canRenderHostFiber(node.children);\n }\n\n if (!isReactCompatElement(node)) {\n return false;\n }\n\n if (\n node.type === Fragment ||\n node.type === Profiler ||\n node.type === STRICT_MODE_TYPE\n ) {\n return canRenderHostFiber(node.props.children as ReactCompatNode);\n }\n\n if (node.type === Activity) {\n return (node.props as { mode?: unknown }).mode === \"hidden\"\n ? true\n : canRenderHostFiber(node.props.children as ReactCompatNode);\n }\n\n if (node.type === Suspense || node.type === SuspenseList) {\n return true;\n }\n\n if (node.type === ERROR_BOUNDARY_TYPE) {\n return true;\n }\n\n if (isReactCompatProvider(node.type)) {\n return canRenderHostFiber(node.props.children as ReactCompatNode);\n }\n\n if (isReactCompatConsumer(node.type)) {\n return true;\n }\n\n if (isForwardRefType(node.type)) {\n return true;\n }\n\n if (isMemoType(node.type)) {\n return true;\n }\n\n if (isLazyType(node.type)) {\n return true;\n }\n\n if (isClassComponentType(node.type)) {\n return true;\n }\n\n return (\n typeof node.type === \"string\" &&\n canRenderHostFiber(node.props.children as ReactCompatNode)\n ) || isFunctionComponentType(node.type);\n}\n\nexport function renderHostFiberRoot(\n root: FiberRoot,\n element: ReactCompatNode,\n runtime?: RootRuntime,\n options: FiberHydrationOptions = {},\n): Fiber {\n const workInProgress = createWorkInProgress(root.current, { children: element });\n const rootDocument = root.container.ownerDocument;\n const result = reconcileHostChild(\n workInProgress,\n root.current.child,\n element,\n runtime,\n options.previousNodes === undefined ? \"0\" : \"\",\n { ...options, documentRef: options.documentRef ?? rootDocument },\n );\n workInProgress.child = result.fiber;\n workInProgress.memoizedProps = { children: element };\n root.refCleanupKnown = true;\n return workInProgress;\n}\n\nexport function renderHydratingHostFiberRoot(\n root: FiberRoot,\n element: ReactCompatNode,\n runtime: RootRuntime,\n scope: HydrationScope,\n options: FiberHydrationOptions = {},\n): Fiber {\n root.hydrationState = {\n parent: scope.parent,\n nextHydratableNode: scope.previousNodes[0] ?? null,\n before: scope.before,\n after: scope.after,\n ...(options.resumeId === undefined ? {} : { resumeId: options.resumeId }),\n };\n return renderHostFiberRoot(root, element, runtime, {\n ...options,\n previousNodes: scope.previousNodes,\n });\n}\n\nexport function commitHostFiberRoot(\n root: FiberRoot,\n finishedWork: Fiber,\n options: RenderOptions = {},\n): void {\n runWithHostCommit(() => {\n try {\n committedPortalContainers.clear();\n const commitPath = getRootCommitPath(options);\n if (!hasChildListMutation(finishedWork)) {\n commitHostDirtyChildren(finishedWork.child, root.container, root.container, commitPath, options);\n return;\n }\n\n if (\n !finishedWork.childListChanged &&\n finishedWork.subtreeChildListChanged &&\n commitHostKeyedChildListMutation(finishedWork.child, root.container, root.container, commitPath, options)\n ) {\n return;\n }\n\n const nodes = commitHostChildren(finishedWork.child, root.container, root.container, commitPath, options);\n syncChildNodes(root.container, nodes);\n } finally {\n committedPortalContainers.clear();\n }\n });\n}\n\nexport function commitHydratingHostFiberRoot(\n root: FiberRoot,\n finishedWork: Fiber,\n scope: HydrationScope,\n options: FiberHydrationOptions = {},\n): void {\n runWithHostCommit(() => {\n try {\n committedPortalContainers.clear();\n const eventRoot = root.container;\n const nodes = commitHostChildren(finishedWork.child, scope.parent, eventRoot, \"\", options);\n syncScopedChildNodes(scope.parent, scope.before, scope.after, nodes);\n } finally {\n committedPortalContainers.clear();\n }\n });\n\n if (options.consumeResumeMarkers === true) {\n scope.before?.parentNode?.removeChild(scope.before);\n scope.after?.parentNode?.removeChild(scope.after);\n }\n}\n\nfunction reconcileHostChild(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n node: ReactCompatNode,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n resetFiberRefSubtree(parent);\n parent.subtreeFlags = NoFlags;\n parent.childListChanged = false;\n parent.subtreeChildListChanged = false;\n\n if (node === null || node === undefined || typeof node === \"boolean\") {\n parent.childListChanged = currentFirstChild !== undefined;\n return { fiber: undefined, consumed: 0 };\n }\n\n const children = Array.isArray(node) ? node : undefined;\n const rowResult =\n children === undefined\n ? undefined\n : reconcileKeyedRowHostChildren(parent, currentFirstChild, children, options);\n if (rowResult !== undefined) {\n return rowResult;\n }\n\n const childCount = children === undefined ? 1 : children.length;\n const hasKeyedChildren = children !== undefined && hasKeyedChild(children);\n let existingByKey: Map<string, Fiber> | undefined;\n let currentKeyed: Fiber | undefined = currentFirstChild;\n let currentUnkeyed = currentFirstChild;\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let consumed = 0;\n let skipRemainingKeyedLookup = false;\n\n for (let index = 0; index < childCount; index += 1) {\n const child = children === undefined ? node : children[index];\n const key = getNodeKey(child);\n let matchedCurrent: Fiber | undefined;\n\n if (key === undefined) {\n matchedCurrent = currentUnkeyed;\n } else if (skipRemainingKeyedLookup) {\n matchedCurrent = undefined;\n } else if (existingByKey !== undefined) {\n matchedCurrent = existingByKey.get(key);\n } else if (currentKeyed?.key === key) {\n matchedCurrent = currentKeyed;\n currentKeyed = currentKeyed.sibling;\n } else if (\n children !== undefined &&\n currentKeyed?.sibling?.key === key &&\n canSkipSingleDeletedKeyedFiber(children, index, currentKeyed.sibling)\n ) {\n matchedCurrent = currentKeyed.sibling;\n currentKeyed = currentKeyed.sibling.sibling;\n } else {\n if (\n children !== undefined &&\n hasKeyedChildren &&\n canSkipRemainingKeyedLookup(currentKeyed, children, index)\n ) {\n skipRemainingKeyedLookup = true;\n currentKeyed = undefined;\n } else if (hasKeyedChildren) {\n existingByKey = collectExistingKeyedFibers(currentKeyed);\n matchedCurrent = existingByKey.get(key);\n }\n }\n\n const previousNodes =\n options.previousNodes === undefined\n ? undefined\n : options.previousNodes.slice(consumed);\n const result = createHostFiber(\n parent,\n matchedCurrent,\n child,\n key,\n runtime,\n getReconcileChildPath(path, child, index, options),\n previousNodes === undefined ? options : { ...options, previousNodes },\n );\n const fiber = result.fiber;\n\n if (fiber === undefined) {\n continue;\n }\n\n if (key === undefined) {\n currentUnkeyed = currentUnkeyed?.sibling;\n }\n consumed += result.consumed;\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n bubbleHostChild(parent, fiber);\n if (\n fiber.tag !== \"memo\" &&\n fiber.tag !== \"function-component\" &&\n fiber.tag !== \"forward-ref\" &&\n fiber.tag !== \"profiler\" &&\n fiber.tag !== \"suspense\" &&\n fiber.tag !== \"suspense-list\"\n && fiber.memoizedState === undefined\n ) {\n fiber.memoizedState = index;\n }\n previous = fiber;\n }\n\n parent.childListChanged = childFiberListShapeChanged(currentFirstChild, first);\n\n return { fiber: first, consumed };\n}\n\nfunction reconcileKeyedRowHostChildren(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n options: FiberHydrationOptions,\n): FiberReconcileResult | undefined {\n if (\n children.length === 0 ||\n currentFirstChild === undefined ||\n options.previousNodes !== undefined ||\n !shouldUseDirectHostTextChild()\n ) {\n return undefined;\n }\n\n let currentKeyed: Fiber | undefined = currentFirstChild;\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let listShapeChanged = currentFirstChild === undefined;\n let skipRemainingKeyedLookup = false;\n let subtreeFlags = NoFlags;\n let subtreeChildListChanged = false;\n let hasRefSubtree = false;\n const currentSiblingCount = countFiberSiblings(currentFirstChild);\n const canReuseUnchangedRows =\n currentSiblingCount === children.length ||\n isKeyedAppendOnly(currentFirstChild, children, currentSiblingCount);\n const row = createKeyedRowHostElementScratch();\n\n for (let index = 0; index < children.length; index += 1) {\n const child = children[index];\n\n if (!readKeyedRowHostElement(child, row)) {\n return undefined;\n }\n\n let matchedCurrent: Fiber | undefined;\n\n if (skipRemainingKeyedLookup) {\n matchedCurrent = undefined;\n } else if (currentKeyed === undefined) {\n listShapeChanged = true;\n skipRemainingKeyedLookup = true;\n matchedCurrent = undefined;\n } else if (currentKeyed?.key === row.key) {\n matchedCurrent = currentKeyed;\n currentKeyed = currentKeyed.sibling;\n } else if (\n currentKeyed?.sibling?.key === row.key &&\n canSkipSingleDeletedKeyedFiber(children, index, currentKeyed.sibling)\n ) {\n listShapeChanged = true;\n matchedCurrent = currentKeyed.sibling;\n currentKeyed = currentKeyed.sibling.sibling;\n } else if (canSkipRemainingKeyedLookup(currentKeyed, children, index)) {\n listShapeChanged = true;\n skipRemainingKeyedLookup = true;\n currentKeyed = undefined;\n matchedCurrent = undefined;\n } else {\n return undefined;\n }\n\n const fiber =\n matchedCurrent === undefined\n ? createKeyedRowHostFiber(parent, undefined, row, options)\n : (canReuseUnchangedRows ? getReusableKeyedRowHostFiber(matchedCurrent, row) : undefined) ??\n createKeyedRowHostFiber(parent, matchedCurrent, row, options);\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n if (fiber.hasRefSubtree) {\n hasRefSubtree = true;\n }\n subtreeFlags |= fiber.flags | fiber.subtreeFlags;\n subtreeChildListChanged =\n subtreeChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged;\n if (fiber.memoizedState === undefined) {\n fiber.memoizedState = index;\n }\n previous = fiber;\n }\n\n if (currentKeyed !== undefined) {\n listShapeChanged = true;\n }\n\n parent.hasRefSubtree = hasRefSubtree;\n parent.subtreeFlags = subtreeFlags;\n parent.subtreeChildListChanged = subtreeChildListChanged;\n parent.childListChanged = listShapeChanged;\n return { fiber: first, consumed: 0 };\n}\n\nfunction countFiberSiblings(first: Fiber): number {\n let count = 0;\n let cursor: Fiber | undefined = first;\n\n while (cursor !== undefined) {\n count += 1;\n cursor = cursor.sibling;\n }\n\n return count;\n}\n\nfunction isKeyedAppendOnly(\n currentFirstChild: Fiber,\n children: readonly ReactCompatNode[],\n currentSiblingCount: number,\n): boolean {\n if (children.length <= currentSiblingCount) {\n return false;\n }\n\n let current: Fiber | undefined = currentFirstChild;\n\n for (let index = 0; index < currentSiblingCount; index += 1) {\n if (current === undefined || current.key !== getNodeKey(children[index])) {\n return false;\n }\n current = current.sibling;\n }\n\n return current === undefined;\n}\n\nfunction getReusableKeyedRowHostFiber(\n current: Fiber,\n row: KeyedRowHostElement,\n): Fiber | undefined {\n if (\n current.tag !== \"host-component\" ||\n current.type !== row.type ||\n current.hydrateExisting ||\n current.child !== undefined ||\n !isHostElement(current.stateNode)\n ) {\n return undefined;\n }\n\n const previousProps = current.memoizedProps ?? current.pendingProps;\n\n if (typeof previousProps !== \"object\" || previousProps === null) {\n return undefined;\n }\n\n const previousRecord = previousProps as Record<string, unknown>;\n\n if (\n getDirectHostTextChild(previousRecord.children) !== row.text ||\n !hostOwnPropsEqual(previousRecord, row.element.props)\n ) {\n return undefined;\n }\n\n current.pendingProps = row.element.props;\n current.flags = NoFlags;\n current.subtreeFlags = NoFlags;\n current.childListChanged = false;\n current.subtreeChildListChanged = false;\n current.hostChildListChanged = false;\n current.hasRefSubtree = false;\n return current;\n}\n\ninterface KeyedRowHostElement {\n element: ReactCompatElement;\n key: string;\n type: string;\n text: string;\n}\n\nfunction createKeyedRowHostElementScratch(): KeyedRowHostElement {\n return {\n element: undefined as unknown as ReactCompatElement,\n key: \"\",\n type: \"\",\n text: \"\",\n };\n}\n\nfunction readKeyedRowHostElement(\n node: ReactCompatNode,\n row: KeyedRowHostElement,\n): boolean {\n if (\n !isReactCompatElement(node) ||\n typeof node.type !== \"string\" ||\n node.key === null ||\n node.ref !== null\n ) {\n return false;\n }\n\n // Any keyed host row whose children collapse to a single text value\n // qualifies; row props are compared per reuse with hostOwnPropsEqual.\n const text = getDirectHostTextChild((node.props as Record<string, unknown>).children);\n\n if (text === undefined) {\n return false;\n }\n\n row.element = node;\n row.key = node.key;\n row.type = node.type;\n row.text = text;\n return true;\n}\n\nfunction createKeyedRowHostFiber(\n parent: Fiber,\n current: Fiber | undefined,\n row: KeyedRowHostElement,\n options: FiberHydrationOptions,\n): Fiber {\n const node = row.element;\n const elementNamespace = namespaceForHostElement(options.namespace ?? \"html\", row.type);\n const fiber =\n current?.tag === \"host-component\" && current.type === row.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"host-component\", node.props, row.key);\n\n fiber.type = row.type;\n fiber.stateNode =\n current?.tag === \"host-component\" &&\n current.type === row.type &&\n isHostElement(current.stateNode) &&\n hostElementMatches(current.stateNode, row.type, elementNamespace)\n ? current.stateNode\n : createHostElement(getDocumentRef(options), row.type, options.namespace ?? \"html\");\n fiber.child = undefined;\n fiber.pendingProps = node.props;\n fiber.hostChildListChanged = false;\n fiber.hasRefSubtree = false;\n\n if (current === undefined || fiber.alternate !== current) {\n fiber.flags |= Placement;\n fiber.hostChildListChanged = true;\n return fiber;\n }\n\n const previousProps = current.memoizedProps ?? current.pendingProps;\n const previousText = getDirectHostTextChild(hostFiberChildrenProp(previousProps));\n\n if (previousText !== row.text || !hostOwnPropsEqual(previousProps, row.element.props)) {\n fiber.flags |= Update;\n }\n\n return fiber;\n}\n\nfunction canReuseStaticHostSubtree(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (\n cursor.tag !== \"host-component\" &&\n cursor.tag !== \"host-text\" &&\n cursor.tag !== \"fragment\" &&\n cursor.tag !== \"strict-mode\"\n ) {\n return false;\n }\n\n if (cursor.child !== undefined && !canReuseStaticHostSubtree(cursor.child)) {\n return false;\n }\n\n cursor = cursor.sibling;\n }\n\n return true;\n}\n\nfunction canSkipSingleDeletedKeyedFiber(\n children: readonly ReactCompatNode[],\n index: number,\n matched: Fiber,\n): boolean {\n const nextKey = index + 1 < children.length ? getNodeKey(children[index + 1]) : undefined;\n const afterMatched = matched.sibling;\n\n return nextKey === undefined ? afterMatched === undefined : afterMatched?.key === nextKey;\n}\n\nfunction canSkipRemainingKeyedLookup(\n current: Fiber | undefined,\n children: readonly ReactCompatNode[],\n startIndex: number,\n): boolean {\n const currentRange = readContiguousNumericFiberKeyRange(current);\n\n if (currentRange === undefined) {\n return false;\n }\n\n const nextRange = readContiguousNumericNodeKeyRange(children, startIndex);\n\n if (nextRange === undefined) {\n return false;\n }\n\n return (\n currentRange.end < nextRange.start ||\n nextRange.end < currentRange.start\n );\n}\n\nfunction readContiguousNumericFiberKeyRange(\n fiber: Fiber | undefined,\n): { start: number; end: number } | undefined {\n let cursor = fiber;\n let start: number | undefined;\n let previous: number | undefined;\n\n while (cursor !== undefined) {\n const value = parseNumericKey(cursor.key);\n\n if (value === undefined || (previous !== undefined && value !== previous + 1)) {\n return undefined;\n }\n\n start ??= value;\n previous = value;\n cursor = cursor.sibling;\n }\n\n return start === undefined || previous === undefined\n ? undefined\n : { start, end: previous };\n}\n\nfunction readContiguousNumericNodeKeyRange(\n children: readonly ReactCompatNode[],\n startIndex: number,\n): { start: number; end: number } | undefined {\n let start: number | undefined;\n let previous: number | undefined;\n\n for (let index = startIndex; index < children.length; index += 1) {\n const value = parseNumericKey(getNodeKey(children[index]));\n\n if (value === undefined || (previous !== undefined && value !== previous + 1)) {\n return undefined;\n }\n\n start ??= value;\n previous = value;\n }\n\n return start === undefined || previous === undefined\n ? undefined\n : { start, end: previous };\n}\n\nfunction parseNumericKey(key: string | undefined): number | undefined {\n if (key === undefined || key.length === 0) {\n return undefined;\n }\n\n const value = Number(key);\n\n return Number.isSafeInteger(value) && String(value) === key ? value : undefined;\n}\n\nfunction childFiberListShapeChanged(\n current: Fiber | undefined,\n next: Fiber | undefined,\n): boolean {\n let currentCursor = current;\n let nextCursor = next;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n const isSameSlot =\n nextCursor === currentCursor ||\n nextCursor.alternate === currentCursor;\n\n if (\n !isSameSlot ||\n currentCursor.tag !== nextCursor.tag ||\n currentCursor.type !== nextCursor.type ||\n currentCursor.key !== nextCursor.key\n ) {\n return true;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n }\n\n return currentCursor !== undefined || nextCursor !== undefined;\n}\n\nfunction bubbleHostChild(parent: Fiber, child: Fiber): void {\n if (child.hasRefSubtree) {\n parent.hasRefSubtree = true;\n }\n parent.subtreeFlags |= child.flags | child.subtreeFlags;\n parent.subtreeChildListChanged =\n parent.subtreeChildListChanged ||\n child.childListChanged ||\n child.subtreeChildListChanged;\n}\n\nfunction resetFiberRefSubtree(fiber: Fiber): void {\n fiber.hasRefSubtree = false;\n}\n\nfunction includeNodeRef(fiber: Fiber, node: ReactCompatNode): void {\n fiber.hasRefSubtree =\n fiber.hasRefSubtree ||\n (isReactCompatElement(node) && node.ref !== null);\n}\n\nfunction markHostFiberEffects(\n fiber: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n): void {\n if (current === undefined || fiber.alternate !== current) {\n fiber.flags |= Placement;\n fiber.hostChildListChanged = true;\n return;\n }\n\n if (fiber.tag === \"host-text\") {\n if (!Object.is(current.memoizedProps ?? current.pendingProps, fiber.pendingProps)) {\n fiber.flags |= Update;\n }\n return;\n }\n\n if (fiber.tag !== \"host-component\") {\n return;\n }\n\n const previousProps = current.memoizedProps ?? current.pendingProps;\n const nextProps = fiber.pendingProps as Record<string, unknown>;\n\n fiber.hostChildListChanged = hostChildListChanged(previousProps, nextProps);\n\n if (!hostOwnPropsEqual(previousProps, nextProps) || hostDirectTextChildChanged(previousProps, nextProps)) {\n fiber.flags |= Update;\n }\n\n if (isReactCompatElement(node) && node.ref !== null) {\n fiber.flags |= Update;\n }\n}\n\nfunction createHostFiber(\n parent: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n const result = createHostFiberImpl(parent, current, node, key, runtime, path, options);\n\n if (result.fiber !== undefined) {\n if (canFinalizeNewHostFiber(result.fiber, current, node, options)) {\n result.fiber.flags |= Placement;\n result.fiber.hostChildListChanged = true;\n return result;\n }\n\n result.fiber.pendingProps = getPendingProps(node);\n includeNodeRef(result.fiber, node);\n markHostFiberEffects(result.fiber, current, node);\n }\n\n return result;\n}\n\nfunction canFinalizeNewHostFiber(\n fiber: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n options: FiberHydrationOptions,\n): boolean {\n return (\n current === undefined &&\n options.previousNodes === undefined &&\n fiber.tag === \"host-component\" &&\n isReactCompatElement(node) &&\n node.ref === null &&\n typeof node.type === \"string\"\n );\n}\n\nfunction createHostFiberImpl(\n parent: Fiber,\n current: Fiber | undefined,\n node: ReactCompatNode,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return { fiber: undefined, consumed: 0 };\n }\n\n if (typeof node === \"string\" || typeof node === \"number\") {\n const existing = options.previousNodes?.[0];\n const fiber =\n current?.tag === \"host-text\"\n ? createWorkInProgress(current, String(node))\n : createFiber(\"host-text\", String(node), key);\n if (existing === undefined && options.previousNodes !== undefined) {\n reportMissingHydrationNode(options, path);\n } else if (existing !== undefined && !(existing instanceof Text)) {\n reportHydrationNodeTypeMismatch(options, path, \"text\", existing);\n }\n fiber.stateNode =\n existing instanceof Text\n ? existing\n : current?.tag === \"host-text\" && current.stateNode instanceof Text\n ? current.stateNode\n : getDocumentRef(options).createTextNode(\"\");\n\n if (existing instanceof Text && existing.data !== String(node)) {\n reportRecoverable(\n options,\n \"text\",\n path,\n new Error(\"Hydration text mismatch.\"),\n );\n }\n\n return { fiber, consumed: existing instanceof Text ? 1 : 0 };\n }\n\n if (Array.isArray(node)) {\n const fiber =\n current?.tag === \"fragment\"\n ? createWorkInProgress(current, node)\n : createFiber(\"fragment\", node, key);\n const childResult = reconcileHostChild(\n fiber,\n current?.child,\n node,\n runtime,\n path,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (!isReactCompatElement(node)) {\n if (isReactCompatPortal(node)) {\n return createPortalFiber(parent, current, node, key, runtime, path, options);\n }\n\n return { fiber: undefined, consumed: 0 };\n }\n\n if (node.type === Fragment) {\n const fiber =\n current?.tag === \"fragment\"\n ? createWorkInProgress(current, node.props.children)\n : createFiber(\"fragment\", node.props.children, key);\n const childResult = reconcileHostChild(\n fiber,\n current?.child,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.f`,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (node.type === Activity) {\n const children =\n (node.props as { mode?: unknown }).mode === \"hidden\"\n ? null\n : node.props.children;\n const fiber =\n current?.tag === \"fragment\"\n ? createWorkInProgress(current, children)\n : createFiber(\"fragment\", children, key);\n fiber.type = node.type;\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"fragment\" ? current.child : undefined,\n children as ReactCompatNode,\n runtime,\n `${path}.activity`,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (node.type === Profiler) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const fiber =\n current?.tag === \"profiler\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"profiler\", node.props, key);\n fiber.type = node.type;\n const childResult = renderWithProfiler(\n runtime,\n `${path}.profiler`,\n node.props,\n () =>\n reconcileHostChild(\n fiber,\n current?.tag === \"profiler\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.profiler`,\n options,\n ),\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (node.type === STRICT_MODE_TYPE) {\n return createStrictModeFiber(current, node, key, runtime, path, options);\n }\n\n if (node.type === Suspense) {\n return createSuspenseFiber(current, node, key, runtime, path, options);\n }\n\n if (node.type === SuspenseList) {\n return createSuspenseListFiber(current, node, key, runtime, path, options);\n }\n\n if (node.type === ERROR_BOUNDARY_TYPE) {\n const fiber =\n current?.tag === \"error-boundary\"\n ? createWorkInProgress(current, node.props)\n : createFiber(\"error-boundary\", node.props, key);\n fiber.type = node.type;\n\n try {\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"error-boundary\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.eb`,\n options,\n );\n fiber.child = childResult.fiber;\n } catch (error) {\n if (isThenable(error)) {\n throw error;\n }\n\n const normalizedError =\n error instanceof Error ? error : new Error(String(error));\n const onError = node.props.onError;\n\n if (typeof onError === \"function\") {\n (onError as (error: Error) => void)(normalizedError);\n }\n\n const fallback = node.props.fallback;\n const fallbackNode =\n typeof fallback === \"function\"\n ? (fallback as (error: Error) => ReactCompatNode)(normalizedError)\n : null;\n const fallbackResult = reconcileHostChild(\n fiber,\n current?.tag === \"error-boundary\" ? current.child : undefined,\n fallbackNode,\n runtime,\n `${path}.eb.fallback`,\n options,\n );\n fiber.child = fallbackResult.fiber;\n }\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n if (isReactCompatProvider(node.type)) {\n const fiber =\n current?.tag === \"context-provider\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"context-provider\", node.props, key);\n fiber.type = node.type;\n const childResult = renderWithContextProvider(node.type, node.props.value, () =>\n reconcileHostChild(\n fiber,\n current?.tag === \"context-provider\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.provider`,\n options,\n ),\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isReactCompatConsumer(node.type)) {\n const fiber =\n current?.tag === \"context-consumer\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"context-consumer\", node.props, key);\n fiber.type = node.type;\n const children = node.props.children;\n const render =\n typeof children === \"function\"\n ? (children as (value: unknown) => ReactCompatNode)\n : () => null;\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"context-consumer\" ? current.child : undefined,\n render(useContext(consumerContext(node.type))),\n runtime,\n `${path}.consumer`,\n options,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isForwardRefType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const forwardRefType = node.type;\n const fiber =\n current?.tag === \"forward-ref\" && current.type === forwardRefType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"forward-ref\", node.props, key);\n fiber.type = forwardRefType;\n const rendered = renderWithRootRuntime(runtime, path, () =>\n forwardRefType.render(node.props, node.ref),\n forwardRefType,\n );\n fiber.memoizedState = getDevToolsHookState(runtime, path);\n const childOptions = withHydrationComponentStack(\n options,\n getComponentName(forwardRefType.render),\n );\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"forward-ref\" ? current.child : undefined,\n rendered,\n runtime,\n `${path}.forwardRef`,\n childOptions,\n );\n fiber.child = childResult.fiber;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isMemoType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const memoType = node.type;\n const memoPath = `${path}.memo`;\n const previousMemoState =\n current?.tag === \"memo\"\n ? (current.memoizedState as MemoFiberState | undefined)\n : undefined;\n const fiber =\n current?.tag === \"memo\" && current.type === memoType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"memo\", node.props, key);\n fiber.type = memoType;\n\n if (\n previousMemoState !== undefined &&\n !hasDirtyInstance(runtime, previousMemoState.instanceKeys, memoPath) &&\n !hasUnflushedMountEffectInstance(runtime, previousMemoState.instanceKeys) &&\n areMemoPropsEqual(memoType, previousMemoState.props, node.props)\n ) {\n markActiveInstanceKeys(runtime, previousMemoState.instanceKeys);\n fiber.child = getSkippedChild(current);\n fiber.memoizedState = previousMemoState;\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n const renderedElement: ReactCompatElement = {\n ...node,\n type: memoType.type,\n };\n const childResult = createHostFiber(\n fiber,\n current?.tag === \"memo\" ? current.child : undefined,\n renderedElement,\n key,\n runtime,\n memoPath,\n options,\n );\n fiber.child = childResult.fiber;\n if (fiber.child !== undefined) {\n fiber.child.return = fiber;\n fiber.child.sibling = undefined;\n bubbleHostChild(fiber, fiber.child);\n }\n fiber.memoizedState = {\n props: { ...node.props },\n instanceKeys: collectInstanceKeys(runtime, memoPath),\n };\n return { fiber, consumed: childResult.consumed };\n }\n\n if (isLazyType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const lazyType = node.type;\n const fiber =\n current?.tag === \"lazy\" && current.type === lazyType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"lazy\", node.props, key);\n fiber.type = lazyType;\n\n if (lazyType.status === \"resolved\" && lazyType.resolved !== undefined) {\n const renderedElement: ReactCompatElement = {\n ...node,\n type: lazyType.resolved,\n };\n const childResult = createHostFiber(\n fiber,\n current?.tag === \"lazy\" ? current.child : undefined,\n renderedElement,\n key,\n runtime,\n `${path}.lazy`,\n options,\n );\n fiber.child = childResult.fiber;\n if (fiber.child !== undefined) {\n fiber.child.return = fiber;\n fiber.child.sibling = undefined;\n bubbleHostChild(fiber, fiber.child);\n }\n return { fiber, consumed: childResult.consumed };\n }\n\n if (lazyType.status === \"rejected\") {\n throw lazyType.error;\n }\n\n if (lazyType.status === \"uninitialized\") {\n lazyType.status = \"pending\";\n lazyType.promise = lazyType\n .load()\n .then((module) => {\n lazyType.status = \"resolved\";\n lazyType.resolved = module.default;\n runtime.rerender();\n })\n .catch((error: unknown) => {\n lazyType.status = \"rejected\";\n lazyType.error = error;\n runtime.rerender();\n });\n }\n\n if (suspensePrimaryRenderDepth > 0) {\n throw lazyType.promise;\n }\n\n fiber.child = undefined;\n return { fiber, consumed: 0 };\n }\n\n if (isClassComponentType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const classType = node.type;\n const fiber =\n current?.tag === \"class-component\" && current.type === classType\n ? createWorkInProgress(current, node.props)\n : createFiber(\"class-component\", node.props, key);\n fiber.type = classType;\n const previousClassChildKeys = collectInstanceKeys(runtime, `${path}.class`);\n const currentClassInstance =\n current?.tag === \"class-component\" && current.type === classType\n ? (current.stateNode as ClassComponentInstance)\n : undefined;\n const hasCurrentClassFiber =\n current?.tag === \"class-component\" && current.type === classType;\n const rendered = renderClassComponentWithRuntime(\n classType,\n node.props,\n runtime,\n path,\n {\n ...(currentClassInstance === undefined\n ? {}\n : { currentInstance: currentClassInstance }),\n hasDirtyDescendant: hasDirtyInstance(\n runtime,\n previousClassChildKeys,\n `${path}.class`,\n ),\n allowSkip: hasCurrentClassFiber,\n },\n );\n applyRef(node.ref, rendered.kind === \"skip\" ? current?.stateNode : rendered.instance);\n\n if (rendered.kind === \"skip\") {\n fiber.child = getSkippedChild(current);\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n const childOptions = withHydrationComponentStack(\n options,\n getComponentName(classType),\n );\n\n try {\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"class-component\" ? current.child : undefined,\n rendered.node,\n runtime,\n `${path}.class`,\n childOptions,\n );\n fiber.child = childResult.fiber;\n fiber.stateNode = rendered.instance;\n } catch (error) {\n const fallbackNode = recoverClassComponentError(\n rendered.type,\n rendered.instance,\n error,\n );\n\n if (fallbackNode === undefined) {\n throw error;\n }\n\n const fallbackResult = reconcileHostChild(\n fiber,\n current?.tag === \"class-component\" ? current.child : undefined,\n fallbackNode,\n runtime,\n `${path}.class.fallback`,\n childOptions,\n );\n fiber.child = fallbackResult.fiber;\n }\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n if (isFunctionComponentType(node.type)) {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const previousFunctionState =\n current?.tag === \"function-component\"\n ? (current.stateNode as FunctionFiberState | undefined)\n : undefined;\n const fiber =\n current?.tag === \"function-component\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"function-component\", node.props, key);\n fiber.type = node.type;\n\n const canReuseSameElement =\n previousFunctionState !== undefined &&\n previousFunctionState.hasContextDependencies !== true &&\n previousFunctionState.element === node;\n const canReuseExternalStoreSnapshot =\n previousFunctionState !== undefined &&\n runtime.externalStoreUpdate &&\n shallowEqual(previousFunctionState.props, node.props) &&\n !hasChangedContextDependency(runtime, previousFunctionState.instanceKeys);\n\n if (\n runtime.strictReplayDepth === 0 &&\n previousFunctionState !== undefined &&\n (canReuseSameElement || canReuseExternalStoreSnapshot) &&\n !hasDirtyInstance(runtime, previousFunctionState.instanceKeys, path) &&\n !hasUnflushedMountEffectInstance(runtime, previousFunctionState.instanceKeys) &&\n !hasPendingAsyncChild(current?.child)\n ) {\n markActiveInstanceKeys(runtime, previousFunctionState.instanceKeys);\n fiber.child = getSkippedChild(current);\n fiber.memoizedState = current?.memoizedState;\n fiber.stateNode = previousFunctionState;\n return { fiber, consumed: options.previousNodes?.length ?? 0 };\n }\n\n const rendered = renderWithRootRuntime(runtime, path, () =>\n (node.type as (props: Record<string, unknown>) => ReactCompatNode)(node.props),\n node.type,\n );\n fiber.memoizedState = getDevToolsHookState(runtime, path);\n const childOptions = withHydrationComponentStack(\n options,\n getComponentName(node.type as Function),\n );\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"function-component\" ? current.child : undefined,\n rendered,\n runtime,\n `${path}.0`,\n childOptions,\n );\n fiber.child = childResult.fiber;\n const instanceKeys = collectInstanceKeys(runtime, path);\n fiber.stateNode = {\n element: node,\n props: { ...node.props },\n instanceKeys,\n hasContextDependencies: hasContextDependency(runtime, instanceKeys),\n } satisfies FunctionFiberState;\n return { fiber, consumed: childResult.consumed };\n }\n\n if (typeof node.type !== \"string\") {\n return { fiber: undefined, consumed: 0 };\n }\n\n const elementNamespace = namespaceForHostElement(options.namespace ?? \"html\", node.type);\n const childNamespace = namespaceForHostChildren(elementNamespace, node.type);\n const fiber =\n current?.tag === \"host-component\" && current.type === node.type\n ? createWorkInProgress(current, node.props)\n : createFiber(\"host-component\", node.props, key);\n const existing = options.previousNodes?.[0];\n const existingElement = isHostElement(existing) ? existing : undefined;\n const tagMatches =\n existingElement !== undefined &&\n hostElementMatches(existingElement, node.type, elementNamespace);\n\n if (existing === undefined && options.previousNodes !== undefined) {\n reportMissingHydrationNode(options, path);\n } else if (existing !== undefined && !isHostElement(existing)) {\n reportHydrationNodeTypeMismatch(options, path, `<${node.type}>`, existing);\n }\n\n if (existingElement !== undefined && !tagMatches) {\n reportRecoverable(\n options,\n \"tag\",\n path,\n new Error(\n `Hydration tag mismatch: expected <${node.type}> but found <${existingElement.tagName.toLowerCase()}>.`,\n ),\n );\n reportElementTextMismatch(options, `${path}.c`, existingElement, node.props.children);\n }\n\n fiber.type = node.type;\n fiber.stateNode =\n tagMatches\n ? existingElement\n : current?.tag === \"host-component\" &&\n current.type === node.type &&\n isHostElement(current.stateNode) &&\n hostElementMatches(current.stateNode, node.type, elementNamespace)\n ? current.stateNode\n : createHostElement(getDocumentRef(options), node.type, options.namespace ?? \"html\");\n fiber.hydrateExisting = tagMatches && options.previousNodes !== undefined;\n const previousChildNodes =\n tagMatches && existingElement !== undefined\n ? Array.from(existingElement.childNodes)\n : undefined;\n const directTextChild =\n shouldUseDirectHostTextChild() && previousChildNodes === undefined\n ? getDirectHostTextChild(node.props.children)\n : undefined;\n if (\n previousChildNodes === undefined &&\n current?.tag === \"host-component\" &&\n current.type === node.type &&\n Object.is(hostFiberChildrenProp(current.memoizedProps), node.props.children) &&\n !hasDirtyInstance(runtime, [], `${path}.c`) &&\n canReuseStaticHostSubtree(current.child)\n ) {\n fiber.child = current.child;\n if (fiber.child !== undefined) {\n fiber.child.return = fiber;\n }\n parent.child ??= fiber;\n return { fiber, consumed: existing === undefined ? 0 : 1 };\n }\n\n if (directTextChild !== undefined) {\n fiber.child = undefined;\n parent.child ??= fiber;\n return { fiber, consumed: existing === undefined ? 0 : 1 };\n }\n\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"host-component\" ? current.child : undefined,\n node.props.children as ReactCompatNode,\n runtime,\n `${path}.c`,\n {\n ...options,\n namespace: childNamespace,\n ...(previousChildNodes === undefined ? {} : { previousNodes: previousChildNodes }),\n },\n );\n fiber.child = childResult.fiber;\n if (previousChildNodes !== undefined) {\n reportExtraHydrationNodes(options, `${path}.c`, previousChildNodes, childResult.consumed);\n }\n parent.child ??= fiber;\n return { fiber, consumed: existing === undefined ? 0 : 1 };\n}\n\nfunction isFunctionComponentType(value: unknown): value is (\n props: Record<string, unknown>,\n) => ReactCompatNode {\n return (\n typeof value === \"function\" &&\n typeof (value as { prototype?: { render?: unknown } }).prototype?.render !==\n \"function\"\n );\n}\n\nfunction commitHostChildren(\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): Node[] {\n const nodes: Node[] = [];\n let cursor = fiber;\n let index = 0;\n\n while (cursor !== undefined) {\n for (const node of commitHostFiber(cursor, parent, eventRoot, joinCommitPath(path, String(index)), options)) {\n nodes.push(node);\n }\n cursor = cursor.sibling;\n index += 1;\n }\n\n return nodes;\n}\n\nfunction commitHostDirtyChildren(\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): void {\n let cursor = fiber;\n let index = 0;\n\n while (cursor !== undefined) {\n if (hasHostCommitWork(cursor)) {\n commitHostDirtyFiber(cursor, parent, eventRoot, joinCommitPath(path, String(index)), options);\n }\n cursor = cursor.sibling;\n index += 1;\n }\n}\n\nfunction commitHostDirtyFiber(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): void {\n if (fiber.tag === \"host-text\") {\n commitHostFiber(fiber, parent, eventRoot, path, options);\n return;\n }\n\n if (fiber.tag === \"host-component\") {\n const element = fiber.stateNode;\n\n if (!isHostElement(element)) {\n finishCommittedFiber(fiber);\n return;\n }\n\n const props = fiber.pendingProps as Record<string, unknown>;\n const previousProps = fiber.memoizedProps as Record<string, unknown> | undefined;\n const directTextChild =\n fiber.child === undefined && fiber.hydrateExisting !== true\n ? getDirectHostTextChild(props.children)\n : undefined;\n const textOnlyChildrenUpdate =\n directTextChild !== undefined &&\n hostPropsAreKnownChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreKnownChildrenOnly(props);\n const propsAreUnchanged =\n fiber.hydrateExisting !== true &&\n !textOnlyChildrenUpdate &&\n hostPropsEqual(fiber.memoizedProps, props);\n const propsAreChildrenOnly =\n textOnlyChildrenUpdate ||\n (fiber.hydrateExisting !== true &&\n hostPropsAreChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreChildrenOnly(props));\n const textOnlyRowUpdate =\n !propsAreUnchanged &&\n !propsAreChildrenOnly &&\n fiber.hydrateExisting !== true &&\n isRowTextOnlyUpdate(fiber.memoizedProps, props);\n\n if (!propsAreUnchanged && !propsAreChildrenOnly && !textOnlyRowUpdate) {\n applyProps(element, props, path, {\n ...options,\n eventRoot,\n preserveHydrationAttributes: fiber.hydrateExisting,\n });\n applyChangedRef(previousProps?.ref, props.ref, element);\n }\n\n if (directTextChild !== undefined) {\n const text = syncDirectHostTextChild(element, directTextChild);\n subscribeReactiveHostTextBinding(props, text);\n } else if (\n fiber.hostChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged\n ) {\n const childNodes = commitHostChildren(fiber.child, element, eventRoot, `${path}.c`, options);\n if (\n !(childNodes.length === 0 && committedPortalContainers.has(element)) &&\n !shouldPreserveContentEditableChildren(element, props, childNodes)\n ) {\n syncChildNodes(element, childNodes);\n }\n } else if (fiber.subtreeFlags !== NoFlags) {\n commitHostDirtyChildren(fiber.child, element, eventRoot, `${path}.c`, options);\n }\n\n applyPostChildFormProps(element, props, previousProps);\n fiber.memoizedProps = props;\n finishCommittedFiber(fiber);\n return;\n }\n\n if (fiber.tag === \"portal\") {\n const container = fiber.stateNode;\n\n if (container instanceof Element) {\n setLogicalEventParent(container, parent);\n commitHostDirtyChildren(fiber.child, container, container, `${path}.portal`, options);\n }\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return;\n }\n\n if (fiber.subtreeFlags !== NoFlags) {\n commitHostDirtyChildren(fiber.child, parent, eventRoot, path, options);\n }\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n}\n\nfunction hasHostCommitWork(fiber: Fiber): boolean {\n return (\n fiber.flags !== NoFlags ||\n fiber.subtreeFlags !== NoFlags ||\n fiber.hostChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged ||\n fiber.hydrateExisting\n );\n}\n\nfunction commitHostKeyedChildListMutation(\n fiber: Fiber | undefined,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): boolean {\n let cursor = fiber;\n let index = 0;\n let committed = false;\n\n while (cursor !== undefined) {\n if (!hasHostCommitWork(cursor)) {\n cursor = cursor.sibling;\n index += 1;\n continue;\n }\n\n const childPath = joinCommitPath(path, String(index));\n const didCommit = commitHostKeyedChildListMutationFiber(\n cursor,\n parent,\n eventRoot,\n childPath,\n options,\n );\n\n if (!didCommit) {\n return false;\n }\n\n committed = true;\n cursor = cursor.sibling;\n index += 1;\n }\n\n return committed;\n}\n\nfunction commitHostKeyedChildListMutationFiber(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): boolean {\n if (fiber.childListChanged) {\n const mutationParent =\n fiber.tag === \"host-component\" && isHostElement(fiber.stateNode)\n ? fiber.stateNode\n : parent;\n\n if (fiber.tag === \"host-component\" && !isHostElement(fiber.stateNode)) {\n return false;\n }\n\n if (commitHostAppendSuffix(fiber, mutationParent, eventRoot, path, options)) {\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n if (commitHostSingleRemoval(fiber, mutationParent)) {\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n return false;\n }\n\n if (fiber.subtreeChildListChanged) {\n if (fiber.tag === \"host-component\") {\n const element = fiber.stateNode;\n\n if (!isHostElement(element)) {\n return false;\n }\n\n if (!commitHostKeyedChildListMutation(fiber.child, element, eventRoot, `${path}.c`, options)) {\n return false;\n }\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n if (!commitHostKeyedChildListMutation(fiber.child, parent, eventRoot, path, options)) {\n return false;\n }\n finishHostPassthroughFiber(fiber);\n return true;\n }\n\n commitHostDirtyFiber(fiber, parent, eventRoot, path, options);\n return true;\n}\n\nfunction commitHostAppendSuffix(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions,\n): boolean {\n const append = getAppendSuffix(fiber.alternate?.child, fiber.child);\n\n if (append === undefined) {\n return false;\n }\n\n let cursor: Fiber | undefined = append.fiber;\n let index = append.index;\n\n while (cursor !== undefined) {\n for (const node of commitHostFiber(cursor, parent, eventRoot, joinCommitPath(path, String(index)), options)) {\n parent.appendChild(node);\n }\n cursor = cursor.sibling;\n index += 1;\n }\n\n return true;\n}\n\nfunction commitHostSingleRemoval(fiber: Fiber, parent: ParentNode): boolean {\n const removed = getSingleRemovedFiber(fiber.alternate?.child, fiber.child);\n\n if (removed === undefined) {\n return false;\n }\n\n let removedAny = false;\n\n for (const node of collectCommittedHostNodes(removed)) {\n if (node.parentNode !== parent) {\n return false;\n }\n\n parent.removeChild(node);\n removedAny = true;\n }\n\n return removedAny;\n}\n\nfunction getAppendSuffix(\n current: Fiber | undefined,\n next: Fiber | undefined,\n): { fiber: Fiber; index: number } | undefined {\n let currentCursor = current;\n let nextCursor = next;\n let index = 0;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n if (!isSameFiberSlot(currentCursor, nextCursor) || hasHostCommitWork(nextCursor)) {\n return undefined;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n index += 1;\n }\n\n if (currentCursor !== undefined || nextCursor === undefined) {\n return undefined;\n }\n\n return { fiber: nextCursor, index };\n}\n\nfunction getSingleRemovedFiber(\n current: Fiber | undefined,\n next: Fiber | undefined,\n): Fiber | undefined {\n let currentCursor = current;\n let nextCursor = next;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n if (!isSameFiberSlot(currentCursor, nextCursor)) {\n break;\n }\n\n if (hasHostCommitWork(nextCursor)) {\n return undefined;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n }\n\n if (currentCursor === undefined) {\n return undefined;\n }\n\n const removed = currentCursor;\n currentCursor = currentCursor.sibling;\n\n while (currentCursor !== undefined && nextCursor !== undefined) {\n if (!isSameFiberSlot(currentCursor, nextCursor) || hasHostCommitWork(nextCursor)) {\n return undefined;\n }\n\n currentCursor = currentCursor.sibling;\n nextCursor = nextCursor.sibling;\n }\n\n return currentCursor === undefined && nextCursor === undefined ? removed : undefined;\n}\n\nfunction isSameFiberSlot(current: Fiber, next: Fiber): boolean {\n return (\n (next === current || next.alternate === current) &&\n current.tag === next.tag &&\n current.type === next.type &&\n current.key === next.key\n );\n}\n\nfunction collectCommittedHostNodes(fiber: Fiber): Node[] {\n if (\n (fiber.tag === \"host-component\" || fiber.tag === \"host-text\") &&\n fiber.stateNode instanceof Node\n ) {\n return [fiber.stateNode];\n }\n\n const nodes: Node[] = [];\n let child = fiber.child;\n\n while (child !== undefined) {\n nodes.push(...collectCommittedHostNodes(child));\n child = child.sibling;\n }\n\n return nodes;\n}\n\nfunction getSkippedChild(current: Fiber | undefined): Fiber | undefined {\n const child = current?.child;\n const alternateChild = current?.alternate?.child;\n\n if (\n child !== undefined &&\n alternateChild !== undefined &&\n collectCommittedHostNodes(child).length === 0 &&\n collectCommittedHostNodes(alternateChild).length > 0\n ) {\n return alternateChild;\n }\n\n return child;\n}\n\nfunction finishHostPassthroughFiber(fiber: Fiber): void {\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n}\n\nfunction commitHostFiber(\n fiber: Fiber,\n parent: ParentNode,\n eventRoot: Element,\n path: string,\n options: RenderOptions = {},\n): Node[] {\n if (fiber.tag === \"host-text\") {\n const text = fiber.stateNode;\n\n if (!(text instanceof Text)) {\n finishCommittedFiber(fiber);\n return [];\n }\n\n const nextText = String(fiber.pendingProps);\n if (text.data !== nextText) {\n text.data = nextText;\n }\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return [text];\n }\n\n if (fiber.tag === \"host-component\") {\n const element = fiber.stateNode;\n\n if (!isHostElement(element)) {\n finishCommittedFiber(fiber);\n return [];\n }\n\n if (\n fiber.hydrateExisting !== true &&\n fiber.flags === NoFlags &&\n fiber.subtreeFlags === NoFlags &&\n fiber.hostChildListChanged !== true &&\n fiber.childListChanged !== true &&\n fiber.subtreeChildListChanged !== true\n ) {\n fiber.memoizedProps = fiber.pendingProps;\n return [element];\n }\n\n const props = fiber.pendingProps as Record<string, unknown>;\n const previousProps = fiber.memoizedProps as Record<string, unknown> | undefined;\n const directTextChild =\n fiber.child === undefined && fiber.hydrateExisting !== true\n ? getDirectHostTextChild(props.children)\n : undefined;\n const textOnlyChildrenUpdate =\n directTextChild !== undefined &&\n hostPropsAreKnownChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreKnownChildrenOnly(props);\n const propsAreUnchanged =\n fiber.hydrateExisting !== true &&\n !textOnlyChildrenUpdate &&\n hostPropsEqual(fiber.memoizedProps, props);\n const propsAreChildrenOnly =\n textOnlyChildrenUpdate ||\n (fiber.hydrateExisting !== true &&\n hostPropsAreChildrenOnly(fiber.memoizedProps) &&\n hostPropsAreChildrenOnly(props));\n const textOnlyRowUpdate =\n !propsAreUnchanged &&\n !propsAreChildrenOnly &&\n fiber.hydrateExisting !== true &&\n isRowTextOnlyUpdate(fiber.memoizedProps, props);\n\n if (!propsAreUnchanged && !propsAreChildrenOnly && !textOnlyRowUpdate) {\n applyProps(element, props, path, {\n ...options,\n eventRoot,\n preserveHydrationAttributes: fiber.hydrateExisting,\n });\n applyChangedRef(previousProps?.ref, props.ref, element);\n }\n if (directTextChild !== undefined) {\n const text = syncDirectHostTextChild(element, directTextChild);\n subscribeReactiveHostTextBinding(props, text);\n } else if (\n fiber.hostChildListChanged ||\n fiber.childListChanged ||\n fiber.subtreeChildListChanged ||\n fiber.hydrateExisting === true ||\n (fiber.subtreeFlags & Placement) !== NoFlags\n ) {\n const childNodes = commitHostChildren(fiber.child, element, eventRoot, `${path}.c`, options);\n if (\n !(childNodes.length === 0 && committedPortalContainers.has(element)) &&\n !shouldPreserveContentEditableChildren(element, props, childNodes)\n ) {\n syncChildNodes(element, childNodes);\n }\n } else if (fiber.subtreeFlags !== NoFlags) {\n commitHostChildren(fiber.child, element, eventRoot, `${path}.c`, options);\n }\n\n applyPostChildFormProps(element, props, previousProps);\n fiber.memoizedProps = props;\n finishCommittedFiber(fiber);\n return [element];\n }\n\n if (fiber.tag === \"fragment\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.f`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"profiler\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.profiler`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"strict-mode\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.strict`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"suspense\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.s`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"suspense-list\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.sl`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"context-provider\" || fiber.tag === \"context-consumer\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.ctx`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"function-component\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.fc`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"forward-ref\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.fr`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"memo\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.memo`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"lazy\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.lazy`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"error-boundary\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.eb`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"class-component\") {\n fiber.memoizedProps = fiber.pendingProps;\n const nodes = commitHostChildren(fiber.child, parent, eventRoot, `${path}.class`, options);\n finishCommittedFiber(fiber);\n return nodes;\n }\n\n if (fiber.tag === \"portal\") {\n const container = fiber.stateNode;\n\n if (!(container instanceof Element)) {\n return [];\n }\n\n setLogicalEventParent(container, parent);\n committedPortalContainers.add(container);\n const portalEventRoot =\n eventRoot !== container && eventRoot.contains(container) ? eventRoot : container;\n const childNodes = commitHostChildren(\n fiber.child,\n container,\n portalEventRoot,\n `${path}.portal`,\n options,\n );\n const previousNodes = Array.isArray(fiber.alternate?.memoizedState)\n ? fiber.alternate.memoizedState.filter((node): node is Node => node instanceof Node)\n : [];\n syncOwnedChildNodes(container, previousNodes, childNodes);\n fiber.memoizedState = childNodes;\n fiber.memoizedProps = fiber.pendingProps;\n finishCommittedFiber(fiber);\n return [];\n }\n\n finishCommittedFiber(fiber);\n return [];\n}\n\nfunction finishCommittedFiber(fiber: Fiber): void {\n fiber.flags = NoFlags;\n fiber.subtreeFlags = NoFlags;\n fiber.childListChanged = false;\n fiber.subtreeChildListChanged = false;\n fiber.hostChildListChanged = false;\n}\n\nfunction hasChildListMutation(fiber: Fiber): boolean {\n return fiber.childListChanged || fiber.subtreeChildListChanged;\n}\n\nfunction hostPropsEqual(previous: unknown, next: Record<string, unknown>): boolean {\n if (previous === next) {\n return true;\n }\n\n if (typeof previous !== \"object\" || previous === null) {\n return false;\n }\n\n const previousProps = previous as Record<string, unknown>;\n let previousCount = 0;\n let nextCount = 0;\n\n for (const key in previousProps) {\n if (!hasOwnProperty.call(previousProps, key)) {\n continue;\n }\n previousCount += 1;\n if (!hasOwnProperty.call(next, key)) {\n return false;\n }\n\n if (!Object.is(previousProps[key], next[key])) {\n return false;\n }\n }\n\n for (const key in next) {\n if (hasOwnProperty.call(next, key)) {\n nextCount += 1;\n }\n }\n\n return previousCount === nextCount;\n}\n\nfunction hostOwnPropsEqual(previous: unknown, next: Record<string, unknown>): boolean {\n if (previous === next) {\n return true;\n }\n\n if (typeof previous !== \"object\" || previous === null) {\n return false;\n }\n\n const previousProps = previous as Record<string, unknown>;\n\n let previousCount = 0;\n let nextCount = 0;\n\n for (const key in previousProps) {\n if (!hasOwnProperty.call(previousProps, key) || key === \"children\") {\n continue;\n }\n previousCount += 1;\n if (!hasOwnProperty.call(next, key)) {\n return false;\n }\n\n if (!Object.is(previousProps[key], next[key])) {\n return false;\n }\n }\n\n for (const key in next) {\n if (hasOwnProperty.call(next, key) && key !== \"children\") {\n nextCount += 1;\n }\n }\n\n return previousCount === nextCount;\n}\n\nfunction hostDirectTextChildChanged(previous: unknown, next: Record<string, unknown>): boolean {\n const previousText = getDirectHostTextChild(hostFiberChildrenProp(previous));\n const nextText = getDirectHostTextChild(next.children);\n\n return (previousText !== undefined || nextText !== undefined) && previousText !== nextText;\n}\n\nfunction hostChildListChanged(previous: unknown, next: Record<string, unknown>): boolean {\n const previousChildren = hostFiberChildrenProp(previous);\n const nextChildren = next.children;\n\n if (Object.is(previousChildren, nextChildren)) {\n return false;\n }\n\n if (\n getDirectHostTextChild(previousChildren) !== undefined ||\n getDirectHostTextChild(nextChildren) !== undefined\n ) {\n return false;\n }\n\n if (sameSingleHostChild(previousChildren, nextChildren)) {\n return false;\n }\n\n if (sameHostChildList(previousChildren, nextChildren)) {\n return false;\n }\n\n return true;\n}\n\nfunction sameSingleHostChild(previous: unknown, next: unknown): boolean {\n return (\n isReactCompatElement(previous) &&\n isReactCompatElement(next) &&\n previous.key === next.key &&\n previous.type === next.type\n );\n}\n\nfunction sameHostChildList(previous: unknown, next: unknown): boolean {\n if (!Array.isArray(previous) || !Array.isArray(next) || previous.length !== next.length) {\n return false;\n }\n\n for (let index = 0; index < previous.length; index += 1) {\n const previousChild = previous[index];\n const nextChild = next[index];\n\n if (Object.is(previousChild, nextChild)) {\n continue;\n }\n\n if (!sameSingleHostChild(previousChild, nextChild)) {\n return false;\n }\n }\n\n return (\n previous.length > 0 ||\n (Array.isArray(previous) && Array.isArray(next))\n );\n}\n\nfunction hostPropsAreChildrenOnly(props: unknown): boolean {\n if (typeof props !== \"object\" || props === null) {\n return false;\n }\n\n for (const key in props) {\n if (\n Object.prototype.hasOwnProperty.call(props, key) &&\n key !== \"children\"\n ) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction hostPropsAreKnownChildrenOnly(props: unknown): boolean {\n return (\n typeof props === \"object\" &&\n props !== null &&\n (props as { [HOST_CHILDREN_ONLY_PROPS_META]?: true })[\n HOST_CHILDREN_ONLY_PROPS_META\n ] === true\n );\n}\n\nfunction isRowTextOnlyUpdate(previous: unknown, next: Record<string, unknown>): boolean {\n if (typeof previous !== \"object\" || previous === null) {\n return false;\n }\n\n const previousProps = previous as Record<string, unknown>;\n const previousText = getDirectHostTextChild(previousProps.children);\n const nextText = getDirectHostTextChild(next.children);\n\n return (\n previousText !== undefined &&\n nextText !== undefined &&\n previousText !== nextText &&\n hostOwnPropsEqual(previousProps, next)\n );\n}\n\nfunction hostFiberChildrenProp(props: unknown): unknown {\n return typeof props === \"object\" && props !== null\n ? (props as { children?: unknown }).children\n : undefined;\n}\n\nfunction getDirectHostTextChild(children: unknown): string | undefined {\n return typeof children === \"string\" || typeof children === \"number\"\n ? String(children)\n : undefined;\n}\n\n// This package has no Node type dependency; declare the minimal process\n// shape needed for the literal process.env.NODE_ENV expression below.\ndeclare const process: { env: Record<string, string | undefined> };\n\ntype HostFastPathMode = \"static-fast\" | \"dynamic\";\n\nconst hostFastPathMode: HostFastPathMode = (() => {\n try {\n // The literal process.env.NODE_ENV member expression is what bundler\n // define rewriting matches; a globalThis.process indirection is never\n // rewritten and leaves deployed browser bundles without any fast path.\n return process.env.NODE_ENV === \"production\" ? \"static-fast\" : \"dynamic\";\n } catch {\n // No process global at all: an unbundled browser runtime. Treat it as\n // production rather than running every host update on the slow path.\n return \"static-fast\";\n }\n})();\n\nfunction shouldUseDirectHostTextChild(): boolean {\n if (hostFastPathMode === \"static-fast\") {\n return true;\n }\n\n // Node dev/test environments keep the per-call env read so test harnesses\n // can flip NODE_ENV (vi.stubEnv) without re-importing this module.\n return process.env.NODE_ENV === \"production\";\n}\n\nfunction syncDirectHostTextChild(element: Element, text: string): Text {\n const firstChild = element.firstChild;\n\n if (firstChild instanceof Text && firstChild.nextSibling === null) {\n if (firstChild.data !== text) {\n firstChild.data = text;\n }\n return firstChild;\n }\n\n element.textContent = text;\n const nextFirstChild = element.firstChild;\n\n if (!(nextFirstChild instanceof Text)) {\n const textNode = document.createTextNode(text);\n element.replaceChildren(textNode);\n return textNode;\n }\n\n return nextFirstChild;\n}\n\nfunction subscribeReactiveHostTextBinding(\n props: Record<string, unknown>,\n text: Text,\n): void {\n subscribeReactiveTextBinding(\n (props as Record<PropertyKey, unknown>)[REACTIVE_TEXT_BINDING_META],\n text,\n );\n}\n\nfunction shouldPreserveContentEditableChildren(\n element: Element,\n props: Record<string, unknown>,\n childNodes: readonly Node[],\n): boolean {\n void childNodes;\n\n if (\n !element.hasAttribute(\"contenteditable\") ||\n element.getAttribute(\"contenteditable\") === \"false\"\n ) {\n return false;\n }\n\n const children = props.children;\n return (\n children === undefined ||\n children === null ||\n children === false ||\n (Array.isArray(children) && children.length === 0)\n );\n}\n\nfunction createSuspenseFiber(\n current: Fiber | undefined,\n element: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const boundary = findReactSuspenseBoundary(options.previousNodes ?? []);\n if (boundary?.serverError !== undefined) {\n reportReactSuspenseServerError(\n options,\n path,\n boundary.serverError.message,\n boundary.serverError.componentStack,\n );\n }\n const { previousNodes: _previousNodes, ...optionsWithoutPreviousNodes } = options;\n const boundaryOptions =\n boundary === undefined\n ? options\n : boundary.serverError === undefined\n ? boundary.previousNodes === undefined\n ? optionsWithoutPreviousNodes\n : { ...options, previousNodes: boundary.previousNodes }\n : optionsWithoutPreviousNodes;\n const fiber =\n current?.tag === \"suspense\" && current.type === element.type\n ? createWorkInProgress(current, element.props)\n : createFiber(\"suspense\", element.props, key);\n fiber.type = element.type;\n\n const snapshot = takeRuntimeSnapshot(runtime);\n\n try {\n suspensePrimaryRenderDepth += 1;\n let childResult: FiberReconcileResult;\n\n try {\n childResult = reconcileHostChild(\n fiber,\n current?.tag === \"suspense\" ? current.child : undefined,\n element.props.children as ReactCompatNode,\n runtime,\n `${path}.s`,\n boundaryOptions,\n );\n } finally {\n suspensePrimaryRenderDepth -= 1;\n }\n\n fiber.child = childResult.fiber;\n fiber.memoizedState = { didSuspend: false } satisfies SuspenseFiberState;\n } catch (error) {\n if (!isThenable(error)) {\n throw error;\n }\n\n restoreRuntimeSnapshot(runtime, snapshot);\n error.then(\n () => runtime.rerender(),\n () => runtime.rerender(),\n );\n const fallbackResult = reconcileHostChild(\n fiber,\n current?.tag === \"suspense\" ? current.child : undefined,\n element.props.fallback as ReactCompatNode,\n runtime,\n `${path}.fallback`,\n boundaryOptions,\n );\n fiber.child = fallbackResult.fiber;\n fiber.memoizedState = { didSuspend: true } satisfies SuspenseFiberState;\n }\n\n return {\n fiber,\n consumed: boundary?.consumed ?? options.previousNodes?.length ?? 0,\n };\n}\n\nfunction createStrictModeFiber(\n current: Fiber | undefined,\n element: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const fiber =\n current?.tag === \"strict-mode\" && current.type === element.type\n ? createWorkInProgress(current, element.props)\n : createFiber(\"strict-mode\", element.props, key);\n fiber.type = element.type;\n\n const { result: childResult, memoValues, memoValuesByHook } = renderWithStrictModeMemoCapture(\n runtime,\n () =>\n reconcileHostChild(\n fiber,\n current?.tag === \"strict-mode\" ? current.child : undefined,\n element.props.children as ReactCompatNode,\n runtime,\n `${path}.strict`,\n options,\n ),\n );\n fiber.child = childResult.fiber;\n\n const snapshot = takeRuntimeSnapshot(runtime);\n try {\n renderStrictModeReplay(\n runtime,\n memoValues,\n memoValuesByHook,\n () =>\n reconcileHostChild(\n fiber,\n childResult.fiber,\n element.props.children as ReactCompatNode,\n runtime,\n `${path}.strict`,\n options.previousNodes === undefined\n ? options\n : { ...options, previousNodes: [] },\n ),\n );\n } finally {\n restoreRuntimeSnapshot(runtime, snapshot);\n }\n\n return { fiber, consumed: childResult.consumed };\n}\n\nfunction createSuspenseListFiber(\n current: Fiber | undefined,\n element: ReactCompatElement,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n const fiber =\n current?.tag === \"suspense-list\" && current.type === element.type\n ? createWorkInProgress(current, element.props)\n : createFiber(\"suspense-list\", element.props, key);\n fiber.type = element.type;\n const children = normalizeChildren(element.props.children as ReactCompatNode);\n const revealOrder = element.props.revealOrder;\n\n if (revealOrder === \"forwards\") {\n const childResult = reconcileSuspenseListForwards(\n fiber,\n current?.tag === \"suspense-list\" ? current.child : undefined,\n children,\n runtime,\n path,\n options,\n );\n fiber.child = childResult.fiber;\n fiber.memoizedState = {\n didSuspend: hasSuspendedChild(fiber.child),\n } satisfies SuspenseFiberState;\n return { fiber, consumed: childResult.consumed };\n } else if (revealOrder === \"backwards\") {\n const childResult = reconcileSuspenseListBackwards(\n fiber,\n current?.tag === \"suspense-list\" ? current.child : undefined,\n children,\n runtime,\n path,\n options,\n );\n fiber.child = childResult.fiber;\n fiber.memoizedState = {\n didSuspend: hasSuspendedChild(fiber.child),\n } satisfies SuspenseFiberState;\n return { fiber, consumed: childResult.consumed };\n } else {\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"suspense-list\" ? current.child : undefined,\n children,\n runtime,\n `${path}.sl`,\n options,\n );\n fiber.child = childResult.fiber;\n fiber.memoizedState = {\n didSuspend: hasSuspendedChild(fiber.child),\n } satisfies SuspenseFiberState;\n return { fiber, consumed: childResult.consumed };\n }\n}\n\nfunction reconcileSuspenseListForwards(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n runtime: RootRuntime,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n let first: Fiber | undefined;\n let previous: Fiber | undefined;\n let consumed = 0;\n const currentByKey = collectExistingKeyedFibers(currentFirstChild);\n let currentUnkeyed = currentFirstChild;\n\n for (const [index, child] of children.entries()) {\n const key = getNodeKey(child);\n const current = key === undefined ? currentUnkeyed : currentByKey.get(key);\n const childOptions =\n options.previousNodes === undefined\n ? options\n : { ...options, previousNodes: options.previousNodes.slice(consumed) };\n const result = createHostFiber(\n parent,\n current,\n child,\n key,\n runtime,\n `${path}.sl.${getNodePathSegment(child, index)}`,\n childOptions,\n );\n const fiber = result.fiber;\n\n if (key === undefined) {\n currentUnkeyed = currentUnkeyed?.sibling;\n }\n consumed += result.consumed;\n\n if (fiber === undefined) {\n continue;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n bubbleHostChild(parent, fiber);\n\n if (first === undefined) {\n first = fiber;\n } else if (previous !== undefined) {\n previous.sibling = fiber;\n }\n\n previous = fiber;\n\n if (isSuspendedSuspenseFiber(fiber)) {\n break;\n }\n }\n\n return { fiber: first, consumed };\n}\n\nfunction reconcileSuspenseListBackwards(\n parent: Fiber,\n currentFirstChild: Fiber | undefined,\n children: readonly ReactCompatNode[],\n runtime: RootRuntime,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n const fibers: Fiber[] = [];\n const currentByKey = collectExistingKeyedFibers(currentFirstChild);\n let consumed = 0;\n\n for (let index = children.length - 1; index >= 0; index -= 1) {\n const child = children[index] as ReactCompatNode;\n const key = getNodeKey(child);\n const result = createHostFiber(\n parent,\n key === undefined ? undefined : currentByKey.get(key),\n child,\n key,\n runtime,\n `${path}.sl.${getNodePathSegment(child, index)}`,\n options.previousNodes === undefined\n ? options\n : { ...options, previousNodes: options.previousNodes.slice(consumed) },\n );\n const fiber = result.fiber;\n consumed += result.consumed;\n\n if (fiber === undefined) {\n continue;\n }\n\n fiber.return = parent;\n fiber.sibling = undefined;\n bubbleHostChild(parent, fiber);\n fibers.unshift(fiber);\n\n if (isSuspendedSuspenseFiber(fiber)) {\n break;\n }\n }\n\n return { fiber: linkFiberSiblings(fibers), consumed };\n}\n\nfunction linkFiberSiblings(fibers: readonly Fiber[]): Fiber | undefined {\n let previous: Fiber | undefined;\n\n for (const fiber of fibers) {\n if (previous !== undefined) {\n previous.sibling = fiber;\n }\n previous = fiber;\n }\n\n return fibers[0];\n}\n\nfunction hasSuspendedChild(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (isSuspendedSuspenseFiber(cursor)) {\n return true;\n }\n\n cursor = cursor.sibling;\n }\n\n return false;\n}\n\nfunction hasPendingAsyncChild(fiber: Fiber | undefined): boolean {\n let cursor = fiber;\n\n while (cursor !== undefined) {\n if (isPendingLazyFiber(cursor) || isSuspendedSuspenseFiber(cursor)) {\n return true;\n }\n\n if (cursor.child !== undefined && hasPendingAsyncChild(cursor.child)) {\n return true;\n }\n\n cursor = cursor.sibling;\n }\n\n return false;\n}\n\nfunction isPendingLazyFiber(fiber: Fiber): boolean {\n if (fiber.tag !== \"lazy\" || !isLazyType(fiber.type)) {\n return false;\n }\n\n return fiber.type.status !== \"resolved\" || fiber.child === undefined;\n}\n\nfunction isSuspendedSuspenseFiber(fiber: Fiber): boolean {\n return (\n fiber.tag === \"suspense\" &&\n (fiber.memoizedState as SuspenseFiberState | undefined)?.didSuspend === true\n );\n}\n\nfunction findReactSuspenseBoundary(\n previousNodes: readonly Node[],\n): ReactSuspenseBoundary | undefined {\n const startIndex = previousNodes.findIndex(isReactSuspenseStartComment);\n\n if (startIndex < 0) {\n return undefined;\n }\n\n let depth = 0;\n\n for (let index = startIndex; index < previousNodes.length; index += 1) {\n const node = previousNodes[index];\n\n if (isReactSuspenseStartComment(node)) {\n depth += 1;\n continue;\n }\n\n if (isReactSuspenseEndComment(node)) {\n depth -= 1;\n\n if (depth === 0) {\n const start = previousNodes[startIndex] as Comment;\n const boundaryNodes = previousNodes.slice(startIndex + 1, index);\n const boundary: ReactSuspenseBoundary = {\n consumed: index - startIndex + 1,\n ...readReactSuspenseServerError(start, boundaryNodes),\n };\n\n if (!isReactSuspenseErrorStartComment(start)) {\n boundary.previousNodes = isReactSuspensePendingStartComment(start)\n ? removeReactSuspensePendingTemplate(boundaryNodes)\n : boundaryNodes;\n }\n\n return boundary;\n }\n }\n }\n\n return undefined;\n}\n\nfunction isReactSuspenseStartComment(node: Node | undefined): node is Comment {\n return node instanceof Comment && reactSuspenseStartComments.has(node.data);\n}\n\nfunction isReactSuspensePendingStartComment(node: Comment): boolean {\n return node.data === \"$?\" || node.data === \"$!\";\n}\n\nfunction isReactSuspenseErrorStartComment(node: Comment): boolean {\n return node.data === \"$!\";\n}\n\nfunction isReactSuspenseEndComment(node: Node | undefined): node is Comment {\n return node instanceof Comment && node.data === \"/$\";\n}\n\nfunction removeReactSuspensePendingTemplate(nodes: readonly Node[]): Node[] {\n const [firstNode, ...remainingNodes] = nodes;\n\n return firstNode instanceof HTMLTemplateElement\n ? remainingNodes\n : [...nodes];\n}\n\nconst reactSuspenseStartComments = new Set([\"$\", \"$?\", \"$!\"]);\n\nfunction readReactSuspenseServerError(\n start: Comment,\n boundaryNodes: readonly Node[],\n): { serverError: { message: string; componentStack?: string } } | {} {\n if (start.data !== \"$!\") {\n return {};\n }\n\n const template = boundaryNodes[0];\n const message =\n template instanceof HTMLTemplateElement\n ? template.getAttribute(\"data-msg\")\n : null;\n const componentStack =\n template instanceof HTMLTemplateElement\n ? template.getAttribute(\"data-stck\")\n : null;\n\n return {\n serverError: {\n message: message ?? \"React Suspense server rendering error.\",\n ...(componentStack === null ? {} : { componentStack }),\n },\n };\n}\n\nfunction createPortalFiber(\n parent: Fiber,\n current: Fiber | undefined,\n portal: ReactCompatPortal,\n key: string | undefined,\n runtime: RootRuntime | undefined,\n path: string,\n options: FiberHydrationOptions = {},\n): FiberReconcileResult {\n if (runtime === undefined) {\n return { fiber: undefined, consumed: 0 };\n }\n\n runtime.portalContainers.add(portal.container);\n const fiber =\n current?.tag === \"portal\" && current.stateNode === portal.container\n ? createWorkInProgress(current, portal.children)\n : createFiber(\"portal\", portal.children, key);\n fiber.stateNode = portal.container;\n const childResult = reconcileHostChild(\n fiber,\n current?.tag === \"portal\" ? current.child : undefined,\n portal.children,\n runtime,\n `${path}.portal`,\n { ...options, documentRef: portal.container.ownerDocument },\n );\n fiber.child = childResult.fiber;\n fiber.return = parent;\n return { fiber, consumed: childResult.consumed };\n}\n\nfunction normalizeChildren(node: ReactCompatNode): ReactCompatNode[] {\n if (node === null || node === undefined || typeof node === \"boolean\") {\n return [];\n }\n\n return Array.isArray(node) ? node : [node];\n}\n\nfunction getDocumentRef(options: FiberHydrationOptions): Document {\n return options.documentRef ?? document;\n}\n\nfunction collectExistingKeyedFibers(\n firstChild: Fiber | undefined,\n): Map<string, Fiber> {\n const keyed = new Map<string, Fiber>();\n let cursor = firstChild;\n\n while (cursor !== undefined) {\n if (cursor.key !== undefined) {\n keyed.set(cursor.key, cursor);\n }\n\n cursor = cursor.sibling;\n }\n\n return keyed;\n}\n\nfunction getNodeKey(node: ReactCompatNode): string | undefined {\n return isReactCompatElement(node) && node.key !== null ? node.key : undefined;\n}\n\nfunction hasKeyedChild(children: readonly ReactCompatNode[]): boolean {\n for (const child of children) {\n if (getNodeKey(child) !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction getNodePathSegment(node: ReactCompatNode, index: number): string {\n const key = getNodeKey(node);\n return key === undefined ? String(index) : `k:${key}`;\n}\n\nfunction getReconcileChildPath(\n path: string,\n node: ReactCompatNode,\n index: number,\n options: FiberHydrationOptions,\n): string {\n if (!shouldTrackReconcilePath(node, options)) {\n return \"\";\n }\n\n return joinPath(path, getNodePathSegment(node, index));\n}\n\nfunction shouldTrackReconcilePath(\n node: ReactCompatNode,\n options: FiberHydrationOptions,\n): boolean {\n if (\n options.previousNodes !== undefined ||\n options.hydration?.onRecoverableError !== undefined ||\n options.resumeId !== undefined\n ) {\n return true;\n }\n\n return !isHostElementWithDirectTextChild(node);\n}\n\nfunction isHostElementWithDirectTextChild(node: ReactCompatNode): boolean {\n return (\n isReactCompatElement(node) &&\n typeof node.type === \"string\" &&\n getDirectHostTextChild(node.props.children) !== undefined\n );\n}\n\nfunction getRootCommitPath(options: RenderOptions): string {\n return options.hydration?.onRecoverableError === undefined ? SKIP_COMMIT_PATH : \"0\";\n}\n\nfunction joinCommitPath(path: string, segment: string): string {\n return path === SKIP_COMMIT_PATH ? \"\" : joinPath(path, segment);\n}\n\nfunction getComponentName(component: Function): string {\n return component.name === \"\" ? \"Anonymous\" : component.name;\n}\n\nfunction joinPath(path: string, segment: string): string {\n return path === \"\" ? segment : `${path}.${segment}`;\n}\n\nfunction isForwardRefType(\n value: unknown,\n): value is {\n $$typeof: typeof FORWARD_REF_TYPE;\n render: (props: Record<string, unknown>, ref: unknown) => ReactCompatNode;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === FORWARD_REF_TYPE\n );\n}\n\nfunction isMemoType(\n value: unknown,\n): value is {\n $$typeof: typeof MEMO_TYPE;\n type: ReactCompatElement[\"type\"];\n compare?: (\n previous: Record<string, unknown>,\n next: Record<string, unknown>,\n ) => boolean;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === MEMO_TYPE\n );\n}\n\nfunction isLazyType(\n value: unknown,\n): value is {\n $$typeof: typeof LAZY_TYPE;\n load: () => Promise<{ default: ReactCompatElement[\"type\"] }>;\n status: \"uninitialized\" | \"pending\" | \"resolved\" | \"rejected\";\n promise?: Promise<void>;\n resolved?: ReactCompatElement[\"type\"];\n error?: unknown;\n} {\n return (\n typeof value === \"object\" &&\n value !== null &&\n (value as { $$typeof?: unknown }).$$typeof === LAZY_TYPE\n );\n}\n\nfunction collectInstanceKeys(runtime: RootRuntime, prefix: string): string[] {\n return collectRuntimeInstanceKeys(runtime, prefix);\n}\n\nfunction markActiveInstanceKeys(runtime: RootRuntime, keys: readonly string[]): void {\n for (const key of keys) {\n runtime.activeInstanceKeys?.add(key);\n }\n}\n\nfunction hasDirtyInstance(\n runtime: RootRuntime | undefined,\n keys: readonly string[],\n prefix?: string,\n): boolean {\n if (runtime === undefined) {\n return false;\n }\n\n if (hasDirtyClassUpdate(runtime, keys, prefix)) {\n return true;\n }\n\n if (keys.some(\n (key) =>\n (runtime.instances.get(key) as { dirty?: boolean } | undefined)?.dirty === true,\n )) {\n return true;\n }\n\n if (prefix === undefined) {\n return false;\n }\n\n for (const [key, instance] of runtime.instances) {\n if (\n (key === prefix || key.startsWith(`${prefix}.`)) &&\n (instance as { dirty?: boolean }).dirty === true\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction hasUnflushedMountEffectInstance(runtime: RootRuntime, keys: readonly string[]): boolean {\n return keys.some((key) => {\n const instance = runtime.instances.get(key) as\n | { hooks?: readonly ({ kind?: string; mounted?: boolean; disposed?: boolean } | undefined)[] }\n | undefined;\n\n return instance?.hooks?.some(\n (slot) =>\n slot?.kind === \"effect\" &&\n slot.disposed !== true &&\n slot.mounted !== true,\n ) === true;\n });\n}\n\nfunction applyRef(ref: unknown, node: unknown): void {\n if (typeof ref === \"function\") {\n ref(node);\n return;\n }\n\n if (typeof ref === \"object\" && ref !== null && \"current\" in ref) {\n (ref as { current: unknown }).current = node;\n }\n}\n\nfunction applyChangedRef(previousRef: unknown, nextRef: unknown, node: unknown): void {\n if (Object.is(previousRef, nextRef)) {\n return;\n }\n\n applyRef(previousRef, null);\n applyRef(nextRef, node);\n}\n"]}
|