@samitouri / QOS-React-2 / commits / 09075f8bab

Update website for 15.1.0

(cherry picked from commit 7842c1993423d39c7f9ba13fe1c90c9ae7a4372a)

Paul O’Shannessy committed May 20, 2016 at 15:57 UTC 09075f8bab0a0fadfc023c09ac8cbc282c24d201
4 files changed +1525 -1349
docs/_config.yml
+9 -9
@@ -36,13 +36,13 @@ sass:
36 sass_dir: _css
37 gems:
38 - jekyll-redirect-from
39 -react_version: 15.0.2
39 +react_version: 15.1.0
40 react_hashes:
41 - dev: dedPNF++oHBwT++5v2VMeXSzyNkqJd7tbc3ic+wN3l0u/NEBcMNuf9a7knYgwTco
42 - prod: 1kql9Cm3anPpO0n0a4T7keJt+N4pixvMU33Bk69kZi1WkN6gbq1EVZdfZLjqwmFq
43 - addons_dev: b7jdy0/iqeUofUONQyRN/Y3DO/h61sL56BgMXJzfokC2mtsi2pJGhQekw6QqI/71
44 - addons_prod: 1J/3e0bGfmFbeuWDRmyBoBOImeFnDn03OKWsXiWVOThql8Yf1qXaim7NrAqL4RHi
45 - dom_dev: kQ+9o036IWQT7tKVxA8siLqHR0DekC3YXbkA7RsFQHbuqQutOmb3cOsTQ1WFtMhW
46 - dom_prod: q14dOJErroITWJ+DFXug03tOxuZ4fm7u5BkcbboXFWJNvDGPepPWXUuIphvvAsAl
47 - dom_server_dev: WiRnBunlOqqLKTWNe+788pJ0QLFIXXktwBnqNV2OggmTROfZJvn1WfrZyh0xhnja
48 - dom_server_prod: wkSOmc5KBqBSFy+CAVk0ehSoBEMqzpKj4lzcoKLBchNzTIwCAZ3Pe+LX73kyNNhz
41 + dev: I9uU7ZWS2zpxPvpUfutJ7LD6Mmzk3pvvBCbfC7/imYVdtuPR9hRiLIJrVIZilwht
42 + prod: 3aKuzevuBSs0FfxObUZ42KUGqneCk7kh9g7/aZ+Yzf5MhucA9KvfUSH5jcma9kdZ
43 + addons_dev: 5jJyZhvy/Kkt6uTW3AY3U6bZ+0yDAS7NQDHExu76Zmoa6ABy5g42MoGj9pgeELqf
44 + addons_prod: JkeMnC7xa++rlt5smrQVlrrBdYEy0WJbF78QOIpdQeg7UCUjWF3/gyNC/IVh5s4l
45 + dom_dev: MWQ0uDsZsWizHa2PvAdb45Y1JXy+oLZPc0fabiueWS4rOZuKXDzqf12jjKMF8u3t
46 + dom_prod: tEAvCNm5NozfOX3D8eOmg6E7CUNRQEaLq9xPqVr9ii9BW1cVXiuHKqrXUh3W7wg5
47 + dom_server_dev: WTaEVUVSSkUY+GTjvLO65ZjnLMR2BBa+WkXF1F4rVIxqoMnxFcjugmyoxYwXMmF6
48 + dom_server_prod: rFqq5Djim9lOAYssAJTvdJhtcGdz328JIjbcDq/5/r5DLwYyl8esZ1C0+CKeSXxo
docs/downloads/react-15.1.0.zip
Binary files /dev/null and b/docs/downloads/react-15.1.0.zip differ
docs/js/react-dom.js
+1 -1
@@ -1,5 +1,5 @@
1 /**
2 - * ReactDOM v15.0.2
2 + * ReactDOM v15.1.0
3 *
4 * Copyright 2013-present, Facebook, Inc.
5 * All rights reserved.
docs/js/react.js
+1515 -1339
@@ -1,5 +1,5 @@
1 /**
2 - * React v15.0.2
2 + * React v15.1.0
3 */
4 (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<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
5 /**
@@ -15,9 +15,9 @@
15
16 'use strict';
17
18 -var ReactDOMComponentTree = _dereq_(40);
18 +var ReactDOMComponentTree = _dereq_(41);
19
20 -var focusNode = _dereq_(152);
20 +var focusNode = _dereq_(151);
21
22 var AutoFocusUtils = {
23 focusDOMComponent: function () {
@@ -26,7 +26,7 @@ var AutoFocusUtils = {
26 };
27
28 module.exports = AutoFocusUtils;
29 -},{"152":152,"40":40}],2:[function(_dereq_,module,exports){
29 +},{"151":151,"41":41}],2:[function(_dereq_,module,exports){
30 /**
31 * Copyright 2013-present Facebook, Inc.
32 * All rights reserved.
@@ -42,12 +42,12 @@ module.exports = AutoFocusUtils;
42
43 var EventConstants = _dereq_(16);
44 var EventPropagators = _dereq_(20);
45 -var ExecutionEnvironment = _dereq_(144);
45 +var ExecutionEnvironment = _dereq_(143);
46 var FallbackCompositionState = _dereq_(21);
47 -var SyntheticCompositionEvent = _dereq_(101);
48 -var SyntheticInputEvent = _dereq_(105);
47 +var SyntheticCompositionEvent = _dereq_(100);
48 +var SyntheticInputEvent = _dereq_(104);
49
50 -var keyOf = _dereq_(162);
50 +var keyOf = _dereq_(161);
51
52 var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space
53 var START_KEYCODE = 229;
@@ -415,7 +415,7 @@ var BeforeInputEventPlugin = {
415 };
416
417 module.exports = BeforeInputEventPlugin;
418 -},{"101":101,"105":105,"144":144,"16":16,"162":162,"20":20,"21":21}],3:[function(_dereq_,module,exports){
418 +},{"100":100,"104":104,"143":143,"16":16,"161":161,"20":20,"21":21}],3:[function(_dereq_,module,exports){
419 /**
420 * Copyright 2013-present, Facebook, Inc.
421 * All rights reserved.
@@ -579,14 +579,14 @@ module.exports = CSSProperty;
579 'use strict';
580
581 var CSSProperty = _dereq_(3);
582 -var ExecutionEnvironment = _dereq_(144);
583 -var ReactPerf = _dereq_(82);
582 +var ExecutionEnvironment = _dereq_(143);
583 +var ReactInstrumentation = _dereq_(71);
584
585 -var camelizeStyleName = _dereq_(146);
586 -var dangerousStyleValue = _dereq_(118);
587 -var hyphenateStyleName = _dereq_(157);
588 -var memoizeStringOnly = _dereq_(164);
589 -var warning = _dereq_(168);
585 +var camelizeStyleName = _dereq_(145);
586 +var dangerousStyleValue = _dereq_(117);
587 +var hyphenateStyleName = _dereq_(156);
588 +var memoizeStringOnly = _dereq_(163);
589 +var warning = _dereq_(167);
590
591 var processStyleName = memoizeStringOnly(function (styleName) {
592 return hyphenateStyleName(styleName);
@@ -734,6 +734,10 @@ var CSSPropertyOperations = {
734 * @param {ReactDOMComponent} component
735 */
736 setValueForStyles: function (node, styles, component) {
737 + if ("development" !== 'production') {
738 + ReactInstrumentation.debugTool.onNativeOperation(component._debugID, 'update styles', styles);
739 + }
740 +
741 var style = node.style;
742 for (var styleName in styles) {
743 if (!styles.hasOwnProperty(styleName)) {
@@ -765,12 +769,8 @@ var CSSPropertyOperations = {
769
770 };
771
768 -ReactPerf.measureMethods(CSSPropertyOperations, 'CSSPropertyOperations', {
769 - setValueForStyles: 'setValueForStyles'
770 -});
771 -
772 module.exports = CSSPropertyOperations;
773 -},{"118":118,"144":144,"146":146,"157":157,"164":164,"168":168,"3":3,"82":82}],5:[function(_dereq_,module,exports){
773 +},{"117":117,"143":143,"145":145,"156":156,"163":163,"167":167,"3":3,"71":71}],5:[function(_dereq_,module,exports){
774 /**
775 * Copyright 2013-present, Facebook, Inc.
776 * All rights reserved.
@@ -784,11 +784,11 @@ module.exports = CSSPropertyOperations;
784
785 'use strict';
786
787 -var _assign = _dereq_(169);
787 +var _assign = _dereq_(168);
788
789 var PooledClass = _dereq_(25);
790
791 -var invariant = _dereq_(158);
791 +var invariant = _dereq_(157);
792
793 /**
794 * A specialized pseudo-event module to help keep track of components waiting to
@@ -876,7 +876,7 @@ _assign(CallbackQueue.prototype, {
876 PooledClass.addPoolingTo(CallbackQueue);
877
878 module.exports = CallbackQueue;
879 -},{"158":158,"169":169,"25":25}],6:[function(_dereq_,module,exports){
879 +},{"157":157,"168":168,"25":25}],6:[function(_dereq_,module,exports){
880 /**
881 * Copyright 2013-present, Facebook, Inc.
882 * All rights reserved.
@@ -893,15 +893,15 @@ module.exports = CallbackQueue;
893 var EventConstants = _dereq_(16);
894 var EventPluginHub = _dereq_(17);
895 var EventPropagators = _dereq_(20);
896 -var ExecutionEnvironment = _dereq_(144);
897 -var ReactDOMComponentTree = _dereq_(40);
898 -var ReactUpdates = _dereq_(94);
899 -var SyntheticEvent = _dereq_(103);
896 +var ExecutionEnvironment = _dereq_(143);
897 +var ReactDOMComponentTree = _dereq_(41);
898 +var ReactUpdates = _dereq_(93);
899 +var SyntheticEvent = _dereq_(102);
900
901 -var getEventTarget = _dereq_(126);
902 -var isEventSupported = _dereq_(133);
903 -var isTextInputElement = _dereq_(134);
904 -var keyOf = _dereq_(162);
901 +var getEventTarget = _dereq_(125);
902 +var isEventSupported = _dereq_(132);
903 +var isTextInputElement = _dereq_(133);
904 +var keyOf = _dereq_(161);
905
906 var topLevelTypes = EventConstants.topLevelTypes;
907
@@ -1202,7 +1202,7 @@ var ChangeEventPlugin = {
1202 };
1203
1204 module.exports = ChangeEventPlugin;
1205 -},{"103":103,"126":126,"133":133,"134":134,"144":144,"16":16,"162":162,"17":17,"20":20,"40":40,"94":94}],7:[function(_dereq_,module,exports){
1205 +},{"102":102,"125":125,"132":132,"133":133,"143":143,"16":16,"161":161,"17":17,"20":20,"41":41,"93":93}],7:[function(_dereq_,module,exports){
1206 /**
1207 * Copyright 2013-present, Facebook, Inc.
1208 * All rights reserved.
@@ -1218,12 +1218,13 @@ module.exports = ChangeEventPlugin;
1218
1219 var DOMLazyTree = _dereq_(8);
1220 var Danger = _dereq_(12);
1221 -var ReactMultiChildUpdateTypes = _dereq_(77);
1222 -var ReactPerf = _dereq_(82);
1221 +var ReactMultiChildUpdateTypes = _dereq_(76);
1222 +var ReactDOMComponentTree = _dereq_(41);
1223 +var ReactInstrumentation = _dereq_(71);
1224
1224 -var createMicrosoftUnsafeLocalFunction = _dereq_(117);
1225 -var setInnerHTML = _dereq_(138);
1226 -var setTextContent = _dereq_(139);
1225 +var createMicrosoftUnsafeLocalFunction = _dereq_(116);
1226 +var setInnerHTML = _dereq_(137);
1227 +var setTextContent = _dereq_(138);
1228
1229 function getNodeAfter(parentNode, node) {
1230 // Special case for text components, which return [open, close] comments
@@ -1314,6 +1315,25 @@ function replaceDelimitedText(openingComment, closingComment, stringText) {
1315 removeDelimitedText(parentNode, openingComment, closingComment);
1316 }
1317 }
1318 +
1319 + if ("development" !== 'production') {
1320 + ReactInstrumentation.debugTool.onNativeOperation(ReactDOMComponentTree.getInstanceFromNode(openingComment)._debugID, 'replace text', stringText);
1321 + }
1322 +}
1323 +
1324 +var dangerouslyReplaceNodeWithMarkup = Danger.dangerouslyReplaceNodeWithMarkup;
1325 +if ("development" !== 'production') {
1326 + dangerouslyReplaceNodeWithMarkup = function (oldChild, markup, prevInstance) {
1327 + Danger.dangerouslyReplaceNodeWithMarkup(oldChild, markup);
1328 + if (prevInstance._debugID !== 0) {
1329 + ReactInstrumentation.debugTool.onNativeOperation(prevInstance._debugID, 'replace with', markup.toString());
1330 + } else {
1331 + var nextInstance = ReactDOMComponentTree.getInstanceFromNode(markup.node);
1332 + if (nextInstance._debugID !== 0) {
1333 + ReactInstrumentation.debugTool.onNativeOperation(nextInstance._debugID, 'mount', markup.toString());
1334 + }
1335 + }
1336 + };
1337 }
1338
1339 /**
@@ -1321,7 +1341,7 @@ function replaceDelimitedText(openingComment, closingComment, stringText) {
1341 */
1342 var DOMChildrenOperations = {
1343
1324 - dangerouslyReplaceNodeWithMarkup: Danger.dangerouslyReplaceNodeWithMarkup,
1344 + dangerouslyReplaceNodeWithMarkup: dangerouslyReplaceNodeWithMarkup,
1345
1346 replaceDelimitedText: replaceDelimitedText,
1347
@@ -1333,23 +1353,42 @@ var DOMChildrenOperations = {
1353 * @internal
1354 */
1355 processUpdates: function (parentNode, updates) {
1356 + if ("development" !== 'production') {
1357 + var parentNodeDebugID = ReactDOMComponentTree.getInstanceFromNode(parentNode)._debugID;
1358 + }
1359 +
1360 for (var k = 0; k < updates.length; k++) {
1361 var update = updates[k];
1362 switch (update.type) {
1363 case ReactMultiChildUpdateTypes.INSERT_MARKUP:
1364 insertLazyTreeChildAt(parentNode, update.content, getNodeAfter(parentNode, update.afterNode));
1365 + if ("development" !== 'production') {
1366 + ReactInstrumentation.debugTool.onNativeOperation(parentNodeDebugID, 'insert child', { toIndex: update.toIndex, content: update.content.toString() });
1367 + }
1368 break;
1369 case ReactMultiChildUpdateTypes.MOVE_EXISTING:
1370 moveChild(parentNode, update.fromNode, getNodeAfter(parentNode, update.afterNode));
1371 + if ("development" !== 'production') {
1372 + ReactInstrumentation.debugTool.onNativeOperation(parentNodeDebugID, 'move child', { fromIndex: update.fromIndex, toIndex: update.toIndex });
1373 + }
1374 break;
1375 case ReactMultiChildUpdateTypes.SET_MARKUP:
1376 setInnerHTML(parentNode, update.content);
1377 + if ("development" !== 'production') {
1378 + ReactInstrumentation.debugTool.onNativeOperation(parentNodeDebugID, 'replace children', update.content.toString());
1379 + }
1380 break;
1381 case ReactMultiChildUpdateTypes.TEXT_CONTENT:
1382 setTextContent(parentNode, update.content);
1383 + if ("development" !== 'production') {
1384 + ReactInstrumentation.debugTool.onNativeOperation(parentNodeDebugID, 'replace text', update.content.toString());
1385 + }
1386 break;
1387 case ReactMultiChildUpdateTypes.REMOVE_NODE:
1388 removeChild(parentNode, update.fromNode);
1389 + if ("development" !== 'production') {
1390 + ReactInstrumentation.debugTool.onNativeOperation(parentNodeDebugID, 'remove child', { fromIndex: update.fromIndex });
1391 + }
1392 break;
1393 }
1394 }
@@ -1357,12 +1396,8 @@ var DOMChildrenOperations = {
1396
1397 };
1398
1360 -ReactPerf.measureMethods(DOMChildrenOperations, 'DOMChildrenOperations', {
1361 - replaceDelimitedText: 'replaceDelimitedText'
1362 -});
1363 -
1399 module.exports = DOMChildrenOperations;
1365 -},{"117":117,"12":12,"138":138,"139":139,"77":77,"8":8,"82":82}],8:[function(_dereq_,module,exports){
1400 +},{"116":116,"12":12,"137":137,"138":138,"41":41,"71":71,"76":76,"8":8}],8:[function(_dereq_,module,exports){
1401 /**
1402 * Copyright 2015-present, Facebook, Inc.
1403 * All rights reserved.
@@ -1376,8 +1411,13 @@ module.exports = DOMChildrenOperations;
1411
1412 'use strict';
1413
1379 -var createMicrosoftUnsafeLocalFunction = _dereq_(117);
1380 -var setTextContent = _dereq_(139);
1414 +var DOMNamespaces = _dereq_(9);
1415 +
1416 +var createMicrosoftUnsafeLocalFunction = _dereq_(116);
1417 +var setTextContent = _dereq_(138);
1418 +
1419 +var ELEMENT_NODE_TYPE = 1;
1420 +var DOCUMENT_FRAGMENT_NODE_TYPE = 11;
1421
1422 /**
1423 * In IE (8-11) and Edge, appending nodes with no children is dramatically
@@ -1413,8 +1453,10 @@ var insertTreeBefore = createMicrosoftUnsafeLocalFunction(function (parentNode,
1453 // DocumentFragments aren't actually part of the DOM after insertion so
1454 // appending children won't update the DOM. We need to ensure the fragment
1455 // is properly populated first, breaking out of our lazy approach for just
1416 - // this level.
1417 - if (tree.node.nodeType === 11) {
1456 + // this level. Also, some <object> plugins (like Flash Player) will read
1457 + // <param> nodes immediately upon insertion into the DOM, so <object>
1458 + // must also be populated prior to insertion into the DOM.
1459 + if (tree.node.nodeType === DOCUMENT_FRAGMENT_NODE_TYPE || tree.node.nodeType === ELEMENT_NODE_TYPE && tree.node.nodeName.toLowerCase() === 'object' && (tree.node.namespaceURI == null || tree.node.namespaceURI === DOMNamespaces.html)) {
1460 insertTreeChildren(tree);
1461 parentNode.insertBefore(tree.node, referenceNode);
1462 } else {
@@ -1452,12 +1494,17 @@ function queueText(tree, text) {
1494 }
1495 }
1496
1497 +function toString() {
1498 + return this.node.nodeName;
1499 +}
1500 +
1501 function DOMLazyTree(node) {
1502 return {
1503 node: node,
1504 children: [],
1505 html: null,
1460 - text: null
1506 + text: null,
1507 + toString: toString
1508 };
1509 }
1510
@@ -1468,7 +1515,7 @@ DOMLazyTree.queueHTML = queueHTML;
1515 DOMLazyTree.queueText = queueText;
1516
1517 module.exports = DOMLazyTree;
1471 -},{"117":117,"139":139}],9:[function(_dereq_,module,exports){
1518 +},{"116":116,"138":138,"9":9}],9:[function(_dereq_,module,exports){
1519 /**
1520 * Copyright 2013-present, Facebook, Inc.
1521 * All rights reserved.
@@ -1503,7 +1550,7 @@ module.exports = DOMNamespaces;
1550
1551 'use strict';
1552
1506 -var invariant = _dereq_(158);
1553 +var invariant = _dereq_(157);
1554
1555 function checkMask(value, bitmask) {
1556 return (value & bitmask) === bitmask;
@@ -1703,7 +1750,7 @@ var DOMProperty = {
1750 };
1751
1752 module.exports = DOMProperty;
1706 -},{"158":158}],11:[function(_dereq_,module,exports){
1753 +},{"157":157}],11:[function(_dereq_,module,exports){
1754 /**
1755 * Copyright 2013-present, Facebook, Inc.
1756 * All rights reserved.
@@ -1718,11 +1765,12 @@ module.exports = DOMProperty;
1765 'use strict';
1766
1767 var DOMProperty = _dereq_(10);
1721 -var ReactDOMInstrumentation = _dereq_(48);
1722 -var ReactPerf = _dereq_(82);
1768 +var ReactDOMComponentTree = _dereq_(41);
1769 +var ReactDOMInstrumentation = _dereq_(49);
1770 +var ReactInstrumentation = _dereq_(71);
1771
1724 -var quoteAttributeValueForBrowser = _dereq_(136);
1725 -var warning = _dereq_(168);
1772 +var quoteAttributeValueForBrowser = _dereq_(135);
1773 +var warning = _dereq_(167);
1774
1775 var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + DOMProperty.ATTRIBUTE_NAME_START_CHAR + '][' + DOMProperty.ATTRIBUTE_NAME_CHAR + ']*$');
1776 var illegalAttributeNameCache = {};
@@ -1827,9 +1875,6 @@ var DOMPropertyOperations = {
1875 * @param {*} value
1876 */
1877 setValueForProperty: function (node, name, value) {
1830 - if ("development" !== 'production') {
1831 - ReactDOMInstrumentation.debugTool.onSetValueForProperty(node, name, value);
1832 - }
1878 var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
1879 if (propertyInfo) {
1880 var mutationMethod = propertyInfo.mutationMethod;
@@ -1837,6 +1882,7 @@ var DOMPropertyOperations = {
1882 mutationMethod(node, value);
1883 } else if (shouldIgnoreValue(propertyInfo, value)) {
1884 this.deleteValueForProperty(node, name);
1885 + return;
1886 } else if (propertyInfo.mustUseProperty) {
1887 var propName = propertyInfo.propertyName;
1888 // Must explicitly cast values for HAS_SIDE_EFFECTS-properties to the
@@ -1861,6 +1907,14 @@ var DOMPropertyOperations = {
1907 }
1908 } else if (DOMProperty.isCustomAttribute(name)) {
1909 DOMPropertyOperations.setValueForAttribute(node, name, value);
1910 + return;
1911 + }
1912 +
1913 + if ("development" !== 'production') {
1914 + ReactDOMInstrumentation.debugTool.onSetValueForProperty(node, name, value);
1915 + var payload = {};
1916 + payload[name] = value;
1917 + ReactInstrumentation.debugTool.onNativeOperation(ReactDOMComponentTree.getInstanceFromNode(node)._debugID, 'update attribute', payload);
1918 }
1919 },
1920
@@ -1873,6 +1927,12 @@ var DOMPropertyOperations = {
1927 } else {
1928 node.setAttribute(name, '' + value);
1929 }
1930 +
1931 + if ("development" !== 'production') {
1932 + var payload = {};
1933 + payload[name] = value;
1934 + ReactInstrumentation.debugTool.onNativeOperation(ReactDOMComponentTree.getInstanceFromNode(node)._debugID, 'update attribute', payload);
1935 + }
1936 },
1937
1938 /**
@@ -1882,9 +1942,6 @@ var DOMPropertyOperations = {
1942 * @param {string} name
1943 */
1944 deleteValueForProperty: function (node, name) {
1885 - if ("development" !== 'production') {
1886 - ReactDOMInstrumentation.debugTool.onDeleteValueForProperty(node, name);
1887 - }
1945 var propertyInfo = DOMProperty.properties.hasOwnProperty(name) ? DOMProperty.properties[name] : null;
1946 if (propertyInfo) {
1947 var mutationMethod = propertyInfo.mutationMethod;
@@ -1906,18 +1963,17 @@ var DOMPropertyOperations = {
1963 } else if (DOMProperty.isCustomAttribute(name)) {
1964 node.removeAttribute(name);
1965 }
1966 +
1967 + if ("development" !== 'production') {
1968 + ReactDOMInstrumentation.debugTool.onDeleteValueForProperty(node, name);
1969 + ReactInstrumentation.debugTool.onNativeOperation(ReactDOMComponentTree.getInstanceFromNode(node)._debugID, 'remove attribute', name);
1970 + }
1971 }
1972
1973 };
1974
1913 -ReactPerf.measureMethods(DOMPropertyOperations, 'DOMPropertyOperations', {
1914 - setValueForProperty: 'setValueForProperty',
1915 - setValueForAttribute: 'setValueForAttribute',
1916 - deleteValueForProperty: 'deleteValueForProperty'
1917 -});
1918 -
1975 module.exports = DOMPropertyOperations;
1920 -},{"10":10,"136":136,"168":168,"48":48,"82":82}],12:[function(_dereq_,module,exports){
1976 +},{"10":10,"135":135,"167":167,"41":41,"49":49,"71":71}],12:[function(_dereq_,module,exports){
1977 /**
1978 * Copyright 2013-present, Facebook, Inc.
1979 * All rights reserved.
@@ -1932,12 +1988,12 @@ module.exports = DOMPropertyOperations;
1988 'use strict';
1989
1990 var DOMLazyTree = _dereq_(8);
1935 -var ExecutionEnvironment = _dereq_(144);
1991 +var ExecutionEnvironment = _dereq_(143);
1992
1937 -var createNodesFromMarkup = _dereq_(149);
1938 -var emptyFunction = _dereq_(150);
1939 -var getMarkupWrap = _dereq_(154);
1940 -var invariant = _dereq_(158);
1993 +var createNodesFromMarkup = _dereq_(148);
1994 +var emptyFunction = _dereq_(149);
1995 +var getMarkupWrap = _dereq_(153);
1996 +var invariant = _dereq_(157);
1997
1998 var OPEN_TAG_NAME_EXP = /^(<[^ \/>]+)/;
1999 var RESULT_INDEX_ATTR = 'data-danger-index';
@@ -2062,7 +2118,7 @@ var Danger = {
2118 };
2119
2120 module.exports = Danger;
2065 -},{"144":144,"149":149,"150":150,"154":154,"158":158,"8":8}],13:[function(_dereq_,module,exports){
2121 +},{"143":143,"148":148,"149":149,"153":153,"157":157,"8":8}],13:[function(_dereq_,module,exports){
2122 /**
2123 * Copyright 2013-present, Facebook, Inc.
2124 * All rights reserved.
@@ -2076,7 +2132,7 @@ module.exports = Danger;
2132
2133 'use strict';
2134
2079 -var keyOf = _dereq_(162);
2135 +var keyOf = _dereq_(161);
2136
2137 /**
2138 * Module that is injectable into `EventPluginHub`, that specifies a
@@ -2090,7 +2146,7 @@ var keyOf = _dereq_(162);
2146 var DefaultEventPluginOrder = [keyOf({ ResponderEventPlugin: null }), keyOf({ SimpleEventPlugin: null }), keyOf({ TapEventPlugin: null }), keyOf({ EnterLeaveEventPlugin: null }), keyOf({ ChangeEventPlugin: null }), keyOf({ SelectEventPlugin: null }), keyOf({ BeforeInputEventPlugin: null })];
2147
2148 module.exports = DefaultEventPluginOrder;
2093 -},{"162":162}],14:[function(_dereq_,module,exports){
2149 +},{"161":161}],14:[function(_dereq_,module,exports){
2150 /**
2151 * Copyright 2013-present, Facebook, Inc.
2152 * All rights reserved.
@@ -2157,10 +2213,10 @@ module.exports = DisabledInputUtils;
2213
2214 var EventConstants = _dereq_(16);
2215 var EventPropagators = _dereq_(20);
2160 -var ReactDOMComponentTree = _dereq_(40);
2161 -var SyntheticMouseEvent = _dereq_(107);
2216 +var ReactDOMComponentTree = _dereq_(41);
2217 +var SyntheticMouseEvent = _dereq_(106);
2218
2163 -var keyOf = _dereq_(162);
2219 +var keyOf = _dereq_(161);
2220
2221 var topLevelTypes = EventConstants.topLevelTypes;
2222
@@ -2247,7 +2303,7 @@ var EnterLeaveEventPlugin = {
2303 };
2304
2305 module.exports = EnterLeaveEventPlugin;
2250 -},{"107":107,"16":16,"162":162,"20":20,"40":40}],16:[function(_dereq_,module,exports){
2306 +},{"106":106,"16":16,"161":161,"20":20,"41":41}],16:[function(_dereq_,module,exports){
2307 /**
2308 * Copyright 2013-present, Facebook, Inc.
2309 * All rights reserved.
@@ -2261,7 +2317,7 @@ module.exports = EnterLeaveEventPlugin;
2317
2318 'use strict';
2319
2264 -var keyMirror = _dereq_(161);
2320 +var keyMirror = _dereq_(160);
2321
2322 var PropagationPhases = keyMirror({ bubbled: null, captured: null });
2323
@@ -2345,7 +2401,7 @@ var EventConstants = {
2401 };
2402
2403 module.exports = EventConstants;
2348 -},{"161":161}],17:[function(_dereq_,module,exports){
2404 +},{"160":160}],17:[function(_dereq_,module,exports){
2405 /**
2406 * Copyright 2013-present, Facebook, Inc.
2407 * All rights reserved.
@@ -2361,11 +2417,11 @@ module.exports = EventConstants;
2417
2418 var EventPluginRegistry = _dereq_(18);
2419 var EventPluginUtils = _dereq_(19);
2364 -var ReactErrorUtils = _dereq_(65);
2420 +var ReactErrorUtils = _dereq_(64);
2421
2366 -var accumulateInto = _dereq_(114);
2367 -var forEachAccumulated = _dereq_(122);
2368 -var invariant = _dereq_(158);
2422 +var accumulateInto = _dereq_(113);
2423 +var forEachAccumulated = _dereq_(121);
2424 +var invariant = _dereq_(157);
2425
2426 /**
2427 * Internal store for event listeners
@@ -2581,7 +2637,7 @@ var EventPluginHub = {
2637 };
2638
2639 module.exports = EventPluginHub;
2584 -},{"114":114,"122":122,"158":158,"18":18,"19":19,"65":65}],18:[function(_dereq_,module,exports){
2640 +},{"113":113,"121":121,"157":157,"18":18,"19":19,"64":64}],18:[function(_dereq_,module,exports){
2641 /**
2642 * Copyright 2013-present, Facebook, Inc.
2643 * All rights reserved.
@@ -2595,7 +2651,7 @@ module.exports = EventPluginHub;
2651
2652 'use strict';
2653
2598 -var invariant = _dereq_(158);
2654 +var invariant = _dereq_(157);
2655
2656 /**
2657 * Injectable ordering of event plugins.
@@ -2823,7 +2879,7 @@ var EventPluginRegistry = {
2879 };
2880
2881 module.exports = EventPluginRegistry;
2826 -},{"158":158}],19:[function(_dereq_,module,exports){
2882 +},{"157":157}],19:[function(_dereq_,module,exports){
2883 /**
2884 * Copyright 2013-present, Facebook, Inc.
2885 * All rights reserved.
@@ -2838,10 +2894,10 @@ module.exports = EventPluginRegistry;
2894 'use strict';
2895
2896 var EventConstants = _dereq_(16);
2841 -var ReactErrorUtils = _dereq_(65);
2897 +var ReactErrorUtils = _dereq_(64);
2898
2843 -var invariant = _dereq_(158);
2844 -var warning = _dereq_(168);
2899 +var invariant = _dereq_(157);
2900 +var warning = _dereq_(167);
2901
2902 /**
2903 * Injected dependencies:
@@ -3051,7 +3107,7 @@ var EventPluginUtils = {
3107 };
3108
3109 module.exports = EventPluginUtils;
3054 -},{"158":158,"16":16,"168":168,"65":65}],20:[function(_dereq_,module,exports){
3110 +},{"157":157,"16":16,"167":167,"64":64}],20:[function(_dereq_,module,exports){
3111 /**
3112 * Copyright 2013-present, Facebook, Inc.
3113 * All rights reserved.
@@ -3069,9 +3125,9 @@ var EventConstants = _dereq_(16);
3125 var EventPluginHub = _dereq_(17);
3126 var EventPluginUtils = _dereq_(19);
3127
3072 -var accumulateInto = _dereq_(114);
3073 -var forEachAccumulated = _dereq_(122);
3074 -var warning = _dereq_(168);
3128 +var accumulateInto = _dereq_(113);
3129 +var forEachAccumulated = _dereq_(121);
3130 +var warning = _dereq_(167);
3131
3132 var PropagationPhases = EventConstants.PropagationPhases;
3133 var getListener = EventPluginHub.getListener;
@@ -3189,7 +3245,7 @@ var EventPropagators = {
3245 };
3246
3247 module.exports = EventPropagators;
3192 -},{"114":114,"122":122,"16":16,"168":168,"17":17,"19":19}],21:[function(_dereq_,module,exports){
3248 +},{"113":113,"121":121,"16":16,"167":167,"17":17,"19":19}],21:[function(_dereq_,module,exports){
3249 /**
3250 * Copyright 2013-present, Facebook, Inc.
3251 * All rights reserved.
@@ -3203,11 +3259,11 @@ module.exports = EventPropagators;
3259
3260 'use strict';
3261
3206 -var _assign = _dereq_(169);
3262 +var _assign = _dereq_(168);
3263
3264 var PooledClass = _dereq_(25);
3265
3210 -var getTextContentAccessor = _dereq_(130);
3266 +var getTextContentAccessor = _dereq_(129);
3267
3268 /**
3269 * This helper class stores information about text content of a target node,
@@ -3285,7 +3341,7 @@ _assign(FallbackCompositionState.prototype, {
3341 PooledClass.addPoolingTo(FallbackCompositionState);
3342
3343 module.exports = FallbackCompositionState;
3288 -},{"130":130,"169":169,"25":25}],22:[function(_dereq_,module,exports){
3344 +},{"129":129,"168":168,"25":25}],22:[function(_dereq_,module,exports){
3345 /**
3346 * Copyright 2013-present, Facebook, Inc.
3347 * All rights reserved.
@@ -3568,11 +3624,11 @@ module.exports = KeyEscapeUtils;
3624
3625 'use strict';
3626
3571 -var ReactPropTypes = _dereq_(85);
3572 -var ReactPropTypeLocations = _dereq_(84);
3627 +var ReactPropTypes = _dereq_(84);
3628 +var ReactPropTypeLocations = _dereq_(83);
3629
3574 -var invariant = _dereq_(158);
3575 -var warning = _dereq_(168);
3630 +var invariant = _dereq_(157);
3631 +var warning = _dereq_(167);
3632
3633 var hasReadOnlyValue = {
3634 'button': true,
@@ -3688,7 +3744,7 @@ var LinkedValueUtils = {
3744 };
3745
3746 module.exports = LinkedValueUtils;
3691 -},{"158":158,"168":168,"84":84,"85":85}],25:[function(_dereq_,module,exports){
3747 +},{"157":157,"167":167,"83":83,"84":84}],25:[function(_dereq_,module,exports){
3748 /**
3749 * Copyright 2013-present, Facebook, Inc.
3750 * All rights reserved.
@@ -3702,7 +3758,7 @@ module.exports = LinkedValueUtils;
3758
3759 'use strict';
3760
3705 -var invariant = _dereq_(158);
3761 +var invariant = _dereq_(157);
3762
3763 /**
3764 * Static poolers. Several custom versions for each potential number of
@@ -3808,7 +3864,7 @@ var PooledClass = {
3864 };
3865
3866 module.exports = PooledClass;
3811 -},{"158":158}],26:[function(_dereq_,module,exports){
3867 +},{"157":157}],26:[function(_dereq_,module,exports){
3868 /**
3869 * Copyright 2013-present, Facebook, Inc.
3870 * All rights reserved.
@@ -3822,19 +3878,19 @@ module.exports = PooledClass;
3878
3879 'use strict';
3880
3825 -var _assign = _dereq_(169);
3881 +var _assign = _dereq_(168);
3882
3883 var ReactChildren = _dereq_(29);
3884 var ReactComponent = _dereq_(31);
3885 var ReactClass = _dereq_(30);
3830 -var ReactDOMFactories = _dereq_(44);
3831 -var ReactElement = _dereq_(62);
3832 -var ReactElementValidator = _dereq_(63);
3833 -var ReactPropTypes = _dereq_(85);
3834 -var ReactVersion = _dereq_(95);
3886 +var ReactDOMFactories = _dereq_(45);
3887 +var ReactElement = _dereq_(61);
3888 +var ReactElementValidator = _dereq_(62);
3889 +var ReactPropTypes = _dereq_(84);
3890 +var ReactVersion = _dereq_(94);
3891
3836 -var onlyChild = _dereq_(135);
3837 -var warning = _dereq_(168);
3892 +var onlyChild = _dereq_(134);
3893 +var warning = _dereq_(167);
3894
3895 var createElement = ReactElement.createElement;
3896 var createFactory = ReactElement.createFactory;
@@ -3896,7 +3952,7 @@ var React = {
3952 };
3953
3954 module.exports = React;
3899 -},{"135":135,"168":168,"169":169,"29":29,"30":30,"31":31,"44":44,"62":62,"63":63,"85":85,"95":95}],27:[function(_dereq_,module,exports){
3955 +},{"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){
3956 /**
3957 * Copyright 2013-present, Facebook, Inc.
3958 * All rights reserved.
@@ -3910,15 +3966,15 @@ module.exports = React;
3966
3967 'use strict';
3968
3913 -var _assign = _dereq_(169);
3969 +var _assign = _dereq_(168);
3970
3971 var EventConstants = _dereq_(16);
3972 var EventPluginRegistry = _dereq_(18);
3917 -var ReactEventEmitterMixin = _dereq_(66);
3918 -var ViewportMetrics = _dereq_(113);
3973 +var ReactEventEmitterMixin = _dereq_(65);
3974 +var ViewportMetrics = _dereq_(112);
3975
3920 -var getVendorPrefixedEventName = _dereq_(131);
3921 -var isEventSupported = _dereq_(133);
3976 +var getVendorPrefixedEventName = _dereq_(130);
3977 +var isEventSupported = _dereq_(132);
3978
3979 /**
3980 * Summary of `ReactBrowserEventEmitter` event handling:
@@ -4214,7 +4270,7 @@ var ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {
4270 });
4271
4272 module.exports = ReactBrowserEventEmitter;
4217 -},{"113":113,"131":131,"133":133,"16":16,"169":169,"18":18,"66":66}],28:[function(_dereq_,module,exports){
4273 +},{"112":112,"130":130,"132":132,"16":16,"168":168,"18":18,"65":65}],28:[function(_dereq_,module,exports){
4274 /**
4275 * Copyright 2014-present, Facebook, Inc.
4276 * All rights reserved.
@@ -4228,13 +4284,13 @@ module.exports = ReactBrowserEventEmitter;
4284
4285 'use strict';
4286
4231 -var ReactReconciler = _dereq_(87);
4287 +var ReactReconciler = _dereq_(86);
4288
4233 -var instantiateReactComponent = _dereq_(132);
4289 +var instantiateReactComponent = _dereq_(131);
4290 var KeyEscapeUtils = _dereq_(23);
4235 -var shouldUpdateReactComponent = _dereq_(140);
4236 -var traverseAllChildren = _dereq_(141);
4237 -var warning = _dereq_(168);
4291 +var shouldUpdateReactComponent = _dereq_(139);
4292 +var traverseAllChildren = _dereq_(140);
4293 +var warning = _dereq_(167);
4294
4295 function instantiateChild(childInstances, child, name) {
4296 // We found a component instance.
@@ -4340,7 +4396,7 @@ var ReactChildReconciler = {
4396 };
4397
4398 module.exports = ReactChildReconciler;
4343 -},{"132":132,"140":140,"141":141,"168":168,"23":23,"87":87}],29:[function(_dereq_,module,exports){
4399 +},{"131":131,"139":139,"140":140,"167":167,"23":23,"86":86}],29:[function(_dereq_,module,exports){
4400 /**
4401 * Copyright 2013-present, Facebook, Inc.
4402 * All rights reserved.
@@ -4355,10 +4411,10 @@ module.exports = ReactChildReconciler;
4411 'use strict';
4412
4413 var PooledClass = _dereq_(25);
4358 -var ReactElement = _dereq_(62);
4414 +var ReactElement = _dereq_(61);
4415
4360 -var emptyFunction = _dereq_(150);
4361 -var traverseAllChildren = _dereq_(141);
4416 +var emptyFunction = _dereq_(149);
4417 +var traverseAllChildren = _dereq_(140);
4418
4419 var twoArgumentPooler = PooledClass.twoArgumentPooler;
4420 var fourArgumentPooler = PooledClass.fourArgumentPooler;
@@ -4398,6 +4454,8 @@ function forEachSingleChild(bookKeeping, child, name) {
4454 /**
4455 * Iterates through children that are typically specified as `props.children`.
4456 *
4457 + * See https://facebook.github.io/react/docs/top-level-api.html#react.children.foreach
4458 + *
4459 * The provided forEachFunc(child, index) will be called for each
4460 * leaf child.
4461 *
@@ -4473,7 +4531,9 @@ function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {
4531 /**
4532 * Maps children that are typically specified as `props.children`.
4533 *
4476 - * The provided mapFunction(child, index) will be called for each
4534 + * See https://facebook.github.io/react/docs/top-level-api.html#react.children.map
4535 + *
4536 + * The provided mapFunction(child, key, index) will be called for each
4537 * leaf child.
4538 *
4539 * @param {?*} children Children tree container.
@@ -4498,6 +4558,8 @@ function forEachSingleChildDummy(traverseContext, child, name) {
4558 * Count the number of children that are typically specified as
4559 * `props.children`.
4560 *
4561 + * See https://facebook.github.io/react/docs/top-level-api.html#react.children.count
4562 + *
4563 * @param {?*} children Children tree container.
4564 * @return {number} The number of children.
4565 */
@@ -4508,6 +4570,8 @@ function countChildren(children, context) {
4570 /**
4571 * Flatten a children object (typically specified as `props.children`) and
4572 * return an array with appropriately re-keyed children.
4573 + *
4574 + * See https://facebook.github.io/react/docs/top-level-api.html#react.children.toarray
4575 */
4576 function toArray(children) {
4577 var result = [];
@@ -4524,7 +4588,7 @@ var ReactChildren = {
4588 };
4589
4590 module.exports = ReactChildren;
4527 -},{"141":141,"150":150,"25":25,"62":62}],30:[function(_dereq_,module,exports){
4591 +},{"140":140,"149":149,"25":25,"61":61}],30:[function(_dereq_,module,exports){
4592 /**
4593 * Copyright 2013-present, Facebook, Inc.
4594 * All rights reserved.
@@ -4538,19 +4602,19 @@ module.exports = ReactChildren;
4602
4603 'use strict';
4604
4541 -var _assign = _dereq_(169);
4605 +var _assign = _dereq_(168);
4606
4607 var ReactComponent = _dereq_(31);
4544 -var ReactElement = _dereq_(62);
4545 -var ReactPropTypeLocations = _dereq_(84);
4546 -var ReactPropTypeLocationNames = _dereq_(83);
4608 +var ReactElement = _dereq_(61);
4609 +var ReactPropTypeLocations = _dereq_(83);
4610 +var ReactPropTypeLocationNames = _dereq_(82);
4611 var ReactNoopUpdateQueue = _dereq_(80);
4612
4549 -var emptyObject = _dereq_(151);
4550 -var invariant = _dereq_(158);
4551 -var keyMirror = _dereq_(161);
4552 -var keyOf = _dereq_(162);
4553 -var warning = _dereq_(168);
4613 +var emptyObject = _dereq_(150);
4614 +var invariant = _dereq_(157);
4615 +var keyMirror = _dereq_(160);
4616 +var keyOf = _dereq_(161);
4617 +var warning = _dereq_(167);
4618
4619 var MIXINS_KEY = keyOf({ mixins: null });
4620
@@ -5154,6 +5218,7 @@ var ReactClass = {
5218
5219 /**
5220 * Creates a composite component class given a class specification.
5221 + * See https://facebook.github.io/react/docs/top-level-api.html#react.createclass
5222 *
5223 * @param {object} spec Class specification (which must define `render`).
5224 * @return {function} Component constructor function.
@@ -5248,7 +5313,7 @@ var ReactClass = {
5313 };
5314
5315 module.exports = ReactClass;
5251 -},{"151":151,"158":158,"161":161,"162":162,"168":168,"169":169,"31":31,"62":62,"80":80,"83":83,"84":84}],31:[function(_dereq_,module,exports){
5316 +},{"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){
5317 /**
5318 * Copyright 2013-present, Facebook, Inc.
5319 * All rights reserved.
@@ -5263,12 +5328,12 @@ module.exports = ReactClass;
5328 'use strict';
5329
5330 var ReactNoopUpdateQueue = _dereq_(80);
5266 -var ReactInstrumentation = _dereq_(72);
5331 +var ReactInstrumentation = _dereq_(71);
5332
5268 -var canDefineProperty = _dereq_(116);
5269 -var emptyObject = _dereq_(151);
5270 -var invariant = _dereq_(158);
5271 -var warning = _dereq_(168);
5333 +var canDefineProperty = _dereq_(115);
5334 +var emptyObject = _dereq_(150);
5335 +var invariant = _dereq_(157);
5336 +var warning = _dereq_(167);
5337
5338 /**
5339 * Base class helpers for the updating state of a component.
@@ -5370,7 +5435,7 @@ if ("development" !== 'production') {
5435 }
5436
5437 module.exports = ReactComponent;
5373 -},{"116":116,"151":151,"158":158,"168":168,"72":72,"80":80}],32:[function(_dereq_,module,exports){
5438 +},{"115":115,"150":150,"157":157,"167":167,"71":71,"80":80}],32:[function(_dereq_,module,exports){
5439 /**
5440 * Copyright 2013-present, Facebook, Inc.
5441 * All rights reserved.
@@ -5385,8 +5450,7 @@ module.exports = ReactComponent;
5450 'use strict';
5451
5452 var DOMChildrenOperations = _dereq_(7);
5388 -var ReactDOMIDOperations = _dereq_(46);
5389 -var ReactPerf = _dereq_(82);
5453 +var ReactDOMIDOperations = _dereq_(47);
5454
5455 /**
5456 * Abstracts away all functionality of the reconciler that requires knowledge of
@@ -5410,12 +5474,8 @@ var ReactComponentBrowserEnvironment = {
5474
5475 };
5476
5413 -ReactPerf.measureMethods(ReactComponentBrowserEnvironment, 'ReactComponentBrowserEnvironment', {
5414 - replaceNodeWithMarkup: 'replaceNodeWithMarkup'
5415 -});
5416 -
5477 module.exports = ReactComponentBrowserEnvironment;
5418 -},{"46":46,"7":7,"82":82}],33:[function(_dereq_,module,exports){
5478 +},{"47":47,"7":7}],33:[function(_dereq_,module,exports){
5479 /**
5480 * Copyright 2014-present, Facebook, Inc.
5481 * All rights reserved.
@@ -5429,7 +5489,7 @@ module.exports = ReactComponentBrowserEnvironment;
5489
5490 'use strict';
5491
5432 -var invariant = _dereq_(158);
5492 +var invariant = _dereq_(157);
5493
5494 var injected = false;
5495
@@ -5467,7 +5527,153 @@ var ReactComponentEnvironment = {
5527 };
5528
5529 module.exports = ReactComponentEnvironment;
5470 -},{"158":158}],34:[function(_dereq_,module,exports){
5530 +},{"157":157}],34:[function(_dereq_,module,exports){
5531 +/**
5532 + * Copyright 2016-present, Facebook, Inc.
5533 + * All rights reserved.
5534 + *
5535 + * This source code is licensed under the BSD-style license found in the
5536 + * LICENSE file in the root directory of this source tree. An additional grant
5537 + * of patent rights can be found in the PATENTS file in the same directory.
5538 + *
5539 + * @providesModule ReactComponentTreeDevtool
5540 + */
5541 +
5542 +'use strict';
5543 +
5544 +var invariant = _dereq_(157);
5545 +
5546 +var tree = {};
5547 +var rootIDs = [];
5548 +
5549 +function updateTree(id, update) {
5550 + if (!tree[id]) {
5551 + tree[id] = {
5552 + parentID: null,
5553 + ownerID: null,
5554 + text: null,
5555 + childIDs: [],
5556 + displayName: 'Unknown',
5557 + isMounted: false,
5558 + updateCount: 0
5559 + };
5560 + }
5561 + update(tree[id]);
5562 +}
5563 +
5564 +function purgeDeep(id) {
5565 + var item = tree[id];
5566 + if (item) {
5567 + var childIDs = item.childIDs;
5568 +
5569 + delete tree[id];
5570 + childIDs.forEach(purgeDeep);
5571 + }
5572 +}
5573 +
5574 +var ReactComponentTreeDevtool = {
5575 + onSetDisplayName: function (id, displayName) {
5576 + updateTree(id, function (item) {
5577 + return item.displayName = displayName;
5578 + });
5579 + },
5580 + onSetChildren: function (id, nextChildIDs) {
5581 + updateTree(id, function (item) {
5582 + var prevChildIDs = item.childIDs;
5583 + item.childIDs = nextChildIDs;
5584 +
5585 + nextChildIDs.forEach(function (nextChildID) {
5586 + var nextChild = tree[nextChildID];
5587 + !nextChild ? "development" !== 'production' ? invariant(false, 'Expected devtool events to fire for the child ' + 'before its parent includes it in onSetChildren().') : invariant(false) : void 0;
5588 + !(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;
5589 + !(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;
5590 + !nextChild.isMounted ? "development" !== 'production' ? invariant(false, 'Expected onMountComponent() to fire for the child ' + 'before its parent includes it in onSetChildren().') : invariant(false) : void 0;
5591 +
5592 + if (prevChildIDs.indexOf(nextChildID) === -1) {
5593 + nextChild.parentID = id;
5594 + }
5595 + });
5596 + });
5597 + },
5598 + onSetOwner: function (id, ownerID) {
5599 + updateTree(id, function (item) {
5600 + return item.ownerID = ownerID;
5601 + });
5602 + },
5603 + onSetText: function (id, text) {
5604 + updateTree(id, function (item) {
5605 + return item.text = text;
5606 + });
5607 + },
5608 + onMountComponent: function (id) {
5609 + updateTree(id, function (item) {
5610 + return item.isMounted = true;
5611 + });
5612 + },
5613 + onMountRootComponent: function (id) {
5614 + rootIDs.push(id);
5615 + },
5616 + onUpdateComponent: function (id) {
5617 + updateTree(id, function (item) {
5618 + return item.updateCount++;
5619 + });
5620 + },
5621 + onUnmountComponent: function (id) {
5622 + updateTree(id, function (item) {
5623 + return item.isMounted = false;
5624 + });
5625 + rootIDs = rootIDs.filter(function (rootID) {
5626 + return rootID !== id;
5627 + });
5628 + },
5629 + purgeUnmountedComponents: function () {
5630 + if (ReactComponentTreeDevtool._preventPurging) {
5631 + // Should only be used for testing.
5632 + return;
5633 + }
5634 +
5635 + Object.keys(tree).filter(function (id) {
5636 + return !tree[id].isMounted;
5637 + }).forEach(purgeDeep);
5638 + },
5639 + isMounted: function (id) {
5640 + var item = tree[id];
5641 + return item ? item.isMounted : false;
5642 + },
5643 + getChildIDs: function (id) {
5644 + var item = tree[id];
5645 + return item ? item.childIDs : [];
5646 + },
5647 + getDisplayName: function (id) {
5648 + var item = tree[id];
5649 + return item ? item.displayName : 'Unknown';
5650 + },
5651 + getOwnerID: function (id) {
5652 + var item = tree[id];
5653 + return item ? item.ownerID : null;
5654 + },
5655 + getParentID: function (id) {
5656 + var item = tree[id];
5657 + return item ? item.parentID : null;
5658 + },
5659 + getText: function (id) {
5660 + var item = tree[id];
5661 + return item ? item.text : null;
5662 + },
5663 + getUpdateCount: function (id) {
5664 + var item = tree[id];
5665 + return item ? item.updateCount : 0;
5666 + },
5667 + getRootIDs: function () {
5668 + return rootIDs;
5669 + },
5670 + getRegisteredIDs: function () {
5671 + return Object.keys(tree);
5672 + }
5673 +};
5674 +
5675 +module.exports = ReactComponentTreeDevtool;
5676 +},{"157":157}],35:[function(_dereq_,module,exports){
5677 /**
5678 * Copyright 2013-present, Facebook, Inc.
5679 * All rights reserved.
@@ -5481,25 +5687,24 @@ module.exports = ReactComponentEnvironment;
5687
5688 'use strict';
5689
5484 -var _assign = _dereq_(169);
5690 +var _assign = _dereq_(168);
5691
5692 var ReactComponentEnvironment = _dereq_(33);
5487 -var ReactCurrentOwner = _dereq_(35);
5488 -var ReactElement = _dereq_(62);
5489 -var ReactErrorUtils = _dereq_(65);
5490 -var ReactInstanceMap = _dereq_(71);
5491 -var ReactInstrumentation = _dereq_(72);
5693 +var ReactCurrentOwner = _dereq_(36);
5694 +var ReactElement = _dereq_(61);
5695 +var ReactErrorUtils = _dereq_(64);
5696 +var ReactInstanceMap = _dereq_(70);
5697 +var ReactInstrumentation = _dereq_(71);
5698 var ReactNodeTypes = _dereq_(79);
5493 -var ReactPerf = _dereq_(82);
5494 -var ReactPropTypeLocations = _dereq_(84);
5495 -var ReactPropTypeLocationNames = _dereq_(83);
5496 -var ReactReconciler = _dereq_(87);
5497 -var ReactUpdateQueue = _dereq_(93);
5699 +var ReactPropTypeLocations = _dereq_(83);
5700 +var ReactPropTypeLocationNames = _dereq_(82);
5701 +var ReactReconciler = _dereq_(86);
5702 +var ReactUpdateQueue = _dereq_(92);
5703
5499 -var emptyObject = _dereq_(151);
5500 -var invariant = _dereq_(158);
5501 -var shouldUpdateReactComponent = _dereq_(140);
5502 -var warning = _dereq_(168);
5704 +var emptyObject = _dereq_(150);
5705 +var invariant = _dereq_(157);
5706 +var shouldUpdateReactComponent = _dereq_(139);
5707 +var warning = _dereq_(167);
5708
5709 function getDeclarationErrorAddendum(component) {
5710 var owner = component._currentElement._owner || null;
@@ -5526,6 +5731,28 @@ function warnIfInvalidElement(Component, element) {
5731 }
5732 }
5733
5734 +function invokeComponentDidMountWithTimer() {
5735 + var publicInstance = this._instance;
5736 + if (this._debugID !== 0) {
5737 + ReactInstrumentation.debugTool.onBeginLifeCycleTimer(this._debugID, 'componentDidMount');
5738 + }
5739 + publicInstance.componentDidMount();
5740 + if (this._debugID !== 0) {
5741 + ReactInstrumentation.debugTool.onEndLifeCycleTimer(this._debugID, 'componentDidMount');
5742 + }
5743 +}
5744 +
5745 +function invokeComponentDidUpdateWithTimer(prevProps, prevState, prevContext) {
5746 + var publicInstance = this._instance;
5747 + if (this._debugID !== 0) {
5748 + ReactInstrumentation.debugTool.onBeginLifeCycleTimer(this._debugID, 'componentDidUpdate');
5749 + }
5750 + publicInstance.componentDidUpdate(prevProps, prevState, prevContext);
5751 + if (this._debugID !== 0) {
5752 + ReactInstrumentation.debugTool.onEndLifeCycleTimer(this._debugID, 'componentDidUpdate');
5753 + }
5754 +}
5755 +
5756 function shouldConstruct(Component) {
5757 return Component.prototype && Component.prototype.isReactComponent;
5758 }
@@ -5585,6 +5812,7 @@ var ReactCompositeComponentMixin = {
5812 this._nativeContainerInfo = null;
5813
5814 // See ReactUpdateQueue
5815 + this._updateBatchNumber = null;
5816 this._pendingElement = null;
5817 this._pendingStateQueue = null;
5818 this._pendingReplaceState = false;
@@ -5693,7 +5921,11 @@ var ReactCompositeComponentMixin = {
5921 }
5922
5923 if (inst.componentDidMount) {
5696 - transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);
5924 + if ("development" !== 'production') {
5925 + transaction.getReactMountReady().enqueue(invokeComponentDidMountWithTimer, this);
5926 + } else {
5927 + transaction.getReactMountReady().enqueue(inst.componentDidMount, inst);
5928 + }
5929 }
5930
5931 return markup;
@@ -5714,11 +5946,35 @@ var ReactCompositeComponentMixin = {
5946
5947 _constructComponentWithoutOwner: function (publicProps, publicContext) {
5948 var Component = this._currentElement.type;
5949 + var instanceOrElement;
5950 if (shouldConstruct(Component)) {
5718 - return new Component(publicProps, publicContext, ReactUpdateQueue);
5951 + if ("development" !== 'production') {
5952 + if (this._debugID !== 0) {
5953 + ReactInstrumentation.debugTool.onBeginLifeCycleTimer(this._debugID, 'ctor');
5954 + }
5955 + }
5956 + instanceOrElement = new Component(publicProps, publicContext, ReactUpdateQueue);
5957 + if ("development" !== 'production') {
5958 + if (this._debugID !== 0) {
5959 + ReactInstrumentation.debugTool.onEndLifeCycleTimer(this._debugID, 'ctor');
5960 + }
5961 + }
5962 } else {
5720 - return Component(publicProps, publicContext, ReactUpdateQueue);
5963 + // This can still be an instance in case of factory components
5964 + // but we'll count this as time spent rendering as the more common case.
5965 + if ("development" !== 'production') {
5966 + if (this._debugID !== 0) {
5967 + ReactInstrumentation.debugTool.onBeginLifeCycleTimer(this._debugID, 'render');
5968 + }
5969 + }
5970 + instanceOrElement = Component(publicProps, publicContext, ReactUpdateQueue);
5971 + if ("development" !== 'production') {
5972 + if (this._debugID !== 0) {
5973 + ReactInstrumentation.debugTool.onEndLifeCycleTimer(this._debugID, 'render');
5974 + }
5975 + }
5976 }
5977 + return instanceOrElement;
5978 },
5979
5980 performInitialMountWithErrorHandling: function (renderedElement, nativeParent, nativeContainerInfo, transaction, context) {
@@ -5748,7 +6004,17 @@ var ReactCompositeComponentMixin = {
6004 performInitialMount: function (renderedElement, nativeParent, nativeContainerInfo, transaction, context) {
6005 var inst = this._instance;
6006 if (inst.componentWillMount) {
6007 + if ("development" !== 'production') {
6008 + if (this._debugID !== 0) {
6009 + ReactInstrumentation.debugTool.onBeginLifeCycleTimer(this._debugID, 'componentWillMount');
6010 + }
6011 + }
6012 inst.componentWillMount();
6013 + if ("development" !== 'production') {
6014 + if (this._debugID !== 0) {
6015 + ReactInstrumentation.debugTool.onEndLifeCycleTimer(this._debugID, 'componentWillMount');
6016 + }
6017 + }
6018 // When mounting, calls to `setState` by `componentWillMount` will set
6019 // `this._pendingStateQueue` without triggering a re-render.
6020 if (this._pendingStateQueue) {
@@ -5766,6 +6032,12 @@ var ReactCompositeComponentMixin = {
6032
6033 var markup = ReactReconciler.mountComponent(this._renderedComponent, transaction, nativeParent, nativeContainerInfo, this._processChildContext(context));
6034
6035 + if ("development" !== 'production') {
6036 + if (this._debugID !== 0) {
6037 + ReactInstrumentation.debugTool.onSetChildren(this._debugID, this._renderedComponent._debugID !== 0 ? [this._renderedComponent._debugID] : []);
6038 + }
6039 + }
6040 +
6041 return markup;
6042 },
6043
@@ -5787,12 +6059,22 @@ var ReactCompositeComponentMixin = {
6059
6060 if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {
6061 inst._calledComponentWillUnmount = true;
6062 + if ("development" !== 'production') {
6063 + if (this._debugID !== 0) {
6064 + ReactInstrumentation.debugTool.onBeginLifeCycleTimer(this._debugID, 'componentWillUnmount');
6065 + }
6066 + }
6067 if (safely) {
6068 var name = this.getName() + '.componentWillUnmount()';
6069 ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));
6070 } else {
6071 inst.componentWillUnmount();
6072 }
6073 + if ("development" !== 'production') {
6074 + if (this._debugID !== 0) {
6075 + ReactInstrumentation.debugTool.onEndLifeCycleTimer(this._debugID, 'componentWillUnmount');
6076 + }
6077 + }
6078 }
6079
6080 if (this._renderedComponent) {
@@ -5975,10 +6257,10 @@ var ReactCompositeComponentMixin = {
6257 performUpdateIfNecessary: function (transaction) {
6258 if (this._pendingElement != null) {
6259 ReactReconciler.receiveComponent(this, this._pendingElement, transaction, this._context);
5978 - }
5979 -
5980 - if (this._pendingStateQueue !== null || this._pendingForceUpdate) {
6260 + } else if (this._pendingStateQueue !== null || this._pendingForceUpdate) {
6261 this.updateComponent(transaction, this._currentElement, this._currentElement, this._context, this._context);
6262 + } else {
6263 + this._updateBatchNumber = null;
6264 }
6265 },
6266
@@ -6025,17 +6307,41 @@ var ReactCompositeComponentMixin = {
6307 // _pendingStateQueue which will ensure that any state updates gets
6308 // immediately reconciled instead of waiting for the next batch.
6309 if (willReceive && inst.componentWillReceiveProps) {
6310 + if ("development" !== 'production') {
6311 + if (this._debugID !== 0) {
6312 + ReactInstrumentation.debugTool.onBeginLifeCycleTimer(this._debugID, 'componentWillReceiveProps');
6313 + }
6314 + }
6315 inst.componentWillReceiveProps(nextProps, nextContext);
6316 + if ("development" !== 'production') {
6317 + if (this._debugID !== 0) {
6318 + ReactInstrumentation.debugTool.onEndLifeCycleTimer(this._debugID, 'componentWillReceiveProps');
6319 + }
6320 + }
6321 }
6322
6323 var nextState = this._processPendingState(nextProps, nextContext);
6324 + var shouldUpdate = true;
6325
6033 - var shouldUpdate = this._pendingForceUpdate || !inst.shouldComponentUpdate || inst.shouldComponentUpdate(nextProps, nextState, nextContext);
6326 + if (!this._pendingForceUpdate && inst.shouldComponentUpdate) {
6327 + if ("development" !== 'production') {
6328 + if (this._debugID !== 0) {
6329 + ReactInstrumentation.debugTool.onBeginLifeCycleTimer(this._debugID, 'shouldComponentUpdate');
6330 + }
6331 + }
6332 + shouldUpdate = inst.shouldComponentUpdate(nextProps, nextState, nextContext);
6333 + if ("development" !== 'production') {
6334 + if (this._debugID !== 0) {
6335 + ReactInstrumentation.debugTool.onEndLifeCycleTimer(this._debugID, 'shouldComponentUpdate');
6336 + }
6337 + }
6338 + }
6339
6340 if ("development" !== 'production') {
6341 "development" !== 'production' ? warning(shouldUpdate !== undefined, '%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', this.getName() || 'ReactCompositeComponent') : void 0;
6342 }
6343
6344 + this._updateBatchNumber = null;
6345 if (shouldUpdate) {
6346 this._pendingForceUpdate = false;
6347 // Will set `this.props`, `this.state` and `this.context`.
@@ -6101,7 +6407,17 @@ var ReactCompositeComponentMixin = {
6407 }
6408
6409 if (inst.componentWillUpdate) {
6410 + if ("development" !== 'production') {
6411 + if (this._debugID !== 0) {
6412 + ReactInstrumentation.debugTool.onBeginLifeCycleTimer(this._debugID, 'componentWillUpdate');
6413 + }
6414 + }
6415 inst.componentWillUpdate(nextProps, nextState, nextContext);
6416 + if ("development" !== 'production') {
6417 + if (this._debugID !== 0) {
6418 + ReactInstrumentation.debugTool.onEndLifeCycleTimer(this._debugID, 'componentWillUpdate');
6419 + }
6420 + }
6421 }
6422
6423 this._currentElement = nextElement;
@@ -6113,7 +6429,11 @@ var ReactCompositeComponentMixin = {
6429 this._updateRenderedComponent(transaction, unmaskedContext);
6430
6431 if (hasComponentDidUpdate) {
6116 - transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);
6432 + if ("development" !== 'production') {
6433 + transaction.getReactMountReady().enqueue(invokeComponentDidUpdateWithTimer.bind(this, prevProps, prevState, prevContext), this);
6434 + } else {
6435 + transaction.getReactMountReady().enqueue(inst.componentDidUpdate.bind(inst, prevProps, prevState, prevContext), inst);
6436 + }
6437 }
6438 },
6439
@@ -6135,8 +6455,16 @@ var ReactCompositeComponentMixin = {
6455
6456 this._renderedNodeType = ReactNodeTypes.getType(nextRenderedElement);
6457 this._renderedComponent = this._instantiateReactComponent(nextRenderedElement);
6458 +
6459 var nextMarkup = ReactReconciler.mountComponent(this._renderedComponent, transaction, this._nativeParent, this._nativeContainerInfo, this._processChildContext(context));
6139 - this._replaceNodeWithMarkup(oldNativeNode, nextMarkup);
6460 +
6461 + if ("development" !== 'production') {
6462 + if (this._debugID !== 0) {
6463 + ReactInstrumentation.debugTool.onSetChildren(this._debugID, this._renderedComponent._debugID !== 0 ? [this._renderedComponent._debugID] : []);
6464 + }
6465 + }
6466 +
6467 + this._replaceNodeWithMarkup(oldNativeNode, nextMarkup, prevComponentInstance);
6468 }
6469 },
6470
@@ -6145,8 +6473,8 @@ var ReactCompositeComponentMixin = {
6473 *
6474 * @protected
6475 */
6148 - _replaceNodeWithMarkup: function (oldNativeNode, nextMarkup) {
6149 - ReactComponentEnvironment.replaceNodeWithMarkup(oldNativeNode, nextMarkup);
6476 + _replaceNodeWithMarkup: function (oldNativeNode, nextMarkup, prevInstance) {
6477 + ReactComponentEnvironment.replaceNodeWithMarkup(oldNativeNode, nextMarkup, prevInstance);
6478 },
6479
6480 /**
@@ -6154,7 +6482,19 @@ var ReactCompositeComponentMixin = {
6482 */
6483 _renderValidatedComponentWithoutOwnerOrContext: function () {
6484 var inst = this._instance;
6485 +
6486 + if ("development" !== 'production') {
6487 + if (this._debugID !== 0) {
6488 + ReactInstrumentation.debugTool.onBeginLifeCycleTimer(this._debugID, 'render');
6489 + }
6490 + }
6491 var renderedComponent = inst.render();
6492 + if ("development" !== 'production') {
6493 + if (this._debugID !== 0) {
6494 + ReactInstrumentation.debugTool.onEndLifeCycleTimer(this._debugID, 'render');
6495 + }
6496 + }
6497 +
6498 if ("development" !== 'production') {
6499 // We allow auto-mocks to proceed as if they're returning null.
6500 if (renderedComponent === undefined && inst.render._isMockFunction) {
@@ -6181,6 +6521,7 @@ var ReactCompositeComponentMixin = {
6521 !(
6522 // TODO: An `isValidNode` function would probably be more appropriate
6523 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;
6524 +
6525 return renderedComponent;
6526 },
6527
@@ -6249,12 +6590,6 @@ var ReactCompositeComponentMixin = {
6590
6591 };
6592
6252 -ReactPerf.measureMethods(ReactCompositeComponentMixin, 'ReactCompositeComponent', {
6253 - mountComponent: 'mountComponent',
6254 - updateComponent: 'updateComponent',
6255 - _renderValidatedComponent: '_renderValidatedComponent'
6256 -});
6257 -
6593 var ReactCompositeComponent = {
6594
6595 Mixin: ReactCompositeComponentMixin
@@ -6262,7 +6597,7 @@ var ReactCompositeComponent = {
6597 };
6598
6599 module.exports = ReactCompositeComponent;
6265 -},{"140":140,"151":151,"158":158,"168":168,"169":169,"33":33,"35":35,"62":62,"65":65,"71":71,"72":72,"79":79,"82":82,"83":83,"84":84,"87":87,"93":93}],35:[function(_dereq_,module,exports){
6600 +},{"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){
6601 /**
6602 * Copyright 2013-present, Facebook, Inc.
6603 * All rights reserved.
@@ -6294,7 +6629,7 @@ var ReactCurrentOwner = {
6629 };
6630
6631 module.exports = ReactCurrentOwner;
6297 -},{}],36:[function(_dereq_,module,exports){
6632 +},{}],37:[function(_dereq_,module,exports){
6633 /**
6634 * Copyright 2013-present, Facebook, Inc.
6635 * All rights reserved.
@@ -6310,26 +6645,23 @@ module.exports = ReactCurrentOwner;
6645
6646 'use strict';
6647
6313 -var ReactDOMComponentTree = _dereq_(40);
6314 -var ReactDefaultInjection = _dereq_(59);
6315 -var ReactMount = _dereq_(75);
6316 -var ReactPerf = _dereq_(82);
6317 -var ReactReconciler = _dereq_(87);
6318 -var ReactUpdates = _dereq_(94);
6319 -var ReactVersion = _dereq_(95);
6648 +var ReactDOMComponentTree = _dereq_(41);
6649 +var ReactDefaultInjection = _dereq_(60);
6650 +var ReactMount = _dereq_(74);
6651 +var ReactReconciler = _dereq_(86);
6652 +var ReactUpdates = _dereq_(93);
6653 +var ReactVersion = _dereq_(94);
6654
6321 -var findDOMNode = _dereq_(120);
6322 -var getNativeComponentFromComposite = _dereq_(128);
6323 -var renderSubtreeIntoContainer = _dereq_(137);
6324 -var warning = _dereq_(168);
6655 +var findDOMNode = _dereq_(119);
6656 +var getNativeComponentFromComposite = _dereq_(127);
6657 +var renderSubtreeIntoContainer = _dereq_(136);
6658 +var warning = _dereq_(167);
6659
6660 ReactDefaultInjection.inject();
6661
6328 -var render = ReactPerf.measure('React', 'render', ReactMount.render);
6329 -
6662 var React = {
6663 findDOMNode: findDOMNode,
6332 - render: render,
6664 + render: ReactMount.render,
6665 unmountComponentAtNode: ReactMount.unmountComponentAtNode,
6666 version: ReactVersion,
6667
@@ -6363,7 +6695,7 @@ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVT
6695 }
6696
6697 if ("development" !== 'production') {
6366 - var ExecutionEnvironment = _dereq_(144);
6698 + var ExecutionEnvironment = _dereq_(143);
6699 if (ExecutionEnvironment.canUseDOM && window.top === window.self) {
6700
6701 // First check if devtools is not installed
@@ -6399,7 +6731,7 @@ if ("development" !== 'production') {
6731 }
6732
6733 module.exports = React;
6402 -},{"120":120,"128":128,"137":137,"144":144,"168":168,"40":40,"59":59,"75":75,"82":82,"87":87,"94":94,"95":95}],37:[function(_dereq_,module,exports){
6734 +},{"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){
6735 /**
6736 * Copyright 2013-present, Facebook, Inc.
6737 * All rights reserved.
@@ -6424,7 +6756,7 @@ var ReactDOMButton = {
6756 };
6757
6758 module.exports = ReactDOMButton;
6427 -},{"14":14}],38:[function(_dereq_,module,exports){
6759 +},{"14":14}],39:[function(_dereq_,module,exports){
6760 /**
6761 * Copyright 2013-present, Facebook, Inc.
6762 * All rights reserved.
@@ -6440,7 +6772,7 @@ module.exports = ReactDOMButton;
6772
6773 'use strict';
6774
6443 -var _assign = _dereq_(169);
6775 +var _assign = _dereq_(168);
6776
6777 var AutoFocusUtils = _dereq_(1);
6778 var CSSPropertyOperations = _dereq_(4);
@@ -6453,23 +6785,25 @@ var EventPluginHub = _dereq_(17);
6785 var EventPluginRegistry = _dereq_(18);
6786 var ReactBrowserEventEmitter = _dereq_(27);
6787 var ReactComponentBrowserEnvironment = _dereq_(32);
6456 -var ReactDOMButton = _dereq_(37);
6457 -var ReactDOMComponentFlags = _dereq_(39);
6458 -var ReactDOMComponentTree = _dereq_(40);
6459 -var ReactDOMInput = _dereq_(47);
6460 -var ReactDOMOption = _dereq_(49);
6461 -var ReactDOMSelect = _dereq_(50);
6462 -var ReactDOMTextarea = _dereq_(54);
6463 -var ReactMultiChild = _dereq_(76);
6464 -var ReactPerf = _dereq_(82);
6465 -
6466 -var escapeTextContentForBrowser = _dereq_(119);
6467 -var invariant = _dereq_(158);
6468 -var isEventSupported = _dereq_(133);
6469 -var keyOf = _dereq_(162);
6470 -var shallowEqual = _dereq_(167);
6471 -var validateDOMNesting = _dereq_(142);
6472 -var warning = _dereq_(168);
6788 +var ReactDOMButton = _dereq_(38);
6789 +var ReactDOMComponentFlags = _dereq_(40);
6790 +var ReactDOMComponentTree = _dereq_(41);
6791 +var ReactDOMInput = _dereq_(48);
6792 +var ReactDOMOption = _dereq_(50);
6793 +var ReactDOMSelect = _dereq_(51);
6794 +var ReactDOMTextarea = _dereq_(55);
6795 +var ReactInstrumentation = _dereq_(71);
6796 +var ReactMultiChild = _dereq_(75);
6797 +var ReactServerRenderingTransaction = _dereq_(90);
6798 +
6799 +var emptyFunction = _dereq_(149);
6800 +var escapeTextContentForBrowser = _dereq_(118);
6801 +var invariant = _dereq_(157);
6802 +var isEventSupported = _dereq_(132);
6803 +var keyOf = _dereq_(161);
6804 +var shallowEqual = _dereq_(166);
6805 +var validateDOMNesting = _dereq_(141);
6806 +var warning = _dereq_(167);
6807
6808 var Flags = ReactDOMComponentFlags;
6809 var deleteListener = EventPluginHub.deleteListener;
@@ -6581,6 +6915,9 @@ function assertValidProps(component, props) {
6915 }
6916
6917 function enqueuePutListener(inst, registrationName, listener, transaction) {
6918 + if (transaction instanceof ReactServerRenderingTransaction) {
6919 + return;
6920 + }
6921 if ("development" !== 'production') {
6922 // IE8 has no API for event capturing and the `onScroll` event doesn't
6923 // bubble.
@@ -6589,10 +6926,6 @@ function enqueuePutListener(inst, registrationName, listener, transaction) {
6926 var containerInfo = inst._nativeContainerInfo;
6927 var isDocumentFragment = containerInfo._node && containerInfo._node.nodeType === DOC_FRAGMENT_TYPE;
6928 var doc = isDocumentFragment ? containerInfo._node : containerInfo._ownerDocument;
6592 - if (!doc) {
6593 - // Server rendering.
6594 - return;
6595 - }
6929 listenTo(registrationName, doc);
6930 transaction.getReactMountReady().enqueue(putListener, {
6931 inst: inst,
@@ -6611,6 +6944,19 @@ function optionPostMount() {
6944 ReactDOMOption.postMountWrapper(inst);
6945 }
6946
6947 +var setContentChildForInstrumentation = emptyFunction;
6948 +if ("development" !== 'production') {
6949 + setContentChildForInstrumentation = function (contentToUse) {
6950 + var debugID = this._debugID;
6951 + var contentDebugID = debugID + '#text';
6952 + this._contentDebugID = contentDebugID;
6953 + ReactInstrumentation.debugTool.onSetDisplayName(contentDebugID, '#text');
6954 + ReactInstrumentation.debugTool.onSetText(contentDebugID, '' + contentToUse);
6955 + ReactInstrumentation.debugTool.onMountComponent(contentDebugID);
6956 + ReactInstrumentation.debugTool.onSetChildren(debugID, [contentDebugID]);
6957 + };
6958 +}
6959 +
6960 // There are so many media events, it makes sense to just
6961 // maintain a list rather than create a `trapBubbledEvent` for each
6962 var mediaEvents = {
@@ -6771,6 +7117,7 @@ function ReactDOMComponent(element) {
7117 this._flags = 0;
7118 if ("development" !== 'production') {
7119 this._ancestorInfo = null;
7120 + this._contentDebugID = null;
7121 }
7122 }
7123
@@ -6886,7 +7233,7 @@ ReactDOMComponent.Mixin = {
7233 div.innerHTML = '<' + type + '></' + type + '>';
7234 el = div.removeChild(div.firstChild);
7235 } else {
6889 - el = ownerDocument.createElement(this._currentElement.type);
7236 + el = ownerDocument.createElement(this._currentElement.type, props.is || null);
7237 }
7238 } else {
7239 el = ownerDocument.createElementNS(namespaceURI, this._currentElement.type);
@@ -7016,6 +7363,9 @@ ReactDOMComponent.Mixin = {
7363 if (contentToUse != null) {
7364 // TODO: Validate that text is allowed as a child of this node
7365 ret = escapeTextContentForBrowser(contentToUse);
7366 + if ("development" !== 'production') {
7367 + setContentChildForInstrumentation.call(this, contentToUse);
7368 + }
7369 } else if (childrenToUse != null) {
7370 var mountImages = this.mountChildren(childrenToUse, transaction, context);
7371 ret = mountImages.join('');
@@ -7050,6 +7400,9 @@ ReactDOMComponent.Mixin = {
7400 var childrenToUse = contentToUse != null ? null : props.children;
7401 if (contentToUse != null) {
7402 // TODO: Validate that text is allowed as a child of this node
7403 + if ("development" !== 'production') {
7404 + setContentChildForInstrumentation.call(this, contentToUse);
7405 + }
7406 DOMLazyTree.queueText(lazyTree, contentToUse);
7407 } else if (childrenToUse != null) {
7408 var mountImages = this.mountChildren(childrenToUse, transaction, context);
@@ -7258,17 +7611,34 @@ ReactDOMComponent.Mixin = {
7611 this.updateChildren(null, transaction, context);
7612 } else if (lastHasContentOrHtml && !nextHasContentOrHtml) {
7613 this.updateTextContent('');
7614 + if ("development" !== 'production') {
7615 + ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);
7616 + }
7617 }
7618
7619 if (nextContent != null) {
7620 if (lastContent !== nextContent) {
7621 this.updateTextContent('' + nextContent);
7622 + if ("development" !== 'production') {
7623 + this._contentDebugID = this._debugID + '#text';
7624 + setContentChildForInstrumentation.call(this, nextContent);
7625 + }
7626 }
7627 } else if (nextHtml != null) {
7628 if (lastHtml !== nextHtml) {
7629 this.updateMarkup('' + nextHtml);
7630 }
7631 + if ("development" !== 'production') {
7632 + ReactInstrumentation.debugTool.onSetChildren(this._debugID, []);
7633 + }
7634 } else if (nextChildren != null) {
7635 + if ("development" !== 'production') {
7636 + if (this._contentDebugID) {
7637 + ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);
7638 + this._contentDebugID = null;
7639 + }
7640 + }
7641 +
7642 this.updateChildren(nextChildren, transaction, context);
7643 }
7644 },
@@ -7318,6 +7688,13 @@ ReactDOMComponent.Mixin = {
7688 this._rootNodeID = null;
7689 this._domID = null;
7690 this._wrapperState = null;
7691 +
7692 + if ("development" !== 'production') {
7693 + if (this._contentDebugID) {
7694 + ReactInstrumentation.debugTool.onUnmountComponent(this._contentDebugID);
7695 + this._contentDebugID = null;
7696 + }
7697 + }
7698 },
7699
7700 getPublicInstance: function () {
@@ -7326,15 +7703,10 @@ ReactDOMComponent.Mixin = {
7703
7704 };
7705
7329 -ReactPerf.measureMethods(ReactDOMComponent.Mixin, 'ReactDOMComponent', {
7330 - mountComponent: 'mountComponent',
7331 - receiveComponent: 'receiveComponent'
7332 -});
7333 -
7706 _assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);
7707
7708 module.exports = ReactDOMComponent;
7337 -},{"1":1,"10":10,"11":11,"119":119,"133":133,"142":142,"158":158,"16":16,"162":162,"167":167,"168":168,"169":169,"17":17,"18":18,"27":27,"32":32,"37":37,"39":39,"4":4,"40":40,"47":47,"49":49,"50":50,"54":54,"76":76,"8":8,"82":82,"9":9}],39:[function(_dereq_,module,exports){
7709 +},{"1":1,"10":10,"11":11,"118":118,"132":132,"141":141,"149":149,"157":157,"16":16,"161":161,"166":166,"167":167,"168":168,"17":17,"18":18,"27":27,"32":32,"38":38,"4":4,"40":40,"41":41,"48":48,"50":50,"51":51,"55":55,"71":71,"75":75,"8":8,"9":9,"90":90}],40:[function(_dereq_,module,exports){
7710 /**
7711 * Copyright 2015-present, Facebook, Inc.
7712 * All rights reserved.
@@ -7353,7 +7725,7 @@ var ReactDOMComponentFlags = {
7725 };
7726
7727 module.exports = ReactDOMComponentFlags;
7356 -},{}],40:[function(_dereq_,module,exports){
7728 +},{}],41:[function(_dereq_,module,exports){
7729 /**
7730 * Copyright 2013-present, Facebook, Inc.
7731 * All rights reserved.
@@ -7368,9 +7740,9 @@ module.exports = ReactDOMComponentFlags;
7740 'use strict';
7741
7742 var DOMProperty = _dereq_(10);
7371 -var ReactDOMComponentFlags = _dereq_(39);
7743 +var ReactDOMComponentFlags = _dereq_(40);
7744
7373 -var invariant = _dereq_(158);
7745 +var invariant = _dereq_(157);
7746
7747 var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;
7748 var Flags = ReactDOMComponentFlags;
@@ -7540,7 +7912,7 @@ var ReactDOMComponentTree = {
7912 };
7913
7914 module.exports = ReactDOMComponentTree;
7543 -},{"10":10,"158":158,"39":39}],41:[function(_dereq_,module,exports){
7915 +},{"10":10,"157":157,"40":40}],42:[function(_dereq_,module,exports){
7916 /**
7917 * Copyright 2013-present, Facebook, Inc.
7918 * All rights reserved.
@@ -7554,7 +7926,7 @@ module.exports = ReactDOMComponentTree;
7926
7927 'use strict';
7928
7557 -var validateDOMNesting = _dereq_(142);
7929 +var validateDOMNesting = _dereq_(141);
7930
7931 var DOC_NODE_TYPE = 9;
7932
@@ -7574,7 +7946,7 @@ function ReactDOMContainerInfo(topLevelWrapper, node) {
7946 }
7947
7948 module.exports = ReactDOMContainerInfo;
7577 -},{"142":142}],42:[function(_dereq_,module,exports){
7949 +},{"141":141}],43:[function(_dereq_,module,exports){
7950 /**
7951 * Copyright 2013-present, Facebook, Inc.
7952 * All rights reserved.
@@ -7588,9 +7960,9 @@ module.exports = ReactDOMContainerInfo;
7960
7961 'use strict';
7962
7591 -var ReactDOMUnknownPropertyDevtool = _dereq_(56);
7963 +var ReactDOMUnknownPropertyDevtool = _dereq_(57);
7964
7593 -var warning = _dereq_(168);
7965 +var warning = _dereq_(167);
7966
7967 var eventHandlers = [];
7968 var handlerDoesThrowForEvent = {};
@@ -7636,7 +8008,7 @@ var ReactDOMDebugTool = {
8008 ReactDOMDebugTool.addDevtool(ReactDOMUnknownPropertyDevtool);
8009
8010 module.exports = ReactDOMDebugTool;
7639 -},{"168":168,"56":56}],43:[function(_dereq_,module,exports){
8011 +},{"167":167,"57":57}],44:[function(_dereq_,module,exports){
8012 /**
8013 * Copyright 2014-present, Facebook, Inc.
8014 * All rights reserved.
@@ -7650,10 +8022,10 @@ module.exports = ReactDOMDebugTool;
8022
8023 'use strict';
8024
7653 -var _assign = _dereq_(169);
8025 +var _assign = _dereq_(168);
8026
8027 var DOMLazyTree = _dereq_(8);
7656 -var ReactDOMComponentTree = _dereq_(40);
8028 +var ReactDOMComponentTree = _dereq_(41);
8029
8030 var ReactDOMEmptyComponent = function (instantiate) {
8031 // ReactCompositeComponent uses this:
@@ -7697,7 +8069,7 @@ _assign(ReactDOMEmptyComponent.prototype, {
8069 });
8070
8071 module.exports = ReactDOMEmptyComponent;
7700 -},{"169":169,"40":40,"8":8}],44:[function(_dereq_,module,exports){
8072 +},{"168":168,"41":41,"8":8}],45:[function(_dereq_,module,exports){
8073 /**
8074 * Copyright 2013-present, Facebook, Inc.
8075 * All rights reserved.
@@ -7711,10 +8083,10 @@ module.exports = ReactDOMEmptyComponent;
8083
8084 'use strict';
8085
7714 -var ReactElement = _dereq_(62);
7715 -var ReactElementValidator = _dereq_(63);
8086 +var ReactElement = _dereq_(61);
8087 +var ReactElementValidator = _dereq_(62);
8088
7717 -var mapObject = _dereq_(163);
8089 +var mapObject = _dereq_(162);
8090
8091 /**
8092 * Create a factory that creates HTML tag elements.
@@ -7874,7 +8246,7 @@ var ReactDOMFactories = mapObject({
8246 }, createDOMFactory);
8247
8248 module.exports = ReactDOMFactories;
7877 -},{"163":163,"62":62,"63":63}],45:[function(_dereq_,module,exports){
8249 +},{"162":162,"61":61,"62":62}],46:[function(_dereq_,module,exports){
8250 /**
8251 * Copyright 2013-present, Facebook, Inc.
8252 * All rights reserved.
@@ -7893,7 +8265,7 @@ var ReactDOMFeatureFlags = {
8265 };
8266
8267 module.exports = ReactDOMFeatureFlags;
7896 -},{}],46:[function(_dereq_,module,exports){
8268 +},{}],47:[function(_dereq_,module,exports){
8269 /**
8270 * Copyright 2013-present, Facebook, Inc.
8271 * All rights reserved.
@@ -7908,8 +8280,7 @@ module.exports = ReactDOMFeatureFlags;
8280 'use strict';
8281
8282 var DOMChildrenOperations = _dereq_(7);
7911 -var ReactDOMComponentTree = _dereq_(40);
7912 -var ReactPerf = _dereq_(82);
8283 +var ReactDOMComponentTree = _dereq_(41);
8284
8285 /**
8286 * Operations used to process updates to DOM nodes.
@@ -7928,12 +8299,8 @@ var ReactDOMIDOperations = {
8299 }
8300 };
8301
7931 -ReactPerf.measureMethods(ReactDOMIDOperations, 'ReactDOMIDOperations', {
7932 - dangerouslyProcessChildrenUpdates: 'dangerouslyProcessChildrenUpdates'
7933 -});
7934 -
8302 module.exports = ReactDOMIDOperations;
7936 -},{"40":40,"7":7,"82":82}],47:[function(_dereq_,module,exports){
8303 +},{"41":41,"7":7}],48:[function(_dereq_,module,exports){
8304 /**
8305 * Copyright 2013-present, Facebook, Inc.
8306 * All rights reserved.
@@ -7947,16 +8314,16 @@ module.exports = ReactDOMIDOperations;
8314
8315 'use strict';
8316
7950 -var _assign = _dereq_(169);
8317 +var _assign = _dereq_(168);
8318
8319 var DisabledInputUtils = _dereq_(14);
8320 var DOMPropertyOperations = _dereq_(11);
8321 var LinkedValueUtils = _dereq_(24);
7955 -var ReactDOMComponentTree = _dereq_(40);
7956 -var ReactUpdates = _dereq_(94);
8322 +var ReactDOMComponentTree = _dereq_(41);
8323 +var ReactUpdates = _dereq_(93);
8324
7958 -var invariant = _dereq_(158);
7959 -var warning = _dereq_(168);
8325 +var invariant = _dereq_(157);
8326 +var warning = _dereq_(167);
8327
8328 var didWarnValueLink = false;
8329 var didWarnCheckedLink = false;
@@ -8021,6 +8388,8 @@ var ReactDOMInput = {
8388 if ("development" !== 'production') {
8389 LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);
8390
8391 + var owner = inst._currentElement._owner;
8392 +
8393 if (props.valueLink !== undefined && !didWarnValueLink) {
8394 "development" !== 'production' ? warning(false, '`valueLink` prop on `input` is deprecated; set `value` and `onChange` instead.') : void 0;
8395 didWarnValueLink = true;
@@ -8030,11 +8399,11 @@ var ReactDOMInput = {
8399 didWarnCheckedLink = true;
8400 }
8401 if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {
8033 - "development" !== 'production' ? warning(false, 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;
8402 + "development" !== 'production' ? warning(false, '%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;
8403 didWarnCheckedDefaultChecked = true;
8404 }
8405 if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {
8037 - "development" !== 'production' ? warning(false, 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components') : void 0;
8406 + "development" !== 'production' ? warning(false, '%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;
8407 didWarnValueDefaultValue = true;
8408 }
8409 warnIfValueIsNull(props);
@@ -8065,7 +8434,7 @@ var ReactDOMInput = {
8434 var owner = inst._currentElement._owner;
8435
8436 if ((initialValue || !inst._wrapperState.controlled) && controlled && !didWarnUncontrolledToControlled) {
8068 - "development" !== 'production' ? warning(false, '%s is changing a uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;
8437 + "development" !== 'production' ? warning(false, '%s is changing an uncontrolled input of type %s to be controlled. ' + 'Input elements should not switch from uncontrolled to controlled (or vice versa). ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://fb.me/react-controlled-components', owner && owner.getName() || 'A component', props.type) : void 0;
8438 didWarnUncontrolledToControlled = true;
8439 }
8440 if (inst._wrapperState.controlled && (defaultValue || !controlled) && !didWarnControlledToUncontrolled) {
@@ -8138,7 +8507,7 @@ function _handleChange(event) {
8507 }
8508
8509 module.exports = ReactDOMInput;
8141 -},{"11":11,"14":14,"158":158,"168":168,"169":169,"24":24,"40":40,"94":94}],48:[function(_dereq_,module,exports){
8510 +},{"11":11,"14":14,"157":157,"167":167,"168":168,"24":24,"41":41,"93":93}],49:[function(_dereq_,module,exports){
8511 /**
8512 * Copyright 2013-present, Facebook, Inc.
8513 * All rights reserved.
@@ -8152,10 +8521,10 @@ module.exports = ReactDOMInput;
8521
8522 'use strict';
8523
8155 -var ReactDOMDebugTool = _dereq_(42);
8524 +var ReactDOMDebugTool = _dereq_(43);
8525
8526 module.exports = { debugTool: ReactDOMDebugTool };
8158 -},{"42":42}],49:[function(_dereq_,module,exports){
8527 +},{"43":43}],50:[function(_dereq_,module,exports){
8528 /**
8529 * Copyright 2013-present, Facebook, Inc.
8530 * All rights reserved.
@@ -8169,13 +8538,13 @@ module.exports = { debugTool: ReactDOMDebugTool };
8538
8539 'use strict';
8540
8172 -var _assign = _dereq_(169);
8541 +var _assign = _dereq_(168);
8542
8543 var ReactChildren = _dereq_(29);
8175 -var ReactDOMComponentTree = _dereq_(40);
8176 -var ReactDOMSelect = _dereq_(50);
8544 +var ReactDOMComponentTree = _dereq_(41);
8545 +var ReactDOMSelect = _dereq_(51);
8546
8178 -var warning = _dereq_(168);
8547 +var warning = _dereq_(167);
8548
8549 /**
8550 * Implements an <option> native component that warns when `selected` is set.
@@ -8265,7 +8634,7 @@ var ReactDOMOption = {
8634 };
8635
8636 module.exports = ReactDOMOption;
8268 -},{"168":168,"169":169,"29":29,"40":40,"50":50}],50:[function(_dereq_,module,exports){
8637 +},{"167":167,"168":168,"29":29,"41":41,"51":51}],51:[function(_dereq_,module,exports){
8638 /**
8639 * Copyright 2013-present, Facebook, Inc.
8640 * All rights reserved.
@@ -8279,14 +8648,14 @@ module.exports = ReactDOMOption;
8648
8649 'use strict';
8650
8282 -var _assign = _dereq_(169);
8651 +var _assign = _dereq_(168);
8652
8653 var DisabledInputUtils = _dereq_(14);
8654 var LinkedValueUtils = _dereq_(24);
8286 -var ReactDOMComponentTree = _dereq_(40);
8287 -var ReactUpdates = _dereq_(94);
8655 +var ReactDOMComponentTree = _dereq_(41);
8656 +var ReactUpdates = _dereq_(93);
8657
8289 -var warning = _dereq_(168);
8658 +var warning = _dereq_(167);
8659
8660 var didWarnValueLink = false;
8661 var didWarnValueNull = false;
@@ -8479,7 +8848,7 @@ function _handleChange(event) {
8848 }
8849
8850 module.exports = ReactDOMSelect;
8482 -},{"14":14,"168":168,"169":169,"24":24,"40":40,"94":94}],51:[function(_dereq_,module,exports){
8851 +},{"14":14,"167":167,"168":168,"24":24,"41":41,"93":93}],52:[function(_dereq_,module,exports){
8852 /**
8853 * Copyright 2013-present, Facebook, Inc.
8854 * All rights reserved.
@@ -8493,10 +8862,10 @@ module.exports = ReactDOMSelect;
8862
8863 'use strict';
8864
8496 -var ExecutionEnvironment = _dereq_(144);
8865 +var ExecutionEnvironment = _dereq_(143);
8866
8498 -var getNodeForCharacterOffset = _dereq_(129);
8499 -var getTextContentAccessor = _dereq_(130);
8867 +var getNodeForCharacterOffset = _dereq_(128);
8868 +var getTextContentAccessor = _dereq_(129);
8869
8870 /**
8871 * While `isCollapsed` is available on the Selection object and `collapsed`
@@ -8692,7 +9061,7 @@ var ReactDOMSelection = {
9061 };
9062
9063 module.exports = ReactDOMSelection;
8695 -},{"129":129,"130":130,"144":144}],52:[function(_dereq_,module,exports){
9064 +},{"128":128,"129":129,"143":143}],53:[function(_dereq_,module,exports){
9065 /**
9066 * Copyright 2013-present, Facebook, Inc.
9067 * All rights reserved.
@@ -8706,9 +9075,9 @@ module.exports = ReactDOMSelection;
9075
9076 'use strict';
9077
8709 -var ReactDefaultInjection = _dereq_(59);
8710 -var ReactServerRendering = _dereq_(90);
8711 -var ReactVersion = _dereq_(95);
9078 +var ReactDefaultInjection = _dereq_(60);
9079 +var ReactServerRendering = _dereq_(89);
9080 +var ReactVersion = _dereq_(94);
9081
9082 ReactDefaultInjection.inject();
9083
@@ -8719,7 +9088,7 @@ var ReactDOMServer = {
9088 };
9089
9090 module.exports = ReactDOMServer;
8722 -},{"59":59,"90":90,"95":95}],53:[function(_dereq_,module,exports){
9091 +},{"60":60,"89":89,"94":94}],54:[function(_dereq_,module,exports){
9092 /**
9093 * Copyright 2013-present, Facebook, Inc.
9094 * All rights reserved.
@@ -8733,16 +9102,16 @@ module.exports = ReactDOMServer;
9102
9103 'use strict';
9104
8736 -var _assign = _dereq_(169);
9105 +var _assign = _dereq_(168);
9106
9107 var DOMChildrenOperations = _dereq_(7);
9108 var DOMLazyTree = _dereq_(8);
8740 -var ReactDOMComponentTree = _dereq_(40);
8741 -var ReactPerf = _dereq_(82);
9109 +var ReactDOMComponentTree = _dereq_(41);
9110 +var ReactInstrumentation = _dereq_(71);
9111
8743 -var escapeTextContentForBrowser = _dereq_(119);
8744 -var invariant = _dereq_(158);
8745 -var validateDOMNesting = _dereq_(142);
9112 +var escapeTextContentForBrowser = _dereq_(118);
9113 +var invariant = _dereq_(157);
9114 +var validateDOMNesting = _dereq_(141);
9115
9116 /**
9117 * Text nodes violate a couple assumptions that React makes about components:
@@ -8786,6 +9155,8 @@ _assign(ReactDOMTextComponent.prototype, {
9155 */
9156 mountComponent: function (transaction, nativeParent, nativeContainerInfo, context) {
9157 if ("development" !== 'production') {
9158 + ReactInstrumentation.debugTool.onSetText(this._debugID, this._stringText);
9159 +
9160 var parentInfo;
9161 if (nativeParent != null) {
9162 parentInfo = nativeParent._ancestorInfo;
@@ -8849,6 +9220,10 @@ _assign(ReactDOMTextComponent.prototype, {
9220 this._stringText = nextStringText;
9221 var commentNodes = this.getNativeNode();
9222 DOMChildrenOperations.replaceDelimitedText(commentNodes[0], commentNodes[1], nextStringText);
9223 +
9224 + if ("development" !== 'production') {
9225 + ReactInstrumentation.debugTool.onSetText(this._debugID, nextStringText);
9226 + }
9227 }
9228 }
9229 },
@@ -8883,13 +9258,8 @@ _assign(ReactDOMTextComponent.prototype, {
9258
9259 });
9260
8886 -ReactPerf.measureMethods(ReactDOMTextComponent.prototype, 'ReactDOMTextComponent', {
8887 - mountComponent: 'mountComponent',
8888 - receiveComponent: 'receiveComponent'
8889 -});
8890 -
9261 module.exports = ReactDOMTextComponent;
8892 -},{"119":119,"142":142,"158":158,"169":169,"40":40,"7":7,"8":8,"82":82}],54:[function(_dereq_,module,exports){
9262 +},{"118":118,"141":141,"157":157,"168":168,"41":41,"7":7,"71":71,"8":8}],55:[function(_dereq_,module,exports){
9263 /**
9264 * Copyright 2013-present, Facebook, Inc.
9265 * All rights reserved.
@@ -8903,16 +9273,16 @@ module.exports = ReactDOMTextComponent;
9273
9274 'use strict';
9275
8906 -var _assign = _dereq_(169);
9276 +var _assign = _dereq_(168);
9277
9278 var DisabledInputUtils = _dereq_(14);
9279 var DOMPropertyOperations = _dereq_(11);
9280 var LinkedValueUtils = _dereq_(24);
8911 -var ReactDOMComponentTree = _dereq_(40);
8912 -var ReactUpdates = _dereq_(94);
9281 +var ReactDOMComponentTree = _dereq_(41);
9282 +var ReactUpdates = _dereq_(93);
9283
8914 -var invariant = _dereq_(158);
8915 -var warning = _dereq_(168);
9284 +var invariant = _dereq_(157);
9285 +var warning = _dereq_(167);
9286
9287 var didWarnValueLink = false;
9288 var didWarnValueNull = false;
@@ -9032,7 +9402,7 @@ function _handleChange(event) {
9402 }
9403
9404 module.exports = ReactDOMTextarea;
9035 -},{"11":11,"14":14,"158":158,"168":168,"169":169,"24":24,"40":40,"94":94}],55:[function(_dereq_,module,exports){
9405 +},{"11":11,"14":14,"157":157,"167":167,"168":168,"24":24,"41":41,"93":93}],56:[function(_dereq_,module,exports){
9406 /**
9407 * Copyright 2015-present, Facebook, Inc.
9408 * All rights reserved.
@@ -9046,7 +9416,7 @@ module.exports = ReactDOMTextarea;
9416
9417 'use strict';
9418
9049 -var invariant = _dereq_(158);
9419 +var invariant = _dereq_(157);
9420
9421 /**
9422 * Return the lowest common ancestor of A and B, or null if they are in
@@ -9167,7 +9537,7 @@ module.exports = {
9537 traverseTwoPhase: traverseTwoPhase,
9538 traverseEnterLeave: traverseEnterLeave
9539 };
9170 -},{"158":158}],56:[function(_dereq_,module,exports){
9540 +},{"157":157}],57:[function(_dereq_,module,exports){
9541 /**
9542 * Copyright 2013-present, Facebook, Inc.
9543 * All rights reserved.
@@ -9184,7 +9554,7 @@ module.exports = {
9554 var DOMProperty = _dereq_(10);
9555 var EventPluginRegistry = _dereq_(18);
9556
9187 -var warning = _dereq_(168);
9557 +var warning = _dereq_(167);
9558
9559 if ("development" !== 'production') {
9560 var reactProps = {
@@ -9232,7 +9602,7 @@ var ReactDOMUnknownPropertyDevtool = {
9602 };
9603
9604 module.exports = ReactDOMUnknownPropertyDevtool;
9235 -},{"10":10,"168":168,"18":18}],57:[function(_dereq_,module,exports){
9605 +},{"10":10,"167":167,"18":18}],58:[function(_dereq_,module,exports){
9606 /**
9607 * Copyright 2016-present, Facebook, Inc.
9608 * All rights reserved.
@@ -9246,8 +9616,10 @@ module.exports = ReactDOMUnknownPropertyDevtool;
9616
9617 'use strict';
9618
9249 -var ReactInvalidSetStateWarningDevTool = _dereq_(73);
9250 -var warning = _dereq_(168);
9619 +var ExecutionEnvironment = _dereq_(143);
9620 +
9621 +var performanceNow = _dereq_(165);
9622 +var warning = _dereq_(167);
9623
9624 var eventHandlers = [];
9625 var handlerDoesThrowForEvent = {};
@@ -9267,6 +9639,70 @@ function emitEvent(handlerFunctionName, arg1, arg2, arg3, arg4, arg5) {
9639 }
9640 }
9641
9642 +var isProfiling = false;
9643 +var flushHistory = [];
9644 +var currentFlushNesting = 0;
9645 +var currentFlushMeasurements = null;
9646 +var currentFlushStartTime = null;
9647 +var currentTimerDebugID = null;
9648 +var currentTimerStartTime = null;
9649 +var currentTimerType = null;
9650 +
9651 +function clearHistory() {
9652 + ReactComponentTreeDevtool.purgeUnmountedComponents();
9653 + ReactNativeOperationHistoryDevtool.clearHistory();
9654 +}
9655 +
9656 +function getTreeSnapshot(registeredIDs) {
9657 + return registeredIDs.reduce(function (tree, id) {
9658 + var ownerID = ReactComponentTreeDevtool.getOwnerID(id);
9659 + var parentID = ReactComponentTreeDevtool.getParentID(id);
9660 + tree[id] = {
9661 + displayName: ReactComponentTreeDevtool.getDisplayName(id),
9662 + text: ReactComponentTreeDevtool.getText(id),
9663 + updateCount: ReactComponentTreeDevtool.getUpdateCount(id),
9664 + childIDs: ReactComponentTreeDevtool.getChildIDs(id),
9665 + // Text nodes don't have owners but this is close enough.
9666 + ownerID: ownerID || ReactComponentTreeDevtool.getOwnerID(parentID),
9667 + parentID: parentID
9668 + };
9669 + return tree;
9670 + }, {});
9671 +}
9672 +
9673 +function resetMeasurements() {
9674 + if ("development" !== 'production') {
9675 + var previousStartTime = currentFlushStartTime;
9676 + var previousMeasurements = currentFlushMeasurements || [];
9677 + var previousOperations = ReactNativeOperationHistoryDevtool.getHistory();
9678 +
9679 + if (!isProfiling || currentFlushNesting === 0) {
9680 + currentFlushStartTime = null;
9681 + currentFlushMeasurements = null;
9682 + clearHistory();
9683 + return;
9684 + }
9685 +
9686 + if (previousMeasurements.length || previousOperations.length) {
9687 + var registeredIDs = ReactComponentTreeDevtool.getRegisteredIDs();
9688 + flushHistory.push({
9689 + duration: performanceNow() - previousStartTime,
9690 + measurements: previousMeasurements || [],
9691 + operations: previousOperations || [],
9692 + treeSnapshot: getTreeSnapshot(registeredIDs)
9693 + });
9694 + }
9695 +
9696 + clearHistory();
9697 + currentFlushStartTime = performanceNow();
9698 + currentFlushMeasurements = [];
9699 + }
9700 +}
9701 +
9702 +function checkDebugID(debugID) {
9703 + "development" !== 'production' ? warning(debugID, 'ReactDebugTool: debugID may not be empty.') : void 0;
9704 +}
9705 +
9706 var ReactDebugTool = {
9707 addDevtool: function (devtool) {
9708 eventHandlers.push(devtool);
@@ -9279,33 +9715,145 @@ var ReactDebugTool = {
9715 }
9716 }
9717 },
9718 + beginProfiling: function () {
9719 + if ("development" !== 'production') {
9720 + if (isProfiling) {
9721 + return;
9722 + }
9723 +
9724 + isProfiling = true;
9725 + flushHistory.length = 0;
9726 + resetMeasurements();
9727 + }
9728 + },
9729 + endProfiling: function () {
9730 + if ("development" !== 'production') {
9731 + if (!isProfiling) {
9732 + return;
9733 + }
9734 +
9735 + isProfiling = false;
9736 + resetMeasurements();
9737 + }
9738 + },
9739 + getFlushHistory: function () {
9740 + if ("development" !== 'production') {
9741 + return flushHistory;
9742 + }
9743 + },
9744 + onBeginFlush: function () {
9745 + if ("development" !== 'production') {
9746 + currentFlushNesting++;
9747 + resetMeasurements();
9748 + }
9749 + emitEvent('onBeginFlush');
9750 + },
9751 + onEndFlush: function () {
9752 + if ("development" !== 'production') {
9753 + resetMeasurements();
9754 + currentFlushNesting--;
9755 + }
9756 + emitEvent('onEndFlush');
9757 + },
9758 + onBeginLifeCycleTimer: function (debugID, timerType) {
9759 + checkDebugID(debugID);
9760 + emitEvent('onBeginLifeCycleTimer', debugID, timerType);
9761 + if ("development" !== 'production') {
9762 + if (isProfiling && currentFlushNesting > 0) {
9763 + "development" !== 'production' ? warning(!currentTimerType, 'There is an internal error in the React performance measurement code. ' + 'Did not expect %s timer to start while %s timer is still in ' + 'progress for %s instance.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0;
9764 + currentTimerStartTime = performanceNow();
9765 + currentTimerDebugID = debugID;
9766 + currentTimerType = timerType;
9767 + }
9768 + }
9769 + },
9770 + onEndLifeCycleTimer: function (debugID, timerType) {
9771 + checkDebugID(debugID);
9772 + if ("development" !== 'production') {
9773 + if (isProfiling && currentFlushNesting > 0) {
9774 + "development" !== 'production' ? warning(currentTimerType === timerType, 'There is an internal error in the React performance measurement code. ' + 'We did not expect %s timer to stop while %s timer is still in ' + 'progress for %s instance. Please report this as a bug in React.', timerType, currentTimerType || 'no', debugID === currentTimerDebugID ? 'the same' : 'another') : void 0;
9775 + currentFlushMeasurements.push({
9776 + timerType: timerType,
9777 + instanceID: debugID,
9778 + duration: performanceNow() - currentTimerStartTime
9779 + });
9780 + currentTimerStartTime = null;
9781 + currentTimerDebugID = null;
9782 + currentTimerType = null;
9783 + }
9784 + }
9785 + emitEvent('onEndLifeCycleTimer', debugID, timerType);
9786 + },
9787 + onBeginReconcilerTimer: function (debugID, timerType) {
9788 + checkDebugID(debugID);
9789 + emitEvent('onBeginReconcilerTimer', debugID, timerType);
9790 + },
9791 + onEndReconcilerTimer: function (debugID, timerType) {
9792 + checkDebugID(debugID);
9793 + emitEvent('onEndReconcilerTimer', debugID, timerType);
9794 + },
9795 onBeginProcessingChildContext: function () {
9796 emitEvent('onBeginProcessingChildContext');
9797 },
9798 onEndProcessingChildContext: function () {
9799 emitEvent('onEndProcessingChildContext');
9800 },
9801 + onNativeOperation: function (debugID, type, payload) {
9802 + checkDebugID(debugID);
9803 + emitEvent('onNativeOperation', debugID, type, payload);
9804 + },
9805 onSetState: function () {
9806 emitEvent('onSetState');
9807 },
9291 - onMountRootComponent: function (internalInstance) {
9292 - emitEvent('onMountRootComponent', internalInstance);
9808 + onSetDisplayName: function (debugID, displayName) {
9809 + checkDebugID(debugID);
9810 + emitEvent('onSetDisplayName', debugID, displayName);
9811 + },
9812 + onSetChildren: function (debugID, childDebugIDs) {
9813 + checkDebugID(debugID);
9814 + emitEvent('onSetChildren', debugID, childDebugIDs);
9815 + },
9816 + onSetOwner: function (debugID, ownerDebugID) {
9817 + checkDebugID(debugID);
9818 + emitEvent('onSetOwner', debugID, ownerDebugID);
9819 + },
9820 + onSetText: function (debugID, text) {
9821 + checkDebugID(debugID);
9822 + emitEvent('onSetText', debugID, text);
9823 + },
9824 + onMountRootComponent: function (debugID) {
9825 + checkDebugID(debugID);
9826 + emitEvent('onMountRootComponent', debugID);
9827 },
9294 - onMountComponent: function (internalInstance) {
9295 - emitEvent('onMountComponent', internalInstance);
9828 + onMountComponent: function (debugID) {
9829 + checkDebugID(debugID);
9830 + emitEvent('onMountComponent', debugID);
9831 },
9297 - onUpdateComponent: function (internalInstance) {
9298 - emitEvent('onUpdateComponent', internalInstance);
9832 + onUpdateComponent: function (debugID) {
9833 + checkDebugID(debugID);
9834 + emitEvent('onUpdateComponent', debugID);
9835 },
9300 - onUnmountComponent: function (internalInstance) {
9301 - emitEvent('onUnmountComponent', internalInstance);
9836 + onUnmountComponent: function (debugID) {
9837 + checkDebugID(debugID);
9838 + emitEvent('onUnmountComponent', debugID);
9839 }
9840 };
9841
9305 -ReactDebugTool.addDevtool(ReactInvalidSetStateWarningDevTool);
9842 +if ("development" !== 'production') {
9843 + var ReactInvalidSetStateWarningDevTool = _dereq_(72);
9844 + var ReactNativeOperationHistoryDevtool = _dereq_(78);
9845 + var ReactComponentTreeDevtool = _dereq_(34);
9846 + ReactDebugTool.addDevtool(ReactInvalidSetStateWarningDevTool);
9847 + ReactDebugTool.addDevtool(ReactComponentTreeDevtool);
9848 + ReactDebugTool.addDevtool(ReactNativeOperationHistoryDevtool);
9849 + var url = ExecutionEnvironment.canUseDOM && window.location.href || '';
9850 + if (/[?&]react_perf\b/.test(url)) {
9851 + ReactDebugTool.beginProfiling();
9852 + }
9853 +}
9854
9855 module.exports = ReactDebugTool;
9308 -},{"168":168,"73":73}],58:[function(_dereq_,module,exports){
9856 +},{"143":143,"165":165,"167":167,"34":34,"72":72,"78":78}],59:[function(_dereq_,module,exports){
9857 /**
9858 * Copyright 2013-present, Facebook, Inc.
9859 * All rights reserved.
@@ -9319,12 +9867,12 @@ module.exports = ReactDebugTool;
9867
9868 'use strict';
9869
9322 -var _assign = _dereq_(169);
9870 +var _assign = _dereq_(168);
9871
9324 -var ReactUpdates = _dereq_(94);
9325 -var Transaction = _dereq_(112);
9872 +var ReactUpdates = _dereq_(93);
9873 +var Transaction = _dereq_(111);
9874
9327 -var emptyFunction = _dereq_(150);
9875 +var emptyFunction = _dereq_(149);
9876
9877 var RESET_BATCHED_UPDATES = {
9878 initialize: emptyFunction,
@@ -9374,7 +9922,7 @@ var ReactDefaultBatchingStrategy = {
9922 };
9923
9924 module.exports = ReactDefaultBatchingStrategy;
9377 -},{"112":112,"150":150,"169":169,"94":94}],59:[function(_dereq_,module,exports){
9925 +},{"111":111,"149":149,"168":168,"93":93}],60:[function(_dereq_,module,exports){
9926 /**
9927 * Copyright 2013-present, Facebook, Inc.
9928 * All rights reserved.
@@ -9392,21 +9940,20 @@ var BeforeInputEventPlugin = _dereq_(2);
9940 var ChangeEventPlugin = _dereq_(6);
9941 var DefaultEventPluginOrder = _dereq_(13);
9942 var EnterLeaveEventPlugin = _dereq_(15);
9395 -var ExecutionEnvironment = _dereq_(144);
9943 var HTMLDOMPropertyConfig = _dereq_(22);
9944 var ReactComponentBrowserEnvironment = _dereq_(32);
9398 -var ReactDOMComponent = _dereq_(38);
9399 -var ReactDOMComponentTree = _dereq_(40);
9400 -var ReactDOMEmptyComponent = _dereq_(43);
9401 -var ReactDOMTreeTraversal = _dereq_(55);
9402 -var ReactDOMTextComponent = _dereq_(53);
9403 -var ReactDefaultBatchingStrategy = _dereq_(58);
9404 -var ReactEventListener = _dereq_(67);
9405 -var ReactInjection = _dereq_(69);
9406 -var ReactReconcileTransaction = _dereq_(86);
9407 -var SVGDOMPropertyConfig = _dereq_(96);
9408 -var SelectEventPlugin = _dereq_(97);
9409 -var SimpleEventPlugin = _dereq_(98);
9945 +var ReactDOMComponent = _dereq_(39);
9946 +var ReactDOMComponentTree = _dereq_(41);
9947 +var ReactDOMEmptyComponent = _dereq_(44);
9948 +var ReactDOMTreeTraversal = _dereq_(56);
9949 +var ReactDOMTextComponent = _dereq_(54);
9950 +var ReactDefaultBatchingStrategy = _dereq_(59);
9951 +var ReactEventListener = _dereq_(66);
9952 +var ReactInjection = _dereq_(68);
9953 +var ReactReconcileTransaction = _dereq_(85);
9954 +var SVGDOMPropertyConfig = _dereq_(95);
9955 +var SelectEventPlugin = _dereq_(96);
9956 +var SimpleEventPlugin = _dereq_(97);
9957
9958 var alreadyInjected = false;
9959
@@ -9417,586 +9964,50 @@ function inject() {
9964 // and not share any injection state. Then this problem will be solved.
9965 return;
9966 }
9420 - alreadyInjected = true;
9421 -
9422 - ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);
9423 -
9424 - /**
9425 - * Inject modules for resolving DOM hierarchy and plugin ordering.
9426 - */
9427 - ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);
9428 - ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);
9429 - ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);
9430 -
9431 - /**
9432 - * Some important event plugins included by default (without having to require
9433 - * them).
9434 - */
9435 - ReactInjection.EventPluginHub.injectEventPluginsByName({
9436 - SimpleEventPlugin: SimpleEventPlugin,
9437 - EnterLeaveEventPlugin: EnterLeaveEventPlugin,
9438 - ChangeEventPlugin: ChangeEventPlugin,
9439 - SelectEventPlugin: SelectEventPlugin,
9440 - BeforeInputEventPlugin: BeforeInputEventPlugin
9441 - });
9442 -
9443 - ReactInjection.NativeComponent.injectGenericComponentClass(ReactDOMComponent);
9444 -
9445 - ReactInjection.NativeComponent.injectTextComponentClass(ReactDOMTextComponent);
9446 -
9447 - ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);
9448 - ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);
9449 -
9450 - ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {
9451 - return new ReactDOMEmptyComponent(instantiate);
9452 - });
9453 -
9454 - ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);
9455 - ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);
9456 -
9457 - ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);
9458 -
9459 - if ("development" !== 'production') {
9460 - var url = ExecutionEnvironment.canUseDOM && window.location.href || '';
9461 - if (/[?&]react_perf\b/.test(url)) {
9462 - var ReactDefaultPerf = _dereq_(60);
9463 - ReactDefaultPerf.start();
9464 - }
9465 - }
9466 -}
9467 -
9468 -module.exports = {
9469 - inject: inject
9470 -};
9471 -},{"13":13,"144":144,"15":15,"2":2,"22":22,"32":32,"38":38,"40":40,"43":43,"53":53,"55":55,"58":58,"6":6,"60":60,"67":67,"69":69,"86":86,"96":96,"97":97,"98":98}],60:[function(_dereq_,module,exports){
9472 -/**
9473 - * Copyright 2013-present, Facebook, Inc.
9474 - * All rights reserved.
9475 - *
9476 - * This source code is licensed under the BSD-style license found in the
9477 - * LICENSE file in the root directory of this source tree. An additional grant
9478 - * of patent rights can be found in the PATENTS file in the same directory.
9479 - *
9480 - * @providesModule ReactDefaultPerf
9481 - */
9482 -
9483 -'use strict';
9484 -
9485 -var DOMProperty = _dereq_(10);
9486 -var ReactDOMComponentTree = _dereq_(40);
9487 -var ReactDefaultPerfAnalysis = _dereq_(61);
9488 -var ReactMount = _dereq_(75);
9489 -var ReactPerf = _dereq_(82);
9490 -
9491 -var performanceNow = _dereq_(166);
9492 -var warning = _dereq_(168);
9493 -
9494 -function roundFloat(val) {
9495 - return Math.floor(val * 100) / 100;
9496 -}
9497 -
9498 -function addValue(obj, key, val) {
9499 - obj[key] = (obj[key] || 0) + val;
9500 -}
9501 -
9502 -// Composite/text components don't have any built-in ID: we have to make our own
9503 -var compositeIDMap;
9504 -var compositeIDCounter = 17000;
9505 -function getIDOfComposite(inst) {
9506 - if (!compositeIDMap) {
9507 - compositeIDMap = new WeakMap();
9508 - }
9509 - if (compositeIDMap.has(inst)) {
9510 - return compositeIDMap.get(inst);
9511 - } else {
9512 - var id = compositeIDCounter++;
9513 - compositeIDMap.set(inst, id);
9514 - return id;
9515 - }
9516 -}
9517 -
9518 -function getID(inst) {
9519 - if (inst.hasOwnProperty('_rootNodeID')) {
9520 - return inst._rootNodeID;
9521 - } else {
9522 - return getIDOfComposite(inst);
9523 - }
9524 -}
9525 -
9526 -function stripComplexValues(key, value) {
9527 - if (typeof value !== 'object' || Array.isArray(value) || value == null) {
9528 - return value;
9529 - }
9530 - var prototype = Object.getPrototypeOf(value);
9531 - if (!prototype || prototype === Object.prototype) {
9532 - return value;
9533 - }
9534 - return '<not serializable>';
9535 -}
9536 -
9537 -// This implementation of ReactPerf is going away some time mid 15.x.
9538 -// While we plan to keep most of the API, the actual format of measurements
9539 -// will change dramatically. To signal this, we wrap them into an opaque-ish
9540 -// object to discourage reaching into it until the API stabilizes.
9541 -function wrapLegacyMeasurements(measurements) {
9542 - return { __unstable_this_format_will_change: measurements };
9543 -}
9544 -function unwrapLegacyMeasurements(measurements) {
9545 - return measurements && measurements.__unstable_this_format_will_change || measurements;
9546 -}
9547 -
9548 -var warnedAboutPrintDOM = false;
9549 -var warnedAboutGetMeasurementsSummaryMap = false;
9550 -
9551 -var ReactDefaultPerf = {
9552 - _allMeasurements: [], // last item in the list is the current one
9553 - _mountStack: [0],
9554 - _compositeStack: [],
9555 - _injected: false,
9556 -
9557 - start: function () {
9558 - if (!ReactDefaultPerf._injected) {
9559 - ReactPerf.injection.injectMeasure(ReactDefaultPerf.measure);
9560 - }
9561 -
9562 - ReactDefaultPerf._allMeasurements.length = 0;
9563 - ReactPerf.enableMeasure = true;
9564 - },
9565 -
9566 - stop: function () {
9567 - ReactPerf.enableMeasure = false;
9568 - },
9569 -
9570 - getLastMeasurements: function () {
9571 - return wrapLegacyMeasurements(ReactDefaultPerf._allMeasurements);
9572 - },
9573 -
9574 - printExclusive: function (measurements) {
9575 - measurements = unwrapLegacyMeasurements(measurements || ReactDefaultPerf._allMeasurements);
9576 - var summary = ReactDefaultPerfAnalysis.getExclusiveSummary(measurements);
9577 - console.table(summary.map(function (item) {
9578 - return {
9579 - 'Component class name': item.componentName,
9580 - 'Total inclusive time (ms)': roundFloat(item.inclusive),
9581 - 'Exclusive mount time (ms)': roundFloat(item.exclusive),
9582 - 'Exclusive render time (ms)': roundFloat(item.render),
9583 - 'Mount time per instance (ms)': roundFloat(item.exclusive / item.count),
9584 - 'Render time per instance (ms)': roundFloat(item.render / item.count),
9585 - 'Instances': item.count
9586 - };
9587 - }));
9588 - // TODO: ReactDefaultPerfAnalysis.getTotalTime() does not return the correct
9589 - // number.
9590 - },
9591 -
9592 - printInclusive: function (measurements) {
9593 - measurements = unwrapLegacyMeasurements(measurements || ReactDefaultPerf._allMeasurements);
9594 - var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(measurements);
9595 - console.table(summary.map(function (item) {
9596 - return {
9597 - 'Owner > component': item.componentName,
9598 - 'Inclusive time (ms)': roundFloat(item.time),
9599 - 'Instances': item.count
9600 - };
9601 - }));
9602 - console.log('Total time:', ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms');
9603 - },
9604 -
9605 - getMeasurementsSummaryMap: function (measurements) {
9606 - "development" !== 'production' ? warning(warnedAboutGetMeasurementsSummaryMap, '`ReactPerf.getMeasurementsSummaryMap(...)` is deprecated. Use ' + '`ReactPerf.getWasted(...)` instead.') : void 0;
9607 - warnedAboutGetMeasurementsSummaryMap = true;
9608 - return ReactDefaultPerf.getWasted(measurements);
9609 - },
9610 -
9611 - getWasted: function (measurements) {
9612 - measurements = unwrapLegacyMeasurements(measurements);
9613 - var summary = ReactDefaultPerfAnalysis.getInclusiveSummary(measurements, true);
9614 - return summary.map(function (item) {
9615 - return {
9616 - 'Owner > component': item.componentName,
9617 - 'Wasted time (ms)': item.time,
9618 - 'Instances': item.count
9619 - };
9620 - });
9621 - },
9622 -
9623 - printWasted: function (measurements) {
9624 - measurements = unwrapLegacyMeasurements(measurements || ReactDefaultPerf._allMeasurements);
9625 - console.table(ReactDefaultPerf.getWasted(measurements));
9626 - console.log('Total time:', ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms');
9627 - },
9628 -
9629 - printDOM: function (measurements) {
9630 - "development" !== 'production' ? warning(warnedAboutPrintDOM, '`ReactPerf.printDOM(...)` is deprecated. Use ' + '`ReactPerf.printOperations(...)` instead.') : void 0;
9631 - warnedAboutPrintDOM = true;
9632 - return ReactDefaultPerf.printOperations(measurements);
9633 - },
9634 -
9635 - printOperations: function (measurements) {
9636 - measurements = unwrapLegacyMeasurements(measurements || ReactDefaultPerf._allMeasurements);
9637 - var summary = ReactDefaultPerfAnalysis.getDOMSummary(measurements);
9638 - console.table(summary.map(function (item) {
9639 - var result = {};
9640 - result[DOMProperty.ID_ATTRIBUTE_NAME] = item.id;
9641 - result.type = item.type;
9642 - result.args = JSON.stringify(item.args, stripComplexValues);
9643 - return result;
9644 - }));
9645 - console.log('Total time:', ReactDefaultPerfAnalysis.getTotalTime(measurements).toFixed(2) + ' ms');
9646 - },
9647 -
9648 - _recordWrite: function (id, fnName, totalTime, args) {
9649 - // TODO: totalTime isn't that useful since it doesn't count paints/reflows
9650 - var entry = ReactDefaultPerf._allMeasurements[ReactDefaultPerf._allMeasurements.length - 1];
9651 - var writes = entry.writes;
9652 - writes[id] = writes[id] || [];
9653 - writes[id].push({
9654 - type: fnName,
9655 - time: totalTime,
9656 - args: args
9657 - });
9658 - },
9659 -
9660 - measure: function (moduleName, fnName, func) {
9661 - return function () {
9662 - for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
9663 - args[_key] = arguments[_key];
9664 - }
9665 -
9666 - var totalTime;
9667 - var rv;
9668 - var start;
9669 -
9670 - var entry = ReactDefaultPerf._allMeasurements[ReactDefaultPerf._allMeasurements.length - 1];
9671 -
9672 - if (fnName === '_renderNewRootComponent' || fnName === 'flushBatchedUpdates') {
9673 - // A "measurement" is a set of metrics recorded for each flush. We want
9674 - // to group the metrics for a given flush together so we can look at the
9675 - // components that rendered and the DOM operations that actually
9676 - // happened to determine the amount of "wasted work" performed.
9677 - ReactDefaultPerf._allMeasurements.push(entry = {
9678 - exclusive: {},
9679 - inclusive: {},
9680 - render: {},
9681 - counts: {},
9682 - writes: {},
9683 - displayNames: {},
9684 - hierarchy: {},
9685 - totalTime: 0,
9686 - created: {}
9687 - });
9688 - start = performanceNow();
9689 - rv = func.apply(this, args);
9690 - entry.totalTime = performanceNow() - start;
9691 - return rv;
9692 - } else if (fnName === '_mountImageIntoNode' || moduleName === 'ReactDOMIDOperations' || moduleName === 'CSSPropertyOperations' || moduleName === 'DOMChildrenOperations' || moduleName === 'DOMPropertyOperations' || moduleName === 'ReactComponentBrowserEnvironment') {
9693 - start = performanceNow();
9694 - rv = func.apply(this, args);
9695 - totalTime = performanceNow() - start;
9696 -
9697 - if (fnName === '_mountImageIntoNode') {
9698 - ReactDefaultPerf._recordWrite('', fnName, totalTime, args[0]);
9699 - } else if (fnName === 'dangerouslyProcessChildrenUpdates') {
9700 - // special format
9701 - args[1].forEach(function (update) {
9702 - var writeArgs = {};
9703 - if (update.fromIndex !== null) {
9704 - writeArgs.fromIndex = update.fromIndex;
9705 - }
9706 - if (update.toIndex !== null) {
9707 - writeArgs.toIndex = update.toIndex;
9708 - }
9709 - if (update.content !== null) {
9710 - writeArgs.content = update.content;
9711 - }
9712 - ReactDefaultPerf._recordWrite(args[0]._rootNodeID, update.type, totalTime, writeArgs);
9713 - });
9714 - } else {
9715 - // basic format
9716 - var id = args[0];
9717 - if (moduleName === 'EventPluginHub') {
9718 - id = id._rootNodeID;
9719 - } else if (fnName === 'replaceNodeWithMarkup') {
9720 - // Old node is already unmounted; can't get its instance
9721 - id = ReactDOMComponentTree.getInstanceFromNode(args[1].node)._rootNodeID;
9722 - } else if (fnName === 'replaceDelimitedText') {
9723 - id = getID(ReactDOMComponentTree.getInstanceFromNode(args[0]));
9724 - } else if (typeof id === 'object') {
9725 - id = getID(ReactDOMComponentTree.getInstanceFromNode(args[0]));
9726 - }
9727 - ReactDefaultPerf._recordWrite(id, fnName, totalTime, Array.prototype.slice.call(args, 1));
9728 - }
9729 - return rv;
9730 - } else if (moduleName === 'ReactCompositeComponent' && (fnName === 'mountComponent' || fnName === 'updateComponent' || // TODO: receiveComponent()?
9731 - fnName === '_renderValidatedComponent')) {
9732 -
9733 - if (this._currentElement.type === ReactMount.TopLevelWrapper) {
9734 - return func.apply(this, args);
9735 - }
9736 -
9737 - var rootNodeID = getIDOfComposite(this);
9738 - var isRender = fnName === '_renderValidatedComponent';
9739 - var isMount = fnName === 'mountComponent';
9740 -
9741 - var mountStack = ReactDefaultPerf._mountStack;
9742 -
9743 - if (isRender) {
9744 - addValue(entry.counts, rootNodeID, 1);
9745 - } else if (isMount) {
9746 - entry.created[rootNodeID] = true;
9747 - mountStack.push(0);
9748 - }
9749 -
9750 - ReactDefaultPerf._compositeStack.push(rootNodeID);
9751 -
9752 - start = performanceNow();
9753 - rv = func.apply(this, args);
9754 - totalTime = performanceNow() - start;
9755 -
9756 - ReactDefaultPerf._compositeStack.pop();
9757 -
9758 - if (isRender) {
9759 - addValue(entry.render, rootNodeID, totalTime);
9760 - } else if (isMount) {
9761 - var subMountTime = mountStack.pop();
9762 - mountStack[mountStack.length - 1] += totalTime;
9763 - addValue(entry.exclusive, rootNodeID, totalTime - subMountTime);
9764 - addValue(entry.inclusive, rootNodeID, totalTime);
9765 - } else {
9766 - addValue(entry.inclusive, rootNodeID, totalTime);
9767 - }
9768 -
9769 - entry.displayNames[rootNodeID] = {
9770 - current: this.getName(),
9771 - owner: this._currentElement._owner ? this._currentElement._owner.getName() : '<root>'
9772 - };
9773 -
9774 - return rv;
9775 - } else if ((moduleName === 'ReactDOMComponent' || moduleName === 'ReactDOMTextComponent') && (fnName === 'mountComponent' || fnName === 'receiveComponent')) {
9776 -
9777 - rv = func.apply(this, args);
9778 - entry.hierarchy[getID(this)] = ReactDefaultPerf._compositeStack.slice();
9779 - return rv;
9780 - } else {
9781 - return func.apply(this, args);
9782 - }
9783 - };
9784 - }
9785 -};
9786 -
9787 -module.exports = ReactDefaultPerf;
9788 -},{"10":10,"166":166,"168":168,"40":40,"61":61,"75":75,"82":82}],61:[function(_dereq_,module,exports){
9789 -/**
9790 - * Copyright 2013-present, Facebook, Inc.
9791 - * All rights reserved.
9792 - *
9793 - * This source code is licensed under the BSD-style license found in the
9794 - * LICENSE file in the root directory of this source tree. An additional grant
9795 - * of patent rights can be found in the PATENTS file in the same directory.
9796 - *
9797 - * @providesModule ReactDefaultPerfAnalysis
9798 - */
9799 -
9800 -'use strict';
9801 -
9802 -// Don't try to save users less than 1.2ms (a number I made up)
9803 -
9804 -var _assign = _dereq_(169);
9805 -
9806 -var DONT_CARE_THRESHOLD = 1.2;
9807 -var DOM_OPERATION_TYPES = {
9808 - '_mountImageIntoNode': 'set innerHTML',
9809 - INSERT_MARKUP: 'set innerHTML',
9810 - MOVE_EXISTING: 'move',
9811 - REMOVE_NODE: 'remove',
9812 - SET_MARKUP: 'set innerHTML',
9813 - TEXT_CONTENT: 'set textContent',
9814 - 'setValueForProperty': 'update attribute',
9815 - 'setValueForAttribute': 'update attribute',
9816 - 'deleteValueForProperty': 'remove attribute',
9817 - 'setValueForStyles': 'update styles',
9818 - 'replaceNodeWithMarkup': 'replace',
9819 - 'replaceDelimitedText': 'replace'
9820 -};
9821 -
9822 -function getTotalTime(measurements) {
9823 - // TODO: return number of DOM ops? could be misleading.
9824 - // TODO: measure dropped frames after reconcile?
9825 - // TODO: log total time of each reconcile and the top-level component
9826 - // class that triggered it.
9827 - var totalTime = 0;
9828 - for (var i = 0; i < measurements.length; i++) {
9829 - var measurement = measurements[i];
9830 - totalTime += measurement.totalTime;
9831 - }
9832 - return totalTime;
9833 -}
9834 -
9835 -function getDOMSummary(measurements) {
9836 - var items = [];
9837 - measurements.forEach(function (measurement) {
9838 - Object.keys(measurement.writes).forEach(function (id) {
9839 - measurement.writes[id].forEach(function (write) {
9840 - items.push({
9841 - id: id,
9842 - type: DOM_OPERATION_TYPES[write.type] || write.type,
9843 - args: write.args
9844 - });
9845 - });
9846 - });
9847 - });
9848 - return items;
9849 -}
9850 -
9851 -function getExclusiveSummary(measurements) {
9852 - var candidates = {};
9853 - var displayName;
9854 -
9855 - for (var i = 0; i < measurements.length; i++) {
9856 - var measurement = measurements[i];
9857 - var allIDs = _assign({}, measurement.exclusive, measurement.inclusive);
9858 -
9859 - for (var id in allIDs) {
9860 - displayName = measurement.displayNames[id].current;
9861 -
9862 - candidates[displayName] = candidates[displayName] || {
9863 - componentName: displayName,
9864 - inclusive: 0,
9865 - exclusive: 0,
9866 - render: 0,
9867 - count: 0
9868 - };
9869 - if (measurement.render[id]) {
9870 - candidates[displayName].render += measurement.render[id];
9871 - }
9872 - if (measurement.exclusive[id]) {
9873 - candidates[displayName].exclusive += measurement.exclusive[id];
9874 - }
9875 - if (measurement.inclusive[id]) {
9876 - candidates[displayName].inclusive += measurement.inclusive[id];
9877 - }
9878 - if (measurement.counts[id]) {
9879 - candidates[displayName].count += measurement.counts[id];
9880 - }
9881 - }
9882 - }
9883 -
9884 - // Now make a sorted array with the results.
9885 - var arr = [];
9886 - for (displayName in candidates) {
9887 - if (candidates[displayName].exclusive >= DONT_CARE_THRESHOLD) {
9888 - arr.push(candidates[displayName]);
9889 - }
9890 - }
9891 -
9892 - arr.sort(function (a, b) {
9893 - return b.exclusive - a.exclusive;
9894 - });
9895 -
9896 - return arr;
9897 -}
9898 -
9899 -function getInclusiveSummary(measurements, onlyClean) {
9900 - var candidates = {};
9901 - var inclusiveKey;
9902 -
9903 - for (var i = 0; i < measurements.length; i++) {
9904 - var measurement = measurements[i];
9905 - var allIDs = _assign({}, measurement.exclusive, measurement.inclusive);
9906 - var cleanComponents;
9907 -
9908 - if (onlyClean) {
9909 - cleanComponents = getUnchangedComponents(measurement);
9910 - }
9967 + alreadyInjected = true;
9968
9912 - for (var id in allIDs) {
9913 - if (onlyClean && !cleanComponents[id]) {
9914 - continue;
9915 - }
9969 + ReactInjection.EventEmitter.injectReactEventListener(ReactEventListener);
9970
9917 - var displayName = measurement.displayNames[id];
9971 + /**
9972 + * Inject modules for resolving DOM hierarchy and plugin ordering.
9973 + */
9974 + ReactInjection.EventPluginHub.injectEventPluginOrder(DefaultEventPluginOrder);
9975 + ReactInjection.EventPluginUtils.injectComponentTree(ReactDOMComponentTree);
9976 + ReactInjection.EventPluginUtils.injectTreeTraversal(ReactDOMTreeTraversal);
9977
9919 - // Inclusive time is not useful for many components without knowing where
9920 - // they are instantiated. So we aggregate inclusive time with both the
9921 - // owner and current displayName as the key.
9922 - inclusiveKey = displayName.owner + ' > ' + displayName.current;
9978 + /**
9979 + * Some important event plugins included by default (without having to require
9980 + * them).
9981 + */
9982 + ReactInjection.EventPluginHub.injectEventPluginsByName({
9983 + SimpleEventPlugin: SimpleEventPlugin,
9984 + EnterLeaveEventPlugin: EnterLeaveEventPlugin,
9985 + ChangeEventPlugin: ChangeEventPlugin,
9986 + SelectEventPlugin: SelectEventPlugin,
9987 + BeforeInputEventPlugin: BeforeInputEventPlugin
9988 + });
9989
9924 - candidates[inclusiveKey] = candidates[inclusiveKey] || {
9925 - componentName: inclusiveKey,
9926 - time: 0,
9927 - count: 0
9928 - };
9990 + ReactInjection.NativeComponent.injectGenericComponentClass(ReactDOMComponent);
9991
9930 - if (measurement.inclusive[id]) {
9931 - candidates[inclusiveKey].time += measurement.inclusive[id];
9932 - }
9933 - if (measurement.counts[id]) {
9934 - candidates[inclusiveKey].count += measurement.counts[id];
9935 - }
9936 - }
9937 - }
9992 + ReactInjection.NativeComponent.injectTextComponentClass(ReactDOMTextComponent);
9993
9939 - // Now make a sorted array with the results.
9940 - var arr = [];
9941 - for (inclusiveKey in candidates) {
9942 - if (candidates[inclusiveKey].time >= DONT_CARE_THRESHOLD) {
9943 - arr.push(candidates[inclusiveKey]);
9944 - }
9945 - }
9994 + ReactInjection.DOMProperty.injectDOMPropertyConfig(HTMLDOMPropertyConfig);
9995 + ReactInjection.DOMProperty.injectDOMPropertyConfig(SVGDOMPropertyConfig);
9996
9947 - arr.sort(function (a, b) {
9948 - return b.time - a.time;
9997 + ReactInjection.EmptyComponent.injectEmptyComponentFactory(function (instantiate) {
9998 + return new ReactDOMEmptyComponent(instantiate);
9999 });
10000
9951 - return arr;
9952 -}
9953 -
9954 -function getUnchangedComponents(measurement) {
9955 - // For a given reconcile, look at which components did not actually
9956 - // render anything to the DOM and return a mapping of their ID to
9957 - // the amount of time it took to render the entire subtree.
9958 - var cleanComponents = {};
9959 - var writes = measurement.writes;
9960 - var hierarchy = measurement.hierarchy;
9961 - var dirtyComposites = {};
9962 - Object.keys(writes).forEach(function (id) {
9963 - writes[id].forEach(function (write) {
9964 - // Root mounting (innerHTML set) is recorded with an ID of ''
9965 - if (id !== '' && hierarchy.hasOwnProperty(id)) {
9966 - hierarchy[id].forEach(function (c) {
9967 - return dirtyComposites[c] = true;
9968 - });
9969 - }
9970 - });
9971 - });
9972 - var allIDs = _assign({}, measurement.exclusive, measurement.inclusive);
10001 + ReactInjection.Updates.injectReconcileTransaction(ReactReconcileTransaction);
10002 + ReactInjection.Updates.injectBatchingStrategy(ReactDefaultBatchingStrategy);
10003
9974 - for (var id in allIDs) {
9975 - var isDirty = false;
9976 - // See if any of the DOM operations applied to this component's subtree.
9977 - if (dirtyComposites[id]) {
9978 - isDirty = true;
9979 - }
9980 - // check if component newly created
9981 - if (measurement.created[id]) {
9982 - isDirty = true;
9983 - }
9984 - if (!isDirty && measurement.counts[id] > 0) {
9985 - cleanComponents[id] = true;
9986 - }
9987 - }
9988 - return cleanComponents;
10004 + ReactInjection.Component.injectEnvironment(ReactComponentBrowserEnvironment);
10005 }
10006
9991 -var ReactDefaultPerfAnalysis = {
9992 - getExclusiveSummary: getExclusiveSummary,
9993 - getInclusiveSummary: getInclusiveSummary,
9994 - getDOMSummary: getDOMSummary,
9995 - getTotalTime: getTotalTime
10007 +module.exports = {
10008 + inject: inject
10009 };
9997 -
9998 -module.exports = ReactDefaultPerfAnalysis;
9999 -},{"169":169}],62:[function(_dereq_,module,exports){
10010 +},{"13":13,"15":15,"2":2,"22":22,"32":32,"39":39,"41":41,"44":44,"54":54,"56":56,"59":59,"6":6,"66":66,"68":68,"85":85,"95":95,"96":96,"97":97}],61:[function(_dereq_,module,exports){
10011 /**
10012 * Copyright 2014-present, Facebook, Inc.
10013 * All rights reserved.
@@ -10010,12 +10021,12 @@ module.exports = ReactDefaultPerfAnalysis;
10021
10022 'use strict';
10023
10013 -var _assign = _dereq_(169);
10024 +var _assign = _dereq_(168);
10025
10015 -var ReactCurrentOwner = _dereq_(35);
10026 +var ReactCurrentOwner = _dereq_(36);
10027
10017 -var warning = _dereq_(168);
10018 -var canDefineProperty = _dereq_(116);
10028 +var warning = _dereq_(167);
10029 +var canDefineProperty = _dereq_(115);
10030
10031 // The Symbol used to tag the ReactElement type. If there is no native Symbol
10032 // nor polyfill, then a plain number is used for performance.
@@ -10112,6 +10123,10 @@ var ReactElement = function (type, key, ref, self, source, owner, props) {
10123 return element;
10124 };
10125
10126 +/**
10127 + * Create and return a new ReactElement of the given type.
10128 + * See https://facebook.github.io/react/docs/top-level-api.html#react.createelement
10129 + */
10130 ReactElement.createElement = function (type, config, children) {
10131 var propName;
10132
@@ -10125,6 +10140,11 @@ ReactElement.createElement = function (type, config, children) {
10140
10141 if (config != null) {
10142 if ("development" !== 'production') {
10143 + "development" !== 'production' ? warning(
10144 + /* eslint-disable no-proto */
10145 + config.__proto__ == null || config.__proto__ === Object.prototype,
10146 + /* eslint-enable no-proto */
10147 + 'React.createElement(...): Expected props argument to be a plain object. ' + 'Properties defined in its prototype chain will be ignored.') : void 0;
10148 ref = !config.hasOwnProperty('ref') || Object.getOwnPropertyDescriptor(config, 'ref').get ? null : config.ref;
10149 key = !config.hasOwnProperty('key') || Object.getOwnPropertyDescriptor(config, 'key').get ? null : '' + config.key;
10150 } else {
@@ -10196,6 +10216,10 @@ ReactElement.createElement = function (type, config, children) {
10216 return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
10217 };
10218
10219 +/**
10220 + * Return a function that produces ReactElements of a given type.
10221 + * See https://facebook.github.io/react/docs/top-level-api.html#react.createfactory
10222 + */
10223 ReactElement.createFactory = function (type) {
10224 var factory = ReactElement.createElement.bind(null, type);
10225 // Expose the type on the factory and the prototype so that it can be
@@ -10213,6 +10237,10 @@ ReactElement.cloneAndReplaceKey = function (oldElement, newKey) {
10237 return newElement;
10238 };
10239
10240 +/**
10241 + * Clone and return a new ReactElement using element as the starting point.
10242 + * See https://facebook.github.io/react/docs/top-level-api.html#react.cloneelement
10243 + */
10244 ReactElement.cloneElement = function (element, config, children) {
10245 var propName;
10246
@@ -10233,6 +10261,13 @@ ReactElement.cloneElement = function (element, config, children) {
10261 var owner = element._owner;
10262
10263 if (config != null) {
10264 + if ("development" !== 'production') {
10265 + "development" !== 'production' ? warning(
10266 + /* eslint-disable no-proto */
10267 + config.__proto__ == null || config.__proto__ === Object.prototype,
10268 + /* eslint-enable no-proto */
10269 + 'React.cloneElement(...): Expected props argument to be a plain object. ' + 'Properties defined in its prototype chain will be ignored.') : void 0;
10270 + }
10271 if (config.ref !== undefined) {
10272 // Silently steal the ref from the parent.
10273 ref = config.ref;
@@ -10275,6 +10310,8 @@ ReactElement.cloneElement = function (element, config, children) {
10310 };
10311
10312 /**
10313 + * Verifies the object is a ReactElement.
10314 + * See https://facebook.github.io/react/docs/top-level-api.html#react.isvalidelement
10315 * @param {?object} object
10316 * @return {boolean} True if `object` is a valid component.
10317 * @final
@@ -10284,7 +10321,7 @@ ReactElement.isValidElement = function (object) {
10321 };
10322
10323 module.exports = ReactElement;
10287 -},{"116":116,"168":168,"169":169,"35":35}],63:[function(_dereq_,module,exports){
10324 +},{"115":115,"167":167,"168":168,"36":36}],62:[function(_dereq_,module,exports){
10325 /**
10326 * Copyright 2014-present, Facebook, Inc.
10327 * All rights reserved.
@@ -10305,15 +10342,15 @@ module.exports = ReactElement;
10342
10343 'use strict';
10344
10308 -var ReactElement = _dereq_(62);
10309 -var ReactPropTypeLocations = _dereq_(84);
10310 -var ReactPropTypeLocationNames = _dereq_(83);
10311 -var ReactCurrentOwner = _dereq_(35);
10345 +var ReactElement = _dereq_(61);
10346 +var ReactPropTypeLocations = _dereq_(83);
10347 +var ReactPropTypeLocationNames = _dereq_(82);
10348 +var ReactCurrentOwner = _dereq_(36);
10349
10313 -var canDefineProperty = _dereq_(116);
10314 -var getIteratorFn = _dereq_(127);
10315 -var invariant = _dereq_(158);
10316 -var warning = _dereq_(168);
10350 +var canDefineProperty = _dereq_(115);
10351 +var getIteratorFn = _dereq_(126);
10352 +var invariant = _dereq_(157);
10353 +var warning = _dereq_(167);
10354
10355 function getDeclarationErrorAddendum() {
10356 if (ReactCurrentOwner.current) {
@@ -10566,7 +10603,7 @@ var ReactElementValidator = {
10603 };
10604
10605 module.exports = ReactElementValidator;
10569 -},{"116":116,"127":127,"158":158,"168":168,"35":35,"62":62,"83":83,"84":84}],64:[function(_dereq_,module,exports){
10606 +},{"115":115,"126":126,"157":157,"167":167,"36":36,"61":61,"82":82,"83":83}],63:[function(_dereq_,module,exports){
10607 /**
10608 * Copyright 2014-present, Facebook, Inc.
10609 * All rights reserved.
@@ -10597,7 +10634,7 @@ var ReactEmptyComponent = {
10634 ReactEmptyComponent.injection = ReactEmptyComponentInjection;
10635
10636 module.exports = ReactEmptyComponent;
10600 -},{}],65:[function(_dereq_,module,exports){
10637 +},{}],64:[function(_dereq_,module,exports){
10638 /**
10639 * Copyright 2013-present, Facebook, Inc.
10640 * All rights reserved.
@@ -10674,7 +10711,7 @@ if ("development" !== 'production') {
10711 }
10712
10713 module.exports = ReactErrorUtils;
10677 -},{}],66:[function(_dereq_,module,exports){
10714 +},{}],65:[function(_dereq_,module,exports){
10715 /**
10716 * Copyright 2013-present, Facebook, Inc.
10717 * All rights reserved.
@@ -10708,7 +10745,7 @@ var ReactEventEmitterMixin = {
10745 };
10746
10747 module.exports = ReactEventEmitterMixin;
10711 -},{"17":17}],67:[function(_dereq_,module,exports){
10748 +},{"17":17}],66:[function(_dereq_,module,exports){
10749 /**
10750 * Copyright 2013-present, Facebook, Inc.
10751 * All rights reserved.
@@ -10722,16 +10759,16 @@ module.exports = ReactEventEmitterMixin;
10759
10760 'use strict';
10761
10725 -var _assign = _dereq_(169);
10762 +var _assign = _dereq_(168);
10763
10727 -var EventListener = _dereq_(143);
10728 -var ExecutionEnvironment = _dereq_(144);
10764 +var EventListener = _dereq_(142);
10765 +var ExecutionEnvironment = _dereq_(143);
10766 var PooledClass = _dereq_(25);
10730 -var ReactDOMComponentTree = _dereq_(40);
10731 -var ReactUpdates = _dereq_(94);
10767 +var ReactDOMComponentTree = _dereq_(41);
10768 +var ReactUpdates = _dereq_(93);
10769
10733 -var getEventTarget = _dereq_(126);
10734 -var getUnboundedScrollPosition = _dereq_(155);
10770 +var getEventTarget = _dereq_(125);
10771 +var getUnboundedScrollPosition = _dereq_(154);
10772
10773 /**
10774 * Find the deepest React component completely containing the root of the
@@ -10866,7 +10903,7 @@ var ReactEventListener = {
10903 };
10904
10905 module.exports = ReactEventListener;
10869 -},{"126":126,"143":143,"144":144,"155":155,"169":169,"25":25,"40":40,"94":94}],68:[function(_dereq_,module,exports){
10906 +},{"125":125,"142":142,"143":143,"154":154,"168":168,"25":25,"41":41,"93":93}],67:[function(_dereq_,module,exports){
10907 /**
10908 * Copyright 2013-present, Facebook, Inc.
10909 * All rights reserved.
@@ -10888,7 +10925,7 @@ var ReactFeatureFlags = {
10925 };
10926
10927 module.exports = ReactFeatureFlags;
10891 -},{}],69:[function(_dereq_,module,exports){
10928 +},{}],68:[function(_dereq_,module,exports){
10929 /**
10930 * Copyright 2013-present, Facebook, Inc.
10931 * All rights reserved.
@@ -10907,11 +10944,10 @@ var EventPluginHub = _dereq_(17);
10944 var EventPluginUtils = _dereq_(19);
10945 var ReactComponentEnvironment = _dereq_(33);
10946 var ReactClass = _dereq_(30);
10910 -var ReactEmptyComponent = _dereq_(64);
10947 +var ReactEmptyComponent = _dereq_(63);
10948 var ReactBrowserEventEmitter = _dereq_(27);
10912 -var ReactNativeComponent = _dereq_(78);
10913 -var ReactPerf = _dereq_(82);
10914 -var ReactUpdates = _dereq_(94);
10949 +var ReactNativeComponent = _dereq_(77);
10950 +var ReactUpdates = _dereq_(93);
10951
10952 var ReactInjection = {
10953 Component: ReactComponentEnvironment.injection,
@@ -10922,12 +10958,11 @@ var ReactInjection = {
10958 EventPluginUtils: EventPluginUtils.injection,
10959 EventEmitter: ReactBrowserEventEmitter.injection,
10960 NativeComponent: ReactNativeComponent.injection,
10925 - Perf: ReactPerf.injection,
10961 Updates: ReactUpdates.injection
10962 };
10963
10964 module.exports = ReactInjection;
10930 -},{"10":10,"17":17,"19":19,"27":27,"30":30,"33":33,"64":64,"78":78,"82":82,"94":94}],70:[function(_dereq_,module,exports){
10965 +},{"10":10,"17":17,"19":19,"27":27,"30":30,"33":33,"63":63,"77":77,"93":93}],69:[function(_dereq_,module,exports){
10966 /**
10967 * Copyright 2013-present, Facebook, Inc.
10968 * All rights reserved.
@@ -10941,11 +10976,11 @@ module.exports = ReactInjection;
10976
10977 'use strict';
10978
10944 -var ReactDOMSelection = _dereq_(51);
10979 +var ReactDOMSelection = _dereq_(52);
10980
10946 -var containsNode = _dereq_(147);
10947 -var focusNode = _dereq_(152);
10948 -var getActiveElement = _dereq_(153);
10981 +var containsNode = _dereq_(146);
10982 +var focusNode = _dereq_(151);
10983 +var getActiveElement = _dereq_(152);
10984
10985 function isInDocument(node) {
10986 return containsNode(document.documentElement, node);
@@ -11052,7 +11087,7 @@ var ReactInputSelection = {
11087 };
11088
11089 module.exports = ReactInputSelection;
11055 -},{"147":147,"152":152,"153":153,"51":51}],71:[function(_dereq_,module,exports){
11090 +},{"146":146,"151":151,"152":152,"52":52}],70:[function(_dereq_,module,exports){
11091 /**
11092 * Copyright 2013-present, Facebook, Inc.
11093 * All rights reserved.
@@ -11101,7 +11136,7 @@ var ReactInstanceMap = {
11136 };
11137
11138 module.exports = ReactInstanceMap;
11104 -},{}],72:[function(_dereq_,module,exports){
11139 +},{}],71:[function(_dereq_,module,exports){
11140 /**
11141 * Copyright 2016-present, Facebook, Inc.
11142 * All rights reserved.
@@ -11115,10 +11150,10 @@ module.exports = ReactInstanceMap;
11150
11151 'use strict';
11152
11118 -var ReactDebugTool = _dereq_(57);
11153 +var ReactDebugTool = _dereq_(58);
11154
11155 module.exports = { debugTool: ReactDebugTool };
11121 -},{"57":57}],73:[function(_dereq_,module,exports){
11156 +},{"58":58}],72:[function(_dereq_,module,exports){
11157 /**
11158 * Copyright 2016-present, Facebook, Inc.
11159 * All rights reserved.
@@ -11132,7 +11167,7 @@ module.exports = { debugTool: ReactDebugTool };
11167
11168 'use strict';
11169
11135 -var warning = _dereq_(168);
11170 +var warning = _dereq_(167);
11171
11172 if ("development" !== 'production') {
11173 var processingChildContext = false;
@@ -11155,7 +11190,7 @@ var ReactInvalidSetStateWarningDevTool = {
11190 };
11191
11192 module.exports = ReactInvalidSetStateWarningDevTool;
11158 -},{"168":168}],74:[function(_dereq_,module,exports){
11193 +},{"167":167}],73:[function(_dereq_,module,exports){
11194 /**
11195 * Copyright 2013-present, Facebook, Inc.
11196 * All rights reserved.
@@ -11169,7 +11204,7 @@ module.exports = ReactInvalidSetStateWarningDevTool;
11204
11205 'use strict';
11206
11172 -var adler32 = _dereq_(115);
11207 +var adler32 = _dereq_(114);
11208
11209 var TAG_END = /\/?>/;
11210 var COMMENT_START = /^<\!\-\-/;
@@ -11206,7 +11241,7 @@ var ReactMarkupChecksum = {
11241 };
11242
11243 module.exports = ReactMarkupChecksum;
11209 -},{"115":115}],75:[function(_dereq_,module,exports){
11244 +},{"114":114}],74:[function(_dereq_,module,exports){
11245 /**
11246 * Copyright 2013-present, Facebook, Inc.
11247 * All rights reserved.
@@ -11223,25 +11258,24 @@ module.exports = ReactMarkupChecksum;
11258 var DOMLazyTree = _dereq_(8);
11259 var DOMProperty = _dereq_(10);
11260 var ReactBrowserEventEmitter = _dereq_(27);
11226 -var ReactCurrentOwner = _dereq_(35);
11227 -var ReactDOMComponentTree = _dereq_(40);
11228 -var ReactDOMContainerInfo = _dereq_(41);
11229 -var ReactDOMFeatureFlags = _dereq_(45);
11230 -var ReactElement = _dereq_(62);
11231 -var ReactFeatureFlags = _dereq_(68);
11232 -var ReactInstrumentation = _dereq_(72);
11233 -var ReactMarkupChecksum = _dereq_(74);
11234 -var ReactPerf = _dereq_(82);
11235 -var ReactReconciler = _dereq_(87);
11236 -var ReactUpdateQueue = _dereq_(93);
11237 -var ReactUpdates = _dereq_(94);
11238 -
11239 -var emptyObject = _dereq_(151);
11240 -var instantiateReactComponent = _dereq_(132);
11241 -var invariant = _dereq_(158);
11242 -var setInnerHTML = _dereq_(138);
11243 -var shouldUpdateReactComponent = _dereq_(140);
11244 -var warning = _dereq_(168);
11261 +var ReactCurrentOwner = _dereq_(36);
11262 +var ReactDOMComponentTree = _dereq_(41);
11263 +var ReactDOMContainerInfo = _dereq_(42);
11264 +var ReactDOMFeatureFlags = _dereq_(46);
11265 +var ReactElement = _dereq_(61);
11266 +var ReactFeatureFlags = _dereq_(67);
11267 +var ReactInstrumentation = _dereq_(71);
11268 +var ReactMarkupChecksum = _dereq_(73);
11269 +var ReactReconciler = _dereq_(86);
11270 +var ReactUpdateQueue = _dereq_(92);
11271 +var ReactUpdates = _dereq_(93);
11272 +
11273 +var emptyObject = _dereq_(150);
11274 +var instantiateReactComponent = _dereq_(131);
11275 +var invariant = _dereq_(157);
11276 +var setInnerHTML = _dereq_(137);
11277 +var shouldUpdateReactComponent = _dereq_(139);
11278 +var warning = _dereq_(167);
11279
11280 var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;
11281 var ROOT_ATTR_NAME = DOMProperty.ROOT_ATTRIBUTE_NAME;
@@ -11469,6 +11503,10 @@ var ReactMount = {
11503 * @return {ReactComponent} nextComponent
11504 */
11505 _renderNewRootComponent: function (nextElement, container, shouldReuseMarkup, context) {
11506 + if ("development" !== 'production') {
11507 + ReactInstrumentation.debugTool.onBeginFlush();
11508 + }
11509 +
11510 // Various parts of our code (such as ReactCompositeComponent's
11511 // _renderValidatedComponent) assume that calls to render aren't nested;
11512 // verify that that's the case.
@@ -11479,6 +11517,12 @@ var ReactMount = {
11517 ReactBrowserEventEmitter.ensureScrollValueMonitoring();
11518 var componentInstance = instantiateReactComponent(nextElement);
11519
11520 + if ("development" !== 'production') {
11521 + // Mute future events from the top level wrapper.
11522 + // It is an implementation detail that devtools should not know about.
11523 + componentInstance._debugID = 0;
11524 + }
11525 +
11526 // The initial render is synchronous but any updates that happen during
11527 // rendering, in componentWillMount or componentDidMount, will be batched
11528 // according to the current batching strategy.
@@ -11489,7 +11533,9 @@ var ReactMount = {
11533 instancesByReactRootID[wrapperID] = componentInstance;
11534
11535 if ("development" !== 'production') {
11492 - ReactInstrumentation.debugTool.onMountRootComponent(componentInstance);
11536 + // The instance here is TopLevelWrapper so we report mount for its child.
11537 + ReactInstrumentation.debugTool.onMountRootComponent(componentInstance._renderedComponent._debugID);
11538 + ReactInstrumentation.debugTool.onEndFlush();
11539 }
11540
11541 return componentInstance;
@@ -11569,6 +11615,7 @@ var ReactMount = {
11615
11616 /**
11617 * Renders a React component into the DOM in the supplied `container`.
11618 + * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.render
11619 *
11620 * If the React component was previously rendered into `container`, this will
11621 * perform an update on it and only mutate the DOM as necessary to reflect the
@@ -11585,6 +11632,7 @@ var ReactMount = {
11632
11633 /**
11634 * Unmounts and destroys the React component rendered in the `container`.
11635 + * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.unmountcomponentatnode
11636 *
11637 * @param {DOMElement} container DOM element containing a React component.
11638 * @return {boolean} True if a component was found in and unmounted from
@@ -11676,16 +11724,18 @@ var ReactMount = {
11724 setInnerHTML(container, markup);
11725 ReactDOMComponentTree.precacheNode(instance, container.firstChild);
11726 }
11727 +
11728 + if ("development" !== 'production') {
11729 + var nativeNode = ReactDOMComponentTree.getInstanceFromNode(container.firstChild);
11730 + if (nativeNode._debugID !== 0) {
11731 + ReactInstrumentation.debugTool.onNativeOperation(nativeNode._debugID, 'mount', markup.toString());
11732 + }
11733 + }
11734 }
11735 };
11736
11682 -ReactPerf.measureMethods(ReactMount, 'ReactMount', {
11683 - _renderNewRootComponent: '_renderNewRootComponent',
11684 - _mountImageIntoNode: '_mountImageIntoNode'
11685 -});
11686 -
11737 module.exports = ReactMount;
11688 -},{"10":10,"132":132,"138":138,"140":140,"151":151,"158":158,"168":168,"27":27,"35":35,"40":40,"41":41,"45":45,"62":62,"68":68,"72":72,"74":74,"8":8,"82":82,"87":87,"93":93,"94":94}],76:[function(_dereq_,module,exports){
11738 +},{"10":10,"131":131,"137":137,"139":139,"150":150,"157":157,"167":167,"27":27,"36":36,"41":41,"42":42,"46":46,"61":61,"67":67,"71":71,"73":73,"8":8,"86":86,"92":92,"93":93}],75:[function(_dereq_,module,exports){
11739 /**
11740 * Copyright 2013-present, Facebook, Inc.
11741 * All rights reserved.
@@ -11700,14 +11750,16 @@ module.exports = ReactMount;
11750 'use strict';
11751
11752 var ReactComponentEnvironment = _dereq_(33);
11703 -var ReactMultiChildUpdateTypes = _dereq_(77);
11753 +var ReactInstrumentation = _dereq_(71);
11754 +var ReactMultiChildUpdateTypes = _dereq_(76);
11755
11705 -var ReactCurrentOwner = _dereq_(35);
11706 -var ReactReconciler = _dereq_(87);
11756 +var ReactCurrentOwner = _dereq_(36);
11757 +var ReactReconciler = _dereq_(86);
11758 var ReactChildReconciler = _dereq_(28);
11759
11709 -var flattenChildren = _dereq_(121);
11710 -var invariant = _dereq_(158);
11760 +var emptyFunction = _dereq_(149);
11761 +var flattenChildren = _dereq_(120);
11762 +var invariant = _dereq_(157);
11763
11764 /**
11765 * Make an update for markup to be rendered and inserted at a supplied index.
@@ -11822,6 +11874,15 @@ function processQueue(inst, updateQueue) {
11874 ReactComponentEnvironment.processChildrenUpdates(inst, updateQueue);
11875 }
11876
11877 +var setChildrenForInstrumentation = emptyFunction;
11878 +if ("development" !== 'production') {
11879 + setChildrenForInstrumentation = function (children) {
11880 + ReactInstrumentation.debugTool.onSetChildren(this._debugID, children ? Object.keys(children).map(function (key) {
11881 + return children[key]._debugID;
11882 + }) : []);
11883 + };
11884 +}
11885 +
11886 /**
11887 * ReactMultiChild are capable of reconciling multiple children.
11888 *
@@ -11883,6 +11944,7 @@ var ReactMultiChild = {
11944 mountChildren: function (nestedChildren, transaction, context) {
11945 var children = this._reconcilerInstantiateChildren(nestedChildren, transaction, context);
11946 this._renderedChildren = children;
11947 +
11948 var mountImages = [];
11949 var index = 0;
11950 for (var name in children) {
@@ -11893,6 +11955,11 @@ var ReactMultiChild = {
11955 mountImages.push(mountImage);
11956 }
11957 }
11958 +
11959 + if ("development" !== 'production') {
11960 + setChildrenForInstrumentation.call(this, children);
11961 + }
11962 +
11963 return mountImages;
11964 },
11965
@@ -11999,6 +12066,10 @@ var ReactMultiChild = {
12066 processQueue(this, updates);
12067 }
12068 this._renderedChildren = nextChildren;
12069 +
12070 + if ("development" !== 'production') {
12071 + setChildrenForInstrumentation.call(this, nextChildren);
12072 + }
12073 },
12074
12075 /**
@@ -12088,7 +12159,7 @@ var ReactMultiChild = {
12159 };
12160
12161 module.exports = ReactMultiChild;
12091 -},{"121":121,"158":158,"28":28,"33":33,"35":35,"77":77,"87":87}],77:[function(_dereq_,module,exports){
12162 +},{"120":120,"149":149,"157":157,"28":28,"33":33,"36":36,"71":71,"76":76,"86":86}],76:[function(_dereq_,module,exports){
12163 /**
12164 * Copyright 2013-present, Facebook, Inc.
12165 * All rights reserved.
@@ -12102,7 +12173,7 @@ module.exports = ReactMultiChild;
12173
12174 'use strict';
12175
12105 -var keyMirror = _dereq_(161);
12176 +var keyMirror = _dereq_(160);
12177
12178 /**
12179 * When a component's children are updated, a series of update configuration
@@ -12121,7 +12192,7 @@ var ReactMultiChildUpdateTypes = keyMirror({
12192 });
12193
12194 module.exports = ReactMultiChildUpdateTypes;
12124 -},{"161":161}],78:[function(_dereq_,module,exports){
12195 +},{"160":160}],77:[function(_dereq_,module,exports){
12196 /**
12197 * Copyright 2014-present, Facebook, Inc.
12198 * All rights reserved.
@@ -12135,9 +12206,9 @@ module.exports = ReactMultiChildUpdateTypes;
12206
12207 'use strict';
12208
12138 -var _assign = _dereq_(169);
12209 +var _assign = _dereq_(168);
12210
12140 -var invariant = _dereq_(158);
12211 +var invariant = _dereq_(157);
12212
12213 var autoGenerateWrapperClass = null;
12214 var genericComponentClass = null;
@@ -12217,7 +12288,45 @@ var ReactNativeComponent = {
12288 };
12289
12290 module.exports = ReactNativeComponent;
12220 -},{"158":158,"169":169}],79:[function(_dereq_,module,exports){
12291 +},{"157":157,"168":168}],78:[function(_dereq_,module,exports){
12292 +/**
12293 + * Copyright 2016-present, Facebook, Inc.
12294 + * All rights reserved.
12295 + *
12296 + * This source code is licensed under the BSD-style license found in the
12297 + * LICENSE file in the root directory of this source tree. An additional grant
12298 + * of patent rights can be found in the PATENTS file in the same directory.
12299 + *
12300 + * @providesModule ReactNativeOperationHistoryDevtool
12301 + */
12302 +
12303 +'use strict';
12304 +
12305 +var history = [];
12306 +
12307 +var ReactNativeOperationHistoryDevtool = {
12308 + onNativeOperation: function (debugID, type, payload) {
12309 + history.push({
12310 + instanceID: debugID,
12311 + type: type,
12312 + payload: payload
12313 + });
12314 + },
12315 + clearHistory: function () {
12316 + if (ReactNativeOperationHistoryDevtool._preventClearing) {
12317 + // Should only be used for tests.
12318 + return;
12319 + }
12320 +
12321 + history = [];
12322 + },
12323 + getHistory: function () {
12324 + return history;
12325 + }
12326 +};
12327 +
12328 +module.exports = ReactNativeOperationHistoryDevtool;
12329 +},{}],79:[function(_dereq_,module,exports){
12330 /**
12331 * Copyright 2013-present, Facebook, Inc.
12332 * All rights reserved.
@@ -12231,9 +12340,9 @@ module.exports = ReactNativeComponent;
12340
12341 'use strict';
12342
12234 -var ReactElement = _dereq_(62);
12343 +var ReactElement = _dereq_(61);
12344
12236 -var invariant = _dereq_(158);
12345 +var invariant = _dereq_(157);
12346
12347 var ReactNodeTypes = {
12348 NATIVE: 0,
@@ -12255,7 +12364,7 @@ var ReactNodeTypes = {
12364 };
12365
12366 module.exports = ReactNodeTypes;
12258 -},{"158":158,"62":62}],80:[function(_dereq_,module,exports){
12367 +},{"157":157,"61":61}],80:[function(_dereq_,module,exports){
12368 /**
12369 * Copyright 2015-present, Facebook, Inc.
12370 * All rights reserved.
@@ -12269,7 +12378,7 @@ module.exports = ReactNodeTypes;
12378
12379 'use strict';
12380
12272 -var warning = _dereq_(168);
12381 +var warning = _dereq_(167);
12382
12383 function warnTDZ(publicInstance, callerName) {
12384 if ("development" !== 'production') {
@@ -12351,7 +12460,7 @@ var ReactNoopUpdateQueue = {
12460 };
12461
12462 module.exports = ReactNoopUpdateQueue;
12354 -},{"168":168}],81:[function(_dereq_,module,exports){
12463 +},{"167":167}],81:[function(_dereq_,module,exports){
12464 /**
12465 * Copyright 2013-present, Facebook, Inc.
12466 * All rights reserved.
@@ -12365,7 +12474,7 @@ module.exports = ReactNoopUpdateQueue;
12474
12475 'use strict';
12476
12368 -var invariant = _dereq_(158);
12477 +var invariant = _dereq_(157);
12478
12479 /**
12480 * ReactOwners are capable of storing references to owned components.
@@ -12444,104 +12553,7 @@ var ReactOwner = {
12553 };
12554
12555 module.exports = ReactOwner;
12447 -},{"158":158}],82:[function(_dereq_,module,exports){
12448 -/**
12449 - * Copyright 2013-present, Facebook, Inc.
12450 - * All rights reserved.
12451 - *
12452 - * This source code is licensed under the BSD-style license found in the
12453 - * LICENSE file in the root directory of this source tree. An additional grant
12454 - * of patent rights can be found in the PATENTS file in the same directory.
12455 - *
12456 - * @providesModule ReactPerf
12457 - */
12458 -
12459 -'use strict';
12460 -
12461 -/**
12462 - * ReactPerf is a general AOP system designed to measure performance. This
12463 - * module only has the hooks: see ReactDefaultPerf for the analysis tool.
12464 - */
12465 -
12466 -var ReactPerf = {
12467 - /**
12468 - * Boolean to enable/disable measurement. Set to false by default to prevent
12469 - * accidental logging and perf loss.
12470 - */
12471 - enableMeasure: false,
12472 -
12473 - /**
12474 - * Holds onto the measure function in use. By default, don't measure
12475 - * anything, but we'll override this if we inject a measure function.
12476 - */
12477 - storedMeasure: _noMeasure,
12478 -
12479 - /**
12480 - * @param {object} object
12481 - * @param {string} objectName
12482 - * @param {object<string>} methodNames
12483 - */
12484 - measureMethods: function (object, objectName, methodNames) {
12485 - if ("development" !== 'production') {
12486 - for (var key in methodNames) {
12487 - if (!methodNames.hasOwnProperty(key)) {
12488 - continue;
12489 - }
12490 - object[key] = ReactPerf.measure(objectName, methodNames[key], object[key]);
12491 - }
12492 - }
12493 - },
12494 -
12495 - /**
12496 - * Use this to wrap methods you want to measure. Zero overhead in production.
12497 - *
12498 - * @param {string} objName
12499 - * @param {string} fnName
12500 - * @param {function} func
12501 - * @return {function}
12502 - */
12503 - measure: function (objName, fnName, func) {
12504 - if ("development" !== 'production') {
12505 - var measuredFunc = null;
12506 - var wrapper = function () {
12507 - if (ReactPerf.enableMeasure) {
12508 - if (!measuredFunc) {
12509 - measuredFunc = ReactPerf.storedMeasure(objName, fnName, func);
12510 - }
12511 - return measuredFunc.apply(this, arguments);
12512 - }
12513 - return func.apply(this, arguments);
12514 - };
12515 - wrapper.displayName = objName + '_' + fnName;
12516 - return wrapper;
12517 - }
12518 - return func;
12519 - },
12520 -
12521 - injection: {
12522 - /**
12523 - * @param {function} measure
12524 - */
12525 - injectMeasure: function (measure) {
12526 - ReactPerf.storedMeasure = measure;
12527 - }
12528 - }
12529 -};
12530 -
12531 -/**
12532 - * Simply passes through the measured function, without measuring it.
12533 - *
12534 - * @param {string} objName
12535 - * @param {string} fnName
12536 - * @param {function} func
12537 - * @return {function}
12538 - */
12539 -function _noMeasure(objName, fnName, func) {
12540 - return func;
12541 -}
12542 -
12543 -module.exports = ReactPerf;
12544 -},{}],83:[function(_dereq_,module,exports){
12556 +},{"157":157}],82:[function(_dereq_,module,exports){
12557 /**
12558 * Copyright 2013-present, Facebook, Inc.
12559 * All rights reserved.
@@ -12566,7 +12578,7 @@ if ("development" !== 'production') {
12578 }
12579
12580 module.exports = ReactPropTypeLocationNames;
12569 -},{}],84:[function(_dereq_,module,exports){
12581 +},{}],83:[function(_dereq_,module,exports){
12582 /**
12583 * Copyright 2013-present, Facebook, Inc.
12584 * All rights reserved.
@@ -12580,7 +12592,7 @@ module.exports = ReactPropTypeLocationNames;
12592
12593 'use strict';
12594
12583 -var keyMirror = _dereq_(161);
12595 +var keyMirror = _dereq_(160);
12596
12597 var ReactPropTypeLocations = keyMirror({
12598 prop: null,
@@ -12589,7 +12601,7 @@ var ReactPropTypeLocations = keyMirror({
12601 });
12602
12603 module.exports = ReactPropTypeLocations;
12592 -},{"161":161}],85:[function(_dereq_,module,exports){
12604 +},{"160":160}],84:[function(_dereq_,module,exports){
12605 /**
12606 * Copyright 2013-present, Facebook, Inc.
12607 * All rights reserved.
@@ -12603,11 +12615,11 @@ module.exports = ReactPropTypeLocations;
12615
12616 'use strict';
12617
12606 -var ReactElement = _dereq_(62);
12607 -var ReactPropTypeLocationNames = _dereq_(83);
12618 +var ReactElement = _dereq_(61);
12619 +var ReactPropTypeLocationNames = _dereq_(82);
12620
12609 -var emptyFunction = _dereq_(150);
12610 -var getIteratorFn = _dereq_(127);
12621 +var emptyFunction = _dereq_(149);
12622 +var getIteratorFn = _dereq_(126);
12623
12624 /**
12625 * Collection of methods that allow declaration and validation of props that are
@@ -12970,7 +12982,7 @@ function getClassName(propValue) {
12982 }
12983
12984 module.exports = ReactPropTypes;
12973 -},{"127":127,"150":150,"62":62,"83":83}],86:[function(_dereq_,module,exports){
12985 +},{"126":126,"149":149,"61":61,"82":82}],85:[function(_dereq_,module,exports){
12986 /**
12987 * Copyright 2013-present, Facebook, Inc.
12988 * All rights reserved.
@@ -12984,13 +12996,13 @@ module.exports = ReactPropTypes;
12996
12997 'use strict';
12998
12987 -var _assign = _dereq_(169);
12999 +var _assign = _dereq_(168);
13000
13001 var CallbackQueue = _dereq_(5);
13002 var PooledClass = _dereq_(25);
13003 var ReactBrowserEventEmitter = _dereq_(27);
12992 -var ReactInputSelection = _dereq_(70);
12993 -var Transaction = _dereq_(112);
13004 +var ReactInputSelection = _dereq_(69);
13005 +var Transaction = _dereq_(111);
13006
13007 /**
13008 * Ensures that, when possible, the selection range (currently selected text
@@ -13133,7 +13145,7 @@ _assign(ReactReconcileTransaction.prototype, Transaction.Mixin, Mixin);
13145 PooledClass.addPoolingTo(ReactReconcileTransaction);
13146
13147 module.exports = ReactReconcileTransaction;
13136 -},{"112":112,"169":169,"25":25,"27":27,"5":5,"70":70}],87:[function(_dereq_,module,exports){
13148 +},{"111":111,"168":168,"25":25,"27":27,"5":5,"69":69}],86:[function(_dereq_,module,exports){
13149 /**
13150 * Copyright 2013-present, Facebook, Inc.
13151 * All rights reserved.
@@ -13147,8 +13159,10 @@ module.exports = ReactReconcileTransaction;
13159
13160 'use strict';
13161
13150 -var ReactRef = _dereq_(88);
13151 -var ReactInstrumentation = _dereq_(72);
13162 +var ReactRef = _dereq_(87);
13163 +var ReactInstrumentation = _dereq_(71);
13164 +
13165 +var invariant = _dereq_(157);
13166
13167 /**
13168 * Helper to call ReactRef.attachRefs with this composite component, split out
@@ -13172,12 +13186,20 @@ var ReactReconciler = {
13186 * @internal
13187 */
13188 mountComponent: function (internalInstance, transaction, nativeParent, nativeContainerInfo, context) {
13189 + if ("development" !== 'production') {
13190 + if (internalInstance._debugID !== 0) {
13191 + ReactInstrumentation.debugTool.onBeginReconcilerTimer(internalInstance._debugID, 'mountComponent');
13192 + }
13193 + }
13194 var markup = internalInstance.mountComponent(transaction, nativeParent, nativeContainerInfo, context);
13195 if (internalInstance._currentElement && internalInstance._currentElement.ref != null) {
13196 transaction.getReactMountReady().enqueue(attachRefs, internalInstance);
13197 }
13198 if ("development" !== 'production') {
13180 - ReactInstrumentation.debugTool.onMountComponent(internalInstance);
13199 + if (internalInstance._debugID !== 0) {
13200 + ReactInstrumentation.debugTool.onEndReconcilerTimer(internalInstance._debugID, 'mountComponent');
13201 + ReactInstrumentation.debugTool.onMountComponent(internalInstance._debugID);
13202 + }
13203 }
13204 return markup;
13205 },
@@ -13197,10 +13219,18 @@ var ReactReconciler = {
13219 * @internal
13220 */
13221 unmountComponent: function (internalInstance, safely) {
13222 + if ("development" !== 'production') {
13223 + if (internalInstance._debugID !== 0) {
13224 + ReactInstrumentation.debugTool.onBeginReconcilerTimer(internalInstance._debugID, 'unmountComponent');
13225 + }
13226 + }
13227 ReactRef.detachRefs(internalInstance, internalInstance._currentElement);
13228 internalInstance.unmountComponent(safely);
13229 if ("development" !== 'production') {
13203 - ReactInstrumentation.debugTool.onUnmountComponent(internalInstance);
13230 + if (internalInstance._debugID !== 0) {
13231 + ReactInstrumentation.debugTool.onEndReconcilerTimer(internalInstance._debugID, 'unmountComponent');
13232 + ReactInstrumentation.debugTool.onUnmountComponent(internalInstance._debugID);
13233 + }
13234 }
13235 },
13236
@@ -13230,6 +13260,12 @@ var ReactReconciler = {
13260 return;
13261 }
13262
13263 + if ("development" !== 'production') {
13264 + if (internalInstance._debugID !== 0) {
13265 + ReactInstrumentation.debugTool.onBeginReconcilerTimer(internalInstance._debugID, 'receiveComponent');
13266 + }
13267 + }
13268 +
13269 var refsChanged = ReactRef.shouldUpdateRefs(prevElement, nextElement);
13270
13271 if (refsChanged) {
@@ -13243,7 +13279,10 @@ var ReactReconciler = {
13279 }
13280
13281 if ("development" !== 'production') {
13246 - ReactInstrumentation.debugTool.onUpdateComponent(internalInstance);
13282 + if (internalInstance._debugID !== 0) {
13283 + ReactInstrumentation.debugTool.onEndReconcilerTimer(internalInstance._debugID, 'receiveComponent');
13284 + ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);
13285 + }
13286 }
13287 },
13288
@@ -13254,17 +13293,31 @@ var ReactReconciler = {
13293 * @param {ReactReconcileTransaction} transaction
13294 * @internal
13295 */
13257 - performUpdateIfNecessary: function (internalInstance, transaction) {
13296 + performUpdateIfNecessary: function (internalInstance, transaction, updateBatchNumber) {
13297 + if (internalInstance._updateBatchNumber !== updateBatchNumber) {
13298 + // The component's enqueued batch number should always be the current
13299 + // batch or the following one.
13300 + !(internalInstance._updateBatchNumber == null || internalInstance._updateBatchNumber === updateBatchNumber + 1) ? "development" !== 'production' ? invariant(false, 'performUpdateIfNecessary: Unexpected batch number (current %s, ' + 'pending %s)', updateBatchNumber, internalInstance._updateBatchNumber) : invariant(false) : void 0;
13301 + return;
13302 + }
13303 + if ("development" !== 'production') {
13304 + if (internalInstance._debugID !== 0) {
13305 + ReactInstrumentation.debugTool.onBeginReconcilerTimer(internalInstance._debugID, 'performUpdateIfNecessary');
13306 + }
13307 + }
13308 internalInstance.performUpdateIfNecessary(transaction);
13309 if ("development" !== 'production') {
13260 - ReactInstrumentation.debugTool.onUpdateComponent(internalInstance);
13310 + if (internalInstance._debugID !== 0) {
13311 + ReactInstrumentation.debugTool.onEndReconcilerTimer(internalInstance._debugID, 'performUpdateIfNecessary');
13312 + ReactInstrumentation.debugTool.onUpdateComponent(internalInstance._debugID);
13313 + }
13314 }
13315 }
13316
13317 };
13318
13319 module.exports = ReactReconciler;
13267 -},{"72":72,"88":88}],88:[function(_dereq_,module,exports){
13320 +},{"157":157,"71":71,"87":87}],87:[function(_dereq_,module,exports){
13321 /**
13322 * Copyright 2013-present, Facebook, Inc.
13323 * All rights reserved.
@@ -13343,7 +13396,7 @@ ReactRef.detachRefs = function (instance, element) {
13396 };
13397
13398 module.exports = ReactRef;
13346 -},{"81":81}],89:[function(_dereq_,module,exports){
13399 +},{"81":81}],88:[function(_dereq_,module,exports){
13400 /**
13401 * Copyright 2014-present, Facebook, Inc.
13402 * All rights reserved.
@@ -13366,7 +13419,7 @@ var ReactServerBatchingStrategy = {
13419 };
13420
13421 module.exports = ReactServerBatchingStrategy;
13369 -},{}],90:[function(_dereq_,module,exports){
13422 +},{}],89:[function(_dereq_,module,exports){
13423 /**
13424 * Copyright 2013-present, Facebook, Inc.
13425 * All rights reserved.
@@ -13379,17 +13432,19 @@ module.exports = ReactServerBatchingStrategy;
13432 */
13433 'use strict';
13434
13382 -var ReactDOMContainerInfo = _dereq_(41);
13383 -var ReactDefaultBatchingStrategy = _dereq_(58);
13384 -var ReactElement = _dereq_(62);
13385 -var ReactMarkupChecksum = _dereq_(74);
13386 -var ReactServerBatchingStrategy = _dereq_(89);
13387 -var ReactServerRenderingTransaction = _dereq_(91);
13388 -var ReactUpdates = _dereq_(94);
13435 +var ReactDOMContainerInfo = _dereq_(42);
13436 +var ReactDefaultBatchingStrategy = _dereq_(59);
13437 +var ReactElement = _dereq_(61);
13438 +var ReactInstrumentation = _dereq_(71);
13439 +var ReactMarkupChecksum = _dereq_(73);
13440 +var ReactReconciler = _dereq_(86);
13441 +var ReactServerBatchingStrategy = _dereq_(88);
13442 +var ReactServerRenderingTransaction = _dereq_(90);
13443 +var ReactUpdates = _dereq_(93);
13444
13390 -var emptyObject = _dereq_(151);
13391 -var instantiateReactComponent = _dereq_(132);
13392 -var invariant = _dereq_(158);
13445 +var emptyObject = _dereq_(150);
13446 +var instantiateReactComponent = _dereq_(131);
13447 +var invariant = _dereq_(157);
13448
13449 /**
13450 * @param {ReactElement} element
@@ -13403,8 +13458,15 @@ function renderToStringImpl(element, makeStaticMarkup) {
13458 transaction = ReactServerRenderingTransaction.getPooled(makeStaticMarkup);
13459
13460 return transaction.perform(function () {
13461 + if ("development" !== 'production') {
13462 + ReactInstrumentation.debugTool.onBeginFlush();
13463 + }
13464 var componentInstance = instantiateReactComponent(element);
13407 - var markup = componentInstance.mountComponent(transaction, null, ReactDOMContainerInfo(), emptyObject);
13465 + var markup = ReactReconciler.mountComponent(componentInstance, transaction, null, ReactDOMContainerInfo(), emptyObject);
13466 + if ("development" !== 'production') {
13467 + ReactInstrumentation.debugTool.onUnmountComponent(componentInstance._debugID);
13468 + ReactInstrumentation.debugTool.onEndFlush();
13469 + }
13470 if (!makeStaticMarkup) {
13471 markup = ReactMarkupChecksum.addChecksumToMarkup(markup);
13472 }
@@ -13418,11 +13480,21 @@ function renderToStringImpl(element, makeStaticMarkup) {
13480 }
13481 }
13482
13483 +/**
13484 + * Render a ReactElement to its initial HTML. This should only be used on the
13485 + * server.
13486 + * See https://facebook.github.io/react/docs/top-level-api.html#reactdomserver.rendertostring
13487 + */
13488 function renderToString(element) {
13489 !ReactElement.isValidElement(element) ? "development" !== 'production' ? invariant(false, 'renderToString(): You must pass a valid ReactElement.') : invariant(false) : void 0;
13490 return renderToStringImpl(element, false);
13491 }
13492
13493 +/**
13494 + * Similar to renderToString, except this doesn't create extra DOM attributes
13495 + * such as data-react-id that React uses internally.
13496 + * See https://facebook.github.io/react/docs/top-level-api.html#reactdomserver.rendertostaticmarkup
13497 + */
13498 function renderToStaticMarkup(element) {
13499 !ReactElement.isValidElement(element) ? "development" !== 'production' ? invariant(false, 'renderToStaticMarkup(): You must pass a valid ReactElement.') : invariant(false) : void 0;
13500 return renderToStringImpl(element, true);
@@ -13432,7 +13504,7 @@ module.exports = {
13504 renderToString: renderToString,
13505 renderToStaticMarkup: renderToStaticMarkup
13506 };
13435 -},{"132":132,"151":151,"158":158,"41":41,"58":58,"62":62,"74":74,"89":89,"91":91,"94":94}],91:[function(_dereq_,module,exports){
13507 +},{"131":131,"150":150,"157":157,"42":42,"59":59,"61":61,"71":71,"73":73,"86":86,"88":88,"90":90,"93":93}],90:[function(_dereq_,module,exports){
13508 /**
13509 * Copyright 2014-present, Facebook, Inc.
13510 * All rights reserved.
@@ -13446,10 +13518,10 @@ module.exports = {
13518
13519 'use strict';
13520
13449 -var _assign = _dereq_(169);
13521 +var _assign = _dereq_(168);
13522
13523 var PooledClass = _dereq_(25);
13452 -var Transaction = _dereq_(112);
13524 +var Transaction = _dereq_(111);
13525
13526 /**
13527 * Executed within the scope of the `Transaction` instance. Consider these as
@@ -13494,7 +13566,11 @@ var Mixin = {
13566 * `PooledClass` looks for this, and will invoke this before allowing this
13567 * instance to be reused.
13568 */
13497 - destructor: function () {}
13569 + destructor: function () {},
13570 +
13571 + checkpoint: function () {},
13572 +
13573 + rollback: function () {}
13574 };
13575
13576 _assign(ReactServerRenderingTransaction.prototype, Transaction.Mixin, Mixin);
@@ -13502,7 +13578,7 @@ _assign(ReactServerRenderingTransaction.prototype, Transaction.Mixin, Mixin);
13578 PooledClass.addPoolingTo(ReactServerRenderingTransaction);
13579
13580 module.exports = ReactServerRenderingTransaction;
13505 -},{"112":112,"169":169,"25":25}],92:[function(_dereq_,module,exports){
13581 +},{"111":111,"168":168,"25":25}],91:[function(_dereq_,module,exports){
13582 /**
13583 * Copyright 2013-present, Facebook, Inc.
13584 * All rights reserved.
@@ -13516,10 +13592,10 @@ module.exports = ReactServerRenderingTransaction;
13592
13593 'use strict';
13594
13519 -var _assign = _dereq_(169);
13595 +var _assign = _dereq_(168);
13596
13521 -var ReactDOM = _dereq_(36);
13522 -var ReactDOMServer = _dereq_(52);
13597 +var ReactDOM = _dereq_(37);
13598 +var ReactDOMServer = _dereq_(53);
13599 var React = _dereq_(26);
13600
13601 // `version` will be added here by ReactIsomorphic.
@@ -13529,7 +13605,7 @@ var ReactUMDEntry = _assign({
13605 }, React);
13606
13607 module.exports = ReactUMDEntry;
13532 -},{"169":169,"26":26,"36":36,"52":52}],93:[function(_dereq_,module,exports){
13608 +},{"168":168,"26":26,"37":37,"53":53}],92:[function(_dereq_,module,exports){
13609 /**
13610 * Copyright 2015-present, Facebook, Inc.
13611 * All rights reserved.
@@ -13543,12 +13619,12 @@ module.exports = ReactUMDEntry;
13619
13620 'use strict';
13621
13546 -var ReactCurrentOwner = _dereq_(35);
13547 -var ReactInstanceMap = _dereq_(71);
13548 -var ReactUpdates = _dereq_(94);
13622 +var ReactCurrentOwner = _dereq_(36);
13623 +var ReactInstanceMap = _dereq_(70);
13624 +var ReactUpdates = _dereq_(93);
13625
13550 -var invariant = _dereq_(158);
13551 -var warning = _dereq_(168);
13626 +var invariant = _dereq_(157);
13627 +var warning = _dereq_(167);
13628
13629 function enqueueUpdate(internalInstance) {
13630 ReactUpdates.enqueueUpdate(internalInstance);
@@ -13745,7 +13821,7 @@ var ReactUpdateQueue = {
13821 };
13822
13823 module.exports = ReactUpdateQueue;
13748 -},{"158":158,"168":168,"35":35,"71":71,"94":94}],94:[function(_dereq_,module,exports){
13824 +},{"157":157,"167":167,"36":36,"70":70,"93":93}],93:[function(_dereq_,module,exports){
13825 /**
13826 * Copyright 2013-present, Facebook, Inc.
13827 * All rights reserved.
@@ -13759,18 +13835,19 @@ module.exports = ReactUpdateQueue;
13835
13836 'use strict';
13837
13762 -var _assign = _dereq_(169);
13838 +var _assign = _dereq_(168);
13839
13840 var CallbackQueue = _dereq_(5);
13841 var PooledClass = _dereq_(25);
13766 -var ReactFeatureFlags = _dereq_(68);
13767 -var ReactPerf = _dereq_(82);
13768 -var ReactReconciler = _dereq_(87);
13769 -var Transaction = _dereq_(112);
13842 +var ReactFeatureFlags = _dereq_(67);
13843 +var ReactInstrumentation = _dereq_(71);
13844 +var ReactReconciler = _dereq_(86);
13845 +var Transaction = _dereq_(111);
13846
13771 -var invariant = _dereq_(158);
13847 +var invariant = _dereq_(157);
13848
13849 var dirtyComponents = [];
13850 +var updateBatchNumber = 0;
13851 var asapCallbackQueue = CallbackQueue.getPooled();
13852 var asapEnqueued = false;
13853
@@ -13865,6 +13942,13 @@ function runBatchedUpdates(transaction) {
13942 // them before their children by sorting the array.
13943 dirtyComponents.sort(mountOrderComparator);
13944
13945 + // Any updates enqueued while reconciling must be performed after this entire
13946 + // batch. Otherwise, if dirtyComponents is [A, B] where A has children B and
13947 + // C, B could update twice in a single batch if C's render enqueues an update
13948 + // to B (since B would have already updated, we should skip it, and the only
13949 + // way we can know to do so is by checking the batch counter).
13950 + updateBatchNumber++;
13951 +
13952 for (var i = 0; i < len; i++) {
13953 // If a component is unmounted before pending changes apply, it will still
13954 // be here, but we assume that it has cleared its _pendingCallbacks and
@@ -13888,7 +13972,7 @@ function runBatchedUpdates(transaction) {
13972 console.time(markerName);
13973 }
13974
13891 - ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction);
13975 + ReactReconciler.performUpdateIfNecessary(component, transaction.reconcileTransaction, updateBatchNumber);
13976
13977 if (markerName) {
13978 console.timeEnd(markerName);
@@ -13903,6 +13987,10 @@ function runBatchedUpdates(transaction) {
13987 }
13988
13989 var flushBatchedUpdates = function () {
13990 + if ("development" !== 'production') {
13991 + ReactInstrumentation.debugTool.onBeginFlush();
13992 + }
13993 +
13994 // ReactUpdatesFlushTransaction's wrappers will clear the dirtyComponents
13995 // array and perform any updates enqueued by mount-ready handlers (i.e.,
13996 // componentDidUpdate) but we need to check here too in order to catch
@@ -13922,8 +14010,11 @@ var flushBatchedUpdates = function () {
14010 CallbackQueue.release(queue);
14011 }
14012 }
14013 +
14014 + if ("development" !== 'production') {
14015 + ReactInstrumentation.debugTool.onEndFlush();
14016 + }
14017 };
13926 -flushBatchedUpdates = ReactPerf.measure('ReactUpdates', 'flushBatchedUpdates', flushBatchedUpdates);
14018
14019 /**
14020 * Mark a component as needing a rerender, adding an optional callback to a
@@ -13944,6 +14035,9 @@ function enqueueUpdate(component) {
14035 }
14036
14037 dirtyComponents.push(component);
14038 + if (component._updateBatchNumber == null) {
14039 + component._updateBatchNumber = updateBatchNumber + 1;
14040 + }
14041 }
14042
14043 /**
@@ -13987,7 +14081,7 @@ var ReactUpdates = {
14081 };
14082
14083 module.exports = ReactUpdates;
13990 -},{"112":112,"158":158,"169":169,"25":25,"5":5,"68":68,"82":82,"87":87}],95:[function(_dereq_,module,exports){
14084 +},{"111":111,"157":157,"168":168,"25":25,"5":5,"67":67,"71":71,"86":86}],94:[function(_dereq_,module,exports){
14085 /**
14086 * Copyright 2013-present, Facebook, Inc.
14087 * All rights reserved.
@@ -14001,8 +14095,8 @@ module.exports = ReactUpdates;
14095
14096 'use strict';
14097
14004 -module.exports = '15.0.2';
14005 -},{}],96:[function(_dereq_,module,exports){
14098 +module.exports = '15.1.0';
14099 +},{}],95:[function(_dereq_,module,exports){
14100 /**
14101 * Copyright 2013-present, Facebook, Inc.
14102 * All rights reserved.
@@ -14303,7 +14397,7 @@ Object.keys(ATTRS).forEach(function (key) {
14397 });
14398
14399 module.exports = SVGDOMPropertyConfig;
14306 -},{}],97:[function(_dereq_,module,exports){
14400 +},{}],96:[function(_dereq_,module,exports){
14401 /**
14402 * Copyright 2013-present, Facebook, Inc.
14403 * All rights reserved.
@@ -14319,15 +14413,15 @@ module.exports = SVGDOMPropertyConfig;
14413
14414 var EventConstants = _dereq_(16);
14415 var EventPropagators = _dereq_(20);
14322 -var ExecutionEnvironment = _dereq_(144);
14323 -var ReactDOMComponentTree = _dereq_(40);
14324 -var ReactInputSelection = _dereq_(70);
14325 -var SyntheticEvent = _dereq_(103);
14416 +var ExecutionEnvironment = _dereq_(143);
14417 +var ReactDOMComponentTree = _dereq_(41);
14418 +var ReactInputSelection = _dereq_(69);
14419 +var SyntheticEvent = _dereq_(102);
14420
14327 -var getActiveElement = _dereq_(153);
14328 -var isTextInputElement = _dereq_(134);
14329 -var keyOf = _dereq_(162);
14330 -var shallowEqual = _dereq_(167);
14421 +var getActiveElement = _dereq_(152);
14422 +var isTextInputElement = _dereq_(133);
14423 +var keyOf = _dereq_(161);
14424 +var shallowEqual = _dereq_(166);
14425
14426 var topLevelTypes = EventConstants.topLevelTypes;
14427
@@ -14500,7 +14594,7 @@ var SelectEventPlugin = {
14594 };
14595
14596 module.exports = SelectEventPlugin;
14503 -},{"103":103,"134":134,"144":144,"153":153,"16":16,"162":162,"167":167,"20":20,"40":40,"70":70}],98:[function(_dereq_,module,exports){
14597 +},{"102":102,"133":133,"143":143,"152":152,"16":16,"161":161,"166":166,"20":20,"41":41,"69":69}],97:[function(_dereq_,module,exports){
14598 /**
14599 * Copyright 2013-present, Facebook, Inc.
14600 * All rights reserved.
@@ -14515,25 +14609,25 @@ module.exports = SelectEventPlugin;
14609 'use strict';
14610
14611 var EventConstants = _dereq_(16);
14518 -var EventListener = _dereq_(143);
14612 +var EventListener = _dereq_(142);
14613 var EventPropagators = _dereq_(20);
14520 -var ReactDOMComponentTree = _dereq_(40);
14521 -var SyntheticAnimationEvent = _dereq_(99);
14522 -var SyntheticClipboardEvent = _dereq_(100);
14523 -var SyntheticEvent = _dereq_(103);
14524 -var SyntheticFocusEvent = _dereq_(104);
14525 -var SyntheticKeyboardEvent = _dereq_(106);
14526 -var SyntheticMouseEvent = _dereq_(107);
14527 -var SyntheticDragEvent = _dereq_(102);
14528 -var SyntheticTouchEvent = _dereq_(108);
14529 -var SyntheticTransitionEvent = _dereq_(109);
14530 -var SyntheticUIEvent = _dereq_(110);
14531 -var SyntheticWheelEvent = _dereq_(111);
14532 -
14533 -var emptyFunction = _dereq_(150);
14534 -var getEventCharCode = _dereq_(123);
14535 -var invariant = _dereq_(158);
14536 -var keyOf = _dereq_(162);
14614 +var ReactDOMComponentTree = _dereq_(41);
14615 +var SyntheticAnimationEvent = _dereq_(98);
14616 +var SyntheticClipboardEvent = _dereq_(99);
14617 +var SyntheticEvent = _dereq_(102);
14618 +var SyntheticFocusEvent = _dereq_(103);
14619 +var SyntheticKeyboardEvent = _dereq_(105);
14620 +var SyntheticMouseEvent = _dereq_(106);
14621 +var SyntheticDragEvent = _dereq_(101);
14622 +var SyntheticTouchEvent = _dereq_(107);
14623 +var SyntheticTransitionEvent = _dereq_(108);
14624 +var SyntheticUIEvent = _dereq_(109);
14625 +var SyntheticWheelEvent = _dereq_(110);
14626 +
14627 +var emptyFunction = _dereq_(149);
14628 +var getEventCharCode = _dereq_(122);
14629 +var invariant = _dereq_(157);
14630 +var keyOf = _dereq_(161);
14631
14632 var topLevelTypes = EventConstants.topLevelTypes;
14633
@@ -15128,7 +15222,7 @@ var SimpleEventPlugin = {
15222 };
15223
15224 module.exports = SimpleEventPlugin;
15131 -},{"100":100,"102":102,"103":103,"104":104,"106":106,"107":107,"108":108,"109":109,"110":110,"111":111,"123":123,"143":143,"150":150,"158":158,"16":16,"162":162,"20":20,"40":40,"99":99}],99:[function(_dereq_,module,exports){
15225 +},{"101":101,"102":102,"103":103,"105":105,"106":106,"107":107,"108":108,"109":109,"110":110,"122":122,"142":142,"149":149,"157":157,"16":16,"161":161,"20":20,"41":41,"98":98,"99":99}],98:[function(_dereq_,module,exports){
15226 /**
15227 * Copyright 2013-present, Facebook, Inc.
15228 * All rights reserved.
@@ -15142,7 +15236,7 @@ module.exports = SimpleEventPlugin;
15236
15237 'use strict';
15238
15145 -var SyntheticEvent = _dereq_(103);
15239 +var SyntheticEvent = _dereq_(102);
15240
15241 /**
15242 * @interface Event
@@ -15168,7 +15262,7 @@ function SyntheticAnimationEvent(dispatchConfig, dispatchMarker, nativeEvent, na
15262 SyntheticEvent.augmentClass(SyntheticAnimationEvent, AnimationEventInterface);
15263
15264 module.exports = SyntheticAnimationEvent;
15171 -},{"103":103}],100:[function(_dereq_,module,exports){
15265 +},{"102":102}],99:[function(_dereq_,module,exports){
15266 /**
15267 * Copyright 2013-present, Facebook, Inc.
15268 * All rights reserved.
@@ -15182,7 +15276,7 @@ module.exports = SyntheticAnimationEvent;
15276
15277 'use strict';
15278
15185 -var SyntheticEvent = _dereq_(103);
15279 +var SyntheticEvent = _dereq_(102);
15280
15281 /**
15282 * @interface Event
@@ -15207,7 +15301,7 @@ function SyntheticClipboardEvent(dispatchConfig, dispatchMarker, nativeEvent, na
15301 SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);
15302
15303 module.exports = SyntheticClipboardEvent;
15210 -},{"103":103}],101:[function(_dereq_,module,exports){
15304 +},{"102":102}],100:[function(_dereq_,module,exports){
15305 /**
15306 * Copyright 2013-present, Facebook, Inc.
15307 * All rights reserved.
@@ -15221,7 +15315,7 @@ module.exports = SyntheticClipboardEvent;
15315
15316 'use strict';
15317
15224 -var SyntheticEvent = _dereq_(103);
15318 +var SyntheticEvent = _dereq_(102);
15319
15320 /**
15321 * @interface Event
@@ -15244,7 +15338,7 @@ function SyntheticCompositionEvent(dispatchConfig, dispatchMarker, nativeEvent,
15338 SyntheticEvent.augmentClass(SyntheticCompositionEvent, CompositionEventInterface);
15339
15340 module.exports = SyntheticCompositionEvent;
15247 -},{"103":103}],102:[function(_dereq_,module,exports){
15341 +},{"102":102}],101:[function(_dereq_,module,exports){
15342 /**
15343 * Copyright 2013-present, Facebook, Inc.
15344 * All rights reserved.
@@ -15258,7 +15352,7 @@ module.exports = SyntheticCompositionEvent;
15352
15353 'use strict';
15354
15261 -var SyntheticMouseEvent = _dereq_(107);
15355 +var SyntheticMouseEvent = _dereq_(106);
15356
15357 /**
15358 * @interface DragEvent
@@ -15281,7 +15375,7 @@ function SyntheticDragEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeE
15375 SyntheticMouseEvent.augmentClass(SyntheticDragEvent, DragEventInterface);
15376
15377 module.exports = SyntheticDragEvent;
15284 -},{"107":107}],103:[function(_dereq_,module,exports){
15378 +},{"106":106}],102:[function(_dereq_,module,exports){
15379 /**
15380 * Copyright 2013-present, Facebook, Inc.
15381 * All rights reserved.
@@ -15295,12 +15389,12 @@ module.exports = SyntheticDragEvent;
15389
15390 'use strict';
15391
15298 -var _assign = _dereq_(169);
15392 +var _assign = _dereq_(168);
15393
15394 var PooledClass = _dereq_(25);
15395
15302 -var emptyFunction = _dereq_(150);
15303 -var warning = _dereq_(168);
15396 +var emptyFunction = _dereq_(149);
15397 +var warning = _dereq_(167);
15398
15399 var didWarnForAddedNewProperty = false;
15400 var isProxySupported = typeof Proxy === 'function';
@@ -15449,7 +15543,7 @@ _assign(SyntheticEvent.prototype, {
15543 this[shouldBeReleasedProperties[i]] = null;
15544 }
15545 if ("development" !== 'production') {
15452 - var noop = _dereq_(150);
15546 + var noop = _dereq_(149);
15547 Object.defineProperty(this, 'nativeEvent', getPooledWarningPropertyDefinition('nativeEvent', null));
15548 Object.defineProperty(this, 'preventDefault', getPooledWarningPropertyDefinition('preventDefault', noop));
15549 Object.defineProperty(this, 'stopPropagation', getPooledWarningPropertyDefinition('stopPropagation', noop));
@@ -15543,7 +15637,7 @@ function getPooledWarningPropertyDefinition(propName, getVal) {
15637 "development" !== 'production' ? warning(warningCondition, 'This synthetic event is reused for performance reasons. If you\'re seeing this, ' + 'you\'re %s `%s` on a released/nullified synthetic event. %s. ' + 'If you must keep the original synthetic event around, use event.persist(). ' + 'See https://fb.me/react-event-pooling for more information.', action, propName, result) : void 0;
15638 }
15639 }
15546 -},{"150":150,"168":168,"169":169,"25":25}],104:[function(_dereq_,module,exports){
15640 +},{"149":149,"167":167,"168":168,"25":25}],103:[function(_dereq_,module,exports){
15641 /**
15642 * Copyright 2013-present, Facebook, Inc.
15643 * All rights reserved.
@@ -15557,7 +15651,7 @@ function getPooledWarningPropertyDefinition(propName, getVal) {
15651
15652 'use strict';
15653
15560 -var SyntheticUIEvent = _dereq_(110);
15654 +var SyntheticUIEvent = _dereq_(109);
15655
15656 /**
15657 * @interface FocusEvent
@@ -15580,7 +15674,7 @@ function SyntheticFocusEvent(dispatchConfig, dispatchMarker, nativeEvent, native
15674 SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);
15675
15676 module.exports = SyntheticFocusEvent;
15583 -},{"110":110}],105:[function(_dereq_,module,exports){
15677 +},{"109":109}],104:[function(_dereq_,module,exports){
15678 /**
15679 * Copyright 2013-present, Facebook, Inc.
15680 * All rights reserved.
@@ -15594,7 +15688,7 @@ module.exports = SyntheticFocusEvent;
15688
15689 'use strict';
15690
15597 -var SyntheticEvent = _dereq_(103);
15691 +var SyntheticEvent = _dereq_(102);
15692
15693 /**
15694 * @interface Event
@@ -15618,7 +15712,7 @@ function SyntheticInputEvent(dispatchConfig, dispatchMarker, nativeEvent, native
15712 SyntheticEvent.augmentClass(SyntheticInputEvent, InputEventInterface);
15713
15714 module.exports = SyntheticInputEvent;
15621 -},{"103":103}],106:[function(_dereq_,module,exports){
15715 +},{"102":102}],105:[function(_dereq_,module,exports){
15716 /**
15717 * Copyright 2013-present, Facebook, Inc.
15718 * All rights reserved.
@@ -15632,11 +15726,11 @@ module.exports = SyntheticInputEvent;
15726
15727 'use strict';
15728
15635 -var SyntheticUIEvent = _dereq_(110);
15729 +var SyntheticUIEvent = _dereq_(109);
15730
15637 -var getEventCharCode = _dereq_(123);
15638 -var getEventKey = _dereq_(124);
15639 -var getEventModifierState = _dereq_(125);
15731 +var getEventCharCode = _dereq_(122);
15732 +var getEventKey = _dereq_(123);
15733 +var getEventModifierState = _dereq_(124);
15734
15735 /**
15736 * @interface KeyboardEvent
@@ -15703,7 +15797,7 @@ function SyntheticKeyboardEvent(dispatchConfig, dispatchMarker, nativeEvent, nat
15797 SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);
15798
15799 module.exports = SyntheticKeyboardEvent;
15706 -},{"110":110,"123":123,"124":124,"125":125}],107:[function(_dereq_,module,exports){
15800 +},{"109":109,"122":122,"123":123,"124":124}],106:[function(_dereq_,module,exports){
15801 /**
15802 * Copyright 2013-present, Facebook, Inc.
15803 * All rights reserved.
@@ -15717,10 +15811,10 @@ module.exports = SyntheticKeyboardEvent;
15811
15812 'use strict';
15813
15720 -var SyntheticUIEvent = _dereq_(110);
15721 -var ViewportMetrics = _dereq_(113);
15814 +var SyntheticUIEvent = _dereq_(109);
15815 +var ViewportMetrics = _dereq_(112);
15816
15723 -var getEventModifierState = _dereq_(125);
15817 +var getEventModifierState = _dereq_(124);
15818
15819 /**
15820 * @interface MouseEvent
@@ -15776,7 +15870,7 @@ function SyntheticMouseEvent(dispatchConfig, dispatchMarker, nativeEvent, native
15870 SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);
15871
15872 module.exports = SyntheticMouseEvent;
15779 -},{"110":110,"113":113,"125":125}],108:[function(_dereq_,module,exports){
15873 +},{"109":109,"112":112,"124":124}],107:[function(_dereq_,module,exports){
15874 /**
15875 * Copyright 2013-present, Facebook, Inc.
15876 * All rights reserved.
@@ -15790,9 +15884,9 @@ module.exports = SyntheticMouseEvent;
15884
15885 'use strict';
15886
15793 -var SyntheticUIEvent = _dereq_(110);
15887 +var SyntheticUIEvent = _dereq_(109);
15888
15795 -var getEventModifierState = _dereq_(125);
15889 +var getEventModifierState = _dereq_(124);
15890
15891 /**
15892 * @interface TouchEvent
@@ -15822,7 +15916,7 @@ function SyntheticTouchEvent(dispatchConfig, dispatchMarker, nativeEvent, native
15916 SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);
15917
15918 module.exports = SyntheticTouchEvent;
15825 -},{"110":110,"125":125}],109:[function(_dereq_,module,exports){
15919 +},{"109":109,"124":124}],108:[function(_dereq_,module,exports){
15920 /**
15921 * Copyright 2013-present, Facebook, Inc.
15922 * All rights reserved.
@@ -15836,7 +15930,7 @@ module.exports = SyntheticTouchEvent;
15930
15931 'use strict';
15932
15839 -var SyntheticEvent = _dereq_(103);
15933 +var SyntheticEvent = _dereq_(102);
15934
15935 /**
15936 * @interface Event
@@ -15862,7 +15956,7 @@ function SyntheticTransitionEvent(dispatchConfig, dispatchMarker, nativeEvent, n
15956 SyntheticEvent.augmentClass(SyntheticTransitionEvent, TransitionEventInterface);
15957
15958 module.exports = SyntheticTransitionEvent;
15865 -},{"103":103}],110:[function(_dereq_,module,exports){
15959 +},{"102":102}],109:[function(_dereq_,module,exports){
15960 /**
15961 * Copyright 2013-present, Facebook, Inc.
15962 * All rights reserved.
@@ -15876,9 +15970,9 @@ module.exports = SyntheticTransitionEvent;
15970
15971 'use strict';
15972
15879 -var SyntheticEvent = _dereq_(103);
15973 +var SyntheticEvent = _dereq_(102);
15974
15881 -var getEventTarget = _dereq_(126);
15975 +var getEventTarget = _dereq_(125);
15976
15977 /**
15978 * @interface UIEvent
@@ -15922,7 +16016,7 @@ function SyntheticUIEvent(dispatchConfig, dispatchMarker, nativeEvent, nativeEve
16016 SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);
16017
16018 module.exports = SyntheticUIEvent;
15925 -},{"103":103,"126":126}],111:[function(_dereq_,module,exports){
16019 +},{"102":102,"125":125}],110:[function(_dereq_,module,exports){
16020 /**
16021 * Copyright 2013-present, Facebook, Inc.
16022 * All rights reserved.
@@ -15936,7 +16030,7 @@ module.exports = SyntheticUIEvent;
16030
16031 'use strict';
16032
15939 -var SyntheticMouseEvent = _dereq_(107);
16033 +var SyntheticMouseEvent = _dereq_(106);
16034
16035 /**
16036 * @interface WheelEvent
@@ -15977,7 +16071,7 @@ function SyntheticWheelEvent(dispatchConfig, dispatchMarker, nativeEvent, native
16071 SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);
16072
16073 module.exports = SyntheticWheelEvent;
15980 -},{"107":107}],112:[function(_dereq_,module,exports){
16074 +},{"106":106}],111:[function(_dereq_,module,exports){
16075 /**
16076 * Copyright 2013-present, Facebook, Inc.
16077 * All rights reserved.
@@ -15991,7 +16085,7 @@ module.exports = SyntheticWheelEvent;
16085
16086 'use strict';
16087
15994 -var invariant = _dereq_(158);
16088 +var invariant = _dereq_(157);
16089
16090 /**
16091 * `Transaction` creates a black box that is able to wrap any method such that
@@ -16209,7 +16303,7 @@ var Transaction = {
16303 };
16304
16305 module.exports = Transaction;
16212 -},{"158":158}],113:[function(_dereq_,module,exports){
16306 +},{"157":157}],112:[function(_dereq_,module,exports){
16307 /**
16308 * Copyright 2013-present, Facebook, Inc.
16309 * All rights reserved.
@@ -16237,7 +16331,7 @@ var ViewportMetrics = {
16331 };
16332
16333 module.exports = ViewportMetrics;
16240 -},{}],114:[function(_dereq_,module,exports){
16334 +},{}],113:[function(_dereq_,module,exports){
16335 /**
16336 * Copyright 2014-present, Facebook, Inc.
16337 * All rights reserved.
@@ -16251,7 +16345,7 @@ module.exports = ViewportMetrics;
16345
16346 'use strict';
16347
16254 -var invariant = _dereq_(158);
16348 +var invariant = _dereq_(157);
16349
16350 /**
16351 *
@@ -16297,7 +16391,7 @@ function accumulateInto(current, next) {
16391 }
16392
16393 module.exports = accumulateInto;
16300 -},{"158":158}],115:[function(_dereq_,module,exports){
16394 +},{"157":157}],114:[function(_dereq_,module,exports){
16395 /**
16396 * Copyright 2013-present, Facebook, Inc.
16397 * All rights reserved.
@@ -16341,7 +16435,7 @@ function adler32(data) {
16435 }
16436
16437 module.exports = adler32;
16344 -},{}],116:[function(_dereq_,module,exports){
16438 +},{}],115:[function(_dereq_,module,exports){
16439 /**
16440 * Copyright 2013-present, Facebook, Inc.
16441 * All rights reserved.
@@ -16366,7 +16460,7 @@ if ("development" !== 'production') {
16460 }
16461
16462 module.exports = canDefineProperty;
16369 -},{}],117:[function(_dereq_,module,exports){
16463 +},{}],116:[function(_dereq_,module,exports){
16464 /**
16465 * Copyright 2013-present, Facebook, Inc.
16466 * All rights reserved.
@@ -16399,7 +16493,7 @@ var createMicrosoftUnsafeLocalFunction = function (func) {
16493 };
16494
16495 module.exports = createMicrosoftUnsafeLocalFunction;
16402 -},{}],118:[function(_dereq_,module,exports){
16496 +},{}],117:[function(_dereq_,module,exports){
16497 /**
16498 * Copyright 2013-present, Facebook, Inc.
16499 * All rights reserved.
@@ -16414,7 +16508,7 @@ module.exports = createMicrosoftUnsafeLocalFunction;
16508 'use strict';
16509
16510 var CSSProperty = _dereq_(3);
16417 -var warning = _dereq_(168);
16511 +var warning = _dereq_(167);
16512
16513 var isUnitlessNumber = CSSProperty.isUnitlessNumber;
16514 var styleWarnings = {};
@@ -16477,7 +16571,7 @@ function dangerousStyleValue(name, value, component) {
16571 }
16572
16573 module.exports = dangerousStyleValue;
16480 -},{"168":168,"3":3}],119:[function(_dereq_,module,exports){
16574 +},{"167":167,"3":3}],118:[function(_dereq_,module,exports){
16575 /**
16576 * Copyright 2013-present, Facebook, Inc.
16577 * All rights reserved.
@@ -16516,7 +16610,7 @@ function escapeTextContentForBrowser(text) {
16610 }
16611
16612 module.exports = escapeTextContentForBrowser;
16519 -},{}],120:[function(_dereq_,module,exports){
16613 +},{}],119:[function(_dereq_,module,exports){
16614 /**
16615 * Copyright 2013-present, Facebook, Inc.
16616 * All rights reserved.
@@ -16530,17 +16624,19 @@ module.exports = escapeTextContentForBrowser;
16624
16625 'use strict';
16626
16533 -var ReactCurrentOwner = _dereq_(35);
16534 -var ReactDOMComponentTree = _dereq_(40);
16535 -var ReactInstanceMap = _dereq_(71);
16627 +var ReactCurrentOwner = _dereq_(36);
16628 +var ReactDOMComponentTree = _dereq_(41);
16629 +var ReactInstanceMap = _dereq_(70);
16630
16537 -var getNativeComponentFromComposite = _dereq_(128);
16538 -var invariant = _dereq_(158);
16539 -var warning = _dereq_(168);
16631 +var getNativeComponentFromComposite = _dereq_(127);
16632 +var invariant = _dereq_(157);
16633 +var warning = _dereq_(167);
16634
16635 /**
16636 * Returns the DOM node rendered by this element.
16637 *
16638 + * See https://facebook.github.io/react/docs/top-level-api.html#reactdom.finddomnode
16639 + *
16640 * @param {ReactComponent|DOMElement} componentOrElement
16641 * @return {?DOMElement} The root node of this element.
16642 */
@@ -16573,7 +16669,7 @@ function findDOMNode(componentOrElement) {
16669 }
16670
16671 module.exports = findDOMNode;
16576 -},{"128":128,"158":158,"168":168,"35":35,"40":40,"71":71}],121:[function(_dereq_,module,exports){
16672 +},{"127":127,"157":157,"167":167,"36":36,"41":41,"70":70}],120:[function(_dereq_,module,exports){
16673 /**
16674 * Copyright 2013-present, Facebook, Inc.
16675 * All rights reserved.
@@ -16588,8 +16684,8 @@ module.exports = findDOMNode;
16684 'use strict';
16685
16686 var KeyEscapeUtils = _dereq_(23);
16591 -var traverseAllChildren = _dereq_(141);
16592 -var warning = _dereq_(168);
16687 +var traverseAllChildren = _dereq_(140);
16688 +var warning = _dereq_(167);
16689
16690 /**
16691 * @param {function} traverseContext Context passed through traversal.
@@ -16623,7 +16719,7 @@ function flattenChildren(children) {
16719 }
16720
16721 module.exports = flattenChildren;
16626 -},{"141":141,"168":168,"23":23}],122:[function(_dereq_,module,exports){
16722 +},{"140":140,"167":167,"23":23}],121:[function(_dereq_,module,exports){
16723 /**
16724 * Copyright 2013-present, Facebook, Inc.
16725 * All rights reserved.
@@ -16654,7 +16750,7 @@ var forEachAccumulated = function (arr, cb, scope) {
16750 };
16751
16752 module.exports = forEachAccumulated;
16657 -},{}],123:[function(_dereq_,module,exports){
16753 +},{}],122:[function(_dereq_,module,exports){
16754 /**
16755 * Copyright 2013-present, Facebook, Inc.
16756 * All rights reserved.
@@ -16705,7 +16801,7 @@ function getEventCharCode(nativeEvent) {
16801 }
16802
16803 module.exports = getEventCharCode;
16708 -},{}],124:[function(_dereq_,module,exports){
16804 +},{}],123:[function(_dereq_,module,exports){
16805 /**
16806 * Copyright 2013-present, Facebook, Inc.
16807 * All rights reserved.
@@ -16719,7 +16815,7 @@ module.exports = getEventCharCode;
16815
16816 'use strict';
16817
16722 -var getEventCharCode = _dereq_(123);
16818 +var getEventCharCode = _dereq_(122);
16819
16820 /**
16821 * Normalization of deprecated HTML5 `key` values
@@ -16808,7 +16904,7 @@ function getEventKey(nativeEvent) {
16904 }
16905
16906 module.exports = getEventKey;
16811 -},{"123":123}],125:[function(_dereq_,module,exports){
16907 +},{"122":122}],124:[function(_dereq_,module,exports){
16908 /**
16909 * Copyright 2013-present, Facebook, Inc.
16910 * All rights reserved.
@@ -16852,7 +16948,7 @@ function getEventModifierState(nativeEvent) {
16948 }
16949
16950 module.exports = getEventModifierState;
16855 -},{}],126:[function(_dereq_,module,exports){
16951 +},{}],125:[function(_dereq_,module,exports){
16952 /**
16953 * Copyright 2013-present, Facebook, Inc.
16954 * All rights reserved.
@@ -16888,7 +16984,7 @@ function getEventTarget(nativeEvent) {
16984 }
16985
16986 module.exports = getEventTarget;
16891 -},{}],127:[function(_dereq_,module,exports){
16987 +},{}],126:[function(_dereq_,module,exports){
16988 /**
16989 * Copyright 2013-present, Facebook, Inc.
16990 * All rights reserved.
@@ -16929,7 +17025,7 @@ function getIteratorFn(maybeIterable) {
17025 }
17026
17027 module.exports = getIteratorFn;
16932 -},{}],128:[function(_dereq_,module,exports){
17028 +},{}],127:[function(_dereq_,module,exports){
17029 /**
17030 * Copyright 2013-present, Facebook, Inc.
17031 * All rights reserved.
@@ -16960,7 +17056,7 @@ function getNativeComponentFromComposite(inst) {
17056 }
17057
17058 module.exports = getNativeComponentFromComposite;
16963 -},{"79":79}],129:[function(_dereq_,module,exports){
17059 +},{"79":79}],128:[function(_dereq_,module,exports){
17060 /**
17061 * Copyright 2013-present, Facebook, Inc.
17062 * All rights reserved.
@@ -17035,7 +17131,7 @@ function getNodeForCharacterOffset(root, offset) {
17131 }
17132
17133 module.exports = getNodeForCharacterOffset;
17038 -},{}],130:[function(_dereq_,module,exports){
17134 +},{}],129:[function(_dereq_,module,exports){
17135 /**
17136 * Copyright 2013-present, Facebook, Inc.
17137 * All rights reserved.
@@ -17049,7 +17145,7 @@ module.exports = getNodeForCharacterOffset;
17145
17146 'use strict';
17147
17052 -var ExecutionEnvironment = _dereq_(144);
17148 +var ExecutionEnvironment = _dereq_(143);
17149
17150 var contentKey = null;
17151
@@ -17069,7 +17165,7 @@ function getTextContentAccessor() {
17165 }
17166
17167 module.exports = getTextContentAccessor;
17072 -},{"144":144}],131:[function(_dereq_,module,exports){
17168 +},{"143":143}],130:[function(_dereq_,module,exports){
17169 /**
17170 * Copyright 2013-present, Facebook, Inc.
17171 * All rights reserved.
@@ -17083,7 +17179,7 @@ module.exports = getTextContentAccessor;
17179
17180 'use strict';
17181
17086 -var ExecutionEnvironment = _dereq_(144);
17182 +var ExecutionEnvironment = _dereq_(143);
17183
17184 /**
17185 * Generate a mapping of standard vendor prefixes using the defined style property and event name.
@@ -17171,7 +17267,7 @@ function getVendorPrefixedEventName(eventName) {
17267 }
17268
17269 module.exports = getVendorPrefixedEventName;
17174 -},{"144":144}],132:[function(_dereq_,module,exports){
17270 +},{"143":143}],131:[function(_dereq_,module,exports){
17271 /**
17272 * Copyright 2013-present, Facebook, Inc.
17273 * All rights reserved.
@@ -17185,14 +17281,15 @@ module.exports = getVendorPrefixedEventName;
17281
17282 'use strict';
17283
17188 -var _assign = _dereq_(169);
17284 +var _assign = _dereq_(168);
17285
17190 -var ReactCompositeComponent = _dereq_(34);
17191 -var ReactEmptyComponent = _dereq_(64);
17192 -var ReactNativeComponent = _dereq_(78);
17286 +var ReactCompositeComponent = _dereq_(35);
17287 +var ReactEmptyComponent = _dereq_(63);
17288 +var ReactNativeComponent = _dereq_(77);
17289 +var ReactInstrumentation = _dereq_(71);
17290
17194 -var invariant = _dereq_(158);
17195 -var warning = _dereq_(168);
17291 +var invariant = _dereq_(157);
17292 +var warning = _dereq_(167);
17293
17294 // To avoid a cyclic dependency, we create the final class in this module
17295 var ReactCompositeComponentWrapper = function (element) {
@@ -17212,6 +17309,21 @@ function getDeclarationErrorAddendum(owner) {
17309 return '';
17310 }
17311
17312 +function getDisplayName(instance) {
17313 + var element = instance._currentElement;
17314 + if (element == null) {
17315 + return '#empty';
17316 + } else if (typeof element === 'string' || typeof element === 'number') {
17317 + return '#text';
17318 + } else if (typeof element.type === 'string') {
17319 + return element.type;
17320 + } else if (instance.getName) {
17321 + return instance.getName() || 'Unknown';
17322 + } else {
17323 + return element.type.displayName || element.type.name || 'Unknown';
17324 + }
17325 +}
17326 +
17327 /**
17328 * Check if the type reference is a known internal type. I.e. not a user
17329 * provided composite type.
@@ -17223,6 +17335,8 @@ function isInternalComponentType(type) {
17335 return typeof type === 'function' && typeof type.prototype !== 'undefined' && typeof type.prototype.mountComponent === 'function' && typeof type.prototype.receiveComponent === 'function';
17336 }
17337
17338 +var nextDebugID = 1;
17339 +
17340 /**
17341 * Given a ReactNode, create an instance that will actually be mounted.
17342 *
@@ -17233,7 +17347,8 @@ function isInternalComponentType(type) {
17347 function instantiateReactComponent(node) {
17348 var instance;
17349
17236 - if (node === null || node === false) {
17350 + var isEmpty = node === null || node === false;
17351 + if (isEmpty) {
17352 instance = ReactEmptyComponent.create(instantiateReactComponent);
17353 } else if (typeof node === 'object') {
17354 var element = node;
@@ -17271,6 +17386,20 @@ function instantiateReactComponent(node) {
17386 instance._warnedAboutRefsInRender = false;
17387 }
17388
17389 + if ("development" !== 'production') {
17390 + var debugID = isEmpty ? 0 : nextDebugID++;

This file is too large to show in full.