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.
- package/cjs/react-dom-server.browser.development.js +87 -63
- package/cjs/react-dom-server.browser.production.min.js +26 -25
- package/cjs/react-dom-server.node.development.js +88 -64
- package/cjs/react-dom-server.node.production.min.js +29 -28
- package/cjs/react-dom-test-utils.development.js +8 -1
- package/cjs/react-dom-test-utils.production.min.js +2 -1
- package/cjs/react-dom-unstable-native-dependencies.development.js +3 -1
- package/cjs/react-dom-unstable-native-dependencies.production.min.js +2 -1
- package/cjs/react-dom.development.js +353 -317
- package/cjs/react-dom.production.min.js +214 -212
- package/package.json +1 -1
- package/umd/react-dom-server.browser.development.js +139 -117
- package/umd/react-dom-server.browser.production.min.js +27 -27
- package/umd/react-dom-test-utils.development.js +1247 -0
- package/umd/react-dom-test-utils.production.min.js +29 -0
- package/umd/react-dom-unstable-native-dependencies.development.js +16 -16
- package/umd/react-dom-unstable-native-dependencies.production.min.js +1 -1
- package/umd/react-dom.development.js +567 -533
- package/umd/react-dom.production.min.js +182 -182
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** @license React v16.1
|
|
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
|
|
77
|
+
var invariant_1 = invariant;
|
|
78
78
|
|
|
79
|
-
!React ? invariant_1
|
|
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
|
|
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
|
|
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
|
-
//
|
|
298
|
-
//
|
|
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:
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
847
|
+
var emptyFunction = function emptyFunction() {};
|
|
848
848
|
|
|
849
|
-
emptyFunction
|
|
850
|
-
emptyFunction
|
|
851
|
-
emptyFunction
|
|
852
|
-
emptyFunction
|
|
853
|
-
emptyFunction
|
|
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
|
|
856
|
+
emptyFunction.thatReturnsArgument = function (arg) {
|
|
857
857
|
return arg;
|
|
858
858
|
};
|
|
859
859
|
|
|
860
|
-
var emptyFunction_1 = emptyFunction
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 === '
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
4292
|
-
|
|
4293
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
5277
|
-
var warning$2 = warning_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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
7192
|
+
var hasSymbol = typeof Symbol === 'function' && Symbol['for'];
|
|
7148
7193
|
|
|
7149
|
-
|
|
7150
|
-
|
|
7151
|
-
|
|
7152
|
-
|
|
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
|
-
|
|
7155
|
-
|
|
7156
|
-
|
|
7157
|
-
|
|
7158
|
-
|
|
7159
|
-
|
|
7160
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
7260
|
-
!element._owner ? invariant_1
|
|
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
|
|
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
|
|
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(
|
|
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
|
-
|
|
7359
|
-
|
|
7360
|
-
|
|
7361
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
8305
|
-
} else
|
|
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,
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 =
|
|
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 =
|
|
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
|
|
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 =
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
9548
|
+
invariant_1(false, 'Persistent reconciler is disabled.');
|
|
9559
9549
|
} else {
|
|
9560
|
-
invariant_1
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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 (!
|
|
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 || !
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
11250
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
11378
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
11519
|
+
callbackExpirationTime = NoWork;
|
|
11520
|
+
callbackID = -1;
|
|
11471
11521
|
}
|
|
11472
11522
|
// If there's work left over, schedule a new callback.
|
|
11473
|
-
if (
|
|
11474
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
11835
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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 (
|
|
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
|
|
12861
|
+
warning_1(false, 'Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');
|
|
12744
12862
|
}
|
|
12745
|
-
!(defaultValue == null) ? invariant_1
|
|
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
|
|
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 = '"';
|
|
12921
|
-
break;
|
|
12922
|
-
case 38:
|
|
12923
|
-
// &
|
|
12924
|
-
escape = '&';
|
|
12925
|
-
break;
|
|
12926
|
-
case 39:
|
|
12927
|
-
// '
|
|
12928
|
-
escape = '''; // modified from escape-html; used to be '''
|
|
12929
|
-
break;
|
|
12930
|
-
case 60:
|
|
12931
|
-
// <
|
|
12932
|
-
escape = '<';
|
|
12933
|
-
break;
|
|
12934
|
-
case 62:
|
|
12935
|
-
// >
|
|
12936
|
-
escape = '>';
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
13425
|
-
!(typeof props.dangerouslySetInnerHTML === 'object' && HTML$1 in props.dangerouslySetInnerHTML) ? invariant_1
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
14142
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
14468
|
+
setTextContent(domElement, nextProp);
|
|
14444
14469
|
}
|
|
14445
14470
|
} else if (typeof nextProp === 'number') {
|
|
14446
|
-
setTextContent
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
15756
|
+
return null;
|
|
15725
15757
|
}
|
|
15726
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
15954
|
+
invariant_1(false, 'Unable to find node on an unmounted component.');
|
|
15921
15955
|
} else {
|
|
15922
|
-
invariant_1
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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;
|