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