1 /** @license React v17.0.2 |
1 /* |
2 * react.development.js |
2 * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). |
3 * |
3 * This devtool is neither made for production nor for readable output files. |
4 * Copyright (c) Facebook, Inc. and its affiliates. |
4 * It uses "eval()" calls to create a separate source file in the browser devtools. |
5 * |
5 * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) |
6 * This source code is licensed under the MIT license found in the |
6 * or disable the default devtool with "devtool: false". |
7 * LICENSE file in the root directory of this source tree. |
7 * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). |
8 */ |
8 */ |
9 (function (global, factory) { |
9 /******/ (() => { // webpackBootstrap |
10 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : |
10 /******/ "use strict"; |
11 typeof define === 'function' && define.amd ? define(['exports'], factory) : |
11 /******/ var __webpack_modules__ = ({ |
12 (global = global || self, factory(global.React = {})); |
|
13 }(this, (function (exports) { 'use strict'; |
|
14 |
12 |
15 // TODO: this is special because it gets imported during build. |
13 /***/ "./node_modules/react/cjs/react.development.js": |
16 var ReactVersion = '17.0.2'; |
14 /*!*****************************************************!*\ |
|
15 !*** ./node_modules/react/cjs/react.development.js ***! |
|
16 \*****************************************************/ |
|
17 /***/ ((module, exports, __webpack_require__) => { |
17 |
18 |
18 // ATTENTION |
19 eval("/* module decorator */ module = __webpack_require__.nmd(module);\n/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nif (true) {\n (function() {\n\n 'use strict';\n\n/* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(new Error());\n}\n var ReactVersion = '18.3.1';\n\n// ATTENTION\n// When adding new symbols to this file,\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\n// The Symbol used to tag the ReactElement-like types.\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\nfunction getIteratorFn(maybeIterable) {\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\n return null;\n }\n\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\n\n if (typeof maybeIterator === 'function') {\n return maybeIterator;\n }\n\n return null;\n}\n\n/**\n * Keeps track of the current dispatcher.\n */\nvar ReactCurrentDispatcher = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\n/**\n * Keeps track of the current batch's configuration such as how long an update\n * should suspend for if it needs to.\n */\nvar ReactCurrentBatchConfig = {\n transition: null\n};\n\nvar ReactCurrentActQueue = {\n current: null,\n // Used to reproduce behavior of `batchedUpdates` in legacy mode.\n isBatchingLegacy: false,\n didScheduleLegacyUpdate: false\n};\n\n/**\n * Keeps track of the current owner.\n *\n * The current owner is the component who should own any components that are\n * currently being constructed.\n */\nvar ReactCurrentOwner = {\n /**\n * @internal\n * @type {ReactComponent}\n */\n current: null\n};\n\nvar ReactDebugCurrentFrame = {};\nvar currentExtraStackFrame = null;\nfunction setExtraStackFrame(stack) {\n {\n currentExtraStackFrame = stack;\n }\n}\n\n{\n ReactDebugCurrentFrame.setExtraStackFrame = function (stack) {\n {\n currentExtraStackFrame = stack;\n }\n }; // Stack implementation injected by the current renderer.\n\n\n ReactDebugCurrentFrame.getCurrentStack = null;\n\n ReactDebugCurrentFrame.getStackAddendum = function () {\n var stack = ''; // Add an extra top frame while an element is being validated\n\n if (currentExtraStackFrame) {\n stack += currentExtraStackFrame;\n } // Delegate to the injected renderer-specific implementation\n\n\n var impl = ReactDebugCurrentFrame.getCurrentStack;\n\n if (impl) {\n stack += impl() || '';\n }\n\n return stack;\n };\n}\n\n// -----------------------------------------------------------------------------\n\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\nvar enableCacheElement = false;\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\n\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\n// stuff. Intended to enable React core members to more easily debug scheduling\n// issues in DEV builds.\n\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\n\nvar ReactSharedInternals = {\n ReactCurrentDispatcher: ReactCurrentDispatcher,\n ReactCurrentBatchConfig: ReactCurrentBatchConfig,\n ReactCurrentOwner: ReactCurrentOwner\n};\n\n{\n ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;\n ReactSharedInternals.ReactCurrentActQueue = ReactCurrentActQueue;\n}\n\n// by calls to these methods by a Babel plugin.\n//\n// In PROD (or in packages without access to React internals),\n// they are left as they are instead.\n\nfunction warn(format) {\n {\n {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n printWarning('warn', format, args);\n }\n }\n}\nfunction error(format) {\n {\n {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n printWarning('error', format, args);\n }\n }\n}\n\nfunction printWarning(level, format, args) {\n // When changing this logic, you might want to also\n // update consoleWithStackDev.www.js as well.\n {\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\n var stack = ReactDebugCurrentFrame.getStackAddendum();\n\n if (stack !== '') {\n format += '%s';\n args = args.concat([stack]);\n } // eslint-disable-next-line react-internal/safe-string-coercion\n\n\n var argsWithFormat = args.map(function (item) {\n return String(item);\n }); // Careful: RN currently depends on this prefix\n\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\n // breaks IE9: https://github.com/facebook/react/issues/13610\n // eslint-disable-next-line react-internal/no-production-logging\n\n Function.prototype.apply.call(console[level], console, argsWithFormat);\n }\n}\n\nvar didWarnStateUpdateForUnmountedComponent = {};\n\nfunction warnNoop(publicInstance, callerName) {\n {\n var _constructor = publicInstance.constructor;\n var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';\n var warningKey = componentName + \".\" + callerName;\n\n if (didWarnStateUpdateForUnmountedComponent[warningKey]) {\n return;\n }\n\n error(\"Can't call %s on a component that is not yet mounted. \" + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);\n\n didWarnStateUpdateForUnmountedComponent[warningKey] = true;\n }\n}\n/**\n * This is the abstract API for an update queue.\n */\n\n\nvar ReactNoopUpdateQueue = {\n /**\n * Checks whether or not this composite component is mounted.\n * @param {ReactClass} publicInstance The instance we want to test.\n * @return {boolean} True if mounted, false otherwise.\n * @protected\n * @final\n */\n isMounted: function (publicInstance) {\n return false;\n },\n\n /**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueForceUpdate: function (publicInstance, callback, callerName) {\n warnNoop(publicInstance, 'forceUpdate');\n },\n\n /**\n * Replaces all of the state. Always use this or `setState` to mutate state.\n * You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} completeState Next state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} callerName name of the calling function in the public API.\n * @internal\n */\n enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {\n warnNoop(publicInstance, 'replaceState');\n },\n\n /**\n * Sets a subset of the state. This only exists because _pendingState is\n * internal. This provides a merging strategy that is not available to deep\n * properties which is confusing. TODO: Expose pendingState or don't use it\n * during the merge.\n *\n * @param {ReactClass} publicInstance The instance that should rerender.\n * @param {object} partialState Next partial state to be merged with state.\n * @param {?function} callback Called after component is updated.\n * @param {?string} Name of the calling function in the public API.\n * @internal\n */\n enqueueSetState: function (publicInstance, partialState, callback, callerName) {\n warnNoop(publicInstance, 'setState');\n }\n};\n\nvar assign = Object.assign;\n\nvar emptyObject = {};\n\n{\n Object.freeze(emptyObject);\n}\n/**\n * Base class helpers for the updating state of a component.\n */\n\n\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the\n // renderer.\n\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nComponent.prototype.isReactComponent = {};\n/**\n * Sets a subset of the state. Always use this to mutate\n * state. You should treat `this.state` as immutable.\n *\n * There is no guarantee that `this.state` will be immediately updated, so\n * accessing `this.state` after calling this method may return the old value.\n *\n * There is no guarantee that calls to `setState` will run synchronously,\n * as they may eventually be batched together. You can provide an optional\n * callback that will be executed when the call to setState is actually\n * completed.\n *\n * When a function is provided to setState, it will be called at some point in\n * the future (not synchronously). It will be called with the up to date\n * component arguments (state, props, context). These values can be different\n * from this.* because your function may be called after receiveProps but before\n * shouldComponentUpdate, and this new state, props, and context will not yet be\n * assigned to this.\n *\n * @param {object|function} partialState Next partial state or function to\n * produce next partial state to be merged with current state.\n * @param {?function} callback Called after state is updated.\n * @final\n * @protected\n */\n\nComponent.prototype.setState = function (partialState, callback) {\n if (typeof partialState !== 'object' && typeof partialState !== 'function' && partialState != null) {\n throw new Error('setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.');\n }\n\n this.updater.enqueueSetState(this, partialState, callback, 'setState');\n};\n/**\n * Forces an update. This should only be invoked when it is known with\n * certainty that we are **not** in a DOM transaction.\n *\n * You may want to call this when you know that some deeper aspect of the\n * component's state has changed but `setState` was not called.\n *\n * This will not invoke `shouldComponentUpdate`, but it will invoke\n * `componentWillUpdate` and `componentDidUpdate`.\n *\n * @param {?function} callback Called after update is complete.\n * @final\n * @protected\n */\n\n\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');\n};\n/**\n * Deprecated APIs. These APIs used to exist on classic React classes but since\n * we would like to deprecate them, we're not going to move them over to this\n * modern base class. Instead, we define a getter that warns if it's accessed.\n */\n\n\n{\n var deprecatedAPIs = {\n isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],\n replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']\n };\n\n var defineDeprecationWarning = function (methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);\n\n return undefined;\n }\n });\n };\n\n for (var fnName in deprecatedAPIs) {\n if (deprecatedAPIs.hasOwnProperty(fnName)) {\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n }\n }\n}\n\nfunction ComponentDummy() {}\n\nComponentDummy.prototype = Component.prototype;\n/**\n * Convenience component with default shallow equality check for sCU.\n */\n\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context; // If a component has string refs, we will assign a different object later.\n\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\n\nvar pureComponentPrototype = PureComponent.prototype = new ComponentDummy();\npureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.\n\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = true;\n\n// an immutable object with a single mutable value\nfunction createRef() {\n var refObject = {\n current: null\n };\n\n {\n Object.seal(refObject);\n }\n\n return refObject;\n}\n\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\n\nfunction isArray(a) {\n return isArrayImpl(a);\n}\n\n/*\n * The `'' + value` pattern (used in in perf-sensitive code) throws for Symbol\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\n *\n * The functions in this module will throw an easier-to-understand,\n * easier-to-debug exception with a clear errors message message explaining the\n * problem. (Instead of a confusing exception thrown inside the implementation\n * of the `value` object).\n */\n// $FlowFixMe only called in DEV, so void return is not possible.\nfunction typeName(value) {\n {\n // toStringTag is needed for namespaced types like Temporal.Instant\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object';\n return type;\n }\n} // $FlowFixMe only called in DEV, so void return is not possible.\n\n\nfunction willCoercionThrow(value) {\n {\n try {\n testStringCoercion(value);\n return false;\n } catch (e) {\n return true;\n }\n }\n}\n\nfunction testStringCoercion(value) {\n // If you ended up here by following an exception call stack, here's what's\n // happened: you supplied an object or symbol value to React (as a prop, key,\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\n // coerce it to a string using `'' + value`, an exception was thrown.\n //\n // The most common types that will cause this exception are `Symbol` instances\n // and Temporal objects like `Temporal.Instant`. But any object that has a\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\n // exception. (Library authors do this to prevent users from using built-in\n // numeric operators like `+` or comparison operators like `>=` because custom\n // methods are needed to perform accurate arithmetic or comparison.)\n //\n // To fix the problem, coerce this object or symbol value to a string before\n // passing it to React. The most reliable way is usually `String(value)`.\n //\n // To find which value is throwing, check the browser or debugger console.\n // Before this exception was thrown, there should be `console.error` output\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\n // problem and how that type was used: key, atrribute, input value prop, etc.\n // In most cases, this console output also shows the component and its\n // ancestor components where the exception happened.\n //\n // eslint-disable-next-line react-internal/safe-string-coercion\n return '' + value;\n}\nfunction checkKeyStringCoercion(value) {\n {\n if (willCoercionThrow(value)) {\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\n\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\n }\n }\n}\n\nfunction getWrappedName(outerType, innerType, wrapperName) {\n var displayName = outerType.displayName;\n\n if (displayName) {\n return displayName;\n }\n\n var functionName = innerType.displayName || innerType.name || '';\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\n\n\nfunction getContextName(type) {\n return type.displayName || 'Context';\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\n\n\nfunction getComponentNameFromType(type) {\n if (type == null) {\n // Host root, text node or just invalid type.\n return null;\n }\n\n {\n if (typeof type.tag === 'number') {\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\n }\n }\n\n if (typeof type === 'function') {\n return type.displayName || type.name || null;\n }\n\n if (typeof type === 'string') {\n return type;\n }\n\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return 'Fragment';\n\n case REACT_PORTAL_TYPE:\n return 'Portal';\n\n case REACT_PROFILER_TYPE:\n return 'Profiler';\n\n case REACT_STRICT_MODE_TYPE:\n return 'StrictMode';\n\n case REACT_SUSPENSE_TYPE:\n return 'Suspense';\n\n case REACT_SUSPENSE_LIST_TYPE:\n return 'SuspenseList';\n\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_CONTEXT_TYPE:\n var context = type;\n return getContextName(context) + '.Consumer';\n\n case REACT_PROVIDER_TYPE:\n var provider = type;\n return getContextName(provider._context) + '.Provider';\n\n case REACT_FORWARD_REF_TYPE:\n return getWrappedName(type, type.render, 'ForwardRef');\n\n case REACT_MEMO_TYPE:\n var outerName = type.displayName || null;\n\n if (outerName !== null) {\n return outerName;\n }\n\n return getComponentNameFromType(type.type) || 'Memo';\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n return getComponentNameFromType(init(payload));\n } catch (x) {\n return null;\n }\n }\n\n // eslint-disable-next-line no-fallthrough\n }\n }\n\n return null;\n}\n\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true,\n __self: true,\n __source: true\n};\nvar specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;\n\n{\n didWarnAboutStringRefs = {};\n}\n\nfunction hasValidRef(config) {\n {\n if (hasOwnProperty.call(config, 'ref')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.ref !== undefined;\n}\n\nfunction hasValidKey(config) {\n {\n if (hasOwnProperty.call(config, 'key')) {\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\n\n if (getter && getter.isReactWarning) {\n return false;\n }\n }\n }\n\n return config.key !== undefined;\n}\n\nfunction defineKeyPropWarningGetter(props, displayName) {\n var warnAboutAccessingKey = function () {\n {\n if (!specialPropKeyWarningShown) {\n specialPropKeyWarningShown = true;\n\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingKey.isReactWarning = true;\n Object.defineProperty(props, 'key', {\n get: warnAboutAccessingKey,\n configurable: true\n });\n}\n\nfunction defineRefPropWarningGetter(props, displayName) {\n var warnAboutAccessingRef = function () {\n {\n if (!specialPropRefWarningShown) {\n specialPropRefWarningShown = true;\n\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\n }\n }\n };\n\n warnAboutAccessingRef.isReactWarning = true;\n Object.defineProperty(props, 'ref', {\n get: warnAboutAccessingRef,\n configurable: true\n });\n}\n\nfunction warnIfStringRefCannotBeAutoConverted(config) {\n {\n if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {\n var componentName = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (!didWarnAboutStringRefs[componentName]) {\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);\n\n didWarnAboutStringRefs[componentName] = true;\n }\n }\n }\n}\n/**\n * Factory method to create a new React element. This no longer adheres to\n * the class pattern, so do not use new to call it. Also, instanceof check\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\n * if something is a React Element.\n *\n * @param {*} type\n * @param {*} props\n * @param {*} key\n * @param {string|object} ref\n * @param {*} owner\n * @param {*} self A *temporary* helper to detect places where `this` is\n * different from the `owner` when React.createElement is called, so that we\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\n * functions, and as long as `this` and owner are the same, there will be no\n * change in behavior.\n * @param {*} source An annotation object (added by a transpiler or otherwise)\n * indicating filename, line number, and/or other information.\n * @internal\n */\n\n\nvar ReactElement = function (type, key, ref, self, source, owner, props) {\n var element = {\n // This tag allows us to uniquely identify this as a React Element\n $$typeof: REACT_ELEMENT_TYPE,\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n\n {\n // The validation flag is currently mutative. We put it on\n // an external backing store so that we can freeze the whole object.\n // This can be replaced with a WeakMap once they are implemented in\n // commonly used development environments.\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\n // the validation flag non-enumerable (where possible, which should\n // include every environment we run tests in), so the test framework\n // ignores it.\n\n Object.defineProperty(element._store, 'validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // self and source are DEV only properties.\n\n Object.defineProperty(element, '_self', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: self\n }); // Two elements created in two different places should be considered\n // equal for testing purposes and therefore we hide it from enumeration.\n\n Object.defineProperty(element, '_source', {\n configurable: false,\n enumerable: false,\n writable: false,\n value: source\n });\n\n if (Object.freeze) {\n Object.freeze(element.props);\n Object.freeze(element);\n }\n }\n\n return element;\n};\n/**\n * Create and return a new ReactElement of the given type.\n * See https://reactjs.org/docs/react-api.html#createelement\n */\n\nfunction createElement(type, config, children) {\n var propName; // Reserved names are extracted\n\n var props = {};\n var key = null;\n var ref = null;\n var self = null;\n var source = null;\n\n if (config != null) {\n if (hasValidRef(config)) {\n ref = config.ref;\n\n {\n warnIfStringRefCannotBeAutoConverted(config);\n }\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n }\n\n self = config.__self === undefined ? null : config.__self;\n source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n props[propName] = config[propName];\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n {\n if (Object.freeze) {\n Object.freeze(childArray);\n }\n }\n\n props.children = childArray;\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n {\n if (key || ref) {\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\n\n if (key) {\n defineKeyPropWarningGetter(props, displayName);\n }\n\n if (ref) {\n defineRefPropWarningGetter(props, displayName);\n }\n }\n }\n\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);\n return newElement;\n}\n/**\n * Clone and return a new ReactElement using element as the starting point.\n * See https://reactjs.org/docs/react-api.html#cloneelement\n */\n\nfunction cloneElement(element, config, children) {\n if (element === null || element === undefined) {\n throw new Error(\"React.cloneElement(...): The argument must be a React element, but you passed \" + element + \".\");\n }\n\n var propName; // Original props are copied\n\n var props = assign({}, element.props); // Reserved names are extracted\n\n var key = element.key;\n var ref = element.ref; // Self is preserved since the owner is preserved.\n\n var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a\n // transpiler, and the original source is probably a better indicator of the\n // true owner.\n\n var source = element._source; // Owner will be preserved, unless ref is overridden\n\n var owner = element._owner;\n\n if (config != null) {\n if (hasValidRef(config)) {\n // Silently steal the ref from the parent.\n ref = config.ref;\n owner = ReactCurrentOwner.current;\n }\n\n if (hasValidKey(config)) {\n {\n checkKeyStringCoercion(config.key);\n }\n\n key = '' + config.key;\n } // Remaining properties override existing props\n\n\n var defaultProps;\n\n if (element.type && element.type.defaultProps) {\n defaultProps = element.type.defaultProps;\n }\n\n for (propName in config) {\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\n if (config[propName] === undefined && defaultProps !== undefined) {\n // Resolve default props\n props[propName] = defaultProps[propName];\n } else {\n props[propName] = config[propName];\n }\n }\n }\n } // Children can be more than one argument, and those are transferred onto\n // the newly allocated props object.\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength === 1) {\n props.children = children;\n } else if (childrenLength > 1) {\n var childArray = Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n\n props.children = childArray;\n }\n\n return ReactElement(element.type, key, ref, self, source, owner, props);\n}\n/**\n * Verifies the object is a ReactElement.\n * See https://reactjs.org/docs/react-api.html#isvalidelement\n * @param {?object} object\n * @return {boolean} True if `object` is a ReactElement.\n * @final\n */\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n}\n\nvar SEPARATOR = '.';\nvar SUBSEPARATOR = ':';\n/**\n * Escape and wrap key so it is safe to use as a reactid\n *\n * @param {string} key to be escaped.\n * @return {string} the escaped key.\n */\n\nfunction escape(key) {\n var escapeRegex = /[=:]/g;\n var escaperLookup = {\n '=': '=0',\n ':': '=2'\n };\n var escapedString = key.replace(escapeRegex, function (match) {\n return escaperLookup[match];\n });\n return '$' + escapedString;\n}\n/**\n * TODO: Test that a single child and an array with one item have the same key\n * pattern.\n */\n\n\nvar didWarnAboutMaps = false;\nvar userProvidedKeyEscapeRegex = /\\/+/g;\n\nfunction escapeUserProvidedKey(text) {\n return text.replace(userProvidedKeyEscapeRegex, '$&/');\n}\n/**\n * Generate a key string that identifies a element within a set.\n *\n * @param {*} element A element that could contain a manual key.\n * @param {number} index Index that is used if a manual key is not provided.\n * @return {string}\n */\n\n\nfunction getElementKey(element, index) {\n // Do some typechecking here since we call this blindly. We want to ensure\n // that we don't block potential future ES APIs.\n if (typeof element === 'object' && element !== null && element.key != null) {\n // Explicit key\n {\n checkKeyStringCoercion(element.key);\n }\n\n return escape('' + element.key);\n } // Implicit key determined by the index in the set\n\n\n return index.toString(36);\n}\n\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n\n if (type === 'undefined' || type === 'boolean') {\n // All of the above are perceived as null.\n children = null;\n }\n\n var invokeCallback = false;\n\n if (children === null) {\n invokeCallback = true;\n } else {\n switch (type) {\n case 'string':\n case 'number':\n invokeCallback = true;\n break;\n\n case 'object':\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = true;\n }\n\n }\n }\n\n if (invokeCallback) {\n var _child = children;\n var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array\n // so that it's consistent if the number of children grows:\n\n var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;\n\n if (isArray(mappedChild)) {\n var escapedChildKey = '';\n\n if (childKey != null) {\n escapedChildKey = escapeUserProvidedKey(childKey) + '/';\n }\n\n mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {\n return c;\n });\n } else if (mappedChild != null) {\n if (isValidElement(mappedChild)) {\n {\n // The `if` statement here prevents auto-disabling of the safe\n // coercion ESLint rule, so we must manually disable it below.\n // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n if (mappedChild.key && (!_child || _child.key !== mappedChild.key)) {\n checkKeyStringCoercion(mappedChild.key);\n }\n }\n\n mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as\n // traverseAllChildren used to do for objects as children\n escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key\n mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number\n // eslint-disable-next-line react-internal/safe-string-coercion\n escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);\n }\n\n array.push(mappedChild);\n }\n\n return 1;\n }\n\n var child;\n var nextName;\n var subtreeCount = 0; // Count of children found in the current subtree.\n\n var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;\n\n if (isArray(children)) {\n for (var i = 0; i < children.length; i++) {\n child = children[i];\n nextName = nextNamePrefix + getElementKey(child, i);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else {\n var iteratorFn = getIteratorFn(children);\n\n if (typeof iteratorFn === 'function') {\n var iterableChildren = children;\n\n {\n // Warn about using Maps as children\n if (iteratorFn === iterableChildren.entries) {\n if (!didWarnAboutMaps) {\n warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');\n }\n\n didWarnAboutMaps = true;\n }\n }\n\n var iterator = iteratorFn.call(iterableChildren);\n var step;\n var ii = 0;\n\n while (!(step = iterator.next()).done) {\n child = step.value;\n nextName = nextNamePrefix + getElementKey(child, ii++);\n subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);\n }\n } else if (type === 'object') {\n // eslint-disable-next-line react-internal/safe-string-coercion\n var childrenString = String(children);\n throw new Error(\"Objects are not valid as a React child (found: \" + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + \"). \" + 'If you meant to render a collection of children, use an array ' + 'instead.');\n }\n }\n\n return subtreeCount;\n}\n\n/**\n * Maps children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenmap\n *\n * The provided mapFunction(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} func The map function.\n * @param {*} context Context for mapFunction.\n * @return {object} Object containing the ordered map of results.\n */\nfunction mapChildren(children, func, context) {\n if (children == null) {\n return children;\n }\n\n var result = [];\n var count = 0;\n mapIntoArray(children, result, '', '', function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\n/**\n * Count the number of children that are typically specified as\n * `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrencount\n *\n * @param {?*} children Children tree container.\n * @return {number} The number of children.\n */\n\n\nfunction countChildren(children) {\n var n = 0;\n mapChildren(children, function () {\n n++; // Don't return anything\n });\n return n;\n}\n\n/**\n * Iterates through children that are typically specified as `props.children`.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenforeach\n *\n * The provided forEachFunc(child, index) will be called for each\n * leaf child.\n *\n * @param {?*} children Children tree container.\n * @param {function(*, int)} forEachFunc\n * @param {*} forEachContext Context for forEachContext.\n */\nfunction forEachChildren(children, forEachFunc, forEachContext) {\n mapChildren(children, function () {\n forEachFunc.apply(this, arguments); // Don't return anything.\n }, forEachContext);\n}\n/**\n * Flatten a children object (typically specified as `props.children`) and\n * return an array with appropriately re-keyed children.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrentoarray\n */\n\n\nfunction toArray(children) {\n return mapChildren(children, function (child) {\n return child;\n }) || [];\n}\n/**\n * Returns the first child in a collection of children and verifies that there\n * is only one child in the collection.\n *\n * See https://reactjs.org/docs/react-api.html#reactchildrenonly\n *\n * The current implementation of this function assumes that a single child gets\n * passed without a wrapper, but the purpose of this helper function is to\n * abstract away the particular structure of children.\n *\n * @param {?object} children Child collection structure.\n * @return {ReactElement} The first and only `ReactElement` contained in the\n * structure.\n */\n\n\nfunction onlyChild(children) {\n if (!isValidElement(children)) {\n throw new Error('React.Children.only expected to receive a single React element child.');\n }\n\n return children;\n}\n\nfunction createContext(defaultValue) {\n // TODO: Second argument used to be an optional `calculateChangedBits`\n // function. Warn to reserve for future use?\n var context = {\n $$typeof: REACT_CONTEXT_TYPE,\n // As a workaround to support multiple concurrent renderers, we categorize\n // some renderers as primary and others as secondary. We only expect\n // there to be two concurrent renderers at most: React Native (primary) and\n // Fabric (secondary); React DOM (primary) and React ART (secondary).\n // Secondary renderers store their context values on separate fields.\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n // Used to track how many concurrent renderers this context currently\n // supports within in a single renderer. Such as parallel server rendering.\n _threadCount: 0,\n // These are circular\n Provider: null,\n Consumer: null,\n // Add these to use same hidden class in VM as ServerContext\n _defaultValue: null,\n _globalName: null\n };\n context.Provider = {\n $$typeof: REACT_PROVIDER_TYPE,\n _context: context\n };\n var hasWarnedAboutUsingNestedContextConsumers = false;\n var hasWarnedAboutUsingConsumerProvider = false;\n var hasWarnedAboutDisplayNameOnConsumer = false;\n\n {\n // A separate object, but proxies back to the original context object for\n // backwards compatibility. It has a different $$typeof, so we can properly\n // warn for the incorrect usage of Context as a Consumer.\n var Consumer = {\n $$typeof: REACT_CONTEXT_TYPE,\n _context: context\n }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here\n\n Object.defineProperties(Consumer, {\n Provider: {\n get: function () {\n if (!hasWarnedAboutUsingConsumerProvider) {\n hasWarnedAboutUsingConsumerProvider = true;\n\n error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');\n }\n\n return context.Provider;\n },\n set: function (_Provider) {\n context.Provider = _Provider;\n }\n },\n _currentValue: {\n get: function () {\n return context._currentValue;\n },\n set: function (_currentValue) {\n context._currentValue = _currentValue;\n }\n },\n _currentValue2: {\n get: function () {\n return context._currentValue2;\n },\n set: function (_currentValue2) {\n context._currentValue2 = _currentValue2;\n }\n },\n _threadCount: {\n get: function () {\n return context._threadCount;\n },\n set: function (_threadCount) {\n context._threadCount = _threadCount;\n }\n },\n Consumer: {\n get: function () {\n if (!hasWarnedAboutUsingNestedContextConsumers) {\n hasWarnedAboutUsingNestedContextConsumers = true;\n\n error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');\n }\n\n return context.Consumer;\n }\n },\n displayName: {\n get: function () {\n return context.displayName;\n },\n set: function (displayName) {\n if (!hasWarnedAboutDisplayNameOnConsumer) {\n warn('Setting `displayName` on Context.Consumer has no effect. ' + \"You should set it directly on the context with Context.displayName = '%s'.\", displayName);\n\n hasWarnedAboutDisplayNameOnConsumer = true;\n }\n }\n }\n }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty\n\n context.Consumer = Consumer;\n }\n\n {\n context._currentRenderer = null;\n context._currentRenderer2 = null;\n }\n\n return context;\n}\n\nvar Uninitialized = -1;\nvar Pending = 0;\nvar Resolved = 1;\nvar Rejected = 2;\n\nfunction lazyInitializer(payload) {\n if (payload._status === Uninitialized) {\n var ctor = payload._result;\n var thenable = ctor(); // Transition to the next state.\n // This might throw either because it's missing or throws. If so, we treat it\n // as still uninitialized and try again next time. Which is the same as what\n // happens if the ctor or any wrappers processing the ctor throws. This might\n // end up fixing it if the resolution was a concurrency bug.\n\n thenable.then(function (moduleObject) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var resolved = payload;\n resolved._status = Resolved;\n resolved._result = moduleObject;\n }\n }, function (error) {\n if (payload._status === Pending || payload._status === Uninitialized) {\n // Transition to the next state.\n var rejected = payload;\n rejected._status = Rejected;\n rejected._result = error;\n }\n });\n\n if (payload._status === Uninitialized) {\n // In case, we're still uninitialized, then we're waiting for the thenable\n // to resolve. Set it as pending in the meantime.\n var pending = payload;\n pending._status = Pending;\n pending._result = thenable;\n }\n }\n\n if (payload._status === Resolved) {\n var moduleObject = payload._result;\n\n {\n if (moduleObject === undefined) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\\n\\n\" + 'Did you accidentally put curly braces around the import?', moduleObject);\n }\n }\n\n {\n if (!('default' in moduleObject)) {\n error('lazy: Expected the result of a dynamic imp' + 'ort() call. ' + 'Instead received: %s\\n\\nYour code should look like: \\n ' + // Break up imports to avoid accidentally parsing them as dependencies.\n 'const MyComponent = lazy(() => imp' + \"ort('./MyComponent'))\", moduleObject);\n }\n }\n\n return moduleObject.default;\n } else {\n throw payload._result;\n }\n}\n\nfunction lazy(ctor) {\n var payload = {\n // We use these fields to store the result.\n _status: Uninitialized,\n _result: ctor\n };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: payload,\n _init: lazyInitializer\n };\n\n {\n // In production, this would just set it on the object.\n var defaultProps;\n var propTypes; // $FlowFixMe\n\n Object.defineProperties(lazyType, {\n defaultProps: {\n configurable: true,\n get: function () {\n return defaultProps;\n },\n set: function (newDefaultProps) {\n error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n defaultProps = newDefaultProps; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'defaultProps', {\n enumerable: true\n });\n }\n },\n propTypes: {\n configurable: true,\n get: function () {\n return propTypes;\n },\n set: function (newPropTypes) {\n error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');\n\n propTypes = newPropTypes; // Match production behavior more closely:\n // $FlowFixMe\n\n Object.defineProperty(lazyType, 'propTypes', {\n enumerable: true\n });\n }\n }\n });\n }\n\n return lazyType;\n}\n\nfunction forwardRef(render) {\n {\n if (render != null && render.$$typeof === REACT_MEMO_TYPE) {\n error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');\n } else if (typeof render !== 'function') {\n error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);\n } else {\n if (render.length !== 0 && render.length !== 2) {\n error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');\n }\n }\n\n if (render != null) {\n if (render.defaultProps != null || render.propTypes != null) {\n error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');\n }\n }\n }\n\n var elementType = {\n $$typeof: REACT_FORWARD_REF_TYPE,\n render: render\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.forwardRef((props, ref) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!render.name && !render.displayName) {\n render.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nvar REACT_MODULE_REFERENCE;\n\n{\n REACT_MODULE_REFERENCE = Symbol.for('react.module.reference');\n}\n\nfunction isValidElementType(type) {\n if (typeof type === 'string' || typeof type === 'function') {\n return true;\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\n\n\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\n return true;\n }\n\n if (typeof type === 'object' && type !== null) {\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\n // types supported by any Flight configuration anywhere since\n // we don't know which Flight build this will end up being used\n // with.\n type.$$typeof === REACT_MODULE_REFERENCE || type.getModuleId !== undefined) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction memo(type, compare) {\n {\n if (!isValidElementType(type)) {\n error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);\n }\n }\n\n var elementType = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: compare === undefined ? null : compare\n };\n\n {\n var ownName;\n Object.defineProperty(elementType, 'displayName', {\n enumerable: false,\n configurable: true,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name; // The inner component shouldn't inherit this display name in most cases,\n // because the component may be used elsewhere.\n // But it's nice for anonymous functions to inherit the name,\n // so that our component-stack generation logic will display their frames.\n // An anonymous function generally suggests a pattern like:\n // React.memo((props) => {...});\n // This kind of inner function is not used elsewhere so the side effect is okay.\n\n if (!type.name && !type.displayName) {\n type.displayName = name;\n }\n }\n });\n }\n\n return elementType;\n}\n\nfunction resolveDispatcher() {\n var dispatcher = ReactCurrentDispatcher.current;\n\n {\n if (dispatcher === null) {\n error('Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for' + ' one of the following reasons:\\n' + '1. You might have mismatching versions of React and the renderer (such as React DOM)\\n' + '2. You might be breaking the Rules of Hooks\\n' + '3. You might have more than one copy of React in the same app\\n' + 'See https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem.');\n }\n } // Will result in a null access error if accessed outside render phase. We\n // intentionally don't throw our own error because this is in a hot path.\n // Also helps ensure this is inlined.\n\n\n return dispatcher;\n}\nfunction useContext(Context) {\n var dispatcher = resolveDispatcher();\n\n {\n // TODO: add a more generic warning for invalid values.\n if (Context._context !== undefined) {\n var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs\n // and nobody should be using this in existing code.\n\n if (realContext.Consumer === Context) {\n error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');\n } else if (realContext.Provider === Context) {\n error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');\n }\n }\n }\n\n return dispatcher.useContext(Context);\n}\nfunction useState(initialState) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useState(initialState);\n}\nfunction useReducer(reducer, initialArg, init) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useReducer(reducer, initialArg, init);\n}\nfunction useRef(initialValue) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useRef(initialValue);\n}\nfunction useEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useEffect(create, deps);\n}\nfunction useInsertionEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useInsertionEffect(create, deps);\n}\nfunction useLayoutEffect(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useLayoutEffect(create, deps);\n}\nfunction useCallback(callback, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useCallback(callback, deps);\n}\nfunction useMemo(create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useMemo(create, deps);\n}\nfunction useImperativeHandle(ref, create, deps) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useImperativeHandle(ref, create, deps);\n}\nfunction useDebugValue(value, formatterFn) {\n {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDebugValue(value, formatterFn);\n }\n}\nfunction useTransition() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useTransition();\n}\nfunction useDeferredValue(value) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useDeferredValue(value);\n}\nfunction useId() {\n var dispatcher = resolveDispatcher();\n return dispatcher.useId();\n}\nfunction useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot) {\n var dispatcher = resolveDispatcher();\n return dispatcher.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);\n}\n\n// Helpers to patch console.logs to avoid logging during side-effect free\n// replaying on render function. This currently only patches the object\n// lazily which won't cover if the log function was extracted eagerly.\n// We could also eagerly patch the method.\nvar disabledDepth = 0;\nvar prevLog;\nvar prevInfo;\nvar prevWarn;\nvar prevError;\nvar prevGroup;\nvar prevGroupCollapsed;\nvar prevGroupEnd;\n\nfunction disabledLog() {}\n\ndisabledLog.__reactDisabledLog = true;\nfunction disableLogs() {\n {\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n prevLog = console.log;\n prevInfo = console.info;\n prevWarn = console.warn;\n prevError = console.error;\n prevGroup = console.group;\n prevGroupCollapsed = console.groupCollapsed;\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\n\n var props = {\n configurable: true,\n enumerable: true,\n value: disabledLog,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n info: props,\n log: props,\n warn: props,\n error: props,\n group: props,\n groupCollapsed: props,\n groupEnd: props\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n disabledDepth++;\n }\n}\nfunction reenableLogs() {\n {\n disabledDepth--;\n\n if (disabledDepth === 0) {\n /* eslint-disable react-internal/no-production-logging */\n var props = {\n configurable: true,\n enumerable: true,\n writable: true\n }; // $FlowFixMe Flow thinks console is immutable.\n\n Object.defineProperties(console, {\n log: assign({}, props, {\n value: prevLog\n }),\n info: assign({}, props, {\n value: prevInfo\n }),\n warn: assign({}, props, {\n value: prevWarn\n }),\n error: assign({}, props, {\n value: prevError\n }),\n group: assign({}, props, {\n value: prevGroup\n }),\n groupCollapsed: assign({}, props, {\n value: prevGroupCollapsed\n }),\n groupEnd: assign({}, props, {\n value: prevGroupEnd\n })\n });\n /* eslint-enable react-internal/no-production-logging */\n }\n\n if (disabledDepth < 0) {\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\n }\n }\n}\n\nvar ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;\nvar prefix;\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\n {\n if (prefix === undefined) {\n // Extract the VM specific prefix used by each line.\n try {\n throw Error();\n } catch (x) {\n var match = x.stack.trim().match(/\\n( *(at )?)/);\n prefix = match && match[1] || '';\n }\n } // We use the prefix to ensure our stacks line up with native stack frames.\n\n\n return '\\n' + prefix + name;\n }\n}\nvar reentry = false;\nvar componentFrameCache;\n\n{\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\n componentFrameCache = new PossiblyWeakMap();\n}\n\nfunction describeNativeComponentFrame(fn, construct) {\n // If something asked for a stack inside a fake render, it should get ignored.\n if ( !fn || reentry) {\n return '';\n }\n\n {\n var frame = componentFrameCache.get(fn);\n\n if (frame !== undefined) {\n return frame;\n }\n }\n\n var control;\n reentry = true;\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.\n\n Error.prepareStackTrace = undefined;\n var previousDispatcher;\n\n {\n previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function\n // for warnings.\n\n ReactCurrentDispatcher$1.current = null;\n disableLogs();\n }\n\n try {\n // This should throw.\n if (construct) {\n // Something should be setting the props in the constructor.\n var Fake = function () {\n throw Error();\n }; // $FlowFixMe\n\n\n Object.defineProperty(Fake.prototype, 'props', {\n set: function () {\n // We use a throwing setter instead of frozen or non-writable props\n // because that won't throw in a non-strict mode function.\n throw Error();\n }\n });\n\n if (typeof Reflect === 'object' && Reflect.construct) {\n // We construct a different control for this case to include any extra\n // frames added by the construct call.\n try {\n Reflect.construct(Fake, []);\n } catch (x) {\n control = x;\n }\n\n Reflect.construct(fn, [], Fake);\n } else {\n try {\n Fake.call();\n } catch (x) {\n control = x;\n }\n\n fn.call(Fake.prototype);\n }\n } else {\n try {\n throw Error();\n } catch (x) {\n control = x;\n }\n\n fn();\n }\n } catch (sample) {\n // This is inlined manually because closure doesn't do it for us.\n if (sample && control && typeof sample.stack === 'string') {\n // This extracts the first frame from the sample that isn't also in the control.\n // Skipping one frame that we assume is the frame that calls the two.\n var sampleLines = sample.stack.split('\\n');\n var controlLines = control.stack.split('\\n');\n var s = sampleLines.length - 1;\n var c = controlLines.length - 1;\n\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\n // We expect at least one stack frame to be shared.\n // Typically this will be the root most one. However, stack frames may be\n // cut off due to maximum stack limits. In this case, one maybe cut off\n // earlier than the other. We assume that the sample is longer or the same\n // and there for cut off earlier. So we should find the root most frame in\n // the sample somewhere in the control.\n c--;\n }\n\n for (; s >= 1 && c >= 0; s--, c--) {\n // Next we find the first one that isn't the same which should be the\n // frame that called our sample function and the control.\n if (sampleLines[s] !== controlLines[c]) {\n // In V8, the first line is describing the message but other VMs don't.\n // If we're about to return the first line, and the control is also on the same\n // line, that's a pretty good indicator that our sample threw at same line as\n // the control. I.e. before we entered the sample frame. So we ignore this result.\n // This can happen if you passed a class to function component, or non-function.\n if (s !== 1 || c !== 1) {\n do {\n s--;\n c--; // We may still have similar intermediate frames from the construct call.\n // The next one that isn't the same should be our match though.\n\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\n // but we have a user-provided \"displayName\"\n // splice it in to make the stack more readable.\n\n\n if (fn.displayName && _frame.includes('<anonymous>')) {\n _frame = _frame.replace('<anonymous>', fn.displayName);\n }\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, _frame);\n }\n } // Return the line we found.\n\n\n return _frame;\n }\n } while (s >= 1 && c >= 0);\n }\n\n break;\n }\n }\n }\n } finally {\n reentry = false;\n\n {\n ReactCurrentDispatcher$1.current = previousDispatcher;\n reenableLogs();\n }\n\n Error.prepareStackTrace = previousPrepareStackTrace;\n } // Fallback to just using the name if we couldn't make it throw.\n\n\n var name = fn ? fn.displayName || fn.name : '';\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\n\n {\n if (typeof fn === 'function') {\n componentFrameCache.set(fn, syntheticFrame);\n }\n }\n\n return syntheticFrame;\n}\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\n {\n return describeNativeComponentFrame(fn, false);\n }\n}\n\nfunction shouldConstruct(Component) {\n var prototype = Component.prototype;\n return !!(prototype && prototype.isReactComponent);\n}\n\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\n\n if (type == null) {\n return '';\n }\n\n if (typeof type === 'function') {\n {\n return describeNativeComponentFrame(type, shouldConstruct(type));\n }\n }\n\n if (typeof type === 'string') {\n return describeBuiltInComponentFrame(type);\n }\n\n switch (type) {\n case REACT_SUSPENSE_TYPE:\n return describeBuiltInComponentFrame('Suspense');\n\n case REACT_SUSPENSE_LIST_TYPE:\n return describeBuiltInComponentFrame('SuspenseList');\n }\n\n if (typeof type === 'object') {\n switch (type.$$typeof) {\n case REACT_FORWARD_REF_TYPE:\n return describeFunctionComponentFrame(type.render);\n\n case REACT_MEMO_TYPE:\n // Memo may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\n\n case REACT_LAZY_TYPE:\n {\n var lazyComponent = type;\n var payload = lazyComponent._payload;\n var init = lazyComponent._init;\n\n try {\n // Lazy may contain any component type so we recursively resolve it.\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\n } catch (x) {}\n }\n }\n }\n\n return '';\n}\n\nvar loggedTypeFailures = {};\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\n\nfunction setCurrentlyValidatingElement(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\n } else {\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\n }\n }\n}\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\n {\n // $FlowFixMe This is okay but Flow doesn't know it.\n var has = Function.call.bind(hasOwnProperty);\n\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n // eslint-disable-next-line react-internal/prod-error-codes\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\n } catch (ex) {\n error$1 = ex;\n }\n\n if (error$1 && !(error$1 instanceof Error)) {\n setCurrentlyValidatingElement(element);\n\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\n\n setCurrentlyValidatingElement(null);\n }\n\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error$1.message] = true;\n setCurrentlyValidatingElement(element);\n\n error('Failed %s type: %s', location, error$1.message);\n\n setCurrentlyValidatingElement(null);\n }\n }\n }\n }\n}\n\nfunction setCurrentlyValidatingElement$1(element) {\n {\n if (element) {\n var owner = element._owner;\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\n setExtraStackFrame(stack);\n } else {\n setExtraStackFrame(null);\n }\n }\n}\n\nvar propTypesMisspellWarningShown;\n\n{\n propTypesMisspellWarningShown = false;\n}\n\nfunction getDeclarationErrorAddendum() {\n if (ReactCurrentOwner.current) {\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\n\n if (name) {\n return '\\n\\nCheck the render method of `' + name + '`.';\n }\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendum(source) {\n if (source !== undefined) {\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\n var lineNumber = source.lineNumber;\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\n }\n\n return '';\n}\n\nfunction getSourceInfoErrorAddendumForProps(elementProps) {\n if (elementProps !== null && elementProps !== undefined) {\n return getSourceInfoErrorAddendum(elementProps.__source);\n }\n\n return '';\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = getDeclarationErrorAddendum();\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n}\n/**\n * Warn if the element doesn't have an explicit key assigned to it.\n * This element is in an array. The array could grow and shrink or be\n * reordered. All children that haven't already been validated are required to\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\n * will only be shown once.\n *\n * @internal\n * @param {ReactElement} element Element that requires a key.\n * @param {*} parentType element's parent's type.\n */\n\n\nfunction validateExplicitKey(element, parentType) {\n if (!element._store || element._store.validated || element.key != null) {\n return;\n }\n\n element._store.validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\n }\n\n {\n setCurrentlyValidatingElement$1(element);\n\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\n\n setCurrentlyValidatingElement$1(null);\n }\n}\n/**\n * Ensure that every element either is passed in a static location, in an\n * array with an explicit keys property defined, or in an object literal\n * with valid key property.\n *\n * @internal\n * @param {ReactNode} node Statically passed child of any type.\n * @param {*} parentType node's parent's type.\n */\n\n\nfunction validateChildKeys(node, parentType) {\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n // This element was passed in a valid location.\n if (node._store) {\n node._store.validated = true;\n }\n } else if (node) {\n var iteratorFn = getIteratorFn(node);\n\n if (typeof iteratorFn === 'function') {\n // Entry iterators used to provide implicit keys,\n // but now we print a separate warning for them later.\n if (iteratorFn !== node.entries) {\n var iterator = iteratorFn.call(node);\n var step;\n\n while (!(step = iterator.next()).done) {\n if (isValidElement(step.value)) {\n validateExplicitKey(step.value, parentType);\n }\n }\n }\n }\n }\n}\n/**\n * Given an element, validate that its props follow the propTypes definition,\n * provided by the type.\n *\n * @param {ReactElement} element\n */\n\n\nfunction validatePropTypes(element) {\n {\n var type = element.type;\n\n if (type === null || type === undefined || typeof type === 'string') {\n return;\n }\n\n var propTypes;\n\n if (typeof type === 'function') {\n propTypes = type.propTypes;\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\n // Inner props are checked in the reconciler.\n type.$$typeof === REACT_MEMO_TYPE)) {\n propTypes = type.propTypes;\n } else {\n return;\n }\n\n if (propTypes) {\n // Intentionally inside to avoid triggering lazy initializers:\n var name = getComponentNameFromType(type);\n checkPropTypes(propTypes, element.props, 'prop', name, element);\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\n\n var _name = getComponentNameFromType(type);\n\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\n }\n\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\n }\n }\n}\n/**\n * Given a fragment, validate that it can only be provided with fragment props\n * @param {ReactElement} fragment\n */\n\n\nfunction validateFragmentProps(fragment) {\n {\n var keys = Object.keys(fragment.props);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n\n if (key !== 'children' && key !== 'key') {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\n\n setCurrentlyValidatingElement$1(null);\n break;\n }\n }\n\n if (fragment.ref !== null) {\n setCurrentlyValidatingElement$1(fragment);\n\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\n\n setCurrentlyValidatingElement$1(null);\n }\n }\n}\nfunction createElementWithValidation(type, props, children) {\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\n // succeed and there will likely be errors in render.\n\n if (!validType) {\n var info = '';\n\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\n }\n\n var sourceInfo = getSourceInfoErrorAddendumForProps(props);\n\n if (sourceInfo) {\n info += sourceInfo;\n } else {\n info += getDeclarationErrorAddendum();\n }\n\n var typeString;\n\n if (type === null) {\n typeString = 'null';\n } else if (isArray(type)) {\n typeString = 'array';\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\n info = ' Did you accidentally export a JSX literal instead of a component?';\n } else {\n typeString = typeof type;\n }\n\n {\n error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\n }\n }\n\n var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.\n // TODO: Drop this when these are no longer allowed as the type argument.\n\n if (element == null) {\n return element;\n } // Skip key warning if the type isn't valid since our key validation logic\n // doesn't expect a non-string/function type and can throw confusing errors.\n // We don't want exception behavior to differ between dev and prod.\n // (Rendering will throw with a helpful message and as soon as the type is\n // fixed, the key warnings will appear.)\n\n\n if (validType) {\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], type);\n }\n }\n\n if (type === REACT_FRAGMENT_TYPE) {\n validateFragmentProps(element);\n } else {\n validatePropTypes(element);\n }\n\n return element;\n}\nvar didWarnAboutDeprecatedCreateFactory = false;\nfunction createFactoryWithValidation(type) {\n var validatedFactory = createElementWithValidation.bind(null, type);\n validatedFactory.type = type;\n\n {\n if (!didWarnAboutDeprecatedCreateFactory) {\n didWarnAboutDeprecatedCreateFactory = true;\n\n warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');\n } // Legacy hook: remove it\n\n\n Object.defineProperty(validatedFactory, 'type', {\n enumerable: false,\n get: function () {\n warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');\n\n Object.defineProperty(this, 'type', {\n value: type\n });\n return type;\n }\n });\n }\n\n return validatedFactory;\n}\nfunction cloneElementWithValidation(element, props, children) {\n var newElement = cloneElement.apply(this, arguments);\n\n for (var i = 2; i < arguments.length; i++) {\n validateChildKeys(arguments[i], newElement.type);\n }\n\n validatePropTypes(newElement);\n return newElement;\n}\n\nfunction startTransition(scope, options) {\n var prevTransition = ReactCurrentBatchConfig.transition;\n ReactCurrentBatchConfig.transition = {};\n var currentTransition = ReactCurrentBatchConfig.transition;\n\n {\n ReactCurrentBatchConfig.transition._updatedFibers = new Set();\n }\n\n try {\n scope();\n } finally {\n ReactCurrentBatchConfig.transition = prevTransition;\n\n {\n if (prevTransition === null && currentTransition._updatedFibers) {\n var updatedFibersCount = currentTransition._updatedFibers.size;\n\n if (updatedFibersCount > 10) {\n warn('Detected a large number of updates inside startTransition. ' + 'If this is due to a subscription please re-write it to use React provided hooks. ' + 'Otherwise concurrent mode guarantees are off the table.');\n }\n\n currentTransition._updatedFibers.clear();\n }\n }\n }\n}\n\nvar didWarnAboutMessageChannel = false;\nvar enqueueTaskImpl = null;\nfunction enqueueTask(task) {\n if (enqueueTaskImpl === null) {\n try {\n // read require off the module object to get around the bundlers.\n // we don't want them to detect a require and bundle a Node polyfill.\n var requireString = ('require' + Math.random()).slice(0, 7);\n var nodeRequire = module && module[requireString]; // assuming we're in node, let's try to get node's\n // version of setImmediate, bypassing fake timers if any.\n\n enqueueTaskImpl = nodeRequire.call(module, 'timers').setImmediate;\n } catch (_err) {\n // we're in a browser\n // we can't use regular timers because they may still be faked\n // so we try MessageChannel+postMessage instead\n enqueueTaskImpl = function (callback) {\n {\n if (didWarnAboutMessageChannel === false) {\n didWarnAboutMessageChannel = true;\n\n if (typeof MessageChannel === 'undefined') {\n error('This browser does not have a MessageChannel implementation, ' + 'so enqueuing tasks via await act(async () => ...) will fail. ' + 'Please file an issue at https://github.com/facebook/react/issues ' + 'if you encounter this warning.');\n }\n }\n }\n\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(undefined);\n };\n }\n }\n\n return enqueueTaskImpl(task);\n}\n\nvar actScopeDepth = 0;\nvar didWarnNoAwaitAct = false;\nfunction act(callback) {\n {\n // `act` calls can be nested, so we track the depth. This represents the\n // number of `act` scopes on the stack.\n var prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n\n if (ReactCurrentActQueue.current === null) {\n // This is the outermost `act` scope. Initialize the queue. The reconciler\n // will detect the queue and use it instead of Scheduler.\n ReactCurrentActQueue.current = [];\n }\n\n var prevIsBatchingLegacy = ReactCurrentActQueue.isBatchingLegacy;\n var result;\n\n try {\n // Used to reproduce behavior of `batchedUpdates` in legacy mode. Only\n // set to `true` while the given callback is executed, not for updates\n // triggered during an async event, because this is how the legacy\n // implementation of `act` behaved.\n ReactCurrentActQueue.isBatchingLegacy = true;\n result = callback(); // Replicate behavior of original `act` implementation in legacy mode,\n // which flushed updates immediately after the scope function exits, even\n // if it's an async function.\n\n if (!prevIsBatchingLegacy && ReactCurrentActQueue.didScheduleLegacyUpdate) {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n ReactCurrentActQueue.didScheduleLegacyUpdate = false;\n flushActQueue(queue);\n }\n }\n } catch (error) {\n popActScope(prevActScopeDepth);\n throw error;\n } finally {\n ReactCurrentActQueue.isBatchingLegacy = prevIsBatchingLegacy;\n }\n\n if (result !== null && typeof result === 'object' && typeof result.then === 'function') {\n var thenableResult = result; // The callback is an async function (i.e. returned a promise). Wait\n // for it to resolve before exiting the current scope.\n\n var wasAwaited = false;\n var thenable = {\n then: function (resolve, reject) {\n wasAwaited = true;\n thenableResult.then(function (returnValue) {\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // We've exited the outermost act scope. Recursively flush the\n // queue until there's no remaining work.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }, function (error) {\n // The callback threw an error.\n popActScope(prevActScopeDepth);\n reject(error);\n });\n }\n };\n\n {\n if (!didWarnNoAwaitAct && typeof Promise !== 'undefined') {\n // eslint-disable-next-line no-undef\n Promise.resolve().then(function () {}).then(function () {\n if (!wasAwaited) {\n didWarnNoAwaitAct = true;\n\n error('You called act(async () => ...) without await. ' + 'This could lead to unexpected testing behaviour, ' + 'interleaving multiple act calls and mixing their ' + 'scopes. ' + 'You should - await act(async () => ...);');\n }\n });\n }\n }\n\n return thenable;\n } else {\n var returnValue = result; // The callback is not an async function. Exit the current scope\n // immediately, without awaiting.\n\n popActScope(prevActScopeDepth);\n\n if (actScopeDepth === 0) {\n // Exiting the outermost act scope. Flush the queue.\n var _queue = ReactCurrentActQueue.current;\n\n if (_queue !== null) {\n flushActQueue(_queue);\n ReactCurrentActQueue.current = null;\n } // Return a thenable. If the user awaits it, we'll flush again in\n // case additional work was scheduled by a microtask.\n\n\n var _thenable = {\n then: function (resolve, reject) {\n // Confirm we haven't re-entered another `act` scope, in case\n // the user does something weird like await the thenable\n // multiple times.\n if (ReactCurrentActQueue.current === null) {\n // Recursively flush the queue until there's no remaining work.\n ReactCurrentActQueue.current = [];\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n } else {\n resolve(returnValue);\n }\n }\n };\n return _thenable;\n } else {\n // Since we're inside a nested `act` scope, the returned thenable\n // immediately resolves. The outer scope will flush the queue.\n var _thenable2 = {\n then: function (resolve, reject) {\n resolve(returnValue);\n }\n };\n return _thenable2;\n }\n }\n }\n}\n\nfunction popActScope(prevActScopeDepth) {\n {\n if (prevActScopeDepth !== actScopeDepth - 1) {\n error('You seem to have overlapping act() calls, this is not supported. ' + 'Be sure to await previous act() calls before making a new one. ');\n }\n\n actScopeDepth = prevActScopeDepth;\n }\n}\n\nfunction recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n {\n var queue = ReactCurrentActQueue.current;\n\n if (queue !== null) {\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n if (queue.length === 0) {\n // No additional work was scheduled. Finish.\n ReactCurrentActQueue.current = null;\n resolve(returnValue);\n } else {\n // Keep flushing work until there's none left.\n recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n }\n });\n } catch (error) {\n reject(error);\n }\n } else {\n resolve(returnValue);\n }\n }\n}\n\nvar isFlushing = false;\n\nfunction flushActQueue(queue) {\n {\n if (!isFlushing) {\n // Prevent re-entrance.\n isFlushing = true;\n var i = 0;\n\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n\n do {\n callback = callback(true);\n } while (callback !== null);\n }\n\n queue.length = 0;\n } catch (error) {\n // If something throws, leave the remaining callbacks on the queue.\n queue = queue.slice(i + 1);\n throw error;\n } finally {\n isFlushing = false;\n }\n }\n }\n}\n\nvar createElement$1 = createElementWithValidation ;\nvar cloneElement$1 = cloneElementWithValidation ;\nvar createFactory = createFactoryWithValidation ;\nvar Children = {\n map: mapChildren,\n forEach: forEachChildren,\n count: countChildren,\n toArray: toArray,\n only: onlyChild\n};\n\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;\nexports.act = act;\nexports.cloneElement = cloneElement$1;\nexports.createContext = createContext;\nexports.createElement = createElement$1;\nexports.createFactory = createFactory;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.isValidElement = isValidElement;\nexports.lazy = lazy;\nexports.memo = memo;\nexports.startTransition = startTransition;\nexports.unstable_act = act;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useDebugValue = useDebugValue;\nexports.useDeferredValue = useDeferredValue;\nexports.useEffect = useEffect;\nexports.useId = useId;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useInsertionEffect = useInsertionEffect;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.useSyncExternalStore = useSyncExternalStore;\nexports.useTransition = useTransition;\nexports.version = ReactVersion;\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\nif (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop ===\n 'function'\n) {\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(new Error());\n}\n \n })();\n}\n\n\n//# sourceURL=webpack://WordPress/./node_modules/react/cjs/react.development.js?"); |
19 // When adding new symbols to this file, |
|
20 // Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols' |
|
21 // The Symbol used to tag the ReactElement-like types. If there is no native Symbol |
|
22 // nor polyfill, then a plain number is used for performance. |
|
23 var REACT_ELEMENT_TYPE = 0xeac7; |
|
24 var REACT_PORTAL_TYPE = 0xeaca; |
|
25 exports.Fragment = 0xeacb; |
|
26 exports.StrictMode = 0xeacc; |
|
27 exports.Profiler = 0xead2; |
|
28 var REACT_PROVIDER_TYPE = 0xeacd; |
|
29 var REACT_CONTEXT_TYPE = 0xeace; |
|
30 var REACT_FORWARD_REF_TYPE = 0xead0; |
|
31 exports.Suspense = 0xead1; |
|
32 var REACT_SUSPENSE_LIST_TYPE = 0xead8; |
|
33 var REACT_MEMO_TYPE = 0xead3; |
|
34 var REACT_LAZY_TYPE = 0xead4; |
|
35 var REACT_BLOCK_TYPE = 0xead9; |
|
36 var REACT_SERVER_BLOCK_TYPE = 0xeada; |
|
37 var REACT_FUNDAMENTAL_TYPE = 0xead5; |
|
38 var REACT_SCOPE_TYPE = 0xead7; |
|
39 var REACT_OPAQUE_ID_TYPE = 0xeae0; |
|
40 var REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1; |
|
41 var REACT_OFFSCREEN_TYPE = 0xeae2; |
|
42 var REACT_LEGACY_HIDDEN_TYPE = 0xeae3; |
|
43 |
20 |
44 if (typeof Symbol === 'function' && Symbol.for) { |
21 /***/ }), |
45 var symbolFor = Symbol.for; |
|
46 REACT_ELEMENT_TYPE = symbolFor('react.element'); |
|
47 REACT_PORTAL_TYPE = symbolFor('react.portal'); |
|
48 exports.Fragment = symbolFor('react.fragment'); |
|
49 exports.StrictMode = symbolFor('react.strict_mode'); |
|
50 exports.Profiler = symbolFor('react.profiler'); |
|
51 REACT_PROVIDER_TYPE = symbolFor('react.provider'); |
|
52 REACT_CONTEXT_TYPE = symbolFor('react.context'); |
|
53 REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref'); |
|
54 exports.Suspense = symbolFor('react.suspense'); |
|
55 REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list'); |
|
56 REACT_MEMO_TYPE = symbolFor('react.memo'); |
|
57 REACT_LAZY_TYPE = symbolFor('react.lazy'); |
|
58 REACT_BLOCK_TYPE = symbolFor('react.block'); |
|
59 REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block'); |
|
60 REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental'); |
|
61 REACT_SCOPE_TYPE = symbolFor('react.scope'); |
|
62 REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id'); |
|
63 REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode'); |
|
64 REACT_OFFSCREEN_TYPE = symbolFor('react.offscreen'); |
|
65 REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden'); |
|
66 } |
|
67 |
22 |
68 var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; |
23 /***/ "./node_modules/react/index.js": |
69 var FAUX_ITERATOR_SYMBOL = '@@iterator'; |
24 /*!*************************************!*\ |
70 function getIteratorFn(maybeIterable) { |
25 !*** ./node_modules/react/index.js ***! |
71 if (maybeIterable === null || typeof maybeIterable !== 'object') { |
26 \*************************************/ |
72 return null; |
27 /***/ ((module, __unused_webpack_exports, __webpack_require__) => { |
73 } |
|
74 |
28 |
75 var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; |
29 eval("\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./cjs/react.development.js */ \"./node_modules/react/cjs/react.development.js\");\n}\n\n\n//# sourceURL=webpack://WordPress/./node_modules/react/index.js?"); |
76 |
30 |
77 if (typeof maybeIterator === 'function') { |
31 /***/ }) |
78 return maybeIterator; |
|
79 } |
|
80 |
32 |
81 return null; |
33 /******/ }); |
82 } |
34 /************************************************************************/ |
83 |
35 /******/ // The module cache |
84 var hasOwnProperty = Object.prototype.hasOwnProperty; |
36 /******/ var __webpack_module_cache__ = {}; |
85 |
37 /******/ |
86 var _assign = function (to, from) { |
38 /******/ // The require function |
87 for (var key in from) { |
39 /******/ function __webpack_require__(moduleId) { |
88 if (hasOwnProperty.call(from, key)) { |
40 /******/ // Check if module is in cache |
89 to[key] = from[key]; |
41 /******/ var cachedModule = __webpack_module_cache__[moduleId]; |
90 } |
42 /******/ if (cachedModule !== undefined) { |
91 } |
43 /******/ return cachedModule.exports; |
92 }; |
44 /******/ } |
93 |
45 /******/ // Create a new module (and put it into the cache) |
94 var assign = Object.assign || function (target, sources) { |
46 /******/ var module = __webpack_module_cache__[moduleId] = { |
95 if (target == null) { |
47 /******/ id: moduleId, |
96 throw new TypeError('Object.assign target cannot be null or undefined'); |
48 /******/ loaded: false, |
97 } |
49 /******/ exports: {} |
98 |
50 /******/ }; |
99 var to = Object(target); |
51 /******/ |
100 |
52 /******/ // Execute the module function |
101 for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) { |
53 /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); |
102 var nextSource = arguments[nextIndex]; |
54 /******/ |
103 |
55 /******/ // Flag the module as loaded |
104 if (nextSource != null) { |
56 /******/ module.loaded = true; |
105 _assign(to, Object(nextSource)); |
57 /******/ |
106 } |
58 /******/ // Return the exports of the module |
107 } |
59 /******/ return module.exports; |
108 |
60 /******/ } |
109 return to; |
61 /******/ |
110 }; |
62 /************************************************************************/ |
111 |
63 /******/ /* webpack/runtime/node module decorator */ |
112 /** |
64 /******/ (() => { |
113 * Keeps track of the current dispatcher. |
65 /******/ __webpack_require__.nmd = (module) => { |
114 */ |
66 /******/ module.paths = []; |
115 var ReactCurrentDispatcher = { |
67 /******/ if (!module.children) module.children = []; |
116 /** |
68 /******/ return module; |
117 * @internal |
69 /******/ }; |
118 * @type {ReactComponent} |
70 /******/ })(); |
119 */ |
71 /******/ |
120 current: null |
72 /************************************************************************/ |
121 }; |
73 /******/ |
122 |
74 /******/ // startup |
123 /** |
75 /******/ // Load entry module and return exports |
124 * Keeps track of the current batch's configuration such as how long an update |
76 /******/ // This entry module can't be inlined because the eval devtool is used. |
125 * should suspend for if it needs to. |
77 /******/ var __webpack_exports__ = __webpack_require__("./node_modules/react/index.js"); |
126 */ |
78 /******/ window.React = __webpack_exports__; |
127 var ReactCurrentBatchConfig = { |
79 /******/ |
128 transition: 0 |
80 /******/ })() |
129 }; |
81 ; |
130 |
|
131 /** |
|
132 * Keeps track of the current owner. |
|
133 * |
|
134 * The current owner is the component who should own any components that are |
|
135 * currently being constructed. |
|
136 */ |
|
137 var ReactCurrentOwner = { |
|
138 /** |
|
139 * @internal |
|
140 * @type {ReactComponent} |
|
141 */ |
|
142 current: null |
|
143 }; |
|
144 |
|
145 var ReactDebugCurrentFrame = {}; |
|
146 var currentExtraStackFrame = null; |
|
147 function setExtraStackFrame(stack) { |
|
148 { |
|
149 currentExtraStackFrame = stack; |
|
150 } |
|
151 } |
|
152 |
|
153 { |
|
154 ReactDebugCurrentFrame.setExtraStackFrame = function (stack) { |
|
155 { |
|
156 currentExtraStackFrame = stack; |
|
157 } |
|
158 }; // Stack implementation injected by the current renderer. |
|
159 |
|
160 |
|
161 ReactDebugCurrentFrame.getCurrentStack = null; |
|
162 |
|
163 ReactDebugCurrentFrame.getStackAddendum = function () { |
|
164 var stack = ''; // Add an extra top frame while an element is being validated |
|
165 |
|
166 if (currentExtraStackFrame) { |
|
167 stack += currentExtraStackFrame; |
|
168 } // Delegate to the injected renderer-specific implementation |
|
169 |
|
170 |
|
171 var impl = ReactDebugCurrentFrame.getCurrentStack; |
|
172 |
|
173 if (impl) { |
|
174 stack += impl() || ''; |
|
175 } |
|
176 |
|
177 return stack; |
|
178 }; |
|
179 } |
|
180 |
|
181 /** |
|
182 * Used by act() to track whether you're inside an act() scope. |
|
183 */ |
|
184 var IsSomeRendererActing = { |
|
185 current: false |
|
186 }; |
|
187 |
|
188 var ReactSharedInternals = { |
|
189 ReactCurrentDispatcher: ReactCurrentDispatcher, |
|
190 ReactCurrentBatchConfig: ReactCurrentBatchConfig, |
|
191 ReactCurrentOwner: ReactCurrentOwner, |
|
192 IsSomeRendererActing: IsSomeRendererActing, |
|
193 // Used by renderers to avoid bundling object-assign twice in UMD bundles: |
|
194 assign: assign |
|
195 }; |
|
196 |
|
197 { |
|
198 ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame; |
|
199 } |
|
200 |
|
201 // by calls to these methods by a Babel plugin. |
|
202 // |
|
203 // In PROD (or in packages without access to React internals), |
|
204 // they are left as they are instead. |
|
205 |
|
206 function warn(format) { |
|
207 { |
|
208 for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { |
|
209 args[_key - 1] = arguments[_key]; |
|
210 } |
|
211 |
|
212 printWarning('warn', format, args); |
|
213 } |
|
214 } |
|
215 function error(format) { |
|
216 { |
|
217 for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { |
|
218 args[_key2 - 1] = arguments[_key2]; |
|
219 } |
|
220 |
|
221 printWarning('error', format, args); |
|
222 } |
|
223 } |
|
224 |
|
225 function printWarning(level, format, args) { |
|
226 // When changing this logic, you might want to also |
|
227 // update consoleWithStackDev.www.js as well. |
|
228 { |
|
229 var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame; |
|
230 var stack = ReactDebugCurrentFrame.getStackAddendum(); |
|
231 |
|
232 if (stack !== '') { |
|
233 format += '%s'; |
|
234 args = args.concat([stack]); |
|
235 } |
|
236 |
|
237 var argsWithFormat = args.map(function (item) { |
|
238 return '' + item; |
|
239 }); // Careful: RN currently depends on this prefix |
|
240 |
|
241 argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it |
|
242 // breaks IE9: https://github.com/facebook/react/issues/13610 |
|
243 // eslint-disable-next-line react-internal/no-production-logging |
|
244 |
|
245 Function.prototype.apply.call(console[level], console, argsWithFormat); |
|
246 } |
|
247 } |
|
248 |
|
249 var didWarnStateUpdateForUnmountedComponent = {}; |
|
250 |
|
251 function warnNoop(publicInstance, callerName) { |
|
252 { |
|
253 var _constructor = publicInstance.constructor; |
|
254 var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass'; |
|
255 var warningKey = componentName + "." + callerName; |
|
256 |
|
257 if (didWarnStateUpdateForUnmountedComponent[warningKey]) { |
|
258 return; |
|
259 } |
|
260 |
|
261 error("Can't call %s on a component that is not yet mounted. " + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName); |
|
262 |
|
263 didWarnStateUpdateForUnmountedComponent[warningKey] = true; |
|
264 } |
|
265 } |
|
266 /** |
|
267 * This is the abstract API for an update queue. |
|
268 */ |
|
269 |
|
270 |
|
271 var ReactNoopUpdateQueue = { |
|
272 /** |
|
273 * Checks whether or not this composite component is mounted. |
|
274 * @param {ReactClass} publicInstance The instance we want to test. |
|
275 * @return {boolean} True if mounted, false otherwise. |
|
276 * @protected |
|
277 * @final |
|
278 */ |
|
279 isMounted: function (publicInstance) { |
|
280 return false; |
|
281 }, |
|
282 |
|
283 /** |
|
284 * Forces an update. This should only be invoked when it is known with |
|
285 * certainty that we are **not** in a DOM transaction. |
|
286 * |
|
287 * You may want to call this when you know that some deeper aspect of the |
|
288 * component's state has changed but `setState` was not called. |
|
289 * |
|
290 * This will not invoke `shouldComponentUpdate`, but it will invoke |
|
291 * `componentWillUpdate` and `componentDidUpdate`. |
|
292 * |
|
293 * @param {ReactClass} publicInstance The instance that should rerender. |
|
294 * @param {?function} callback Called after component is updated. |
|
295 * @param {?string} callerName name of the calling function in the public API. |
|
296 * @internal |
|
297 */ |
|
298 enqueueForceUpdate: function (publicInstance, callback, callerName) { |
|
299 warnNoop(publicInstance, 'forceUpdate'); |
|
300 }, |
|
301 |
|
302 /** |
|
303 * Replaces all of the state. Always use this or `setState` to mutate state. |
|
304 * You should treat `this.state` as immutable. |
|
305 * |
|
306 * There is no guarantee that `this.state` will be immediately updated, so |
|
307 * accessing `this.state` after calling this method may return the old value. |
|
308 * |
|
309 * @param {ReactClass} publicInstance The instance that should rerender. |
|
310 * @param {object} completeState Next state. |
|
311 * @param {?function} callback Called after component is updated. |
|
312 * @param {?string} callerName name of the calling function in the public API. |
|
313 * @internal |
|
314 */ |
|
315 enqueueReplaceState: function (publicInstance, completeState, callback, callerName) { |
|
316 warnNoop(publicInstance, 'replaceState'); |
|
317 }, |
|
318 |
|
319 /** |
|
320 * Sets a subset of the state. This only exists because _pendingState is |
|
321 * internal. This provides a merging strategy that is not available to deep |
|
322 * properties which is confusing. TODO: Expose pendingState or don't use it |
|
323 * during the merge. |
|
324 * |
|
325 * @param {ReactClass} publicInstance The instance that should rerender. |
|
326 * @param {object} partialState Next partial state to be merged with state. |
|
327 * @param {?function} callback Called after component is updated. |
|
328 * @param {?string} Name of the calling function in the public API. |
|
329 * @internal |
|
330 */ |
|
331 enqueueSetState: function (publicInstance, partialState, callback, callerName) { |
|
332 warnNoop(publicInstance, 'setState'); |
|
333 } |
|
334 }; |
|
335 |
|
336 var emptyObject = {}; |
|
337 |
|
338 { |
|
339 Object.freeze(emptyObject); |
|
340 } |
|
341 /** |
|
342 * Base class helpers for the updating state of a component. |
|
343 */ |
|
344 |
|
345 |
|
346 function Component(props, context, updater) { |
|
347 this.props = props; |
|
348 this.context = context; // If a component has string refs, we will assign a different object later. |
|
349 |
|
350 this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the |
|
351 // renderer. |
|
352 |
|
353 this.updater = updater || ReactNoopUpdateQueue; |
|
354 } |
|
355 |
|
356 Component.prototype.isReactComponent = {}; |
|
357 /** |
|
358 * Sets a subset of the state. Always use this to mutate |
|
359 * state. You should treat `this.state` as immutable. |
|
360 * |
|
361 * There is no guarantee that `this.state` will be immediately updated, so |
|
362 * accessing `this.state` after calling this method may return the old value. |
|
363 * |
|
364 * There is no guarantee that calls to `setState` will run synchronously, |
|
365 * as they may eventually be batched together. You can provide an optional |
|
366 * callback that will be executed when the call to setState is actually |
|
367 * completed. |
|
368 * |
|
369 * When a function is provided to setState, it will be called at some point in |
|
370 * the future (not synchronously). It will be called with the up to date |
|
371 * component arguments (state, props, context). These values can be different |
|
372 * from this.* because your function may be called after receiveProps but before |
|
373 * shouldComponentUpdate, and this new state, props, and context will not yet be |
|
374 * assigned to this. |
|
375 * |
|
376 * @param {object|function} partialState Next partial state or function to |
|
377 * produce next partial state to be merged with current state. |
|
378 * @param {?function} callback Called after state is updated. |
|
379 * @final |
|
380 * @protected |
|
381 */ |
|
382 |
|
383 Component.prototype.setState = function (partialState, callback) { |
|
384 if (!(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null)) { |
|
385 { |
|
386 throw Error( "setState(...): takes an object of state variables to update or a function which returns an object of state variables." ); |
|
387 } |
|
388 } |
|
389 |
|
390 this.updater.enqueueSetState(this, partialState, callback, 'setState'); |
|
391 }; |
|
392 /** |
|
393 * Forces an update. This should only be invoked when it is known with |
|
394 * certainty that we are **not** in a DOM transaction. |
|
395 * |
|
396 * You may want to call this when you know that some deeper aspect of the |
|
397 * component's state has changed but `setState` was not called. |
|
398 * |
|
399 * This will not invoke `shouldComponentUpdate`, but it will invoke |
|
400 * `componentWillUpdate` and `componentDidUpdate`. |
|
401 * |
|
402 * @param {?function} callback Called after update is complete. |
|
403 * @final |
|
404 * @protected |
|
405 */ |
|
406 |
|
407 |
|
408 Component.prototype.forceUpdate = function (callback) { |
|
409 this.updater.enqueueForceUpdate(this, callback, 'forceUpdate'); |
|
410 }; |
|
411 /** |
|
412 * Deprecated APIs. These APIs used to exist on classic React classes but since |
|
413 * we would like to deprecate them, we're not going to move them over to this |
|
414 * modern base class. Instead, we define a getter that warns if it's accessed. |
|
415 */ |
|
416 |
|
417 |
|
418 { |
|
419 var deprecatedAPIs = { |
|
420 isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'], |
|
421 replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).'] |
|
422 }; |
|
423 |
|
424 var defineDeprecationWarning = function (methodName, info) { |
|
425 Object.defineProperty(Component.prototype, methodName, { |
|
426 get: function () { |
|
427 warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]); |
|
428 |
|
429 return undefined; |
|
430 } |
|
431 }); |
|
432 }; |
|
433 |
|
434 for (var fnName in deprecatedAPIs) { |
|
435 if (deprecatedAPIs.hasOwnProperty(fnName)) { |
|
436 defineDeprecationWarning(fnName, deprecatedAPIs[fnName]); |
|
437 } |
|
438 } |
|
439 } |
|
440 |
|
441 function ComponentDummy() {} |
|
442 |
|
443 ComponentDummy.prototype = Component.prototype; |
|
444 /** |
|
445 * Convenience component with default shallow equality check for sCU. |
|
446 */ |
|
447 |
|
448 function PureComponent(props, context, updater) { |
|
449 this.props = props; |
|
450 this.context = context; // If a component has string refs, we will assign a different object later. |
|
451 |
|
452 this.refs = emptyObject; |
|
453 this.updater = updater || ReactNoopUpdateQueue; |
|
454 } |
|
455 |
|
456 var pureComponentPrototype = PureComponent.prototype = new ComponentDummy(); |
|
457 pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods. |
|
458 |
|
459 assign(pureComponentPrototype, Component.prototype); |
|
460 |
|
461 pureComponentPrototype.isPureReactComponent = true; |
|
462 |
|
463 // an immutable object with a single mutable value |
|
464 function createRef() { |
|
465 var refObject = { |
|
466 current: null |
|
467 }; |
|
468 |
|
469 { |
|
470 Object.seal(refObject); |
|
471 } |
|
472 |
|
473 return refObject; |
|
474 } |
|
475 |
|
476 function getWrappedName(outerType, innerType, wrapperName) { |
|
477 var functionName = innerType.displayName || innerType.name || ''; |
|
478 return outerType.displayName || (functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName); |
|
479 } |
|
480 |
|
481 function getContextName(type) { |
|
482 return type.displayName || 'Context'; |
|
483 } |
|
484 |
|
485 function getComponentName(type) { |
|
486 if (type == null) { |
|
487 // Host root, text node or just invalid type. |
|
488 return null; |
|
489 } |
|
490 |
|
491 { |
|
492 if (typeof type.tag === 'number') { |
|
493 error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.'); |
|
494 } |
|
495 } |
|
496 |
|
497 if (typeof type === 'function') { |
|
498 return type.displayName || type.name || null; |
|
499 } |
|
500 |
|
501 if (typeof type === 'string') { |
|
502 return type; |
|
503 } |
|
504 |
|
505 switch (type) { |
|
506 case exports.Fragment: |
|
507 return 'Fragment'; |
|
508 |
|
509 case REACT_PORTAL_TYPE: |
|
510 return 'Portal'; |
|
511 |
|
512 case exports.Profiler: |
|
513 return 'Profiler'; |
|
514 |
|
515 case exports.StrictMode: |
|
516 return 'StrictMode'; |
|
517 |
|
518 case exports.Suspense: |
|
519 return 'Suspense'; |
|
520 |
|
521 case REACT_SUSPENSE_LIST_TYPE: |
|
522 return 'SuspenseList'; |
|
523 } |
|
524 |
|
525 if (typeof type === 'object') { |
|
526 switch (type.$$typeof) { |
|
527 case REACT_CONTEXT_TYPE: |
|
528 var context = type; |
|
529 return getContextName(context) + '.Consumer'; |
|
530 |
|
531 case REACT_PROVIDER_TYPE: |
|
532 var provider = type; |
|
533 return getContextName(provider._context) + '.Provider'; |
|
534 |
|
535 case REACT_FORWARD_REF_TYPE: |
|
536 return getWrappedName(type, type.render, 'ForwardRef'); |
|
537 |
|
538 case REACT_MEMO_TYPE: |
|
539 return getComponentName(type.type); |
|
540 |
|
541 case REACT_BLOCK_TYPE: |
|
542 return getComponentName(type._render); |
|
543 |
|
544 case REACT_LAZY_TYPE: |
|
545 { |
|
546 var lazyComponent = type; |
|
547 var payload = lazyComponent._payload; |
|
548 var init = lazyComponent._init; |
|
549 |
|
550 try { |
|
551 return getComponentName(init(payload)); |
|
552 } catch (x) { |
|
553 return null; |
|
554 } |
|
555 } |
|
556 } |
|
557 } |
|
558 |
|
559 return null; |
|
560 } |
|
561 |
|
562 var hasOwnProperty$1 = Object.prototype.hasOwnProperty; |
|
563 var RESERVED_PROPS = { |
|
564 key: true, |
|
565 ref: true, |
|
566 __self: true, |
|
567 __source: true |
|
568 }; |
|
569 var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs; |
|
570 |
|
571 { |
|
572 didWarnAboutStringRefs = {}; |
|
573 } |
|
574 |
|
575 function hasValidRef(config) { |
|
576 { |
|
577 if (hasOwnProperty$1.call(config, 'ref')) { |
|
578 var getter = Object.getOwnPropertyDescriptor(config, 'ref').get; |
|
579 |
|
580 if (getter && getter.isReactWarning) { |
|
581 return false; |
|
582 } |
|
583 } |
|
584 } |
|
585 |
|
586 return config.ref !== undefined; |
|
587 } |
|
588 |
|
589 function hasValidKey(config) { |
|
590 { |
|
591 if (hasOwnProperty$1.call(config, 'key')) { |
|
592 var getter = Object.getOwnPropertyDescriptor(config, 'key').get; |
|
593 |
|
594 if (getter && getter.isReactWarning) { |
|
595 return false; |
|
596 } |
|
597 } |
|
598 } |
|
599 |
|
600 return config.key !== undefined; |
|
601 } |
|
602 |
|
603 function defineKeyPropWarningGetter(props, displayName) { |
|
604 var warnAboutAccessingKey = function () { |
|
605 { |
|
606 if (!specialPropKeyWarningShown) { |
|
607 specialPropKeyWarningShown = true; |
|
608 |
|
609 error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName); |
|
610 } |
|
611 } |
|
612 }; |
|
613 |
|
614 warnAboutAccessingKey.isReactWarning = true; |
|
615 Object.defineProperty(props, 'key', { |
|
616 get: warnAboutAccessingKey, |
|
617 configurable: true |
|
618 }); |
|
619 } |
|
620 |
|
621 function defineRefPropWarningGetter(props, displayName) { |
|
622 var warnAboutAccessingRef = function () { |
|
623 { |
|
624 if (!specialPropRefWarningShown) { |
|
625 specialPropRefWarningShown = true; |
|
626 |
|
627 error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName); |
|
628 } |
|
629 } |
|
630 }; |
|
631 |
|
632 warnAboutAccessingRef.isReactWarning = true; |
|
633 Object.defineProperty(props, 'ref', { |
|
634 get: warnAboutAccessingRef, |
|
635 configurable: true |
|
636 }); |
|
637 } |
|
638 |
|
639 function warnIfStringRefCannotBeAutoConverted(config) { |
|
640 { |
|
641 if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) { |
|
642 var componentName = getComponentName(ReactCurrentOwner.current.type); |
|
643 |
|
644 if (!didWarnAboutStringRefs[componentName]) { |
|
645 error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref); |
|
646 |
|
647 didWarnAboutStringRefs[componentName] = true; |
|
648 } |
|
649 } |
|
650 } |
|
651 } |
|
652 /** |
|
653 * Factory method to create a new React element. This no longer adheres to |
|
654 * the class pattern, so do not use new to call it. Also, instanceof check |
|
655 * will not work. Instead test $$typeof field against Symbol.for('react.element') to check |
|
656 * if something is a React Element. |
|
657 * |
|
658 * @param {*} type |
|
659 * @param {*} props |
|
660 * @param {*} key |
|
661 * @param {string|object} ref |
|
662 * @param {*} owner |
|
663 * @param {*} self A *temporary* helper to detect places where `this` is |
|
664 * different from the `owner` when React.createElement is called, so that we |
|
665 * can warn. We want to get rid of owner and replace string `ref`s with arrow |
|
666 * functions, and as long as `this` and owner are the same, there will be no |
|
667 * change in behavior. |
|
668 * @param {*} source An annotation object (added by a transpiler or otherwise) |
|
669 * indicating filename, line number, and/or other information. |
|
670 * @internal |
|
671 */ |
|
672 |
|
673 |
|
674 var ReactElement = function (type, key, ref, self, source, owner, props) { |
|
675 var element = { |
|
676 // This tag allows us to uniquely identify this as a React Element |
|
677 $$typeof: REACT_ELEMENT_TYPE, |
|
678 // Built-in properties that belong on the element |
|
679 type: type, |
|
680 key: key, |
|
681 ref: ref, |
|
682 props: props, |
|
683 // Record the component responsible for creating this element. |
|
684 _owner: owner |
|
685 }; |
|
686 |
|
687 { |
|
688 // The validation flag is currently mutative. We put it on |
|
689 // an external backing store so that we can freeze the whole object. |
|
690 // This can be replaced with a WeakMap once they are implemented in |
|
691 // commonly used development environments. |
|
692 element._store = {}; // To make comparing ReactElements easier for testing purposes, we make |
|
693 // the validation flag non-enumerable (where possible, which should |
|
694 // include every environment we run tests in), so the test framework |
|
695 // ignores it. |
|
696 |
|
697 Object.defineProperty(element._store, 'validated', { |
|
698 configurable: false, |
|
699 enumerable: false, |
|
700 writable: true, |
|
701 value: false |
|
702 }); // self and source are DEV only properties. |
|
703 |
|
704 Object.defineProperty(element, '_self', { |
|
705 configurable: false, |
|
706 enumerable: false, |
|
707 writable: false, |
|
708 value: self |
|
709 }); // Two elements created in two different places should be considered |
|
710 // equal for testing purposes and therefore we hide it from enumeration. |
|
711 |
|
712 Object.defineProperty(element, '_source', { |
|
713 configurable: false, |
|
714 enumerable: false, |
|
715 writable: false, |
|
716 value: source |
|
717 }); |
|
718 |
|
719 if (Object.freeze) { |
|
720 Object.freeze(element.props); |
|
721 Object.freeze(element); |
|
722 } |
|
723 } |
|
724 |
|
725 return element; |
|
726 }; |
|
727 /** |
|
728 * Create and return a new ReactElement of the given type. |
|
729 * See https://reactjs.org/docs/react-api.html#createelement |
|
730 */ |
|
731 |
|
732 function createElement(type, config, children) { |
|
733 var propName; // Reserved names are extracted |
|
734 |
|
735 var props = {}; |
|
736 var key = null; |
|
737 var ref = null; |
|
738 var self = null; |
|
739 var source = null; |
|
740 |
|
741 if (config != null) { |
|
742 if (hasValidRef(config)) { |
|
743 ref = config.ref; |
|
744 |
|
745 { |
|
746 warnIfStringRefCannotBeAutoConverted(config); |
|
747 } |
|
748 } |
|
749 |
|
750 if (hasValidKey(config)) { |
|
751 key = '' + config.key; |
|
752 } |
|
753 |
|
754 self = config.__self === undefined ? null : config.__self; |
|
755 source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object |
|
756 |
|
757 for (propName in config) { |
|
758 if (hasOwnProperty$1.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { |
|
759 props[propName] = config[propName]; |
|
760 } |
|
761 } |
|
762 } // Children can be more than one argument, and those are transferred onto |
|
763 // the newly allocated props object. |
|
764 |
|
765 |
|
766 var childrenLength = arguments.length - 2; |
|
767 |
|
768 if (childrenLength === 1) { |
|
769 props.children = children; |
|
770 } else if (childrenLength > 1) { |
|
771 var childArray = Array(childrenLength); |
|
772 |
|
773 for (var i = 0; i < childrenLength; i++) { |
|
774 childArray[i] = arguments[i + 2]; |
|
775 } |
|
776 |
|
777 { |
|
778 if (Object.freeze) { |
|
779 Object.freeze(childArray); |
|
780 } |
|
781 } |
|
782 |
|
783 props.children = childArray; |
|
784 } // Resolve default props |
|
785 |
|
786 |
|
787 if (type && type.defaultProps) { |
|
788 var defaultProps = type.defaultProps; |
|
789 |
|
790 for (propName in defaultProps) { |
|
791 if (props[propName] === undefined) { |
|
792 props[propName] = defaultProps[propName]; |
|
793 } |
|
794 } |
|
795 } |
|
796 |
|
797 { |
|
798 if (key || ref) { |
|
799 var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type; |
|
800 |
|
801 if (key) { |
|
802 defineKeyPropWarningGetter(props, displayName); |
|
803 } |
|
804 |
|
805 if (ref) { |
|
806 defineRefPropWarningGetter(props, displayName); |
|
807 } |
|
808 } |
|
809 } |
|
810 |
|
811 return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props); |
|
812 } |
|
813 function cloneAndReplaceKey(oldElement, newKey) { |
|
814 var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props); |
|
815 return newElement; |
|
816 } |
|
817 /** |
|
818 * Clone and return a new ReactElement using element as the starting point. |
|
819 * See https://reactjs.org/docs/react-api.html#cloneelement |
|
820 */ |
|
821 |
|
822 function cloneElement(element, config, children) { |
|
823 if (!!(element === null || element === undefined)) { |
|
824 { |
|
825 throw Error( "React.cloneElement(...): The argument must be a React element, but you passed " + element + "." ); |
|
826 } |
|
827 } |
|
828 |
|
829 var propName; // Original props are copied |
|
830 |
|
831 var props = assign({}, element.props); // Reserved names are extracted |
|
832 |
|
833 |
|
834 var key = element.key; |
|
835 var ref = element.ref; // Self is preserved since the owner is preserved. |
|
836 |
|
837 var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a |
|
838 // transpiler, and the original source is probably a better indicator of the |
|
839 // true owner. |
|
840 |
|
841 var source = element._source; // Owner will be preserved, unless ref is overridden |
|
842 |
|
843 var owner = element._owner; |
|
844 |
|
845 if (config != null) { |
|
846 if (hasValidRef(config)) { |
|
847 // Silently steal the ref from the parent. |
|
848 ref = config.ref; |
|
849 owner = ReactCurrentOwner.current; |
|
850 } |
|
851 |
|
852 if (hasValidKey(config)) { |
|
853 key = '' + config.key; |
|
854 } // Remaining properties override existing props |
|
855 |
|
856 |
|
857 var defaultProps; |
|
858 |
|
859 if (element.type && element.type.defaultProps) { |
|
860 defaultProps = element.type.defaultProps; |
|
861 } |
|
862 |
|
863 for (propName in config) { |
|
864 if (hasOwnProperty$1.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) { |
|
865 if (config[propName] === undefined && defaultProps !== undefined) { |
|
866 // Resolve default props |
|
867 props[propName] = defaultProps[propName]; |
|
868 } else { |
|
869 props[propName] = config[propName]; |
|
870 } |
|
871 } |
|
872 } |
|
873 } // Children can be more than one argument, and those are transferred onto |
|
874 // the newly allocated props object. |
|
875 |
|
876 |
|
877 var childrenLength = arguments.length - 2; |
|
878 |
|
879 if (childrenLength === 1) { |
|
880 props.children = children; |
|
881 } else if (childrenLength > 1) { |
|
882 var childArray = Array(childrenLength); |
|
883 |
|
884 for (var i = 0; i < childrenLength; i++) { |
|
885 childArray[i] = arguments[i + 2]; |
|
886 } |
|
887 |
|
888 props.children = childArray; |
|
889 } |
|
890 |
|
891 return ReactElement(element.type, key, ref, self, source, owner, props); |
|
892 } |
|
893 /** |
|
894 * Verifies the object is a ReactElement. |
|
895 * See https://reactjs.org/docs/react-api.html#isvalidelement |
|
896 * @param {?object} object |
|
897 * @return {boolean} True if `object` is a ReactElement. |
|
898 * @final |
|
899 */ |
|
900 |
|
901 function isValidElement(object) { |
|
902 return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE; |
|
903 } |
|
904 |
|
905 var SEPARATOR = '.'; |
|
906 var SUBSEPARATOR = ':'; |
|
907 /** |
|
908 * Escape and wrap key so it is safe to use as a reactid |
|
909 * |
|
910 * @param {string} key to be escaped. |
|
911 * @return {string} the escaped key. |
|
912 */ |
|
913 |
|
914 function escape(key) { |
|
915 var escapeRegex = /[=:]/g; |
|
916 var escaperLookup = { |
|
917 '=': '=0', |
|
918 ':': '=2' |
|
919 }; |
|
920 var escapedString = key.replace(escapeRegex, function (match) { |
|
921 return escaperLookup[match]; |
|
922 }); |
|
923 return '$' + escapedString; |
|
924 } |
|
925 /** |
|
926 * TODO: Test that a single child and an array with one item have the same key |
|
927 * pattern. |
|
928 */ |
|
929 |
|
930 |
|
931 var didWarnAboutMaps = false; |
|
932 var userProvidedKeyEscapeRegex = /\/+/g; |
|
933 |
|
934 function escapeUserProvidedKey(text) { |
|
935 return text.replace(userProvidedKeyEscapeRegex, '$&/'); |
|
936 } |
|
937 /** |
|
938 * Generate a key string that identifies a element within a set. |
|
939 * |
|
940 * @param {*} element A element that could contain a manual key. |
|
941 * @param {number} index Index that is used if a manual key is not provided. |
|
942 * @return {string} |
|
943 */ |
|
944 |
|
945 |
|
946 function getElementKey(element, index) { |
|
947 // Do some typechecking here since we call this blindly. We want to ensure |
|
948 // that we don't block potential future ES APIs. |
|
949 if (typeof element === 'object' && element !== null && element.key != null) { |
|
950 // Explicit key |
|
951 return escape('' + element.key); |
|
952 } // Implicit key determined by the index in the set |
|
953 |
|
954 |
|
955 return index.toString(36); |
|
956 } |
|
957 |
|
958 function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) { |
|
959 var type = typeof children; |
|
960 |
|
961 if (type === 'undefined' || type === 'boolean') { |
|
962 // All of the above are perceived as null. |
|
963 children = null; |
|
964 } |
|
965 |
|
966 var invokeCallback = false; |
|
967 |
|
968 if (children === null) { |
|
969 invokeCallback = true; |
|
970 } else { |
|
971 switch (type) { |
|
972 case 'string': |
|
973 case 'number': |
|
974 invokeCallback = true; |
|
975 break; |
|
976 |
|
977 case 'object': |
|
978 switch (children.$$typeof) { |
|
979 case REACT_ELEMENT_TYPE: |
|
980 case REACT_PORTAL_TYPE: |
|
981 invokeCallback = true; |
|
982 } |
|
983 |
|
984 } |
|
985 } |
|
986 |
|
987 if (invokeCallback) { |
|
988 var _child = children; |
|
989 var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array |
|
990 // so that it's consistent if the number of children grows: |
|
991 |
|
992 var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar; |
|
993 |
|
994 if (Array.isArray(mappedChild)) { |
|
995 var escapedChildKey = ''; |
|
996 |
|
997 if (childKey != null) { |
|
998 escapedChildKey = escapeUserProvidedKey(childKey) + '/'; |
|
999 } |
|
1000 |
|
1001 mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) { |
|
1002 return c; |
|
1003 }); |
|
1004 } else if (mappedChild != null) { |
|
1005 if (isValidElement(mappedChild)) { |
|
1006 mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as |
|
1007 // traverseAllChildren used to do for objects as children |
|
1008 escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key |
|
1009 mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number |
|
1010 escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey); |
|
1011 } |
|
1012 |
|
1013 array.push(mappedChild); |
|
1014 } |
|
1015 |
|
1016 return 1; |
|
1017 } |
|
1018 |
|
1019 var child; |
|
1020 var nextName; |
|
1021 var subtreeCount = 0; // Count of children found in the current subtree. |
|
1022 |
|
1023 var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR; |
|
1024 |
|
1025 if (Array.isArray(children)) { |
|
1026 for (var i = 0; i < children.length; i++) { |
|
1027 child = children[i]; |
|
1028 nextName = nextNamePrefix + getElementKey(child, i); |
|
1029 subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); |
|
1030 } |
|
1031 } else { |
|
1032 var iteratorFn = getIteratorFn(children); |
|
1033 |
|
1034 if (typeof iteratorFn === 'function') { |
|
1035 var iterableChildren = children; |
|
1036 |
|
1037 { |
|
1038 // Warn about using Maps as children |
|
1039 if (iteratorFn === iterableChildren.entries) { |
|
1040 if (!didWarnAboutMaps) { |
|
1041 warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.'); |
|
1042 } |
|
1043 |
|
1044 didWarnAboutMaps = true; |
|
1045 } |
|
1046 } |
|
1047 |
|
1048 var iterator = iteratorFn.call(iterableChildren); |
|
1049 var step; |
|
1050 var ii = 0; |
|
1051 |
|
1052 while (!(step = iterator.next()).done) { |
|
1053 child = step.value; |
|
1054 nextName = nextNamePrefix + getElementKey(child, ii++); |
|
1055 subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback); |
|
1056 } |
|
1057 } else if (type === 'object') { |
|
1058 var childrenString = '' + children; |
|
1059 |
|
1060 { |
|
1061 { |
|
1062 throw Error( "Objects are not valid as a React child (found: " + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + "). If you meant to render a collection of children, use an array instead." ); |
|
1063 } |
|
1064 } |
|
1065 } |
|
1066 } |
|
1067 |
|
1068 return subtreeCount; |
|
1069 } |
|
1070 |
|
1071 /** |
|
1072 * Maps children that are typically specified as `props.children`. |
|
1073 * |
|
1074 * See https://reactjs.org/docs/react-api.html#reactchildrenmap |
|
1075 * |
|
1076 * The provided mapFunction(child, index) will be called for each |
|
1077 * leaf child. |
|
1078 * |
|
1079 * @param {?*} children Children tree container. |
|
1080 * @param {function(*, int)} func The map function. |
|
1081 * @param {*} context Context for mapFunction. |
|
1082 * @return {object} Object containing the ordered map of results. |
|
1083 */ |
|
1084 function mapChildren(children, func, context) { |
|
1085 if (children == null) { |
|
1086 return children; |
|
1087 } |
|
1088 |
|
1089 var result = []; |
|
1090 var count = 0; |
|
1091 mapIntoArray(children, result, '', '', function (child) { |
|
1092 return func.call(context, child, count++); |
|
1093 }); |
|
1094 return result; |
|
1095 } |
|
1096 /** |
|
1097 * Count the number of children that are typically specified as |
|
1098 * `props.children`. |
|
1099 * |
|
1100 * See https://reactjs.org/docs/react-api.html#reactchildrencount |
|
1101 * |
|
1102 * @param {?*} children Children tree container. |
|
1103 * @return {number} The number of children. |
|
1104 */ |
|
1105 |
|
1106 |
|
1107 function countChildren(children) { |
|
1108 var n = 0; |
|
1109 mapChildren(children, function () { |
|
1110 n++; // Don't return anything |
|
1111 }); |
|
1112 return n; |
|
1113 } |
|
1114 |
|
1115 /** |
|
1116 * Iterates through children that are typically specified as `props.children`. |
|
1117 * |
|
1118 * See https://reactjs.org/docs/react-api.html#reactchildrenforeach |
|
1119 * |
|
1120 * The provided forEachFunc(child, index) will be called for each |
|
1121 * leaf child. |
|
1122 * |
|
1123 * @param {?*} children Children tree container. |
|
1124 * @param {function(*, int)} forEachFunc |
|
1125 * @param {*} forEachContext Context for forEachContext. |
|
1126 */ |
|
1127 function forEachChildren(children, forEachFunc, forEachContext) { |
|
1128 mapChildren(children, function () { |
|
1129 forEachFunc.apply(this, arguments); // Don't return anything. |
|
1130 }, forEachContext); |
|
1131 } |
|
1132 /** |
|
1133 * Flatten a children object (typically specified as `props.children`) and |
|
1134 * return an array with appropriately re-keyed children. |
|
1135 * |
|
1136 * See https://reactjs.org/docs/react-api.html#reactchildrentoarray |
|
1137 */ |
|
1138 |
|
1139 |
|
1140 function toArray(children) { |
|
1141 return mapChildren(children, function (child) { |
|
1142 return child; |
|
1143 }) || []; |
|
1144 } |
|
1145 /** |
|
1146 * Returns the first child in a collection of children and verifies that there |
|
1147 * is only one child in the collection. |
|
1148 * |
|
1149 * See https://reactjs.org/docs/react-api.html#reactchildrenonly |
|
1150 * |
|
1151 * The current implementation of this function assumes that a single child gets |
|
1152 * passed without a wrapper, but the purpose of this helper function is to |
|
1153 * abstract away the particular structure of children. |
|
1154 * |
|
1155 * @param {?object} children Child collection structure. |
|
1156 * @return {ReactElement} The first and only `ReactElement` contained in the |
|
1157 * structure. |
|
1158 */ |
|
1159 |
|
1160 |
|
1161 function onlyChild(children) { |
|
1162 if (!isValidElement(children)) { |
|
1163 { |
|
1164 throw Error( "React.Children.only expected to receive a single React element child." ); |
|
1165 } |
|
1166 } |
|
1167 |
|
1168 return children; |
|
1169 } |
|
1170 |
|
1171 function createContext(defaultValue, calculateChangedBits) { |
|
1172 if (calculateChangedBits === undefined) { |
|
1173 calculateChangedBits = null; |
|
1174 } else { |
|
1175 { |
|
1176 if (calculateChangedBits !== null && typeof calculateChangedBits !== 'function') { |
|
1177 error('createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits); |
|
1178 } |
|
1179 } |
|
1180 } |
|
1181 |
|
1182 var context = { |
|
1183 $$typeof: REACT_CONTEXT_TYPE, |
|
1184 _calculateChangedBits: calculateChangedBits, |
|
1185 // As a workaround to support multiple concurrent renderers, we categorize |
|
1186 // some renderers as primary and others as secondary. We only expect |
|
1187 // there to be two concurrent renderers at most: React Native (primary) and |
|
1188 // Fabric (secondary); React DOM (primary) and React ART (secondary). |
|
1189 // Secondary renderers store their context values on separate fields. |
|
1190 _currentValue: defaultValue, |
|
1191 _currentValue2: defaultValue, |
|
1192 // Used to track how many concurrent renderers this context currently |
|
1193 // supports within in a single renderer. Such as parallel server rendering. |
|
1194 _threadCount: 0, |
|
1195 // These are circular |
|
1196 Provider: null, |
|
1197 Consumer: null |
|
1198 }; |
|
1199 context.Provider = { |
|
1200 $$typeof: REACT_PROVIDER_TYPE, |
|
1201 _context: context |
|
1202 }; |
|
1203 var hasWarnedAboutUsingNestedContextConsumers = false; |
|
1204 var hasWarnedAboutUsingConsumerProvider = false; |
|
1205 var hasWarnedAboutDisplayNameOnConsumer = false; |
|
1206 |
|
1207 { |
|
1208 // A separate object, but proxies back to the original context object for |
|
1209 // backwards compatibility. It has a different $$typeof, so we can properly |
|
1210 // warn for the incorrect usage of Context as a Consumer. |
|
1211 var Consumer = { |
|
1212 $$typeof: REACT_CONTEXT_TYPE, |
|
1213 _context: context, |
|
1214 _calculateChangedBits: context._calculateChangedBits |
|
1215 }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here |
|
1216 |
|
1217 Object.defineProperties(Consumer, { |
|
1218 Provider: { |
|
1219 get: function () { |
|
1220 if (!hasWarnedAboutUsingConsumerProvider) { |
|
1221 hasWarnedAboutUsingConsumerProvider = true; |
|
1222 |
|
1223 error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?'); |
|
1224 } |
|
1225 |
|
1226 return context.Provider; |
|
1227 }, |
|
1228 set: function (_Provider) { |
|
1229 context.Provider = _Provider; |
|
1230 } |
|
1231 }, |
|
1232 _currentValue: { |
|
1233 get: function () { |
|
1234 return context._currentValue; |
|
1235 }, |
|
1236 set: function (_currentValue) { |
|
1237 context._currentValue = _currentValue; |
|
1238 } |
|
1239 }, |
|
1240 _currentValue2: { |
|
1241 get: function () { |
|
1242 return context._currentValue2; |
|
1243 }, |
|
1244 set: function (_currentValue2) { |
|
1245 context._currentValue2 = _currentValue2; |
|
1246 } |
|
1247 }, |
|
1248 _threadCount: { |
|
1249 get: function () { |
|
1250 return context._threadCount; |
|
1251 }, |
|
1252 set: function (_threadCount) { |
|
1253 context._threadCount = _threadCount; |
|
1254 } |
|
1255 }, |
|
1256 Consumer: { |
|
1257 get: function () { |
|
1258 if (!hasWarnedAboutUsingNestedContextConsumers) { |
|
1259 hasWarnedAboutUsingNestedContextConsumers = true; |
|
1260 |
|
1261 error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?'); |
|
1262 } |
|
1263 |
|
1264 return context.Consumer; |
|
1265 } |
|
1266 }, |
|
1267 displayName: { |
|
1268 get: function () { |
|
1269 return context.displayName; |
|
1270 }, |
|
1271 set: function (displayName) { |
|
1272 if (!hasWarnedAboutDisplayNameOnConsumer) { |
|
1273 warn('Setting `displayName` on Context.Consumer has no effect. ' + "You should set it directly on the context with Context.displayName = '%s'.", displayName); |
|
1274 |
|
1275 hasWarnedAboutDisplayNameOnConsumer = true; |
|
1276 } |
|
1277 } |
|
1278 } |
|
1279 }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty |
|
1280 |
|
1281 context.Consumer = Consumer; |
|
1282 } |
|
1283 |
|
1284 { |
|
1285 context._currentRenderer = null; |
|
1286 context._currentRenderer2 = null; |
|
1287 } |
|
1288 |
|
1289 return context; |
|
1290 } |
|
1291 |
|
1292 var Uninitialized = -1; |
|
1293 var Pending = 0; |
|
1294 var Resolved = 1; |
|
1295 var Rejected = 2; |
|
1296 |
|
1297 function lazyInitializer(payload) { |
|
1298 if (payload._status === Uninitialized) { |
|
1299 var ctor = payload._result; |
|
1300 var thenable = ctor(); // Transition to the next state. |
|
1301 |
|
1302 var pending = payload; |
|
1303 pending._status = Pending; |
|
1304 pending._result = thenable; |
|
1305 thenable.then(function (moduleObject) { |
|
1306 if (payload._status === Pending) { |
|
1307 var defaultExport = moduleObject.default; |
|
1308 |
|
1309 { |
|
1310 if (defaultExport === undefined) { |
|
1311 error('lazy: Expected the result of a dynamic import() call. ' + 'Instead received: %s\n\nYour code should look like: \n ' + // Break up imports to avoid accidentally parsing them as dependencies. |
|
1312 'const MyComponent = lazy(() => imp' + "ort('./MyComponent'))", moduleObject); |
|
1313 } |
|
1314 } // Transition to the next state. |
|
1315 |
|
1316 |
|
1317 var resolved = payload; |
|
1318 resolved._status = Resolved; |
|
1319 resolved._result = defaultExport; |
|
1320 } |
|
1321 }, function (error) { |
|
1322 if (payload._status === Pending) { |
|
1323 // Transition to the next state. |
|
1324 var rejected = payload; |
|
1325 rejected._status = Rejected; |
|
1326 rejected._result = error; |
|
1327 } |
|
1328 }); |
|
1329 } |
|
1330 |
|
1331 if (payload._status === Resolved) { |
|
1332 return payload._result; |
|
1333 } else { |
|
1334 throw payload._result; |
|
1335 } |
|
1336 } |
|
1337 |
|
1338 function lazy(ctor) { |
|
1339 var payload = { |
|
1340 // We use these fields to store the result. |
|
1341 _status: -1, |
|
1342 _result: ctor |
|
1343 }; |
|
1344 var lazyType = { |
|
1345 $$typeof: REACT_LAZY_TYPE, |
|
1346 _payload: payload, |
|
1347 _init: lazyInitializer |
|
1348 }; |
|
1349 |
|
1350 { |
|
1351 // In production, this would just set it on the object. |
|
1352 var defaultProps; |
|
1353 var propTypes; // $FlowFixMe |
|
1354 |
|
1355 Object.defineProperties(lazyType, { |
|
1356 defaultProps: { |
|
1357 configurable: true, |
|
1358 get: function () { |
|
1359 return defaultProps; |
|
1360 }, |
|
1361 set: function (newDefaultProps) { |
|
1362 error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); |
|
1363 |
|
1364 defaultProps = newDefaultProps; // Match production behavior more closely: |
|
1365 // $FlowFixMe |
|
1366 |
|
1367 Object.defineProperty(lazyType, 'defaultProps', { |
|
1368 enumerable: true |
|
1369 }); |
|
1370 } |
|
1371 }, |
|
1372 propTypes: { |
|
1373 configurable: true, |
|
1374 get: function () { |
|
1375 return propTypes; |
|
1376 }, |
|
1377 set: function (newPropTypes) { |
|
1378 error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.'); |
|
1379 |
|
1380 propTypes = newPropTypes; // Match production behavior more closely: |
|
1381 // $FlowFixMe |
|
1382 |
|
1383 Object.defineProperty(lazyType, 'propTypes', { |
|
1384 enumerable: true |
|
1385 }); |
|
1386 } |
|
1387 } |
|
1388 }); |
|
1389 } |
|
1390 |
|
1391 return lazyType; |
|
1392 } |
|
1393 |
|
1394 function forwardRef(render) { |
|
1395 { |
|
1396 if (render != null && render.$$typeof === REACT_MEMO_TYPE) { |
|
1397 error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).'); |
|
1398 } else if (typeof render !== 'function') { |
|
1399 error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render); |
|
1400 } else { |
|
1401 if (render.length !== 0 && render.length !== 2) { |
|
1402 error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.'); |
|
1403 } |
|
1404 } |
|
1405 |
|
1406 if (render != null) { |
|
1407 if (render.defaultProps != null || render.propTypes != null) { |
|
1408 error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?'); |
|
1409 } |
|
1410 } |
|
1411 } |
|
1412 |
|
1413 var elementType = { |
|
1414 $$typeof: REACT_FORWARD_REF_TYPE, |
|
1415 render: render |
|
1416 }; |
|
1417 |
|
1418 { |
|
1419 var ownName; |
|
1420 Object.defineProperty(elementType, 'displayName', { |
|
1421 enumerable: false, |
|
1422 configurable: true, |
|
1423 get: function () { |
|
1424 return ownName; |
|
1425 }, |
|
1426 set: function (name) { |
|
1427 ownName = name; |
|
1428 |
|
1429 if (render.displayName == null) { |
|
1430 render.displayName = name; |
|
1431 } |
|
1432 } |
|
1433 }); |
|
1434 } |
|
1435 |
|
1436 return elementType; |
|
1437 } |
|
1438 |
|
1439 // Filter certain DOM attributes (e.g. src, href) if their values are empty strings. |
|
1440 |
|
1441 var enableScopeAPI = false; // Experimental Create Event Handle API. |
|
1442 |
|
1443 function isValidElementType(type) { |
|
1444 if (typeof type === 'string' || typeof type === 'function') { |
|
1445 return true; |
|
1446 } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill). |
|
1447 |
|
1448 |
|
1449 if (type === exports.Fragment || type === exports.Profiler || type === REACT_DEBUG_TRACING_MODE_TYPE || type === exports.StrictMode || type === exports.Suspense || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI ) { |
|
1450 return true; |
|
1451 } |
|
1452 |
|
1453 if (typeof type === 'object' && type !== null) { |
|
1454 if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) { |
|
1455 return true; |
|
1456 } |
|
1457 } |
|
1458 |
|
1459 return false; |
|
1460 } |
|
1461 |
|
1462 function memo(type, compare) { |
|
1463 { |
|
1464 if (!isValidElementType(type)) { |
|
1465 error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type); |
|
1466 } |
|
1467 } |
|
1468 |
|
1469 var elementType = { |
|
1470 $$typeof: REACT_MEMO_TYPE, |
|
1471 type: type, |
|
1472 compare: compare === undefined ? null : compare |
|
1473 }; |
|
1474 |
|
1475 { |
|
1476 var ownName; |
|
1477 Object.defineProperty(elementType, 'displayName', { |
|
1478 enumerable: false, |
|
1479 configurable: true, |
|
1480 get: function () { |
|
1481 return ownName; |
|
1482 }, |
|
1483 set: function (name) { |
|
1484 ownName = name; |
|
1485 |
|
1486 if (type.displayName == null) { |
|
1487 type.displayName = name; |
|
1488 } |
|
1489 } |
|
1490 }); |
|
1491 } |
|
1492 |
|
1493 return elementType; |
|
1494 } |
|
1495 |
|
1496 function resolveDispatcher() { |
|
1497 var dispatcher = ReactCurrentDispatcher.current; |
|
1498 |
|
1499 if (!(dispatcher !== null)) { |
|
1500 { |
|
1501 throw Error( "Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem." ); |
|
1502 } |
|
1503 } |
|
1504 |
|
1505 return dispatcher; |
|
1506 } |
|
1507 |
|
1508 function useContext(Context, unstable_observedBits) { |
|
1509 var dispatcher = resolveDispatcher(); |
|
1510 |
|
1511 { |
|
1512 if (unstable_observedBits !== undefined) { |
|
1513 error('useContext() second argument is reserved for future ' + 'use in React. Passing it is not supported. ' + 'You passed: %s.%s', unstable_observedBits, typeof unstable_observedBits === 'number' && Array.isArray(arguments[2]) ? '\n\nDid you call array.map(useContext)? ' + 'Calling Hooks inside a loop is not supported. ' + 'Learn more at https://reactjs.org/link/rules-of-hooks' : ''); |
|
1514 } // TODO: add a more generic warning for invalid values. |
|
1515 |
|
1516 |
|
1517 if (Context._context !== undefined) { |
|
1518 var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs |
|
1519 // and nobody should be using this in existing code. |
|
1520 |
|
1521 if (realContext.Consumer === Context) { |
|
1522 error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?'); |
|
1523 } else if (realContext.Provider === Context) { |
|
1524 error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?'); |
|
1525 } |
|
1526 } |
|
1527 } |
|
1528 |
|
1529 return dispatcher.useContext(Context, unstable_observedBits); |
|
1530 } |
|
1531 function useState(initialState) { |
|
1532 var dispatcher = resolveDispatcher(); |
|
1533 return dispatcher.useState(initialState); |
|
1534 } |
|
1535 function useReducer(reducer, initialArg, init) { |
|
1536 var dispatcher = resolveDispatcher(); |
|
1537 return dispatcher.useReducer(reducer, initialArg, init); |
|
1538 } |
|
1539 function useRef(initialValue) { |
|
1540 var dispatcher = resolveDispatcher(); |
|
1541 return dispatcher.useRef(initialValue); |
|
1542 } |
|
1543 function useEffect(create, deps) { |
|
1544 var dispatcher = resolveDispatcher(); |
|
1545 return dispatcher.useEffect(create, deps); |
|
1546 } |
|
1547 function useLayoutEffect(create, deps) { |
|
1548 var dispatcher = resolveDispatcher(); |
|
1549 return dispatcher.useLayoutEffect(create, deps); |
|
1550 } |
|
1551 function useCallback(callback, deps) { |
|
1552 var dispatcher = resolveDispatcher(); |
|
1553 return dispatcher.useCallback(callback, deps); |
|
1554 } |
|
1555 function useMemo(create, deps) { |
|
1556 var dispatcher = resolveDispatcher(); |
|
1557 return dispatcher.useMemo(create, deps); |
|
1558 } |
|
1559 function useImperativeHandle(ref, create, deps) { |
|
1560 var dispatcher = resolveDispatcher(); |
|
1561 return dispatcher.useImperativeHandle(ref, create, deps); |
|
1562 } |
|
1563 function useDebugValue(value, formatterFn) { |
|
1564 { |
|
1565 var dispatcher = resolveDispatcher(); |
|
1566 return dispatcher.useDebugValue(value, formatterFn); |
|
1567 } |
|
1568 } |
|
1569 |
|
1570 // Helpers to patch console.logs to avoid logging during side-effect free |
|
1571 // replaying on render function. This currently only patches the object |
|
1572 // lazily which won't cover if the log function was extracted eagerly. |
|
1573 // We could also eagerly patch the method. |
|
1574 var disabledDepth = 0; |
|
1575 var prevLog; |
|
1576 var prevInfo; |
|
1577 var prevWarn; |
|
1578 var prevError; |
|
1579 var prevGroup; |
|
1580 var prevGroupCollapsed; |
|
1581 var prevGroupEnd; |
|
1582 |
|
1583 function disabledLog() {} |
|
1584 |
|
1585 disabledLog.__reactDisabledLog = true; |
|
1586 function disableLogs() { |
|
1587 { |
|
1588 if (disabledDepth === 0) { |
|
1589 /* eslint-disable react-internal/no-production-logging */ |
|
1590 prevLog = console.log; |
|
1591 prevInfo = console.info; |
|
1592 prevWarn = console.warn; |
|
1593 prevError = console.error; |
|
1594 prevGroup = console.group; |
|
1595 prevGroupCollapsed = console.groupCollapsed; |
|
1596 prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099 |
|
1597 |
|
1598 var props = { |
|
1599 configurable: true, |
|
1600 enumerable: true, |
|
1601 value: disabledLog, |
|
1602 writable: true |
|
1603 }; // $FlowFixMe Flow thinks console is immutable. |
|
1604 |
|
1605 Object.defineProperties(console, { |
|
1606 info: props, |
|
1607 log: props, |
|
1608 warn: props, |
|
1609 error: props, |
|
1610 group: props, |
|
1611 groupCollapsed: props, |
|
1612 groupEnd: props |
|
1613 }); |
|
1614 /* eslint-enable react-internal/no-production-logging */ |
|
1615 } |
|
1616 |
|
1617 disabledDepth++; |
|
1618 } |
|
1619 } |
|
1620 function reenableLogs() { |
|
1621 { |
|
1622 disabledDepth--; |
|
1623 |
|
1624 if (disabledDepth === 0) { |
|
1625 /* eslint-disable react-internal/no-production-logging */ |
|
1626 var props = { |
|
1627 configurable: true, |
|
1628 enumerable: true, |
|
1629 writable: true |
|
1630 }; // $FlowFixMe Flow thinks console is immutable. |
|
1631 |
|
1632 Object.defineProperties(console, { |
|
1633 log: assign({}, props, { |
|
1634 value: prevLog |
|
1635 }), |
|
1636 info: assign({}, props, { |
|
1637 value: prevInfo |
|
1638 }), |
|
1639 warn: assign({}, props, { |
|
1640 value: prevWarn |
|
1641 }), |
|
1642 error: assign({}, props, { |
|
1643 value: prevError |
|
1644 }), |
|
1645 group: assign({}, props, { |
|
1646 value: prevGroup |
|
1647 }), |
|
1648 groupCollapsed: assign({}, props, { |
|
1649 value: prevGroupCollapsed |
|
1650 }), |
|
1651 groupEnd: assign({}, props, { |
|
1652 value: prevGroupEnd |
|
1653 }) |
|
1654 }); |
|
1655 /* eslint-enable react-internal/no-production-logging */ |
|
1656 } |
|
1657 |
|
1658 if (disabledDepth < 0) { |
|
1659 error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.'); |
|
1660 } |
|
1661 } |
|
1662 } |
|
1663 |
|
1664 var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher; |
|
1665 var prefix; |
|
1666 function describeBuiltInComponentFrame(name, source, ownerFn) { |
|
1667 { |
|
1668 if (prefix === undefined) { |
|
1669 // Extract the VM specific prefix used by each line. |
|
1670 try { |
|
1671 throw Error(); |
|
1672 } catch (x) { |
|
1673 var match = x.stack.trim().match(/\n( *(at )?)/); |
|
1674 prefix = match && match[1] || ''; |
|
1675 } |
|
1676 } // We use the prefix to ensure our stacks line up with native stack frames. |
|
1677 |
|
1678 |
|
1679 return '\n' + prefix + name; |
|
1680 } |
|
1681 } |
|
1682 var reentry = false; |
|
1683 var componentFrameCache; |
|
1684 |
|
1685 { |
|
1686 var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map; |
|
1687 componentFrameCache = new PossiblyWeakMap(); |
|
1688 } |
|
1689 |
|
1690 function describeNativeComponentFrame(fn, construct) { |
|
1691 // If something asked for a stack inside a fake render, it should get ignored. |
|
1692 if (!fn || reentry) { |
|
1693 return ''; |
|
1694 } |
|
1695 |
|
1696 { |
|
1697 var frame = componentFrameCache.get(fn); |
|
1698 |
|
1699 if (frame !== undefined) { |
|
1700 return frame; |
|
1701 } |
|
1702 } |
|
1703 |
|
1704 var control; |
|
1705 reentry = true; |
|
1706 var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined. |
|
1707 |
|
1708 Error.prepareStackTrace = undefined; |
|
1709 var previousDispatcher; |
|
1710 |
|
1711 { |
|
1712 previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function |
|
1713 // for warnings. |
|
1714 |
|
1715 ReactCurrentDispatcher$1.current = null; |
|
1716 disableLogs(); |
|
1717 } |
|
1718 |
|
1719 try { |
|
1720 // This should throw. |
|
1721 if (construct) { |
|
1722 // Something should be setting the props in the constructor. |
|
1723 var Fake = function () { |
|
1724 throw Error(); |
|
1725 }; // $FlowFixMe |
|
1726 |
|
1727 |
|
1728 Object.defineProperty(Fake.prototype, 'props', { |
|
1729 set: function () { |
|
1730 // We use a throwing setter instead of frozen or non-writable props |
|
1731 // because that won't throw in a non-strict mode function. |
|
1732 throw Error(); |
|
1733 } |
|
1734 }); |
|
1735 |
|
1736 if (typeof Reflect === 'object' && Reflect.construct) { |
|
1737 // We construct a different control for this case to include any extra |
|
1738 // frames added by the construct call. |
|
1739 try { |
|
1740 Reflect.construct(Fake, []); |
|
1741 } catch (x) { |
|
1742 control = x; |
|
1743 } |
|
1744 |
|
1745 Reflect.construct(fn, [], Fake); |
|
1746 } else { |
|
1747 try { |
|
1748 Fake.call(); |
|
1749 } catch (x) { |
|
1750 control = x; |
|
1751 } |
|
1752 |
|
1753 fn.call(Fake.prototype); |
|
1754 } |
|
1755 } else { |
|
1756 try { |
|
1757 throw Error(); |
|
1758 } catch (x) { |
|
1759 control = x; |
|
1760 } |
|
1761 |
|
1762 fn(); |
|
1763 } |
|
1764 } catch (sample) { |
|
1765 // This is inlined manually because closure doesn't do it for us. |
|
1766 if (sample && control && typeof sample.stack === 'string') { |
|
1767 // This extracts the first frame from the sample that isn't also in the control. |
|
1768 // Skipping one frame that we assume is the frame that calls the two. |
|
1769 var sampleLines = sample.stack.split('\n'); |
|
1770 var controlLines = control.stack.split('\n'); |
|
1771 var s = sampleLines.length - 1; |
|
1772 var c = controlLines.length - 1; |
|
1773 |
|
1774 while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) { |
|
1775 // We expect at least one stack frame to be shared. |
|
1776 // Typically this will be the root most one. However, stack frames may be |
|
1777 // cut off due to maximum stack limits. In this case, one maybe cut off |
|
1778 // earlier than the other. We assume that the sample is longer or the same |
|
1779 // and there for cut off earlier. So we should find the root most frame in |
|
1780 // the sample somewhere in the control. |
|
1781 c--; |
|
1782 } |
|
1783 |
|
1784 for (; s >= 1 && c >= 0; s--, c--) { |
|
1785 // Next we find the first one that isn't the same which should be the |
|
1786 // frame that called our sample function and the control. |
|
1787 if (sampleLines[s] !== controlLines[c]) { |
|
1788 // In V8, the first line is describing the message but other VMs don't. |
|
1789 // If we're about to return the first line, and the control is also on the same |
|
1790 // line, that's a pretty good indicator that our sample threw at same line as |
|
1791 // the control. I.e. before we entered the sample frame. So we ignore this result. |
|
1792 // This can happen if you passed a class to function component, or non-function. |
|
1793 if (s !== 1 || c !== 1) { |
|
1794 do { |
|
1795 s--; |
|
1796 c--; // We may still have similar intermediate frames from the construct call. |
|
1797 // The next one that isn't the same should be our match though. |
|
1798 |
|
1799 if (c < 0 || sampleLines[s] !== controlLines[c]) { |
|
1800 // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier. |
|
1801 var _frame = '\n' + sampleLines[s].replace(' at new ', ' at '); |
|
1802 |
|
1803 { |
|
1804 if (typeof fn === 'function') { |
|
1805 componentFrameCache.set(fn, _frame); |
|
1806 } |
|
1807 } // Return the line we found. |
|
1808 |
|
1809 |
|
1810 return _frame; |
|
1811 } |
|
1812 } while (s >= 1 && c >= 0); |
|
1813 } |
|
1814 |
|
1815 break; |
|
1816 } |
|
1817 } |
|
1818 } |
|
1819 } finally { |
|
1820 reentry = false; |
|
1821 |
|
1822 { |
|
1823 ReactCurrentDispatcher$1.current = previousDispatcher; |
|
1824 reenableLogs(); |
|
1825 } |
|
1826 |
|
1827 Error.prepareStackTrace = previousPrepareStackTrace; |
|
1828 } // Fallback to just using the name if we couldn't make it throw. |
|
1829 |
|
1830 |
|
1831 var name = fn ? fn.displayName || fn.name : ''; |
|
1832 var syntheticFrame = name ? describeBuiltInComponentFrame(name) : ''; |
|
1833 |
|
1834 { |
|
1835 if (typeof fn === 'function') { |
|
1836 componentFrameCache.set(fn, syntheticFrame); |
|
1837 } |
|
1838 } |
|
1839 |
|
1840 return syntheticFrame; |
|
1841 } |
|
1842 function describeFunctionComponentFrame(fn, source, ownerFn) { |
|
1843 { |
|
1844 return describeNativeComponentFrame(fn, false); |
|
1845 } |
|
1846 } |
|
1847 |
|
1848 function shouldConstruct(Component) { |
|
1849 var prototype = Component.prototype; |
|
1850 return !!(prototype && prototype.isReactComponent); |
|
1851 } |
|
1852 |
|
1853 function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) { |
|
1854 |
|
1855 if (type == null) { |
|
1856 return ''; |
|
1857 } |
|
1858 |
|
1859 if (typeof type === 'function') { |
|
1860 { |
|
1861 return describeNativeComponentFrame(type, shouldConstruct(type)); |
|
1862 } |
|
1863 } |
|
1864 |
|
1865 if (typeof type === 'string') { |
|
1866 return describeBuiltInComponentFrame(type); |
|
1867 } |
|
1868 |
|
1869 switch (type) { |
|
1870 case exports.Suspense: |
|
1871 return describeBuiltInComponentFrame('Suspense'); |
|
1872 |
|
1873 case REACT_SUSPENSE_LIST_TYPE: |
|
1874 return describeBuiltInComponentFrame('SuspenseList'); |
|
1875 } |
|
1876 |
|
1877 if (typeof type === 'object') { |
|
1878 switch (type.$$typeof) { |
|
1879 case REACT_FORWARD_REF_TYPE: |
|
1880 return describeFunctionComponentFrame(type.render); |
|
1881 |
|
1882 case REACT_MEMO_TYPE: |
|
1883 // Memo may contain any component type so we recursively resolve it. |
|
1884 return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn); |
|
1885 |
|
1886 case REACT_BLOCK_TYPE: |
|
1887 return describeFunctionComponentFrame(type._render); |
|
1888 |
|
1889 case REACT_LAZY_TYPE: |
|
1890 { |
|
1891 var lazyComponent = type; |
|
1892 var payload = lazyComponent._payload; |
|
1893 var init = lazyComponent._init; |
|
1894 |
|
1895 try { |
|
1896 // Lazy may contain any component type so we recursively resolve it. |
|
1897 return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn); |
|
1898 } catch (x) {} |
|
1899 } |
|
1900 } |
|
1901 } |
|
1902 |
|
1903 return ''; |
|
1904 } |
|
1905 |
|
1906 var loggedTypeFailures = {}; |
|
1907 var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame; |
|
1908 |
|
1909 function setCurrentlyValidatingElement(element) { |
|
1910 { |
|
1911 if (element) { |
|
1912 var owner = element._owner; |
|
1913 var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); |
|
1914 ReactDebugCurrentFrame$1.setExtraStackFrame(stack); |
|
1915 } else { |
|
1916 ReactDebugCurrentFrame$1.setExtraStackFrame(null); |
|
1917 } |
|
1918 } |
|
1919 } |
|
1920 |
|
1921 function checkPropTypes(typeSpecs, values, location, componentName, element) { |
|
1922 { |
|
1923 // $FlowFixMe This is okay but Flow doesn't know it. |
|
1924 var has = Function.call.bind(Object.prototype.hasOwnProperty); |
|
1925 |
|
1926 for (var typeSpecName in typeSpecs) { |
|
1927 if (has(typeSpecs, typeSpecName)) { |
|
1928 var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to |
|
1929 // fail the render phase where it didn't fail before. So we log it. |
|
1930 // After these have been cleaned up, we'll let them throw. |
|
1931 |
|
1932 try { |
|
1933 // This is intentionally an invariant that gets caught. It's the same |
|
1934 // behavior as without this statement except with a better message. |
|
1935 if (typeof typeSpecs[typeSpecName] !== 'function') { |
|
1936 var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'); |
|
1937 err.name = 'Invariant Violation'; |
|
1938 throw err; |
|
1939 } |
|
1940 |
|
1941 error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'); |
|
1942 } catch (ex) { |
|
1943 error$1 = ex; |
|
1944 } |
|
1945 |
|
1946 if (error$1 && !(error$1 instanceof Error)) { |
|
1947 setCurrentlyValidatingElement(element); |
|
1948 |
|
1949 error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1); |
|
1950 |
|
1951 setCurrentlyValidatingElement(null); |
|
1952 } |
|
1953 |
|
1954 if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) { |
|
1955 // Only monitor this failure once because there tends to be a lot of the |
|
1956 // same error. |
|
1957 loggedTypeFailures[error$1.message] = true; |
|
1958 setCurrentlyValidatingElement(element); |
|
1959 |
|
1960 error('Failed %s type: %s', location, error$1.message); |
|
1961 |
|
1962 setCurrentlyValidatingElement(null); |
|
1963 } |
|
1964 } |
|
1965 } |
|
1966 } |
|
1967 } |
|
1968 |
|
1969 function setCurrentlyValidatingElement$1(element) { |
|
1970 { |
|
1971 if (element) { |
|
1972 var owner = element._owner; |
|
1973 var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null); |
|
1974 setExtraStackFrame(stack); |
|
1975 } else { |
|
1976 setExtraStackFrame(null); |
|
1977 } |
|
1978 } |
|
1979 } |
|
1980 |
|
1981 var propTypesMisspellWarningShown; |
|
1982 |
|
1983 { |
|
1984 propTypesMisspellWarningShown = false; |
|
1985 } |
|
1986 |
|
1987 function getDeclarationErrorAddendum() { |
|
1988 if (ReactCurrentOwner.current) { |
|
1989 var name = getComponentName(ReactCurrentOwner.current.type); |
|
1990 |
|
1991 if (name) { |
|
1992 return '\n\nCheck the render method of `' + name + '`.'; |
|
1993 } |
|
1994 } |
|
1995 |
|
1996 return ''; |
|
1997 } |
|
1998 |
|
1999 function getSourceInfoErrorAddendum(source) { |
|
2000 if (source !== undefined) { |
|
2001 var fileName = source.fileName.replace(/^.*[\\\/]/, ''); |
|
2002 var lineNumber = source.lineNumber; |
|
2003 return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.'; |
|
2004 } |
|
2005 |
|
2006 return ''; |
|
2007 } |
|
2008 |
|
2009 function getSourceInfoErrorAddendumForProps(elementProps) { |
|
2010 if (elementProps !== null && elementProps !== undefined) { |
|
2011 return getSourceInfoErrorAddendum(elementProps.__source); |
|
2012 } |
|
2013 |
|
2014 return ''; |
|
2015 } |
|
2016 /** |
|
2017 * Warn if there's no key explicitly set on dynamic arrays of children or |
|
2018 * object keys are not valid. This allows us to keep track of children between |
|
2019 * updates. |
|
2020 */ |
|
2021 |
|
2022 |
|
2023 var ownerHasKeyUseWarning = {}; |
|
2024 |
|
2025 function getCurrentComponentErrorInfo(parentType) { |
|
2026 var info = getDeclarationErrorAddendum(); |
|
2027 |
|
2028 if (!info) { |
|
2029 var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name; |
|
2030 |
|
2031 if (parentName) { |
|
2032 info = "\n\nCheck the top-level render call using <" + parentName + ">."; |
|
2033 } |
|
2034 } |
|
2035 |
|
2036 return info; |
|
2037 } |
|
2038 /** |
|
2039 * Warn if the element doesn't have an explicit key assigned to it. |
|
2040 * This element is in an array. The array could grow and shrink or be |
|
2041 * reordered. All children that haven't already been validated are required to |
|
2042 * have a "key" property assigned to it. Error statuses are cached so a warning |
|
2043 * will only be shown once. |
|
2044 * |
|
2045 * @internal |
|
2046 * @param {ReactElement} element Element that requires a key. |
|
2047 * @param {*} parentType element's parent's type. |
|
2048 */ |
|
2049 |
|
2050 |
|
2051 function validateExplicitKey(element, parentType) { |
|
2052 if (!element._store || element._store.validated || element.key != null) { |
|
2053 return; |
|
2054 } |
|
2055 |
|
2056 element._store.validated = true; |
|
2057 var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType); |
|
2058 |
|
2059 if (ownerHasKeyUseWarning[currentComponentErrorInfo]) { |
|
2060 return; |
|
2061 } |
|
2062 |
|
2063 ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a |
|
2064 // property, it may be the creator of the child that's responsible for |
|
2065 // assigning it a key. |
|
2066 |
|
2067 var childOwner = ''; |
|
2068 |
|
2069 if (element && element._owner && element._owner !== ReactCurrentOwner.current) { |
|
2070 // Give the component that originally created this child. |
|
2071 childOwner = " It was passed a child from " + getComponentName(element._owner.type) + "."; |
|
2072 } |
|
2073 |
|
2074 { |
|
2075 setCurrentlyValidatingElement$1(element); |
|
2076 |
|
2077 error('Each child in a list should have a unique "key" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner); |
|
2078 |
|
2079 setCurrentlyValidatingElement$1(null); |
|
2080 } |
|
2081 } |
|
2082 /** |
|
2083 * Ensure that every element either is passed in a static location, in an |
|
2084 * array with an explicit keys property defined, or in an object literal |
|
2085 * with valid key property. |
|
2086 * |
|
2087 * @internal |
|
2088 * @param {ReactNode} node Statically passed child of any type. |
|
2089 * @param {*} parentType node's parent's type. |
|
2090 */ |
|
2091 |
|
2092 |
|
2093 function validateChildKeys(node, parentType) { |
|
2094 if (typeof node !== 'object') { |
|
2095 return; |
|
2096 } |
|
2097 |
|
2098 if (Array.isArray(node)) { |
|
2099 for (var i = 0; i < node.length; i++) { |
|
2100 var child = node[i]; |
|
2101 |
|
2102 if (isValidElement(child)) { |
|
2103 validateExplicitKey(child, parentType); |
|
2104 } |
|
2105 } |
|
2106 } else if (isValidElement(node)) { |
|
2107 // This element was passed in a valid location. |
|
2108 if (node._store) { |
|
2109 node._store.validated = true; |
|
2110 } |
|
2111 } else if (node) { |
|
2112 var iteratorFn = getIteratorFn(node); |
|
2113 |
|
2114 if (typeof iteratorFn === 'function') { |
|
2115 // Entry iterators used to provide implicit keys, |
|
2116 // but now we print a separate warning for them later. |
|
2117 if (iteratorFn !== node.entries) { |
|
2118 var iterator = iteratorFn.call(node); |
|
2119 var step; |
|
2120 |
|
2121 while (!(step = iterator.next()).done) { |
|
2122 if (isValidElement(step.value)) { |
|
2123 validateExplicitKey(step.value, parentType); |
|
2124 } |
|
2125 } |
|
2126 } |
|
2127 } |
|
2128 } |
|
2129 } |
|
2130 /** |
|
2131 * Given an element, validate that its props follow the propTypes definition, |
|
2132 * provided by the type. |
|
2133 * |
|
2134 * @param {ReactElement} element |
|
2135 */ |
|
2136 |
|
2137 |
|
2138 function validatePropTypes(element) { |
|
2139 { |
|
2140 var type = element.type; |
|
2141 |
|
2142 if (type === null || type === undefined || typeof type === 'string') { |
|
2143 return; |
|
2144 } |
|
2145 |
|
2146 var propTypes; |
|
2147 |
|
2148 if (typeof type === 'function') { |
|
2149 propTypes = type.propTypes; |
|
2150 } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here. |
|
2151 // Inner props are checked in the reconciler. |
|
2152 type.$$typeof === REACT_MEMO_TYPE)) { |
|
2153 propTypes = type.propTypes; |
|
2154 } else { |
|
2155 return; |
|
2156 } |
|
2157 |
|
2158 if (propTypes) { |
|
2159 // Intentionally inside to avoid triggering lazy initializers: |
|
2160 var name = getComponentName(type); |
|
2161 checkPropTypes(propTypes, element.props, 'prop', name, element); |
|
2162 } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) { |
|
2163 propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers: |
|
2164 |
|
2165 var _name = getComponentName(type); |
|
2166 |
|
2167 error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown'); |
|
2168 } |
|
2169 |
|
2170 if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) { |
|
2171 error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.'); |
|
2172 } |
|
2173 } |
|
2174 } |
|
2175 /** |
|
2176 * Given a fragment, validate that it can only be provided with fragment props |
|
2177 * @param {ReactElement} fragment |
|
2178 */ |
|
2179 |
|
2180 |
|
2181 function validateFragmentProps(fragment) { |
|
2182 { |
|
2183 var keys = Object.keys(fragment.props); |
|
2184 |
|
2185 for (var i = 0; i < keys.length; i++) { |
|
2186 var key = keys[i]; |
|
2187 |
|
2188 if (key !== 'children' && key !== 'key') { |
|
2189 setCurrentlyValidatingElement$1(fragment); |
|
2190 |
|
2191 error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key); |
|
2192 |
|
2193 setCurrentlyValidatingElement$1(null); |
|
2194 break; |
|
2195 } |
|
2196 } |
|
2197 |
|
2198 if (fragment.ref !== null) { |
|
2199 setCurrentlyValidatingElement$1(fragment); |
|
2200 |
|
2201 error('Invalid attribute `ref` supplied to `React.Fragment`.'); |
|
2202 |
|
2203 setCurrentlyValidatingElement$1(null); |
|
2204 } |
|
2205 } |
|
2206 } |
|
2207 function createElementWithValidation(type, props, children) { |
|
2208 var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to |
|
2209 // succeed and there will likely be errors in render. |
|
2210 |
|
2211 if (!validType) { |
|
2212 var info = ''; |
|
2213 |
|
2214 if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) { |
|
2215 info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports."; |
|
2216 } |
|
2217 |
|
2218 var sourceInfo = getSourceInfoErrorAddendumForProps(props); |
|
2219 |
|
2220 if (sourceInfo) { |
|
2221 info += sourceInfo; |
|
2222 } else { |
|
2223 info += getDeclarationErrorAddendum(); |
|
2224 } |
|
2225 |
|
2226 var typeString; |
|
2227 |
|
2228 if (type === null) { |
|
2229 typeString = 'null'; |
|
2230 } else if (Array.isArray(type)) { |
|
2231 typeString = 'array'; |
|
2232 } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) { |
|
2233 typeString = "<" + (getComponentName(type.type) || 'Unknown') + " />"; |
|
2234 info = ' Did you accidentally export a JSX literal instead of a component?'; |
|
2235 } else { |
|
2236 typeString = typeof type; |
|
2237 } |
|
2238 |
|
2239 { |
|
2240 error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info); |
|
2241 } |
|
2242 } |
|
2243 |
|
2244 var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used. |
|
2245 // TODO: Drop this when these are no longer allowed as the type argument. |
|
2246 |
|
2247 if (element == null) { |
|
2248 return element; |
|
2249 } // Skip key warning if the type isn't valid since our key validation logic |
|
2250 // doesn't expect a non-string/function type and can throw confusing errors. |
|
2251 // We don't want exception behavior to differ between dev and prod. |
|
2252 // (Rendering will throw with a helpful message and as soon as the type is |
|
2253 // fixed, the key warnings will appear.) |
|
2254 |
|
2255 |
|
2256 if (validType) { |
|
2257 for (var i = 2; i < arguments.length; i++) { |
|
2258 validateChildKeys(arguments[i], type); |
|
2259 } |
|
2260 } |
|
2261 |
|
2262 if (type === exports.Fragment) { |
|
2263 validateFragmentProps(element); |
|
2264 } else { |
|
2265 validatePropTypes(element); |
|
2266 } |
|
2267 |
|
2268 return element; |
|
2269 } |
|
2270 var didWarnAboutDeprecatedCreateFactory = false; |
|
2271 function createFactoryWithValidation(type) { |
|
2272 var validatedFactory = createElementWithValidation.bind(null, type); |
|
2273 validatedFactory.type = type; |
|
2274 |
|
2275 { |
|
2276 if (!didWarnAboutDeprecatedCreateFactory) { |
|
2277 didWarnAboutDeprecatedCreateFactory = true; |
|
2278 |
|
2279 warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.'); |
|
2280 } // Legacy hook: remove it |
|
2281 |
|
2282 |
|
2283 Object.defineProperty(validatedFactory, 'type', { |
|
2284 enumerable: false, |
|
2285 get: function () { |
|
2286 warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.'); |
|
2287 |
|
2288 Object.defineProperty(this, 'type', { |
|
2289 value: type |
|
2290 }); |
|
2291 return type; |
|
2292 } |
|
2293 }); |
|
2294 } |
|
2295 |
|
2296 return validatedFactory; |
|
2297 } |
|
2298 function cloneElementWithValidation(element, props, children) { |
|
2299 var newElement = cloneElement.apply(this, arguments); |
|
2300 |
|
2301 for (var i = 2; i < arguments.length; i++) { |
|
2302 validateChildKeys(arguments[i], newElement.type); |
|
2303 } |
|
2304 |
|
2305 validatePropTypes(newElement); |
|
2306 return newElement; |
|
2307 } |
|
2308 |
|
2309 var enableSchedulerDebugging = false; |
|
2310 var enableProfiling = false; |
|
2311 |
|
2312 var requestHostCallback; |
|
2313 var requestHostTimeout; |
|
2314 var cancelHostTimeout; |
|
2315 var shouldYieldToHost; |
|
2316 var requestPaint; |
|
2317 var getCurrentTime; |
|
2318 var forceFrameRate; |
|
2319 var hasPerformanceNow = typeof performance === 'object' && typeof performance.now === 'function'; |
|
2320 |
|
2321 if (hasPerformanceNow) { |
|
2322 var localPerformance = performance; |
|
2323 |
|
2324 getCurrentTime = function () { |
|
2325 return localPerformance.now(); |
|
2326 }; |
|
2327 } else { |
|
2328 var localDate = Date; |
|
2329 var initialTime = localDate.now(); |
|
2330 |
|
2331 getCurrentTime = function () { |
|
2332 return localDate.now() - initialTime; |
|
2333 }; |
|
2334 } |
|
2335 |
|
2336 if ( // If Scheduler runs in a non-DOM environment, it falls back to a naive |
|
2337 // implementation using setTimeout. |
|
2338 typeof window === 'undefined' || // Check if MessageChannel is supported, too. |
|
2339 typeof MessageChannel !== 'function') { |
|
2340 // If this accidentally gets imported in a non-browser environment, e.g. JavaScriptCore, |
|
2341 // fallback to a naive implementation. |
|
2342 var _callback = null; |
|
2343 var _timeoutID = null; |
|
2344 |
|
2345 var _flushCallback = function () { |
|
2346 if (_callback !== null) { |
|
2347 try { |
|
2348 var currentTime = getCurrentTime(); |
|
2349 var hasRemainingTime = true; |
|
2350 |
|
2351 _callback(hasRemainingTime, currentTime); |
|
2352 |
|
2353 _callback = null; |
|
2354 } catch (e) { |
|
2355 setTimeout(_flushCallback, 0); |
|
2356 throw e; |
|
2357 } |
|
2358 } |
|
2359 }; |
|
2360 |
|
2361 requestHostCallback = function (cb) { |
|
2362 if (_callback !== null) { |
|
2363 // Protect against re-entrancy. |
|
2364 setTimeout(requestHostCallback, 0, cb); |
|
2365 } else { |
|
2366 _callback = cb; |
|
2367 setTimeout(_flushCallback, 0); |
|
2368 } |
|
2369 }; |
|
2370 |
|
2371 requestHostTimeout = function (cb, ms) { |
|
2372 _timeoutID = setTimeout(cb, ms); |
|
2373 }; |
|
2374 |
|
2375 cancelHostTimeout = function () { |
|
2376 clearTimeout(_timeoutID); |
|
2377 }; |
|
2378 |
|
2379 shouldYieldToHost = function () { |
|
2380 return false; |
|
2381 }; |
|
2382 |
|
2383 requestPaint = forceFrameRate = function () {}; |
|
2384 } else { |
|
2385 // Capture local references to native APIs, in case a polyfill overrides them. |
|
2386 var _setTimeout = window.setTimeout; |
|
2387 var _clearTimeout = window.clearTimeout; |
|
2388 |
|
2389 if (typeof console !== 'undefined') { |
|
2390 // TODO: Scheduler no longer requires these methods to be polyfilled. But |
|
2391 // maybe we want to continue warning if they don't exist, to preserve the |
|
2392 // option to rely on it in the future? |
|
2393 var requestAnimationFrame = window.requestAnimationFrame; |
|
2394 var cancelAnimationFrame = window.cancelAnimationFrame; |
|
2395 |
|
2396 if (typeof requestAnimationFrame !== 'function') { |
|
2397 // Using console['error'] to evade Babel and ESLint |
|
2398 console['error']("This browser doesn't support requestAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills'); |
|
2399 } |
|
2400 |
|
2401 if (typeof cancelAnimationFrame !== 'function') { |
|
2402 // Using console['error'] to evade Babel and ESLint |
|
2403 console['error']("This browser doesn't support cancelAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills'); |
|
2404 } |
|
2405 } |
|
2406 |
|
2407 var isMessageLoopRunning = false; |
|
2408 var scheduledHostCallback = null; |
|
2409 var taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main |
|
2410 // thread, like user events. By default, it yields multiple times per frame. |
|
2411 // It does not attempt to align with frame boundaries, since most tasks don't |
|
2412 // need to be frame aligned; for those that do, use requestAnimationFrame. |
|
2413 |
|
2414 var yieldInterval = 5; |
|
2415 var deadline = 0; // TODO: Make this configurable |
|
2416 |
|
2417 { |
|
2418 // `isInputPending` is not available. Since we have no way of knowing if |
|
2419 // there's pending input, always yield at the end of the frame. |
|
2420 shouldYieldToHost = function () { |
|
2421 return getCurrentTime() >= deadline; |
|
2422 }; // Since we yield every frame regardless, `requestPaint` has no effect. |
|
2423 |
|
2424 |
|
2425 requestPaint = function () {}; |
|
2426 } |
|
2427 |
|
2428 forceFrameRate = function (fps) { |
|
2429 if (fps < 0 || fps > 125) { |
|
2430 // Using console['error'] to evade Babel and ESLint |
|
2431 console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported'); |
|
2432 return; |
|
2433 } |
|
2434 |
|
2435 if (fps > 0) { |
|
2436 yieldInterval = Math.floor(1000 / fps); |
|
2437 } else { |
|
2438 // reset the framerate |
|
2439 yieldInterval = 5; |
|
2440 } |
|
2441 }; |
|
2442 |
|
2443 var performWorkUntilDeadline = function () { |
|
2444 if (scheduledHostCallback !== null) { |
|
2445 var currentTime = getCurrentTime(); // Yield after `yieldInterval` ms, regardless of where we are in the vsync |
|
2446 // cycle. This means there's always time remaining at the beginning of |
|
2447 // the message event. |
|
2448 |
|
2449 deadline = currentTime + yieldInterval; |
|
2450 var hasTimeRemaining = true; |
|
2451 |
|
2452 try { |
|
2453 var hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime); |
|
2454 |
|
2455 if (!hasMoreWork) { |
|
2456 isMessageLoopRunning = false; |
|
2457 scheduledHostCallback = null; |
|
2458 } else { |
|
2459 // If there's more work, schedule the next message event at the end |
|
2460 // of the preceding one. |
|
2461 port.postMessage(null); |
|
2462 } |
|
2463 } catch (error) { |
|
2464 // If a scheduler task throws, exit the current browser task so the |
|
2465 // error can be observed. |
|
2466 port.postMessage(null); |
|
2467 throw error; |
|
2468 } |
|
2469 } else { |
|
2470 isMessageLoopRunning = false; |
|
2471 } // Yielding to the browser will give it a chance to paint, so we can |
|
2472 }; |
|
2473 |
|
2474 var channel = new MessageChannel(); |
|
2475 var port = channel.port2; |
|
2476 channel.port1.onmessage = performWorkUntilDeadline; |
|
2477 |
|
2478 requestHostCallback = function (callback) { |
|
2479 scheduledHostCallback = callback; |
|
2480 |
|
2481 if (!isMessageLoopRunning) { |
|
2482 isMessageLoopRunning = true; |
|
2483 port.postMessage(null); |
|
2484 } |
|
2485 }; |
|
2486 |
|
2487 requestHostTimeout = function (callback, ms) { |
|
2488 taskTimeoutID = _setTimeout(function () { |
|
2489 callback(getCurrentTime()); |
|
2490 }, ms); |
|
2491 }; |
|
2492 |
|
2493 cancelHostTimeout = function () { |
|
2494 _clearTimeout(taskTimeoutID); |
|
2495 |
|
2496 taskTimeoutID = -1; |
|
2497 }; |
|
2498 } |
|
2499 |
|
2500 function push(heap, node) { |
|
2501 var index = heap.length; |
|
2502 heap.push(node); |
|
2503 siftUp(heap, node, index); |
|
2504 } |
|
2505 function peek(heap) { |
|
2506 var first = heap[0]; |
|
2507 return first === undefined ? null : first; |
|
2508 } |
|
2509 function pop(heap) { |
|
2510 var first = heap[0]; |
|
2511 |
|
2512 if (first !== undefined) { |
|
2513 var last = heap.pop(); |
|
2514 |
|
2515 if (last !== first) { |
|
2516 heap[0] = last; |
|
2517 siftDown(heap, last, 0); |
|
2518 } |
|
2519 |
|
2520 return first; |
|
2521 } else { |
|
2522 return null; |
|
2523 } |
|
2524 } |
|
2525 |
|
2526 function siftUp(heap, node, i) { |
|
2527 var index = i; |
|
2528 |
|
2529 while (true) { |
|
2530 var parentIndex = index - 1 >>> 1; |
|
2531 var parent = heap[parentIndex]; |
|
2532 |
|
2533 if (parent !== undefined && compare(parent, node) > 0) { |
|
2534 // The parent is larger. Swap positions. |
|
2535 heap[parentIndex] = node; |
|
2536 heap[index] = parent; |
|
2537 index = parentIndex; |
|
2538 } else { |
|
2539 // The parent is smaller. Exit. |
|
2540 return; |
|
2541 } |
|
2542 } |
|
2543 } |
|
2544 |
|
2545 function siftDown(heap, node, i) { |
|
2546 var index = i; |
|
2547 var length = heap.length; |
|
2548 |
|
2549 while (index < length) { |
|
2550 var leftIndex = (index + 1) * 2 - 1; |
|
2551 var left = heap[leftIndex]; |
|
2552 var rightIndex = leftIndex + 1; |
|
2553 var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those. |
|
2554 |
|
2555 if (left !== undefined && compare(left, node) < 0) { |
|
2556 if (right !== undefined && compare(right, left) < 0) { |
|
2557 heap[index] = right; |
|
2558 heap[rightIndex] = node; |
|
2559 index = rightIndex; |
|
2560 } else { |
|
2561 heap[index] = left; |
|
2562 heap[leftIndex] = node; |
|
2563 index = leftIndex; |
|
2564 } |
|
2565 } else if (right !== undefined && compare(right, node) < 0) { |
|
2566 heap[index] = right; |
|
2567 heap[rightIndex] = node; |
|
2568 index = rightIndex; |
|
2569 } else { |
|
2570 // Neither child is smaller. Exit. |
|
2571 return; |
|
2572 } |
|
2573 } |
|
2574 } |
|
2575 |
|
2576 function compare(a, b) { |
|
2577 // Compare sort index first, then task id. |
|
2578 var diff = a.sortIndex - b.sortIndex; |
|
2579 return diff !== 0 ? diff : a.id - b.id; |
|
2580 } |
|
2581 |
|
2582 // TODO: Use symbols? |
|
2583 var ImmediatePriority = 1; |
|
2584 var UserBlockingPriority = 2; |
|
2585 var NormalPriority = 3; |
|
2586 var LowPriority = 4; |
|
2587 var IdlePriority = 5; |
|
2588 |
|
2589 function markTaskErrored(task, ms) { |
|
2590 } |
|
2591 |
|
2592 /* eslint-disable no-var */ |
|
2593 // Math.pow(2, 30) - 1 |
|
2594 // 0b111111111111111111111111111111 |
|
2595 |
|
2596 var maxSigned31BitInt = 1073741823; // Times out immediately |
|
2597 |
|
2598 var IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out |
|
2599 |
|
2600 var USER_BLOCKING_PRIORITY_TIMEOUT = 250; |
|
2601 var NORMAL_PRIORITY_TIMEOUT = 5000; |
|
2602 var LOW_PRIORITY_TIMEOUT = 10000; // Never times out |
|
2603 |
|
2604 var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap |
|
2605 |
|
2606 var taskQueue = []; |
|
2607 var timerQueue = []; // Incrementing id counter. Used to maintain insertion order. |
|
2608 |
|
2609 var taskIdCounter = 1; // Pausing the scheduler is useful for debugging. |
|
2610 var currentTask = null; |
|
2611 var currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy. |
|
2612 |
|
2613 var isPerformingWork = false; |
|
2614 var isHostCallbackScheduled = false; |
|
2615 var isHostTimeoutScheduled = false; |
|
2616 |
|
2617 function advanceTimers(currentTime) { |
|
2618 // Check for tasks that are no longer delayed and add them to the queue. |
|
2619 var timer = peek(timerQueue); |
|
2620 |
|
2621 while (timer !== null) { |
|
2622 if (timer.callback === null) { |
|
2623 // Timer was cancelled. |
|
2624 pop(timerQueue); |
|
2625 } else if (timer.startTime <= currentTime) { |
|
2626 // Timer fired. Transfer to the task queue. |
|
2627 pop(timerQueue); |
|
2628 timer.sortIndex = timer.expirationTime; |
|
2629 push(taskQueue, timer); |
|
2630 } else { |
|
2631 // Remaining timers are pending. |
|
2632 return; |
|
2633 } |
|
2634 |
|
2635 timer = peek(timerQueue); |
|
2636 } |
|
2637 } |
|
2638 |
|
2639 function handleTimeout(currentTime) { |
|
2640 isHostTimeoutScheduled = false; |
|
2641 advanceTimers(currentTime); |
|
2642 |
|
2643 if (!isHostCallbackScheduled) { |
|
2644 if (peek(taskQueue) !== null) { |
|
2645 isHostCallbackScheduled = true; |
|
2646 requestHostCallback(flushWork); |
|
2647 } else { |
|
2648 var firstTimer = peek(timerQueue); |
|
2649 |
|
2650 if (firstTimer !== null) { |
|
2651 requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); |
|
2652 } |
|
2653 } |
|
2654 } |
|
2655 } |
|
2656 |
|
2657 function flushWork(hasTimeRemaining, initialTime) { |
|
2658 |
|
2659 |
|
2660 isHostCallbackScheduled = false; |
|
2661 |
|
2662 if (isHostTimeoutScheduled) { |
|
2663 // We scheduled a timeout but it's no longer needed. Cancel it. |
|
2664 isHostTimeoutScheduled = false; |
|
2665 cancelHostTimeout(); |
|
2666 } |
|
2667 |
|
2668 isPerformingWork = true; |
|
2669 var previousPriorityLevel = currentPriorityLevel; |
|
2670 |
|
2671 try { |
|
2672 if (enableProfiling) { |
|
2673 try { |
|
2674 return workLoop(hasTimeRemaining, initialTime); |
|
2675 } catch (error) { |
|
2676 if (currentTask !== null) { |
|
2677 var currentTime = getCurrentTime(); |
|
2678 markTaskErrored(currentTask, currentTime); |
|
2679 currentTask.isQueued = false; |
|
2680 } |
|
2681 |
|
2682 throw error; |
|
2683 } |
|
2684 } else { |
|
2685 // No catch in prod code path. |
|
2686 return workLoop(hasTimeRemaining, initialTime); |
|
2687 } |
|
2688 } finally { |
|
2689 currentTask = null; |
|
2690 currentPriorityLevel = previousPriorityLevel; |
|
2691 isPerformingWork = false; |
|
2692 } |
|
2693 } |
|
2694 |
|
2695 function workLoop(hasTimeRemaining, initialTime) { |
|
2696 var currentTime = initialTime; |
|
2697 advanceTimers(currentTime); |
|
2698 currentTask = peek(taskQueue); |
|
2699 |
|
2700 while (currentTask !== null && !(enableSchedulerDebugging )) { |
|
2701 if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || shouldYieldToHost())) { |
|
2702 // This currentTask hasn't expired, and we've reached the deadline. |
|
2703 break; |
|
2704 } |
|
2705 |
|
2706 var callback = currentTask.callback; |
|
2707 |
|
2708 if (typeof callback === 'function') { |
|
2709 currentTask.callback = null; |
|
2710 currentPriorityLevel = currentTask.priorityLevel; |
|
2711 var didUserCallbackTimeout = currentTask.expirationTime <= currentTime; |
|
2712 |
|
2713 var continuationCallback = callback(didUserCallbackTimeout); |
|
2714 currentTime = getCurrentTime(); |
|
2715 |
|
2716 if (typeof continuationCallback === 'function') { |
|
2717 currentTask.callback = continuationCallback; |
|
2718 } else { |
|
2719 |
|
2720 if (currentTask === peek(taskQueue)) { |
|
2721 pop(taskQueue); |
|
2722 } |
|
2723 } |
|
2724 |
|
2725 advanceTimers(currentTime); |
|
2726 } else { |
|
2727 pop(taskQueue); |
|
2728 } |
|
2729 |
|
2730 currentTask = peek(taskQueue); |
|
2731 } // Return whether there's additional work |
|
2732 |
|
2733 |
|
2734 if (currentTask !== null) { |
|
2735 return true; |
|
2736 } else { |
|
2737 var firstTimer = peek(timerQueue); |
|
2738 |
|
2739 if (firstTimer !== null) { |
|
2740 requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime); |
|
2741 } |
|
2742 |
|
2743 return false; |
|
2744 } |
|
2745 } |
|
2746 |
|
2747 function unstable_runWithPriority(priorityLevel, eventHandler) { |
|
2748 switch (priorityLevel) { |
|
2749 case ImmediatePriority: |
|
2750 case UserBlockingPriority: |
|
2751 case NormalPriority: |
|
2752 case LowPriority: |
|
2753 case IdlePriority: |
|
2754 break; |
|
2755 |
|
2756 default: |
|
2757 priorityLevel = NormalPriority; |
|
2758 } |
|
2759 |
|
2760 var previousPriorityLevel = currentPriorityLevel; |
|
2761 currentPriorityLevel = priorityLevel; |
|
2762 |
|
2763 try { |
|
2764 return eventHandler(); |
|
2765 } finally { |
|
2766 currentPriorityLevel = previousPriorityLevel; |
|
2767 } |
|
2768 } |
|
2769 |
|
2770 function unstable_next(eventHandler) { |
|
2771 var priorityLevel; |
|
2772 |
|
2773 switch (currentPriorityLevel) { |
|
2774 case ImmediatePriority: |
|
2775 case UserBlockingPriority: |
|
2776 case NormalPriority: |
|
2777 // Shift down to normal priority |
|
2778 priorityLevel = NormalPriority; |
|
2779 break; |
|
2780 |
|
2781 default: |
|
2782 // Anything lower than normal priority should remain at the current level. |
|
2783 priorityLevel = currentPriorityLevel; |
|
2784 break; |
|
2785 } |
|
2786 |
|
2787 var previousPriorityLevel = currentPriorityLevel; |
|
2788 currentPriorityLevel = priorityLevel; |
|
2789 |
|
2790 try { |
|
2791 return eventHandler(); |
|
2792 } finally { |
|
2793 currentPriorityLevel = previousPriorityLevel; |
|
2794 } |
|
2795 } |
|
2796 |
|
2797 function unstable_wrapCallback(callback) { |
|
2798 var parentPriorityLevel = currentPriorityLevel; |
|
2799 return function () { |
|
2800 // This is a fork of runWithPriority, inlined for performance. |
|
2801 var previousPriorityLevel = currentPriorityLevel; |
|
2802 currentPriorityLevel = parentPriorityLevel; |
|
2803 |
|
2804 try { |
|
2805 return callback.apply(this, arguments); |
|
2806 } finally { |
|
2807 currentPriorityLevel = previousPriorityLevel; |
|
2808 } |
|
2809 }; |
|
2810 } |
|
2811 |
|
2812 function unstable_scheduleCallback(priorityLevel, callback, options) { |
|
2813 var currentTime = getCurrentTime(); |
|
2814 var startTime; |
|
2815 |
|
2816 if (typeof options === 'object' && options !== null) { |
|
2817 var delay = options.delay; |
|
2818 |
|
2819 if (typeof delay === 'number' && delay > 0) { |
|
2820 startTime = currentTime + delay; |
|
2821 } else { |
|
2822 startTime = currentTime; |
|
2823 } |
|
2824 } else { |
|
2825 startTime = currentTime; |
|
2826 } |
|
2827 |
|
2828 var timeout; |
|
2829 |
|
2830 switch (priorityLevel) { |
|
2831 case ImmediatePriority: |
|
2832 timeout = IMMEDIATE_PRIORITY_TIMEOUT; |
|
2833 break; |
|
2834 |
|
2835 case UserBlockingPriority: |
|
2836 timeout = USER_BLOCKING_PRIORITY_TIMEOUT; |
|
2837 break; |
|
2838 |
|
2839 case IdlePriority: |
|
2840 timeout = IDLE_PRIORITY_TIMEOUT; |
|
2841 break; |
|
2842 |
|
2843 case LowPriority: |
|
2844 timeout = LOW_PRIORITY_TIMEOUT; |
|
2845 break; |
|
2846 |
|
2847 case NormalPriority: |
|
2848 default: |
|
2849 timeout = NORMAL_PRIORITY_TIMEOUT; |
|
2850 break; |
|
2851 } |
|
2852 |
|
2853 var expirationTime = startTime + timeout; |
|
2854 var newTask = { |
|
2855 id: taskIdCounter++, |
|
2856 callback: callback, |
|
2857 priorityLevel: priorityLevel, |
|
2858 startTime: startTime, |
|
2859 expirationTime: expirationTime, |
|
2860 sortIndex: -1 |
|
2861 }; |
|
2862 |
|
2863 if (startTime > currentTime) { |
|
2864 // This is a delayed task. |
|
2865 newTask.sortIndex = startTime; |
|
2866 push(timerQueue, newTask); |
|
2867 |
|
2868 if (peek(taskQueue) === null && newTask === peek(timerQueue)) { |
|
2869 // All tasks are delayed, and this is the task with the earliest delay. |
|
2870 if (isHostTimeoutScheduled) { |
|
2871 // Cancel an existing timeout. |
|
2872 cancelHostTimeout(); |
|
2873 } else { |
|
2874 isHostTimeoutScheduled = true; |
|
2875 } // Schedule a timeout. |
|
2876 |
|
2877 |
|
2878 requestHostTimeout(handleTimeout, startTime - currentTime); |
|
2879 } |
|
2880 } else { |
|
2881 newTask.sortIndex = expirationTime; |
|
2882 push(taskQueue, newTask); |
|
2883 // wait until the next time we yield. |
|
2884 |
|
2885 |
|
2886 if (!isHostCallbackScheduled && !isPerformingWork) { |
|
2887 isHostCallbackScheduled = true; |
|
2888 requestHostCallback(flushWork); |
|
2889 } |
|
2890 } |
|
2891 |
|
2892 return newTask; |
|
2893 } |
|
2894 |
|
2895 function unstable_pauseExecution() { |
|
2896 } |
|
2897 |
|
2898 function unstable_continueExecution() { |
|
2899 |
|
2900 if (!isHostCallbackScheduled && !isPerformingWork) { |
|
2901 isHostCallbackScheduled = true; |
|
2902 requestHostCallback(flushWork); |
|
2903 } |
|
2904 } |
|
2905 |
|
2906 function unstable_getFirstCallbackNode() { |
|
2907 return peek(taskQueue); |
|
2908 } |
|
2909 |
|
2910 function unstable_cancelCallback(task) { |
|
2911 // remove from the queue because you can't remove arbitrary nodes from an |
|
2912 // array based heap, only the first one.) |
|
2913 |
|
2914 |
|
2915 task.callback = null; |
|
2916 } |
|
2917 |
|
2918 function unstable_getCurrentPriorityLevel() { |
|
2919 return currentPriorityLevel; |
|
2920 } |
|
2921 |
|
2922 var unstable_requestPaint = requestPaint; |
|
2923 var unstable_Profiling = null; |
|
2924 |
|
2925 |
|
2926 |
|
2927 var Scheduler = /*#__PURE__*/Object.freeze({ |
|
2928 __proto__: null, |
|
2929 unstable_ImmediatePriority: ImmediatePriority, |
|
2930 unstable_UserBlockingPriority: UserBlockingPriority, |
|
2931 unstable_NormalPriority: NormalPriority, |
|
2932 unstable_IdlePriority: IdlePriority, |
|
2933 unstable_LowPriority: LowPriority, |
|
2934 unstable_runWithPriority: unstable_runWithPriority, |
|
2935 unstable_next: unstable_next, |
|
2936 unstable_scheduleCallback: unstable_scheduleCallback, |
|
2937 unstable_cancelCallback: unstable_cancelCallback, |
|
2938 unstable_wrapCallback: unstable_wrapCallback, |
|
2939 unstable_getCurrentPriorityLevel: unstable_getCurrentPriorityLevel, |
|
2940 get unstable_shouldYield () { return shouldYieldToHost; }, |
|
2941 unstable_requestPaint: unstable_requestPaint, |
|
2942 unstable_continueExecution: unstable_continueExecution, |
|
2943 unstable_pauseExecution: unstable_pauseExecution, |
|
2944 unstable_getFirstCallbackNode: unstable_getFirstCallbackNode, |
|
2945 get unstable_now () { return getCurrentTime; }, |
|
2946 get unstable_forceFrameRate () { return forceFrameRate; }, |
|
2947 unstable_Profiling: unstable_Profiling |
|
2948 }); |
|
2949 |
|
2950 var DEFAULT_THREAD_ID = 0; // Counters used to generate unique IDs. |
|
2951 |
|
2952 var interactionIDCounter = 0; |
|
2953 var threadIDCounter = 0; // Set of currently traced interactions. |
|
2954 // Interactions "stack"– |
|
2955 // Meaning that newly traced interactions are appended to the previously active set. |
|
2956 // When an interaction goes out of scope, the previous set (if any) is restored. |
|
2957 |
|
2958 var interactionsRef = null; // Listener(s) to notify when interactions begin and end. |
|
2959 |
|
2960 var subscriberRef = null; |
|
2961 |
|
2962 { |
|
2963 interactionsRef = { |
|
2964 current: new Set() |
|
2965 }; |
|
2966 subscriberRef = { |
|
2967 current: null |
|
2968 }; |
|
2969 } |
|
2970 function unstable_clear(callback) { |
|
2971 |
|
2972 var prevInteractions = interactionsRef.current; |
|
2973 interactionsRef.current = new Set(); |
|
2974 |
|
2975 try { |
|
2976 return callback(); |
|
2977 } finally { |
|
2978 interactionsRef.current = prevInteractions; |
|
2979 } |
|
2980 } |
|
2981 function unstable_getCurrent() { |
|
2982 { |
|
2983 return interactionsRef.current; |
|
2984 } |
|
2985 } |
|
2986 function unstable_getThreadID() { |
|
2987 return ++threadIDCounter; |
|
2988 } |
|
2989 function unstable_trace(name, timestamp, callback) { |
|
2990 var threadID = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_THREAD_ID; |
|
2991 |
|
2992 var interaction = { |
|
2993 __count: 1, |
|
2994 id: interactionIDCounter++, |
|
2995 name: name, |
|
2996 timestamp: timestamp |
|
2997 }; |
|
2998 var prevInteractions = interactionsRef.current; // Traced interactions should stack/accumulate. |
|
2999 // To do that, clone the current interactions. |
|
3000 // The previous set will be restored upon completion. |
|
3001 |
|
3002 var interactions = new Set(prevInteractions); |
|
3003 interactions.add(interaction); |
|
3004 interactionsRef.current = interactions; |
|
3005 var subscriber = subscriberRef.current; |
|
3006 var returnValue; |
|
3007 |
|
3008 try { |
|
3009 if (subscriber !== null) { |
|
3010 subscriber.onInteractionTraced(interaction); |
|
3011 } |
|
3012 } finally { |
|
3013 try { |
|
3014 if (subscriber !== null) { |
|
3015 subscriber.onWorkStarted(interactions, threadID); |
|
3016 } |
|
3017 } finally { |
|
3018 try { |
|
3019 returnValue = callback(); |
|
3020 } finally { |
|
3021 interactionsRef.current = prevInteractions; |
|
3022 |
|
3023 try { |
|
3024 if (subscriber !== null) { |
|
3025 subscriber.onWorkStopped(interactions, threadID); |
|
3026 } |
|
3027 } finally { |
|
3028 interaction.__count--; // If no async work was scheduled for this interaction, |
|
3029 // Notify subscribers that it's completed. |
|
3030 |
|
3031 if (subscriber !== null && interaction.__count === 0) { |
|
3032 subscriber.onInteractionScheduledWorkCompleted(interaction); |
|
3033 } |
|
3034 } |
|
3035 } |
|
3036 } |
|
3037 } |
|
3038 |
|
3039 return returnValue; |
|
3040 } |
|
3041 function unstable_wrap(callback) { |
|
3042 var threadID = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_THREAD_ID; |
|
3043 |
|
3044 var wrappedInteractions = interactionsRef.current; |
|
3045 var subscriber = subscriberRef.current; |
|
3046 |
|
3047 if (subscriber !== null) { |
|
3048 subscriber.onWorkScheduled(wrappedInteractions, threadID); |
|
3049 } // Update the pending async work count for the current interactions. |
|
3050 // Update after calling subscribers in case of error. |
|
3051 |
|
3052 |
|
3053 wrappedInteractions.forEach(function (interaction) { |
|
3054 interaction.__count++; |
|
3055 }); |
|
3056 var hasRun = false; |
|
3057 |
|
3058 function wrapped() { |
|
3059 var prevInteractions = interactionsRef.current; |
|
3060 interactionsRef.current = wrappedInteractions; |
|
3061 subscriber = subscriberRef.current; |
|
3062 |
|
3063 try { |
|
3064 var returnValue; |
|
3065 |
|
3066 try { |
|
3067 if (subscriber !== null) { |
|
3068 subscriber.onWorkStarted(wrappedInteractions, threadID); |
|
3069 } |
|
3070 } finally { |
|
3071 try { |
|
3072 returnValue = callback.apply(undefined, arguments); |
|
3073 } finally { |
|
3074 interactionsRef.current = prevInteractions; |
|
3075 |
|
3076 if (subscriber !== null) { |
|
3077 subscriber.onWorkStopped(wrappedInteractions, threadID); |
|
3078 } |
|
3079 } |
|
3080 } |
|
3081 |
|
3082 return returnValue; |
|
3083 } finally { |
|
3084 if (!hasRun) { |
|
3085 // We only expect a wrapped function to be executed once, |
|
3086 // But in the event that it's executed more than once– |
|
3087 // Only decrement the outstanding interaction counts once. |
|
3088 hasRun = true; // Update pending async counts for all wrapped interactions. |
|
3089 // If this was the last scheduled async work for any of them, |
|
3090 // Mark them as completed. |
|
3091 |
|
3092 wrappedInteractions.forEach(function (interaction) { |
|
3093 interaction.__count--; |
|
3094 |
|
3095 if (subscriber !== null && interaction.__count === 0) { |
|
3096 subscriber.onInteractionScheduledWorkCompleted(interaction); |
|
3097 } |
|
3098 }); |
|
3099 } |
|
3100 } |
|
3101 } |
|
3102 |
|
3103 wrapped.cancel = function cancel() { |
|
3104 subscriber = subscriberRef.current; |
|
3105 |
|
3106 try { |
|
3107 if (subscriber !== null) { |
|
3108 subscriber.onWorkCanceled(wrappedInteractions, threadID); |
|
3109 } |
|
3110 } finally { |
|
3111 // Update pending async counts for all wrapped interactions. |
|
3112 // If this was the last scheduled async work for any of them, |
|
3113 // Mark them as completed. |
|
3114 wrappedInteractions.forEach(function (interaction) { |
|
3115 interaction.__count--; |
|
3116 |
|
3117 if (subscriber && interaction.__count === 0) { |
|
3118 subscriber.onInteractionScheduledWorkCompleted(interaction); |
|
3119 } |
|
3120 }); |
|
3121 } |
|
3122 }; |
|
3123 |
|
3124 return wrapped; |
|
3125 } |
|
3126 |
|
3127 var subscribers = null; |
|
3128 |
|
3129 { |
|
3130 subscribers = new Set(); |
|
3131 } |
|
3132 |
|
3133 function unstable_subscribe(subscriber) { |
|
3134 { |
|
3135 subscribers.add(subscriber); |
|
3136 |
|
3137 if (subscribers.size === 1) { |
|
3138 subscriberRef.current = { |
|
3139 onInteractionScheduledWorkCompleted: onInteractionScheduledWorkCompleted, |
|
3140 onInteractionTraced: onInteractionTraced, |
|
3141 onWorkCanceled: onWorkCanceled, |
|
3142 onWorkScheduled: onWorkScheduled, |
|
3143 onWorkStarted: onWorkStarted, |
|
3144 onWorkStopped: onWorkStopped |
|
3145 }; |
|
3146 } |
|
3147 } |
|
3148 } |
|
3149 function unstable_unsubscribe(subscriber) { |
|
3150 { |
|
3151 subscribers.delete(subscriber); |
|
3152 |
|
3153 if (subscribers.size === 0) { |
|
3154 subscriberRef.current = null; |
|
3155 } |
|
3156 } |
|
3157 } |
|
3158 |
|
3159 function onInteractionTraced(interaction) { |
|
3160 var didCatchError = false; |
|
3161 var caughtError = null; |
|
3162 subscribers.forEach(function (subscriber) { |
|
3163 try { |
|
3164 subscriber.onInteractionTraced(interaction); |
|
3165 } catch (error) { |
|
3166 if (!didCatchError) { |
|
3167 didCatchError = true; |
|
3168 caughtError = error; |
|
3169 } |
|
3170 } |
|
3171 }); |
|
3172 |
|
3173 if (didCatchError) { |
|
3174 throw caughtError; |
|
3175 } |
|
3176 } |
|
3177 |
|
3178 function onInteractionScheduledWorkCompleted(interaction) { |
|
3179 var didCatchError = false; |
|
3180 var caughtError = null; |
|
3181 subscribers.forEach(function (subscriber) { |
|
3182 try { |
|
3183 subscriber.onInteractionScheduledWorkCompleted(interaction); |
|
3184 } catch (error) { |
|
3185 if (!didCatchError) { |
|
3186 didCatchError = true; |
|
3187 caughtError = error; |
|
3188 } |
|
3189 } |
|
3190 }); |
|
3191 |
|
3192 if (didCatchError) { |
|
3193 throw caughtError; |
|
3194 } |
|
3195 } |
|
3196 |
|
3197 function onWorkScheduled(interactions, threadID) { |
|
3198 var didCatchError = false; |
|
3199 var caughtError = null; |
|
3200 subscribers.forEach(function (subscriber) { |
|
3201 try { |
|
3202 subscriber.onWorkScheduled(interactions, threadID); |
|
3203 } catch (error) { |
|
3204 if (!didCatchError) { |
|
3205 didCatchError = true; |
|
3206 caughtError = error; |
|
3207 } |
|
3208 } |
|
3209 }); |
|
3210 |
|
3211 if (didCatchError) { |
|
3212 throw caughtError; |
|
3213 } |
|
3214 } |
|
3215 |
|
3216 function onWorkStarted(interactions, threadID) { |
|
3217 var didCatchError = false; |
|
3218 var caughtError = null; |
|
3219 subscribers.forEach(function (subscriber) { |
|
3220 try { |
|
3221 subscriber.onWorkStarted(interactions, threadID); |
|
3222 } catch (error) { |
|
3223 if (!didCatchError) { |
|
3224 didCatchError = true; |
|
3225 caughtError = error; |
|
3226 } |
|
3227 } |
|
3228 }); |
|
3229 |
|
3230 if (didCatchError) { |
|
3231 throw caughtError; |
|
3232 } |
|
3233 } |
|
3234 |
|
3235 function onWorkStopped(interactions, threadID) { |
|
3236 var didCatchError = false; |
|
3237 var caughtError = null; |
|
3238 subscribers.forEach(function (subscriber) { |
|
3239 try { |
|
3240 subscriber.onWorkStopped(interactions, threadID); |
|
3241 } catch (error) { |
|
3242 if (!didCatchError) { |
|
3243 didCatchError = true; |
|
3244 caughtError = error; |
|
3245 } |
|
3246 } |
|
3247 }); |
|
3248 |
|
3249 if (didCatchError) { |
|
3250 throw caughtError; |
|
3251 } |
|
3252 } |
|
3253 |
|
3254 function onWorkCanceled(interactions, threadID) { |
|
3255 var didCatchError = false; |
|
3256 var caughtError = null; |
|
3257 subscribers.forEach(function (subscriber) { |
|
3258 try { |
|
3259 subscriber.onWorkCanceled(interactions, threadID); |
|
3260 } catch (error) { |
|
3261 if (!didCatchError) { |
|
3262 didCatchError = true; |
|
3263 caughtError = error; |
|
3264 } |
|
3265 } |
|
3266 }); |
|
3267 |
|
3268 if (didCatchError) { |
|
3269 throw caughtError; |
|
3270 } |
|
3271 } |
|
3272 |
|
3273 |
|
3274 |
|
3275 var SchedulerTracing = /*#__PURE__*/Object.freeze({ |
|
3276 __proto__: null, |
|
3277 get __interactionsRef () { return interactionsRef; }, |
|
3278 get __subscriberRef () { return subscriberRef; }, |
|
3279 unstable_clear: unstable_clear, |
|
3280 unstable_getCurrent: unstable_getCurrent, |
|
3281 unstable_getThreadID: unstable_getThreadID, |
|
3282 unstable_trace: unstable_trace, |
|
3283 unstable_wrap: unstable_wrap, |
|
3284 unstable_subscribe: unstable_subscribe, |
|
3285 unstable_unsubscribe: unstable_unsubscribe |
|
3286 }); |
|
3287 |
|
3288 var ReactSharedInternals$1 = { |
|
3289 ReactCurrentDispatcher: ReactCurrentDispatcher, |
|
3290 ReactCurrentOwner: ReactCurrentOwner, |
|
3291 IsSomeRendererActing: IsSomeRendererActing, |
|
3292 ReactCurrentBatchConfig: ReactCurrentBatchConfig, |
|
3293 // Used by renderers to avoid bundling object-assign twice in UMD bundles: |
|
3294 assign: assign, |
|
3295 // Re-export the schedule API(s) for UMD bundles. |
|
3296 // This avoids introducing a dependency on a new UMD global in a minor update, |
|
3297 // Since that would be a breaking change (e.g. for all existing CodeSandboxes). |
|
3298 // This re-export is only required for UMD bundles; |
|
3299 // CJS bundles use the shared NPM package. |
|
3300 Scheduler: Scheduler, |
|
3301 SchedulerTracing: SchedulerTracing |
|
3302 }; |
|
3303 |
|
3304 { |
|
3305 ReactSharedInternals$1.ReactDebugCurrentFrame = ReactDebugCurrentFrame; |
|
3306 } |
|
3307 |
|
3308 { |
|
3309 |
|
3310 try { |
|
3311 var frozenObject = Object.freeze({}); |
|
3312 /* eslint-disable no-new */ |
|
3313 |
|
3314 new Map([[frozenObject, null]]); |
|
3315 new Set([frozenObject]); |
|
3316 /* eslint-enable no-new */ |
|
3317 } catch (e) { |
|
3318 } |
|
3319 } |
|
3320 |
|
3321 var createElement$1 = createElementWithValidation ; |
|
3322 var cloneElement$1 = cloneElementWithValidation ; |
|
3323 var createFactory = createFactoryWithValidation ; |
|
3324 var Children = { |
|
3325 map: mapChildren, |
|
3326 forEach: forEachChildren, |
|
3327 count: countChildren, |
|
3328 toArray: toArray, |
|
3329 only: onlyChild |
|
3330 }; |
|
3331 |
|
3332 exports.Children = Children; |
|
3333 exports.Component = Component; |
|
3334 exports.PureComponent = PureComponent; |
|
3335 exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals$1; |
|
3336 exports.cloneElement = cloneElement$1; |
|
3337 exports.createContext = createContext; |
|
3338 exports.createElement = createElement$1; |
|
3339 exports.createFactory = createFactory; |
|
3340 exports.createRef = createRef; |
|
3341 exports.forwardRef = forwardRef; |
|
3342 exports.isValidElement = isValidElement; |
|
3343 exports.lazy = lazy; |
|
3344 exports.memo = memo; |
|
3345 exports.useCallback = useCallback; |
|
3346 exports.useContext = useContext; |
|
3347 exports.useDebugValue = useDebugValue; |
|
3348 exports.useEffect = useEffect; |
|
3349 exports.useImperativeHandle = useImperativeHandle; |
|
3350 exports.useLayoutEffect = useLayoutEffect; |
|
3351 exports.useMemo = useMemo; |
|
3352 exports.useReducer = useReducer; |
|
3353 exports.useRef = useRef; |
|
3354 exports.useState = useState; |
|
3355 exports.version = ReactVersion; |
|
3356 |
|
3357 }))); |
|