diff --git a/_config.yml b/_config.yml
index 42ad0d2c..53f06975 100644
--- a/_config.yml
+++ b/_config.yml
@@ -38,11 +38,11 @@ gems:
- jekyll-redirect-from
react_version: 15.1.0
react_hashes:
- dev: I9uU7ZWS2zpxPvpUfutJ7LD6Mmzk3pvvBCbfC7/imYVdtuPR9hRiLIJrVIZilwht
- prod: 3aKuzevuBSs0FfxObUZ42KUGqneCk7kh9g7/aZ+Yzf5MhucA9KvfUSH5jcma9kdZ
- addons_dev: 5jJyZhvy/Kkt6uTW3AY3U6bZ+0yDAS7NQDHExu76Zmoa6ABy5g42MoGj9pgeELqf
- addons_prod: JkeMnC7xa++rlt5smrQVlrrBdYEy0WJbF78QOIpdQeg7UCUjWF3/gyNC/IVh5s4l
- dom_dev: MWQ0uDsZsWizHa2PvAdb45Y1JXy+oLZPc0fabiueWS4rOZuKXDzqf12jjKMF8u3t
- dom_prod: tEAvCNm5NozfOX3D8eOmg6E7CUNRQEaLq9xPqVr9ii9BW1cVXiuHKqrXUh3W7wg5
- dom_server_dev: WTaEVUVSSkUY+GTjvLO65ZjnLMR2BBa+WkXF1F4rVIxqoMnxFcjugmyoxYwXMmF6
- dom_server_prod: rFqq5Djim9lOAYssAJTvdJhtcGdz328JIjbcDq/5/r5DLwYyl8esZ1C0+CKeSXxo
+ dev: vck4RVcD/d8oCyYODNkyY5bF8we4hBqLNCQzIsK1n4eN+WTWkSMaXH8Bl0ByIaMd
+ prod: SA/uTNKFAqs8tVn1gROCqtn9Y/waa33EiLYKD7iALN+MDxP1DWBEWPCPmSkYzdsa
+ addons_dev: Bhsz0xzA1wDnGOSV7KbIL0pKaNOZ5KdPxqVOZTwVyU5NfUGDgN56LTVPVrGi3cMy
+ addons_prod: Gi+revrP36Zmqp/aqipOToEggqK5NWoKz1B1SUgiA1/OwV+pR8FqnU/VdfzizfUf
+ dom_dev: 0D/X+kBzzy9hGstygpjpkksS9+WWyG0B/ZfKROdwJ4h6BbJLCnL8lodLYYXxEunS
+ dom_prod: eZbWlQZOpUJXnnogcw4IRZvbGDRjAOpZvOEe932rEg0fhFmXXnaN9bLP/x1RbB6D
+ dom_server_dev: oo6/aLeY4xKtb+MetozfT9WlfPcJq6wnqeIT6suwaeA/qPaSG7B1wWvM8WLATV7Z
+ dom_server_prod: m3fk/O7t/S25hafVhhsrQ7YwjLJdqNNZwgYsAXft24YSrPXysowaoqpQokZO1lsI
diff --git a/downloads/react-15.2.0.zip b/downloads/react-15.2.0.zip
new file mode 100644
index 00000000..dff9d714
Binary files /dev/null and b/downloads/react-15.2.0.zip differ
diff --git a/js/react-dom.js b/js/react-dom.js
index 1cf5496b..45448283 100644
--- a/js/react-dom.js
+++ b/js/react-dom.js
@@ -1,5 +1,5 @@
/**
- * ReactDOM v15.1.0
+ * ReactDOM v15.2.0
*
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
diff --git a/js/react.js b/js/react.js
index 47b5df07..0751a18b 100644
--- a/js/react.js
+++ b/js/react.js
@@ -1,5 +1,5 @@
/**
- * React v15.1.0
+ * React v15.2.0
*/
(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.React = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o]+)/;
var RESULT_INDEX_ATTR = 'data-danger-index';
@@ -2025,12 +2045,12 @@ var Danger = {
* @internal
*/
dangerouslyRenderMarkup: function (markupList) {
- !ExecutionEnvironment.canUseDOM ? "development" !== 'production' ? invariant(false, 'dangerouslyRenderMarkup(...): Cannot render markup in a worker ' + 'thread. Make sure `window` and `document` are available globally ' + 'before requiring React when unit testing or use ' + 'ReactDOMServer.renderToString for server rendering.') : invariant(false) : void 0;
+ !ExecutionEnvironment.canUseDOM ? "development" !== 'production' ? invariant(false, 'dangerouslyRenderMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString for server rendering.') : _prodInvariant('51') : void 0;
var nodeName;
var markupByNodeName = {};
// Group markup by `nodeName` if a wrap is necessary, else by '*'.
for (var i = 0; i < markupList.length; i++) {
- !markupList[i] ? "development" !== 'production' ? invariant(false, 'dangerouslyRenderMarkup(...): Missing markup.') : invariant(false) : void 0;
+ !markupList[i] ? "development" !== 'production' ? invariant(false, 'dangerouslyRenderMarkup(...): Missing markup.') : _prodInvariant('52') : void 0;
nodeName = getNodeName(markupList[i]);
nodeName = getMarkupWrap(nodeName) ? nodeName : '*';
markupByNodeName[nodeName] = markupByNodeName[nodeName] || [];
@@ -2072,7 +2092,7 @@ var Danger = {
resultIndex = +renderNode.getAttribute(RESULT_INDEX_ATTR);
renderNode.removeAttribute(RESULT_INDEX_ATTR);
- !!resultList.hasOwnProperty(resultIndex) ? "development" !== 'production' ? invariant(false, 'Danger: Assigning to an already-occupied result index.') : invariant(false) : void 0;
+ !!resultList.hasOwnProperty(resultIndex) ? "development" !== 'production' ? invariant(false, 'Danger: Assigning to an already-occupied result index.') : _prodInvariant('53') : void 0;
resultList[resultIndex] = renderNode;
@@ -2087,9 +2107,9 @@ var Danger = {
// Although resultList was populated out of order, it should now be a dense
// array.
- !(resultListAssignmentCount === resultList.length) ? "development" !== 'production' ? invariant(false, 'Danger: Did not assign to every index of resultList.') : invariant(false) : void 0;
+ !(resultListAssignmentCount === resultList.length) ? "development" !== 'production' ? invariant(false, 'Danger: Did not assign to every index of resultList.') : _prodInvariant('54') : void 0;
- !(resultList.length === markupList.length) ? "development" !== 'production' ? invariant(false, 'Danger: Expected markup to render %s nodes, but rendered %s.', markupList.length, resultList.length) : invariant(false) : void 0;
+ !(resultList.length === markupList.length) ? "development" !== 'production' ? invariant(false, 'Danger: Expected markup to render %s nodes, but rendered %s.', markupList.length, resultList.length) : _prodInvariant('55', markupList.length, resultList.length) : void 0;
return resultList;
},
@@ -2103,9 +2123,9 @@ var Danger = {
* @internal
*/
dangerouslyReplaceNodeWithMarkup: function (oldChild, markup) {
- !ExecutionEnvironment.canUseDOM ? "development" !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a ' + 'worker thread. Make sure `window` and `document` are available ' + 'globally before requiring React when unit testing or use ' + 'ReactDOMServer.renderToString() for server rendering.') : invariant(false) : void 0;
- !markup ? "development" !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : invariant(false) : void 0;
- !(oldChild.nodeName !== 'HTML') ? "development" !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the ' + ' node. This is because browser quirks make this unreliable ' + 'and/or slow. If you want to render to the root you must use ' + 'server rendering. See ReactDOMServer.renderToString().') : invariant(false) : void 0;
+ !ExecutionEnvironment.canUseDOM ? "development" !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a worker thread. Make sure `window` and `document` are available globally before requiring React when unit testing or use ReactDOMServer.renderToString() for server rendering.') : _prodInvariant('56') : void 0;
+ !markup ? "development" !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : _prodInvariant('57') : void 0;
+ !(oldChild.nodeName !== 'HTML') ? "development" !== 'production' ? invariant(false, 'dangerouslyReplaceNodeWithMarkup(...): Cannot replace markup of the node. This is because browser quirks make this unreliable and/or slow. If you want to render to the root you must use server rendering. See ReactDOMServer.renderToString().') : _prodInvariant('58') : void 0;
if (typeof markup === 'string') {
var newChild = createNodesFromMarkup(markup, emptyFunction)[0];
@@ -2118,7 +2138,7 @@ var Danger = {
};
module.exports = Danger;
-},{"143":143,"148":148,"149":149,"153":153,"157":157,"8":8}],13:[function(_dereq_,module,exports){
+},{"137":137,"145":145,"150":150,"151":151,"155":155,"159":159,"8":8}],13:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -2132,7 +2152,7 @@ module.exports = Danger;
'use strict';
-var keyOf = _dereq_(161);
+var keyOf = _dereq_(163);
/**
* Module that is injectable into `EventPluginHub`, that specifies a
@@ -2146,7 +2166,7 @@ var keyOf = _dereq_(161);
var DefaultEventPluginOrder = [keyOf({ ResponderEventPlugin: null }), keyOf({ SimpleEventPlugin: null }), keyOf({ TapEventPlugin: null }), keyOf({ EnterLeaveEventPlugin: null }), keyOf({ ChangeEventPlugin: null }), keyOf({ SelectEventPlugin: null }), keyOf({ BeforeInputEventPlugin: null })];
module.exports = DefaultEventPluginOrder;
-},{"161":161}],14:[function(_dereq_,module,exports){
+},{"163":163}],14:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -2175,24 +2195,24 @@ var disableableMouseListenerNames = {
};
/**
- * Implements a native component that does not receive mouse events
+ * Implements a host component that does not receive mouse events
* when `disabled` is set.
*/
var DisabledInputUtils = {
- getNativeProps: function (inst, props) {
+ getHostProps: function (inst, props) {
if (!props.disabled) {
return props;
}
// Copy the props, except the mouse listeners
- var nativeProps = {};
+ var hostProps = {};
for (var key in props) {
if (!disableableMouseListenerNames[key] && props.hasOwnProperty(key)) {
- nativeProps[key] = props[key];
+ hostProps[key] = props[key];
}
}
- return nativeProps;
+ return hostProps;
}
};
@@ -2216,7 +2236,7 @@ var EventPropagators = _dereq_(20);
var ReactDOMComponentTree = _dereq_(41);
var SyntheticMouseEvent = _dereq_(106);
-var keyOf = _dereq_(161);
+var keyOf = _dereq_(163);
var topLevelTypes = EventConstants.topLevelTypes;
@@ -2303,7 +2323,7 @@ var EnterLeaveEventPlugin = {
};
module.exports = EnterLeaveEventPlugin;
-},{"106":106,"16":16,"161":161,"20":20,"41":41}],16:[function(_dereq_,module,exports){
+},{"106":106,"16":16,"163":163,"20":20,"41":41}],16:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -2317,7 +2337,7 @@ module.exports = EnterLeaveEventPlugin;
'use strict';
-var keyMirror = _dereq_(160);
+var keyMirror = _dereq_(162);
var PropagationPhases = keyMirror({ bubbled: null, captured: null });
@@ -2401,7 +2421,7 @@ var EventConstants = {
};
module.exports = EventConstants;
-},{"160":160}],17:[function(_dereq_,module,exports){
+},{"162":162}],17:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -2415,13 +2435,15 @@ module.exports = EventConstants;
'use strict';
+var _prodInvariant = _dereq_(137);
+
var EventPluginRegistry = _dereq_(18);
var EventPluginUtils = _dereq_(19);
var ReactErrorUtils = _dereq_(64);
var accumulateInto = _dereq_(113);
-var forEachAccumulated = _dereq_(121);
-var invariant = _dereq_(157);
+var forEachAccumulated = _dereq_(122);
+var invariant = _dereq_(159);
/**
* Internal store for event listeners
@@ -2507,7 +2529,7 @@ var EventPluginHub = {
* @param {function} listener The callback to store.
*/
putListener: function (inst, registrationName, listener) {
- !(typeof listener === 'function') ? "development" !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : invariant(false) : void 0;
+ !(typeof listener === 'function') ? "development" !== 'production' ? invariant(false, 'Expected %s listener to be a function, instead got type %s', registrationName, typeof listener) : _prodInvariant('94', registrationName, typeof listener) : void 0;
var bankForRegistrationName = listenerBank[registrationName] || (listenerBank[registrationName] = {});
bankForRegistrationName[inst._rootNodeID] = listener;
@@ -2554,6 +2576,10 @@ var EventPluginHub = {
*/
deleteAllListeners: function (inst) {
for (var registrationName in listenerBank) {
+ if (!listenerBank.hasOwnProperty(registrationName)) {
+ continue;
+ }
+
if (!listenerBank[registrationName][inst._rootNodeID]) {
continue;
}
@@ -2618,7 +2644,7 @@ var EventPluginHub = {
} else {
forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);
}
- !!eventQueue ? "development" !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing ' + 'an event queue. Support for this has not yet been implemented.') : invariant(false) : void 0;
+ !!eventQueue ? "development" !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing an event queue. Support for this has not yet been implemented.') : _prodInvariant('95') : void 0;
// This would be a good time to rethrow if any of the event handlers threw.
ReactErrorUtils.rethrowCaughtError();
},
@@ -2637,7 +2663,7 @@ var EventPluginHub = {
};
module.exports = EventPluginHub;
-},{"113":113,"121":121,"157":157,"18":18,"19":19,"64":64}],18:[function(_dereq_,module,exports){
+},{"113":113,"122":122,"137":137,"159":159,"18":18,"19":19,"64":64}],18:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -2651,7 +2677,9 @@ module.exports = EventPluginHub;
'use strict';
-var invariant = _dereq_(157);
+var _prodInvariant = _dereq_(137);
+
+var invariant = _dereq_(159);
/**
* Injectable ordering of event plugins.
@@ -2676,15 +2704,15 @@ function recomputePluginOrdering() {
for (var pluginName in namesToPlugins) {
var PluginModule = namesToPlugins[pluginName];
var pluginIndex = EventPluginOrder.indexOf(pluginName);
- !(pluginIndex > -1) ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in ' + 'the plugin ordering, `%s`.', pluginName) : invariant(false) : void 0;
+ !(pluginIndex > -1) ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `%s`.', pluginName) : _prodInvariant('96', pluginName) : void 0;
if (EventPluginRegistry.plugins[pluginIndex]) {
continue;
}
- !PluginModule.extractEvents ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` ' + 'method, but `%s` does not.', pluginName) : invariant(false) : void 0;
+ !PluginModule.extractEvents ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `%s` does not.', pluginName) : _prodInvariant('97', pluginName) : void 0;
EventPluginRegistry.plugins[pluginIndex] = PluginModule;
var publishedEvents = PluginModule.eventTypes;
for (var eventName in publishedEvents) {
- !publishEventForPlugin(publishedEvents[eventName], PluginModule, eventName) ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : invariant(false) : void 0;
+ !publishEventForPlugin(publishedEvents[eventName], PluginModule, eventName) ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.', eventName, pluginName) : _prodInvariant('98', eventName, pluginName) : void 0;
}
}
}
@@ -2698,7 +2726,7 @@ function recomputePluginOrdering() {
* @private
*/
function publishEventForPlugin(dispatchConfig, PluginModule, eventName) {
- !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? "development" !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same ' + 'event name, `%s`.', eventName) : invariant(false) : void 0;
+ !!EventPluginRegistry.eventNameDispatchConfigs.hasOwnProperty(eventName) ? "development" !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same event name, `%s`.', eventName) : _prodInvariant('99', eventName) : void 0;
EventPluginRegistry.eventNameDispatchConfigs[eventName] = dispatchConfig;
var phasedRegistrationNames = dispatchConfig.phasedRegistrationNames;
@@ -2726,13 +2754,17 @@ function publishEventForPlugin(dispatchConfig, PluginModule, eventName) {
* @private
*/
function publishRegistrationName(registrationName, PluginModule, eventName) {
- !!EventPluginRegistry.registrationNameModules[registrationName] ? "development" !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same ' + 'registration name, `%s`.', registrationName) : invariant(false) : void 0;
+ !!EventPluginRegistry.registrationNameModules[registrationName] ? "development" !== 'production' ? invariant(false, 'EventPluginHub: More than one plugin attempted to publish the same registration name, `%s`.', registrationName) : _prodInvariant('100', registrationName) : void 0;
EventPluginRegistry.registrationNameModules[registrationName] = PluginModule;
EventPluginRegistry.registrationNameDependencies[registrationName] = PluginModule.eventTypes[eventName].dependencies;
if ("development" !== 'production') {
var lowerCasedName = registrationName.toLowerCase();
EventPluginRegistry.possibleRegistrationNames[lowerCasedName] = registrationName;
+
+ if (registrationName === 'onDoubleClick') {
+ EventPluginRegistry.possibleRegistrationNames.ondblclick = registrationName;
+ }
}
}
@@ -2781,7 +2813,7 @@ var EventPluginRegistry = {
* @see {EventPluginHub.injection.injectEventPluginOrder}
*/
injectEventPluginOrder: function (InjectedEventPluginOrder) {
- !!EventPluginOrder ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than ' + 'once. You are likely trying to load more than one copy of React.') : invariant(false) : void 0;
+ !!EventPluginOrder ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject event plugin ordering more than once. You are likely trying to load more than one copy of React.') : _prodInvariant('101') : void 0;
// Clone the ordering so it cannot be dynamically mutated.
EventPluginOrder = Array.prototype.slice.call(InjectedEventPluginOrder);
recomputePluginOrdering();
@@ -2805,7 +2837,7 @@ var EventPluginRegistry = {
}
var PluginModule = injectedNamesToPlugins[pluginName];
if (!namesToPlugins.hasOwnProperty(pluginName) || namesToPlugins[pluginName] !== PluginModule) {
- !!namesToPlugins[pluginName] ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins ' + 'using the same name, `%s`.', pluginName) : invariant(false) : void 0;
+ !!namesToPlugins[pluginName] ? "development" !== 'production' ? invariant(false, 'EventPluginRegistry: Cannot inject two different event plugins using the same name, `%s`.', pluginName) : _prodInvariant('102', pluginName) : void 0;
namesToPlugins[pluginName] = PluginModule;
isOrderingDirty = true;
}
@@ -2879,7 +2911,7 @@ var EventPluginRegistry = {
};
module.exports = EventPluginRegistry;
-},{"157":157}],19:[function(_dereq_,module,exports){
+},{"137":137,"159":159}],19:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -2893,11 +2925,13 @@ module.exports = EventPluginRegistry;
'use strict';
+var _prodInvariant = _dereq_(137);
+
var EventConstants = _dereq_(16);
var ReactErrorUtils = _dereq_(64);
-var invariant = _dereq_(157);
-var warning = _dereq_(167);
+var invariant = _dereq_(159);
+var warning = _dereq_(169);
/**
* Injected dependencies:
@@ -3051,7 +3085,7 @@ function executeDirectDispatch(event) {
}
var dispatchListener = event._dispatchListeners;
var dispatchInstance = event._dispatchInstances;
- !!Array.isArray(dispatchListener) ? "development" !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : invariant(false) : void 0;
+ !!Array.isArray(dispatchListener) ? "development" !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : _prodInvariant('103') : void 0;
event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;
var res = dispatchListener ? dispatchListener(event) : null;
event.currentTarget = null;
@@ -3107,7 +3141,7 @@ var EventPluginUtils = {
};
module.exports = EventPluginUtils;
-},{"157":157,"16":16,"167":167,"64":64}],20:[function(_dereq_,module,exports){
+},{"137":137,"159":159,"16":16,"169":169,"64":64}],20:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -3126,8 +3160,8 @@ var EventPluginHub = _dereq_(17);
var EventPluginUtils = _dereq_(19);
var accumulateInto = _dereq_(113);
-var forEachAccumulated = _dereq_(121);
-var warning = _dereq_(167);
+var forEachAccumulated = _dereq_(122);
+var warning = _dereq_(169);
var PropagationPhases = EventConstants.PropagationPhases;
var getListener = EventPluginHub.getListener;
@@ -3245,7 +3279,7 @@ var EventPropagators = {
};
module.exports = EventPropagators;
-},{"113":113,"121":121,"16":16,"167":167,"17":17,"19":19}],21:[function(_dereq_,module,exports){
+},{"113":113,"122":122,"16":16,"169":169,"17":17,"19":19}],21:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -3259,11 +3293,11 @@ module.exports = EventPropagators;
'use strict';
-var _assign = _dereq_(168);
+var _assign = _dereq_(170);
var PooledClass = _dereq_(25);
-var getTextContentAccessor = _dereq_(129);
+var getTextContentAccessor = _dereq_(130);
/**
* This helper class stores information about text content of a target node,
@@ -3341,7 +3375,7 @@ _assign(FallbackCompositionState.prototype, {
PooledClass.addPoolingTo(FallbackCompositionState);
module.exports = FallbackCompositionState;
-},{"129":129,"168":168,"25":25}],22:[function(_dereq_,module,exports){
+},{"130":130,"170":170,"25":25}],22:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -3359,7 +3393,6 @@ var DOMProperty = _dereq_(10);
var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;
var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;
-var HAS_SIDE_EFFECTS = DOMProperty.injection.HAS_SIDE_EFFECTS;
var HAS_NUMERIC_VALUE = DOMProperty.injection.HAS_NUMERIC_VALUE;
var HAS_POSITIVE_NUMERIC_VALUE = DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;
var HAS_OVERLOADED_BOOLEAN_VALUE = DOMProperty.injection.HAS_OVERLOADED_BOOLEAN_VALUE;
@@ -3493,7 +3526,7 @@ var HTMLDOMPropertyConfig = {
// Setting .type throws on non- tags
type: 0,
useMap: 0,
- value: MUST_USE_PROPERTY | HAS_SIDE_EFFECTS,
+ value: 0,
width: 0,
wmode: 0,
wrap: 0,
@@ -3624,11 +3657,13 @@ module.exports = KeyEscapeUtils;
'use strict';
+var _prodInvariant = _dereq_(137);
+
var ReactPropTypes = _dereq_(84);
var ReactPropTypeLocations = _dereq_(83);
-var invariant = _dereq_(157);
-var warning = _dereq_(167);
+var invariant = _dereq_(159);
+var warning = _dereq_(169);
var hasReadOnlyValue = {
'button': true,
@@ -3641,16 +3676,16 @@ var hasReadOnlyValue = {
};
function _assertSingleLink(inputProps) {
- !(inputProps.checkedLink == null || inputProps.valueLink == null) ? "development" !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use ' + 'checkedLink, you probably don\'t want to use valueLink and vice versa.') : invariant(false) : void 0;
+ !(inputProps.checkedLink == null || inputProps.valueLink == null) ? "development" !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a valueLink. If you want to use checkedLink, you probably don\'t want to use valueLink and vice versa.') : _prodInvariant('87') : void 0;
}
function _assertValueLink(inputProps) {
_assertSingleLink(inputProps);
- !(inputProps.value == null && inputProps.onChange == null) ? "development" !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want ' + 'to use value or onChange, you probably don\'t want to use valueLink.') : invariant(false) : void 0;
+ !(inputProps.value == null && inputProps.onChange == null) ? "development" !== 'production' ? invariant(false, 'Cannot provide a valueLink and a value or onChange event. If you want to use value or onChange, you probably don\'t want to use valueLink.') : _prodInvariant('88') : void 0;
}
function _assertCheckedLink(inputProps) {
_assertSingleLink(inputProps);
- !(inputProps.checked == null && inputProps.onChange == null) ? "development" !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. ' + 'If you want to use checked or onChange, you probably don\'t want to ' + 'use checkedLink') : invariant(false) : void 0;
+ !(inputProps.checked == null && inputProps.onChange == null) ? "development" !== 'production' ? invariant(false, 'Cannot provide a checkedLink and a checked property or onChange event. If you want to use checked or onChange, you probably don\'t want to use checkedLink') : _prodInvariant('89') : void 0;
}
var propTypes = {
@@ -3744,7 +3779,7 @@ var LinkedValueUtils = {
};
module.exports = LinkedValueUtils;
-},{"157":157,"167":167,"83":83,"84":84}],25:[function(_dereq_,module,exports){
+},{"137":137,"159":159,"169":169,"83":83,"84":84}],25:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -3758,7 +3793,9 @@ module.exports = LinkedValueUtils;
'use strict';
-var invariant = _dereq_(157);
+var _prodInvariant = _dereq_(137);
+
+var invariant = _dereq_(159);
/**
* Static poolers. Several custom versions for each potential number of
@@ -3824,7 +3861,7 @@ var fiveArgumentPooler = function (a1, a2, a3, a4, a5) {
var standardReleaser = function (instance) {
var Klass = this;
- !(instance instanceof Klass) ? "development" !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : invariant(false) : void 0;
+ !(instance instanceof Klass) ? "development" !== 'production' ? invariant(false, 'Trying to release an instance into a pool of a different type.') : _prodInvariant('25') : void 0;
instance.destructor();
if (Klass.instancePool.length < Klass.poolSize) {
Klass.instancePool.push(instance);
@@ -3864,7 +3901,7 @@ var PooledClass = {
};
module.exports = PooledClass;
-},{"157":157}],26:[function(_dereq_,module,exports){
+},{"137":137,"159":159}],26:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -3878,25 +3915,25 @@ module.exports = PooledClass;
'use strict';
-var _assign = _dereq_(168);
+var _assign = _dereq_(170);
var ReactChildren = _dereq_(29);
var ReactComponent = _dereq_(31);
var ReactClass = _dereq_(30);
var ReactDOMFactories = _dereq_(45);
var ReactElement = _dereq_(61);
-var ReactElementValidator = _dereq_(62);
var ReactPropTypes = _dereq_(84);
var ReactVersion = _dereq_(94);
-var onlyChild = _dereq_(134);
-var warning = _dereq_(167);
+var onlyChild = _dereq_(135);
+var warning = _dereq_(169);
var createElement = ReactElement.createElement;
var createFactory = ReactElement.createFactory;
var cloneElement = ReactElement.cloneElement;
if ("development" !== 'production') {
+ var ReactElementValidator = _dereq_(62);
createElement = ReactElementValidator.createElement;
createFactory = ReactElementValidator.createFactory;
cloneElement = ReactElementValidator.cloneElement;
@@ -3952,7 +3989,7 @@ var React = {
};
module.exports = React;
-},{"134":134,"167":167,"168":168,"29":29,"30":30,"31":31,"45":45,"61":61,"62":62,"84":84,"94":94}],27:[function(_dereq_,module,exports){
+},{"135":135,"169":169,"170":170,"29":29,"30":30,"31":31,"45":45,"61":61,"62":62,"84":84,"94":94}],27:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -3966,15 +4003,15 @@ module.exports = React;
'use strict';
-var _assign = _dereq_(168);
+var _assign = _dereq_(170);
var EventConstants = _dereq_(16);
var EventPluginRegistry = _dereq_(18);
var ReactEventEmitterMixin = _dereq_(65);
var ViewportMetrics = _dereq_(112);
-var getVendorPrefixedEventName = _dereq_(130);
-var isEventSupported = _dereq_(132);
+var getVendorPrefixedEventName = _dereq_(131);
+var isEventSupported = _dereq_(133);
/**
* Summary of `ReactBrowserEventEmitter` event handling:
@@ -4270,7 +4307,7 @@ var ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {
});
module.exports = ReactBrowserEventEmitter;
-},{"112":112,"130":130,"132":132,"16":16,"168":168,"18":18,"65":65}],28:[function(_dereq_,module,exports){
+},{"112":112,"131":131,"133":133,"16":16,"170":170,"18":18,"65":65}],28:[function(_dereq_,module,exports){
/**
* Copyright 2014-present, Facebook, Inc.
* All rights reserved.
@@ -4286,17 +4323,18 @@ module.exports = ReactBrowserEventEmitter;
var ReactReconciler = _dereq_(86);
-var instantiateReactComponent = _dereq_(131);
+var ReactComponentTreeDevtool = _dereq_(34);
+var instantiateReactComponent = _dereq_(132);
var KeyEscapeUtils = _dereq_(23);
-var shouldUpdateReactComponent = _dereq_(139);
-var traverseAllChildren = _dereq_(140);
-var warning = _dereq_(167);
+var shouldUpdateReactComponent = _dereq_(141);
+var traverseAllChildren = _dereq_(142);
+var warning = _dereq_(169);
-function instantiateChild(childInstances, child, name) {
+function instantiateChild(childInstances, child, name, selfDebugID) {
// We found a component instance.
var keyUnique = childInstances[name] === undefined;
if ("development" !== 'production') {
- "development" !== 'production' ? warning(keyUnique, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.', KeyEscapeUtils.unescape(name)) : void 0;
+ "development" !== 'production' ? warning(keyUnique, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.%s', KeyEscapeUtils.unescape(name), ReactComponentTreeDevtool.getStackAddendumByID(selfDebugID)) : void 0;
}
if (child != null && keyUnique) {
childInstances[name] = instantiateReactComponent(child);
@@ -4317,12 +4355,20 @@ var ReactChildReconciler = {
* @return {?object} A set of child instances.
* @internal
*/
- instantiateChildren: function (nestedChildNodes, transaction, context) {
+ instantiateChildren: function (nestedChildNodes, transaction, context, selfDebugID // __DEV__ only
+ ) {
if (nestedChildNodes == null) {
return null;
}
var childInstances = {};
- traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);
+
+ if ("development" !== 'production') {
+ traverseAllChildren(nestedChildNodes, function (childInsts, child, name) {
+ return instantiateChild(childInsts, child, name, selfDebugID);
+ }, childInstances);
+ } else {
+ traverseAllChildren(nestedChildNodes, instantiateChild, childInstances);
+ }
return childInstances;
},
@@ -4359,7 +4405,7 @@ var ReactChildReconciler = {
nextChildren[name] = prevChild;
} else {
if (prevChild) {
- removedNodes[name] = ReactReconciler.getNativeNode(prevChild);
+ removedNodes[name] = ReactReconciler.getHostNode(prevChild);
ReactReconciler.unmountComponent(prevChild, false);
}
// The child must be instantiated before it's mounted.
@@ -4371,7 +4417,7 @@ var ReactChildReconciler = {
for (name in prevChildren) {
if (prevChildren.hasOwnProperty(name) && !(nextChildren && nextChildren.hasOwnProperty(name))) {
prevChild = prevChildren[name];
- removedNodes[name] = ReactReconciler.getNativeNode(prevChild);
+ removedNodes[name] = ReactReconciler.getHostNode(prevChild);
ReactReconciler.unmountComponent(prevChild, false);
}
}
@@ -4396,7 +4442,7 @@ var ReactChildReconciler = {
};
module.exports = ReactChildReconciler;
-},{"131":131,"139":139,"140":140,"167":167,"23":23,"86":86}],29:[function(_dereq_,module,exports){
+},{"132":132,"141":141,"142":142,"169":169,"23":23,"34":34,"86":86}],29:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -4413,8 +4459,8 @@ module.exports = ReactChildReconciler;
var PooledClass = _dereq_(25);
var ReactElement = _dereq_(61);
-var emptyFunction = _dereq_(149);
-var traverseAllChildren = _dereq_(140);
+var emptyFunction = _dereq_(151);
+var traverseAllChildren = _dereq_(142);
var twoArgumentPooler = PooledClass.twoArgumentPooler;
var fourArgumentPooler = PooledClass.fourArgumentPooler;
@@ -4588,7 +4634,7 @@ var ReactChildren = {
};
module.exports = ReactChildren;
-},{"140":140,"149":149,"25":25,"61":61}],30:[function(_dereq_,module,exports){
+},{"142":142,"151":151,"25":25,"61":61}],30:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -4602,7 +4648,8 @@ module.exports = ReactChildren;
'use strict';
-var _assign = _dereq_(168);
+var _prodInvariant = _dereq_(137),
+ _assign = _dereq_(170);
var ReactComponent = _dereq_(31);
var ReactElement = _dereq_(61);
@@ -4610,11 +4657,11 @@ var ReactPropTypeLocations = _dereq_(83);
var ReactPropTypeLocationNames = _dereq_(82);
var ReactNoopUpdateQueue = _dereq_(80);
-var emptyObject = _dereq_(150);
-var invariant = _dereq_(157);
-var keyMirror = _dereq_(160);
-var keyOf = _dereq_(161);
-var warning = _dereq_(167);
+var emptyObject = _dereq_(152);
+var invariant = _dereq_(159);
+var keyMirror = _dereq_(162);
+var keyOf = _dereq_(163);
+var warning = _dereq_(169);
var MIXINS_KEY = keyOf({ mixins: null });
@@ -4647,7 +4694,7 @@ var injectedMixins = [];
/**
* Composite components are higher-level components that compose other composite
- * or native components.
+ * or host components.
*
* To create a new type of `ReactClass`, pass a specification of
* your new class to `React.createClass`. The only requirement of your class
@@ -4960,12 +5007,12 @@ function validateMethodOverride(isAlreadyDefined, name) {
// Disallow overriding of base class methods unless explicitly allowed.
if (ReactClassMixin.hasOwnProperty(name)) {
- !(specPolicy === SpecPolicy.OVERRIDE_BASE) ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override ' + '`%s` from your class specification. Ensure that your method names ' + 'do not overlap with React methods.', name) : invariant(false) : void 0;
+ !(specPolicy === SpecPolicy.OVERRIDE_BASE) ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to override `%s` from your class specification. Ensure that your method names do not overlap with React methods.', name) : _prodInvariant('73', name) : void 0;
}
// Disallow defining methods more than once unless explicitly allowed.
if (isAlreadyDefined) {
- !(specPolicy === SpecPolicy.DEFINE_MANY || specPolicy === SpecPolicy.DEFINE_MANY_MERGED) ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define ' + '`%s` on your component more than once. This conflict may be due ' + 'to a mixin.', name) : invariant(false) : void 0;
+ !(specPolicy === SpecPolicy.DEFINE_MANY || specPolicy === SpecPolicy.DEFINE_MANY_MERGED) ? "development" !== 'production' ? invariant(false, 'ReactClassInterface: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('74', name) : void 0;
}
}
@@ -4978,8 +5025,8 @@ function mixSpecIntoComponent(Constructor, spec) {
return;
}
- !(typeof spec !== 'function') ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to ' + 'use a component class or function as a mixin. Instead, just use a ' + 'regular object.') : invariant(false) : void 0;
- !!ReactElement.isValidElement(spec) ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to ' + 'use a component as a mixin. Instead, just use a regular object.') : invariant(false) : void 0;
+ !(typeof spec !== 'function') ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component class or function as a mixin. Instead, just use a regular object.') : _prodInvariant('75') : void 0;
+ !!ReactElement.isValidElement(spec) ? "development" !== 'production' ? invariant(false, 'ReactClass: You\'re attempting to use a component as a mixin. Instead, just use a regular object.') : _prodInvariant('76') : void 0;
var proto = Constructor.prototype;
var autoBindPairs = proto.__reactAutoBindPairs;
@@ -5024,7 +5071,7 @@ function mixSpecIntoComponent(Constructor, spec) {
var specPolicy = ReactClassInterface[name];
// These cases should already be caught by validateMethodOverride.
- !(isReactClassMethod && (specPolicy === SpecPolicy.DEFINE_MANY_MERGED || specPolicy === SpecPolicy.DEFINE_MANY)) ? "development" !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s ' + 'when mixing in component specs.', specPolicy, name) : invariant(false) : void 0;
+ !(isReactClassMethod && (specPolicy === SpecPolicy.DEFINE_MANY_MERGED || specPolicy === SpecPolicy.DEFINE_MANY)) ? "development" !== 'production' ? invariant(false, 'ReactClass: Unexpected spec policy %s for key %s when mixing in component specs.', specPolicy, name) : _prodInvariant('77', specPolicy, name) : void 0;
// For methods which are defined more than once, call the existing
// methods before calling the new property, merging if appropriate.
@@ -5059,10 +5106,10 @@ function mixStaticSpecIntoComponent(Constructor, statics) {
}
var isReserved = name in RESERVED_SPEC_KEYS;
- !!isReserved ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define a reserved ' + 'property, `%s`, that shouldn\'t be on the "statics" key. Define it ' + 'as an instance property instead; it will still be accessible on the ' + 'constructor.', name) : invariant(false) : void 0;
+ !!isReserved ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define a reserved property, `%s`, that shouldn\'t be on the "statics" key. Define it as an instance property instead; it will still be accessible on the constructor.', name) : _prodInvariant('78', name) : void 0;
var isInherited = name in Constructor;
- !!isInherited ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define ' + '`%s` on your component more than once. This conflict may be ' + 'due to a mixin.', name) : invariant(false) : void 0;
+ !!isInherited ? "development" !== 'production' ? invariant(false, 'ReactClass: You are attempting to define `%s` on your component more than once. This conflict may be due to a mixin.', name) : _prodInvariant('79', name) : void 0;
Constructor[name] = property;
}
}
@@ -5075,11 +5122,11 @@ function mixStaticSpecIntoComponent(Constructor, statics) {
* @return {object} one after it has been mutated to contain everything in two.
*/
function mergeIntoWithNoDuplicateKeys(one, two) {
- !(one && two && typeof one === 'object' && typeof two === 'object') ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : invariant(false) : void 0;
+ !(one && two && typeof one === 'object' && typeof two === 'object') ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Cannot merge non-objects.') : _prodInvariant('80') : void 0;
for (var key in two) {
if (two.hasOwnProperty(key)) {
- !(one[key] === undefined) ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): ' + 'Tried to merge two objects with the same key: `%s`. This conflict ' + 'may be due to a mixin; in particular, this may be caused by two ' + 'getInitialState() or getDefaultProps() methods returning objects ' + 'with clashing keys.', key) : invariant(false) : void 0;
+ !(one[key] === undefined) ? "development" !== 'production' ? invariant(false, 'mergeIntoWithNoDuplicateKeys(): Tried to merge two objects with the same key: `%s`. This conflict may be due to a mixin; in particular, this may be caused by two getInitialState() or getDefaultProps() methods returning objects with clashing keys.', key) : _prodInvariant('81', key) : void 0;
one[key] = two[key];
}
}
@@ -5257,7 +5304,7 @@ var ReactClass = {
initialState = null;
}
}
- !(typeof initialState === 'object' && !Array.isArray(initialState)) ? "development" !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : invariant(false) : void 0;
+ !(typeof initialState === 'object' && !Array.isArray(initialState)) ? "development" !== 'production' ? invariant(false, '%s.getInitialState(): must return an object or null', Constructor.displayName || 'ReactCompositeComponent') : _prodInvariant('82', Constructor.displayName || 'ReactCompositeComponent') : void 0;
this.state = initialState;
};
@@ -5287,7 +5334,7 @@ var ReactClass = {
}
}
- !Constructor.prototype.render ? "development" !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : invariant(false) : void 0;
+ !Constructor.prototype.render ? "development" !== 'production' ? invariant(false, 'createClass(...): Class specification must implement a `render` method.') : _prodInvariant('83') : void 0;
if ("development" !== 'production') {
"development" !== 'production' ? warning(!Constructor.prototype.componentShouldUpdate, '%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.', spec.displayName || 'A component') : void 0;
@@ -5313,7 +5360,7 @@ var ReactClass = {
};
module.exports = ReactClass;
-},{"150":150,"157":157,"160":160,"161":161,"167":167,"168":168,"31":31,"61":61,"80":80,"82":82,"83":83}],31:[function(_dereq_,module,exports){
+},{"137":137,"152":152,"159":159,"162":162,"163":163,"169":169,"170":170,"31":31,"61":61,"80":80,"82":82,"83":83}],31:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -5327,13 +5374,14 @@ module.exports = ReactClass;
'use strict';
+var _prodInvariant = _dereq_(137);
+
var ReactNoopUpdateQueue = _dereq_(80);
-var ReactInstrumentation = _dereq_(71);
var canDefineProperty = _dereq_(115);
-var emptyObject = _dereq_(150);
-var invariant = _dereq_(157);
-var warning = _dereq_(167);
+var emptyObject = _dereq_(152);
+var invariant = _dereq_(159);
+var warning = _dereq_(169);
/**
* Base class helpers for the updating state of a component.
@@ -5375,11 +5423,7 @@ ReactComponent.prototype.isReactComponent = {};
* @protected
*/
ReactComponent.prototype.setState = function (partialState, callback) {
- !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? "development" !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a ' + 'function which returns an object of state variables.') : invariant(false) : void 0;
- if ("development" !== 'production') {
- ReactInstrumentation.debugTool.onSetState();
- "development" !== 'production' ? warning(partialState != null, 'setState(...): You passed an undefined or null state object; ' + 'instead, use forceUpdate().') : void 0;
- }
+ !(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null) ? "development" !== 'production' ? invariant(false, 'setState(...): takes an object of state variables to update or a function which returns an object of state variables.') : _prodInvariant('85') : void 0;
this.updater.enqueueSetState(this, partialState);
if (callback) {
this.updater.enqueueCallback(this, callback, 'setState');
@@ -5435,7 +5479,7 @@ if ("development" !== 'production') {
}
module.exports = ReactComponent;
-},{"115":115,"150":150,"157":157,"167":167,"71":71,"80":80}],32:[function(_dereq_,module,exports){
+},{"115":115,"137":137,"152":152,"159":159,"169":169,"80":80}],32:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -5489,7 +5533,9 @@ module.exports = ReactComponentBrowserEnvironment;
'use strict';
-var invariant = _dereq_(157);
+var _prodInvariant = _dereq_(137);
+
+var invariant = _dereq_(159);
var injected = false;
@@ -5516,7 +5562,7 @@ var ReactComponentEnvironment = {
injection: {
injectEnvironment: function (environment) {
- !!injected ? "development" !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : invariant(false) : void 0;
+ !!injected ? "development" !== 'production' ? invariant(false, 'ReactCompositeComponent: injectEnvironment() can only be called once.') : _prodInvariant('104') : void 0;
ReactComponentEnvironment.unmountIDFromEnvironment = environment.unmountIDFromEnvironment;
ReactComponentEnvironment.replaceNodeWithMarkup = environment.replaceNodeWithMarkup;
ReactComponentEnvironment.processChildrenUpdates = environment.processChildrenUpdates;
@@ -5527,7 +5573,7 @@ var ReactComponentEnvironment = {
};
module.exports = ReactComponentEnvironment;
-},{"157":157}],34:[function(_dereq_,module,exports){
+},{"137":137,"159":159}],34:[function(_dereq_,module,exports){
/**
* Copyright 2016-present, Facebook, Inc.
* All rights reserved.
@@ -5541,14 +5587,21 @@ module.exports = ReactComponentEnvironment;
'use strict';
-var invariant = _dereq_(157);
+var _prodInvariant = _dereq_(137);
+
+var ReactCurrentOwner = _dereq_(36);
+
+var invariant = _dereq_(159);
+var warning = _dereq_(169);
var tree = {};
-var rootIDs = [];
+var unmountedIDs = {};
+var rootIDs = {};
function updateTree(id, update) {
if (!tree[id]) {
tree[id] = {
+ element: null,
parentID: null,
ownerID: null,
text: null,
@@ -5557,6 +5610,10 @@ function updateTree(id, update) {
isMounted: false,
updateCount: 0
};
+ // TODO: We need to do this awkward dance because TopLevelWrapper "never
+ // gets mounted" but its display name gets set in instantiateReactComponent
+ // before its debug ID is set to 0.
+ unmountedIDs[id] = true;
}
update(tree[id]);
}
@@ -5571,6 +5628,22 @@ function purgeDeep(id) {
}
}
+function describeComponentFrame(name, source, ownerName) {
+ return '\n in ' + name + (source ? ' (at ' + source.fileName.replace(/^.*[\\\/]/, '') + ':' + source.lineNumber + ')' : ownerName ? ' (created by ' + ownerName + ')' : '');
+}
+
+function describeID(id) {
+ var name = ReactComponentTreeDevtool.getDisplayName(id);
+ var element = ReactComponentTreeDevtool.getElement(id);
+ var ownerID = ReactComponentTreeDevtool.getOwnerID(id);
+ var ownerName;
+ if (ownerID) {
+ ownerName = ReactComponentTreeDevtool.getDisplayName(ownerID);
+ }
+ "development" !== 'production' ? warning(element, 'ReactComponentTreeDevtool: Missing React element for debugID %s when ' + 'building stack', id) : void 0;
+ return describeComponentFrame(name, element && element._source, ownerName);
+}
+
var ReactComponentTreeDevtool = {
onSetDisplayName: function (id, displayName) {
updateTree(id, function (item) {
@@ -5579,19 +5652,21 @@ var ReactComponentTreeDevtool = {
},
onSetChildren: function (id, nextChildIDs) {
updateTree(id, function (item) {
- var prevChildIDs = item.childIDs;
item.childIDs = nextChildIDs;
nextChildIDs.forEach(function (nextChildID) {
var nextChild = tree[nextChildID];
- !nextChild ? "development" !== 'production' ? invariant(false, 'Expected devtool events to fire for the child ' + 'before its parent includes it in onSetChildren().') : invariant(false) : void 0;
- !(nextChild.displayName != null) ? "development" !== 'production' ? invariant(false, 'Expected onSetDisplayName() to fire for the child ' + 'before its parent includes it in onSetChildren().') : invariant(false) : void 0;
- !(nextChild.childIDs != null || nextChild.text != null) ? "development" !== 'production' ? invariant(false, 'Expected onSetChildren() or onSetText() to fire for the child ' + 'before its parent includes it in onSetChildren().') : invariant(false) : void 0;
- !nextChild.isMounted ? "development" !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child ' + 'before its parent includes it in onSetChildren().') : invariant(false) : void 0;
-
- if (prevChildIDs.indexOf(nextChildID) === -1) {
+ !nextChild ? "development" !== 'production' ? invariant(false, 'Expected devtool events to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('68') : void 0;
+ !(nextChild.displayName != null) ? "development" !== 'production' ? invariant(false, 'Expected onSetDisplayName() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('69') : void 0;
+ !(nextChild.childIDs != null || nextChild.text != null) ? "development" !== 'production' ? invariant(false, 'Expected onSetChildren() or onSetText() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('70') : void 0;
+ !nextChild.isMounted ? "development" !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child before its parent includes it in onSetChildren().') : _prodInvariant('71') : void 0;
+ if (nextChild.parentID == null) {
nextChild.parentID = id;
+ // TODO: This shouldn't be necessary but mounting a new root during in
+ // componentWillMount currently causes not-yet-mounted components to
+ // be purged from our tree data so their parent ID is missing.
}
+ !(nextChild.parentID === id) ? "development" !== 'production' ? invariant(false, 'Expected onSetParent() and onSetChildren() to be consistent (%s has parents %s and %s).', nextChildID, nextChild.parentID, id) : _prodInvariant('72', nextChildID, nextChild.parentID, id) : void 0;
});
});
},
@@ -5600,18 +5675,34 @@ var ReactComponentTreeDevtool = {
return item.ownerID = ownerID;
});
},
+ onSetParent: function (id, parentID) {
+ updateTree(id, function (item) {
+ return item.parentID = parentID;
+ });
+ },
onSetText: function (id, text) {
updateTree(id, function (item) {
return item.text = text;
});
},
+ onBeforeMountComponent: function (id, element) {
+ updateTree(id, function (item) {
+ return item.element = element;
+ });
+ },
+ onBeforeUpdateComponent: function (id, element) {
+ updateTree(id, function (item) {
+ return item.element = element;
+ });
+ },
onMountComponent: function (id) {
updateTree(id, function (item) {
return item.isMounted = true;
});
+ delete unmountedIDs[id];
},
onMountRootComponent: function (id) {
- rootIDs.push(id);
+ rootIDs[id] = true;
},
onUpdateComponent: function (id) {
updateTree(id, function (item) {
@@ -5622,9 +5713,8 @@ var ReactComponentTreeDevtool = {
updateTree(id, function (item) {
return item.isMounted = false;
});
- rootIDs = rootIDs.filter(function (rootID) {
- return rootID !== id;
- });
+ unmountedIDs[id] = true;
+ delete rootIDs[id];
},
purgeUnmountedComponents: function () {
if (ReactComponentTreeDevtool._preventPurging) {
@@ -5632,14 +5722,38 @@ var ReactComponentTreeDevtool = {
return;
}
- Object.keys(tree).filter(function (id) {
- return !tree[id].isMounted;
- }).forEach(purgeDeep);
+ for (var id in unmountedIDs) {
+ purgeDeep(id);
+ }
+ unmountedIDs = {};
},
isMounted: function (id) {
var item = tree[id];
return item ? item.isMounted : false;
},
+ getCurrentStackAddendum: function (topElement) {
+ var info = '';
+ if (topElement) {
+ var type = topElement.type;
+ var name = typeof type === 'function' ? type.displayName || type.name : type;
+ var owner = topElement._owner;
+ info += describeComponentFrame(name || 'Unknown', topElement._source, owner && owner.getName());
+ }
+
+ var currentOwner = ReactCurrentOwner.current;
+ var id = currentOwner && currentOwner._debugID;
+
+ info += ReactComponentTreeDevtool.getStackAddendumByID(id);
+ return info;
+ },
+ getStackAddendumByID: function (id) {
+ var info = '';
+ while (id) {
+ info += describeID(id);
+ id = ReactComponentTreeDevtool.getParentID(id);
+ }
+ return info;
+ },
getChildIDs: function (id) {
var item = tree[id];
return item ? item.childIDs : [];
@@ -5648,6 +5762,10 @@ var ReactComponentTreeDevtool = {
var item = tree[id];
return item ? item.displayName : 'Unknown';
},
+ getElement: function (id) {
+ var item = tree[id];
+ return item ? item.element : null;
+ },
getOwnerID: function (id) {
var item = tree[id];
return item ? item.ownerID : null;
@@ -5656,6 +5774,12 @@ var ReactComponentTreeDevtool = {
var item = tree[id];
return item ? item.parentID : null;
},
+ getSource: function (id) {
+ var item = tree[id];
+ var element = item ? item.element : null;
+ var source = element != null ? element._source : null;
+ return source;
+ },
getText: function (id) {
var item = tree[id];
return item ? item.text : null;
@@ -5665,7 +5789,7 @@ var ReactComponentTreeDevtool = {
return item ? item.updateCount : 0;
},
getRootIDs: function () {
- return rootIDs;
+ return Object.keys(rootIDs);
},
getRegisteredIDs: function () {
return Object.keys(tree);
@@ -5673,7 +5797,7 @@ var ReactComponentTreeDevtool = {
};
module.exports = ReactComponentTreeDevtool;
-},{"157":157}],35:[function(_dereq_,module,exports){
+},{"137":137,"159":159,"169":169,"36":36}],35:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -5687,35 +5811,26 @@ module.exports = ReactComponentTreeDevtool;
'use strict';
-var _assign = _dereq_(168);
+var _prodInvariant = _dereq_(137),
+ _assign = _dereq_(170);
var ReactComponentEnvironment = _dereq_(33);
var ReactCurrentOwner = _dereq_(36);
var ReactElement = _dereq_(61);
var ReactErrorUtils = _dereq_(64);
-var ReactInstanceMap = _dereq_(70);
-var ReactInstrumentation = _dereq_(71);
+var ReactInstanceMap = _dereq_(72);
+var ReactInstrumentation = _dereq_(73);
var ReactNodeTypes = _dereq_(79);
var ReactPropTypeLocations = _dereq_(83);
-var ReactPropTypeLocationNames = _dereq_(82);
var ReactReconciler = _dereq_(86);
var ReactUpdateQueue = _dereq_(92);
-var emptyObject = _dereq_(150);
-var invariant = _dereq_(157);
-var shouldUpdateReactComponent = _dereq_(139);
-var warning = _dereq_(167);
+var checkReactTypeSpec = _dereq_(116);
-function getDeclarationErrorAddendum(component) {
- var owner = component._currentElement._owner || null;
- if (owner) {
- var name = owner.getName();
- if (name) {
- return ' Check the render method of `' + name + '`.';
- }
- }
- return '';
-}
+var emptyObject = _dereq_(152);
+var invariant = _dereq_(159);
+var shouldUpdateReactComponent = _dereq_(141);
+var warning = _dereq_(169);
function StatelessComponent(Component) {}
StatelessComponent.prototype.render = function () {
@@ -5728,6 +5843,7 @@ StatelessComponent.prototype.render = function () {
function warnIfInvalidElement(Component, element) {
if ("development" !== 'production') {
"development" !== 'production' ? warning(element === null || element === false || ReactElement.isValidElement(element), '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : void 0;
+ "development" !== 'production' ? warning(!Component.childContextTypes, '%s(...): childContextTypes cannot be defined on a functional component.', Component.displayName || Component.name || 'Component') : void 0;
}
}
@@ -5808,8 +5924,8 @@ var ReactCompositeComponentMixin = {
this._currentElement = element;
this._rootNodeID = null;
this._instance = null;
- this._nativeParent = null;
- this._nativeContainerInfo = null;
+ this._hostParent = null;
+ this._hostContainerInfo = null;
// See ReactUpdateQueue
this._updateBatchNumber = null;
@@ -5829,26 +5945,30 @@ var ReactCompositeComponentMixin = {
// ComponentWillUnmount shall only be called once
this._calledComponentWillUnmount = false;
+
+ if ("development" !== 'production') {
+ this._warnedAboutRefsInRender = false;
+ }
},
/**
* Initializes the component, renders markup, and registers event listeners.
*
* @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
- * @param {?object} nativeParent
- * @param {?object} nativeContainerInfo
+ * @param {?object} hostParent
+ * @param {?object} hostContainerInfo
* @param {?object} context
* @return {?string} Rendered markup to be inserted into the DOM.
* @final
* @internal
*/
- mountComponent: function (transaction, nativeParent, nativeContainerInfo, context) {
+ mountComponent: function (transaction, hostParent, hostContainerInfo, context) {
this._context = context;
this._mountOrder = nextMountID++;
- this._nativeParent = nativeParent;
- this._nativeContainerInfo = nativeContainerInfo;
+ this._hostParent = hostParent;
+ this._hostContainerInfo = hostContainerInfo;
- var publicProps = this._processProps(this._currentElement.props);
+ var publicProps = this._currentElement.props;
var publicContext = this._processContext(context);
var Component = this._currentElement.type;
@@ -5861,7 +5981,7 @@ var ReactCompositeComponentMixin = {
if (!shouldConstruct(Component) && (inst == null || inst.render == null)) {
renderedElement = inst;
warnIfInvalidElement(Component, renderedElement);
- !(inst === null || inst === false || ReactElement.isValidElement(inst)) ? "development" !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : invariant(false) : void 0;
+ !(inst === null || inst === false || ReactElement.isValidElement(inst)) ? "development" !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : _prodInvariant('105', Component.displayName || Component.name || 'Component') : void 0;
inst = new StatelessComponent(Component);
}
@@ -5907,7 +6027,7 @@ var ReactCompositeComponentMixin = {
if (initialState === undefined) {
inst.state = initialState = null;
}
- !(typeof initialState === 'object' && !Array.isArray(initialState)) ? "development" !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : invariant(false) : void 0;
+ !(typeof initialState === 'object' && !Array.isArray(initialState)) ? "development" !== 'production' ? invariant(false, '%s.state: must be set to an object or null', this.getName() || 'ReactCompositeComponent') : _prodInvariant('106', this.getName() || 'ReactCompositeComponent') : void 0;
this._pendingStateQueue = null;
this._pendingReplaceState = false;
@@ -5915,9 +6035,9 @@ var ReactCompositeComponentMixin = {
var markup;
if (inst.unstable_handleError) {
- markup = this.performInitialMountWithErrorHandling(renderedElement, nativeParent, nativeContainerInfo, transaction, context);
+ markup = this.performInitialMountWithErrorHandling(renderedElement, hostParent, hostContainerInfo, transaction, context);
} else {
- markup = this.performInitialMount(renderedElement, nativeParent, nativeContainerInfo, transaction, context);
+ markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
}
if (inst.componentDidMount) {
@@ -5977,11 +6097,11 @@ var ReactCompositeComponentMixin = {
return instanceOrElement;
},
- performInitialMountWithErrorHandling: function (renderedElement, nativeParent, nativeContainerInfo, transaction, context) {
+ performInitialMountWithErrorHandling: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {
var markup;
var checkpoint = transaction.checkpoint();
try {
- markup = this.performInitialMount(renderedElement, nativeParent, nativeContainerInfo, transaction, context);
+ markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
} catch (e) {
// Roll back to checkpoint, handle error (which may add items to the transaction), and take a new checkpoint
transaction.rollback(checkpoint);
@@ -5996,12 +6116,12 @@ var ReactCompositeComponentMixin = {
// Try again - we've informed the component about the error, so they can render an error message this time.
// If this throws again, the error will bubble up (and can be caught by a higher error boundary).
- markup = this.performInitialMount(renderedElement, nativeParent, nativeContainerInfo, transaction, context);
+ markup = this.performInitialMount(renderedElement, hostParent, hostContainerInfo, transaction, context);
}
return markup;
},
- performInitialMount: function (renderedElement, nativeParent, nativeContainerInfo, transaction, context) {
+ performInitialMount: function (renderedElement, hostParent, hostContainerInfo, transaction, context) {
var inst = this._instance;
if (inst.componentWillMount) {
if ("development" !== 'production') {
@@ -6028,21 +6148,27 @@ var ReactCompositeComponentMixin = {
}
this._renderedNodeType = ReactNodeTypes.getType(renderedElement);
- this._renderedComponent = this._instantiateReactComponent(renderedElement);
+ var child = this._instantiateReactComponent(renderedElement);
+ this._renderedComponent = child;
+ if ("development" !== 'production') {
+ if (child._debugID !== 0 && this._debugID !== 0) {
+ ReactInstrumentation.debugTool.onSetParent(child._debugID, this._debugID);
+ }
+ }
- var markup = ReactReconciler.mountComponent(this._renderedComponent, transaction, nativeParent, nativeContainerInfo, this._processChildContext(context));
+ var markup = ReactReconciler.mountComponent(child, transaction, hostParent, hostContainerInfo, this._processChildContext(context));
if ("development" !== 'production') {
if (this._debugID !== 0) {
- ReactInstrumentation.debugTool.onSetChildren(this._debugID, this._renderedComponent._debugID !== 0 ? [this._renderedComponent._debugID] : []);
+ ReactInstrumentation.debugTool.onSetChildren(this._debugID, child._debugID !== 0 ? [child._debugID] : []);
}
}
return markup;
},
- getNativeNode: function () {
- return ReactReconciler.getNativeNode(this._renderedComponent);
+ getHostNode: function () {
+ return ReactReconciler.getHostNode(this._renderedComponent);
},
/**
@@ -6145,7 +6271,7 @@ var ReactCompositeComponentMixin = {
if ("development" !== 'production') {
var Component = this._currentElement.type;
if (Component.contextTypes) {
- this._checkPropTypes(Component.contextTypes, maskedContext, ReactPropTypeLocations.context);
+ this._checkContextTypes(Component.contextTypes, maskedContext, ReactPropTypeLocations.context);
}
}
return maskedContext;
@@ -6167,12 +6293,12 @@ var ReactCompositeComponentMixin = {
ReactInstrumentation.debugTool.onEndProcessingChildContext();
}
if (childContext) {
- !(typeof Component.childContextTypes === 'object') ? "development" !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', this.getName() || 'ReactCompositeComponent') : invariant(false) : void 0;
+ !(typeof Component.childContextTypes === 'object') ? "development" !== 'production' ? invariant(false, '%s.getChildContext(): childContextTypes must be defined in order to use getChildContext().', this.getName() || 'ReactCompositeComponent') : _prodInvariant('107', this.getName() || 'ReactCompositeComponent') : void 0;
if ("development" !== 'production') {
- this._checkPropTypes(Component.childContextTypes, childContext, ReactPropTypeLocations.childContext);
+ this._checkContextTypes(Component.childContextTypes, childContext, ReactPropTypeLocations.childContext);
}
for (var name in childContext) {
- !(name in Component.childContextTypes) ? "development" !== 'production' ? invariant(false, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : invariant(false) : void 0;
+ !(name in Component.childContextTypes) ? "development" !== 'production' ? invariant(false, '%s.getChildContext(): key "%s" is not defined in childContextTypes.', this.getName() || 'ReactCompositeComponent', name) : _prodInvariant('108', this.getName() || 'ReactCompositeComponent', name) : void 0;
}
return _assign({}, currentContext, childContext);
}
@@ -6180,62 +6306,15 @@ var ReactCompositeComponentMixin = {
},
/**
- * Processes props by setting default values for unspecified props and
- * asserting that the props are valid. Does not mutate its argument; returns
- * a new props object with defaults merged in.
- *
- * @param {object} newProps
- * @return {object}
- * @private
- */
- _processProps: function (newProps) {
- if ("development" !== 'production') {
- var Component = this._currentElement.type;
- if (Component.propTypes) {
- this._checkPropTypes(Component.propTypes, newProps, ReactPropTypeLocations.prop);
- }
- }
- return newProps;
- },
-
- /**
- * Assert that the props are valid
+ * Assert that the context types are valid
*
- * @param {object} propTypes Map of prop name to a ReactPropType
- * @param {object} props
+ * @param {object} typeSpecs Map of context field to a ReactPropType
+ * @param {object} values Runtime values that need to be type-checked
* @param {string} location e.g. "prop", "context", "child context"
* @private
*/
- _checkPropTypes: function (propTypes, props, location) {
- // TODO: Stop validating prop types here and only use the element
- // validation.
- var componentName = this.getName();
- for (var propName in propTypes) {
- if (propTypes.hasOwnProperty(propName)) {
- var error;
- try {
- // This is intentionally an invariant that gets caught. It's the same
- // behavior as without this statement except with a better message.
- !(typeof propTypes[propName] === 'function') ? "development" !== 'production' ? invariant(false, '%s: %s type `%s` is invalid; it must be a function, usually ' + 'from React.PropTypes.', componentName || 'React class', ReactPropTypeLocationNames[location], propName) : invariant(false) : void 0;
- error = propTypes[propName](props, propName, componentName, location);
- } catch (ex) {
- error = ex;
- }
- if (error instanceof Error) {
- // We may want to extend this logic for similar errors in
- // top-level render calls, so I'm abstracting it away into
- // a function to minimize refactoring in the future
- var addendum = getDeclarationErrorAddendum(this);
-
- if (location === ReactPropTypeLocations.prop) {
- // Preface gives us something to blacklist in warning module
- "development" !== 'production' ? warning(false, 'Failed Composite propType: %s%s', error.message, addendum) : void 0;
- } else {
- "development" !== 'production' ? warning(false, 'Failed Context Types: %s%s', error.message, addendum) : void 0;
- }
- }
- }
- }
+ _checkContextTypes: function (typeSpecs, values, location) {
+ checkReactTypeSpec(typeSpecs, values, location, this.getName(), null, this._debugID);
},
receiveComponent: function (nextElement, transaction, nextContext) {
@@ -6281,6 +6360,8 @@ var ReactCompositeComponentMixin = {
*/
updateComponent: function (transaction, prevParentElement, nextParentElement, prevUnmaskedContext, nextUnmaskedContext) {
var inst = this._instance;
+ !(inst != null) ? "development" !== 'production' ? invariant(false, 'Attempted to update component `%s` that has already been unmounted (or failed to mount).', this.getName() || 'ReactCompositeComponent') : _prodInvariant('136', this.getName() || 'ReactCompositeComponent') : void 0;
+
var willReceive = false;
var nextContext;
var nextProps;
@@ -6293,13 +6374,10 @@ var ReactCompositeComponentMixin = {
willReceive = true;
}
- // Distinguish between a props update versus a simple state update
- if (prevParentElement === nextParentElement) {
- // Skip checking prop types again -- we don't read inst.props to avoid
- // warning for DOM component props in this upgrade
- nextProps = nextParentElement.props;
- } else {
- nextProps = this._processProps(nextParentElement.props);
+ nextProps = nextParentElement.props;
+
+ // Not a simple state update but a props update
+ if (prevParentElement !== nextParentElement) {
willReceive = true;
}
@@ -6450,21 +6528,27 @@ var ReactCompositeComponentMixin = {
if (shouldUpdateReactComponent(prevRenderedElement, nextRenderedElement)) {
ReactReconciler.receiveComponent(prevComponentInstance, nextRenderedElement, transaction, this._processChildContext(context));
} else {
- var oldNativeNode = ReactReconciler.getNativeNode(prevComponentInstance);
+ var oldHostNode = ReactReconciler.getHostNode(prevComponentInstance);
ReactReconciler.unmountComponent(prevComponentInstance, false);
this._renderedNodeType = ReactNodeTypes.getType(nextRenderedElement);
- this._renderedComponent = this._instantiateReactComponent(nextRenderedElement);
+ var child = this._instantiateReactComponent(nextRenderedElement);
+ this._renderedComponent = child;
+ if ("development" !== 'production') {
+ if (child._debugID !== 0 && this._debugID !== 0) {
+ ReactInstrumentation.debugTool.onSetParent(child._debugID, this._debugID);
+ }
+ }
- var nextMarkup = ReactReconciler.mountComponent(this._renderedComponent, transaction, this._nativeParent, this._nativeContainerInfo, this._processChildContext(context));
+ var nextMarkup = ReactReconciler.mountComponent(child, transaction, this._hostParent, this._hostContainerInfo, this._processChildContext(context));
if ("development" !== 'production') {
if (this._debugID !== 0) {
- ReactInstrumentation.debugTool.onSetChildren(this._debugID, this._renderedComponent._debugID !== 0 ? [this._renderedComponent._debugID] : []);
+ ReactInstrumentation.debugTool.onSetChildren(this._debugID, child._debugID !== 0 ? [child._debugID] : []);
}
}
- this._replaceNodeWithMarkup(oldNativeNode, nextMarkup, prevComponentInstance);
+ this._replaceNodeWithMarkup(oldHostNode, nextMarkup, prevComponentInstance);
}
},
@@ -6473,8 +6557,8 @@ var ReactCompositeComponentMixin = {
*
* @protected
*/
- _replaceNodeWithMarkup: function (oldNativeNode, nextMarkup, prevInstance) {
- ReactComponentEnvironment.replaceNodeWithMarkup(oldNativeNode, nextMarkup, prevInstance);
+ _replaceNodeWithMarkup: function (oldHostNode, nextMarkup, prevInstance) {
+ ReactComponentEnvironment.replaceNodeWithMarkup(oldHostNode, nextMarkup, prevInstance);
},
/**
@@ -6520,7 +6604,7 @@ var ReactCompositeComponentMixin = {
}
!(
// TODO: An `isValidNode` function would probably be more appropriate
- renderedComponent === null || renderedComponent === false || ReactElement.isValidElement(renderedComponent)) ? "development" !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : invariant(false) : void 0;
+ renderedComponent === null || renderedComponent === false || ReactElement.isValidElement(renderedComponent)) ? "development" !== 'production' ? invariant(false, '%s.render(): A valid React element (or null) must be returned. You may have returned undefined, an array or some other invalid object.', this.getName() || 'ReactCompositeComponent') : _prodInvariant('109', this.getName() || 'ReactCompositeComponent') : void 0;
return renderedComponent;
},
@@ -6535,7 +6619,7 @@ var ReactCompositeComponentMixin = {
*/
attachRef: function (ref, component) {
var inst = this.getPublicInstance();
- !(inst != null) ? "development" !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : invariant(false) : void 0;
+ !(inst != null) ? "development" !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : _prodInvariant('110') : void 0;
var publicComponentInstance = component.getPublicInstance();
if ("development" !== 'production') {
var componentName = component && component.getName ? component.getName() : 'a component';
@@ -6597,7 +6681,7 @@ var ReactCompositeComponent = {
};
module.exports = ReactCompositeComponent;
-},{"139":139,"150":150,"157":157,"167":167,"168":168,"33":33,"36":36,"61":61,"64":64,"70":70,"71":71,"79":79,"82":82,"83":83,"86":86,"92":92}],36:[function(_dereq_,module,exports){
+},{"116":116,"137":137,"141":141,"152":152,"159":159,"169":169,"170":170,"33":33,"36":36,"61":61,"64":64,"72":72,"73":73,"79":79,"83":83,"86":86,"92":92}],36:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -6647,15 +6731,15 @@ module.exports = ReactCurrentOwner;
var ReactDOMComponentTree = _dereq_(41);
var ReactDefaultInjection = _dereq_(60);
-var ReactMount = _dereq_(74);
+var ReactMount = _dereq_(76);
var ReactReconciler = _dereq_(86);
var ReactUpdates = _dereq_(93);
var ReactVersion = _dereq_(94);
-var findDOMNode = _dereq_(119);
-var getNativeComponentFromComposite = _dereq_(127);
-var renderSubtreeIntoContainer = _dereq_(136);
-var warning = _dereq_(167);
+var findDOMNode = _dereq_(120);
+var getHostComponentFromComposite = _dereq_(127);
+var renderSubtreeIntoContainer = _dereq_(138);
+var warning = _dereq_(169);
ReactDefaultInjection.inject();
@@ -6680,7 +6764,7 @@ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVT
getNodeFromInstance: function (inst) {
// inst is an internal instance (but could be a composite)
if (inst._renderedComponent) {
- inst = getNativeComponentFromComposite(inst);
+ inst = getHostComponentFromComposite(inst);
}
if (inst) {
return ReactDOMComponentTree.getNodeFromInstance(inst);
@@ -6695,7 +6779,7 @@ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVT
}
if ("development" !== 'production') {
- var ExecutionEnvironment = _dereq_(143);
+ var ExecutionEnvironment = _dereq_(145);
if (ExecutionEnvironment.canUseDOM && window.top === window.self) {
// First check if devtools is not installed
@@ -6731,7 +6815,7 @@ if ("development" !== 'production') {
}
module.exports = React;
-},{"119":119,"127":127,"136":136,"143":143,"167":167,"41":41,"60":60,"74":74,"86":86,"93":93,"94":94}],38:[function(_dereq_,module,exports){
+},{"120":120,"127":127,"138":138,"145":145,"169":169,"41":41,"60":60,"76":76,"86":86,"93":93,"94":94}],38:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -6748,11 +6832,11 @@ module.exports = React;
var DisabledInputUtils = _dereq_(14);
/**
- * Implements a