Projekt

Obecné

Profil

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