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.