UNPKG

105 kBJavaScriptView Raw
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})));