diff --git a/_config.yml b/_config.yml
index 188c746c..e5342eaa 100644
--- a/_config.yml
+++ b/_config.yml
@@ -36,13 +36,13 @@ sass:
sass_dir: _css
gems:
- jekyll-redirect-from
-react_version: 15.0.1
+react_version: 15.0.2
react_hashes:
- dev: PcrCc8vAh3jounTGQGibvUE4liSu8s91ycPotf/cfEHdSnq9qaW2c9tFr3oyDzW4
- prod: S9sTQnq5vvBUhj91S9s9dhE4fiZWgytnfFyIW7hu3Vk5leHzq03A9dULSd0IqW9N
- addons_dev: TUMXymomVw+mFbSSojSWXtBVJiWEfUKUYzgZsgvUsdD9fL/y0PPc55825Ui2ZPY6
- addons_prod: rBjtXXl33XbsJR2IbEYJRYH5VnUUMi4o6Zr7ai4UPxcrY0Cw3QpnaU9iIJ2GcyLy
- dom_dev: ukADzi8g85qHW1NDinecbLJu/a+yfhgXK6G2Kl7vCckNICr4Pt1hN7mpfPzsgbD2
- dom_prod: n1Sg+vSen3Mb4Ggzsi2jq4MHCXmlKD0spQXmiYaPSt/8WR7PzpwLTmH8OI+yAluA
- dom_server_dev: eQOoGEpIR1fqOenVhLKRmPctitl54hZLIFg9uMYElEMx0r175Qedt3utJwCjsSrr
- dom_server_prod: 41Tbqk6dOco41BSH7Fb2xAWh8PJTYntH+OR/m80NT+L5IF6XWcq/kvNZGzhBws60
+ dev: dedPNF++oHBwT++5v2VMeXSzyNkqJd7tbc3ic+wN3l0u/NEBcMNuf9a7knYgwTco
+ prod: 1kql9Cm3anPpO0n0a4T7keJt+N4pixvMU33Bk69kZi1WkN6gbq1EVZdfZLjqwmFq
+ addons_dev: b7jdy0/iqeUofUONQyRN/Y3DO/h61sL56BgMXJzfokC2mtsi2pJGhQekw6QqI/71
+ addons_prod: 1J/3e0bGfmFbeuWDRmyBoBOImeFnDn03OKWsXiWVOThql8Yf1qXaim7NrAqL4RHi
+ dom_dev: kQ+9o036IWQT7tKVxA8siLqHR0DekC3YXbkA7RsFQHbuqQutOmb3cOsTQ1WFtMhW
+ dom_prod: q14dOJErroITWJ+DFXug03tOxuZ4fm7u5BkcbboXFWJNvDGPepPWXUuIphvvAsAl
+ dom_server_dev: WiRnBunlOqqLKTWNe+788pJ0QLFIXXktwBnqNV2OggmTROfZJvn1WfrZyh0xhnja
+ dom_server_prod: wkSOmc5KBqBSFy+CAVk0ehSoBEMqzpKj4lzcoKLBchNzTIwCAZ3Pe+LX73kyNNhz
diff --git a/downloads/react-15.0.2.zip b/downloads/react-15.0.2.zip
new file mode 100644
index 00000000..4b4ba527
Binary files /dev/null and b/downloads/react-15.0.2.zip differ
diff --git a/js/react-dom.js b/js/react-dom.js
index 33595fce..5f621f4e 100644
--- a/js/react-dom.js
+++ b/js/react-dom.js
@@ -1,5 +1,5 @@
/**
- * ReactDOM v15.0.1
+ * ReactDOM v15.0.2
*
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
diff --git a/js/react.js b/js/react.js
index 3b7e4633..499694d2 100644
--- a/js/react.js
+++ b/js/react.js
@@ -1,5 +1,5 @@
/**
- * React v15.0.1
+ * React v15.0.2
*/
(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]+)/;
var RESULT_INDEX_ATTR = 'data-danger-index';
@@ -2062,7 +2062,7 @@ var Danger = {
};
module.exports = Danger;
-},{"142":142,"147":147,"148":148,"152":152,"156":156,"8":8}],13:[function(_dereq_,module,exports){
+},{"144":144,"149":149,"150":150,"154":154,"158":158,"8":8}],13:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -2076,7 +2076,7 @@ module.exports = Danger;
'use strict';
-var keyOf = _dereq_(160);
+var keyOf = _dereq_(162);
/**
* Module that is injectable into `EventPluginHub`, that specifies a
@@ -2090,7 +2090,58 @@ var keyOf = _dereq_(160);
var DefaultEventPluginOrder = [keyOf({ ResponderEventPlugin: null }), keyOf({ SimpleEventPlugin: null }), keyOf({ TapEventPlugin: null }), keyOf({ EnterLeaveEventPlugin: null }), keyOf({ ChangeEventPlugin: null }), keyOf({ SelectEventPlugin: null }), keyOf({ BeforeInputEventPlugin: null })];
module.exports = DefaultEventPluginOrder;
-},{"160":160}],14:[function(_dereq_,module,exports){
+},{"162":162}],14:[function(_dereq_,module,exports){
+/**
+ * Copyright 2013-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ * @providesModule DisabledInputUtils
+ */
+
+'use strict';
+
+var disableableMouseListenerNames = {
+ onClick: true,
+ onDoubleClick: true,
+ onMouseDown: true,
+ onMouseMove: true,
+ onMouseUp: true,
+
+ onClickCapture: true,
+ onDoubleClickCapture: true,
+ onMouseDownCapture: true,
+ onMouseMoveCapture: true,
+ onMouseUpCapture: true
+};
+
+/**
+ * Implements a native component that does not receive mouse events
+ * when `disabled` is set.
+ */
+var DisabledInputUtils = {
+ getNativeProps: function (inst, props) {
+ if (!props.disabled) {
+ return props;
+ }
+
+ // Copy the props, except the mouse listeners
+ var nativeProps = {};
+ for (var key in props) {
+ if (!disableableMouseListenerNames[key] && props.hasOwnProperty(key)) {
+ nativeProps[key] = props[key];
+ }
+ }
+
+ return nativeProps;
+ }
+};
+
+module.exports = DisabledInputUtils;
+},{}],15:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -2104,12 +2155,12 @@ module.exports = DefaultEventPluginOrder;
'use strict';
-var EventConstants = _dereq_(15);
-var EventPropagators = _dereq_(19);
-var ReactDOMComponentTree = _dereq_(38);
-var SyntheticMouseEvent = _dereq_(105);
+var EventConstants = _dereq_(16);
+var EventPropagators = _dereq_(20);
+var ReactDOMComponentTree = _dereq_(40);
+var SyntheticMouseEvent = _dereq_(107);
-var keyOf = _dereq_(160);
+var keyOf = _dereq_(162);
var topLevelTypes = EventConstants.topLevelTypes;
@@ -2196,7 +2247,7 @@ var EnterLeaveEventPlugin = {
};
module.exports = EnterLeaveEventPlugin;
-},{"105":105,"15":15,"160":160,"19":19,"38":38}],15:[function(_dereq_,module,exports){
+},{"107":107,"16":16,"162":162,"20":20,"40":40}],16:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -2210,7 +2261,7 @@ module.exports = EnterLeaveEventPlugin;
'use strict';
-var keyMirror = _dereq_(159);
+var keyMirror = _dereq_(161);
var PropagationPhases = keyMirror({ bubbled: null, captured: null });
@@ -2294,7 +2345,7 @@ var EventConstants = {
};
module.exports = EventConstants;
-},{"159":159}],16:[function(_dereq_,module,exports){
+},{"161":161}],17:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -2308,13 +2359,13 @@ module.exports = EventConstants;
'use strict';
-var EventPluginRegistry = _dereq_(17);
-var EventPluginUtils = _dereq_(18);
-var ReactErrorUtils = _dereq_(63);
+var EventPluginRegistry = _dereq_(18);
+var EventPluginUtils = _dereq_(19);
+var ReactErrorUtils = _dereq_(65);
-var accumulateInto = _dereq_(112);
-var forEachAccumulated = _dereq_(120);
-var invariant = _dereq_(156);
+var accumulateInto = _dereq_(114);
+var forEachAccumulated = _dereq_(122);
+var invariant = _dereq_(158);
/**
* Internal store for event listeners
@@ -2530,7 +2581,7 @@ var EventPluginHub = {
};
module.exports = EventPluginHub;
-},{"112":112,"120":120,"156":156,"17":17,"18":18,"63":63}],17:[function(_dereq_,module,exports){
+},{"114":114,"122":122,"158":158,"18":18,"19":19,"65":65}],18:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -2544,7 +2595,7 @@ module.exports = EventPluginHub;
'use strict';
-var invariant = _dereq_(156);
+var invariant = _dereq_(158);
/**
* Injectable ordering of event plugins.
@@ -2772,7 +2823,7 @@ var EventPluginRegistry = {
};
module.exports = EventPluginRegistry;
-},{"156":156}],18:[function(_dereq_,module,exports){
+},{"158":158}],19:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -2786,11 +2837,11 @@ module.exports = EventPluginRegistry;
'use strict';
-var EventConstants = _dereq_(15);
-var ReactErrorUtils = _dereq_(63);
+var EventConstants = _dereq_(16);
+var ReactErrorUtils = _dereq_(65);
-var invariant = _dereq_(156);
-var warning = _dereq_(166);
+var invariant = _dereq_(158);
+var warning = _dereq_(168);
/**
* Injected dependencies:
@@ -2945,7 +2996,7 @@ function executeDirectDispatch(event) {
var dispatchListener = event._dispatchListeners;
var dispatchInstance = event._dispatchInstances;
!!Array.isArray(dispatchListener) ? "development" !== 'production' ? invariant(false, 'executeDirectDispatch(...): Invalid `event`.') : invariant(false) : void 0;
- event.currentTarget = EventPluginUtils.getNodeFromInstance(dispatchInstance);
+ event.currentTarget = dispatchListener ? EventPluginUtils.getNodeFromInstance(dispatchInstance) : null;
var res = dispatchListener ? dispatchListener(event) : null;
event.currentTarget = null;
event._dispatchListeners = null;
@@ -3000,7 +3051,7 @@ var EventPluginUtils = {
};
module.exports = EventPluginUtils;
-},{"15":15,"156":156,"166":166,"63":63}],19:[function(_dereq_,module,exports){
+},{"158":158,"16":16,"168":168,"65":65}],20:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -3014,13 +3065,13 @@ module.exports = EventPluginUtils;
'use strict';
-var EventConstants = _dereq_(15);
-var EventPluginHub = _dereq_(16);
-var EventPluginUtils = _dereq_(18);
+var EventConstants = _dereq_(16);
+var EventPluginHub = _dereq_(17);
+var EventPluginUtils = _dereq_(19);
-var accumulateInto = _dereq_(112);
-var forEachAccumulated = _dereq_(120);
-var warning = _dereq_(166);
+var accumulateInto = _dereq_(114);
+var forEachAccumulated = _dereq_(122);
+var warning = _dereq_(168);
var PropagationPhases = EventConstants.PropagationPhases;
var getListener = EventPluginHub.getListener;
@@ -3138,7 +3189,7 @@ var EventPropagators = {
};
module.exports = EventPropagators;
-},{"112":112,"120":120,"15":15,"16":16,"166":166,"18":18}],20:[function(_dereq_,module,exports){
+},{"114":114,"122":122,"16":16,"168":168,"17":17,"19":19}],21:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -3152,11 +3203,11 @@ module.exports = EventPropagators;
'use strict';
-var _assign = _dereq_(167);
+var _assign = _dereq_(169);
-var PooledClass = _dereq_(23);
+var PooledClass = _dereq_(25);
-var getTextContentAccessor = _dereq_(128);
+var getTextContentAccessor = _dereq_(130);
/**
* This helper class stores information about text content of a target node,
@@ -3234,7 +3285,7 @@ _assign(FallbackCompositionState.prototype, {
PooledClass.addPoolingTo(FallbackCompositionState);
module.exports = FallbackCompositionState;
-},{"128":128,"167":167,"23":23}],21:[function(_dereq_,module,exports){
+},{"130":130,"169":169,"25":25}],22:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -3444,7 +3495,66 @@ var HTMLDOMPropertyConfig = {
};
module.exports = HTMLDOMPropertyConfig;
-},{"10":10}],22:[function(_dereq_,module,exports){
+},{"10":10}],23:[function(_dereq_,module,exports){
+/**
+ * Copyright 2013-present, Facebook, Inc.
+ * All rights reserved.
+ *
+ * This source code is licensed under the BSD-style license found in the
+ * LICENSE file in the root directory of this source tree. An additional grant
+ * of patent rights can be found in the PATENTS file in the same directory.
+ *
+ * @providesModule KeyEscapeUtils
+ */
+
+'use strict';
+
+/**
+ * Escape and wrap key so it is safe to use as a reactid
+ *
+ * @param {*} key to be escaped.
+ * @return {string} the escaped key.
+ */
+
+function escape(key) {
+ var escapeRegex = /[=:]/g;
+ var escaperLookup = {
+ '=': '=0',
+ ':': '=2'
+ };
+ var escapedString = ('' + key).replace(escapeRegex, function (match) {
+ return escaperLookup[match];
+ });
+
+ return '$' + escapedString;
+}
+
+/**
+ * Unescape and unwrap key for human-readable display
+ *
+ * @param {string} key to unescape.
+ * @return {string} the unescaped key.
+ */
+function unescape(key) {
+ var unescapeRegex = /(=0|=2)/g;
+ var unescaperLookup = {
+ '=0': '=',
+ '=2': ':'
+ };
+ var keySubstring = key[0] === '.' && key[1] === '$' ? key.substring(2) : key.substring(1);
+
+ return ('' + keySubstring).replace(unescapeRegex, function (match) {
+ return unescaperLookup[match];
+ });
+}
+
+var KeyEscapeUtils = {
+ escape: escape,
+ unescape: unescape
+};
+
+module.exports = KeyEscapeUtils;
+},{}],24:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -3458,11 +3568,11 @@ module.exports = HTMLDOMPropertyConfig;
'use strict';
-var ReactPropTypes = _dereq_(83);
-var ReactPropTypeLocations = _dereq_(82);
+var ReactPropTypes = _dereq_(85);
+var ReactPropTypeLocations = _dereq_(84);
-var invariant = _dereq_(156);
-var warning = _dereq_(166);
+var invariant = _dereq_(158);
+var warning = _dereq_(168);
var hasReadOnlyValue = {
'button': true,
@@ -3578,7 +3688,7 @@ var LinkedValueUtils = {
};
module.exports = LinkedValueUtils;
-},{"156":156,"166":166,"82":82,"83":83}],23:[function(_dereq_,module,exports){
+},{"158":158,"168":168,"84":84,"85":85}],25:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -3592,7 +3702,7 @@ module.exports = LinkedValueUtils;
'use strict';
-var invariant = _dereq_(156);
+var invariant = _dereq_(158);
/**
* Static poolers. Several custom versions for each potential number of
@@ -3698,7 +3808,7 @@ var PooledClass = {
};
module.exports = PooledClass;
-},{"156":156}],24:[function(_dereq_,module,exports){
+},{"158":158}],26:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -3712,19 +3822,19 @@ module.exports = PooledClass;
'use strict';
-var _assign = _dereq_(167);
+var _assign = _dereq_(169);
-var ReactChildren = _dereq_(27);
-var ReactComponent = _dereq_(29);
-var ReactClass = _dereq_(28);
-var ReactDOMFactories = _dereq_(42);
-var ReactElement = _dereq_(60);
-var ReactElementValidator = _dereq_(61);
-var ReactPropTypes = _dereq_(83);
-var ReactVersion = _dereq_(93);
+var ReactChildren = _dereq_(29);
+var ReactComponent = _dereq_(31);
+var ReactClass = _dereq_(30);
+var ReactDOMFactories = _dereq_(44);
+var ReactElement = _dereq_(62);
+var ReactElementValidator = _dereq_(63);
+var ReactPropTypes = _dereq_(85);
+var ReactVersion = _dereq_(95);
-var onlyChild = _dereq_(133);
-var warning = _dereq_(166);
+var onlyChild = _dereq_(135);
+var warning = _dereq_(168);
var createElement = ReactElement.createElement;
var createFactory = ReactElement.createFactory;
@@ -3786,7 +3896,7 @@ var React = {
};
module.exports = React;
-},{"133":133,"166":166,"167":167,"27":27,"28":28,"29":29,"42":42,"60":60,"61":61,"83":83,"93":93}],25:[function(_dereq_,module,exports){
+},{"135":135,"168":168,"169":169,"29":29,"30":30,"31":31,"44":44,"62":62,"63":63,"85":85,"95":95}],27:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -3800,15 +3910,15 @@ module.exports = React;
'use strict';
-var _assign = _dereq_(167);
+var _assign = _dereq_(169);
-var EventConstants = _dereq_(15);
-var EventPluginRegistry = _dereq_(17);
-var ReactEventEmitterMixin = _dereq_(64);
-var ViewportMetrics = _dereq_(111);
+var EventConstants = _dereq_(16);
+var EventPluginRegistry = _dereq_(18);
+var ReactEventEmitterMixin = _dereq_(66);
+var ViewportMetrics = _dereq_(113);
-var getVendorPrefixedEventName = _dereq_(129);
-var isEventSupported = _dereq_(131);
+var getVendorPrefixedEventName = _dereq_(131);
+var isEventSupported = _dereq_(133);
/**
* Summary of `ReactBrowserEventEmitter` event handling:
@@ -4104,7 +4214,7 @@ var ReactBrowserEventEmitter = _assign({}, ReactEventEmitterMixin, {
});
module.exports = ReactBrowserEventEmitter;
-},{"111":111,"129":129,"131":131,"15":15,"167":167,"17":17,"64":64}],26:[function(_dereq_,module,exports){
+},{"113":113,"131":131,"133":133,"16":16,"169":169,"18":18,"66":66}],28:[function(_dereq_,module,exports){
/**
* Copyright 2014-present, Facebook, Inc.
* All rights reserved.
@@ -4118,18 +4228,19 @@ module.exports = ReactBrowserEventEmitter;
'use strict';
-var ReactReconciler = _dereq_(85);
+var ReactReconciler = _dereq_(87);
-var instantiateReactComponent = _dereq_(130);
-var shouldUpdateReactComponent = _dereq_(138);
-var traverseAllChildren = _dereq_(139);
-var warning = _dereq_(166);
+var instantiateReactComponent = _dereq_(132);
+var KeyEscapeUtils = _dereq_(23);
+var shouldUpdateReactComponent = _dereq_(140);
+var traverseAllChildren = _dereq_(141);
+var warning = _dereq_(168);
function instantiateChild(childInstances, child, name) {
// We found a component instance.
var keyUnique = childInstances[name] === undefined;
if ("development" !== 'production') {
- "development" !== 'production' ? warning(keyUnique, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.', name) : void 0;
+ "development" !== 'production' ? warning(keyUnique, 'flattenChildren(...): Encountered two children with the same key, ' + '`%s`. Child keys must be unique; when two children share a key, only ' + 'the first child will be used.', KeyEscapeUtils.unescape(name)) : void 0;
}
if (child != null && keyUnique) {
childInstances[name] = instantiateReactComponent(child);
@@ -4229,7 +4340,7 @@ var ReactChildReconciler = {
};
module.exports = ReactChildReconciler;
-},{"130":130,"138":138,"139":139,"166":166,"85":85}],27:[function(_dereq_,module,exports){
+},{"132":132,"140":140,"141":141,"168":168,"23":23,"87":87}],29:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -4243,11 +4354,11 @@ module.exports = ReactChildReconciler;
'use strict';
-var PooledClass = _dereq_(23);
-var ReactElement = _dereq_(60);
+var PooledClass = _dereq_(25);
+var ReactElement = _dereq_(62);
-var emptyFunction = _dereq_(148);
-var traverseAllChildren = _dereq_(139);
+var emptyFunction = _dereq_(150);
+var traverseAllChildren = _dereq_(141);
var twoArgumentPooler = PooledClass.twoArgumentPooler;
var fourArgumentPooler = PooledClass.fourArgumentPooler;
@@ -4362,7 +4473,7 @@ function mapIntoWithKeyPrefixInternal(children, array, prefix, func, context) {
/**
* Maps children that are typically specified as `props.children`.
*
- * The provided mapFunction(child, key, index) will be called for each
+ * The provided mapFunction(child, index) will be called for each
* leaf child.
*
* @param {?*} children Children tree container.
@@ -4413,7 +4524,7 @@ var ReactChildren = {
};
module.exports = ReactChildren;
-},{"139":139,"148":148,"23":23,"60":60}],28:[function(_dereq_,module,exports){
+},{"141":141,"150":150,"25":25,"62":62}],30:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -4427,19 +4538,19 @@ module.exports = ReactChildren;
'use strict';
-var _assign = _dereq_(167);
+var _assign = _dereq_(169);
-var ReactComponent = _dereq_(29);
-var ReactElement = _dereq_(60);
-var ReactPropTypeLocations = _dereq_(82);
-var ReactPropTypeLocationNames = _dereq_(81);
-var ReactNoopUpdateQueue = _dereq_(78);
+var ReactComponent = _dereq_(31);
+var ReactElement = _dereq_(62);
+var ReactPropTypeLocations = _dereq_(84);
+var ReactPropTypeLocationNames = _dereq_(83);
+var ReactNoopUpdateQueue = _dereq_(80);
-var emptyObject = _dereq_(149);
-var invariant = _dereq_(156);
-var keyMirror = _dereq_(159);
-var keyOf = _dereq_(160);
-var warning = _dereq_(166);
+var emptyObject = _dereq_(151);
+var invariant = _dereq_(158);
+var keyMirror = _dereq_(161);
+var keyOf = _dereq_(162);
+var warning = _dereq_(168);
var MIXINS_KEY = keyOf({ mixins: null });
@@ -5137,7 +5248,7 @@ var ReactClass = {
};
module.exports = ReactClass;
-},{"149":149,"156":156,"159":159,"160":160,"166":166,"167":167,"29":29,"60":60,"78":78,"81":81,"82":82}],29:[function(_dereq_,module,exports){
+},{"151":151,"158":158,"161":161,"162":162,"168":168,"169":169,"31":31,"62":62,"80":80,"83":83,"84":84}],31:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -5151,13 +5262,13 @@ module.exports = ReactClass;
'use strict';
-var ReactNoopUpdateQueue = _dereq_(78);
-var ReactInstrumentation = _dereq_(70);
+var ReactNoopUpdateQueue = _dereq_(80);
+var ReactInstrumentation = _dereq_(72);
-var canDefineProperty = _dereq_(114);
-var emptyObject = _dereq_(149);
-var invariant = _dereq_(156);
-var warning = _dereq_(166);
+var canDefineProperty = _dereq_(116);
+var emptyObject = _dereq_(151);
+var invariant = _dereq_(158);
+var warning = _dereq_(168);
/**
* Base class helpers for the updating state of a component.
@@ -5259,7 +5370,7 @@ if ("development" !== 'production') {
}
module.exports = ReactComponent;
-},{"114":114,"149":149,"156":156,"166":166,"70":70,"78":78}],30:[function(_dereq_,module,exports){
+},{"116":116,"151":151,"158":158,"168":168,"72":72,"80":80}],32:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -5274,8 +5385,8 @@ module.exports = ReactComponent;
'use strict';
var DOMChildrenOperations = _dereq_(7);
-var ReactDOMIDOperations = _dereq_(44);
-var ReactPerf = _dereq_(80);
+var ReactDOMIDOperations = _dereq_(46);
+var ReactPerf = _dereq_(82);
/**
* Abstracts away all functionality of the reconciler that requires knowledge of
@@ -5304,7 +5415,7 @@ ReactPerf.measureMethods(ReactComponentBrowserEnvironment, 'ReactComponentBrowse
});
module.exports = ReactComponentBrowserEnvironment;
-},{"44":44,"7":7,"80":80}],31:[function(_dereq_,module,exports){
+},{"46":46,"7":7,"82":82}],33:[function(_dereq_,module,exports){
/**
* Copyright 2014-present, Facebook, Inc.
* All rights reserved.
@@ -5318,7 +5429,7 @@ module.exports = ReactComponentBrowserEnvironment;
'use strict';
-var invariant = _dereq_(156);
+var invariant = _dereq_(158);
var injected = false;
@@ -5356,7 +5467,7 @@ var ReactComponentEnvironment = {
};
module.exports = ReactComponentEnvironment;
-},{"156":156}],32:[function(_dereq_,module,exports){
+},{"158":158}],34:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -5370,25 +5481,25 @@ module.exports = ReactComponentEnvironment;
'use strict';
-var _assign = _dereq_(167);
-
-var ReactComponentEnvironment = _dereq_(31);
-var ReactCurrentOwner = _dereq_(33);
-var ReactElement = _dereq_(60);
-var ReactErrorUtils = _dereq_(63);
-var ReactInstanceMap = _dereq_(69);
-var ReactInstrumentation = _dereq_(70);
-var ReactNodeTypes = _dereq_(77);
-var ReactPerf = _dereq_(80);
-var ReactPropTypeLocations = _dereq_(82);
-var ReactPropTypeLocationNames = _dereq_(81);
-var ReactReconciler = _dereq_(85);
-var ReactUpdateQueue = _dereq_(91);
-
-var emptyObject = _dereq_(149);
-var invariant = _dereq_(156);
-var shouldUpdateReactComponent = _dereq_(138);
-var warning = _dereq_(166);
+var _assign = _dereq_(169);
+
+var ReactComponentEnvironment = _dereq_(33);
+var ReactCurrentOwner = _dereq_(35);
+var ReactElement = _dereq_(62);
+var ReactErrorUtils = _dereq_(65);
+var ReactInstanceMap = _dereq_(71);
+var ReactInstrumentation = _dereq_(72);
+var ReactNodeTypes = _dereq_(79);
+var ReactPerf = _dereq_(82);
+var ReactPropTypeLocations = _dereq_(84);
+var ReactPropTypeLocationNames = _dereq_(83);
+var ReactReconciler = _dereq_(87);
+var ReactUpdateQueue = _dereq_(93);
+
+var emptyObject = _dereq_(151);
+var invariant = _dereq_(158);
+var shouldUpdateReactComponent = _dereq_(140);
+var warning = _dereq_(168);
function getDeclarationErrorAddendum(component) {
var owner = component._currentElement._owner || null;
@@ -5415,6 +5526,10 @@ function warnIfInvalidElement(Component, element) {
}
}
+function shouldConstruct(Component) {
+ return Component.prototype && Component.prototype.isReactComponent;
+}
+
/**
* ------------------ The Life-Cycle of a Composite Component ------------------
*
@@ -5483,6 +5598,9 @@ var ReactCompositeComponentMixin = {
// See ReactUpdates and ReactUpdateQueue.
this._pendingCallbacks = null;
+
+ // ComponentWillUnmount shall only be called once
+ this._calledComponentWillUnmount = false;
},
/**
@@ -5508,37 +5626,15 @@ var ReactCompositeComponentMixin = {
var Component = this._currentElement.type;
// Initialize the public class
- var inst;
+ var inst = this._constructComponent(publicProps, publicContext);
var renderedElement;
- if (Component.prototype && Component.prototype.isReactComponent) {
- if ("development" !== 'production') {
- ReactCurrentOwner.current = this;
- try {
- inst = new Component(publicProps, publicContext, ReactUpdateQueue);
- } finally {
- ReactCurrentOwner.current = null;
- }
- } else {
- inst = new Component(publicProps, publicContext, ReactUpdateQueue);
- }
- } else {
- if ("development" !== 'production') {
- ReactCurrentOwner.current = this;
- try {
- inst = Component(publicProps, publicContext, ReactUpdateQueue);
- } finally {
- ReactCurrentOwner.current = null;
- }
- } else {
- inst = Component(publicProps, publicContext, ReactUpdateQueue);
- }
- if (inst == null || inst.render == null) {
- renderedElement = inst;
- warnIfInvalidElement(Component, renderedElement);
- !(inst === null || inst === false || ReactElement.isValidElement(inst)) ? "development" !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : invariant(false) : void 0;
- inst = new StatelessComponent(Component);
- }
+ // Support functional components
+ if (!shouldConstruct(Component) && (inst == null || inst.render == null)) {
+ renderedElement = inst;
+ warnIfInvalidElement(Component, renderedElement);
+ !(inst === null || inst === false || ReactElement.isValidElement(inst)) ? "development" !== 'production' ? invariant(false, '%s(...): A valid React element (or null) must be returned. You may have ' + 'returned undefined, an array or some other invalid object.', Component.displayName || Component.name || 'Component') : invariant(false) : void 0;
+ inst = new StatelessComponent(Component);
}
if ("development" !== 'production') {
@@ -5603,6 +5699,28 @@ var ReactCompositeComponentMixin = {
return markup;
},
+ _constructComponent: function (publicProps, publicContext) {
+ if ("development" !== 'production') {
+ ReactCurrentOwner.current = this;
+ try {
+ return this._constructComponentWithoutOwner(publicProps, publicContext);
+ } finally {
+ ReactCurrentOwner.current = null;
+ }
+ } else {
+ return this._constructComponentWithoutOwner(publicProps, publicContext);
+ }
+ },
+
+ _constructComponentWithoutOwner: function (publicProps, publicContext) {
+ var Component = this._currentElement.type;
+ if (shouldConstruct(Component)) {
+ return new Component(publicProps, publicContext, ReactUpdateQueue);
+ } else {
+ return Component(publicProps, publicContext, ReactUpdateQueue);
+ }
+ },
+
performInitialMountWithErrorHandling: function (renderedElement, nativeParent, nativeContainerInfo, transaction, context) {
var markup;
var checkpoint = transaction.checkpoint();
@@ -5667,7 +5785,8 @@ var ReactCompositeComponentMixin = {
}
var inst = this._instance;
- if (inst.componentWillUnmount) {
+ if (inst.componentWillUnmount && !inst._calledComponentWillUnmount) {
+ inst._calledComponentWillUnmount = true;
if (safely) {
var name = this.getName() + '.componentWillUnmount()';
ReactErrorUtils.invokeGuardedCallback(name, inst.componentWillUnmount.bind(inst));
@@ -6143,7 +6262,7 @@ var ReactCompositeComponent = {
};
module.exports = ReactCompositeComponent;
-},{"138":138,"149":149,"156":156,"166":166,"167":167,"31":31,"33":33,"60":60,"63":63,"69":69,"70":70,"77":77,"80":80,"81":81,"82":82,"85":85,"91":91}],33:[function(_dereq_,module,exports){
+},{"140":140,"151":151,"158":158,"168":168,"169":169,"33":33,"35":35,"62":62,"65":65,"71":71,"72":72,"79":79,"82":82,"83":83,"84":84,"87":87,"93":93}],35:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -6175,7 +6294,7 @@ var ReactCurrentOwner = {
};
module.exports = ReactCurrentOwner;
-},{}],34:[function(_dereq_,module,exports){
+},{}],36:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -6191,18 +6310,18 @@ module.exports = ReactCurrentOwner;
'use strict';
-var ReactDOMComponentTree = _dereq_(38);
-var ReactDefaultInjection = _dereq_(57);
-var ReactMount = _dereq_(73);
-var ReactPerf = _dereq_(80);
-var ReactReconciler = _dereq_(85);
-var ReactUpdates = _dereq_(92);
-var ReactVersion = _dereq_(93);
+var ReactDOMComponentTree = _dereq_(40);
+var ReactDefaultInjection = _dereq_(59);
+var ReactMount = _dereq_(75);
+var ReactPerf = _dereq_(82);
+var ReactReconciler = _dereq_(87);
+var ReactUpdates = _dereq_(94);
+var ReactVersion = _dereq_(95);
-var findDOMNode = _dereq_(118);
-var getNativeComponentFromComposite = _dereq_(126);
-var renderSubtreeIntoContainer = _dereq_(135);
-var warning = _dereq_(166);
+var findDOMNode = _dereq_(120);
+var getNativeComponentFromComposite = _dereq_(128);
+var renderSubtreeIntoContainer = _dereq_(137);
+var warning = _dereq_(168);
ReactDefaultInjection.inject();
@@ -6244,7 +6363,7 @@ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVT
}
if ("development" !== 'production') {
- var ExecutionEnvironment = _dereq_(142);
+ var ExecutionEnvironment = _dereq_(144);
if (ExecutionEnvironment.canUseDOM && window.top === window.self) {
// First check if devtools is not installed
@@ -6280,7 +6399,7 @@ if ("development" !== 'production') {
}
module.exports = React;
-},{"118":118,"126":126,"135":135,"142":142,"166":166,"38":38,"57":57,"73":73,"80":80,"85":85,"92":92,"93":93}],35:[function(_dereq_,module,exports){
+},{"120":120,"128":128,"137":137,"144":144,"168":168,"40":40,"59":59,"75":75,"82":82,"87":87,"94":94,"95":95}],37:[function(_dereq_,module,exports){
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
@@ -6294,44 +6413,18 @@ module.exports = React;
'use strict';
-var mouseListenerNames = {
- onClick: true,
- onDoubleClick: true,
- onMouseDown: true,
- onMouseMove: true,
- onMouseUp: true,
-
- onClickCapture: true,
- onDoubleClickCapture: true,
- onMouseDownCapture: true,
- onMouseMoveCapture: true,
- onMouseUpCapture: true
-};
+var DisabledInputUtils = _dereq_(14);
/**
* Implements a