[ Index ] |
PHP Cross Reference of WordPress |
[Summary view] [Print] [Text view]
1 /** @license React v17.0.2 2 * react.development.js 3 * 4 * Copyright (c) Facebook, Inc. and its affiliates. 5 * 6 * This source code is licensed under the MIT license found in the 7 * LICENSE file in the root directory of this source tree. 8 */ 9 (function (global, factory) { 10 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 11 typeof define === 'function' && define.amd ? define(['exports'], factory) : 12 (global = global || self, factory(global.React = {})); 13 }(this, (function (exports) { 'use strict'; 14 15 // TODO: this is special because it gets imported during build. 16 var ReactVersion = '17.0.2'; 17 18 // ATTENTION 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 44 if (typeof Symbol === 'function' && Symbol.for) { 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 68 var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator; 69 var FAUX_ITERATOR_SYMBOL = '@@iterator'; 70 function getIteratorFn(maybeIterable) { 71 if (maybeIterable === null || typeof maybeIterable !== 'object') { 72 return null; 73 } 74 75 var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]; 76 77 if (typeof maybeIterator === 'function') { 78 return maybeIterator; 79 } 80 81 return null; 82 } 83 84 var hasOwnProperty = Object.prototype.hasOwnProperty; 85 86 var _assign = function (to, from) { 87 for (var key in from) { 88 if (hasOwnProperty.call(from, key)) { 89 to[key] = from[key]; 90 } 91 } 92 }; 93 94 var assign = Object.assign || function (target, sources) { 95 if (target == null) { 96 throw new TypeError('Object.assign target cannot be null or undefined'); 97 } 98 99 var to = Object(target); 100 101 for (var nextIndex = 1; nextIndex < arguments.length; nextIndex++) { 102 var nextSource = arguments[nextIndex]; 103 104 if (nextSource != null) { 105 _assign(to, Object(nextSource)); 106 } 107 } 108 109 return to; 110 }; 111 112 /** 113 * Keeps track of the current dispatcher. 114 */ 115 var ReactCurrentDispatcher = { 116 /** 117 * @internal 118 * @type {ReactComponent} 119 */ 120 current: null 121 }; 122 123 /** 124 * Keeps track of the current batch's configuration such as how long an update 125 * should suspend for if it needs to. 126 */ 127 var ReactCurrentBatchConfig = { 128 transition: 0 129 }; 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 })));
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sat Nov 23 01:00:02 2024 | Cross-referenced by PHPXref 0.7.1 |