UNPKG

preact

Version:

Fast 4kb React-compatible Virtual DOM library.

1 lines • 37.1 kB
{"version":3,"file":"debug.mjs","sources":["../src/check-props.js","../src/component-stack.js","../src/debug.js","../src/constants.js","../src/util.js","../src/index.js"],"sourcesContent":["const ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nlet loggedTypeFailures = {};\n\n/**\n * Reset the history of which prop type warnings have been logged.\n */\nexport function resetPropWarnings() {\n\tloggedTypeFailures = {};\n}\n\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * Adapted from https://github.com/facebook/prop-types/blob/master/checkPropTypes.js\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {Function} getStack Returns the component stack.\n */\nexport function checkPropTypes(\n\ttypeSpecs,\n\tvalues,\n\tlocation,\n\tcomponentName,\n\tgetStack\n) {\n\tObject.keys(typeSpecs).forEach(typeSpecName => {\n\t\tlet error;\n\t\ttry {\n\t\t\terror = typeSpecs[typeSpecName](\n\t\t\t\tvalues,\n\t\t\t\ttypeSpecName,\n\t\t\t\tcomponentName,\n\t\t\t\tlocation,\n\t\t\t\tnull,\n\t\t\t\tReactPropTypesSecret\n\t\t\t);\n\t\t} catch (e) {\n\t\t\terror = e;\n\t\t}\n\t\tif (error && !(error.message in loggedTypeFailures)) {\n\t\t\tloggedTypeFailures[error.message] = true;\n\t\t\tconsole.error(`Failed ${location} type: ${error.message}\\n${getStack()}`);\n\t\t}\n\t});\n}\n","import { options, Fragment } from 'preact';\n\n/**\n * Get human readable name of the component/dom node\n *\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function getDisplayName(vnode) {\n\tif (vnode.type === Fragment) {\n\t\treturn 'Fragment';\n\t} else if (typeof vnode.type == 'function') {\n\t\treturn vnode.type.displayName || vnode.type.name;\n\t} else if (typeof vnode.type == 'string') {\n\t\treturn vnode.type;\n\t}\n\n\treturn '#text';\n}\n\n/**\n * Used to keep track of the currently rendered `vnode` and print it\n * in debug messages.\n */\nlet renderStack = [];\n\n/**\n * Keep track of the current owners. An owner describes a component\n * which was responsible to render a specific `vnode`. This exclude\n * children that are passed via `props.children`, because they belong\n * to the parent owner.\n *\n * ```jsx\n * const Foo = props => <div>{props.children}</div> // div's owner is Foo\n * const Bar = props => {\n * return (\n * <Foo><span /></Foo> // Foo's owner is Bar, span's owner is Bar\n * )\n * }\n * ```\n *\n * Note: A `vnode` may be hoisted to the root scope due to compiler\n * optimiztions. In these cases the owner will be different.\n */\nlet ownerStack = [];\n\nconst ownerMap = new WeakMap();\n\n/**\n * Get the currently rendered `vnode`\n * @returns {import('./internal').VNode | null}\n */\nexport function getCurrentVNode() {\n\treturn renderStack.length > 0 ? renderStack[renderStack.length - 1] : null;\n}\n\n/**\n * If the user doesn't have `@babel/plugin-transform-react-jsx-source`\n * somewhere in his tool chain we can't print the filename and source\n * location of a component. In that case we just omit that, but we'll\n * print a helpful message to the console, notifying the user of it.\n */\nlet showJsxSourcePluginWarning = true;\n\n/**\n * Check if a `vnode` is a possible owner.\n * @param {import('./internal').VNode} vnode\n */\nfunction isPossibleOwner(vnode) {\n\treturn typeof vnode.type == 'function' && vnode.type != Fragment;\n}\n\n/**\n * Return the component stack that was captured up to this point.\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function getOwnerStack(vnode) {\n\tconst stack = [vnode];\n\tlet next = vnode;\n\twhile ((next = ownerMap.get(next)) != null) {\n\t\tstack.push(next);\n\t}\n\n\treturn stack.reduce((acc, owner) => {\n\t\tacc += ` in ${getDisplayName(owner)}`;\n\n\t\tconst source = owner.__source;\n\t\tif (source) {\n\t\t\tacc += ` (at ${source.fileName}:${source.lineNumber})`;\n\t\t} else if (showJsxSourcePluginWarning) {\n\t\t\tconsole.warn(\n\t\t\t\t'Add @babel/plugin-transform-react-jsx-source to get a more detailed component stack. Note that you should not add it to production builds of your App for bundle size reasons.'\n\t\t\t);\n\t\t}\n\t\tshowJsxSourcePluginWarning = false;\n\n\t\treturn (acc += '\\n');\n\t}, '');\n}\n\n/**\n * Setup code to capture the component trace while rendering. Note that\n * we cannot simply traverse `vnode._parent` upwards, because we have some\n * debug messages for `this.setState` where the `vnode` is `undefined`.\n */\nexport function setupComponentStack() {\n\tlet oldDiff = options._diff;\n\tlet oldDiffed = options.diffed;\n\tlet oldRoot = options._root;\n\tlet oldVNode = options.vnode;\n\tlet oldRender = options._render;\n\n\toptions.diffed = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\townerStack.pop();\n\t\t}\n\t\trenderStack.pop();\n\t\tif (oldDiffed) oldDiffed(vnode);\n\t};\n\n\toptions._diff = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\trenderStack.push(vnode);\n\t\t}\n\t\tif (oldDiff) oldDiff(vnode);\n\t};\n\n\toptions._root = (vnode, parent) => {\n\t\townerStack = [];\n\t\tif (oldRoot) oldRoot(vnode, parent);\n\t};\n\n\toptions.vnode = vnode => {\n\t\townerMap.set(\n\t\t\tvnode,\n\t\t\townerStack.length > 0 ? ownerStack[ownerStack.length - 1] : null\n\t\t);\n\t\tif (oldVNode) oldVNode(vnode);\n\t};\n\n\toptions._render = vnode => {\n\t\tif (isPossibleOwner(vnode)) {\n\t\t\townerStack.push(vnode);\n\t\t}\n\n\t\tif (oldRender) oldRender(vnode);\n\t};\n}\n\n/**\n * Return the owner stack captured for the current render, or null when unavailable.\n * @returns {string | null}\n */\nexport function captureOwnerStack() {\n\tconst vnode = getCurrentVNode();\n\treturn vnode ? getOwnerStack(vnode) : null;\n}\n","import { checkPropTypes } from './check-props';\nimport { options, Component } from 'preact';\nimport {\n\tELEMENT_NODE,\n\tDOCUMENT_NODE,\n\tDOCUMENT_FRAGMENT_NODE\n} from './constants';\nimport {\n\tgetOwnerStack,\n\tsetupComponentStack,\n\tgetCurrentVNode,\n\tgetDisplayName\n} from './component-stack';\nimport { isNaN } from './util';\n\nconst isWeakMapSupported = typeof WeakMap == 'function';\n\n/**\n * @param {import('./internal').VNode} vnode\n * @returns {Array<string>}\n */\nfunction getDomChildren(vnode) {\n\tlet domChildren = [];\n\n\tif (!vnode._children) return domChildren;\n\n\tvnode._children.forEach(child => {\n\t\tif (child && typeof child.type === 'function') {\n\t\t\t// Portal children are mounted into another DOM parent (v11 keeps\n\t\t\t// them in the vnode tree), so they are not DOM children of `vnode`.\n\t\t\tif (child.props._parentDom) return;\n\t\t\tdomChildren.push.apply(domChildren, getDomChildren(child));\n\t\t} else if (child && typeof child.type === 'string') {\n\t\t\tdomChildren.push(child.type);\n\t\t}\n\t});\n\n\treturn domChildren;\n}\n\n/**\n * @param {import('./internal').VNode} parent\n * @returns {string}\n */\nfunction getClosestDomNodeParentName(parent) {\n\tif (!parent) return '';\n\tif (typeof parent.type == 'function') {\n\t\t// Crossing a portal boundary: the DOM parent is the portal container.\n\t\t// ShadowRoot/DocumentFragment containers have no localName -> skip.\n\t\tif (parent.props._parentDom) {\n\t\t\treturn parent.props._parentDom.localName || '';\n\t\t}\n\t\tif (parent._parent == null) {\n\t\t\tif (parent._dom != null && parent._dom.parentNode != null) {\n\t\t\t\treturn parent._dom.parentNode.localName;\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t\treturn getClosestDomNodeParentName(parent._parent);\n\t}\n\treturn /** @type {string} */ (parent.type);\n}\n\nexport function initDebug() {\n\tsetupComponentStack();\n\n\tlet hooksAllowed = false;\n\n\t/* eslint-disable no-console */\n\tlet oldBeforeDiff = options._diff;\n\tlet oldDiffed = options.diffed;\n\tlet oldVnode = options.vnode;\n\tlet oldRender = options._render;\n\tlet oldCatchError = options._catchError;\n\tlet oldRoot = options._root;\n\tlet oldHook = options._hook;\n\tconst warnedComponents = !isWeakMapSupported\n\t\t? null\n\t\t: {\n\t\t\t\tuseEffect: new WeakMap(),\n\t\t\t\tuseLayoutEffect: new WeakMap(),\n\t\t\t\tlazyPropTypes: new WeakMap()\n\t\t\t};\n\tconst deprecations = [];\n\n\toptions._catchError = (error, vnode, oldVNode, errorInfo) => {\n\t\tlet component = vnode && vnode._component;\n\t\tif (component && typeof error.then == 'function') {\n\t\t\tconst promise = error;\n\t\t\terror = new Error(\n\t\t\t\t`Missing Suspense. The throwing component was: ${getDisplayName(vnode)}`\n\t\t\t);\n\n\t\t\tlet parent = vnode;\n\t\t\tfor (; parent; parent = parent._parent) {\n\t\t\t\tif (parent._component && parent._component._childDidSuspend) {\n\t\t\t\t\terror = promise;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// We haven't recovered and we know at this point that there is no\n\t\t\t// Suspense component higher up in the tree\n\t\t\tif (error instanceof Error) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t}\n\n\t\terrorInfo = errorInfo || {};\n\t\terrorInfo.componentStack = getOwnerStack(vnode);\n\t\toldCatchError(error, vnode, oldVNode, errorInfo);\n\n\t\t// when an error was handled by an ErrorBoundary we still log it, matching what\n\t\t// React does in development. Errors that were not handled are rethrown by the\n\t\t// core and thus surface as regular uncaught errors.\n\t\tif (typeof error.then != 'function') {\n\t\t\tconsole.error(error);\n\t\t}\n\t};\n\n\toptions._root = (vnode, parentNode) => {\n\t\tif (!parentNode) {\n\t\t\tthrow new Error(\n\t\t\t\t'Undefined parent passed to render(), this is the second argument.\\n' +\n\t\t\t\t\t'Check if the element is available in the DOM/has the correct id.'\n\t\t\t);\n\t\t}\n\n\t\tlet isValid;\n\t\tswitch (parentNode.nodeType) {\n\t\t\tcase ELEMENT_NODE:\n\t\t\tcase DOCUMENT_FRAGMENT_NODE:\n\t\t\tcase DOCUMENT_NODE:\n\t\t\t\tisValid = true;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tisValid = false;\n\t\t}\n\n\t\tif (!isValid) {\n\t\t\tlet componentName = getDisplayName(vnode);\n\t\t\tthrow new Error(\n\t\t\t\t`Expected a valid HTML node as a second argument to render.\tReceived ${parentNode} instead: render(<${componentName} />, ${parentNode});`\n\t\t\t);\n\t\t}\n\n\t\tif (oldRoot) oldRoot(vnode, parentNode);\n\t};\n\n\toptions._diff = vnode => {\n\t\tlet { type } = vnode;\n\n\t\thooksAllowed = true;\n\n\t\tif (type === undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t'Undefined component passed to createElement()\\n\\n' +\n\t\t\t\t\t'You likely forgot to export your component or might have mixed up default and named imports' +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t} else if (type != null && typeof type == 'object') {\n\t\t\tif (type._children !== undefined && type._dom !== undefined) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Invalid type passed to createElement(): ${type}\\n\\n` +\n\t\t\t\t\t\t'Did you accidentally pass a JSX literal as JSX twice?\\n\\n' +\n\t\t\t\t\t\t` let My${getDisplayName(vnode)} = ${serializeVNode(type)};\\n` +\n\t\t\t\t\t\t` let vnode = <My${getDisplayName(vnode)} />;\\n\\n` +\n\t\t\t\t\t\t'This usually happens when you export a JSX literal and not the component.' +\n\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthrow new Error(\n\t\t\t\t'Invalid type passed to createElement(): ' +\n\t\t\t\t\t(Array.isArray(type) ? 'array' : type)\n\t\t\t);\n\t\t}\n\n\t\tif (\n\t\t\tvnode.ref !== undefined &&\n\t\t\ttypeof vnode.ref != 'function' &&\n\t\t\ttypeof vnode.ref != 'object' &&\n\t\t\t!('$$typeof' in vnode) // allow string refs when preact-compat is installed\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t`Component's \"ref\" property should be a function, or an object created ` +\n\t\t\t\t\t`by createRef(), but got [${typeof vnode.ref}] instead\\n` +\n\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t);\n\t\t}\n\n\t\tif (typeof vnode.type == 'string') {\n\t\t\tfor (const key in vnode.props) {\n\t\t\t\tif (\n\t\t\t\t\tkey[0] === 'o' &&\n\t\t\t\t\tkey[1] === 'n' &&\n\t\t\t\t\ttypeof vnode.props[key] != 'function' &&\n\t\t\t\t\tvnode.props[key] != null\n\t\t\t\t) {\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Component's \"${key}\" property should be a function, ` +\n\t\t\t\t\t\t\t`but got [${typeof vnode.props[key]}] instead\\n` +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Check prop-types if available\n\t\tif (typeof vnode.type == 'function' && vnode.type.propTypes) {\n\t\t\tif (\n\t\t\t\tvnode.type.displayName === 'Lazy' &&\n\t\t\t\twarnedComponents &&\n\t\t\t\t!warnedComponents.lazyPropTypes.has(vnode.type)\n\t\t\t) {\n\t\t\t\tconst m =\n\t\t\t\t\t'PropTypes are not supported on lazy(). Use propTypes on the wrapped component itself. ';\n\t\t\t\ttry {\n\t\t\t\t\tconst lazyVNode = vnode.type();\n\t\t\t\t\twarnedComponents.lazyPropTypes.set(vnode.type, true);\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\tm + `Component wrapped in lazy() is ${getDisplayName(lazyVNode)}`\n\t\t\t\t\t);\n\t\t\t\t} catch (promise) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\tm + \"We will log the wrapped component's name once it is loaded.\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t/* eslint-disable-next-line */\n\t\t\tconst { ref: _ref, ...props } = vnode.props;\n\n\t\t\tcheckPropTypes(\n\t\t\t\tvnode.type.propTypes,\n\t\t\t\tprops,\n\t\t\t\t'prop',\n\t\t\t\tgetDisplayName(vnode),\n\t\t\t\t() => getOwnerStack(vnode)\n\t\t\t);\n\t\t}\n\n\t\tif (oldBeforeDiff) oldBeforeDiff(vnode);\n\t};\n\n\tlet renderCount = 0;\n\tlet currentComponent;\n\toptions._render = vnode => {\n\t\tif (oldRender) {\n\t\t\toldRender(vnode);\n\t\t}\n\t\thooksAllowed = true;\n\n\t\tconst nextComponent = vnode._component;\n\t\tif (nextComponent === currentComponent) {\n\t\t\trenderCount++;\n\t\t} else {\n\t\t\trenderCount = 1;\n\t\t}\n\n\t\tif (renderCount >= 25) {\n\t\t\tthrow new Error(\n\t\t\t\t`Too many re-renders. This is limited to prevent an infinite loop ` +\n\t\t\t\t\t`which may lock up your browser. The component causing this is: ${getDisplayName(\n\t\t\t\t\t\tvnode\n\t\t\t\t\t)}`\n\t\t\t);\n\t\t}\n\n\t\tcurrentComponent = nextComponent;\n\t};\n\n\toptions._hook = (comp, index, type) => {\n\t\tif (!comp || !hooksAllowed) {\n\t\t\tthrow new Error('Hook can only be invoked from render methods.');\n\t\t}\n\n\t\tif (oldHook) oldHook(comp, index, type);\n\t};\n\n\t// Ideally we'd want to print a warning once per component, but we\n\t// don't have access to the vnode that triggered it here. As a\n\t// compromise and to avoid flooding the console with warnings we\n\t// print each deprecation warning only once.\n\tconst warn = (property, message) => ({\n\t\tget() {\n\t\t\tconst key = 'get' + property + message;\n\t\t\tif (deprecations && deprecations.indexOf(key) < 0) {\n\t\t\t\tdeprecations.push(key);\n\t\t\t\tconsole.warn(`getting vnode.${property} is deprecated, ${message}`);\n\t\t\t}\n\t\t},\n\t\tset() {\n\t\t\tconst key = 'set' + property + message;\n\t\t\tif (deprecations && deprecations.indexOf(key) < 0) {\n\t\t\t\tdeprecations.push(key);\n\t\t\t\tconsole.warn(`setting vnode.${property} is not allowed, ${message}`);\n\t\t\t}\n\t\t}\n\t});\n\n\tconst deprecatedAttributes = {\n\t\tnodeName: warn('nodeName', 'use vnode.type'),\n\t\tattributes: warn('attributes', 'use vnode.props'),\n\t\tchildren: warn('children', 'use vnode.props.children')\n\t};\n\n\tconst deprecatedProto = Object.create({}, deprecatedAttributes);\n\n\toptions.vnode = vnode => {\n\t\tconst props = vnode.props;\n\t\tif (\n\t\t\tvnode.type !== null &&\n\t\t\tprops != null &&\n\t\t\t('__source' in props || '__self' in props)\n\t\t) {\n\t\t\tconst newProps = (vnode.props = {});\n\t\t\tfor (let i in props) {\n\t\t\t\tconst v = props[i];\n\t\t\t\tif (i === '__source') vnode.__source = v;\n\t\t\t\telse if (i === '__self') vnode.__self = v;\n\t\t\t\telse newProps[i] = v;\n\t\t\t}\n\t\t}\n\n\t\t// eslint-disable-next-line\n\t\tvnode.__proto__ = deprecatedProto;\n\t\tif (oldVnode) oldVnode(vnode);\n\t};\n\n\toptions.diffed = vnode => {\n\t\tconst { type, _parent: parent } = vnode;\n\t\t// Check if the user passed plain objects as children. Note that we cannot\n\t\t// move this check into `options.vnode` because components can receive\n\t\t// children in any shape they want (e.g.\n\t\t// `<MyJSONFormatter>{{ foo: 123, bar: \"abc\" }}</MyJSONFormatter>`).\n\t\t// Putting this check in `options.diffed` ensures that\n\t\t// `vnode._children` is set and that we only validate the children\n\t\t// that were actually rendered.\n\t\tif (vnode._children) {\n\t\t\tvnode._children.forEach(child => {\n\t\t\t\tif (typeof child === 'object' && child && child.type === undefined) {\n\t\t\t\t\tconst keys = Object.keys(child).join(',');\n\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t`Objects are not valid as a child. Encountered an object with the keys {${keys}}.` +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (vnode._component === currentComponent) {\n\t\t\trenderCount = 0;\n\t\t}\n\n\t\tif (\n\t\t\ttypeof type === 'string' &&\n\t\t\t(isTableElement(type) ||\n\t\t\t\ttype === 'p' ||\n\t\t\t\ttype === 'a' ||\n\t\t\t\ttype === 'button')\n\t\t) {\n\t\t\t// Avoid false positives when Preact only partially rendered the\n\t\t\t// HTML tree. Whilst we attempt to include the outer DOM in our\n\t\t\t// validation, this wouldn't work on the server for\n\t\t\t// `preact-render-to-string`. There we'd otherwise flood the terminal\n\t\t\t// with false positives, which we'd like to avoid.\n\t\t\tlet domParentName = getClosestDomNodeParentName(parent);\n\t\t\tif (domParentName !== '' && isTableElement(type)) {\n\t\t\t\tif (\n\t\t\t\t\ttype === 'table' &&\n\t\t\t\t\t// Tables can be nested inside each other if it's inside a cell.\n\t\t\t\t\t// See https://developer.mozilla.org/en-US/docs/Learn/HTML/Tables/Advanced#nesting_tables\n\t\t\t\t\tdomParentName !== 'td' &&\n\t\t\t\t\tisTableElement(domParentName)\n\t\t\t\t) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'Improper nesting of table. Your <table> should not have a table-node parent.' +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t} else if (\n\t\t\t\t\t(type === 'thead' || type === 'tfoot' || type === 'tbody') &&\n\t\t\t\t\tdomParentName !== 'table'\n\t\t\t\t) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'Improper nesting of table. Your <thead/tbody/tfoot> should have a <table> parent.' +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t} else if (\n\t\t\t\t\ttype === 'tr' &&\n\t\t\t\t\tdomParentName !== 'thead' &&\n\t\t\t\t\tdomParentName !== 'tfoot' &&\n\t\t\t\t\tdomParentName !== 'tbody'\n\t\t\t\t) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'Improper nesting of table. Your <tr> should have a <thead/tbody/tfoot> parent.' +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t} else if (type === 'td' && domParentName !== 'tr') {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'Improper nesting of table. Your <td> should have a <tr> parent.' +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t} else if (type === 'th' && domParentName !== 'tr') {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'Improper nesting of table. Your <th> should have a <tr>.' +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else if (type === 'p') {\n\t\t\t\tlet illegalDomChildrenTypes = getDomChildren(vnode).filter(childType =>\n\t\t\t\t\tILLEGAL_PARAGRAPH_CHILD_ELEMENTS.test(childType)\n\t\t\t\t);\n\t\t\t\tif (illegalDomChildrenTypes.length) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'Improper nesting of paragraph. Your <p> should not have ' +\n\t\t\t\t\t\t\tillegalDomChildrenTypes.join(', ') +\n\t\t\t\t\t\t\t' as child-elements.' +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else if (type === 'a' || type === 'button') {\n\t\t\t\tif (getDomChildren(vnode).indexOf(type) !== -1) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t`Improper nesting of interactive content. Your <${type}>` +\n\t\t\t\t\t\t\t` should not have other ${type === 'a' ? 'anchor' : 'button'}` +\n\t\t\t\t\t\t\t' tags as child-elements.' +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\thooksAllowed = false;\n\n\t\tif (oldDiffed) oldDiffed(vnode);\n\n\t\tif (vnode._children != null) {\n\t\t\tconst keys = [];\n\t\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\t\tconst child = vnode._children[i];\n\t\t\t\tif (!child || child.key == null) continue;\n\n\t\t\t\tconst key = child.key;\n\t\t\t\tif (keys.indexOf(key) !== -1) {\n\t\t\t\t\tconsole.error(\n\t\t\t\t\t\t'Following component has two or more children with the ' +\n\t\t\t\t\t\t\t`same key attribute: \"${key}\". This may cause glitches and misbehavior ` +\n\t\t\t\t\t\t\t'in rendering process. Component: \\n\\n' +\n\t\t\t\t\t\t\tserializeVNode(vnode) +\n\t\t\t\t\t\t\t`\\n\\n${getOwnerStack(vnode)}`\n\t\t\t\t\t);\n\n\t\t\t\t\t// Break early to not spam the console\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tkeys.push(key);\n\t\t\t}\n\t\t}\n\n\t\tif (vnode._component != null && vnode._component.__hooks != null) {\n\t\t\t// Validate that none of the hooks in this component contain arguments that are NaN.\n\t\t\t// This is a common mistake that can be hard to debug, so we want to catch it early.\n\t\t\tconst hooks = vnode._component.__hooks._list;\n\t\t\tif (hooks) {\n\t\t\t\tfor (let i = 0; i < hooks.length; i += 1) {\n\t\t\t\t\tconst hook = hooks[i];\n\t\t\t\t\tif (hook._args) {\n\t\t\t\t\t\tfor (let j = 0; j < hook._args.length; j++) {\n\t\t\t\t\t\t\tconst arg = hook._args[j];\n\t\t\t\t\t\t\tif (isNaN(arg)) {\n\t\t\t\t\t\t\t\tconst componentName = getDisplayName(vnode);\n\t\t\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\t\t`Invalid argument passed to hook. Hooks should not be called with NaN in the dependency array. Hook index ${i} in component ${componentName} was called with NaN.`\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\nconst setState = Component.prototype.setState;\nComponent.prototype.setState = function (update, callback) {\n\tif (this._vnode == null) {\n\t\t// `this._vnode` will be `null` during componentWillMount. But it\n\t\t// is perfectly valid to call `setState` during cWM. So we\n\t\t// need an additional check to verify that we are dealing with a\n\t\t// call inside constructor.\n\t\tif (this.state == null) {\n\t\t\tconsole.warn(\n\t\t\t\t`Calling \"this.setState\" inside the constructor of a component is a ` +\n\t\t\t\t\t`no-op and might be a bug in your application. Instead, set ` +\n\t\t\t\t\t`\"this.state = {}\" directly.\\n\\n${getOwnerStack(getCurrentVNode())}`\n\t\t\t);\n\t\t}\n\t}\n\n\treturn setState.call(this, update, callback);\n};\n\nfunction isTableElement(type) {\n\treturn (\n\t\ttype === 'table' ||\n\t\ttype === 'tfoot' ||\n\t\ttype === 'tbody' ||\n\t\ttype === 'thead' ||\n\t\ttype === 'td' ||\n\t\ttype === 'tr' ||\n\t\ttype === 'th'\n\t);\n}\n\nconst ILLEGAL_PARAGRAPH_CHILD_ELEMENTS =\n\t/^(address|article|aside|blockquote|details|div|dl|fieldset|figcaption|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|main|menu|nav|ol|p|pre|search|section|table|ul)$/;\n\nconst forceUpdate = Component.prototype.forceUpdate;\nComponent.prototype.forceUpdate = function (callback) {\n\tif (this._vnode == null) {\n\t\tconsole.warn(\n\t\t\t`Calling \"this.forceUpdate\" inside the constructor of a component is a ` +\n\t\t\t\t`no-op and might be a bug in your application.\\n\\n${getOwnerStack(\n\t\t\t\t\tgetCurrentVNode()\n\t\t\t\t)}`\n\t\t);\n\t} else if (this._parentDom == null) {\n\t\tconsole.warn(\n\t\t\t`Can't call \"this.forceUpdate\" on an unmounted component. This is a no-op, ` +\n\t\t\t\t`but it indicates a memory leak in your application. To fix, cancel all ` +\n\t\t\t\t`subscriptions and asynchronous tasks in the componentWillUnmount method.` +\n\t\t\t\t`\\n\\n${getOwnerStack(this._vnode)}`\n\t\t);\n\t}\n\treturn forceUpdate.call(this, callback);\n};\n\n/**\n * Serialize a vnode tree to a string\n * @param {import('./internal').VNode} vnode\n * @returns {string}\n */\nexport function serializeVNode(vnode) {\n\tlet { props } = vnode;\n\tlet name = getDisplayName(vnode);\n\n\tlet attrs = '';\n\tfor (let prop in props) {\n\t\tif (props.hasOwnProperty(prop) && prop !== 'children') {\n\t\t\tlet value = props[prop];\n\n\t\t\t// If it is an object but doesn't have toString(), use Object.toString\n\t\t\tif (typeof value == 'function') {\n\t\t\t\tvalue = `function ${value.displayName || value.name}() {}`;\n\t\t\t}\n\n\t\t\tvalue =\n\t\t\t\tObject(value) === value && !value.toString\n\t\t\t\t\t? Object.prototype.toString.call(value)\n\t\t\t\t\t: value + '';\n\n\t\t\tattrs += ` ${prop}=${JSON.stringify(value)}`;\n\t\t}\n\t}\n\n\tlet children = props.children;\n\treturn `<${name}${attrs}${\n\t\tchildren && children.length ? '>..</' + name + '>' : ' />'\n\t}`;\n}\n\noptions._hydrationMismatch = (newVNode, excessDomChildren) => {\n\tconst { type } = newVNode;\n\tconst availableTypes = excessDomChildren\n\t\t.map(child => child && child.localName)\n\t\t.filter(Boolean);\n\tconsole.error(\n\t\t`Expected a DOM node of type \"${type}\" but found \"${availableTypes.join(', ')}\" as available DOM-node(s), this is caused by the SSR'd HTML containing different DOM-nodes compared to the hydrated one.\\n\\n${getOwnerStack(newVNode)}`\n\t);\n};\n","export const ELEMENT_NODE = 1;\nexport const DOCUMENT_NODE = 9;\nexport const DOCUMENT_FRAGMENT_NODE = 11;\n","export const assign = Object.assign;\n\nexport function isNaN(value) {\n\treturn value !== value;\n}\n","import { initDebug } from './debug';\nimport 'preact/devtools';\n\ninitDebug();\n\nexport { resetPropWarnings } from './check-props';\n\nexport {\n\tcaptureOwnerStack,\n\tgetCurrentVNode,\n\tgetDisplayName,\n\tgetOwnerStack,\n\tsetupComponentStack\n} from './component-stack';\n"],"names":["loggedTypeFailures","resetPropWarnings","getDisplayName","vnode","type","Fragment","displayName","name","renderStack","ownerStack","ownerMap","WeakMap","getCurrentVNode","length","showJsxSourcePluginWarning","isPossibleOwner","getOwnerStack","stack","next","get","push","reduce","acc","owner","source","__source","fileName","lineNumber","console","warn","setupComponentStack","oldDiff","options","__b","oldDiffed","diffed","oldRoot","__","oldVNode","oldRender","__r","pop","parent","set","captureOwnerStack","isWeakMapSupported","getDomChildren","domChildren","__k","forEach","child","props","__P","apply","getClosestDomNodeParentName","localName","__e","parentNode","setState","Component","prototype","isTableElement","update","callback","this","__v","state","call","ILLEGAL_PARAGRAPH_CHILD_ELEMENTS","forceUpdate","serializeVNode","attrs","prop","hasOwnProperty","value","Object","toString","JSON","stringify","children","__m","newVNode","excessDomChildren","availableTypes","map","filter","Boolean","error","join","hooksAllowed","oldBeforeDiff","oldVnode","oldCatchError","oldHook","__h","warnedComponents","useEffect","useLayoutEffect","lazyPropTypes","deprecations","errorInfo","__c","then","promise","Error","componentStack","isValid","nodeType","componentName","typeSpecs","values","getStack","undefined","Array","isArray","ref","key","propTypes","has","m","lazyVNode","_objectWithoutPropertiesLoose","_excluded","keys","typeSpecName","e","message","currentComponent","renderCount","nextComponent","comp","index","property","indexOf","deprecatedAttributes","nodeName","attributes","deprecatedProto","create","newProps","i","v","__self","__proto__","domParentName","illegalDomChildrenTypes","childType","test","__H","hooks","hook","j","initDebug"],"mappings":"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"}