node_modules/preact/dist/preact.mjs.map in isomorfeus-preact-10.5.8 vs node_modules/preact/dist/preact.mjs.map in isomorfeus-preact-10.5.9
- old
+ new
@@ -1 +1 @@
-{"version":3,"file":"preact.module.js","sources":["../src/constants.js","../src/options.js","../src/create-element.js","../src/component.js","../src/render.js","../src/create-context.js","../src/util.js","../src/diff/children.js","../src/diff/props.js","../src/diff/index.js","../src/clone-element.js","../src/diff/catch-error.js"],"sourcesContent":["export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref,\n\t\tnull\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\tcontext.Provider._contextRef = context;\n\n\treturn context;\n}\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti = 0;\n\tnewParentVNode._children = toChildArray(\n\t\tnewParentVNode._children,\n\t\tchildVNode => {\n\t\t\tif (childVNode != null) {\n\t\t\t\tchildVNode._parent = newParentVNode;\n\t\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t\t// (holes).\n\t\t\t\toldVNode = oldChildren[i];\n\n\t\t\t\tif (\n\t\t\t\t\toldVNode === null ||\n\t\t\t\t\t(oldVNode &&\n\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t\t\t) {\n\t\t\t\t\toldChildren[i] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toldVNode &&\n\t\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toldVNode = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\t\tnewDom = diff(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\tglobalContext,\n\t\t\t\t\tisSvg,\n\t\t\t\t\texcessDomChildren,\n\t\t\t\t\tcommitQueue,\n\t\t\t\t\toldDom,\n\t\t\t\t\tisHydrating\n\t\t\t\t);\n\n\t\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t\tif (!refs) refs = [];\n\t\t\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t\t\t}\n\n\t\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\t\tif (newDom != null) {\n\t\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nextDom;\n\t\t\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t\t\t// can clean up the property\n\t\t\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\t\t\tnewDom != oldDom ||\n\t\t\t\t\t\tnewDom.parentNode == null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t\t\tnextDom = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// `j<oldChildrenLength; j+=2` is an alternative to `j++<oldChildrenLength/2`\n\t\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\t\tsibDom = oldDom, j = 0;\n\t\t\t\t\t\t\t\t(sibDom = sibDom.nextSibling) && j < oldChildrenLength;\n\t\t\t\t\t\t\t\tj += 2\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tif (sibDom == newDom) {\n\t\t\t\t\t\t\t\t\tbreak outer;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tparentDom.insertBefore(newDom, oldDom);\n\t\t\t\t\t\t\tnextDom = oldDom;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Browsers will infer an option's `value` from `textContent` when\n\t\t\t\t\t\t// no value is present. This essentially bypasses our code to set it\n\t\t\t\t\t\t// later in `diff()`. It works fine in all browsers except for IE11\n\t\t\t\t\t\t// where it breaks setting `select.value`. There it will be always set\n\t\t\t\t\t\t// to an empty string. Re-applying an options value will fix that, so\n\t\t\t\t\t\t// there are probably some internal data structures that aren't\n\t\t\t\t\t\t// updated properly.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// To fix it we make sure to reset the inferred value, so that our own\n\t\t\t\t\t\t// value check in `diff()` won't be skipped.\n\t\t\t\t\t\tif (newParentVNode.type == 'option') {\n\t\t\t\t\t\t\tparentDom.value = '';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// If we have pre-calculated the nextDOM node, use it. Else calculate it now\n\t\t\t\t\t// Strictly check for `undefined` here cuz `null` is a valid value of `nextDom`.\n\t\t\t\t\t// See more detail in create-element.js:createVNode\n\t\t\t\t\tif (nextDom !== undefined) {\n\t\t\t\t\t\toldDom = nextDom;\n\t\t\t\t\t} else {\n\t\t\t\t\t\toldDom = newDom.nextSibling;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t\t\t//\n\t\t\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t\t\t// node's nextSibling.\n\n\t\t\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t\t\t}\n\t\t\t\t} else if (\n\t\t\t\t\toldDom &&\n\t\t\t\t\toldVNode._dom == oldDom &&\n\t\t\t\t\toldDom.parentNode != parentDom\n\t\t\t\t) {\n\t\t\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\t\t\toldDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\ti++;\n\t\t\treturn childVNode;\n\t\t}\n\t);\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove children that are not part of any vnode.\n\tif (excessDomChildren != null && typeof newParentVNode.type != 'function') {\n\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) unmount(oldChildren[i], oldChildren[i]);\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @param {(vnode: import('../internal').VNode) => import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {Array<import('../internal').VNode | string | number>} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children == null || typeof children == 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t} else if (Array.isArray(children)) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t} else if (!callback) {\n\t\tflattened.push(children);\n\t} else if (typeof children == 'string' || typeof children == 'number') {\n\t\tflattened.push(callback(createVNode(null, children, null, null, children)));\n\t} else if (children._dom != null || children._component != null) {\n\t\tflattened.push(\n\t\t\tcallback(\n\t\t\t\tcreateVNode(\n\t\t\t\t\tchildren.type,\n\t\t\t\t\tchildren.props,\n\t\t\t\t\tchildren.key,\n\t\t\t\t\tnull,\n\t\t\t\t\tchildren._original\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t} else {\n\t\tflattened.push(callback(children));\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (\n\t\ttypeof value == 'number' &&\n\t\tIS_NON_DIMENSIONAL.test(key) === false\n\t) {\n\t\tstyle[key] = value + 'px';\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nfunction setProperty(dom, name, value, oldValue, isSvg) {\n\tlet s, useCapture, nameLower;\n\n\tif (isSvg) {\n\t\tif (name === 'className') {\n\t\t\tname = 'class';\n\t\t}\n\t} else if (name === 'class') {\n\t\tname = 'className';\n\t}\n\n\tif (name === 'style') {\n\t\ts = dom.style;\n\n\t\tif (typeof value == 'string') {\n\t\t\ts.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (let i in oldValue) {\n\t\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (let i in value) {\n\t\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tnameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t} else {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t} else if (\n\t\tname !== 'list' &&\n\t\tname !== 'tagName' &&\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\tname !== 'form' &&\n\t\tname !== 'type' &&\n\t\tname !== 'size' &&\n\t\t!isSvg &&\n\t\tname in dom\n\t) {\n\t\tdom[name] = value == null ? '' : value;\n\t} else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {\n\t\tif (name !== (name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value == null || value === false) {\n\t\t\t\tdom.removeAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom.setAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase(),\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tvalue == null ||\n\t\t\t(value === false &&\n\t\t\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t\t\t// The value `false` is different from the attribute not\n\t\t\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t\t\t// that other VDOM frameworks also always stringify `false`.\n\t\t\t\t!/^ar/.test(name))\n\t\t) {\n\t\t\tdom.removeAttribute(name);\n\t\t} else {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t(newVNode._original === oldVNode._original && !c._processingException)\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = isTopLevelFragment\n\t\t\t\t? tmp.props.children\n\t\t\t\t: Array.isArray(tmp)\n\t\t\t\t? tmp\n\t\t\t\t: [tmp];\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (oldProps === EMPTY_OBJ) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t}\n\t\telse {\n\t\t\tnewVNode._children = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\tnewProps.value !== undefined &&\n\t\t\t\tnewProps.value !== dom.value\n\t\t\t) {\n\t\t\t\tdom.value = newProps.value == null ? '' : newProps.value;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\tnewProps.checked !== undefined &&\n\t\t\t\tnewProps.checked !== dom.checked\n\t\t\t) {\n\t\t\t\tdom.checked = newProps.checked;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./index').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\tlet normalizedProps = {};\n\tfor (const i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n"],"names":["options","isValidElement","rerenderQueue","rerenderCount","defer","prevDebounce","IS_HYDRATE","i","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","assign","obj","props","removeNode","node","parentNode","removeChild","createElement","type","children","normalizedProps","arguments","length","push","defaultProps","undefined","createVNode","key","ref","original","vnode","_children","_parent","_depth","_dom","_nextDom","_component","constructor","_original","createRef","Fragment","Component","context","getDomSibling","childIndex","indexOf","sibling","updateParentDomPointers","child","base","enqueueRender","c","_dirty","debounceRendering","process","queue","sort","a","b","_vnode","some","component","commitQueue","oldVNode","newDom","oldDom","parentDom","_parentDom","diff","_globalContext","ownerSVGElement","commitRoot","diffChildren","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","j","sibDom","firstChildDom","refs","oldChildren","oldChildrenLength","toChildArray","childVNode","nextDom","outer","appendChild","nextSibling","insertBefore","value","unmount","applyRef","callback","flattened","Array","isArray","diffProps","dom","newProps","oldProps","hydrate","setProperty","setStyle","style","test","name","oldValue","s","useCapture","nameLower","cssText","replace","toLowerCase","slice","addEventListener","eventProxy","_listeners","removeEventListener","removeAttributeNS","setAttributeNS","removeAttribute","setAttribute","e","event","newVNode","tmp","isNew","oldState","snapshot","clearProcessingException","provider","componentContext","newType","_diff","contextType","_id","_defaultValue","_processingException","_pendingError","prototype","render","doRender","sub","state","_renderCallbacks","_nextState","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","_force","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","_render","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","diffed","_catchError","root","_commit","cb","call","oldHtml","newHtml","nodeType","localName","document","createTextNode","createElementNS","is","data","childNodes","dangerouslySetInnerHTML","attributes","__html","innerHTML","checked","current","parentVNode","skipRemove","r","componentWillUnmount","this","replaceNode","_root","cloneElement","createContext","defaultValue","ctx","Consumer","Provider","subs","_this","_props","old","splice","_contextRef","error","hasCaught","getDerivedStateFromError","setState","componentDidCatch","update","forceUpdate","Promise","then","bind","resolve","setTimeout"],"mappings":"AAAO,ICWDA,ECyFOC,ECiETC,EACAC,EAQEC,EAcFC,ECvLEC,ECHKC,ELFEC,EAAY,GACZC,EAAY,GACZC,EAAqB,8DMK3B,SAASC,EAAOC,EAAKC,OACtB,IAAIN,KAAKM,EAAOD,EAAIL,GAAKM,EAAMN,YAU9B,SAASO,EAAWC,OACtBC,EAAaD,EAAKC,WAClBA,GAAYA,EAAWC,YAAYF,GJVxC,SAAgBG,EAAcC,EAAMN,EAAOO,GAA3C,IAEEb,cADGc,EAAkB,OAEjBd,KAAKM,EACC,QAANN,GAAqB,QAANA,IAAac,EAAgBd,GAAKM,EAAMN,OAGxDe,UAAUC,OAAS,MACtBH,EAAW,CAACA,GAEPb,EAAI,EAAGA,EAAIe,UAAUC,OAAQhB,IACjCa,EAASI,KAAKF,EAAUf,OAGV,MAAZa,IACHC,EAAgBD,SAAWA,GAKT,mBAARD,GAA2C,MAArBA,EAAKM,iBAChClB,KAAKY,EAAKM,kBACaC,IAAvBL,EAAgBd,KACnBc,EAAgBd,GAAKY,EAAKM,aAAalB,WAKnCoB,EACNR,EACAE,EACAR,GAASA,EAAMe,IACff,GAASA,EAAMgB,IACf,MAgBK,SAASF,EAAYR,EAAMN,EAAOe,EAAKC,EAAKC,OAG5CC,EAAQ,CACbZ,KAAAA,EACAN,MAAAA,EACAe,IAAAA,EACAC,IAAAA,EACAG,IAAW,KACXC,GAAS,KACTC,IAAQ,EACRC,IAAM,KAKNC,SAAUV,EACVW,IAAY,KACZC,iBAAaZ,EACba,IAAWT,UAGI,MAAZA,IAAkBC,EAAMQ,IAAYR,GACpC/B,EAAQ+B,OAAO/B,EAAQ+B,MAAMA,GAE1BA,EAGR,SAAgBS,UACR,GAGD,SAASC,EAAS5B,UACjBA,EAAMO,SChFP,SAASsB,EAAU7B,EAAO8B,QAC3B9B,MAAQA,OACR8B,QAAUA,EAqET,SAASC,EAAcb,EAAOc,MAClB,MAAdA,SAEId,EAAME,GACVW,EAAcb,EAAME,GAASF,EAAME,GAAQD,IAAUc,QAAQf,GAAS,GACtE,aAGAgB,EACGF,EAAad,EAAMC,IAAUT,OAAQsB,OAG5B,OAFfE,EAAUhB,EAAMC,IAAUa,KAEa,MAAhBE,EAAQZ,WAIvBY,EAAQZ,UASW,mBAAdJ,EAAMZ,KAAqByB,EAAcb,GAAS,KAsCjE,SAASiB,EAAwBjB,GAAjC,IAGWxB,EACJ0C,KAHyB,OAA1BlB,EAAQA,EAAME,KAAwC,MAApBF,EAAMM,IAAoB,KAChEN,EAAMI,IAAOJ,EAAMM,IAAWa,KAAO,KAC5B3C,EAAI,EAAGA,EAAIwB,EAAMC,IAAUT,OAAQhB,OAE9B,OADT0C,EAAQlB,EAAMC,IAAUzB,KACO,MAAd0C,EAAMd,IAAc,CACxCJ,EAAMI,IAAOJ,EAAMM,IAAWa,KAAOD,EAAMd,iBAKtCa,EAAwBjB,IAqC1B,SAASoB,EAAcC,KAE1BA,EAAEC,MACFD,EAAEC,KAAS,IACZnD,EAAcsB,KAAK4B,KAClBjD,KACFE,IAAiBL,EAAQsD,sBAEzBjD,EAAeL,EAAQsD,oBACNlD,GAAOmD,GAK1B,SAASA,YACJC,EACIrD,EAAgBD,EAAcqB,QACrCiC,EAAQtD,EAAcuD,KAAK,SAACC,EAAGC,UAAMD,EAAEE,IAAO1B,IAASyB,EAAEC,IAAO1B,MAChEhC,EAAgB,GAGhBsD,EAAMK,KAAK,SAAAT,GApGb,IAAyBU,EAMnBC,EACEC,EAGFC,EATDlC,EACHmC,EACAC,EAkGKf,EAAEC,MAnGPa,GADGnC,GADoB+B,EAqGQV,GApGVQ,KACNzB,KACfgC,EAAYL,EAAUM,OAGlBL,EAAc,IACZC,EAAWrD,EAAO,GAAIoB,IACnBQ,IAAYyB,EAEjBC,EAASI,EACZF,EACApC,EACAiC,EACAF,EAAUQ,SACoB5C,IAA9ByC,EAAUI,gBACV,KACAR,EACU,MAAVG,EAAiBtB,EAAcb,GAASmC,GAEzCM,EAAWT,EAAahC,GAEpBkC,GAAUC,GACblB,EAAwBjB,OIjH3B,SAAgB0C,EACfN,EACAO,EACAC,EACAC,EACAC,EACAC,EACAf,EACAG,EACAa,GATD,IAWKxE,EAAGyE,EAAGhB,EAAUC,EAAQgB,EAAQC,EAAeC,EAI/CC,EAAeT,GAAkBA,EAAe3C,KAAcvB,EAE9D4E,EAAoBD,EAAY7D,UAMhC2C,GAAU1D,IAEZ0D,EADwB,MAArBY,EACMA,EAAkB,GACjBO,EACDzC,EAAc+B,EAAgB,GAE9B,MAIXpE,EAAI,EACJmE,EAAe1C,IAAYsD,EAC1BZ,EAAe1C,IACf,SAAAuD,MACmB,MAAdA,EAAoB,IACvBA,EAAWtD,GAAUyC,EACrBa,EAAWrD,IAASwC,EAAexC,IAAS,EAS9B,QAHd8B,EAAWoB,EAAY7E,KAIrByD,GACAuB,EAAW3D,KAAOoC,EAASpC,KAC3B2D,EAAWpE,OAAS6C,EAAS7C,KAE9BiE,EAAY7E,QAAKmB,WAIZsD,EAAI,EAAGA,EAAIK,EAAmBL,IAAK,KACvChB,EAAWoB,EAAYJ,KAKtBO,EAAW3D,KAAOoC,EAASpC,KAC3B2D,EAAWpE,OAAS6C,EAAS7C,KAC5B,CACDiE,EAAYJ,QAAKtD,QAGlBsC,EAAW,QAObC,EAASI,EACRF,EACAoB,EALDvB,EAAWA,GAAYxD,EAOtBoE,EACAC,EACAC,EACAf,EACAG,EACAa,IAGIC,EAAIO,EAAW1D,MAAQmC,EAASnC,KAAOmD,IACtCG,IAAMA,EAAO,IACdnB,EAASnC,KAAKsD,EAAK3D,KAAKwC,EAASnC,IAAK,KAAM0D,GAChDJ,EAAK3D,KAAKwD,EAAGO,EAAWlD,KAAc4B,EAAQsB,IAIjC,MAAVtB,EAAgB,KAKfuB,KAJiB,MAAjBN,IACHA,EAAgBjB,QAIWvC,IAAxB6D,EAAWnD,IAIdoD,EAAUD,EAAWnD,IAMrBmD,EAAWnD,SAAWV,OAChB,GACNoD,GAAqBd,GACrBC,GAAUC,GACW,MAArBD,EAAOjD,WACN,CAKDyE,EAAO,GAAc,MAAVvB,GAAkBA,EAAOlD,aAAemD,EAClDA,EAAUuB,YAAYzB,GACtBuB,EAAU,SACJ,KAGLP,EAASf,EAAQc,EAAI,GACpBC,EAASA,EAAOU,cAAgBX,EAAIK,EACrCL,GAAK,KAEDC,GAAUhB,QACPwB,EAGRtB,EAAUyB,aAAa3B,EAAQC,GAC/BsB,EAAUtB,EAagB,UAAvBQ,EAAevD,OAClBgD,EAAU0B,MAAQ,IAQnB3B,OADexC,IAAZ8D,EACMA,EAEAvB,EAAO0B,YAGiB,mBAAvBjB,EAAevD,OASzBuD,EAAetC,IAAW8B,QAG3BA,GACAF,EAAS7B,KAAQ+B,GACjBA,EAAOlD,YAAcmD,IAIrBD,EAAStB,EAAcoB,WAIzBzD,IACOgF,IAITb,EAAevC,IAAO+C,EAGG,MAArBJ,GAA2D,mBAAvBJ,EAAevD,SACjDZ,EAAIuE,EAAkBvD,OAAQhB,KACN,MAAxBuE,EAAkBvE,IAAYO,EAAWgE,EAAkBvE,QAK5DA,EAAI8E,EAAmB9E,KACL,MAAlB6E,EAAY7E,IAAYuF,EAAQV,EAAY7E,GAAI6E,EAAY7E,OAI7D4E,MACE5E,EAAI,EAAGA,EAAI4E,EAAK5D,OAAQhB,IAC5BwF,EAASZ,EAAK5E,GAAI4E,IAAO5E,GAAI4E,IAAO5E,IAcvC,SAAgB+E,EAAalE,EAAU4E,EAAUC,MAC/B,MAAbA,IAAmBA,EAAY,IAEnB,MAAZ7E,GAAuC,kBAAZA,EAC1B4E,GAAUC,EAAUzE,KAAKwE,EAAS,YAChC,GAAIE,MAAMC,QAAQ/E,OACnB,IAAIb,EAAI,EAAGA,EAAIa,EAASG,OAAQhB,IACpC+E,EAAalE,EAASb,GAAIyF,EAAUC,QAKrCA,EAAUzE,KAHCwE,EAGIA,EADc,iBAAZ5E,GAA2C,iBAAZA,EACxBO,EAAY,KAAMP,EAAU,KAAM,KAAMA,GACrC,MAAjBA,EAASe,KAAuC,MAAvBf,EAASiB,IAG1CV,EACCP,EAASD,KACTC,EAASP,MACTO,EAASQ,IACT,KACAR,EAASmB,KAKYnB,GAhBTA,UAmBT6E,ECvQD,SAASG,EAAUC,EAAKC,EAAUC,EAAU1B,EAAO2B,OACrDjG,MAECA,KAAKgG,EACC,aAANhG,GAA0B,QAANA,GAAiBA,KAAK+F,GAC7CG,EAAYJ,EAAK9F,EAAG,KAAMgG,EAAShG,GAAIsE,OAIpCtE,KAAK+F,EAENE,GAAiC,mBAAfF,EAAS/F,IACvB,aAANA,GACM,QAANA,GACAgG,EAAShG,KAAO+F,EAAS/F,IAEzBkG,EAAYJ,EAAK9F,EAAG+F,EAAS/F,GAAIgG,EAAShG,GAAIsE,GAKjD,SAAS6B,EAASC,EAAO/E,EAAKiE,GACd,MAAXjE,EAAI,GACP+E,EAAMF,YAAY7E,EAAKiE,GAKvBc,EAAM/E,GAHU,iBAATiE,IAC0B,IAAjCnF,EAAmBkG,KAAKhF,GAEXiE,EAAQ,KACF,MAATA,EACG,GAEAA,EAYf,SAASY,EAAYJ,EAAKQ,EAAMhB,EAAOiB,EAAUjC,GAAjD,IACKkC,EAAGC,EAAYC,EAsBP1G,EAQAA,KA5BRsE,EACU,cAATgC,IACHA,EAAO,SAEW,UAATA,IACVA,EAAO,aAGK,UAATA,KACHE,EAAIV,EAAIM,MAEY,iBAATd,EACVkB,EAAEG,QAAUrB,MACN,IACiB,iBAAZiB,IACVC,EAAEG,QAAU,GACZJ,EAAW,MAGRA,MACMvG,KAAKuG,EACPjB,GAAStF,KAAKsF,GACnBa,EAASK,EAAGxG,EAAG,OAKdsF,MACMtF,KAAKsF,EACRiB,GAAYjB,EAAMtF,KAAOuG,EAASvG,IACtCmG,EAASK,EAAGxG,EAAGsF,EAAMtF,QAOL,MAAZsG,EAAK,IAA0B,MAAZA,EAAK,IAChCG,EAAaH,KAAUA,EAAOA,EAAKM,QAAQ,WAAY,KACvDF,EAAYJ,EAAKO,cACjBP,GAAQI,KAAaZ,EAAMY,EAAYJ,GAAMQ,MAAM,GAE/CxB,GACEiB,GAAUT,EAAIiB,iBAAiBT,EAAMU,EAAYP,IACrDX,EAAImB,IAAenB,EAAImB,EAAa,KAAKX,GAAQhB,GAElDQ,EAAIoB,oBAAoBZ,EAAMU,EAAYP,IAGlC,SAATH,GACS,YAATA,GAGS,SAATA,GACS,SAATA,GACS,SAATA,IACChC,GACDgC,KAAQR,EAERA,EAAIQ,GAAiB,MAAThB,EAAgB,GAAKA,EACP,mBAATA,GAAgC,4BAATgB,IACpCA,KAAUA,EAAOA,EAAKM,QAAQ,WAAY,KAChC,MAATtB,IAA2B,IAAVA,EACpBQ,EAAIqB,kBACH,+BACAb,EAAKO,eAGNf,EAAIsB,eACH,+BACAd,EAAKO,cACLvB,GAIO,MAATA,IACW,IAAVA,IAOC,MAAMe,KAAKC,GAEbR,EAAIuB,gBAAgBf,GAEpBR,EAAIwB,aAAahB,EAAMhB,IAU1B,SAAS0B,EAAWO,QACdN,EAAWM,EAAE3G,MAAMnB,EAAQ+H,MAAQ/H,EAAQ+H,MAAMD,GAAKA,GCrI5D,SAAgBzD,EACfF,EACA6D,EACAhE,EACAY,EACAC,EACAC,EACAf,EACAG,EACAa,GATD,IAWKkD,EAWE7E,EAAG8E,EAAO3B,EAAU4B,EAAUC,EAAUC,EACxC/B,EAKAgC,EACAC,EAjBLC,EAAUR,EAAS7G,aAISO,IAAzBsG,EAAS1F,YAA2B,OAAO,MAE1C2F,EAAMjI,EAAQyI,MAAQR,EAAID,OAG9BvC,EAAO,GAAsB,mBAAX+C,EAAuB,IAEpClC,EAAW0B,EAASnH,MAKpByH,GADJL,EAAMO,EAAQE,cACQ9D,EAAcqD,EAAIU,KACpCJ,EAAmBN,EACpBK,EACCA,EAASzH,MAAMgF,MACfoC,EAAIW,GACLhE,EAGCZ,EAAS3B,IAEZgG,GADAjF,EAAI4E,EAAS3F,IAAa2B,EAAS3B,KACNwG,GAAuBzF,EAAE0F,KAGlD,cAAeN,GAAWA,EAAQO,UAAUC,OAC/ChB,EAAS3F,IAAae,EAAI,IAAIoF,EAAQlC,EAAUiC,IAEhDP,EAAS3F,IAAae,EAAI,IAAIV,EAAU4D,EAAUiC,GAClDnF,EAAEd,YAAckG,EAChBpF,EAAE4F,OAASC,GAERX,GAAUA,EAASY,IAAI9F,GAE3BA,EAAEvC,MAAQyF,EACLlD,EAAE+F,QAAO/F,EAAE+F,MAAQ,IACxB/F,EAAET,QAAU4F,EACZnF,EAAEkB,IAAiBM,EACnBsD,EAAQ9E,EAAEC,KAAS,EACnBD,EAAEgG,IAAmB,IAIF,MAAhBhG,EAAEiG,MACLjG,EAAEiG,IAAajG,EAAE+F,OAEsB,MAApCX,EAAQc,2BACPlG,EAAEiG,KAAcjG,EAAE+F,QACrB/F,EAAEiG,IAAa1I,EAAO,GAAIyC,EAAEiG,MAG7B1I,EACCyC,EAAEiG,IACFb,EAAQc,yBAAyBhD,EAAUlD,EAAEiG,OAI/C9C,EAAWnD,EAAEvC,MACbsH,EAAW/E,EAAE+F,MAGTjB,EAEkC,MAApCM,EAAQc,0BACgB,MAAxBlG,EAAEmG,oBAEFnG,EAAEmG,qBAGwB,MAAvBnG,EAAEoG,mBACLpG,EAAEgG,IAAiB5H,KAAK4B,EAAEoG,uBAErB,IAE+B,MAApChB,EAAQc,0BACRhD,IAAaC,GACkB,MAA/BnD,EAAEqG,2BAEFrG,EAAEqG,0BAA0BnD,EAAUiC,IAIpCnF,EAAEsG,KACwB,MAA3BtG,EAAEuG,wBAKI,IAJNvG,EAAEuG,sBACDrD,EACAlD,EAAEiG,IACFd,IAEDP,EAASzF,MAAcyB,EAASzB,MAAca,EAAEyF,GAChD,KACDzF,EAAEvC,MAAQyF,EACVlD,EAAE+F,MAAQ/F,EAAEiG,IAERrB,EAASzF,MAAcyB,EAASzB,MAAWa,EAAEC,KAAS,GAC1DD,EAAEQ,IAASoE,EACXA,EAAS7F,IAAO6B,EAAS7B,IACzB6F,EAAShG,IAAYgC,EAAShC,IAC1BoB,EAAEgG,IAAiB7H,QACtBwC,EAAYvC,KAAK4B,GAGb6E,EAAM,EAAGA,EAAMD,EAAShG,IAAUT,OAAQ0G,IAC1CD,EAAShG,IAAUiG,KACtBD,EAAShG,IAAUiG,GAAKhG,GAAU+F,SAI9BvC,EAGsB,MAAzBrC,EAAEwG,qBACLxG,EAAEwG,oBAAoBtD,EAAUlD,EAAEiG,IAAYd,GAGnB,MAAxBnF,EAAEyG,oBACLzG,EAAEgG,IAAiB5H,KAAK,WACvB4B,EAAEyG,mBAAmBtD,EAAU4B,EAAUC,KAK5ChF,EAAET,QAAU4F,EACZnF,EAAEvC,MAAQyF,EACVlD,EAAE+F,MAAQ/F,EAAEiG,KAEPpB,EAAMjI,EAAQ8J,MAAU7B,EAAID,GAEjC5E,EAAEC,KAAS,EACXD,EAAEQ,IAASoE,EACX5E,EAAEgB,IAAaD,EAEf8D,EAAM7E,EAAE4F,OAAO5F,EAAEvC,MAAOuC,EAAE+F,MAAO/F,EAAET,SAGnCqF,EAAShG,IADD,MAAPiG,GAAeA,EAAI9G,MAAQsB,GAAuB,MAAXwF,EAAIrG,IAEzCqG,EAAIpH,MAAMO,SACV8E,MAAMC,QAAQ8B,GACdA,EACA,CAACA,GAEqB,MAArB7E,EAAE2G,kBACLnF,EAAgBjE,EAAOA,EAAO,GAAIiE,GAAgBxB,EAAE2G,oBAGhD7B,GAAsC,MAA7B9E,EAAE4G,0BACf5B,EAAWhF,EAAE4G,wBAAwBzD,EAAU4B,IAGhD1D,EACCN,EACA6D,EACAhE,EACAY,EACAC,EACAC,EACAf,EACAG,EACAa,GAGD3B,EAAEF,KAAO8E,EAAS7F,IAEdiB,EAAEgG,IAAiB7H,QACtBwC,EAAYvC,KAAK4B,GAGdiF,IACHjF,EAAE0F,IAAgB1F,EAAEyF,GAAuB,MAG5CzF,EAAEsG,KAAS,OAEU,MAArB5E,GACAkD,EAASzF,MAAcyB,EAASzB,KAEhCyF,EAAShG,IAAYgC,EAAShC,IAC9BgG,EAAS7F,IAAO6B,EAAS7B,KAEzB6F,EAAS7F,IAAO8H,EACfjG,EAAS7B,IACT6F,EACAhE,EACAY,EACAC,EACAC,EACAf,EACAgB,IAIGkD,EAAMjI,EAAQkK,SAASjC,EAAID,GAC/B,MAAOF,GACRE,EAASzF,IAAY,KACrBvC,EAAQmK,IAAYrC,EAAGE,EAAUhE,UAG3BgE,EAAS7F,IAQV,SAASqC,EAAWT,EAAaqG,GACnCpK,EAAQqK,KAASrK,EAAQqK,IAAQD,EAAMrG,GAE3CA,EAAYF,KAAK,SAAAT,OAEfW,EAAcX,EAAEgG,IAChBhG,EAAEgG,IAAmB,GACrBrF,EAAYF,KAAK,SAAAyG,GAChBA,EAAGC,KAAKnH,KAER,MAAO0E,GACR9H,EAAQmK,IAAYrC,EAAG1E,EAAEQ,QAmB5B,SAASqG,EACR5D,EACA2B,EACAhE,EACAY,EACAC,EACAC,EACAf,EACAgB,GARD,IAUKxE,EASI0C,EA+CHuH,EACAC,EAOOlK,EA/DRgG,EAAWvC,EAASnD,MACpByF,EAAW0B,EAASnH,SAGxBgE,EAA0B,QAAlBmD,EAAS7G,MAAkB0D,EAEV,MAArBC,MACEvE,EAAI,EAAGA,EAAIuE,EAAkBvD,OAAQhB,OAO/B,OANJ0C,EAAQ6B,EAAkBvE,OAOX,OAAlByH,EAAS7G,KACW,IAAnB8B,EAAMyH,SACNzH,EAAM0H,YAAc3C,EAAS7G,OAC/BkF,GAAOpD,GACP,CACDoD,EAAMpD,EACN6B,EAAkBvE,GAAK,cAMf,MAAP8F,EAAa,IACM,OAAlB2B,EAAS7G,YACLyJ,SAASC,eAAevE,GAGhCD,EAAMxB,EACH+F,SAASE,gBAAgB,6BAA8B9C,EAAS7G,MAChEyJ,SAAS1J,cACT8G,EAAS7G,KACTmF,EAASyE,IAAM,CAAEA,GAAIzE,EAASyE,KAGjCjG,EAAoB,KAEpBC,GAAc,KAGO,OAAlBiD,EAAS7G,KACRoF,IAAaD,GAAYD,EAAI2E,MAAQ1E,IACxCD,EAAI2E,KAAO1E,OAEN,IACmB,MAArBxB,IACHA,EAAoBrE,EAAU4G,MAAMkD,KAAKlE,EAAI4E,aAK1CT,GAFJjE,EAAWvC,EAASnD,OAASL,GAEN0K,wBACnBT,EAAUnE,EAAS4E,yBAIlBnG,EAAa,IACbwB,IAAa/F,MAChB+F,EAAW,GACFhG,EAAI,EAAGA,EAAI8F,EAAI8E,WAAW5J,OAAQhB,IAC1CgG,EAASF,EAAI8E,WAAW5K,GAAGsG,MAAQR,EAAI8E,WAAW5K,GAAGsF,OAInD4E,GAAWD,KAETC,GAAYD,GAAWC,EAAQW,QAAUZ,EAAQY,SACrD/E,EAAIgF,UAAaZ,GAAWA,EAAQW,QAAW,KAKlDhF,EAAUC,EAAKC,EAAUC,EAAU1B,EAAOE,GAGtC0F,EACHzC,EAAShG,IAAY,IAGrBgG,EAAShG,IAAYgG,EAASnH,MAAMO,SACpCqD,EACC4B,EACA2B,EACAhE,EACAY,EACkB,kBAAlBoD,EAAS7G,MAAmC0D,EAC5CC,EACAf,EACAvD,EACAuE,IAKGA,IAEH,UAAWuB,QACQ5E,IAAnB4E,EAAST,OACTS,EAAST,QAAUQ,EAAIR,QAEvBQ,EAAIR,MAA0B,MAAlBS,EAAST,MAAgB,GAAKS,EAAST,OAGnD,YAAaS,QACQ5E,IAArB4E,EAASgF,SACThF,EAASgF,UAAYjF,EAAIiF,UAEzBjF,EAAIiF,QAAUhF,EAASgF,iBAKnBjF,EASR,SAAgBN,EAASlE,EAAKgE,EAAO9D,OAEjB,mBAAPF,EAAmBA,EAAIgE,GAC7BhE,EAAI0J,QAAU1F,EAClB,MAAOiC,GACR9H,EAAQmK,IAAYrC,EAAG/F,IAYzB,SAAgB+D,EAAQ/D,EAAOyJ,EAAaC,GAA5C,IACKC,EAOArF,EAsBM9F,KA5BNP,EAAQ8F,SAAS9F,EAAQ8F,QAAQ/D,IAEhC2J,EAAI3J,EAAMF,OACT6J,EAAEH,SAAWG,EAAEH,UAAYxJ,EAAMI,KAAM4D,EAAS2F,EAAG,KAAMF,IAI1DC,GAAmC,mBAAd1J,EAAMZ,OAC/BsK,EAAmC,OAArBpF,EAAMtE,EAAMI,MAK3BJ,EAAMI,IAAOJ,EAAMK,SAAWV,EAEA,OAAzBgK,EAAI3J,EAAMM,KAAqB,IAC/BqJ,EAAEC,yBAEJD,EAAEC,uBACD,MAAO7D,GACR9H,EAAQmK,IAAYrC,EAAG0D,GAIzBE,EAAExI,KAAOwI,EAAEtH,IAAa,QAGpBsH,EAAI3J,EAAMC,QACLzB,EAAI,EAAGA,EAAImL,EAAEnK,OAAQhB,IACzBmL,EAAEnL,IAAIuF,EAAQ4F,EAAEnL,GAAIiL,EAAaC,GAI5B,MAAPpF,GAAavF,EAAWuF,GAI7B,SAAS4C,EAASpI,EAAOsI,EAAOxG,UACxBiJ,KAAKtJ,YAAYzB,EAAO8B,GLrchC,SAAgBqG,EAAOjH,EAAOoC,EAAW0H,GAAzC,IAMK9G,EAOAf,EAMAD,EAlBA/D,EAAQ8L,IAAO9L,EAAQ8L,GAAM/J,EAAOoC,GAYpCH,GAPAe,EAAc8G,IAAgBvL,GAQ/B,KACCuL,GAAeA,EAAY7J,KAAcmC,EAAUnC,IACvDD,EAAQb,EAAcuB,EAAU,KAAM,CAACV,IAGnCgC,EAAc,GAClBM,EACCF,GAGEY,EAAcZ,EAAY0H,GAAe1H,GAAWnC,IAAYD,EAClEiC,GAAYxD,EACZA,OAC8BkB,IAA9ByC,EAAUI,gBACVsH,IAAgB9G,EACb,CAAC8G,GACD7H,EACA,KACAvD,EAAU4G,MAAMkD,KAAKpG,EAAU8G,YAClClH,EACA8H,GAAerL,EACfuE,GAIDP,EAAWT,EAAahC,GASlB,SAASyE,EAAQzE,EAAOoC,GAC9B6E,EAAOjH,EAAOoC,EAAW7D,GMrDnB,SAASyL,EAAahK,EAAOlB,GAA7B,IAGFQ,EACOd,MAAAA,KAHXM,EAAQF,EAAOA,EAAO,GAAIoB,EAAMlB,OAAQA,GACpCS,UAAUC,OAAS,IAAGV,EAAMO,SAAWX,EAAU4G,MAAMkD,KAAKjJ,UAAW,IACvED,EAAkB,GACNR,EACL,QAANN,GAAqB,QAANA,IAAac,EAAgBd,GAAKM,EAAMN,WAGrDoB,EACNI,EAAMZ,KACNE,EACAR,EAAMe,KAAOG,EAAMH,IACnBf,EAAMgB,KAAOE,EAAMF,IACnB,MLpBK,SAASmK,EAAcC,GAAvB,IACAC,EAAM,GAENvJ,EAAU,CACfgG,IAAK,OAASpI,IACdqI,GAAeqD,EACfE,kBAAStL,EAAO8B,UACR9B,EAAMO,SAASuB,IAEvByJ,kBAASvL,OAEDwL,gBADFT,KAAK7B,kBACHsC,EAAO,QACRtC,gBAAkB,kBACtBmC,EAAIvJ,EAAQgG,KAAO2D,EACZJ,QAGHvC,sBAAwB,SAAA4C,GACxBD,EAAKzL,MAAMgF,QAAU0G,EAAO1G,OAC/BwG,EAAKxI,KAAK,SAAAT,GACTA,EAAET,QAAU4J,EAAO1G,MACnB1C,EAAcC,WAKZ8F,IAAM,SAAA9F,GACViJ,EAAK7K,KAAK4B,OACNoJ,EAAMpJ,EAAEuI,qBACZvI,EAAEuI,qBAAuB,WACxBU,EAAKI,OAAOJ,EAAKvJ,QAAQM,GAAI,GAC7BoJ,GAAOA,EAAIjC,KAAKnH,MAKZvC,EAAMO,kBAIfuB,EAAQwJ,SAASzD,YAAc/F,EAO/BA,EAAQyJ,SAASM,GAAc/J,EAExBA,EJ1CF3C,EAAU,CACfmK,IUHM,SAAqBwC,EAAO5K,WAE9B+B,EAAW8I,EAEP7K,EAAQA,EAAME,QAChB6B,EAAY/B,EAAMM,OAAgByB,EAAU+E,UAG9C/E,EAAUxB,aACwC,MAAlDwB,EAAUxB,YAAYuK,2BAEtBD,GAAY,EACZ9I,EAAUgJ,SACThJ,EAAUxB,YAAYuK,yBAAyBF,KAId,MAA/B7I,EAAUiJ,oBACbH,GAAY,EACZ9I,EAAUiJ,kBAAkBJ,IAGzBC,EACH,OAAOzJ,EAAeW,EAAUgF,IAAgBhF,GAChD,MAAOgE,GACR6E,EAAQ7E,QAKL6E,IT6DM1M,EAAiB,SAAA8B,UACpB,MAATA,QAAuCL,IAAtBK,EAAMO,aC5ExBI,EAAUqG,UAAU+D,SAAW,SAASE,EAAQhH,OAE3Ce,EAEHA,EADG6E,KAAKvC,MAAeuC,KAAKzC,MACxByC,KAAKvC,IAELuC,KAAKvC,IAAa1I,EAAO,GAAIiL,KAAKzC,OAGlB,mBAAV6D,IACVA,EAASA,EAAOjG,EAAG6E,KAAK/K,QAGrBmM,GACHrM,EAAOoG,EAAGiG,GAIG,MAAVA,GAEApB,KAAKhI,MACJoC,GAAU4F,KAAKxC,IAAiB5H,KAAKwE,GACzC7C,EAAcyI,QAShBlJ,EAAUqG,UAAUkE,YAAc,SAASjH,GACtC4F,KAAKhI,WAIH8F,KAAS,EACV1D,GAAU4F,KAAKxC,IAAiB5H,KAAKwE,GACzC7C,EAAcyI,QAchBlJ,EAAUqG,UAAUC,OAASvG,EAwFzBvC,EAAgB,GAChBC,EAAgB,EAQdC,EACa,mBAAX8M,QACJA,QAAQnE,UAAUoE,KAAKC,KAAKF,QAAQG,WACpCC,WC5KEhN,EAAaE,ECHRD,EAAI"}
+{"version":3,"file":"preact.mjs","sources":["../src/constants.js","../src/options.js","../src/diff/catch-error.js","../src/diff/commit.js","../src/create-element.js","../src/diff/refs.js","../src/diff/props.js","../src/create-context.js","../src/diff/unmount.js","../src/tree.js","../src/diff/children.js","../src/diff/patch.js","../src/component.js","../src/diff/component.js","../src/diff/mount.js","../src/render.js","../src/create-root.js","../src/clone-element.js"],"sourcesContent":["// Internal._flags bitfield constants\nexport const TYPE_TEXT = 1 << 0;\nexport const TYPE_ELEMENT = 1 << 1;\nexport const TYPE_CLASS = 1 << 2;\nexport const TYPE_FUNCTION = 1 << 3;\n/** Signals this internal has a _parentDom prop that should change the parent\n * DOM node of it's children */\nexport const TYPE_ROOT = 1 << 4;\n\n/** Any type of internal representing DOM */\nexport const TYPE_DOM = TYPE_TEXT | TYPE_ELEMENT;\n/** Any type of component */\nexport const TYPE_COMPONENT = TYPE_CLASS | TYPE_FUNCTION | TYPE_ROOT;\n\n// Modes of rendering\n/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Top level render unspecified behaviour (old replaceNode parameter to render) */\nexport const MODE_MUTATIVE_HYDRATE = 1 << 6;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Signifies this VNode errored on the previous render */\nexport const MODE_ERRORED = 1 << 8;\n/** Signifies an error has been thrown and this component will be attempting to\n * handle & rerender the error on next render. In other words, on the next\n * render of this component, unset this mode and set the MODE_RERENDERING_ERROR.\n * This flag is distinct from MODE_RERENDERING_ERROR so that a component can\n * catch multiple errors thrown by its children in one render pass (see test\n * \"should handle double child throws\").\n */\nexport const MODE_PENDING_ERROR = 1 << 9;\n/** Signifies this Internal is attempting to \"handle\" an error and is\n * rerendering. This mode tracks that a component's last rerender was trying to\n * handle an error. As such, if another error is thrown while a component has\n * this flag set, it should not handle the newly thrown error since it failed to\n * successfully rerender the original error. This prevents error handling\n * infinite render loops */\nexport const MODE_RERENDERING_ERROR = 1 << 10;\n/** Signals this internal has been unmounted */\nexport const MODE_UNMOUNTING = 1 << 11;\n/** This Internal is rendered in an SVG tree */\nexport const MODE_SVG = 1 << 12;\n\n/** Signifies that bailout checks will be bypassed */\nexport const FORCE_UPDATE = 1 << 13;\n/** Signifies that a node needs to be updated */\nexport const DIRTY_BIT = 1 << 14;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(\n\tMODE_HYDRATE |\n\tMODE_MUTATIVE_HYDRATE |\n\tMODE_SUSPENDED |\n\tMODE_ERRORED |\n\tMODE_RERENDERING_ERROR |\n\tFORCE_UPDATE\n);\n\n/** Modes a child internal inherits from their parent */\nexport const INHERITED_MODES = MODE_HYDRATE | MODE_MUTATIVE_HYDRATE | MODE_SVG;\n\nexport const EMPTY_ARR = [];\nexport const UNDEFINED = undefined;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import {\n\tDIRTY_BIT,\n\tMODE_RERENDERING_ERROR,\n\tMODE_PENDING_ERROR,\n\tTYPE_COMPONENT\n} from '../constants';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').Internal} internal The Internal node that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, internal) {\n\twhile ((internal = internal._parent)) {\n\t\tif (\n\t\t\tinternal._flags & TYPE_COMPONENT &&\n\t\t\t~internal._flags & MODE_RERENDERING_ERROR\n\t\t) {\n\t\t\ttry {\n\t\t\t\tif (internal.type.getDerivedStateFromError) {\n\t\t\t\t\tinternal._component.setState(\n\t\t\t\t\t\tinternal.type.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (internal._component.componentDidCatch) {\n\t\t\t\t\tinternal._component.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\t// NOTE: We're checking that any component in the stack got marked as dirty, even if it did so prior to this loop,\n\t\t\t\t// which is technically incorrect. However, there is no way for a component to mark itself as dirty during rendering.\n\t\t\t\t// The only way for a component to falsely intercept error bubbling would be to manually sets its internal dirty flag.\n\t\t\t\tif (internal._flags & DIRTY_BIT) {\n\t\t\t\t\tinternal._flags |= MODE_PENDING_ERROR;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import options from '../options';\n\n/**\n * @param {import('../internal').Internal} internal\n * @param {() => void} callback\n */\nexport function addCommitCallback(internal, callback) {\n\tif (internal._commitCallbacks == null) {\n\t\tinternal._commitCallbacks = [];\n\t}\n\n\tinternal._commitCallbacks.push(callback);\n}\n\n/**\n * @param {import('../internal').CommitQueue} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').Internal} rootInternal\n */\nexport function commitRoot(commitQueue, rootInternal) {\n\tif (options._commit) options._commit(rootInternal, commitQueue);\n\n\tcommitQueue.some(internal => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the root variable here so the type changes\n\t\t\tcommitQueue = internal._commitCallbacks.length;\n\t\t\t// @ts-ignore See above ts-ignore comment\n\t\t\twhile (commitQueue--) {\n\t\t\t\tinternal._commitCallbacks.shift().call(internal._component);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, internal);\n\t\t}\n\t});\n}\n","import { UNDEFINED } from './constants';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (!(i === 'key' || (typeof type !== 'function' && i === 'ref')))\n\t\t\tnormalizedProps[i] = props[i];\n\t\telse if (i === 'ref') {\n\t\t\tref = props[i];\n\t\t} else if (i === 'key') {\n\t\t\tkey = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === UNDEFINED) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, 0);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\tconstructor: undefined,\n\t\t_vnodeId: original || ++vnodeId\n\t};\n\n\tif (options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\n/**\n * @param {import('./internal').ComponentChildren} childVNode\n * @returns {import('./internal').VNode | string | null}\n */\nexport function normalizeToVNode(childVNode) {\n\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\treturn null;\n\t}\n\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t// it's own DOM & etc. pointers\n\telse if (\n\t\ttypeof childVNode == 'number' ||\n\t\t// eslint-disable-next-line valid-typeof\n\t\ttypeof childVNode == 'bigint'\n\t) {\n\t\treturn childVNode + '';\n\t} else if (Array.isArray(childVNode)) {\n\t\treturn createVNode(Fragment, { children: childVNode }, null, null, 0);\n\t}\n\n\treturn childVNode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === UNDEFINED;\n","import options from '../options';\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').Internal} internal\n */\nexport function applyRef(oldRef, ref, value, internal) {\n\tif (oldRef === ref) return;\n\n\tif (oldRef) applyRef(null, oldRef, null, internal);\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, internal);\n\t}\n}\n","import options from '../options';\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {number} isSvg 0 if not an SVG element, else it is an SVG element\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink[H:h]/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t// The value `false` is different from the attribute not\n\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t// that other VDOM frameworks also always stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (\n\t\t\tvalue != null &&\n\t\t\t(value !== false || (name[0] === 'a' && name[1] === 'r'))\n\t\t) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type + false](options.event ? options.event(e) : e);\n\tif (this._isControlled) {\n\t\tif (this.value != null && (e.type === 'input' || e.type === 'change')) {\n\t\t\tthis.value = this._prevValue;\n\t\t}\n\t\tif (this.checked != null && e.type === 'change') {\n\t\t\tthis.checked = this._prevValue;\n\t\t}\n\t}\n}\n\nfunction eventProxyCapture(e) {\n\tthis._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n","import { enqueueRender } from './component';\n\nexport let nextContextId = 0;\n\nconst providers = new Set();\n\nexport const unsubscribeFromContext = component => {\n\t// if this was a context provider, delete() returns true and we exit:\n\tif (providers.delete(component)) return;\n\t// ... otherwise, unsubscribe from any contexts:\n\tproviders.forEach(p => p._subs.delete(component));\n};\n\nexport const createContext = (defaultValue, contextId) => {\n\tcontextId = '__cC' + nextContextId++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props, ctx) {\n\t\t\t// initial setup:\n\t\t\tif (!this._subs) {\n\t\t\t\tthis._subs = new Set();\n\t\t\t\tctx = {};\n\t\t\t\tctx[contextId] = this;\n\t\t\t\tthis.getChildContext = () => ctx;\n\t\t\t}\n\t\t\t// re-render subscribers in response to value change\n\t\t\telse if (props.value !== this._prev) {\n\t\t\t\tthis._subs.forEach(enqueueRender);\n\t\t\t}\n\t\t\tthis._prev = props.value;\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType = context);\n};\n","import { MODE_UNMOUNTING, TYPE_DOM, TYPE_ROOT } from '../constants';\nimport { unsubscribeFromContext } from '../create-context';\nimport options from '../options';\nimport { applyRef } from './refs';\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').Internal} internal The virtual node to unmount\n * @param {import('../internal').Internal} parentInternal The parent of the VNode that\n * initiated the unmount\n * @param {number} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(internal, parentInternal, skipRemove) {\n\tlet r,\n\t\ti = 0;\n\tif (options.unmount) options.unmount(internal);\n\tinternal._flags |= MODE_UNMOUNTING;\n\n\tif ((r = internal.ref)) {\n\t\tif (!r.current || r.current === internal._dom)\n\t\t\tapplyRef(null, r, null, parentInternal);\n\t}\n\n\tif ((r = internal._component)) {\n\t\tunsubscribeFromContext(r);\n\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentInternal);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ((r = internal._children)) {\n\t\tfor (; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(\n\t\t\t\t\tr[i],\n\t\t\t\t\tparentInternal,\n\t\t\t\t\tskipRemove ? ~internal._flags & TYPE_ROOT : internal._flags & TYPE_DOM\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && internal._flags & TYPE_DOM) {\n\t\tinternal._dom.remove();\n\t}\n\n\tinternal._dom = null;\n}\n","import options from './options';\nimport {\n\tTYPE_FUNCTION,\n\tTYPE_ELEMENT,\n\tTYPE_TEXT,\n\tTYPE_CLASS,\n\tTYPE_ROOT,\n\tINHERITED_MODES,\n\tTYPE_COMPONENT,\n\tTYPE_DOM,\n\tMODE_SVG,\n\tUNDEFINED\n} from './constants';\n\n/**\n * Create an internal tree node\n * @param {import('./internal').VNode | string} vnode\n * @param {import('./internal').Internal} [parentInternal]\n * @returns {import('./internal').Internal}\n */\nexport function createInternal(vnode, parentInternal) {\n\tlet type = null,\n\t\tprops,\n\t\tkey,\n\t\tref;\n\n\t/** @type {number} */\n\tlet flags = parentInternal ? parentInternal._flags & INHERITED_MODES : 0;\n\n\t// Text VNodes/Internals use NaN as an ID so that two are never equal.\n\tlet vnodeId = NaN;\n\n\tif (typeof vnode === 'string') {\n\t\t// type = null;\n\t\tflags |= TYPE_TEXT;\n\t\tprops = vnode;\n\t} else if (vnode.constructor !== UNDEFINED) {\n\t\tflags |= TYPE_TEXT;\n\t\tprops = '';\n\t} else {\n\t\ttype = vnode.type;\n\t\tprops = vnode.props || {};\n\t\tkey = vnode.key;\n\t\tref = vnode.ref;\n\t\tvnodeId = vnode._vnodeId;\n\n\t\t// @TODO re-enable this when we stop removing key+ref from VNode props\n\t\t// if (props) {\n\t\t// \tif ((key = props.key) != null) {\n\t\t// \t\tprops.key = UNDEFINED;\n\t\t// \t}\n\t\t// \tif (typeof type !== 'function' && (ref = props.ref) != null) {\n\t\t// \t\tprops.ref = UNDEFINED;\n\t\t// \t}\n\t\t// } else {\n\t\t// \tprops = {};\n\t\t// }\n\n\t\t// flags = typeof type === 'function' ? COMPONENT_NODE : ELEMENT_NODE;\n\t\tflags |=\n\t\t\ttypeof type === 'function'\n\t\t\t\t? type.prototype && 'render' in type.prototype\n\t\t\t\t\t? TYPE_CLASS\n\t\t\t\t\t: props._parentDom\n\t\t\t\t\t? TYPE_ROOT\n\t\t\t\t\t: TYPE_FUNCTION\n\t\t\t\t: TYPE_ELEMENT;\n\n\t\tif (flags & TYPE_ELEMENT && type === 'svg') {\n\t\t\tflags |= MODE_SVG;\n\t\t} else if (\n\t\t\tparentInternal &&\n\t\t\tparentInternal._flags & MODE_SVG &&\n\t\t\tparentInternal.type === 'foreignObject'\n\t\t) {\n\t\t\tflags &= ~MODE_SVG;\n\t\t}\n\t}\n\n\t/** @type {import('./internal').Internal} */\n\tconst internal = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: parentInternal,\n\t\t_vnodeId: vnodeId,\n\t\t_dom: null,\n\t\t_component: null,\n\t\t_flags: flags,\n\t\t_depth: parentInternal ? parentInternal._depth + 1 : 0\n\t};\n\n\tif (options._internal) options._internal(internal, vnode);\n\n\treturn internal;\n}\n\nconst shouldSearchComponent = internal =>\n\tinternal._flags & TYPE_COMPONENT &&\n\t(!(internal._flags & TYPE_ROOT) ||\n\t\tinternal.props._parentDom == getParentDom(internal._parent));\n\n/**\n * @param {import('./internal').Internal} internal\n * @param {number | null} [childIndex]\n * @returns {import('./internal').PreactNode}\n */\nexport function getDomSibling(internal, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn getDomSibling(\n\t\t\tinternal._parent,\n\t\t\tinternal._parent._children.indexOf(internal) + 1\n\t\t);\n\t}\n\n\tlet childDom = getChildDom(internal, childIndex);\n\tif (childDom) {\n\t\treturn childDom;\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children. We\n\t// must resume from this vnode's sibling (in it's parent _children array).\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search). Note, the top of the tree has _parent == null so avoiding that\n\t// here.\n\treturn internal._parent && shouldSearchComponent(internal)\n\t\t? getDomSibling(internal)\n\t\t: null;\n}\n\n/**\n * @param {import('./internal').Internal} internal\n * @param {number} [i]\n * @returns {import('./internal').PreactElement}\n */\nexport function getChildDom(internal, i) {\n\tif (internal._children == null) {\n\t\treturn null;\n\t}\n\n\tfor (i = i || 0; i < internal._children.length; i++) {\n\t\tlet child = internal._children[i];\n\t\tif (child != null) {\n\t\t\tif (child._flags & TYPE_DOM) {\n\t\t\t\treturn child._dom;\n\t\t\t}\n\n\t\t\tif (shouldSearchComponent(child)) {\n\t\t\t\tlet childDom = getChildDom(child);\n\t\t\t\tif (childDom) {\n\t\t\t\t\treturn childDom;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn null;\n}\n\n/**\n * @param {import('./internal').Internal} internal\n * @returns {import('./internal').PreactElement}\n */\nexport function getParentDom(internal) {\n\tlet parentDom =\n\t\tinternal._flags & TYPE_ROOT ? internal.props._parentDom : null;\n\n\tlet parent = internal._parent;\n\twhile (parentDom == null && parent) {\n\t\tif (parent._flags & TYPE_ROOT) {\n\t\t\tparentDom = parent.props._parentDom;\n\t\t} else if (parent._flags & TYPE_ELEMENT) {\n\t\t\tparentDom = parent._dom;\n\t\t}\n\n\t\tparent = parent._parent;\n\t}\n\n\treturn parentDom;\n}\n","import { applyRef } from './refs';\nimport { normalizeToVNode } from '../create-element';\nimport {\n\tTYPE_COMPONENT,\n\tTYPE_TEXT,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tEMPTY_ARR,\n\tTYPE_DOM,\n\tUNDEFINED\n} from '../constants';\nimport { mount } from './mount';\nimport { patch } from './patch';\nimport { unmount } from './unmount';\nimport { createInternal, getDomSibling, getChildDom } from '../tree';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').Internal} parentInternal The Internal node\n * whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by\n * getChildContext\n * @param {import('../internal').CommitQueue} commitQueue List of\n * components which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} startDom The dom node\n * diffChildren should begin diffing with.\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tparentInternal,\n\tglobalContext,\n\tcommitQueue,\n\tstartDom\n) {\n\tlet i, newDom, refs;\n\n\t/** @type {import('../internal').Internal} */\n\tlet childInternal;\n\n\t/** @type {import('../internal').VNode | string} */\n\tlet childVNode;\n\n\tlet oldChildren =\n\t\t(parentInternal._children && parentInternal._children.slice()) || EMPTY_ARR;\n\tlet oldChildrenLength = oldChildren.length;\n\n\tconst newChildren = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = normalizeToVNode(renderResult[i]);\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tnewChildren[i] = null;\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildInternal = findMatchingInternal(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\ti,\n\t\t\toldChildrenLength\n\t\t);\n\n\t\tlet oldVNodeRef;\n\t\tlet nextDomSibling;\n\t\tif (childInternal == null) {\n\t\t\tchildInternal = createInternal(childVNode, parentInternal);\n\n\t\t\t// We are mounting a new VNode\n\t\t\tnextDomSibling = mount(\n\t\t\t\tparentDom,\n\t\t\t\tchildVNode,\n\t\t\t\tchildInternal,\n\t\t\t\tglobalContext,\n\t\t\t\tcommitQueue,\n\t\t\t\tstartDom\n\t\t\t);\n\t\t}\n\t\t// If this node suspended during hydration, and no other flags are set:\n\t\t// @TODO: might be better to explicitly check for MODE_ERRORED here.\n\t\telse if (\n\t\t\t(childInternal._flags & (MODE_HYDRATE | MODE_SUSPENDED)) ===\n\t\t\t(MODE_HYDRATE | MODE_SUSPENDED)\n\t\t) {\n\t\t\t// We are resuming the hydration of a VNode\n\t\t\tstartDom = childInternal._dom;\n\t\t\toldVNodeRef = childInternal.ref;\n\n\t\t\tnextDomSibling = mount(\n\t\t\t\tparentDom,\n\t\t\t\tchildVNode,\n\t\t\t\tchildInternal,\n\t\t\t\tglobalContext,\n\t\t\t\tcommitQueue,\n\t\t\t\tstartDom\n\t\t\t);\n\t\t} else {\n\t\t\toldVNodeRef = childInternal.ref;\n\n\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\tnextDomSibling = patch(\n\t\t\t\tparentDom,\n\t\t\t\tchildVNode,\n\t\t\t\tchildInternal,\n\t\t\t\tglobalContext,\n\t\t\t\tcommitQueue,\n\t\t\t\tstartDom\n\t\t\t);\n\t\t}\n\n\t\tnewDom = childInternal._dom;\n\n\t\tif (childVNode.ref) {\n\t\t\tif (!refs) refs = [];\n\t\t\trefs.push(\n\t\t\t\toldVNodeRef,\n\t\t\t\tchildVNode.ref,\n\t\t\t\tchildInternal._component || newDom,\n\t\t\t\tchildInternal\n\t\t\t);\n\t\t}\n\n\t\tif (childInternal._flags & TYPE_COMPONENT) {\n\t\t\tstartDom = nextDomSibling;\n\t\t} else if (newDom && newDom == startDom) {\n\t\t\t// If the newDom and the dom we are expecting to be there are the same, then\n\t\t\t// do nothing\n\t\t\tstartDom = nextDomSibling;\n\t\t} else if (newDom) {\n\t\t\tstartDom = placeChild(parentDom, oldChildrenLength, newDom, startDom);\n\t\t} else if (\n\t\t\tstartDom &&\n\t\t\tchildInternal != null &&\n\t\t\tstartDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\tstartDom = nextDomSibling;\n\t\t}\n\n\t\tnewChildren[i] = childInternal;\n\t}\n\n\tparentInternal._children = newChildren;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\tparentInternal._flags & TYPE_COMPONENT &&\n\t\t\t\tstartDom != null &&\n\t\t\t\t((oldChildren[i]._flags & TYPE_DOM &&\n\t\t\t\t\toldChildren[i]._dom == startDom) ||\n\t\t\t\t\tgetChildDom(oldChildren[i]) == startDom)\n\t\t\t) {\n\t\t\t\t// If the startDom points to a dom node that is about to be unmounted,\n\t\t\t\t// then get the next sibling of that vnode and set startDom to it\n\t\t\t\tstartDom = getDomSibling(parentInternal, i + 1);\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i], refs[++i]);\n\t\t}\n\t}\n\n\treturn startDom;\n}\n\n/**\n * @param {import('../internal').VNode | string} childVNode\n * @param {import('../internal').Internal[]} oldChildren\n * @param {number} i\n * @param {number} oldChildrenLength\n * @returns {import('../internal').Internal}\n */\nfunction findMatchingInternal(childVNode, oldChildren, i, oldChildrenLength) {\n\t// Check if we find a corresponding element in oldChildren.\n\t// If found, delete the array item by setting to `undefined`.\n\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t// (holes).\n\tlet childInternal = oldChildren[i];\n\n\tif (typeof childVNode === 'string') {\n\t\t// We never move Text nodes, so we only check for an in-place match:\n\t\tif (childInternal && childInternal._flags & TYPE_TEXT) {\n\t\t\toldChildren[i] = UNDEFINED;\n\t\t} else {\n\t\t\t// We're looking for a Text node, but this wasn't one: ignore it\n\t\t\tchildInternal = UNDEFINED;\n\t\t}\n\t} else if (\n\t\tchildInternal === null ||\n\t\t(childInternal &&\n\t\t\tchildVNode.key == childInternal.key &&\n\t\t\tchildVNode.type === childInternal.type)\n\t) {\n\t\toldChildren[i] = UNDEFINED;\n\t} else {\n\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\tfor (let j = 0; j < oldChildrenLength; j++) {\n\t\t\tchildInternal = oldChildren[j];\n\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t// We always match by type (in either case).\n\t\t\tif (\n\t\t\t\tchildInternal &&\n\t\t\t\tchildVNode.key == childInternal.key &&\n\t\t\t\tchildVNode.type === childInternal.type\n\t\t\t) {\n\t\t\t\toldChildren[j] = UNDEFINED;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tchildInternal = null;\n\t\t}\n\t}\n\n\treturn childInternal;\n}\n\n/**\n * @param {import('../internal').Internal} internal\n * @param {import('../internal').PreactElement} startDom\n * @param {import('../internal').PreactElement} parentDom\n */\nexport function reorderChildren(internal, startDom, parentDom) {\n\tif (internal._children == null) {\n\t\treturn startDom;\n\t}\n\n\tfor (let tmp = 0; tmp < internal._children.length; tmp++) {\n\t\tlet childInternal = internal._children[tmp];\n\t\tif (childInternal) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tchildInternal._parent = internal;\n\n\t\t\tif (childInternal._flags & TYPE_COMPONENT) {\n\t\t\t\tstartDom = reorderChildren(childInternal, startDom, parentDom);\n\t\t\t} else if (childInternal._dom == startDom) {\n\t\t\t\tstartDom = startDom.nextSibling;\n\t\t\t} else {\n\t\t\t\tstartDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tinternal._children.length,\n\t\t\t\t\tchildInternal._dom,\n\t\t\t\t\tstartDom\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn startDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tfor (children of children) {\n\t\t\ttoChildArray(children, out);\n\t\t}\n\t} else {\n\t\tout.push(children);\n\t}\n\n\treturn out;\n}\n\n/**\n * @param {import('../internal').PreactElement} parentDom\n * @param {number} oldChildrenLength\n * @param {import('../internal').PreactElement} newDom\n * @param {import('../internal').PreactElement} startDom\n * @returns {import('../internal').PreactElement}\n */\nfunction placeChild(parentDom, oldChildrenLength, newDom, startDom) {\n\tif (startDom == null || newDom.parentNode == null) {\n\t\t// \"startDom == null\": The diff has finished with existing DOM children and\n\t\t// we are appending new ones.\n\t\t//\n\t\t// newDom.parentNode == null: newDom is a brand new unconnected DOM node. Go\n\t\t// ahead and mount it here.\n\t\tparentDom.insertBefore(newDom, startDom);\n\t\treturn startDom;\n\t}\n\n\t// `j<oldChildrenLength; j+=2` is an alternative to `j++<oldChildrenLength/2`\n\tfor (\n\t\tlet sibDom = startDom, j = 0;\n\t\t(sibDom = sibDom.nextSibling) && j < oldChildrenLength;\n\t\tj += 2\n\t) {\n\t\tif (sibDom == newDom) {\n\t\t\treturn newDom.nextSibling;\n\t\t}\n\t}\n\tparentDom.insertBefore(newDom, startDom);\n\treturn startDom;\n}\n","import { diffChildren } from './children';\nimport { setProperty } from './props';\nimport options from '../options';\nimport { renderComponent } from './component';\nimport {\n\tRESET_MODE,\n\tTYPE_TEXT,\n\tTYPE_ELEMENT,\n\tMODE_SUSPENDED,\n\tMODE_ERRORED,\n\tTYPE_ROOT,\n\tMODE_SVG,\n\tUNDEFINED\n} from '../constants';\nimport { getChildDom, getDomSibling } from '../tree';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode | string} newVNode The new virtual node\n * @param {import('../internal').Internal} internal The Internal node to patch\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {import('../internal').CommitQueue} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactNode} startDom\n */\nexport function patch(\n\tparentDom,\n\tnewVNode,\n\tinternal,\n\tglobalContext,\n\tcommitQueue,\n\tstartDom\n) {\n\tlet dom = internal._dom;\n\tlet flags = internal._flags;\n\n\tif (flags & TYPE_TEXT) {\n\t\tif (newVNode !== internal.props) {\n\t\t\tdom.data = newVNode;\n\t\t\tinternal.props = newVNode;\n\t\t}\n\n\t\treturn dom.nextSibling;\n\t}\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== UNDEFINED) return null;\n\n\tif (options._diff) options._diff(internal, newVNode);\n\n\tif (flags & TYPE_ELEMENT) {\n\t\tif (newVNode._vnodeId !== internal._vnodeId) {\n\t\t\t// @ts-ignore dom is a PreactElement here\n\t\t\tpatchDOMElement(dom, newVNode, internal, globalContext, commitQueue);\n\t\t\t// Once we have successfully rendered the new VNode, copy it's ID over\n\t\t\tinternal._vnodeId = newVNode._vnodeId;\n\t\t}\n\n\t\tif (options.diffed) options.diffed(internal);\n\n\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\tinternal._flags &= RESET_MODE;\n\n\t\treturn dom.nextSibling;\n\t}\n\n\t/** @type {import('../internal').PreactNode} */\n\tlet nextDomSibling;\n\n\t// Root nodes signal that an attempt to render into a specific DOM node on\n\t// the page. Root nodes can occur anywhere in the tree and not just at the\n\t// top.\n\tlet prevStartDom = startDom;\n\tlet prevParentDom = parentDom;\n\tif (flags & TYPE_ROOT) {\n\t\tparentDom = newVNode.props._parentDom;\n\n\t\tif (parentDom !== prevParentDom) {\n\t\t\tstartDom = getChildDom(internal) || startDom;\n\n\t\t\t// The `startDom` variable might point to a node from another\n\t\t\t// tree from a previous render\n\t\t\tif (startDom != null && startDom.parentNode !== parentDom) {\n\t\t\t\tstartDom = null;\n\t\t\t}\n\t\t}\n\t}\n\n\ttry {\n\t\tnextDomSibling = renderComponent(\n\t\t\tparentDom,\n\t\t\t/** @type {import('../internal').VNode} */\n\t\t\t(newVNode),\n\t\t\tinternal,\n\t\t\tglobalContext,\n\t\t\tcommitQueue,\n\t\t\tstartDom\n\t\t);\n\t} catch (e) {\n\t\t// @TODO: assign a new VNode ID here? Or NaN?\n\t\t// newVNode._vnodeId = 0;\n\t\tinternal._flags |= e.then ? MODE_SUSPENDED : MODE_ERRORED;\n\t\toptions._catchError(e, internal);\n\n\t\treturn nextDomSibling;\n\t}\n\n\tif (prevParentDom !== parentDom) {\n\t\t// If this is a root node/Portal, and it changed the parentDom it's\n\t\t// children, then we need to determine which dom node the diff should\n\t\t// continue with.\n\t\tif (prevStartDom == null || prevStartDom.parentNode == prevParentDom) {\n\t\t\t// If prevStartDom == null, then we are diffing a root node that\n\t\t\t// didn't have a startDom to begin with, so we can just return null.\n\t\t\t//\n\t\t\t// Or, if the previous value for start dom still has the same parent\n\t\t\t// DOM has the root node's parent tree, then we can use it. This case\n\t\t\t// assumes the root node rendered its children into a new parent.\n\t\t\tnextDomSibling = prevStartDom;\n\t\t} else {\n\t\t\t// Here, if the parentDoms are different and prevStartDom has moved into\n\t\t\t// a new parentDom, we'll assume the root node moved prevStartDom under\n\t\t\t// the new parentDom. Because of this change, we need to search the\n\t\t\t// internal tree for the next DOM sibling the tree should begin with\n\t\t\tnextDomSibling = getDomSibling(internal);\n\t\t}\n\t}\n\n\tif (options.diffed) options.diffed(internal);\n\n\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\tinternal._flags &= RESET_MODE;\n\t// Once we have successfully rendered the new VNode, copy it's ID over\n\tinternal._vnodeId = newVNode._vnodeId;\n\n\treturn nextDomSibling;\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').Internal} internal The Internal node to patch\n * @param {object} globalContext The current context object\n * @param {import('../internal').CommitQueue} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n */\nfunction patchDOMElement(dom, newVNode, internal, globalContext, commitQueue) {\n\tlet oldProps = internal.props,\n\t\tnewProps = (internal.props = newVNode.props),\n\t\tisSvg = internal._flags & MODE_SVG,\n\t\ti,\n\t\tvalue,\n\t\ttmp,\n\t\tnewHtml,\n\t\toldHtml,\n\t\tnewChildren;\n\n\tfor (i in oldProps) {\n\t\tvalue = oldProps[i];\n\t\tif (i === 'key') {\n\t\t} else if (i === 'children') {\n\t\t} else if (i === 'dangerouslySetInnerHTML') {\n\t\t\toldHtml = value;\n\t\t} else if (!(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, value, isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tvalue = newProps[i];\n\t\tif (i === 'key') {\n\t\t} else if (i === 'children') {\n\t\t\tnewChildren = value;\n\t\t} else if (i === 'dangerouslySetInnerHTML') {\n\t\t\tnewHtml = value;\n\t\t} else if (\n\t\t\tvalue !== (tmp = oldProps[i]) ||\n\t\t\t((i === 'checked' || i === 'value') && value != null && value !== dom[i])\n\t\t) {\n\t\t\tsetProperty(dom, i, value, tmp, isSvg);\n\t\t}\n\t}\n\n\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\tif (newHtml) {\n\t\tvalue = newHtml.__html;\n\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\tif (!oldHtml || (value !== oldHtml.__html && value !== dom.innerHTML)) {\n\t\t\tdom.innerHTML = value;\n\t\t}\n\t\tinternal._children = null;\n\t} else {\n\t\tif (oldHtml) dom.innerHTML = '';\n\n\t\tdiffChildren(\n\t\t\tdom,\n\t\t\tnewChildren && Array.isArray(newChildren) ? newChildren : [newChildren],\n\t\t\tinternal,\n\t\t\tglobalContext,\n\t\t\tcommitQueue,\n\t\t\tdom.firstChild\n\t\t);\n\t}\n\n\tif (newProps.value != null && dom._isControlled) {\n\t\tdom._prevValue = newProps.value;\n\t} else if (newProps.checked != null && dom._isControlled) {\n\t\tdom._prevValue = newProps.checked;\n\t}\n}\n","import { addCommitCallback, commitRoot } from './diff/commit';\nimport options from './options';\nimport { createVNode, Fragment } from './create-element';\nimport { patch } from './diff/patch';\nimport {\n\tDIRTY_BIT,\n\tFORCE_UPDATE,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tMODE_UNMOUNTING\n} from './constants';\nimport { getDomSibling, getParentDom } from './tree';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = Object.assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(Object.assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tObject.assign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._internal) {\n\t\tif (callback) addCommitCallback(this._internal, callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._internal) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._internal._flags |= FORCE_UPDATE;\n\t\tif (callback) addCommitCallback(this._internal, callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction rerenderComponent(component) {\n\tlet internal = component._internal;\n\n\tif (~internal._flags & MODE_UNMOUNTING && internal._flags & DIRTY_BIT) {\n\t\tlet parentDom = getParentDom(internal);\n\t\tlet startDom =\n\t\t\t(internal._flags & (MODE_HYDRATE | MODE_SUSPENDED)) ===\n\t\t\t(MODE_HYDRATE | MODE_SUSPENDED)\n\t\t\t\t? internal._dom\n\t\t\t\t: getDomSibling(internal, 0);\n\n\t\tconst vnode = createVNode(\n\t\t\tinternal.type,\n\t\t\tinternal.props,\n\t\t\tinternal.key, // @TODO we shouldn't need to actually pass these\n\t\t\tinternal.ref, // since the mode flag should bypass key/ref handling\n\t\t\t0\n\t\t);\n\n\t\tconst commitQueue = [];\n\t\tpatch(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\tinternal,\n\t\t\tcomponent._globalContext,\n\t\t\tcommitQueue,\n\t\t\tstartDom\n\t\t);\n\t\tcommitRoot(commitQueue, internal);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\nconst defer = Promise.prototype.then.bind(Promise.resolve());\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!(c._internal._flags & DIRTY_BIT) &&\n\t\t\t(c._internal._flags |= DIRTY_BIT) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\twhile ((len = process._rerenderCount = rerenderQueue.length)) {\n\t\trerenderQueue.sort((a, b) => a._internal._depth - b._internal._depth);\n\t\twhile (len--) {\n\t\t\trerenderComponent(rerenderQueue.shift());\n\t\t}\n\t}\n}\nlet len = (process._rerenderCount = 0);\n","import { Fragment } from '../create-element';\nimport options from '../options';\nimport { Component } from '../component';\nimport { mountChildren } from './mount';\nimport { diffChildren, reorderChildren } from './children';\nimport {\n\tDIRTY_BIT,\n\tFORCE_UPDATE,\n\tMODE_PENDING_ERROR,\n\tMODE_RERENDERING_ERROR,\n\tTYPE_CLASS\n} from '../constants';\nimport { addCommitCallback } from './commit';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').Internal} internal The component's backing Internal node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {import('../internal').CommitQueue} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactNode} startDom\n * @returns {import('../internal').PreactNode} pointer to the next DOM node (in order) to be rendered (or null)\n */\nexport function renderComponent(\n\tparentDom,\n\tnewVNode,\n\tinternal,\n\tglobalContext,\n\tcommitQueue,\n\tstartDom\n) {\n\t/** @type {import('../internal').Component} */\n\tlet c;\n\tlet isNew, oldProps, oldState, snapshot, tmp;\n\n\t/** @type {import('../internal').ComponentType} */\n\tlet type = (internal.type);\n\n\t// @TODO split update + mount?\n\tlet newProps = newVNode ? newVNode.props : internal.props;\n\n\tif (internal._flags & MODE_PENDING_ERROR) {\n\t\t// Toggle the MODE_PENDING_ERROR and MODE_RERENDERING_ERROR flags. In\n\t\t// actuality, this should turn off the MODE_PENDING_ERROR flag and turn on\n\t\t// the MODE_RERENDERING_ERROR flag.\n\t\tinternal._flags ^= MODE_PENDING_ERROR | MODE_RERENDERING_ERROR;\n\t}\n\n\t// Necessary for createContext api. Setting this property will pass\n\t// the context value as `this.context` just for this component.\n\ttmp = type.contextType;\n\tlet provider = tmp && globalContext[tmp._id];\n\tlet componentContext = tmp\n\t\t? provider\n\t\t\t? provider.props.value\n\t\t\t: tmp._defaultValue\n\t\t: globalContext;\n\n\tif (internal && internal._component) {\n\t\tc = internal._component;\n\t} else {\n\t\t// Instantiate the new component\n\t\tif (internal._flags & TYPE_CLASS) {\n\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\tinternal._component = c = new type(newProps, componentContext); // eslint-disable-line new-cap\n\t\t} else {\n\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\tinternal._component = c = new Component(newProps, componentContext);\n\t\t\tc.constructor = type;\n\t\t\tc.render = doRender;\n\t\t}\n\t\tif (provider) provider._subs.add(c);\n\n\t\tc.props = newProps;\n\t\tif (!c.state) c.state = {};\n\t\tc.context = componentContext;\n\t\tc._globalContext = globalContext;\n\t\tisNew = true;\n\t\tinternal._flags |= DIRTY_BIT;\n\t}\n\n\t// Invoke getDerivedStateFromProps\n\tif (c._nextState == null) {\n\t\tc._nextState = c.state;\n\t}\n\tif (type.getDerivedStateFromProps != null) {\n\t\tif (c._nextState == c.state) {\n\t\t\tc._nextState = Object.assign({}, c._nextState);\n\t\t}\n\n\t\tObject.assign(\n\t\t\tc._nextState,\n\t\t\ttype.getDerivedStateFromProps(newProps, c._nextState)\n\t\t);\n\t}\n\n\toldProps = c.props;\n\toldState = c.state;\n\tif (isNew) {\n\t\tif (type.getDerivedStateFromProps == null && c.componentWillMount != null) {\n\t\t\tc.componentWillMount();\n\t\t}\n\n\t\tif (c.componentDidMount != null) {\n\t\t\t// If the component was constructed, queue up componentDidMount so the\n\t\t\t// first time this internal commits (regardless of suspense or not) it\n\t\t\t// will be called\n\t\t\taddCommitCallback(internal, c.componentDidMount);\n\t\t}\n\t} else {\n\t\tif (\n\t\t\ttype.getDerivedStateFromProps == null &&\n\t\t\tnewProps !== oldProps &&\n\t\t\tc.componentWillReceiveProps != null\n\t\t) {\n\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t}\n\n\t\tif (\n\t\t\t(!(internal._flags & FORCE_UPDATE) &&\n\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\tc.shouldComponentUpdate(newProps, c._nextState, componentContext) ===\n\t\t\t\t\tfalse) ||\n\t\t\t(newVNode && newVNode._vnodeId === internal._vnodeId)\n\t\t) {\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\t\t\tinternal.props = newProps;\n\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\tif (newVNode && newVNode._vnodeId !== internal._vnodeId) {\n\t\t\t\tinternal._flags &= ~DIRTY_BIT;\n\t\t\t}\n\n\t\t\tc._internal = internal;\n\t\t\tif (\n\t\t\t\tinternal._commitCallbacks != null &&\n\t\t\t\tinternal._commitCallbacks.length\n\t\t\t) {\n\t\t\t\tcommitQueue.push(internal);\n\t\t\t}\n\n\t\t\t// TODO: Returning undefined here (i.e. return;) passes all tests. That seems\n\t\t\t// like a bug. Should validate that we have test coverage for sCU that\n\t\t\t// returns Fragments with multiple DOM children\n\t\t\treturn reorderChildren(internal, startDom, parentDom);\n\t\t}\n\n\t\tif (c.componentWillUpdate != null) {\n\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t}\n\t}\n\n\tc.context = componentContext;\n\tc.props = newProps;\n\tc.state = c._nextState;\n\n\tinternal.props = newProps;\n\n\tif ((tmp = options._render)) tmp(internal);\n\n\tinternal._flags &= ~DIRTY_BIT;\n\tc._internal = internal;\n\n\ttmp = c.render(c.props, c.state, c.context);\n\n\t// Handle setState called in render, see #2553\n\tc.state = c._nextState;\n\n\tif (c.getChildContext != null) {\n\t\tglobalContext = Object.assign({}, globalContext, c.getChildContext());\n\t}\n\n\tif (!isNew) {\n\t\tif (c.getSnapshotBeforeUpdate != null) {\n\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t}\n\n\t\t// Only schedule componentDidUpdate if the component successfully rendered\n\t\tif (c.componentDidUpdate != null) {\n\t\t\taddCommitCallback(internal, () => {\n\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t});\n\t\t}\n\t}\n\n\tlet isTopLevelFragment =\n\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\tlet nextDomSibling;\n\n\tif (internal._children == null) {\n\t\tnextDomSibling = mountChildren(\n\t\t\tparentDom,\n\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\tinternal,\n\t\t\tglobalContext,\n\t\t\tcommitQueue,\n\t\t\tstartDom\n\t\t);\n\t} else {\n\t\tnextDomSibling = diffChildren(\n\t\t\tparentDom,\n\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\tinternal,\n\t\t\tglobalContext,\n\t\t\tcommitQueue,\n\t\t\tstartDom\n\t\t);\n\t}\n\n\tif (internal._commitCallbacks != null && internal._commitCallbacks.length) {\n\t\tcommitQueue.push(internal);\n\t}\n\n\treturn nextDomSibling;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { applyRef } from './refs';\nimport {\n\tTYPE_COMPONENT,\n\tTYPE_ELEMENT,\n\tMODE_HYDRATE,\n\tMODE_MUTATIVE_HYDRATE,\n\tMODE_SUSPENDED,\n\tRESET_MODE,\n\tTYPE_TEXT,\n\tMODE_ERRORED,\n\tTYPE_ROOT,\n\tMODE_SVG\n} from '../constants';\nimport { normalizeToVNode } from '../create-element';\nimport { setProperty } from './props';\nimport { renderComponent } from './component';\nimport { createInternal } from '../tree';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode | string} newVNode The new virtual node\n * @param {import('../internal').Internal} internal The Internal node to mount\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {import('../internal').CommitQueue} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} startDom\n * @returns {import('../internal').PreactElement | null} pointer to the next DOM node to be hydrated (or null)\n */\nexport function mount(\n\tparentDom,\n\tnewVNode,\n\tinternal,\n\tglobalContext,\n\tcommitQueue,\n\tstartDom\n) {\n\tif (options._diff) options._diff(internal, newVNode);\n\n\t/** @type {import('../internal').PreactElement} */\n\tlet nextDomSibling;\n\n\ttry {\n\t\tif (internal._flags & TYPE_COMPONENT) {\n\t\t\t// Root nodes signal that an attempt to render into a specific DOM node on\n\t\t\t// the page. Root nodes can occur anywhere in the tree and not just at the\n\t\t\t// top.\n\t\t\tlet prevStartDom = startDom;\n\t\t\tlet prevParentDom = parentDom;\n\t\t\tif (internal._flags & TYPE_ROOT) {\n\t\t\t\tparentDom = newVNode.props._parentDom;\n\n\t\t\t\tif (parentDom !== prevParentDom) {\n\t\t\t\t\tstartDom = null;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tnextDomSibling = renderComponent(\n\t\t\t\tparentDom,\n\t\t\t\tnull,\n\t\t\t\tinternal,\n\t\t\t\tglobalContext,\n\t\t\t\tcommitQueue,\n\t\t\t\tstartDom\n\t\t\t);\n\n\t\t\tif (internal._flags & TYPE_ROOT && prevParentDom !== parentDom) {\n\t\t\t\t// If we just mounted a root node/Portal, and it changed the parentDom\n\t\t\t\t// of it's children, then we need to resume the diff from it's previous\n\t\t\t\t// startDom element, which could be null if we are mounting an entirely\n\t\t\t\t// new tree, or the portal's nextSibling if we are mounting a Portal in\n\t\t\t\t// an existing tree.\n\t\t\t\tnextDomSibling = prevStartDom;\n\t\t\t}\n\t\t} else {\n\t\t\tlet hydrateDom =\n\t\t\t\tinternal._flags & (MODE_HYDRATE | MODE_MUTATIVE_HYDRATE)\n\t\t\t\t\t? startDom\n\t\t\t\t\t: null;\n\n\t\t\tnextDomSibling = mountDOMElement(\n\t\t\t\thydrateDom,\n\t\t\t\tinternal,\n\t\t\t\tglobalContext,\n\t\t\t\tcommitQueue\n\t\t\t);\n\t\t}\n\n\t\tif (options.diffed) options.diffed(internal);\n\n\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\tinternal._flags &= RESET_MODE;\n\t} catch (e) {\n\t\tinternal._vnodeId = 0;\n\t\tinternal._flags |= e.then ? MODE_SUSPENDED : MODE_ERRORED;\n\n\t\tif (internal._flags & MODE_HYDRATE) {\n\t\t\t// @ts-ignore Trust me TS, nextSibling is a PreactElement\n\t\t\tnextDomSibling = startDom && startDom.nextSibling;\n\t\t\tinternal._dom = startDom; // Save our current DOM position to resume later\n\t\t}\n\t\toptions._catchError(e, internal);\n\t}\n\n\treturn nextDomSibling;\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').Internal} internal The Internal node to mount\n * @param {object} globalContext The current context object\n * @param {import('../internal').CommitQueue} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @returns {import('../internal').PreactElement}\n */\nfunction mountDOMElement(dom, internal, globalContext, commitQueue) {\n\tlet newProps = internal.props;\n\tlet nodeType = internal.type;\n\t/** @type {any} */\n\tlet i, value;\n\n\tlet flags = internal._flags;\n\tlet isSvg = flags & MODE_SVG;\n\n\t// Are we *not* hydrating? (a top-level render() or mutative hydration):\n\tlet isFullRender = ~flags & MODE_HYDRATE;\n\n\t// if hydrating (hydrate() or render() with replaceNode), find the matching child:\n\tif (flags & (MODE_HYDRATE | MODE_MUTATIVE_HYDRATE)) {\n\t\twhile (\n\t\t\tdom &&\n\t\t\t(nodeType ? dom.localName !== nodeType : dom.nodeType !== 3)\n\t\t) {\n\t\t\tdom = dom.nextSibling;\n\t\t}\n\t}\n\n\tlet isNew = dom == null;\n\n\tif (flags & TYPE_TEXT) {\n\t\tif (isNew) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\tdom = document.createTextNode(newProps);\n\t\t} else if (dom.data !== newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\n\t\tinternal._dom = dom;\n\t} else {\n\t\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\t\t// if (nodeType === 'svg') internal._flags |= MODE_SVG;\n\n\t\tif (isNew) {\n\t\t\tif (isSvg) {\n\t\t\t\tdom = document.createElementNS(\n\t\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\t\tnodeType\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom = document.createElement(\n\t\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\t\tnodeType,\n\t\t\t\t\tnewProps.is && newProps\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\t\tinternal._flags = flags &= RESET_MODE;\n\t\t\tisFullRender = 1;\n\t\t}\n\n\t\t// @TODO: Consider removing and instructing users to instead set the desired\n\t\t// prop for removal to undefined/null. During hydration, props are not\n\t\t// diffed at all (including dangerouslySetInnerHTML)\n\t\tif (flags & MODE_MUTATIVE_HYDRATE) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\tvalue = dom.attributes[i].name;\n\t\t\t\tif (!(value in newProps)) {\n\t\t\t\t\tdom.removeAttribute(value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet newHtml, newValue, newChildren;\n\t\tif (\n\t\t\t(internal.type === 'input' ||\n\t\t\t\tinternal.type === 'textarea' ||\n\t\t\t\tinternal.type === 'select') &&\n\t\t\t(newProps.onInput || newProps.onChange)\n\t\t) {\n\t\t\tif (newProps.value != null) {\n\t\t\t\tdom._isControlled = true;\n\t\t\t\tdom._prevValue = newProps.value;\n\t\t\t} else if (newProps.checked != null) {\n\t\t\t\tdom._isControlled = true;\n\t\t\t\tdom._prevValue = newProps.checked;\n\t\t\t}\n\t\t}\n\n\t\tfor (i in newProps) {\n\t\t\tvalue = newProps[i];\n\t\t\tif (i === 'key') {\n\t\t\t} else if (i === 'children') {\n\t\t\t\tnewChildren = value;\n\t\t\t} else if (i === 'dangerouslySetInnerHTML') {\n\t\t\t\tnewHtml = value;\n\t\t\t} else if (i === 'value') {\n\t\t\t\tnewValue = value;\n\t\t\t} else if (\n\t\t\t\tvalue != null &&\n\t\t\t\t(isFullRender || typeof value === 'function')\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, value, null, isSvg);\n\t\t\t}\n\t\t}\n\n\t\tinternal._dom = dom;\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tif (isFullRender && newHtml.__html) {\n\t\t\t\tdom.innerHTML = newHtml.__html;\n\t\t\t}\n\t\t\tinternal._children = null;\n\t\t} else if (newChildren != null) {\n\t\t\tmountChildren(\n\t\t\t\tdom,\n\t\t\t\tnewChildren && Array.isArray(newChildren) ? newChildren : [newChildren],\n\t\t\t\tinternal,\n\t\t\t\tglobalContext,\n\t\t\t\tcommitQueue,\n\t\t\t\tisNew ? null : dom.firstChild\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (isFullRender && newValue != null) {\n\t\t\tsetProperty(dom, 'value', newValue, null, 0);\n\t\t}\n\t}\n\n\t// @ts-ignore\n\treturn isNew ? null : dom.nextSibling;\n}\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').Internal} parentInternal The parent Internal of the given children\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {import('../internal').CommitQueue} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} startDom\n */\nexport function mountChildren(\n\tparentDom,\n\trenderResult,\n\tparentInternal,\n\tglobalContext,\n\tcommitQueue,\n\tstartDom\n) {\n\tlet internalChildren = (parentInternal._children = []),\n\t\ti,\n\t\tchildVNode,\n\t\tchildInternal,\n\t\tnewDom,\n\t\tmountedNextChild;\n\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = normalizeToVNode(renderResult[i]);\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tinternalChildren[i] = null;\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildInternal = createInternal(childVNode, parentInternal);\n\t\tinternalChildren[i] = childInternal;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tmountedNextChild = mount(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\tchildInternal,\n\t\t\tglobalContext,\n\t\t\tcommitQueue,\n\t\t\tstartDom\n\t\t);\n\n\t\tnewDom = childInternal._dom;\n\n\t\tif (childInternal._flags & TYPE_COMPONENT || newDom == startDom) {\n\t\t\t// If the child is a Fragment-like or if it is DOM VNode and its _dom\n\t\t\t// property matches the dom we are diffing (i.e. startDom), just\n\t\t\t// continue with the mountedNextChild\n\t\t\tstartDom = mountedNextChild;\n\t\t} else if (newDom != null) {\n\t\t\t// The DOM the diff should begin with is now startDom (since we inserted\n\t\t\t// newDom before startDom) so ignore mountedNextChild and continue with\n\t\t\t// startDom\n\t\t\tparentDom.insertBefore(newDom, startDom);\n\t\t}\n\n\t\tif (childInternal.ref) {\n\t\t\tapplyRef(\n\t\t\t\tnull,\n\t\t\t\tchildInternal.ref,\n\t\t\t\tchildInternal._component || newDom,\n\t\t\t\tchildInternal\n\t\t\t);\n\t\t}\n\t}\n\n\t// Remove children that are not part of any vnode.\n\tif (\n\t\tparentInternal._flags & (MODE_HYDRATE | MODE_MUTATIVE_HYDRATE) &&\n\t\tparentInternal._flags & TYPE_ELEMENT\n\t) {\n\t\t// TODO: Would it be simpler to just clear the pre-existing DOM in top-level\n\t\t// render if render is called with no oldVNode & existing children & no\n\t\t// replaceNode? Instead of patching the DOM to match the VNode tree? (remove\n\t\t// attributes & unused DOM)\n\t\twhile (startDom) {\n\t\t\ti = startDom;\n\t\t\tstartDom = startDom.nextSibling;\n\t\t\ti.remove();\n\t\t}\n\t}\n\n\treturn startDom;\n}\n","import {\n\tMODE_HYDRATE,\n\tMODE_MUTATIVE_HYDRATE,\n\tMODE_SVG,\n\tUNDEFINED\n} from './constants';\nimport { commitRoot } from './diff/commit';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { mount } from './diff/mount';\nimport { patch } from './diff/patch';\nimport { createInternal } from './tree';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n */\nexport function render(vnode, parentDom) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// List of effects that need to be called after diffing.\n\tconst commitQueue = [];\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet rootInternal = parentDom._children;\n\tvnode = createElement(Fragment, { _parentDom: parentDom }, [vnode]);\n\n\tif (rootInternal) {\n\t\tpatch(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\trootInternal,\n\t\t\t{},\n\t\t\tcommitQueue,\n\t\t\tparentDom.firstChild\n\t\t);\n\t} else {\n\t\t// Store the VDOM tree root on the DOM element in a (minified) property:\n\t\trootInternal = parentDom._children = createInternal(vnode, null);\n\n\t\tif (parentDom.ownerSVGElement !== UNDEFINED) {\n\t\t\trootInternal._flags |= MODE_SVG;\n\t\t}\n\n\t\t// Calling `render` on a container with existing DOM elements puts the diff into mutative hydrate mode:\n\t\tif (parentDom.firstChild) {\n\t\t\trootInternal._flags |= MODE_MUTATIVE_HYDRATE;\n\t\t}\n\n\t\tmount(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\trootInternal,\n\t\t\t{},\n\t\t\tcommitQueue,\n\t\t\t// Start the diff at the replaceNode or the parentDOM.firstChild if any.\n\t\t\t// Will be null if the parentDom is empty\n\t\t\tparentDom.firstChild\n\t\t);\n\t}\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, rootInternal);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\tvnode = createElement(Fragment, { _parentDom: parentDom }, [vnode]);\n\tconst rootInternal = createInternal(vnode);\n\trootInternal._flags |= MODE_HYDRATE;\n\tparentDom._children = rootInternal;\n\n\tif (parentDom.ownerSVGElement !== UNDEFINED) {\n\t\trootInternal._flags |= MODE_SVG;\n\t}\n\n\tconst commitQueue = [];\n\tmount(parentDom, vnode, rootInternal, {}, commitQueue, parentDom.firstChild);\n\tcommitRoot(commitQueue, rootInternal);\n}\n","import {\n\tMODE_HYDRATE,\n\tMODE_MUTATIVE_HYDRATE,\n\tMODE_SVG,\n\tUNDEFINED\n} from './constants';\nimport { commitRoot } from './diff/commit';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { mount } from './diff/mount';\nimport { patch } from './diff/patch';\nimport { createInternal } from './tree';\n\n/**\n *\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n */\nexport function createRoot(parentDom) {\n\tlet rootInternal = null;\n\n\tfunction render(vnode) {\n\t\tif (options._root) options._root(vnode, parentDom);\n\n\t\t// List of effects that need to be called after diffing.\n\t\tconst commitQueue = [];\n\n\t\tvnode = createElement(Fragment, { _parentDom: parentDom }, [vnode]);\n\n\t\tif (rootInternal) {\n\t\t\tpatch(\n\t\t\t\tparentDom,\n\t\t\t\tvnode,\n\t\t\t\trootInternal,\n\t\t\t\t{},\n\t\t\t\tcommitQueue,\n\t\t\t\tparentDom.firstChild\n\t\t\t);\n\t\t} else {\n\t\t\t// Store the VDOM tree root on the DOM element in a (minified) property:\n\t\t\trootInternal = parentDom._children = createInternal(vnode, null);\n\n\t\t\tif (parentDom.ownerSVGElement !== UNDEFINED) {\n\t\t\t\trootInternal._flags |= MODE_SVG;\n\t\t\t}\n\n\t\t\t// Calling `render` on a container with existing DOM elements puts the diff into mutative hydrate mode:\n\t\t\tif (parentDom.firstChild) {\n\t\t\t\trootInternal._flags |= MODE_MUTATIVE_HYDRATE;\n\t\t\t}\n\n\t\t\tmount(\n\t\t\t\tparentDom,\n\t\t\t\tvnode,\n\t\t\t\trootInternal,\n\t\t\t\t{},\n\t\t\t\tcommitQueue,\n\t\t\t\t// Start the diff at the replaceNode or the parentDOM.firstChild if any.\n\t\t\t\t// Will be null if the parentDom is empty\n\t\t\t\tparentDom.firstChild\n\t\t\t);\n\t\t}\n\n\t\t// Flush all queued effects\n\t\tcommitRoot(commitQueue, vnode);\n\t}\n\n\treturn {\n\t\thydrate(vnode) {\n\t\t\tif (options._root) options._root(vnode, parentDom);\n\n\t\t\tvnode = createElement(Fragment, { _parentDom: parentDom }, [vnode]);\n\t\t\trootInternal = createInternal(vnode);\n\t\t\trootInternal._flags |= MODE_HYDRATE;\n\t\t\tparentDom._children = rootInternal;\n\n\t\t\tif (parentDom.ownerSVGElement !== UNDEFINED) {\n\t\t\t\trootInternal._flags |= MODE_SVG;\n\t\t\t}\n\n\t\t\tconst commitQueue = [];\n\t\t\tmount(\n\t\t\t\tparentDom,\n\t\t\t\tvnode,\n\t\t\t\trootInternal,\n\t\t\t\t{},\n\t\t\t\tcommitQueue,\n\t\t\t\tparentDom.firstChild\n\t\t\t);\n\t\t\tcommitRoot(commitQueue, rootInternal);\n\t\t},\n\t\trender\n\t};\n}\n","import { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = Object.assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tfor (i in props) {\n\t\tif (!(i === 'key' || (typeof vnode.type !== 'function' && i === 'ref'))) {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t} else if (i === 'key') {\n\t\t\tkey = props[i];\n\t\t} else if (i === 'ref') {\n\t\t\tref = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\t0\n\t);\n}\n"],"names":["EMPTY_ARR","options","[object Object]","error","internal","TYPE_CLASS","type","getDerivedStateFromError","setState","componentDidCatch","e","addCommitCallback","callback","push","commitRoot","commitQueue","rootInternal","some","length","shift","call","vnodeId","createElement","props","children","key","ref","i","normalizedProps","arguments","defaultProps","undefined","createVNode","original","vnode","constructor","__v","normalizeToVNode","childVNode","Array","isArray","Fragment","createRef","current","isValidElement","applyRef","oldRef","value","setStyle","style","setProperty","dom","name","oldValue","isSvg","useCapture","o","cssText","replace","toLowerCase","slice","_listeners","addEventListener","eventProxyCapture","eventProxy","removeEventListener","setAttribute","removeAttribute","this","event","_isControlled","_prevValue","checked","nextContextId","providers","Set","createContext","defaultValue","contextId","context","__c","__","Consumer","contextValue","Provider","ctx","forEach","enqueueRender","getChildContext","contextType","unmount","parentInternal","skipRemove","r","delete","component","p","componentWillUnmount","TYPE_TEXT","remove","createInternal","flags","MODE_HYDRATE","NaN","prototype","__k","__e","__f","__b","shouldSearchComponent","getParentDom","getDomSibling","childIndex","indexOf","getChildDom","child","childDom","parentDom","parent","diffChildren","renderResult","globalContext","startDom","newDom","refs","childInternal","oldChildren","oldChildrenLength","newChildren","oldVNodeRef","nextDomSibling","findMatchingInternal","mount","patch","placeChild","parentNode","j","reorderChildren","tmp","nextSibling","toChildArray","out","insertBefore","sibDom","newVNode","data","patchDOMElement","diffed","prevStartDom","prevParentDom","renderComponent","then","newHtml","oldHtml","oldProps","newProps","innerHTML","firstChild","Component","rerenderComponent","update","s","state","Object","assign","forceUpdate","render","prevDebounce","rerenderQueue","defer","Promise","bind","resolve","c","process","debounceRendering","len","sort","a","b","isNew","oldState","snapshot","MODE_PENDING_ERROR","provider","componentContext","doRender","add","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","getSnapshotBeforeUpdate","componentDidUpdate","mountChildren","mountDOMElement","nodeType","isFullRender","localName","document","createTextNode","createElementNS","is","attributes","newValue","onInput","onChange","mountedNextChild","internalChildren","__P","ownerSVGElement","hydrate","createRoot","cloneElement"],"mappings":"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"}
\ No newline at end of file