react-dom 16.1.0 → 16.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- /** @license React v16.1.0
1
+ /** @license React v16.2.1
2
2
  * react-dom.development.js
3
3
  *
4
4
  * Copyright (c) 2013-present, Facebook, Inc.
@@ -74,9 +74,9 @@ function invariant(condition, format, a, b, c, d, e, f) {
74
74
  }
75
75
  }
76
76
 
77
- var invariant_1$1 = invariant;
77
+ var invariant_1 = invariant;
78
78
 
79
- !React ? invariant_1$1(false, 'ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM.') : void 0;
79
+ !React ? invariant_1(false, 'ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM.') : void 0;
80
80
 
81
81
  // These attributes should be all lowercase to allow for
82
82
  // case insensitive checks
@@ -138,7 +138,7 @@ var DOMPropertyInjection = {
138
138
  var DOMMutationMethods = domPropertyConfig.DOMMutationMethods || {};
139
139
 
140
140
  for (var propName in Properties) {
141
- !!properties.hasOwnProperty(propName) ? invariant_1$1(false, "injectDOMPropertyConfig(...): You're trying to inject DOM property '%s' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.", propName) : void 0;
141
+ !!properties.hasOwnProperty(propName) ? invariant_1(false, "injectDOMPropertyConfig(...): You're trying to inject DOM property '%s' which has already been injected. You may be accidentally injecting the same DOM property config twice, or you may be injecting two configs that have conflicting property names.", propName) : void 0;
142
142
 
143
143
  var lowerCased = propName.toLowerCase();
144
144
  var propConfig = Properties[propName];
@@ -156,7 +156,7 @@ var DOMPropertyInjection = {
156
156
  hasOverloadedBooleanValue: checkMask(propConfig, Injection.HAS_OVERLOADED_BOOLEAN_VALUE),
157
157
  hasStringBooleanValue: checkMask(propConfig, Injection.HAS_STRING_BOOLEAN_VALUE)
158
158
  };
159
- !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? invariant_1$1(false, "DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s", propName) : void 0;
159
+ !(propertyInfo.hasBooleanValue + propertyInfo.hasNumericValue + propertyInfo.hasOverloadedBooleanValue <= 1) ? invariant_1(false, "DOMProperty: Value can be one of boolean, overloaded boolean, or numeric value, but not a combination: %s", propName) : void 0;
160
160
 
161
161
  if (DOMAttributeNames.hasOwnProperty(propName)) {
162
162
  var attributeName = DOMAttributeNames[propName];
@@ -291,13 +291,13 @@ var HTMLDOMPropertyConfig = {
291
291
  // name warnings.
292
292
  Properties: {
293
293
  allowFullScreen: HAS_BOOLEAN_VALUE,
294
- autoFocus: HAS_STRING_BOOLEAN_VALUE,
295
294
  // specifies target context for links with `preload` type
296
295
  async: HAS_BOOLEAN_VALUE,
297
- // autoFocus is polyfilled/normalized by AutoFocusUtils
298
- // autoFocus: HAS_BOOLEAN_VALUE,
296
+ // Note: there is a special case that prevents it from being written to the DOM
297
+ // on the client side because the browsers are inconsistent. Instead we call focus().
298
+ autoFocus: HAS_BOOLEAN_VALUE,
299
299
  autoPlay: HAS_BOOLEAN_VALUE,
300
- capture: HAS_BOOLEAN_VALUE,
300
+ capture: HAS_OVERLOADED_BOOLEAN_VALUE,
301
301
  checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
302
302
  cols: HAS_POSITIVE_NUMERIC_VALUE,
303
303
  contentEditable: HAS_STRING_BOOLEAN_VALUE,
@@ -454,7 +454,7 @@ var ReactErrorUtils = {
454
454
 
455
455
  injection: {
456
456
  injectErrorUtils: function (injectedErrorUtils) {
457
- !(typeof injectedErrorUtils.invokeGuardedCallback === 'function') ? invariant_1$1(false, 'Injected invokeGuardedCallback() must be a function.') : void 0;
457
+ !(typeof injectedErrorUtils.invokeGuardedCallback === 'function') ? invariant_1(false, 'Injected invokeGuardedCallback() must be a function.') : void 0;
458
458
  invokeGuardedCallback = injectedErrorUtils.invokeGuardedCallback;
459
459
  }
460
460
  },
@@ -516,7 +516,7 @@ var ReactErrorUtils = {
516
516
  ReactErrorUtils._hasCaughtError = false;
517
517
  return error;
518
518
  } else {
519
- invariant_1$1(false, 'clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.');
519
+ invariant_1(false, 'clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.');
520
520
  }
521
521
  }
522
522
  };
@@ -672,15 +672,15 @@ function recomputePluginOrdering() {
672
672
  for (var pluginName in namesToPlugins) {
673
673
  var pluginModule = namesToPlugins[pluginName];
674
674
  var pluginIndex = eventPluginOrder.indexOf(pluginName);
675
- !(pluginIndex > -1) ? invariant_1$1(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : void 0;
675
+ !(pluginIndex > -1) ? invariant_1(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : void 0;
676
676
  if (plugins[pluginIndex]) {
677
677
  continue;
678
678
  }
679
- !pluginModule.extractEvents ? invariant_1$1(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : void 0;
679
+ !pluginModule.extractEvents ? invariant_1(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : void 0;
680
680
  plugins[pluginIndex] = pluginModule;
681
681
  var publishedEvents = pluginModule.eventTypes;
682
682
  for (var eventName in publishedEvents) {
683
- !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? invariant_1$1(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : void 0;
683
+ !publishEventForPlugin(publishedEvents[eventName], pluginModule, eventName) ? invariant_1(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : void 0;
684
684
  }
685
685
  }
686
686
  }
@@ -694,7 +694,7 @@ function recomputePluginOrdering() {
694
694
  * @private
695
695
  */
696
696
  function publishEventForPlugin(dispatchConfig, pluginModule, eventName) {
697
- !!eventNameDispatchConfigs.hasOwnProperty(eventName) ? invariant_1$1(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : void 0;
697
+ !!eventNameDispatchConfigs.hasOwnProperty(eventName) ? invariant_1(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : void 0;
698
698
  eventNameDispatchConfigs[eventName] = dispatchConfig;
699
699
 
700
700
  var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
@@ -721,7 +721,7 @@ function publishEventForPlugin(dispatchConfig, pluginModule, eventName) {
721
721
  * @private
722
722
  */
723
723
  function publishRegistrationName(registrationName, pluginModule, eventName) {
724
- !!registrationNameModules[registrationName] ? invariant_1$1(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : void 0;
724
+ !!registrationNameModules[registrationName] ? invariant_1(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : void 0;
725
725
  registrationNameModules[registrationName] = pluginModule;
726
726
  registrationNameDependencies[registrationName] = pluginModule.eventTypes[eventName].dependencies;
727
727
 
@@ -780,7 +780,7 @@ var possibleRegistrationNames = {};
780
780
  * @see {EventPluginHub.injection.injectEventPluginOrder}
781
781
  */
782
782
  function injectEventPluginOrder(injectedEventPluginOrder) {
783
- !!eventPluginOrder ? invariant_1$1(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : void 0;
783
+ !!eventPluginOrder ? invariant_1(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : void 0;
784
784
  // Clone the ordering so it cannot be dynamically mutated.
785
785
  eventPluginOrder = Array.prototype.slice.call(injectedEventPluginOrder);
786
786
  recomputePluginOrdering();
@@ -804,7 +804,7 @@ function injectEventPluginsByName(injectedNamesToPlugins) {
804
804
  }
805
805
  var pluginModule = injectedNamesToPlugins[pluginName];
806
806
  if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== pluginModule) {
807
- !!namesToPlugins[pluginName] ? invariant_1$1(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : void 0;
807
+ !!namesToPlugins[pluginName] ? invariant_1(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : void 0;
808
808
  namesToPlugins[pluginName] = pluginModule;
809
809
  isOrderingDirty = true;
810
810
  }
@@ -844,20 +844,20 @@ function makeEmptyFunction(arg) {
844
844
  * primarily useful idiomatically for overridable function endpoints which
845
845
  * always need to be callable, since JS lacks a null-call idiom ala Cocoa.
846
846
  */
847
- var emptyFunction$1 = function emptyFunction() {};
847
+ var emptyFunction = function emptyFunction() {};
848
848
 
849
- emptyFunction$1.thatReturns = makeEmptyFunction;
850
- emptyFunction$1.thatReturnsFalse = makeEmptyFunction(false);
851
- emptyFunction$1.thatReturnsTrue = makeEmptyFunction(true);
852
- emptyFunction$1.thatReturnsNull = makeEmptyFunction(null);
853
- emptyFunction$1.thatReturnsThis = function () {
849
+ emptyFunction.thatReturns = makeEmptyFunction;
850
+ emptyFunction.thatReturnsFalse = makeEmptyFunction(false);
851
+ emptyFunction.thatReturnsTrue = makeEmptyFunction(true);
852
+ emptyFunction.thatReturnsNull = makeEmptyFunction(null);
853
+ emptyFunction.thatReturnsThis = function () {
854
854
  return this;
855
855
  };
856
- emptyFunction$1.thatReturnsArgument = function (arg) {
856
+ emptyFunction.thatReturnsArgument = function (arg) {
857
857
  return arg;
858
858
  };
859
859
 
860
- var emptyFunction_1 = emptyFunction$1;
860
+ var emptyFunction_1 = emptyFunction;
861
861
 
862
862
  /**
863
863
  * Copyright (c) 2014-present, Facebook, Inc.
@@ -920,7 +920,7 @@ var warning = emptyFunction_1;
920
920
  };
921
921
  }
922
922
 
923
- var warning_1$1 = warning;
923
+ var warning_1 = warning;
924
924
 
925
925
  var getFiberCurrentPropsFromNode = null;
926
926
  var getInstanceFromNode = null;
@@ -933,7 +933,7 @@ var injection$2 = {
933
933
  getNodeFromInstance = Injected.getNodeFromInstance;
934
934
 
935
935
  {
936
- warning_1$1(getNodeFromInstance && getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.');
936
+ warning_1(getNodeFromInstance && getInstanceFromNode, 'EventPluginUtils.injection.injectComponentTree(...): Injected ' + 'module is missing getNodeFromInstance or getInstanceFromNode.');
937
937
  }
938
938
  }
939
939
  };
@@ -955,7 +955,7 @@ var validateEventDispatches;
955
955
  var instancesIsArr = Array.isArray(dispatchInstances);
956
956
  var instancesLen = instancesIsArr ? dispatchInstances.length : dispatchInstances ? 1 : 0;
957
957
 
958
- warning_1$1(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.');
958
+ warning_1(instancesIsArr === listenersIsArr && instancesLen === listenersLen, 'EventPluginUtils: Invalid `event`.');
959
959
  };
960
960
  }
961
961
 
@@ -1032,7 +1032,7 @@ function executeDispatchesInOrder(event, simulated) {
1032
1032
  */
1033
1033
 
1034
1034
  function accumulateInto(current, next) {
1035
- !(next != null) ? invariant_1$1(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : void 0;
1035
+ !(next != null) ? invariant_1(false, 'accumulateInto(...): Accumulated items must not be null or undefined.') : void 0;
1036
1036
 
1037
1037
  if (current == null) {
1038
1038
  return next;
@@ -1188,7 +1188,7 @@ function getListener(inst, registrationName) {
1188
1188
  if (shouldPreventMouseEvent(registrationName, inst.type, props)) {
1189
1189
  return null;
1190
1190
  }
1191
- !(!listener || typeof listener === 'function') ? invariant_1$1(false, 'Expected `%s` listener to be a function, instead got a value of `%s` type.', registrationName, typeof listener) : void 0;
1191
+ !(!listener || typeof listener === 'function') ? invariant_1(false, 'Expected `%s` listener to be a function, instead got a value of `%s` type.', registrationName, typeof listener) : void 0;
1192
1192
  return listener;
1193
1193
  }
1194
1194
 
@@ -1237,12 +1237,17 @@ function processEventQueue(simulated) {
1237
1237
  // events get enqueued while processing.
1238
1238
  var processingEventQueue = eventQueue;
1239
1239
  eventQueue = null;
1240
+
1241
+ if (!processingEventQueue) {
1242
+ return;
1243
+ }
1244
+
1240
1245
  if (simulated) {
1241
1246
  forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);
1242
1247
  } else {
1243
1248
  forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);
1244
1249
  }
1245
- !!eventQueue ? invariant_1$1(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : void 0;
1250
+ !!eventQueue ? invariant_1(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : void 0;
1246
1251
  // This would be a good time to rethrow if any of the event handlers threw.
1247
1252
  ReactErrorUtils.rethrowCaughtError();
1248
1253
  }
@@ -1339,7 +1344,7 @@ function getNodeFromInstance$1(inst) {
1339
1344
 
1340
1345
  // Without this first invariant, passing a non-DOM-component triggers the next
1341
1346
  // invariant for a missing parent, which is super confusing.
1342
- invariant_1$1(false, 'getNodeFromInstance: Invalid argument.');
1347
+ invariant_1(false, 'getNodeFromInstance: Invalid argument.');
1343
1348
  }
1344
1349
 
1345
1350
  function getFiberCurrentPropsFromNode$1(node) {
@@ -1516,7 +1521,7 @@ function listenerAtPhase(inst, event, propagationPhase) {
1516
1521
  */
1517
1522
  function accumulateDirectionalDispatches(inst, phase, event) {
1518
1523
  {
1519
- warning_1$1(inst, 'Dispatching inst must not be null');
1524
+ warning_1(inst, 'Dispatching inst must not be null');
1520
1525
  }
1521
1526
  var listener = listenerAtPhase(inst, event, phase);
1522
1527
  if (listener) {
@@ -1919,7 +1924,7 @@ SyntheticEvent.augmentClass = function (Class, Interface) {
1919
1924
  return new Proxy(constructor.apply(that, args), {
1920
1925
  set: function (target, prop, value) {
1921
1926
  if (prop !== 'isPersistent' && !target.constructor.Interface.hasOwnProperty(prop) && shouldBeReleasedProperties.indexOf(prop) === -1) {
1922
- warning_1$1(didWarnForAddedNewProperty || target.isPersistent(), "This synthetic event is reused for performance reasons. If you're " + "seeing this, you're adding a new property in the synthetic event object. " + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.');
1927
+ warning_1(didWarnForAddedNewProperty || target.isPersistent(), "This synthetic event is reused for performance reasons. If you're " + "seeing this, you're adding a new property in the synthetic event object. " + 'The property is never released. See ' + 'https://fb.me/react-event-pooling for more information.');
1923
1928
  didWarnForAddedNewProperty = true;
1924
1929
  }
1925
1930
  target[prop] = value;
@@ -1964,7 +1969,7 @@ function getPooledWarningPropertyDefinition(propName, getVal) {
1964
1969
 
1965
1970
  function warn(action, result) {
1966
1971
  var warningCondition = false;
1967
- warning_1$1(warningCondition, "This synthetic event is reused for performance reasons. If you're seeing this, " + "you're %s `%s` on a released/nullified synthetic event. %s. " + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result);
1972
+ warning_1(warningCondition, "This synthetic event is reused for performance reasons. If you're seeing this, " + "you're %s `%s` on a released/nullified synthetic event. %s. " + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result);
1968
1973
  }
1969
1974
  }
1970
1975
 
@@ -1980,7 +1985,7 @@ function getPooledEvent(dispatchConfig, targetInst, nativeEvent, nativeInst) {
1980
1985
 
1981
1986
  function releasePooledEvent(event) {
1982
1987
  var EventConstructor = this;
1983
- !(event instanceof EventConstructor) ? invariant_1$1(false, 'Trying to release an event instance into a pool of a different type.') : void 0;
1988
+ !(event instanceof EventConstructor) ? invariant_1(false, 'Trying to release an event instance into a pool of a different type.') : void 0;
1984
1989
  event.destructor();
1985
1990
  if (EventConstructor.eventPool.length < EVENT_POOL_SIZE) {
1986
1991
  EventConstructor.eventPool.push(event);
@@ -2433,7 +2438,7 @@ function restoreStateOfTarget(target) {
2433
2438
  // Unmounted
2434
2439
  return;
2435
2440
  }
2436
- !(fiberHostComponent && typeof fiberHostComponent.restoreControlledState === 'function') ? invariant_1$1(false, 'Fiber needs to be injected to handle a fiber target for controlled events. This error is likely caused by a bug in React. Please file an issue.') : void 0;
2441
+ !(fiberHostComponent && typeof fiberHostComponent.restoreControlledState === 'function') ? invariant_1(false, 'Fiber needs to be injected to handle a fiber target for controlled events. This error is likely caused by a bug in React. Please file an issue.') : void 0;
2437
2442
  var props = getFiberCurrentPropsFromNode(internalInstance.stateNode);
2438
2443
  fiberHostComponent.restoreControlledState(internalInstance.stateNode, internalInstance.type, props);
2439
2444
  }
@@ -3247,7 +3252,7 @@ function isMounted(component) {
3247
3252
  if (owner !== null && owner.tag === ClassComponent) {
3248
3253
  var ownerFiber = owner;
3249
3254
  var instance = ownerFiber.stateNode;
3250
- warning_1$1(instance._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(ownerFiber) || 'A component');
3255
+ warning_1(instance._warnedAboutRefsInRender, '%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(ownerFiber) || 'A component');
3251
3256
  instance._warnedAboutRefsInRender = true;
3252
3257
  }
3253
3258
  }
@@ -3260,7 +3265,7 @@ function isMounted(component) {
3260
3265
  }
3261
3266
 
3262
3267
  function assertIsMounted(fiber) {
3263
- !(isFiberMountedImpl(fiber) === MOUNTED) ? invariant_1$1(false, 'Unable to find node on an unmounted component.') : void 0;
3268
+ !(isFiberMountedImpl(fiber) === MOUNTED) ? invariant_1(false, 'Unable to find node on an unmounted component.') : void 0;
3264
3269
  }
3265
3270
 
3266
3271
  function findCurrentFiberUsingSlowPath(fiber) {
@@ -3268,7 +3273,7 @@ function findCurrentFiberUsingSlowPath(fiber) {
3268
3273
  if (!alternate) {
3269
3274
  // If there is no alternate, then we only need to check if it is mounted.
3270
3275
  var state = isFiberMountedImpl(fiber);
3271
- !(state !== UNMOUNTED) ? invariant_1$1(false, 'Unable to find node on an unmounted component.') : void 0;
3276
+ !(state !== UNMOUNTED) ? invariant_1(false, 'Unable to find node on an unmounted component.') : void 0;
3272
3277
  if (state === MOUNTING) {
3273
3278
  return null;
3274
3279
  }
@@ -3307,7 +3312,7 @@ function findCurrentFiberUsingSlowPath(fiber) {
3307
3312
  }
3308
3313
  // We should never have an alternate for any mounting node. So the only
3309
3314
  // way this could possibly happen is if this was unmounted, if at all.
3310
- invariant_1$1(false, 'Unable to find node on an unmounted component.');
3315
+ invariant_1(false, 'Unable to find node on an unmounted component.');
3311
3316
  }
3312
3317
 
3313
3318
  if (a['return'] !== b['return']) {
@@ -3358,15 +3363,15 @@ function findCurrentFiberUsingSlowPath(fiber) {
3358
3363
  }
3359
3364
  _child = _child.sibling;
3360
3365
  }
3361
- !didFindChild ? invariant_1$1(false, 'Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.') : void 0;
3366
+ !didFindChild ? invariant_1(false, 'Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue.') : void 0;
3362
3367
  }
3363
3368
  }
3364
3369
 
3365
- !(a.alternate === b) ? invariant_1$1(false, 'Return fibers should always be each others\' alternates. This error is likely caused by a bug in React. Please file an issue.') : void 0;
3370
+ !(a.alternate === b) ? invariant_1(false, 'Return fibers should always be each others\' alternates. This error is likely caused by a bug in React. Please file an issue.') : void 0;
3366
3371
  }
3367
3372
  // If the root is not a host container, we're in a disconnected tree. I.e.
3368
3373
  // unmounted.
3369
- !(a.tag === HostRoot) ? invariant_1$1(false, 'Unable to find node on an unmounted component.') : void 0;
3374
+ !(a.tag === HostRoot) ? invariant_1(false, 'Unable to find node on an unmounted component.') : void 0;
3370
3375
  if (a.stateNode.current === a) {
3371
3376
  // We've determined that A is the current branch.
3372
3377
  return fiber;
@@ -3963,17 +3968,7 @@ function listenTo(registrationName, contentDocumentHandle) {
3963
3968
  for (var i = 0; i < dependencies.length; i++) {
3964
3969
  var dependency = dependencies[i];
3965
3970
  if (!(isListening.hasOwnProperty(dependency) && isListening[dependency])) {
3966
- if (dependency === 'topWheel') {
3967
- if (isEventSupported('wheel')) {
3968
- trapBubbledEvent('topWheel', 'wheel', mountAt);
3969
- } else if (isEventSupported('mousewheel')) {
3970
- trapBubbledEvent('topWheel', 'mousewheel', mountAt);
3971
- } else {
3972
- // Firefox needs to capture a different mouse scroll event.
3973
- // @see http://www.quirksmode.org/dom/events/tests/scroll.html
3974
- trapBubbledEvent('topWheel', 'DOMMouseScroll', mountAt);
3975
- }
3976
- } else if (dependency === 'topScroll') {
3971
+ if (dependency === 'topScroll') {
3977
3972
  trapCapturedEvent('topScroll', 'scroll', mountAt);
3978
3973
  } else if (dependency === 'topFocus' || dependency === 'topBlur') {
3979
3974
  trapCapturedEvent('topFocus', 'focus', mountAt);
@@ -4046,7 +4041,7 @@ function getActiveElement(doc) /*?DOMElement*/{
4046
4041
  }
4047
4042
  }
4048
4043
 
4049
- var getActiveElement_1$1 = getActiveElement;
4044
+ var getActiveElement_1 = getActiveElement;
4050
4045
 
4051
4046
  /**
4052
4047
  * Copyright (c) 2013-present, Facebook, Inc.
@@ -4112,7 +4107,7 @@ function shallowEqual(objA, objB) {
4112
4107
  return true;
4113
4108
  }
4114
4109
 
4115
- var shallowEqual_1$1 = shallowEqual;
4110
+ var shallowEqual_1 = shallowEqual;
4116
4111
 
4117
4112
  /**
4118
4113
  * Copyright (c) 2013-present, Facebook, Inc.
@@ -4190,7 +4185,7 @@ function containsNode(outerNode, innerNode) {
4190
4185
  }
4191
4186
  }
4192
4187
 
4193
- var containsNode_1$1 = containsNode;
4188
+ var containsNode_1 = containsNode;
4194
4189
 
4195
4190
  /**
4196
4191
  * Copyright (c) 2013-present, Facebook, Inc.
@@ -4215,7 +4210,7 @@ function focusNode(node) {
4215
4210
  } catch (e) {}
4216
4211
  }
4217
4212
 
4218
- var focusNode_1$1 = focusNode;
4213
+ var focusNode_1 = focusNode;
4219
4214
 
4220
4215
  /**
4221
4216
  * Given any node return the first leaf node without children.
@@ -4287,10 +4282,10 @@ function getOffsets(outerNode) {
4287
4282
  return null;
4288
4283
  }
4289
4284
 
4290
- var anchorNode = selection.anchorNode;
4291
- var anchorOffset = selection.anchorOffset;
4292
- var focusNode = selection.focusNode;
4293
- var focusOffset = selection.focusOffset;
4285
+ var anchorNode = selection.anchorNode,
4286
+ anchorOffset = selection.anchorOffset,
4287
+ focusNode = selection.focusNode,
4288
+ focusOffset = selection.focusOffset;
4294
4289
 
4295
4290
  // In Firefox, anchorNode and focusNode can be "anonymous divs", e.g. the
4296
4291
  // up/down buttons on an <input type="number">. Anonymous divs do not seem to
@@ -4299,6 +4294,7 @@ function getOffsets(outerNode) {
4299
4294
  // is to access a property that typically works for non-anonymous divs and
4300
4295
  // catch any error that may otherwise arise. See
4301
4296
  // https://bugzilla.mozilla.org/show_bug.cgi?id=208427
4297
+
4302
4298
  try {
4303
4299
  /* eslint-disable no-unused-expressions */
4304
4300
  anchorNode.nodeType;
@@ -4441,7 +4437,7 @@ function setOffsets(node, offsets) {
4441
4437
  }
4442
4438
 
4443
4439
  function isInDocument(node) {
4444
- return containsNode_1$1(document.documentElement, node);
4440
+ return containsNode_1(document.documentElement, node);
4445
4441
  }
4446
4442
 
4447
4443
  /**
@@ -4457,7 +4453,7 @@ function hasSelectionCapabilities(elem) {
4457
4453
  }
4458
4454
 
4459
4455
  function getSelectionInformation() {
4460
- var focusedElem = getActiveElement_1$1();
4456
+ var focusedElem = getActiveElement_1();
4461
4457
  return {
4462
4458
  focusedElem: focusedElem,
4463
4459
  selectionRange: hasSelectionCapabilities(focusedElem) ? getSelection$1(focusedElem) : null
@@ -4470,7 +4466,7 @@ function getSelectionInformation() {
4470
4466
  * nodes and place them back in, resulting in focus being lost.
4471
4467
  */
4472
4468
  function restoreSelection(priorSelectionInformation) {
4473
- var curFocusedElem = getActiveElement_1$1();
4469
+ var curFocusedElem = getActiveElement_1();
4474
4470
  var priorFocusedElem = priorSelectionInformation.focusedElem;
4475
4471
  var priorSelectionRange = priorSelectionInformation.selectionRange;
4476
4472
  if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {
@@ -4491,7 +4487,7 @@ function restoreSelection(priorSelectionInformation) {
4491
4487
  }
4492
4488
  }
4493
4489
 
4494
- focusNode_1$1(priorFocusedElem);
4490
+ focusNode_1(priorFocusedElem);
4495
4491
 
4496
4492
  for (var i = 0; i < ancestors.length; i++) {
4497
4493
  var info = ancestors[i];
@@ -4600,13 +4596,13 @@ function constructSelectEvent(nativeEvent, nativeEventTarget) {
4600
4596
  // selection (this matches native `select` event behavior). In HTML5, select
4601
4597
  // fires only on input and textarea thus if there's no focused element we
4602
4598
  // won't dispatch.
4603
- if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement_1$1()) {
4599
+ if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement_1()) {
4604
4600
  return null;
4605
4601
  }
4606
4602
 
4607
4603
  // Only fire when selection has actually changed.
4608
4604
  var currentSelection = getSelection(activeElement$1);
4609
- if (!lastSelection || !shallowEqual_1$1(lastSelection, currentSelection)) {
4605
+ if (!lastSelection || !shallowEqual_1(lastSelection, currentSelection)) {
4610
4606
  lastSelection = currentSelection;
4611
4607
 
4612
4608
  var syntheticEvent = SyntheticEvent$1.getPooled(eventTypes$3.select, activeElementInst$1, nativeEvent, nativeEventTarget);
@@ -5181,7 +5177,7 @@ var SimpleEventPlugin = {
5181
5177
  default:
5182
5178
  {
5183
5179
  if (knownHTMLTopLevelTypes.indexOf(topLevelType) === -1) {
5184
- warning_1$1(false, 'SimpleEventPlugin: Unhandled event type, `%s`. This warning ' + 'is likely caused by a bug in React. Please file an issue.', topLevelType);
5180
+ warning_1(false, 'SimpleEventPlugin: Unhandled event type, `%s`. This warning ' + 'is likely caused by a bug in React. Please file an issue.', topLevelType);
5185
5181
  }
5186
5182
  }
5187
5183
  // HTML Events
@@ -5217,8 +5213,6 @@ injection$1.injectEventPluginsByName({
5217
5213
 
5218
5214
  var enableAsyncSubtreeAPI = true;
5219
5215
  var enableAsyncSchedulingByDefaultInReactDOM = false;
5220
- // Exports React.Fragment
5221
- var enableReactFragment = false;
5222
5216
  // Exports ReactDOM.createRoot
5223
5217
  var enableCreateRoot = false;
5224
5218
  var enableUserTimingAPI = true;
@@ -5230,6 +5224,9 @@ var enableNoopReconciler = false;
5230
5224
  // Experimental persistent mode (CS):
5231
5225
  var enablePersistentReconciler = false;
5232
5226
 
5227
+ // Helps identify side effects in begin-phase lifecycle hooks and setState reducers:
5228
+ var debugRenderPhaseSideEffects = false;
5229
+
5233
5230
  // Only used in www builds.
5234
5231
 
5235
5232
  /**
@@ -5273,8 +5270,8 @@ var ReactPropTypesSecret_1 = ReactPropTypesSecret$1;
5273
5270
 
5274
5271
 
5275
5272
  {
5276
- var invariant$2 = invariant_1$1;
5277
- var warning$2 = warning_1$1;
5273
+ var invariant$2 = invariant_1;
5274
+ var warning$2 = warning_1;
5278
5275
  var ReactPropTypesSecret = ReactPropTypesSecret_1;
5279
5276
  var loggedTypeFailures = {};
5280
5277
  }
@@ -5321,7 +5318,7 @@ function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
5321
5318
  }
5322
5319
  }
5323
5320
 
5324
- var checkPropTypes_1$1 = checkPropTypes;
5321
+ var checkPropTypes_1 = checkPropTypes;
5325
5322
 
5326
5323
  var valueStack = [];
5327
5324
 
@@ -5342,14 +5339,14 @@ function createCursor(defaultValue) {
5342
5339
  function pop(cursor, fiber) {
5343
5340
  if (index < 0) {
5344
5341
  {
5345
- warning_1$1(false, 'Unexpected pop.');
5342
+ warning_1(false, 'Unexpected pop.');
5346
5343
  }
5347
5344
  return;
5348
5345
  }
5349
5346
 
5350
5347
  {
5351
5348
  if (fiber !== fiberStack[index]) {
5352
- warning_1$1(false, 'Unexpected Fiber popped.');
5349
+ warning_1(false, 'Unexpected Fiber popped.');
5353
5350
  }
5354
5351
  }
5355
5352
 
@@ -5501,6 +5498,7 @@ var hasScheduledUpdateInCurrentCommit = false;
5501
5498
  var hasScheduledUpdateInCurrentPhase = false;
5502
5499
  var commitCountInCurrentWorkLoop = 0;
5503
5500
  var effectCountInCurrentCommit = 0;
5501
+ var isWaitingForCallback = false;
5504
5502
  // During commits, we only show a measurement once per method name
5505
5503
  // to avoid stretch the commit phase with measurement overhead.
5506
5504
  var labelsInCurrentCommit = new Set();
@@ -5659,6 +5657,25 @@ function recordScheduleUpdate() {
5659
5657
  }
5660
5658
  }
5661
5659
 
5660
+ function startRequestCallbackTimer() {
5661
+ if (enableUserTimingAPI) {
5662
+ if (supportsUserTiming && !isWaitingForCallback) {
5663
+ isWaitingForCallback = true;
5664
+ beginMark('(Waiting for async callback...)');
5665
+ }
5666
+ }
5667
+ }
5668
+
5669
+ function stopRequestCallbackTimer(didExpire) {
5670
+ if (enableUserTimingAPI) {
5671
+ if (supportsUserTiming) {
5672
+ isWaitingForCallback = false;
5673
+ var warning = didExpire ? 'React was blocked by main thread' : null;
5674
+ endMark('(Waiting for async callback...)', '(Waiting for async callback...)', warning);
5675
+ }
5676
+ }
5677
+ }
5678
+
5662
5679
  function startWorkTimer(fiber) {
5663
5680
  if (enableUserTimingAPI) {
5664
5681
  if (!supportsUserTiming || shouldIgnoreFiber(fiber)) {
@@ -5910,7 +5927,7 @@ function getMaskedContext(workInProgress, unmaskedContext) {
5910
5927
 
5911
5928
  {
5912
5929
  var name = getComponentName(workInProgress) || 'Unknown';
5913
- checkPropTypes_1$1(contextTypes, context, 'context', name, ReactDebugCurrentFiber.getCurrentFiberStackAddendum);
5930
+ checkPropTypes_1(contextTypes, context, 'context', name, ReactDebugCurrentFiber.getCurrentFiberStackAddendum);
5914
5931
  }
5915
5932
 
5916
5933
  // Cache unmasked context so we can avoid recreating masked context unless necessary.
@@ -5949,7 +5966,7 @@ function popTopLevelContextObject(fiber) {
5949
5966
  }
5950
5967
 
5951
5968
  function pushTopLevelContextObject(fiber, context, didChange) {
5952
- !(contextStackCursor.cursor == null) ? invariant_1$1(false, 'Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.') : void 0;
5969
+ !(contextStackCursor.cursor == null) ? invariant_1(false, 'Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue.') : void 0;
5953
5970
 
5954
5971
  push(contextStackCursor, context, fiber);
5955
5972
  push(didPerformWorkStackCursor, didChange, fiber);
@@ -5967,7 +5984,7 @@ function processChildContext(fiber, parentContext) {
5967
5984
 
5968
5985
  if (!warnedAboutMissingGetChildContext[componentName]) {
5969
5986
  warnedAboutMissingGetChildContext[componentName] = true;
5970
- warning_1$1(false, '%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName);
5987
+ warning_1(false, '%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName);
5971
5988
  }
5972
5989
  }
5973
5990
  return parentContext;
@@ -5984,11 +6001,11 @@ function processChildContext(fiber, parentContext) {
5984
6001
  ReactDebugCurrentFiber.setCurrentPhase(null);
5985
6002
  }
5986
6003
  for (var contextKey in childContext) {
5987
- !(contextKey in childContextTypes) ? invariant_1$1(false, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', getComponentName(fiber) || 'Unknown', contextKey) : void 0;
6004
+ !(contextKey in childContextTypes) ? invariant_1(false, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', getComponentName(fiber) || 'Unknown', contextKey) : void 0;
5988
6005
  }
5989
6006
  {
5990
6007
  var name = getComponentName(fiber) || 'Unknown';
5991
- checkPropTypes_1$1(childContextTypes, childContext, 'child context', name,
6008
+ checkPropTypes_1(childContextTypes, childContext, 'child context', name,
5992
6009
  // In practice, there is one case in which we won't get a stack. It's when
5993
6010
  // somebody calls unstable_renderSubtreeIntoContainer() and we process
5994
6011
  // context from the parent component instance. The stack will be missing
@@ -6022,7 +6039,7 @@ function pushContextProvider(workInProgress) {
6022
6039
 
6023
6040
  function invalidateContextProvider(workInProgress, didChange) {
6024
6041
  var instance = workInProgress.stateNode;
6025
- !instance ? invariant_1$1(false, 'Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.') : void 0;
6042
+ !instance ? invariant_1(false, 'Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue.') : void 0;
6026
6043
 
6027
6044
  if (didChange) {
6028
6045
  // Merge parent and own context.
@@ -6053,7 +6070,7 @@ function resetContext() {
6053
6070
  function findCurrentUnmaskedContext(fiber) {
6054
6071
  // Currently this is only used with renderSubtreeIntoContainer; not sure if it
6055
6072
  // makes sense elsewhere
6056
- !(isFiberMounted(fiber) && fiber.tag === ClassComponent) ? invariant_1$1(false, 'Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.') : void 0;
6073
+ !(isFiberMounted(fiber) && fiber.tag === ClassComponent) ? invariant_1(false, 'Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue.') : void 0;
6057
6074
 
6058
6075
  var node = fiber;
6059
6076
  while (node.tag !== HostRoot) {
@@ -6061,7 +6078,7 @@ function findCurrentUnmaskedContext(fiber) {
6061
6078
  return node.stateNode.__reactInternalMemoizedMergedChildContext;
6062
6079
  }
6063
6080
  var parent = node['return'];
6064
- !parent ? invariant_1$1(false, 'Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.') : void 0;
6081
+ !parent ? invariant_1(false, 'Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue.') : void 0;
6065
6082
  node = parent;
6066
6083
  }
6067
6084
  return node.stateNode.context;
@@ -6081,6 +6098,10 @@ function msToExpirationTime(ms) {
6081
6098
  return (ms / UNIT_SIZE | 0) + MAGIC_NUMBER_OFFSET;
6082
6099
  }
6083
6100
 
6101
+ function expirationTimeToMs(expirationTime) {
6102
+ return (expirationTime - MAGIC_NUMBER_OFFSET) * UNIT_SIZE;
6103
+ }
6104
+
6084
6105
  function ceiling(num, precision) {
6085
6106
  return ((num / precision | 0) + 1) * precision;
6086
6107
  }
@@ -6097,8 +6118,7 @@ var AsyncUpdates = 1;
6097
6118
  try {
6098
6119
  var nonExtensibleObject = Object.preventExtensions({});
6099
6120
  /* eslint-disable no-new */
6100
- new Map([[nonExtensibleObject, null]]);
6101
- new Set([nonExtensibleObject]);
6121
+
6102
6122
  /* eslint-enable no-new */
6103
6123
  } catch (e) {
6104
6124
  // TODO: Consider warning about bad polyfills
@@ -6265,14 +6285,14 @@ function createFiberFromElement(element, internalContextTag, expirationTime) {
6265
6285
  var info = '';
6266
6286
  {
6267
6287
  if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
6268
- info += ' You likely forgot to export your component from the file ' + "it's defined in.";
6288
+ 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.";
6269
6289
  }
6270
6290
  var ownerName = owner ? getComponentName(owner) : null;
6271
6291
  if (ownerName) {
6272
6292
  info += '\n\nCheck the render method of `' + ownerName + '`.';
6273
6293
  }
6274
6294
  }
6275
- invariant_1$1(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info);
6295
+ invariant_1(false, 'Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s', type == null ? type : typeof type, info);
6276
6296
  }
6277
6297
 
6278
6298
  {
@@ -6362,7 +6382,7 @@ function catchErrors(fn) {
6362
6382
  } catch (err) {
6363
6383
  if (true && !hasLoggedError) {
6364
6384
  hasLoggedError = true;
6365
- warning_1$1(false, 'React DevTools encountered an error: %s', err);
6385
+ warning_1(false, 'React DevTools encountered an error: %s', err);
6366
6386
  }
6367
6387
  }
6368
6388
  };
@@ -6382,7 +6402,7 @@ function injectInternals(internals) {
6382
6402
  }
6383
6403
  if (!hook.supportsFiber) {
6384
6404
  {
6385
- warning_1$1(false, 'The installed version of React DevTools is too old and will not work ' + 'with the current version of React. Please update React DevTools. ' + 'https://fb.me/react-devtools');
6405
+ warning_1(false, 'The installed version of React DevTools is too old and will not work ' + 'with the current version of React. Please update React DevTools. ' + 'https://fb.me/react-devtools');
6386
6406
  }
6387
6407
  // DevTools exists, even though it doesn't support Fiber.
6388
6408
  return true;
@@ -6399,7 +6419,7 @@ function injectInternals(internals) {
6399
6419
  } catch (err) {
6400
6420
  // Catch all errors because it is unsafe to throw during initialization.
6401
6421
  {
6402
- warning_1$1(false, 'React DevTools encountered an error: %s.', err);
6422
+ warning_1(false, 'React DevTools encountered an error: %s.', err);
6403
6423
  }
6404
6424
  }
6405
6425
  // DevTools exists
@@ -6494,7 +6514,7 @@ function insertUpdateIntoFiber(fiber, update) {
6494
6514
  // Warn if an update is scheduled from inside an updater function.
6495
6515
  {
6496
6516
  if ((queue1.isProcessing || queue2 !== null && queue2.isProcessing) && !didWarnUpdateInsideUpdate) {
6497
- warning_1$1(false, 'An update (setState, replaceState, or forceUpdate) was scheduled ' + 'from inside an update function. Update functions should be pure, ' + 'with zero side-effects. Consider using componentDidUpdate or a ' + 'callback.');
6517
+ warning_1(false, 'An update (setState, replaceState, or forceUpdate) was scheduled ' + 'from inside an update function. Update functions should be pure, ' + 'with zero side-effects. Consider using componentDidUpdate or a ' + 'callback.');
6498
6518
  didWarnUpdateInsideUpdate = true;
6499
6519
  }
6500
6520
  }
@@ -6535,6 +6555,12 @@ function getStateFromUpdate(update, instance, prevState, props) {
6535
6555
  var partialState = update.partialState;
6536
6556
  if (typeof partialState === 'function') {
6537
6557
  var updateFn = partialState;
6558
+
6559
+ // Invoke setState callback an extra time to help detect side-effects.
6560
+ if (debugRenderPhaseSideEffects) {
6561
+ updateFn.call(instance, prevState, props);
6562
+ }
6563
+
6538
6564
  return updateFn.call(instance, prevState, props);
6539
6565
  } else {
6540
6566
  return partialState;
@@ -6675,7 +6701,7 @@ function commitCallbacks(queue, context) {
6675
6701
  // This update might be processed again. Clear the callback so it's only
6676
6702
  // called once.
6677
6703
  update.callback = null;
6678
- !(typeof _callback === 'function') ? invariant_1$1(false, 'Invalid argument passed as callback. Expected a function. Instead received: %s', _callback) : void 0;
6704
+ !(typeof _callback === 'function') ? invariant_1(false, 'Invalid argument passed as callback. Expected a function. Instead received: %s', _callback) : void 0;
6679
6705
  _callback.call(context);
6680
6706
  }
6681
6707
  }
@@ -6687,7 +6713,7 @@ var isArray = Array.isArray;
6687
6713
  var didWarnAboutStateAssignmentForComponent = {};
6688
6714
 
6689
6715
  var warnOnInvalidCallback = function (callback, callerName) {
6690
- warning_1$1(callback === null || typeof callback === 'function', '%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);
6716
+ warning_1(callback === null || typeof callback === 'function', '%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);
6691
6717
  };
6692
6718
 
6693
6719
  // This is so gross but it's at least non-critical and can be removed if
@@ -6698,7 +6724,7 @@ var isArray = Array.isArray;
6698
6724
  Object.defineProperty(fakeInternalInstance, '_processChildContext', {
6699
6725
  enumerable: false,
6700
6726
  value: function () {
6701
- invariant_1$1(false, '_processChildContext is not available in React 16+. This likely means you have multiple copies of React and are attempting to nest a React 15 tree inside a React 16 tree using unstable_renderSubtreeIntoContainer, which isn\'t supported. Try to make sure you have only one copy of React (and ideally, switch to ReactDOM.createPortal).');
6727
+ invariant_1(false, '_processChildContext is not available in React 16+. This likely means you have multiple copies of React and are attempting to nest a React 15 tree inside a React 16 tree using unstable_renderSubtreeIntoContainer, which isn\'t supported. Try to make sure you have only one copy of React (and ideally, switch to ReactDOM.createPortal).');
6702
6728
  }
6703
6729
  });
6704
6730
  Object.freeze(fakeInternalInstance);
@@ -6780,15 +6806,20 @@ var ReactFiberClassComponent = function (scheduleWork, computeExpirationForFiber
6780
6806
  var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, newContext);
6781
6807
  stopPhaseTimer();
6782
6808
 
6809
+ // Simulate an async bailout/interruption by invoking lifecycle twice.
6810
+ if (debugRenderPhaseSideEffects) {
6811
+ instance.shouldComponentUpdate(newProps, newState, newContext);
6812
+ }
6813
+
6783
6814
  {
6784
- warning_1$1(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', getComponentName(workInProgress) || 'Unknown');
6815
+ warning_1(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', getComponentName(workInProgress) || 'Unknown');
6785
6816
  }
6786
6817
 
6787
6818
  return shouldUpdate;
6788
6819
  }
6789
6820
 
6790
6821
  if (type.prototype && type.prototype.isPureReactComponent) {
6791
- return !shallowEqual_1$1(oldProps, newProps) || !shallowEqual_1$1(oldState, newState);
6822
+ return !shallowEqual_1(oldProps, newProps) || !shallowEqual_1(oldState, newState);
6792
6823
  }
6793
6824
 
6794
6825
  return true;
@@ -6803,43 +6834,43 @@ var ReactFiberClassComponent = function (scheduleWork, computeExpirationForFiber
6803
6834
 
6804
6835
  if (!renderPresent) {
6805
6836
  if (type.prototype && typeof type.prototype.render === 'function') {
6806
- warning_1$1(false, '%s(...): No `render` method found on the returned component ' + 'instance: did you accidentally return an object from the constructor?', name);
6837
+ warning_1(false, '%s(...): No `render` method found on the returned component ' + 'instance: did you accidentally return an object from the constructor?', name);
6807
6838
  } else {
6808
- warning_1$1(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name);
6839
+ warning_1(false, '%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name);
6809
6840
  }
6810
6841
  }
6811
6842
 
6812
6843
  var noGetInitialStateOnES6 = !instance.getInitialState || instance.getInitialState.isReactClassApproved || instance.state;
6813
- warning_1$1(noGetInitialStateOnES6, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name);
6844
+ warning_1(noGetInitialStateOnES6, 'getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name);
6814
6845
  var noGetDefaultPropsOnES6 = !instance.getDefaultProps || instance.getDefaultProps.isReactClassApproved;
6815
- warning_1$1(noGetDefaultPropsOnES6, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name);
6846
+ warning_1(noGetDefaultPropsOnES6, 'getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name);
6816
6847
  var noInstancePropTypes = !instance.propTypes;
6817
- warning_1$1(noInstancePropTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name);
6848
+ warning_1(noInstancePropTypes, 'propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name);
6818
6849
  var noInstanceContextTypes = !instance.contextTypes;
6819
- warning_1$1(noInstanceContextTypes, 'contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name);
6850
+ warning_1(noInstanceContextTypes, 'contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name);
6820
6851
  var noComponentShouldUpdate = typeof instance.componentShouldUpdate !== 'function';
6821
- warning_1$1(noComponentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name);
6852
+ warning_1(noComponentShouldUpdate, '%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name);
6822
6853
  if (type.prototype && type.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== 'undefined') {
6823
- warning_1$1(false, '%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentName(workInProgress) || 'A pure component');
6854
+ warning_1(false, '%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentName(workInProgress) || 'A pure component');
6824
6855
  }
6825
6856
  var noComponentDidUnmount = typeof instance.componentDidUnmount !== 'function';
6826
- warning_1$1(noComponentDidUnmount, '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name);
6857
+ warning_1(noComponentDidUnmount, '%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name);
6827
6858
  var noComponentDidReceiveProps = typeof instance.componentDidReceiveProps !== 'function';
6828
- warning_1$1(noComponentDidReceiveProps, '%s has a method called ' + 'componentDidReceiveProps(). But there is no such lifecycle method. ' + 'If you meant to update the state in response to changing props, ' + 'use componentWillReceiveProps(). If you meant to fetch data or ' + 'run side-effects or mutations after React has updated the UI, use componentDidUpdate().', name);
6859
+ warning_1(noComponentDidReceiveProps, '%s has a method called ' + 'componentDidReceiveProps(). But there is no such lifecycle method. ' + 'If you meant to update the state in response to changing props, ' + 'use componentWillReceiveProps(). If you meant to fetch data or ' + 'run side-effects or mutations after React has updated the UI, use componentDidUpdate().', name);
6829
6860
  var noComponentWillRecieveProps = typeof instance.componentWillRecieveProps !== 'function';
6830
- warning_1$1(noComponentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name);
6861
+ warning_1(noComponentWillRecieveProps, '%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name);
6831
6862
  var hasMutatedProps = instance.props !== workInProgress.pendingProps;
6832
- warning_1$1(instance.props === undefined || !hasMutatedProps, '%s(...): When calling super() in `%s`, make sure to pass ' + "up the same props that your component's constructor was passed.", name, name);
6863
+ warning_1(instance.props === undefined || !hasMutatedProps, '%s(...): When calling super() in `%s`, make sure to pass ' + "up the same props that your component's constructor was passed.", name, name);
6833
6864
  var noInstanceDefaultProps = !instance.defaultProps;
6834
- warning_1$1(noInstanceDefaultProps, 'Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name);
6865
+ warning_1(noInstanceDefaultProps, 'Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name);
6835
6866
  }
6836
6867
 
6837
6868
  var state = instance.state;
6838
6869
  if (state && (typeof state !== 'object' || isArray(state))) {
6839
- invariant_1$1(false, '%s.state: must be set to an object or null', getComponentName(workInProgress));
6870
+ warning_1(false, '%s.state: must be set to an object or null', getComponentName(workInProgress));
6840
6871
  }
6841
6872
  if (typeof instance.getChildContext === 'function') {
6842
- !(typeof workInProgress.type.childContextTypes === 'object') ? invariant_1$1(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', getComponentName(workInProgress)) : void 0;
6873
+ warning_1(typeof workInProgress.type.childContextTypes === 'object', '%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', getComponentName(workInProgress));
6843
6874
  }
6844
6875
  }
6845
6876
 
@@ -6879,12 +6910,16 @@ var ReactFiberClassComponent = function (scheduleWork, computeExpirationForFiber
6879
6910
  startPhaseTimer(workInProgress, 'componentWillMount');
6880
6911
  var oldState = instance.state;
6881
6912
  instance.componentWillMount();
6882
-
6883
6913
  stopPhaseTimer();
6884
6914
 
6915
+ // Simulate an async bailout/interruption by invoking lifecycle twice.
6916
+ if (debugRenderPhaseSideEffects) {
6917
+ instance.componentWillMount();
6918
+ }
6919
+
6885
6920
  if (oldState !== instance.state) {
6886
6921
  {
6887
- warning_1$1(false, '%s.componentWillMount(): Assigning directly to this.state is ' + "deprecated (except inside a component's " + 'constructor). Use setState instead.', getComponentName(workInProgress));
6922
+ warning_1(false, '%s.componentWillMount(): Assigning directly to this.state is ' + "deprecated (except inside a component's " + 'constructor). Use setState instead.', getComponentName(workInProgress));
6888
6923
  }
6889
6924
  updater.enqueueReplaceState(instance, instance.state, null);
6890
6925
  }
@@ -6896,11 +6931,16 @@ var ReactFiberClassComponent = function (scheduleWork, computeExpirationForFiber
6896
6931
  instance.componentWillReceiveProps(newProps, newContext);
6897
6932
  stopPhaseTimer();
6898
6933
 
6934
+ // Simulate an async bailout/interruption by invoking lifecycle twice.
6935
+ if (debugRenderPhaseSideEffects) {
6936
+ instance.componentWillReceiveProps(newProps, newContext);
6937
+ }
6938
+
6899
6939
  if (instance.state !== oldState) {
6900
6940
  {
6901
6941
  var componentName = getComponentName(workInProgress) || 'Component';
6902
6942
  if (!didWarnAboutStateAssignmentForComponent[componentName]) {
6903
- warning_1$1(false, '%s.componentWillReceiveProps(): Assigning directly to ' + "this.state is deprecated (except inside a component's " + 'constructor). Use setState instead.', componentName);
6943
+ warning_1(false, '%s.componentWillReceiveProps(): Assigning directly to ' + "this.state is deprecated (except inside a component's " + 'constructor). Use setState instead.', componentName);
6904
6944
  didWarnAboutStateAssignmentForComponent[componentName] = true;
6905
6945
  }
6906
6946
  }
@@ -6920,7 +6960,7 @@ var ReactFiberClassComponent = function (scheduleWork, computeExpirationForFiber
6920
6960
  var state = instance.state || null;
6921
6961
 
6922
6962
  var props = workInProgress.pendingProps;
6923
- !props ? invariant_1$1(false, 'There must be pending props for an initial mount. This error is likely caused by a bug in React. Please file an issue.') : void 0;
6963
+ !props ? invariant_1(false, 'There must be pending props for an initial mount. This error is likely caused by a bug in React. Please file an issue.') : void 0;
6924
6964
 
6925
6965
  var unmaskedContext = getUnmaskedContext(workInProgress);
6926
6966
 
@@ -7063,7 +7103,7 @@ var ReactFiberClassComponent = function (scheduleWork, computeExpirationForFiber
7063
7103
  // If there aren't any new props, then we'll reuse the memoized props.
7064
7104
  // This could be from already completed work.
7065
7105
  newProps = oldProps;
7066
- !(newProps != null) ? invariant_1$1(false, 'There should always be pending or memoized props. This error is likely caused by a bug in React. Please file an issue.') : void 0;
7106
+ !(newProps != null) ? invariant_1(false, 'There should always be pending or memoized props. This error is likely caused by a bug in React. Please file an issue.') : void 0;
7067
7107
  }
7068
7108
  var oldContext = instance.context;
7069
7109
  var newUnmaskedContext = getUnmaskedContext(workInProgress);
@@ -7105,6 +7145,11 @@ var ReactFiberClassComponent = function (scheduleWork, computeExpirationForFiber
7105
7145
  startPhaseTimer(workInProgress, 'componentWillUpdate');
7106
7146
  instance.componentWillUpdate(newProps, newState, newContext);
7107
7147
  stopPhaseTimer();
7148
+
7149
+ // Simulate an async bailout/interruption by invoking lifecycle twice.
7150
+ if (debugRenderPhaseSideEffects) {
7151
+ instance.componentWillUpdate(newProps, newState, newContext);
7152
+ }
7108
7153
  }
7109
7154
  if (typeof instance.componentDidUpdate === 'function') {
7110
7155
  workInProgress.effectTag |= Update;
@@ -7142,23 +7187,28 @@ var ReactFiberClassComponent = function (scheduleWork, computeExpirationForFiber
7142
7187
  };
7143
7188
  };
7144
7189
 
7145
- // The Symbol used to tag the special React types. If there is no native Symbol
7190
+ // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
7146
7191
  // nor polyfill, then a plain number is used for performance.
7147
- var REACT_PORTAL_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.portal') || 0xeaca;
7192
+ var hasSymbol = typeof Symbol === 'function' && Symbol['for'];
7148
7193
 
7149
- function createPortal$1(children, containerInfo,
7150
- // TODO: figure out the API for cross-renderer implementation.
7151
- implementation) {
7152
- var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
7194
+ var REACT_ELEMENT_TYPE = hasSymbol ? Symbol['for']('react.element') : 0xeac7;
7195
+ var REACT_CALL_TYPE = hasSymbol ? Symbol['for']('react.call') : 0xeac8;
7196
+ var REACT_RETURN_TYPE = hasSymbol ? Symbol['for']('react.return') : 0xeac9;
7197
+ var REACT_PORTAL_TYPE = hasSymbol ? Symbol['for']('react.portal') : 0xeaca;
7198
+ var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol['for']('react.fragment') : 0xeacb;
7153
7199
 
7154
- return {
7155
- // This tag allow us to uniquely identify this as a React Portal
7156
- $$typeof: REACT_PORTAL_TYPE,
7157
- key: key == null ? null : '' + key,
7158
- children: children,
7159
- containerInfo: containerInfo,
7160
- implementation: implementation
7161
- };
7200
+ var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
7201
+ var FAUX_ITERATOR_SYMBOL = '@@iterator';
7202
+
7203
+ function getIteratorFn(maybeIterable) {
7204
+ if (maybeIterable === null || typeof maybeIterable === 'undefined') {
7205
+ return null;
7206
+ }
7207
+ var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
7208
+ if (typeof maybeIterator === 'function') {
7209
+ return maybeIterator;
7210
+ }
7211
+ return null;
7162
7212
  }
7163
7213
 
7164
7214
  var getCurrentFiberStackAddendum$1 = ReactDebugCurrentFiber.getCurrentFiberStackAddendum;
@@ -7181,7 +7231,7 @@ var getCurrentFiberStackAddendum$1 = ReactDebugCurrentFiber.getCurrentFiberStack
7181
7231
  if (!child._store || child._store.validated || child.key != null) {
7182
7232
  return;
7183
7233
  }
7184
- !(typeof child._store === 'object') ? invariant_1$1(false, 'React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue.') : void 0;
7234
+ !(typeof child._store === 'object') ? invariant_1(false, 'React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue.') : void 0;
7185
7235
  child._store.validated = true;
7186
7236
 
7187
7237
  var currentComponentErrorInfo = 'Each child in an array or iterator should have a unique ' + '"key" prop. See https://fb.me/react-warning-keys for ' + 'more information.' + (getCurrentFiberStackAddendum$1() || '');
@@ -7190,44 +7240,12 @@ var getCurrentFiberStackAddendum$1 = ReactDebugCurrentFiber.getCurrentFiberStack
7190
7240
  }
7191
7241
  ownerHasKeyUseWarning[currentComponentErrorInfo] = true;
7192
7242
 
7193
- warning_1$1(false, 'Each child in an array or iterator should have a unique ' + '"key" prop. See https://fb.me/react-warning-keys for ' + 'more information.%s', getCurrentFiberStackAddendum$1());
7243
+ warning_1(false, 'Each child in an array or iterator should have a unique ' + '"key" prop. See https://fb.me/react-warning-keys for ' + 'more information.%s', getCurrentFiberStackAddendum$1());
7194
7244
  };
7195
7245
  }
7196
7246
 
7197
7247
  var isArray$1 = Array.isArray;
7198
7248
 
7199
- var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
7200
- var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
7201
-
7202
- // The Symbol used to tag the ReactElement-like types. If there is no native Symbol
7203
- // nor polyfill, then a plain number is used for performance.
7204
- var REACT_ELEMENT_TYPE;
7205
- var REACT_CALL_TYPE;
7206
- var REACT_RETURN_TYPE;
7207
- var REACT_FRAGMENT_TYPE;
7208
- if (typeof Symbol === 'function' && Symbol['for']) {
7209
- REACT_ELEMENT_TYPE = Symbol['for']('react.element');
7210
- REACT_CALL_TYPE = Symbol['for']('react.call');
7211
- REACT_RETURN_TYPE = Symbol['for']('react.return');
7212
- REACT_FRAGMENT_TYPE = Symbol['for']('react.fragment');
7213
- } else {
7214
- REACT_ELEMENT_TYPE = 0xeac7;
7215
- REACT_CALL_TYPE = 0xeac8;
7216
- REACT_RETURN_TYPE = 0xeac9;
7217
- REACT_FRAGMENT_TYPE = 0xeacb;
7218
- }
7219
-
7220
- function getIteratorFn(maybeIterable) {
7221
- if (maybeIterable === null || typeof maybeIterable === 'undefined') {
7222
- return null;
7223
- }
7224
- var iteratorFn = ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
7225
- if (typeof iteratorFn === 'function') {
7226
- return iteratorFn;
7227
- }
7228
- return null;
7229
- }
7230
-
7231
7249
  function coerceRef(current, element) {
7232
7250
  var mixedRef = element.ref;
7233
7251
  if (mixedRef !== null && typeof mixedRef !== 'function') {
@@ -7236,10 +7254,10 @@ function coerceRef(current, element) {
7236
7254
  var inst = void 0;
7237
7255
  if (owner) {
7238
7256
  var ownerFiber = owner;
7239
- !(ownerFiber.tag === ClassComponent) ? invariant_1$1(false, 'Stateless function components cannot have refs.') : void 0;
7257
+ !(ownerFiber.tag === ClassComponent) ? invariant_1(false, 'Stateless function components cannot have refs.') : void 0;
7240
7258
  inst = ownerFiber.stateNode;
7241
7259
  }
7242
- !inst ? invariant_1$1(false, 'Missing owner for string ref %s. This error is likely caused by a bug in React. Please file an issue.', mixedRef) : void 0;
7260
+ !inst ? invariant_1(false, 'Missing owner for string ref %s. This error is likely caused by a bug in React. Please file an issue.', mixedRef) : void 0;
7243
7261
  var stringRef = '' + mixedRef;
7244
7262
  // Check if previous string ref matches new string ref
7245
7263
  if (current !== null && current.ref !== null && current.ref._stringRef === stringRef) {
@@ -7256,8 +7274,8 @@ function coerceRef(current, element) {
7256
7274
  ref._stringRef = stringRef;
7257
7275
  return ref;
7258
7276
  } else {
7259
- !(typeof mixedRef === 'string') ? invariant_1$1(false, 'Expected ref to be a function or a string.') : void 0;
7260
- !element._owner ? invariant_1$1(false, 'Element ref was specified as a string (%s) but no owner was set. You may have multiple copies of React loaded. (details: https://fb.me/react-refs-must-have-owner).', mixedRef) : void 0;
7277
+ !(typeof mixedRef === 'string') ? invariant_1(false, 'Expected ref to be a function or a string.') : void 0;
7278
+ !element._owner ? invariant_1(false, 'Element ref was specified as a string (%s) but no owner was set. You may have multiple copies of React loaded. (details: https://fb.me/react-refs-must-have-owner).', mixedRef) : void 0;
7261
7279
  }
7262
7280
  }
7263
7281
  return mixedRef;
@@ -7269,7 +7287,7 @@ function throwOnInvalidObjectType(returnFiber, newChild) {
7269
7287
  {
7270
7288
  addendum = ' If you meant to render a collection of children, use an array ' + 'instead.' + (getCurrentFiberStackAddendum$1() || '');
7271
7289
  }
7272
- invariant_1$1(false, 'Objects are not valid as a React child (found: %s).%s', Object.prototype.toString.call(newChild) === '[object Object]' ? 'object with keys {' + Object.keys(newChild).join(', ') + '}' : newChild, addendum);
7290
+ invariant_1(false, 'Objects are not valid as a React child (found: %s).%s', Object.prototype.toString.call(newChild) === '[object Object]' ? 'object with keys {' + Object.keys(newChild).join(', ') + '}' : newChild, addendum);
7273
7291
  }
7274
7292
  }
7275
7293
 
@@ -7281,28 +7299,19 @@ function warnOnFunctionType() {
7281
7299
  }
7282
7300
  ownerHasFunctionTypeWarning[currentComponentErrorInfo] = true;
7283
7301
 
7284
- warning_1$1(false, 'Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.%s', getCurrentFiberStackAddendum$1() || '');
7302
+ warning_1(false, 'Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.%s', getCurrentFiberStackAddendum$1() || '');
7285
7303
  }
7286
7304
 
7287
7305
  // This wrapper function exists because I expect to clone the code in each path
7288
7306
  // to be able to optimize each path individually by branching early. This needs
7289
7307
  // a compiler or we can do it manually. Helpers that don't need this branching
7290
7308
  // live outside of this function.
7291
- function ChildReconciler(shouldClone, shouldTrackSideEffects) {
7309
+ function ChildReconciler(shouldTrackSideEffects) {
7292
7310
  function deleteChild(returnFiber, childToDelete) {
7293
7311
  if (!shouldTrackSideEffects) {
7294
7312
  // Noop.
7295
7313
  return;
7296
7314
  }
7297
- if (!shouldClone) {
7298
- // When we're reconciling in place we have a work in progress copy. We
7299
- // actually want the current copy. If there is no current copy, then we
7300
- // don't need to track deletion side-effects.
7301
- if (childToDelete.alternate === null) {
7302
- return;
7303
- }
7304
- childToDelete = childToDelete.alternate;
7305
- }
7306
7315
  // Deletions are added in reversed order so we add it to the front.
7307
7316
  // At this point, the return fiber's effect list is empty except for
7308
7317
  // deletions, so we can just append the deletion to the list. The remaining
@@ -7355,22 +7364,10 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
7355
7364
  function useFiber(fiber, pendingProps, expirationTime) {
7356
7365
  // We currently set sibling to null and index to 0 here because it is easy
7357
7366
  // to forget to do before returning it. E.g. for the single child case.
7358
- if (shouldClone) {
7359
- var clone = createWorkInProgress(fiber, pendingProps, expirationTime);
7360
- clone.index = 0;
7361
- clone.sibling = null;
7362
- return clone;
7363
- } else {
7364
- // We override the expiration time even if it is earlier, because if
7365
- // we're reconciling at a later time that means that this was
7366
- // down-prioritized.
7367
- fiber.expirationTime = expirationTime;
7368
- fiber.effectTag = NoEffect;
7369
- fiber.index = 0;
7370
- fiber.sibling = null;
7371
- fiber.pendingProps = pendingProps;
7372
- return fiber;
7373
- }
7367
+ var clone = createWorkInProgress(fiber, pendingProps, expirationTime);
7368
+ clone.index = 0;
7369
+ clone.sibling = null;
7370
+ return clone;
7374
7371
  }
7375
7372
 
7376
7373
  function placeChild(newFiber, lastPlacedIndex, newIndex) {
@@ -7729,7 +7726,7 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
7729
7726
  knownKeys.add(key);
7730
7727
  break;
7731
7728
  }
7732
- warning_1$1(false, 'Encountered two children with the same key, `%s`. ' + 'Keys should be unique so that components maintain their identity ' + 'across updates. Non-unique keys may cause children to be ' + 'duplicated and/or omitted — the behavior is unsupported and ' + 'could change in a future version.%s', key, getCurrentFiberStackAddendum$1());
7729
+ warning_1(false, 'Encountered two children with the same key, `%s`. ' + 'Keys should be unique so that components maintain their identity ' + 'across updates. Non-unique keys may cause children to be ' + 'duplicated and/or omitted — the behavior is unsupported and ' + 'could change in a future version.%s', key, getCurrentFiberStackAddendum$1());
7733
7730
  break;
7734
7731
  default:
7735
7732
  break;
@@ -7882,14 +7879,14 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
7882
7879
  // but using the iterator instead.
7883
7880
 
7884
7881
  var iteratorFn = getIteratorFn(newChildrenIterable);
7885
- !(typeof iteratorFn === 'function') ? invariant_1$1(false, 'An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.') : void 0;
7882
+ !(typeof iteratorFn === 'function') ? invariant_1(false, 'An object is not an iterable. This error is likely caused by a bug in React. Please file an issue.') : void 0;
7886
7883
 
7887
7884
  {
7888
7885
  // Warn about using Maps as children
7889
7886
  if (typeof newChildrenIterable.entries === 'function') {
7890
7887
  var possibleMap = newChildrenIterable;
7891
7888
  if (possibleMap.entries === iteratorFn) {
7892
- warning_1$1(didWarnAboutMaps, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.%s', getCurrentFiberStackAddendum$1());
7889
+ warning_1(didWarnAboutMaps, 'Using Maps as children is unsupported and will likely yield ' + 'unexpected results. Convert it to a sequence/iterable of keyed ' + 'ReactElements instead.%s', getCurrentFiberStackAddendum$1());
7893
7890
  didWarnAboutMaps = true;
7894
7891
  }
7895
7892
  }
@@ -7908,7 +7905,7 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
7908
7905
  }
7909
7906
 
7910
7907
  var newChildren = iteratorFn.call(newChildrenIterable);
7911
- !(newChildren != null) ? invariant_1$1(false, 'An iterable object provided no iterator.') : void 0;
7908
+ !(newChildren != null) ? invariant_1(false, 'An iterable object provided no iterator.') : void 0;
7912
7909
 
7913
7910
  var resultingFirstChild = null;
7914
7911
  var previousNewFiber = null;
@@ -8167,7 +8164,7 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
8167
8164
  // Handle top level unkeyed fragments as if they were arrays.
8168
8165
  // This leads to an ambiguity between <>{[...]}</> and <>...</>.
8169
8166
  // We treat the ambiguous cases above the same.
8170
- if (enableReactFragment && typeof newChild === 'object' && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null) {
8167
+ if (typeof newChild === 'object' && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null) {
8171
8168
  newChild = newChild.props.children;
8172
8169
  }
8173
8170
 
@@ -8230,7 +8227,7 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
8230
8227
  case FunctionalComponent:
8231
8228
  {
8232
8229
  var Component = returnFiber.type;
8233
- invariant_1$1(false, '%s(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.', Component.displayName || Component.name || 'Component');
8230
+ invariant_1(false, '%s(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null.', Component.displayName || Component.name || 'Component');
8234
8231
  }
8235
8232
  }
8236
8233
  }
@@ -8242,14 +8239,11 @@ function ChildReconciler(shouldClone, shouldTrackSideEffects) {
8242
8239
  return reconcileChildFibers;
8243
8240
  }
8244
8241
 
8245
- var reconcileChildFibers = ChildReconciler(true, true);
8246
-
8247
- var reconcileChildFibersInPlace = ChildReconciler(false, true);
8248
-
8249
- var mountChildFibersInPlace = ChildReconciler(false, false);
8242
+ var reconcileChildFibers = ChildReconciler(true);
8243
+ var mountChildFibers = ChildReconciler(false);
8250
8244
 
8251
8245
  function cloneChildFibers(current, workInProgress) {
8252
- !(current === null || workInProgress.child === current.child) ? invariant_1$1(false, 'Resuming work not yet implemented.') : void 0;
8246
+ !(current === null || workInProgress.child === current.child) ? invariant_1(false, 'Resuming work not yet implemented.') : void 0;
8253
8247
 
8254
8248
  if (workInProgress.child === null) {
8255
8249
  return;
@@ -8301,20 +8295,15 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8301
8295
  // won't update its child set by applying minimal side-effects. Instead,
8302
8296
  // we will add them all to the child before it gets rendered. That means
8303
8297
  // we can optimize this reconciliation pass by not tracking side-effects.
8304
- workInProgress.child = mountChildFibersInPlace(workInProgress, workInProgress.child, nextChildren, renderExpirationTime);
8305
- } else if (current.child === workInProgress.child) {
8298
+ workInProgress.child = mountChildFibers(workInProgress, null, nextChildren, renderExpirationTime);
8299
+ } else {
8306
8300
  // If the current child is the same as the work in progress, it means that
8307
8301
  // we haven't yet started any work on these children. Therefore, we use
8308
8302
  // the clone algorithm to create a copy of all the current children.
8309
8303
 
8310
8304
  // If we had any progressed work already, that is invalid at this point so
8311
8305
  // let's throw it out.
8312
- workInProgress.child = reconcileChildFibers(workInProgress, workInProgress.child, nextChildren, renderExpirationTime);
8313
- } else {
8314
- // If, on the other hand, it is already using a clone, that means we've
8315
- // already begun some work on this tree and we can continue where we left
8316
- // off by reconciling against the existing children.
8317
- workInProgress.child = reconcileChildFibersInPlace(workInProgress, workInProgress.child, nextChildren, renderExpirationTime);
8306
+ workInProgress.child = reconcileChildFibers(workInProgress, current.child, nextChildren, renderExpirationTime);
8318
8307
  }
8319
8308
  }
8320
8309
 
@@ -8393,7 +8382,7 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8393
8382
  mountClassInstance(workInProgress, renderExpirationTime);
8394
8383
  shouldUpdate = true;
8395
8384
  } else {
8396
- invariant_1$1(false, 'Resuming work not yet implemented.');
8385
+ invariant_1(false, 'Resuming work not yet implemented.');
8397
8386
  // In a resume, we'll already have an instance we can reuse.
8398
8387
  // shouldUpdate = resumeMountClassInstance(workInProgress, renderExpirationTime);
8399
8388
  }
@@ -8424,6 +8413,9 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8424
8413
  {
8425
8414
  ReactDebugCurrentFiber.setCurrentPhase('render');
8426
8415
  nextChildren = instance.render();
8416
+ if (debugRenderPhaseSideEffects) {
8417
+ instance.render();
8418
+ }
8427
8419
  ReactDebugCurrentFiber.setCurrentPhase(null);
8428
8420
  }
8429
8421
  // React DevTools reads this flag.
@@ -8482,7 +8474,7 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8482
8474
  // Ensure that children mount into this root without tracking
8483
8475
  // side-effects. This ensures that we don't store Placement effects on
8484
8476
  // nodes that will be hydrated.
8485
- workInProgress.child = mountChildFibersInPlace(workInProgress, workInProgress.child, element, renderExpirationTime);
8477
+ workInProgress.child = mountChildFibers(workInProgress, null, element, renderExpirationTime);
8486
8478
  } else {
8487
8479
  // Otherwise reset hydration state in case we aborted and resumed another
8488
8480
  // root.
@@ -8509,7 +8501,7 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8509
8501
  var nextProps = workInProgress.pendingProps;
8510
8502
  if (nextProps === null) {
8511
8503
  nextProps = memoizedProps;
8512
- !(nextProps !== null) ? invariant_1$1(false, 'We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue.') : void 0;
8504
+ !(nextProps !== null) ? invariant_1(false, 'We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue.') : void 0;
8513
8505
  }
8514
8506
  var prevProps = current !== null ? current.memoizedProps : null;
8515
8507
 
@@ -8565,7 +8557,7 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8565
8557
  }
8566
8558
 
8567
8559
  function mountIndeterminateComponent(current, workInProgress, renderExpirationTime) {
8568
- !(current === null) ? invariant_1$1(false, 'An indeterminate component should never have mounted. This error is likely caused by a bug in React. Please file an issue.') : void 0;
8560
+ !(current === null) ? invariant_1(false, 'An indeterminate component should never have mounted. This error is likely caused by a bug in React. Please file an issue.') : void 0;
8569
8561
  var fn = workInProgress.type;
8570
8562
  var props = workInProgress.pendingProps;
8571
8563
  var unmaskedContext = getUnmaskedContext(workInProgress);
@@ -8576,7 +8568,7 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8576
8568
  {
8577
8569
  if (fn.prototype && typeof fn.prototype.render === 'function') {
8578
8570
  var componentName = getComponentName(workInProgress);
8579
- warning_1$1(false, "The <%s /> component appears to have a render method, but doesn't extend React.Component. " + 'This is likely to cause errors. Change %s to extend React.Component instead.', componentName, componentName);
8571
+ warning_1(false, "The <%s /> component appears to have a render method, but doesn't extend React.Component. " + 'This is likely to cause errors. Change %s to extend React.Component instead.', componentName, componentName);
8580
8572
  }
8581
8573
  ReactCurrentOwner.current = workInProgress;
8582
8574
  value = fn(props, context);
@@ -8602,7 +8594,7 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8602
8594
  var Component = workInProgress.type;
8603
8595
 
8604
8596
  if (Component) {
8605
- warning_1$1(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component');
8597
+ warning_1(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component');
8606
8598
  }
8607
8599
  if (workInProgress.ref !== null) {
8608
8600
  var info = '';
@@ -8618,7 +8610,7 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8618
8610
  }
8619
8611
  if (!warnedAboutStatelessRefs[warningKey]) {
8620
8612
  warnedAboutStatelessRefs[warningKey] = true;
8621
- warning_1$1(false, 'Stateless function components cannot be given refs. ' + 'Attempts to access this ref will fail.%s%s', info, ReactDebugCurrentFiber.getCurrentFiberStackAddendum());
8613
+ warning_1(false, 'Stateless function components cannot be given refs. ' + 'Attempts to access this ref will fail.%s%s', info, ReactDebugCurrentFiber.getCurrentFiberStackAddendum());
8622
8614
  }
8623
8615
  }
8624
8616
  }
@@ -8635,7 +8627,7 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8635
8627
  // we don't do the bailout and we have to reuse existing props instead.
8636
8628
  if (nextCall === null) {
8637
8629
  nextCall = current && current.memoizedProps;
8638
- !(nextCall !== null) ? invariant_1$1(false, 'We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue.') : void 0;
8630
+ !(nextCall !== null) ? invariant_1(false, 'We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue.') : void 0;
8639
8631
  }
8640
8632
  } else if (nextCall === null || workInProgress.memoizedProps === nextCall) {
8641
8633
  nextCall = workInProgress.memoizedProps;
@@ -8649,11 +8641,9 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8649
8641
  // The following is a fork of reconcileChildrenAtExpirationTime but using
8650
8642
  // stateNode to store the child.
8651
8643
  if (current === null) {
8652
- workInProgress.stateNode = mountChildFibersInPlace(workInProgress, workInProgress.stateNode, nextChildren, renderExpirationTime);
8653
- } else if (current.child === workInProgress.child) {
8654
- workInProgress.stateNode = reconcileChildFibers(workInProgress, workInProgress.stateNode, nextChildren, renderExpirationTime);
8644
+ workInProgress.stateNode = mountChildFibers(workInProgress, workInProgress.stateNode, nextChildren, renderExpirationTime);
8655
8645
  } else {
8656
- workInProgress.stateNode = reconcileChildFibersInPlace(workInProgress, workInProgress.stateNode, nextChildren, renderExpirationTime);
8646
+ workInProgress.stateNode = reconcileChildFibers(workInProgress, workInProgress.stateNode, nextChildren, renderExpirationTime);
8657
8647
  }
8658
8648
 
8659
8649
  memoizeProps(workInProgress, nextCall);
@@ -8670,7 +8660,7 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8670
8660
  // we don't do the bailout and we have to reuse existing props instead.
8671
8661
  if (nextChildren === null) {
8672
8662
  nextChildren = current && current.memoizedProps;
8673
- !(nextChildren != null) ? invariant_1$1(false, 'We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue.') : void 0;
8663
+ !(nextChildren != null) ? invariant_1(false, 'We should always have pending or current props. This error is likely caused by a bug in React. Please file an issue.') : void 0;
8674
8664
  }
8675
8665
  } else if (nextChildren === null || workInProgress.memoizedProps === nextChildren) {
8676
8666
  return bailoutOnAlreadyFinishedWork(current, workInProgress);
@@ -8682,7 +8672,7 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8682
8672
  // flow doesn't do during mount. This doesn't happen at the root because
8683
8673
  // the root always starts with a "current" with a null child.
8684
8674
  // TODO: Consider unifying this with how the root works.
8685
- workInProgress.child = reconcileChildFibersInPlace(workInProgress, workInProgress.child, nextChildren, renderExpirationTime);
8675
+ workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderExpirationTime);
8686
8676
  memoizeProps(workInProgress, nextChildren);
8687
8677
  } else {
8688
8678
  reconcileChildren(current, workInProgress, nextChildren);
@@ -8796,7 +8786,7 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8796
8786
  case Fragment:
8797
8787
  return updateFragment(current, workInProgress);
8798
8788
  default:
8799
- invariant_1$1(false, 'Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.');
8789
+ invariant_1(false, 'Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.');
8800
8790
  }
8801
8791
  }
8802
8792
 
@@ -8810,7 +8800,7 @@ var ReactFiberBeginWork = function (config, hostContext, hydrationContext, sched
8810
8800
  pushHostRootContext(workInProgress);
8811
8801
  break;
8812
8802
  default:
8813
- invariant_1$1(false, 'Invalid type of work. This error is likely caused by a bug in React. Please file an issue.');
8803
+ invariant_1(false, 'Invalid type of work. This error is likely caused by a bug in React. Please file an issue.');
8814
8804
  }
8815
8805
 
8816
8806
  // Add an error effect so we can handle the error during the commit phase
@@ -8889,7 +8879,7 @@ var ReactFiberCompleteWork = function (config, hostContext, hydrationContext) {
8889
8879
  }
8890
8880
  while (node !== null) {
8891
8881
  if (node.tag === HostComponent || node.tag === HostText || node.tag === HostPortal) {
8892
- invariant_1$1(false, 'A call cannot have host component children.');
8882
+ invariant_1(false, 'A call cannot have host component children.');
8893
8883
  } else if (node.tag === ReturnComponent) {
8894
8884
  returns.push(node.type);
8895
8885
  } else if (node.child !== null) {
@@ -8910,7 +8900,7 @@ var ReactFiberCompleteWork = function (config, hostContext, hydrationContext) {
8910
8900
 
8911
8901
  function moveCallToHandlerPhase(current, workInProgress, renderExpirationTime) {
8912
8902
  var call = workInProgress.memoizedProps;
8913
- !call ? invariant_1$1(false, 'Should be resolved by now. This error is likely caused by a bug in React. Please file an issue.') : void 0;
8903
+ !call ? invariant_1(false, 'Should be resolved by now. This error is likely caused by a bug in React. Please file an issue.') : void 0;
8914
8904
 
8915
8905
  // First step of the call has completed. Now we need to do the second.
8916
8906
  // TODO: It would be nice to have a multi stage call represented by a
@@ -8989,7 +8979,7 @@ var ReactFiberCompleteWork = function (config, hostContext, hydrationContext) {
8989
8979
  }
8990
8980
  };
8991
8981
  } else {
8992
- invariant_1$1(false, 'Mutating reconciler is disabled.');
8982
+ invariant_1(false, 'Mutating reconciler is disabled.');
8993
8983
  }
8994
8984
  } else if (persistence) {
8995
8985
  if (enablePersistentReconciler) {
@@ -9087,7 +9077,7 @@ var ReactFiberCompleteWork = function (config, hostContext, hydrationContext) {
9087
9077
  }
9088
9078
  };
9089
9079
  } else {
9090
- invariant_1$1(false, 'Persistent reconciler is disabled.');
9080
+ invariant_1(false, 'Persistent reconciler is disabled.');
9091
9081
  }
9092
9082
  } else {
9093
9083
  if (enableNoopReconciler) {
@@ -9102,7 +9092,7 @@ var ReactFiberCompleteWork = function (config, hostContext, hydrationContext) {
9102
9092
  // Noop
9103
9093
  };
9104
9094
  } else {
9105
- invariant_1$1(false, 'Noop reconciler is disabled.');
9095
+ invariant_1(false, 'Noop reconciler is disabled.');
9106
9096
  }
9107
9097
  }
9108
9098
 
@@ -9170,7 +9160,7 @@ var ReactFiberCompleteWork = function (config, hostContext, hydrationContext) {
9170
9160
  }
9171
9161
  } else {
9172
9162
  if (!newProps) {
9173
- !(workInProgress.stateNode !== null) ? invariant_1$1(false, 'We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.') : void 0;
9163
+ !(workInProgress.stateNode !== null) ? invariant_1(false, 'We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.') : void 0;
9174
9164
  // This can happen when we abort work.
9175
9165
  return null;
9176
9166
  }
@@ -9220,7 +9210,7 @@ var ReactFiberCompleteWork = function (config, hostContext, hydrationContext) {
9220
9210
  updateHostText(current, workInProgress, oldText, newText);
9221
9211
  } else {
9222
9212
  if (typeof newText !== 'string') {
9223
- !(workInProgress.stateNode !== null) ? invariant_1$1(false, 'We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.') : void 0;
9213
+ !(workInProgress.stateNode !== null) ? invariant_1(false, 'We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue.') : void 0;
9224
9214
  // This can happen when we abort work.
9225
9215
  return null;
9226
9216
  }
@@ -9254,10 +9244,10 @@ var ReactFiberCompleteWork = function (config, hostContext, hydrationContext) {
9254
9244
  return null;
9255
9245
  // Error cases
9256
9246
  case IndeterminateComponent:
9257
- invariant_1$1(false, 'An indeterminate component should have become determinate before completing. This error is likely caused by a bug in React. Please file an issue.');
9247
+ invariant_1(false, 'An indeterminate component should have become determinate before completing. This error is likely caused by a bug in React. Please file an issue.');
9258
9248
  // eslint-disable-next-line no-fallthrough
9259
9249
  default:
9260
- invariant_1$1(false, 'Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.');
9250
+ invariant_1(false, 'Unknown unit of work tag. This error is likely caused by a bug in React. Please file an issue.');
9261
9251
  }
9262
9252
  }
9263
9253
 
@@ -9374,7 +9364,7 @@ var ReactFiberCommitWork = function (config, captureError) {
9374
9364
  }
9375
9365
  default:
9376
9366
  {
9377
- invariant_1$1(false, 'This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.');
9367
+ invariant_1(false, 'This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.');
9378
9368
  }
9379
9369
  }
9380
9370
  }
@@ -9528,7 +9518,7 @@ var ReactFiberCommitWork = function (config, captureError) {
9528
9518
  }
9529
9519
  default:
9530
9520
  {
9531
- invariant_1$1(false, 'This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.');
9521
+ invariant_1(false, 'This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.');
9532
9522
  }
9533
9523
  }
9534
9524
  };
@@ -9555,9 +9545,9 @@ var ReactFiberCommitWork = function (config, captureError) {
9555
9545
  commitDetachRef: commitDetachRef
9556
9546
  };
9557
9547
  } else if (persistence) {
9558
- invariant_1$1(false, 'Persistent reconciler is disabled.');
9548
+ invariant_1(false, 'Persistent reconciler is disabled.');
9559
9549
  } else {
9560
- invariant_1$1(false, 'Noop reconciler is disabled.');
9550
+ invariant_1(false, 'Noop reconciler is disabled.');
9561
9551
  }
9562
9552
  }
9563
9553
  var commitMount = mutation.commitMount,
@@ -9580,7 +9570,7 @@ var ReactFiberCommitWork = function (config, captureError) {
9580
9570
  }
9581
9571
  parent = parent['return'];
9582
9572
  }
9583
- invariant_1$1(false, 'Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.');
9573
+ invariant_1(false, 'Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.');
9584
9574
  }
9585
9575
 
9586
9576
  function isHostParent(fiber) {
@@ -9647,7 +9637,7 @@ var ReactFiberCommitWork = function (config, captureError) {
9647
9637
  isContainer = true;
9648
9638
  break;
9649
9639
  default:
9650
- invariant_1$1(false, 'Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.');
9640
+ invariant_1(false, 'Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue.');
9651
9641
  }
9652
9642
  if (parentFiber.effectTag & ContentReset) {
9653
9643
  // Reset the text content of the parent before doing any insertions
@@ -9712,7 +9702,7 @@ var ReactFiberCommitWork = function (config, captureError) {
9712
9702
  if (!currentParentIsValid) {
9713
9703
  var parent = node['return'];
9714
9704
  findParent: while (true) {
9715
- !(parent !== null) ? invariant_1$1(false, 'Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.') : void 0;
9705
+ !(parent !== null) ? invariant_1(false, 'Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue.') : void 0;
9716
9706
  switch (parent.tag) {
9717
9707
  case HostComponent:
9718
9708
  currentParent = parent.stateNode;
@@ -9815,7 +9805,7 @@ var ReactFiberCommitWork = function (config, captureError) {
9815
9805
  }
9816
9806
  case HostText:
9817
9807
  {
9818
- !(finishedWork.stateNode !== null) ? invariant_1$1(false, 'This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.') : void 0;
9808
+ !(finishedWork.stateNode !== null) ? invariant_1(false, 'This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue.') : void 0;
9819
9809
  var textInstance = finishedWork.stateNode;
9820
9810
  var newText = finishedWork.memoizedProps;
9821
9811
  // For hydration we reuse the update path but we treat the oldProps
@@ -9831,7 +9821,7 @@ var ReactFiberCommitWork = function (config, captureError) {
9831
9821
  }
9832
9822
  default:
9833
9823
  {
9834
- invariant_1$1(false, 'This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.');
9824
+ invariant_1(false, 'This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue.');
9835
9825
  }
9836
9826
  }
9837
9827
  }
@@ -9851,7 +9841,7 @@ var ReactFiberCommitWork = function (config, captureError) {
9851
9841
  commitDetachRef: commitDetachRef
9852
9842
  };
9853
9843
  } else {
9854
- invariant_1$1(false, 'Mutating reconciler is disabled.');
9844
+ invariant_1(false, 'Mutating reconciler is disabled.');
9855
9845
  }
9856
9846
  };
9857
9847
 
@@ -9867,7 +9857,7 @@ var ReactFiberHostContext = function (config) {
9867
9857
  var rootInstanceStackCursor = createCursor(NO_CONTEXT);
9868
9858
 
9869
9859
  function requiredContext(c) {
9870
- !(c !== NO_CONTEXT) ? invariant_1$1(false, 'Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.') : void 0;
9860
+ !(c !== NO_CONTEXT) ? invariant_1(false, 'Expected host context to exist. This error is likely caused by a bug in React. Please file an issue.') : void 0;
9871
9861
  return c;
9872
9862
  }
9873
9863
 
@@ -9957,10 +9947,10 @@ var ReactFiberHydrationContext = function (config) {
9957
9947
  resetHydrationState: function () {},
9958
9948
  tryToClaimNextHydratableInstance: function () {},
9959
9949
  prepareToHydrateHostInstance: function () {
9960
- invariant_1$1(false, 'Expected prepareToHydrateHostInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.');
9950
+ invariant_1(false, 'Expected prepareToHydrateHostInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.');
9961
9951
  },
9962
9952
  prepareToHydrateHostTextInstance: function () {
9963
- invariant_1$1(false, 'Expected prepareToHydrateHostTextInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.');
9953
+ invariant_1(false, 'Expected prepareToHydrateHostTextInstance() to never be called. This error is likely caused by a bug in React. Please file an issue.');
9964
9954
  },
9965
9955
  popHydrationState: function (fiber) {
9966
9956
  return false;
@@ -10072,18 +10062,28 @@ var ReactFiberHydrationContext = function (config) {
10072
10062
  }
10073
10063
  }
10074
10064
 
10075
- function canHydrate(fiber, nextInstance) {
10065
+ function tryHydrate(fiber, nextInstance) {
10076
10066
  switch (fiber.tag) {
10077
10067
  case HostComponent:
10078
10068
  {
10079
10069
  var type = fiber.type;
10080
10070
  var props = fiber.pendingProps;
10081
- return canHydrateInstance(nextInstance, type, props);
10071
+ var instance = canHydrateInstance(nextInstance, type, props);
10072
+ if (instance !== null) {
10073
+ fiber.stateNode = instance;
10074
+ return true;
10075
+ }
10076
+ return false;
10082
10077
  }
10083
10078
  case HostText:
10084
10079
  {
10085
10080
  var text = fiber.pendingProps;
10086
- return canHydrateTextInstance(nextInstance, text);
10081
+ var textInstance = canHydrateTextInstance(nextInstance, text);
10082
+ if (textInstance !== null) {
10083
+ fiber.stateNode = textInstance;
10084
+ return true;
10085
+ }
10086
+ return false;
10087
10087
  }
10088
10088
  default:
10089
10089
  return false;
@@ -10102,12 +10102,12 @@ var ReactFiberHydrationContext = function (config) {
10102
10102
  hydrationParentFiber = fiber;
10103
10103
  return;
10104
10104
  }
10105
- if (!canHydrate(fiber, nextInstance)) {
10105
+ if (!tryHydrate(fiber, nextInstance)) {
10106
10106
  // If we can't hydrate this instance let's try the next one.
10107
10107
  // We use this as a heuristic. It's based on intuition and not data so it
10108
10108
  // might be flawed or unnecessary.
10109
10109
  nextInstance = getNextHydratableSibling(nextInstance);
10110
- if (!nextInstance || !canHydrate(fiber, nextInstance)) {
10110
+ if (!nextInstance || !tryHydrate(fiber, nextInstance)) {
10111
10111
  // Nothing to hydrate. Make it an insertion.
10112
10112
  insertNonHydratedInstance(hydrationParentFiber, fiber);
10113
10113
  isHydrating = false;
@@ -10120,7 +10120,6 @@ var ReactFiberHydrationContext = function (config) {
10120
10120
  // fiber associated with it.
10121
10121
  deleteHydratableInstance(hydrationParentFiber, nextHydratableInstance);
10122
10122
  }
10123
- fiber.stateNode = nextInstance;
10124
10123
  hydrationParentFiber = fiber;
10125
10124
  nextHydratableInstance = getFirstHydratableChild(nextInstance);
10126
10125
  }
@@ -10254,6 +10253,12 @@ function logCapturedError(capturedError) {
10254
10253
  return;
10255
10254
  }
10256
10255
 
10256
+ var error = capturedError.error;
10257
+ var suppressLogging = error && error.suppressReactErrorLogging;
10258
+ if (suppressLogging) {
10259
+ return;
10260
+ }
10261
+
10257
10262
  {
10258
10263
  var componentName = capturedError.componentName,
10259
10264
  componentStack = capturedError.componentStack,
@@ -10300,7 +10305,7 @@ var clearCaughtError = ReactErrorUtils.clearCaughtError;
10300
10305
  if (didWarnStateUpdateForUnmountedComponent[componentName]) {
10301
10306
  return;
10302
10307
  }
10303
- warning_1$1(false, 'Can only update a mounted or mounting ' + 'component. This usually means you called setState, replaceState, ' + 'or forceUpdate on an unmounted component. This is a no-op.\n\nPlease ' + 'check the code for the %s component.', componentName);
10308
+ warning_1(false, 'Can only update a mounted or mounting ' + 'component. This usually means you called setState, replaceState, ' + 'or forceUpdate on an unmounted component. This is a no-op.\n\nPlease ' + 'check the code for the %s component.', componentName);
10304
10309
  didWarnStateUpdateForUnmountedComponent[componentName] = true;
10305
10310
  };
10306
10311
 
@@ -10310,14 +10315,14 @@ var clearCaughtError = ReactErrorUtils.clearCaughtError;
10310
10315
  if (didWarnSetStateChildContext) {
10311
10316
  return;
10312
10317
  }
10313
- warning_1$1(false, 'setState(...): Cannot call setState() inside getChildContext()');
10318
+ warning_1(false, 'setState(...): Cannot call setState() inside getChildContext()');
10314
10319
  didWarnSetStateChildContext = true;
10315
10320
  break;
10316
10321
  case 'render':
10317
10322
  if (didWarnAboutStateTransition) {
10318
10323
  return;
10319
10324
  }
10320
- warning_1$1(false, 'Cannot update during an existing state transition (such as within ' + "`render` or another component's constructor). Render methods should " + 'be a pure function of props and state; constructor side-effects are ' + 'an anti-pattern, but can be moved to `componentWillMount`.');
10325
+ warning_1(false, 'Cannot update during an existing state transition (such as within ' + "`render` or another component's constructor). Render methods should " + 'be a pure function of props and state; constructor side-effects are ' + 'an anti-pattern, but can be moved to `componentWillMount`.');
10321
10326
  didWarnAboutStateTransition = true;
10322
10327
  break;
10323
10328
  }
@@ -10349,6 +10354,7 @@ var ReactFiberScheduler = function (config) {
10349
10354
 
10350
10355
  var now = config.now,
10351
10356
  scheduleDeferredCallback = config.scheduleDeferredCallback,
10357
+ cancelDeferredCallback = config.cancelDeferredCallback,
10352
10358
  useSyncScheduling = config.useSyncScheduling,
10353
10359
  prepareForCommit = config.prepareForCommit,
10354
10360
  resetAfterCommit = config.resetAfterCommit;
@@ -10514,7 +10520,7 @@ var ReactFiberScheduler = function (config) {
10514
10520
  startCommitTimer();
10515
10521
 
10516
10522
  var root = finishedWork.stateNode;
10517
- !(root.current !== finishedWork) ? invariant_1$1(false, 'Cannot commit the same tree as before. This is probably a bug related to the return field. This error is likely caused by a bug in React. Please file an issue.') : void 0;
10523
+ !(root.current !== finishedWork) ? invariant_1(false, 'Cannot commit the same tree as before. This is probably a bug related to the return field. This error is likely caused by a bug in React. Please file an issue.') : void 0;
10518
10524
  root.isReadyForCommit = false;
10519
10525
 
10520
10526
  // Reset this to null before calling lifecycles
@@ -10555,7 +10561,7 @@ var ReactFiberScheduler = function (config) {
10555
10561
  }
10556
10562
  }
10557
10563
  if (didError) {
10558
- !(nextEffect !== null) ? invariant_1$1(false, 'Should have next effect. This error is likely caused by a bug in React. Please file an issue.') : void 0;
10564
+ !(nextEffect !== null) ? invariant_1(false, 'Should have next effect. This error is likely caused by a bug in React. Please file an issue.') : void 0;
10559
10565
  captureError(nextEffect, _error);
10560
10566
  // Clean-up
10561
10567
  if (nextEffect !== null) {
@@ -10590,7 +10596,7 @@ var ReactFiberScheduler = function (config) {
10590
10596
  }
10591
10597
  }
10592
10598
  if (_didError) {
10593
- !(nextEffect !== null) ? invariant_1$1(false, 'Should have next effect. This error is likely caused by a bug in React. Please file an issue.') : void 0;
10599
+ !(nextEffect !== null) ? invariant_1(false, 'Should have next effect. This error is likely caused by a bug in React. Please file an issue.') : void 0;
10594
10600
  captureError(nextEffect, _error2);
10595
10601
  if (nextEffect !== null) {
10596
10602
  nextEffect = nextEffect.nextEffect;
@@ -10756,6 +10762,7 @@ var ReactFiberScheduler = function (config) {
10756
10762
  {
10757
10763
  ReactDebugCurrentFiber.setCurrentFiber(workInProgress);
10758
10764
  }
10765
+
10759
10766
  var next = beginWork(current, workInProgress, nextRenderExpirationTime);
10760
10767
  {
10761
10768
  ReactDebugCurrentFiber.resetCurrentFiber();
@@ -10876,7 +10883,7 @@ var ReactFiberScheduler = function (config) {
10876
10883
  }
10877
10884
 
10878
10885
  function renderRoot(root, expirationTime) {
10879
- !!isWorking ? invariant_1$1(false, 'renderRoot was called recursively. This error is likely caused by a bug in React. Please file an issue.') : void 0;
10886
+ !!isWorking ? invariant_1(false, 'renderRoot was called recursively. This error is likely caused by a bug in React. Please file an issue.') : void 0;
10880
10887
  isWorking = true;
10881
10888
 
10882
10889
  // We're about to mutate the work-in-progress tree. If the root was pending
@@ -10924,7 +10931,7 @@ var ReactFiberScheduler = function (config) {
10924
10931
  // "Capture" the error by finding the nearest boundary. If there is no
10925
10932
  // error boundary, we use the root.
10926
10933
  var boundary = captureError(failedWork, error);
10927
- !(boundary !== null) ? invariant_1$1(false, 'Should have found an error boundary. This error is likely caused by a bug in React. Please file an issue.') : void 0;
10934
+ !(boundary !== null) ? invariant_1(false, 'Should have found an error boundary. This error is likely caused by a bug in React. Please file an issue.') : void 0;
10928
10935
 
10929
10936
  if (didFatal) {
10930
10937
  // The error we just captured was a fatal error. This happens
@@ -11076,7 +11083,10 @@ var ReactFiberScheduler = function (config) {
11076
11083
  } catch (e) {
11077
11084
  // Prevent cycle if logCapturedError() throws.
11078
11085
  // A cycle may still occur if logCapturedError renders a component that throws.
11079
- console.error(e);
11086
+ var suppressLogging = e && e.suppressReactErrorLogging;
11087
+ if (!suppressLogging) {
11088
+ console.error(e);
11089
+ }
11080
11090
  }
11081
11091
 
11082
11092
  // If we're in the commit phase, defer scheduling an update on the
@@ -11127,7 +11137,7 @@ var ReactFiberScheduler = function (config) {
11127
11137
  }
11128
11138
  }
11129
11139
 
11130
- !(capturedError != null) ? invariant_1$1(false, 'No error for given unit of work. This error is likely caused by a bug in React. Please file an issue.') : void 0;
11140
+ !(capturedError != null) ? invariant_1(false, 'No error for given unit of work. This error is likely caused by a bug in React. Please file an issue.') : void 0;
11131
11141
 
11132
11142
  switch (effectfulFiber.tag) {
11133
11143
  case ClassComponent:
@@ -11147,7 +11157,7 @@ var ReactFiberScheduler = function (config) {
11147
11157
  }
11148
11158
  return;
11149
11159
  default:
11150
- invariant_1$1(false, 'Invalid type of work. This error is likely caused by a bug in React. Please file an issue.');
11160
+ invariant_1(false, 'Invalid type of work. This error is likely caused by a bug in React. Please file an issue.');
11151
11161
  }
11152
11162
  }
11153
11163
 
@@ -11221,6 +11231,19 @@ var ReactFiberScheduler = function (config) {
11221
11231
  return scheduleWorkImpl(fiber, expirationTime, false);
11222
11232
  }
11223
11233
 
11234
+ function checkRootNeedsClearing(root, fiber, expirationTime) {
11235
+ if (!isWorking && root === nextRoot && expirationTime < nextRenderExpirationTime) {
11236
+ // Restart the root from the top.
11237
+ if (nextUnitOfWork !== null) {
11238
+ // This is an interruption. (Used for performance tracking.)
11239
+ interruptedBy = fiber;
11240
+ }
11241
+ nextRoot = null;
11242
+ nextUnitOfWork = null;
11243
+ nextRenderExpirationTime = NoWork;
11244
+ }
11245
+ }
11246
+
11224
11247
  function scheduleWorkImpl(fiber, expirationTime, isErrorRecovery) {
11225
11248
  recordScheduleUpdate();
11226
11249
 
@@ -11246,17 +11269,10 @@ var ReactFiberScheduler = function (config) {
11246
11269
  if (node['return'] === null) {
11247
11270
  if (node.tag === HostRoot) {
11248
11271
  var root = node.stateNode;
11249
- if (!isWorking && root === nextRoot && expirationTime <= nextRenderExpirationTime) {
11250
- // Restart the root from the top.
11251
- if (nextUnitOfWork !== null) {
11252
- // This is an interruption. (Used for performance tracking.)
11253
- interruptedBy = fiber;
11254
- }
11255
- nextRoot = null;
11256
- nextUnitOfWork = null;
11257
- nextRenderExpirationTime = NoWork;
11258
- }
11272
+
11273
+ checkRootNeedsClearing(root, fiber, expirationTime);
11259
11274
  requestWork(root, expirationTime);
11275
+ checkRootNeedsClearing(root, fiber, expirationTime);
11260
11276
  } else {
11261
11277
  {
11262
11278
  if (!isErrorRecovery && fiber.tag === ClassComponent) {
@@ -11308,7 +11324,8 @@ var ReactFiberScheduler = function (config) {
11308
11324
  var firstScheduledRoot = null;
11309
11325
  var lastScheduledRoot = null;
11310
11326
 
11311
- var isCallbackScheduled = false;
11327
+ var callbackExpirationTime = NoWork;
11328
+ var callbackID = -1;
11312
11329
  var isRendering = false;
11313
11330
  var nextFlushedRoot = null;
11314
11331
  var nextFlushedExpirationTime = NoWork;
@@ -11326,11 +11343,36 @@ var ReactFiberScheduler = function (config) {
11326
11343
 
11327
11344
  var timeHeuristicForUnitOfWork = 1;
11328
11345
 
11346
+ function scheduleCallbackWithExpiration(expirationTime) {
11347
+ if (callbackExpirationTime !== NoWork) {
11348
+ // A callback is already scheduled. Check its expiration time (timeout).
11349
+ if (expirationTime > callbackExpirationTime) {
11350
+ // Existing callback has sufficient timeout. Exit.
11351
+ return;
11352
+ } else {
11353
+ // Existing callback has insufficient timeout. Cancel and schedule a
11354
+ // new one.
11355
+ cancelDeferredCallback(callbackID);
11356
+ }
11357
+ // The request callback timer is already running. Don't start a new one.
11358
+ } else {
11359
+ startRequestCallbackTimer();
11360
+ }
11361
+
11362
+ // Compute a timeout for the given expiration time.
11363
+ var currentMs = now() - startTime;
11364
+ var expirationMs = expirationTimeToMs(expirationTime);
11365
+ var timeout = expirationMs - currentMs;
11366
+
11367
+ callbackExpirationTime = expirationTime;
11368
+ callbackID = scheduleDeferredCallback(performAsyncWork, { timeout: timeout });
11369
+ }
11370
+
11329
11371
  // requestWork is called by the scheduler whenever a root receives an update.
11330
11372
  // It's up to the renderer to call renderRoot at some point in the future.
11331
11373
  function requestWork(root, expirationTime) {
11332
11374
  if (nestedUpdateCount > NESTED_UPDATE_LIMIT) {
11333
- invariant_1$1(false, 'Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.');
11375
+ invariant_1(false, 'Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops.');
11334
11376
  }
11335
11377
 
11336
11378
  // Add the root to the schedule.
@@ -11366,7 +11408,9 @@ var ReactFiberScheduler = function (config) {
11366
11408
  if (isUnbatchingUpdates) {
11367
11409
  // ...unless we're inside unbatchedUpdates, in which case we should
11368
11410
  // flush it now.
11369
- performWorkOnRoot(root, Sync);
11411
+ nextFlushedRoot = root;
11412
+ nextFlushedExpirationTime = Sync;
11413
+ performWorkOnRoot(nextFlushedRoot, nextFlushedExpirationTime);
11370
11414
  }
11371
11415
  return;
11372
11416
  }
@@ -11374,9 +11418,8 @@ var ReactFiberScheduler = function (config) {
11374
11418
  // TODO: Get rid of Sync and use current time?
11375
11419
  if (expirationTime === Sync) {
11376
11420
  performWork(Sync, null);
11377
- } else if (!isCallbackScheduled) {
11378
- isCallbackScheduled = true;
11379
- scheduleDeferredCallback(performAsyncWork);
11421
+ } else {
11422
+ scheduleCallbackWithExpiration(expirationTime);
11380
11423
  }
11381
11424
  }
11382
11425
 
@@ -11395,7 +11438,7 @@ var ReactFiberScheduler = function (config) {
11395
11438
  // TODO: This check is redudant, but Flow is confused by the branch
11396
11439
  // below where we set lastScheduledRoot to null, even though we break
11397
11440
  // from the loop right after.
11398
- !(previousScheduledRoot !== null && lastScheduledRoot !== null) ? invariant_1$1(false, 'Should have a previous and last root. This error is likely caused by a bug in React. Please file an issue.') : void 0;
11441
+ !(previousScheduledRoot !== null && lastScheduledRoot !== null) ? invariant_1(false, 'Should have a previous and last root. This error is likely caused by a bug in React. Please file an issue.') : void 0;
11399
11442
  if (root === root.nextScheduledRoot) {
11400
11443
  // This is the only root in the list.
11401
11444
  root.nextScheduledRoot = null;
@@ -11454,8 +11497,14 @@ var ReactFiberScheduler = function (config) {
11454
11497
  deadline = dl;
11455
11498
 
11456
11499
  // Keep working on roots until there's no more work, or until the we reach
11457
- // the deadlne.
11500
+ // the deadline.
11458
11501
  findHighestPriorityRoot();
11502
+
11503
+ if (enableUserTimingAPI && deadline !== null) {
11504
+ var didExpire = nextFlushedExpirationTime < recalculateCurrentTime();
11505
+ stopRequestCallbackTimer(didExpire);
11506
+ }
11507
+
11459
11508
  while (nextFlushedRoot !== null && nextFlushedExpirationTime !== NoWork && (minExpirationTime === NoWork || nextFlushedExpirationTime <= minExpirationTime) && !deadlineDidExpire) {
11460
11509
  performWorkOnRoot(nextFlushedRoot, nextFlushedExpirationTime);
11461
11510
  // Find the next highest priority work.
@@ -11467,12 +11516,12 @@ var ReactFiberScheduler = function (config) {
11467
11516
 
11468
11517
  // If we're inside a callback, set this to false since we just completed it.
11469
11518
  if (deadline !== null) {
11470
- isCallbackScheduled = false;
11519
+ callbackExpirationTime = NoWork;
11520
+ callbackID = -1;
11471
11521
  }
11472
11522
  // If there's work left over, schedule a new callback.
11473
- if (nextFlushedRoot !== null && !isCallbackScheduled) {
11474
- isCallbackScheduled = true;
11475
- scheduleDeferredCallback(performAsyncWork);
11523
+ if (nextFlushedExpirationTime !== NoWork) {
11524
+ scheduleCallbackWithExpiration(nextFlushedExpirationTime);
11476
11525
  }
11477
11526
 
11478
11527
  // Clean-up.
@@ -11489,7 +11538,7 @@ var ReactFiberScheduler = function (config) {
11489
11538
  }
11490
11539
 
11491
11540
  function performWorkOnRoot(root, expirationTime) {
11492
- !!isRendering ? invariant_1$1(false, 'performWorkOnRoot was called recursively. This error is likely caused by a bug in React. Please file an issue.') : void 0;
11541
+ !!isRendering ? invariant_1(false, 'performWorkOnRoot was called recursively. This error is likely caused by a bug in React. Please file an issue.') : void 0;
11493
11542
 
11494
11543
  isRendering = true;
11495
11544
 
@@ -11545,6 +11594,8 @@ var ReactFiberScheduler = function (config) {
11545
11594
  return false;
11546
11595
  }
11547
11596
  if (deadline.timeRemaining() > timeHeuristicForUnitOfWork) {
11597
+ // Disregard deadline.didTimeout. Only expired work should be flushed
11598
+ // during a timeout. This path is only hit for non-expired work.
11548
11599
  return false;
11549
11600
  }
11550
11601
  deadlineDidExpire = true;
@@ -11554,7 +11605,7 @@ var ReactFiberScheduler = function (config) {
11554
11605
  // TODO: Not happy about this hook. Conceptually, renderRoot should return a
11555
11606
  // tuple of (isReadyForCommit, didError, error)
11556
11607
  function onUncaughtError(error) {
11557
- !(nextFlushedRoot !== null) ? invariant_1$1(false, 'Should be working on a root. This error is likely caused by a bug in React. Please file an issue.') : void 0;
11608
+ !(nextFlushedRoot !== null) ? invariant_1(false, 'Should be working on a root. This error is likely caused by a bug in React. Please file an issue.') : void 0;
11558
11609
  // Unschedule this root so we don't work on it again until there's
11559
11610
  // another update.
11560
11611
  nextFlushedRoot.remainingExpirationTime = NoWork;
@@ -11602,7 +11653,7 @@ var ReactFiberScheduler = function (config) {
11602
11653
  return syncUpdates(fn);
11603
11654
  } finally {
11604
11655
  isBatchingUpdates = previousIsBatchingUpdates;
11605
- !!isRendering ? invariant_1$1(false, 'flushSync was called from inside a lifecycle method. It cannot be called when React is already rendering.') : void 0;
11656
+ !!isRendering ? invariant_1(false, 'flushSync was called from inside a lifecycle method. It cannot be called when React is already rendering.') : void 0;
11606
11657
  performWork(Sync, null);
11607
11658
  }
11608
11659
  }
@@ -11652,13 +11703,13 @@ var ReactFiberReconciler$1 = function (config) {
11652
11703
  {
11653
11704
  if (ReactDebugCurrentFiber.phase === 'render' && ReactDebugCurrentFiber.current !== null && !didWarnAboutNestedUpdates) {
11654
11705
  didWarnAboutNestedUpdates = true;
11655
- warning_1$1(false, 'Render methods should be a pure function of props and state; ' + 'triggering nested component updates from render is not allowed. ' + 'If necessary, trigger nested updates in componentDidUpdate.\n\n' + 'Check the render method of %s.', getComponentName(ReactDebugCurrentFiber.current) || 'Unknown');
11706
+ warning_1(false, 'Render methods should be a pure function of props and state; ' + 'triggering nested component updates from render is not allowed. ' + 'If necessary, trigger nested updates in componentDidUpdate.\n\n' + 'Check the render method of %s.', getComponentName(ReactDebugCurrentFiber.current) || 'Unknown');
11656
11707
  }
11657
11708
  }
11658
11709
 
11659
11710
  callback = callback === undefined ? null : callback;
11660
11711
  {
11661
- warning_1$1(callback === null || typeof callback === 'function', 'render(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callback);
11712
+ warning_1(callback === null || typeof callback === 'function', 'render(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callback);
11662
11713
  }
11663
11714
 
11664
11715
  var expirationTime = void 0;
@@ -11787,9 +11838,24 @@ var ReactFiberReconciler$3 = ( ReactFiberReconciler$2 && ReactFiberReconciler$1
11787
11838
  // This is hacky but makes it work with both Rollup and Jest.
11788
11839
  var reactReconciler = ReactFiberReconciler$3['default'] ? ReactFiberReconciler$3['default'] : ReactFiberReconciler$3;
11789
11840
 
11841
+ function createPortal$1(children, containerInfo,
11842
+ // TODO: figure out the API for cross-renderer implementation.
11843
+ implementation) {
11844
+ var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
11845
+
11846
+ return {
11847
+ // This tag allow us to uniquely identify this as a React Portal
11848
+ $$typeof: REACT_PORTAL_TYPE,
11849
+ key: key == null ? null : '' + key,
11850
+ children: children,
11851
+ containerInfo: containerInfo,
11852
+ implementation: implementation
11853
+ };
11854
+ }
11855
+
11790
11856
  // TODO: this is special because it gets imported during build.
11791
11857
 
11792
- var ReactVersion = '16.1.0';
11858
+ var ReactVersion = '16.2.1';
11793
11859
 
11794
11860
  // a requestAnimationFrame, storing the time for the start of the frame, then
11795
11861
  // scheduling a postMessage which gets scheduled after paint. Within the
@@ -11800,7 +11866,7 @@ var ReactVersion = '16.1.0';
11800
11866
 
11801
11867
  {
11802
11868
  if (ExecutionEnvironment_1.canUseDOM && typeof requestAnimationFrame !== 'function') {
11803
- warning_1$1(false, 'React depends on requestAnimationFrame. Make sure that you load a ' + 'polyfill in older browsers. http://fb.me/react-polyfills');
11869
+ warning_1(false, 'React depends on requestAnimationFrame. Make sure that you load a ' + 'polyfill in older browsers. http://fb.me/react-polyfills');
11804
11870
  }
11805
11871
  }
11806
11872
 
@@ -11819,24 +11885,28 @@ if (hasNativePerformanceNow) {
11819
11885
 
11820
11886
  // TODO: There's no way to cancel, because Fiber doesn't atm.
11821
11887
  var rIC = void 0;
11888
+ var cIC = void 0;
11822
11889
 
11823
11890
  if (!ExecutionEnvironment_1.canUseDOM) {
11824
11891
  rIC = function (frameCallback) {
11825
- setTimeout(function () {
11892
+ return setTimeout(function () {
11826
11893
  frameCallback({
11827
11894
  timeRemaining: function () {
11828
11895
  return Infinity;
11829
11896
  }
11830
11897
  });
11831
11898
  });
11832
- return 0;
11833
11899
  };
11834
- } else if (typeof requestIdleCallback !== 'function') {
11835
- // Polyfill requestIdleCallback.
11900
+ cIC = function (timeoutID) {
11901
+ clearTimeout(timeoutID);
11902
+ };
11903
+ } else if (typeof requestIdleCallback !== 'function' || typeof cancelIdleCallback !== 'function') {
11904
+ // Polyfill requestIdleCallback and cancelIdleCallback
11836
11905
 
11837
11906
  var scheduledRICCallback = null;
11838
-
11839
11907
  var isIdleScheduled = false;
11908
+ var timeoutTime = -1;
11909
+
11840
11910
  var isAnimationFrameScheduled = false;
11841
11911
 
11842
11912
  var frameDeadline = 0;
@@ -11849,17 +11919,21 @@ if (!ExecutionEnvironment_1.canUseDOM) {
11849
11919
  var frameDeadlineObject;
11850
11920
  if (hasNativePerformanceNow) {
11851
11921
  frameDeadlineObject = {
11922
+ didTimeout: false,
11852
11923
  timeRemaining: function () {
11853
11924
  // We assume that if we have a performance timer that the rAF callback
11854
11925
  // gets a performance timer value. Not sure if this is always true.
11855
- return frameDeadline - performance.now();
11926
+ var remaining = frameDeadline - performance.now();
11927
+ return remaining > 0 ? remaining : 0;
11856
11928
  }
11857
11929
  };
11858
11930
  } else {
11859
11931
  frameDeadlineObject = {
11932
+ didTimeout: false,
11860
11933
  timeRemaining: function () {
11861
11934
  // Fallback to Date.now()
11862
- return frameDeadline - Date.now();
11935
+ var remaining = frameDeadline - Date.now();
11936
+ return remaining > 0 ? remaining : 0;
11863
11937
  }
11864
11938
  };
11865
11939
  }
@@ -11870,7 +11944,33 @@ if (!ExecutionEnvironment_1.canUseDOM) {
11870
11944
  if (event.source !== window || event.data !== messageKey) {
11871
11945
  return;
11872
11946
  }
11947
+
11873
11948
  isIdleScheduled = false;
11949
+
11950
+ var currentTime = now();
11951
+ if (frameDeadline - currentTime <= 0) {
11952
+ // There's no time left in this idle period. Check if the callback has
11953
+ // a timeout and whether it's been exceeded.
11954
+ if (timeoutTime !== -1 && timeoutTime <= currentTime) {
11955
+ // Exceeded the timeout. Invoke the callback even though there's no
11956
+ // time left.
11957
+ frameDeadlineObject.didTimeout = true;
11958
+ } else {
11959
+ // No timeout.
11960
+ if (!isAnimationFrameScheduled) {
11961
+ // Schedule another animation callback so we retry later.
11962
+ isAnimationFrameScheduled = true;
11963
+ requestAnimationFrame(animationTick);
11964
+ }
11965
+ // Exit without invoking the callback.
11966
+ return;
11967
+ }
11968
+ } else {
11969
+ // There's still time left in this idle period.
11970
+ frameDeadlineObject.didTimeout = false;
11971
+ }
11972
+
11973
+ timeoutTime = -1;
11874
11974
  var callback = scheduledRICCallback;
11875
11975
  scheduledRICCallback = null;
11876
11976
  if (callback !== null) {
@@ -11908,10 +12008,13 @@ if (!ExecutionEnvironment_1.canUseDOM) {
11908
12008
  }
11909
12009
  };
11910
12010
 
11911
- rIC = function (callback) {
12011
+ rIC = function (callback, options) {
11912
12012
  // This assumes that we only schedule one callback at a time because that's
11913
12013
  // how Fiber uses it.
11914
12014
  scheduledRICCallback = callback;
12015
+ if (options != null && typeof options.timeout === 'number') {
12016
+ timeoutTime = now() + options.timeout;
12017
+ }
11915
12018
  if (!isAnimationFrameScheduled) {
11916
12019
  // If rAF didn't already schedule one, we need to schedule a frame.
11917
12020
  // TODO: If this rAF doesn't materialize because the browser throttles, we
@@ -11922,8 +12025,15 @@ if (!ExecutionEnvironment_1.canUseDOM) {
11922
12025
  }
11923
12026
  return 0;
11924
12027
  };
12028
+
12029
+ cIC = function () {
12030
+ scheduledRICCallback = null;
12031
+ isIdleScheduled = false;
12032
+ timeoutTime = -1;
12033
+ };
11925
12034
  } else {
11926
- rIC = requestIdleCallback;
12035
+ rIC = window.requestIdleCallback;
12036
+ cIC = window.cancelIdleCallback;
11927
12037
  }
11928
12038
 
11929
12039
  /**
@@ -11997,7 +12107,7 @@ function isAttributeNameSafe(attributeName) {
11997
12107
  }
11998
12108
  illegalAttributeNameCache[attributeName] = true;
11999
12109
  {
12000
- warning_1$1(false, 'Invalid attribute name: `%s`', attributeName);
12110
+ warning_1(false, 'Invalid attribute name: `%s`', attributeName);
12001
12111
  }
12002
12112
  return false;
12003
12113
  }
@@ -12229,7 +12339,7 @@ var ReactControlledValuePropTypes = {
12229
12339
  * this outside of the ReactDOM controlled form components.
12230
12340
  */
12231
12341
  ReactControlledValuePropTypes.checkPropTypes = function (tagName, props, getStack) {
12232
- checkPropTypes_1$1(propTypes, props, 'prop', tagName, getStack);
12342
+ checkPropTypes_1(propTypes, props, 'prop', tagName, getStack);
12233
12343
  };
12234
12344
  }
12235
12345
 
@@ -12295,11 +12405,11 @@ function initWrapperState(element, props) {
12295
12405
  ReactControlledValuePropTypes.checkPropTypes('input', props, getCurrentFiberStackAddendum$3);
12296
12406
 
12297
12407
  if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {
12298
- warning_1$1(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerName$2() || 'A component', props.type);
12408
+ warning_1(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerName$2() || 'A component', props.type);
12299
12409
  didWarnCheckedDefaultChecked = true;
12300
12410
  }
12301
12411
  if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {
12302
- warning_1$1(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerName$2() || 'A component', props.type);
12412
+ warning_1(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', getCurrentFiberOwnerName$2() || 'A component', props.type);
12303
12413
  didWarnValueDefaultValue = true;
12304
12414
  }
12305
12415
  }
@@ -12313,25 +12423,30 @@ function initWrapperState(element, props) {
12313
12423
  };
12314
12424
  }
12315
12425
 
12426
+ function updateChecked(element, props) {
12427
+ var node = element;
12428
+ var checked = props.checked;
12429
+ if (checked != null) {
12430
+ setValueForProperty(node, 'checked', checked);
12431
+ }
12432
+ }
12433
+
12316
12434
  function updateWrapper(element, props) {
12317
12435
  var node = element;
12318
12436
  {
12319
12437
  var controlled = isControlled(props);
12320
12438
 
12321
12439
  if (!node._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {
12322
- warning_1$1(false, 'A component is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components%s', props.type, getCurrentFiberStackAddendum$3());
12440
+ warning_1(false, 'A component is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components%s', props.type, getCurrentFiberStackAddendum$3());
12323
12441
  didWarnUncontrolledToControlled = true;
12324
12442
  }
12325
12443
  if (node._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {
12326
- warning_1$1(false, 'A component is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components%s', props.type, getCurrentFiberStackAddendum$3());
12444
+ warning_1(false, 'A component is changing a controlled input of type %s to be uncontrolled. ' + 'Input elements should not switch from controlled to uncontrolled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components%s', props.type, getCurrentFiberStackAddendum$3());
12327
12445
  didWarnControlledToUncontrolled = true;
12328
12446
  }
12329
12447
  }
12330
12448
 
12331
- var checked = props.checked;
12332
- if (checked != null) {
12333
- setValueForProperty(node, 'checked', checked || false);
12334
- }
12449
+ updateChecked(element, props);
12335
12450
 
12336
12451
  var value = props.value;
12337
12452
  if (value != null) {
@@ -12456,7 +12571,12 @@ function updateNamedCousins(rootNode, props) {
12456
12571
  // That's probably okay; we don't support it just as we don't support
12457
12572
  // mixing React radio buttons with non-React ones.
12458
12573
  var otherProps = getFiberCurrentPropsFromNode$1(otherNode);
12459
- !otherProps ? invariant_1$1(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : void 0;
12574
+ !otherProps ? invariant_1(false, 'ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported.') : void 0;
12575
+
12576
+ // We need update the tracked value on the named cousin since the value
12577
+ // was changed but the input saw no event or value set
12578
+ updateValueIfChanged(otherNode);
12579
+
12460
12580
  // If this is a controlled radio button group, forcing the input that
12461
12581
  // was previously checked to update will cause it to be come re-checked
12462
12582
  // as appropriate.
@@ -12491,7 +12611,7 @@ function flattenChildren(children) {
12491
12611
  function validateProps(element, props) {
12492
12612
  // TODO (yungsters): Remove support for `selected` in <option>.
12493
12613
  {
12494
- warning_1$1(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');
12614
+ warning_1(props.selected == null, 'Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');
12495
12615
  }
12496
12616
  }
12497
12617
 
@@ -12504,7 +12624,6 @@ function postMountWrapper$1(element, props) {
12504
12624
 
12505
12625
  function getHostProps$1(element, props) {
12506
12626
  var hostProps = _assign({ children: undefined }, props);
12507
-
12508
12627
  var content = flattenChildren(props.children);
12509
12628
 
12510
12629
  if (content) {
@@ -12546,9 +12665,9 @@ function checkSelectPropTypes(props) {
12546
12665
  }
12547
12666
  var isArray = Array.isArray(props[propName]);
12548
12667
  if (props.multiple && !isArray) {
12549
- warning_1$1(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum());
12668
+ warning_1(false, 'The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum());
12550
12669
  } else if (!props.multiple && isArray) {
12551
- warning_1$1(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum());
12670
+ warning_1(false, 'The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum());
12552
12671
  }
12553
12672
  }
12554
12673
  }
@@ -12631,7 +12750,7 @@ function initWrapperState$1(element, props) {
12631
12750
 
12632
12751
  {
12633
12752
  if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue$1) {
12634
- warning_1$1(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components');
12753
+ warning_1(false, 'Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components');
12635
12754
  didWarnValueDefaultValue$1 = true;
12636
12755
  }
12637
12756
  }
@@ -12703,7 +12822,7 @@ var didWarnValDefaultVal = false;
12703
12822
 
12704
12823
  function getHostProps$3(element, props) {
12705
12824
  var node = element;
12706
- !(props.dangerouslySetInnerHTML == null) ? invariant_1$1(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : void 0;
12825
+ !(props.dangerouslySetInnerHTML == null) ? invariant_1(false, '`dangerouslySetInnerHTML` does not make sense on <textarea>.') : void 0;
12707
12826
 
12708
12827
  // Always set children to the same thing. In IE9, the selection range will
12709
12828
  // get reset if `textContent` is mutated. We could add a check in setTextContent
@@ -12725,26 +12844,25 @@ function initWrapperState$2(element, props) {
12725
12844
  {
12726
12845
  ReactControlledValuePropTypes.checkPropTypes('textarea', props, getCurrentFiberStackAddendum$5);
12727
12846
  if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {
12728
- warning_1$1(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components');
12847
+ warning_1(false, 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components');
12729
12848
  didWarnValDefaultVal = true;
12730
12849
  }
12731
12850
  }
12732
12851
 
12733
- var value = props.value;
12734
- var initialValue = value;
12852
+ var initialValue = props.value;
12735
12853
 
12736
12854
  // Only bother fetching default value if we're going to use it
12737
- if (value == null) {
12855
+ if (initialValue == null) {
12738
12856
  var defaultValue = props.defaultValue;
12739
12857
  // TODO (yungsters): Remove support for children content in <textarea>.
12740
12858
  var children = props.children;
12741
12859
  if (children != null) {
12742
12860
  {
12743
- warning_1$1(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');
12861
+ warning_1(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');
12744
12862
  }
12745
- !(defaultValue == null) ? invariant_1$1(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : void 0;
12863
+ !(defaultValue == null) ? invariant_1(false, 'If you supply `defaultValue` on a <textarea>, do not pass children.') : void 0;
12746
12864
  if (Array.isArray(children)) {
12747
- !(children.length <= 1) ? invariant_1$1(false, '<textarea> can only have at most one child.') : void 0;
12865
+ !(children.length <= 1) ? invariant_1(false, '<textarea> can only have at most one child.') : void 0;
12748
12866
  children = children[0];
12749
12867
  }
12750
12868
 
@@ -12884,89 +13002,6 @@ var setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {
12884
13002
  }
12885
13003
  });
12886
13004
 
12887
- // code copied and modified from escape-html
12888
- /**
12889
- * Module variables.
12890
- * @private
12891
- */
12892
-
12893
- var matchHtmlRegExp = /["'&<>]/;
12894
-
12895
- /**
12896
- * Escape special characters in the given string of html.
12897
- *
12898
- * @param {string} string The string to escape for inserting into HTML
12899
- * @return {string}
12900
- * @public
12901
- */
12902
-
12903
- function escapeHtml(string) {
12904
- var str = '' + string;
12905
- var match = matchHtmlRegExp.exec(str);
12906
-
12907
- if (!match) {
12908
- return str;
12909
- }
12910
-
12911
- var escape;
12912
- var html = '';
12913
- var index = 0;
12914
- var lastIndex = 0;
12915
-
12916
- for (index = match.index; index < str.length; index++) {
12917
- switch (str.charCodeAt(index)) {
12918
- case 34:
12919
- // "
12920
- escape = '&quot;';
12921
- break;
12922
- case 38:
12923
- // &
12924
- escape = '&amp;';
12925
- break;
12926
- case 39:
12927
- // '
12928
- escape = '&#x27;'; // modified from escape-html; used to be '&#39'
12929
- break;
12930
- case 60:
12931
- // <
12932
- escape = '&lt;';
12933
- break;
12934
- case 62:
12935
- // >
12936
- escape = '&gt;';
12937
- break;
12938
- default:
12939
- continue;
12940
- }
12941
-
12942
- if (lastIndex !== index) {
12943
- html += str.substring(lastIndex, index);
12944
- }
12945
-
12946
- lastIndex = index + 1;
12947
- html += escape;
12948
- }
12949
-
12950
- return lastIndex !== index ? html + str.substring(lastIndex, index) : html;
12951
- }
12952
- // end code copied and modified from escape-html
12953
-
12954
- /**
12955
- * Escapes text to prevent scripting attacks.
12956
- *
12957
- * @param {*} text Text value to escape.
12958
- * @return {string} An escaped string.
12959
- */
12960
- function escapeTextContentForBrowser(text) {
12961
- if (typeof text === 'boolean' || typeof text === 'number') {
12962
- // this shortcircuit helps perf for types that we know will never have
12963
- // special characters, especially given that this function is used often
12964
- // for numeric dom ids.
12965
- return '' + text;
12966
- }
12967
- return escapeHtml(text);
12968
- }
12969
-
12970
13005
  /**
12971
13006
  * Set the textContent property of a node, ensuring that whitespace is preserved
12972
13007
  * even in IE8. innerText is a poor substitute for textContent and, among many
@@ -12989,20 +13024,6 @@ var setTextContent = function (node, text) {
12989
13024
  node.textContent = text;
12990
13025
  };
12991
13026
 
12992
- if (ExecutionEnvironment_1.canUseDOM) {
12993
- if (!('textContent' in document.documentElement)) {
12994
- setTextContent = function (node, text) {
12995
- if (node.nodeType === TEXT_NODE) {
12996
- node.nodeValue = text;
12997
- return;
12998
- }
12999
- setInnerHTML(node, escapeTextContentForBrowser(text));
13000
- };
13001
- }
13002
- }
13003
-
13004
- var setTextContent$1 = setTextContent;
13005
-
13006
13027
  /**
13007
13028
  * CSS properties which accept numbers but are not in units of "px".
13008
13029
  */
@@ -13172,7 +13193,7 @@ function hyphenateStyleName(string) {
13172
13193
  return hyphenate_1(string).replace(msPattern, '-ms-');
13173
13194
  }
13174
13195
 
13175
- var hyphenateStyleName_1$1 = hyphenateStyleName;
13196
+ var hyphenateStyleName_1 = hyphenateStyleName;
13176
13197
 
13177
13198
  /**
13178
13199
  * Copyright (c) 2013-present, Facebook, Inc.
@@ -13238,7 +13259,7 @@ function camelizeStyleName(string) {
13238
13259
  return camelize_1(string.replace(msPattern$1, 'ms-'));
13239
13260
  }
13240
13261
 
13241
- var camelizeStyleName_1$1 = camelizeStyleName;
13262
+ var camelizeStyleName_1 = camelizeStyleName;
13242
13263
 
13243
13264
  var warnValidStyle = emptyFunction_1;
13244
13265
 
@@ -13260,7 +13281,7 @@ var warnValidStyle = emptyFunction_1;
13260
13281
  }
13261
13282
 
13262
13283
  warnedStyleNames[name] = true;
13263
- warning_1$1(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName_1$1(name), getStack());
13284
+ warning_1(false, 'Unsupported style property %s. Did you mean %s?%s', name, camelizeStyleName_1(name), getStack());
13264
13285
  };
13265
13286
 
13266
13287
  var warnBadVendoredStyleName = function (name, getStack) {
@@ -13269,7 +13290,7 @@ var warnValidStyle = emptyFunction_1;
13269
13290
  }
13270
13291
 
13271
13292
  warnedStyleNames[name] = true;
13272
- warning_1$1(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), getStack());
13293
+ warning_1(false, 'Unsupported vendor-prefixed style property %s. Did you mean %s?%s', name, name.charAt(0).toUpperCase() + name.slice(1), getStack());
13273
13294
  };
13274
13295
 
13275
13296
  var warnStyleValueWithSemicolon = function (name, value, getStack) {
@@ -13278,7 +13299,7 @@ var warnValidStyle = emptyFunction_1;
13278
13299
  }
13279
13300
 
13280
13301
  warnedStyleValues[value] = true;
13281
- warning_1$1(false, "Style property values shouldn't contain a semicolon. " + 'Try "%s: %s" instead.%s', name, value.replace(badStyleValueWithSemicolonPattern, ''), getStack());
13302
+ warning_1(false, "Style property values shouldn't contain a semicolon. " + 'Try "%s: %s" instead.%s', name, value.replace(badStyleValueWithSemicolonPattern, ''), getStack());
13282
13303
  };
13283
13304
 
13284
13305
  var warnStyleValueIsNaN = function (name, value, getStack) {
@@ -13287,7 +13308,7 @@ var warnValidStyle = emptyFunction_1;
13287
13308
  }
13288
13309
 
13289
13310
  warnedForNaNValue = true;
13290
- warning_1$1(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, getStack());
13311
+ warning_1(false, '`NaN` is an invalid value for the `%s` css style property.%s', name, getStack());
13291
13312
  };
13292
13313
 
13293
13314
  var warnStyleValueIsInfinity = function (name, value, getStack) {
@@ -13296,7 +13317,7 @@ var warnValidStyle = emptyFunction_1;
13296
13317
  }
13297
13318
 
13298
13319
  warnedForInfinityValue = true;
13299
- warning_1$1(false, '`Infinity` is an invalid value for the `%s` css style property.%s', name, getStack());
13320
+ warning_1(false, '`Infinity` is an invalid value for the `%s` css style property.%s', name, getStack());
13300
13321
  };
13301
13322
 
13302
13323
  warnValidStyle = function (name, value, getStack) {
@@ -13341,7 +13362,7 @@ function createDangerousStringForStyles(styles) {
13341
13362
  var styleValue = styles[styleName];
13342
13363
  if (styleValue != null) {
13343
13364
  var isCustomProperty = styleName.indexOf('--') === 0;
13344
- serialized += delimiter + hyphenateStyleName_1$1(styleName) + ':';
13365
+ serialized += delimiter + hyphenateStyleName_1(styleName) + ':';
13345
13366
  serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty);
13346
13367
 
13347
13368
  delimiter = ';';
@@ -13418,16 +13439,16 @@ function assertValidProps(tag, props, getStack) {
13418
13439
  }
13419
13440
  // Note the use of `==` which checks for null or undefined.
13420
13441
  if (voidElementTags[tag]) {
13421
- !(props.children == null && props.dangerouslySetInnerHTML == null) ? invariant_1$1(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', tag, getStack()) : void 0;
13442
+ !(props.children == null && props.dangerouslySetInnerHTML == null) ? invariant_1(false, '%s is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`.%s', tag, getStack()) : void 0;
13422
13443
  }
13423
13444
  if (props.dangerouslySetInnerHTML != null) {
13424
- !(props.children == null) ? invariant_1$1(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : void 0;
13425
- !(typeof props.dangerouslySetInnerHTML === 'object' && HTML$1 in props.dangerouslySetInnerHTML) ? invariant_1$1(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : void 0;
13445
+ !(props.children == null) ? invariant_1(false, 'Can only set one of `children` or `props.dangerouslySetInnerHTML`.') : void 0;
13446
+ !(typeof props.dangerouslySetInnerHTML === 'object' && HTML$1 in props.dangerouslySetInnerHTML) ? invariant_1(false, '`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://fb.me/react-invariant-dangerously-set-inner-html for more information.') : void 0;
13426
13447
  }
13427
13448
  {
13428
- warning_1$1(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.%s', getStack());
13449
+ warning_1(props.suppressContentEditableWarning || !props.contentEditable || props.children == null, 'A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.%s', getStack());
13429
13450
  }
13430
- !(props.style == null || typeof props.style === 'object') ? invariant_1$1(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \'em\'}} when using JSX.%s', getStack()) : void 0;
13451
+ !(props.style == null || typeof props.style === 'object') ? invariant_1(false, 'The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + \'em\'}} when using JSX.%s', getStack()) : void 0;
13431
13452
  }
13432
13453
 
13433
13454
  function isCustomComponent(tagName, props) {
@@ -13531,13 +13552,13 @@ function validateProperty(tagName, name) {
13531
13552
  // If this is an aria-* attribute, but is not listed in the known DOM
13532
13553
  // DOM properties, then it is an invalid aria-* attribute.
13533
13554
  if (correctName == null) {
13534
- warning_1$1(false, 'Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.%s', name, getStackAddendum());
13555
+ warning_1(false, 'Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.%s', name, getStackAddendum());
13535
13556
  warnedProperties[name] = true;
13536
13557
  return true;
13537
13558
  }
13538
13559
  // aria-* attributes should be lowercase; suggest the lowercase version.
13539
13560
  if (name !== correctName) {
13540
- warning_1$1(false, 'Invalid ARIA attribute `%s`. Did you mean `%s`?%s', name, correctName, getStackAddendum());
13561
+ warning_1(false, 'Invalid ARIA attribute `%s`. Did you mean `%s`?%s', name, correctName, getStackAddendum());
13541
13562
  warnedProperties[name] = true;
13542
13563
  return true;
13543
13564
  }
@@ -13555,7 +13576,7 @@ function validateProperty(tagName, name) {
13555
13576
  }
13556
13577
  // aria-* attributes should be lowercase; suggest the lowercase version.
13557
13578
  if (name !== standardName) {
13558
- warning_1$1(false, 'Unknown ARIA attribute `%s`. Did you mean `%s`?%s', name, standardName, getStackAddendum());
13579
+ warning_1(false, 'Unknown ARIA attribute `%s`. Did you mean `%s`?%s', name, standardName, getStackAddendum());
13559
13580
  warnedProperties[name] = true;
13560
13581
  return true;
13561
13582
  }
@@ -13579,9 +13600,9 @@ function warnInvalidARIAProps(type, props) {
13579
13600
  }).join(', ');
13580
13601
 
13581
13602
  if (invalidProps.length === 1) {
13582
- warning_1$1(false, 'Invalid aria prop %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, type, getStackAddendum());
13603
+ warning_1(false, 'Invalid aria prop %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, type, getStackAddendum());
13583
13604
  } else if (invalidProps.length > 1) {
13584
- warning_1$1(false, 'Invalid aria props %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, type, getStackAddendum());
13605
+ warning_1(false, 'Invalid aria props %s on <%s> tag. ' + 'For details, see https://fb.me/invalid-aria-prop%s', unknownPropString, type, getStackAddendum());
13585
13606
  }
13586
13607
  }
13587
13608
 
@@ -13607,9 +13628,9 @@ function validateProperties$1(type, props) {
13607
13628
  if (props != null && props.value === null && !didWarnValueNull) {
13608
13629
  didWarnValueNull = true;
13609
13630
  if (type === 'select' && props.multiple) {
13610
- warning_1$1(false, '`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.%s', type, getStackAddendum$1());
13631
+ warning_1(false, '`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.%s', type, getStackAddendum$1());
13611
13632
  } else {
13612
- warning_1$1(false, '`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.%s', type, getStackAddendum$1());
13633
+ warning_1(false, '`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.%s', type, getStackAddendum$1());
13613
13634
  }
13614
13635
  }
13615
13636
  }
@@ -14110,36 +14131,46 @@ function getStackAddendum$2() {
14110
14131
  {
14111
14132
  var warnedProperties$1 = {};
14112
14133
  var hasOwnProperty$2 = Object.prototype.hasOwnProperty;
14113
- var EVENT_NAME_REGEX = /^on[A-Z]/;
14134
+ var EVENT_NAME_REGEX = /^on./;
14135
+ var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;
14114
14136
  var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');
14115
14137
  var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');
14116
14138
 
14117
- var validateProperty$1 = function (tagName, name, value) {
14139
+ var validateProperty$1 = function (tagName, name, value, canUseEventSystem) {
14118
14140
  if (hasOwnProperty$2.call(warnedProperties$1, name) && warnedProperties$1[name]) {
14119
14141
  return true;
14120
14142
  }
14121
14143
 
14122
- if (registrationNameModules.hasOwnProperty(name)) {
14123
- return true;
14124
- }
14125
-
14126
- if (plugins.length === 0 && EVENT_NAME_REGEX.test(name)) {
14127
- // If no event plugins have been injected, we might be in a server environment.
14128
- // Don't check events in this case.
14129
- return true;
14130
- }
14131
-
14132
14144
  var lowerCasedName = name.toLowerCase();
14133
- var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null;
14134
-
14135
- if (registrationName != null) {
14136
- warning_1$1(false, 'Invalid event handler property `%s`. Did you mean `%s`?%s', name, registrationName, getStackAddendum$2());
14145
+ if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {
14146
+ warning_1(false, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');
14137
14147
  warnedProperties$1[name] = true;
14138
14148
  return true;
14139
14149
  }
14140
14150
 
14141
- if (lowerCasedName.indexOf('on') === 0 && lowerCasedName.length > 2) {
14142
- warning_1$1(false, 'Unknown event handler property `%s`. It will be ignored.%s', name, getStackAddendum$2());
14151
+ // We can't rely on the event system being injected on the server.
14152
+ if (canUseEventSystem) {
14153
+ if (registrationNameModules.hasOwnProperty(name)) {
14154
+ return true;
14155
+ }
14156
+ var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null;
14157
+ if (registrationName != null) {
14158
+ warning_1(false, 'Invalid event handler property `%s`. Did you mean `%s`?%s', name, registrationName, getStackAddendum$2());
14159
+ warnedProperties$1[name] = true;
14160
+ return true;
14161
+ }
14162
+ if (EVENT_NAME_REGEX.test(name)) {
14163
+ warning_1(false, 'Unknown event handler property `%s`. It will be ignored.%s', name, getStackAddendum$2());
14164
+ warnedProperties$1[name] = true;
14165
+ return true;
14166
+ }
14167
+ } else if (EVENT_NAME_REGEX.test(name)) {
14168
+ // If no event plugins have been injected, we are in a server environment.
14169
+ // So we can't tell if the event name is correct for sure, but we can filter
14170
+ // out known bad ones like `onclick`. We can't suggest a specific replacement though.
14171
+ if (INVALID_EVENT_NAME_REGEX.test(name)) {
14172
+ warning_1(false, 'Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.%s', name, getStackAddendum$2());
14173
+ }
14143
14174
  warnedProperties$1[name] = true;
14144
14175
  return true;
14145
14176
  }
@@ -14149,32 +14180,26 @@ function getStackAddendum$2() {
14149
14180
  return true;
14150
14181
  }
14151
14182
 
14152
- if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {
14153
- warning_1$1(false, 'React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');
14154
- warnedProperties$1[name] = true;
14155
- return true;
14156
- }
14157
-
14158
14183
  if (lowerCasedName === 'innerhtml') {
14159
- warning_1$1(false, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');
14184
+ warning_1(false, 'Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');
14160
14185
  warnedProperties$1[name] = true;
14161
14186
  return true;
14162
14187
  }
14163
14188
 
14164
14189
  if (lowerCasedName === 'aria') {
14165
- warning_1$1(false, 'The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');
14190
+ warning_1(false, 'The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');
14166
14191
  warnedProperties$1[name] = true;
14167
14192
  return true;
14168
14193
  }
14169
14194
 
14170
14195
  if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') {
14171
- warning_1$1(false, 'Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.%s', typeof value, getStackAddendum$2());
14196
+ warning_1(false, 'Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.%s', typeof value, getStackAddendum$2());
14172
14197
  warnedProperties$1[name] = true;
14173
14198
  return true;
14174
14199
  }
14175
14200
 
14176
14201
  if (typeof value === 'number' && isNaN(value)) {
14177
- warning_1$1(false, 'Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.%s', name, getStackAddendum$2());
14202
+ warning_1(false, 'Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.%s', name, getStackAddendum$2());
14178
14203
  warnedProperties$1[name] = true;
14179
14204
  return true;
14180
14205
  }
@@ -14185,23 +14210,23 @@ function getStackAddendum$2() {
14185
14210
  if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {
14186
14211
  var standardName = possibleStandardNames[lowerCasedName];
14187
14212
  if (standardName !== name) {
14188
- warning_1$1(false, 'Invalid DOM property `%s`. Did you mean `%s`?%s', name, standardName, getStackAddendum$2());
14213
+ warning_1(false, 'Invalid DOM property `%s`. Did you mean `%s`?%s', name, standardName, getStackAddendum$2());
14189
14214
  warnedProperties$1[name] = true;
14190
14215
  return true;
14191
14216
  }
14192
14217
  } else if (!isReserved && name !== lowerCasedName) {
14193
14218
  // Unknown attributes should have lowercase casing since that's how they
14194
14219
  // will be cased anyway with server rendering.
14195
- warning_1$1(false, 'React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.%s', name, lowerCasedName, getStackAddendum$2());
14220
+ warning_1(false, 'React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.%s', name, lowerCasedName, getStackAddendum$2());
14196
14221
  warnedProperties$1[name] = true;
14197
14222
  return true;
14198
14223
  }
14199
14224
 
14200
14225
  if (typeof value === 'boolean' && !shouldAttributeAcceptBooleanValue(name)) {
14201
14226
  if (value) {
14202
- warning_1$1(false, 'Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.%s', value, name, name, value, name, getStackAddendum$2());
14227
+ warning_1(false, 'Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.%s', value, name, name, value, name, getStackAddendum$2());
14203
14228
  } else {
14204
- warning_1$1(false, 'Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.\n\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.%s', value, name, name, value, name, name, name, getStackAddendum$2());
14229
+ warning_1(false, 'Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.\n\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.%s', value, name, name, value, name, name, name, getStackAddendum$2());
14205
14230
  }
14206
14231
  warnedProperties$1[name] = true;
14207
14232
  return true;
@@ -14223,10 +14248,10 @@ function getStackAddendum$2() {
14223
14248
  };
14224
14249
  }
14225
14250
 
14226
- var warnUnknownProperties = function (type, props) {
14251
+ var warnUnknownProperties = function (type, props, canUseEventSystem) {
14227
14252
  var unknownProps = [];
14228
14253
  for (var key in props) {
14229
- var isValid = validateProperty$1(type, key, props[key]);
14254
+ var isValid = validateProperty$1(type, key, props[key], canUseEventSystem);
14230
14255
  if (!isValid) {
14231
14256
  unknownProps.push(key);
14232
14257
  }
@@ -14236,17 +14261,17 @@ var warnUnknownProperties = function (type, props) {
14236
14261
  return '`' + prop + '`';
14237
14262
  }).join(', ');
14238
14263
  if (unknownProps.length === 1) {
14239
- warning_1$1(false, 'Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior%s', unknownPropString, type, getStackAddendum$2());
14264
+ warning_1(false, 'Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior%s', unknownPropString, type, getStackAddendum$2());
14240
14265
  } else if (unknownProps.length > 1) {
14241
- warning_1$1(false, 'Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior%s', unknownPropString, type, getStackAddendum$2());
14266
+ warning_1(false, 'Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://fb.me/react-attribute-behavior%s', unknownPropString, type, getStackAddendum$2());
14242
14267
  }
14243
14268
  };
14244
14269
 
14245
- function validateProperties$2(type, props) {
14270
+ function validateProperties$2(type, props, canUseEventSystem) {
14246
14271
  if (isCustomComponent(type, props)) {
14247
14272
  return;
14248
14273
  }
14249
- warnUnknownProperties(type, props);
14274
+ warnUnknownProperties(type, props, canUseEventSystem);
14250
14275
  }
14251
14276
 
14252
14277
  // TODO: direct imports like some-package/src/* are bad. Fix me.
@@ -14285,7 +14310,7 @@ var getStack = emptyFunction_1.thatReturns('');
14285
14310
  var validatePropertiesInDevelopment = function (type, props) {
14286
14311
  validateProperties(type, props);
14287
14312
  validateProperties$1(type, props);
14288
- validateProperties$2(type, props);
14313
+ validateProperties$2(type, props, /* canUseEventSystem */true);
14289
14314
  };
14290
14315
 
14291
14316
  // HTML parsing normalizes CR and CRLF to LF.
@@ -14311,7 +14336,7 @@ var getStack = emptyFunction_1.thatReturns('');
14311
14336
  return;
14312
14337
  }
14313
14338
  didWarnInvalidHydration = true;
14314
- warning_1$1(false, 'Text content did not match. Server: "%s" Client: "%s"', normalizedServerText, normalizedClientText);
14339
+ warning_1(false, 'Text content did not match. Server: "%s" Client: "%s"', normalizedServerText, normalizedClientText);
14315
14340
  };
14316
14341
 
14317
14342
  var warnForPropDifference = function (propName, serverValue, clientValue) {
@@ -14324,7 +14349,7 @@ var getStack = emptyFunction_1.thatReturns('');
14324
14349
  return;
14325
14350
  }
14326
14351
  didWarnInvalidHydration = true;
14327
- warning_1$1(false, 'Prop `%s` did not match. Server: %s Client: %s', propName, JSON.stringify(normalizedServerValue), JSON.stringify(normalizedClientValue));
14352
+ warning_1(false, 'Prop `%s` did not match. Server: %s Client: %s', propName, JSON.stringify(normalizedServerValue), JSON.stringify(normalizedClientValue));
14328
14353
  };
14329
14354
 
14330
14355
  var warnForExtraAttributes = function (attributeNames) {
@@ -14336,14 +14361,14 @@ var getStack = emptyFunction_1.thatReturns('');
14336
14361
  attributeNames.forEach(function (name) {
14337
14362
  names.push(name);
14338
14363
  });
14339
- warning_1$1(false, 'Extra attributes from the server: %s', names);
14364
+ warning_1(false, 'Extra attributes from the server: %s', names);
14340
14365
  };
14341
14366
 
14342
14367
  var warnForInvalidEventListener = function (registrationName, listener) {
14343
14368
  if (listener === false) {
14344
- warning_1$1(false, 'Expected `%s` listener to be a function, instead got `false`.\n\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.%s', registrationName, registrationName, registrationName, getCurrentFiberStackAddendum$2());
14369
+ warning_1(false, 'Expected `%s` listener to be a function, instead got `false`.\n\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.%s', registrationName, registrationName, registrationName, getCurrentFiberStackAddendum$2());
14345
14370
  } else {
14346
- warning_1$1(false, 'Expected `%s` listener to be a function, instead got a value of `%s` type.%s', registrationName, typeof listener, getCurrentFiberStackAddendum$2());
14371
+ warning_1(false, 'Expected `%s` listener to be a function, instead got a value of `%s` type.%s', registrationName, typeof listener, getCurrentFiberStackAddendum$2());
14347
14372
  }
14348
14373
  };
14349
14374
 
@@ -14440,10 +14465,10 @@ function setInitialDOMProperties(tag, domElement, rootContainerElement, nextProp
14440
14465
  // https://github.com/facebook/react/issues/6731#issuecomment-254874553
14441
14466
  var canSetTextContent = tag !== 'textarea' || nextProp !== '';
14442
14467
  if (canSetTextContent) {
14443
- setTextContent$1(domElement, nextProp);
14468
+ setTextContent(domElement, nextProp);
14444
14469
  }
14445
14470
  } else if (typeof nextProp === 'number') {
14446
- setTextContent$1(domElement, '' + nextProp);
14471
+ setTextContent(domElement, '' + nextProp);
14447
14472
  }
14448
14473
  } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING$1) {
14449
14474
  // Noop
@@ -14478,7 +14503,7 @@ function updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, i
14478
14503
  } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {
14479
14504
  setInnerHTML(domElement, propValue);
14480
14505
  } else if (propKey === CHILDREN) {
14481
- setTextContent$1(domElement, propValue);
14506
+ setTextContent(domElement, propValue);
14482
14507
  } else if (isCustomComponentTag) {
14483
14508
  if (propValue != null) {
14484
14509
  setValueForAttribute(domElement, propKey, propValue);
@@ -14509,7 +14534,7 @@ function createElement$1(type, props, rootContainerElement, parentNamespace) {
14509
14534
  var isCustomComponentTag = isCustomComponent(type, props);
14510
14535
  // Should this check be gated by parent namespace? Not sure we want to
14511
14536
  // allow <SVG> or <mATH>.
14512
- warning_1$1(isCustomComponentTag || type === type.toLowerCase(), '<%s /> is using uppercase HTML. Always use lowercase HTML tags ' + 'in React.', type);
14537
+ warning_1(isCustomComponentTag || type === type.toLowerCase(), '<%s /> is using uppercase HTML. Always use lowercase HTML tags ' + 'in React.', type);
14513
14538
  }
14514
14539
 
14515
14540
  if (type === 'script') {
@@ -14537,7 +14562,7 @@ function createElement$1(type, props, rootContainerElement, parentNamespace) {
14537
14562
  if (namespaceURI === HTML_NAMESPACE) {
14538
14563
  if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === '[object HTMLUnknownElement]' && !Object.prototype.hasOwnProperty.call(warnedUnknownTags, type)) {
14539
14564
  warnedUnknownTags[type] = true;
14540
- warning_1$1(false, 'The tag <%s> is unrecognized in this browser. ' + 'If you meant to render a React component, start its name with ' + 'an uppercase letter.', type);
14565
+ warning_1(false, 'The tag <%s> is unrecognized in this browser. ' + 'If you meant to render a React component, start its name with ' + 'an uppercase letter.', type);
14541
14566
  }
14542
14567
  }
14543
14568
  }
@@ -14554,7 +14579,7 @@ function setInitialProperties$1(domElement, tag, rawProps, rootContainerElement)
14554
14579
  {
14555
14580
  validatePropertiesInDevelopment(tag, rawProps);
14556
14581
  if (isCustomComponentTag && !didWarnShadyDOM && domElement.shadyRoot) {
14557
- warning_1$1(false, '%s is using shady DOM. Using shady DOM with React can ' + 'cause things to break subtly.', getCurrentFiberOwnerName$1() || 'A component');
14582
+ warning_1(false, '%s is using shady DOM. Using shady DOM with React can ' + 'cause things to break subtly.', getCurrentFiberOwnerName$1() || 'A component');
14558
14583
  didWarnShadyDOM = true;
14559
14584
  }
14560
14585
  }
@@ -14827,6 +14852,13 @@ function diffProperties$1(domElement, tag, lastRawProps, nextRawProps, rootConta
14827
14852
 
14828
14853
  // Apply the diff.
14829
14854
  function updateProperties$1(domElement, updatePayload, tag, lastRawProps, nextRawProps) {
14855
+ // Update checked *before* name.
14856
+ // In the middle of an update, it is possible to have multiple checked.
14857
+ // When a checked radio tries to change name, browser makes another radio's checked false.
14858
+ if (tag === 'input' && nextRawProps.type === 'radio' && nextRawProps.name != null) {
14859
+ updateChecked(domElement, nextRawProps);
14860
+ }
14861
+
14830
14862
  var wasCustomComponentTag = isCustomComponent(tag, lastRawProps);
14831
14863
  var isCustomComponentTag = isCustomComponent(tag, nextRawProps);
14832
14864
  // Apply the diff.
@@ -14840,10 +14872,6 @@ function updateProperties$1(domElement, updatePayload, tag, lastRawProps, nextRa
14840
14872
  // happen after `updateDOMProperties`. Otherwise HTML5 input validations
14841
14873
  // raise warnings and prevent the new value from being assigned.
14842
14874
  updateWrapper(domElement, nextRawProps);
14843
-
14844
- // We also check that we haven't missed a value update, such as a
14845
- // Radio group shifting the checked value to another named radio input.
14846
- updateValueIfChanged(domElement);
14847
14875
  break;
14848
14876
  case 'textarea':
14849
14877
  updateWrapper$1(domElement, nextRawProps);
@@ -14862,7 +14890,7 @@ function diffHydratedProperties$1(domElement, tag, rawProps, parentNamespace, ro
14862
14890
  var isCustomComponentTag = isCustomComponent(tag, rawProps);
14863
14891
  validatePropertiesInDevelopment(tag, rawProps);
14864
14892
  if (isCustomComponentTag && !didWarnShadyDOM && domElement.shadyRoot) {
14865
- warning_1$1(false, '%s is using shady DOM. Using shady DOM with React can ' + 'cause things to break subtly.', getCurrentFiberOwnerName$1() || 'A component');
14893
+ warning_1(false, '%s is using shady DOM. Using shady DOM with React can ' + 'cause things to break subtly.', getCurrentFiberOwnerName$1() || 'A component');
14866
14894
  didWarnShadyDOM = true;
14867
14895
  }
14868
14896
  }
@@ -15106,7 +15134,7 @@ function warnForDeletedHydratableElement$1(parentNode, child) {
15106
15134
  return;
15107
15135
  }
15108
15136
  didWarnInvalidHydration = true;
15109
- warning_1$1(false, 'Did not expect server HTML to contain a <%s> in <%s>.', child.nodeName.toLowerCase(), parentNode.nodeName.toLowerCase());
15137
+ warning_1(false, 'Did not expect server HTML to contain a <%s> in <%s>.', child.nodeName.toLowerCase(), parentNode.nodeName.toLowerCase());
15110
15138
  }
15111
15139
  }
15112
15140
 
@@ -15116,7 +15144,7 @@ function warnForDeletedHydratableText$1(parentNode, child) {
15116
15144
  return;
15117
15145
  }
15118
15146
  didWarnInvalidHydration = true;
15119
- warning_1$1(false, 'Did not expect server HTML to contain the text node "%s" in <%s>.', child.nodeValue, parentNode.nodeName.toLowerCase());
15147
+ warning_1(false, 'Did not expect server HTML to contain the text node "%s" in <%s>.', child.nodeValue, parentNode.nodeName.toLowerCase());
15120
15148
  }
15121
15149
  }
15122
15150
 
@@ -15126,7 +15154,7 @@ function warnForInsertedHydratedElement$1(parentNode, tag, props) {
15126
15154
  return;
15127
15155
  }
15128
15156
  didWarnInvalidHydration = true;
15129
- warning_1$1(false, 'Expected server HTML to contain a matching <%s> in <%s>.', tag, parentNode.nodeName.toLowerCase());
15157
+ warning_1(false, 'Expected server HTML to contain a matching <%s> in <%s>.', tag, parentNode.nodeName.toLowerCase());
15130
15158
  }
15131
15159
  }
15132
15160
 
@@ -15143,7 +15171,7 @@ function warnForInsertedHydratedText$1(parentNode, text) {
15143
15171
  return;
15144
15172
  }
15145
15173
  didWarnInvalidHydration = true;
15146
- warning_1$1(false, 'Expected server HTML to contain a matching text node for "%s" in <%s>.', text, parentNode.nodeName.toLowerCase());
15174
+ warning_1(false, 'Expected server HTML to contain a matching text node for "%s" in <%s>.', text, parentNode.nodeName.toLowerCase());
15147
15175
  }
15148
15176
  }
15149
15177
 
@@ -15429,7 +15457,7 @@ var validateDOMNesting = emptyFunction_1;
15429
15457
  var parentTag = parentInfo && parentInfo.tag;
15430
15458
 
15431
15459
  if (childText != null) {
15432
- warning_1$1(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null');
15460
+ warning_1(childTag == null, 'validateDOMNesting: when childText is passed, childTag should be null');
15433
15461
  childTag = '#text';
15434
15462
  }
15435
15463
 
@@ -15467,9 +15495,9 @@ var validateDOMNesting = emptyFunction_1;
15467
15495
  if (ancestorTag === 'table' && childTag === 'tr') {
15468
15496
  info += ' Add a <tbody> to your code to match the DOM tree generated by ' + 'the browser.';
15469
15497
  }
15470
- warning_1$1(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s%s', tagDisplayName, ancestorTag, whitespaceInfo, info, addendum);
15498
+ warning_1(false, 'validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s%s', tagDisplayName, ancestorTag, whitespaceInfo, info, addendum);
15471
15499
  } else {
15472
- warning_1$1(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>.%s', tagDisplayName, ancestorTag, addendum);
15500
+ warning_1(false, 'validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>.%s', tagDisplayName, ancestorTag, addendum);
15473
15501
  }
15474
15502
  };
15475
15503
 
@@ -15508,7 +15536,7 @@ var updateFiberProps = updateFiberProps$1;
15508
15536
  {
15509
15537
  var SUPPRESS_HYDRATION_WARNING = 'suppressHydrationWarning';
15510
15538
  if (typeof Map !== 'function' || Map.prototype == null || typeof Map.prototype.forEach !== 'function' || typeof Set !== 'function' || Set.prototype == null || typeof Set.prototype.clear !== 'function' || typeof Set.prototype.forEach !== 'function') {
15511
- warning_1$1(false, 'React depends on Map and Set built-in types. Make sure that you load a ' + 'polyfill in older browsers. http://fb.me/react-polyfills');
15539
+ warning_1(false, 'React depends on Map and Set built-in types. Make sure that you load a ' + 'polyfill in older browsers. http://fb.me/react-polyfills');
15512
15540
  }
15513
15541
  }
15514
15542
 
@@ -15716,14 +15744,19 @@ var DOMRenderer = reactReconciler({
15716
15744
 
15717
15745
  hydration: {
15718
15746
  canHydrateInstance: function (instance, type, props) {
15719
- return instance.nodeType === ELEMENT_NODE && type.toLowerCase() === instance.nodeName.toLowerCase();
15747
+ if (instance.nodeType !== ELEMENT_NODE || type.toLowerCase() !== instance.nodeName.toLowerCase()) {
15748
+ return null;
15749
+ }
15750
+ // This has now been refined to an element node.
15751
+ return instance;
15720
15752
  },
15721
15753
  canHydrateTextInstance: function (instance, text) {
15722
- if (text === '') {
15754
+ if (text === '' || instance.nodeType !== TEXT_NODE) {
15723
15755
  // Empty strings are not parsed by HTML so there won't be a correct match here.
15724
- return false;
15756
+ return null;
15725
15757
  }
15726
- return instance.nodeType === TEXT_NODE;
15758
+ // This has now been refined to a text node.
15759
+ return instance;
15727
15760
  },
15728
15761
  getNextHydratableSibling: function (instance) {
15729
15762
  var node = instance.nextSibling;
@@ -15808,6 +15841,7 @@ var DOMRenderer = reactReconciler({
15808
15841
  },
15809
15842
 
15810
15843
  scheduleDeferredCallback: rIC,
15844
+ cancelDeferredCallback: cIC,
15811
15845
 
15812
15846
  useSyncScheduling: !enableAsyncSchedulingByDefaultInReactDOM
15813
15847
  });
@@ -15817,13 +15851,13 @@ injection$4.injectFiberBatchedUpdates(DOMRenderer.batchedUpdates);
15817
15851
  var warnedAboutHydrateAPI = false;
15818
15852
 
15819
15853
  function renderSubtreeIntoContainer(parentComponent, children, container, forceHydrate, callback) {
15820
- !isValidContainer(container) ? invariant_1$1(false, 'Target container is not a DOM element.') : void 0;
15854
+ !isValidContainer(container) ? invariant_1(false, 'Target container is not a DOM element.') : void 0;
15821
15855
 
15822
15856
  {
15823
15857
  if (container._reactRootContainer && container.nodeType !== COMMENT_NODE) {
15824
15858
  var hostInstance = DOMRenderer.findHostInstanceWithNoPortals(container._reactRootContainer.current);
15825
15859
  if (hostInstance) {
15826
- warning_1$1(hostInstance.parentNode === container, 'render(...): It looks like the React-rendered content of this ' + 'container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + 'ReactDOM.unmountComponentAtNode to empty a container.');
15860
+ warning_1(hostInstance.parentNode === container, 'render(...): It looks like the React-rendered content of this ' + 'container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + 'ReactDOM.unmountComponentAtNode to empty a container.');
15827
15861
  }
15828
15862
  }
15829
15863
 
@@ -15831,9 +15865,9 @@ function renderSubtreeIntoContainer(parentComponent, children, container, forceH
15831
15865
  var rootEl = getReactRootElementInContainer(container);
15832
15866
  var hasNonRootReactChild = !!(rootEl && getInstanceFromNode$1(rootEl));
15833
15867
 
15834
- warning_1$1(!hasNonRootReactChild || isRootRenderedBySomeReact, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.');
15868
+ warning_1(!hasNonRootReactChild || isRootRenderedBySomeReact, 'render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.');
15835
15869
 
15836
- warning_1$1(container.nodeType !== ELEMENT_NODE || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.');
15870
+ warning_1(container.nodeType !== ELEMENT_NODE || !container.tagName || container.tagName.toUpperCase() !== 'BODY', 'render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.');
15837
15871
  }
15838
15872
 
15839
15873
  var root = container._reactRootContainer;
@@ -15847,7 +15881,7 @@ function renderSubtreeIntoContainer(parentComponent, children, container, forceH
15847
15881
  {
15848
15882
  if (!warned && rootSibling.nodeType === ELEMENT_NODE && rootSibling.hasAttribute(ROOT_ATTRIBUTE_NAME)) {
15849
15883
  warned = true;
15850
- warning_1$1(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.');
15884
+ warning_1(false, 'render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.');
15851
15885
  }
15852
15886
  }
15853
15887
  container.removeChild(rootSibling);
@@ -15874,7 +15908,7 @@ function renderSubtreeIntoContainer(parentComponent, children, container, forceH
15874
15908
  function createPortal(children, container) {
15875
15909
  var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
15876
15910
 
15877
- !isValidContainer(container) ? invariant_1$1(false, 'Target container is not a DOM element.') : void 0;
15911
+ !isValidContainer(container) ? invariant_1(false, 'Target container is not a DOM element.') : void 0;
15878
15912
  // TODO: pass ReactDOM portal implementation as third argument
15879
15913
  return createPortal$1(children, container, null, key);
15880
15914
  }
@@ -15900,7 +15934,7 @@ var ReactDOM = {
15900
15934
  var owner = ReactCurrentOwner.current;
15901
15935
  if (owner !== null) {
15902
15936
  var warnedAboutRefsInRender = owner.stateNode._warnedAboutRefsInRender;
15903
- warning_1$1(warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(owner) || 'A component');
15937
+ warning_1(warnedAboutRefsInRender, '%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(owner) || 'A component');
15904
15938
  owner.stateNode._warnedAboutRefsInRender = true;
15905
15939
  }
15906
15940
  }
@@ -15917,9 +15951,9 @@ var ReactDOM = {
15917
15951
  }
15918
15952
 
15919
15953
  if (typeof componentOrElement.render === 'function') {
15920
- invariant_1$1(false, 'Unable to find node on an unmounted component.');
15954
+ invariant_1(false, 'Unable to find node on an unmounted component.');
15921
15955
  } else {
15922
- invariant_1$1(false, 'Element appears to be neither ReactComponent nor DOMNode. Keys: %s', Object.keys(componentOrElement));
15956
+ invariant_1(false, 'Element appears to be neither ReactComponent nor DOMNode. Keys: %s', Object.keys(componentOrElement));
15923
15957
  }
15924
15958
  },
15925
15959
  hydrate: function (element, container, callback) {
@@ -15930,17 +15964,17 @@ var ReactDOM = {
15930
15964
  return renderSubtreeIntoContainer(null, element, container, false, callback);
15931
15965
  },
15932
15966
  unstable_renderSubtreeIntoContainer: function (parentComponent, element, containerNode, callback) {
15933
- !(parentComponent != null && has(parentComponent)) ? invariant_1$1(false, 'parentComponent must be a valid React Component') : void 0;
15967
+ !(parentComponent != null && has(parentComponent)) ? invariant_1(false, 'parentComponent must be a valid React Component') : void 0;
15934
15968
  return renderSubtreeIntoContainer(parentComponent, element, containerNode, false, callback);
15935
15969
  },
15936
15970
  unmountComponentAtNode: function (container) {
15937
- !isValidContainer(container) ? invariant_1$1(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : void 0;
15971
+ !isValidContainer(container) ? invariant_1(false, 'unmountComponentAtNode(...): Target container is not a DOM element.') : void 0;
15938
15972
 
15939
15973
  if (container._reactRootContainer) {
15940
15974
  {
15941
15975
  var rootEl = getReactRootElementInContainer(container);
15942
15976
  var renderedByDifferentReact = rootEl && !getInstanceFromNode$1(rootEl);
15943
- warning_1$1(!renderedByDifferentReact, "unmountComponentAtNode(): The node you're attempting to unmount " + 'was rendered by another copy of React.');
15977
+ warning_1(!renderedByDifferentReact, "unmountComponentAtNode(): The node you're attempting to unmount " + 'was rendered by another copy of React.');
15944
15978
  }
15945
15979
 
15946
15980
  // Unmount should not be batched.
@@ -15960,7 +15994,7 @@ var ReactDOM = {
15960
15994
  // Check if the container itself is a React root node.
15961
15995
  var isContainerReactRoot = container.nodeType === 1 && isValidContainer(container.parentNode) && !!container.parentNode._reactRootContainer;
15962
15996
 
15963
- warning_1$1(!hasNonRootReactChild, "unmountComponentAtNode(): The node you're attempting to unmount " + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.');
15997
+ warning_1(!hasNonRootReactChild, "unmountComponentAtNode(): The node you're attempting to unmount " + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.');
15964
15998
  }
15965
15999
 
15966
16000
  return false;