diff --git a/src/ReactVersion.js b/src/ReactVersion.js
index 1ecc489a8..cf91b4c58 100644
--- a/src/ReactVersion.js
+++ b/src/ReactVersion.js
@@ -13,2 +13,2 @@
-module.exports = '15.0.0';
+module.exports = '15.6.1';
diff --git a/src/addons/ReactAddonsDOMDependencies.js b/src/addons/ReactAddonsDOMDependencies.js
new file mode 100644
index 000000000..70856ec6c
--- /dev/null
+++ b/src/addons/ReactAddonsDOMDependencies.js
@@ -0,0 +1,37 @@
+/**
+ * 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 ReactAddonsDOMDependencies
+ */
+
+'use strict';
+
+var ReactDOM = require('ReactDOM');
+
+exports.getReactDOM = function() {
+ return ReactDOM;
+};
+
+if (__DEV__) {
+ var ReactPerf;
+ var ReactTestUtils;
+
+ exports.getReactPerf = function() {
+ if (!ReactPerf) {
+ ReactPerf = require('ReactPerf');
+ }
+ return ReactPerf;
+ };
+
+ exports.getReactTestUtils = function() {
+ if (!ReactTestUtils) {
+ ReactTestUtils = require('ReactTestUtils');
+ }
+ return ReactTestUtils;
+ };
+}
diff --git a/src/addons/ReactComponentWithPureRenderMixin.js b/src/addons/ReactComponentWithPureRenderMixin.js
index afafbdaa7..cf00d7cb3 100644
--- a/src/addons/ReactComponentWithPureRenderMixin.js
+++ b/src/addons/ReactComponentWithPureRenderMixin.js
@@ -38,2 +38,4 @@ var shallowCompare = require('shallowCompare');
* use `forceUpdate()` when you know deep data structures have changed.
+ *
+ * See https://facebook.github.io/react/docs/pure-render-mixin.html
*/
diff --git a/src/addons/ReactDOMFactories.js b/src/addons/ReactDOMFactories.js
new file mode 100644
index 000000000..f1f82c3a0
--- /dev/null
+++ b/src/addons/ReactDOMFactories.js
@@ -0,0 +1,169 @@
+/**
+ * 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 ReactDOMFactories
+ */
+
+'use strict';
+
+var ReactElement = require('ReactElement');
+
+/**
+ * Create a factory that creates HTML tag elements.
+ *
+ * @private
+ */
+var createDOMFactory = ReactElement.createFactory;
+if (__DEV__) {
+ var ReactElementValidator = require('ReactElementValidator');
+ createDOMFactory = ReactElementValidator.createFactory;
+}
+
+/**
+ * Creates a mapping from supported HTML tags to `ReactDOMComponent` classes.
+ *
+ * @public
+ */
+var ReactDOMFactories = {
+ a: createDOMFactory('a'),
+ abbr: createDOMFactory('abbr'),
+ address: createDOMFactory('address'),
+ area: createDOMFactory('area'),
+ article: createDOMFactory('article'),
+ aside: createDOMFactory('aside'),
+ audio: createDOMFactory('audio'),
+ b: createDOMFactory('b'),
+ base: createDOMFactory('base'),
+ bdi: createDOMFactory('bdi'),
+ bdo: createDOMFactory('bdo'),
+ big: createDOMFactory('big'),
+ blockquote: createDOMFactory('blockquote'),
+ body: createDOMFactory('body'),
+ br: createDOMFactory('br'),
+ button: createDOMFactory('button'),
+ canvas: createDOMFactory('canvas'),
+ caption: createDOMFactory('caption'),
+ cite: createDOMFactory('cite'),
+ code: createDOMFactory('code'),
+ col: createDOMFactory('col'),
+ colgroup: createDOMFactory('colgroup'),
+ data: createDOMFactory('data'),
+ datalist: createDOMFactory('datalist'),
+ dd: createDOMFactory('dd'),
+ del: createDOMFactory('del'),
+ details: createDOMFactory('details'),
+ dfn: createDOMFactory('dfn'),
+ dialog: createDOMFactory('dialog'),
+ div: createDOMFactory('div'),
+ dl: createDOMFactory('dl'),
+ dt: createDOMFactory('dt'),
+ em: createDOMFactory('em'),
+ embed: createDOMFactory('embed'),
+ fieldset: createDOMFactory('fieldset'),
+ figcaption: createDOMFactory('figcaption'),
+ figure: createDOMFactory('figure'),
+ footer: createDOMFactory('footer'),
+ form: createDOMFactory('form'),
+ h1: createDOMFactory('h1'),
+ h2: createDOMFactory('h2'),
+ h3: createDOMFactory('h3'),
+ h4: createDOMFactory('h4'),
+ h5: createDOMFactory('h5'),
+ h6: createDOMFactory('h6'),
+ head: createDOMFactory('head'),
+ header: createDOMFactory('header'),
+ hgroup: createDOMFactory('hgroup'),
+ hr: createDOMFactory('hr'),
+ html: createDOMFactory('html'),
+ i: createDOMFactory('i'),
+ iframe: createDOMFactory('iframe'),
+ img: createDOMFactory('img'),
+ input: createDOMFactory('input'),
+ ins: createDOMFactory('ins'),
+ kbd: createDOMFactory('kbd'),
+ keygen: createDOMFactory('keygen'),
+ label: createDOMFactory('label'),
+ legend: createDOMFactory('legend'),
+ li: createDOMFactory('li'),
+ link: createDOMFactory('link'),
+ main: createDOMFactory('main'),
+ map: createDOMFactory('map'),
+ mark: createDOMFactory('mark'),
+ menu: createDOMFactory('menu'),
+ menuitem: createDOMFactory('menuitem'),
+ meta: createDOMFactory('meta'),
+ meter: createDOMFactory('meter'),
+ nav: createDOMFactory('nav'),
+ noscript: createDOMFactory('noscript'),
+ object: createDOMFactory('object'),
+ ol: createDOMFactory('ol'),
+ optgroup: createDOMFactory('optgroup'),
+ option: createDOMFactory('option'),
+ output: createDOMFactory('output'),
+ p: createDOMFactory('p'),
+ param: createDOMFactory('param'),
+ picture: createDOMFactory('picture'),
+ pre: createDOMFactory('pre'),
+ progress: createDOMFactory('progress'),
+ q: createDOMFactory('q'),
+ rp: createDOMFactory('rp'),
+ rt: createDOMFactory('rt'),
+ ruby: createDOMFactory('ruby'),
+ s: createDOMFactory('s'),
+ samp: createDOMFactory('samp'),
+ script: createDOMFactory('script'),
+ section: createDOMFactory('section'),
+ select: createDOMFactory('select'),
+ small: createDOMFactory('small'),
+ source: createDOMFactory('source'),
+ span: createDOMFactory('span'),
+ strong: createDOMFactory('strong'),
+ style: createDOMFactory('style'),
+ sub: createDOMFactory('sub'),
+ summary: createDOMFactory('summary'),
+ sup: createDOMFactory('sup'),
+ table: createDOMFactory('table'),
+ tbody: createDOMFactory('tbody'),
+ td: createDOMFactory('td'),
+ textarea: createDOMFactory('textarea'),
+ tfoot: createDOMFactory('tfoot'),
+ th: createDOMFactory('th'),
+ thead: createDOMFactory('thead'),
+ time: createDOMFactory('time'),
+ title: createDOMFactory('title'),
+ tr: createDOMFactory('tr'),
+ track: createDOMFactory('track'),
+ u: createDOMFactory('u'),
+ ul: createDOMFactory('ul'),
+ var: createDOMFactory('var'),
+ video: createDOMFactory('video'),
+ wbr: createDOMFactory('wbr'),
+
+ // SVG
+ circle: createDOMFactory('circle'),
+ clipPath: createDOMFactory('clipPath'),
+ defs: createDOMFactory('defs'),
+ ellipse: createDOMFactory('ellipse'),
+ g: createDOMFactory('g'),
+ image: createDOMFactory('image'),
+ line: createDOMFactory('line'),
+ linearGradient: createDOMFactory('linearGradient'),
+ mask: createDOMFactory('mask'),
+ path: createDOMFactory('path'),
+ pattern: createDOMFactory('pattern'),
+ polygon: createDOMFactory('polygon'),
+ polyline: createDOMFactory('polyline'),
+ radialGradient: createDOMFactory('radialGradient'),
+ rect: createDOMFactory('rect'),
+ stop: createDOMFactory('stop'),
+ svg: createDOMFactory('svg'),
+ text: createDOMFactory('text'),
+ tspan: createDOMFactory('tspan'),
+};
+
+module.exports = ReactDOMFactories;
diff --git a/src/addons/ReactFragment.js b/src/addons/ReactFragment.js
index f16ccf8bc..0ed35d4ae 100644
--- a/src/addons/ReactFragment.js
+++ b/src/addons/ReactFragment.js
@@ -33,4 +33,7 @@ var warnedAboutNumeric = false;
var ReactFragment = {
- // Wrap a keyed object in an opaque proxy that warns you if you access any
- // of its properties.
+ /**
+ * Wrap a keyed object in an opaque proxy that warns you if you access any
+ * of its properties.
+ * See https://facebook.github.io/react/docs/create-fragment.html
+ */
create: function(object) {
@@ -40,3 +43,3 @@ var ReactFragment = {
'React.addons.createFragment only accepts a single object. Got: %s',
- object
+ object,
);
@@ -48,3 +51,3 @@ var ReactFragment = {
'React.addons.createFragment does not accept a ReactElement ' +
- 'without a wrapper object.'
+ 'without a wrapper object.',
);
@@ -56,3 +59,3 @@ var ReactFragment = {
'React.addons.createFragment(...): Encountered an invalid child; DOM ' +
- 'elements are not valid children of React components.'
+ 'elements are not valid children of React components.',
);
@@ -67,3 +70,3 @@ var ReactFragment = {
'React.addons.createFragment(...): Child objects should have ' +
- 'non-numeric keys so ordering is preserved.'
+ 'non-numeric keys so ordering is preserved.',
);
@@ -76,3 +79,3 @@ var ReactFragment = {
key,
- emptyFunction.thatReturnsArgument
+ emptyFunction.thatReturnsArgument,
);
diff --git a/src/addons/ReactWithAddons.js b/src/addons/ReactWithAddons.js
index bd13ea495..8cf081c98 100644
--- a/src/addons/ReactWithAddons.js
+++ b/src/addons/ReactWithAddons.js
@@ -15,4 +15,4 @@ var LinkedStateMixin = require('LinkedStateMixin');
var React = require('React');
-var ReactComponentWithPureRenderMixin =
- require('ReactComponentWithPureRenderMixin');
+var ReactAddonsDOMDependencies = require('ReactAddonsDOMDependencies');
+var ReactComponentWithPureRenderMixin = require('ReactComponentWithPureRenderMixin');
var ReactCSSTransitionGroup = require('ReactCSSTransitionGroup');
@@ -36,4 +36,16 @@ React.addons = {
if (__DEV__) {
- React.addons.Perf = require('ReactDefaultPerf');
- React.addons.TestUtils = require('ReactTestUtils');
+ // For the UMD build we get these lazily from the global since they're tied
+ // to the DOM renderer and it hasn't loaded yet.
+ Object.defineProperty(React.addons, 'Perf', {
+ enumerable: true,
+ get: function() {
+ return ReactAddonsDOMDependencies.getReactPerf();
+ },
+ });
+ Object.defineProperty(React.addons, 'TestUtils', {
+ enumerable: true,
+ get: function() {
+ return ReactAddonsDOMDependencies.getReactTestUtils();
+ },
+ });
}
diff --git a/src/addons/__tests__/ReactComponentWithPureRenderMixin-test.js b/src/addons/__tests__/ReactComponentWithPureRenderMixin-test.js
deleted file mode 100644
index 2c9581994..000000000
--- a/src/addons/__tests__/ReactComponentWithPureRenderMixin-test.js
+++ /dev/null
@@ -1,145 +0,0 @@
-/**
- * Copyright 2015-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.
- *
- * @emails react-core
- */
-
-'use strict';
-
-var React;
-var ReactComponentWithPureRenderMixin;
-var ReactTestUtils;
-
-describe('ReactComponentWithPureRenderMixin', function() {
-
- beforeEach(function() {
- React = require('React');
- ReactComponentWithPureRenderMixin =
- require('ReactComponentWithPureRenderMixin');
- ReactTestUtils = require('ReactTestUtils');
- });
-
- it('provides a default shouldComponentUpdate implementation', function() {
- var renderCalls = 0;
- class PlasticWrap extends React.Component {
- constructor(props, context) {
- super(props, context);
- this.state = {
- color: 'green',
- };
- }
-
- render() {
- return (
-