react-source 0.5.2 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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
  ;