react-source 0.5.2 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,7 @@
1
1
  /**
2
- * React (with addons) v0.5.2
2
+ * React (with addons) v0.8.0
3
3
  */
4
- !function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.React=e():"undefined"!=typeof global?global.React=e():"undefined"!=typeof self&&(self.React=e())}(function(){var define,module,exports;
5
- 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);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.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(require,module,exports){
4
+ !function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.React=e():"undefined"!=typeof global?global.React=e():"undefined"!=typeof self&&(self.React=e())}(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);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.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(require,module,exports){
6
5
  /**
7
6
  * Copyright 2013 Facebook, Inc.
8
7
  *
@@ -50,7 +49,7 @@ function $(id) {
50
49
 
51
50
  module.exports = $;
52
51
 
53
- },{"./ex":94,"./ge":98}],2:[function(require,module,exports){
52
+ },{"./ex":96,"./ge":100}],2:[function(require,module,exports){
54
53
  /**
55
54
  * Copyright 2013 Facebook, Inc.
56
55
  *
@@ -108,11 +107,11 @@ var CSSCore = {
108
107
  * @return {DOMElement} the element passed in
109
108
  */
110
109
  addClass: function(element, className) {
111
- invariant(
110
+ ("production" !== "development" ? invariant(
112
111
  !/\s/.test(className),
113
112
  'CSSCore.addClass takes only a single class name. "%s" contains ' +
114
113
  'multiple classes.', className
115
- );
114
+ ) : invariant(!/\s/.test(className)));
116
115
 
117
116
  if (className) {
118
117
  if (element.classList) {
@@ -132,11 +131,11 @@ var CSSCore = {
132
131
  * @return {DOMElement} the element passed in
133
132
  */
134
133
  removeClass: function(element, className) {
135
- invariant(
134
+ ("production" !== "development" ? invariant(
136
135
  !/\s/.test(className),
137
136
  'CSSCore.removeClass takes only a single class name. "%s" contains ' +
138
137
  'multiple classes.', className
139
- );
138
+ ) : invariant(!/\s/.test(className)));
140
139
 
141
140
  if (className) {
142
141
  if (element.classList) {
@@ -166,7 +165,7 @@ var CSSCore = {
166
165
 
167
166
  module.exports = CSSCore;
168
167
 
169
- },{"./invariant":106}],3:[function(require,module,exports){
168
+ },{"./invariant":109}],3:[function(require,module,exports){
170
169
  /**
171
170
  * Copyright 2013 Facebook, Inc.
172
171
  *
@@ -357,7 +356,7 @@ var CSSPropertyOperations = {
357
356
 
358
357
  module.exports = CSSPropertyOperations;
359
358
 
360
- },{"./CSSProperty":3,"./dangerousStyleValue":91,"./escapeTextForBrowser":93,"./hyphenate":105,"./memoizeStringOnly":114}],5:[function(require,module,exports){
359
+ },{"./CSSProperty":3,"./dangerousStyleValue":93,"./escapeTextForBrowser":95,"./hyphenate":108,"./memoizeStringOnly":117}],5:[function(require,module,exports){
361
360
  /**
362
361
  * Copyright 2013 Facebook, Inc.
363
362
  *
@@ -817,7 +816,7 @@ var ChangeEventPlugin = {
817
816
 
818
817
  module.exports = ChangeEventPlugin;
819
818
 
820
- },{"./EventConstants":15,"./EventPluginHub":17,"./EventPropagators":20,"./ExecutionEnvironment":21,"./SyntheticEvent":75,"./isEventSupported":107,"./isTextInputElement":109,"./keyOf":113}],7:[function(require,module,exports){
819
+ },{"./EventConstants":15,"./EventPluginHub":17,"./EventPropagators":20,"./ExecutionEnvironment":21,"./SyntheticEvent":76,"./isEventSupported":110,"./isTextInputElement":112,"./keyOf":116}],7:[function(require,module,exports){
821
820
  /**
822
821
  * Copyright 2013 Facebook, Inc.
823
822
  *
@@ -1031,7 +1030,7 @@ var CompositionEventPlugin = {
1031
1030
 
1032
1031
  module.exports = CompositionEventPlugin;
1033
1032
 
1034
- },{"./EventConstants":15,"./EventPropagators":20,"./ExecutionEnvironment":21,"./ReactInputSelection":49,"./SyntheticCompositionEvent":74,"./getTextContentAccessor":104,"./keyOf":113}],8:[function(require,module,exports){
1033
+ },{"./EventConstants":15,"./EventPropagators":20,"./ExecutionEnvironment":21,"./ReactInputSelection":50,"./SyntheticCompositionEvent":75,"./getTextContentAccessor":106,"./keyOf":116}],8:[function(require,module,exports){
1035
1034
  /**
1036
1035
  * Copyright 2013 Facebook, Inc.
1037
1036
  *
@@ -1168,7 +1167,7 @@ var DOMChildrenOperations = {
1168
1167
 
1169
1168
  module.exports = DOMChildrenOperations;
1170
1169
 
1171
- },{"./Danger":11,"./ReactMultiChildUpdateTypes":56,"./getTextContentAccessor":104}],9:[function(require,module,exports){
1170
+ },{"./Danger":11,"./ReactMultiChildUpdateTypes":57,"./getTextContentAccessor":106}],9:[function(require,module,exports){
1172
1171
  /**
1173
1172
  * Copyright 2013 Facebook, Inc.
1174
1173
  *
@@ -1200,9 +1199,10 @@ var DOMPropertyInjection = {
1200
1199
  * specifies how the associated DOM property should be accessed or rendered.
1201
1200
  */
1202
1201
  MUST_USE_ATTRIBUTE: 0x1,
1203
- MUST_USE_PROPERTY: 0x2,
1204
- HAS_BOOLEAN_VALUE: 0x4,
1205
- HAS_SIDE_EFFECTS: 0x8,
1202
+ MUST_USE_PROPERTY: 0x2,
1203
+ HAS_SIDE_EFFECTS: 0x4,
1204
+ HAS_BOOLEAN_VALUE: 0x8,
1205
+ HAS_POSITIVE_NUMERIC_VALUE: 0x10,
1206
1206
 
1207
1207
  /**
1208
1208
  * Inject some specialized knowledge about the DOM. This takes a config object
@@ -1242,14 +1242,14 @@ var DOMPropertyInjection = {
1242
1242
  }
1243
1243
 
1244
1244
  for (var propName in Properties) {
1245
- invariant(
1245
+ ("production" !== "development" ? invariant(
1246
1246
  !DOMProperty.isStandardName[propName],
1247
1247
  'injectDOMPropertyConfig(...): You\'re trying to inject DOM property ' +
1248
1248
  '\'%s\' which has already been injected. You may be accidentally ' +
1249
1249
  'injecting the same DOM property config twice, or you may be ' +
1250
1250
  'injecting two configs that have conflicting property names.',
1251
1251
  propName
1252
- );
1252
+ ) : invariant(!DOMProperty.isStandardName[propName]));
1253
1253
 
1254
1254
  DOMProperty.isStandardName[propName] = true;
1255
1255
 
@@ -1276,23 +1276,34 @@ var DOMPropertyInjection = {
1276
1276
  propConfig & DOMPropertyInjection.MUST_USE_ATTRIBUTE;
1277
1277
  DOMProperty.mustUseProperty[propName] =
1278
1278
  propConfig & DOMPropertyInjection.MUST_USE_PROPERTY;
1279
- DOMProperty.hasBooleanValue[propName] =
1280
- propConfig & DOMPropertyInjection.HAS_BOOLEAN_VALUE;
1281
1279
  DOMProperty.hasSideEffects[propName] =
1282
1280
  propConfig & DOMPropertyInjection.HAS_SIDE_EFFECTS;
1281
+ DOMProperty.hasBooleanValue[propName] =
1282
+ propConfig & DOMPropertyInjection.HAS_BOOLEAN_VALUE;
1283
+ DOMProperty.hasPositiveNumericValue[propName] =
1284
+ propConfig & DOMPropertyInjection.HAS_POSITIVE_NUMERIC_VALUE;
1283
1285
 
1284
- invariant(
1286
+ ("production" !== "development" ? invariant(
1285
1287
  !DOMProperty.mustUseAttribute[propName] ||
1286
1288
  !DOMProperty.mustUseProperty[propName],
1287
- 'DOMProperty: Cannot use require using both attribute and property: %s',
1289
+ 'DOMProperty: Cannot require using both attribute and property: %s',
1288
1290
  propName
1289
- );
1290
- invariant(
1291
+ ) : invariant(!DOMProperty.mustUseAttribute[propName] ||
1292
+ !DOMProperty.mustUseProperty[propName]));
1293
+ ("production" !== "development" ? invariant(
1291
1294
  DOMProperty.mustUseProperty[propName] ||
1292
1295
  !DOMProperty.hasSideEffects[propName],
1293
1296
  'DOMProperty: Properties that have side effects must use property: %s',
1294
1297
  propName
1295
- );
1298
+ ) : invariant(DOMProperty.mustUseProperty[propName] ||
1299
+ !DOMProperty.hasSideEffects[propName]));
1300
+ ("production" !== "development" ? invariant(
1301
+ !DOMProperty.hasBooleanValue[propName] ||
1302
+ !DOMProperty.hasPositiveNumericValue[propName],
1303
+ 'DOMProperty: Cannot have both boolean and positive numeric value: %s',
1304
+ propName
1305
+ ) : invariant(!DOMProperty.hasBooleanValue[propName] ||
1306
+ !DOMProperty.hasPositiveNumericValue[propName]));
1296
1307
  }
1297
1308
  }
1298
1309
  };
@@ -1360,6 +1371,14 @@ var DOMProperty = {
1360
1371
  */
1361
1372
  mustUseProperty: {},
1362
1373
 
1374
+ /**
1375
+ * Whether or not setting a value causes side effects such as triggering
1376
+ * resources to be loaded or text selection changes. We must ensure that
1377
+ * the value is only set if it has changed.
1378
+ * @type {Object}
1379
+ */
1380
+ hasSideEffects: {},
1381
+
1363
1382
  /**
1364
1383
  * Whether the property should be removed when set to a falsey value.
1365
1384
  * @type {Object}
@@ -1367,12 +1386,11 @@ var DOMProperty = {
1367
1386
  hasBooleanValue: {},
1368
1387
 
1369
1388
  /**
1370
- * Whether or not setting a value causes side effects such as triggering
1371
- * resources to be loaded or text selection changes. We must ensure that
1372
- * the value is only set if it has changed.
1389
+ * Whether the property must be positive numeric or parse as a positive
1390
+ * numeric and should be removed when set to a falsey value.
1373
1391
  * @type {Object}
1374
1392
  */
1375
- hasSideEffects: {},
1393
+ hasPositiveNumericValue: {},
1376
1394
 
1377
1395
  /**
1378
1396
  * All of the isCustomAttribute() functions that have been injected.
@@ -1417,7 +1435,7 @@ var DOMProperty = {
1417
1435
 
1418
1436
  module.exports = DOMProperty;
1419
1437
 
1420
- },{"./invariant":106}],10:[function(require,module,exports){
1438
+ },{"./invariant":109}],10:[function(require,module,exports){
1421
1439
  /**
1422
1440
  * Copyright 2013 Facebook, Inc.
1423
1441
  *
@@ -1444,11 +1462,17 @@ var DOMProperty = require("./DOMProperty");
1444
1462
  var escapeTextForBrowser = require("./escapeTextForBrowser");
1445
1463
  var memoizeStringOnly = require("./memoizeStringOnly");
1446
1464
 
1465
+ function shouldIgnoreValue(name, value) {
1466
+ return value == null ||
1467
+ DOMProperty.hasBooleanValue[name] && !value ||
1468
+ DOMProperty.hasPositiveNumericValue[name] && (isNaN(value) || value < 1);
1469
+ }
1470
+
1447
1471
  var processAttributeNameAndPrefix = memoizeStringOnly(function(name) {
1448
1472
  return escapeTextForBrowser(name) + '="';
1449
1473
  });
1450
1474
 
1451
- if (true) {
1475
+ if ("production" !== "development") {
1452
1476
  var reactProps = {
1453
1477
  __owner__: true,
1454
1478
  children: true,
@@ -1495,7 +1519,7 @@ var DOMPropertyOperations = {
1495
1519
  */
1496
1520
  createMarkupForProperty: function(name, value) {
1497
1521
  if (DOMProperty.isStandardName[name]) {
1498
- if (value == null || DOMProperty.hasBooleanValue[name] && !value) {
1522
+ if (shouldIgnoreValue(name, value)) {
1499
1523
  return '';
1500
1524
  }
1501
1525
  var attributeName = DOMProperty.getAttributeName[name];
@@ -1507,7 +1531,7 @@ var DOMPropertyOperations = {
1507
1531
  }
1508
1532
  return processAttributeNameAndPrefix(name) +
1509
1533
  escapeTextForBrowser(value) + '"';
1510
- } else if (true) {
1534
+ } else if ("production" !== "development") {
1511
1535
  warnUnknownProperty(name);
1512
1536
  }
1513
1537
  return null;
@@ -1525,12 +1549,10 @@ var DOMPropertyOperations = {
1525
1549
  var mutationMethod = DOMProperty.getMutationMethod[name];
1526
1550
  if (mutationMethod) {
1527
1551
  mutationMethod(node, value);
1552
+ } else if (shouldIgnoreValue(name, value)) {
1553
+ this.deleteValueForProperty(node, name);
1528
1554
  } else if (DOMProperty.mustUseAttribute[name]) {
1529
- if (DOMProperty.hasBooleanValue[name] && !value) {
1530
- node.removeAttribute(DOMProperty.getAttributeName[name]);
1531
- } else {
1532
- node.setAttribute(DOMProperty.getAttributeName[name], '' + value);
1533
- }
1555
+ node.setAttribute(DOMProperty.getAttributeName[name], '' + value);
1534
1556
  } else {
1535
1557
  var propName = DOMProperty.getPropertyName[name];
1536
1558
  if (!DOMProperty.hasSideEffects[name] || node[propName] !== value) {
@@ -1538,8 +1560,12 @@ var DOMPropertyOperations = {
1538
1560
  }
1539
1561
  }
1540
1562
  } else if (DOMProperty.isCustomAttribute(name)) {
1541
- node.setAttribute(name, '' + value);
1542
- } else if (true) {
1563
+ if (value == null) {
1564
+ node.removeAttribute(DOMProperty.getAttributeName[name]);
1565
+ } else {
1566
+ node.setAttribute(name, '' + value);
1567
+ }
1568
+ } else if ("production" !== "development") {
1543
1569
  warnUnknownProperty(name);
1544
1570
  }
1545
1571
  },
@@ -1559,14 +1585,18 @@ var DOMPropertyOperations = {
1559
1585
  node.removeAttribute(DOMProperty.getAttributeName[name]);
1560
1586
  } else {
1561
1587
  var propName = DOMProperty.getPropertyName[name];
1562
- node[propName] = DOMProperty.getDefaultValueForProperty(
1588
+ var defaultValue = DOMProperty.getDefaultValueForProperty(
1563
1589
  node.nodeName,
1564
1590
  name
1565
1591
  );
1592
+ if (!DOMProperty.hasSideEffects[name] ||
1593
+ node[propName] !== defaultValue) {
1594
+ node[propName] = defaultValue;
1595
+ }
1566
1596
  }
1567
1597
  } else if (DOMProperty.isCustomAttribute(name)) {
1568
1598
  node.removeAttribute(name);
1569
- } else if (true) {
1599
+ } else if ("production" !== "development") {
1570
1600
  warnUnknownProperty(name);
1571
1601
  }
1572
1602
  }
@@ -1575,7 +1605,7 @@ var DOMPropertyOperations = {
1575
1605
 
1576
1606
  module.exports = DOMPropertyOperations;
1577
1607
 
1578
- },{"./DOMProperty":9,"./escapeTextForBrowser":93,"./memoizeStringOnly":114}],11:[function(require,module,exports){
1608
+ },{"./DOMProperty":9,"./escapeTextForBrowser":95,"./memoizeStringOnly":117}],11:[function(require,module,exports){
1579
1609
  /**
1580
1610
  * Copyright 2013 Facebook, Inc.
1581
1611
  *
@@ -1637,20 +1667,20 @@ var Danger = {
1637
1667
  * @internal
1638
1668
  */
1639
1669
  dangerouslyRenderMarkup: function(markupList) {
1640
- invariant(
1670
+ ("production" !== "development" ? invariant(
1641
1671
  ExecutionEnvironment.canUseDOM,
1642
1672
  'dangerouslyRenderMarkup(...): Cannot render markup in a Worker ' +
1643
1673
  'thread. This is likely a bug in the framework. Please report ' +
1644
1674
  'immediately.'
1645
- );
1675
+ ) : invariant(ExecutionEnvironment.canUseDOM));
1646
1676
  var nodeName;
1647
1677
  var markupByNodeName = {};
1648
1678
  // Group markup by `nodeName` if a wrap is necessary, else by '*'.
1649
1679
  for (var i = 0; i < markupList.length; i++) {
1650
- invariant(
1680
+ ("production" !== "development" ? invariant(
1651
1681
  markupList[i],
1652
1682
  'dangerouslyRenderMarkup(...): Missing markup.'
1653
- );
1683
+ ) : invariant(markupList[i]));
1654
1684
  nodeName = getNodeName(markupList[i]);
1655
1685
  nodeName = getMarkupWrap(nodeName) ? nodeName : '*';
1656
1686
  markupByNodeName[nodeName] = markupByNodeName[nodeName] || [];
@@ -1696,10 +1726,10 @@ var Danger = {
1696
1726
  resultIndex = +renderNode.getAttribute(RESULT_INDEX_ATTR);
1697
1727
  renderNode.removeAttribute(RESULT_INDEX_ATTR);
1698
1728
 
1699
- invariant(
1729
+ ("production" !== "development" ? invariant(
1700
1730
  !resultList.hasOwnProperty(resultIndex),
1701
1731
  'Danger: Assigning to an already-occupied result index.'
1702
- );
1732
+ ) : invariant(!resultList.hasOwnProperty(resultIndex)));
1703
1733
 
1704
1734
  resultList[resultIndex] = renderNode;
1705
1735
 
@@ -1707,7 +1737,7 @@ var Danger = {
1707
1737
  // we're done.
1708
1738
  resultListAssignmentCount += 1;
1709
1739
 
1710
- } else if (true) {
1740
+ } else if ("production" !== "development") {
1711
1741
  console.error(
1712
1742
  "Danger: Discarding unexpected node:",
1713
1743
  renderNode
@@ -1718,17 +1748,17 @@ var Danger = {
1718
1748
 
1719
1749
  // Although resultList was populated out of order, it should now be a dense
1720
1750
  // array.
1721
- invariant(
1751
+ ("production" !== "development" ? invariant(
1722
1752
  resultListAssignmentCount === resultList.length,
1723
1753
  'Danger: Did not assign to every index of resultList.'
1724
- );
1754
+ ) : invariant(resultListAssignmentCount === resultList.length));
1725
1755
 
1726
- invariant(
1756
+ ("production" !== "development" ? invariant(
1727
1757
  resultList.length === markupList.length,
1728
1758
  'Danger: Expected markup to render %s nodes, but rendered %s.',
1729
1759
  markupList.length,
1730
1760
  resultList.length
1731
- );
1761
+ ) : invariant(resultList.length === markupList.length));
1732
1762
 
1733
1763
  return resultList;
1734
1764
  },
@@ -1742,13 +1772,13 @@ var Danger = {
1742
1772
  * @internal
1743
1773
  */
1744
1774
  dangerouslyReplaceNodeWithMarkup: function(oldChild, markup) {
1745
- invariant(
1775
+ ("production" !== "development" ? invariant(
1746
1776
  ExecutionEnvironment.canUseDOM,
1747
1777
  'dangerouslyReplaceNodeWithMarkup(...): Cannot render markup in a ' +
1748
1778
  'worker thread. This is likely a bug in the framework. Please report ' +
1749
1779
  'immediately.'
1750
- );
1751
- invariant(markup, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.');
1780
+ ) : invariant(ExecutionEnvironment.canUseDOM));
1781
+ ("production" !== "development" ? invariant(markup, 'dangerouslyReplaceNodeWithMarkup(...): Missing markup.') : invariant(markup));
1752
1782
  // createNodesFromMarkup() won't work if the markup is rooted by <html>
1753
1783
  // since it has special semantic meaning. So we use an alternatie strategy.
1754
1784
  if (oldChild.tagName.toLowerCase() === 'html') {
@@ -1763,7 +1793,7 @@ var Danger = {
1763
1793
 
1764
1794
  module.exports = Danger;
1765
1795
 
1766
- },{"./ExecutionEnvironment":21,"./createNodesFromMarkup":88,"./emptyFunction":92,"./getMarkupWrap":101,"./invariant":106,"./mutateHTMLNodeWithMarkup":119}],12:[function(require,module,exports){
1796
+ },{"./ExecutionEnvironment":21,"./createNodesFromMarkup":90,"./emptyFunction":94,"./getMarkupWrap":103,"./invariant":109,"./mutateHTMLNodeWithMarkup":122}],12:[function(require,module,exports){
1767
1797
  /**
1768
1798
  * Copyright 2013 Facebook, Inc.
1769
1799
  *
@@ -1792,6 +1822,8 @@ var MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE;
1792
1822
  var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;
1793
1823
  var HAS_BOOLEAN_VALUE = DOMProperty.injection.HAS_BOOLEAN_VALUE;
1794
1824
  var HAS_SIDE_EFFECTS = DOMProperty.injection.HAS_SIDE_EFFECTS;
1825
+ var HAS_POSITIVE_NUMERIC_VALUE =
1826
+ DOMProperty.injection.HAS_POSITIVE_NUMERIC_VALUE;
1795
1827
 
1796
1828
  var DefaultDOMPropertyConfig = {
1797
1829
  isCustomAttribute: RegExp.prototype.test.bind(
@@ -1807,6 +1839,7 @@ var DefaultDOMPropertyConfig = {
1807
1839
  allowFullScreen: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
1808
1840
  allowTransparency: MUST_USE_ATTRIBUTE,
1809
1841
  alt: null,
1842
+ async: HAS_BOOLEAN_VALUE,
1810
1843
  autoComplete: null,
1811
1844
  autoFocus: HAS_BOOLEAN_VALUE,
1812
1845
  autoPlay: HAS_BOOLEAN_VALUE,
@@ -1815,6 +1848,7 @@ var DefaultDOMPropertyConfig = {
1815
1848
  charSet: MUST_USE_ATTRIBUTE,
1816
1849
  checked: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
1817
1850
  className: MUST_USE_PROPERTY,
1851
+ cols: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
1818
1852
  colSpan: null,
1819
1853
  content: null,
1820
1854
  contentEditable: null,
@@ -1822,6 +1856,7 @@ var DefaultDOMPropertyConfig = {
1822
1856
  controls: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
1823
1857
  data: null, // For `<object />` acts as `src`.
1824
1858
  dateTime: MUST_USE_ATTRIBUTE,
1859
+ defer: HAS_BOOLEAN_VALUE,
1825
1860
  dir: null,
1826
1861
  disabled: MUST_USE_ATTRIBUTE | HAS_BOOLEAN_VALUE,
1827
1862
  draggable: null,
@@ -1838,6 +1873,7 @@ var DefaultDOMPropertyConfig = {
1838
1873
  label: null,
1839
1874
  lang: null,
1840
1875
  list: null,
1876
+ loop: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
1841
1877
  max: null,
1842
1878
  maxLength: MUST_USE_ATTRIBUTE,
1843
1879
  method: null,
@@ -1853,11 +1889,12 @@ var DefaultDOMPropertyConfig = {
1853
1889
  rel: null,
1854
1890
  required: HAS_BOOLEAN_VALUE,
1855
1891
  role: MUST_USE_ATTRIBUTE,
1892
+ rows: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
1856
1893
  rowSpan: null,
1857
1894
  scrollLeft: MUST_USE_PROPERTY,
1858
1895
  scrollTop: MUST_USE_PROPERTY,
1859
1896
  selected: MUST_USE_PROPERTY | HAS_BOOLEAN_VALUE,
1860
- size: null,
1897
+ size: MUST_USE_ATTRIBUTE | HAS_POSITIVE_NUMERIC_VALUE,
1861
1898
  spellCheck: null,
1862
1899
  src: null,
1863
1900
  step: null,
@@ -1874,6 +1911,7 @@ var DefaultDOMPropertyConfig = {
1874
1911
  * Non-standard Properties
1875
1912
  */
1876
1913
  autoCapitalize: null, // Supported in Mobile Safari for keyboard hints
1914
+ autoCorrect: null, // Supported in Mobile Safari for keyboard hints
1877
1915
 
1878
1916
  /**
1879
1917
  * SVG Properties
@@ -1922,6 +1960,7 @@ var DefaultDOMPropertyConfig = {
1922
1960
  DOMPropertyNames: {
1923
1961
  autoCapitalize: 'autocapitalize',
1924
1962
  autoComplete: 'autocomplete',
1963
+ autoCorrect: 'autocorrect',
1925
1964
  autoFocus: 'autofocus',
1926
1965
  autoPlay: 'autoplay',
1927
1966
  encType: 'enctype',
@@ -1989,7 +2028,7 @@ var DefaultEventPluginOrder = [
1989
2028
 
1990
2029
  module.exports = DefaultEventPluginOrder;
1991
2030
 
1992
- },{"./keyOf":113}],14:[function(require,module,exports){
2031
+ },{"./keyOf":116}],14:[function(require,module,exports){
1993
2032
  /**
1994
2033
  * Copyright 2013 Facebook, Inc.
1995
2034
  *
@@ -2103,7 +2142,7 @@ var EnterLeaveEventPlugin = {
2103
2142
 
2104
2143
  module.exports = EnterLeaveEventPlugin;
2105
2144
 
2106
- },{"./EventConstants":15,"./EventPropagators":20,"./ReactMount":53,"./SyntheticMouseEvent":78,"./keyOf":113}],15:[function(require,module,exports){
2145
+ },{"./EventConstants":15,"./EventPropagators":20,"./ReactMount":54,"./SyntheticMouseEvent":79,"./keyOf":116}],15:[function(require,module,exports){
2107
2146
  /**
2108
2147
  * Copyright 2013 Facebook, Inc.
2109
2148
  *
@@ -2138,6 +2177,7 @@ var topLevelTypes = keyMirror({
2138
2177
  topCompositionEnd: null,
2139
2178
  topCompositionStart: null,
2140
2179
  topCompositionUpdate: null,
2180
+ topContextMenu: null,
2141
2181
  topCopy: null,
2142
2182
  topCut: null,
2143
2183
  topDoubleClick: null,
@@ -2177,7 +2217,7 @@ var EventConstants = {
2177
2217
 
2178
2218
  module.exports = EventConstants;
2179
2219
 
2180
- },{"./keyMirror":112}],16:[function(require,module,exports){
2220
+ },{"./keyMirror":115}],16:[function(require,module,exports){
2181
2221
  /**
2182
2222
  * Copyright 2013 Facebook, Inc.
2183
2223
  *
@@ -2224,10 +2264,10 @@ var EventListener = {
2224
2264
  */
2225
2265
  capture: function(el, handlerBaseName, cb) {
2226
2266
  if (!el.addEventListener) {
2227
- if (true) {
2267
+ if ("production" !== "development") {
2228
2268
  console.error(
2229
- 'You are attempting to use addEventlistener ' +
2230
- 'in a browser that does not support it support it.' +
2269
+ 'You are attempting to use addEventListener ' +
2270
+ 'in a browser that does not support it.' +
2231
2271
  'This likely means that you will not receive events that ' +
2232
2272
  'your application relies on (such as scroll).');
2233
2273
  }
@@ -2417,11 +2457,11 @@ var EventPluginHub = {
2417
2457
  var processingEventQueue = eventQueue;
2418
2458
  eventQueue = null;
2419
2459
  forEachAccumulated(processingEventQueue, executeDispatchesAndRelease);
2420
- invariant(
2460
+ ("production" !== "development" ? invariant(
2421
2461
  !eventQueue,
2422
2462
  'processEventQueue(): Additional events were enqueued while processing ' +
2423
2463
  'an event queue. Support for this has not yet been implemented.'
2424
- );
2464
+ ) : invariant(!eventQueue));
2425
2465
  }
2426
2466
 
2427
2467
  };
@@ -2432,7 +2472,7 @@ if (ExecutionEnvironment.canUseDOM) {
2432
2472
 
2433
2473
  module.exports = EventPluginHub;
2434
2474
 
2435
- },{"./CallbackRegistry":5,"./EventPluginRegistry":18,"./EventPluginUtils":19,"./EventPropagators":20,"./ExecutionEnvironment":21,"./accumulate":84,"./forEachAccumulated":97,"./invariant":106}],18:[function(require,module,exports){
2475
+ },{"./CallbackRegistry":5,"./EventPluginRegistry":18,"./EventPluginUtils":19,"./EventPropagators":20,"./ExecutionEnvironment":21,"./accumulate":85,"./forEachAccumulated":99,"./invariant":109}],18:[function(require,module,exports){
2436
2476
  /**
2437
2477
  * Copyright 2013 Facebook, Inc.
2438
2478
  *
@@ -2479,30 +2519,30 @@ function recomputePluginOrdering() {
2479
2519
  for (var pluginName in namesToPlugins) {
2480
2520
  var PluginModule = namesToPlugins[pluginName];
2481
2521
  var pluginIndex = EventPluginOrder.indexOf(pluginName);
2482
- invariant(
2522
+ ("production" !== "development" ? invariant(
2483
2523
  pluginIndex > -1,
2484
2524
  'EventPluginRegistry: Cannot inject event plugins that do not exist in ' +
2485
2525
  'the plugin ordering, `%s`.',
2486
2526
  pluginName
2487
- );
2527
+ ) : invariant(pluginIndex > -1));
2488
2528
  if (EventPluginRegistry.plugins[pluginIndex]) {
2489
2529
  continue;
2490
2530
  }
2491
- invariant(
2531
+ ("production" !== "development" ? invariant(
2492
2532
  PluginModule.extractEvents,
2493
2533
  'EventPluginRegistry: Event plugins must implement an `extractEvents` ' +
2494
2534
  'method, but `%s` does not.',
2495
2535
  pluginName
2496
- );
2536
+ ) : invariant(PluginModule.extractEvents));
2497
2537
  EventPluginRegistry.plugins[pluginIndex] = PluginModule;
2498
2538
  var publishedEvents = PluginModule.eventTypes;
2499
2539
  for (var eventName in publishedEvents) {
2500
- invariant(
2540
+ ("production" !== "development" ? invariant(
2501
2541
  publishEventForPlugin(publishedEvents[eventName], PluginModule),
2502
2542
  'EventPluginRegistry: Failed to publish event `%s` for plugin `%s`.',
2503
2543
  eventName,
2504
2544
  pluginName
2505
- );
2545
+ ) : invariant(publishEventForPlugin(publishedEvents[eventName], PluginModule)));
2506
2546
  }
2507
2547
  }
2508
2548
  }
@@ -2541,14 +2581,13 @@ function publishEventForPlugin(dispatchConfig, PluginModule) {
2541
2581
  * @private
2542
2582
  */
2543
2583
  function publishRegistrationName(registrationName, PluginModule) {
2544
- invariant(
2584
+ ("production" !== "development" ? invariant(
2545
2585
  !EventPluginRegistry.registrationNames[registrationName],
2546
2586
  'EventPluginHub: More than one plugin attempted to publish the same ' +
2547
2587
  'registration name, `%s`.',
2548
2588
  registrationName
2549
- );
2589
+ ) : invariant(!EventPluginRegistry.registrationNames[registrationName]));
2550
2590
  EventPluginRegistry.registrationNames[registrationName] = PluginModule;
2551
- EventPluginRegistry.registrationNamesKeys.push(registrationName);
2552
2591
  }
2553
2592
 
2554
2593
  /**
@@ -2568,11 +2607,6 @@ var EventPluginRegistry = {
2568
2607
  */
2569
2608
  registrationNames: {},
2570
2609
 
2571
- /**
2572
- * The keys of `registrationNames`.
2573
- */
2574
- registrationNamesKeys: [],
2575
-
2576
2610
  /**
2577
2611
  * Injects an ordering of plugins (by plugin name). This allows the ordering
2578
2612
  * to be decoupled from injection of the actual plugins so that ordering is
@@ -2583,10 +2617,10 @@ var EventPluginRegistry = {
2583
2617
  * @see {EventPluginHub.injection.injectEventPluginOrder}
2584
2618
  */
2585
2619
  injectEventPluginOrder: function(InjectedEventPluginOrder) {
2586
- invariant(
2620
+ ("production" !== "development" ? invariant(
2587
2621
  !EventPluginOrder,
2588
2622
  'EventPluginRegistry: Cannot inject event plugin ordering more than once.'
2589
- );
2623
+ ) : invariant(!EventPluginOrder));
2590
2624
  // Clone the ordering so it cannot be dynamically mutated.
2591
2625
  EventPluginOrder = Array.prototype.slice.call(InjectedEventPluginOrder);
2592
2626
  recomputePluginOrdering();
@@ -2610,12 +2644,12 @@ var EventPluginRegistry = {
2610
2644
  }
2611
2645
  var PluginModule = injectedNamesToPlugins[pluginName];
2612
2646
  if (namesToPlugins[pluginName] !== PluginModule) {
2613
- invariant(
2647
+ ("production" !== "development" ? invariant(
2614
2648
  !namesToPlugins[pluginName],
2615
2649
  'EventPluginRegistry: Cannot inject two different event plugins ' +
2616
2650
  'using the same name, `%s`.',
2617
2651
  pluginName
2618
- );
2652
+ ) : invariant(!namesToPlugins[pluginName]));
2619
2653
  namesToPlugins[pluginName] = PluginModule;
2620
2654
  isOrderingDirty = true;
2621
2655
  }
@@ -2671,14 +2705,13 @@ var EventPluginRegistry = {
2671
2705
  delete registrationNames[registrationName];
2672
2706
  }
2673
2707
  }
2674
- EventPluginRegistry.registrationNamesKeys.length = 0;
2675
2708
  }
2676
2709
 
2677
2710
  };
2678
2711
 
2679
2712
  module.exports = EventPluginRegistry;
2680
2713
 
2681
- },{"./invariant":106}],19:[function(require,module,exports){
2714
+ },{"./invariant":109}],19:[function(require,module,exports){
2682
2715
  /**
2683
2716
  * Copyright 2013 Facebook, Inc.
2684
2717
  *
@@ -2721,7 +2754,7 @@ function isStartish(topLevelType) {
2721
2754
  }
2722
2755
 
2723
2756
  var validateEventDispatches;
2724
- if (true) {
2757
+ if ("production" !== "development") {
2725
2758
  validateEventDispatches = function(event) {
2726
2759
  var dispatchListeners = event._dispatchListeners;
2727
2760
  var dispatchIDs = event._dispatchIDs;
@@ -2733,10 +2766,10 @@ if (true) {
2733
2766
  dispatchListeners.length :
2734
2767
  dispatchListeners ? 1 : 0;
2735
2768
 
2736
- invariant(
2769
+ ("production" !== "development" ? invariant(
2737
2770
  idsIsArr === listenersIsArr && IDsLen === listenersLen,
2738
2771
  'EventPluginUtils: Invalid `event`.'
2739
- );
2772
+ ) : invariant(idsIsArr === listenersIsArr && IDsLen === listenersLen));
2740
2773
  };
2741
2774
  }
2742
2775
 
@@ -2748,7 +2781,7 @@ if (true) {
2748
2781
  function forEachEventDispatch(event, cb) {
2749
2782
  var dispatchListeners = event._dispatchListeners;
2750
2783
  var dispatchIDs = event._dispatchIDs;
2751
- if (true) {
2784
+ if ("production" !== "development") {
2752
2785
  validateEventDispatches(event);
2753
2786
  }
2754
2787
  if (Array.isArray(dispatchListeners)) {
@@ -2793,7 +2826,7 @@ function executeDispatchesInOrder(event, executeDispatch) {
2793
2826
  function executeDispatchesInOrderStopAtTrue(event) {
2794
2827
  var dispatchListeners = event._dispatchListeners;
2795
2828
  var dispatchIDs = event._dispatchIDs;
2796
- if (true) {
2829
+ if ("production" !== "development") {
2797
2830
  validateEventDispatches(event);
2798
2831
  }
2799
2832
  if (Array.isArray(dispatchListeners)) {
@@ -2824,15 +2857,15 @@ function executeDispatchesInOrderStopAtTrue(event) {
2824
2857
  * @return The return value of executing the single dispatch.
2825
2858
  */
2826
2859
  function executeDirectDispatch(event) {
2827
- if (true) {
2860
+ if ("production" !== "development") {
2828
2861
  validateEventDispatches(event);
2829
2862
  }
2830
2863
  var dispatchListener = event._dispatchListeners;
2831
2864
  var dispatchID = event._dispatchIDs;
2832
- invariant(
2865
+ ("production" !== "development" ? invariant(
2833
2866
  !Array.isArray(dispatchListener),
2834
2867
  'executeDirectDispatch(...): Invalid `event`.'
2835
- );
2868
+ ) : invariant(!Array.isArray(dispatchListener)));
2836
2869
  var res = dispatchListener ?
2837
2870
  dispatchListener(event, dispatchID) :
2838
2871
  null;
@@ -2865,7 +2898,7 @@ var EventPluginUtils = {
2865
2898
 
2866
2899
  module.exports = EventPluginUtils;
2867
2900
 
2868
- },{"./EventConstants":15,"./invariant":106}],20:[function(require,module,exports){
2901
+ },{"./EventConstants":15,"./invariant":109}],20:[function(require,module,exports){
2869
2902
  /**
2870
2903
  * Copyright 2013 Facebook, Inc.
2871
2904
  *
@@ -2906,7 +2939,7 @@ var injection = {
2906
2939
  InstanceHandle: null,
2907
2940
  injectInstanceHandle: function(InjectedInstanceHandle) {
2908
2941
  injection.InstanceHandle = InjectedInstanceHandle;
2909
- if (true) {
2942
+ if ("production" !== "development") {
2910
2943
  injection.validate();
2911
2944
  }
2912
2945
  },
@@ -2937,7 +2970,7 @@ function listenerAtPhase(id, event, propagationPhase) {
2937
2970
  * "dispatch" object that pairs the event with the listener.
2938
2971
  */
2939
2972
  function accumulateDirectionalDispatches(domID, upwards, event) {
2940
- if (true) {
2973
+ if ("production" !== "development") {
2941
2974
  if (!domID) {
2942
2975
  throw new Error('Dispatching id must not be null');
2943
2976
  }
@@ -2997,14 +3030,14 @@ function accumulateDirectDispatchesSingle(event) {
2997
3030
  }
2998
3031
 
2999
3032
  function accumulateTwoPhaseDispatches(events) {
3000
- if (true) {
3033
+ if ("production" !== "development") {
3001
3034
  injection.validate();
3002
3035
  }
3003
3036
  forEachAccumulated(events, accumulateTwoPhaseDispatchesSingle);
3004
3037
  }
3005
3038
 
3006
3039
  function accumulateEnterLeaveDispatches(leave, enter, fromID, toID) {
3007
- if (true) {
3040
+ if ("production" !== "development") {
3008
3041
  injection.validate();
3009
3042
  }
3010
3043
  injection.InstanceHandle.traverseEnterLeave(
@@ -3018,7 +3051,7 @@ function accumulateEnterLeaveDispatches(leave, enter, fromID, toID) {
3018
3051
 
3019
3052
 
3020
3053
  function accumulateDirectDispatches(events) {
3021
- if (true) {
3054
+ if ("production" !== "development") {
3022
3055
  injection.validate();
3023
3056
  }
3024
3057
  forEachAccumulated(events, accumulateDirectDispatchesSingle);
@@ -3046,7 +3079,7 @@ var EventPropagators = {
3046
3079
 
3047
3080
  module.exports = EventPropagators;
3048
3081
 
3049
- },{"./CallbackRegistry":5,"./EventConstants":15,"./accumulate":84,"./forEachAccumulated":97}],21:[function(require,module,exports){
3082
+ },{"./CallbackRegistry":5,"./EventConstants":15,"./accumulate":85,"./forEachAccumulated":99}],21:[function(require,module,exports){
3050
3083
  /**
3051
3084
  * Copyright 2013 Facebook, Inc.
3052
3085
  *
@@ -3137,7 +3170,7 @@ var LinkedStateMixin = {
3137
3170
 
3138
3171
  module.exports = LinkedStateMixin;
3139
3172
 
3140
- },{"./ReactLink":51,"./ReactStateSetters":63}],23:[function(require,module,exports){
3173
+ },{"./ReactLink":52,"./ReactStateSetters":64}],23:[function(require,module,exports){
3141
3174
  /**
3142
3175
  * Copyright 2013 Facebook, Inc.
3143
3176
  *
@@ -3167,12 +3200,12 @@ var invariant = require("./invariant");
3167
3200
  */
3168
3201
  var LinkedValueMixin = {
3169
3202
  _assertLink: function() {
3170
- invariant(
3203
+ ("production" !== "development" ? invariant(
3171
3204
  this.props.value == null && this.props.onChange == null,
3172
3205
  'Cannot provide a valueLink and a value or onChange event. If you ' +
3173
3206
  'want to use value or onChange, you probably don\'t want to use ' +
3174
3207
  'valueLink'
3175
- );
3208
+ ) : invariant(this.props.value == null && this.props.onChange == null));
3176
3209
  },
3177
3210
 
3178
3211
  /**
@@ -3207,7 +3240,7 @@ var LinkedValueMixin = {
3207
3240
 
3208
3241
  module.exports = LinkedValueMixin;
3209
3242
 
3210
- },{"./invariant":106}],24:[function(require,module,exports){
3243
+ },{"./invariant":109}],24:[function(require,module,exports){
3211
3244
  /**
3212
3245
  * Copyright 2013 Facebook, Inc.
3213
3246
  *
@@ -3272,7 +3305,7 @@ var MobileSafariClickEventPlugin = {
3272
3305
 
3273
3306
  module.exports = MobileSafariClickEventPlugin;
3274
3307
 
3275
- },{"./EventConstants":15,"./emptyFunction":92}],25:[function(require,module,exports){
3308
+ },{"./EventConstants":15,"./emptyFunction":94}],25:[function(require,module,exports){
3276
3309
  /**
3277
3310
  * Copyright 2013 Facebook, Inc.
3278
3311
  *
@@ -3456,11 +3489,11 @@ var React = {
3456
3489
 
3457
3490
  // Version exists only in the open-source version of React, not in Facebook's
3458
3491
  // internal version.
3459
- React.version = '0.5.2';
3492
+ React.version = '0.8.0';
3460
3493
 
3461
3494
  module.exports = React;
3462
3495
 
3463
- },{"./ReactComponent":28,"./ReactCompositeComponent":31,"./ReactCurrentOwner":32,"./ReactDOM":33,"./ReactDOMComponent":35,"./ReactDefaultInjection":44,"./ReactInstanceHandles":50,"./ReactMount":53,"./ReactMultiChild":55,"./ReactPerf":58,"./ReactPropTypes":60,"./ReactServerRendering":62,"./ReactTextComponent":64}],27:[function(require,module,exports){
3496
+ },{"./ReactComponent":28,"./ReactCompositeComponent":31,"./ReactCurrentOwner":32,"./ReactDOM":33,"./ReactDOMComponent":35,"./ReactDefaultInjection":44,"./ReactInstanceHandles":51,"./ReactMount":54,"./ReactMultiChild":56,"./ReactPerf":59,"./ReactPropTypes":61,"./ReactServerRendering":63,"./ReactTextComponent":65}],27:[function(require,module,exports){
3464
3497
  /**
3465
3498
  * Copyright 2013 Facebook, Inc.
3466
3499
  *
@@ -3552,12 +3585,12 @@ function mapSingleChildIntoContext(traverseContext, child, name, i) {
3552
3585
  var mappedChild =
3553
3586
  mapBookKeeping.mapFunction.call(mapBookKeeping.mapContext, child, i);
3554
3587
  // We found a component instance
3555
- invariant(
3588
+ ("production" !== "development" ? invariant(
3556
3589
  !mapResult.hasOwnProperty(name),
3557
3590
  'ReactChildren.map(...): Encountered two children with the same key, ' +
3558
3591
  '`%s`. Children keys must be unique.',
3559
3592
  name
3560
- );
3593
+ ) : invariant(!mapResult.hasOwnProperty(name)));
3561
3594
  mapResult[name] = mappedChild;
3562
3595
  }
3563
3596
 
@@ -3594,7 +3627,7 @@ var ReactChildren = {
3594
3627
 
3595
3628
  module.exports = ReactChildren;
3596
3629
 
3597
- },{"./PooledClass":25,"./invariant":106,"./traverseAllChildren":125}],28:[function(require,module,exports){
3630
+ },{"./PooledClass":25,"./invariant":109,"./traverseAllChildren":127}],28:[function(require,module,exports){
3598
3631
  /**
3599
3632
  * Copyright 2013 Facebook, Inc.
3600
3633
  *
@@ -3724,8 +3757,8 @@ function validateChildKeys(component) {
3724
3757
  * `mountComponent`
3725
3758
  * Initializes the component, renders markup, and registers event listeners.
3726
3759
  *
3727
- * `receiveProps`
3728
- * Updates the rendered DOM nodes given a new set of props.
3760
+ * `receiveComponent`
3761
+ * Updates the rendered DOM nodes to match the given component.
3729
3762
  *
3730
3763
  * `unmountComponent`
3731
3764
  * Releases any resources allocated by this component.
@@ -3748,7 +3781,7 @@ var ReactComponent = {
3748
3781
  return !!(
3749
3782
  object &&
3750
3783
  typeof object.mountComponentIntoNode === 'function' &&
3751
- typeof object.receiveProps === 'function'
3784
+ typeof object.receiveComponent === 'function'
3752
3785
  );
3753
3786
  },
3754
3787
 
@@ -3856,18 +3889,18 @@ var ReactComponent = {
3856
3889
  * @public
3857
3890
  */
3858
3891
  replaceProps: function(props, callback) {
3859
- invariant(
3892
+ ("production" !== "development" ? invariant(
3860
3893
  !this.props.__owner__,
3861
3894
  'replaceProps(...): You called `setProps` or `replaceProps` on a ' +
3862
3895
  'component with an owner. This is an anti-pattern since props will ' +
3863
3896
  'get reactively updated when rendered. Instead, change the owner\'s ' +
3864
3897
  '`render` method to pass the correct value as props to the component ' +
3865
3898
  'where it is created.'
3866
- );
3867
- invariant(
3899
+ ) : invariant(!this.props.__owner__));
3900
+ ("production" !== "development" ? invariant(
3868
3901
  this.isMounted(),
3869
3902
  'replaceProps(...): Can only update a mounted component.'
3870
- );
3903
+ ) : invariant(this.isMounted()));
3871
3904
  this._pendingProps = props;
3872
3905
  ReactUpdates.enqueueUpdate(this, callback);
3873
3906
  },
@@ -3895,14 +3928,14 @@ var ReactComponent = {
3895
3928
  // Children can be more than one argument
3896
3929
  var childrenLength = arguments.length - 1;
3897
3930
  if (childrenLength === 1) {
3898
- if (true) {
3931
+ if ("production" !== "development") {
3899
3932
  validateChildKeys(children);
3900
3933
  }
3901
3934
  this.props.children = children;
3902
3935
  } else if (childrenLength > 1) {
3903
3936
  var childArray = Array(childrenLength);
3904
3937
  for (var i = 0; i < childrenLength; i++) {
3905
- if (true) {
3938
+ if ("production" !== "development") {
3906
3939
  validateChildKeys(arguments[i + 1]);
3907
3940
  }
3908
3941
  childArray[i] = arguments[i + 1];
@@ -3926,11 +3959,11 @@ var ReactComponent = {
3926
3959
  * @internal
3927
3960
  */
3928
3961
  mountComponent: function(rootID, transaction, mountDepth) {
3929
- invariant(
3962
+ ("production" !== "development" ? invariant(
3930
3963
  !this.isMounted(),
3931
3964
  'mountComponent(%s, ...): Can only mount an unmounted component.',
3932
3965
  rootID
3933
- );
3966
+ ) : invariant(!this.isMounted()));
3934
3967
  var props = this.props;
3935
3968
  if (props.ref != null) {
3936
3969
  ReactOwner.addComponentAsRefTo(this, props.ref, props.__owner__);
@@ -3952,10 +3985,10 @@ var ReactComponent = {
3952
3985
  * @internal
3953
3986
  */
3954
3987
  unmountComponent: function() {
3955
- invariant(
3988
+ ("production" !== "development" ? invariant(
3956
3989
  this.isMounted(),
3957
3990
  'unmountComponent(): Can only unmount a mounted component.'
3958
- );
3991
+ ) : invariant(this.isMounted()));
3959
3992
  var props = this.props;
3960
3993
  if (props.ref != null) {
3961
3994
  ReactOwner.removeComponentAsRefFrom(this, props.ref, props.__owner__);
@@ -3966,21 +3999,22 @@ var ReactComponent = {
3966
3999
  },
3967
4000
 
3968
4001
  /**
3969
- * Updates the rendered DOM nodes given a new set of props.
4002
+ * Given a new instance of this component, updates the rendered DOM nodes
4003
+ * as if that instance was rendered instead.
3970
4004
  *
3971
4005
  * Subclasses that override this method should make sure to invoke
3972
- * `ReactComponent.Mixin.receiveProps.call(this, ...)`.
4006
+ * `ReactComponent.Mixin.receiveComponent.call(this, ...)`.
3973
4007
  *
3974
- * @param {object} nextProps Next set of properties.
4008
+ * @param {object} nextComponent Next set of properties.
3975
4009
  * @param {ReactReconcileTransaction} transaction
3976
4010
  * @internal
3977
4011
  */
3978
- receiveProps: function(nextProps, transaction) {
3979
- invariant(
4012
+ receiveComponent: function(nextComponent, transaction) {
4013
+ ("production" !== "development" ? invariant(
3980
4014
  this.isMounted(),
3981
- 'receiveProps(...): Can only update a mounted component.'
3982
- );
3983
- this._pendingProps = nextProps;
4015
+ 'receiveComponent(...): Can only update a mounted component.'
4016
+ ) : invariant(this.isMounted()));
4017
+ this._pendingProps = nextComponent.props;
3984
4018
  this._performUpdateIfNecessary(transaction);
3985
4019
  },
3986
4020
 
@@ -4110,7 +4144,7 @@ var ReactComponent = {
4110
4144
 
4111
4145
  module.exports = ReactComponent;
4112
4146
 
4113
- },{"./ReactComponentEnvironment":30,"./ReactCurrentOwner":32,"./ReactOwner":57,"./ReactUpdates":69,"./invariant":106,"./keyMirror":112,"./merge":115}],29:[function(require,module,exports){
4147
+ },{"./ReactComponentEnvironment":30,"./ReactCurrentOwner":32,"./ReactOwner":58,"./ReactUpdates":70,"./invariant":109,"./keyMirror":115,"./merge":118}],29:[function(require,module,exports){
4114
4148
  /**
4115
4149
  * Copyright 2013 Facebook, Inc.
4116
4150
  *
@@ -4164,10 +4198,10 @@ var ReactComponentBrowserEnvironment = {
4164
4198
  * @protected
4165
4199
  */
4166
4200
  getDOMNode: function() {
4167
- invariant(
4201
+ ("production" !== "development" ? invariant(
4168
4202
  this.isMounted(),
4169
4203
  'getDOMNode(): A component must be mounted to have a DOM node.'
4170
- );
4204
+ ) : invariant(this.isMounted()));
4171
4205
  return ReactMount.getNode(this._rootNodeID);
4172
4206
  }
4173
4207
  },
@@ -4194,20 +4228,23 @@ var ReactComponentBrowserEnvironment = {
4194
4228
  * container if possible.
4195
4229
  */
4196
4230
  mountImageIntoNode: function(markup, container, shouldReuseMarkup) {
4197
- invariant(
4231
+ ("production" !== "development" ? invariant(
4198
4232
  container && (
4199
4233
  container.nodeType === ELEMENT_NODE_TYPE ||
4200
4234
  container.nodeType === DOC_NODE_TYPE && ReactMount.allowFullPageRender
4201
4235
  ),
4202
4236
  'mountComponentIntoNode(...): Target container is not valid.'
4203
- );
4237
+ ) : invariant(container && (
4238
+ container.nodeType === ELEMENT_NODE_TYPE ||
4239
+ container.nodeType === DOC_NODE_TYPE && ReactMount.allowFullPageRender
4240
+ )));
4204
4241
  if (shouldReuseMarkup) {
4205
4242
  if (ReactMarkupChecksum.canReuseMarkup(
4206
4243
  markup,
4207
4244
  getReactRootElementInContainer(container))) {
4208
4245
  return;
4209
4246
  } else {
4210
- if (true) {
4247
+ if ("production" !== "development") {
4211
4248
  console.warn(
4212
4249
  'React attempted to use reuse markup in a container but the ' +
4213
4250
  'checksum was invalid. This generally means that you are using ' +
@@ -4249,7 +4286,7 @@ var ReactComponentBrowserEnvironment = {
4249
4286
 
4250
4287
  module.exports = ReactComponentBrowserEnvironment;
4251
4288
 
4252
- },{"./ReactDOMIDOperations":37,"./ReactMarkupChecksum":52,"./ReactMount":53,"./ReactReconcileTransaction":61,"./getReactRootElementInContainer":103,"./invariant":106,"./mutateHTMLNodeWithMarkup":119}],30:[function(require,module,exports){
4289
+ },{"./ReactDOMIDOperations":37,"./ReactMarkupChecksum":53,"./ReactMount":54,"./ReactReconcileTransaction":62,"./getReactRootElementInContainer":105,"./invariant":109,"./mutateHTMLNodeWithMarkup":122}],30:[function(require,module,exports){
4253
4290
  /**
4254
4291
  * Copyright 2013 Facebook, Inc.
4255
4292
  *
@@ -4298,6 +4335,7 @@ module.exports = ReactComponentEnvironment;
4298
4335
 
4299
4336
  var ReactComponent = require("./ReactComponent");
4300
4337
  var ReactCurrentOwner = require("./ReactCurrentOwner");
4338
+ var ReactErrorUtils = require("./ReactErrorUtils");
4301
4339
  var ReactOwner = require("./ReactOwner");
4302
4340
  var ReactPerf = require("./ReactPerf");
4303
4341
  var ReactPropTransferer = require("./ReactPropTransferer");
@@ -4574,42 +4612,47 @@ function validateMethodOverride(proto, name) {
4574
4612
 
4575
4613
  // Disallow overriding of base class methods unless explicitly allowed.
4576
4614
  if (ReactCompositeComponentMixin.hasOwnProperty(name)) {
4577
- invariant(
4615
+ ("production" !== "development" ? invariant(
4578
4616
  specPolicy === SpecPolicy.OVERRIDE_BASE,
4579
4617
  'ReactCompositeComponentInterface: You are attempting to override ' +
4580
4618
  '`%s` from your class specification. Ensure that your method names ' +
4581
4619
  'do not overlap with React methods.',
4582
4620
  name
4583
- );
4621
+ ) : invariant(specPolicy === SpecPolicy.OVERRIDE_BASE));
4584
4622
  }
4585
4623
 
4586
4624
  // Disallow defining methods more than once unless explicitly allowed.
4587
4625
  if (proto.hasOwnProperty(name)) {
4588
- invariant(
4626
+ ("production" !== "development" ? invariant(
4589
4627
  specPolicy === SpecPolicy.DEFINE_MANY ||
4590
4628
  specPolicy === SpecPolicy.DEFINE_MANY_MERGED,
4591
4629
  'ReactCompositeComponentInterface: You are attempting to define ' +
4592
4630
  '`%s` on your component more than once. This conflict may be due ' +
4593
4631
  'to a mixin.',
4594
4632
  name
4595
- );
4633
+ ) : invariant(specPolicy === SpecPolicy.DEFINE_MANY ||
4634
+ specPolicy === SpecPolicy.DEFINE_MANY_MERGED));
4596
4635
  }
4597
4636
  }
4598
4637
 
4599
4638
 
4600
4639
  function validateLifeCycleOnReplaceState(instance) {
4601
4640
  var compositeLifeCycleState = instance._compositeLifeCycleState;
4602
- invariant(
4641
+ ("production" !== "development" ? invariant(
4603
4642
  instance.isMounted() ||
4604
4643
  compositeLifeCycleState === CompositeLifeCycle.MOUNTING,
4605
4644
  'replaceState(...): Can only update a mounted or mounting component.'
4606
- );
4607
- invariant(
4608
- compositeLifeCycleState !== CompositeLifeCycle.RECEIVING_STATE &&
4609
- compositeLifeCycleState !== CompositeLifeCycle.UNMOUNTING,
4610
- 'replaceState(...): Cannot update while unmounting component or during ' +
4611
- 'an existing state transition (such as within `render`).'
4612
- );
4645
+ ) : invariant(instance.isMounted() ||
4646
+ compositeLifeCycleState === CompositeLifeCycle.MOUNTING));
4647
+ ("production" !== "development" ? invariant(compositeLifeCycleState !== CompositeLifeCycle.RECEIVING_STATE,
4648
+ 'replaceState(...): Cannot update during an existing state transition ' +
4649
+ '(such as within `render`). This could potentially cause an infinite ' +
4650
+ 'loop so it is forbidden.'
4651
+ ) : invariant(compositeLifeCycleState !== CompositeLifeCycle.RECEIVING_STATE));
4652
+ ("production" !== "development" ? invariant(compositeLifeCycleState !== CompositeLifeCycle.UNMOUNTING,
4653
+ 'replaceState(...): Cannot update while unmounting component. This ' +
4654
+ 'usually means you called setState() on an unmounted component.'
4655
+ ) : invariant(compositeLifeCycleState !== CompositeLifeCycle.UNMOUNTING));
4613
4656
  }
4614
4657
 
4615
4658
  /**
@@ -4674,18 +4717,18 @@ function mixSpecIntoComponent(Constructor, spec) {
4674
4717
  * @return {object} one after it has been mutated to contain everything in two.
4675
4718
  */
4676
4719
  function mergeObjectsWithNoDuplicateKeys(one, two) {
4677
- invariant(
4720
+ ("production" !== "development" ? invariant(
4678
4721
  one && two && typeof one === 'object' && typeof two === 'object',
4679
4722
  'mergeObjectsWithNoDuplicateKeys(): Cannot merge non-objects'
4680
- );
4723
+ ) : invariant(one && two && typeof one === 'object' && typeof two === 'object'));
4681
4724
 
4682
4725
  objMap(two, function(value, key) {
4683
- invariant(
4726
+ ("production" !== "development" ? invariant(
4684
4727
  one[key] === undefined,
4685
4728
  'mergeObjectsWithNoDuplicateKeys(): ' +
4686
4729
  'Tried to merge two objects with the same key: %s',
4687
4730
  key
4688
- );
4731
+ ) : invariant(one[key] === undefined));
4689
4732
  one[key] = value;
4690
4733
  });
4691
4734
  return one;
@@ -5070,7 +5113,7 @@ var ReactCompositeComponentMixin = {
5070
5113
  var currentComponent = this._renderedComponent;
5071
5114
  var nextComponent = this._renderValidatedComponent();
5072
5115
  if (currentComponent.constructor === nextComponent.constructor) {
5073
- currentComponent.receiveProps(nextComponent.props, transaction);
5116
+ currentComponent.receiveComponent(nextComponent, transaction);
5074
5117
  } else {
5075
5118
  // These two IDs are actually the same! But nothing should rely on that.
5076
5119
  var thisID = this._rootNodeID;
@@ -5106,18 +5149,20 @@ var ReactCompositeComponentMixin = {
5106
5149
  */
5107
5150
  forceUpdate: function(callback) {
5108
5151
  var compositeLifeCycleState = this._compositeLifeCycleState;
5109
- invariant(
5152
+ ("production" !== "development" ? invariant(
5110
5153
  this.isMounted() ||
5111
5154
  compositeLifeCycleState === CompositeLifeCycle.MOUNTING,
5112
5155
  'forceUpdate(...): Can only force an update on mounted or mounting ' +
5113
5156
  'components.'
5114
- );
5115
- invariant(
5157
+ ) : invariant(this.isMounted() ||
5158
+ compositeLifeCycleState === CompositeLifeCycle.MOUNTING));
5159
+ ("production" !== "development" ? invariant(
5116
5160
  compositeLifeCycleState !== CompositeLifeCycle.RECEIVING_STATE &&
5117
5161
  compositeLifeCycleState !== CompositeLifeCycle.UNMOUNTING,
5118
5162
  'forceUpdate(...): Cannot force an update while unmounting component ' +
5119
5163
  'or during an existing state transition (such as within `render`).'
5120
- );
5164
+ ) : invariant(compositeLifeCycleState !== CompositeLifeCycle.RECEIVING_STATE &&
5165
+ compositeLifeCycleState !== CompositeLifeCycle.UNMOUNTING));
5121
5166
  this._pendingForceUpdate = true;
5122
5167
  ReactUpdates.enqueueUpdate(this, callback);
5123
5168
  },
@@ -5136,11 +5181,12 @@ var ReactCompositeComponentMixin = {
5136
5181
  } finally {
5137
5182
  ReactCurrentOwner.current = null;
5138
5183
  }
5139
- invariant(
5184
+ ("production" !== "development" ? invariant(
5140
5185
  ReactComponent.isValidComponent(renderedComponent),
5141
- '%s.render(): A valid ReactComponent must be returned.',
5186
+ '%s.render(): A valid ReactComponent must be returned. You may have ' +
5187
+ 'returned null, undefined, an array, or some other invalid object.',
5142
5188
  this.constructor.displayName || 'ReactCompositeComponent'
5143
- );
5189
+ ) : invariant(ReactComponent.isValidComponent(renderedComponent)));
5144
5190
  return renderedComponent;
5145
5191
  },
5146
5192
 
@@ -5153,7 +5199,10 @@ var ReactCompositeComponentMixin = {
5153
5199
  continue;
5154
5200
  }
5155
5201
  var method = this.__reactAutoBindMap[autoBindKey];
5156
- this[autoBindKey] = this._bindAutoBindMethod(method);
5202
+ this[autoBindKey] = this._bindAutoBindMethod(ReactErrorUtils.guard(
5203
+ method,
5204
+ this.constructor.displayName + '.' + autoBindKey
5205
+ ));
5157
5206
  }
5158
5207
  },
5159
5208
 
@@ -5168,7 +5217,7 @@ var ReactCompositeComponentMixin = {
5168
5217
  var boundMethod = function() {
5169
5218
  return method.apply(component, arguments);
5170
5219
  };
5171
- if (true) {
5220
+ if ("production" !== "development") {
5172
5221
  boundMethod.__reactBoundContext = component;
5173
5222
  boundMethod.__reactBoundMethod = method;
5174
5223
  boundMethod.__reactBoundArguments = null;
@@ -5236,12 +5285,12 @@ var ReactCompositeComponent = {
5236
5285
  Constructor.prototype.constructor = Constructor;
5237
5286
  mixSpecIntoComponent(Constructor, spec);
5238
5287
 
5239
- invariant(
5288
+ ("production" !== "development" ? invariant(
5240
5289
  Constructor.prototype.render,
5241
5290
  'createClass(...): Class specification must implement a `render` method.'
5242
- );
5291
+ ) : invariant(Constructor.prototype.render));
5243
5292
 
5244
- if (true) {
5293
+ if ("production" !== "development") {
5245
5294
  if (Constructor.prototype.componentShouldUpdate) {
5246
5295
  console.warn(
5247
5296
  (spec.displayName || 'A component') + ' has a method called ' +
@@ -5285,7 +5334,7 @@ var ReactCompositeComponent = {
5285
5334
 
5286
5335
  module.exports = ReactCompositeComponent;
5287
5336
 
5288
- },{"./ReactComponent":28,"./ReactCurrentOwner":32,"./ReactOwner":57,"./ReactPerf":58,"./ReactPropTransferer":59,"./ReactUpdates":69,"./invariant":106,"./keyMirror":112,"./merge":115,"./mixInto":118,"./objMap":121}],32:[function(require,module,exports){
5337
+ },{"./ReactComponent":28,"./ReactCurrentOwner":32,"./ReactErrorUtils":46,"./ReactOwner":58,"./ReactPerf":59,"./ReactPropTransferer":60,"./ReactUpdates":70,"./invariant":109,"./keyMirror":115,"./merge":118,"./mixInto":121,"./objMap":123}],32:[function(require,module,exports){
5289
5338
  /**
5290
5339
  * Copyright 2013 Facebook, Inc.
5291
5340
  *
@@ -5522,7 +5571,7 @@ ReactDOM.injection = injection;
5522
5571
 
5523
5572
  module.exports = ReactDOM;
5524
5573
 
5525
- },{"./ReactDOMComponent":35,"./mergeInto":117,"./objMapKeyVal":122}],34:[function(require,module,exports){
5574
+ },{"./ReactDOMComponent":35,"./mergeInto":120,"./objMapKeyVal":124}],34:[function(require,module,exports){
5526
5575
  /**
5527
5576
  * Copyright 2013 Facebook, Inc.
5528
5577
  *
@@ -5588,7 +5637,7 @@ var ReactDOMButton = ReactCompositeComponent.createClass({
5588
5637
 
5589
5638
  module.exports = ReactDOMButton;
5590
5639
 
5591
- },{"./ReactCompositeComponent":31,"./ReactDOM":33,"./keyMirror":112}],35:[function(require,module,exports){
5640
+ },{"./ReactCompositeComponent":31,"./ReactDOM":33,"./keyMirror":115}],35:[function(require,module,exports){
5592
5641
  /**
5593
5642
  * Copyright 2013 Facebook, Inc.
5594
5643
  *
@@ -5642,15 +5691,15 @@ function assertValidProps(props) {
5642
5691
  return;
5643
5692
  }
5644
5693
  // Note the use of `==` which checks for null or undefined.
5645
- invariant(
5694
+ ("production" !== "development" ? invariant(
5646
5695
  props.children == null || props.dangerouslySetInnerHTML == null,
5647
5696
  'Can only set one of `children` or `props.dangerouslySetInnerHTML`.'
5648
- );
5649
- invariant(
5697
+ ) : invariant(props.children == null || props.dangerouslySetInnerHTML == null));
5698
+ ("production" !== "development" ? invariant(
5650
5699
  props.style == null || typeof props.style === 'object',
5651
5700
  'The `style` prop expects a mapping from style properties to values, ' +
5652
5701
  'not a string.'
5653
- );
5702
+ ) : invariant(props.style == null || typeof props.style === 'object'));
5654
5703
  }
5655
5704
 
5656
5705
  /**
@@ -5770,9 +5819,13 @@ ReactDOMComponent.Mixin = {
5770
5819
  return '';
5771
5820
  },
5772
5821
 
5773
- receiveProps: function(nextProps, transaction) {
5774
- assertValidProps(nextProps);
5775
- ReactComponent.Mixin.receiveProps.call(this, nextProps, transaction);
5822
+ receiveComponent: function(nextComponent, transaction) {
5823
+ assertValidProps(nextComponent.props);
5824
+ ReactComponent.Mixin.receiveComponent.call(
5825
+ this,
5826
+ nextComponent,
5827
+ transaction
5828
+ );
5776
5829
  },
5777
5830
 
5778
5831
  /**
@@ -5960,7 +6013,7 @@ mixInto(ReactDOMComponent, ReactMultiChild.Mixin);
5960
6013
 
5961
6014
  module.exports = ReactDOMComponent;
5962
6015
 
5963
- },{"./CSSPropertyOperations":4,"./DOMProperty":9,"./DOMPropertyOperations":10,"./ReactComponent":28,"./ReactEventEmitter":46,"./ReactMount":53,"./ReactMultiChild":55,"./ReactPerf":58,"./escapeTextForBrowser":93,"./invariant":106,"./keyOf":113,"./merge":115,"./mixInto":118}],36:[function(require,module,exports){
6016
+ },{"./CSSPropertyOperations":4,"./DOMProperty":9,"./DOMPropertyOperations":10,"./ReactComponent":28,"./ReactEventEmitter":47,"./ReactMount":54,"./ReactMultiChild":56,"./ReactPerf":59,"./escapeTextForBrowser":95,"./invariant":109,"./keyOf":116,"./merge":118,"./mixInto":121}],36:[function(require,module,exports){
5964
6017
  /**
5965
6018
  * Copyright 2013 Facebook, Inc.
5966
6019
  *
@@ -6014,7 +6067,7 @@ var ReactDOMForm = ReactCompositeComponent.createClass({
6014
6067
 
6015
6068
  module.exports = ReactDOMForm;
6016
6069
 
6017
- },{"./EventConstants":15,"./ReactCompositeComponent":31,"./ReactDOM":33,"./ReactEventEmitter":46}],37:[function(require,module,exports){
6070
+ },{"./EventConstants":15,"./ReactCompositeComponent":31,"./ReactDOM":33,"./ReactEventEmitter":47}],37:[function(require,module,exports){
6018
6071
  /**
6019
6072
  * Copyright 2013 Facebook, Inc.
6020
6073
  *
@@ -6085,11 +6138,11 @@ var ReactDOMIDOperations = {
6085
6138
  */
6086
6139
  updatePropertyByID: function(id, name, value) {
6087
6140
  var node = ReactMount.getNode(id);
6088
- invariant(
6141
+ ("production" !== "development" ? invariant(
6089
6142
  !INVALID_PROPERTY_ERRORS.hasOwnProperty(name),
6090
6143
  'updatePropertyByID(...): %s',
6091
6144
  INVALID_PROPERTY_ERRORS[name]
6092
- );
6145
+ ) : invariant(!INVALID_PROPERTY_ERRORS.hasOwnProperty(name)));
6093
6146
 
6094
6147
  // If we're updating to null or undefined, we should remove the property
6095
6148
  // from the DOM node instead of inadvertantly setting to a string. This
@@ -6111,33 +6164,14 @@ var ReactDOMIDOperations = {
6111
6164
  */
6112
6165
  deletePropertyByID: function(id, name, value) {
6113
6166
  var node = ReactMount.getNode(id);
6114
- invariant(
6167
+ ("production" !== "development" ? invariant(
6115
6168
  !INVALID_PROPERTY_ERRORS.hasOwnProperty(name),
6116
6169
  'updatePropertyByID(...): %s',
6117
6170
  INVALID_PROPERTY_ERRORS[name]
6118
- );
6171
+ ) : invariant(!INVALID_PROPERTY_ERRORS.hasOwnProperty(name)));
6119
6172
  DOMPropertyOperations.deleteValueForProperty(node, name, value);
6120
6173
  },
6121
6174
 
6122
- /**
6123
- * This should almost never be used instead of `updatePropertyByID()` due to
6124
- * the extra object allocation required by the API. That said, this is useful
6125
- * for batching up several operations across worker thread boundaries.
6126
- *
6127
- * @param {string} id ID of the node to update.
6128
- * @param {object} properties A mapping of valid property names.
6129
- * @internal
6130
- * @see {ReactDOMIDOperations.updatePropertyByID}
6131
- */
6132
- updatePropertiesByID: function(id, properties) {
6133
- for (var name in properties) {
6134
- if (!properties.hasOwnProperty(name)) {
6135
- continue;
6136
- }
6137
- ReactDOMIDOperations.updatePropertiesByID(id, name, properties[name]);
6138
- }
6139
- },
6140
-
6141
6175
  /**
6142
6176
  * Updates a DOM node with new style values. If a value is specified as '',
6143
6177
  * the corresponding style property will be unset.
@@ -6208,7 +6242,7 @@ var ReactDOMIDOperations = {
6208
6242
 
6209
6243
  module.exports = ReactDOMIDOperations;
6210
6244
 
6211
- },{"./CSSPropertyOperations":4,"./DOMChildrenOperations":8,"./DOMPropertyOperations":10,"./ReactMount":53,"./getTextContentAccessor":104,"./invariant":106}],38:[function(require,module,exports){
6245
+ },{"./CSSPropertyOperations":4,"./DOMChildrenOperations":8,"./DOMPropertyOperations":10,"./ReactMount":54,"./getTextContentAccessor":106,"./invariant":109}],38:[function(require,module,exports){
6212
6246
  /**
6213
6247
  * Copyright 2013 Facebook, Inc.
6214
6248
  *
@@ -6266,7 +6300,7 @@ var ReactDOMInput = ReactCompositeComponent.createClass({
6266
6300
  var defaultValue = this.props.defaultValue;
6267
6301
  return {
6268
6302
  checked: this.props.defaultChecked || false,
6269
- value: defaultValue != null ? defaultValue : ''
6303
+ value: defaultValue != null ? defaultValue : null
6270
6304
  };
6271
6305
  },
6272
6306
 
@@ -6351,17 +6385,17 @@ var ReactDOMInput = ReactCompositeComponent.createClass({
6351
6385
  continue;
6352
6386
  }
6353
6387
  var otherID = ReactMount.getID(otherNode);
6354
- invariant(
6388
+ ("production" !== "development" ? invariant(
6355
6389
  otherID,
6356
6390
  'ReactDOMInput: Mixing React and non-React radio inputs with the ' +
6357
6391
  'same `name` is not supported.'
6358
- );
6392
+ ) : invariant(otherID));
6359
6393
  var otherInstance = instancesByReactID[otherID];
6360
- invariant(
6394
+ ("production" !== "development" ? invariant(
6361
6395
  otherInstance,
6362
6396
  'ReactDOMInput: Unknown radio button ID %s.',
6363
6397
  otherID
6364
- );
6398
+ ) : invariant(otherInstance));
6365
6399
  // In some cases, this will actually change the `checked` state value.
6366
6400
  // In other cases, there's no change but this forces a reconcile upon
6367
6401
  // which componentDidUpdate will reset the DOM property to whatever it
@@ -6379,7 +6413,7 @@ var ReactDOMInput = ReactCompositeComponent.createClass({
6379
6413
 
6380
6414
  module.exports = ReactDOMInput;
6381
6415
 
6382
- },{"./DOMPropertyOperations":10,"./LinkedValueMixin":23,"./ReactCompositeComponent":31,"./ReactDOM":33,"./ReactMount":53,"./invariant":106,"./merge":115}],39:[function(require,module,exports){
6416
+ },{"./DOMPropertyOperations":10,"./LinkedValueMixin":23,"./ReactCompositeComponent":31,"./ReactDOM":33,"./ReactMount":54,"./invariant":109,"./merge":118}],39:[function(require,module,exports){
6383
6417
  /**
6384
6418
  * Copyright 2013 Facebook, Inc.
6385
6419
  *
@@ -6414,7 +6448,7 @@ var ReactDOMOption = ReactCompositeComponent.createClass({
6414
6448
  componentWillMount: function() {
6415
6449
  // TODO (yungsters): Remove support for `selected` in <option>.
6416
6450
  if (this.props.selected != null) {
6417
- if (true) {
6451
+ if ("production" !== "development") {
6418
6452
  console.warn(
6419
6453
  'Use the `defaultValue` or `value` props on <select> instead of ' +
6420
6454
  'setting `selected` on <option>.'
@@ -6471,19 +6505,19 @@ function selectValueType(props, propName, componentName) {
6471
6505
  return;
6472
6506
  }
6473
6507
  if (props.multiple) {
6474
- invariant(
6508
+ ("production" !== "development" ? invariant(
6475
6509
  Array.isArray(props[propName]),
6476
6510
  'The `%s` prop supplied to <select> must be an array if `multiple` is ' +
6477
6511
  'true.',
6478
6512
  propName
6479
- );
6513
+ ) : invariant(Array.isArray(props[propName])));
6480
6514
  } else {
6481
- invariant(
6515
+ ("production" !== "development" ? invariant(
6482
6516
  !Array.isArray(props[propName]),
6483
6517
  'The `%s` prop supplied to <select> must be a scalar value if ' +
6484
6518
  '`multiple` is false.',
6485
6519
  propName
6486
- );
6520
+ ) : invariant(!Array.isArray(props[propName])));
6487
6521
  }
6488
6522
  }
6489
6523
 
@@ -6593,7 +6627,7 @@ var ReactDOMSelect = ReactCompositeComponent.createClass({
6593
6627
 
6594
6628
  module.exports = ReactDOMSelect;
6595
6629
 
6596
- },{"./LinkedValueMixin":23,"./ReactCompositeComponent":31,"./ReactDOM":33,"./invariant":106,"./merge":115}],41:[function(require,module,exports){
6630
+ },{"./LinkedValueMixin":23,"./ReactCompositeComponent":31,"./ReactDOM":33,"./invariant":109,"./merge":118}],41:[function(require,module,exports){
6597
6631
  /**
6598
6632
  * Copyright 2013 Facebook, Inc.
6599
6633
  *
@@ -6733,7 +6767,15 @@ function setModernOffsets(node, offsets) {
6733
6767
  var length = node[getTextContentAccessor()].length;
6734
6768
  var start = Math.min(offsets.start, length);
6735
6769
  var end = typeof offsets.end === 'undefined' ?
6736
- start : Math.min(offsets.end, length);
6770
+ start : Math.min(offsets.end, length);
6771
+
6772
+ // IE 11 uses modern selection, but doesn't support the extend method.
6773
+ // Flip backward selections, so we can set with a single range.
6774
+ if (!selection.extend && start > end) {
6775
+ var temp = end;
6776
+ end = start;
6777
+ start = temp;
6778
+ }
6737
6779
 
6738
6780
  var startMarker = getNodeForCharacterOffset(node, start);
6739
6781
  var endMarker = getNodeForCharacterOffset(node, end);
@@ -6742,8 +6784,15 @@ function setModernOffsets(node, offsets) {
6742
6784
  var range = document.createRange();
6743
6785
  range.setStart(startMarker.node, startMarker.offset);
6744
6786
  selection.removeAllRanges();
6745
- selection.addRange(range);
6746
- selection.extend(endMarker.node, endMarker.offset);
6787
+
6788
+ if (start > end) {
6789
+ selection.addRange(range);
6790
+ selection.extend(endMarker.node, endMarker.offset);
6791
+ } else {
6792
+ range.setEnd(endMarker.node, endMarker.offset);
6793
+ selection.addRange(range);
6794
+ }
6795
+
6747
6796
  range.detach();
6748
6797
  }
6749
6798
  }
@@ -6769,7 +6818,7 @@ var ReactDOMSelection = {
6769
6818
 
6770
6819
  module.exports = ReactDOMSelection;
6771
6820
 
6772
- },{"./getNodeForCharacterOffset":102,"./getTextContentAccessor":104}],42:[function(require,module,exports){
6821
+ },{"./getNodeForCharacterOffset":104,"./getTextContentAccessor":106}],42:[function(require,module,exports){
6773
6822
  /**
6774
6823
  * Copyright 2013 Facebook, Inc.
6775
6824
  *
@@ -6824,21 +6873,21 @@ var ReactDOMTextarea = ReactCompositeComponent.createClass({
6824
6873
  // TODO (yungsters): Remove support for children content in <textarea>.
6825
6874
  var children = this.props.children;
6826
6875
  if (children != null) {
6827
- if (true) {
6876
+ if ("production" !== "development") {
6828
6877
  console.warn(
6829
6878
  'Use the `defaultValue` or `value` props instead of setting ' +
6830
6879
  'children on <textarea>.'
6831
6880
  );
6832
6881
  }
6833
- invariant(
6882
+ ("production" !== "development" ? invariant(
6834
6883
  defaultValue == null,
6835
6884
  'If you supply `defaultValue` on a <textarea>, do not pass children.'
6836
- );
6885
+ ) : invariant(defaultValue == null));
6837
6886
  if (Array.isArray(children)) {
6838
- invariant(
6887
+ ("production" !== "development" ? invariant(
6839
6888
  children.length <= 1,
6840
6889
  '<textarea> can only have at most one child.'
6841
- );
6890
+ ) : invariant(children.length <= 1));
6842
6891
  children = children[0];
6843
6892
  }
6844
6893
 
@@ -6868,10 +6917,10 @@ var ReactDOMTextarea = ReactCompositeComponent.createClass({
6868
6917
  var props = merge(this.props);
6869
6918
  var value = this.getValue();
6870
6919
 
6871
- invariant(
6920
+ ("production" !== "development" ? invariant(
6872
6921
  props.dangerouslySetInnerHTML == null,
6873
6922
  '`dangerouslySetInnerHTML` does not make sense on <textarea>.'
6874
- );
6923
+ ) : invariant(props.dangerouslySetInnerHTML == null));
6875
6924
 
6876
6925
  props.defaultValue = null;
6877
6926
  props.value = value != null ? value : this.state.value;
@@ -6907,7 +6956,7 @@ var ReactDOMTextarea = ReactCompositeComponent.createClass({
6907
6956
 
6908
6957
  module.exports = ReactDOMTextarea;
6909
6958
 
6910
- },{"./DOMPropertyOperations":10,"./LinkedValueMixin":23,"./ReactCompositeComponent":31,"./ReactDOM":33,"./invariant":106,"./merge":115}],43:[function(require,module,exports){
6959
+ },{"./DOMPropertyOperations":10,"./LinkedValueMixin":23,"./ReactCompositeComponent":31,"./ReactDOM":33,"./invariant":109,"./merge":118}],43:[function(require,module,exports){
6911
6960
  /**
6912
6961
  * Copyright 2013 Facebook, Inc.
6913
6962
  *
@@ -6984,7 +7033,7 @@ var ReactDefaultBatchingStrategy = {
6984
7033
 
6985
7034
  module.exports = ReactDefaultBatchingStrategy;
6986
7035
 
6987
- },{"./ReactUpdates":69,"./Transaction":82,"./emptyFunction":92,"./mixInto":118}],44:[function(require,module,exports){
7036
+ },{"./ReactUpdates":70,"./Transaction":83,"./emptyFunction":94,"./mixInto":121}],44:[function(require,module,exports){
6988
7037
  /**
6989
7038
  * Copyright 2013 Facebook, Inc.
6990
7039
  *
@@ -7064,7 +7113,7 @@ function inject() {
7064
7113
 
7065
7114
  DOMProperty.injection.injectDOMPropertyConfig(DefaultDOMPropertyConfig);
7066
7115
 
7067
- if (true) {
7116
+ if ("production" !== "development") {
7068
7117
  ReactPerf.injection.injectMeasure(require("./ReactDefaultPerf").measure);
7069
7118
  }
7070
7119
 
@@ -7077,7 +7126,7 @@ module.exports = {
7077
7126
  inject: inject
7078
7127
  };
7079
7128
 
7080
- },{"./ChangeEventPlugin":6,"./CompositionEventPlugin":7,"./DOMProperty":9,"./DefaultDOMPropertyConfig":12,"./DefaultEventPluginOrder":13,"./EnterLeaveEventPlugin":14,"./EventPluginHub":17,"./MobileSafariClickEventPlugin":24,"./ReactDOM":33,"./ReactDOMButton":34,"./ReactDOMForm":36,"./ReactDOMInput":38,"./ReactDOMOption":39,"./ReactDOMSelect":40,"./ReactDOMTextarea":42,"./ReactDefaultBatchingStrategy":43,"./ReactDefaultPerf":45,"./ReactEventEmitter":46,"./ReactEventTopLevelCallback":48,"./ReactInstanceHandles":50,"./ReactPerf":58,"./ReactUpdates":69,"./SelectEventPlugin":71,"./SimpleEventPlugin":72}],45:[function(require,module,exports){
7129
+ },{"./ChangeEventPlugin":6,"./CompositionEventPlugin":7,"./DOMProperty":9,"./DefaultDOMPropertyConfig":12,"./DefaultEventPluginOrder":13,"./EnterLeaveEventPlugin":14,"./EventPluginHub":17,"./MobileSafariClickEventPlugin":24,"./ReactDOM":33,"./ReactDOMButton":34,"./ReactDOMForm":36,"./ReactDOMInput":38,"./ReactDOMOption":39,"./ReactDOMSelect":40,"./ReactDOMTextarea":42,"./ReactDefaultBatchingStrategy":43,"./ReactDefaultPerf":45,"./ReactEventEmitter":47,"./ReactEventTopLevelCallback":49,"./ReactInstanceHandles":51,"./ReactPerf":59,"./ReactUpdates":70,"./SelectEventPlugin":72,"./SimpleEventPlugin":73}],45:[function(require,module,exports){
7081
7130
  /**
7082
7131
  * Copyright 2013 Facebook, Inc.
7083
7132
  *
@@ -7103,7 +7152,7 @@ var performanceNow = require("./performanceNow");
7103
7152
 
7104
7153
  var ReactDefaultPerf = {};
7105
7154
 
7106
- if (true) {
7155
+ if ("production" !== "development") {
7107
7156
  ReactDefaultPerf = {
7108
7157
  /**
7109
7158
  * Gets the stored information for a given object's function.
@@ -7486,7 +7535,55 @@ if (true) {
7486
7535
 
7487
7536
  module.exports = ReactDefaultPerf;
7488
7537
 
7489
- },{"./performanceNow":123}],46:[function(require,module,exports){
7538
+ },{"./performanceNow":125}],46:[function(require,module,exports){
7539
+ /**
7540
+ * Copyright 2013 Facebook, Inc.
7541
+ *
7542
+ * Licensed under the Apache License, Version 2.0 (the "License");
7543
+ * you may not use this file except in compliance with the License.
7544
+ * You may obtain a copy of the License at
7545
+ *
7546
+ * http://www.apache.org/licenses/LICENSE-2.0
7547
+ *
7548
+ * Unless required by applicable law or agreed to in writing, software
7549
+ * distributed under the License is distributed on an "AS IS" BASIS,
7550
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
7551
+ * See the License for the specific language governing permissions and
7552
+ * limitations under the License.
7553
+ *
7554
+ * @providesModule ReactErrorUtils
7555
+ * @typechecks
7556
+ */
7557
+
7558
+ var ReactErrorUtils = {
7559
+ /**
7560
+ * Creates a guarded version of a function. This is supposed to make debugging
7561
+ * of event handlers easier. This implementation provides only basic error
7562
+ * logging and re-throws the error.
7563
+ *
7564
+ * @param {function} func Function to be executed
7565
+ * @param {string} name The name of the guard
7566
+ * @return {function}
7567
+ */
7568
+ guard: function(func, name) {
7569
+ if ("production" !== "development") {
7570
+ return function guarded() {
7571
+ try {
7572
+ return func.apply(this, arguments);
7573
+ } catch(ex) {
7574
+ console.error(name + ': ' + ex.message);
7575
+ throw ex;
7576
+ }
7577
+ };
7578
+ } else {
7579
+ return func;
7580
+ }
7581
+ }
7582
+ };
7583
+
7584
+ module.exports = ReactErrorUtils;
7585
+
7586
+ },{}],47:[function(require,module,exports){
7490
7587
  /**
7491
7588
  * Copyright 2013 Facebook, Inc.
7492
7589
  *
@@ -7644,17 +7741,17 @@ var ReactEventEmitter = merge(ReactEventEmitterMixin, {
7644
7741
  * @param {DOMDocument} contentDocument DOM document to listen on
7645
7742
  */
7646
7743
  ensureListening: function(touchNotMouse, contentDocument) {
7647
- invariant(
7744
+ ("production" !== "development" ? invariant(
7648
7745
  ExecutionEnvironment.canUseDOM,
7649
7746
  'ensureListening(...): Cannot toggle event listening in a Worker ' +
7650
7747
  'thread. This is likely a bug in the framework. Please report ' +
7651
7748
  'immediately.'
7652
- );
7653
- invariant(
7749
+ ) : invariant(ExecutionEnvironment.canUseDOM));
7750
+ ("production" !== "development" ? invariant(
7654
7751
  ReactEventEmitter.TopLevelCallbackCreator,
7655
7752
  'ensureListening(...): Cannot be called without a top level callback ' +
7656
7753
  'creator being injected.'
7657
- );
7754
+ ) : invariant(ReactEventEmitter.TopLevelCallbackCreator));
7658
7755
  // Call out to base implementation.
7659
7756
  ReactEventEmitterMixin.ensureListening.call(
7660
7757
  ReactEventEmitter,
@@ -7671,11 +7768,11 @@ var ReactEventEmitter = merge(ReactEventEmitterMixin, {
7671
7768
  * @param {boolean} enabled True if callbacks should be enabled.
7672
7769
  */
7673
7770
  setEnabled: function(enabled) {
7674
- invariant(
7771
+ ("production" !== "development" ? invariant(
7675
7772
  ExecutionEnvironment.canUseDOM,
7676
7773
  'setEnabled(...): Cannot toggle event listening in a Worker thread. ' +
7677
7774
  'This is likely a bug in the framework. Please report immediately.'
7678
- );
7775
+ ) : invariant(ExecutionEnvironment.canUseDOM));
7679
7776
  if (ReactEventEmitter.TopLevelCallbackCreator) {
7680
7777
  ReactEventEmitter.TopLevelCallbackCreator.setEnabled(enabled);
7681
7778
  }
@@ -7715,10 +7812,10 @@ var ReactEventEmitter = merge(ReactEventEmitterMixin, {
7715
7812
  * @see http://www.quirksmode.org/dom/events/keys.html.
7716
7813
  */
7717
7814
  listenAtTopLevel: function(touchNotMouse, contentDocument) {
7718
- invariant(
7815
+ ("production" !== "development" ? invariant(
7719
7816
  !contentDocument._isListening,
7720
7817
  'listenAtTopLevel(...): Cannot setup top-level listener more than once.'
7721
- );
7818
+ ) : invariant(!contentDocument._isListening));
7722
7819
  var topLevelTypes = EventConstants.topLevelTypes;
7723
7820
  var mountAt = contentDocument;
7724
7821
 
@@ -7730,6 +7827,7 @@ var ReactEventEmitter = merge(ReactEventEmitterMixin, {
7730
7827
  trapBubbledEvent(topLevelTypes.topMouseOut, 'mouseout', mountAt);
7731
7828
  trapBubbledEvent(topLevelTypes.topClick, 'click', mountAt);
7732
7829
  trapBubbledEvent(topLevelTypes.topDoubleClick, 'dblclick', mountAt);
7830
+ trapBubbledEvent(topLevelTypes.topContextMenu, 'contextmenu', mountAt);
7733
7831
  if (touchNotMouse) {
7734
7832
  trapBubbledEvent(topLevelTypes.topTouchStart, 'touchstart', mountAt);
7735
7833
  trapBubbledEvent(topLevelTypes.topTouchEnd, 'touchend', mountAt);
@@ -7828,7 +7926,7 @@ var ReactEventEmitter = merge(ReactEventEmitterMixin, {
7828
7926
 
7829
7927
  module.exports = ReactEventEmitter;
7830
7928
 
7831
- },{"./EventConstants":15,"./EventListener":16,"./EventPluginHub":17,"./ExecutionEnvironment":21,"./ReactEventEmitterMixin":47,"./ViewportMetrics":83,"./invariant":106,"./isEventSupported":107,"./merge":115}],47:[function(require,module,exports){
7929
+ },{"./EventConstants":15,"./EventListener":16,"./EventPluginHub":17,"./ExecutionEnvironment":21,"./ReactEventEmitterMixin":48,"./ViewportMetrics":84,"./invariant":109,"./isEventSupported":110,"./merge":118}],48:[function(require,module,exports){
7832
7930
  /**
7833
7931
  * Copyright 2013 Facebook, Inc.
7834
7932
  *
@@ -7919,7 +8017,7 @@ var ReactEventEmitterMixin = {
7919
8017
 
7920
8018
  module.exports = ReactEventEmitterMixin;
7921
8019
 
7922
- },{"./EventPluginHub":17,"./ReactUpdates":69}],48:[function(require,module,exports){
8020
+ },{"./EventPluginHub":17,"./ReactUpdates":70}],49:[function(require,module,exports){
7923
8021
  /**
7924
8022
  * Copyright 2013 Facebook, Inc.
7925
8023
  *
@@ -8010,7 +8108,7 @@ var ReactEventTopLevelCallback = {
8010
8108
 
8011
8109
  module.exports = ReactEventTopLevelCallback;
8012
8110
 
8013
- },{"./ReactEventEmitter":46,"./ReactMount":53,"./getEventTarget":100}],49:[function(require,module,exports){
8111
+ },{"./ReactEventEmitter":47,"./ReactMount":54,"./getEventTarget":102}],50:[function(require,module,exports){
8014
8112
  /**
8015
8113
  * Copyright 2013 Facebook, Inc.
8016
8114
  *
@@ -8033,11 +8131,11 @@ module.exports = ReactEventTopLevelCallback;
8033
8131
 
8034
8132
  var ReactDOMSelection = require("./ReactDOMSelection");
8035
8133
 
8134
+ var containsNode = require("./containsNode");
8036
8135
  var getActiveElement = require("./getActiveElement");
8037
- var nodeContains = require("./nodeContains");
8038
8136
 
8039
8137
  function isInDocument(node) {
8040
- return nodeContains(document.documentElement, node);
8138
+ return containsNode(document.documentElement, node);
8041
8139
  }
8042
8140
 
8043
8141
  /**
@@ -8152,7 +8250,7 @@ var ReactInputSelection = {
8152
8250
 
8153
8251
  module.exports = ReactInputSelection;
8154
8252
 
8155
- },{"./ReactDOMSelection":41,"./getActiveElement":99,"./nodeContains":120}],50:[function(require,module,exports){
8253
+ },{"./ReactDOMSelection":41,"./containsNode":87,"./getActiveElement":101}],51:[function(require,module,exports){
8156
8254
  /**
8157
8255
  * Copyright 2013 Facebook, Inc.
8158
8256
  *
@@ -8265,19 +8363,19 @@ function getParentID(id) {
8265
8363
  * @private
8266
8364
  */
8267
8365
  function getNextDescendantID(ancestorID, destinationID) {
8268
- invariant(
8366
+ ("production" !== "development" ? invariant(
8269
8367
  isValidID(ancestorID) && isValidID(destinationID),
8270
8368
  'getNextDescendantID(%s, %s): Received an invalid React DOM ID.',
8271
8369
  ancestorID,
8272
8370
  destinationID
8273
- );
8274
- invariant(
8371
+ ) : invariant(isValidID(ancestorID) && isValidID(destinationID)));
8372
+ ("production" !== "development" ? invariant(
8275
8373
  isAncestorIDOf(ancestorID, destinationID),
8276
8374
  'getNextDescendantID(...): React has made an invalid assumption about ' +
8277
8375
  'the DOM hierarchy. Expected `%s` to be an ancestor of `%s`.',
8278
8376
  ancestorID,
8279
8377
  destinationID
8280
- );
8378
+ ) : invariant(isAncestorIDOf(ancestorID, destinationID)));
8281
8379
  if (ancestorID === destinationID) {
8282
8380
  return ancestorID;
8283
8381
  }
@@ -8318,13 +8416,13 @@ function getFirstCommonAncestorID(oneID, twoID) {
8318
8416
  }
8319
8417
  }
8320
8418
  var longestCommonID = oneID.substr(0, lastCommonMarkerIndex);
8321
- invariant(
8419
+ ("production" !== "development" ? invariant(
8322
8420
  isValidID(longestCommonID),
8323
8421
  'getFirstCommonAncestorID(%s, %s): Expected a valid React DOM ID: %s',
8324
8422
  oneID,
8325
8423
  twoID,
8326
8424
  longestCommonID
8327
- );
8425
+ ) : invariant(isValidID(longestCommonID)));
8328
8426
  return longestCommonID;
8329
8427
  }
8330
8428
 
@@ -8342,19 +8440,19 @@ function getFirstCommonAncestorID(oneID, twoID) {
8342
8440
  function traverseParentPath(start, stop, cb, arg, skipFirst, skipLast) {
8343
8441
  start = start || '';
8344
8442
  stop = stop || '';
8345
- invariant(
8443
+ ("production" !== "development" ? invariant(
8346
8444
  start !== stop,
8347
8445
  'traverseParentPath(...): Cannot traverse from and to the same ID, `%s`.',
8348
8446
  start
8349
- );
8447
+ ) : invariant(start !== stop));
8350
8448
  var traverseUp = isAncestorIDOf(stop, start);
8351
- invariant(
8449
+ ("production" !== "development" ? invariant(
8352
8450
  traverseUp || isAncestorIDOf(start, stop),
8353
8451
  'traverseParentPath(%s, %s, ...): Cannot traverse from two IDs that do ' +
8354
8452
  'not have a parent path.',
8355
8453
  start,
8356
8454
  stop
8357
- );
8455
+ ) : invariant(traverseUp || isAncestorIDOf(start, stop)));
8358
8456
  // Traverse from `start` to `stop` one depth at a time.
8359
8457
  var depth = 0;
8360
8458
  var traverse = traverseUp ? getParentID : getNextDescendantID;
@@ -8366,12 +8464,12 @@ function traverseParentPath(start, stop, cb, arg, skipFirst, skipLast) {
8366
8464
  // Only break //after// visiting `stop`.
8367
8465
  break;
8368
8466
  }
8369
- invariant(
8467
+ ("production" !== "development" ? invariant(
8370
8468
  depth++ < MAX_TREE_DEPTH,
8371
8469
  'traverseParentPath(%s, %s, ...): Detected an infinite loop while ' +
8372
8470
  'traversing the React DOM ID tree. This may be due to malformed IDs: %s',
8373
8471
  start, stop
8374
- );
8472
+ ) : invariant(depth++ < MAX_TREE_DEPTH));
8375
8473
  }
8376
8474
  }
8377
8475
 
@@ -8476,7 +8574,7 @@ var ReactInstanceHandles = {
8476
8574
 
8477
8575
  module.exports = ReactInstanceHandles;
8478
8576
 
8479
- },{"./invariant":106}],51:[function(require,module,exports){
8577
+ },{"./invariant":109}],52:[function(require,module,exports){
8480
8578
  /**
8481
8579
  * Copyright 2013 Facebook, Inc.
8482
8580
  *
@@ -8532,7 +8630,7 @@ function ReactLink(value, requestChange) {
8532
8630
 
8533
8631
  module.exports = ReactLink;
8534
8632
 
8535
- },{}],52:[function(require,module,exports){
8633
+ },{}],53:[function(require,module,exports){
8536
8634
  /**
8537
8635
  * Copyright 2013 Facebook, Inc.
8538
8636
  *
@@ -8587,7 +8685,7 @@ var ReactMarkupChecksum = {
8587
8685
 
8588
8686
  module.exports = ReactMarkupChecksum;
8589
8687
 
8590
- },{"./adler32":85}],53:[function(require,module,exports){
8688
+ },{"./adler32":86}],54:[function(require,module,exports){
8591
8689
  /**
8592
8690
  * Copyright 2013 Facebook, Inc.
8593
8691
  *
@@ -8612,9 +8710,9 @@ var ReactEventEmitter = require("./ReactEventEmitter");
8612
8710
  var ReactInstanceHandles = require("./ReactInstanceHandles");
8613
8711
 
8614
8712
  var $ = require("./$");
8713
+ var containsNode = require("./containsNode");
8615
8714
  var getReactRootElementInContainer = require("./getReactRootElementInContainer");
8616
8715
  var invariant = require("./invariant");
8617
- var nodeContains = require("./nodeContains");
8618
8716
 
8619
8717
  var SEPARATOR = ReactInstanceHandles.SEPARATOR;
8620
8718
 
@@ -8630,7 +8728,7 @@ var instancesByReactRootID = {};
8630
8728
  /** Mapping from reactRootID to `container` nodes. */
8631
8729
  var containersByReactRootID = {};
8632
8730
 
8633
- if (true) {
8731
+ if ("production" !== "development") {
8634
8732
  /** __DEV__-only mapping from reactRootID to root elements. */
8635
8733
  var rootElementsByReactRootID = {};
8636
8734
  }
@@ -8660,11 +8758,11 @@ function getID(node) {
8660
8758
  if (nodeCache.hasOwnProperty(id)) {
8661
8759
  var cached = nodeCache[id];
8662
8760
  if (cached !== node) {
8663
- invariant(
8761
+ ("production" !== "development" ? invariant(
8664
8762
  !isValid(cached, id),
8665
8763
  'ReactMount: Two valid but unequal nodes with the same `%s`: %s',
8666
8764
  ATTR_NAME, id
8667
- );
8765
+ ) : invariant(!isValid(cached, id)));
8668
8766
 
8669
8767
  nodeCache[id] = node;
8670
8768
  }
@@ -8724,14 +8822,14 @@ function getNode(id) {
8724
8822
  */
8725
8823
  function isValid(node, id) {
8726
8824
  if (node) {
8727
- invariant(
8825
+ ("production" !== "development" ? invariant(
8728
8826
  internalGetID(node) === id,
8729
8827
  'ReactMount: Unexpected modification of `%s`',
8730
8828
  ATTR_NAME
8731
- );
8829
+ ) : invariant(internalGetID(node) === id));
8732
8830
 
8733
8831
  var container = ReactMount.findReactContainerForID(id);
8734
- if (container && nodeContains(container, node)) {
8832
+ if (container && containsNode(container, node)) {
8735
8833
  return true;
8736
8834
  }
8737
8835
  }
@@ -8801,13 +8899,16 @@ var ReactMount = {
8801
8899
  * @private
8802
8900
  */
8803
8901
  prepareEnvironmentForDOM: function(container) {
8804
- invariant(
8902
+ ("production" !== "development" ? invariant(
8805
8903
  container && (
8806
8904
  container.nodeType === ELEMENT_NODE_TYPE ||
8807
8905
  container.nodeType === DOC_NODE_TYPE
8808
8906
  ),
8809
8907
  'prepareEnvironmentForDOM(...): Target container is not a DOM element.'
8810
- );
8908
+ ) : invariant(container && (
8909
+ container.nodeType === ELEMENT_NODE_TYPE ||
8910
+ container.nodeType === DOC_NODE_TYPE
8911
+ )));
8811
8912
  var doc = container.nodeType === ELEMENT_NODE_TYPE ?
8812
8913
  container.ownerDocument :
8813
8914
  container;
@@ -8831,7 +8932,7 @@ var ReactMount = {
8831
8932
  prevComponent.replaceProps(nextProps, callback);
8832
8933
  });
8833
8934
 
8834
- if (true) {
8935
+ if ("production" !== "development") {
8835
8936
  // Record the root element in case it later gets transplanted.
8836
8937
  rootElementsByReactRootID[getReactRootID(container)] =
8837
8938
  getReactRootElementInContainer(container);
@@ -8872,7 +8973,7 @@ var ReactMount = {
8872
8973
  shouldReuseMarkup
8873
8974
  );
8874
8975
 
8875
- if (true) {
8976
+ if ("production" !== "development") {
8876
8977
  // Record the root element in case it later gets transplanted.
8877
8978
  rootElementsByReactRootID[reactRootID] =
8878
8979
  getReactRootElementInContainer(container);
@@ -8988,7 +9089,7 @@ var ReactMount = {
8988
9089
  ReactMount.unmountComponentFromNode(component, container);
8989
9090
  delete instancesByReactRootID[reactRootID];
8990
9091
  delete containersByReactRootID[reactRootID];
8991
- if (true) {
9092
+ if ("production" !== "development") {
8992
9093
  delete rootElementsByReactRootID[reactRootID];
8993
9094
  }
8994
9095
  return true;
@@ -8998,7 +9099,7 @@ var ReactMount = {
8998
9099
  * @deprecated
8999
9100
  */
9000
9101
  unmountAndReleaseReactRootNode: function() {
9001
- if (true) {
9102
+ if ("production" !== "development") {
9002
9103
  console.warn(
9003
9104
  'unmountAndReleaseReactRootNode() has been renamed to ' +
9004
9105
  'unmountComponentAtNode() and will be removed in the next ' +
@@ -9041,15 +9142,17 @@ var ReactMount = {
9041
9142
  var reactRootID = ReactInstanceHandles.getReactRootIDFromNodeID(id);
9042
9143
  var container = containersByReactRootID[reactRootID];
9043
9144
 
9044
- if (true) {
9145
+ if ("production" !== "development") {
9045
9146
  var rootElement = rootElementsByReactRootID[reactRootID];
9046
9147
  if (rootElement && rootElement.parentNode !== container) {
9047
- invariant(
9148
+ ("production" !== "development" ? invariant(
9048
9149
  // Call internalGetID here because getID calls isValid which calls
9049
9150
  // findReactContainerForID (this function).
9050
9151
  internalGetID(rootElement) === reactRootID,
9051
9152
  'ReactMount: Root element ID differed from reactRootID.'
9052
- );
9153
+ ) : invariant(// Call internalGetID here because getID calls isValid which calls
9154
+ // findReactContainerForID (this function).
9155
+ internalGetID(rootElement) === reactRootID));
9053
9156
 
9054
9157
  var containerChild = container.firstChild;
9055
9158
  if (containerChild &&
@@ -9163,20 +9266,20 @@ var ReactMount = {
9163
9266
  }
9164
9267
  }
9165
9268
 
9166
- if (true) {
9269
+ if ("production" !== "development") {
9167
9270
  console.error(
9168
9271
  'Error while invoking `findComponentRoot` with the following ' +
9169
9272
  'ancestor node:',
9170
9273
  ancestorNode
9171
9274
  );
9172
9275
  }
9173
- invariant(
9276
+ ("production" !== "development" ? invariant(
9174
9277
  false,
9175
9278
  'findComponentRoot(..., %s): Unable to find element. This probably ' +
9176
9279
  'means the DOM was unexpectedly mutated (e.g. by the browser).',
9177
9280
  id,
9178
9281
  ReactMount.getID(ancestorNode)
9179
- );
9282
+ ) : invariant(false));
9180
9283
  },
9181
9284
 
9182
9285
 
@@ -9201,7 +9304,7 @@ var ReactMount = {
9201
9304
 
9202
9305
  module.exports = ReactMount;
9203
9306
 
9204
- },{"./$":1,"./ReactEventEmitter":46,"./ReactInstanceHandles":50,"./getReactRootElementInContainer":103,"./invariant":106,"./nodeContains":120}],54:[function(require,module,exports){
9307
+ },{"./$":1,"./ReactEventEmitter":47,"./ReactInstanceHandles":51,"./containsNode":87,"./getReactRootElementInContainer":105,"./invariant":109}],55:[function(require,module,exports){
9205
9308
  /**
9206
9309
  * Copyright 2013 Facebook, Inc.
9207
9310
  *
@@ -9298,7 +9401,7 @@ PooledClass.addPoolingTo(ReactMountReady);
9298
9401
 
9299
9402
  module.exports = ReactMountReady;
9300
9403
 
9301
- },{"./PooledClass":25,"./mixInto":118}],55:[function(require,module,exports){
9404
+ },{"./PooledClass":25,"./mixInto":121}],56:[function(require,module,exports){
9302
9405
  /**
9303
9406
  * Copyright 2013 Facebook, Inc.
9304
9407
  *
@@ -9380,8 +9483,8 @@ function enqueueMarkup(parentID, markup, toIndex) {
9380
9483
  parentNode: null,
9381
9484
  type: ReactMultiChildUpdateTypes.INSERT_MARKUP,
9382
9485
  markupIndex: markupQueue.push(markup) - 1,
9383
- fromIndex: null,
9384
9486
  textContent: null,
9487
+ fromIndex: null,
9385
9488
  toIndex: toIndex
9386
9489
  });
9387
9490
  }
@@ -9598,7 +9701,7 @@ var ReactMultiChild = {
9598
9701
  if (shouldUpdateChild(prevChild, nextChild)) {
9599
9702
  this.moveChild(prevChild, nextIndex, lastIndex);
9600
9703
  lastIndex = Math.max(prevChild._mountIndex, lastIndex);
9601
- prevChild.receiveProps(nextChild.props, transaction);
9704
+ prevChild.receiveComponent(nextChild, transaction);
9602
9705
  prevChild._mountIndex = nextIndex;
9603
9706
  } else {
9604
9707
  if (prevChild) {
@@ -9741,7 +9844,7 @@ var ReactMultiChild = {
9741
9844
 
9742
9845
  module.exports = ReactMultiChild;
9743
9846
 
9744
- },{"./ReactComponent":28,"./ReactMultiChildUpdateTypes":56,"./flattenChildren":96}],56:[function(require,module,exports){
9847
+ },{"./ReactComponent":28,"./ReactMultiChildUpdateTypes":57,"./flattenChildren":98}],57:[function(require,module,exports){
9745
9848
  /**
9746
9849
  * Copyright 2013 Facebook, Inc.
9747
9850
  *
@@ -9779,7 +9882,7 @@ var ReactMultiChildUpdateTypes = keyMirror({
9779
9882
 
9780
9883
  module.exports = ReactMultiChildUpdateTypes;
9781
9884
 
9782
- },{"./keyMirror":112}],57:[function(require,module,exports){
9885
+ },{"./keyMirror":115}],58:[function(require,module,exports){
9783
9886
  /**
9784
9887
  * Copyright 2013 Facebook, Inc.
9785
9888
  *
@@ -9857,10 +9960,10 @@ var ReactOwner = {
9857
9960
  * @internal
9858
9961
  */
9859
9962
  addComponentAsRefTo: function(component, ref, owner) {
9860
- invariant(
9963
+ ("production" !== "development" ? invariant(
9861
9964
  ReactOwner.isValidOwner(owner),
9862
9965
  'addComponentAsRefTo(...): Only a ReactOwner can have refs.'
9863
- );
9966
+ ) : invariant(ReactOwner.isValidOwner(owner)));
9864
9967
  owner.attachRef(ref, component);
9865
9968
  },
9866
9969
 
@@ -9874,10 +9977,10 @@ var ReactOwner = {
9874
9977
  * @internal
9875
9978
  */
9876
9979
  removeComponentAsRefFrom: function(component, ref, owner) {
9877
- invariant(
9980
+ ("production" !== "development" ? invariant(
9878
9981
  ReactOwner.isValidOwner(owner),
9879
9982
  'removeComponentAsRefFrom(...): Only a ReactOwner can have refs.'
9880
- );
9983
+ ) : invariant(ReactOwner.isValidOwner(owner)));
9881
9984
  // Check that `component` is still the current ref because we do not want to
9882
9985
  // detach the ref if another component stole it.
9883
9986
  if (owner.refs[ref] === component) {
@@ -9901,11 +10004,11 @@ var ReactOwner = {
9901
10004
  * @private
9902
10005
  */
9903
10006
  attachRef: function(ref, component) {
9904
- invariant(
10007
+ ("production" !== "development" ? invariant(
9905
10008
  component.isOwnedBy(this),
9906
10009
  'attachRef(%s, ...): Only a component\'s owner can store a ref to it.',
9907
10010
  ref
9908
- );
10011
+ ) : invariant(component.isOwnedBy(this)));
9909
10012
  var refs = this.refs || (this.refs = {});
9910
10013
  refs[ref] = component;
9911
10014
  },
@@ -9927,7 +10030,7 @@ var ReactOwner = {
9927
10030
 
9928
10031
  module.exports = ReactOwner;
9929
10032
 
9930
- },{"./invariant":106}],58:[function(require,module,exports){
10033
+ },{"./invariant":109}],59:[function(require,module,exports){
9931
10034
  /**
9932
10035
  * Copyright 2013 Facebook, Inc.
9933
10036
  *
@@ -9971,7 +10074,7 @@ var ReactPerf = {
9971
10074
  * @return {function}
9972
10075
  */
9973
10076
  measure: function(objName, fnName, func) {
9974
- if (true) {
10077
+ if ("production" !== "development") {
9975
10078
  var measuredFunc = null;
9976
10079
  return function() {
9977
10080
  if (ReactPerf.enableMeasure) {
@@ -9996,11 +10099,11 @@ var ReactPerf = {
9996
10099
  }
9997
10100
  };
9998
10101
 
9999
- if (true) {
10102
+ if ("production" !== "development") {
10000
10103
  var ExecutionEnvironment = require("./ExecutionEnvironment");
10001
- var URL = ExecutionEnvironment.canUseDOM ? window.location.href : '';
10104
+ var url = (ExecutionEnvironment.canUseDOM && window.location.href) || '';
10002
10105
  ReactPerf.enableMeasure = ReactPerf.enableMeasure ||
10003
- !!URL.match(/[?&]react_perf\b/);
10106
+ (/[?&]react_perf\b/).test(url);
10004
10107
  }
10005
10108
 
10006
10109
  /**
@@ -10017,7 +10120,7 @@ function _noMeasure(objName, fnName, func) {
10017
10120
 
10018
10121
  module.exports = ReactPerf;
10019
10122
 
10020
- },{"./ExecutionEnvironment":21}],59:[function(require,module,exports){
10123
+ },{"./ExecutionEnvironment":21}],60:[function(require,module,exports){
10021
10124
  /**
10022
10125
  * Copyright 2013 Facebook, Inc.
10023
10126
  *
@@ -10111,14 +10214,14 @@ var ReactPropTransferer = {
10111
10214
  * @protected
10112
10215
  */
10113
10216
  transferPropsTo: function(component) {
10114
- invariant(
10217
+ ("production" !== "development" ? invariant(
10115
10218
  component.props.__owner__ === this,
10116
10219
  '%s: You can\'t call transferPropsTo() on a component that you ' +
10117
10220
  'don\'t own, %s. This usually means you are calling ' +
10118
10221
  'transferPropsTo() on a component passed in as props or children.',
10119
10222
  this.constructor.displayName,
10120
10223
  component.constructor.displayName
10121
- );
10224
+ ) : invariant(component.props.__owner__ === this));
10122
10225
 
10123
10226
  var props = {};
10124
10227
  for (var thatKey in component.props) {
@@ -10147,7 +10250,7 @@ var ReactPropTransferer = {
10147
10250
 
10148
10251
  module.exports = ReactPropTransferer;
10149
10252
 
10150
- },{"./emptyFunction":92,"./invariant":106,"./joinClasses":111,"./merge":115}],60:[function(require,module,exports){
10253
+ },{"./emptyFunction":94,"./invariant":109,"./joinClasses":114,"./merge":118}],61:[function(require,module,exports){
10151
10254
  /**
10152
10255
  * Copyright 2013 Facebook, Inc.
10153
10256
  *
@@ -10242,14 +10345,14 @@ function createPrimitiveTypeChecker(expectedType) {
10242
10345
  if (propType === 'object' && Array.isArray(propValue)) {
10243
10346
  propType = 'array';
10244
10347
  }
10245
- invariant(
10348
+ ("production" !== "development" ? invariant(
10246
10349
  propType === expectedType,
10247
10350
  'Invalid prop `%s` of type `%s` supplied to `%s`, expected `%s`.',
10248
10351
  propName,
10249
10352
  propType,
10250
10353
  componentName,
10251
10354
  expectedType
10252
- );
10355
+ ) : invariant(propType === expectedType));
10253
10356
  }
10254
10357
  return createChainableTypeChecker(validatePrimitiveType);
10255
10358
  }
@@ -10257,26 +10360,26 @@ function createPrimitiveTypeChecker(expectedType) {
10257
10360
  function createEnumTypeChecker(expectedValues) {
10258
10361
  var expectedEnum = createObjectFrom(expectedValues);
10259
10362
  function validateEnumType(propValue, propName, componentName) {
10260
- invariant(
10363
+ ("production" !== "development" ? invariant(
10261
10364
  expectedEnum[propValue],
10262
10365
  'Invalid prop `%s` supplied to `%s`, expected one of %s.',
10263
10366
  propName,
10264
10367
  componentName,
10265
10368
  JSON.stringify(Object.keys(expectedEnum))
10266
- );
10369
+ ) : invariant(expectedEnum[propValue]));
10267
10370
  }
10268
10371
  return createChainableTypeChecker(validateEnumType);
10269
10372
  }
10270
10373
 
10271
10374
  function createInstanceTypeChecker(expectedClass) {
10272
10375
  function validateInstanceType(propValue, propName, componentName) {
10273
- invariant(
10376
+ ("production" !== "development" ? invariant(
10274
10377
  propValue instanceof expectedClass,
10275
10378
  'Invalid prop `%s` supplied to `%s`, expected instance of `%s`.',
10276
10379
  propName,
10277
10380
  componentName,
10278
10381
  expectedClass.name || ANONYMOUS
10279
- );
10382
+ ) : invariant(propValue instanceof expectedClass));
10280
10383
  }
10281
10384
  return createChainableTypeChecker(validateInstanceType);
10282
10385
  }
@@ -10289,12 +10392,12 @@ function createChainableTypeChecker(validate) {
10289
10392
  // Only validate if there is a value to check.
10290
10393
  validate(propValue, propName, componentName || ANONYMOUS);
10291
10394
  } else {
10292
- invariant(
10395
+ ("production" !== "development" ? invariant(
10293
10396
  !isRequired,
10294
10397
  'Required prop `%s` was not specified in `%s`.',
10295
10398
  propName,
10296
10399
  componentName || ANONYMOUS
10297
- );
10400
+ ) : invariant(!isRequired));
10298
10401
  }
10299
10402
  }
10300
10403
  if (!isRequired) {
@@ -10307,7 +10410,7 @@ function createChainableTypeChecker(validate) {
10307
10410
 
10308
10411
  module.exports = Props;
10309
10412
 
10310
- },{"./createObjectFrom":89,"./invariant":106}],61:[function(require,module,exports){
10413
+ },{"./createObjectFrom":91,"./invariant":109}],62:[function(require,module,exports){
10311
10414
  /**
10312
10415
  * Copyright 2013 Facebook, Inc.
10313
10416
  *
@@ -10470,7 +10573,7 @@ PooledClass.addPoolingTo(ReactReconcileTransaction);
10470
10573
 
10471
10574
  module.exports = ReactReconcileTransaction;
10472
10575
 
10473
- },{"./ExecutionEnvironment":21,"./PooledClass":25,"./ReactEventEmitter":46,"./ReactInputSelection":49,"./ReactMountReady":54,"./Transaction":82,"./mixInto":118}],62:[function(require,module,exports){
10576
+ },{"./ExecutionEnvironment":21,"./PooledClass":25,"./ReactEventEmitter":47,"./ReactInputSelection":50,"./ReactMountReady":55,"./Transaction":83,"./mixInto":121}],63:[function(require,module,exports){
10474
10577
  /**
10475
10578
  * Copyright 2013 Facebook, Inc.
10476
10579
  *
@@ -10491,17 +10594,31 @@ module.exports = ReactReconcileTransaction;
10491
10594
  */
10492
10595
  "use strict";
10493
10596
 
10597
+ var ReactComponent = require("./ReactComponent");
10598
+ var ReactInstanceHandles = require("./ReactInstanceHandles");
10494
10599
  var ReactMarkupChecksum = require("./ReactMarkupChecksum");
10495
10600
  var ReactReconcileTransaction = require("./ReactReconcileTransaction");
10496
- var ReactInstanceHandles = require("./ReactInstanceHandles");
10601
+
10602
+ var invariant = require("./invariant");
10497
10603
 
10498
10604
  /**
10499
- * @param {object} component
10605
+ * @param {ReactComponent} component
10500
10606
  * @param {function} callback
10501
10607
  */
10502
10608
  function renderComponentToString(component, callback) {
10503
10609
  // We use a callback API to keep the API async in case in the future we ever
10504
10610
  // need it, but in reality this is a synchronous operation.
10611
+
10612
+ ("production" !== "development" ? invariant(
10613
+ ReactComponent.isValidComponent(component),
10614
+ 'renderComponentToString(): You must pass a valid ReactComponent.'
10615
+ ) : invariant(ReactComponent.isValidComponent(component)));
10616
+
10617
+ ("production" !== "development" ? invariant(
10618
+ typeof callback === 'function',
10619
+ 'renderComponentToString(): You must pass a function as a callback.'
10620
+ ) : invariant(typeof callback === 'function'));
10621
+
10505
10622
  var id = ReactInstanceHandles.createReactRootID();
10506
10623
  var transaction = ReactReconcileTransaction.getPooled();
10507
10624
  transaction.reinitializeTransaction();
@@ -10520,7 +10637,7 @@ module.exports = {
10520
10637
  renderComponentToString: renderComponentToString
10521
10638
  };
10522
10639
 
10523
- },{"./ReactInstanceHandles":50,"./ReactMarkupChecksum":52,"./ReactReconcileTransaction":61}],63:[function(require,module,exports){
10640
+ },{"./ReactComponent":28,"./ReactInstanceHandles":51,"./ReactMarkupChecksum":53,"./ReactReconcileTransaction":62,"./invariant":109}],64:[function(require,module,exports){
10524
10641
  /**
10525
10642
  * Copyright 2013 Facebook, Inc.
10526
10643
  *
@@ -10633,7 +10750,7 @@ ReactStateSetters.Mixin = {
10633
10750
 
10634
10751
  module.exports = ReactStateSetters;
10635
10752
 
10636
- },{}],64:[function(require,module,exports){
10753
+ },{}],65:[function(require,module,exports){
10637
10754
  /**
10638
10755
  * Copyright 2013 Facebook, Inc.
10639
10756
  *
@@ -10710,11 +10827,12 @@ mixInto(ReactTextComponent, {
10710
10827
  /**
10711
10828
  * Updates this component by updating the text content.
10712
10829
  *
10713
- * @param {object} nextProps Contains the next text content.
10830
+ * @param {object} nextComponent Contains the next text content.
10714
10831
  * @param {ReactReconcileTransaction} transaction
10715
10832
  * @internal
10716
10833
  */
10717
- receiveProps: function(nextProps, transaction) {
10834
+ receiveComponent: function(nextComponent, transaction) {
10835
+ var nextProps = nextComponent.props;
10718
10836
  if (nextProps.text !== this.props.text) {
10719
10837
  this.props.text = nextProps.text;
10720
10838
  ReactComponent.DOMIDOperations.updateTextContentByID(
@@ -10728,7 +10846,7 @@ mixInto(ReactTextComponent, {
10728
10846
 
10729
10847
  module.exports = ReactTextComponent;
10730
10848
 
10731
- },{"./ReactComponent":28,"./ReactMount":53,"./escapeTextForBrowser":93,"./mixInto":118}],65:[function(require,module,exports){
10849
+ },{"./ReactComponent":28,"./ReactMount":54,"./escapeTextForBrowser":95,"./mixInto":121}],66:[function(require,module,exports){
10732
10850
  /**
10733
10851
  * Copyright 2013 Facebook, Inc.
10734
10852
  *
@@ -10827,7 +10945,7 @@ var ReactTransitionEvents = {
10827
10945
 
10828
10946
  module.exports = ReactTransitionEvents;
10829
10947
 
10830
- },{"./ExecutionEnvironment":21}],66:[function(require,module,exports){
10948
+ },{"./ExecutionEnvironment":21}],67:[function(require,module,exports){
10831
10949
  /**
10832
10950
  * Copyright 2013 Facebook, Inc.
10833
10951
  *
@@ -10852,9 +10970,24 @@ var React = require("./React");
10852
10970
  var ReactTransitionableChild = require("./ReactTransitionableChild");
10853
10971
  var ReactTransitionKeySet = require("./ReactTransitionKeySet");
10854
10972
 
10855
- var invariant = require("./invariant");
10973
+ var ReactTransitionGroup = React.createClass({
10974
+
10975
+ propTypes: {
10976
+ transitionName: React.PropTypes.string.isRequired,
10977
+ transitionEnter: React.PropTypes.bool,
10978
+ transitionLeave: React.PropTypes.bool,
10979
+ onTransition: React.PropTypes.func,
10980
+ component: React.PropTypes.func
10981
+ },
10982
+
10983
+ getDefaultProps: function() {
10984
+ return {
10985
+ transitionEnter: true,
10986
+ transitionLeave: true,
10987
+ component: React.DOM.span
10988
+ };
10989
+ },
10856
10990
 
10857
- var ReactTransitionGroupMixin = {
10858
10991
  componentWillMount: function() {
10859
10992
  // _transitionGroupCurrentKeys stores the union of previous *and* next keys.
10860
10993
  // If this were a component we'd store it as state, however, since this must
@@ -10864,19 +10997,19 @@ var ReactTransitionGroupMixin = {
10864
10997
  this._transitionGroupCurrentKeys = {};
10865
10998
  },
10866
10999
 
11000
+ componentDidUpdate: function() {
11001
+ if (this.props.onTransition) {
11002
+ this.props.onTransition();
11003
+ }
11004
+ },
11005
+
10867
11006
  /**
10868
11007
  * Render some children in a transitionable way.
10869
11008
  */
10870
11009
  renderTransitionableChildren: function(sourceChildren) {
10871
- invariant(
10872
- this.getTransitionConfig,
10873
- 'renderTransitionableChildren(): You must provide a ' +
10874
- 'getTransitionConfig() method.'
10875
- );
10876
-
10877
11010
  var children = {};
10878
11011
  var childMapping = ReactTransitionKeySet.getChildMapping(sourceChildren);
10879
- var transitionConfig = this.getTransitionConfig();
11012
+
10880
11013
  var currentKeys = ReactTransitionKeySet.mergeKeySets(
10881
11014
  this._transitionGroupCurrentKeys,
10882
11015
  ReactTransitionKeySet.getKeySet(sourceChildren)
@@ -10888,10 +11021,10 @@ var ReactTransitionGroupMixin = {
10888
11021
  // may look up an old key in the new children, and it may switch to
10889
11022
  // undefined. React's reconciler will keep the ReactTransitionableChild
10890
11023
  // instance alive such that we can animate it.
10891
- if (childMapping[key] || transitionConfig.leave) {
11024
+ if (childMapping[key] || this.props.transitionLeave) {
10892
11025
  children[key] = ReactTransitionableChild({
10893
- name: transitionConfig.name,
10894
- enter: transitionConfig.enter,
11026
+ name: this.props.transitionName,
11027
+ enter: this.props.transitionEnter,
10895
11028
  onDoneLeaving: this._handleDoneLeaving.bind(this, key)
10896
11029
  }, childMapping[key]);
10897
11030
  }
@@ -10907,26 +11040,6 @@ var ReactTransitionGroupMixin = {
10907
11040
  // node.
10908
11041
  delete this._transitionGroupCurrentKeys[key];
10909
11042
  this.forceUpdate();
10910
- }
10911
- };
10912
-
10913
- var ReactTransitionGroup = React.createClass({
10914
- mixins: [ReactTransitionGroupMixin],
10915
-
10916
- getDefaultProps: function() {
10917
- return {
10918
- transitionEnter: true,
10919
- transitionLeave: true,
10920
- component: React.DOM.span
10921
- };
10922
- },
10923
-
10924
- getTransitionConfig: function() {
10925
- return {
10926
- name: this.props.transitionName,
10927
- enter: this.props.transitionEnter,
10928
- leave: this.props.transitionLeave
10929
- };
10930
11043
  },
10931
11044
 
10932
11045
  render: function() {
@@ -10946,7 +11059,7 @@ var ReactTransitionGroup = React.createClass({
10946
11059
 
10947
11060
  module.exports = ReactTransitionGroup;
10948
11061
 
10949
- },{"./React":26,"./ReactTransitionKeySet":67,"./ReactTransitionableChild":68,"./invariant":106}],67:[function(require,module,exports){
11062
+ },{"./React":26,"./ReactTransitionKeySet":68,"./ReactTransitionableChild":69}],68:[function(require,module,exports){
10950
11063
  /**
10951
11064
  * Copyright 2013 Facebook, Inc.
10952
11065
  *
@@ -11017,6 +11130,9 @@ var ReactTransitionKeySet = {
11017
11130
  * in `next` in a reasonable order.
11018
11131
  */
11019
11132
  mergeKeySets: function(prev, next) {
11133
+ prev = prev || {};
11134
+ next = next || {};
11135
+
11020
11136
  var keySet = {};
11021
11137
  var prevKeys = Object.keys(prev).concat([MERGE_KEY_SETS_TAIL_SENTINEL]);
11022
11138
  var nextKeys = Object.keys(next).concat([MERGE_KEY_SETS_TAIL_SENTINEL]);
@@ -11056,7 +11172,7 @@ var ReactTransitionKeySet = {
11056
11172
 
11057
11173
  module.exports = ReactTransitionKeySet;
11058
11174
 
11059
- },{"./ReactChildren":27}],68:[function(require,module,exports){
11175
+ },{"./ReactChildren":27}],69:[function(require,module,exports){
11060
11176
  /**
11061
11177
  * Copyright 2013 Facebook, Inc.
11062
11178
  *
@@ -11090,7 +11206,7 @@ var NO_EVENT_TIMEOUT = 5000;
11090
11206
 
11091
11207
  var noEventListener = null;
11092
11208
 
11093
- if (true) {
11209
+ if ("production" !== "development") {
11094
11210
  noEventListener = function() {
11095
11211
  console.warn(
11096
11212
  'transition(): tried to perform an animation without ' +
@@ -11121,7 +11237,7 @@ var ReactTransitionableChild = React.createClass({
11121
11237
  var noEventTimeout = null;
11122
11238
 
11123
11239
  var endListener = function() {
11124
- if (true) {
11240
+ if ("production" !== "development") {
11125
11241
  clearTimeout(noEventTimeout);
11126
11242
  }
11127
11243
 
@@ -11147,7 +11263,7 @@ var ReactTransitionableChild = React.createClass({
11147
11263
  // Need to do this to actually trigger a transition.
11148
11264
  this.queueClass(activeClassName);
11149
11265
 
11150
- if (true) {
11266
+ if ("production" !== "development") {
11151
11267
  noEventTimeout = setTimeout(noEventListener, NO_EVENT_TIMEOUT);
11152
11268
  }
11153
11269
  },
@@ -11210,7 +11326,7 @@ var ReactTransitionableChild = React.createClass({
11210
11326
 
11211
11327
  module.exports = ReactTransitionableChild;
11212
11328
 
11213
- },{"./CSSCore":2,"./React":26,"./ReactTransitionEvents":65}],69:[function(require,module,exports){
11329
+ },{"./CSSCore":2,"./React":26,"./ReactTransitionEvents":66}],70:[function(require,module,exports){
11214
11330
  /**
11215
11331
  * Copyright 2013 Facebook, Inc.
11216
11332
  *
@@ -11238,7 +11354,7 @@ var dirtyComponents = [];
11238
11354
  var batchingStrategy = null;
11239
11355
 
11240
11356
  function ensureBatchingStrategy() {
11241
- invariant(batchingStrategy, 'ReactUpdates: must inject a batching strategy');
11357
+ ("production" !== "development" ? invariant(batchingStrategy, 'ReactUpdates: must inject a batching strategy') : invariant(batchingStrategy));
11242
11358
  }
11243
11359
 
11244
11360
  function batchedUpdates(callback, param) {
@@ -11305,12 +11421,12 @@ function flushBatchedUpdates() {
11305
11421
  * list of functions which will be executed once the rerender occurs.
11306
11422
  */
11307
11423
  function enqueueUpdate(component, callback) {
11308
- invariant(
11424
+ ("production" !== "development" ? invariant(
11309
11425
  !callback || typeof callback === "function",
11310
11426
  'enqueueUpdate(...): You called `setProps`, `replaceProps`, ' +
11311
11427
  '`setState`, `replaceState`, or `forceUpdate` with a callback that ' +
11312
11428
  'isn\'t callable.'
11313
- );
11429
+ ) : invariant(!callback || typeof callback === "function"));
11314
11430
  ensureBatchingStrategy();
11315
11431
 
11316
11432
  if (!batchingStrategy.isBatchingUpdates) {
@@ -11332,18 +11448,18 @@ function enqueueUpdate(component, callback) {
11332
11448
 
11333
11449
  var ReactUpdatesInjection = {
11334
11450
  injectBatchingStrategy: function(_batchingStrategy) {
11335
- invariant(
11451
+ ("production" !== "development" ? invariant(
11336
11452
  _batchingStrategy,
11337
11453
  'ReactUpdates: must provide a batching strategy'
11338
- );
11339
- invariant(
11454
+ ) : invariant(_batchingStrategy));
11455
+ ("production" !== "development" ? invariant(
11340
11456
  typeof _batchingStrategy.batchedUpdates === 'function',
11341
11457
  'ReactUpdates: must provide a batchedUpdates() function'
11342
- );
11343
- invariant(
11458
+ ) : invariant(typeof _batchingStrategy.batchedUpdates === 'function'));
11459
+ ("production" !== "development" ? invariant(
11344
11460
  typeof _batchingStrategy.isBatchingUpdates === 'boolean',
11345
11461
  'ReactUpdates: must provide an isBatchingUpdates boolean attribute'
11346
- );
11462
+ ) : invariant(typeof _batchingStrategy.isBatchingUpdates === 'boolean'));
11347
11463
  batchingStrategy = _batchingStrategy;
11348
11464
  }
11349
11465
  };
@@ -11357,7 +11473,7 @@ var ReactUpdates = {
11357
11473
 
11358
11474
  module.exports = ReactUpdates;
11359
11475
 
11360
- },{"./invariant":106}],70:[function(require,module,exports){
11476
+ },{"./invariant":109}],71:[function(require,module,exports){
11361
11477
  /**
11362
11478
  * Copyright 2013 Facebook, Inc.
11363
11479
  *
@@ -11400,7 +11516,7 @@ React.addons = {
11400
11516
  module.exports = React;
11401
11517
 
11402
11518
 
11403
- },{"./LinkedStateMixin":22,"./React":26,"./ReactTransitionGroup":66,"./cx":90}],71:[function(require,module,exports){
11519
+ },{"./LinkedStateMixin":22,"./React":26,"./ReactTransitionGroup":67,"./cx":92}],72:[function(require,module,exports){
11404
11520
  /**
11405
11521
  * Copyright 2013 Facebook, Inc.
11406
11522
  *
@@ -11429,7 +11545,6 @@ var ReactInputSelection = require("./ReactInputSelection");
11429
11545
  var SyntheticEvent = require("./SyntheticEvent");
11430
11546
 
11431
11547
  var getActiveElement = require("./getActiveElement");
11432
- var isEventSupported = require("./isEventSupported");
11433
11548
  var isTextInputElement = require("./isTextInputElement");
11434
11549
  var keyOf = require("./keyOf");
11435
11550
  var shallowEqual = require("./shallowEqual");
@@ -11446,11 +11561,9 @@ var eventTypes = {
11446
11561
  };
11447
11562
 
11448
11563
  var useSelectionChange = false;
11449
- var useSelect = false;
11450
11564
 
11451
11565
  if (ExecutionEnvironment.canUseDOM) {
11452
11566
  useSelectionChange = 'onselectionchange' in document;
11453
- useSelect = isEventSupported('select');
11454
11567
  }
11455
11568
 
11456
11569
  var activeElement = null;
@@ -11598,6 +11711,7 @@ var SelectEventPlugin = {
11598
11711
  case topLevelTypes.topMouseDown:
11599
11712
  mouseDown = true;
11600
11713
  break;
11714
+ case topLevelTypes.topContextMenu:
11601
11715
  case topLevelTypes.topMouseUp:
11602
11716
  mouseDown = false;
11603
11717
  return constructSelectEvent(nativeEvent);
@@ -11621,7 +11735,7 @@ var SelectEventPlugin = {
11621
11735
 
11622
11736
  module.exports = SelectEventPlugin;
11623
11737
 
11624
- },{"./EventConstants":15,"./EventPluginHub":17,"./EventPropagators":20,"./ExecutionEnvironment":21,"./ReactInputSelection":49,"./SyntheticEvent":75,"./getActiveElement":99,"./isEventSupported":107,"./isTextInputElement":109,"./keyOf":113,"./shallowEqual":124}],72:[function(require,module,exports){
11738
+ },{"./EventConstants":15,"./EventPluginHub":17,"./EventPropagators":20,"./ExecutionEnvironment":21,"./ReactInputSelection":50,"./SyntheticEvent":76,"./getActiveElement":101,"./isTextInputElement":112,"./keyOf":116,"./shallowEqual":126}],73:[function(require,module,exports){
11625
11739
  /**
11626
11740
  * Copyright 2013 Facebook, Inc.
11627
11741
  *
@@ -11671,6 +11785,12 @@ var eventTypes = {
11671
11785
  captured: keyOf({onClickCapture: true})
11672
11786
  }
11673
11787
  },
11788
+ contextMenu: {
11789
+ phasedRegistrationNames: {
11790
+ bubbled: keyOf({onContextMenu: true}),
11791
+ captured: keyOf({onContextMenuCapture: true})
11792
+ }
11793
+ },
11674
11794
  copy: {
11675
11795
  phasedRegistrationNames: {
11676
11796
  bubbled: keyOf({onCopy: true}),
@@ -11840,6 +11960,7 @@ var eventTypes = {
11840
11960
  var topLevelEventsToDispatchConfig = {
11841
11961
  topBlur: eventTypes.blur,
11842
11962
  topClick: eventTypes.click,
11963
+ topContextMenu: eventTypes.contextMenu,
11843
11964
  topCopy: eventTypes.copy,
11844
11965
  topCut: eventTypes.cut,
11845
11966
  topDoubleClick: eventTypes.doubleClick,
@@ -11930,6 +12051,7 @@ var SimpleEventPlugin = {
11930
12051
  return null;
11931
12052
  }
11932
12053
  /* falls through */
12054
+ case topLevelTypes.topContextMenu:
11933
12055
  case topLevelTypes.topDoubleClick:
11934
12056
  case topLevelTypes.topDrag:
11935
12057
  case topLevelTypes.topDragEnd:
@@ -11962,11 +12084,11 @@ var SimpleEventPlugin = {
11962
12084
  EventConstructor = SyntheticClipboardEvent;
11963
12085
  break;
11964
12086
  }
11965
- invariant(
12087
+ ("production" !== "development" ? invariant(
11966
12088
  EventConstructor,
11967
12089
  'SimpleEventPlugin: Unhandled event type, `%s`.',
11968
12090
  topLevelType
11969
- );
12091
+ ) : invariant(EventConstructor));
11970
12092
  var event = EventConstructor.getPooled(
11971
12093
  dispatchConfig,
11972
12094
  topLevelTargetID,
@@ -11980,7 +12102,7 @@ var SimpleEventPlugin = {
11980
12102
 
11981
12103
  module.exports = SimpleEventPlugin;
11982
12104
 
11983
- },{"./EventConstants":15,"./EventPropagators":20,"./SyntheticClipboardEvent":73,"./SyntheticEvent":75,"./SyntheticFocusEvent":76,"./SyntheticKeyboardEvent":77,"./SyntheticMouseEvent":78,"./SyntheticTouchEvent":79,"./SyntheticUIEvent":80,"./SyntheticWheelEvent":81,"./invariant":106,"./keyOf":113}],73:[function(require,module,exports){
12105
+ },{"./EventConstants":15,"./EventPropagators":20,"./SyntheticClipboardEvent":74,"./SyntheticEvent":76,"./SyntheticFocusEvent":77,"./SyntheticKeyboardEvent":78,"./SyntheticMouseEvent":79,"./SyntheticTouchEvent":80,"./SyntheticUIEvent":81,"./SyntheticWheelEvent":82,"./invariant":109,"./keyOf":116}],74:[function(require,module,exports){
11984
12106
  /**
11985
12107
  * Copyright 2013 Facebook, Inc.
11986
12108
  *
@@ -12027,7 +12149,7 @@ SyntheticEvent.augmentClass(SyntheticClipboardEvent, ClipboardEventInterface);
12027
12149
  module.exports = SyntheticClipboardEvent;
12028
12150
 
12029
12151
 
12030
- },{"./SyntheticEvent":75}],74:[function(require,module,exports){
12152
+ },{"./SyntheticEvent":76}],75:[function(require,module,exports){
12031
12153
  /**
12032
12154
  * Copyright 2013 Facebook, Inc.
12033
12155
  *
@@ -12080,7 +12202,7 @@ SyntheticEvent.augmentClass(
12080
12202
  module.exports = SyntheticCompositionEvent;
12081
12203
 
12082
12204
 
12083
- },{"./SyntheticEvent":75}],75:[function(require,module,exports){
12205
+ },{"./SyntheticEvent":76}],76:[function(require,module,exports){
12084
12206
  /**
12085
12207
  * Copyright 2013 Facebook, Inc.
12086
12208
  *
@@ -12162,7 +12284,10 @@ function SyntheticEvent(dispatchConfig, dispatchMarker, nativeEvent) {
12162
12284
  }
12163
12285
  }
12164
12286
 
12165
- if (nativeEvent.defaultPrevented || nativeEvent.returnValue === false) {
12287
+ var defaultPrevented = nativeEvent.defaultPrevented != null ?
12288
+ nativeEvent.defaultPrevented :
12289
+ nativeEvent.returnValue === false;
12290
+ if (defaultPrevented) {
12166
12291
  this.isDefaultPrevented = emptyFunction.thatReturnsTrue;
12167
12292
  } else {
12168
12293
  this.isDefaultPrevented = emptyFunction.thatReturnsFalse;
@@ -12242,7 +12367,7 @@ PooledClass.addPoolingTo(SyntheticEvent, PooledClass.threeArgumentPooler);
12242
12367
 
12243
12368
  module.exports = SyntheticEvent;
12244
12369
 
12245
- },{"./PooledClass":25,"./emptyFunction":92,"./getEventTarget":100,"./merge":115,"./mergeInto":117}],76:[function(require,module,exports){
12370
+ },{"./PooledClass":25,"./emptyFunction":94,"./getEventTarget":102,"./merge":118,"./mergeInto":120}],77:[function(require,module,exports){
12246
12371
  /**
12247
12372
  * Copyright 2013 Facebook, Inc.
12248
12373
  *
@@ -12288,7 +12413,7 @@ SyntheticUIEvent.augmentClass(SyntheticFocusEvent, FocusEventInterface);
12288
12413
 
12289
12414
  module.exports = SyntheticFocusEvent;
12290
12415
 
12291
- },{"./SyntheticUIEvent":80}],77:[function(require,module,exports){
12416
+ },{"./SyntheticUIEvent":81}],78:[function(require,module,exports){
12292
12417
  /**
12293
12418
  * Copyright 2013 Facebook, Inc.
12294
12419
  *
@@ -12346,7 +12471,7 @@ SyntheticUIEvent.augmentClass(SyntheticKeyboardEvent, KeyboardEventInterface);
12346
12471
 
12347
12472
  module.exports = SyntheticKeyboardEvent;
12348
12473
 
12349
- },{"./SyntheticUIEvent":80}],78:[function(require,module,exports){
12474
+ },{"./SyntheticUIEvent":81}],79:[function(require,module,exports){
12350
12475
  /**
12351
12476
  * Copyright 2013 Facebook, Inc.
12352
12477
  *
@@ -12433,7 +12558,7 @@ SyntheticUIEvent.augmentClass(SyntheticMouseEvent, MouseEventInterface);
12433
12558
 
12434
12559
  module.exports = SyntheticMouseEvent;
12435
12560
 
12436
- },{"./SyntheticUIEvent":80,"./ViewportMetrics":83}],79:[function(require,module,exports){
12561
+ },{"./SyntheticUIEvent":81,"./ViewportMetrics":84}],80:[function(require,module,exports){
12437
12562
  /**
12438
12563
  * Copyright 2013 Facebook, Inc.
12439
12564
  *
@@ -12485,7 +12610,7 @@ SyntheticUIEvent.augmentClass(SyntheticTouchEvent, TouchEventInterface);
12485
12610
 
12486
12611
  module.exports = SyntheticTouchEvent;
12487
12612
 
12488
- },{"./SyntheticUIEvent":80}],80:[function(require,module,exports){
12613
+ },{"./SyntheticUIEvent":81}],81:[function(require,module,exports){
12489
12614
  /**
12490
12615
  * Copyright 2013 Facebook, Inc.
12491
12616
  *
@@ -12532,7 +12657,7 @@ SyntheticEvent.augmentClass(SyntheticUIEvent, UIEventInterface);
12532
12657
 
12533
12658
  module.exports = SyntheticUIEvent;
12534
12659
 
12535
- },{"./SyntheticEvent":75}],81:[function(require,module,exports){
12660
+ },{"./SyntheticEvent":76}],82:[function(require,module,exports){
12536
12661
  /**
12537
12662
  * Copyright 2013 Facebook, Inc.
12538
12663
  *
@@ -12576,7 +12701,7 @@ var WheelEventInterface = {
12576
12701
  // Fallback to `wheelDeltaY` for Webkit.
12577
12702
  'wheelDeltaY' in event ? event.wheelDeltaY :
12578
12703
  // Fallback to `wheelDelta` for IE<9.
12579
- 'wheelDelta' in event ? event.wheelData : 0
12704
+ 'wheelDelta' in event ? event.wheelDelta : 0
12580
12705
  );
12581
12706
  },
12582
12707
  deltaZ: null,
@@ -12597,7 +12722,7 @@ SyntheticMouseEvent.augmentClass(SyntheticWheelEvent, WheelEventInterface);
12597
12722
 
12598
12723
  module.exports = SyntheticWheelEvent;
12599
12724
 
12600
- },{"./SyntheticMouseEvent":78}],82:[function(require,module,exports){
12725
+ },{"./SyntheticMouseEvent":79}],83:[function(require,module,exports){
12601
12726
  /**
12602
12727
  * Copyright 2013 Facebook, Inc.
12603
12728
  *
@@ -12740,11 +12865,11 @@ var Mixin = {
12740
12865
  * @return Return value from `method`.
12741
12866
  */
12742
12867
  perform: function(method, scope, a, b, c, d, e, f) {
12743
- invariant(
12868
+ ("production" !== "development" ? invariant(
12744
12869
  !this.isInTransaction(),
12745
12870
  'Transaction.perform(...): Cannot initialize a transaction when there ' +
12746
12871
  'is already an outstanding transaction.'
12747
- );
12872
+ ) : invariant(!this.isInTransaction()));
12748
12873
  var memberStart = Date.now();
12749
12874
  var errorToThrow = null;
12750
12875
  var ret;
@@ -12805,10 +12930,10 @@ var Mixin = {
12805
12930
  * invoked).
12806
12931
  */
12807
12932
  closeAll: function() {
12808
- invariant(
12933
+ ("production" !== "development" ? invariant(
12809
12934
  this.isInTransaction(),
12810
12935
  'Transaction.closeAll(): Cannot close transaction when none are open.'
12811
- );
12936
+ ) : invariant(this.isInTransaction()));
12812
12937
  var transactionWrappers = this.transactionWrappers;
12813
12938
  var wrapperCloseTimes = this.timingMetrics.wrapperCloseTimes;
12814
12939
  var errorToThrow = null;
@@ -12850,7 +12975,7 @@ var Transaction = {
12850
12975
 
12851
12976
  module.exports = Transaction;
12852
12977
 
12853
- },{"./invariant":106}],83:[function(require,module,exports){
12978
+ },{"./invariant":109}],84:[function(require,module,exports){
12854
12979
  /**
12855
12980
  * Copyright 2013 Facebook, Inc.
12856
12981
  *
@@ -12871,6 +12996,8 @@ module.exports = Transaction;
12871
12996
 
12872
12997
  "use strict";
12873
12998
 
12999
+ var getUnboundedScrollPosition = require("./getUnboundedScrollPosition");
13000
+
12874
13001
  var ViewportMetrics = {
12875
13002
 
12876
13003
  currentScrollLeft: 0,
@@ -12878,17 +13005,16 @@ var ViewportMetrics = {
12878
13005
  currentScrollTop: 0,
12879
13006
 
12880
13007
  refreshScrollValues: function() {
12881
- ViewportMetrics.currentScrollLeft =
12882
- document.body.scrollLeft + document.documentElement.scrollLeft;
12883
- ViewportMetrics.currentScrollTop =
12884
- document.body.scrollTop + document.documentElement.scrollTop;
13008
+ var scrollPosition = getUnboundedScrollPosition(window);
13009
+ ViewportMetrics.currentScrollLeft = scrollPosition.x;
13010
+ ViewportMetrics.currentScrollTop = scrollPosition.y;
12885
13011
  }
12886
13012
 
12887
13013
  };
12888
13014
 
12889
13015
  module.exports = ViewportMetrics;
12890
13016
 
12891
- },{}],84:[function(require,module,exports){
13017
+ },{"./getUnboundedScrollPosition":107}],85:[function(require,module,exports){
12892
13018
  /**
12893
13019
  * Copyright 2013 Facebook, Inc.
12894
13020
  *
@@ -12919,10 +13045,10 @@ var invariant = require("./invariant");
12919
13045
  * @return {*|array<*>} An accumulation of items.
12920
13046
  */
12921
13047
  function accumulate(current, next) {
12922
- invariant(
13048
+ ("production" !== "development" ? invariant(
12923
13049
  next != null,
12924
13050
  'accumulate(...): Accumulated items must be not be null or undefined.'
12925
- );
13051
+ ) : invariant(next != null));
12926
13052
  if (current == null) {
12927
13053
  return next;
12928
13054
  } else {
@@ -12944,7 +13070,7 @@ function accumulate(current, next) {
12944
13070
 
12945
13071
  module.exports = accumulate;
12946
13072
 
12947
- },{"./invariant":106}],85:[function(require,module,exports){
13073
+ },{"./invariant":109}],86:[function(require,module,exports){
12948
13074
  /**
12949
13075
  * Copyright 2013 Facebook, Inc.
12950
13076
  *
@@ -12985,7 +13111,58 @@ function adler32(data) {
12985
13111
 
12986
13112
  module.exports = adler32;
12987
13113
 
12988
- },{}],86:[function(require,module,exports){
13114
+ },{}],87:[function(require,module,exports){
13115
+ /**
13116
+ * Copyright 2013 Facebook, Inc.
13117
+ *
13118
+ * Licensed under the Apache License, Version 2.0 (the "License");
13119
+ * you may not use this file except in compliance with the License.
13120
+ * You may obtain a copy of the License at
13121
+ *
13122
+ * http://www.apache.org/licenses/LICENSE-2.0
13123
+ *
13124
+ * Unless required by applicable law or agreed to in writing, software
13125
+ * distributed under the License is distributed on an "AS IS" BASIS,
13126
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13127
+ * See the License for the specific language governing permissions and
13128
+ * limitations under the License.
13129
+ *
13130
+ * @providesModule containsNode
13131
+ * @typechecks
13132
+ */
13133
+
13134
+ var isTextNode = require("./isTextNode");
13135
+
13136
+ /*jslint bitwise:true */
13137
+
13138
+ /**
13139
+ * Checks if a given DOM node contains or is another DOM node.
13140
+ *
13141
+ * @param {?DOMNode} outerNode Outer DOM node.
13142
+ * @param {?DOMNode} innerNode Inner DOM node.
13143
+ * @return {boolean} True if `outerNode` contains or is `innerNode`.
13144
+ */
13145
+ function containsNode(outerNode, innerNode) {
13146
+ if (!outerNode || !innerNode) {
13147
+ return false;
13148
+ } else if (outerNode === innerNode) {
13149
+ return true;
13150
+ } else if (isTextNode(outerNode)) {
13151
+ return false;
13152
+ } else if (isTextNode(innerNode)) {
13153
+ return containsNode(outerNode, innerNode.parentNode);
13154
+ } else if (outerNode.contains) {
13155
+ return outerNode.contains(innerNode);
13156
+ } else if (outerNode.compareDocumentPosition) {
13157
+ return !!(outerNode.compareDocumentPosition(innerNode) & 16);
13158
+ } else {
13159
+ return false;
13160
+ }
13161
+ }
13162
+
13163
+ module.exports = containsNode;
13164
+
13165
+ },{"./isTextNode":113}],88:[function(require,module,exports){
12989
13166
  /**
12990
13167
  * Copyright 2013 Facebook, Inc.
12991
13168
  *
@@ -13014,7 +13191,7 @@ module.exports = adler32;
13014
13191
  function copyProperties(obj, a, b, c, d, e, f) {
13015
13192
  obj = obj || {};
13016
13193
 
13017
- if (true) {
13194
+ if ("production" !== "development") {
13018
13195
  if (f) {
13019
13196
  throw new Error('Too many arguments passed to copyProperties');
13020
13197
  }
@@ -13041,7 +13218,7 @@ function copyProperties(obj, a, b, c, d, e, f) {
13041
13218
 
13042
13219
  module.exports = copyProperties;
13043
13220
 
13044
- },{}],87:[function(require,module,exports){
13221
+ },{}],89:[function(require,module,exports){
13045
13222
  /**
13046
13223
  * Copyright 2013 Facebook, Inc.
13047
13224
  *
@@ -13137,7 +13314,7 @@ function createArrayFrom(obj) {
13137
13314
 
13138
13315
  module.exports = createArrayFrom;
13139
13316
 
13140
- },{}],88:[function(require,module,exports){
13317
+ },{}],90:[function(require,module,exports){
13141
13318
  /**
13142
13319
  * Copyright 2013 Facebook, Inc.
13143
13320
  *
@@ -13199,7 +13376,7 @@ function getNodeName(markup) {
13199
13376
  */
13200
13377
  function createNodesFromMarkup(markup, handleScript) {
13201
13378
  var node = dummyNode;
13202
- invariant(!!dummyNode, 'createNodesFromMarkup dummy not initialized');
13379
+ ("production" !== "development" ? invariant(!!dummyNode, 'createNodesFromMarkup dummy not initialized') : invariant(!!dummyNode));
13203
13380
  var nodeName = getNodeName(markup);
13204
13381
 
13205
13382
  var wrap = nodeName && getMarkupWrap(nodeName);
@@ -13216,10 +13393,10 @@ function createNodesFromMarkup(markup, handleScript) {
13216
13393
 
13217
13394
  var scripts = node.getElementsByTagName('script');
13218
13395
  if (scripts.length) {
13219
- invariant(
13396
+ ("production" !== "development" ? invariant(
13220
13397
  handleScript,
13221
13398
  'createNodesFromMarkup(...): Unexpected <script> element rendered.'
13222
- );
13399
+ ) : invariant(handleScript));
13223
13400
  createArrayFrom(scripts).forEach(handleScript);
13224
13401
  }
13225
13402
 
@@ -13232,7 +13409,7 @@ function createNodesFromMarkup(markup, handleScript) {
13232
13409
 
13233
13410
  module.exports = createNodesFromMarkup;
13234
13411
 
13235
- },{"./ExecutionEnvironment":21,"./createArrayFrom":87,"./getMarkupWrap":101,"./invariant":106}],89:[function(require,module,exports){
13412
+ },{"./ExecutionEnvironment":21,"./createArrayFrom":89,"./getMarkupWrap":103,"./invariant":109}],91:[function(require,module,exports){
13236
13413
  /**
13237
13414
  * Copyright 2013 Facebook, Inc.
13238
13415
  *
@@ -13275,7 +13452,7 @@ module.exports = createNodesFromMarkup;
13275
13452
  * @returns object
13276
13453
  */
13277
13454
  function createObjectFrom(keys, values /* = true */) {
13278
- if (true) {
13455
+ if ("production" !== "development") {
13279
13456
  if (!Array.isArray(keys)) {
13280
13457
  throw new TypeError('Must pass an array of keys.');
13281
13458
  }
@@ -13295,7 +13472,7 @@ function createObjectFrom(keys, values /* = true */) {
13295
13472
 
13296
13473
  module.exports = createObjectFrom;
13297
13474
 
13298
- },{}],90:[function(require,module,exports){
13475
+ },{}],92:[function(require,module,exports){
13299
13476
  /**
13300
13477
  * Copyright 2013 Facebook, Inc.
13301
13478
  *
@@ -13341,7 +13518,7 @@ function cx(classNames) {
13341
13518
 
13342
13519
  module.exports = cx;
13343
13520
 
13344
- },{}],91:[function(require,module,exports){
13521
+ },{}],93:[function(require,module,exports){
13345
13522
  /**
13346
13523
  * Copyright 2013 Facebook, Inc.
13347
13524
  *
@@ -13400,7 +13577,7 @@ function dangerousStyleValue(styleName, value) {
13400
13577
 
13401
13578
  module.exports = dangerousStyleValue;
13402
13579
 
13403
- },{"./CSSProperty":3}],92:[function(require,module,exports){
13580
+ },{"./CSSProperty":3}],94:[function(require,module,exports){
13404
13581
  /**
13405
13582
  * Copyright 2013 Facebook, Inc.
13406
13583
  *
@@ -13445,7 +13622,7 @@ copyProperties(emptyFunction, {
13445
13622
 
13446
13623
  module.exports = emptyFunction;
13447
13624
 
13448
- },{"./copyProperties":86}],93:[function(require,module,exports){
13625
+ },{"./copyProperties":88}],95:[function(require,module,exports){
13449
13626
  /**
13450
13627
  * Copyright 2013 Facebook, Inc.
13451
13628
  *
@@ -13494,7 +13671,7 @@ function escapeTextForBrowser(text) {
13494
13671
 
13495
13672
  module.exports = escapeTextForBrowser;
13496
13673
 
13497
- },{}],94:[function(require,module,exports){
13674
+ },{}],96:[function(require,module,exports){
13498
13675
  /**
13499
13676
  * Copyright 2013 Facebook, Inc.
13500
13677
  *
@@ -13545,7 +13722,7 @@ ex._suffix = ']]>';
13545
13722
 
13546
13723
  module.exports = ex;
13547
13724
 
13548
- },{}],95:[function(require,module,exports){
13725
+ },{}],97:[function(require,module,exports){
13549
13726
  /**
13550
13727
  * Copyright 2013 Facebook, Inc.
13551
13728
  *
@@ -13592,7 +13769,7 @@ function filterAttributes(node, func, context) {
13592
13769
 
13593
13770
  module.exports = filterAttributes;
13594
13771
 
13595
- },{}],96:[function(require,module,exports){
13772
+ },{}],98:[function(require,module,exports){
13596
13773
  /**
13597
13774
  * Copyright 2013 Facebook, Inc.
13598
13775
  *
@@ -13624,12 +13801,12 @@ var traverseAllChildren = require("./traverseAllChildren");
13624
13801
  function flattenSingleChildIntoContext(traverseContext, child, name) {
13625
13802
  // We found a component instance.
13626
13803
  var result = traverseContext;
13627
- invariant(
13804
+ ("production" !== "development" ? invariant(
13628
13805
  !result.hasOwnProperty(name),
13629
13806
  'flattenChildren(...): Encountered two children with the same key, `%s`. ' +
13630
13807
  'Children keys must be unique.',
13631
13808
  name
13632
- );
13809
+ ) : invariant(!result.hasOwnProperty(name)));
13633
13810
  result[name] = child;
13634
13811
  }
13635
13812
 
@@ -13648,7 +13825,7 @@ function flattenChildren(children) {
13648
13825
 
13649
13826
  module.exports = flattenChildren;
13650
13827
 
13651
- },{"./invariant":106,"./traverseAllChildren":125}],97:[function(require,module,exports){
13828
+ },{"./invariant":109,"./traverseAllChildren":127}],99:[function(require,module,exports){
13652
13829
  /**
13653
13830
  * Copyright 2013 Facebook, Inc.
13654
13831
  *
@@ -13686,7 +13863,7 @@ var forEachAccumulated = function(arr, cb, scope) {
13686
13863
 
13687
13864
  module.exports = forEachAccumulated;
13688
13865
 
13689
- },{}],98:[function(require,module,exports){
13866
+ },{}],100:[function(require,module,exports){
13690
13867
  /**
13691
13868
  * Copyright 2013 Facebook, Inc.
13692
13869
  *
@@ -13764,7 +13941,7 @@ function _getNodeID(node) {
13764
13941
 
13765
13942
  module.exports = ge;
13766
13943
 
13767
- },{}],99:[function(require,module,exports){
13944
+ },{}],101:[function(require,module,exports){
13768
13945
  /**
13769
13946
  * Copyright 2013 Facebook, Inc.
13770
13947
  *
@@ -13799,7 +13976,7 @@ function getActiveElement() /*?DOMElement*/ {
13799
13976
  module.exports = getActiveElement;
13800
13977
 
13801
13978
 
13802
- },{}],100:[function(require,module,exports){
13979
+ },{}],102:[function(require,module,exports){
13803
13980
  /**
13804
13981
  * Copyright 2013 Facebook, Inc.
13805
13982
  *
@@ -13837,7 +14014,7 @@ function getEventTarget(nativeEvent) {
13837
14014
 
13838
14015
  module.exports = getEventTarget;
13839
14016
 
13840
- },{}],101:[function(require,module,exports){
14017
+ },{}],103:[function(require,module,exports){
13841
14018
  /**
13842
14019
  * Copyright 2013 Facebook, Inc.
13843
14020
  *
@@ -13929,7 +14106,7 @@ var markupWrap = {
13929
14106
  * @return {?array} Markup wrap configuration, if applicable.
13930
14107
  */
13931
14108
  function getMarkupWrap(nodeName) {
13932
- invariant(!!dummyNode, 'Markup wrapping node not initialized');
14109
+ ("production" !== "development" ? invariant(!!dummyNode, 'Markup wrapping node not initialized') : invariant(!!dummyNode));
13933
14110
  if (!markupWrap.hasOwnProperty(nodeName)) {
13934
14111
  nodeName = '*';
13935
14112
  }
@@ -13947,7 +14124,7 @@ function getMarkupWrap(nodeName) {
13947
14124
 
13948
14125
  module.exports = getMarkupWrap;
13949
14126
 
13950
- },{"./ExecutionEnvironment":21,"./invariant":106}],102:[function(require,module,exports){
14127
+ },{"./ExecutionEnvironment":21,"./invariant":109}],104:[function(require,module,exports){
13951
14128
  /**
13952
14129
  * Copyright 2013 Facebook, Inc.
13953
14130
  *
@@ -14029,7 +14206,7 @@ function getNodeForCharacterOffset(root, offset) {
14029
14206
 
14030
14207
  module.exports = getNodeForCharacterOffset;
14031
14208
 
14032
- },{}],103:[function(require,module,exports){
14209
+ },{}],105:[function(require,module,exports){
14033
14210
  /**
14034
14211
  * Copyright 2013 Facebook, Inc.
14035
14212
  *
@@ -14071,7 +14248,7 @@ function getReactRootElementInContainer(container) {
14071
14248
 
14072
14249
  module.exports = getReactRootElementInContainer;
14073
14250
 
14074
- },{}],104:[function(require,module,exports){
14251
+ },{}],106:[function(require,module,exports){
14075
14252
  /**
14076
14253
  * Copyright 2013 Facebook, Inc.
14077
14254
  *
@@ -14113,7 +14290,54 @@ function getTextContentAccessor() {
14113
14290
 
14114
14291
  module.exports = getTextContentAccessor;
14115
14292
 
14116
- },{"./ExecutionEnvironment":21}],105:[function(require,module,exports){
14293
+ },{"./ExecutionEnvironment":21}],107:[function(require,module,exports){
14294
+ /**
14295
+ * Copyright 2013 Facebook, Inc.
14296
+ *
14297
+ * Licensed under the Apache License, Version 2.0 (the "License");
14298
+ * you may not use this file except in compliance with the License.
14299
+ * You may obtain a copy of the License at
14300
+ *
14301
+ * http://www.apache.org/licenses/LICENSE-2.0
14302
+ *
14303
+ * Unless required by applicable law or agreed to in writing, software
14304
+ * distributed under the License is distributed on an "AS IS" BASIS,
14305
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14306
+ * See the License for the specific language governing permissions and
14307
+ * limitations under the License.
14308
+ *
14309
+ * @providesModule getUnboundedScrollPosition
14310
+ * @typechecks
14311
+ */
14312
+
14313
+ "use strict";
14314
+
14315
+ /**
14316
+ * Gets the scroll position of the supplied element or window.
14317
+ *
14318
+ * The return values are unbounded, unlike `getScrollPosition`. This means they
14319
+ * may be negative or exceed the element boundaries (which is possible using
14320
+ * inertial scrolling).
14321
+ *
14322
+ * @param {DOMWindow|DOMElement} scrollable
14323
+ * @return {object} Map with `x` and `y` keys.
14324
+ */
14325
+ function getUnboundedScrollPosition(scrollable) {
14326
+ if (scrollable === window) {
14327
+ return {
14328
+ x: document.documentElement.scrollLeft || document.body.scrollLeft,
14329
+ y: document.documentElement.scrollTop || document.body.scrollTop
14330
+ };
14331
+ }
14332
+ return {
14333
+ x: scrollable.scrollLeft,
14334
+ y: scrollable.scrollTop
14335
+ };
14336
+ }
14337
+
14338
+ module.exports = getUnboundedScrollPosition;
14339
+
14340
+ },{}],108:[function(require,module,exports){
14117
14341
  /**
14118
14342
  * Copyright 2013 Facebook, Inc.
14119
14343
  *
@@ -14150,7 +14374,7 @@ function hyphenate(string) {
14150
14374
 
14151
14375
  module.exports = hyphenate;
14152
14376
 
14153
- },{}],106:[function(require,module,exports){
14377
+ },{}],109:[function(require,module,exports){
14154
14378
  /**
14155
14379
  * Copyright 2013 Facebook, Inc.
14156
14380
  *
@@ -14187,7 +14411,7 @@ function invariant(condition) {
14187
14411
 
14188
14412
  module.exports = invariant;
14189
14413
 
14190
- if (true) {
14414
+ if ("production" !== "development") {
14191
14415
  var invariantDev = function(condition, format, a, b, c, d, e, f) {
14192
14416
  if (format === undefined) {
14193
14417
  throw new Error('invariant requires an error message argument');
@@ -14206,7 +14430,7 @@ if (true) {
14206
14430
  module.exports = invariantDev;
14207
14431
  }
14208
14432
 
14209
- },{}],107:[function(require,module,exports){
14433
+ },{}],110:[function(require,module,exports){
14210
14434
  /**
14211
14435
  * Copyright 2013 Facebook, Inc.
14212
14436
  *
@@ -14282,7 +14506,7 @@ function isEventSupported(eventNameSuffix, capture) {
14282
14506
 
14283
14507
  module.exports = isEventSupported;
14284
14508
 
14285
- },{"./ExecutionEnvironment":21}],108:[function(require,module,exports){
14509
+ },{"./ExecutionEnvironment":21}],111:[function(require,module,exports){
14286
14510
  /**
14287
14511
  * Copyright 2013 Facebook, Inc.
14288
14512
  *
@@ -14317,7 +14541,7 @@ function isNode(object) {
14317
14541
 
14318
14542
  module.exports = isNode;
14319
14543
 
14320
- },{}],109:[function(require,module,exports){
14544
+ },{}],112:[function(require,module,exports){
14321
14545
  /**
14322
14546
  * Copyright 2013 Facebook, Inc.
14323
14547
  *
@@ -14368,7 +14592,7 @@ function isTextInputElement(elem) {
14368
14592
 
14369
14593
  module.exports = isTextInputElement;
14370
14594
 
14371
- },{}],110:[function(require,module,exports){
14595
+ },{}],113:[function(require,module,exports){
14372
14596
  /**
14373
14597
  * Copyright 2013 Facebook, Inc.
14374
14598
  *
@@ -14400,7 +14624,7 @@ function isTextNode(object) {
14400
14624
 
14401
14625
  module.exports = isTextNode;
14402
14626
 
14403
- },{"./isNode":108}],111:[function(require,module,exports){
14627
+ },{"./isNode":111}],114:[function(require,module,exports){
14404
14628
  /**
14405
14629
  * Copyright 2013 Facebook, Inc.
14406
14630
  *
@@ -14446,7 +14670,7 @@ function joinClasses(className/*, ... */) {
14446
14670
 
14447
14671
  module.exports = joinClasses;
14448
14672
 
14449
- },{}],112:[function(require,module,exports){
14673
+ },{}],115:[function(require,module,exports){
14450
14674
  /**
14451
14675
  * Copyright 2013 Facebook, Inc.
14452
14676
  *
@@ -14491,10 +14715,10 @@ var invariant = require("./invariant");
14491
14715
  var keyMirror = function(obj) {
14492
14716
  var ret = {};
14493
14717
  var key;
14494
- invariant(
14718
+ ("production" !== "development" ? invariant(
14495
14719
  obj instanceof Object && !Array.isArray(obj),
14496
14720
  'keyMirror(...): Argument must be an object.'
14497
- );
14721
+ ) : invariant(obj instanceof Object && !Array.isArray(obj)));
14498
14722
  for (key in obj) {
14499
14723
  if (!obj.hasOwnProperty(key)) {
14500
14724
  continue;
@@ -14506,7 +14730,7 @@ var keyMirror = function(obj) {
14506
14730
 
14507
14731
  module.exports = keyMirror;
14508
14732
 
14509
- },{"./invariant":106}],113:[function(require,module,exports){
14733
+ },{"./invariant":109}],116:[function(require,module,exports){
14510
14734
  /**
14511
14735
  * Copyright 2013 Facebook, Inc.
14512
14736
  *
@@ -14549,7 +14773,7 @@ var keyOf = function(oneKeyObj) {
14549
14773
 
14550
14774
  module.exports = keyOf;
14551
14775
 
14552
- },{}],114:[function(require,module,exports){
14776
+ },{}],117:[function(require,module,exports){
14553
14777
  /**
14554
14778
  * Copyright 2013 Facebook, Inc.
14555
14779
  *
@@ -14590,7 +14814,7 @@ function memoizeStringOnly(callback) {
14590
14814
 
14591
14815
  module.exports = memoizeStringOnly;
14592
14816
 
14593
- },{}],115:[function(require,module,exports){
14817
+ },{}],118:[function(require,module,exports){
14594
14818
  /**
14595
14819
  * Copyright 2013 Facebook, Inc.
14596
14820
  *
@@ -14629,7 +14853,7 @@ var merge = function(one, two) {
14629
14853
 
14630
14854
  module.exports = merge;
14631
14855
 
14632
- },{"./mergeInto":117}],116:[function(require,module,exports){
14856
+ },{"./mergeInto":120}],119:[function(require,module,exports){
14633
14857
  /**
14634
14858
  * Copyright 2013 Facebook, Inc.
14635
14859
  *
@@ -14696,12 +14920,12 @@ var mergeHelpers = {
14696
14920
  * @param {*} two Array to merge from.
14697
14921
  */
14698
14922
  checkMergeArrayArgs: function(one, two) {
14699
- invariant(
14923
+ ("production" !== "development" ? invariant(
14700
14924
  Array.isArray(one) && Array.isArray(two),
14701
14925
  'Critical assumptions about the merge functions have been violated. ' +
14702
14926
  'This is the fault of the merge functions themselves, not necessarily ' +
14703
14927
  'the callers.'
14704
- );
14928
+ ) : invariant(Array.isArray(one) && Array.isArray(two)));
14705
14929
  },
14706
14930
 
14707
14931
  /**
@@ -14717,12 +14941,12 @@ var mergeHelpers = {
14717
14941
  * @param {*} arg
14718
14942
  */
14719
14943
  checkMergeObjectArg: function(arg) {
14720
- invariant(
14944
+ ("production" !== "development" ? invariant(
14721
14945
  !isTerminal(arg) && !Array.isArray(arg),
14722
14946
  'Critical assumptions about the merge functions have been violated. ' +
14723
14947
  'This is the fault of the merge functions themselves, not necessarily ' +
14724
14948
  'the callers.'
14725
- );
14949
+ ) : invariant(!isTerminal(arg) && !Array.isArray(arg)));
14726
14950
  },
14727
14951
 
14728
14952
  /**
@@ -14732,11 +14956,11 @@ var mergeHelpers = {
14732
14956
  * @param {number} Level of recursion to validate against maximum.
14733
14957
  */
14734
14958
  checkMergeLevel: function(level) {
14735
- invariant(
14959
+ ("production" !== "development" ? invariant(
14736
14960
  level < MAX_MERGE_DEPTH,
14737
14961
  'Maximum deep merge depth exceeded. You may be attempting to merge ' +
14738
14962
  'circular structures in an unsupported way.'
14739
- );
14963
+ ) : invariant(level < MAX_MERGE_DEPTH));
14740
14964
  },
14741
14965
 
14742
14966
  /**
@@ -14745,11 +14969,11 @@ var mergeHelpers = {
14745
14969
  * @param {string} Array merge strategy.
14746
14970
  */
14747
14971
  checkArrayStrategy: function(strategy) {
14748
- invariant(
14972
+ ("production" !== "development" ? invariant(
14749
14973
  strategy === undefined || strategy in mergeHelpers.ArrayStrategies,
14750
14974
  'You must provide an array strategy to deep merge functions to ' +
14751
14975
  'instruct the deep merge how to resolve merging two arrays.'
14752
- );
14976
+ ) : invariant(strategy === undefined || strategy in mergeHelpers.ArrayStrategies));
14753
14977
  },
14754
14978
 
14755
14979
  /**
@@ -14768,7 +14992,7 @@ var mergeHelpers = {
14768
14992
 
14769
14993
  module.exports = mergeHelpers;
14770
14994
 
14771
- },{"./invariant":106,"./keyMirror":112}],117:[function(require,module,exports){
14995
+ },{"./invariant":109,"./keyMirror":115}],120:[function(require,module,exports){
14772
14996
  /**
14773
14997
  * Copyright 2013 Facebook, Inc.
14774
14998
  *
@@ -14815,7 +15039,7 @@ function mergeInto(one, two) {
14815
15039
 
14816
15040
  module.exports = mergeInto;
14817
15041
 
14818
- },{"./mergeHelpers":116}],118:[function(require,module,exports){
15042
+ },{"./mergeHelpers":119}],121:[function(require,module,exports){
14819
15043
  /**
14820
15044
  * Copyright 2013 Facebook, Inc.
14821
15045
  *
@@ -14851,7 +15075,7 @@ var mixInto = function(constructor, methodBag) {
14851
15075
 
14852
15076
  module.exports = mixInto;
14853
15077
 
14854
- },{}],119:[function(require,module,exports){
15078
+ },{}],122:[function(require,module,exports){
14855
15079
  /**
14856
15080
  * Copyright 2013 Facebook, Inc.
14857
15081
  *
@@ -14887,17 +15111,17 @@ var invariant = require("./invariant");
14887
15111
  * @param {string} markup markup string including <html>.
14888
15112
  */
14889
15113
  function mutateHTMLNodeWithMarkup(node, markup) {
14890
- invariant(
15114
+ ("production" !== "development" ? invariant(
14891
15115
  node.tagName.toLowerCase() === 'html',
14892
15116
  'mutateHTMLNodeWithMarkup(): node must have tagName of "html", got %s',
14893
15117
  node.tagName
14894
- );
15118
+ ) : invariant(node.tagName.toLowerCase() === 'html'));
14895
15119
 
14896
15120
  markup = markup.trim();
14897
- invariant(
15121
+ ("production" !== "development" ? invariant(
14898
15122
  markup.toLowerCase().indexOf('<html') === 0,
14899
15123
  'mutateHTMLNodeWithMarkup(): markup must start with <html'
14900
- );
15124
+ ) : invariant(markup.toLowerCase().indexOf('<html') === 0));
14901
15125
 
14902
15126
  // First let's extract the various pieces of markup.
14903
15127
  var htmlOpenTagEnd = markup.indexOf('>') + 1;
@@ -14953,58 +15177,7 @@ function mutateHTMLNodeWithMarkup(node, markup) {
14953
15177
 
14954
15178
  module.exports = mutateHTMLNodeWithMarkup;
14955
15179
 
14956
- },{"./createNodesFromMarkup":88,"./filterAttributes":95,"./invariant":106}],120:[function(require,module,exports){
14957
- /**
14958
- * Copyright 2013 Facebook, Inc.
14959
- *
14960
- * Licensed under the Apache License, Version 2.0 (the "License");
14961
- * you may not use this file except in compliance with the License.
14962
- * You may obtain a copy of the License at
14963
- *
14964
- * http://www.apache.org/licenses/LICENSE-2.0
14965
- *
14966
- * Unless required by applicable law or agreed to in writing, software
14967
- * distributed under the License is distributed on an "AS IS" BASIS,
14968
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14969
- * See the License for the specific language governing permissions and
14970
- * limitations under the License.
14971
- *
14972
- * @providesModule nodeContains
14973
- * @typechecks
14974
- */
14975
-
14976
- var isTextNode = require("./isTextNode");
14977
-
14978
- /*jslint bitwise:true */
14979
-
14980
- /**
14981
- * Checks if a given DOM node contains or is another DOM node.
14982
- *
14983
- * @param {?DOMNode} outerNode Outer DOM node.
14984
- * @param {?DOMNode} innerNode Inner DOM node.
14985
- * @return {boolean} True if `outerNode` contains or is `innerNode`.
14986
- */
14987
- function nodeContains(outerNode, innerNode) {
14988
- if (!outerNode || !innerNode) {
14989
- return false;
14990
- } else if (outerNode === innerNode) {
14991
- return true;
14992
- } else if (isTextNode(outerNode)) {
14993
- return false;
14994
- } else if (isTextNode(innerNode)) {
14995
- return nodeContains(outerNode, innerNode.parentNode);
14996
- } else if (outerNode.contains) {
14997
- return outerNode.contains(innerNode);
14998
- } else if (outerNode.compareDocumentPosition) {
14999
- return !!(outerNode.compareDocumentPosition(innerNode) & 16);
15000
- } else {
15001
- return false;
15002
- }
15003
- }
15004
-
15005
- module.exports = nodeContains;
15006
-
15007
- },{"./isTextNode":110}],121:[function(require,module,exports){
15180
+ },{"./createNodesFromMarkup":90,"./filterAttributes":97,"./invariant":109}],123:[function(require,module,exports){
15008
15181
  /**
15009
15182
  * Copyright 2013 Facebook, Inc.
15010
15183
  *
@@ -15053,7 +15226,7 @@ function objMap(obj, func, context) {
15053
15226
 
15054
15227
  module.exports = objMap;
15055
15228
 
15056
- },{}],122:[function(require,module,exports){
15229
+ },{}],124:[function(require,module,exports){
15057
15230
  /**
15058
15231
  * Copyright 2013 Facebook, Inc.
15059
15232
  *
@@ -15102,7 +15275,7 @@ function objMapKeyVal(obj, func, context) {
15102
15275
 
15103
15276
  module.exports = objMapKeyVal;
15104
15277
 
15105
- },{}],123:[function(require,module,exports){
15278
+ },{}],125:[function(require,module,exports){
15106
15279
  /**
15107
15280
  * Copyright 2013 Facebook, Inc.
15108
15281
  *
@@ -15146,7 +15319,7 @@ var performanceNow = performance.now.bind(performance);
15146
15319
 
15147
15320
  module.exports = performanceNow;
15148
15321
 
15149
- },{"./ExecutionEnvironment":21}],124:[function(require,module,exports){
15322
+ },{"./ExecutionEnvironment":21}],126:[function(require,module,exports){
15150
15323
  /**
15151
15324
  * Copyright 2013 Facebook, Inc.
15152
15325
  *
@@ -15197,7 +15370,7 @@ function shallowEqual(objA, objB) {
15197
15370
 
15198
15371
  module.exports = shallowEqual;
15199
15372
 
15200
- },{}],125:[function(require,module,exports){
15373
+ },{}],127:[function(require,module,exports){
15201
15374
  /**
15202
15375
  * Copyright 2013 Facebook, Inc.
15203
15376
  *
@@ -15273,11 +15446,11 @@ var traverseAllChildrenImpl =
15273
15446
  subtreeCount = 1;
15274
15447
  } else {
15275
15448
  if (type === 'object') {
15276
- invariant(
15449
+ ("production" !== "development" ? invariant(
15277
15450
  !children || children.nodeType !== 1,
15278
15451
  'traverseAllChildren(...): Encountered an invalid child; DOM ' +
15279
15452
  'elements are not valid children of React components.'
15280
- );
15453
+ ) : invariant(!children || children.nodeType !== 1));
15281
15454
  for (var key in children) {
15282
15455
  if (children.hasOwnProperty(key)) {
15283
15456
  subtreeCount += traverseAllChildrenImpl(
@@ -15326,7 +15499,7 @@ function traverseAllChildren(children, callback, traverseContext) {
15326
15499
 
15327
15500
  module.exports = traverseAllChildren;
15328
15501
 
15329
- },{"./ReactComponent":28,"./ReactTextComponent":64,"./invariant":106}]},{},[70])
15330
- (70)
15502
+ },{"./ReactComponent":28,"./ReactTextComponent":65,"./invariant":109}]},{},[71])
15503
+ (71)
15331
15504
  });
15332
15505
  ;