{"version":3,"file":"crank.cjs","sources":["../src/crank.ts"],"sourcesContent":["import {\n\tCustomEventTarget,\n\taddEventTargetDelegates,\n\tclearEventListeners,\n\tremoveEventTargetDelegates,\n} from \"./event-target.js\";\nimport {\n\tarrayify,\n\tisIteratorLike,\n\tisPromiseLike,\n\tmarkStart,\n\tmeasureMark,\n\tsafeRace,\n\tsetProfiling,\n\tunwrap,\n\twrap,\n} from \"./_utils.js\";\n\nconst NOOP = (): undefined => {};\n\n/**\n * A type which represents all valid values for an element tag.\n */\nexport type Tag = string | symbol | Component;\n\nfunction getTagName(tag: Tag): string {\n\treturn typeof tag === \"function\"\n\t\t? tag.name || \"Anonymous\"\n\t\t: typeof tag === \"string\"\n\t\t\t? tag\n\t\t\t: // tag is symbol, using else branch to avoid typeof tag === \"symbol\"\n\t\t\t\ttag.description || \"Anonymous\";\n}\n\n/**\n * A helper type to map the tag of an element to its expected props.\n *\n * @template TTag - The tag associated with the props. Can be a string, symbol\n * or a component function.\n */\nexport type TagProps<TTag extends Tag> = TTag extends string\n\t? JSX.IntrinsicElements[TTag]\n\t: TTag extends Component<infer TProps>\n\t\t? TProps & JSX.IntrinsicAttributes\n\t\t: Record<string, unknown> & JSX.IntrinsicAttributes;\n\n/**\n * Describes all valid values of an element tree, excluding iterables.\n *\n * Arbitrary objects can also be safely rendered, but will be converted to a\n * string using the toString() method. We exclude them from this type to catch\n * potential mistakes.\n */\nexport type Child = Element | string | number | boolean | null | undefined;\n\n/**\n * An arbitrarily nested iterable of Child values.\n *\n * We use a recursive interface here rather than making the Children type\n * directly recursive because recursive type aliases were added in TypeScript\n * 3.7.\n *\n * You should avoid referencing this type directly, as it is mainly exported to\n * prevent TypeScript errors.\n */\nexport interface ChildIterable extends Iterable<Child | ChildIterable> {}\n\n/**\n * Describes all valid values for an element tree, including arbitrarily nested\n * iterables of such values.\n *\n * This type can be used to represent the type of the children prop for an\n * element or the return/yield type of a component.\n */\nexport type Children = Child | ChildIterable;\n\n/**\n * Represents all functions which can be used as a component.\n *\n * @template [TProps=*] - The expected props for the component.\n */\nexport type Component<TProps extends Record<string, unknown> = any> = (\n\tthis: Context<TProps>,\n\tprops: TProps,\n\tctx: Context<TProps>,\n) =>\n\t| Children\n\t| PromiseLike<Children>\n\t// The return type of iterators must include void because TypeScript will\n\t// infer generators which return implicitly as having a void return type.\n\t| Iterator<Children, Children | void, any>\n\t| AsyncIterator<Children, Children | void, any>;\n\n/*** SPECIAL TAGS ***/\n/**\n * A special tag for grouping multiple children within the same parent.\n *\n * All non-string iterables which appear in the element tree are implicitly\n * wrapped in a fragment element.\n *\n * This tag is just the empty string, and you can use the empty string in\n * createElement calls or transpiler options directly to avoid having to\n * reference this export.\n */\nexport const Fragment = \"\";\nexport type Fragment = typeof Fragment;\n\n// TODO: We assert the following symbol tags as Components because TypeScript\n// support for symbol tags in JSX doesn't exist yet.\n// https://github.com/microsoft/TypeScript/issues/38367\n\n/**\n * A special tag for rendering into a new root node via a root prop.\n *\n * This tag is useful for creating element trees with multiple roots, for\n * things like modals or tooltips.\n *\n * Renderer.prototype.render() implicitly wraps top-level in a Portal element\n * with the root set to the second argument passed in.\n */\nexport const Portal = Symbol.for(\"crank.Portal\") as unknown as Component<{\n\troot?: object;\n}> &\n\tsymbol;\nexport type Portal = typeof Portal;\n\n/**\n * A special tag which preserves whatever was previously rendered in the\n * element's position.\n *\n * Copy elements are useful for when you want to prevent a subtree from\n * rerendering as a performance optimization. Copy elements can also be keyed,\n * in which case the previously rendered keyed element will be copied.\n */\nexport const Copy = Symbol.for(\"crank.Copy\") as unknown as Component<{}> &\n\tsymbol;\nexport type Copy = typeof Copy;\n\n/**\n * A special tag for rendering text nodes.\n *\n * Strings in the element tree are implicitly wrapped in a Text element with\n * value set to the string.\n */\nexport const Text = Symbol.for(\"crank.Text\") as unknown as Component<{\n\tvalue: string;\n}> &\n\tsymbol;\nexport type Text = typeof Text;\n\n/** A special tag for injecting raw nodes or strings via a value prop. */\nexport const Raw = Symbol.for(\"crank.Raw\") as unknown as Component<{\n\tvalue: string | object;\n}> &\n\tsymbol;\nexport type Raw = typeof Raw;\n\n/**\n * A type to keep track of keys. Any value can be a key, though null and\n * undefined are ignored.\n */\ntype Key = unknown;\n\ntype ChildrenIteratorResult = IteratorResult<Children, Children | void>;\n\nconst ElementSymbol = Symbol.for(\"crank.Element\");\n\n// To maximize compatibility between Crank versions, starting with 0.2.0, any\n// changes to the Element properties will be considered a breaking change.\nexport interface Element<TTag extends Tag = Tag> {\n\t/**\n\t * @internal\n\t * A unique symbol to identify elements as elements across versions and\n\t * realms, and to protect against basic injection attacks.\n\t * https://overreacted.io/why-do-react-elements-have-typeof-property/\n\t *\n\t * This property is defined on the element prototype rather than per\n\t * instance, because it is the same for every Element.\n\t */\n\t$$typeof: typeof ElementSymbol;\n\n\t/**\n\t * The tag of the element. Can be a string, symbol or function.\n\t */\n\ttag: TTag;\n\n\t/**\n\t * An object containing the \"properties\" of an element. These correspond to\n\t * the attribute syntax from JSX.\n\t */\n\tprops: TagProps<TTag>;\n}\n\n/**\n * Elements are the basic building blocks of Crank applications. They are\n * JavaScript objects which are interpreted by special classes called renderers\n * to produce and manage stateful nodes.\n *\n * @template {Tag} [TTag=Tag] - The type of the tag of the element.\n *\n * @example\n * // specific element types\n * let div: Element<\"div\">;\n * let portal: Element<Portal>;\n * let myEl: Element<MyComponent>;\n *\n * // general element types\n * let host: Element<string | symbol>;\n * let component: Element<Component>;\n *\n * Typically, you use a helper function like createElement to create elements\n * rather than instatiating this class directly.\n */\nexport class Element<TTag extends Tag = Tag> {\n\tconstructor(tag: TTag, props: TagProps<TTag>) {\n\t\tthis.tag = tag;\n\t\tthis.props = props;\n\t}\n}\n\n// See Element interface\nElement.prototype.$$typeof = ElementSymbol;\n\nexport function isElement(value: any): value is Element {\n\treturn value != null && value.$$typeof === ElementSymbol;\n}\n\nconst DEPRECATED_PROP_PREFIXES = [\"crank-\", \"c-\", \"$\"];\n\nconst DEPRECATED_SPECIAL_PROP_BASES = [\"key\", \"ref\", \"static\", \"copy\"];\n/**\n * Creates an element with the specified tag, props and children.\n *\n * This function is usually used as a transpilation target for JSX transpilers,\n * but it can also be called directly. It additionally extracts special props so\n * they aren't accessible to renderer methods or components, and assigns the\n * children prop according to any additional arguments passed to the function.\n */\nexport function createElement<TTag extends Tag>(\n\ttag: TTag,\n\tprops?: TagProps<TTag> | null | undefined,\n\t...children: Array<unknown>\n): Element<TTag> {\n\tif (props == null) {\n\t\tprops = {} as TagProps<TTag>;\n\t}\n\n\tif (\"static\" in (props as TagProps<TTag>)) {\n\t\tconsole.error(`The \\`static\\` prop is deprecated. Use \\`copy\\` instead.`);\n\t\t(props as TagProps<TTag>)[\"copy\"] = (props as TagProps<TTag>)[\"static\"];\n\t\tdelete (props as any)[\"static\"];\n\t}\n\n\tfor (let i = 0; i < DEPRECATED_PROP_PREFIXES.length; i++) {\n\t\tconst propPrefix = DEPRECATED_PROP_PREFIXES[i];\n\t\tfor (let j = 0; j < DEPRECATED_SPECIAL_PROP_BASES.length; j++) {\n\t\t\tconst propBase = DEPRECATED_SPECIAL_PROP_BASES[j];\n\t\t\tconst deprecatedPropName = propPrefix + propBase;\n\t\t\tif (deprecatedPropName in (props as TagProps<TTag>)) {\n\t\t\t\tconst targetPropBase = propBase === \"static\" ? \"copy\" : propBase;\n\t\t\t\tconsole.error(\n\t\t\t\t\t`The \\`${deprecatedPropName}\\` prop is deprecated. Use \\`${targetPropBase}\\` instead.`,\n\t\t\t\t);\n\t\t\t\t(props as TagProps<TTag>)[targetPropBase] = (props as TagProps<TTag>)[\n\t\t\t\t\tdeprecatedPropName\n\t\t\t\t];\n\t\t\t\tdelete (props as any)[deprecatedPropName];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (children.length > 1) {\n\t\t(props as TagProps<TTag>).children = children;\n\t} else if (children.length === 1) {\n\t\t(props as TagProps<TTag>).children = children[0];\n\t}\n\n\treturn new Element(tag, props as TagProps<TTag>);\n}\n\n/** Clones a given element, shallowly copying the props object. */\nexport function cloneElement<TTag extends Tag>(\n\tel: Element<TTag>,\n): Element<TTag> {\n\tif (!isElement(el)) {\n\t\tthrow new TypeError(`Cannot clone non-element: ${String(el)}`);\n\t}\n\n\treturn new Element(el.tag, {...el.props});\n}\n\n/*** ELEMENT UTILITIES ***/\n\n// WHAT ARE WE DOING TO THE CHILDREN???\n/**\n * All values in the element tree are narrowed from the union in Child to\n * NarrowedChild during rendering, to simplify element diffing.\n */\ntype NarrowedChild = Element | string | undefined;\n\nfunction narrow(value: Children): NarrowedChild {\n\tif (typeof value === \"boolean\" || value == null) {\n\t\treturn;\n\t} else if (typeof value === \"string\" || isElement(value)) {\n\t\treturn value;\n\t} else if (typeof (value as any)[Symbol.iterator] === \"function\") {\n\t\treturn createElement(Fragment, null, value);\n\t}\n\n\treturn value.toString();\n}\n\n/**\n * A helper type which repesents all possible rendered values of an element.\n *\n * @template TNode - The type of node produced by the associated renderer.\n *\n * When asking the question, what is the \"value\" of a specific element, the\n * answer varies depending on the tag:\n *\n * For intrinsic elements, the value is the node created for the element, e.g.\n * the DOM node in the case of the DOMRenderer.\n *\n * For portals, the value is undefined, because a Portal element's root and\n * children are opaque to its parent.\n *\n * For component or fragment elements the value can be a node or an array of\n * nodes, depending on how many children they have.\n */\nexport type ElementValue<TNode> = Array<TNode> | TNode | undefined;\n\n/*** RETAINER FLAGS ***/\nconst DidDiff = 1 << 0;\nconst DidCommit = 1 << 1;\nconst IsCopied = 1 << 2;\nconst IsUpdating = 1 << 3;\nconst IsExecuting = 1 << 4;\nconst IsRefreshing = 1 << 5;\nconst IsScheduling = 1 << 6;\nconst IsSchedulingFallback = 1 << 7;\nconst IsUnmounted = 1 << 8;\n// TODO: Is this flag still necessary or can we use IsUnmounted?\nconst IsErrored = 1 << 9;\nconst IsResurrecting = 1 << 10;\n// TODO: Maybe we can get rid of IsSyncGen and IsAsyncGen\nconst IsSyncGen = 1 << 11;\nconst IsAsyncGen = 1 << 12;\nconst IsInForOfLoop = 1 << 13;\nconst IsInForAwaitOfLoop = 1 << 14;\nconst NeedsToYield = 1 << 15;\nconst PropsAvailable = 1 << 16;\nconst IsSchedulingRefresh = 1 << 17;\n\nfunction getFlag(ret: Retainer<unknown>, flag: number): boolean {\n\treturn !!(ret.f & flag);\n}\n\nfunction setFlag(ret: Retainer<unknown>, flag: number, value = true): void {\n\tif (value) {\n\t\tret.f |= flag;\n\t} else {\n\t\tret.f &= ~flag;\n\t}\n}\n\n/**\n * @internal\n * Retainers are objects which act as the internal representation of elements,\n * mirroring the element tree.\n */\nclass Retainer<TNode, TScope = unknown> {\n\t/** A bitmask. See RETAINER FLAGS above. */\n\tdeclare f: number;\n\tdeclare el: Element;\n\tdeclare ctx: ContextState<TNode, TScope, any> | undefined;\n\tdeclare children:\n\t\t| Array<Retainer<TNode, TScope> | undefined>\n\t\t| Retainer<TNode, TScope>\n\t\t| undefined;\n\tdeclare fallback: Retainer<TNode, TScope> | undefined;\n\t// This is only assigned for host, text and raw elements.\n\tdeclare value: ElementValue<TNode> | undefined;\n\tdeclare scope: TScope | undefined;\n\t// This is only assigned for host and raw elements.\n\tdeclare oldProps: Record<string, any> | undefined;\n\tdeclare pendingDiff: Promise<undefined> | undefined;\n\tdeclare onNextDiff: Function | undefined;\n\tdeclare graveyard: Array<Retainer<TNode, TScope>> | undefined;\n\tdeclare lingerers:\n\t\t| Array<Set<Retainer<TNode, TScope>> | undefined>\n\t\t| undefined;\n\n\tconstructor(el: Element) {\n\t\tthis.f = 0;\n\t\tthis.el = el;\n\t\tthis.ctx = undefined;\n\t\tthis.children = undefined;\n\t\tthis.fallback = undefined;\n\t\tthis.value = undefined;\n\t\tthis.oldProps = undefined;\n\t\tthis.pendingDiff = undefined;\n\t\tthis.onNextDiff = undefined;\n\t\tthis.graveyard = undefined;\n\t\tthis.lingerers = undefined;\n\t}\n}\n\nfunction cloneRetainer<TNode, TScope>(\n\tret: Retainer<TNode, TScope>,\n): Retainer<TNode, TScope> {\n\tconst clone = new Retainer<TNode, TScope>(ret.el);\n\tclone.f = ret.f;\n\tclone.ctx = ret.ctx;\n\tclone.children = ret.children;\n\tclone.fallback = ret.fallback;\n\tclone.value = ret.value;\n\tclone.scope = ret.scope;\n\tclone.oldProps = ret.oldProps;\n\tclone.pendingDiff = ret.pendingDiff;\n\tclone.onNextDiff = ret.onNextDiff;\n\tclone.graveyard = ret.graveyard;\n\tclone.lingerers = ret.lingerers;\n\n\treturn clone;\n}\n\n/**\n * Finds the value of the element according to its type.\n *\n * @returns A node, an array of nodes or undefined.\n */\nfunction getValue<TNode>(\n\tret: Retainer<TNode>,\n\tisNested = false,\n\tindex?: number,\n): ElementValue<TNode> {\n\tif (getFlag(ret, IsScheduling) && isNested) {\n\t\treturn ret.fallback ? getValue(ret.fallback, isNested, index) : undefined;\n\t} else if (ret.fallback && !getFlag(ret, DidDiff)) {\n\t\treturn ret.fallback\n\t\t\t? getValue(ret.fallback, isNested, index)\n\t\t\t: ret.fallback;\n\t} else if (ret.el.tag === Portal) {\n\t\treturn;\n\t} else if (ret.el.tag === Fragment || typeof ret.el.tag === \"function\") {\n\t\tif (index != null && ret.ctx) {\n\t\t\tret.ctx.index = index;\n\t\t}\n\t\treturn unwrap(getChildValues(ret, index));\n\t}\n\n\treturn ret.value;\n}\n\n/**\n * Walks an element's children to find its child values.\n *\n * @param ret - The retainer whose child values we are reading.\n * @param startIndex - Starting index to thread through for context index updates.\n *\n * @returns An array of nodes.\n */\nfunction getChildValues<TNode>(\n\tret: Retainer<TNode>,\n\tstartIndex?: number,\n): Array<TNode> {\n\tconst values: Array<TNode> = [];\n\tconst lingerers = ret.lingerers;\n\tconst rawChildren = ret.children;\n\tconst isChildrenArray = Array.isArray(rawChildren);\n\tconst childrenLength =\n\t\trawChildren === undefined\n\t\t\t? 0\n\t\t\t: isChildrenArray\n\t\t\t\t? (rawChildren as Array<any>).length\n\t\t\t\t: 1;\n\tlet currentIndex = startIndex;\n\n\tfor (let i = 0; i < childrenLength; i++) {\n\t\tif (lingerers != null && lingerers[i] != null) {\n\t\t\tconst rets = lingerers[i]!;\n\t\t\tfor (const ret of rets) {\n\t\t\t\tconst value = getValue(ret, true, currentIndex);\n\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\tfor (let j = 0; j < value.length; j++) {\n\t\t\t\t\t\tvalues.push(value[j]);\n\t\t\t\t\t}\n\t\t\t\t\tif (currentIndex != null) {\n\t\t\t\t\t\tcurrentIndex += value.length;\n\t\t\t\t\t}\n\t\t\t\t} else if (value) {\n\t\t\t\t\tvalues.push(value);\n\t\t\t\t\tif (currentIndex != null) {\n\t\t\t\t\t\tcurrentIndex++;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst child = isChildrenArray\n\t\t\t? (rawChildren as Array<Retainer<TNode> | undefined>)[i]\n\t\t\t: (rawChildren as Retainer<TNode>);\n\t\tif (child) {\n\t\t\tconst value = getValue(child, true, currentIndex);\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tfor (let j = 0; j < value.length; j++) {\n\t\t\t\t\tvalues.push(value[j]);\n\t\t\t\t}\n\t\t\t\tif (currentIndex != null) {\n\t\t\t\t\tcurrentIndex += value.length;\n\t\t\t\t}\n\t\t\t} else if (value) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tif (currentIndex != null) {\n\t\t\t\t\tcurrentIndex++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tif (lingerers != null && lingerers.length > childrenLength) {\n\t\tfor (let i = childrenLength; i < lingerers.length; i++) {\n\t\t\tconst rets = lingerers[i];\n\t\t\tif (rets != null) {\n\t\t\t\tfor (const ret of rets) {\n\t\t\t\t\tconst value = getValue(ret, true, currentIndex);\n\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\tfor (let j = 0; j < value.length; j++) {\n\t\t\t\t\t\t\tvalues.push(value[j]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (currentIndex != null) {\n\t\t\t\t\t\t\tcurrentIndex += value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (value) {\n\t\t\t\t\t\tvalues.push(value);\n\t\t\t\t\t\tif (currentIndex != null) {\n\t\t\t\t\t\t\tcurrentIndex++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn values;\n}\n\nfunction stripSpecialProps(props: Record<string, any>): Record<string, any> {\n\tlet _: unknown;\n\tlet result: Record<string, any>;\n\t({key: _, ref: _, copy: _, hydrate: _, children: _, ...result} = props);\n\treturn result;\n}\n\n/**\n * Interface for adapting the rendering process to a specific target environment.\n *\n * The RenderAdapter defines how Crank elements are mapped to nodes in your target\n * rendering environment (DOM, Canvas, WebGL, Terminal, etc.). Each method handles\n * a specific part of the element lifecycle, from creation to removal.\n *\n * @template TNode - The type representing a node in your target environment\n * @template TScope - Additional context data passed down the component tree\n * @template TRoot - The type of the root container (defaults to TNode)\n * @template TResult - The type returned when reading element values (defaults to ElementValue<TNode>)\n *\n * @example\n * ```typescript\n * const adapter: RenderAdapter<MyNode, MyScope> = {\n *   create: ({ tag, props }) => new MyNode(tag, props),\n *   patch: ({ node, props }) => node.update(props),\n *   arrange: ({ node, children }) => node.replaceChildren(children),\n *   // ... other methods\n * };\n * ```\n */\nexport interface RenderAdapter<\n\tTNode,\n\tTScope,\n\tTRoot extends TNode | undefined = TNode,\n\tTResult = ElementValue<TNode>,\n> {\n\t/**\n\t * Creates a new node for the given element tag and props.\n\t *\n\t * This method is called when Crank encounters a new element that needs to be\n\t * rendered for the first time. You should create and return a node appropriate\n\t * for your target environment.\n\t *\n\t * @param data.tag - The element tag (e.g., \"div\", \"sprite\", or a symbol)\n\t * @param data.tagName - String representation of the tag for debugging\n\t * @param data.props - The element's props object\n\t * @param data.scope - Current scope context (can be undefined)\n\t * @returns A new node instance\n\t *\n\t * @example\n\t * ```typescript\n\t * create: ({ tag, props, scope }) => {\n\t *   if (tag === \"sprite\") {\n\t *     return new PIXI.Sprite(props.texture);\n\t *   }\n\t *   throw new Error(`Unknown tag: ${tag}`);\n\t * }\n\t * ```\n\t */\n\tcreate(data: {\n\t\ttag: string | symbol;\n\t\ttagName: string;\n\t\tprops: Record<string, any>;\n\t\tscope: TScope | undefined;\n\t\troot: TRoot | undefined;\n\t}): TNode;\n\n\t/**\n\t * Adopts existing nodes during hydration.\n\t *\n\t * Called when hydrating server-rendered content or reusing existing nodes.\n\t * Should return an array of child nodes if the provided node matches the\n\t * expected tag, or undefined if hydration should fail.\n\t *\n\t * @param data.tag - The element tag being hydrated\n\t * @param data.tagName - String representation of the tag\n\t * @param data.props - The element's props\n\t * @param data.node - The existing node to potentially adopt\n\t * @param data.scope - Current scope context\n\t * @returns Array of child nodes to hydrate, or undefined if adoption fails\n\t *\n\t * @example\n\t * ```typescript\n\t * adopt: ({ tag, node }) => {\n\t *   if (node && node.tagName.toLowerCase() === tag) {\n\t *     return Array.from(node.children);\n\t *   }\n\t *   return undefined; // Hydration mismatch\n\t * }\n\t * ```\n\t */\n\tadopt(data: {\n\t\ttag: string | symbol;\n\t\ttagName: string;\n\t\tprops: Record<string, any>;\n\t\tnode: TNode | undefined;\n\t\tscope: TScope | undefined;\n\t\troot: TRoot | undefined;\n\t}): Array<TNode> | undefined;\n\n\t/**\n\t * Creates or updates a text node.\n\t *\n\t * Called when rendering text content. Should create a new text node or\n\t * update an existing one with the provided value.\n\t *\n\t * @param data.value - The text content to render\n\t * @param data.scope - Current scope context\n\t * @param data.oldNode - Previous text node to potentially reuse\n\t * @param data.hydrationNodes - Nodes available during hydration\n\t * @returns A text node containing the given value\n\t *\n\t * @example\n\t * ```typescript\n\t * text: ({ value, oldNode }) => {\n\t *   if (oldNode && oldNode.text !== value) {\n\t *     oldNode.text = value;\n\t *     return oldNode;\n\t *   }\n\t *   return new TextNode(value);\n\t * }\n\t * ```\n\t */\n\ttext(data: {\n\t\tvalue: string;\n\t\tscope: TScope | undefined;\n\t\toldNode: TNode | undefined;\n\t\thydrationNodes: Array<TNode> | undefined;\n\t\troot: TRoot | undefined;\n\t}): TNode;\n\n\t/**\n\t * Computes scope context for child elements.\n\t *\n\t * Called to determine what scope context should be passed to child elements.\n\t * The scope can be used to pass rendering context like theme, coordinate systems,\n\t * or namespaces down the component tree.\n\t *\n\t * @param data.tag - The element tag\n\t * @param data.tagName - String representation of the tag\n\t * @param data.props - The element's props\n\t * @param data.scope - Current scope context\n\t * @returns New scope for children, or undefined to inherit current scope\n\t *\n\t * @example\n\t * ```typescript\n\t * scope: ({ tag, props, scope }) => {\n\t *   if (tag === \"svg\") {\n\t *     return { ...scope, namespace: \"http://www.w3.org/2000/svg\" };\n\t *   }\n\t *   return scope;\n\t * }\n\t * ```\n\t */\n\tscope(data: {\n\t\ttag: string | symbol;\n\t\ttagName: string;\n\t\tprops: Record<string, any>;\n\t\tscope: TScope | undefined;\n\t\troot: TRoot | undefined;\n\t}): TScope | undefined;\n\n\t/**\n\t * Handles raw values (strings or nodes) that bypass normal element processing.\n\t *\n\t * Called when rendering Raw elements or other direct node insertions.\n\t * Should convert string values to appropriate nodes for your environment.\n\t *\n\t * @param data.value - Raw string or node value to render\n\t * @param data.scope - Current scope context\n\t * @param data.hydrationNodes - Nodes available during hydration\n\t * @returns ElementValue that can be handled by arrange()\n\t *\n\t * @example\n\t * ```typescript\n\t * raw: ({ value, scope }) => {\n\t *   if (typeof value === \"string\") {\n\t *     const container = new Container();\n\t *     container.innerHTML = value;\n\t *     return Array.from(container.children);\n\t *   }\n\t *   return value;\n\t * }\n\t * ```\n\t */\n\traw(data: {\n\t\tvalue: string | TNode;\n\t\tscope: TScope | undefined;\n\t\thydrationNodes: Array<TNode> | undefined;\n\t\troot: TRoot | undefined;\n\t}): ElementValue<TNode>;\n\n\t/**\n\t * Updates a node's properties.\n\t *\n\t * Called when element props change. Should efficiently update only the\n\t * properties that have changed. This is where you implement prop-to-attribute\n\t * mapping, event listener binding, and other property synchronization.\n\t *\n\t * @param data.tag - The element tag\n\t * @param data.tagName - String representation of the tag\n\t * @param data.node - The node to update\n\t * @param data.props - New props object\n\t * @param data.oldProps - Previous props object (undefined for initial render)\n\t * @param data.scope - Current scope context\n\t * @param data.copyProps - Props to skip (used for copying between renderers)\n\t * @param data.isHydrating - Whether currently hydrating\n\t * @param data.quietProps - Props to not warn about during hydration\n\t *\n\t * @example\n\t * ```typescript\n\t * patch: ({ node, props, oldProps }) => {\n\t *   for (const [key, value] of Object.entries(props)) {\n\t *     if (oldProps?.[key] !== value) {\n\t *       if (key.startsWith(\"on\")) {\n\t *         node.addEventListener(key.slice(2), value);\n\t *       } else {\n\t *         node[key] = value;\n\t *       }\n\t *     }\n\t *   }\n\t * }\n\t * ```\n\t */\n\tpatch(data: {\n\t\ttag: string | symbol;\n\t\ttagName: string;\n\t\tnode: TNode;\n\t\tprops: Record<string, any>;\n\t\toldProps: Record<string, any> | undefined;\n\t\tscope: TScope | undefined;\n\t\troot: TRoot | undefined;\n\t\tcopyProps: Set<string> | undefined;\n\t\tisHydrating: boolean;\n\t\tquietProps: Set<string> | undefined;\n\t}): void;\n\n\t/**\n\t * Arranges child nodes within their parent.\n\t *\n\t * Called after child elements are rendered to organize them within their\n\t * parent node. Should efficiently insert, move, or remove child nodes to\n\t * match the provided children array.\n\t *\n\t * @param data.tag - The parent element tag\n\t * @param data.tagName - String representation of the tag\n\t * @param data.node - The parent node\n\t * @param data.props - The parent element's props\n\t * @param data.children - Array of child nodes in correct order\n\t * @param data.oldProps - Previous props (for reference)\n\t *\n\t * @example\n\t * ```typescript\n\t * arrange: ({ node, children }) => {\n\t *   // Remove existing children\n\t *   node.removeChildren();\n\t *   // Add new children in order\n\t *   for (const child of children) {\n\t *     node.addChild(child);\n\t *   }\n\t * }\n\t * ```\n\t */\n\tarrange(data: {\n\t\ttag: string | symbol;\n\t\ttagName: string;\n\t\tnode: TNode;\n\t\tprops: Record<string, any>;\n\t\tchildren: Array<TNode>;\n\t\toldProps: Record<string, any> | undefined;\n\t\tscope: TScope | undefined;\n\t\troot: TRoot | undefined;\n\t}): void;\n\n\t/**\n\t * Removes a node from its parent.\n\t *\n\t * Called when an element is being unmounted. Should clean up the node\n\t * and remove it from its parent if appropriate.\n\t *\n\t * @param data.node - The node to remove\n\t * @param data.parentNode - The parent node\n\t * @param data.isNested - Whether this is a nested removal (child of removed element)\n\t *\n\t * @example\n\t * ```typescript\n\t * remove: ({ node, parentNode, isNested }) => {\n\t *   // Clean up event listeners, resources, etc.\n\t *   node.cleanup?.();\n\t *   // Remove from parent unless it's a nested removal\n\t *   if (!isNested && parentNode.contains(node)) {\n\t *     parentNode.removeChild(node);\n\t *   }\n\t * }\n\t * ```\n\t */\n\tremove(data: {\n\t\tnode: TNode;\n\t\tparentNode: TNode;\n\t\tisNested: boolean;\n\t\troot: TRoot | undefined;\n\t}): void;\n\n\t/**\n\t * Reads the final rendered value from an ElementValue.\n\t *\n\t * Called to extract the final result from rendered elements. This allows\n\t * you to transform the internal node representation into the public API\n\t * that users of your renderer will see.\n\t *\n\t * @param value - The ElementValue to read (array, single node, or undefined)\n\t * @returns The public representation of the rendered value\n\t *\n\t * @example\n\t * ```typescript\n\t * read: (value) => {\n\t *   if (Array.isArray(value)) {\n\t *     return value.map(node => node.publicAPI);\n\t *   }\n\t *   return value?.publicAPI;\n\t * }\n\t * ```\n\t */\n\tread(value: ElementValue<TNode>): TResult;\n\n\t/**\n\t * Performs final rendering to the root container.\n\t *\n\t * Called after the entire render cycle is complete. This is where you\n\t * trigger the actual rendering/presentation in your target environment\n\t * (e.g., calling render() on a canvas, flushing to the screen, etc.).\n\t *\n\t * @param root - The root container\n\t *\n\t * @example\n\t * ```typescript\n\t * finalize: (root) => {\n\t *   // Trigger actual rendering\n\t *   if (root instanceof PIXIApplication) {\n\t *     root.render();\n\t *   }\n\t * }\n\t * ```\n\t */\n\tfinalize(root: TRoot): void;\n}\n\nconst defaultAdapter: RenderAdapter<any, any, any, any> = {\n\tcreate() {\n\t\tthrow new Error(\"adapter must implement create\");\n\t},\n\tadopt() {\n\t\tthrow new Error(\"adapter must implement adopt() for hydration\");\n\t},\n\tscope: ({scope}) => scope,\n\tread: (value) => value,\n\ttext: ({value}) => value,\n\traw: ({value}) => value,\n\tpatch: NOOP,\n\tarrange: NOOP,\n\tremove: NOOP,\n\tfinalize: NOOP,\n};\n\n/**\n * An abstract class which is subclassed to render to different target\n * environments. Subclasses call super() with a custom RenderAdapter object.\n * This class is responsible for kicking off the rendering process and caching\n * previous trees by root.\n *\n * @template TNode - The type of the node for a rendering environment.\n * @template TScope - Data which is passed down the tree.\n * @template TRoot - The type of the root for a rendering environment.\n * @template TResult - The type of exposed values.\n */\nexport class Renderer<\n\tTNode extends object,\n\tTScope,\n\tTRoot extends TNode | undefined = TNode,\n\tTResult = ElementValue<TNode>,\n> {\n\t/**\n\t * @internal\n\t * A weakmap which stores element trees by root.\n\t */\n\tdeclare cache: WeakMap<object, Retainer<TNode, TScope>>;\n\tdeclare adapter: RenderAdapter<TNode, TScope, TRoot, TResult>;\n\tconstructor(adapter: Partial<RenderAdapter<TNode, TScope, TRoot, TResult>>) {\n\t\tthis.cache = new WeakMap();\n\t\tthis.adapter = {...defaultAdapter, ...adapter};\n\t}\n\n\t/**\n\t * Renders an element tree into a specific root.\n\t *\n\t * @param children - An element tree. Rendering null deletes cached renders.\n\t * @param root - The root to be rendered into. The renderer caches renders\n\t * per root.\n\t * @param bridge - An optional context that will be the ancestor context of\n\t * all elements in the tree. Useful for connecting different renderers so\n\t * that events/provisions/errors properly propagate. The context for a given\n\t * root must be the same between renders.\n\t *\n\t * @returns The result of rendering the children, or a possible promise of\n\t * the result if the element tree renders asynchronously.\n\t */\n\trender(\n\t\tchildren: Children,\n\t\troot?: TRoot | undefined,\n\t\tbridge?: Context | undefined,\n\t): Promise<TResult> | TResult {\n\t\tconst ret = getRootRetainer(this, bridge, {children, root});\n\t\treturn renderRoot(this.adapter, root, ret, children) as\n\t\t\t| Promise<TResult>\n\t\t\t| TResult;\n\t}\n\n\thydrate(\n\t\tchildren: Children,\n\t\troot: TRoot,\n\t\tbridge?: Context | undefined,\n\t): Promise<TResult> | TResult {\n\t\tconst ret = getRootRetainer(this, bridge, {\n\t\t\tchildren,\n\t\t\troot,\n\t\t\thydrate: true,\n\t\t});\n\t\treturn renderRoot(this.adapter, root, ret, children) as\n\t\t\t| Promise<TResult>\n\t\t\t| TResult;\n\t}\n}\n\n/*** PRIVATE RENDERER FUNCTIONS ***/\nfunction getRootRetainer<\n\tTNode extends object,\n\tTScope,\n\tTRoot extends TNode | undefined,\n>(\n\trenderer: Renderer<TNode, TScope, TRoot, unknown>,\n\tbridge: Context | undefined,\n\t{\n\t\tchildren,\n\t\troot,\n\t\thydrate,\n\t}: {\n\t\tchildren: Children;\n\t\troot: TRoot | undefined;\n\t\thydrate?: boolean;\n\t},\n): Retainer<TNode, TScope> {\n\tlet ret: Retainer<TNode, TScope> | undefined;\n\tconst bridgeCtx = bridge && bridge[_ContextState];\n\tif (typeof root === \"object\" && root !== null) {\n\t\tret = renderer.cache.get(root);\n\t}\n\n\tconst adapter = renderer.adapter;\n\tif (ret === undefined) {\n\t\tret = new Retainer(createElement(Portal, {children, root, hydrate}));\n\t\tret.value = root;\n\t\tret.ctx = bridgeCtx as ContextState<any, any> | undefined;\n\t\tret.scope = adapter.scope({\n\t\t\ttag: Portal,\n\t\t\ttagName: getTagName(Portal),\n\t\t\tprops: stripSpecialProps(ret.el.props),\n\t\t\tscope: undefined,\n\t\t\troot,\n\t\t});\n\t\t// remember that typeof null === \"object\"\n\t\tif (typeof root === \"object\" && root !== null && children != null) {\n\t\t\trenderer.cache.set(root, ret);\n\t\t}\n\t} else if (ret.ctx !== bridgeCtx) {\n\t\tthrow new Error(\n\t\t\t\"A previous call to render() was passed a different context\",\n\t\t);\n\t} else {\n\t\tret.el = createElement(Portal, {children, root, hydrate});\n\t\tif (typeof root === \"object\" && root !== null && children == null) {\n\t\t\trenderer.cache.delete(root);\n\t\t}\n\t}\n\n\treturn ret;\n}\n\nfunction renderRoot<TNode, TScope, TRoot extends TNode | undefined, TResult>(\n\tadapter: RenderAdapter<TNode, TScope, TRoot, TResult>,\n\troot: TRoot | undefined,\n\tret: Retainer<TNode, TScope>,\n\tchildren: Children,\n): Promise<TResult> | TResult {\n\tconst commitLabel = \"commit (\" + getTagName(ret.el.tag) + \")\";\n\tmarkStart(\"diff\");\n\tconst diff = diffChildren(\n\t\tadapter,\n\t\troot,\n\t\tret,\n\t\tret.ctx,\n\t\tret.scope,\n\t\tret,\n\t\tchildren,\n\t);\n\n\tconst schedulePromises: Array<PromiseLike<unknown>> = [];\n\tif (isPromiseLike(diff)) {\n\t\treturn diff.then(() => {\n\t\t\tmeasureMark(\"diff\");\n\t\t\tmarkStart(commitLabel);\n\t\t\tcommit(\n\t\t\t\tadapter,\n\t\t\t\tret,\n\t\t\t\tret,\n\t\t\t\tret.ctx,\n\t\t\t\tret.scope,\n\t\t\t\troot,\n\t\t\t\t0,\n\t\t\t\tschedulePromises,\n\t\t\t\tundefined,\n\t\t\t);\n\t\t\tmeasureMark(commitLabel);\n\t\t\tif (schedulePromises.length > 0) {\n\t\t\t\treturn Promise.all(schedulePromises).then(() => {\n\t\t\t\t\tif (typeof root !== \"object\" || root === null) {\n\t\t\t\t\t\tunmount(adapter, ret, ret.ctx, root, ret, false);\n\t\t\t\t\t}\n\t\t\t\t\treturn adapter.read(unwrap(getChildValues(ret)));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (typeof root !== \"object\" || root === null) {\n\t\t\t\tunmount(adapter, ret, ret.ctx, root, ret, false);\n\t\t\t}\n\t\t\treturn adapter.read(unwrap(getChildValues(ret)));\n\t\t});\n\t}\n\n\tmeasureMark(\"diff\");\n\tmarkStart(commitLabel);\n\tcommit(\n\t\tadapter,\n\t\tret,\n\t\tret,\n\t\tret.ctx,\n\t\tret.scope,\n\t\troot,\n\t\t0,\n\t\tschedulePromises,\n\t\tundefined,\n\t);\n\tmeasureMark(commitLabel);\n\tif (schedulePromises.length > 0) {\n\t\treturn Promise.all(schedulePromises).then(() => {\n\t\t\tif (typeof root !== \"object\" || root === null) {\n\t\t\t\tunmount(adapter, ret, ret.ctx, root, ret, false);\n\t\t\t}\n\t\t\treturn adapter.read(unwrap(getChildValues(ret)));\n\t\t});\n\t}\n\n\tif (typeof root !== \"object\" || root === null) {\n\t\tunmount(adapter, ret, ret.ctx, root, ret, false);\n\t}\n\treturn adapter.read(unwrap(getChildValues(ret)));\n}\n\nfunction diffChild<TNode, TScope, TRoot extends TNode | undefined, TResult>(\n\tadapter: RenderAdapter<TNode, TScope, TRoot, TResult>,\n\troot: TRoot | undefined,\n\thost: Retainer<TNode, TScope>,\n\tctx: ContextState<TNode, TScope, TRoot, TResult> | undefined,\n\tscope: TScope | undefined,\n\tparent: Retainer<TNode, TScope>,\n\tnewChildren: Children,\n): Promise<undefined> | undefined {\n\tlet child = narrow(newChildren);\n\tlet ret = parent.children as Retainer<TNode, TScope> | undefined;\n\tlet graveyard: Array<Retainer<TNode, TScope>> | undefined;\n\tlet diff: Promise<undefined> | undefined;\n\tif (typeof child === \"object\") {\n\t\tlet childCopied = false;\n\t\t// Check key match\n\t\tconst oldKey = typeof ret === \"object\" ? ret.el.props.key : undefined;\n\t\tconst newKey = child.props.key;\n\t\tif (oldKey !== newKey) {\n\t\t\tif (typeof ret === \"object\") {\n\t\t\t\t(graveyard = graveyard || []).push(ret);\n\t\t\t}\n\t\t\tret = undefined;\n\t\t}\n\n\t\tif (child.tag === Copy) {\n\t\t\tchildCopied = true;\n\t\t} else if (\n\t\t\ttypeof ret === \"object\" &&\n\t\t\tret.el === child &&\n\t\t\tgetFlag(ret, DidCommit)\n\t\t) {\n\t\t\tchildCopied = true;\n\t\t} else {\n\t\t\tif (ret && ret.el.tag === child.tag) {\n\t\t\t\tret.el = child;\n\t\t\t\tif (child.props.copy && typeof child.props.copy !== \"string\") {\n\t\t\t\t\tchildCopied = true;\n\t\t\t\t}\n\t\t\t} else if (ret) {\n\t\t\t\tlet candidateFound = false;\n\t\t\t\tfor (\n\t\t\t\t\tlet predecessor = ret, candidate = ret.fallback;\n\t\t\t\t\tcandidate;\n\t\t\t\t\tpredecessor = candidate, candidate = candidate.fallback\n\t\t\t\t) {\n\t\t\t\t\tif (candidate.el.tag === child.tag) {\n\t\t\t\t\t\tconst clone = cloneRetainer(candidate);\n\t\t\t\t\t\tsetFlag(clone, IsResurrecting);\n\t\t\t\t\t\tpredecessor.fallback = clone;\n\t\t\t\t\t\tconst fallback = ret;\n\t\t\t\t\t\tret = candidate;\n\t\t\t\t\t\tret.el = child;\n\t\t\t\t\t\tret.fallback = fallback;\n\t\t\t\t\t\tsetFlag(ret, DidDiff, false);\n\t\t\t\t\t\tcandidateFound = true;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!candidateFound) {\n\t\t\t\t\tconst fallback = ret;\n\t\t\t\t\tret = new Retainer<TNode, TScope>(child);\n\t\t\t\t\tret.fallback = fallback;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tret = new Retainer<TNode, TScope>(child);\n\t\t\t}\n\n\t\t\tif (childCopied && getFlag(ret, DidCommit)) {\n\t\t\t\t// pass\n\t\t\t} else if (child.tag === Raw || child.tag === Text) {\n\t\t\t\t// pass\n\t\t\t} else if (child.tag === Fragment) {\n\t\t\t\tdiff = diffChildren(\n\t\t\t\t\tadapter,\n\t\t\t\t\troot,\n\t\t\t\t\thost,\n\t\t\t\t\tctx,\n\t\t\t\t\tscope,\n\t\t\t\t\tret,\n\t\t\t\t\tret.el.props.children as Children,\n\t\t\t\t);\n\t\t\t} else if (typeof child.tag === \"function\") {\n\t\t\t\tdiff = diffComponent(adapter, root, host, ctx, scope, ret);\n\t\t\t} else {\n\t\t\t\tdiff = diffHost(adapter, root, ctx, scope, ret);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof ret === \"object\") {\n\t\t\tif (childCopied) {\n\t\t\t\tsetFlag(ret, IsCopied);\n\t\t\t\tdiff = getInflightDiff(ret);\n\t\t\t} else {\n\t\t\t\tsetFlag(ret, IsCopied, false);\n\t\t\t}\n\t\t}\n\t} else if (typeof child === \"string\") {\n\t\tif (typeof ret === \"object\" && ret.el.tag === Text) {\n\t\t\tret.el.props.value = child;\n\t\t} else {\n\t\t\tif (typeof ret === \"object\") {\n\t\t\t\t(graveyard = graveyard || []).push(ret);\n\t\t\t}\n\n\t\t\tret = new Retainer<TNode, TScope>(createElement(Text, {value: child}));\n\t\t}\n\t} else {\n\t\tif (typeof ret === \"object\") {\n\t\t\t(graveyard = graveyard || []).push(ret);\n\t\t}\n\n\t\tret = undefined;\n\t}\n\n\tparent.children = ret;\n\tif (isPromiseLike(diff)) {\n\t\tconst diff1 = diff.finally(() => {\n\t\t\tsetFlag(parent, DidDiff);\n\t\t\tif (graveyard) {\n\t\t\t\tif (parent.graveyard) {\n\t\t\t\t\tfor (let i = 0; i < graveyard.length; i++) {\n\t\t\t\t\t\tparent.graveyard.push(graveyard[i]);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tparent.graveyard = graveyard;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tlet onNextDiffs!: Function;\n\t\tconst diff2 = (parent.pendingDiff = safeRace([\n\t\t\tdiff1,\n\t\t\tnew Promise<any>((resolve) => (onNextDiffs = resolve)),\n\t\t]));\n\n\t\tif (parent.onNextDiff) {\n\t\t\tparent.onNextDiff(diff2);\n\t\t}\n\n\t\tparent.onNextDiff = onNextDiffs;\n\t\treturn diff2;\n\t} else {\n\t\tsetFlag(parent, DidDiff);\n\t\tif (graveyard) {\n\t\t\tif (parent.graveyard) {\n\t\t\t\tfor (let i = 0; i < graveyard.length; i++) {\n\t\t\t\t\tparent.graveyard.push(graveyard[i]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tparent.graveyard = graveyard;\n\t\t\t}\n\t\t}\n\n\t\tif (parent.onNextDiff) {\n\t\t\tparent.onNextDiff(diff);\n\t\t\tparent.onNextDiff = undefined;\n\t\t}\n\n\t\tparent.pendingDiff = undefined;\n\t}\n}\n\nfunction diffChildren<TNode, TScope, TRoot extends TNode | undefined, TResult>(\n\tadapter: RenderAdapter<TNode, TScope, TRoot, TResult>,\n\troot: TRoot | undefined,\n\thost: Retainer<TNode, TScope>,\n\tctx: ContextState<TNode, TScope, TRoot, TResult> | undefined,\n\tscope: TScope | undefined,\n\tparent: Retainer<TNode, TScope>,\n\tnewChildren: Children,\n): Promise<undefined> | undefined {\n\t// Fast path for the common single non-keyed child case\n\tif (\n\t\t!Array.isArray(newChildren) &&\n\t\t(typeof newChildren !== \"object\" ||\n\t\t\tnewChildren === null ||\n\t\t\ttypeof (newChildren as any)[Symbol.iterator] !== \"function\") &&\n\t\t!Array.isArray(parent.children)\n\t) {\n\t\treturn diffChild(adapter, root, host, ctx, scope, parent, newChildren);\n\t}\n\n\tconst oldRetained = wrap(parent.children);\n\tconst newRetained: typeof oldRetained = [];\n\tconst newChildren1 = arrayify(newChildren);\n\tconst diffs: Array<Promise<undefined> | undefined> = [];\n\tlet childrenByKey: Map<Key, Retainer<TNode, TScope>> | undefined;\n\tlet seenKeys: Set<Key> | undefined;\n\tlet isAsync = false;\n\tlet oi = 0;\n\tlet oldLength = oldRetained.length;\n\tlet graveyard: Array<Retainer<TNode, TScope>> | undefined;\n\tfor (let ni = 0, newLength = newChildren1.length; ni < newLength; ni++) {\n\t\t// length checks to prevent index out of bounds deoptimizations.\n\t\tlet ret = oi >= oldLength ? undefined : oldRetained[oi];\n\t\tlet child = narrow(newChildren1[ni]);\n\t\t{\n\t\t\t// aligning new children with old retainers\n\t\t\tlet oldKey = typeof ret === \"object\" ? ret.el.props.key : undefined;\n\t\t\tlet newKey = typeof child === \"object\" ? child.props.key : undefined;\n\t\t\tif (newKey !== undefined && seenKeys && seenKeys.has(newKey)) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t`Duplicate key found in <${getTagName(parent.el.tag)}>`,\n\t\t\t\t\tnewKey,\n\t\t\t\t);\n\t\t\t\tchild = cloneElement(child as Element);\n\t\t\t\tnewKey = child.props.key = undefined;\n\t\t\t}\n\n\t\t\tif (oldKey === newKey) {\n\t\t\t\tif (childrenByKey !== undefined && newKey !== undefined) {\n\t\t\t\t\tchildrenByKey.delete(newKey);\n\t\t\t\t}\n\n\t\t\t\toi++;\n\t\t\t} else {\n\t\t\t\tchildrenByKey = childrenByKey || createChildrenByKey(oldRetained, oi);\n\t\t\t\tif (newKey === undefined) {\n\t\t\t\t\twhile (ret !== undefined && oldKey !== undefined) {\n\t\t\t\t\t\toi++;\n\t\t\t\t\t\tret = oldRetained[oi];\n\t\t\t\t\t\toldKey = typeof ret === \"object\" ? ret.el.props.key : undefined;\n\t\t\t\t\t}\n\n\t\t\t\t\toi++;\n\t\t\t\t} else {\n\t\t\t\t\tret = childrenByKey.get(newKey);\n\t\t\t\t\tif (ret !== undefined) {\n\t\t\t\t\t\tchildrenByKey.delete(newKey);\n\t\t\t\t\t}\n\n\t\t\t\t\t(seenKeys = seenKeys || new Set()).add(newKey);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet diff: Promise<undefined> | undefined = undefined;\n\t\tif (typeof child === \"object\") {\n\t\t\tlet childCopied = false;\n\t\t\tif (child.tag === Copy) {\n\t\t\t\tchildCopied = true;\n\t\t\t} else if (\n\t\t\t\ttypeof ret === \"object\" &&\n\t\t\t\tret.el === child &&\n\t\t\t\tgetFlag(ret, DidCommit)\n\t\t\t) {\n\t\t\t\t// If the child is the same as the retained element, we skip\n\t\t\t\t// re-rendering.\n\t\t\t\tchildCopied = true;\n\t\t\t} else {\n\t\t\t\tif (ret && ret.el.tag === child.tag) {\n\t\t\t\t\tret.el = child;\n\t\t\t\t\tif (child.props.copy && typeof child.props.copy !== \"string\") {\n\t\t\t\t\t\tchildCopied = true;\n\t\t\t\t\t}\n\t\t\t\t} else if (ret) {\n\t\t\t\t\tlet candidateFound = false;\n\t\t\t\t\t// we do not need to add the retainer to the graveyard if it is the\n\t\t\t\t\t// fallback of another retainer\n\t\t\t\t\t// search for the tag in fallback chain\n\t\t\t\t\tfor (\n\t\t\t\t\t\tlet predecessor = ret, candidate = ret.fallback;\n\t\t\t\t\t\tcandidate;\n\t\t\t\t\t\tpredecessor = candidate, candidate = candidate.fallback\n\t\t\t\t\t) {\n\t\t\t\t\t\tif (candidate.el.tag === child.tag) {\n\t\t\t\t\t\t\t// If we find a retainer in the fallback chain with the same tag,\n\t\t\t\t\t\t\t// we reuse it rather than creating a new retainer to preserve\n\t\t\t\t\t\t\t// state. This behavior is useful for when a Suspense component\n\t\t\t\t\t\t\t// re-renders and the children are re-rendered quickly.\n\t\t\t\t\t\t\tconst clone = cloneRetainer(candidate);\n\t\t\t\t\t\t\tsetFlag(clone, IsResurrecting);\n\t\t\t\t\t\t\tpredecessor.fallback = clone;\n\t\t\t\t\t\t\tconst fallback = ret;\n\t\t\t\t\t\t\tret = candidate;\n\t\t\t\t\t\t\tret.el = child;\n\t\t\t\t\t\t\tret.fallback = fallback;\n\t\t\t\t\t\t\tsetFlag(ret, DidDiff, false);\n\t\t\t\t\t\t\tcandidateFound = true;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (!candidateFound) {\n\t\t\t\t\t\tconst fallback = ret;\n\t\t\t\t\t\tret = new Retainer<TNode, TScope>(child);\n\t\t\t\t\t\tret.fallback = fallback;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tret = new Retainer<TNode, TScope>(child);\n\t\t\t\t}\n\n\t\t\t\tif (childCopied && getFlag(ret, DidCommit)) {\n\t\t\t\t\t// pass\n\t\t\t\t} else if (child.tag === Raw || child.tag === Text) {\n\t\t\t\t\t// pass\n\t\t\t\t} else if (child.tag === Fragment) {\n\t\t\t\t\tdiff = diffChildren(\n\t\t\t\t\t\tadapter,\n\t\t\t\t\t\troot,\n\t\t\t\t\t\thost,\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\tscope,\n\t\t\t\t\t\tret,\n\t\t\t\t\t\tret.el.props.children as Children,\n\t\t\t\t\t);\n\t\t\t\t} else if (typeof child.tag === \"function\") {\n\t\t\t\t\tdiff = diffComponent(adapter, root, host, ctx, scope, ret);\n\t\t\t\t} else {\n\t\t\t\t\tdiff = diffHost(adapter, root, ctx, scope, ret);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (typeof ret === \"object\") {\n\t\t\t\tif (childCopied) {\n\t\t\t\t\tsetFlag(ret, IsCopied);\n\t\t\t\t\tdiff = getInflightDiff(ret);\n\t\t\t\t} else {\n\t\t\t\t\tsetFlag(ret, IsCopied, false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (isPromiseLike(diff)) {\n\t\t\t\tisAsync = true;\n\t\t\t}\n\t\t} else if (typeof child === \"string\") {\n\t\t\tif (typeof ret === \"object\" && ret.el.tag === Text) {\n\t\t\t\tret.el.props.value = child;\n\t\t\t} else {\n\t\t\t\tif (typeof ret === \"object\") {\n\t\t\t\t\t(graveyard = graveyard || []).push(ret);\n\t\t\t\t}\n\n\t\t\t\tret = new Retainer<TNode, TScope>(createElement(Text, {value: child}));\n\t\t\t}\n\t\t} else {\n\t\t\tif (typeof ret === \"object\") {\n\t\t\t\t(graveyard = graveyard || []).push(ret);\n\t\t\t}\n\n\t\t\tret = undefined;\n\t\t}\n\n\t\tdiffs[ni] = diff;\n\t\tnewRetained[ni] = ret;\n\t}\n\n\t// cleanup remaining retainers\n\tfor (; oi < oldLength; oi++) {\n\t\tconst ret = oldRetained[oi];\n\t\tif (\n\t\t\ttypeof ret === \"object\" &&\n\t\t\t(typeof ret.el.props.key === \"undefined\" ||\n\t\t\t\t!seenKeys ||\n\t\t\t\t!seenKeys.has(ret.el.props.key))\n\t\t) {\n\t\t\t(graveyard = graveyard || []).push(ret);\n\t\t}\n\t}\n\n\tif (childrenByKey !== undefined && childrenByKey.size > 0) {\n\t\tgraveyard = graveyard || [];\n\t\tfor (const ret of childrenByKey.values()) {\n\t\t\tgraveyard.push(ret);\n\t\t}\n\t}\n\n\tparent.children = unwrap(newRetained);\n\tif (isAsync) {\n\t\tconst diffs1 = Promise.all(diffs)\n\t\t\t.then(() => undefined)\n\t\t\t.finally(() => {\n\t\t\t\tsetFlag(parent, DidDiff);\n\t\t\t\tif (graveyard) {\n\t\t\t\t\tif (parent.graveyard) {\n\t\t\t\t\t\tfor (let i = 0; i < graveyard.length; i++) {\n\t\t\t\t\t\t\tparent.graveyard.push(graveyard[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tparent.graveyard = graveyard;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\tlet onNextDiffs!: Function;\n\t\tconst diffs2 = (parent.pendingDiff = safeRace([\n\t\t\tdiffs1,\n\t\t\tnew Promise<any>((resolve) => (onNextDiffs = resolve)),\n\t\t]));\n\n\t\tif (parent.onNextDiff) {\n\t\t\tparent.onNextDiff(diffs2);\n\t\t}\n\n\t\tparent.onNextDiff = onNextDiffs;\n\t\treturn diffs2;\n\t} else {\n\t\tsetFlag(parent, DidDiff);\n\t\tif (graveyard) {\n\t\t\tif (parent.graveyard) {\n\t\t\t\tfor (let i = 0; i < graveyard.length; i++) {\n\t\t\t\t\tparent.graveyard.push(graveyard[i]);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tparent.graveyard = graveyard;\n\t\t\t}\n\t\t}\n\n\t\tif (parent.onNextDiff) {\n\t\t\tparent.onNextDiff(diffs);\n\t\t\tparent.onNextDiff = undefined;\n\t\t}\n\n\t\tparent.pendingDiff = undefined;\n\t}\n}\n\nfunction getInflightDiff(\n\tret: Retainer<unknown>,\n): Promise<undefined> | undefined {\n\t// It is not enough to check pendingDiff because pendingDiff is the diff for\n\t// children, but not the diff of an async component retainer's current run.\n\t// For the latter we check ctx.inflight.\n\tif (ret.ctx && ret.ctx.inflight) {\n\t\treturn ret.ctx.inflight[1];\n\t} else if (ret.pendingDiff) {\n\t\treturn ret.pendingDiff;\n\t}\n}\n\nfunction createChildrenByKey<TNode, TScope>(\n\tchildren: Array<Retainer<TNode, TScope> | undefined>,\n\toffset: number,\n): Map<Key, Retainer<TNode, TScope>> {\n\tconst childrenByKey = new Map<Key, Retainer<TNode, TScope>>();\n\tfor (let i = offset; i < children.length; i++) {\n\t\tconst child = children[i];\n\t\tif (\n\t\t\ttypeof child === \"object\" &&\n\t\t\ttypeof child.el.props.key !== \"undefined\"\n\t\t) {\n\t\t\tchildrenByKey.set(child.el.props.key, child);\n\t\t}\n\t}\n\n\treturn childrenByKey;\n}\n\nfunction diffHost<TNode, TScope, TRoot extends TNode | undefined>(\n\tadapter: RenderAdapter<TNode, TScope, TRoot, unknown>,\n\troot: TRoot,\n\tctx: ContextState<TNode, TScope, TRoot> | undefined,\n\tscope: TScope | undefined,\n\tret: Retainer<TNode, TScope>,\n): Promise<undefined> | undefined {\n\tconst el = ret.el;\n\tconst tag = el.tag as string | symbol;\n\tif (el.tag === Portal) {\n\t\troot = ret.value = el.props.root;\n\t}\n\n\tif (getFlag(ret, DidCommit)) {\n\t\tscope = ret.scope;\n\t} else {\n\t\tscope = ret.scope = adapter.scope({\n\t\t\ttag,\n\t\t\ttagName: getTagName(tag),\n\t\t\tprops: el.props,\n\t\t\tscope,\n\t\t\troot,\n\t\t});\n\t}\n\n\treturn diffChildren(\n\t\tadapter,\n\t\troot,\n\t\tret,\n\t\tctx,\n\t\tscope,\n\t\tret,\n\t\tret.el.props.children,\n\t);\n}\n\nfunction commit<TNode, TScope, TRoot extends TNode | undefined, TResult>(\n\tadapter: RenderAdapter<TNode, TScope, TRoot, TResult>,\n\thost: Retainer<TNode, TScope>,\n\tret: Retainer<TNode, TScope>,\n\tctx: ContextState<TNode, TScope, TRoot, TResult> | undefined,\n\tscope: TScope | undefined,\n\troot: TRoot | undefined,\n\tindex: number,\n\tschedulePromises: Array<PromiseLike<unknown>>,\n\thydrationNodes: Array<TNode> | undefined,\n): ElementValue<TNode> {\n\tif (getFlag(ret, IsCopied) && getFlag(ret, DidCommit)) {\n\t\treturn getValue(ret);\n\t}\n\n\tconst el = ret.el;\n\tconst tag = el.tag;\n\tif (\n\t\ttypeof tag === \"function\" ||\n\t\ttag === Fragment ||\n\t\ttag === Portal ||\n\t\ttag === Raw ||\n\t\ttag === Text\n\t) {\n\t\tif (typeof el.props.copy === \"string\") {\n\t\t\tconsole.error(\n\t\t\t\t`String copy prop ignored for <${getTagName(tag)}>. Use booleans instead.`,\n\t\t\t);\n\t\t}\n\t\tif (typeof el.props.hydrate === \"string\") {\n\t\t\tconsole.error(\n\t\t\t\t`String hydrate prop ignored for <${getTagName(tag)}>. Use booleans instead.`,\n\t\t\t);\n\t\t}\n\t}\n\n\tlet value: ElementValue<TNode>;\n\tlet skippedHydrationNodes: Array<TNode> | undefined;\n\tif (\n\t\thydrationNodes &&\n\t\tel.props.hydrate != null &&\n\t\t!el.props.hydrate &&\n\t\ttypeof el.props.hydrate !== \"string\"\n\t) {\n\t\tskippedHydrationNodes = hydrationNodes;\n\t\thydrationNodes = undefined;\n\t}\n\n\tif (typeof tag === \"function\") {\n\t\tret.ctx!.index = index;\n\t\tvalue = commitComponent(ret.ctx!, schedulePromises, hydrationNodes);\n\t} else {\n\t\tif (tag === Fragment) {\n\t\t\tvalue = commitChildren(\n\t\t\t\tadapter,\n\t\t\t\thost,\n\t\t\t\tctx,\n\t\t\t\tscope,\n\t\t\t\troot,\n\t\t\t\tret,\n\t\t\t\tindex,\n\t\t\t\tschedulePromises,\n\t\t\t\thydrationNodes,\n\t\t\t);\n\t\t} else if (tag === Text) {\n\t\t\tvalue = commitText(\n\t\t\t\tadapter,\n\t\t\t\tret,\n\t\t\t\tel as Element<Text>,\n\t\t\t\tscope,\n\t\t\t\thydrationNodes,\n\t\t\t\troot,\n\t\t\t);\n\t\t} else if (tag === Raw) {\n\t\t\tvalue = commitRaw(adapter, host, ret, scope, hydrationNodes, root);\n\t\t} else {\n\t\t\tvalue = commitHost(\n\t\t\t\tadapter,\n\t\t\t\tret,\n\t\t\t\tctx,\n\t\t\t\troot,\n\t\t\t\tschedulePromises,\n\t\t\t\thydrationNodes,\n\t\t\t);\n\t\t}\n\n\t\tif (ret.fallback) {\n\t\t\tunmount(adapter, host, ctx, root, ret.fallback, false);\n\t\t\tret.fallback = undefined;\n\t\t}\n\t}\n\n\tif (skippedHydrationNodes) {\n\t\tskippedHydrationNodes.splice(\n\t\t\t0,\n\t\t\tvalue == null ? 0 : Array.isArray(value) ? value.length : 1,\n\t\t);\n\t}\n\n\tif (!getFlag(ret, DidCommit)) {\n\t\tsetFlag(ret, DidCommit);\n\t\tif (\n\t\t\ttypeof tag !== \"function\" &&\n\t\t\ttag !== Fragment &&\n\t\t\ttag !== Portal &&\n\t\t\ttypeof el.props.ref === \"function\"\n\t\t) {\n\t\t\tel.props.ref(adapter.read(value));\n\t\t}\n\t}\n\n\treturn value;\n}\n\nfunction commitChildren<\n\tTNode,\n\tTScope,\n\tTRoot extends TNode | undefined,\n\tTResult,\n>(\n\tadapter: RenderAdapter<TNode, unknown, TRoot, TResult>,\n\thost: Retainer<TNode, TScope>,\n\tctx: ContextState<TNode, TScope, TRoot, TResult> | undefined,\n\tscope: TScope | undefined,\n\troot: TRoot | undefined,\n\tparent: Retainer<TNode, TScope>,\n\tindex: number,\n\tschedulePromises: Array<PromiseLike<unknown>>,\n\thydrationNodes: Array<TNode> | undefined,\n): Array<TNode> {\n\tlet values: Array<TNode> = [];\n\tconst rawChildren = parent.children;\n\tconst isChildrenArray = Array.isArray(rawChildren);\n\tconst childrenLength =\n\t\trawChildren === undefined\n\t\t\t? 0\n\t\t\t: isChildrenArray\n\t\t\t\t? (rawChildren as Array<any>).length\n\t\t\t\t: 1;\n\tfor (let i = 0; i < childrenLength; i++) {\n\t\tlet child = isChildrenArray\n\t\t\t? (rawChildren as Array<Retainer<TNode, TScope> | undefined>)[i]\n\t\t\t: (rawChildren as Retainer<TNode, TScope> | undefined);\n\t\tlet schedulePromises1: Array<unknown> | undefined;\n\t\tlet isSchedulingFallback = false;\n\t\twhile (\n\t\t\tchild &&\n\t\t\t((!getFlag(child, DidDiff) && child.fallback) ||\n\t\t\t\tgetFlag(child, IsScheduling))\n\t\t) {\n\t\t\t// If the child is scheduling, it is a component retainer so ctx will be\n\t\t\t// defined.\n\t\t\tif (getFlag(child, IsScheduling) && child.ctx!.schedule) {\n\t\t\t\t(schedulePromises1 = schedulePromises1 || []).push(\n\t\t\t\t\tchild.ctx!.schedule.promise,\n\t\t\t\t);\n\t\t\t\tisSchedulingFallback = true;\n\t\t\t}\n\n\t\t\tif (!getFlag(child, DidDiff) && getFlag(child, DidCommit)) {\n\t\t\t\t// If this child has not diffed but has committed, it means it is a\n\t\t\t\t// fallback that is being resurrected.\n\t\t\t\tfor (const node of getChildValues(child)) {\n\t\t\t\t\tadapter.remove({\n\t\t\t\t\t\tnode,\n\t\t\t\t\t\tparentNode: host.value as TNode,\n\t\t\t\t\t\tisNested: false,\n\t\t\t\t\t\troot,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchild = child.fallback;\n\t\t\t// When a scheduling component is mounting asynchronously but diffs\n\t\t\t// immediately, it will cause previous async diffs to settle due to the\n\t\t\t// chasing mechanism. This would cause earlier renders to resolve sooner\n\t\t\t// than expected, because the render would be missing both its usual\n\t\t\t// children and the children of the scheduling render. Therefore, we need\n\t\t\t// to defer the settling of previous renders until either that render\n\t\t\t// settles, or the scheduling component finally finishes scheduling.\n\t\t\t//\n\t\t\t// To do this, we take advantage of the fact that commits for aborted\n\t\t\t// renders will still fire and walk the tree. During that commit walk,\n\t\t\t// when we encounter a scheduling element, we push a race of the\n\t\t\t// scheduling promise with the inflight diff of the async fallback\n\t\t\t// fallback to schedulePromises to delay the initiator.\n\t\t\t//\n\t\t\t// However, we need to make sure we only use the inflight diffs for the\n\t\t\t// fallback which we are trying to delay, in the case of multiple renders\n\t\t\t// and fallbacks. To do this, we take advantage of the fact that when\n\t\t\t// multiple renders race (e.g., render1->render2->render3->scheduling\n\t\t\t// component), the chasing mechanism will call stale commits in reverse\n\t\t\t// order.\n\t\t\t//\n\t\t\t// We can use this ordering to delay to find which fallbacks we need to\n\t\t\t// add to the race. Each commit call progressively marks an additional\n\t\t\t// fallback as a scheduling fallback, and does not contribute to the\n\t\t\t// scheduling promises if it is further than the last seen level.\n\t\t\t//\n\t\t\t// This prevents promise contamination where newer renders settle early\n\t\t\t// due to diffs from older renders.\n\t\t\tif (schedulePromises1 && isSchedulingFallback && child) {\n\t\t\t\tif (!getFlag(child, DidDiff)) {\n\t\t\t\t\tconst inflightDiff = getInflightDiff(child);\n\t\t\t\t\tschedulePromises1.push(inflightDiff);\n\t\t\t\t} else {\n\t\t\t\t\t// If a scheduling component's fallback has already diffed, we do not\n\t\t\t\t\t// need delay the render.\n\t\t\t\t\tschedulePromises1 = undefined;\n\t\t\t\t}\n\n\t\t\t\tif (getFlag(child, IsSchedulingFallback)) {\n\t\t\t\t\t// This fallback was marked by a more recent commit - keep processing\n\t\t\t\t\t// deeper levels\n\t\t\t\t\tisSchedulingFallback = true;\n\t\t\t\t} else {\n\t\t\t\t\t// First unmarked fallback we've encountered - mark it and stop\n\t\t\t\t\t// contributing to schedulePromises1 for deeper levels.\n\t\t\t\t\tsetFlag(child, IsSchedulingFallback, true);\n\t\t\t\t\tisSchedulingFallback = false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (schedulePromises1 && schedulePromises1.length > 1) {\n\t\t\tschedulePromises.push(safeRace(schedulePromises1));\n\t\t}\n\n\t\tif (child) {\n\t\t\tconst value = commit(\n\t\t\t\tadapter,\n\t\t\t\thost,\n\t\t\t\tchild,\n\t\t\t\tctx,\n\t\t\t\tscope,\n\t\t\t\troot,\n\t\t\t\tindex,\n\t\t\t\tschedulePromises,\n\t\t\t\thydrationNodes,\n\t\t\t);\n\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tfor (let j = 0; j < value.length; j++) {\n\t\t\t\t\tvalues.push(value[j]);\n\t\t\t\t}\n\t\t\t\tindex += value.length;\n\t\t\t} else if (value) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tindex++;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (parent.graveyard) {\n\t\tfor (let i = 0; i < parent.graveyard.length; i++) {\n\t\t\tconst child = parent.graveyard[i];\n\t\t\tunmount(adapter, host, ctx, root, child, false);\n\t\t}\n\n\t\tparent.graveyard = undefined;\n\t}\n\n\tif (parent.lingerers) {\n\t\t// if parent.lingerers is set, a descendant component is unmounting\n\t\t// asynchronously, so we overwrite values to include lingerering DOM nodes.\n\t\tvalues = getChildValues(parent);\n\t}\n\n\treturn values;\n}\n\nfunction commitText<TNode, TScope, TRoot extends TNode | undefined>(\n\tadapter: RenderAdapter<TNode, TScope, TRoot, unknown>,\n\tret: Retainer<TNode, TScope>,\n\tel: Element<Text>,\n\tscope: TScope | undefined,\n\thydrationNodes: Array<TNode> | undefined,\n\troot: TRoot | undefined,\n): TNode {\n\tconst value = adapter.text({\n\t\tvalue: el.props.value,\n\t\tscope,\n\t\toldNode: ret.value as TNode,\n\t\thydrationNodes,\n\t\troot,\n\t});\n\n\tret.value = value;\n\treturn value;\n}\n\nfunction commitRaw<TNode, TScope, TRoot extends TNode | undefined>(\n\tadapter: RenderAdapter<TNode, TScope, TRoot, unknown>,\n\thost: Retainer<TNode>,\n\tret: Retainer<TNode>,\n\tscope: TScope | undefined,\n\thydrationNodes: Array<TNode> | undefined,\n\troot: TRoot | undefined,\n): ElementValue<TNode> {\n\tif (!ret.oldProps || ret.oldProps.value !== ret.el.props.value) {\n\t\tconst oldNodes = wrap(ret.value);\n\t\tfor (let i = 0; i < oldNodes.length; i++) {\n\t\t\tconst oldNode = oldNodes[i];\n\t\t\tadapter.remove({\n\t\t\t\tnode: oldNode,\n\t\t\t\tparentNode: host.value as TNode,\n\t\t\t\tisNested: false,\n\t\t\t\troot,\n\t\t\t});\n\t\t}\n\t\tret.value = adapter.raw({\n\t\t\tvalue: ret.el.props.value as any,\n\t\t\tscope,\n\t\t\thydrationNodes,\n\t\t\troot,\n\t\t});\n\t}\n\n\tret.oldProps = stripSpecialProps(ret.el.props);\n\treturn ret.value;\n}\n\nfunction commitHost<TNode, TScope, TRoot extends TNode | undefined>(\n\tadapter: RenderAdapter<TNode, TScope, TRoot, unknown>,\n\tret: Retainer<TNode, TScope>,\n\tctx: ContextState<TNode, TScope, TRoot, unknown> | undefined,\n\troot: TRoot | undefined,\n\tschedulePromises: Array<PromiseLike<unknown>>,\n\thydrationNodes: Array<TNode> | undefined,\n): ElementValue<TNode> {\n\tif (getFlag(ret, IsCopied) && getFlag(ret, DidCommit)) {\n\t\treturn getValue(ret);\n\t}\n\n\tconst tag = ret.el.tag as string | symbol;\n\tconst props = stripSpecialProps(ret.el.props);\n\tconst oldProps = ret.oldProps;\n\tlet node = ret.value as TNode;\n\n\tlet copyProps: Set<string> | undefined;\n\tlet copyChildren = false;\n\tif (oldProps) {\n\t\tfor (const propName in props) {\n\t\t\tif (props[propName] === Copy) {\n\t\t\t\t// The Copy tag can be used to skip the patching of a prop.\n\t\t\t\t//   <div class={shouldPatchClass ? \"class-name\" : Copy} />\n\t\t\t\tprops[propName] = oldProps[propName];\n\t\t\t\t(copyProps = copyProps || new Set()).add(propName);\n\t\t\t}\n\t\t}\n\n\t\tif (typeof ret.el.props.copy === \"string\") {\n\t\t\tconst copyMetaProp = new MetaProp(\"copy\", ret.el.props.copy);\n\t\t\tif (copyMetaProp.include) {\n\t\t\t\tfor (const propName of copyMetaProp.props) {\n\t\t\t\t\tif (propName in oldProps) {\n\t\t\t\t\t\tprops[propName] = oldProps[propName];\n\t\t\t\t\t\t(copyProps = copyProps || new Set()).add(propName);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor (const propName in oldProps) {\n\t\t\t\t\tif (!copyMetaProp.props.has(propName)) {\n\t\t\t\t\t\tprops[propName] = oldProps[propName];\n\t\t\t\t\t\t(copyProps = copyProps || new Set()).add(propName);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tcopyChildren = copyMetaProp.includes(\"children\");\n\t\t}\n\t}\n\n\tconst scope = ret.scope;\n\tlet childHydrationNodes: Array<TNode> | undefined;\n\tlet quietProps: Set<string> | undefined;\n\tlet hydrationMetaProp: MetaProp | undefined;\n\tif (!getFlag(ret, DidCommit)) {\n\t\tif (tag === Portal) {\n\t\t\tif (ret.el.props.hydrate && typeof ret.el.props.hydrate !== \"string\") {\n\t\t\t\tchildHydrationNodes = adapter.adopt({\n\t\t\t\t\ttag,\n\t\t\t\t\ttagName: getTagName(tag),\n\t\t\t\t\tnode,\n\t\t\t\t\tprops,\n\t\t\t\t\tscope,\n\t\t\t\t\troot,\n\t\t\t\t});\n\n\t\t\t\tif (childHydrationNodes) {\n\t\t\t\t\tfor (let i = 0; i < childHydrationNodes.length; i++) {\n\t\t\t\t\t\tadapter.remove({\n\t\t\t\t\t\t\tnode: childHydrationNodes[i],\n\t\t\t\t\t\t\tparentNode: node,\n\t\t\t\t\t\t\tisNested: false,\n\t\t\t\t\t\t\troot,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif (!node && hydrationNodes) {\n\t\t\t\tconst nextChild = hydrationNodes.shift();\n\t\t\t\tif (typeof ret.el.props.hydrate === \"string\") {\n\t\t\t\t\thydrationMetaProp = new MetaProp(\"hydration\", ret.el.props.hydrate);\n\t\t\t\t\tif (hydrationMetaProp.include) {\n\t\t\t\t\t\t// if we're in inclusive mode, we add all props to quietProps and\n\t\t\t\t\t\t// remove props specified in the metaprop\n\t\t\t\t\t\tquietProps = new Set(Object.keys(props));\n\t\t\t\t\t\tfor (const propName of hydrationMetaProp.props) {\n\t\t\t\t\t\t\tquietProps.delete(propName);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tquietProps = hydrationMetaProp.props;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tchildHydrationNodes = adapter.adopt({\n\t\t\t\t\ttag,\n\t\t\t\t\ttagName: getTagName(tag),\n\t\t\t\t\tnode: nextChild!,\n\t\t\t\t\tprops,\n\t\t\t\t\tscope,\n\t\t\t\t\troot,\n\t\t\t\t});\n\n\t\t\t\tif (childHydrationNodes) {\n\t\t\t\t\tnode = nextChild!;\n\t\t\t\t\tfor (let i = 0; i < childHydrationNodes.length; i++) {\n\t\t\t\t\t\tadapter.remove({\n\t\t\t\t\t\t\tnode: childHydrationNodes[i],\n\t\t\t\t\t\t\tparentNode: node,\n\t\t\t\t\t\t\tisNested: false,\n\t\t\t\t\t\t\troot,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// TODO: For some reason, there are cases where the node is already set\n\t\t\t// and the DidCommit flag is false. Not checking for node fails a test\n\t\t\t// where a child dispatches an event in a schedule callback, the parent\n\t\t\t// listens for this event and refreshes.\n\t\t\tif (!node) {\n\t\t\t\tnode = adapter.create({\n\t\t\t\t\ttag,\n\t\t\t\t\ttagName: getTagName(tag),\n\t\t\t\t\tprops,\n\t\t\t\t\tscope,\n\t\t\t\t\troot,\n\t\t\t\t});\n\t\t\t}\n\t\t\tret.value = node;\n\t\t}\n\t}\n\n\tif (tag !== Portal) {\n\t\tadapter.patch({\n\t\t\ttag,\n\t\t\ttagName: getTagName(tag),\n\t\t\tnode,\n\t\t\tprops,\n\t\t\toldProps,\n\t\t\tscope,\n\t\t\troot,\n\t\t\tcopyProps,\n\t\t\tisHydrating: !!childHydrationNodes,\n\t\t\tquietProps,\n\t\t});\n\t}\n\n\tif (!copyChildren) {\n\t\tconst children = commitChildren(\n\t\t\tadapter,\n\t\t\tret,\n\t\t\tctx,\n\t\t\tscope,\n\t\t\ttag === Portal ? (node as TRoot) : root,\n\t\t\tret,\n\t\t\t0,\n\t\t\tschedulePromises,\n\t\t\thydrationMetaProp && !hydrationMetaProp.includes(\"children\")\n\t\t\t\t? undefined\n\t\t\t\t: childHydrationNodes,\n\t\t);\n\n\t\tadapter.arrange({\n\t\t\ttag,\n\t\t\ttagName: getTagName(tag),\n\t\t\tnode: node,\n\t\t\tprops,\n\t\t\tchildren,\n\t\t\toldProps,\n\t\t\tscope,\n\t\t\troot,\n\t\t});\n\t}\n\n\tret.oldProps = props;\n\tif (tag === Portal) {\n\t\tflush(adapter, ret.value as TRoot);\n\t\t// The root passed to Portal elements are opaque to parents so we return\n\t\t// undefined here.\n\t\treturn;\n\t}\n\n\treturn node;\n}\n\nclass MetaProp {\n\tdeclare include: boolean;\n\tdeclare props: Set<string>;\n\n\tconstructor(propName: string, propValue: string) {\n\t\tthis.include = true;\n\t\tthis.props = new Set<string>();\n\t\tlet noBangs = true;\n\t\tlet allBangs = true;\n\t\tconst tokens = propValue.split(/[,\\s]+/);\n\t\tfor (let i = 0; i < tokens.length; i++) {\n\t\t\tconst token = tokens[i].trim();\n\t\t\tif (!token) {\n\t\t\t\tcontinue;\n\t\t\t} else if (token.startsWith(\"!\")) {\n\t\t\t\tnoBangs = false;\n\t\t\t\tthis.props.add(token.slice(1));\n\t\t\t} else {\n\t\t\t\tallBangs = false;\n\t\t\t\tthis.props.add(token);\n\t\t\t}\n\t\t}\n\n\t\tif (!allBangs && !noBangs) {\n\t\t\tconsole.error(\n\t\t\t\t`Invalid ${propName} prop \"${propValue}\".\\nUse prop or !prop but not both.`,\n\t\t\t);\n\t\t\tthis.include = true;\n\t\t\tthis.props.clear();\n\t\t} else {\n\t\t\tthis.include = noBangs;\n\t\t}\n\t}\n\n\tincludes(propName: string): boolean {\n\t\tif (this.include) {\n\t\t\treturn this.props.has(propName);\n\t\t} else {\n\t\t\treturn !this.props.has(propName);\n\t\t}\n\t}\n}\n\nfunction contextContains(parent: ContextState, child: ContextState): boolean {\n\tfor (\n\t\tlet current: ContextState | undefined = child;\n\t\tcurrent !== undefined;\n\t\tcurrent = current.parent\n\t) {\n\t\tif (current === parent) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n// When rendering is done without a root, we use this special anonymous root to\n// make sure after callbacks are still called.\nconst ANONYMOUS_ROOT: any = {};\nfunction flush<TRoot>(\n\tadapter: RenderAdapter<unknown, unknown, TRoot>,\n\troot: TRoot | undefined,\n\tinitiator?: ContextState,\n) {\n\tif (root != null) {\n\t\tadapter.finalize(root);\n\t}\n\n\tif (typeof root !== \"object\" || root === null) {\n\t\troot = ANONYMOUS_ROOT;\n\t}\n\n\t// The initiator is the context which initiated the rendering process. If\n\t// initiator is defined we call and clear all flush callbacks which are\n\t// registered with the initiator or with a child context of the initiator,\n\t// because they are fully rendered.\n\t//\n\t// If no initiator is provided, we can call and clear all flush callbacks\n\t// which are not scheduling.\n\tconst afterMap = afterMapByRoot.get(root as any);\n\tif (afterMap) {\n\t\tconst afterMap1 = new Map<ContextState, Set<Function>>();\n\t\tfor (const [ctx, callbacks] of afterMap) {\n\t\t\tif (\n\t\t\t\tgetFlag(ctx.ret, IsScheduling) ||\n\t\t\t\t(initiator && !contextContains(initiator, ctx))\n\t\t\t) {\n\t\t\t\t// copy over callbacks to the new map (defer them)\n\t\t\t\tafterMap.delete(ctx);\n\t\t\t\tafterMap1.set(ctx, callbacks);\n\t\t\t}\n\t\t}\n\n\t\tif (afterMap1.size) {\n\t\t\tafterMapByRoot.set(root as any, afterMap1);\n\t\t} else {\n\t\t\tafterMapByRoot.delete(root as any);\n\t\t}\n\n\t\tfor (const [ctx, callbacks] of afterMap) {\n\t\t\tconst value = adapter.read(getValue(ctx.ret));\n\t\t\tfor (const callback of callbacks) {\n\t\t\t\tcallback(value);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction unmount<TNode, TScope, TRoot extends TNode | undefined, TResult>(\n\tadapter: RenderAdapter<TNode, TScope, TRoot, TResult>,\n\thost: Retainer<TNode>,\n\tctx: ContextState<TNode, TScope, TRoot, TResult> | undefined,\n\troot: TRoot | undefined,\n\tret: Retainer<TNode>,\n\tisNested: boolean,\n): void {\n\t// TODO: set the IsUnmounted flag consistently for all retainers\n\tif (ret.fallback) {\n\t\tunmount(adapter, host, ctx, root, ret.fallback, isNested);\n\t\tret.fallback = undefined;\n\t}\n\n\tif (getFlag(ret, IsResurrecting)) {\n\t\treturn;\n\t}\n\n\tif (ret.lingerers) {\n\t\tfor (let i = 0; i < ret.lingerers.length; i++) {\n\t\t\tconst lingerers = ret.lingerers[i];\n\t\t\tif (lingerers) {\n\t\t\t\tfor (const lingerer of lingerers) {\n\t\t\t\t\tunmount(adapter, host, ctx, root, lingerer, isNested);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tret.lingerers = undefined;\n\t}\n\n\tif (typeof ret.el.tag === \"function\") {\n\t\tunmountComponent(ret.ctx!, isNested);\n\t} else if (ret.el.tag === Fragment) {\n\t\tunmountChildren(adapter, host, ctx, root, ret, isNested);\n\t} else if (ret.el.tag === Portal) {\n\t\tunmountChildren(adapter, ret, ctx, ret.value as TRoot, ret, false);\n\t\tif (ret.value != null) {\n\t\t\tadapter.finalize(ret.value as TRoot);\n\t\t}\n\t} else {\n\t\tunmountChildren(adapter, ret, ctx, root, ret, true);\n\n\t\tif (getFlag(ret, DidCommit)) {\n\t\t\tif (ctx) {\n\t\t\t\t// Remove the value from every context which shares the same host.\n\t\t\t\tremoveEventTargetDelegates(\n\t\t\t\t\tctx.ctx,\n\t\t\t\t\t[ret.value],\n\t\t\t\t\t(ctx1) => ctx1[_ContextState].host === host,\n\t\t\t\t);\n\t\t\t}\n\t\t\tadapter.remove({\n\t\t\t\tnode: ret.value as TNode,\n\t\t\t\tparentNode: host.value as TNode,\n\t\t\t\tisNested,\n\t\t\t\troot,\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction unmountChildren<\n\tTNode,\n\tTScope,\n\tTRoot extends TNode | undefined,\n\tTResult,\n>(\n\tadapter: RenderAdapter<TNode, TScope, TRoot, TResult>,\n\thost: Retainer<TNode>,\n\tctx: ContextState<TNode, TScope, TRoot, TResult> | undefined,\n\troot: TRoot | undefined,\n\tret: Retainer<TNode>,\n\tisNested: boolean,\n): void {\n\tif (ret.graveyard) {\n\t\tfor (let i = 0; i < ret.graveyard.length; i++) {\n\t\t\tconst child = ret.graveyard[i];\n\t\t\tunmount(adapter, host, ctx, root, child, isNested);\n\t\t}\n\n\t\tret.graveyard = undefined;\n\t}\n\n\tconst rawChildren = ret.children;\n\tif (Array.isArray(rawChildren)) {\n\t\tfor (let i = 0; i < rawChildren.length; i++) {\n\t\t\tconst child = rawChildren[i];\n\t\t\tif (typeof child === \"object\") {\n\t\t\t\tunmount(adapter, host, ctx, root, child, isNested);\n\t\t\t}\n\t\t}\n\t} else if (rawChildren !== undefined) {\n\t\tunmount(adapter, host, ctx, root, rawChildren, isNested);\n\t}\n}\nconst provisionMaps = new WeakMap<ContextState, Map<unknown, unknown>>();\n\nconst scheduleMap = new WeakMap<ContextState, Set<Function>>();\n\nconst cleanupMap = new WeakMap<ContextState, Set<Function>>();\n\n// keys are roots\nconst afterMapByRoot = new WeakMap<object, Map<ContextState, Set<Function>>>();\n\ninterface PullController {\n\titerationP: Promise<ChildrenIteratorResult> | undefined;\n\tdiff: Promise<undefined> | undefined;\n\tonChildError: ((err: unknown) => void) | undefined;\n}\n\ninterface ScheduleController {\n\tpromise: Promise<unknown>;\n\tonAbort: () => void;\n}\n\n// TODO: allow ContextState to be initialized for testing purposes\n/**\n * @internal\n * The internal class which holds context data.\n */\nclass ContextState<\n\tTNode = unknown,\n\tTScope = unknown,\n\tTRoot extends TNode | undefined = TNode | undefined,\n\tTResult = unknown,\n> {\n\t/** The adapter of the renderer which created this context. */\n\tdeclare adapter: RenderAdapter<TNode, TScope, TRoot, TResult>;\n\n\t/** The root node as set by the nearest ancestor portal. */\n\tdeclare root: TRoot | undefined;\n\n\t/**\n\t * The nearest ancestor host or portal retainer.\n\t *\n\t * When refresh is called, the host element will be arranged as the last step\n\t * of the commit, to make sure the parent's children properly reflects the\n\t * components's childrenk\n\t */\n\tdeclare host: Retainer<TNode>;\n\n\t/** The parent context state. */\n\tdeclare parent: ContextState | undefined;\n\n\t/** The actual context associated with this state. */\n\tdeclare ctx: Context<unknown, TResult>;\n\n\t/** The value of the scope at the point of element's creation. */\n\tdeclare scope: TScope | undefined;\n\n\t/** The internal node associated with this context. */\n\tdeclare ret: Retainer<TNode>;\n\n\t/**\n\t * Any iterator returned by a component function.\n\t *\n\t * Existence of this property implies that the component is a generator\n\t * component. It is deleted when a component is returned.\n\t */\n\tdeclare iterator:\n\t\t| Iterator<Children, Children | void, unknown>\n\t\t| AsyncIterator<Children, Children | void, unknown>\n\t\t| undefined;\n\n\t// See runComponent() for a description of these properties.\n\tdeclare inflight: [Promise<undefined>, Promise<undefined>] | undefined;\n\tdeclare enqueued: [Promise<undefined>, Promise<undefined>] | undefined;\n\n\tdeclare pull: PullController | undefined;\n\n\t// The onPropsProvided callback is set when a component requests props via\n\t// the for await...of loop and props are not available. It is called when\n\t// the component is updated or refreshed.\n\tdeclare onPropsProvided: ((props: unknown) => unknown) | undefined;\n\t// The onPropsRequested callback is set when a component is updated or\n\t// refreshed but the new props are not consumed. It is called when the new\n\t// props are requested.\n\tdeclare onPropsRequested: (() => unknown) | undefined;\n\n\t// The last known index of the component's children, relative to its nearest\n\t// ancestor host or portal.\n\tdeclare index: number;\n\n\tdeclare schedule: ScheduleController | undefined;\n\n\tconstructor(\n\t\tadapter: RenderAdapter<TNode, TScope, TRoot, TResult>,\n\t\troot: TRoot,\n\t\thost: Retainer<TNode>,\n\t\tparent: ContextState | undefined,\n\t\tscope: TScope | undefined,\n\t\tret: Retainer<TNode>,\n\t) {\n\t\tthis.adapter = adapter;\n\t\tthis.root = root;\n\t\tthis.host = host;\n\t\tthis.parent = parent;\n\t\t// This property must be set after this.parent is set because the Context\n\t\t// constructor reads this.parent.\n\t\tthis.ctx = new Context(this);\n\t\tthis.scope = scope;\n\t\tthis.ret = ret;\n\n\t\tthis.iterator = undefined;\n\t\tthis.inflight = undefined;\n\t\tthis.enqueued = undefined;\n\n\t\tthis.onPropsProvided = undefined;\n\t\tthis.onPropsRequested = undefined;\n\n\t\tthis.pull = undefined;\n\t\tthis.index = 0;\n\t\tthis.schedule = undefined;\n\t}\n}\n\n// Public type that only extracts props from component functions\nexport type ComponentProps<T> = T extends () => unknown\n\t? {}\n\t: T extends (props: infer U) => unknown\n\t\t? U\n\t\t: never;\n\n// Public helper type that handles both component functions and regular objects\nexport type ComponentPropsOrProps<T> = T extends Function\n\t? ComponentProps<T>\n\t: T;\n\nconst _ContextState = Symbol.for(\"crank.ContextState\");\n\n/**\n * A class which is instantiated and passed to every component as its this\n * value/second parameter. Contexts form a tree just like elements and all\n * components in the element tree are connected via contexts. Components can\n * use this tree to communicate data upwards via events and downwards via\n * provisions.\n *\n * @template [T=*] - The expected shape of the props passed to the component,\n * or a component function. Used to strongly type the Context iterator methods.\n * @template [TResult=*] - The readable element value type. It is used in\n * places such as the return value of refresh and the argument passed to\n * schedule and cleanup callbacks.\n */\nexport class Context<\n\tT = any,\n\tTResult = any,\n> extends CustomEventTarget<Context> {\n\t/**\n\t * @internal\n\t * DO NOT USE READ THIS PROPERTY.\n\t */\n\tdeclare [_ContextState]: ContextState<unknown, unknown, unknown, TResult>;\n\n\t// TODO: If we could make the constructor function take a nicer value, it\n\t// would be useful for testing purposes.\n\tconstructor(state: ContextState<unknown, unknown, unknown, TResult>) {\n\t\tsuper(state.parent ? state.parent.ctx : null);\n\t\tthis[_ContextState] = state;\n\t}\n\n\t/**\n\t * The current props of the associated element.\n\t */\n\tget props(): ComponentPropsOrProps<T> {\n\t\treturn this[_ContextState].ret.el.props as ComponentPropsOrProps<T>;\n\t}\n\n\t/**\n\t * The current value of the associated element.\n\t *\n\t * @deprecated\n\t */\n\tget value(): TResult {\n\t\tconsole.warn(\"Context.value is deprecated.\");\n\t\treturn this[_ContextState].adapter.read(getValue(this[_ContextState].ret));\n\t}\n\n\tget isExecuting(): boolean {\n\t\treturn getFlag(this[_ContextState].ret, IsExecuting);\n\t}\n\n\tget isUnmounted(): boolean {\n\t\treturn getFlag(this[_ContextState].ret, IsUnmounted);\n\t}\n\n\t*[Symbol.iterator](): Generator<ComponentPropsOrProps<T>, undefined> {\n\t\tconst ctx = this[_ContextState];\n\t\tsetFlag(ctx.ret, IsInForOfLoop);\n\t\ttry {\n\t\t\twhile (!getFlag(ctx.ret, IsUnmounted) && !getFlag(ctx.ret, IsErrored)) {\n\t\t\t\tif (getFlag(ctx.ret, NeedsToYield)) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`<${getTagName(ctx.ret.el.tag)}> context iterated twice without a yield`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tsetFlag(ctx.ret, NeedsToYield);\n\t\t\t\t}\n\n\t\t\t\tyield ctx.ret.el.props as ComponentPropsOrProps<T>;\n\t\t\t}\n\t\t} finally {\n\t\t\tsetFlag(ctx.ret, IsInForOfLoop, false);\n\t\t}\n\t}\n\n\tasync *[Symbol.asyncIterator](): AsyncGenerator<\n\t\tComponentPropsOrProps<T>,\n\t\tundefined\n\t> {\n\t\tconst ctx = this[_ContextState];\n\t\tsetFlag(ctx.ret, IsInForAwaitOfLoop);\n\t\ttry {\n\t\t\twhile (!getFlag(ctx.ret, IsUnmounted) && !getFlag(ctx.ret, IsErrored)) {\n\t\t\t\tif (getFlag(ctx.ret, NeedsToYield)) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`<${getTagName(ctx.ret.el.tag)}> context iterated twice without a yield`,\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tsetFlag(ctx.ret, NeedsToYield);\n\t\t\t\t}\n\n\t\t\t\tif (getFlag(ctx.ret, PropsAvailable)) {\n\t\t\t\t\tsetFlag(ctx.ret, PropsAvailable, false);\n\t\t\t\t\tyield ctx.ret.el.props;\n\t\t\t\t} else {\n\t\t\t\t\tconst props = await new Promise<ComponentPropsOrProps<T>>(\n\t\t\t\t\t\t(resolve) =>\n\t\t\t\t\t\t\t(ctx.onPropsProvided = resolve as (props: unknown) => unknown),\n\t\t\t\t\t);\n\t\t\t\t\tif (getFlag(ctx.ret, IsUnmounted) || getFlag(ctx.ret, IsErrored)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tyield props;\n\t\t\t\t}\n\n\t\t\t\tif (ctx.onPropsRequested) {\n\t\t\t\t\tctx.onPropsRequested();\n\t\t\t\t\tctx.onPropsRequested = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tsetFlag(ctx.ret, IsInForAwaitOfLoop, false);\n\t\t\tif (ctx.onPropsRequested) {\n\t\t\t\tctx.onPropsRequested();\n\t\t\t\tctx.onPropsRequested = undefined;\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Re-executes a component.\n\t *\n\t * @param callback - Optional callback to execute before refresh\n\t * @returns The rendered result of the component or a promise thereof if the\n\t * component or its children execute asynchronously.\n\t */\n\trefresh(callback?: () => unknown): Promise<TResult> | TResult {\n\t\tconst ctx = this[_ContextState];\n\t\tif (getFlag(ctx.ret, IsUnmounted)) {\n\t\t\tconsole.error(\n\t\t\t\t`Component <${getTagName(ctx.ret.el.tag)}> is unmounted. Check the isUnmounted property if necessary.`,\n\t\t\t);\n\t\t\treturn ctx.adapter.read(getValue(ctx.ret));\n\t\t} else if (getFlag(ctx.ret, IsExecuting)) {\n\t\t\tconsole.error(\n\t\t\t\t`Component <${getTagName(ctx.ret.el.tag)}> is already executing Check the isExecuting property if necessary.`,\n\t\t\t);\n\t\t\treturn ctx.adapter.read(getValue(ctx.ret));\n\t\t}\n\n\t\tif (callback) {\n\t\t\tconst result = callback();\n\t\t\tif (isPromiseLike(result)) {\n\t\t\t\treturn Promise.resolve(result).then(() => {\n\t\t\t\t\tif (!getFlag(ctx.ret, IsUnmounted)) {\n\t\t\t\t\t\treturn this.refresh();\n\t\t\t\t\t}\n\t\t\t\t\treturn ctx.adapter.read(getValue(ctx.ret));\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (getFlag(ctx.ret, IsScheduling)) {\n\t\t\tsetFlag(ctx.ret, IsSchedulingRefresh);\n\t\t}\n\n\t\tconst commitLabel = \"commit (\" + getTagName(ctx.ret.el.tag) + \")\";\n\t\tlet diff: Promise<undefined> | undefined;\n\t\tconst schedulePromises: Array<PromiseLike<unknown>> = [];\n\t\ttry {\n\t\t\tsetFlag(ctx.ret, IsRefreshing);\n\t\t\tdiff = enqueueComponent(ctx);\n\t\t\tif (isPromiseLike(diff)) {\n\t\t\t\treturn diff\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tmarkStart(commitLabel);\n\t\t\t\t\t\tconst value = commitComponent(ctx, schedulePromises);\n\t\t\t\t\t\tmeasureMark(commitLabel);\n\t\t\t\t\t\treturn ctx.adapter.read(value);\n\t\t\t\t\t})\n\t\t\t\t\t.then((result) => {\n\t\t\t\t\t\tif (schedulePromises.length) {\n\t\t\t\t\t\t\treturn Promise.all(schedulePromises).then(() => {\n\t\t\t\t\t\t\t\treturn ctx.adapter.read(getValue(ctx.ret));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t})\n\t\t\t\t\t.catch((err) => {\n\t\t\t\t\t\tconst diff = propagateError(ctx, err, schedulePromises);\n\t\t\t\t\t\tif (diff) {\n\t\t\t\t\t\t\treturn diff.then(() => {\n\t\t\t\t\t\t\t\tif (schedulePromises.length) {\n\t\t\t\t\t\t\t\t\treturn Promise.all(schedulePromises).then(() => {\n\t\t\t\t\t\t\t\t\t\treturn ctx.adapter.read(getValue(ctx.ret));\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\treturn ctx.adapter.read(getValue(ctx.ret));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (schedulePromises.length) {\n\t\t\t\t\t\t\treturn Promise.all(schedulePromises).then(() => {\n\t\t\t\t\t\t\t\treturn ctx.adapter.read(getValue(ctx.ret));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn ctx.adapter.read(getValue(ctx.ret));\n\t\t\t\t\t})\n\t\t\t\t\t.finally(() => setFlag(ctx.ret, IsRefreshing, false));\n\t\t\t}\n\n\t\t\tmarkStart(commitLabel);\n\t\t\tconst result = ctx.adapter.read(commitComponent(ctx, schedulePromises));\n\t\t\tmeasureMark(commitLabel);\n\t\t\tif (schedulePromises.length) {\n\t\t\t\treturn Promise.all(schedulePromises).then(() => {\n\t\t\t\t\treturn ctx.adapter.read(getValue(ctx.ret));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn result;\n\t\t} catch (err) {\n\t\t\t// TODO: await schedulePromises\n\t\t\tconst diff = propagateError(ctx, err, schedulePromises);\n\t\t\tif (diff) {\n\t\t\t\treturn diff\n\t\t\t\t\t.then(() => {\n\t\t\t\t\t\tif (schedulePromises.length) {\n\t\t\t\t\t\t\treturn Promise.all(schedulePromises).then(() => {\n\t\t\t\t\t\t\t\treturn ctx.adapter.read(getValue(ctx.ret));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t\t.then(() => ctx.adapter.read(getValue(ctx.ret)));\n\t\t\t}\n\n\t\t\tif (schedulePromises.length) {\n\t\t\t\treturn Promise.all(schedulePromises).then(() => {\n\t\t\t\t\treturn ctx.adapter.read(getValue(ctx.ret));\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn ctx.adapter.read(getValue(ctx.ret));\n\t\t} finally {\n\t\t\tif (!isPromiseLike(diff)) {\n\t\t\t\tsetFlag(ctx.ret, IsRefreshing, false);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Registers a callback which fires when the component's children are\n\t * created. Will only fire once per callback and update.\n\t */\n\tschedule(): Promise<TResult>;\n\tschedule(callback: (value: TResult) => unknown): void;\n\tschedule(callback?: (value: TResult) => unknown): Promise<TResult> | void {\n\t\tif (!callback) {\n\t\t\treturn new Promise<TResult>((resolve) => this.schedule(resolve));\n\t\t}\n\n\t\tconst ctx = this[_ContextState];\n\t\tlet callbacks = scheduleMap.get(ctx);\n\t\tif (!callbacks) {\n\t\t\tcallbacks = new Set<Function>();\n\t\t\tscheduleMap.set(ctx, callbacks);\n\t\t}\n\n\t\tcallbacks.add(callback);\n\t}\n\n\t/**\n\t * Registers a callback which fires when the component's children are fully\n\t * rendered. Will only fire once per callback and update.\n\t */\n\tafter(): Promise<TResult>;\n\tafter(callback: (value: TResult) => unknown): void;\n\tafter(callback?: (value: TResult) => unknown): Promise<TResult> | void {\n\t\tif (!callback) {\n\t\t\treturn new Promise<TResult>((resolve) => this.after(resolve));\n\t\t}\n\t\tconst ctx = this[_ContextState];\n\t\tconst root = ctx.root || ANONYMOUS_ROOT;\n\t\tlet afterMap = afterMapByRoot.get(root);\n\t\tif (!afterMap) {\n\t\t\tafterMap = new Map<ContextState, Set<Function>>();\n\t\t\tafterMapByRoot.set(root, afterMap);\n\t\t}\n\n\t\tlet callbacks = afterMap.get(ctx);\n\t\tif (!callbacks) {\n\t\t\tcallbacks = new Set<Function>();\n\t\t\tafterMap.set(ctx, callbacks);\n\t\t}\n\n\t\tcallbacks.add(callback);\n\t}\n\n\t/**\n\t * @deprecated the flush() method has been renamed to after().\n\t */\n\tflush(): Promise<TResult>;\n\tflush(callback: (value: TResult) => unknown): void;\n\tflush(callback?: (value: TResult) => unknown): Promise<TResult> | void {\n\t\tconsole.error(\"Context.flush() method has been renamed to after()\");\n\t\tthis.after(callback!);\n\t}\n\n\t/**\n\t * Registers a callback which fires when the component unmounts.\n\t *\n\t * The callback can be async to defer the unmounting of a component's children.\n\t */\n\tcleanup(): Promise<TResult>;\n\tcleanup(callback: (value: TResult) => unknown): void;\n\tcleanup(callback?: (value: TResult) => unknown): Promise<TResult> | void {\n\t\tif (!callback) {\n\t\t\treturn new Promise<TResult>((resolve) => this.cleanup(resolve));\n\t\t}\n\t\tconst ctx = this[_ContextState];\n\n\t\tif (getFlag(ctx.ret, IsUnmounted)) {\n\t\t\tconst value = ctx.adapter.read(getValue(ctx.ret));\n\t\t\tcallback(value);\n\t\t\treturn;\n\t\t}\n\n\t\tlet callbacks = cleanupMap.get(ctx);\n\t\tif (!callbacks) {\n\t\t\tcallbacks = new Set<Function>();\n\t\t\tcleanupMap.set(ctx, callbacks);\n\t\t}\n\n\t\tcallbacks.add(callback);\n\t}\n\n\tconsume<TKey extends keyof ProvisionMap>(key: TKey): ProvisionMap[TKey];\n\tconsume(key: unknown): any;\n\tconsume(key: unknown): any {\n\t\tfor (\n\t\t\tlet ctx = this[_ContextState].parent;\n\t\t\tctx !== undefined;\n\t\t\tctx = ctx.parent\n\t\t) {\n\t\t\tconst provisions = provisionMaps.get(ctx);\n\t\t\tif (provisions && provisions.has(key)) {\n\t\t\t\treturn provisions.get(key)!;\n\t\t\t}\n\t\t}\n\t}\n\n\tprovide<TKey extends keyof ProvisionMap>(\n\t\tkey: TKey,\n\t\tvalue: ProvisionMap[TKey],\n\t): void;\n\tprovide(key: unknown, value: any): void;\n\tprovide(key: unknown, value: any): void {\n\t\tconst ctx = this[_ContextState];\n\t\tlet provisions = provisionMaps.get(ctx);\n\t\tif (!provisions) {\n\t\t\tprovisions = new Map();\n\t\t\tprovisionMaps.set(ctx, provisions);\n\t\t}\n\n\t\tprovisions.set(key, value);\n\t}\n\n\t[CustomEventTarget.dispatchEventOnSelf](ev: Event): void {\n\t\tconst ctx = this[_ContextState];\n\t\t// dispatchEvent calls the prop callback if it exists\n\t\tlet propCallback = ctx.ret.el.props[\"on\" + ev.type] as unknown;\n\t\tif (typeof propCallback === \"function\") {\n\t\t\tpropCallback(ev);\n\t\t} else {\n\t\t\tfor (const propName in ctx.ret.el.props) {\n\t\t\t\tif (propName.toLowerCase() === \"on\" + ev.type.toLowerCase()) {\n\t\t\t\t\tpropCallback = ctx.ret.el.props[propName] as unknown;\n\t\t\t\t\tif (typeof propCallback === \"function\") {\n\t\t\t\t\t\tpropCallback(ev);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction diffComponent<TNode, TScope, TRoot extends TNode | undefined, TResult>(\n\tadapter: RenderAdapter<TNode, TScope, TRoot, TResult>,\n\troot: TRoot | undefined,\n\thost: Retainer<TNode, TScope>,\n\tparent: ContextState | undefined,\n\tscope: TScope | undefined,\n\tret: Retainer<TNode>,\n): Promise<undefined> | undefined {\n\tlet ctx: ContextState<TNode>;\n\tif (ret.ctx) {\n\t\tctx = ret.ctx;\n\t\tif (getFlag(ctx.ret, IsExecuting)) {\n\t\t\tconsole.error(\n\t\t\t\t`Component <${getTagName(ctx.ret.el.tag)}> is already executing`,\n\t\t\t);\n\t\t\treturn;\n\t\t} else if (ctx.schedule) {\n\t\t\treturn ctx.schedule.promise.then(() => {\n\t\t\t\treturn diffComponent(adapter, root, host, parent, scope, ret);\n\t\t\t});\n\t\t}\n\t} else {\n\t\tctx = ret.ctx = new ContextState(adapter, root, host, parent, scope, ret);\n\t}\n\n\tsetFlag(ctx.ret, IsUpdating);\n\treturn enqueueComponent(ctx);\n}\n\nfunction diffComponentChildren<TNode, TResult>(\n\tctx: ContextState<TNode, unknown, TNode | undefined, TResult>,\n\tchildren: Children,\n\tisYield: boolean,\n): Promise<undefined> | undefined {\n\tif (getFlag(ctx.ret, IsUnmounted) || getFlag(ctx.ret, IsErrored)) {\n\t\treturn;\n\t} else if (children === undefined) {\n\t\tconsole.error(\n\t\t\t`Component <${getTagName(ctx.ret.el.tag)}> has ${isYield ? \"yielded\" : \"returned\"} undefined. If this was intentional, ${isYield ? \"yield\" : \"return\"} null instead.`,\n\t\t);\n\t}\n\n\tlet diff: Promise<undefined> | undefined;\n\ttry {\n\t\t// TODO: Use a different flag here to indicate the component is\n\t\t// synchronously rendering children\n\n\t\t// We set the isExecuting flag in case a child component dispatches an event\n\t\t// which bubbles to this component and causes a synchronous refresh().\n\t\tsetFlag(ctx.ret, IsExecuting);\n\t\tdiff = diffChildren(\n\t\t\tctx.adapter,\n\t\t\tctx.root,\n\t\t\tctx.host,\n\t\t\tctx,\n\t\t\tctx.scope,\n\t\t\tctx.ret,\n\t\t\tnarrow(children),\n\t\t);\n\t\tif (diff) {\n\t\t\tdiff = diff.catch((err) => handleChildError(ctx, err));\n\t\t}\n\t} catch (err) {\n\t\tdiff = handleChildError(ctx, err);\n\t} finally {\n\t\tsetFlag(ctx.ret, IsExecuting, false);\n\t}\n\n\treturn diff;\n}\n\n/** Enqueues and executes the component associated with the context. */\nfunction enqueueComponent<TNode, TResult>(\n\tctx: ContextState<TNode, unknown, TNode | undefined, TResult>,\n): Promise<undefined> | undefined {\n\tif (!ctx.inflight) {\n\t\tconst [block, diff] = runComponent<TNode, TResult>(ctx);\n\t\tif (block) {\n\t\t\t// if block is a promise, diff is a promise\n\t\t\tctx.inflight = [block.finally(() => advanceComponent(ctx)), diff!];\n\t\t}\n\n\t\treturn diff;\n\t} else if (!ctx.enqueued) {\n\t\t// The enqueuedBlock and enqueuedDiff properties must be set\n\t\t// simultaneously, hence the usage of the Promise constructor.\n\t\tlet resolve: Function;\n\t\tctx.enqueued = [\n\t\t\tnew Promise<undefined>((resolve1) => (resolve = resolve1)).finally(() =>\n\t\t\t\tadvanceComponent(ctx),\n\t\t\t),\n\t\t\tctx.inflight[0]!.finally(() => {\n\t\t\t\tconst [block, diff] = runComponent<TNode, TResult>(ctx);\n\t\t\t\tresolve(block);\n\t\t\t\treturn diff;\n\t\t\t}),\n\t\t];\n\t}\n\n\treturn ctx.enqueued[1];\n}\n\n/** Called when the inflight block promise settles. */\nfunction advanceComponent(ctx: ContextState): void {\n\tctx.inflight = ctx.enqueued;\n\tctx.enqueued = undefined;\n}\n\n/**\n * This function is responsible for executing components, and handling the\n * different component types.\n *\n * @returns {[block, diff]} A tuple where:\n * - block is a promise or undefined which represents the duration during which\n *   the component is blocked.\n * - diff is a promise or undefined which represents the duration for diffing\n *   of children.\n *\n * While a component is blocked, further updates to the component are enqueued.\n *\n * Each component type blocks according to its implementation:\n * - Sync function components never block; when props or state change,\n *   updates are immediately passed to children.\n * - Async function components block only while awaiting their own async work\n *   (e.g., during an await), but do not block while their async children are rendering.\n * - Sync generator components block while their children are rendering;\n *   they only resume once their children have finished.\n * - Async generator components can block in two different ways:\n *   - By default, they behave like sync generator components, blocking while\n *     the component or its children are rendering.\n *   - Within a for await...of loop, they block only while waiting for new\n *     props to be requested, and not while children are rendering.\n */\nfunction runComponent<TNode, TResult>(\n\tctx: ContextState<TNode, unknown, TNode | undefined, TResult>,\n): [Promise<undefined> | undefined, Promise<undefined> | undefined] {\n\tif (getFlag(ctx.ret, IsUnmounted)) {\n\t\treturn [undefined, undefined];\n\t}\n\n\tconst ret = ctx.ret;\n\tconst initial = !ctx.iterator;\n\tconst tagName = getTagName(ret.el.tag);\n\tif (initial) {\n\t\tsetFlag(ctx.ret, IsExecuting);\n\t\tclearEventListeners(ctx.ctx);\n\t\tlet returned: ReturnType<Component>;\n\t\ttry {\n\t\t\tmarkStart(tagName);\n\t\t\treturned = (ret.el.tag as Component).call(ctx.ctx, ret.el.props, ctx.ctx);\n\t\t} catch (err) {\n\t\t\tsetFlag(ctx.ret, IsErrored);\n\t\t\tthrow err;\n\t\t} finally {\n\t\t\tsetFlag(ctx.ret, IsExecuting, false);\n\t\t}\n\n\t\tif (isIteratorLike(returned)) {\n\t\t\tctx.iterator = returned;\n\t\t} else if (!isPromiseLike(returned)) {\n\t\t\t// sync function component\n\t\t\tmeasureMark(tagName);\n\t\t\treturn [\n\t\t\t\tundefined,\n\t\t\t\tdiffComponentChildren<TNode, TResult>(ctx, returned, false),\n\t\t\t];\n\t\t} else {\n\t\t\t// async function component\n\t\t\tconst returned1 =\n\t\t\t\treturned instanceof Promise ? returned : Promise.resolve(returned);\n\t\t\treturned1.then(\n\t\t\t\t() => measureMark(tagName),\n\t\t\t\t() => measureMark(tagName),\n\t\t\t);\n\t\t\treturn [\n\t\t\t\treturned1.catch(NOOP),\n\t\t\t\treturned1.then(\n\t\t\t\t\t(returned) =>\n\t\t\t\t\t\tdiffComponentChildren<TNode, TResult>(ctx, returned, false),\n\t\t\t\t\t(err) => {\n\t\t\t\t\t\tsetFlag(ctx.ret, IsErrored);\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t},\n\t\t\t\t),\n\t\t\t];\n\t\t}\n\t}\n\n\tlet iteration!: Promise<ChildrenIteratorResult> | ChildrenIteratorResult;\n\tif (initial) {\n\t\ttry {\n\t\t\tsetFlag(ctx.ret, IsExecuting);\n\t\t\tmarkStart(tagName);\n\t\t\titeration = ctx.iterator!.next();\n\t\t} catch (err) {\n\t\t\tsetFlag(ctx.ret, IsErrored);\n\t\t\tthrow err;\n\t\t} finally {\n\t\t\tsetFlag(ctx.ret, IsExecuting, false);\n\t\t}\n\n\t\tif (isPromiseLike(iteration)) {\n\t\t\tsetFlag(ctx.ret, IsAsyncGen);\n\t\t} else {\n\t\t\tsetFlag(ctx.ret, IsSyncGen);\n\t\t}\n\t}\n\n\tif (getFlag(ctx.ret, IsSyncGen)) {\n\t\t// sync generator component\n\t\tif (!initial) {\n\t\t\ttry {\n\t\t\t\tsetFlag(ctx.ret, IsExecuting);\n\t\t\t\tconst oldResult = ctx.adapter.read(getValue(ctx.ret));\n\t\t\t\tmarkStart(tagName);\n\t\t\t\titeration = ctx.iterator!.next(oldResult);\n\t\t\t\tmeasureMark(tagName);\n\t\t\t} catch (err) {\n\t\t\t\tsetFlag(ctx.ret, IsErrored);\n\t\t\t\tthrow err;\n\t\t\t} finally {\n\t\t\t\tsetFlag(ctx.ret, IsExecuting, false);\n\t\t\t}\n\t\t} else {\n\t\t\tmeasureMark(tagName);\n\t\t}\n\n\t\tif (isPromiseLike(iteration)) {\n\t\t\tthrow new Error(\"Mixed generator component\");\n\t\t}\n\n\t\tif (\n\t\t\tgetFlag(ctx.ret, IsInForOfLoop) &&\n\t\t\t!getFlag(ctx.ret, NeedsToYield) &&\n\t\t\t!getFlag(ctx.ret, IsUnmounted) &&\n\t\t\t!getFlag(ctx.ret, IsSchedulingRefresh)\n\t\t) {\n\t\t\tconsole.error(\n\t\t\t\t`Component <${getTagName(ctx.ret.el.tag)}> yielded/returned more than once in for...of loop`,\n\t\t\t);\n\t\t}\n\n\t\tsetFlag(ctx.ret, NeedsToYield, false);\n\t\tsetFlag(ctx.ret, IsSchedulingRefresh, false);\n\t\tif (iteration.done) {\n\t\t\tsetFlag(ctx.ret, IsSyncGen, false);\n\t\t\tctx.iterator = undefined;\n\t\t}\n\n\t\tconst diff = diffComponentChildren<TNode, TResult>(\n\t\t\tctx,\n\t\t\titeration.value as Children,\n\t\t\t!iteration.done,\n\t\t);\n\t\tconst block = isPromiseLike(diff) ? diff.catch(NOOP) : undefined;\n\t\treturn [block, diff];\n\t} else {\n\t\tif (getFlag(ctx.ret, IsInForAwaitOfLoop)) {\n\t\t\t// initializes the async generator loop\n\t\t\tmeasureMark(tagName);\n\t\t\tpullComponent(ctx, iteration);\n\t\t\tconst block = resumePropsAsyncIterator(ctx);\n\t\t\treturn [block, ctx.pull && ctx.pull.diff];\n\t\t} else {\n\t\t\t// We call resumePropsAsyncIterator in case the component exits the\n\t\t\t// for...of loop\n\t\t\tresumePropsAsyncIterator(ctx);\n\t\t\tif (!initial) {\n\t\t\t\ttry {\n\t\t\t\t\tsetFlag(ctx.ret, IsExecuting);\n\t\t\t\t\tconst oldResult = ctx.adapter.read(getValue(ctx.ret));\n\t\t\t\t\tmarkStart(tagName);\n\t\t\t\t\titeration = ctx.iterator!.next(oldResult);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tsetFlag(ctx.ret, IsErrored);\n\t\t\t\t\tthrow err;\n\t\t\t\t} finally {\n\t\t\t\t\tsetFlag(ctx.ret, IsExecuting, false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!isPromiseLike(iteration)) {\n\t\t\t\tthrow new Error(\"Mixed generator component\");\n\t\t\t}\n\n\t\t\titeration.then(\n\t\t\t\t() => measureMark(tagName),\n\t\t\t\t() => measureMark(tagName),\n\t\t\t);\n\t\t\tconst diff = iteration.then(\n\t\t\t\t(iteration) => {\n\t\t\t\t\tif (getFlag(ctx.ret, IsInForAwaitOfLoop)) {\n\t\t\t\t\t\t// We have entered a for await...of loop, so we start pulling\n\t\t\t\t\t\tpullComponent(ctx, iteration);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tgetFlag(ctx.ret, IsInForOfLoop) &&\n\t\t\t\t\t\t\t!getFlag(ctx.ret, NeedsToYield) &&\n\t\t\t\t\t\t\t!getFlag(ctx.ret, IsUnmounted) &&\n\t\t\t\t\t\t\t!getFlag(ctx.ret, IsSchedulingRefresh)\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t\t\t`Component <${getTagName(ctx.ret.el.tag)}> yielded/returned more than once in for...of loop`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tsetFlag(ctx.ret, NeedsToYield, false);\n\t\t\t\t\tsetFlag(ctx.ret, IsSchedulingRefresh, false);\n\t\t\t\t\tif (iteration.done) {\n\t\t\t\t\t\tsetFlag(ctx.ret, IsAsyncGen, false);\n\t\t\t\t\t\tctx.iterator = undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn diffComponentChildren<TNode, TResult>(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\t// Children can be void so we eliminate that here\n\t\t\t\t\t\titeration.value as Children,\n\t\t\t\t\t\t!iteration.done,\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\t(err) => {\n\t\t\t\t\tsetFlag(ctx.ret, IsErrored);\n\t\t\t\t\tthrow err;\n\t\t\t\t},\n\t\t\t);\n\n\t\t\treturn [diff.catch(NOOP), diff];\n\t\t}\n\t}\n}\n\n/**\n * Called to resume the props async iterator for async generator components.\n *\n * @returns {Promise<undefined> | undefined} A possible promise which\n * represents the duration during which the component is blocked.\n */\nfunction resumePropsAsyncIterator(\n\tctx: ContextState,\n): Promise<undefined> | undefined {\n\tif (ctx.onPropsProvided) {\n\t\tctx.onPropsProvided(ctx.ret.el.props);\n\t\tctx.onPropsProvided = undefined;\n\t\tsetFlag(ctx.ret, PropsAvailable, false);\n\t} else {\n\t\tsetFlag(ctx.ret, PropsAvailable);\n\t\tif (getFlag(ctx.ret, IsInForAwaitOfLoop)) {\n\t\t\treturn new Promise<undefined>(\n\t\t\t\t(resolve) => (ctx.onPropsRequested = resolve as () => unknown),\n\t\t\t);\n\t\t}\n\t}\n\n\treturn (\n\t\tctx.pull && ctx.pull.iterationP && ctx.pull.iterationP.then(NOOP, NOOP)\n\t);\n}\n\n/**\n * The logic for pulling from async generator components when they are in a for\n * await...of loop is implemented here.\n *\n * It makes sense to group this logic in a single async loop to prevent race\n * conditions caused by calling next(), throw() and return() concurrently.\n */\nasync function pullComponent<TNode, TResult>(\n\tctx: ContextState<TNode, unknown, TNode, TResult>,\n\titerationP:\n\t\t| Promise<ChildrenIteratorResult>\n\t\t| ChildrenIteratorResult\n\t\t| undefined,\n): Promise<void> {\n\tif (!iterationP || ctx.pull) {\n\t\treturn;\n\t}\n\n\tctx.pull = {iterationP: undefined, diff: undefined, onChildError: undefined};\n\n\t// TODO: replace done with iteration\n\t//let iteration: ChildrenIteratorResult | undefined;\n\tlet done = false;\n\ttry {\n\t\tlet childError: any;\n\t\twhile (!done) {\n\t\t\tif (isPromiseLike(iterationP)) {\n\t\t\t\tctx.pull.iterationP = iterationP;\n\t\t\t}\n\n\t\t\tlet onDiff!: Function;\n\t\t\tctx.pull.diff = new Promise((resolve) => (onDiff = resolve)).then(\n\t\t\t\t(): undefined => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(getFlag(ctx.ret, IsUpdating) || getFlag(ctx.ret, IsRefreshing))\n\t\t\t\t\t) {\n\t\t\t\t\t\tcommitComponent(ctx, []);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t(err) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\t!(getFlag(ctx.ret, IsUpdating) || getFlag(ctx.ret, IsRefreshing)) ||\n\t\t\t\t\t\t// TODO: is this flag necessary?\n\t\t\t\t\t\t!getFlag(ctx.ret, NeedsToYield)\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn propagateError(ctx, err, []);\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow err;\n\t\t\t\t},\n\t\t\t);\n\n\t\t\tlet iteration: ChildrenIteratorResult;\n\t\t\ttry {\n\t\t\t\titeration = await iterationP;\n\t\t\t} catch (err) {\n\t\t\t\tdone = true;\n\t\t\t\tsetFlag(ctx.ret, IsErrored);\n\t\t\t\tsetFlag(ctx.ret, NeedsToYield, false);\n\t\t\t\tonDiff(Promise.reject(err));\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\t// this must be set after iterationP is awaited\n\t\t\tlet oldResult: Promise<TResult>;\n\t\t\t{\n\t\t\t\t// The 'floating' flag tracks whether the promise passed to the generator\n\t\t\t\t// is handled (via await, then, or catch). If handled, we reject the\n\t\t\t\t// promise so the user can catch errors. If not, we inject the error back\n\t\t\t\t// into the generator using throw, like for sync generator components.\n\t\t\t\tlet floating = true;\n\t\t\t\tconst oldResult1 = new Promise<TResult>((resolve, reject) => {\n\t\t\t\t\tctx.ctx.schedule(resolve);\n\t\t\t\t\tctx.pull!.onChildError = (err: any) => {\n\t\t\t\t\t\treject(err);\n\t\t\t\t\t\tif (floating) {\n\t\t\t\t\t\t\tchildError = err;\n\t\t\t\t\t\t\tresumePropsAsyncIterator(ctx);\n\t\t\t\t\t\t\treturn ctx.pull!.diff;\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t});\n\n\t\t\t\toldResult1.catch(NOOP);\n\t\t\t\t// We use Object.create() to clone the promise for float detection\n\t\t\t\t// because modern JS engines skip calling .then() on promises awaited\n\t\t\t\t// with await.\n\t\t\t\toldResult = Object.create(oldResult1);\n\t\t\t\toldResult.then = function (\n\t\t\t\t\tonfulfilled?: ((value: TResult) => any) | null,\n\t\t\t\t\tonrejected?: ((reason: any) => any) | null,\n\t\t\t\t): Promise<any> {\n\t\t\t\t\tfloating = false;\n\t\t\t\t\treturn oldResult1.then(onfulfilled, onrejected);\n\t\t\t\t};\n\n\t\t\t\toldResult.catch = function (\n\t\t\t\t\tonrejected?: ((reason: any) => any) | null,\n\t\t\t\t): Promise<any> {\n\t\t\t\t\tfloating = false;\n\t\t\t\t\treturn oldResult1.catch(onrejected);\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (childError != null) {\n\t\t\t\ttry {\n\t\t\t\t\tsetFlag(ctx.ret, IsExecuting);\n\t\t\t\t\tif (typeof ctx.iterator!.throw !== \"function\") {\n\t\t\t\t\t\tthrow childError;\n\t\t\t\t\t}\n\t\t\t\t\titeration = await ctx.iterator!.throw(childError);\n\t\t\t\t} catch (err) {\n\t\t\t\t\tdone = true;\n\t\t\t\t\tsetFlag(ctx.ret, IsErrored);\n\t\t\t\t\tsetFlag(ctx.ret, NeedsToYield, false);\n\t\t\t\t\tonDiff(Promise.reject(err));\n\t\t\t\t\tbreak;\n\t\t\t\t} finally {\n\t\t\t\t\tchildError = undefined;\n\t\t\t\t\tsetFlag(ctx.ret, IsExecuting, false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// this makes sure we pause before entering a loop if we yield before it\n\t\t\tif (!getFlag(ctx.ret, IsInForAwaitOfLoop)) {\n\t\t\t\tsetFlag(ctx.ret, PropsAvailable, false);\n\t\t\t}\n\n\t\t\tdone = !!iteration.done;\n\n\t\t\tlet diff: Promise<undefined> | undefined;\n\t\t\ttry {\n\t\t\t\tif (!isPromiseLike(iterationP)) {\n\t\t\t\t\t// if iterationP is an iteration and not a promise, the component was\n\t\t\t\t\t// not in a for await...of loop when the iteration started, so we can\n\t\t\t\t\t// skip the diffing of children as it is handled elsewhere.\n\t\t\t\t\tdiff = undefined;\n\t\t\t\t} else if (\n\t\t\t\t\t!getFlag(ctx.ret, NeedsToYield) &&\n\t\t\t\t\tgetFlag(ctx.ret, PropsAvailable) &&\n\t\t\t\t\tgetFlag(ctx.ret, IsInForAwaitOfLoop)\n\t\t\t\t) {\n\t\t\t\t\t// logic to skip yielded children in a stale for await of iteration.\n\t\t\t\t\tdiff = undefined;\n\t\t\t\t} else {\n\t\t\t\t\tdiff = diffComponentChildren<TNode, TResult>(\n\t\t\t\t\t\tctx,\n\t\t\t\t\t\titeration.value!,\n\t\t\t\t\t\t!iteration.done,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tonDiff(Promise.reject(err));\n\t\t\t} finally {\n\t\t\t\tonDiff(diff);\n\t\t\t\tsetFlag(ctx.ret, NeedsToYield, false);\n\t\t\t}\n\n\t\t\tif (getFlag(ctx.ret, IsUnmounted)) {\n\t\t\t\t// TODO: move this unmounted branch outside the loop\n\t\t\t\twhile (\n\t\t\t\t\t(!iteration || !iteration.done) &&\n\t\t\t\t\tctx.iterator &&\n\t\t\t\t\tgetFlag(ctx.ret, IsInForAwaitOfLoop)\n\t\t\t\t) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsetFlag(ctx.ret, IsExecuting);\n\t\t\t\t\t\titeration = await ctx.iterator.next(oldResult);\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tsetFlag(ctx.ret, IsErrored);\n\t\t\t\t\t\t// we throw the error here to cause an unhandled rejection because\n\t\t\t\t\t\t// the promise returned from pullComponent is never awaited\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tsetFlag(ctx.ret, IsExecuting, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!iteration || !iteration.done) &&\n\t\t\t\t\tctx.iterator &&\n\t\t\t\t\ttypeof ctx.iterator.return === \"function\"\n\t\t\t\t) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tsetFlag(ctx.ret, IsExecuting);\n\t\t\t\t\t\tawait ctx.iterator.return();\n\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\tsetFlag(ctx.ret, IsErrored);\n\t\t\t\t\t\tthrow err;\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tsetFlag(ctx.ret, IsExecuting, false);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t} else if (!getFlag(ctx.ret, IsInForAwaitOfLoop)) {\n\t\t\t\t// we have exited the for...await of, so updates will be handled by the\n\t\t\t\t// regular runComponent/enqueueComponent logic.\n\t\t\t\tbreak;\n\t\t\t} else if (!iteration.done) {\n\t\t\t\ttry {\n\t\t\t\t\tsetFlag(ctx.ret, IsExecuting);\n\t\t\t\t\titerationP = ctx.iterator!.next(\n\t\t\t\t\t\toldResult,\n\t\t\t\t\t) as Promise<ChildrenIteratorResult>;\n\t\t\t\t} finally {\n\t\t\t\t\tsetFlag(ctx.ret, IsExecuting, false);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} finally {\n\t\tif (done) {\n\t\t\tsetFlag(ctx.ret, IsAsyncGen, false);\n\t\t\tctx.iterator = undefined;\n\t\t}\n\n\t\tctx.pull = undefined;\n\t}\n}\n\nfunction commitComponent<TNode>(\n\tctx: ContextState<TNode>,\n\tschedulePromises: Array<PromiseLike<unknown>>,\n\thydrationNodes?: Array<TNode> | undefined,\n): ElementValue<TNode> {\n\tif (ctx.schedule) {\n\t\tctx.schedule.promise.then(() => {\n\t\t\tcommitComponent(ctx, []);\n\t\t\tpropagateComponent(ctx);\n\t\t});\n\t\treturn getValue(ctx.ret);\n\t}\n\n\tconst values = commitChildren(\n\t\tctx.adapter,\n\t\tctx.host,\n\t\tctx,\n\t\tctx.scope,\n\t\tctx.root,\n\t\tctx.ret,\n\t\tctx.index,\n\t\tschedulePromises,\n\t\thydrationNodes,\n\t);\n\n\tif (getFlag(ctx.ret, IsUnmounted)) {\n\t\treturn;\n\t}\n\n\taddEventTargetDelegates(ctx.ctx, values);\n\n\t// Execute schedule callbacks early to check for async deferral\n\tconst wasScheduling = getFlag(ctx.ret, IsScheduling);\n\tlet schedulePromises1: Array<PromiseLike<unknown>> | undefined;\n\tconst callbacks = scheduleMap.get(ctx);\n\tif (callbacks) {\n\t\tscheduleMap.delete(ctx);\n\t\tsetFlag(ctx.ret, IsScheduling);\n\t\tconst result = ctx.adapter.read(unwrap(values));\n\t\tfor (const callback of callbacks) {\n\t\t\tconst scheduleResult = callback(result);\n\t\t\tif (isPromiseLike(scheduleResult)) {\n\t\t\t\t(schedulePromises1 = schedulePromises1 || []).push(scheduleResult);\n\t\t\t}\n\t\t}\n\n\t\tif (schedulePromises1 && !getFlag(ctx.ret, DidCommit)) {\n\t\t\tconst scheduleCallbacksP = Promise.all(schedulePromises1).then(() => {\n\t\t\t\tsetFlag(ctx.ret, IsScheduling, wasScheduling);\n\t\t\t\tpropagateComponent(ctx);\n\t\t\t\tif (ctx.ret.fallback) {\n\t\t\t\t\tunmount(\n\t\t\t\t\t\tctx.adapter,\n\t\t\t\t\t\tctx.host,\n\t\t\t\t\t\tctx.parent,\n\t\t\t\t\t\tctx.root,\n\t\t\t\t\t\tctx.ret.fallback,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tctx.ret.fallback = undefined;\n\t\t\t});\n\n\t\t\tlet onAbort!: () => void;\n\t\t\tconst scheduleP = safeRace([\n\t\t\t\tscheduleCallbacksP,\n\t\t\t\tnew Promise<void>((resolve) => (onAbort = resolve)),\n\t\t\t]).finally(() => {\n\t\t\t\tctx.schedule = undefined;\n\t\t\t});\n\n\t\t\tctx.schedule = {promise: scheduleP, onAbort};\n\t\t\tschedulePromises.push(scheduleP);\n\t\t} else {\n\t\t\tsetFlag(ctx.ret, IsScheduling, wasScheduling);\n\t\t}\n\t} else {\n\t\tsetFlag(ctx.ret, IsScheduling, wasScheduling);\n\t}\n\n\tif (!getFlag(ctx.ret, IsScheduling)) {\n\t\tif (!getFlag(ctx.ret, IsUpdating)) {\n\t\t\tpropagateComponent(ctx);\n\t\t}\n\n\t\tif (ctx.ret.fallback) {\n\t\t\tunmount(\n\t\t\t\tctx.adapter,\n\t\t\t\tctx.host,\n\t\t\t\tctx.parent,\n\t\t\t\tctx.root,\n\t\t\t\tctx.ret.fallback,\n\t\t\t\tfalse,\n\t\t\t);\n\t\t}\n\n\t\tctx.ret.fallback = undefined;\n\t\tsetFlag(ctx.ret, IsUpdating, false);\n\t}\n\n\tsetFlag(ctx.ret, DidCommit);\n\t// We always use getValue() instead of the unwrapping values because there\n\t// are various ways in which the values could have been updated, especially\n\t// if schedule callbacks call refresh() or async mounting is happening.\n\treturn getValue(ctx.ret, true);\n}\n\n/**\n * Checks if a target retainer is active (contributing) in the host's retainer tree.\n * Performs a downward traversal from host to find if target is in the active path.\n */\nfunction isRetainerActive<TNode>(\n\ttarget: Retainer<TNode>,\n\thost: Retainer<TNode>,\n): boolean {\n\tconst stack: Retainer<TNode>[] = [host];\n\n\twhile (stack.length > 0) {\n\t\tconst current = stack.pop()!;\n\n\t\tif (current === target) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Add direct children to stack (skip if this is a host boundary)\n\t\t// Host boundaries are: DOM elements (string tags) or Portal, but NOT Fragment\n\t\tconst isHostBoundary =\n\t\t\tcurrent !== host &&\n\t\t\t((typeof current.el.tag === \"string\" && current.el.tag !== Fragment) ||\n\t\t\t\tcurrent.el.tag === Portal);\n\t\tif (current.children && !isHostBoundary) {\n\t\t\tif (Array.isArray(current.children)) {\n\t\t\t\tfor (const child of current.children) {\n\t\t\t\t\tif (child) {\n\t\t\t\t\t\tstack.push(child);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstack.push(current.children);\n\t\t\t}\n\t\t}\n\n\t\t// Add fallback chains (only if current retainer is using fallback)\n\t\tif (current.fallback && !getFlag(current, DidDiff)) {\n\t\t\tstack.push(current.fallback);\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Propagates component changes up to ancestors when rendering starts from a\n * component via refresh() or multiple for await...of renders. This handles\n * event listeners and DOM arrangement that would normally happen during\n * top-down rendering.\n */\nfunction propagateComponent<TNode>(ctx: ContextState<TNode>): void {\n\tconst values = getChildValues(ctx.ret, ctx.index);\n\taddEventTargetDelegates(\n\t\tctx.ctx,\n\t\tvalues,\n\t\t(ctx1) => ctx1[_ContextState].host === ctx.host,\n\t);\n\tconst host = ctx.host;\n\tconst initiator = ctx.ret;\n\n\t// Check if initiator is active in the host's tree\n\tif (!isRetainerActive(initiator, host)) {\n\t\treturn;\n\t}\n\n\t// Check if host has been committed (has a node)\n\t// Fixes #334: refresh() called before component yields\n\tif (!getFlag(host, DidCommit)) {\n\t\treturn;\n\t}\n\n\tconst props = stripSpecialProps(host.el.props);\n\tconst hostChildren = getChildValues(host, 0);\n\n\tctx.adapter.arrange({\n\t\ttag: host.el.tag as string | symbol,\n\t\ttagName: getTagName(host.el.tag),\n\t\tnode: host.value as TNode,\n\t\tprops,\n\t\toldProps: props,\n\t\tchildren: hostChildren,\n\t\tscope: host.scope,\n\t\troot: ctx.root,\n\t});\n\n\tflush(ctx.adapter, ctx.root, ctx);\n}\n\nasync function unmountComponent(\n\tctx: ContextState,\n\tisNested: boolean,\n): Promise<undefined> {\n\tif (getFlag(ctx.ret, IsUnmounted)) {\n\t\treturn;\n\t}\n\n\tlet cleanupPromises: Array<PromiseLike<unknown>> | undefined;\n\t// TODO: think about errror handling for callbacks\n\tconst callbacks = cleanupMap.get(ctx);\n\tif (callbacks) {\n\t\tconst oldResult = ctx.adapter.read(getValue(ctx.ret));\n\t\tcleanupMap.delete(ctx);\n\t\tfor (const callback of callbacks) {\n\t\t\tconst cleanup = callback(oldResult);\n\t\t\tif (isPromiseLike(cleanup)) {\n\t\t\t\t(cleanupPromises = cleanupPromises || []).push(cleanup);\n\t\t\t}\n\t\t}\n\t}\n\n\tlet didLinger = false;\n\tif (!isNested && cleanupPromises) {\n\t\tdidLinger = true;\n\t\tconst index = ctx.index;\n\t\tconst lingerers = ctx.host.lingerers || (ctx.host.lingerers = []);\n\t\tlet set = lingerers[index];\n\t\tif (set == null) {\n\t\t\tset = new Set<Retainer<unknown>>();\n\t\t\tlingerers[index] = set;\n\t\t}\n\n\t\tset.add(ctx.ret);\n\t\tawait Promise.all(cleanupPromises);\n\t\tset!.delete(ctx.ret);\n\t\tif (set!.size === 0) {\n\t\t\tlingerers[index] = undefined;\n\t\t}\n\n\t\tif (!lingerers.some(Boolean)) {\n\t\t\t// If there are no lingerers remaining, we can remove the lingerers array\n\t\t\tctx.host.lingerers = undefined;\n\t\t}\n\t}\n\n\tif (getFlag(ctx.ret, IsUnmounted)) {\n\t\t// If the component was unmounted while awaiting the cleanup callbacks,\n\t\t// we do not need to continue unmounting.\n\t\treturn;\n\t}\n\n\tsetFlag(ctx.ret, IsUnmounted);\n\n\t// If component has pending schedule promises, resolve them since component\n\t// is unmounting\n\tif (ctx.schedule) {\n\t\tctx.schedule.onAbort();\n\t\tctx.schedule = undefined;\n\t}\n\n\tclearEventListeners(ctx.ctx);\n\tunmountChildren(ctx.adapter, ctx.host, ctx, ctx.root, ctx.ret, isNested);\n\tif (didLinger) {\n\t\t// If we lingered, we call finalize to ensure rendering is finalized\n\t\tif (ctx.root != null) {\n\t\t\tctx.adapter.finalize(ctx.root);\n\t\t}\n\t}\n\n\tif (ctx.iterator) {\n\t\tif (ctx.pull) {\n\t\t\t// we let pullComponent handle unmounting\n\t\t\tresumePropsAsyncIterator(ctx);\n\t\t\treturn;\n\t\t}\n\n\t\t// we wait for inflight value so yields resume with the most up to date\n\t\t// props\n\t\tif (ctx.inflight) {\n\t\t\tawait ctx.inflight[1];\n\t\t}\n\n\t\tlet iteration: ChildrenIteratorResult | undefined;\n\t\tif (getFlag(ctx.ret, IsInForOfLoop)) {\n\t\t\ttry {\n\t\t\t\tsetFlag(ctx.ret, IsExecuting);\n\t\t\t\tconst oldResult = ctx.adapter.read(getValue(ctx.ret));\n\t\t\t\tconst iterationP = ctx.iterator!.next(oldResult);\n\t\t\t\tif (isPromiseLike(iterationP)) {\n\t\t\t\t\tif (!getFlag(ctx.ret, IsAsyncGen)) {\n\t\t\t\t\t\tthrow new Error(\"Mixed generator component\");\n\t\t\t\t\t}\n\n\t\t\t\t\titeration = await iterationP;\n\t\t\t\t} else {\n\t\t\t\t\tif (!getFlag(ctx.ret, IsSyncGen)) {\n\t\t\t\t\t\tthrow new Error(\"Mixed generator component\");\n\t\t\t\t\t}\n\n\t\t\t\t\titeration = iterationP;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tsetFlag(ctx.ret, IsErrored);\n\t\t\t\tthrow err;\n\t\t\t} finally {\n\t\t\t\tsetFlag(ctx.ret, IsExecuting, false);\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\t(!iteration || !iteration.done) &&\n\t\t\tctx.iterator &&\n\t\t\ttypeof ctx.iterator.return === \"function\"\n\t\t) {\n\t\t\ttry {\n\t\t\t\tsetFlag(ctx.ret, IsExecuting);\n\t\t\t\tconst iterationP = ctx.iterator.return();\n\t\t\t\tif (isPromiseLike(iterationP)) {\n\t\t\t\t\tif (!getFlag(ctx.ret, IsAsyncGen)) {\n\t\t\t\t\t\tthrow new Error(\"Mixed generator component\");\n\t\t\t\t\t}\n\n\t\t\t\t\titeration = await iterationP;\n\t\t\t\t} else {\n\t\t\t\t\tif (!getFlag(ctx.ret, IsSyncGen)) {\n\t\t\t\t\t\tthrow new Error(\"Mixed generator component\");\n\t\t\t\t\t}\n\n\t\t\t\t\titeration = iterationP;\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tsetFlag(ctx.ret, IsErrored);\n\t\t\t\tthrow err;\n\t\t\t} finally {\n\t\t\t\tsetFlag(ctx.ret, IsExecuting, false);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/*** ERROR HANDLING UTILITIES ***/\nfunction handleChildError<TNode>(\n\tctx: ContextState<TNode, unknown, TNode>,\n\terr: unknown,\n): Promise<undefined> | undefined {\n\tif (!ctx.iterator) {\n\t\tthrow err;\n\t}\n\n\tif (ctx.pull) {\n\t\t// we let pullComponent handle child errors\n\t\tctx.pull.onChildError!(err);\n\t\treturn ctx.pull.diff;\n\t}\n\n\tif (!ctx.iterator.throw) {\n\t\tthrow err;\n\t}\n\n\tresumePropsAsyncIterator(ctx);\n\tlet iteration: ChildrenIteratorResult | Promise<ChildrenIteratorResult>;\n\ttry {\n\t\tsetFlag(ctx.ret, IsExecuting);\n\t\titeration = ctx.iterator.throw(err);\n\t} catch (err) {\n\t\tsetFlag(ctx.ret, IsErrored);\n\t\tthrow err;\n\t} finally {\n\t\tsetFlag(ctx.ret, IsExecuting, false);\n\t}\n\n\tif (isPromiseLike(iteration)) {\n\t\treturn iteration.then(\n\t\t\t(iteration) => {\n\t\t\t\tif (iteration.done) {\n\t\t\t\t\tsetFlag(ctx.ret, IsSyncGen, false);\n\t\t\t\t\tsetFlag(ctx.ret, IsAsyncGen, false);\n\t\t\t\t\tctx.iterator = undefined;\n\t\t\t\t}\n\n\t\t\t\treturn diffComponentChildren(\n\t\t\t\t\tctx,\n\t\t\t\t\titeration.value as Children,\n\t\t\t\t\t!iteration.done,\n\t\t\t\t);\n\t\t\t},\n\t\t\t(err) => {\n\t\t\t\tsetFlag(ctx.ret, IsErrored);\n\t\t\t\tthrow err;\n\t\t\t},\n\t\t);\n\t}\n\n\tif (iteration.done) {\n\t\tsetFlag(ctx.ret, IsSyncGen, false);\n\t\tsetFlag(ctx.ret, IsAsyncGen, false);\n\t\tctx.iterator = undefined;\n\t}\n\n\treturn diffComponentChildren(\n\t\tctx,\n\t\titeration.value as Children,\n\t\t!iteration.done,\n\t);\n}\n\n/**\n * Propagates an error up the context tree by calling handleChildError with\n * each parent.\n *\n * @returns A promise which resolves to undefined when the error has been\n * handled, or undefined if the error was handled synchronously.\n */\nfunction propagateError<TNode>(\n\tctx: ContextState<TNode>,\n\terr: unknown,\n\tschedulePromises: Array<PromiseLike<unknown>>,\n): Promise<undefined> | undefined {\n\tconst parent = ctx.parent;\n\tif (!parent) {\n\t\tthrow err;\n\t}\n\n\tlet diff: Promise<undefined> | undefined;\n\ttry {\n\t\tdiff = handleChildError(parent, err);\n\t} catch (err) {\n\t\treturn propagateError(parent, err, schedulePromises);\n\t}\n\n\tif (isPromiseLike(diff)) {\n\t\treturn diff.then(\n\t\t\t() => void commitComponent(parent, schedulePromises),\n\t\t\t(err) => propagateError(parent, err, schedulePromises),\n\t\t);\n\t}\n\n\tcommitComponent(parent, schedulePromises);\n}\n\n/**\n * An interface which can be extended to provide strongly typed provisions.\n * See Context.prototype.consume and Context.prototype.provide.\n */\nexport interface ProvisionMap extends Crank.ProvisionMap {}\n\nexport interface EventMap extends Crank.EventMap {}\n\ntype MappedEventListener<T extends string> = (ev: Crank.EventMap[T]) => unknown;\n\ntype MappedEventListenerOrEventListenerObject<T extends string> =\n\t| MappedEventListener<T>\n\t| {handleEvent: MappedEventListener<T>};\n\nexport interface Context extends Crank.Context {\n\taddEventListener<T extends string>(\n\t\ttype: T,\n\t\tlistener: MappedEventListenerOrEventListenerObject<T> | null,\n\t\toptions?: boolean | AddEventListenerOptions,\n\t): void;\n\n\tremoveEventListener<T extends string>(\n\t\ttype: T,\n\t\tlistener: MappedEventListenerOrEventListenerObject<T> | null,\n\t\toptions?: EventListenerOptions | boolean,\n\t): void;\n\n\tdispatchEvent<T extends string>(ev: EventMap[T] | Event): boolean;\n}\n\n// TODO: uncomment and use in the Element interface below\n// type CrankElement = Element;\ndeclare global {\n\tnamespace Crank {\n\t\texport interface EventMap {\n\t\t\t[tag: string]: Event;\n\t\t}\n\n\t\texport interface ProvisionMap {}\n\n\t\texport interface Context {}\n\t}\n\n\tnamespace JSX {\n\t\t// TODO: JSX Element type (the result of JSX expressions) don't work\n\t\t// because TypeScript demands that all Components return JSX elements for\n\t\t// some reason.\n\t\t// interface Element extends CrankElement {}\n\n\t\texport interface IntrinsicElements {\n\t\t\t[tag: string]: any;\n\t\t}\n\n\t\texport interface IntrinsicAttributes {\n\t\t\tchildren?: unknown;\n\t\t\tkey?: unknown;\n\t\t\tref?: unknown;\n\t\t\tcopy?: unknown;\n\t\t\thydrate?: unknown;\n\t\t}\n\n\t\texport interface ElementChildrenAttribute {\n\t\t\tchildren: {};\n\t\t}\n\t}\n}\n\n/**\n * A re-export of some Crank exports as the default export.\n *\n * Some JSX tools expect things like createElement/Fragment to be defined on\n * the default export. Prefer using the named exports directly.\n */\nexport {setProfiling};\n\nexport default {createElement, Fragment};\n"],"names":["unwrap","markStart","isPromiseLike","measureMark","safeRace","wrap","arrayify","removeEventTargetDelegates","CustomEventTarget","clearEventListeners","isIteratorLike","addEventTargetDelegates"],"mappings":"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"}