react 0.14.0-rc1 → 0.14.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.
Files changed (41) hide show
  1. package/dist/react-with-addons.js +586 -403
  2. package/dist/react-with-addons.min.js +6 -6
  3. package/dist/react.js +504 -327
  4. package/dist/react.min.js +6 -6
  5. package/lib/CSSPropertyOperations.js +6 -1
  6. package/lib/ChangeEventPlugin.js +1 -1
  7. package/lib/DOMChildrenOperations.js +5 -0
  8. package/lib/DOMPropertyOperations.js +7 -0
  9. package/lib/EventPluginHub.js +15 -4
  10. package/lib/EventPluginUtils.js +10 -5
  11. package/lib/HTMLDOMPropertyConfig.js +13 -2
  12. package/lib/ReactBrowserEventEmitter.js +6 -0
  13. package/lib/ReactClass.js +0 -1
  14. package/lib/ReactComponent.js +1 -1
  15. package/lib/ReactCompositeComponent.js +24 -11
  16. package/lib/ReactDOMComponent.js +64 -13
  17. package/lib/ReactDOMIDOperations.js +0 -1
  18. package/lib/ReactDOMInput.js +6 -1
  19. package/lib/ReactDOMSelection.js +16 -0
  20. package/lib/ReactDOMTextarea.js +3 -1
  21. package/lib/ReactDefaultPerf.js +10 -4
  22. package/lib/ReactDefaultPerfAnalysis.js +7 -1
  23. package/lib/ReactElement.js +3 -3
  24. package/lib/ReactElementValidator.js +12 -4
  25. package/lib/ReactErrorUtils.js +24 -16
  26. package/lib/ReactEventEmitterMixin.js +1 -1
  27. package/lib/ReactLink.js +1 -1
  28. package/lib/ReactMount.js +9 -2
  29. package/lib/ReactPropTransferer.js +1 -1
  30. package/lib/ReactRef.js +1 -2
  31. package/lib/ReactTestUtils.js +12 -6
  32. package/lib/ReactVersion.js +1 -1
  33. package/lib/SyntheticEvent.js +0 -1
  34. package/lib/createHierarchyRenderer.js +1 -1
  35. package/lib/getTestDocument.js +4 -11
  36. package/lib/traverseAllChildren.js +7 -2
  37. package/package.json +2 -2
  38. package/dist/react-dom.js +0 -42
  39. package/dist/react-dom.min.js +0 -12
  40. package/lib/joinClasses.js +0 -39
  41. package/lib/memoizeStringOnly.js +0 -31
@@ -1,5 +1,5 @@
1
1
  /**
2
- * React (with addons) v0.14.0-rc1
2
+ * React (with addons) v0.14.0
3
3
  */
4
4
  (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.React = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){
5
5
  /**
@@ -31,8 +31,8 @@ var ReactTransitionGroup = _dereq_(94);
31
31
  var ReactUpdates = _dereq_(96);
32
32
 
33
33
  var cloneWithProps = _dereq_(117);
34
- var shallowCompare = _dereq_(141);
35
- var update = _dereq_(144);
34
+ var shallowCompare = _dereq_(139);
35
+ var update = _dereq_(142);
36
36
  var warning = _dereq_(172);
37
37
 
38
38
  var warnedAboutBatchedUpdates = false;
@@ -62,7 +62,7 @@ if ("development" !== 'production') {
62
62
  }
63
63
 
64
64
  module.exports = React;
65
- },{"117":117,"141":141,"144":144,"172":172,"22":22,"26":26,"29":29,"37":37,"55":55,"64":64,"91":91,"94":94,"96":96}],2:[function(_dereq_,module,exports){
65
+ },{"117":117,"139":139,"142":142,"172":172,"22":22,"26":26,"29":29,"37":37,"55":55,"64":64,"91":91,"94":94,"96":96}],2:[function(_dereq_,module,exports){
66
66
  /**
67
67
  * Copyright 2013-2015, Facebook, Inc.
68
68
  * All rights reserved.
@@ -80,7 +80,7 @@ module.exports = React;
80
80
  var ReactMount = _dereq_(72);
81
81
 
82
82
  var findDOMNode = _dereq_(121);
83
- var focusNode = _dereq_(156);
83
+ var focusNode = _dereq_(154);
84
84
 
85
85
  var Mixin = {
86
86
  componentDidMount: function () {
@@ -99,7 +99,7 @@ var AutoFocusUtils = {
99
99
  };
100
100
 
101
101
  module.exports = AutoFocusUtils;
102
- },{"121":121,"156":156,"72":72}],3:[function(_dereq_,module,exports){
102
+ },{"121":121,"154":154,"72":72}],3:[function(_dereq_,module,exports){
103
103
  /**
104
104
  * Copyright 2013-2015 Facebook, Inc.
105
105
  * All rights reserved.
@@ -116,12 +116,12 @@ module.exports = AutoFocusUtils;
116
116
 
117
117
  var EventConstants = _dereq_(15);
118
118
  var EventPropagators = _dereq_(19);
119
- var ExecutionEnvironment = _dereq_(148);
119
+ var ExecutionEnvironment = _dereq_(146);
120
120
  var FallbackCompositionState = _dereq_(20);
121
121
  var SyntheticCompositionEvent = _dereq_(103);
122
122
  var SyntheticInputEvent = _dereq_(107);
123
123
 
124
- var keyOf = _dereq_(166);
124
+ var keyOf = _dereq_(165);
125
125
 
126
126
  var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space
127
127
  var START_KEYCODE = 229;
@@ -505,7 +505,7 @@ var BeforeInputEventPlugin = {
505
505
  };
506
506
 
507
507
  module.exports = BeforeInputEventPlugin;
508
- },{"103":103,"107":107,"148":148,"15":15,"166":166,"19":19,"20":20}],4:[function(_dereq_,module,exports){
508
+ },{"103":103,"107":107,"146":146,"15":15,"165":165,"19":19,"20":20}],4:[function(_dereq_,module,exports){
509
509
  /**
510
510
  * Copyright 2013-2015, Facebook, Inc.
511
511
  * All rights reserved.
@@ -661,12 +661,13 @@ module.exports = CSSProperty;
661
661
  'use strict';
662
662
 
663
663
  var CSSProperty = _dereq_(4);
664
- var ExecutionEnvironment = _dereq_(148);
664
+ var ExecutionEnvironment = _dereq_(146);
665
+ var ReactPerf = _dereq_(78);
665
666
 
666
- var camelizeStyleName = _dereq_(150);
667
+ var camelizeStyleName = _dereq_(148);
667
668
  var dangerousStyleValue = _dereq_(118);
668
- var hyphenateStyleName = _dereq_(161);
669
- var memoizeStringOnly = _dereq_(135);
669
+ var hyphenateStyleName = _dereq_(159);
670
+ var memoizeStringOnly = _dereq_(167);
670
671
  var warning = _dereq_(172);
671
672
 
672
673
  var processStyleName = memoizeStringOnly(function (styleName) {
@@ -815,8 +816,12 @@ var CSSPropertyOperations = {
815
816
 
816
817
  };
817
818
 
819
+ ReactPerf.measureMethods(CSSPropertyOperations, 'CSSPropertyOperations', {
820
+ setValueForStyles: 'setValueForStyles'
821
+ });
822
+
818
823
  module.exports = CSSPropertyOperations;
819
- },{"118":118,"135":135,"148":148,"150":150,"161":161,"172":172,"4":4}],6:[function(_dereq_,module,exports){
824
+ },{"118":118,"146":146,"148":148,"159":159,"167":167,"172":172,"4":4,"78":78}],6:[function(_dereq_,module,exports){
820
825
  /**
821
826
  * Copyright 2013-2015, Facebook, Inc.
822
827
  * All rights reserved.
@@ -833,7 +838,7 @@ module.exports = CSSPropertyOperations;
833
838
  var PooledClass = _dereq_(25);
834
839
 
835
840
  var assign = _dereq_(24);
836
- var invariant = _dereq_(162);
841
+ var invariant = _dereq_(160);
837
842
 
838
843
  /**
839
844
  * A specialized pseudo-event module to help keep track of components waiting to
@@ -910,7 +915,7 @@ assign(CallbackQueue.prototype, {
910
915
  PooledClass.addPoolingTo(CallbackQueue);
911
916
 
912
917
  module.exports = CallbackQueue;
913
- },{"162":162,"24":24,"25":25}],7:[function(_dereq_,module,exports){
918
+ },{"160":160,"24":24,"25":25}],7:[function(_dereq_,module,exports){
914
919
  /**
915
920
  * Copyright 2013-2015, Facebook, Inc.
916
921
  * All rights reserved.
@@ -927,14 +932,14 @@ module.exports = CallbackQueue;
927
932
  var EventConstants = _dereq_(15);
928
933
  var EventPluginHub = _dereq_(16);
929
934
  var EventPropagators = _dereq_(19);
930
- var ExecutionEnvironment = _dereq_(148);
935
+ var ExecutionEnvironment = _dereq_(146);
931
936
  var ReactUpdates = _dereq_(96);
932
937
  var SyntheticEvent = _dereq_(105);
933
938
 
934
939
  var getEventTarget = _dereq_(127);
935
940
  var isEventSupported = _dereq_(132);
936
941
  var isTextInputElement = _dereq_(133);
937
- var keyOf = _dereq_(166);
942
+ var keyOf = _dereq_(165);
938
943
 
939
944
  var topLevelTypes = EventConstants.topLevelTypes;
940
945
 
@@ -990,7 +995,7 @@ function manualDispatchChangeEvent(nativeEvent) {
990
995
 
991
996
  function runEventInBatch(event) {
992
997
  EventPluginHub.enqueueEvents(event);
993
- EventPluginHub.processEventQueue();
998
+ EventPluginHub.processEventQueue(false);
994
999
  }
995
1000
 
996
1001
  function startWatchingForChangeEventIE8(target, targetID) {
@@ -1230,7 +1235,7 @@ var ChangeEventPlugin = {
1230
1235
  };
1231
1236
 
1232
1237
  module.exports = ChangeEventPlugin;
1233
- },{"105":105,"127":127,"132":132,"133":133,"148":148,"15":15,"16":16,"166":166,"19":19,"96":96}],8:[function(_dereq_,module,exports){
1238
+ },{"105":105,"127":127,"132":132,"133":133,"146":146,"15":15,"16":16,"165":165,"19":19,"96":96}],8:[function(_dereq_,module,exports){
1234
1239
  /**
1235
1240
  * Copyright 2013-2015, Facebook, Inc.
1236
1241
  * All rights reserved.
@@ -1271,10 +1276,11 @@ module.exports = ClientReactRootIndex;
1271
1276
 
1272
1277
  var Danger = _dereq_(12);
1273
1278
  var ReactMultiChildUpdateTypes = _dereq_(74);
1279
+ var ReactPerf = _dereq_(78);
1274
1280
 
1275
- var setInnerHTML = _dereq_(139);
1276
- var setTextContent = _dereq_(140);
1277
- var invariant = _dereq_(162);
1281
+ var setInnerHTML = _dereq_(137);
1282
+ var setTextContent = _dereq_(138);
1283
+ var invariant = _dereq_(160);
1278
1284
 
1279
1285
  /**
1280
1286
  * Inserts `childNode` as a child of `parentNode` at the `index`.
@@ -1378,8 +1384,12 @@ var DOMChildrenOperations = {
1378
1384
 
1379
1385
  };
1380
1386
 
1387
+ ReactPerf.measureMethods(DOMChildrenOperations, 'DOMChildrenOperations', {
1388
+ updateTextContent: 'updateTextContent'
1389
+ });
1390
+
1381
1391
  module.exports = DOMChildrenOperations;
1382
- },{"12":12,"139":139,"140":140,"162":162,"74":74}],10:[function(_dereq_,module,exports){
1392
+ },{"12":12,"137":137,"138":138,"160":160,"74":74,"78":78}],10:[function(_dereq_,module,exports){
1383
1393
  /**
1384
1394
  * Copyright 2013-2015, Facebook, Inc.
1385
1395
  * All rights reserved.
@@ -1394,7 +1404,7 @@ module.exports = DOMChildrenOperations;
1394
1404
 
1395
1405
  'use strict';
1396
1406
 
1397
- var invariant = _dereq_(162);
1407
+ var invariant = _dereq_(160);
1398
1408
 
1399
1409
  function checkMask(value, bitmask) {
1400
1410
  return (value & bitmask) === bitmask;
@@ -1614,7 +1624,7 @@ var DOMProperty = {
1614
1624
  };
1615
1625
 
1616
1626
  module.exports = DOMProperty;
1617
- },{"162":162}],11:[function(_dereq_,module,exports){
1627
+ },{"160":160}],11:[function(_dereq_,module,exports){
1618
1628
  /**
1619
1629
  * Copyright 2013-2015, Facebook, Inc.
1620
1630
  * All rights reserved.
@@ -1630,8 +1640,9 @@ module.exports = DOMProperty;
1630
1640
  'use strict';
1631
1641
 
1632
1642
  var DOMProperty = _dereq_(10);
1643
+ var ReactPerf = _dereq_(78);
1633
1644
 
1634
- var quoteAttributeValueForBrowser = _dereq_(137);
1645
+ var quoteAttributeValueForBrowser = _dereq_(135);
1635
1646
  var warning = _dereq_(172);
1636
1647
 
1637
1648
  // Simplified subset
@@ -1832,8 +1843,14 @@ var DOMPropertyOperations = {
1832
1843
 
1833
1844
  };
1834
1845
 
1846
+ ReactPerf.measureMethods(DOMPropertyOperations, 'DOMPropertyOperations', {
1847
+ setValueForProperty: 'setValueForProperty',
1848
+ setValueForAttribute: 'setValueForAttribute',
1849
+ deleteValueForProperty: 'deleteValueForProperty'
1850
+ });
1851
+
1835
1852
  module.exports = DOMPropertyOperations;
1836
- },{"10":10,"137":137,"172":172}],12:[function(_dereq_,module,exports){
1853
+ },{"10":10,"135":135,"172":172,"78":78}],12:[function(_dereq_,module,exports){
1837
1854
  /**
1838
1855
  * Copyright 2013-2015, Facebook, Inc.
1839
1856
  * All rights reserved.
@@ -1848,12 +1865,12 @@ module.exports = DOMPropertyOperations;
1848
1865
 
1849
1866
  'use strict';
1850
1867
 
1851
- var ExecutionEnvironment = _dereq_(148);
1868
+ var ExecutionEnvironment = _dereq_(146);
1852
1869
 
1853
- var createNodesFromMarkup = _dereq_(153);
1854
- var emptyFunction = _dereq_(154);
1855
- var getMarkupWrap = _dereq_(158);
1856
- var invariant = _dereq_(162);
1870
+ var createNodesFromMarkup = _dereq_(151);
1871
+ var emptyFunction = _dereq_(152);
1872
+ var getMarkupWrap = _dereq_(156);
1873
+ var invariant = _dereq_(160);
1857
1874
 
1858
1875
  var OPEN_TAG_NAME_EXP = /^(<[^ \/>]+)/;
1859
1876
  var RESULT_INDEX_ATTR = 'data-danger-index';
@@ -1979,7 +1996,7 @@ var Danger = {
1979
1996
  };
1980
1997
 
1981
1998
  module.exports = Danger;
1982
- },{"148":148,"153":153,"154":154,"158":158,"162":162}],13:[function(_dereq_,module,exports){
1999
+ },{"146":146,"151":151,"152":152,"156":156,"160":160}],13:[function(_dereq_,module,exports){
1983
2000
  /**
1984
2001
  * Copyright 2013-2015, Facebook, Inc.
1985
2002
  * All rights reserved.
@@ -1993,7 +2010,7 @@ module.exports = Danger;
1993
2010
 
1994
2011
  'use strict';
1995
2012
 
1996
- var keyOf = _dereq_(166);
2013
+ var keyOf = _dereq_(165);
1997
2014
 
1998
2015
  /**
1999
2016
  * Module that is injectable into `EventPluginHub`, that specifies a
@@ -2007,7 +2024,7 @@ var keyOf = _dereq_(166);
2007
2024
  var DefaultEventPluginOrder = [keyOf({ ResponderEventPlugin: null }), keyOf({ SimpleEventPlugin: null }), keyOf({ TapEventPlugin: null }), keyOf({ EnterLeaveEventPlugin: null }), keyOf({ ChangeEventPlugin: null }), keyOf({ SelectEventPlugin: null }), keyOf({ BeforeInputEventPlugin: null })];
2008
2025
 
2009
2026
  module.exports = DefaultEventPluginOrder;
2010
- },{"166":166}],14:[function(_dereq_,module,exports){
2027
+ },{"165":165}],14:[function(_dereq_,module,exports){
2011
2028
  /**
2012
2029
  * Copyright 2013-2015, Facebook, Inc.
2013
2030
  * All rights reserved.
@@ -2027,7 +2044,7 @@ var EventPropagators = _dereq_(19);
2027
2044
  var SyntheticMouseEvent = _dereq_(109);
2028
2045
 
2029
2046
  var ReactMount = _dereq_(72);
2030
- var keyOf = _dereq_(166);
2047
+ var keyOf = _dereq_(165);
2031
2048
 
2032
2049
  var topLevelTypes = EventConstants.topLevelTypes;
2033
2050
  var getFirstReactDOM = ReactMount.getFirstReactDOM;
@@ -2132,7 +2149,7 @@ var EnterLeaveEventPlugin = {
2132
2149
  };
2133
2150
 
2134
2151
  module.exports = EnterLeaveEventPlugin;
2135
- },{"109":109,"15":15,"166":166,"19":19,"72":72}],15:[function(_dereq_,module,exports){
2152
+ },{"109":109,"15":15,"165":165,"19":19,"72":72}],15:[function(_dereq_,module,exports){
2136
2153
  /**
2137
2154
  * Copyright 2013-2015, Facebook, Inc.
2138
2155
  * All rights reserved.
@@ -2146,7 +2163,7 @@ module.exports = EnterLeaveEventPlugin;
2146
2163
 
2147
2164
  'use strict';
2148
2165
 
2149
- var keyMirror = _dereq_(165);
2166
+ var keyMirror = _dereq_(164);
2150
2167
 
2151
2168
  var PropagationPhases = keyMirror({ bubbled: null, captured: null });
2152
2169
 
@@ -2225,7 +2242,7 @@ var EventConstants = {
2225
2242
  };
2226
2243
 
2227
2244
  module.exports = EventConstants;
2228
- },{"165":165}],16:[function(_dereq_,module,exports){
2245
+ },{"164":164}],16:[function(_dereq_,module,exports){
2229
2246
  /**
2230
2247
  * Copyright 2013-2015, Facebook, Inc.
2231
2248
  * All rights reserved.
@@ -2245,7 +2262,7 @@ var ReactErrorUtils = _dereq_(61);
2245
2262
 
2246
2263
  var accumulateInto = _dereq_(115);
2247
2264
  var forEachAccumulated = _dereq_(123);
2248
- var invariant = _dereq_(162);
2265
+ var invariant = _dereq_(160);
2249
2266
  var warning = _dereq_(172);
2250
2267
 
2251
2268
  /**
@@ -2263,17 +2280,24 @@ var eventQueue = null;
2263
2280
  * Dispatches an event and releases it back into the pool, unless persistent.
2264
2281
  *
2265
2282
  * @param {?object} event Synthetic event to be dispatched.
2283
+ * @param {boolean} simulated If the event is simulated (changes exn behavior)
2266
2284
  * @private
2267
2285
  */
2268
- var executeDispatchesAndRelease = function (event) {
2286
+ var executeDispatchesAndRelease = function (event, simulated) {
2269
2287
  if (event) {
2270
- EventPluginUtils.executeDispatchesInOrder(event);
2288
+ EventPluginUtils.executeDispatchesInOrder(event, simulated);
2271
2289
 
2272
2290
  if (!event.isPersistent()) {
2273
2291
  event.constructor.release(event);
2274
2292
  }
2275
2293
  }
2276
2294
  };
2295
+ var executeDispatchesAndReleaseSimulated = function (e) {
2296
+ return executeDispatchesAndRelease(e, true);
2297
+ };
2298
+ var executeDispatchesAndReleaseTopLevel = function (e) {
2299
+ return executeDispatchesAndRelease(e, false);
2300
+ };
2277
2301
 
2278
2302
  /**
2279
2303
  * - `InstanceHandle`: [required] Module that performs logical traversals of DOM
@@ -2469,12 +2493,16 @@ var EventPluginHub = {
2469
2493
  *
2470
2494
  * @internal
2471
2495
  */
2472
- processEventQueue: function () {
2496
+ processEventQueue: function (simulated) {
2473
2497
  // Set `eventQueue` to null before processing it so that we can tell if more
2474
2498
  // events get enqueued while processing.
2475
2499
  var processingEventQueue = eventQueue;
2476
2500
  eventQueue = null;
2477
- forEachAccumulated(processingEventQueue, executeDispatchesAndRelease);
2501
+ if (simulated) {
2502
+ forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseSimulated);
2503
+ } else {
2504
+ forEachAccumulated(processingEventQueue, executeDispatchesAndReleaseTopLevel);
2505
+ }
2478
2506
  !!eventQueue ? "development" !== 'production' ? invariant(false, 'processEventQueue(): Additional events were enqueued while processing ' + 'an event queue. Support for this has not yet been implemented.') : invariant(false) : undefined;
2479
2507
  // This would be a good time to rethrow if any of the event handlers threw.
2480
2508
  ReactErrorUtils.rethrowCaughtError();
@@ -2494,7 +2522,7 @@ var EventPluginHub = {
2494
2522
  };
2495
2523
 
2496
2524
  module.exports = EventPluginHub;
2497
- },{"115":115,"123":123,"162":162,"17":17,"172":172,"18":18,"61":61}],17:[function(_dereq_,module,exports){
2525
+ },{"115":115,"123":123,"160":160,"17":17,"172":172,"18":18,"61":61}],17:[function(_dereq_,module,exports){
2498
2526
  /**
2499
2527
  * Copyright 2013-2015, Facebook, Inc.
2500
2528
  * All rights reserved.
@@ -2509,7 +2537,7 @@ module.exports = EventPluginHub;
2509
2537
 
2510
2538
  'use strict';
2511
2539
 
2512
- var invariant = _dereq_(162);
2540
+ var invariant = _dereq_(160);
2513
2541
 
2514
2542
  /**
2515
2543
  * Injectable ordering of event plugins.
@@ -2715,7 +2743,7 @@ var EventPluginRegistry = {
2715
2743
  };
2716
2744
 
2717
2745
  module.exports = EventPluginRegistry;
2718
- },{"162":162}],18:[function(_dereq_,module,exports){
2746
+ },{"160":160}],18:[function(_dereq_,module,exports){
2719
2747
  /**
2720
2748
  * Copyright 2013-2015, Facebook, Inc.
2721
2749
  * All rights reserved.
@@ -2732,7 +2760,7 @@ module.exports = EventPluginRegistry;
2732
2760
  var EventConstants = _dereq_(15);
2733
2761
  var ReactErrorUtils = _dereq_(61);
2734
2762
 
2735
- var invariant = _dereq_(162);
2763
+ var invariant = _dereq_(160);
2736
2764
  var warning = _dereq_(172);
2737
2765
 
2738
2766
  /**
@@ -2784,20 +2812,25 @@ if ("development" !== 'production') {
2784
2812
  /**
2785
2813
  * Dispatch the event to the listener.
2786
2814
  * @param {SyntheticEvent} event SyntheticEvent to handle
2815
+ * @param {boolean} simulated If the event is simulated (changes exn behavior)
2787
2816
  * @param {function} listener Application-level callback
2788
2817
  * @param {string} domID DOM id to pass to the callback.
2789
2818
  */
2790
- function executeDispatch(event, listener, domID) {
2819
+ function executeDispatch(event, simulated, listener, domID) {
2791
2820
  var type = event.type || 'unknown-event';
2792
2821
  event.currentTarget = injection.Mount.getNode(domID);
2793
- ReactErrorUtils.invokeGuardedCallback(type, listener, event, domID);
2822
+ if (simulated) {
2823
+ ReactErrorUtils.invokeGuardedCallbackWithCatch(type, listener, event, domID);
2824
+ } else {
2825
+ ReactErrorUtils.invokeGuardedCallback(type, listener, event, domID);
2826
+ }
2794
2827
  event.currentTarget = null;
2795
2828
  }
2796
2829
 
2797
2830
  /**
2798
2831
  * Standard/simple iteration through an event's collected dispatches.
2799
2832
  */
2800
- function executeDispatchesInOrder(event) {
2833
+ function executeDispatchesInOrder(event, simulated) {
2801
2834
  var dispatchListeners = event._dispatchListeners;
2802
2835
  var dispatchIDs = event._dispatchIDs;
2803
2836
  if ("development" !== 'production') {
@@ -2809,10 +2842,10 @@ function executeDispatchesInOrder(event) {
2809
2842
  break;
2810
2843
  }
2811
2844
  // Listeners and IDs are two parallel arrays that are always in sync.
2812
- executeDispatch(event, dispatchListeners[i], dispatchIDs[i]);
2845
+ executeDispatch(event, simulated, dispatchListeners[i], dispatchIDs[i]);
2813
2846
  }
2814
2847
  } else if (dispatchListeners) {
2815
- executeDispatch(event, dispatchListeners, dispatchIDs);
2848
+ executeDispatch(event, simulated, dispatchListeners, dispatchIDs);
2816
2849
  }
2817
2850
  event._dispatchListeners = null;
2818
2851
  event._dispatchIDs = null;
@@ -2913,7 +2946,7 @@ var EventPluginUtils = {
2913
2946
  };
2914
2947
 
2915
2948
  module.exports = EventPluginUtils;
2916
- },{"15":15,"162":162,"172":172,"61":61}],19:[function(_dereq_,module,exports){
2949
+ },{"15":15,"160":160,"172":172,"61":61}],19:[function(_dereq_,module,exports){
2917
2950
  /**
2918
2951
  * Copyright 2013-2015, Facebook, Inc.
2919
2952
  * All rights reserved.
@@ -3160,7 +3193,7 @@ module.exports = FallbackCompositionState;
3160
3193
  'use strict';
3161
3194
 
3162
3195
  var DOMProperty = _dereq_(10);
3163
- var ExecutionEnvironment = _dereq_(148);
3196
+ var ExecutionEnvironment = _dereq_(146);
3164
3197
 
3165
3198
  var MUST_USE_ATTRIBUTE = DOMProperty.injection.MUST_USE_ATTRIBUTE;
3166
3199
  var MUST_USE_PROPERTY = DOMProperty.injection.MUST_USE_PROPERTY;
@@ -3304,6 +3337,19 @@ var HTMLDOMPropertyConfig = {
3304
3337
  wmode: MUST_USE_ATTRIBUTE,
3305
3338
  wrap: null,
3306
3339
 
3340
+ /**
3341
+ * RDFa Properties
3342
+ */
3343
+ about: MUST_USE_ATTRIBUTE,
3344
+ datatype: MUST_USE_ATTRIBUTE,
3345
+ inlist: MUST_USE_ATTRIBUTE,
3346
+ prefix: MUST_USE_ATTRIBUTE,
3347
+ // property is also supported for OpenGraph in meta tags.
3348
+ property: MUST_USE_ATTRIBUTE,
3349
+ resource: MUST_USE_ATTRIBUTE,
3350
+ 'typeof': MUST_USE_ATTRIBUTE,
3351
+ vocab: MUST_USE_ATTRIBUTE,
3352
+
3307
3353
  /**
3308
3354
  * Non-standard Properties
3309
3355
  */
@@ -3323,8 +3369,6 @@ var HTMLDOMPropertyConfig = {
3323
3369
  // https://html.spec.whatwg.org/multipage/microdata.html#microdata-dom-api
3324
3370
  itemID: MUST_USE_ATTRIBUTE,
3325
3371
  itemRef: MUST_USE_ATTRIBUTE,
3326
- // property is supported for OpenGraph in meta tags.
3327
- property: null,
3328
3372
  // results show looking glass icon and recent searches on input
3329
3373
  // search fields in WebKit/Blink
3330
3374
  results: null,
@@ -3359,7 +3403,7 @@ var HTMLDOMPropertyConfig = {
3359
3403
  };
3360
3404
 
3361
3405
  module.exports = HTMLDOMPropertyConfig;
3362
- },{"10":10,"148":148}],22:[function(_dereq_,module,exports){
3406
+ },{"10":10,"146":146}],22:[function(_dereq_,module,exports){
3363
3407
  /**
3364
3408
  * Copyright 2013-2015, Facebook, Inc.
3365
3409
  * All rights reserved.
@@ -3414,7 +3458,7 @@ module.exports = LinkedStateMixin;
3414
3458
  var ReactPropTypes = _dereq_(82);
3415
3459
  var ReactPropTypeLocations = _dereq_(81);
3416
3460
 
3417
- var invariant = _dereq_(162);
3461
+ var invariant = _dereq_(160);
3418
3462
  var warning = _dereq_(172);
3419
3463
 
3420
3464
  var hasReadOnlyValue = {
@@ -3531,7 +3575,7 @@ var LinkedValueUtils = {
3531
3575
  };
3532
3576
 
3533
3577
  module.exports = LinkedValueUtils;
3534
- },{"162":162,"172":172,"81":81,"82":82}],24:[function(_dereq_,module,exports){
3578
+ },{"160":160,"172":172,"81":81,"82":82}],24:[function(_dereq_,module,exports){
3535
3579
  /**
3536
3580
  * Copyright 2014-2015, Facebook, Inc.
3537
3581
  * All rights reserved.
@@ -3593,7 +3637,7 @@ module.exports = assign;
3593
3637
 
3594
3638
  'use strict';
3595
3639
 
3596
- var invariant = _dereq_(162);
3640
+ var invariant = _dereq_(160);
3597
3641
 
3598
3642
  /**
3599
3643
  * Static poolers. Several custom versions for each potential number of
@@ -3699,7 +3743,7 @@ var PooledClass = {
3699
3743
  };
3700
3744
 
3701
3745
  module.exports = PooledClass;
3702
- },{"162":162}],26:[function(_dereq_,module,exports){
3746
+ },{"160":160}],26:[function(_dereq_,module,exports){
3703
3747
  /**
3704
3748
  * Copyright 2013-2015, Facebook, Inc.
3705
3749
  * All rights reserved.
@@ -3795,6 +3839,7 @@ var EventConstants = _dereq_(15);
3795
3839
  var EventPluginHub = _dereq_(16);
3796
3840
  var EventPluginRegistry = _dereq_(17);
3797
3841
  var ReactEventEmitterMixin = _dereq_(62);
3842
+ var ReactPerf = _dereq_(78);
3798
3843
  var ViewportMetrics = _dereq_(114);
3799
3844
 
3800
3845
  var assign = _dereq_(24);
@@ -4094,8 +4139,13 @@ var ReactBrowserEventEmitter = assign({}, ReactEventEmitterMixin, {
4094
4139
 
4095
4140
  });
4096
4141
 
4142
+ ReactPerf.measureMethods(ReactBrowserEventEmitter, 'ReactBrowserEventEmitter', {
4143
+ putListener: 'putListener',
4144
+ deleteListener: 'deleteListener'
4145
+ });
4146
+
4097
4147
  module.exports = ReactBrowserEventEmitter;
4098
- },{"114":114,"132":132,"15":15,"16":16,"17":17,"24":24,"62":62}],29:[function(_dereq_,module,exports){
4148
+ },{"114":114,"132":132,"15":15,"16":16,"17":17,"24":24,"62":62,"78":78}],29:[function(_dereq_,module,exports){
4099
4149
  /**
4100
4150
  * Copyright 2013-2015, Facebook, Inc.
4101
4151
  * All rights reserved.
@@ -4197,10 +4247,10 @@ module.exports = ReactCSSTransitionGroup;
4197
4247
  var React = _dereq_(26);
4198
4248
  var ReactDOM = _dereq_(40);
4199
4249
 
4200
- var CSSCore = _dereq_(146);
4250
+ var CSSCore = _dereq_(144);
4201
4251
  var ReactTransitionEvents = _dereq_(93);
4202
4252
 
4203
- var onlyChild = _dereq_(136);
4253
+ var onlyChild = _dereq_(134);
4204
4254
 
4205
4255
  // We don't remove the element from the DOM until we receive an animationend or
4206
4256
  // transitionend event. If the user screws up and forgets to add an animation
@@ -4340,7 +4390,7 @@ var ReactCSSTransitionGroupChild = React.createClass({
4340
4390
  });
4341
4391
 
4342
4392
  module.exports = ReactCSSTransitionGroupChild;
4343
- },{"136":136,"146":146,"26":26,"40":40,"93":93}],31:[function(_dereq_,module,exports){
4393
+ },{"134":134,"144":144,"26":26,"40":40,"93":93}],31:[function(_dereq_,module,exports){
4344
4394
  /**
4345
4395
  * Copyright 2014-2015, Facebook, Inc.
4346
4396
  * All rights reserved.
@@ -4358,8 +4408,8 @@ module.exports = ReactCSSTransitionGroupChild;
4358
4408
  var ReactReconciler = _dereq_(84);
4359
4409
 
4360
4410
  var instantiateReactComponent = _dereq_(131);
4361
- var shouldUpdateReactComponent = _dereq_(142);
4362
- var traverseAllChildren = _dereq_(143);
4411
+ var shouldUpdateReactComponent = _dereq_(140);
4412
+ var traverseAllChildren = _dereq_(141);
4363
4413
  var warning = _dereq_(172);
4364
4414
 
4365
4415
  function instantiateChild(childInstances, child, name) {
@@ -4463,7 +4513,7 @@ var ReactChildReconciler = {
4463
4513
  };
4464
4514
 
4465
4515
  module.exports = ReactChildReconciler;
4466
- },{"131":131,"142":142,"143":143,"172":172,"84":84}],32:[function(_dereq_,module,exports){
4516
+ },{"131":131,"140":140,"141":141,"172":172,"84":84}],32:[function(_dereq_,module,exports){
4467
4517
  /**
4468
4518
  * Copyright 2013-2015, Facebook, Inc.
4469
4519
  * All rights reserved.
@@ -4480,8 +4530,8 @@ module.exports = ReactChildReconciler;
4480
4530
  var PooledClass = _dereq_(25);
4481
4531
  var ReactElement = _dereq_(57);
4482
4532
 
4483
- var emptyFunction = _dereq_(154);
4484
- var traverseAllChildren = _dereq_(143);
4533
+ var emptyFunction = _dereq_(152);
4534
+ var traverseAllChildren = _dereq_(141);
4485
4535
 
4486
4536
  var twoArgumentPooler = PooledClass.twoArgumentPooler;
4487
4537
  var fourArgumentPooler = PooledClass.fourArgumentPooler;
@@ -4646,7 +4696,7 @@ var ReactChildren = {
4646
4696
  };
4647
4697
 
4648
4698
  module.exports = ReactChildren;
4649
- },{"143":143,"154":154,"25":25,"57":57}],33:[function(_dereq_,module,exports){
4699
+ },{"141":141,"152":152,"25":25,"57":57}],33:[function(_dereq_,module,exports){
4650
4700
  /**
4651
4701
  * Copyright 2013-2015, Facebook, Inc.
4652
4702
  * All rights reserved.
@@ -4667,10 +4717,10 @@ var ReactPropTypeLocationNames = _dereq_(80);
4667
4717
  var ReactNoopUpdateQueue = _dereq_(76);
4668
4718
 
4669
4719
  var assign = _dereq_(24);
4670
- var emptyObject = _dereq_(155);
4671
- var invariant = _dereq_(162);
4672
- var keyMirror = _dereq_(165);
4673
- var keyOf = _dereq_(166);
4720
+ var emptyObject = _dereq_(153);
4721
+ var invariant = _dereq_(160);
4722
+ var keyMirror = _dereq_(164);
4723
+ var keyOf = _dereq_(165);
4674
4724
  var warning = _dereq_(172);
4675
4725
 
4676
4726
  var MIXINS_KEY = keyOf({ mixins: null });
@@ -5369,7 +5419,6 @@ var ReactClass = {
5369
5419
  };
5370
5420
  Constructor.prototype = new ReactClassComponent();
5371
5421
  Constructor.prototype.constructor = Constructor;
5372
- Constructor.isReactClass = {};
5373
5422
 
5374
5423
  injectedMixins.forEach(mixSpecIntoComponent.bind(null, Constructor));
5375
5424
 
@@ -5419,7 +5468,7 @@ var ReactClass = {
5419
5468
  };
5420
5469
 
5421
5470
  module.exports = ReactClass;
5422
- },{"155":155,"162":162,"165":165,"166":166,"172":172,"24":24,"34":34,"57":57,"76":76,"80":80,"81":81}],34:[function(_dereq_,module,exports){
5471
+ },{"153":153,"160":160,"164":164,"165":165,"172":172,"24":24,"34":34,"57":57,"76":76,"80":80,"81":81}],34:[function(_dereq_,module,exports){
5423
5472
  /**
5424
5473
  * Copyright 2013-2015, Facebook, Inc.
5425
5474
  * All rights reserved.
@@ -5435,8 +5484,8 @@ module.exports = ReactClass;
5435
5484
 
5436
5485
  var ReactNoopUpdateQueue = _dereq_(76);
5437
5486
 
5438
- var emptyObject = _dereq_(155);
5439
- var invariant = _dereq_(162);
5487
+ var emptyObject = _dereq_(153);
5488
+ var invariant = _dereq_(160);
5440
5489
  var warning = _dereq_(172);
5441
5490
 
5442
5491
  /**
@@ -5451,7 +5500,7 @@ function ReactComponent(props, context, updater) {
5451
5500
  this.updater = updater || ReactNoopUpdateQueue;
5452
5501
  }
5453
5502
 
5454
- ReactComponent.isReactClass = {};
5503
+ ReactComponent.prototype.isReactComponent = {};
5455
5504
 
5456
5505
  /**
5457
5506
  * Sets a subset of the state. Always use this to mutate
@@ -5543,7 +5592,7 @@ if ("development" !== 'production') {
5543
5592
  }
5544
5593
 
5545
5594
  module.exports = ReactComponent;
5546
- },{"155":155,"162":162,"172":172,"76":76}],35:[function(_dereq_,module,exports){
5595
+ },{"153":153,"160":160,"172":172,"76":76}],35:[function(_dereq_,module,exports){
5547
5596
  /**
5548
5597
  * Copyright 2013-2015, Facebook, Inc.
5549
5598
  * All rights reserved.
@@ -5599,7 +5648,7 @@ module.exports = ReactComponentBrowserEnvironment;
5599
5648
 
5600
5649
  'use strict';
5601
5650
 
5602
- var invariant = _dereq_(162);
5651
+ var invariant = _dereq_(160);
5603
5652
 
5604
5653
  var injected = false;
5605
5654
 
@@ -5637,7 +5686,7 @@ var ReactComponentEnvironment = {
5637
5686
  };
5638
5687
 
5639
5688
  module.exports = ReactComponentEnvironment;
5640
- },{"162":162}],37:[function(_dereq_,module,exports){
5689
+ },{"160":160}],37:[function(_dereq_,module,exports){
5641
5690
  /**
5642
5691
  * Copyright 2013-2015, Facebook, Inc.
5643
5692
  * All rights reserved.
@@ -5651,7 +5700,7 @@ module.exports = ReactComponentEnvironment;
5651
5700
 
5652
5701
  'use strict';
5653
5702
 
5654
- var shallowCompare = _dereq_(141);
5703
+ var shallowCompare = _dereq_(139);
5655
5704
 
5656
5705
  /**
5657
5706
  * If your React component's render function is "pure", e.g. it will render the
@@ -5684,7 +5733,7 @@ var ReactComponentWithPureRenderMixin = {
5684
5733
  };
5685
5734
 
5686
5735
  module.exports = ReactComponentWithPureRenderMixin;
5687
- },{"141":141}],38:[function(_dereq_,module,exports){
5736
+ },{"139":139}],38:[function(_dereq_,module,exports){
5688
5737
  /**
5689
5738
  * Copyright 2013-2015, Facebook, Inc.
5690
5739
  * All rights reserved.
@@ -5709,9 +5758,9 @@ var ReactReconciler = _dereq_(84);
5709
5758
  var ReactUpdateQueue = _dereq_(95);
5710
5759
 
5711
5760
  var assign = _dereq_(24);
5712
- var emptyObject = _dereq_(155);
5713
- var invariant = _dereq_(162);
5714
- var shouldUpdateReactComponent = _dereq_(142);
5761
+ var emptyObject = _dereq_(153);
5762
+ var invariant = _dereq_(160);
5763
+ var shouldUpdateReactComponent = _dereq_(140);
5715
5764
  var warning = _dereq_(172);
5716
5765
 
5717
5766
  function getDeclarationErrorAddendum(component) {
@@ -5728,7 +5777,7 @@ function getDeclarationErrorAddendum(component) {
5728
5777
  function StatelessComponent(Component) {}
5729
5778
  StatelessComponent.prototype.render = function () {
5730
5779
  var Component = ReactInstanceMap.get(this)._currentElement.type;
5731
- return new Component(this.props, this.context, this.updater);
5780
+ return Component(this.props, this.context, this.updater);
5732
5781
  };
5733
5782
 
5734
5783
  /**
@@ -5822,18 +5871,26 @@ var ReactCompositeComponentMixin = {
5822
5871
  var inst;
5823
5872
  var renderedElement;
5824
5873
 
5825
- if ("development" !== 'production') {
5826
- ReactCurrentOwner.current = this;
5827
- try {
5874
+ // This is a way to detect if Component is a stateless arrow function
5875
+ // component, which is not newable. It might not be 100% reliable but is
5876
+ // something we can do until we start detecting that Component extends
5877
+ // React.Component. We already assume that typeof Component === 'function'.
5878
+ var canInstantiate = ('prototype' in Component);
5879
+
5880
+ if (canInstantiate) {
5881
+ if ("development" !== 'production') {
5882
+ ReactCurrentOwner.current = this;
5883
+ try {
5884
+ inst = new Component(publicProps, publicContext, ReactUpdateQueue);
5885
+ } finally {
5886
+ ReactCurrentOwner.current = null;
5887
+ }
5888
+ } else {
5828
5889
  inst = new Component(publicProps, publicContext, ReactUpdateQueue);
5829
- } finally {
5830
- ReactCurrentOwner.current = null;
5831
5890
  }
5832
- } else {
5833
- inst = new Component(publicProps, publicContext, ReactUpdateQueue);
5834
5891
  }
5835
5892
 
5836
- if (inst === null || inst === false || ReactElement.isValidElement(inst)) {
5893
+ if (!canInstantiate || inst === null || inst === false || ReactElement.isValidElement(inst)) {
5837
5894
  renderedElement = inst;
5838
5895
  inst = new StatelessComponent(Component);
5839
5896
  }
@@ -5846,7 +5903,7 @@ var ReactCompositeComponentMixin = {
5846
5903
  } else {
5847
5904
  // We support ES6 inheriting from React.Component, the module pattern,
5848
5905
  // and stateless components, but not ES6 classes that don't extend
5849
- "development" !== 'production' ? warning(Component.isReactClass || !(inst instanceof Component), '%s(...): React component classes must extend React.Component.', Component.displayName || Component.name || 'Component') : undefined;
5906
+ "development" !== 'production' ? warning(Component.prototype && Component.prototype.isReactComponent || !canInstantiate || !(inst instanceof Component), '%s(...): React component classes must extend React.Component.', Component.displayName || Component.name || 'Component') : undefined;
5850
5907
  }
5851
5908
  }
5852
5909
 
@@ -6304,8 +6361,13 @@ var ReactCompositeComponentMixin = {
6304
6361
  attachRef: function (ref, component) {
6305
6362
  var inst = this.getPublicInstance();
6306
6363
  !(inst != null) ? "development" !== 'production' ? invariant(false, 'Stateless function components cannot have refs.') : invariant(false) : undefined;
6364
+ var publicComponentInstance = component.getPublicInstance();
6365
+ if ("development" !== 'production') {
6366
+ var componentName = component && component.getName ? component.getName() : 'a component';
6367
+ "development" !== 'production' ? warning(publicComponentInstance != null, 'Stateless function components cannot be given refs ' + '(See ref "%s" in %s created by %s). ' + 'Attempts to access this ref will fail.', ref, componentName, this.getName()) : undefined;
6368
+ }
6307
6369
  var refs = inst.refs === emptyObject ? inst.refs = {} : inst.refs;
6308
- refs[ref] = component.getPublicInstance();
6370
+ refs[ref] = publicComponentInstance;
6309
6371
  },
6310
6372
 
6311
6373
  /**
@@ -6366,7 +6428,7 @@ var ReactCompositeComponent = {
6366
6428
  };
6367
6429
 
6368
6430
  module.exports = ReactCompositeComponent;
6369
- },{"142":142,"155":155,"162":162,"172":172,"24":24,"36":36,"39":39,"57":57,"68":68,"78":78,"80":80,"81":81,"84":84,"95":95}],39:[function(_dereq_,module,exports){
6431
+ },{"140":140,"153":153,"160":160,"172":172,"24":24,"36":36,"39":39,"57":57,"68":68,"78":78,"80":80,"81":81,"84":84,"95":95}],39:[function(_dereq_,module,exports){
6370
6432
  /**
6371
6433
  * Copyright 2013-2015, Facebook, Inc.
6372
6434
  * All rights reserved.
@@ -6424,7 +6486,7 @@ var ReactUpdates = _dereq_(96);
6424
6486
  var ReactVersion = _dereq_(97);
6425
6487
 
6426
6488
  var findDOMNode = _dereq_(121);
6427
- var renderSubtreeIntoContainer = _dereq_(138);
6489
+ var renderSubtreeIntoContainer = _dereq_(136);
6428
6490
  var warning = _dereq_(172);
6429
6491
 
6430
6492
  ReactDefaultInjection.inject();
@@ -6456,7 +6518,7 @@ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVT
6456
6518
  }
6457
6519
 
6458
6520
  if ("development" !== 'production') {
6459
- var ExecutionEnvironment = _dereq_(148);
6521
+ var ExecutionEnvironment = _dereq_(146);
6460
6522
  if (ExecutionEnvironment.canUseDOM && window.top === window.self) {
6461
6523
 
6462
6524
  // First check if devtools is not installed
@@ -6490,7 +6552,7 @@ if ("development" !== 'production') {
6490
6552
  }
6491
6553
 
6492
6554
  module.exports = React;
6493
- },{"121":121,"138":138,"148":148,"172":172,"39":39,"51":51,"54":54,"67":67,"72":72,"78":78,"84":84,"96":96,"97":97}],41:[function(_dereq_,module,exports){
6555
+ },{"121":121,"136":136,"146":146,"172":172,"39":39,"51":51,"54":54,"67":67,"72":72,"78":78,"84":84,"96":96,"97":97}],41:[function(_dereq_,module,exports){
6494
6556
  /**
6495
6557
  * Copyright 2013-2015, Facebook, Inc.
6496
6558
  * All rights reserved.
@@ -6577,13 +6639,13 @@ var ReactUpdateQueue = _dereq_(95);
6577
6639
 
6578
6640
  var assign = _dereq_(24);
6579
6641
  var escapeTextContentForBrowser = _dereq_(120);
6580
- var invariant = _dereq_(162);
6642
+ var invariant = _dereq_(160);
6581
6643
  var isEventSupported = _dereq_(132);
6582
- var keyOf = _dereq_(166);
6583
- var setInnerHTML = _dereq_(139);
6584
- var setTextContent = _dereq_(140);
6644
+ var keyOf = _dereq_(165);
6645
+ var setInnerHTML = _dereq_(137);
6646
+ var setTextContent = _dereq_(138);
6585
6647
  var shallowEqual = _dereq_(170);
6586
- var validateDOMNesting = _dereq_(145);
6648
+ var validateDOMNesting = _dereq_(143);
6587
6649
  var warning = _dereq_(172);
6588
6650
 
6589
6651
  var deleteListener = ReactBrowserEventEmitter.deleteListener;
@@ -6681,6 +6743,30 @@ function legacyReplaceProps(partialProps, callback) {
6681
6743
  }
6682
6744
  }
6683
6745
 
6746
+ function friendlyStringify(obj) {
6747
+ if (typeof obj === 'object') {
6748
+ if (Array.isArray(obj)) {
6749
+ return '[' + obj.map(friendlyStringify).join(', ') + ']';
6750
+ } else {
6751
+ var pairs = [];
6752
+ for (var key in obj) {
6753
+ if (Object.prototype.hasOwnProperty.call(obj, key)) {
6754
+ var keyEscaped = /^[a-z$_][\w$_]*$/i.test(key) ? key : JSON.stringify(key);
6755
+ pairs.push(keyEscaped + ': ' + friendlyStringify(obj[key]));
6756
+ }
6757
+ }
6758
+ return '{' + pairs.join(', ') + '}';
6759
+ }
6760
+ } else if (typeof obj === 'string') {
6761
+ return JSON.stringify(obj);
6762
+ } else if (typeof obj === 'function') {
6763
+ return '[function object]';
6764
+ }
6765
+ // Differs from JSON.stringify in that undefined becauses undefined and that
6766
+ // inf and nan don't become null
6767
+ return String(obj);
6768
+ }
6769
+
6684
6770
  var styleMutationWarning = {};
6685
6771
 
6686
6772
  function checkAndWarnForMutatedStyle(style1, style2, component) {
@@ -6706,7 +6792,7 @@ function checkAndWarnForMutatedStyle(style1, style2, component) {
6706
6792
 
6707
6793
  styleMutationWarning[hash] = true;
6708
6794
 
6709
- "development" !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', JSON.stringify(style1), JSON.stringify(style2)) : undefined;
6795
+ "development" !== 'production' ? warning(false, '`%s` was passed a style object that has previously been mutated. ' + 'Mutating `style` is deprecated. Consider cloning it beforehand. Check ' + 'the `render` %s. Previous style: %s. Mutated style: %s.', componentName, owner ? 'of `' + ownerName + '`' : 'using <' + componentName + '>', friendlyStringify(style1), friendlyStringify(style2)) : undefined;
6710
6796
  }
6711
6797
 
6712
6798
  /**
@@ -6818,6 +6904,10 @@ function trapBubbledEventsLocal() {
6818
6904
  }
6819
6905
  }
6820
6906
 
6907
+ function mountReadyInputWrapper() {
6908
+ ReactDOMInput.mountReadyWrapper(this);
6909
+ }
6910
+
6821
6911
  function postUpdateSelectWrapper() {
6822
6912
  ReactDOMSelect.postUpdateWrapper(this);
6823
6913
  }
@@ -6872,13 +6962,11 @@ function validateDangerousTag(tag) {
6872
6962
  }
6873
6963
  }
6874
6964
 
6875
- function processChildContext(context, inst) {
6876
- if ("development" !== 'production') {
6877
- // Pass down our tag name to child components for validation purposes
6878
- context = assign({}, context);
6879
- var info = context[validateDOMNesting.ancestorInfoContextKey];
6880
- context[validateDOMNesting.ancestorInfoContextKey] = validateDOMNesting.updatedAncestorInfo(info, inst._tag, inst);
6881
- }
6965
+ function processChildContextDev(context, inst) {
6966
+ // Pass down our tag name to child components for validation purposes
6967
+ context = assign({}, context);
6968
+ var info = context[validateDOMNesting.ancestorInfoContextKey];
6969
+ context[validateDOMNesting.ancestorInfoContextKey] = validateDOMNesting.updatedAncestorInfo(info, inst._tag, inst);
6882
6970
  return context;
6883
6971
  }
6884
6972
 
@@ -6910,6 +6998,10 @@ function ReactDOMComponent(tag) {
6910
6998
  this._wrapperState = null;
6911
6999
  this._topLevelWrapper = null;
6912
7000
  this._nodeWithLegacyProperties = null;
7001
+ if ("development" !== 'production') {
7002
+ this._unprocessedContextDev = null;
7003
+ this._processedContextDev = null;
7004
+ }
6913
7005
  }
6914
7006
 
6915
7007
  ReactDOMComponent.displayName = 'ReactDOMComponent';
@@ -6975,6 +7067,12 @@ ReactDOMComponent.Mixin = {
6975
7067
  }
6976
7068
  }
6977
7069
 
7070
+ if ("development" !== 'production') {
7071
+ this._unprocessedContextDev = context;
7072
+ this._processedContextDev = processChildContextDev(context, this);
7073
+ context = this._processedContextDev;
7074
+ }
7075
+
6978
7076
  var mountImage;
6979
7077
  if (transaction.useCreateElement) {
6980
7078
  var ownerDocument = context[ReactMount.ownerDocumentContextKey];
@@ -6996,8 +7094,10 @@ ReactDOMComponent.Mixin = {
6996
7094
  }
6997
7095
 
6998
7096
  switch (this._tag) {
6999
- case 'button':
7000
7097
  case 'input':
7098
+ transaction.getReactMountReady().enqueue(mountReadyInputWrapper, this);
7099
+ // falls through
7100
+ case 'button':
7001
7101
  case 'select':
7002
7102
  case 'textarea':
7003
7103
  if (props.autoFocus) {
@@ -7034,7 +7134,9 @@ ReactDOMComponent.Mixin = {
7034
7134
  continue;
7035
7135
  }
7036
7136
  if (registrationNameModules.hasOwnProperty(propKey)) {
7037
- enqueuePutListener(this._rootNodeID, propKey, propValue, transaction);
7137
+ if (propValue) {
7138
+ enqueuePutListener(this._rootNodeID, propKey, propValue, transaction);
7139
+ }
7038
7140
  } else {
7039
7141
  if (propKey === STYLE) {
7040
7142
  if (propValue) {
@@ -7093,7 +7195,7 @@ ReactDOMComponent.Mixin = {
7093
7195
  // TODO: Validate that text is allowed as a child of this node
7094
7196
  ret = escapeTextContentForBrowser(contentToUse);
7095
7197
  } else if (childrenToUse != null) {
7096
- var mountImages = this.mountChildren(childrenToUse, transaction, processChildContext(context, this));
7198
+ var mountImages = this.mountChildren(childrenToUse, transaction, context);
7097
7199
  ret = mountImages.join('');
7098
7200
  }
7099
7201
  }
@@ -7128,7 +7230,7 @@ ReactDOMComponent.Mixin = {
7128
7230
  // TODO: Validate that text is allowed as a child of this node
7129
7231
  setTextContent(el, contentToUse);
7130
7232
  } else if (childrenToUse != null) {
7131
- var mountImages = this.mountChildren(childrenToUse, transaction, processChildContext(context, this));
7233
+ var mountImages = this.mountChildren(childrenToUse, transaction, context);
7132
7234
  for (var i = 0; i < mountImages.length; i++) {
7133
7235
  el.appendChild(mountImages[i]);
7134
7236
  }
@@ -7189,9 +7291,20 @@ ReactDOMComponent.Mixin = {
7189
7291
  break;
7190
7292
  }
7191
7293
 
7294
+ if ("development" !== 'production') {
7295
+ // If the context is reference-equal to the old one, pass down the same
7296
+ // processed object so the update bailout in ReactReconciler behaves
7297
+ // correctly (and identically in dev and prod). See #5005.
7298
+ if (this._unprocessedContextDev !== context) {
7299
+ this._unprocessedContextDev = context;
7300
+ this._processedContextDev = processChildContextDev(context, this);
7301
+ }
7302
+ context = this._processedContextDev;
7303
+ }
7304
+
7192
7305
  assertValidProps(this, nextProps);
7193
7306
  this._updateDOMProperties(lastProps, nextProps, transaction, null);
7194
- this._updateDOMChildren(lastProps, nextProps, transaction, processChildContext(context, this));
7307
+ this._updateDOMChildren(lastProps, nextProps, transaction, context);
7195
7308
 
7196
7309
  if (!canDefineProperty && this._nodeWithLegacyProperties) {
7197
7310
  this._nodeWithLegacyProperties.props = nextProps;
@@ -7451,7 +7564,7 @@ ReactPerf.measureMethods(ReactDOMComponent, 'ReactDOMComponent', {
7451
7564
  assign(ReactDOMComponent.prototype, ReactDOMComponent.Mixin, ReactMultiChild.Mixin);
7452
7565
 
7453
7566
  module.exports = ReactDOMComponent;
7454
- },{"10":10,"11":11,"120":120,"132":132,"139":139,"140":140,"145":145,"15":15,"162":162,"166":166,"170":170,"172":172,"2":2,"24":24,"28":28,"35":35,"41":41,"46":46,"47":47,"48":48,"5":5,"52":52,"72":72,"73":73,"78":78,"95":95}],43:[function(_dereq_,module,exports){
7567
+ },{"10":10,"11":11,"120":120,"132":132,"137":137,"138":138,"143":143,"15":15,"160":160,"165":165,"170":170,"172":172,"2":2,"24":24,"28":28,"35":35,"41":41,"46":46,"47":47,"48":48,"5":5,"52":52,"72":72,"73":73,"78":78,"95":95}],43:[function(_dereq_,module,exports){
7455
7568
  /**
7456
7569
  * Copyright 2013-2015, Facebook, Inc.
7457
7570
  * All rights reserved.
@@ -7469,7 +7582,7 @@ module.exports = ReactDOMComponent;
7469
7582
  var ReactElement = _dereq_(57);
7470
7583
  var ReactElementValidator = _dereq_(58);
7471
7584
 
7472
- var mapObject = _dereq_(167);
7585
+ var mapObject = _dereq_(166);
7473
7586
 
7474
7587
  /**
7475
7588
  * Create a factory that creates HTML tag elements.
@@ -7629,7 +7742,7 @@ var ReactDOMFactories = mapObject({
7629
7742
  }, createDOMFactory);
7630
7743
 
7631
7744
  module.exports = ReactDOMFactories;
7632
- },{"167":167,"57":57,"58":58}],44:[function(_dereq_,module,exports){
7745
+ },{"166":166,"57":57,"58":58}],44:[function(_dereq_,module,exports){
7633
7746
  /**
7634
7747
  * Copyright 2013-2015, Facebook, Inc.
7635
7748
  * All rights reserved.
@@ -7668,7 +7781,7 @@ var DOMPropertyOperations = _dereq_(11);
7668
7781
  var ReactMount = _dereq_(72);
7669
7782
  var ReactPerf = _dereq_(78);
7670
7783
 
7671
- var invariant = _dereq_(162);
7784
+ var invariant = _dereq_(160);
7672
7785
 
7673
7786
  /**
7674
7787
  * Errors for properties that should not be updated with `updatePropertyByID()`.
@@ -7738,13 +7851,12 @@ var ReactDOMIDOperations = {
7738
7851
  };
7739
7852
 
7740
7853
  ReactPerf.measureMethods(ReactDOMIDOperations, 'ReactDOMIDOperations', {
7741
- updatePropertyByID: 'updatePropertyByID',
7742
7854
  dangerouslyReplaceNodeWithMarkupByID: 'dangerouslyReplaceNodeWithMarkupByID',
7743
7855
  dangerouslyProcessChildrenUpdates: 'dangerouslyProcessChildrenUpdates'
7744
7856
  });
7745
7857
 
7746
7858
  module.exports = ReactDOMIDOperations;
7747
- },{"11":11,"162":162,"72":72,"78":78,"9":9}],46:[function(_dereq_,module,exports){
7859
+ },{"11":11,"160":160,"72":72,"78":78,"9":9}],46:[function(_dereq_,module,exports){
7748
7860
  /**
7749
7861
  * Copyright 2013-2015, Facebook, Inc.
7750
7862
  * All rights reserved.
@@ -7764,7 +7876,7 @@ var ReactMount = _dereq_(72);
7764
7876
  var ReactUpdates = _dereq_(96);
7765
7877
 
7766
7878
  var assign = _dereq_(24);
7767
- var invariant = _dereq_(162);
7879
+ var invariant = _dereq_(160);
7768
7880
 
7769
7881
  var instancesByReactID = {};
7770
7882
 
@@ -7808,7 +7920,9 @@ var ReactDOMInput = {
7808
7920
  },
7809
7921
 
7810
7922
  mountWrapper: function (inst, props) {
7811
- LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);
7923
+ if ("development" !== 'production') {
7924
+ LinkedValueUtils.checkPropTypes('input', props, inst._currentElement._owner);
7925
+ }
7812
7926
 
7813
7927
  var defaultValue = props.defaultValue;
7814
7928
  inst._wrapperState = {
@@ -7816,7 +7930,10 @@ var ReactDOMInput = {
7816
7930
  initialValue: defaultValue != null ? defaultValue : null,
7817
7931
  onChange: _handleChange.bind(inst)
7818
7932
  };
7933
+ },
7819
7934
 
7935
+ mountReadyWrapper: function (inst) {
7936
+ // Can't be in mountWrapper or else server rendering leaks.
7820
7937
  instancesByReactID[inst._rootNodeID] = inst;
7821
7938
  },
7822
7939
 
@@ -7893,7 +8010,7 @@ function _handleChange(event) {
7893
8010
  }
7894
8011
 
7895
8012
  module.exports = ReactDOMInput;
7896
- },{"162":162,"23":23,"24":24,"45":45,"72":72,"96":96}],47:[function(_dereq_,module,exports){
8013
+ },{"160":160,"23":23,"24":24,"45":45,"72":72,"96":96}],47:[function(_dereq_,module,exports){
7897
8014
  /**
7898
8015
  * Copyright 2013-2015, Facebook, Inc.
7899
8016
  * All rights reserved.
@@ -8183,7 +8300,7 @@ module.exports = ReactDOMSelect;
8183
8300
 
8184
8301
  'use strict';
8185
8302
 
8186
- var ExecutionEnvironment = _dereq_(148);
8303
+ var ExecutionEnvironment = _dereq_(146);
8187
8304
 
8188
8305
  var getNodeForCharacterOffset = _dereq_(129);
8189
8306
  var getTextContentAccessor = _dereq_(130);
@@ -8248,6 +8365,22 @@ function getModernOffsets(node) {
8248
8365
 
8249
8366
  var currentRange = selection.getRangeAt(0);
8250
8367
 
8368
+ // In Firefox, range.startContainer and range.endContainer can be "anonymous
8369
+ // divs", e.g. the up/down buttons on an <input type="number">. Anonymous
8370
+ // divs do not seem to expose properties, triggering a "Permission denied
8371
+ // error" if any of its properties are accessed. The only seemingly possible
8372
+ // way to avoid erroring is to access a property that typically works for
8373
+ // non-anonymous divs and catch any error that may otherwise arise. See
8374
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=208427
8375
+ try {
8376
+ /* eslint-disable no-unused-expressions */
8377
+ currentRange.startContainer.nodeType;
8378
+ currentRange.endContainer.nodeType;
8379
+ /* eslint-enable no-unused-expressions */
8380
+ } catch (e) {
8381
+ return null;
8382
+ }
8383
+
8251
8384
  // If the node and offset values are the same, the selection is collapsed.
8252
8385
  // `Selection.isCollapsed` is available natively, but IE sometimes gets
8253
8386
  // this value wrong.
@@ -8366,7 +8499,7 @@ var ReactDOMSelection = {
8366
8499
  };
8367
8500
 
8368
8501
  module.exports = ReactDOMSelection;
8369
- },{"129":129,"130":130,"148":148}],50:[function(_dereq_,module,exports){
8502
+ },{"129":129,"130":130,"146":146}],50:[function(_dereq_,module,exports){
8370
8503
  /**
8371
8504
  * Copyright 2013-2015, Facebook, Inc.
8372
8505
  * All rights reserved.
@@ -8415,8 +8548,8 @@ var ReactMount = _dereq_(72);
8415
8548
 
8416
8549
  var assign = _dereq_(24);
8417
8550
  var escapeTextContentForBrowser = _dereq_(120);
8418
- var setTextContent = _dereq_(140);
8419
- var validateDOMNesting = _dereq_(145);
8551
+ var setTextContent = _dereq_(138);
8552
+ var validateDOMNesting = _dereq_(143);
8420
8553
 
8421
8554
  /**
8422
8555
  * Text nodes violate a couple assumptions that React makes about components:
@@ -8521,7 +8654,7 @@ assign(ReactDOMTextComponent.prototype, {
8521
8654
  });
8522
8655
 
8523
8656
  module.exports = ReactDOMTextComponent;
8524
- },{"11":11,"120":120,"140":140,"145":145,"24":24,"35":35,"72":72,"9":9}],52:[function(_dereq_,module,exports){
8657
+ },{"11":11,"120":120,"138":138,"143":143,"24":24,"35":35,"72":72,"9":9}],52:[function(_dereq_,module,exports){
8525
8658
  /**
8526
8659
  * Copyright 2013-2015, Facebook, Inc.
8527
8660
  * All rights reserved.
@@ -8540,7 +8673,7 @@ var ReactDOMIDOperations = _dereq_(45);
8540
8673
  var ReactUpdates = _dereq_(96);
8541
8674
 
8542
8675
  var assign = _dereq_(24);
8543
- var invariant = _dereq_(162);
8676
+ var invariant = _dereq_(160);
8544
8677
  var warning = _dereq_(172);
8545
8678
 
8546
8679
  function forceUpdateIfMounted() {
@@ -8582,7 +8715,9 @@ var ReactDOMTextarea = {
8582
8715
  },
8583
8716
 
8584
8717
  mountWrapper: function (inst, props) {
8585
- LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);
8718
+ if ("development" !== 'production') {
8719
+ LinkedValueUtils.checkPropTypes('textarea', props, inst._currentElement._owner);
8720
+ }
8586
8721
 
8587
8722
  var defaultValue = props.defaultValue;
8588
8723
  // TODO (yungsters): Remove support for children content in <textarea>.
@@ -8633,7 +8768,7 @@ function _handleChange(event) {
8633
8768
  }
8634
8769
 
8635
8770
  module.exports = ReactDOMTextarea;
8636
- },{"162":162,"172":172,"23":23,"24":24,"45":45,"96":96}],53:[function(_dereq_,module,exports){
8771
+ },{"160":160,"172":172,"23":23,"24":24,"45":45,"96":96}],53:[function(_dereq_,module,exports){
8637
8772
  /**
8638
8773
  * Copyright 2013-2015, Facebook, Inc.
8639
8774
  * All rights reserved.
@@ -8651,7 +8786,7 @@ var ReactUpdates = _dereq_(96);
8651
8786
  var Transaction = _dereq_(113);
8652
8787
 
8653
8788
  var assign = _dereq_(24);
8654
- var emptyFunction = _dereq_(154);
8789
+ var emptyFunction = _dereq_(152);
8655
8790
 
8656
8791
  var RESET_BATCHED_UPDATES = {
8657
8792
  initialize: emptyFunction,
@@ -8701,7 +8836,7 @@ var ReactDefaultBatchingStrategy = {
8701
8836
  };
8702
8837
 
8703
8838
  module.exports = ReactDefaultBatchingStrategy;
8704
- },{"113":113,"154":154,"24":24,"96":96}],54:[function(_dereq_,module,exports){
8839
+ },{"113":113,"152":152,"24":24,"96":96}],54:[function(_dereq_,module,exports){
8705
8840
  /**
8706
8841
  * Copyright 2013-2015, Facebook, Inc.
8707
8842
  * All rights reserved.
@@ -8720,7 +8855,7 @@ var ChangeEventPlugin = _dereq_(7);
8720
8855
  var ClientReactRootIndex = _dereq_(8);
8721
8856
  var DefaultEventPluginOrder = _dereq_(13);
8722
8857
  var EnterLeaveEventPlugin = _dereq_(14);
8723
- var ExecutionEnvironment = _dereq_(148);
8858
+ var ExecutionEnvironment = _dereq_(146);
8724
8859
  var HTMLDOMPropertyConfig = _dereq_(21);
8725
8860
  var ReactBrowserComponentMixin = _dereq_(27);
8726
8861
  var ReactComponentBrowserEnvironment = _dereq_(35);
@@ -8799,7 +8934,7 @@ function inject() {
8799
8934
  module.exports = {
8800
8935
  inject: inject
8801
8936
  };
8802
- },{"100":100,"101":101,"13":13,"14":14,"148":148,"21":21,"27":27,"3":3,"35":35,"42":42,"51":51,"53":53,"55":55,"63":63,"65":65,"67":67,"7":7,"72":72,"8":8,"83":83,"98":98,"99":99}],55:[function(_dereq_,module,exports){
8937
+ },{"100":100,"101":101,"13":13,"14":14,"146":146,"21":21,"27":27,"3":3,"35":35,"42":42,"51":51,"53":53,"55":55,"63":63,"65":65,"67":67,"7":7,"72":72,"8":8,"83":83,"98":98,"99":99}],55:[function(_dereq_,module,exports){
8803
8938
  /**
8804
8939
  * Copyright 2013-2015, Facebook, Inc.
8805
8940
  * All rights reserved.
@@ -8945,13 +9080,14 @@ var ReactDefaultPerf = {
8945
9080
  counts: {},
8946
9081
  writes: {},
8947
9082
  displayNames: {},
8948
- totalTime: 0
9083
+ totalTime: 0,
9084
+ created: {}
8949
9085
  });
8950
9086
  start = performanceNow();
8951
9087
  rv = func.apply(this, args);
8952
9088
  ReactDefaultPerf._allMeasurements[ReactDefaultPerf._allMeasurements.length - 1].totalTime = performanceNow() - start;
8953
9089
  return rv;
8954
- } else if (fnName === '_mountImageIntoNode' || moduleName === 'ReactDOMIDOperations') {
9090
+ } else if (fnName === '_mountImageIntoNode' || moduleName === 'ReactBrowserEventEmitter' || moduleName === 'ReactDOMIDOperations' || moduleName === 'CSSPropertyOperations' || moduleName === 'DOMChildrenOperations' || moduleName === 'DOMPropertyOperations') {
8955
9091
  start = performanceNow();
8956
9092
  rv = func.apply(this, args);
8957
9093
  totalTime = performanceNow() - start;
@@ -8979,13 +9115,17 @@ var ReactDefaultPerf = {
8979
9115
  });
8980
9116
  } else {
8981
9117
  // basic format
8982
- ReactDefaultPerf._recordWrite(args[0], fnName, totalTime, Array.prototype.slice.call(args, 1));
9118
+ var id = args[0];
9119
+ if (typeof id === 'object') {
9120
+ id = ReactMount.getID(args[0]);
9121
+ }
9122
+ ReactDefaultPerf._recordWrite(id, fnName, totalTime, Array.prototype.slice.call(args, 1));
8983
9123
  }
8984
9124
  return rv;
8985
9125
  } else if (moduleName === 'ReactCompositeComponent' && (fnName === 'mountComponent' || fnName === 'updateComponent' || // TODO: receiveComponent()?
8986
9126
  fnName === '_renderValidatedComponent')) {
8987
9127
 
8988
- if (typeof this._currentElement.type === 'string') {
9128
+ if (this._currentElement.type === ReactMount.TopLevelWrapper) {
8989
9129
  return func.apply(this, args);
8990
9130
  }
8991
9131
 
@@ -8999,6 +9139,7 @@ var ReactDefaultPerf = {
8999
9139
  if (isRender) {
9000
9140
  addValue(entry.counts, rootNodeID, 1);
9001
9141
  } else if (isMount) {
9142
+ entry.created[rootNodeID] = true;
9002
9143
  mountStack.push(0);
9003
9144
  }
9004
9145
 
@@ -9056,7 +9197,9 @@ var DOM_OPERATION_TYPES = {
9056
9197
  REMOVE_NODE: 'remove',
9057
9198
  SET_MARKUP: 'set innerHTML',
9058
9199
  TEXT_CONTENT: 'set textContent',
9059
- 'updatePropertyByID': 'update attribute',
9200
+ 'setValueForProperty': 'update attribute',
9201
+ 'setValueForAttribute': 'update attribute',
9202
+ 'deleteValueForProperty': 'remove attribute',
9060
9203
  'dangerouslyReplaceNodeWithMarkupByID': 'replace'
9061
9204
  };
9062
9205
 
@@ -9210,6 +9353,10 @@ function getUnchangedComponents(measurement) {
9210
9353
  break;
9211
9354
  }
9212
9355
  }
9356
+ // check if component newly created
9357
+ if (measurement.created[id]) {
9358
+ isDirty = true;
9359
+ }
9213
9360
  if (!isDirty && measurement.counts[id] > 0) {
9214
9361
  cleanComponents[id] = true;
9215
9362
  }
@@ -9245,7 +9392,7 @@ var assign = _dereq_(24);
9245
9392
 
9246
9393
  // The Symbol used to tag the ReactElement type. If there is no native Symbol
9247
9394
  // nor polyfill, then a plain number is used for performance.
9248
- var TYPE_SYMBOL = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;
9395
+ var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol['for'] && Symbol['for']('react.element') || 0xeac7;
9249
9396
 
9250
9397
  var RESERVED_PROPS = {
9251
9398
  key: true,
@@ -9285,7 +9432,7 @@ if ("development" !== 'production') {
9285
9432
  var ReactElement = function (type, key, ref, self, source, owner, props) {
9286
9433
  var element = {
9287
9434
  // This tag allow us to uniquely identify this as a React Element
9288
- $$typeof: TYPE_SYMBOL,
9435
+ $$typeof: REACT_ELEMENT_TYPE,
9289
9436
 
9290
9437
  // Built-in properties that belong on the element
9291
9438
  type: type,
@@ -9478,7 +9625,7 @@ ReactElement.cloneElement = function (element, config, children) {
9478
9625
  * @final
9479
9626
  */
9480
9627
  ReactElement.isValidElement = function (object) {
9481
- return typeof object === 'object' && object !== null && object.$$typeof === TYPE_SYMBOL;
9628
+ return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
9482
9629
  };
9483
9630
 
9484
9631
  module.exports = ReactElement;
@@ -9509,7 +9656,7 @@ var ReactPropTypeLocationNames = _dereq_(80);
9509
9656
  var ReactCurrentOwner = _dereq_(39);
9510
9657
 
9511
9658
  var getIteratorFn = _dereq_(128);
9512
- var invariant = _dereq_(162);
9659
+ var invariant = _dereq_(160);
9513
9660
  var warning = _dereq_(172);
9514
9661
 
9515
9662
  function getDeclarationErrorAddendum() {
@@ -9542,7 +9689,7 @@ var loggedTypeFailures = {};
9542
9689
  * @param {*} parentType element's parent's type.
9543
9690
  */
9544
9691
  function validateExplicitKey(element, parentType) {
9545
- if (element._store.validated || element.key != null) {
9692
+ if (!element._store || element._store.validated || element.key != null) {
9546
9693
  return;
9547
9694
  }
9548
9695
  element._store.validated = true;
@@ -9699,9 +9846,10 @@ function validatePropTypes(element) {
9699
9846
  var ReactElementValidator = {
9700
9847
 
9701
9848
  createElement: function (type, props, children) {
9849
+ var validType = typeof type === 'string' || typeof type === 'function';
9702
9850
  // We warn in this case but don't throw. We expect the element creation to
9703
9851
  // succeed and there will likely be errors in render.
9704
- "development" !== 'production' ? warning(typeof type === 'string' || typeof type === 'function', 'React.createElement: type should not be null, undefined, boolean, or ' + 'number. It should be a string (for DOM elements) or a ReactClass ' + '(for composite components).%s', getDeclarationErrorAddendum()) : undefined;
9852
+ "development" !== 'production' ? warning(validType, 'React.createElement: type should not be null, undefined, boolean, or ' + 'number. It should be a string (for DOM elements) or a ReactClass ' + '(for composite components).%s', getDeclarationErrorAddendum()) : undefined;
9705
9853
 
9706
9854
  var element = ReactElement.createElement.apply(this, arguments);
9707
9855
 
@@ -9711,8 +9859,15 @@ var ReactElementValidator = {
9711
9859
  return element;
9712
9860
  }
9713
9861
 
9714
- for (var i = 2; i < arguments.length; i++) {
9715
- validateChildKeys(arguments[i], type);
9862
+ // Skip key warning if the type isn't valid since our key validation logic
9863
+ // doesn't expect a non-string/function type and can throw confusing errors.
9864
+ // We don't want exception behavior to differ between dev and prod.
9865
+ // (Rendering will throw with a helpful message and as soon as the type is
9866
+ // fixed, the key warnings will appear.)
9867
+ if (validType) {
9868
+ for (var i = 2; i < arguments.length; i++) {
9869
+ validateChildKeys(arguments[i], type);
9870
+ }
9716
9871
  }
9717
9872
 
9718
9873
  validatePropTypes(element);
@@ -9757,7 +9912,7 @@ var ReactElementValidator = {
9757
9912
  };
9758
9913
 
9759
9914
  module.exports = ReactElementValidator;
9760
- },{"128":128,"162":162,"172":172,"39":39,"57":57,"80":80,"81":81}],59:[function(_dereq_,module,exports){
9915
+ },{"128":128,"160":160,"172":172,"39":39,"57":57,"80":80,"81":81}],59:[function(_dereq_,module,exports){
9761
9916
  /**
9762
9917
  * Copyright 2014-2015, Facebook, Inc.
9763
9918
  * All rights reserved.
@@ -9875,25 +10030,33 @@ module.exports = ReactEmptyComponentRegistry;
9875
10030
 
9876
10031
  var caughtError = null;
9877
10032
 
10033
+ /**
10034
+ * Call a function while guarding against errors that happens within it.
10035
+ *
10036
+ * @param {?String} name of the guard to use for logging or debugging
10037
+ * @param {Function} func The function to invoke
10038
+ * @param {*} a First argument
10039
+ * @param {*} b Second argument
10040
+ */
10041
+ function invokeGuardedCallback(name, func, a, b) {
10042
+ try {
10043
+ return func(a, b);
10044
+ } catch (x) {
10045
+ if (caughtError === null) {
10046
+ caughtError = x;
10047
+ }
10048
+ return undefined;
10049
+ }
10050
+ }
10051
+
9878
10052
  var ReactErrorUtils = {
10053
+ invokeGuardedCallback: invokeGuardedCallback,
10054
+
9879
10055
  /**
9880
- * Call a function while guarding against errors that happens within it.
9881
- *
9882
- * @param {?String} name of the guard to use for logging or debugging
9883
- * @param {Function} func The function to invoke
9884
- * @param {*} a First argument
9885
- * @param {*} b Second argument
10056
+ * Invoked by ReactTestUtils.Simulate so that any errors thrown by the event
10057
+ * handler are sure to be rethrown by rethrowCaughtError.
9886
10058
  */
9887
- invokeGuardedCallback: function (name, func, a, b) {
9888
- try {
9889
- return func(a, b);
9890
- } catch (x) {
9891
- if (caughtError === null) {
9892
- caughtError = x;
9893
- }
9894
- return undefined;
9895
- }
9896
- },
10059
+ invokeGuardedCallbackWithCatch: invokeGuardedCallback,
9897
10060
 
9898
10061
  /**
9899
10062
  * During execution of guarded functions we will capture the first error which
@@ -9943,7 +10106,7 @@ var EventPluginHub = _dereq_(16);
9943
10106
 
9944
10107
  function runEventQueueInBatch(events) {
9945
10108
  EventPluginHub.enqueueEvents(events);
9946
- EventPluginHub.processEventQueue();
10109
+ EventPluginHub.processEventQueue(false);
9947
10110
  }
9948
10111
 
9949
10112
  var ReactEventEmitterMixin = {
@@ -9979,8 +10142,8 @@ module.exports = ReactEventEmitterMixin;
9979
10142
 
9980
10143
  'use strict';
9981
10144
 
9982
- var EventListener = _dereq_(147);
9983
- var ExecutionEnvironment = _dereq_(148);
10145
+ var EventListener = _dereq_(145);
10146
+ var ExecutionEnvironment = _dereq_(146);
9984
10147
  var PooledClass = _dereq_(25);
9985
10148
  var ReactInstanceHandles = _dereq_(67);
9986
10149
  var ReactMount = _dereq_(72);
@@ -9988,7 +10151,7 @@ var ReactUpdates = _dereq_(96);
9988
10151
 
9989
10152
  var assign = _dereq_(24);
9990
10153
  var getEventTarget = _dereq_(127);
9991
- var getUnboundedScrollPosition = _dereq_(159);
10154
+ var getUnboundedScrollPosition = _dereq_(157);
9992
10155
 
9993
10156
  var DOCUMENT_FRAGMENT_NODE_TYPE = 11;
9994
10157
 
@@ -10176,7 +10339,7 @@ var ReactEventListener = {
10176
10339
  };
10177
10340
 
10178
10341
  module.exports = ReactEventListener;
10179
- },{"127":127,"147":147,"148":148,"159":159,"24":24,"25":25,"67":67,"72":72,"96":96}],64:[function(_dereq_,module,exports){
10342
+ },{"127":127,"145":145,"146":146,"157":157,"24":24,"25":25,"67":67,"72":72,"96":96}],64:[function(_dereq_,module,exports){
10180
10343
  /**
10181
10344
  * Copyright 2015, Facebook, Inc.
10182
10345
  * All rights reserved.
@@ -10193,8 +10356,8 @@ module.exports = ReactEventListener;
10193
10356
  var ReactChildren = _dereq_(32);
10194
10357
  var ReactElement = _dereq_(57);
10195
10358
 
10196
- var emptyFunction = _dereq_(154);
10197
- var invariant = _dereq_(162);
10359
+ var emptyFunction = _dereq_(152);
10360
+ var invariant = _dereq_(160);
10198
10361
  var warning = _dereq_(172);
10199
10362
 
10200
10363
  /**
@@ -10241,7 +10404,7 @@ var ReactFragment = {
10241
10404
  };
10242
10405
 
10243
10406
  module.exports = ReactFragment;
10244
- },{"154":154,"162":162,"172":172,"32":32,"57":57}],65:[function(_dereq_,module,exports){
10407
+ },{"152":152,"160":160,"172":172,"32":32,"57":57}],65:[function(_dereq_,module,exports){
10245
10408
  /**
10246
10409
  * Copyright 2013-2015, Facebook, Inc.
10247
10410
  * All rights reserved.
@@ -10296,9 +10459,9 @@ module.exports = ReactInjection;
10296
10459
 
10297
10460
  var ReactDOMSelection = _dereq_(49);
10298
10461
 
10299
- var containsNode = _dereq_(151);
10300
- var focusNode = _dereq_(156);
10301
- var getActiveElement = _dereq_(157);
10462
+ var containsNode = _dereq_(149);
10463
+ var focusNode = _dereq_(154);
10464
+ var getActiveElement = _dereq_(155);
10302
10465
 
10303
10466
  function isInDocument(node) {
10304
10467
  return containsNode(document.documentElement, node);
@@ -10405,7 +10568,7 @@ var ReactInputSelection = {
10405
10568
  };
10406
10569
 
10407
10570
  module.exports = ReactInputSelection;
10408
- },{"151":151,"156":156,"157":157,"49":49}],67:[function(_dereq_,module,exports){
10571
+ },{"149":149,"154":154,"155":155,"49":49}],67:[function(_dereq_,module,exports){
10409
10572
  /**
10410
10573
  * Copyright 2013-2015, Facebook, Inc.
10411
10574
  * All rights reserved.
@@ -10422,7 +10585,7 @@ module.exports = ReactInputSelection;
10422
10585
 
10423
10586
  var ReactRootIndex = _dereq_(86);
10424
10587
 
10425
- var invariant = _dereq_(162);
10588
+ var invariant = _dereq_(160);
10426
10589
 
10427
10590
  var SEPARATOR = '.';
10428
10591
  var SEPARATOR_LENGTH = SEPARATOR.length;
@@ -10708,7 +10871,7 @@ var ReactInstanceHandles = {
10708
10871
  };
10709
10872
 
10710
10873
  module.exports = ReactInstanceHandles;
10711
- },{"162":162,"86":86}],68:[function(_dereq_,module,exports){
10874
+ },{"160":160,"86":86}],68:[function(_dereq_,module,exports){
10712
10875
  /**
10713
10876
  * Copyright 2013-2015, Facebook, Inc.
10714
10877
  * All rights reserved.
@@ -10780,7 +10943,7 @@ var ReactPropTypes = _dereq_(82);
10780
10943
  var ReactVersion = _dereq_(97);
10781
10944
 
10782
10945
  var assign = _dereq_(24);
10783
- var onlyChild = _dereq_(136);
10946
+ var onlyChild = _dereq_(134);
10784
10947
 
10785
10948
  var createElement = ReactElement.createElement;
10786
10949
  var createFactory = ReactElement.createFactory;
@@ -10831,7 +10994,7 @@ var React = {
10831
10994
  };
10832
10995
 
10833
10996
  module.exports = React;
10834
- },{"136":136,"24":24,"32":32,"33":33,"34":34,"43":43,"57":57,"58":58,"82":82,"97":97}],70:[function(_dereq_,module,exports){
10997
+ },{"134":134,"24":24,"32":32,"33":33,"34":34,"43":43,"57":57,"58":58,"82":82,"97":97}],70:[function(_dereq_,module,exports){
10835
10998
  /**
10836
10999
  * Copyright 2013-2015, Facebook, Inc.
10837
11000
  * All rights reserved.
@@ -10860,7 +11023,7 @@ module.exports = React;
10860
11023
  * var valueLink = new ReactLink(this.state.value, this._handleValueChange);
10861
11024
  * return <input valueLink={valueLink} />;
10862
11025
  * },
10863
- * this._handleValueChange: function(newValue) {
11026
+ * _handleValueChange: function(newValue) {
10864
11027
  * this.setState({value: newValue});
10865
11028
  * }
10866
11029
  * });
@@ -10976,13 +11139,13 @@ var ReactUpdateQueue = _dereq_(95);
10976
11139
  var ReactUpdates = _dereq_(96);
10977
11140
 
10978
11141
  var assign = _dereq_(24);
10979
- var emptyObject = _dereq_(155);
10980
- var containsNode = _dereq_(151);
11142
+ var emptyObject = _dereq_(153);
11143
+ var containsNode = _dereq_(149);
10981
11144
  var instantiateReactComponent = _dereq_(131);
10982
- var invariant = _dereq_(162);
10983
- var setInnerHTML = _dereq_(139);
10984
- var shouldUpdateReactComponent = _dereq_(142);
10985
- var validateDOMNesting = _dereq_(145);
11145
+ var invariant = _dereq_(160);
11146
+ var setInnerHTML = _dereq_(137);
11147
+ var shouldUpdateReactComponent = _dereq_(140);
11148
+ var validateDOMNesting = _dereq_(143);
10986
11149
  var warning = _dereq_(172);
10987
11150
 
10988
11151
  var ATTR_NAME = DOMProperty.ID_ATTRIBUTE_NAME;
@@ -11297,7 +11460,11 @@ function findFirstReactDOMImpl(node) {
11297
11460
  do {
11298
11461
  lastID = internalGetID(current);
11299
11462
  current = current.parentNode;
11300
- !(current != null) ? "development" !== 'production' ? invariant(false, 'findFirstReactDOMImpl(...): Unexpected detached subtree found when ' + 'traversing DOM from node `%s`.', nodeID) : invariant(false) : undefined;
11463
+ if (current == null) {
11464
+ // The passed-in node has been detached from the container it was
11465
+ // originally rendered into.
11466
+ return null;
11467
+ }
11301
11468
  } while (lastID !== reactRootID);
11302
11469
 
11303
11470
  if (current === containersByReactRootID[reactRootID]) {
@@ -11313,7 +11480,7 @@ function findFirstReactDOMImpl(node) {
11313
11480
  * here.
11314
11481
  */
11315
11482
  var TopLevelWrapper = function () {};
11316
- TopLevelWrapper.isReactClass = {};
11483
+ TopLevelWrapper.prototype.isReactComponent = {};
11317
11484
  if ("development" !== 'production') {
11318
11485
  TopLevelWrapper.displayName = 'TopLevelWrapper';
11319
11486
  }
@@ -11341,6 +11508,9 @@ TopLevelWrapper.prototype.render = function () {
11341
11508
  * Inside of `container`, the first element rendered is the "reactRoot".
11342
11509
  */
11343
11510
  var ReactMount = {
11511
+
11512
+ TopLevelWrapper: TopLevelWrapper,
11513
+
11344
11514
  /** Exposed for debugging purposes **/
11345
11515
  _instancesByReactRootID: instancesByReactRootID,
11346
11516
 
@@ -11786,7 +11956,7 @@ ReactPerf.measureMethods(ReactMount, 'ReactMount', {
11786
11956
  });
11787
11957
 
11788
11958
  module.exports = ReactMount;
11789
- },{"10":10,"131":131,"139":139,"142":142,"145":145,"151":151,"155":155,"162":162,"172":172,"24":24,"28":28,"39":39,"44":44,"57":57,"60":60,"67":67,"68":68,"71":71,"78":78,"84":84,"95":95,"96":96}],73:[function(_dereq_,module,exports){
11959
+ },{"10":10,"131":131,"137":137,"140":140,"143":143,"149":149,"153":153,"160":160,"172":172,"24":24,"28":28,"39":39,"44":44,"57":57,"60":60,"67":67,"68":68,"71":71,"78":78,"84":84,"95":95,"96":96}],73:[function(_dereq_,module,exports){
11790
11960
  /**
11791
11961
  * Copyright 2013-2015, Facebook, Inc.
11792
11962
  * All rights reserved.
@@ -12297,7 +12467,7 @@ module.exports = ReactMultiChild;
12297
12467
 
12298
12468
  'use strict';
12299
12469
 
12300
- var keyMirror = _dereq_(165);
12470
+ var keyMirror = _dereq_(164);
12301
12471
 
12302
12472
  /**
12303
12473
  * When a component's children are updated, a series of update configuration
@@ -12316,7 +12486,7 @@ var ReactMultiChildUpdateTypes = keyMirror({
12316
12486
  });
12317
12487
 
12318
12488
  module.exports = ReactMultiChildUpdateTypes;
12319
- },{"165":165}],75:[function(_dereq_,module,exports){
12489
+ },{"164":164}],75:[function(_dereq_,module,exports){
12320
12490
  /**
12321
12491
  * Copyright 2014-2015, Facebook, Inc.
12322
12492
  * All rights reserved.
@@ -12331,7 +12501,7 @@ module.exports = ReactMultiChildUpdateTypes;
12331
12501
  'use strict';
12332
12502
 
12333
12503
  var assign = _dereq_(24);
12334
- var invariant = _dereq_(162);
12504
+ var invariant = _dereq_(160);
12335
12505
 
12336
12506
  var autoGenerateWrapperClass = null;
12337
12507
  var genericComponentClass = null;
@@ -12411,7 +12581,7 @@ var ReactNativeComponent = {
12411
12581
  };
12412
12582
 
12413
12583
  module.exports = ReactNativeComponent;
12414
- },{"162":162,"24":24}],76:[function(_dereq_,module,exports){
12584
+ },{"160":160,"24":24}],76:[function(_dereq_,module,exports){
12415
12585
  /**
12416
12586
  * Copyright 2015, Facebook, Inc.
12417
12587
  * All rights reserved.
@@ -12544,7 +12714,7 @@ module.exports = ReactNoopUpdateQueue;
12544
12714
 
12545
12715
  'use strict';
12546
12716
 
12547
- var invariant = _dereq_(162);
12717
+ var invariant = _dereq_(160);
12548
12718
 
12549
12719
  /**
12550
12720
  * ReactOwners are capable of storing references to owned components.
@@ -12622,7 +12792,7 @@ var ReactOwner = {
12622
12792
  };
12623
12793
 
12624
12794
  module.exports = ReactOwner;
12625
- },{"162":162}],78:[function(_dereq_,module,exports){
12795
+ },{"160":160}],78:[function(_dereq_,module,exports){
12626
12796
  /**
12627
12797
  * Copyright 2013-2015, Facebook, Inc.
12628
12798
  * All rights reserved.
@@ -12734,8 +12904,8 @@ module.exports = ReactPerf;
12734
12904
  'use strict';
12735
12905
 
12736
12906
  var assign = _dereq_(24);
12737
- var emptyFunction = _dereq_(154);
12738
- var joinClasses = _dereq_(134);
12907
+ var emptyFunction = _dereq_(152);
12908
+ var joinClasses = _dereq_(163);
12739
12909
 
12740
12910
  /**
12741
12911
  * Creates a transfer strategy that will merge prop values using the supplied
@@ -12828,7 +12998,7 @@ var ReactPropTransferer = {
12828
12998
  };
12829
12999
 
12830
13000
  module.exports = ReactPropTransferer;
12831
- },{"134":134,"154":154,"24":24}],80:[function(_dereq_,module,exports){
13001
+ },{"152":152,"163":163,"24":24}],80:[function(_dereq_,module,exports){
12832
13002
  /**
12833
13003
  * Copyright 2013-2015, Facebook, Inc.
12834
13004
  * All rights reserved.
@@ -12867,7 +13037,7 @@ module.exports = ReactPropTypeLocationNames;
12867
13037
 
12868
13038
  'use strict';
12869
13039
 
12870
- var keyMirror = _dereq_(165);
13040
+ var keyMirror = _dereq_(164);
12871
13041
 
12872
13042
  var ReactPropTypeLocations = keyMirror({
12873
13043
  prop: null,
@@ -12876,7 +13046,7 @@ var ReactPropTypeLocations = keyMirror({
12876
13046
  });
12877
13047
 
12878
13048
  module.exports = ReactPropTypeLocations;
12879
- },{"165":165}],82:[function(_dereq_,module,exports){
13049
+ },{"164":164}],82:[function(_dereq_,module,exports){
12880
13050
  /**
12881
13051
  * Copyright 2013-2015, Facebook, Inc.
12882
13052
  * All rights reserved.
@@ -12893,7 +13063,7 @@ module.exports = ReactPropTypeLocations;
12893
13063
  var ReactElement = _dereq_(57);
12894
13064
  var ReactPropTypeLocationNames = _dereq_(80);
12895
13065
 
12896
- var emptyFunction = _dereq_(154);
13066
+ var emptyFunction = _dereq_(152);
12897
13067
  var getIteratorFn = _dereq_(128);
12898
13068
 
12899
13069
  /**
@@ -13233,7 +13403,7 @@ function getClassName(propValue) {
13233
13403
  }
13234
13404
 
13235
13405
  module.exports = ReactPropTypes;
13236
- },{"128":128,"154":154,"57":57,"80":80}],83:[function(_dereq_,module,exports){
13406
+ },{"128":128,"152":152,"57":57,"80":80}],83:[function(_dereq_,module,exports){
13237
13407
  /**
13238
13408
  * Copyright 2013-2015, Facebook, Inc.
13239
13409
  * All rights reserved.
@@ -13555,8 +13725,7 @@ ReactRef.shouldUpdateRefs = function (prevElement, nextElement) {
13555
13725
  var prevEmpty = prevElement === null || prevElement === false;
13556
13726
  var nextEmpty = nextElement === null || nextElement === false;
13557
13727
 
13558
- return (
13559
- // This has a few false positives w/r/t empty components.
13728
+ return(
13560
13729
  // This has a few false positives w/r/t empty components.
13561
13730
  prevEmpty || nextEmpty || nextElement._owner !== prevElement._owner || nextElement.ref !== prevElement.ref
13562
13731
  );
@@ -13649,9 +13818,9 @@ var ReactServerBatchingStrategy = _dereq_(87);
13649
13818
  var ReactServerRenderingTransaction = _dereq_(89);
13650
13819
  var ReactUpdates = _dereq_(96);
13651
13820
 
13652
- var emptyObject = _dereq_(155);
13821
+ var emptyObject = _dereq_(153);
13653
13822
  var instantiateReactComponent = _dereq_(131);
13654
- var invariant = _dereq_(162);
13823
+ var invariant = _dereq_(160);
13655
13824
 
13656
13825
  /**
13657
13826
  * @param {ReactElement} element
@@ -13711,7 +13880,7 @@ module.exports = {
13711
13880
  renderToString: renderToString,
13712
13881
  renderToStaticMarkup: renderToStaticMarkup
13713
13882
  };
13714
- },{"131":131,"155":155,"162":162,"53":53,"57":57,"67":67,"71":71,"87":87,"89":89,"96":96}],89:[function(_dereq_,module,exports){
13883
+ },{"131":131,"153":153,"160":160,"53":53,"57":57,"67":67,"71":71,"87":87,"89":89,"96":96}],89:[function(_dereq_,module,exports){
13715
13884
  /**
13716
13885
  * Copyright 2014-2015, Facebook, Inc.
13717
13886
  * All rights reserved.
@@ -13731,7 +13900,7 @@ var CallbackQueue = _dereq_(6);
13731
13900
  var Transaction = _dereq_(113);
13732
13901
 
13733
13902
  var assign = _dereq_(24);
13734
- var emptyFunction = _dereq_(154);
13903
+ var emptyFunction = _dereq_(152);
13735
13904
 
13736
13905
  /**
13737
13906
  * Provides a `CallbackQueue` queue for collecting `onDOMReady` callbacks
@@ -13799,7 +13968,7 @@ assign(ReactServerRenderingTransaction.prototype, Transaction.Mixin, Mixin);
13799
13968
  PooledClass.addPoolingTo(ReactServerRenderingTransaction);
13800
13969
 
13801
13970
  module.exports = ReactServerRenderingTransaction;
13802
- },{"113":113,"154":154,"24":24,"25":25,"6":6}],90:[function(_dereq_,module,exports){
13971
+ },{"113":113,"152":152,"24":24,"25":25,"6":6}],90:[function(_dereq_,module,exports){
13803
13972
  /**
13804
13973
  * Copyright 2013-2015, Facebook, Inc.
13805
13974
  * All rights reserved.
@@ -13933,9 +14102,9 @@ var ReactUpdates = _dereq_(96);
13933
14102
  var SyntheticEvent = _dereq_(105);
13934
14103
 
13935
14104
  var assign = _dereq_(24);
13936
- var emptyObject = _dereq_(155);
14105
+ var emptyObject = _dereq_(153);
13937
14106
  var findDOMNode = _dereq_(121);
13938
- var invariant = _dereq_(162);
14107
+ var invariant = _dereq_(160);
13939
14108
 
13940
14109
  var topLevelTypes = EventConstants.topLevelTypes;
13941
14110
 
@@ -13951,6 +14120,7 @@ function findAllInRenderedTreeInternal(inst, test) {
13951
14120
  }
13952
14121
  var publicInst = inst.getPublicInstance();
13953
14122
  var ret = test(publicInst) ? [publicInst] : [];
14123
+ var currentElement = inst._currentElement;
13954
14124
  if (ReactTestUtils.isDOMComponent(publicInst)) {
13955
14125
  var renderedChildren = inst._renderedChildren;
13956
14126
  var key;
@@ -13960,7 +14130,7 @@ function findAllInRenderedTreeInternal(inst, test) {
13960
14130
  }
13961
14131
  ret = ret.concat(findAllInRenderedTreeInternal(renderedChildren[key], test));
13962
14132
  }
13963
- } else if (ReactTestUtils.isCompositeComponent(publicInst)) {
14133
+ } else if (ReactElement.isValidElement(currentElement) && typeof currentElement.type === 'function') {
13964
14134
  ret = ret.concat(findAllInRenderedTreeInternal(inst._renderedComponent, test));
13965
14135
  }
13966
14136
  return ret;
@@ -14006,7 +14176,7 @@ var ReactTestUtils = {
14006
14176
  // this returns when we have DOM nodes as refs directly
14007
14177
  return false;
14008
14178
  }
14009
- return typeof inst.render === 'function' && typeof inst.setState === 'function';
14179
+ return inst != null && typeof inst.render === 'function' && typeof inst.setState === 'function';
14010
14180
  },
14011
14181
 
14012
14182
  isCompositeComponentWithType: function (inst, type) {
@@ -14057,11 +14227,16 @@ var ReactTestUtils = {
14057
14227
  * components with the class name matching `className`.
14058
14228
  * @return {array} an array of all the matches.
14059
14229
  */
14060
- scryRenderedDOMComponentsWithClass: function (root, className) {
14230
+ scryRenderedDOMComponentsWithClass: function (root, classNames) {
14231
+ if (!Array.isArray(classNames)) {
14232
+ classNames = classNames.split(/\s+/);
14233
+ }
14061
14234
  return ReactTestUtils.findAllInRenderedTree(root, function (inst) {
14062
14235
  if (ReactTestUtils.isDOMComponent(inst)) {
14063
- var instClassName = ReactDOM.findDOMNode(inst).className;
14064
- return instClassName && ('' + instClassName).split(/\s+/).indexOf(className) !== -1;
14236
+ var classList = ReactDOM.findDOMNode(inst).className.split(/\s+/);
14237
+ return classNames.every(function (className) {
14238
+ return classList.indexOf(className) !== -1;
14239
+ });
14065
14240
  }
14066
14241
  return false;
14067
14242
  });
@@ -14294,7 +14469,7 @@ function makeSimulator(eventType) {
14294
14469
 
14295
14470
  ReactUpdates.batchedUpdates(function () {
14296
14471
  EventPluginHub.enqueueEvents(event);
14297
- EventPluginHub.processEventQueue();
14472
+ EventPluginHub.processEventQueue(true);
14298
14473
  });
14299
14474
  };
14300
14475
  }
@@ -14366,7 +14541,7 @@ Object.keys(topLevelTypes).forEach(function (eventType) {
14366
14541
  });
14367
14542
 
14368
14543
  module.exports = ReactTestUtils;
14369
- },{"105":105,"121":121,"15":15,"155":155,"16":16,"162":162,"19":19,"24":24,"26":26,"28":28,"38":38,"40":40,"57":57,"67":67,"68":68,"72":72,"96":96}],92:[function(_dereq_,module,exports){
14544
+ },{"105":105,"121":121,"15":15,"153":153,"16":16,"160":160,"19":19,"24":24,"26":26,"28":28,"38":38,"40":40,"57":57,"67":67,"68":68,"72":72,"96":96}],92:[function(_dereq_,module,exports){
14370
14545
  /**
14371
14546
  * Copyright 2013-2015, Facebook, Inc.
14372
14547
  * All rights reserved.
@@ -14479,7 +14654,7 @@ module.exports = ReactTransitionChildMapping;
14479
14654
 
14480
14655
  'use strict';
14481
14656
 
14482
- var ExecutionEnvironment = _dereq_(148);
14657
+ var ExecutionEnvironment = _dereq_(146);
14483
14658
 
14484
14659
  /**
14485
14660
  * EVENT_NAME_MAP is used to determine which event fired when a
@@ -14575,7 +14750,7 @@ var ReactTransitionEvents = {
14575
14750
  };
14576
14751
 
14577
14752
  module.exports = ReactTransitionEvents;
14578
- },{"148":148}],94:[function(_dereq_,module,exports){
14753
+ },{"146":146}],94:[function(_dereq_,module,exports){
14579
14754
  /**
14580
14755
  * Copyright 2013-2015, Facebook, Inc.
14581
14756
  * All rights reserved.
@@ -14593,7 +14768,7 @@ var React = _dereq_(26);
14593
14768
  var ReactTransitionChildMapping = _dereq_(92);
14594
14769
 
14595
14770
  var assign = _dereq_(24);
14596
- var emptyFunction = _dereq_(154);
14771
+ var emptyFunction = _dereq_(152);
14597
14772
 
14598
14773
  var ReactTransitionGroup = React.createClass({
14599
14774
  displayName: 'ReactTransitionGroup',
@@ -14781,7 +14956,7 @@ var ReactTransitionGroup = React.createClass({
14781
14956
  });
14782
14957
 
14783
14958
  module.exports = ReactTransitionGroup;
14784
- },{"154":154,"24":24,"26":26,"92":92}],95:[function(_dereq_,module,exports){
14959
+ },{"152":152,"24":24,"26":26,"92":92}],95:[function(_dereq_,module,exports){
14785
14960
  /**
14786
14961
  * Copyright 2015, Facebook, Inc.
14787
14962
  * All rights reserved.
@@ -14801,7 +14976,7 @@ var ReactInstanceMap = _dereq_(68);
14801
14976
  var ReactUpdates = _dereq_(96);
14802
14977
 
14803
14978
  var assign = _dereq_(24);
14804
- var invariant = _dereq_(162);
14979
+ var invariant = _dereq_(160);
14805
14980
  var warning = _dereq_(172);
14806
14981
 
14807
14982
  function enqueueUpdate(internalInstance) {
@@ -15039,7 +15214,7 @@ var ReactUpdateQueue = {
15039
15214
  };
15040
15215
 
15041
15216
  module.exports = ReactUpdateQueue;
15042
- },{"162":162,"172":172,"24":24,"39":39,"57":57,"68":68,"96":96}],96:[function(_dereq_,module,exports){
15217
+ },{"160":160,"172":172,"24":24,"39":39,"57":57,"68":68,"96":96}],96:[function(_dereq_,module,exports){
15043
15218
  /**
15044
15219
  * Copyright 2013-2015, Facebook, Inc.
15045
15220
  * All rights reserved.
@@ -15060,7 +15235,7 @@ var ReactReconciler = _dereq_(84);
15060
15235
  var Transaction = _dereq_(113);
15061
15236
 
15062
15237
  var assign = _dereq_(24);
15063
- var invariant = _dereq_(162);
15238
+ var invariant = _dereq_(160);
15064
15239
 
15065
15240
  var dirtyComponents = [];
15066
15241
  var asapCallbackQueue = CallbackQueue.getPooled();
@@ -15263,7 +15438,7 @@ var ReactUpdates = {
15263
15438
  };
15264
15439
 
15265
15440
  module.exports = ReactUpdates;
15266
- },{"113":113,"162":162,"24":24,"25":25,"6":6,"78":78,"84":84}],97:[function(_dereq_,module,exports){
15441
+ },{"113":113,"160":160,"24":24,"25":25,"6":6,"78":78,"84":84}],97:[function(_dereq_,module,exports){
15267
15442
  /**
15268
15443
  * Copyright 2013-2015, Facebook, Inc.
15269
15444
  * All rights reserved.
@@ -15277,7 +15452,7 @@ module.exports = ReactUpdates;
15277
15452
 
15278
15453
  'use strict';
15279
15454
 
15280
- module.exports = '0.14.0-rc1';
15455
+ module.exports = '0.14.0';
15281
15456
  },{}],98:[function(_dereq_,module,exports){
15282
15457
  /**
15283
15458
  * Copyright 2013-2015, Facebook, Inc.
@@ -15422,13 +15597,13 @@ module.exports = SVGDOMPropertyConfig;
15422
15597
 
15423
15598
  var EventConstants = _dereq_(15);
15424
15599
  var EventPropagators = _dereq_(19);
15425
- var ExecutionEnvironment = _dereq_(148);
15600
+ var ExecutionEnvironment = _dereq_(146);
15426
15601
  var ReactInputSelection = _dereq_(66);
15427
15602
  var SyntheticEvent = _dereq_(105);
15428
15603
 
15429
- var getActiveElement = _dereq_(157);
15604
+ var getActiveElement = _dereq_(155);
15430
15605
  var isTextInputElement = _dereq_(133);
15431
- var keyOf = _dereq_(166);
15606
+ var keyOf = _dereq_(165);
15432
15607
  var shallowEqual = _dereq_(170);
15433
15608
 
15434
15609
  var topLevelTypes = EventConstants.topLevelTypes;
@@ -15608,7 +15783,7 @@ var SelectEventPlugin = {
15608
15783
  };
15609
15784
 
15610
15785
  module.exports = SelectEventPlugin;
15611
- },{"105":105,"133":133,"148":148,"15":15,"157":157,"166":166,"170":170,"19":19,"66":66}],100:[function(_dereq_,module,exports){
15786
+ },{"105":105,"133":133,"146":146,"15":15,"155":155,"165":165,"170":170,"19":19,"66":66}],100:[function(_dereq_,module,exports){
15612
15787
  /**
15613
15788
  * Copyright 2013-2015, Facebook, Inc.
15614
15789
  * All rights reserved.
@@ -15653,7 +15828,7 @@ module.exports = ServerReactRootIndex;
15653
15828
  'use strict';
15654
15829
 
15655
15830
  var EventConstants = _dereq_(15);
15656
- var EventListener = _dereq_(147);
15831
+ var EventListener = _dereq_(145);
15657
15832
  var EventPropagators = _dereq_(19);
15658
15833
  var ReactMount = _dereq_(72);
15659
15834
  var SyntheticClipboardEvent = _dereq_(102);
@@ -15666,10 +15841,10 @@ var SyntheticTouchEvent = _dereq_(110);
15666
15841
  var SyntheticUIEvent = _dereq_(111);
15667
15842
  var SyntheticWheelEvent = _dereq_(112);
15668
15843
 
15669
- var emptyFunction = _dereq_(154);
15844
+ var emptyFunction = _dereq_(152);
15670
15845
  var getEventCharCode = _dereq_(124);
15671
- var invariant = _dereq_(162);
15672
- var keyOf = _dereq_(166);
15846
+ var invariant = _dereq_(160);
15847
+ var keyOf = _dereq_(165);
15673
15848
 
15674
15849
  var topLevelTypes = EventConstants.topLevelTypes;
15675
15850
 
@@ -16226,7 +16401,7 @@ var SimpleEventPlugin = {
16226
16401
  };
16227
16402
 
16228
16403
  module.exports = SimpleEventPlugin;
16229
- },{"102":102,"104":104,"105":105,"106":106,"108":108,"109":109,"110":110,"111":111,"112":112,"124":124,"147":147,"15":15,"154":154,"162":162,"166":166,"19":19,"72":72}],102:[function(_dereq_,module,exports){
16404
+ },{"102":102,"104":104,"105":105,"106":106,"108":108,"109":109,"110":110,"111":111,"112":112,"124":124,"145":145,"15":15,"152":152,"160":160,"165":165,"19":19,"72":72}],102:[function(_dereq_,module,exports){
16230
16405
  /**
16231
16406
  * Copyright 2013-2015, Facebook, Inc.
16232
16407
  * All rights reserved.
@@ -16360,7 +16535,7 @@ module.exports = SyntheticDragEvent;
16360
16535
  var PooledClass = _dereq_(25);
16361
16536
 
16362
16537
  var assign = _dereq_(24);
16363
- var emptyFunction = _dereq_(154);
16538
+ var emptyFunction = _dereq_(152);
16364
16539
  var warning = _dereq_(172);
16365
16540
 
16366
16541
  /**
@@ -16368,7 +16543,6 @@ var warning = _dereq_(172);
16368
16543
  * @see http://www.w3.org/TR/DOM-Level-3-Events/
16369
16544
  */
16370
16545
  var EventInterface = {
16371
- path: null,
16372
16546
  type: null,
16373
16547
  // currentTarget is set when dispatching; no use in copying it here
16374
16548
  currentTarget: emptyFunction.thatReturnsNull,
@@ -16521,7 +16695,7 @@ SyntheticEvent.augmentClass = function (Class, Interface) {
16521
16695
  PooledClass.addPoolingTo(SyntheticEvent, PooledClass.fourArgumentPooler);
16522
16696
 
16523
16697
  module.exports = SyntheticEvent;
16524
- },{"154":154,"172":172,"24":24,"25":25}],106:[function(_dereq_,module,exports){
16698
+ },{"152":152,"172":172,"24":24,"25":25}],106:[function(_dereq_,module,exports){
16525
16699
  /**
16526
16700
  * Copyright 2013-2015, Facebook, Inc.
16527
16701
  * All rights reserved.
@@ -16936,7 +17110,7 @@ module.exports = SyntheticWheelEvent;
16936
17110
 
16937
17111
  'use strict';
16938
17112
 
16939
- var invariant = _dereq_(162);
17113
+ var invariant = _dereq_(160);
16940
17114
 
16941
17115
  /**
16942
17116
  * `Transaction` creates a black box that is able to wrap any method such that
@@ -17154,7 +17328,7 @@ var Transaction = {
17154
17328
  };
17155
17329
 
17156
17330
  module.exports = Transaction;
17157
- },{"162":162}],114:[function(_dereq_,module,exports){
17331
+ },{"160":160}],114:[function(_dereq_,module,exports){
17158
17332
  /**
17159
17333
  * Copyright 2013-2015, Facebook, Inc.
17160
17334
  * All rights reserved.
@@ -17196,7 +17370,7 @@ module.exports = ViewportMetrics;
17196
17370
 
17197
17371
  'use strict';
17198
17372
 
17199
- var invariant = _dereq_(162);
17373
+ var invariant = _dereq_(160);
17200
17374
 
17201
17375
  /**
17202
17376
  *
@@ -17242,7 +17416,7 @@ function accumulateInto(current, next) {
17242
17416
  }
17243
17417
 
17244
17418
  module.exports = accumulateInto;
17245
- },{"162":162}],116:[function(_dereq_,module,exports){
17419
+ },{"160":160}],116:[function(_dereq_,module,exports){
17246
17420
  /**
17247
17421
  * Copyright 2013-2015, Facebook, Inc.
17248
17422
  * All rights reserved.
@@ -17303,7 +17477,7 @@ module.exports = adler32;
17303
17477
  var ReactElement = _dereq_(57);
17304
17478
  var ReactPropTransferer = _dereq_(79);
17305
17479
 
17306
- var keyOf = _dereq_(166);
17480
+ var keyOf = _dereq_(165);
17307
17481
  var warning = _dereq_(172);
17308
17482
 
17309
17483
  var CHILDREN_PROP = keyOf({ children: null });
@@ -17340,7 +17514,7 @@ function cloneWithProps(child, props) {
17340
17514
  }
17341
17515
 
17342
17516
  module.exports = cloneWithProps;
17343
- },{"166":166,"172":172,"57":57,"79":79}],118:[function(_dereq_,module,exports){
17517
+ },{"165":165,"172":172,"57":57,"79":79}],118:[function(_dereq_,module,exports){
17344
17518
  /**
17345
17519
  * Copyright 2013-2015, Facebook, Inc.
17346
17520
  * All rights reserved.
@@ -17503,7 +17677,7 @@ var ReactCurrentOwner = _dereq_(39);
17503
17677
  var ReactInstanceMap = _dereq_(68);
17504
17678
  var ReactMount = _dereq_(72);
17505
17679
 
17506
- var invariant = _dereq_(162);
17680
+ var invariant = _dereq_(160);
17507
17681
  var warning = _dereq_(172);
17508
17682
 
17509
17683
  /**
@@ -17534,7 +17708,7 @@ function findDOMNode(componentOrElement) {
17534
17708
  }
17535
17709
 
17536
17710
  module.exports = findDOMNode;
17537
- },{"162":162,"172":172,"39":39,"68":68,"72":72}],122:[function(_dereq_,module,exports){
17711
+ },{"160":160,"172":172,"39":39,"68":68,"72":72}],122:[function(_dereq_,module,exports){
17538
17712
  /**
17539
17713
  * Copyright 2013-2015, Facebook, Inc.
17540
17714
  * All rights reserved.
@@ -17548,7 +17722,7 @@ module.exports = findDOMNode;
17548
17722
 
17549
17723
  'use strict';
17550
17724
 
17551
- var traverseAllChildren = _dereq_(143);
17725
+ var traverseAllChildren = _dereq_(141);
17552
17726
  var warning = _dereq_(172);
17553
17727
 
17554
17728
  /**
@@ -17583,7 +17757,7 @@ function flattenChildren(children) {
17583
17757
  }
17584
17758
 
17585
17759
  module.exports = flattenChildren;
17586
- },{"143":143,"172":172}],123:[function(_dereq_,module,exports){
17760
+ },{"141":141,"172":172}],123:[function(_dereq_,module,exports){
17587
17761
  /**
17588
17762
  * Copyright 2013-2015, Facebook, Inc.
17589
17763
  * All rights reserved.
@@ -17972,7 +18146,7 @@ module.exports = getNodeForCharacterOffset;
17972
18146
 
17973
18147
  'use strict';
17974
18148
 
17975
- var ExecutionEnvironment = _dereq_(148);
18149
+ var ExecutionEnvironment = _dereq_(146);
17976
18150
 
17977
18151
  var contentKey = null;
17978
18152
 
@@ -17992,7 +18166,7 @@ function getTextContentAccessor() {
17992
18166
  }
17993
18167
 
17994
18168
  module.exports = getTextContentAccessor;
17995
- },{"148":148}],131:[function(_dereq_,module,exports){
18169
+ },{"146":146}],131:[function(_dereq_,module,exports){
17996
18170
  /**
17997
18171
  * Copyright 2013-2015, Facebook, Inc.
17998
18172
  * All rights reserved.
@@ -18012,7 +18186,7 @@ var ReactEmptyComponent = _dereq_(59);
18012
18186
  var ReactNativeComponent = _dereq_(75);
18013
18187
 
18014
18188
  var assign = _dereq_(24);
18015
- var invariant = _dereq_(162);
18189
+ var invariant = _dereq_(160);
18016
18190
  var warning = _dereq_(172);
18017
18191
 
18018
18192
  // To avoid a cyclic dependency, we create the final class in this module
@@ -18105,7 +18279,7 @@ function instantiateReactComponent(node) {
18105
18279
  }
18106
18280
 
18107
18281
  module.exports = instantiateReactComponent;
18108
- },{"162":162,"172":172,"24":24,"38":38,"59":59,"75":75}],132:[function(_dereq_,module,exports){
18282
+ },{"160":160,"172":172,"24":24,"38":38,"59":59,"75":75}],132:[function(_dereq_,module,exports){
18109
18283
  /**
18110
18284
  * Copyright 2013-2015, Facebook, Inc.
18111
18285
  * All rights reserved.
@@ -18119,7 +18293,7 @@ module.exports = instantiateReactComponent;
18119
18293
 
18120
18294
  'use strict';
18121
18295
 
18122
- var ExecutionEnvironment = _dereq_(148);
18296
+ var ExecutionEnvironment = _dereq_(146);
18123
18297
 
18124
18298
  var useHasFeature;
18125
18299
  if (ExecutionEnvironment.canUseDOM) {
@@ -18166,7 +18340,7 @@ function isEventSupported(eventNameSuffix, capture) {
18166
18340
  }
18167
18341
 
18168
18342
  module.exports = isEventSupported;
18169
- },{"148":148}],133:[function(_dereq_,module,exports){
18343
+ },{"146":146}],133:[function(_dereq_,module,exports){
18170
18344
  /**
18171
18345
  * Copyright 2013-2015, Facebook, Inc.
18172
18346
  * All rights reserved.
@@ -18208,78 +18382,6 @@ function isTextInputElement(elem) {
18208
18382
 
18209
18383
  module.exports = isTextInputElement;
18210
18384
  },{}],134:[function(_dereq_,module,exports){
18211
- /**
18212
- * Copyright 2013-2015, Facebook, Inc.
18213
- * All rights reserved.
18214
- *
18215
- * This source code is licensed under the BSD-style license found in the
18216
- * LICENSE file in the root directory of this source tree. An additional grant
18217
- * of patent rights can be found in the PATENTS file in the same directory.
18218
- *
18219
- * @providesModule joinClasses
18220
- * @typechecks static-only
18221
- */
18222
-
18223
- 'use strict';
18224
-
18225
- /**
18226
- * Combines multiple className strings into one.
18227
- * http://jsperf.com/joinclasses-args-vs-array
18228
- *
18229
- * @param {...?string} className
18230
- * @return {string}
18231
- */
18232
- function joinClasses(className /*, ... */) {
18233
- if (!className) {
18234
- className = '';
18235
- }
18236
- var nextClass;
18237
- var argLength = arguments.length;
18238
- if (argLength > 1) {
18239
- for (var ii = 1; ii < argLength; ii++) {
18240
- nextClass = arguments[ii];
18241
- if (nextClass) {
18242
- className = (className ? className + ' ' : '') + nextClass;
18243
- }
18244
- }
18245
- }
18246
- return className;
18247
- }
18248
-
18249
- module.exports = joinClasses;
18250
- },{}],135:[function(_dereq_,module,exports){
18251
- /**
18252
- * Copyright 2013-2015, Facebook, Inc.
18253
- * All rights reserved.
18254
- *
18255
- * This source code is licensed under the BSD-style license found in the
18256
- * LICENSE file in the root directory of this source tree. An additional grant
18257
- * of patent rights can be found in the PATENTS file in the same directory.
18258
- *
18259
- * @providesModule memoizeStringOnly
18260
- * @typechecks static-only
18261
- */
18262
-
18263
- 'use strict';
18264
-
18265
- /**
18266
- * Memoizes the return value of a function that accepts one string argument.
18267
- *
18268
- * @param {function} callback
18269
- * @return {function}
18270
- */
18271
- function memoizeStringOnly(callback) {
18272
- var cache = {};
18273
- return function (string) {
18274
- if (!cache.hasOwnProperty(string)) {
18275
- cache[string] = callback.call(this, string);
18276
- }
18277
- return cache[string];
18278
- };
18279
- }
18280
-
18281
- module.exports = memoizeStringOnly;
18282
- },{}],136:[function(_dereq_,module,exports){
18283
18385
  /**
18284
18386
  * Copyright 2013-2015, Facebook, Inc.
18285
18387
  * All rights reserved.
@@ -18294,7 +18396,7 @@ module.exports = memoizeStringOnly;
18294
18396
 
18295
18397
  var ReactElement = _dereq_(57);
18296
18398
 
18297
- var invariant = _dereq_(162);
18399
+ var invariant = _dereq_(160);
18298
18400
 
18299
18401
  /**
18300
18402
  * Returns the first child in a collection of children and verifies that there
@@ -18313,7 +18415,7 @@ function onlyChild(children) {
18313
18415
  }
18314
18416
 
18315
18417
  module.exports = onlyChild;
18316
- },{"162":162,"57":57}],137:[function(_dereq_,module,exports){
18418
+ },{"160":160,"57":57}],135:[function(_dereq_,module,exports){
18317
18419
  /**
18318
18420
  * Copyright 2013-2015, Facebook, Inc.
18319
18421
  * All rights reserved.
@@ -18340,7 +18442,7 @@ function quoteAttributeValueForBrowser(value) {
18340
18442
  }
18341
18443
 
18342
18444
  module.exports = quoteAttributeValueForBrowser;
18343
- },{"120":120}],138:[function(_dereq_,module,exports){
18445
+ },{"120":120}],136:[function(_dereq_,module,exports){
18344
18446
  /**
18345
18447
  * Copyright 2013-2015, Facebook, Inc.
18346
18448
  * All rights reserved.
@@ -18357,7 +18459,7 @@ module.exports = quoteAttributeValueForBrowser;
18357
18459
  var ReactMount = _dereq_(72);
18358
18460
 
18359
18461
  module.exports = ReactMount.renderSubtreeIntoContainer;
18360
- },{"72":72}],139:[function(_dereq_,module,exports){
18462
+ },{"72":72}],137:[function(_dereq_,module,exports){
18361
18463
  /**
18362
18464
  * Copyright 2013-2015, Facebook, Inc.
18363
18465
  * All rights reserved.
@@ -18373,7 +18475,7 @@ module.exports = ReactMount.renderSubtreeIntoContainer;
18373
18475
 
18374
18476
  'use strict';
18375
18477
 
18376
- var ExecutionEnvironment = _dereq_(148);
18478
+ var ExecutionEnvironment = _dereq_(146);
18377
18479
 
18378
18480
  var WHITESPACE_TEST = /^[ \r\n\t\f]/;
18379
18481
  var NONVISIBLE_TEST = /<(!--|link|noscript|meta|script|style)[ \r\n\t\f\/>]/;
@@ -18448,7 +18550,7 @@ if (ExecutionEnvironment.canUseDOM) {
18448
18550
  }
18449
18551
 
18450
18552
  module.exports = setInnerHTML;
18451
- },{"148":148}],140:[function(_dereq_,module,exports){
18553
+ },{"146":146}],138:[function(_dereq_,module,exports){
18452
18554
  /**
18453
18555
  * Copyright 2013-2015, Facebook, Inc.
18454
18556
  * All rights reserved.
@@ -18462,9 +18564,9 @@ module.exports = setInnerHTML;
18462
18564
 
18463
18565
  'use strict';
18464
18566
 
18465
- var ExecutionEnvironment = _dereq_(148);
18567
+ var ExecutionEnvironment = _dereq_(146);
18466
18568
  var escapeTextContentForBrowser = _dereq_(120);
18467
- var setInnerHTML = _dereq_(139);
18569
+ var setInnerHTML = _dereq_(137);
18468
18570
 
18469
18571
  /**
18470
18572
  * Set the textContent property of a node, ensuring that whitespace is preserved
@@ -18489,7 +18591,7 @@ if (ExecutionEnvironment.canUseDOM) {
18489
18591
  }
18490
18592
 
18491
18593
  module.exports = setTextContent;
18492
- },{"120":120,"139":139,"148":148}],141:[function(_dereq_,module,exports){
18594
+ },{"120":120,"137":137,"146":146}],139:[function(_dereq_,module,exports){
18493
18595
  /**
18494
18596
  * Copyright 2013-2015, Facebook, Inc.
18495
18597
  * All rights reserved.
@@ -18514,7 +18616,7 @@ function shallowCompare(instance, nextProps, nextState) {
18514
18616
  }
18515
18617
 
18516
18618
  module.exports = shallowCompare;
18517
- },{"170":170}],142:[function(_dereq_,module,exports){
18619
+ },{"170":170}],140:[function(_dereq_,module,exports){
18518
18620
  /**
18519
18621
  * Copyright 2013-2015, Facebook, Inc.
18520
18622
  * All rights reserved.
@@ -18558,7 +18660,7 @@ function shouldUpdateReactComponent(prevElement, nextElement) {
18558
18660
  }
18559
18661
 
18560
18662
  module.exports = shouldUpdateReactComponent;
18561
- },{}],143:[function(_dereq_,module,exports){
18663
+ },{}],141:[function(_dereq_,module,exports){
18562
18664
  /**
18563
18665
  * Copyright 2013-2015, Facebook, Inc.
18564
18666
  * All rights reserved.
@@ -18577,7 +18679,7 @@ var ReactElement = _dereq_(57);
18577
18679
  var ReactInstanceHandles = _dereq_(67);
18578
18680
 
18579
18681
  var getIteratorFn = _dereq_(128);
18580
- var invariant = _dereq_(162);
18682
+ var invariant = _dereq_(160);
18581
18683
  var warning = _dereq_(172);
18582
18684
 
18583
18685
  var SEPARATOR = ReactInstanceHandles.SEPARATOR;
@@ -18704,14 +18806,19 @@ function traverseAllChildrenImpl(children, nameSoFar, callback, traverseContext)
18704
18806
  } else if (type === 'object') {
18705
18807
  var addendum = '';
18706
18808
  if ("development" !== 'production') {
18809
+ addendum = ' If you meant to render a collection of children, use an array ' + 'instead or wrap the object using createFragment(object) from the ' + 'React add-ons.';
18810
+ if (children._isReactElement) {
18811
+ addendum = ' It looks like you\'re using an element created by a different ' + 'version of React. Make sure to use only one copy of React.';
18812
+ }
18707
18813
  if (ReactCurrentOwner.current) {
18708
18814
  var name = ReactCurrentOwner.current.getName();
18709
18815
  if (name) {
18710
- addendum = ' Check the render method of `' + name + '`.';
18816
+ addendum += ' Check the render method of `' + name + '`.';
18711
18817
  }
18712
18818
  }
18713
18819
  }
18714
- !false ? "development" !== 'production' ? invariant(false, 'Objects are not valid as a React child (found object with keys ' + '{%s}). If you meant to render a collection of children, use an ' + 'array instead or wrap the object using ' + 'React.addons.createFragment(object).%s', Object.keys(children).join(', '), addendum) : invariant(false) : undefined;
18820
+ var childrenString = String(children);
18821
+ !false ? "development" !== 'production' ? invariant(false, 'Objects are not valid as a React child (found: %s).%s', childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString, addendum) : invariant(false) : undefined;
18715
18822
  }
18716
18823
  }
18717
18824
 
@@ -18743,7 +18850,7 @@ function traverseAllChildren(children, callback, traverseContext) {
18743
18850
  }
18744
18851
 
18745
18852
  module.exports = traverseAllChildren;
18746
- },{"128":128,"162":162,"172":172,"39":39,"57":57,"67":67}],144:[function(_dereq_,module,exports){
18853
+ },{"128":128,"160":160,"172":172,"39":39,"57":57,"67":67}],142:[function(_dereq_,module,exports){
18747
18854
  /**
18748
18855
  * Copyright 2013-2015, Facebook, Inc.
18749
18856
  * All rights reserved.
@@ -18760,8 +18867,8 @@ module.exports = traverseAllChildren;
18760
18867
  'use strict';
18761
18868
 
18762
18869
  var assign = _dereq_(24);
18763
- var keyOf = _dereq_(166);
18764
- var invariant = _dereq_(162);
18870
+ var keyOf = _dereq_(165);
18871
+ var invariant = _dereq_(160);
18765
18872
  var hasOwnProperty = ({}).hasOwnProperty;
18766
18873
 
18767
18874
  function shallowCopy(x) {
@@ -18851,7 +18958,7 @@ function update(value, spec) {
18851
18958
  }
18852
18959
 
18853
18960
  module.exports = update;
18854
- },{"162":162,"166":166,"24":24}],145:[function(_dereq_,module,exports){
18961
+ },{"160":160,"165":165,"24":24}],143:[function(_dereq_,module,exports){
18855
18962
  /**
18856
18963
  * Copyright 2015, Facebook, Inc.
18857
18964
  * All rights reserved.
@@ -18866,7 +18973,7 @@ module.exports = update;
18866
18973
  'use strict';
18867
18974
 
18868
18975
  var assign = _dereq_(24);
18869
- var emptyFunction = _dereq_(154);
18976
+ var emptyFunction = _dereq_(152);
18870
18977
  var warning = _dereq_(172);
18871
18978
 
18872
18979
  var validateDOMNesting = emptyFunction;
@@ -19215,7 +19322,7 @@ if ("development" !== 'production') {
19215
19322
  }
19216
19323
 
19217
19324
  module.exports = validateDOMNesting;
19218
- },{"154":154,"172":172,"24":24}],146:[function(_dereq_,module,exports){
19325
+ },{"152":152,"172":172,"24":24}],144:[function(_dereq_,module,exports){
19219
19326
  /**
19220
19327
  * Copyright 2013-2015, Facebook, Inc.
19221
19328
  * All rights reserved.
@@ -19230,7 +19337,7 @@ module.exports = validateDOMNesting;
19230
19337
 
19231
19338
  'use strict';
19232
19339
 
19233
- var invariant = _dereq_(162);
19340
+ var invariant = _dereq_(160);
19234
19341
 
19235
19342
  /**
19236
19343
  * The CSSCore module specifies the API (and implements most of the methods)
@@ -19313,7 +19420,7 @@ var CSSCore = {
19313
19420
  };
19314
19421
 
19315
19422
  module.exports = CSSCore;
19316
- },{"162":162}],147:[function(_dereq_,module,exports){
19423
+ },{"160":160}],145:[function(_dereq_,module,exports){
19317
19424
  /**
19318
19425
  * Copyright 2013-2015, Facebook, Inc.
19319
19426
  *
@@ -19335,7 +19442,7 @@ module.exports = CSSCore;
19335
19442
 
19336
19443
  'use strict';
19337
19444
 
19338
- var emptyFunction = _dereq_(154);
19445
+ var emptyFunction = _dereq_(152);
19339
19446
 
19340
19447
  /**
19341
19448
  * Upstream version of event listener. Does not take into account specific
@@ -19398,7 +19505,7 @@ var EventListener = {
19398
19505
  };
19399
19506
 
19400
19507
  module.exports = EventListener;
19401
- },{"154":154}],148:[function(_dereq_,module,exports){
19508
+ },{"152":152}],146:[function(_dereq_,module,exports){
19402
19509
  /**
19403
19510
  * Copyright 2013-2015, Facebook, Inc.
19404
19511
  * All rights reserved.
@@ -19435,7 +19542,7 @@ var ExecutionEnvironment = {
19435
19542
  };
19436
19543
 
19437
19544
  module.exports = ExecutionEnvironment;
19438
- },{}],149:[function(_dereq_,module,exports){
19545
+ },{}],147:[function(_dereq_,module,exports){
19439
19546
  /**
19440
19547
  * Copyright 2013-2015, Facebook, Inc.
19441
19548
  * All rights reserved.
@@ -19468,7 +19575,7 @@ function camelize(string) {
19468
19575
  }
19469
19576
 
19470
19577
  module.exports = camelize;
19471
- },{}],150:[function(_dereq_,module,exports){
19578
+ },{}],148:[function(_dereq_,module,exports){
19472
19579
  /**
19473
19580
  * Copyright 2013-2015, Facebook, Inc.
19474
19581
  * All rights reserved.
@@ -19483,7 +19590,7 @@ module.exports = camelize;
19483
19590
 
19484
19591
  'use strict';
19485
19592
 
19486
- var camelize = _dereq_(149);
19593
+ var camelize = _dereq_(147);
19487
19594
 
19488
19595
  var msPattern = /^-ms-/;
19489
19596
 
@@ -19509,7 +19616,7 @@ function camelizeStyleName(string) {
19509
19616
  }
19510
19617
 
19511
19618
  module.exports = camelizeStyleName;
19512
- },{"149":149}],151:[function(_dereq_,module,exports){
19619
+ },{"147":147}],149:[function(_dereq_,module,exports){
19513
19620
  /**
19514
19621
  * Copyright 2013-2015, Facebook, Inc.
19515
19622
  * All rights reserved.
@@ -19524,7 +19631,7 @@ module.exports = camelizeStyleName;
19524
19631
 
19525
19632
  'use strict';
19526
19633
 
19527
- var isTextNode = _dereq_(164);
19634
+ var isTextNode = _dereq_(162);
19528
19635
 
19529
19636
  /*eslint-disable no-bitwise */
19530
19637
 
@@ -19565,7 +19672,7 @@ function containsNode(_x, _x2) {
19565
19672
  }
19566
19673
 
19567
19674
  module.exports = containsNode;
19568
- },{"164":164}],152:[function(_dereq_,module,exports){
19675
+ },{"162":162}],150:[function(_dereq_,module,exports){
19569
19676
  /**
19570
19677
  * Copyright 2013-2015, Facebook, Inc.
19571
19678
  * All rights reserved.
@@ -19651,7 +19758,7 @@ function createArrayFromMixed(obj) {
19651
19758
  }
19652
19759
 
19653
19760
  module.exports = createArrayFromMixed;
19654
- },{"171":171}],153:[function(_dereq_,module,exports){
19761
+ },{"171":171}],151:[function(_dereq_,module,exports){
19655
19762
  /**
19656
19763
  * Copyright 2013-2015, Facebook, Inc.
19657
19764
  * All rights reserved.
@@ -19668,11 +19775,11 @@ module.exports = createArrayFromMixed;
19668
19775
 
19669
19776
  'use strict';
19670
19777
 
19671
- var ExecutionEnvironment = _dereq_(148);
19778
+ var ExecutionEnvironment = _dereq_(146);
19672
19779
 
19673
- var createArrayFromMixed = _dereq_(152);
19674
- var getMarkupWrap = _dereq_(158);
19675
- var invariant = _dereq_(162);
19780
+ var createArrayFromMixed = _dereq_(150);
19781
+ var getMarkupWrap = _dereq_(156);
19782
+ var invariant = _dereq_(160);
19676
19783
 
19677
19784
  /**
19678
19785
  * Dummy container used to render all markup.
@@ -19736,7 +19843,7 @@ function createNodesFromMarkup(markup, handleScript) {
19736
19843
  }
19737
19844
 
19738
19845
  module.exports = createNodesFromMarkup;
19739
- },{"148":148,"152":152,"158":158,"162":162}],154:[function(_dereq_,module,exports){
19846
+ },{"146":146,"150":150,"156":156,"160":160}],152:[function(_dereq_,module,exports){
19740
19847
  /**
19741
19848
  * Copyright 2013-2015, Facebook, Inc.
19742
19849
  * All rights reserved.
@@ -19775,7 +19882,7 @@ emptyFunction.thatReturnsArgument = function (arg) {
19775
19882
  };
19776
19883
 
19777
19884
  module.exports = emptyFunction;
19778
- },{}],155:[function(_dereq_,module,exports){
19885
+ },{}],153:[function(_dereq_,module,exports){
19779
19886
  /**
19780
19887
  * Copyright 2013-2015, Facebook, Inc.
19781
19888
  * All rights reserved.
@@ -19796,7 +19903,7 @@ if ("development" !== 'production') {
19796
19903
  }
19797
19904
 
19798
19905
  module.exports = emptyObject;
19799
- },{}],156:[function(_dereq_,module,exports){
19906
+ },{}],154:[function(_dereq_,module,exports){
19800
19907
  /**
19801
19908
  * Copyright 2013-2015, Facebook, Inc.
19802
19909
  * All rights reserved.
@@ -19823,7 +19930,7 @@ function focusNode(node) {
19823
19930
  }
19824
19931
 
19825
19932
  module.exports = focusNode;
19826
- },{}],157:[function(_dereq_,module,exports){
19933
+ },{}],155:[function(_dereq_,module,exports){
19827
19934
  /**
19828
19935
  * Copyright 2013-2015, Facebook, Inc.
19829
19936
  * All rights reserved.
@@ -19840,11 +19947,15 @@ module.exports = focusNode;
19840
19947
  * Same as document.activeElement but wraps in a try-catch block. In IE it is
19841
19948
  * not safe to call document.activeElement if there is nothing focused.
19842
19949
  *
19843
- * The activeElement will be null only if the document body is not yet defined.
19950
+ * The activeElement will be null only if the document or document body is not yet defined.
19844
19951
  */
19845
- "use strict";
19952
+ 'use strict';
19846
19953
 
19847
19954
  function getActiveElement() /*?DOMElement*/{
19955
+ if (typeof document === 'undefined') {
19956
+ return null;
19957
+ }
19958
+
19848
19959
  try {
19849
19960
  return document.activeElement || document.body;
19850
19961
  } catch (e) {
@@ -19853,7 +19964,7 @@ function getActiveElement() /*?DOMElement*/{
19853
19964
  }
19854
19965
 
19855
19966
  module.exports = getActiveElement;
19856
- },{}],158:[function(_dereq_,module,exports){
19967
+ },{}],156:[function(_dereq_,module,exports){
19857
19968
  /**
19858
19969
  * Copyright 2013-2015, Facebook, Inc.
19859
19970
  * All rights reserved.
@@ -19869,9 +19980,9 @@ module.exports = getActiveElement;
19869
19980
 
19870
19981
  'use strict';
19871
19982
 
19872
- var ExecutionEnvironment = _dereq_(148);
19983
+ var ExecutionEnvironment = _dereq_(146);
19873
19984
 
19874
- var invariant = _dereq_(162);
19985
+ var invariant = _dereq_(160);
19875
19986
 
19876
19987
  /**
19877
19988
  * Dummy container used to detect which wraps are necessary.
@@ -19949,7 +20060,7 @@ function getMarkupWrap(nodeName) {
19949
20060
  }
19950
20061
 
19951
20062
  module.exports = getMarkupWrap;
19952
- },{"148":148,"162":162}],159:[function(_dereq_,module,exports){
20063
+ },{"146":146,"160":160}],157:[function(_dereq_,module,exports){
19953
20064
  /**
19954
20065
  * Copyright 2013-2015, Facebook, Inc.
19955
20066
  * All rights reserved.
@@ -19962,7 +20073,7 @@ module.exports = getMarkupWrap;
19962
20073
  * @typechecks
19963
20074
  */
19964
20075
 
19965
- "use strict";
20076
+ 'use strict';
19966
20077
 
19967
20078
  /**
19968
20079
  * Gets the scroll position of the supplied element or window.
@@ -19988,7 +20099,7 @@ function getUnboundedScrollPosition(scrollable) {
19988
20099
  }
19989
20100
 
19990
20101
  module.exports = getUnboundedScrollPosition;
19991
- },{}],160:[function(_dereq_,module,exports){
20102
+ },{}],158:[function(_dereq_,module,exports){
19992
20103
  /**
19993
20104
  * Copyright 2013-2015, Facebook, Inc.
19994
20105
  * All rights reserved.
@@ -20022,7 +20133,7 @@ function hyphenate(string) {
20022
20133
  }
20023
20134
 
20024
20135
  module.exports = hyphenate;
20025
- },{}],161:[function(_dereq_,module,exports){
20136
+ },{}],159:[function(_dereq_,module,exports){
20026
20137
  /**
20027
20138
  * Copyright 2013-2015, Facebook, Inc.
20028
20139
  * All rights reserved.
@@ -20037,7 +20148,7 @@ module.exports = hyphenate;
20037
20148
 
20038
20149
  'use strict';
20039
20150
 
20040
- var hyphenate = _dereq_(160);
20151
+ var hyphenate = _dereq_(158);
20041
20152
 
20042
20153
  var msPattern = /^ms-/;
20043
20154
 
@@ -20062,7 +20173,7 @@ function hyphenateStyleName(string) {
20062
20173
  }
20063
20174
 
20064
20175
  module.exports = hyphenateStyleName;
20065
- },{"160":160}],162:[function(_dereq_,module,exports){
20176
+ },{"158":158}],160:[function(_dereq_,module,exports){
20066
20177
  /**
20067
20178
  * Copyright 2013-2015, Facebook, Inc.
20068
20179
  * All rights reserved.
@@ -20074,7 +20185,7 @@ module.exports = hyphenateStyleName;
20074
20185
  * @providesModule invariant
20075
20186
  */
20076
20187
 
20077
- "use strict";
20188
+ 'use strict';
20078
20189
 
20079
20190
  /**
20080
20191
  * Use invariant() to assert state which your program assumes to be true.
@@ -20112,7 +20223,7 @@ var invariant = function (condition, format, a, b, c, d, e, f) {
20112
20223
  };
20113
20224
 
20114
20225
  module.exports = invariant;
20115
- },{}],163:[function(_dereq_,module,exports){
20226
+ },{}],161:[function(_dereq_,module,exports){
20116
20227
  /**
20117
20228
  * Copyright 2013-2015, Facebook, Inc.
20118
20229
  * All rights reserved.
@@ -20136,7 +20247,7 @@ function isNode(object) {
20136
20247
  }
20137
20248
 
20138
20249
  module.exports = isNode;
20139
- },{}],164:[function(_dereq_,module,exports){
20250
+ },{}],162:[function(_dereq_,module,exports){
20140
20251
  /**
20141
20252
  * Copyright 2013-2015, Facebook, Inc.
20142
20253
  * All rights reserved.
@@ -20151,7 +20262,7 @@ module.exports = isNode;
20151
20262
 
20152
20263
  'use strict';
20153
20264
 
20154
- var isNode = _dereq_(163);
20265
+ var isNode = _dereq_(161);
20155
20266
 
20156
20267
  /**
20157
20268
  * @param {*} object The object to check.
@@ -20162,7 +20273,47 @@ function isTextNode(object) {
20162
20273
  }
20163
20274
 
20164
20275
  module.exports = isTextNode;
20165
- },{"163":163}],165:[function(_dereq_,module,exports){
20276
+ },{"161":161}],163:[function(_dereq_,module,exports){
20277
+ /**
20278
+ * Copyright 2013-2015, Facebook, Inc.
20279
+ * All rights reserved.
20280
+ *
20281
+ * This source code is licensed under the BSD-style license found in the
20282
+ * LICENSE file in the root directory of this source tree. An additional grant
20283
+ * of patent rights can be found in the PATENTS file in the same directory.
20284
+ *
20285
+ * @providesModule joinClasses
20286
+ * @typechecks static-only
20287
+ */
20288
+
20289
+ 'use strict';
20290
+
20291
+ /**
20292
+ * Combines multiple className strings into one.
20293
+ * http://jsperf.com/joinclasses-args-vs-array
20294
+ *
20295
+ * @param {...?string} className
20296
+ * @return {string}
20297
+ */
20298
+ function joinClasses(className /*, ... */) {
20299
+ if (!className) {
20300
+ className = '';
20301
+ }
20302
+ var nextClass;
20303
+ var argLength = arguments.length;
20304
+ if (argLength > 1) {
20305
+ for (var ii = 1; ii < argLength; ii++) {
20306
+ nextClass = arguments[ii];
20307
+ if (nextClass) {
20308
+ className = (className ? className + ' ' : '') + nextClass;
20309
+ }
20310
+ }
20311
+ }
20312
+ return className;
20313
+ }
20314
+
20315
+ module.exports = joinClasses;
20316
+ },{}],164:[function(_dereq_,module,exports){
20166
20317
  /**
20167
20318
  * Copyright 2013-2015, Facebook, Inc.
20168
20319
  * All rights reserved.
@@ -20177,7 +20328,7 @@ module.exports = isTextNode;
20177
20328
 
20178
20329
  'use strict';
20179
20330
 
20180
- var invariant = _dereq_(162);
20331
+ var invariant = _dereq_(160);
20181
20332
 
20182
20333
  /**
20183
20334
  * Constructs an enumeration with keys equal to their value.
@@ -20211,7 +20362,7 @@ var keyMirror = function (obj) {
20211
20362
  };
20212
20363
 
20213
20364
  module.exports = keyMirror;
20214
- },{"162":162}],166:[function(_dereq_,module,exports){
20365
+ },{"160":160}],165:[function(_dereq_,module,exports){
20215
20366
  /**
20216
20367
  * Copyright 2013-2015, Facebook, Inc.
20217
20368
  * All rights reserved.
@@ -20247,7 +20398,7 @@ var keyOf = function (oneKeyObj) {
20247
20398
  };
20248
20399
 
20249
20400
  module.exports = keyOf;
20250
- },{}],167:[function(_dereq_,module,exports){
20401
+ },{}],166:[function(_dereq_,module,exports){
20251
20402
  /**
20252
20403
  * Copyright 2013-2015, Facebook, Inc.
20253
20404
  * All rights reserved.
@@ -20299,6 +20450,38 @@ function mapObject(object, callback, context) {
20299
20450
  }
20300
20451
 
20301
20452
  module.exports = mapObject;
20453
+ },{}],167:[function(_dereq_,module,exports){
20454
+ /**
20455
+ * Copyright 2013-2015, Facebook, Inc.
20456
+ * All rights reserved.
20457
+ *
20458
+ * This source code is licensed under the BSD-style license found in the
20459
+ * LICENSE file in the root directory of this source tree. An additional grant
20460
+ * of patent rights can be found in the PATENTS file in the same directory.
20461
+ *
20462
+ * @providesModule memoizeStringOnly
20463
+ * @typechecks static-only
20464
+ */
20465
+
20466
+ 'use strict';
20467
+
20468
+ /**
20469
+ * Memoizes the return value of a function that accepts one string argument.
20470
+ *
20471
+ * @param {function} callback
20472
+ * @return {function}
20473
+ */
20474
+ function memoizeStringOnly(callback) {
20475
+ var cache = {};
20476
+ return function (string) {
20477
+ if (!cache.hasOwnProperty(string)) {
20478
+ cache[string] = callback.call(this, string);
20479
+ }
20480
+ return cache[string];
20481
+ };
20482
+ }
20483
+
20484
+ module.exports = memoizeStringOnly;
20302
20485
  },{}],168:[function(_dereq_,module,exports){
20303
20486
  /**
20304
20487
  * Copyright 2013-2015, Facebook, Inc.
@@ -20314,7 +20497,7 @@ module.exports = mapObject;
20314
20497
 
20315
20498
  'use strict';
20316
20499
 
20317
- var ExecutionEnvironment = _dereq_(148);
20500
+ var ExecutionEnvironment = _dereq_(146);
20318
20501
 
20319
20502
  var performance;
20320
20503
 
@@ -20323,7 +20506,7 @@ if (ExecutionEnvironment.canUseDOM) {
20323
20506
  }
20324
20507
 
20325
20508
  module.exports = performance || {};
20326
- },{"148":148}],169:[function(_dereq_,module,exports){
20509
+ },{"146":146}],169:[function(_dereq_,module,exports){
20327
20510
  /**
20328
20511
  * Copyright 2013-2015, Facebook, Inc.
20329
20512
  * All rights reserved.
@@ -20419,7 +20602,7 @@ module.exports = shallowEqual;
20419
20602
 
20420
20603
  'use strict';
20421
20604
 
20422
- var invariant = _dereq_(162);
20605
+ var invariant = _dereq_(160);
20423
20606
 
20424
20607
  /**
20425
20608
  * Convert array-like objects to arrays.
@@ -20462,7 +20645,7 @@ function toArray(obj) {
20462
20645
  }
20463
20646
 
20464
20647
  module.exports = toArray;
20465
- },{"162":162}],172:[function(_dereq_,module,exports){
20648
+ },{"160":160}],172:[function(_dereq_,module,exports){
20466
20649
  /**
20467
20650
  * Copyright 2014-2015, Facebook, Inc.
20468
20651
  * All rights reserved.
@@ -20474,9 +20657,9 @@ module.exports = toArray;
20474
20657
  * @providesModule warning
20475
20658
  */
20476
20659
 
20477
- "use strict";
20660
+ 'use strict';
20478
20661
 
20479
- var emptyFunction = _dereq_(154);
20662
+ var emptyFunction = _dereq_(152);
20480
20663
 
20481
20664
  /**
20482
20665
  * Similar to invariant but only logs a warning if the condition is not met.
@@ -20520,5 +20703,5 @@ if ("development" !== 'production') {
20520
20703
  }
20521
20704
 
20522
20705
  module.exports = warning;
20523
- },{"154":154}]},{},[1])(1)
20706
+ },{"152":152}]},{},[1])(1)
20524
20707
  });