Linux websever 5.15.0-153-generic #163-Ubuntu SMP Thu Aug 7 16:37:18 UTC 2025 x86_64
Apache/2.4.52 (Ubuntu)
: 192.168.3.70 | : 192.168.1.99
Cant Read [ /etc/named.conf ]
8.1.2-1ubuntu2.23
urlab
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
README
+ Create Folder
+ Create File
/
var /
www /
html /
events /
node_modules /
preact /
dist /
[ HOME SHELL ]
Name
Size
Permission
Action
preact.js
11.04
KB
-rw-rw-r--
preact.js.map
80.23
KB
-rw-rw-r--
preact.min.js
11
KB
-rw-rw-r--
preact.min.js.map
80.53
KB
-rw-rw-r--
preact.min.module.js
11.02
KB
-rw-rw-r--
preact.min.module.js.map
80.46
KB
-rw-rw-r--
preact.min.umd.js
11.07
KB
-rw-rw-r--
preact.min.umd.js.map
80.53
KB
-rw-rw-r--
preact.mjs
11
KB
-rw-rw-r--
preact.module.js
11
KB
-rw-rw-r--
preact.module.js.map
80.3
KB
-rw-rw-r--
preact.umd.js
11.12
KB
-rw-rw-r--
preact.umd.js.map
80.31
KB
-rw-rw-r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : preact.js.map
{"version":3,"file":"preact.js","sources":["../src/constants.js","../src/util.js","../src/options.js","../src/create-element.js","../src/component.js","../src/create-context.js","../src/diff/children.js","../src/diff/props.js","../src/diff/index.js","../src/render.js","../src/diff/catch-error.js","../src/clone-element.js"],"sourcesContent":["/** Normal hydration that attaches to a DOM tree but does not diff it. */\nexport const MODE_HYDRATE = 1 << 5;\n/** Signifies this VNode suspended on the previous render */\nexport const MODE_SUSPENDED = 1 << 7;\n/** Indicates that this node needs to be inserted while patching children */\nexport const INSERT_VNODE = 1 << 16;\n/** Indicates a VNode has been matched with another VNode in the diff */\nexport const MATCHED = 1 << 17;\n\n/** Reset all mode flags */\nexport const RESET_MODE = ~(MODE_HYDRATE | MODE_SUSPENDED);\n\nexport const EMPTY_OBJ = /** @type {any} */ ({});\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL =\n\t/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { EMPTY_ARR } from './constants';\n\nexport const isArray = Array.isArray;\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\t// @ts-expect-error We change the type of `obj` to be `O & P`\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 {preact.ContainerNode} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\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 {Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {VNode[\"type\"]} type The node name or Component constructor for this\n * virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the\n * virtual node\n * @returns {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') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : 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, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {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 {VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {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\t/** @type {VNode} */\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 == null ? ++vnodeId : original,\n\t\t_index: -1,\n\t\t_flags: 0\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\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 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';\nimport { EMPTY_ARR, MODE_HYDRATE } from './constants';\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 BaseComponent(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {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 */\nBaseComponent.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 = 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(assign({}, 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) {\n\t\t\tthis._stateCallbacks.push(callback);\n\t\t}\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nBaseComponent.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 {ComponentChildren | void}\n */\nBaseComponent.prototype.render = Fragment;\n\n/**\n * @param {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._index + 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 {Component} component The component to rerender\n */\nfunction renderComponent(component, commitQueue, refQueue) {\n\tlet oldVNode = component._vnode,\n\t\toldDom = oldVNode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tconst newVNode = assign({}, oldVNode);\n\t\tnewVNode._original = oldVNode._original + 1;\n\t\tif (options.vnode) options.vnode(newVNode);\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\toldVNode._flags & MODE_HYDRATE ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(oldVNode) : oldDom,\n\t\t\t!!(oldVNode._flags & MODE_HYDRATE),\n\t\t\trefQueue\n\t\t);\n\n\t\tnewVNode._original = oldVNode._original;\n\t\tnewVNode._parent._children[newVNode._index] = newVNode;\n\n\t\tnewVNode._nextDom = undefined;\n\n\t\tif (newVNode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(newVNode);\n\t\t}\n\n\t\treturn newVNode;\n\t}\n}\n\n/**\n * @param {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<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 =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/**\n * Enqueue a rerender of a component\n * @param {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!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/**\n * @param {Component} a\n * @param {Component} b\n */\nconst depthSort = (a, b) => a._vnode._depth - b._vnode._depth;\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\tlet commitQueue = [];\n\tlet refQueue = [];\n\tlet root;\n\trerenderQueue.sort(depthSort);\n\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t// process() calls from getting scheduled while `queue` is still being consumed.\n\twhile ((c = rerenderQueue.shift())) {\n\t\tif (c._dirty) {\n\t\t\tlet renderQueueLength = rerenderQueue.length;\n\t\t\troot = renderComponent(c, commitQueue, refQueue) || root;\n\t\t\t// If this WAS the last component in the queue, run commit callbacks *before* we exit the tight loop.\n\t\t\t// This is required in order for `componentDidMount(){this.setState()}` to be batched into one flush.\n\t\t\t// Otherwise, also run commit callbacks if the render queue was mutated.\n\t\t\tif (renderQueueLength === 0 || rerenderQueue.length > renderQueueLength) {\n\t\t\t\tcommitRoot(commitQueue, root, refQueue);\n\t\t\t\trefQueue.length = commitQueue.length = 0;\n\t\t\t\troot = undefined;\n\t\t\t\t// When i.e. rerendering a provider additional new items can be injected, we want to\n\t\t\t\t// keep the order from top to bottom with those new items so we can handle them in a\n\t\t\t\t// single pass\n\t\t\t\trerenderQueue.sort(depthSort);\n\t\t\t} else if (root) {\n\t\t\t\tif (options._commit) options._commit(root, EMPTY_ARR);\n\t\t\t}\n\t\t}\n\t}\n\tif (root) commitRoot(commitQueue, root, refQueue);\n\tprocess._rerenderCount = 0;\n}\n\nprocess._rerenderCount = 0;\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {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 {FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\t/** @type {Component[]} */\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function (_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.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\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc._force = true;\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\tif (old) 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\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 =\n\t\tcontext);\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR, INSERT_VNODE, MATCHED } from '../constants';\nimport { isArray } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {PreactElement} parentDom The DOM element whose children are being\n * diffed\n * @param {ComponentChildren[]} renderResult\n * @param {VNode} newParentVNode The new virtual node whose children should be\n * diff'ed against oldParentVNode\n * @param {VNode} oldParentVNode The old virtual node whose children should be\n * diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by\n * getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\tlet i,\n\t\t/** @type {VNode} */\n\t\toldVNode,\n\t\t/** @type {VNode} */\n\t\tchildVNode,\n\t\t/** @type {PreactElement} */\n\t\tnewDom,\n\t\t/** @type {PreactElement} */\n\t\tfirstChildDom;\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\t/** @type {VNode[]} */\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet newChildrenLength = renderResult.length;\n\n\tnewParentVNode._nextDom = oldDom;\n\tconstructNewChildrenArray(newParentVNode, renderResult, oldChildren);\n\toldDom = newParentVNode._nextDom;\n\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\tchildVNode = newParentVNode._children[i];\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// At this point, constructNewChildrenArray has assigned _index to be the\n\t\t// matchingIndex for this VNode's oldVNode (or -1 if there is no oldVNode).\n\t\tif (childVNode._index === -1) {\n\t\t\toldVNode = EMPTY_OBJ;\n\t\t} else {\n\t\t\toldVNode = oldChildren[childVNode._index] || EMPTY_OBJ;\n\t\t}\n\n\t\t// Update childVNode._index to its final index\n\t\tchildVNode._index = i;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\n\t\t// Adjust DOM nodes\n\t\tnewDom = childVNode._dom;\n\t\tif (childVNode.ref && oldVNode.ref != childVNode.ref) {\n\t\t\tif (oldVNode.ref) {\n\t\t\t\tapplyRef(oldVNode.ref, null, childVNode);\n\t\t\t}\n\t\t\trefQueue.push(\n\t\t\t\tchildVNode.ref,\n\t\t\t\tchildVNode._component || newDom,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t}\n\n\t\tif (firstChildDom == null && newDom != null) {\n\t\t\tfirstChildDom = newDom;\n\t\t}\n\n\t\tif (\n\t\t\tchildVNode._flags & INSERT_VNODE ||\n\t\t\toldVNode._children === childVNode._children\n\t\t) {\n\t\t\toldDom = insert(childVNode, oldDom, parentDom);\n\t\t} else if (\n\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\tchildVNode._nextDom !== undefined\n\t\t) {\n\t\t\t// Since Fragments or components that return Fragment like VNodes can\n\t\t\t// contain multiple DOM nodes as the same level, continue the diff from\n\t\t\t// the sibling of last DOM child of this child VNode\n\t\t\toldDom = childVNode._nextDom;\n\t\t} else if (newDom) {\n\t\t\toldDom = newDom.nextSibling;\n\t\t}\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because it\n\t\t// is only used by `diffChildren` to determine where to resume the diff\n\t\t// after diffing Components and Fragments. Once we store it the nextDOM\n\t\t// local var, we can clean up the property. Also prevents us hanging on to\n\t\t// DOM nodes that may have been unmounted.\n\t\tchildVNode._nextDom = undefined;\n\n\t\t// Unset diffing flags\n\t\tchildVNode._flags &= ~(INSERT_VNODE | MATCHED);\n\t}\n\n\t// TODO: With new child diffing algo, consider alt ways to diff Fragments.\n\t// Such as dropping oldDom and moving fragments in place\n\t//\n\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t// _nextDom property to the nextSibling of its last child DOM node.\n\t//\n\t// `oldDom` contains the correct value here because if the last child\n\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t// node's nextSibling.\n\tnewParentVNode._nextDom = oldDom;\n\tnewParentVNode._dom = firstChildDom;\n}\n\n/**\n * @param {VNode} newParentVNode\n * @param {ComponentChildren[]} renderResult\n * @param {VNode[]} oldChildren\n */\nfunction constructNewChildrenArray(newParentVNode, renderResult, oldChildren) {\n\t/** @type {number} */\n\tlet i;\n\t/** @type {VNode} */\n\tlet childVNode;\n\t/** @type {VNode} */\n\tlet oldVNode;\n\n\tconst newChildrenLength = renderResult.length;\n\tlet oldChildrenLength = oldChildren.length,\n\t\tremainingOldChildren = oldChildrenLength;\n\n\tlet skew = 0;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < newChildrenLength; i++) {\n\t\t// @ts-expect-error We are reusing the childVNode variable to hold both the\n\t\t// pre and post normalized childVNode\n\t\tchildVNode = renderResult[i];\n\n\t\tif (\n\t\t\tchildVNode == null ||\n\t\t\ttypeof childVNode == 'boolean' ||\n\t\t\ttypeof childVNode == 'function'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint' ||\n\t\t\tchildVNode.constructor == String\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode.constructor === undefined && childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t// const reuse = <div />\n\t\t\t// <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\tconst skewedIndex = i + skew;\n\n\t\t// Handle unmounting null placeholders, i.e. VNode => null in unkeyed children\n\t\tif (childVNode == null) {\n\t\t\toldVNode = oldChildren[skewedIndex];\n\t\t\tif (\n\t\t\t\toldVNode &&\n\t\t\t\toldVNode.key == null &&\n\t\t\t\toldVNode._dom &&\n\t\t\t\t(oldVNode._flags & MATCHED) === 0\n\t\t\t) {\n\t\t\t\tif (oldVNode._dom == newParentVNode._nextDom) {\n\t\t\t\t\tnewParentVNode._nextDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\t\t\t\tunmount(oldVNode, oldVNode, false);\n\n\t\t\t\t// Explicitly nullify this position in oldChildren instead of just\n\t\t\t\t// setting `_match=true` to prevent other routines (e.g.\n\t\t\t\t// `findMatchingIndex` or `getDomSibling`) from thinking VNodes or DOM\n\t\t\t\t// nodes in this position are still available to be used in diffing when\n\t\t\t\t// they have actually already been unmounted. For example, by only\n\t\t\t\t// setting `_match=true` here, the unmounting loop later would attempt\n\t\t\t\t// to unmount this VNode again seeing `_match==true`. Further,\n\t\t\t\t// getDomSibling doesn't know about _match and so would incorrectly\n\t\t\t\t// assume DOM nodes in this subtree are mounted and usable.\n\t\t\t\toldChildren[skewedIndex] = null;\n\t\t\t\tremainingOldChildren--;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\tconst matchingIndex = findMatchingIndex(\n\t\t\tchildVNode,\n\t\t\toldChildren,\n\t\t\tskewedIndex,\n\t\t\tremainingOldChildren\n\t\t);\n\n\t\t// Temporarily store the matchingIndex on the _index property so we can pull\n\t\t// out the oldVNode in diffChildren. We'll override this to the VNode's\n\t\t// final index after using this property to get the oldVNode\n\t\tchildVNode._index = matchingIndex;\n\n\t\toldVNode = null;\n\t\tif (matchingIndex !== -1) {\n\t\t\toldVNode = oldChildren[matchingIndex];\n\t\t\tremainingOldChildren--;\n\t\t\tif (oldVNode) {\n\t\t\t\toldVNode._flags |= MATCHED;\n\t\t\t}\n\t\t}\n\n\t\t// Here, we define isMounting for the purposes of the skew diffing\n\t\t// algorithm. Nodes that are unsuspending are considered mounting and we detect\n\t\t// this by checking if oldVNode._original === null\n\t\tconst isMounting = oldVNode == null || oldVNode._original === null;\n\n\t\tif (isMounting) {\n\t\t\tif (matchingIndex == -1) {\n\t\t\t\tskew--;\n\t\t\t}\n\n\t\t\t// If we are mounting a DOM VNode, mark it for insertion\n\t\t\tif (typeof childVNode.type != 'function') {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t} else if (matchingIndex !== skewedIndex) {\n\t\t\tif (matchingIndex === skewedIndex + 1) {\n\t\t\t\tskew++;\n\t\t\t} else if (matchingIndex > skewedIndex) {\n\t\t\t\tif (remainingOldChildren > newChildrenLength - skewedIndex) {\n\t\t\t\t\tskew += matchingIndex - skewedIndex;\n\t\t\t\t} else {\n\t\t\t\t\tskew--;\n\t\t\t\t}\n\t\t\t} else if (matchingIndex < skewedIndex) {\n\t\t\t\tif (matchingIndex == skewedIndex - 1) {\n\t\t\t\t\tskew = matchingIndex - skewedIndex;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tskew = 0;\n\t\t\t}\n\n\t\t\t// Move this VNode's DOM if the original index (matchingIndex) doesn't\n\t\t\t// match the new skew index (i + new skew)\n\t\t\tif (matchingIndex !== i + skew) {\n\t\t\t\tchildVNode._flags |= INSERT_VNODE;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove remaining oldChildren if there are any. Loop forwards so that as we\n\t// unmount DOM from the beginning of the oldChildren, we can adjust oldDom to\n\t// point to the next child, which needs to be the first DOM node that won't be\n\t// unmounted.\n\tif (remainingOldChildren) {\n\t\tfor (i = 0; i < oldChildrenLength; i++) {\n\t\t\toldVNode = oldChildren[i];\n\t\t\tif (oldVNode != null && (oldVNode._flags & MATCHED) === 0) {\n\t\t\t\tif (oldVNode._dom == newParentVNode._nextDom) {\n\t\t\t\t\tnewParentVNode._nextDom = getDomSibling(oldVNode);\n\t\t\t\t}\n\n\t\t\t\tunmount(oldVNode, oldVNode);\n\t\t\t}\n\t\t}\n\t}\n}\n\n/**\n * @param {VNode} parentVNode\n * @param {PreactElement} oldDom\n * @param {PreactElement} parentDom\n * @returns {PreactElement}\n */\nfunction insert(parentVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\n\tif (typeof parentVNode.type == 'function') {\n\t\tlet children = parentVNode._children;\n\t\tfor (let i = 0; children && i < children.length; i++) {\n\t\t\tif (children[i]) {\n\t\t\t\t// If we enter this code path on sCU bailout, where we copy\n\t\t\t\t// oldVNode._children to newVNode._children, we need to update the old\n\t\t\t\t// children's _parent pointer to point to the newVNode (parentVNode\n\t\t\t\t// here).\n\t\t\t\tchildren[i]._parent = parentVNode;\n\t\t\t\toldDom = insert(children[i], oldDom, parentDom);\n\t\t\t}\n\t\t}\n\n\t\treturn oldDom;\n\t} else if (parentVNode._dom != oldDom) {\n\t\tparentDom.insertBefore(parentVNode._dom, oldDom || null);\n\t\toldDom = parentVNode._dom;\n\t}\n\n\tdo {\n\t\toldDom = oldDom && oldDom.nextSibling;\n\t} while (oldDom != null && oldDom.nodeType === 8);\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {ComponentChildren} children The unflattened children of a virtual\n * node\n * @returns {VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\n/**\n * @param {VNode} childVNode\n * @param {VNode[]} oldChildren\n * @param {number} skewedIndex\n * @param {number} remainingOldChildren\n * @returns {number}\n */\nfunction findMatchingIndex(\n\tchildVNode,\n\toldChildren,\n\tskewedIndex,\n\tremainingOldChildren\n) {\n\tconst key = childVNode.key;\n\tconst type = childVNode.type;\n\tlet x = skewedIndex - 1;\n\tlet y = skewedIndex + 1;\n\tlet oldVNode = oldChildren[skewedIndex];\n\n\t// We only need to perform a search if there are more children\n\t// (remainingOldChildren) to search. However, if the oldVNode we just looked\n\t// at skewedIndex was not already used in this diff, then there must be at\n\t// least 1 other (so greater than 1) remainingOldChildren to attempt to match\n\t// against. So the following condition checks that ensuring\n\t// remainingOldChildren > 1 if the oldVNode is not already used/matched. Else\n\t// if the oldVNode was null or matched, then there could needs to be at least\n\t// 1 (aka `remainingOldChildren > 0`) children to find and compare against.\n\tlet shouldSearch =\n\t\tremainingOldChildren >\n\t\t(oldVNode != null && (oldVNode._flags & MATCHED) === 0 ? 1 : 0);\n\n\tif (\n\t\toldVNode === null ||\n\t\t(oldVNode &&\n\t\t\tkey == oldVNode.key &&\n\t\t\ttype === oldVNode.type &&\n\t\t\t(oldVNode._flags & MATCHED) === 0)\n\t) {\n\t\treturn skewedIndex;\n\t} else if (shouldSearch) {\n\t\twhile (x >= 0 || y < oldChildren.length) {\n\t\t\tif (x >= 0) {\n\t\t\t\toldVNode = oldChildren[x];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) === 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn x;\n\t\t\t\t}\n\t\t\t\tx--;\n\t\t\t}\n\n\t\t\tif (y < oldChildren.length) {\n\t\t\t\toldVNode = oldChildren[y];\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\t(oldVNode._flags & MATCHED) === 0 &&\n\t\t\t\t\tkey == oldVNode.key &&\n\t\t\t\t\ttype === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\treturn y;\n\t\t\t\t}\n\t\t\t\ty++;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn -1;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value == null ? '' : value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {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 */\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 =\n\t\t\tname !== (name = name.replace(/(PointerCapture)$|Capture$/i, '$1'));\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\tvalue._attached = Date.now();\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t} else {\n\t\t\t\tvalue._attached = oldValue._attached;\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 {\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 !== 'width' &&\n\t\t\tname !== 'height' &&\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 !== 'rowSpan' &&\n\t\t\tname !== 'colSpan' &&\n\t\t\tname !== 'role' &&\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- and data- attributes have no boolean representation.\n\t\t// A `false` value is different from the attribute not being\n\t\t// present, so we can't remove it. For non-boolean aria\n\t\t// attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost too many bytes. On top of\n\t\t// that other frameworks generally stringify `false`.\n\n\t\tif (typeof value == 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (value != null && (value !== false || name[4] === '-')) {\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 {PreactEvent} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tif (this._listeners) {\n\t\tconst eventHandler = this._listeners[e.type + false];\n\t\t/**\n\t\t * This trick is inspired by Vue https://github.com/vuejs/core/blob/main/packages/runtime-dom/src/modules/events.ts#L90-L101\n\t\t * when the dom performs an event it leaves micro-ticks in between bubbling up which means that an event can trigger on a newly\n\t\t * created DOM-node while the event bubbles up, this can cause quirky behavior as seen in https://github.com/preactjs/preact/issues/3927\n\t\t */\n\t\tif (!e._dispatched) {\n\t\t\t// When an event has no _dispatched we know this is the first event-target in the chain\n\t\t\t// so we set the initial dispatched time.\n\t\t\te._dispatched = Date.now();\n\t\t\t// When the _dispatched is smaller than the time when the targetted event handler was attached\n\t\t\t// we know we have bubbled up to an element that was added during patching the dom.\n\t\t} else if (e._dispatched <= eventHandler._attached) {\n\t\t\treturn;\n\t\t}\n\t\treturn eventHandler(options.event ? options.event(e) : e);\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {PreactEvent} e The event object from the browser\n * @private\n */\nfunction eventProxyCapture(e) {\n\tif (this._listeners) {\n\t\treturn this._listeners[e.type + true](options.event ? options.event(e) : e);\n\t}\n}\n","import {\n\tEMPTY_OBJ,\n\tMODE_HYDRATE,\n\tMODE_SUSPENDED,\n\tRESET_MODE\n} from '../constants';\nimport { BaseComponent, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { setProperty } from './props';\nimport { assign, isArray, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {PreactElement} parentDom The parent of the DOM element\n * @param {VNode} newVNode The new virtual node\n * @param {VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by\n * getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {PreactElement} oldDom The current attached DOM element any new dom\n * elements should be placed around. Likely `null` on first render (except when\n * hydrating). Can be a sibling DOM element when diffing Fragments that have\n * siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating,\n\trefQueue\n) {\n\t/** @type {any} */\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\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._flags & MODE_SUSPENDED) {\n\t\tisHydrating = !!(oldVNode._flags & MODE_HYDRATE);\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\touter: if (typeof newType == 'function') {\n\t\ttry {\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\t// @ts-expect-error The check above verifies that newType is suppose to be constructed\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\t// @ts-expect-error Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new BaseComponent(\n\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t);\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\tc._stateCallbacks = [];\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\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\t\t\tc._vnode = newVNode;\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((c.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\tnewVNode._original === oldVNode._original)\n\t\t\t\t) {\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) {\n\t\t\t\t\t\t// When we are dealing with a bail because of sCU we have to update\n\t\t\t\t\t\t// the props, state and dirty-state.\n\t\t\t\t\t\t// when we are dealing with strict-equality we don't as the child could still\n\t\t\t\t\t\t// be dirtied see #3883\n\t\t\t\t\t\tc.props = newProps;\n\t\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t\tc._dirty = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\n\t\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t\t}\n\t\t\t\t\tc._stateCallbacks = [];\n\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\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._parentDom = parentDom;\n\t\t\tc._force = false;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\tfor (let i = 0; i < c._stateCallbacks.length; i++) {\n\t\t\t\t\tc._renderCallbacks.push(c._stateCallbacks[i]);\n\t\t\t\t}\n\t\t\t\tc._stateCallbacks = [];\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\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\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tisArray(renderResult) ? renderResult : [renderResult],\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\trefQueue\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._flags &= RESET_MODE;\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\t\t} catch (e) {\n\t\t\tnewVNode._original = null;\n\t\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\t\tnewVNode._dom = oldDom;\n\t\t\t\tnewVNode._flags |= isHydrating\n\t\t\t\t\t? MODE_HYDRATE | MODE_SUSPENDED\n\t\t\t\t\t: MODE_HYDRATE;\n\t\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t\t// ^ could possibly be simplified to:\n\t\t\t\t// excessDomChildren.length = 0;\n\t\t\t} else {\n\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t}\n\t\t\toptions._catchError(e, newVNode, oldVNode);\n\t\t}\n\t} else if (\n\t\texcessDomChildren == null &&\n\t\tnewVNode._original === oldVNode._original\n\t) {\n\t\tnewVNode._children = oldVNode._children;\n\t\tnewVNode._dom = oldVNode._dom;\n\t} else {\n\t\tnewVNode._dom = diffElementNodes(\n\t\t\toldVNode._dom,\n\t\t\tnewVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\tisHydrating,\n\t\t\trefQueue\n\t\t);\n\t}\n\n\tif ((tmp = options.diffed)) tmp(newVNode);\n}\n\n/**\n * @param {Array<Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {VNode} root\n */\nexport function commitRoot(commitQueue, root, refQueue) {\n\tfor (let i = 0; i < refQueue.length; i++) {\n\t\tapplyRef(refQueue[i], refQueue[++i], refQueue[++i]);\n\t}\n\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-expect-error Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-expect-error See above comment on commitQueue\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 {PreactElement} dom The DOM element representing the virtual nodes\n * being diffed\n * @param {VNode} newVNode The new virtual node\n * @param {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 {Array<PreactElement>} excessDomChildren\n * @param {Array<Component>} commitQueue List of components which have callbacks\n * to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @param {any[]} refQueue an array of elements needed to invoke refs\n * @returns {PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating,\n\trefQueue\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = /** @type {string} */ (newVNode.type);\n\t/** @type {any} */\n\tlet i;\n\t/** @type {{ __html?: string }} */\n\tlet newHtml;\n\t/** @type {{ __html?: string }} */\n\tlet oldHtml;\n\t/** @type {ComponentChildren} */\n\tlet newChildren;\n\tlet value;\n\tlet inputValue;\n\tlet checked;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tvalue = 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\tvalue &&\n\t\t\t\t'setAttribute' in value === !!nodeType &&\n\t\t\t\t(nodeType ? value.localName === nodeType : value.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = value;\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 (nodeType === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS('http://www.w3.org/2000/svg', nodeType);\n\t\t} else {\n\t\t\tdom = document.createElement(nodeType, newProps.is && newProps);\n\t\t}\n\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\n\t\t// case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\t// If we are in a situation where we are not hydrating but are using\n\t\t// existing DOM (e.g. replaceNode) we should read the existing DOM\n\t\t// attributes to diff them\n\t\tif (!isHydrating && excessDomChildren != null) {\n\t\t\toldProps = {};\n\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\tvalue = dom.attributes[i];\n\t\t\t\toldProps[value.name] = value.value;\n\t\t\t}\n\t\t}\n\n\t\tfor (i in oldProps) {\n\t\t\tvalue = oldProps[i];\n\t\t\tif (i == 'children') {\n\t\t\t} else if (i == 'dangerouslySetInnerHTML') {\n\t\t\t\toldHtml = value;\n\t\t\t} else if (i !== 'key' && !(i in newProps)) {\n\t\t\t\tsetProperty(dom, i, null, value, isSvg);\n\t\t\t}\n\t\t}\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\tfor (i in newProps) {\n\t\t\tvalue = newProps[i];\n\t\t\tif (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\tinputValue = value;\n\t\t\t} else if (i == 'checked') {\n\t\t\t\tchecked = value;\n\t\t\t} else if (\n\t\t\t\ti !== 'key' &&\n\t\t\t\t(!isHydrating || typeof value == 'function') &&\n\t\t\t\toldProps[i] !== value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, value, oldProps[i], isSvg);\n\t\t\t}\n\t\t}\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\tif (\n\t\t\t\t!isHydrating &&\n\t\t\t\t(!oldHtml ||\n\t\t\t\t\t(newHtml.__html !== oldHtml.__html &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML))\n\t\t\t) {\n\t\t\t\tdom.innerHTML = newHtml.__html;\n\t\t\t}\n\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tif (oldHtml) dom.innerHTML = '';\n\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tisArray(newChildren) ? newChildren : [newChildren],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating,\n\t\t\t\trefQueue\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\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\ti = 'value';\n\t\t\tif (\n\t\t\t\tinputValue !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(inputValue !== dom[i] ||\n\t\t\t\t\t(nodeType === 'progress' && !inputValue) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && inputValue !== oldProps[i]))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, i, inputValue, oldProps[i], false);\n\t\t\t}\n\n\t\t\ti = 'checked';\n\t\t\tif (checked !== undefined && checked !== dom[i]) {\n\t\t\t\tsetProperty(dom, i, checked, oldProps[i], false);\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 {Ref<any>} ref\n * @param {any} value\n * @param {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 {VNode} vnode The virtual node to unmount\n * @param {VNode} parentVNode The parent of the VNode that 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) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\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\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; 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\tparentVNode,\n\t\t\t\t\tskipRemove || typeof vnode.type !== 'function'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\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._parent = vnode._dom = vnode._nextDom = undefined;\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 { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {ComponentChild} vnode The virtual node to render\n * @param {PreactElement} parentDom The DOM element to render into\n * @param {PreactElement | object} [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 are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode == 'function';\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\n\tvnode = ((!isHydrating && replaceNode) || parentDom)._children =\n\t\tcreateElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [],\n\t\trefQueue = [];\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\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating,\n\t\trefQueue\n\t);\n\n\tvnode._nextDom = undefined;\n\tcommitRoot(commitQueue, vnode, refQueue);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {ComponentChild} vnode The virtual node to render\n * @param {PreactElement} parentDom The DOM element to update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n","/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {VNode} vnode The vnode that threw the error that was caught (except\n * for unmounting when this parameter is the highest parent that was being\n * unmounted)\n * @param {VNode} [oldVNode]\n * @param {ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {Component} */\n\tlet component,\n\t\t/** @type {ComponentType} */\n\t\tctor,\n\t\t/** @type {boolean} */\n\t\thandled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\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 { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its\n * children.\n * @param {VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<ComponentChildren>} rest Any additional arguments will be used\n * as replacement children.\n * @returns {VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\n\tlet defaultProps;\n\n\tif (vnode.type && vnode.type.defaultProps) {\n\t\tdefaultProps = vnode.type.defaultProps;\n\t}\n\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse if (props[i] === undefined && defaultProps !== undefined) {\n\t\t\tnormalizedProps[i] = defaultProps[i];\n\t\t} else {\n\t\t\tnormalizedProps[i] = props[i];\n\t\t}\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : 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\tnull\n\t);\n}\n"],"names":["MODE_HYDRATE","slice","options","vnodeId","isValidElement","rerenderQueue","prevDebounce","defer","depthSort","i","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","isArray","Array","assign","obj","props","removeNode","node","parentNode","removeChild","createElement","type","children","key","ref","normalizedProps","arguments","length","call","defaultProps","undefined","createVNode","original","vnode","__k","__","__b","__e","__d","__c","constructor","__v","__i","__u","Fragment","BaseComponent","context","this","getDomSibling","childIndex","sibling","renderComponent","component","commitQueue","refQueue","newVNode","oldVNode","oldDom","parentDom","__P","diff","ownerSVGElement","updateParentDomPointers","child","base","enqueueRender","c","push","process","debounceRendering","root","renderQueueLength","sort","shift","commitRoot","__r","diffChildren","renderResult","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","childVNode","newDom","firstChildDom","oldChildren","newChildrenLength","constructNewChildrenArray","applyRef","insert","nextSibling","skewedIndex","matchingIndex","oldChildrenLength","remainingOldChildren","skew","String","findMatchingIndex","unmount","parentVNode","insertBefore","nodeType","x","y","setStyle","style","value","setProperty","test","dom","name","oldValue","useCapture","o","cssText","replace","toLowerCase","l","_attached","Date","now","addEventListener","eventProxyCapture","eventProxy","removeEventListener","e","removeAttribute","setAttribute","eventHandler","_dispatched","event","tmp","isNew","oldProps","oldState","snapshot","clearProcessingException","newProps","provider","componentContext","renderHook","count","newType","outer","contextType","__E","prototype","render","doRender","sub","state","__n","__h","_sb","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","forEach","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","indexOf","diffElementNodes","diffed","some","cb","newHtml","oldHtml","newChildren","inputValue","checked","localName","document","createTextNode","createElementNS","is","data","childNodes","attributes","__html","innerHTML","current","skipRemove","r","componentWillUnmount","replaceNode","firstChild","error","errorInfo","ctor","handled","getDerivedStateFromError","setState","componentDidCatch","update","callback","s","forceUpdate","Promise","then","bind","resolve","setTimeout","a","b","createContext","defaultValue","contextId","Consumer","contextValue","Provider","subs","ctx","_props","old","splice","hydrate","toChildArray","out"],"mappings":"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"}
Close