diff --git a/dist/dependencies.js b/dist/dependencies.js
index 326e16bbe6..59c9cf4c6f 100644
--- a/dist/dependencies.js
+++ b/dist/dependencies.js
@@ -87,7 +87,7 @@ return /******/ (function(modules) { // webpackBootstrap
/******/
/******/
/******/ var hotApplyOnUpdate = true;
-/******/ var hotCurrentHash = "44ccf6e1654fbb54c4a3"; // eslint-disable-line no-unused-vars
+/******/ var hotCurrentHash = "d24c8470974830529633"; // eslint-disable-line no-unused-vars
/******/ var hotCurrentModuleData = {};
/******/ var hotCurrentParents = []; // eslint-disable-line no-unused-vars
/******/
@@ -87059,6 +87059,8 @@ return /******/ (function(modules) { // webpackBootstrap
/* 925 */
/***/ function(module, exports, __webpack_require__) {
+ 'use strict';
+
module.exports = __webpack_require__(926);
@@ -87066,7 +87068,7 @@ return /******/ (function(modules) { // webpackBootstrap
/* 926 */
/***/ function(module, exports, __webpack_require__) {
- /* WEBPACK VAR INJECTION */(function(process) {/**
+ /**
* Copyright 2013-2015, Facebook, Inc.
* All rights reserved.
*
@@ -87077,146 +87079,35 @@ return /******/ (function(modules) { // webpackBootstrap
* @providesModule React
*/
- /* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/
-
'use strict';
- var EventPluginUtils = __webpack_require__(927);
- var ReactChildren = __webpack_require__(931);
- var ReactComponent = __webpack_require__(945);
- var ReactClass = __webpack_require__(960);
- var ReactContext = __webpack_require__(935);
- var ReactCurrentOwner = __webpack_require__(940);
- var ReactElement = __webpack_require__(934);
- var ReactElementValidator = __webpack_require__(955);
- var ReactDOM = __webpack_require__(963);
- var ReactDOMTextComponent = __webpack_require__(965);
- var ReactDefaultInjection = __webpack_require__(1014);
- var ReactInstanceHandles = __webpack_require__(942);
- var ReactMount = __webpack_require__(990);
- var ReactPerf = __webpack_require__(951);
- var ReactPropTypes = __webpack_require__(1045);
- var ReactReconciler = __webpack_require__(952);
- var ReactServerRendering = __webpack_require__(1077);
-
- var assign = __webpack_require__(936);
- var findDOMNode = __webpack_require__(1034);
- var onlyChild = __webpack_require__(1079);
-
- ReactDefaultInjection.inject();
-
- var createElement = ReactElement.createElement;
- var createFactory = ReactElement.createFactory;
- var cloneElement = ReactElement.cloneElement;
-
- if ("production" !== process.env.NODE_ENV) {
- createElement = ReactElementValidator.createElement;
- createFactory = ReactElementValidator.createFactory;
- cloneElement = ReactElementValidator.cloneElement;
- }
-
- var render = ReactPerf.measure('React', 'render', ReactMount.render);
-
- var React = {
- Children: {
- map: ReactChildren.map,
- forEach: ReactChildren.forEach,
- count: ReactChildren.count,
- only: onlyChild
- },
- Component: ReactComponent,
- DOM: ReactDOM,
- PropTypes: ReactPropTypes,
- initializeTouchEvents: function(shouldUseTouch) {
- EventPluginUtils.useTouchEvents = shouldUseTouch;
- },
- createClass: ReactClass.createClass,
- createElement: createElement,
- cloneElement: cloneElement,
- createFactory: createFactory,
- createMixin: function(mixin) {
- // Currently a noop. Will be used to validate and trace mixins.
- return mixin;
- },
- constructAndRenderComponent: ReactMount.constructAndRenderComponent,
- constructAndRenderComponentByID: ReactMount.constructAndRenderComponentByID,
- findDOMNode: findDOMNode,
- render: render,
- renderToString: ReactServerRendering.renderToString,
- renderToStaticMarkup: ReactServerRendering.renderToStaticMarkup,
- unmountComponentAtNode: ReactMount.unmountComponentAtNode,
- isValidElement: ReactElement.isValidElement,
- withContext: ReactContext.withContext,
-
- // Hook for JSX spread, don't use this for anything else.
- __spread: assign
- };
+ var ReactDOM = __webpack_require__(927);
+ var ReactDOMServer = __webpack_require__(1070);
+ var ReactIsomorphic = __webpack_require__(1074);
- // Inject the runtime into a devtools global hook regardless of browser.
- // Allows for debugging when the hook is injected on the page.
- if (
- typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' &&
- typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {
- __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({
- CurrentOwner: ReactCurrentOwner,
- InstanceHandles: ReactInstanceHandles,
- Mount: ReactMount,
- Reconciler: ReactReconciler,
- TextComponent: ReactDOMTextComponent
- });
- }
+ var assign = __webpack_require__(962);
+ var deprecated = __webpack_require__(1079);
- if ("production" !== process.env.NODE_ENV) {
- var ExecutionEnvironment = __webpack_require__(974);
- if (ExecutionEnvironment.canUseDOM && window.top === window.self) {
+ // `version` will be added here by ReactIsomorphic.
+ var React = {};
- // If we're in Chrome, look for the devtools marker and provide a download
- // link if not installed.
- if (navigator.userAgent.indexOf('Chrome') > -1) {
- if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {
- console.debug(
- 'Download the React DevTools for a better development experience: ' +
- 'https://fb.me/react-devtools'
- );
- }
- }
+ assign(React, ReactIsomorphic);
- var expectedFeatures = [
- // shims
- Array.isArray,
- Array.prototype.every,
- Array.prototype.forEach,
- Array.prototype.indexOf,
- Array.prototype.map,
- Date.now,
- Function.prototype.bind,
- Object.keys,
- String.prototype.split,
- String.prototype.trim,
-
- // shams
- Object.create,
- Object.freeze
- ];
+ assign(React, {
+ // ReactDOM
+ findDOMNode: deprecated('findDOMNode', 'ReactDOM', 'react-dom', ReactDOM, ReactDOM.findDOMNode),
+ render: deprecated('render', 'ReactDOM', 'react-dom', ReactDOM, ReactDOM.render),
+ unmountComponentAtNode: deprecated('unmountComponentAtNode', 'ReactDOM', 'react-dom', ReactDOM, ReactDOM.unmountComponentAtNode),
- for (var i = 0; i < expectedFeatures.length; i++) {
- if (!expectedFeatures[i]) {
- console.error(
- 'One or more ES5 shim/shams expected by React are not available: ' +
- 'https://fb.me/react-warning-polyfills'
- );
- break;
- }
- }
- }
- }
+ // ReactDOMServer
+ renderToString: deprecated('renderToString', 'ReactDOMServer', 'react-dom/server', ReactDOMServer, ReactDOMServer.renderToString),
+ renderToStaticMarkup: deprecated('renderToStaticMarkup', 'ReactDOMServer', 'react-dom/server', ReactDOMServer, ReactDOMServer.renderToStaticMarkup)
+ });
- React.version = '0.13.3';
+ React.__SECRET_DOM_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactDOM;
module.exports = React;
- /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
-
/***/ },
/* 927 */
/***/ function(module, exports, __webpack_require__) {
@@ -87229,221 +87120,95 @@ return /******/ (function(modules) { // webpackBootstrap
* 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 EventPluginUtils
+ * @providesModule ReactDOM
*/
+ /* globals __REACT_DEVTOOLS_GLOBAL_HOOK__*/
+
'use strict';
- var EventConstants = __webpack_require__(928);
+ var ReactCurrentOwner = __webpack_require__(928);
+ var ReactDOMTextComponent = __webpack_require__(929);
+ var ReactDefaultInjection = __webpack_require__(993);
+ var ReactInstanceHandles = __webpack_require__(967);
+ var ReactMount = __webpack_require__(951);
+ var ReactPerf = __webpack_require__(941);
+ var ReactReconciler = __webpack_require__(972);
+ var ReactUpdates = __webpack_require__(976);
+ var ReactVersion = __webpack_require__(1068);
- var invariant = __webpack_require__(930);
+ var findDOMNode = __webpack_require__(1013);
+ var renderSubtreeIntoContainer = __webpack_require__(1069);
+ var warning = __webpack_require__(948);
- /**
- * Injected dependencies:
- */
+ ReactDefaultInjection.inject();
- /**
- * - `Mount`: [required] Module that can convert between React dom IDs and
- * actual node references.
- */
- var injection = {
- Mount: null,
- injectMount: function(InjectedMount) {
- injection.Mount = InjectedMount;
- if ("production" !== process.env.NODE_ENV) {
- ("production" !== process.env.NODE_ENV ? invariant(
- InjectedMount && InjectedMount.getNode,
- 'EventPluginUtils.injection.injectMount(...): Injected Mount module ' +
- 'is missing getNode.'
- ) : invariant(InjectedMount && InjectedMount.getNode));
- }
- }
- };
+ var render = ReactPerf.measure('React', 'render', ReactMount.render);
- var topLevelTypes = EventConstants.topLevelTypes;
+ var React = {
+ findDOMNode: findDOMNode,
+ render: render,
+ unmountComponentAtNode: ReactMount.unmountComponentAtNode,
+ version: ReactVersion,
- function isEndish(topLevelType) {
- return topLevelType === topLevelTypes.topMouseUp ||
- topLevelType === topLevelTypes.topTouchEnd ||
- topLevelType === topLevelTypes.topTouchCancel;
- }
+ /* eslint-disable camelcase */
+ unstable_batchedUpdates: ReactUpdates.batchedUpdates,
+ unstable_renderSubtreeIntoContainer: renderSubtreeIntoContainer
+ };
- function isMoveish(topLevelType) {
- return topLevelType === topLevelTypes.topMouseMove ||
- topLevelType === topLevelTypes.topTouchMove;
- }
- function isStartish(topLevelType) {
- return topLevelType === topLevelTypes.topMouseDown ||
- topLevelType === topLevelTypes.topTouchStart;
+ // Inject the runtime into a devtools global hook regardless of browser.
+ // Allows for debugging when the hook is injected on the page.
+ /* eslint-enable camelcase */
+ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {
+ __REACT_DEVTOOLS_GLOBAL_HOOK__.inject({
+ CurrentOwner: ReactCurrentOwner,
+ InstanceHandles: ReactInstanceHandles,
+ Mount: ReactMount,
+ Reconciler: ReactReconciler,
+ TextComponent: ReactDOMTextComponent
+ });
}
+ if (process.env.NODE_ENV !== 'production') {
+ var ExecutionEnvironment = __webpack_require__(932);
+ if (ExecutionEnvironment.canUseDOM && window.top === window.self) {
- var validateEventDispatches;
- if ("production" !== process.env.NODE_ENV) {
- validateEventDispatches = function(event) {
- var dispatchListeners = event._dispatchListeners;
- var dispatchIDs = event._dispatchIDs;
-
- var listenersIsArr = Array.isArray(dispatchListeners);
- var idsIsArr = Array.isArray(dispatchIDs);
- var IDsLen = idsIsArr ? dispatchIDs.length : dispatchIDs ? 1 : 0;
- var listenersLen = listenersIsArr ?
- dispatchListeners.length :
- dispatchListeners ? 1 : 0;
-
- ("production" !== process.env.NODE_ENV ? invariant(
- idsIsArr === listenersIsArr && IDsLen === listenersLen,
- 'EventPluginUtils: Invalid `event`.'
- ) : invariant(idsIsArr === listenersIsArr && IDsLen === listenersLen));
- };
- }
-
- /**
- * Invokes `cb(event, listener, id)`. Avoids using call if no scope is
- * provided. The `(listener,id)` pair effectively forms the "dispatch" but are
- * kept separate to conserve memory.
- */
- function forEachEventDispatch(event, cb) {
- var dispatchListeners = event._dispatchListeners;
- var dispatchIDs = event._dispatchIDs;
- if ("production" !== process.env.NODE_ENV) {
- validateEventDispatches(event);
- }
- if (Array.isArray(dispatchListeners)) {
- for (var i = 0; i < dispatchListeners.length; i++) {
- if (event.isPropagationStopped()) {
- break;
+ // First check if devtools is not installed
+ if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {
+ // If we're in Chrome or Firefox, provide a download link if not installed.
+ if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {
+ console.debug('Download the React DevTools for a better development experience: ' + 'https://fb.me/react-devtools');
}
- // Listeners and IDs are two parallel arrays that are always in sync.
- cb(event, dispatchListeners[i], dispatchIDs[i]);
}
- } else if (dispatchListeners) {
- cb(event, dispatchListeners, dispatchIDs);
- }
- }
- /**
- * Default implementation of PluginModule.executeDispatch().
- * @param {SyntheticEvent} SyntheticEvent to handle
- * @param {function} Application-level callback
- * @param {string} domID DOM id to pass to the callback.
- */
- function executeDispatch(event, listener, domID) {
- event.currentTarget = injection.Mount.getNode(domID);
- var returnValue = listener(event, domID);
- event.currentTarget = null;
- return returnValue;
- }
+ // If we're in IE8, check to see if we are in compatibility mode and provide
+ // information on preventing compatibility mode
+ var ieCompatibilityMode = document.documentMode && document.documentMode < 8;
- /**
- * Standard/simple iteration through an event's collected dispatches.
- */
- function executeDispatchesInOrder(event, cb) {
- forEachEventDispatch(event, cb);
- event._dispatchListeners = null;
- event._dispatchIDs = null;
- }
+ process.env.NODE_ENV !== 'production' ? warning(!ieCompatibilityMode, 'Internet Explorer is running in compatibility mode; please add the ' + 'following tag to your HTML to prevent this from happening: ' + '') : undefined;
- /**
- * Standard/simple iteration through an event's collected dispatches, but stops
- * at the first dispatch execution returning true, and returns that id.
- *
- * @return id of the first dispatch execution who's listener returns true, or
- * null if no listener returned true.
- */
- function executeDispatchesInOrderStopAtTrueImpl(event) {
- var dispatchListeners = event._dispatchListeners;
- var dispatchIDs = event._dispatchIDs;
- if ("production" !== process.env.NODE_ENV) {
- validateEventDispatches(event);
- }
- if (Array.isArray(dispatchListeners)) {
- for (var i = 0; i < dispatchListeners.length; i++) {
- if (event.isPropagationStopped()) {
+ var expectedFeatures = [
+ // shims
+ Array.isArray, Array.prototype.every, Array.prototype.forEach, Array.prototype.indexOf, Array.prototype.map, Date.now, Function.prototype.bind, Object.keys, String.prototype.split, String.prototype.trim,
+
+ // shams
+ Object.create, Object.freeze];
+
+ for (var i = 0; i < expectedFeatures.length; i++) {
+ if (!expectedFeatures[i]) {
+ console.error('One or more ES5 shim/shams expected by React are not available: ' + 'https://fb.me/react-warning-polyfills');
break;
}
- // Listeners and IDs are two parallel arrays that are always in sync.
- if (dispatchListeners[i](event, dispatchIDs[i])) {
- return dispatchIDs[i];
- }
- }
- } else if (dispatchListeners) {
- if (dispatchListeners(event, dispatchIDs)) {
- return dispatchIDs;
}
}
- return null;
- }
-
- /**
- * @see executeDispatchesInOrderStopAtTrueImpl
- */
- function executeDispatchesInOrderStopAtTrue(event) {
- var ret = executeDispatchesInOrderStopAtTrueImpl(event);
- event._dispatchIDs = null;
- event._dispatchListeners = null;
- return ret;
- }
-
- /**
- * Execution of a "direct" dispatch - there must be at most one dispatch
- * accumulated on the event or it is considered an error. It doesn't really make
- * sense for an event with multiple dispatches (bubbled) to keep track of the
- * return values at each dispatch execution, but it does tend to make sense when
- * dealing with "direct" dispatches.
- *
- * @return The return value of executing the single dispatch.
- */
- function executeDirectDispatch(event) {
- if ("production" !== process.env.NODE_ENV) {
- validateEventDispatches(event);
- }
- var dispatchListener = event._dispatchListeners;
- var dispatchID = event._dispatchIDs;
- ("production" !== process.env.NODE_ENV ? invariant(
- !Array.isArray(dispatchListener),
- 'executeDirectDispatch(...): Invalid `event`.'
- ) : invariant(!Array.isArray(dispatchListener)));
- var res = dispatchListener ?
- dispatchListener(event, dispatchID) :
- null;
- event._dispatchListeners = null;
- event._dispatchIDs = null;
- return res;
- }
-
- /**
- * @param {SyntheticEvent} event
- * @return {bool} True iff number of dispatches accumulated is greater than 0.
- */
- function hasDispatches(event) {
- return !!event._dispatchListeners;
}
- /**
- * General utilities that are useful in creating custom Event Plugins.
- */
- var EventPluginUtils = {
- isEndish: isEndish,
- isMoveish: isMoveish,
- isStartish: isStartish,
-
- executeDirectDispatch: executeDirectDispatch,
- executeDispatch: executeDispatch,
- executeDispatchesInOrder: executeDispatchesInOrder,
- executeDispatchesInOrderStopAtTrue: executeDispatchesInOrderStopAtTrue,
- hasDispatches: hasDispatches,
- injection: injection,
- useTouchEvents: false
- };
-
- module.exports = EventPluginUtils;
-
+ module.exports = React;
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
/***/ },
/* 928 */
-/***/ function(module, exports, __webpack_require__) {
+/***/ function(module, exports) {
/**
* Copyright 2013-2015, Facebook, Inc.
@@ -87453,69 +87218,28 @@ return /******/ (function(modules) { // webpackBootstrap
* 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 EventConstants
+ * @providesModule ReactCurrentOwner
*/
'use strict';
- var keyMirror = __webpack_require__(929);
-
- var PropagationPhases = keyMirror({bubbled: null, captured: null});
-
/**
- * Types of raw signals from the browser caught at the top level.
+ * Keeps track of the current owner.
+ *
+ * The current owner is the component who should own any components that are
+ * currently being constructed.
*/
- var topLevelTypes = keyMirror({
- topBlur: null,
- topChange: null,
- topClick: null,
- topCompositionEnd: null,
- topCompositionStart: null,
- topCompositionUpdate: null,
- topContextMenu: null,
- topCopy: null,
- topCut: null,
- topDoubleClick: null,
- topDrag: null,
- topDragEnd: null,
- topDragEnter: null,
- topDragExit: null,
- topDragLeave: null,
- topDragOver: null,
- topDragStart: null,
- topDrop: null,
- topError: null,
- topFocus: null,
- topInput: null,
- topKeyDown: null,
- topKeyPress: null,
- topKeyUp: null,
- topLoad: null,
- topMouseDown: null,
- topMouseMove: null,
- topMouseOut: null,
- topMouseOver: null,
- topMouseUp: null,
- topPaste: null,
- topReset: null,
- topScroll: null,
- topSelectionChange: null,
- topSubmit: null,
- topTextInput: null,
- topTouchCancel: null,
- topTouchEnd: null,
- topTouchMove: null,
- topTouchStart: null,
- topWheel: null
- });
+ var ReactCurrentOwner = {
- var EventConstants = {
- topLevelTypes: topLevelTypes,
- PropagationPhases: PropagationPhases
- };
+ /**
+ * @internal
+ * @type {ReactComponent}
+ */
+ current: null
- module.exports = EventConstants;
+ };
+ module.exports = ReactCurrentOwner;
/***/ },
/* 929 */
@@ -87529,50 +87253,125 @@ return /******/ (function(modules) { // webpackBootstrap
* 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 keyMirror
+ * @providesModule ReactDOMTextComponent
* @typechecks static-only
*/
'use strict';
- var invariant = __webpack_require__(930);
+ var DOMChildrenOperations = __webpack_require__(930);
+ var DOMPropertyOperations = __webpack_require__(945);
+ var ReactComponentBrowserEnvironment = __webpack_require__(949);
+ var ReactMount = __webpack_require__(951);
+
+ var assign = __webpack_require__(962);
+ var escapeTextContentForBrowser = __webpack_require__(944);
+ var setTextContent = __webpack_require__(943);
+ var validateDOMNesting = __webpack_require__(992);
/**
- * Constructs an enumeration with keys equal to their value.
- *
- * For example:
+ * Text nodes violate a couple assumptions that React makes about components:
*
- * var COLORS = keyMirror({blue: null, red: null});
- * var myColor = COLORS.blue;
- * var isColorValid = !!COLORS[myColor];
+ * - When mounting text into the DOM, adjacent text nodes are merged.
+ * - Text nodes cannot be assigned a React root ID.
*
- * The last line could not be performed if the values of the generated enum were
- * not equal to their keys.
+ * This component is used to wrap strings in elements so that they can undergo
+ * the same reconciliation that is applied to elements.
*
- * Input: {key1: val1, key2: val2}
- * Output: {key1: key1, key2: key2}
+ * TODO: Investigate representing React components in the DOM with text nodes.
*
- * @param {object} obj
- * @return {object}
+ * @class ReactDOMTextComponent
+ * @extends ReactComponent
+ * @internal
*/
- var keyMirror = function(obj) {
- var ret = {};
- var key;
- ("production" !== process.env.NODE_ENV ? invariant(
- obj instanceof Object && !Array.isArray(obj),
- 'keyMirror(...): Argument must be an object.'
- ) : invariant(obj instanceof Object && !Array.isArray(obj)));
- for (key in obj) {
- if (!obj.hasOwnProperty(key)) {
- continue;
+ var ReactDOMTextComponent = function (props) {
+ // This constructor and its argument is currently used by mocks.
+ };
+
+ assign(ReactDOMTextComponent.prototype, {
+
+ /**
+ * @param {ReactText} text
+ * @internal
+ */
+ construct: function (text) {
+ // TODO: This is really a ReactText (ReactNode), not a ReactElement
+ this._currentElement = text;
+ this._stringText = '' + text;
+
+ // Properties
+ this._rootNodeID = null;
+ this._mountIndex = 0;
+ },
+
+ /**
+ * Creates the markup for this text node. This node is not intended to have
+ * any features besides containing text content.
+ *
+ * @param {string} rootID DOM ID of the root node.
+ * @param {ReactReconcileTransaction|ReactServerRenderingTransaction} transaction
+ * @return {string} Markup for this text node.
+ * @internal
+ */
+ mountComponent: function (rootID, transaction, context) {
+ if (process.env.NODE_ENV !== 'production') {
+ if (context[validateDOMNesting.ancestorInfoContextKey]) {
+ validateDOMNesting('span', null, context[validateDOMNesting.ancestorInfoContextKey]);
+ }
}
- ret[key] = key;
+
+ this._rootNodeID = rootID;
+ if (transaction.useCreateElement) {
+ var ownerDocument = context[ReactMount.ownerDocumentContextKey];
+ var el = ownerDocument.createElement('span');
+ DOMPropertyOperations.setAttributeForID(el, rootID);
+ // Populate node cache
+ ReactMount.getID(el);
+ setTextContent(el, this._stringText);
+ return el;
+ } else {
+ var escapedText = escapeTextContentForBrowser(this._stringText);
+
+ if (transaction.renderToStaticMarkup) {
+ // Normally we'd wrap this in a `span` for the reasons stated above, but
+ // since this is a situation where React won't take over (static pages),
+ // we can simply return the text as it is.
+ return escapedText;
+ }
+
+ return '' + escapedText + '';
+ }
+ },
+
+ /**
+ * Updates this component by updating the text content.
+ *
+ * @param {ReactText} nextText The next text content
+ * @param {ReactReconcileTransaction} transaction
+ * @internal
+ */
+ receiveComponent: function (nextText, transaction) {
+ if (nextText !== this._currentElement) {
+ this._currentElement = nextText;
+ var nextStringText = '' + nextText;
+ if (nextStringText !== this._stringText) {
+ // TODO: Save this as pending props and use performUpdateIfNecessary
+ // and/or updateComponent to do the actual update for consistency with
+ // other component types?
+ this._stringText = nextStringText;
+ var node = ReactMount.getNode(this._rootNodeID);
+ DOMChildrenOperations.updateTextContent(node, nextStringText);
+ }
+ }
+ },
+
+ unmountComponent: function () {
+ ReactComponentBrowserEnvironment.unmountIDFromEnvironment(this._rootNodeID);
}
- return ret;
- };
- module.exports = keyMirror;
+ });
+ module.exports = ReactDOMTextComponent;
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(2)))
/***/ },
@@ -87587,52 +87386,127 @@ return /******/ (function(modules) { // webpackBootstrap
* 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 invariant
+ * @providesModule DOMChildrenOperations
+ * @typechecks static-only
*/
- "use strict";
+ 'use strict';
+
+ var Danger = __webpack_require__(931);
+ var ReactMultiChildUpdateTypes = __webpack_require__(939);
+ var ReactPerf = __webpack_require__(941);
+
+ var setInnerHTML = __webpack_require__(942);
+ var setTextContent = __webpack_require__(943);
+ var invariant = __webpack_require__(936);
/**
- * Use invariant() to assert state which your program assumes to be true.
- *
- * Provide sprintf-style format (only %s is supported) and arguments
- * to provide information about what broke and what you were
- * expecting.
+ * Inserts `childNode` as a child of `parentNode` at the `index`.
*
- * The invariant message will be stripped in production, but the invariant
- * will remain to ensure logic does not differ in production.
+ * @param {DOMElement} parentNode Parent node in which to insert.
+ * @param {DOMElement} childNode Child node to insert.
+ * @param {number} index Index at which to insert the child.
+ * @internal
*/
+ function insertChildAt(parentNode, childNode, index) {
+ // By exploiting arrays returning `undefined` for an undefined index, we can
+ // rely exclusively on `insertBefore(node, null)` instead of also using
+ // `appendChild(node)`. However, using `undefined` is not allowed by all
+ // browsers so we must replace it with `null`.
- var invariant = function(condition, format, a, b, c, d, e, f) {
- if ("production" !== process.env.NODE_ENV) {
- if (format === undefined) {
- throw new Error('invariant requires an error message argument');
+ // fix render order error in safari
+ // IE8 will throw error when index out of list size.
+ var beforeChild = index >= parentNode.childNodes.length ? null : parentNode.childNodes.item(index);
+
+ parentNode.insertBefore(childNode, beforeChild);
+ }
+
+ /**
+ * Operations for updating with DOM children.
+ */
+ var DOMChildrenOperations = {
+
+ dangerouslyReplaceNodeWithMarkup: Danger.dangerouslyReplaceNodeWithMarkup,
+
+ updateTextContent: setTextContent,
+
+ /**
+ * Updates a component's children by processing a series of updates. The
+ * update configurations are each expected to have a `parentNode` property.
+ *
+ * @param {array